| ================= | 
 | 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. | 
 |  |