|  | ================= | 
|  | 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 for some WiFi chipsets. This | 
|  | calibration data can be unique per sold device. | 
|  |  |