blob: e87cf969fcd1ac8010107a9d3fea6af364061ff2 [file] [log] [blame]
Mario Six2161e552018-07-31 11:44:11 +02001/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2017
4 * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
5 */
6
Tom Rini55a297c2021-04-19 16:18:49 -04007#ifndef __SYSINFO_H__
8#define __SYSINFO_H__
9
Max Krummenacher0e226eb2024-01-18 19:10:47 +010010#include <linux/errno.h>
11
Simon Glass3ba929a2020-10-30 21:38:53 -060012struct udevice;
13
Raymond Mao8fe07312024-12-06 14:54:21 -080014#define SYSINFO_CACHE_LVL_MAX 3
15
Mario Six2161e552018-07-31 11:44:11 +020016/*
17 * This uclass encapsulates hardware methods to gather information about a
Simon Glass458b66a2020-11-05 06:32:05 -070018 * sysinfo or a specific device such as hard-wired GPIOs on GPIO expanders,
Mario Six2161e552018-07-31 11:44:11 +020019 * read-only data in flash ICs, or similar.
20 *
21 * The interface offers functions to read the usual standard data types (bool,
22 * int, string) from the device, each of which is identified by a static
23 * numeric ID (which will usually be defined as a enum in a header file).
24 *
Simon Glass458b66a2020-11-05 06:32:05 -070025 * If for example the sysinfo had a read-only serial number flash IC, we could
Mario Six2161e552018-07-31 11:44:11 +020026 * call
27 *
Simon Glass458b66a2020-11-05 06:32:05 -070028 * ret = sysinfo_detect(dev);
Mario Six2161e552018-07-31 11:44:11 +020029 * if (ret) {
Simon Glass458b66a2020-11-05 06:32:05 -070030 * debug("sysinfo device not found.");
Mario Six2161e552018-07-31 11:44:11 +020031 * return ret;
32 * }
33 *
Simon Glass458b66a2020-11-05 06:32:05 -070034 * ret = sysinfo_get_int(dev, ID_SERIAL_NUMBER, &serial);
Mario Six2161e552018-07-31 11:44:11 +020035 * if (ret) {
36 * debug("Error when reading serial number from device.");
37 * return ret;
38 * }
39 *
40 * to read the serial number.
41 */
42
Simon Glasscf67d6d2021-02-04 21:17:23 -070043/** enum sysinfo_id - Standard IDs defined by U-Boot */
44enum sysinfo_id {
Simon Glassff3edc22024-10-31 18:50:23 +010045 SYSID_NONE,
Simon Glasscf67d6d2021-02-04 21:17:23 -070046
Raymond Mao8fe07312024-12-06 14:54:21 -080047 /* BIOS Information (Type 0) */
48 SYSID_SM_BIOS_VENDOR,
49 SYSID_SM_BIOS_VER,
50 SYSID_SM_BIOS_REL_DATE,
51
52 /* System Information (Type 1) */
Simon Glassff3edc22024-10-31 18:50:23 +010053 SYSID_SM_SYSTEM_MANUFACTURER,
54 SYSID_SM_SYSTEM_PRODUCT,
55 SYSID_SM_SYSTEM_VERSION,
56 SYSID_SM_SYSTEM_SERIAL,
Raymond Mao8fe07312024-12-06 14:54:21 -080057 SYSID_SM_SYSTEM_WAKEUP,
Simon Glassff3edc22024-10-31 18:50:23 +010058 SYSID_SM_SYSTEM_SKU,
59 SYSID_SM_SYSTEM_FAMILY,
Baocheng Su5cb083e2025-02-18 10:36:10 +080060 SYSID_SM_SYSTEM_UUID,
Raymond Mao8fe07312024-12-06 14:54:21 -080061
62 /* Baseboard (or Module) Information (Type 2) */
Simon Glassff3edc22024-10-31 18:50:23 +010063 SYSID_SM_BASEBOARD_MANUFACTURER,
64 SYSID_SM_BASEBOARD_PRODUCT,
65 SYSID_SM_BASEBOARD_VERSION,
66 SYSID_SM_BASEBOARD_SERIAL,
67 SYSID_SM_BASEBOARD_ASSET_TAG,
Raymond Mao8fe07312024-12-06 14:54:21 -080068 SYSID_SM_BASEBOARD_FEATURE,
69 SYSID_SM_BASEBOARD_CHASSIS_LOCAT,
70 SYSID_SM_BASEBOARD_TYPE,
71 SYSID_SM_BASEBOARD_OBJS_NUM,
72 SYSID_SM_BASEBOARD_OBJS_HANDLE,
73
74 /* System Enclosure or Chassis (Type 3) */
75 SYSID_SM_ENCLOSURE_MANUFACTURER,
76 SYSID_SM_ENCLOSURE_VERSION,
77 SYSID_SM_ENCLOSURE_SERIAL,
78 SYSID_SM_ENCLOSURE_ASSET_TAG,
79 SYSID_SM_ENCLOSURE_TYPE,
80 SYSID_SM_ENCLOSURE_BOOTUP,
81 SYSID_SM_ENCLOSURE_POW,
82 SYSID_SM_ENCLOSURE_THERMAL,
83 SYSID_SM_ENCLOSURE_SECURITY,
84 SYSID_SM_ENCLOSURE_OEM,
85 SYSID_SM_ENCLOSURE_HEIGHT,
86 SYSID_SM_ENCLOSURE_POWCORE_NUM,
87 SYSID_SM_ENCLOSURE_ELEMENT_CNT,
88 SYSID_SM_ENCLOSURE_ELEMENT_LEN,
89 SYSID_SM_ENCLOSURE_ELEMENTS,
90 SYSID_SM_ENCLOSURE_SKU,
91
92 /* Processor Information (Type 4) */
93 SYSID_SM_PROCESSOR_SOCKET,
94 SYSID_SM_PROCESSOR_TYPE,
95 SYSID_SM_PROCESSOR_MANUFACT,
96 SYSID_SM_PROCESSOR_ID,
97 SYSID_SM_PROCESSOR_VERSION,
98 SYSID_SM_PROCESSOR_VOLTAGE,
99 SYSID_SM_PROCESSOR_EXT_CLOCK,
100 SYSID_SM_PROCESSOR_MAX_SPEED,
101 SYSID_SM_PROCESSOR_CUR_SPEED,
102 SYSID_SM_PROCESSOR_STATUS,
103 SYSID_SM_PROCESSOR_UPGRADE,
104 SYSID_SM_PROCESSOR_SN,
105 SYSID_SM_PROCESSOR_ASSET_TAG,
106 SYSID_SM_PROCESSOR_PN,
107 SYSID_SM_PROCESSOR_CORE_CNT,
108 SYSID_SM_PROCESSOR_CORE_EN,
109 SYSID_SM_PROCESSOR_THREAD_CNT,
110 SYSID_SM_PROCESSOR_CHARA,
111 SYSID_SM_PROCESSOR_FAMILY,
112 SYSID_SM_PROCESSOR_FAMILY2,
113 SYSID_SM_PROCESSOR_CORE_CNT2,
114 SYSID_SM_PROCESSOR_CORE_EN2,
115 SYSID_SM_PROCESSOR_THREAD_CNT2,
116 SYSID_SM_PROCESSOR_THREAD_EN,
117
118 /*
119 * Cache Information (Type 7)
120 * Each of the id should reserve space for up to
121 * SYSINFO_CACHE_LVL_MAX levels of cache
122 */
123 SYSID_SM_CACHE_LEVEL,
124 SYSID_SM_CACHE_HANDLE,
125 SYSID_SM_CACHE_INFO_START,
126 SYSID_SM_CACHE_SOCKET = SYSID_SM_CACHE_INFO_START,
127 SYSID_SM_CACHE_CONFIG =
128 SYSID_SM_CACHE_SOCKET + SYSINFO_CACHE_LVL_MAX,
129 SYSID_SM_CACHE_MAX_SIZE =
130 SYSID_SM_CACHE_CONFIG + SYSINFO_CACHE_LVL_MAX,
131 SYSID_SM_CACHE_INST_SIZE =
132 SYSID_SM_CACHE_MAX_SIZE + SYSINFO_CACHE_LVL_MAX,
133 SYSID_SM_CACHE_SUPSRAM_TYPE =
134 SYSID_SM_CACHE_INST_SIZE + SYSINFO_CACHE_LVL_MAX,
135 SYSID_SM_CACHE_CURSRAM_TYPE =
136 SYSID_SM_CACHE_SUPSRAM_TYPE + SYSINFO_CACHE_LVL_MAX,
137 SYSID_SM_CACHE_SPEED =
138 SYSID_SM_CACHE_CURSRAM_TYPE + SYSINFO_CACHE_LVL_MAX,
139 SYSID_SM_CACHE_ERRCOR_TYPE =
140 SYSID_SM_CACHE_SPEED + SYSINFO_CACHE_LVL_MAX,
141 SYSID_SM_CACHE_SCACHE_TYPE =
142 SYSID_SM_CACHE_ERRCOR_TYPE + SYSINFO_CACHE_LVL_MAX,
143 SYSID_SM_CACHE_ASSOC =
144 SYSID_SM_CACHE_SCACHE_TYPE + SYSINFO_CACHE_LVL_MAX,
145 SYSID_SM_CACHE_MAX_SIZE2 =
146 SYSID_SM_CACHE_ASSOC + SYSINFO_CACHE_LVL_MAX,
147 SYSID_SM_CACHE_INST_SIZE2 =
148 SYSID_SM_CACHE_MAX_SIZE2 + SYSINFO_CACHE_LVL_MAX,
149 SYSID_SM_CACHE_INFO_END =
150 SYSID_SM_CACHE_INST_SIZE2 + SYSINFO_CACHE_LVL_MAX - 1,
Simon Glasscf67d6d2021-02-04 21:17:23 -0700151
Simon Glass43bc5432021-03-21 16:50:06 +1300152 /* For show_board_info() */
Simon Glassff3edc22024-10-31 18:50:23 +0100153 SYSID_BOARD_MODEL,
154 SYSID_BOARD_MANUFACTURER,
Baocheng Su94d59e32025-02-18 10:36:11 +0800155 SYSID_BOARD_MAC_ADDR,
Baocheng Su172240c2025-02-18 10:36:12 +0800156 SYSID_BOARD_RAM_SIZE_MB,
Simon Glassff3edc22024-10-31 18:50:23 +0100157 SYSID_PRIOR_STAGE_VERSION,
158 SYSID_PRIOR_STAGE_DATE,
Simon Glass43bc5432021-03-21 16:50:06 +1300159
Simon Glasscf67d6d2021-02-04 21:17:23 -0700160 /* First value available for downstream/board used */
Simon Glassff3edc22024-10-31 18:50:23 +0100161 SYSID_USER = 0x1000,
Simon Glasscf67d6d2021-02-04 21:17:23 -0700162};
163
Simon Glass458b66a2020-11-05 06:32:05 -0700164struct sysinfo_ops {
Mario Six2161e552018-07-31 11:44:11 +0200165 /**
166 * detect() - Run the hardware info detection procedure for this
167 * device.
168 * @dev: The device containing the information
169 *
170 * This operation might take a long time (e.g. read from EEPROM,
171 * check the presence of a device on a bus etc.), hence this is not
172 * done in the probe() method, but later during operation in this
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400173 * dedicated method. This method will be called before any other
174 * methods.
Mario Six2161e552018-07-31 11:44:11 +0200175 *
176 * Return: 0 if OK, -ve on error.
177 */
178 int (*detect)(struct udevice *dev);
179
180 /**
181 * get_bool() - Read a specific bool data value that describes the
182 * hardware setup.
Simon Glass458b66a2020-11-05 06:32:05 -0700183 * @dev: The sysinfo instance to gather the data.
Mario Six2161e552018-07-31 11:44:11 +0200184 * @id: A unique identifier for the bool value to be read.
185 * @val: Pointer to a buffer that receives the value read.
186 *
187 * Return: 0 if OK, -ve on error.
188 */
189 int (*get_bool)(struct udevice *dev, int id, bool *val);
190
191 /**
192 * get_int() - Read a specific int data value that describes the
193 * hardware setup.
Simon Glass458b66a2020-11-05 06:32:05 -0700194 * @dev: The sysinfo instance to gather the data.
Mario Six2161e552018-07-31 11:44:11 +0200195 * @id: A unique identifier for the int value to be read.
196 * @val: Pointer to a buffer that receives the value read.
197 *
198 * Return: 0 if OK, -ve on error.
199 */
200 int (*get_int)(struct udevice *dev, int id, int *val);
201
202 /**
203 * get_str() - Read a specific string data value that describes the
204 * hardware setup.
Simon Glass458b66a2020-11-05 06:32:05 -0700205 * @dev: The sysinfo instance to gather the data.
Mario Six2161e552018-07-31 11:44:11 +0200206 * @id: A unique identifier for the string value to be read.
207 * @size: The size of the buffer to receive the string data.
208 * @val: Pointer to a buffer that receives the value read.
209 *
210 * Return: 0 if OK, -ve on error.
211 */
212 int (*get_str)(struct udevice *dev, int id, size_t size, char *val);
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200213
214 /**
Raymond Mao860fa8b2024-12-06 14:54:19 -0800215 * get_data() - Read a specific string data value that describes the
216 * hardware setup.
217 * @dev: The sysinfo instance to gather the data.
218 * @id: A unique identifier for the data area to be get.
219 * @data: Pointer to the address of the data area.
220 * @size: Pointer to the size of the data area.
221 *
222 * Return: 0 if OK, -ve on error.
223 */
224 int (*get_data)(struct udevice *dev, int id, void **data, size_t *size);
225
226 /**
Baocheng Su94d59e32025-02-18 10:36:11 +0800227 * get_item_count() - Get the item count of the specific data area that
228 * describes the hardware setup.
229 * @dev: The sysinfo instance to gather the data.
230 * @id: A unique identifier for the data area to be get.
231 *
232 * Return: non-negative item count if OK, -ve on error.
233 */
234 int (*get_item_count)(struct udevice *dev, int id);
235
236 /**
237 * get_data_by_index() - Get a data value by index from the platform.
238 *
239 * @dev: The sysinfo instance to gather the data.
240 * @id: A unique identifier for the data area to be get.
241 * @index: The item index, starting from 0.
242 * @data: Pointer to the address of the data area.
243 * @size: Pointer to the size of the data area.
244 *
245 * Return: 0 if OK, -ve on error.
246 */
247 int (*get_data_by_index)(struct udevice *dev, int id, int index,
248 void **data, size_t *size);
249
250 /**
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200251 * get_fit_loadable - Get the name of an image to load from FIT
252 * This function can be used to provide the image names based on runtime
253 * detection. A classic use-case would when DTBOs are used to describe
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400254 * additional daughter cards.
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200255 *
Simon Glass458b66a2020-11-05 06:32:05 -0700256 * @dev: The sysinfo instance to gather the data.
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200257 * @index: Index of the image. Starts at 0 and gets incremented
258 * after each call to this function.
259 * @type: The type of image. For example, "fdt" for DTBs
260 * @strp: A pointer to string. Untouched if the function fails
261 *
262 * Return: 0 if OK, -ENOENT if no loadable is available else -ve on
263 * error.
264 */
265 int (*get_fit_loadable)(struct udevice *dev, int index,
266 const char *type, const char **strp);
Mario Six2161e552018-07-31 11:44:11 +0200267};
268
Simon Glass458b66a2020-11-05 06:32:05 -0700269#define sysinfo_get_ops(dev) ((struct sysinfo_ops *)(dev)->driver->ops)
Mario Six2161e552018-07-31 11:44:11 +0200270
Simon Glass10e6f792021-02-04 21:17:21 -0700271#if CONFIG_IS_ENABLED(SYSINFO)
Mario Six2161e552018-07-31 11:44:11 +0200272/**
Simon Glass458b66a2020-11-05 06:32:05 -0700273 * sysinfo_detect() - Run the hardware info detection procedure for this device.
Mario Six2161e552018-07-31 11:44:11 +0200274 *
275 * @dev: The device containing the information
276 *
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400277 * This function must be called before any other accessor function for this
278 * device.
279 *
Mario Six2161e552018-07-31 11:44:11 +0200280 * Return: 0 if OK, -ve on error.
281 */
Simon Glass458b66a2020-11-05 06:32:05 -0700282int sysinfo_detect(struct udevice *dev);
Mario Six2161e552018-07-31 11:44:11 +0200283
284/**
Simon Glass458b66a2020-11-05 06:32:05 -0700285 * sysinfo_get_bool() - Read a specific bool data value that describes the
Mario Six2161e552018-07-31 11:44:11 +0200286 * hardware setup.
Simon Glass458b66a2020-11-05 06:32:05 -0700287 * @dev: The sysinfo instance to gather the data.
Mario Six2161e552018-07-31 11:44:11 +0200288 * @id: A unique identifier for the bool value to be read.
289 * @val: Pointer to a buffer that receives the value read.
290 *
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400291 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), else -ve on
292 * error.
Mario Six2161e552018-07-31 11:44:11 +0200293 */
Simon Glass458b66a2020-11-05 06:32:05 -0700294int sysinfo_get_bool(struct udevice *dev, int id, bool *val);
Mario Six2161e552018-07-31 11:44:11 +0200295
296/**
Simon Glass458b66a2020-11-05 06:32:05 -0700297 * sysinfo_get_int() - Read a specific int data value that describes the
Mario Six2161e552018-07-31 11:44:11 +0200298 * hardware setup.
Simon Glass458b66a2020-11-05 06:32:05 -0700299 * @dev: The sysinfo instance to gather the data.
Mario Six2161e552018-07-31 11:44:11 +0200300 * @id: A unique identifier for the int value to be read.
301 * @val: Pointer to a buffer that receives the value read.
302 *
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400303 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), else -ve on
304 * error.
Mario Six2161e552018-07-31 11:44:11 +0200305 */
Simon Glass458b66a2020-11-05 06:32:05 -0700306int sysinfo_get_int(struct udevice *dev, int id, int *val);
Mario Six2161e552018-07-31 11:44:11 +0200307
308/**
Simon Glass458b66a2020-11-05 06:32:05 -0700309 * sysinfo_get_str() - Read a specific string data value that describes the
Mario Six2161e552018-07-31 11:44:11 +0200310 * hardware setup.
Simon Glass458b66a2020-11-05 06:32:05 -0700311 * @dev: The sysinfo instance to gather the data.
Mario Six2161e552018-07-31 11:44:11 +0200312 * @id: A unique identifier for the string value to be read.
313 * @size: The size of the buffer to receive the string data.
314 * @val: Pointer to a buffer that receives the value read.
315 *
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400316 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), else -ve on
317 * error.
Mario Six2161e552018-07-31 11:44:11 +0200318 */
Simon Glass458b66a2020-11-05 06:32:05 -0700319int sysinfo_get_str(struct udevice *dev, int id, size_t size, char *val);
Mario Six2161e552018-07-31 11:44:11 +0200320
321/**
Raymond Mao860fa8b2024-12-06 14:54:19 -0800322 * sysinfo_get_data() - Get a data area from the platform.
323 * @dev: The sysinfo instance to gather the data.
324 * @id: A unique identifier for the data area to be get.
325 * @data: Pointer to the address of the data area.
326 * @size: Pointer to the size of the data area.
327 *
328 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), else -ve on
329 * error.
330 */
331int sysinfo_get_data(struct udevice *dev, int id, void **data, size_t *size);
332
333/**
Baocheng Su94d59e32025-02-18 10:36:11 +0800334 * sysinfo_get_item_count() - Get the item count of the specific data area that
335 * describes the hardware setup.
336 * @dev: The sysinfo instance to gather the data.
337 * @id: A unique identifier for the data area to be get.
338 *
339 * Return: non-negative item count if OK, -EPERM if called before
340 * sysinfo_detect(), else -ve on error.
341 */
342int sysinfo_get_item_count(struct udevice *dev, int id);
343
344/**
345 * sysinfo_get_data_by_index() - Get a data value by index from the platform.
346 *
347 * @dev: The sysinfo instance to gather the data.
348 * @id: A unique identifier for the data area to be get.
349 * @index: The item index, starting from 0.
350 * @data: Pointer to the address of the data area.
351 * @size: Pointer to the size of the data area.
352 *
353 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), else -ve on
354 * error.
355 */
356int sysinfo_get_data_by_index(struct udevice *dev, int id, int index,
357 void **data, size_t *size);
358
359/**
Simon Glass458b66a2020-11-05 06:32:05 -0700360 * sysinfo_get() - Return the sysinfo device for the sysinfo in question.
361 * @devp: Pointer to structure to receive the sysinfo device.
Mario Six2161e552018-07-31 11:44:11 +0200362 *
Simon Glass458b66a2020-11-05 06:32:05 -0700363 * Since there can only be at most one sysinfo instance, the API can supply a
Mario Six2161e552018-07-31 11:44:11 +0200364 * function that returns the unique device. This is especially useful for use
Simon Glass458b66a2020-11-05 06:32:05 -0700365 * in sysinfo files.
Mario Six2161e552018-07-31 11:44:11 +0200366 *
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400367 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), else -ve on
368 * error.
Mario Six2161e552018-07-31 11:44:11 +0200369 */
Simon Glass458b66a2020-11-05 06:32:05 -0700370int sysinfo_get(struct udevice **devp);
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200371
372/**
Simon Glass458b66a2020-11-05 06:32:05 -0700373 * sysinfo_get_fit_loadable - Get the name of an image to load from FIT
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200374 * This function can be used to provide the image names based on runtime
375 * detection. A classic use-case would when DTBOs are used to describe
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400376 * additional daughter cards.
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200377 *
Simon Glass458b66a2020-11-05 06:32:05 -0700378 * @dev: The sysinfo instance to gather the data.
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200379 * @index: Index of the image. Starts at 0 and gets incremented
380 * after each call to this function.
381 * @type: The type of image. For example, "fdt" for DTBs
382 * @strp: A pointer to string. Untouched if the function fails
383 *
384 *
Sean Anderson6ccf10a2021-04-20 10:50:56 -0400385 * Return: 0 if OK, -EPERM if called before sysinfo_detect(), -ENOENT if no
386 * loadable is available else -ve on error.
Jean-Jacques Hiblot7815fc12019-10-22 16:39:19 +0200387 */
Simon Glass458b66a2020-11-05 06:32:05 -0700388int sysinfo_get_fit_loadable(struct udevice *dev, int index, const char *type,
389 const char **strp);
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200390
391#else
392
Simon Glass458b66a2020-11-05 06:32:05 -0700393static inline int sysinfo_detect(struct udevice *dev)
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200394{
395 return -ENOSYS;
396}
397
Simon Glass458b66a2020-11-05 06:32:05 -0700398static inline int sysinfo_get_bool(struct udevice *dev, int id, bool *val)
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200399{
400 return -ENOSYS;
401}
402
Simon Glass458b66a2020-11-05 06:32:05 -0700403static inline int sysinfo_get_int(struct udevice *dev, int id, int *val)
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200404{
405 return -ENOSYS;
406}
407
Simon Glass458b66a2020-11-05 06:32:05 -0700408static inline int sysinfo_get_str(struct udevice *dev, int id, size_t size,
409 char *val)
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200410{
411 return -ENOSYS;
412}
413
Raymond Mao860fa8b2024-12-06 14:54:19 -0800414static inline int sysinfo_get_data(struct udevice *dev, int id, void **data,
415 size_t *size)
416{
417 return -ENOSYS;
418}
419
Baocheng Su94d59e32025-02-18 10:36:11 +0800420static inline int sysinfo_get_item_count(struct udevice *dev, int id)
421{
422 return -ENOSYS;
423}
424
425static inline int sysinfo_get_data_by_index(struct udevice *dev, int id,
426 int index, void **data,
427 size_t *size)
428{
429 return -ENOSYS;
430}
431
Simon Glass458b66a2020-11-05 06:32:05 -0700432static inline int sysinfo_get(struct udevice **devp)
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200433{
434 return -ENOSYS;
435}
436
Simon Glass458b66a2020-11-05 06:32:05 -0700437static inline int sysinfo_get_fit_loadable(struct udevice *dev, int index,
438 const char *type, const char **strp)
Jean-Jacques Hiblot98823aa2019-10-22 16:39:20 +0200439{
440 return -ENOSYS;
441}
442
443#endif
Tom Rini55a297c2021-04-19 16:18:49 -0400444#endif