mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 18:11:56 +00:00
113ccc3837
Understanding this code is getting out of control without any notes. Give the firmware_class driver a much needed documentation love, and while at it convert it to the new sphinx documentation format. v2: typos and small fixes Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
39 lines
1.6 KiB
ReStructuredText
39 lines
1.6 KiB
ReStructuredText
=================
|
|
Built-in firmware
|
|
=================
|
|
|
|
Firmware can be built-in to the kernel, this means building the firmware
|
|
into vmlinux directly, to enable avoiding having to look for firmware from
|
|
the filesystem. Instead, firmware can be looked for inside the kernel
|
|
directly. You can enable built-in firmware using the kernel configuration
|
|
options:
|
|
|
|
* CONFIG_EXTRA_FIRMWARE
|
|
* CONFIG_EXTRA_FIRMWARE_DIR
|
|
|
|
This should not be confused with CONFIG_FIRMWARE_IN_KERNEL, this is for drivers
|
|
which enables firmware to be built as part of the kernel build process. This
|
|
option, CONFIG_FIRMWARE_IN_KERNEL, will build all firmware for all drivers
|
|
enabled which ship its firmware inside the Linux kernel source tree.
|
|
|
|
There are a few reasons why you might want to consider building your firmware
|
|
into the kernel with CONFIG_EXTRA_FIRMWARE though:
|
|
|
|
* Speed
|
|
* Firmware is needed for accessing the boot device, and the user doesn't
|
|
want to stuff the firmware into the boot initramfs.
|
|
|
|
Even if you have these needs there are a few reasons why you may not be
|
|
able to make use of built-in firmware:
|
|
|
|
* Legalese - firmware is non-GPL compatible
|
|
* Some firmware may be optional
|
|
* Firmware upgrades are possible, therefore a new firmware would implicate
|
|
a complete kernel rebuild.
|
|
* Some firmware files may be really large in size. The remote-proc subsystem
|
|
is an example subsystem which deals with these sorts of firmware
|
|
* The firmware may need to be scraped out from some device specific location
|
|
dynamically, an example is calibration data for for some WiFi chipsets. This
|
|
calibration data can be unique per sold device.
|
|
|