mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
firmware loader: document kernel direct loading
This patch adds description on recently introduced direct firmware loading by Linus. Cc: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
66081a7251
commit
10bd4c7572
@@ -18,32 +18,40 @@
|
|||||||
High level behavior (mixed):
|
High level behavior (mixed):
|
||||||
============================
|
============================
|
||||||
|
|
||||||
kernel(driver): calls request_firmware(&fw_entry, $FIRMWARE, device)
|
1), kernel(driver):
|
||||||
|
- calls request_firmware(&fw_entry, $FIRMWARE, device)
|
||||||
|
- kernel searchs the fimware image with name $FIRMWARE directly
|
||||||
|
in the below search path of root filesystem:
|
||||||
|
"/lib/firmware/updates/" UTS_RELEASE,
|
||||||
|
"/lib/firmware/updates",
|
||||||
|
"/lib/firmware/" UTS_RELEASE,
|
||||||
|
"/lib/firmware"
|
||||||
|
- If found, goto 7), else goto 2)
|
||||||
|
|
||||||
userspace:
|
2), userspace:
|
||||||
- /sys/class/firmware/xxx/{loading,data} appear.
|
- /sys/class/firmware/xxx/{loading,data} appear.
|
||||||
- hotplug gets called with a firmware identifier in $FIRMWARE
|
- hotplug gets called with a firmware identifier in $FIRMWARE
|
||||||
and the usual hotplug environment.
|
and the usual hotplug environment.
|
||||||
- hotplug: echo 1 > /sys/class/firmware/xxx/loading
|
- hotplug: echo 1 > /sys/class/firmware/xxx/loading
|
||||||
|
|
||||||
kernel: Discard any previous partial load.
|
3), kernel: Discard any previous partial load.
|
||||||
|
|
||||||
userspace:
|
4), userspace:
|
||||||
- hotplug: cat appropriate_firmware_image > \
|
- hotplug: cat appropriate_firmware_image > \
|
||||||
/sys/class/firmware/xxx/data
|
/sys/class/firmware/xxx/data
|
||||||
|
|
||||||
kernel: grows a buffer in PAGE_SIZE increments to hold the image as it
|
5), kernel: grows a buffer in PAGE_SIZE increments to hold the image as it
|
||||||
comes in.
|
comes in.
|
||||||
|
|
||||||
userspace:
|
6), userspace:
|
||||||
- hotplug: echo 0 > /sys/class/firmware/xxx/loading
|
- hotplug: echo 0 > /sys/class/firmware/xxx/loading
|
||||||
|
|
||||||
kernel: request_firmware() returns and the driver has the firmware
|
7), kernel: request_firmware() returns and the driver has the firmware
|
||||||
image in fw_entry->{data,size}. If something went wrong
|
image in fw_entry->{data,size}. If something went wrong
|
||||||
request_firmware() returns non-zero and fw_entry is set to
|
request_firmware() returns non-zero and fw_entry is set to
|
||||||
NULL.
|
NULL.
|
||||||
|
|
||||||
kernel(driver): Driver code calls release_firmware(fw_entry) releasing
|
8), kernel(driver): Driver code calls release_firmware(fw_entry) releasing
|
||||||
the firmware image and any related resource.
|
the firmware image and any related resource.
|
||||||
|
|
||||||
High level behavior (driver code):
|
High level behavior (driver code):
|
||||||
|
Reference in New Issue
Block a user