| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 1 | ================= | 
|  | 2 | Built-in firmware | 
|  | 3 | ================= | 
|  | 4 |  | 
|  | 5 | Firmware can be built-in to the kernel, this means building the firmware | 
|  | 6 | into vmlinux directly, to enable avoiding having to look for firmware from | 
|  | 7 | the filesystem. Instead, firmware can be looked for inside the kernel | 
|  | 8 | directly. You can enable built-in firmware using the kernel configuration | 
|  | 9 | options: | 
|  | 10 |  | 
|  | 11 | * CONFIG_EXTRA_FIRMWARE | 
|  | 12 | * CONFIG_EXTRA_FIRMWARE_DIR | 
|  | 13 |  | 
|  | 14 | There are a few reasons why you might want to consider building your firmware | 
|  | 15 | into the kernel with CONFIG_EXTRA_FIRMWARE: | 
|  | 16 |  | 
|  | 17 | * Speed | 
|  | 18 | * Firmware is needed for accessing the boot device, and the user doesn't | 
|  | 19 | want to stuff the firmware into the boot initramfs. | 
|  | 20 |  | 
|  | 21 | Even if you have these needs there are a few reasons why you may not be | 
|  | 22 | able to make use of built-in firmware: | 
|  | 23 |  | 
|  | 24 | * Legalese - firmware is non-GPL compatible | 
|  | 25 | * Some firmware may be optional | 
|  | 26 | * Firmware upgrades are possible, therefore a new firmware would implicate | 
|  | 27 | a complete kernel rebuild. | 
|  | 28 | * Some firmware files may be really large in size. The remote-proc subsystem | 
|  | 29 | is an example subsystem which deals with these sorts of firmware | 
|  | 30 | * The firmware may need to be scraped out from some device specific location | 
|  | 31 | dynamically, an example is calibration data for for some WiFi chipsets. This | 
|  | 32 | calibration data can be unique per sold device. | 
|  | 33 |  |