oprom(3)
๐ฆ oprom ๐ฆ
okay so bestie, welcome to the oprom page from the Library Functions Manual โจ this one is all about OPROM images โ initing them, poking at them, listing the devices they support, yeeting them when you're done. it's giving "very specific library energy" and honestly? we're obsessed. every single function is here, no skips, no cap ๐
๐ธ NAME ๐ธ
oprom โ Oprom ๐
โจ SYNOPSIS โจ
๐ Functions ๐
igsc_image_oprom_initโ initializes an OPROM image handle from the supplied OPROM update image. you hand her thebufferandbuffer_len, she sets up your**imgfor you ๐ซถ
IGSC_EXPORT int igsc_image_oprom_init (IN OUT struct igsc_oprom_image **img, IN const uint8_t *buffer, IN uint32_t buffer_len)
igsc_image_oprom_versionโ grabs the OPROM version out of the supplied OPROM update image. it's like a little version vibe check ๐
IGSC_EXPORT int igsc_image_oprom_version (IN struct igsc_oprom_image *img, IN enum igsc_oprom_type type, OUT struct igsc_oprom_version *version)
igsc_image_oprom_typeโ retrieves the OPROM type from the OPROM update image you gave her ๐
IGSC_EXPORT int igsc_image_oprom_type (IN struct igsc_oprom_image *img, IN uint32_t *oprom_type)
igsc_image_oprom_count_devicesโ tells you how many different devices the OPROM update image associated with the handle supports. headcount time, bestie ๐ข
IGSC_EXPORT int igsc_image_oprom_count_devices (IN struct igsc_oprom_image *img, OUT uint32_t *count)
igsc_image_oprom_supported_devicesโ retrieves the list of supported devices from the OPROM update image associated with the handle. important deets: the caller supplies an allocateddevicesbuffer ofcountsize, and the function returnscountfilled with the devices it actually returned. so you do the allocating, she does the filling ๐
IGSC_EXPORT int igsc_image_oprom_supported_devices (IN struct igsc_oprom_image *img, OUT struct igsc_oprom_device_info *devices, IN OUT uint32_t *count)
igsc_image_oprom_match_deviceโ checks if the oprom image can be applied on the device. like, is this her device or not, let's find out ๐
IGSC_EXPORT int igsc_image_oprom_match_device (IN struct igsc_oprom_image *img, IN enum igsc_oprom_type request_type, IN struct igsc_device_info *device)
igsc_image_oprom_iterator_resetโ resets the iterator over the supported devices. back to the start, babes ๐
IGSC_EXPORT int igsc_image_oprom_iterator_reset (IN struct igsc_oprom_image *img)
igsc_image_oprom_iterator_nextโ progresses the supported device iterator and returns the oprom device info. next up, main character ๐
IGSC_EXPORT int igsc_image_oprom_iterator_next (IN struct igsc_oprom_image *img, OUT struct igsc_oprom_device_info *device)
igsc_image_oprom_count_devices_typedโ same headcount energy as the count above, but based on image type. how many different devices does the OPROM update image associated with the handle support, filtered by type ๐ขโจ
IGSC_EXPORT int igsc_image_oprom_count_devices_typed (IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT uint32_t *count)
igsc_image_oprom_supported_devices_typedโ retrieves the list of supported devices based on image type from the OPROM update image associated with the handle. again: the caller supplies an allocateddevicesbuffer ofcountsize, andcountcomes back filled with the devices actually returned. you bring the buffer, she brings the tea ๐ซ
IGSC_EXPORT int igsc_image_oprom_supported_devices_typed (IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT struct igsc_oprom_device_info_4ids *devices, IN OUT uint32_t *count)
igsc_image_oprom_iterator_reset_typedโ resets the iterator over the supported devices, based on image type. rewind, bestie โช
IGSC_EXPORT int igsc_image_oprom_iterator_reset_typed (IN struct igsc_oprom_image *img, IN uint32_t request_type)
igsc_image_oprom_iterator_next_typedโ progresses the supported device iterator and returns the oprom device info, based on image type. onward ๐ซ
IGSC_EXPORT int igsc_image_oprom_iterator_next_typed (IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT struct igsc_oprom_device_info_4ids *device)
igsc_image_oprom_has_4ids_extensionโ returns whether the oprom image has the 4ids device extension. yes or no, iconique ๐
IGSC_EXPORT int igsc_image_oprom_has_4ids_extension (IN struct igsc_oprom_image *img, IN uint32_t request_type, OUT bool *has_4ids_extension)
igsc_image_oprom_has_2ids_extensionโ returns whether the oprom image has the 2ids device extension ๐ฆ
IGSC_EXPORT int igsc_image_oprom_has_2ids_extension (IN struct igsc_oprom_image *img, OUT bool *has_2ids_extension)
igsc_image_oprom_code_devid_enforcedโ returns whether the oprom code config has the devId enforcement bit set. bit check, but make it fashion ๐ฅ
IGSC_EXPORT int igsc_image_oprom_code_devid_enforced (IN struct igsc_hw_config *hw_config, OUT bool *devid_enforced)
igsc_image_oprom_releaseโ releases the OPROM image handle. she's done her job, let her rest ๐ซถ
IGSC_EXPORT int igsc_image_oprom_release (IN struct igsc_oprom_image *img)
igsc_oprom_version_compareโ compares the input oprom version to the flash one. who's newer, who's older, the drama ๐ฟ note that she returns auint8_t, not anintโ different girl, different signature ๐
IGSC_EXPORT uint8_t igsc_oprom_version_compare (const struct igsc_oprom_version *image_ver, const struct igsc_oprom_version *device_ver)
igsc_image_get_typeโ determines the type of the provided image. what are you, bestie ๐ง
IGSC_EXPORT int igsc_image_get_type (IN const uint8_t *buffer, IN const uint32_t buffer_len, OUT uint8_t *type)
๐ Detailed Description ๐
โจ Function Documentation โจ
Okay bestie, here's the tea on every single function in this library. We're gonna go through them one by one, and I promise not to skip a single detail. No cap. ๐
igsc_image_get_type
IGSC_EXPORT int igsc_image_get_type (IN const uint8_t * buffer, IN const
uint32_t buffer_len, OUT uint8_t * type)
This function is literally just figuring out what type of image you've got. It's giving detective energy. ๐
Parameters
bufferโ a pointer to the buffer with the image.buffer_lenโ length of the buffer with the image.typeโ type of the image (enum igsc_image_type).
Returns
IGSC_SUCCESS if successful, otherwise error code. Periodt.
igsc_image_oprom_code_devid_enforced
IGSC_EXPORT int igsc_image_oprom_code_devid_enforced (IN struct
igsc_hw_config * hw_config, OUT bool * devid_enforced)
This one asks: does the oprom code config have the devId enforcement bit set? It's a yes or no vibe, bestie.
Parameters
hw_configโ device hardware configuration.devid_enforcedโ true when devId is enforced, false otherwise.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_count_devices
IGSC_EXPORT int igsc_image_oprom_count_devices (IN struct igsc_oprom_image *
img, OUT uint32_t * count)
Counts how many different devices are supported by the OPROM update image that's linked to your handle. It's giving inventory check. ๐
Parameters
imgโ OPROM image handle.countโ the number of devices.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_count_devices_typed
IGSC_EXPORT int igsc_image_oprom_count_devices_typed (IN struct
igsc_oprom_image * img, IN uint32_t request_type, OUT uint32_t * count)
Same as the last one but now it's typed. You tell it the request_type, and it counts the devices for that specific type. It's giving "I know my type" energy. ๐โโ๏ธ
Parameters
imgโ OPROM image handle.request_typeโ type of oprom device, enum igsc_oprom_type.countโ the number of devices.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_has_2ids_extension
IGSC_EXPORT int igsc_image_oprom_has_2ids_extension (IN struct
igsc_oprom_image * img, OUT bool * has_2ids_extension)
Does this oprom image have the 2ids device extension? It's a yes or no, bestie. Simple.
Parameters
imgโ OPROM image handle.has_2ids_extensionโ whether the oprom image has 2ids device extension.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_has_4ids_extension
IGSC_EXPORT int igsc_image_oprom_has_4ids_extension (IN struct
igsc_oprom_image * img, IN uint32_t request_type, OUT bool *
has_4ids_extension)
Now we're checking for the 4ids device extension. And you gotta specify the request_type too. So it's like, "does this specific type have the 4ids extension?" Iconic.
Parameters
imgโ OPROM image handle.request_typeโ type of oprom device.has_4ids_extensionโ whether the oprom image has 4ids device extension.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_init
IGSC_EXPORT int igsc_image_oprom_init (IN OUT struct igsc_oprom_image **
img, IN const uint8_t * buffer, IN uint32_t buffer_len)
This is the init function, so it's setting up your OPROM image handle from the update image you give it. It's giving "let's get started" energy. โจ
Parameters
imgโ OPROM image handle allocated by the function.bufferโ A pointer to the buffer with the OPROM update image.buffer_lenโ Length of the buffer with the OPROM update image.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_iterator_next
IGSC_EXPORT int igsc_image_oprom_iterator_next (IN struct igsc_oprom_image *
img, OUT struct igsc_oprom_device_info * device)
This one moves the iterator forward and gives you the next oprom device info. It's like scrolling through your faves. ๐ฑ
Parameters
imgโ OPROM image handle.deviceโ OPROM device information.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_iterator_next_typed
IGSC_EXPORT int igsc_image_oprom_iterator_next_typed (IN struct
igsc_oprom_image * img, IN uint32_t request_type, OUT struct
igsc_oprom_device_info_4ids * device)
Same as iterator_next but typed. You pass the request_type and it gives you the device info for that type. It's giving "I know what I want" energy. ๐
Parameters
imgโ OPROM image handle.request_typeโ type of oprom device, enum igsc_oprom_type.deviceโ OPROM device information.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_iterator_reset
IGSC_EXPORT int igsc_image_oprom_iterator_reset (IN struct igsc_oprom_image
* img)
Resets the iterator so you can start over from the beginning. It's like a fresh start, bestie. ๐
Parameters
imgโ OPROM image handle.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_iterator_reset_typed
IGSC_EXPORT int igsc_image_oprom_iterator_reset_typed (IN struct
igsc_oprom_image * img, IN uint32_t request_type)
Resets the iterator for a specific request_type. So you can start over for that type. It's giving targeted reset. ๐ฏ
Parameters
imgโ OPROM image handle.request_typeโ type of oprom device, enum igsc_oprom_type.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_match_device
IGSC_EXPORT int igsc_image_oprom_match_device (IN struct igsc_oprom_image *
img, IN enum igsc_oprom_type request_type, IN struct igsc_device_info *
device)
This one checks if the oprom image can be applied to your device. It's like a compatibility check, and we love a good match. ๐
Parameters
imgโ OPROM image handle.request_typeโ type of oprom device to match.deviceโ physical device info.
Returns
IGSC_SUCCESSif device is on the list of supported devices.IGSC_ERROR_DEVICE_NOT_FOUNDotherwise.
igsc_image_oprom_release
IGSC_EXPORT int igsc_image_oprom_release (IN struct igsc_oprom_image * img)
Frees up the OPROM image handle. It's like saying goodbye, but make it clean. ๐
Parameters
imgโ OPROM image handle.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_supported_devices
IGSC_EXPORT int igsc_image_oprom_supported_devices (IN struct
igsc_oprom_image * img, OUT struct igsc_oprom_device_info * devices, IN
OUT uint32_t * count)
This gets you a list of all the devices supported by the OPROM update image. You gotta bring your own buffer for the devices, sized by count. Then the function fills count with the actual number of devices it returned. It's giving "bring your own container" energy. ๐งบ
Parameters
imgโ OPROM image handle.devicesโ list of devices supported by the OPROM image.countโ in the number of devices allocated.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_supported_devices_typed
IGSC_EXPORT int igsc_image_oprom_supported_devices_typed (IN struct
igsc_oprom_image * img, IN uint32_t request_type, OUT struct
igsc_oprom_device_info_4ids * devices, IN OUT uint32_t * count)
Same as the last one but typed. You specify the request_type, and it gives you the list of supported devices for that type. You still bring your own buffer and count. It's giving "I know my type" again. ๐
Parameters
imgโ OPROM image handle.request_typeโ type of oprom device, enum igsc_oprom_type.devicesโ list of devices supported by the OPROM image.countโ in the number of devices allocated.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_type
IGSC_EXPORT int igsc_image_oprom_type (IN struct igsc_oprom_image * img, IN
uint32_t * oprom_type)
This one tells you the OPROM type from the update image. It's giving "what's your type?" but for oprom. ๐ฎ
Parameters
imgโ OPROM image handle.oprom_typeโ The variable to store obtained OPROM image type.
See also
enum igsc_oprom_type
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_image_oprom_version
IGSC_EXPORT int igsc_image_oprom_version (IN struct igsc_oprom_image * img,
IN enum igsc_oprom_type type, OUT struct igsc_oprom_version * version)
Gets the OPROM version from the update image. You gotta tell it the type too. It's giving "what version are we on?" energy. ๐
Parameters
imgโ OPROM image handle.typeโ OPROM image type.
See also
enum igsc_oprom_type
Parameters
versionโ The memory to store the obtained OPROM version.
Returns
IGSC_SUCCESS if successful, otherwise error code.
igsc_oprom_version_compare
IGSC_EXPORT uint8_t igsc_oprom_version_compare (const struct
igsc_oprom_version * image_ver, const struct igsc_oprom_version *
device_ver)
This one compares the oprom version from your update image to the one on the device (the flash one). It's like a versus battle, but for versions. โ๏ธ
Parameters
image_verโ pointer to the update image OPROM version.device_verโ pointer to the device OPROM version.
Returns
IGSC_VERSION_NOT_COMPATIBLEif update image is for a different platform.IGSC_VERSION_NEWERif update image version is newer than the one on the device.IGSC_VERSION_EQUALif update image version is equal to the one on the device.IGSC_VERSION_OLDERif update image version is older than the one on the device.IGSC_VERSION_ERRORif NULL parameters were provided.
๐ Author ๐
This whole thing was generated automatically by Doxygen for the Intel Graphics System Controller Firmware Update Library from the source code. So yeah, it's a robot, but it's a slay robot. ๐คโจ
And that's the tea! This page is from the Intel Graphics System Controller Firmware Update Library, and it's oprom(3). Mwah! ๐
๐ฆ where this page comes from
- epel 10: intel-gsc-devel 1.3.1-1.el10_3 ยท Apache-2.0
- fedora 44: intel-gsc-devel 0.9.5-4.fc44 ยท Apache-2.0
- fedora 44: intel-gsc-devel 1.2.0-2.fc44 ยท Apache-2.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms