- NetBSD Manual Pages
FIRMLOAD(9) NetBSD Kernel Developer's Manual FIRMLOAD(9)
Powered by man-cgi (2021-06-01).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
firmload -- Firmware loader API for device drivers
firmware_open(const char *drvname, const char *imgname,
firmware_read(firmware_handle_t fh, off_t offset, void *buf,
firmware_free(void *buf, size_t size);
firmload provides a simple and convenient API for device drivers to load
firmware images from files residing in the file system that are necessary
for the devices that they control. Firmware images reside in sub-direc-
tories, one for each driver, of a series of colon-separated path prefixes
specified by the sysctl variable hw.firmware.path.
The following functions are provided by the firmload API:
firmware_open(drvname, imgname, fhp)
Open the firmware image imgname for the driver drvname. The path
to the firmware image file is constructed by appending the string
``/drvname/imgname'' to each configured path prefix until opening
the firmware image file succeeds. Upon success, firmware_open()
returns 0 and stores a firmware image handle in the location
pointed to by fhp. Otherwise, an error code is returned to indi-
cate the reason for failure.
Close the firmware image file associated with the firmware handle
fh. Returns 0 upon success or an error code to indicate the rea-
son for failure.
Returns the size of the image file associated with the firmware
firmware_read(fh, offset, buf, size)
Reads from the image file associated with the firmware handle fh
beginning at offset offset for length size. The firmware image
data is placed into the buffer specified by buf. Returns 0 upon
success or an error code to indicate the reason for failure.
Allocates a region of wired kernel memory of size size. Note:
firmware_malloc() may block.
Frees a region of memory previously allocated by
autoconf(9), malloc(9), vnsubr(9)
The firmload framework first appeared in NetBSD 4.0.
Jason Thorpe <thorpej@NetBSD.org>
NetBSD 8.0 January 17, 2006 NetBSD 8.0