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