| ================= |
| 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 |
| |
| There are a few reasons why you might want to consider building your firmware |
| into the kernel with CONFIG_EXTRA_FIRMWARE: |
| |
| * 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 some WiFi chipsets. This |
| calibration data can be unique per sold device. |
| |