oprom(3)

๐Ÿ“ฆ version 1.3.1, in epel 10, fedora 44

๐Ÿฆ‹ 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 the buffer and buffer_len, she sets up your **img for 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 allocated devices buffer of count size, and the function returns count filled 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 allocated devices buffer of count size, and count comes 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 a uint8_t, not an int โ€” 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_SUCCESS if device is on the list of supported devices.
  • IGSC_ERROR_DEVICE_NOT_FOUND otherwise.

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_COMPATIBLE if update image is for a different platform.
  • IGSC_VERSION_NEWER if update image version is newer than the one on the device.
  • IGSC_VERSION_EQUAL if update image version is equal to the one on the device.
  • IGSC_VERSION_OLDER if update image version is older than the one on the device.
  • IGSC_VERSION_ERROR if 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