# SPDX-License-Identifier: GPL-2.0
menu "Firmware loader"

config FW_LOADER
	tristate "Firmware loading facility" if EXPERT
	default y
	help
	  This enables the firmware loading facility in the kernel. The kernel
	  will first look for built-in firmware, if it has any. Next, it will
	  look for the requested firmware in a series of filesystem paths:

		o firmware_class path module parameter or kernel boot param
		o /lib/firmware/updates/UTS_RELEASE
		o /lib/firmware/updates
		o /lib/firmware/UTS_RELEASE
		o /lib/firmware

	  Enabling this feature only increases your kernel image by about
	  828 bytes, enable this option unless you are certain you don't
	  need firmware.

	  You typically want this built-in (=y) but you can also enable this
	  as a module, in which case the firmware_class module will be built.
	  You also want to be sure to enable this built-in if you are going to
	  enable built-in firmware (CONFIG_EXTRA_FIRMWARE).

if FW_LOADER

config FW_LOADER_PAGED_BUF
	bool

config EXTRA_FIRMWARE
	string "Build named firmware blobs into the kernel binary"
	help
	  Device drivers which require firmware can typically deal with
	  having the kernel load firmware from the various supported
	  /lib/firmware/ paths. This option enables you to build into the
	  kernel firmware files. Built-in firmware searches are preceded
	  over firmware lookups using your filesystem over the supported
	  /lib/firmware paths documented on CONFIG_FW_LOADER.

	  This may be useful for testing or if the firmware is required early on
	  in boot and cannot rely on the firmware being placed in an initrd or
	  initramfs.

	  This option is a string and takes the (space-separated) names of the
	  firmware files -- the same names that appear in MODULE_FIRMWARE()
	  and request_firmware() in the source. These files should exist under
	  the directory specified by the EXTRA_FIRMWARE_DIR option, which is
	  /lib/firmware by default.

	  For example, you might set CONFIG_EXTRA_FIRMWARE="usb8388.bin", copy
	  the usb8388.bin file into /lib/firmware, and build the kernel. Then
	  any request_firmware("usb8388.bin") will be satisfied internally
	  inside the kernel without ever looking at your filesystem at runtime.

	  WARNING: If you include additional firmware files into your binary
	  kernel image that are not available under the terms of the GPL,
	  then it may be a violation of the GPL to distribute the resulting
	  image since it combines both GPL and non-GPL work. You should
	  consult a lawyer of your own before distributing such an image.

config EXTRA_FIRMWARE_DIR
	string "Firmware blobs root directory"
	depends on EXTRA_FIRMWARE != ""
	default "/lib/firmware"
	help
	  This option controls the directory in which the kernel build system
	  looks for the firmware files listed in the EXTRA_FIRMWARE option.

config FW_LOADER_USER_HELPER
	bool "Enable the firmware sysfs fallback mechanism"
	select FW_LOADER_PAGED_BUF
	help
	  This option enables a sysfs loading facility to enable firmware
	  loading to the kernel through userspace as a fallback mechanism
	  if and only if the kernel's direct filesystem lookup for the
	  firmware failed using the different /lib/firmware/ paths, or the
	  path specified in the firmware_class path module parameter, or the
	  firmware_class path kernel boot parameter if the firmware_class is
	  built-in. For details on how to work with the sysfs fallback mechanism
	  refer to Documentation/driver-api/firmware/fallback-mechanisms.rst.

	  The direct filesystem lookup for firmware is always used first now.

	  If the kernel's direct filesystem lookup for firmware fails to find
	  the requested firmware a sysfs fallback loading facility is made
	  available and userspace is informed about this through uevents.
	  The uevent can be suppressed if the driver explicitly requested it,
	  this is known as the driver using the custom fallback mechanism.
	  If the custom fallback mechanism is used userspace must always
	  acknowledge failure to find firmware as the timeout for the fallback
	  mechanism is disabled, and failed requests will linger forever.

	  This used to be the default firmware loading facility, and udev used
	  to listen for uvents to load firmware for the kernel. The firmware
	  loading facility functionality in udev has been removed, as such it
	  can no longer be relied upon as a fallback mechanism. Linux no longer
	  relies on or uses a fallback mechanism in userspace. If you need to
	  rely on one refer to the permissively licensed firmwared:

	  https://github.com/teg/firmwared

	  Since this was the default firmware loading facility at one point,
	  old userspace may exist which relies upon it, and as such this
	  mechanism can never be removed from the kernel.

	  You should only enable this functionality if you are certain you
	  require a fallback mechanism and have a userspace mechanism ready to
	  load firmware in case it is not found. One main reason for this may
	  be if you have drivers which require firmware built-in and for
	  whatever reason cannot place the required firmware in initramfs.
	  Another reason kernels may have this feature enabled is to support a
	  driver which explicitly relies on this fallback mechanism. Only two
	  drivers need this today:

	    o CONFIG_LEDS_LP55XX_COMMON
	    o CONFIG_DELL_RBU

	  Outside of supporting the above drivers, another reason for needing
	  this may be that your firmware resides outside of the paths the kernel
	  looks for and cannot possibly be specified using the firmware_class
	  path module parameter or kernel firmware_class path boot parameter
	  if firmware_class is built-in.

	  A modern use case may be to temporarily mount a custom partition
	  during provisioning which is only accessible to userspace, and then
	  to use it to look for and fetch the required firmware. Such type of
	  driver functionality may not even ever be desirable upstream by
	  vendors, and as such is only required to be supported as an interface
	  for provisioning. Since udev's firmware loading facility has been
	  removed you can use firmwared or a fork of it to customize how you
	  want to load firmware based on uevents issued.

	  Enabling this option will increase your kernel image size by about
	  13436 bytes.

	  If you are unsure about this, say N here, unless you are Linux
	  distribution and need to support the above two drivers, or you are
	  certain you need to support some really custom firmware loading
	  facility in userspace.

config FW_LOADER_USER_HELPER_FALLBACK
	bool "Force the firmware sysfs fallback mechanism when possible"
	depends on FW_LOADER_USER_HELPER
	help
	  Enabling this option forces a sysfs userspace fallback mechanism
	  to be used for all firmware requests which explicitly do not disable a
	  a fallback mechanism. Firmware calls which do prohibit a fallback
	  mechanism is request_firmware_direct(). This option is kept for
	  backward compatibility purposes given this precise mechanism can also
	  be enabled by setting the proc sysctl value to true:

	       /proc/sys/kernel/firmware_config/force_sysfs_fallback

	  If you are unsure about this, say N here.

config FW_LOADER_COMPRESS
	bool "Enable compressed firmware support"
	select FW_LOADER_PAGED_BUF
	select XZ_DEC
	help
	  This option enables the support for loading compressed firmware
	  files. The caller of firmware API receives the decompressed file
	  content. The compressed file is loaded as a fallback, only after
	  loading the raw file failed at first.

	  Currently only XZ-compressed files are supported, and they have to
	  be compressed with either none or crc32 integrity check type (pass
	  "-C crc32" option to xz command).

config FW_CACHE
	bool "Enable firmware caching during suspend"
	depends on PM_SLEEP
	default y if PM_SLEEP
	help
	  Because firmware caching generates uevent messages that are sent
	  over a netlink socket, it can prevent suspend on many platforms.
	  It is also not always useful, so on such platforms we have the
	  option.

	  If unsure, say Y.

endif # FW_LOADER
endmenu
