162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# For a description of the syntax of this configuration file,
462306a36Sopenharmony_ci# see Documentation/kbuild/kconfig-language.rst.
562306a36Sopenharmony_ci#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cimenu "Firmware Drivers"
862306a36Sopenharmony_ci
962306a36Sopenharmony_cisource "drivers/firmware/arm_scmi/Kconfig"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciconfig ARM_SCPI_PROTOCOL
1262306a36Sopenharmony_ci	tristate "ARM System Control and Power Interface (SCPI) Message Protocol"
1362306a36Sopenharmony_ci	depends on ARM || ARM64 || COMPILE_TEST
1462306a36Sopenharmony_ci	depends on MAILBOX
1562306a36Sopenharmony_ci	help
1662306a36Sopenharmony_ci	  System Control and Power Interface (SCPI) Message Protocol is
1762306a36Sopenharmony_ci	  defined for the purpose of communication between the Application
1862306a36Sopenharmony_ci	  Cores(AP) and the System Control Processor(SCP). The MHU peripheral
1962306a36Sopenharmony_ci	  provides a mechanism for inter-processor communication between SCP
2062306a36Sopenharmony_ci	  and AP.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	  SCP controls most of the power management on the Application
2362306a36Sopenharmony_ci	  Processors. It offers control and management of: the core/cluster
2462306a36Sopenharmony_ci	  power states, various power domain DVFS including the core/cluster,
2562306a36Sopenharmony_ci	  certain system clocks configuration, thermal sensors and many
2662306a36Sopenharmony_ci	  others.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	  This protocol library provides interface for all the client drivers
2962306a36Sopenharmony_ci	  making use of the features offered by the SCP.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciconfig ARM_SCPI_POWER_DOMAIN
3262306a36Sopenharmony_ci	tristate "SCPI power domain driver"
3362306a36Sopenharmony_ci	depends on ARM_SCPI_PROTOCOL || (COMPILE_TEST && OF)
3462306a36Sopenharmony_ci	default y
3562306a36Sopenharmony_ci	select PM_GENERIC_DOMAINS if PM
3662306a36Sopenharmony_ci	help
3762306a36Sopenharmony_ci	  This enables support for the SCPI power domains which can be
3862306a36Sopenharmony_ci	  enabled or disabled via the SCP firmware
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig ARM_SDE_INTERFACE
4162306a36Sopenharmony_ci	bool "ARM Software Delegated Exception Interface (SDEI)"
4262306a36Sopenharmony_ci	depends on ARM64
4362306a36Sopenharmony_ci	depends on ACPI_APEI_GHES
4462306a36Sopenharmony_ci	help
4562306a36Sopenharmony_ci	  The Software Delegated Exception Interface (SDEI) is an ARM
4662306a36Sopenharmony_ci	  standard for registering callbacks from the platform firmware
4762306a36Sopenharmony_ci	  into the OS. This is typically used to implement RAS notifications.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciconfig EDD
5062306a36Sopenharmony_ci	tristate "BIOS Enhanced Disk Drive calls determine boot disk"
5162306a36Sopenharmony_ci	depends on X86
5262306a36Sopenharmony_ci	help
5362306a36Sopenharmony_ci	  Say Y or M here if you want to enable BIOS Enhanced Disk Drive
5462306a36Sopenharmony_ci	  Services real mode BIOS calls to determine which disk
5562306a36Sopenharmony_ci	  BIOS tries boot from.  This information is then exported via sysfs.
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	  This option is experimental and is known to fail to boot on some
5862306a36Sopenharmony_ci          obscure configurations. Most disk controller BIOS vendors do
5962306a36Sopenharmony_ci          not yet implement this feature.
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciconfig EDD_OFF
6262306a36Sopenharmony_ci	bool "Sets default behavior for EDD detection to off"
6362306a36Sopenharmony_ci	depends on EDD
6462306a36Sopenharmony_ci	default n
6562306a36Sopenharmony_ci	help
6662306a36Sopenharmony_ci	  Say Y if you want EDD disabled by default, even though it is compiled into the
6762306a36Sopenharmony_ci	  kernel. Say N if you want EDD enabled by default. EDD can be dynamically set
6862306a36Sopenharmony_ci	  using the kernel parameter 'edd={on|skipmbr|off}'.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ciconfig FIRMWARE_MEMMAP
7162306a36Sopenharmony_ci    bool "Add firmware-provided memory map to sysfs" if EXPERT
7262306a36Sopenharmony_ci    default X86
7362306a36Sopenharmony_ci    help
7462306a36Sopenharmony_ci      Add the firmware-provided (unmodified) memory map to /sys/firmware/memmap.
7562306a36Sopenharmony_ci      That memory map is used for example by kexec to set up parameter area
7662306a36Sopenharmony_ci      for the next kernel, but can also be used for debugging purposes.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci      See also Documentation/ABI/testing/sysfs-firmware-memmap.
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciconfig EFI_PCDP
8162306a36Sopenharmony_ci	bool "Console device selection via EFI PCDP or HCDP table"
8262306a36Sopenharmony_ci	depends on ACPI && EFI && IA64
8362306a36Sopenharmony_ci	default y if IA64
8462306a36Sopenharmony_ci	help
8562306a36Sopenharmony_ci	  If your firmware supplies the PCDP table, and you want to
8662306a36Sopenharmony_ci	  automatically use the primary console device it describes
8762306a36Sopenharmony_ci	  as the Linux console, say Y here.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	  If your firmware supplies the HCDP table, and you want to
9062306a36Sopenharmony_ci	  use the first serial port it describes as the Linux console,
9162306a36Sopenharmony_ci	  say Y here.  If your EFI ConOut path contains only a UART
9262306a36Sopenharmony_ci	  device, it will become the console automatically.  Otherwise,
9362306a36Sopenharmony_ci	  you must specify the "console=hcdp" kernel boot argument.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci	  Neither the PCDP nor the HCDP affects naming of serial devices,
9662306a36Sopenharmony_ci	  so a serial console may be /dev/ttyS0, /dev/ttyS1, etc, depending
9762306a36Sopenharmony_ci	  on how the driver discovers devices.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci	  You must also enable the appropriate drivers (serial, VGA, etc.)
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_ci	  See DIG64_HCDPv20_042804.pdf available from
10262306a36Sopenharmony_ci	  <http://www.dig64.org/specifications/> 
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciconfig DMIID
10562306a36Sopenharmony_ci    bool "Export DMI identification via sysfs to userspace"
10662306a36Sopenharmony_ci    depends on DMI
10762306a36Sopenharmony_ci    default y
10862306a36Sopenharmony_ci	help
10962306a36Sopenharmony_ci	  Say Y here if you want to query SMBIOS/DMI system identification
11062306a36Sopenharmony_ci	  information from userspace through /sys/class/dmi/id/ or if you want
11162306a36Sopenharmony_ci	  DMI-based module auto-loading.
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ciconfig DMI_SYSFS
11462306a36Sopenharmony_ci	tristate "DMI table support in sysfs"
11562306a36Sopenharmony_ci	depends on SYSFS && DMI
11662306a36Sopenharmony_ci	default n
11762306a36Sopenharmony_ci	help
11862306a36Sopenharmony_ci	  Say Y or M here to enable the exporting of the raw DMI table
11962306a36Sopenharmony_ci	  data via sysfs.  This is useful for consuming the data without
12062306a36Sopenharmony_ci	  requiring any access to /dev/mem at all.  Tables are found
12162306a36Sopenharmony_ci	  under /sys/firmware/dmi when this option is enabled and
12262306a36Sopenharmony_ci	  loaded.
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciconfig DMI_SCAN_MACHINE_NON_EFI_FALLBACK
12562306a36Sopenharmony_ci	bool
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ciconfig ISCSI_IBFT_FIND
12862306a36Sopenharmony_ci	bool "iSCSI Boot Firmware Table Attributes"
12962306a36Sopenharmony_ci	depends on X86 && ISCSI_IBFT
13062306a36Sopenharmony_ci	default n
13162306a36Sopenharmony_ci	help
13262306a36Sopenharmony_ci	  This option enables the kernel to find the region of memory
13362306a36Sopenharmony_ci	  in which the ISCSI Boot Firmware Table (iBFT) resides. This
13462306a36Sopenharmony_ci	  is necessary for iSCSI Boot Firmware Table Attributes module to work
13562306a36Sopenharmony_ci	  properly.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciconfig ISCSI_IBFT
13862306a36Sopenharmony_ci	tristate "iSCSI Boot Firmware Table Attributes module"
13962306a36Sopenharmony_ci	select ISCSI_BOOT_SYSFS
14062306a36Sopenharmony_ci	select ISCSI_IBFT_FIND if X86
14162306a36Sopenharmony_ci	depends on ACPI && SCSI && SCSI_LOWLEVEL
14262306a36Sopenharmony_ci	default	n
14362306a36Sopenharmony_ci	help
14462306a36Sopenharmony_ci	  This option enables support for detection and exposing of iSCSI
14562306a36Sopenharmony_ci	  Boot Firmware Table (iBFT) via sysfs to userspace. If you wish to
14662306a36Sopenharmony_ci	  detect iSCSI boot parameters dynamically during system boot, say Y.
14762306a36Sopenharmony_ci	  Otherwise, say N.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciconfig RASPBERRYPI_FIRMWARE
15062306a36Sopenharmony_ci	tristate "Raspberry Pi Firmware Driver"
15162306a36Sopenharmony_ci	depends on BCM2835_MBOX
15262306a36Sopenharmony_ci	help
15362306a36Sopenharmony_ci	  This option enables support for communicating with the firmware on the
15462306a36Sopenharmony_ci	  Raspberry Pi.
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ciconfig FW_CFG_SYSFS
15762306a36Sopenharmony_ci	tristate "QEMU fw_cfg device support in sysfs"
15862306a36Sopenharmony_ci	depends on SYSFS && (ARM || ARM64 || PARISC || PPC_PMAC || SPARC || X86)
15962306a36Sopenharmony_ci	depends on HAS_IOPORT_MAP
16062306a36Sopenharmony_ci	default n
16162306a36Sopenharmony_ci	help
16262306a36Sopenharmony_ci	  Say Y or M here to enable the exporting of the QEMU firmware
16362306a36Sopenharmony_ci	  configuration (fw_cfg) file entries via sysfs. Entries are
16462306a36Sopenharmony_ci	  found under /sys/firmware/fw_cfg when this option is enabled
16562306a36Sopenharmony_ci	  and loaded.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ciconfig FW_CFG_SYSFS_CMDLINE
16862306a36Sopenharmony_ci	bool "QEMU fw_cfg device parameter parsing"
16962306a36Sopenharmony_ci	depends on FW_CFG_SYSFS
17062306a36Sopenharmony_ci	help
17162306a36Sopenharmony_ci	  Allow the qemu_fw_cfg device to be initialized via the kernel
17262306a36Sopenharmony_ci	  command line or using a module parameter.
17362306a36Sopenharmony_ci	  WARNING: Using incorrect parameters (base address in particular)
17462306a36Sopenharmony_ci	  may crash your system.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ciconfig INTEL_STRATIX10_SERVICE
17762306a36Sopenharmony_ci	tristate "Intel Stratix10 Service Layer"
17862306a36Sopenharmony_ci	depends on ARCH_INTEL_SOCFPGA && ARM64 && HAVE_ARM_SMCCC
17962306a36Sopenharmony_ci	default n
18062306a36Sopenharmony_ci	help
18162306a36Sopenharmony_ci	  Intel Stratix10 service layer runs at privileged exception level,
18262306a36Sopenharmony_ci	  interfaces with the service providers (FPGA manager is one of them)
18362306a36Sopenharmony_ci	  and manages secure monitor call to communicate with secure monitor
18462306a36Sopenharmony_ci	  software at secure monitor exception level.
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci	  Say Y here if you want Stratix10 service layer support.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ciconfig INTEL_STRATIX10_RSU
18962306a36Sopenharmony_ci	tristate "Intel Stratix10 Remote System Update"
19062306a36Sopenharmony_ci	depends on INTEL_STRATIX10_SERVICE
19162306a36Sopenharmony_ci	help
19262306a36Sopenharmony_ci	  The Intel Remote System Update (RSU) driver exposes interfaces
19362306a36Sopenharmony_ci	  access through the Intel Service Layer to user space via sysfs
19462306a36Sopenharmony_ci	  device attribute nodes. The RSU interfaces report/control some of
19562306a36Sopenharmony_ci	  the optional RSU features of the Stratix 10 SoC FPGA.
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci	  The RSU provides a way for customers to update the boot
19862306a36Sopenharmony_ci	  configuration of a Stratix 10 SoC device with significantly reduced
19962306a36Sopenharmony_ci	  risk of corrupting the bitstream storage and bricking the system.
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci	  Enable RSU support if you are using an Intel SoC FPGA with the RSU
20262306a36Sopenharmony_ci	  feature enabled and you want Linux user space control.
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci	  Say Y here if you want Intel RSU support.
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ciconfig MTK_ADSP_IPC
20762306a36Sopenharmony_ci	tristate "MTK ADSP IPC Protocol driver"
20862306a36Sopenharmony_ci	depends on MTK_ADSP_MBOX
20962306a36Sopenharmony_ci	help
21062306a36Sopenharmony_ci	  Say yes here to add support for the MediaTek ADSP IPC
21162306a36Sopenharmony_ci	  between host AP (Linux) and the firmware running on ADSP.
21262306a36Sopenharmony_ci	  ADSP exists on some mtk processors.
21362306a36Sopenharmony_ci	  Client might use shared memory to exchange information with ADSP.
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ciconfig QCOM_SCM
21662306a36Sopenharmony_ci	tristate
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciconfig QCOM_SCM_DOWNLOAD_MODE_DEFAULT
21962306a36Sopenharmony_ci	bool "Qualcomm download mode enabled by default"
22062306a36Sopenharmony_ci	depends on QCOM_SCM
22162306a36Sopenharmony_ci	help
22262306a36Sopenharmony_ci	  A device with "download mode" enabled will upon an unexpected
22362306a36Sopenharmony_ci	  warm-restart enter a special debug mode that allows the user to
22462306a36Sopenharmony_ci	  "download" memory content over USB for offline postmortem analysis.
22562306a36Sopenharmony_ci	  The feature can be enabled/disabled on the kernel command line.
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci	  Say Y here to enable "download mode" by default.
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciconfig SYSFB
23062306a36Sopenharmony_ci	bool
23162306a36Sopenharmony_ci	select BOOT_VESA_SUPPORT
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ciconfig SYSFB_SIMPLEFB
23462306a36Sopenharmony_ci	bool "Mark VGA/VBE/EFI FB as generic system framebuffer"
23562306a36Sopenharmony_ci	depends on X86 || EFI
23662306a36Sopenharmony_ci	select SYSFB
23762306a36Sopenharmony_ci	help
23862306a36Sopenharmony_ci	  Firmwares often provide initial graphics framebuffers so the BIOS,
23962306a36Sopenharmony_ci	  bootloader or kernel can show basic video-output during boot for
24062306a36Sopenharmony_ci	  user-guidance and debugging. Historically, x86 used the VESA BIOS
24162306a36Sopenharmony_ci	  Extensions and EFI-framebuffers for this, which are mostly limited
24262306a36Sopenharmony_ci	  to x86 BIOS or EFI systems.
24362306a36Sopenharmony_ci	  This option, if enabled, marks VGA/VBE/EFI framebuffers as generic
24462306a36Sopenharmony_ci	  framebuffers so the new generic system-framebuffer drivers can be
24562306a36Sopenharmony_ci	  used instead. If the framebuffer is not compatible with the generic
24662306a36Sopenharmony_ci	  modes, it is advertised as fallback platform framebuffer so legacy
24762306a36Sopenharmony_ci	  drivers like efifb, vesafb and uvesafb can pick it up.
24862306a36Sopenharmony_ci	  If this option is not selected, all system framebuffers are always
24962306a36Sopenharmony_ci	  marked as fallback platform framebuffers as usual.
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci	  Note: Legacy fbdev drivers, including vesafb, efifb, uvesafb, will
25262306a36Sopenharmony_ci	  not be able to pick up generic system framebuffers if this option
25362306a36Sopenharmony_ci	  is selected. You are highly encouraged to enable simplefb as
25462306a36Sopenharmony_ci	  replacement if you select this option. simplefb can correctly deal
25562306a36Sopenharmony_ci	  with generic system framebuffers. But you should still keep vesafb
25662306a36Sopenharmony_ci	  and others enabled as fallback if a system framebuffer is
25762306a36Sopenharmony_ci	  incompatible with simplefb.
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci	  If unsure, say Y.
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ciconfig TI_SCI_PROTOCOL
26262306a36Sopenharmony_ci	tristate "TI System Control Interface (TISCI) Message Protocol"
26362306a36Sopenharmony_ci	depends on TI_MESSAGE_MANAGER
26462306a36Sopenharmony_ci	help
26562306a36Sopenharmony_ci	  TI System Control Interface (TISCI) Message Protocol is used to manage
26662306a36Sopenharmony_ci	  compute systems such as ARM, DSP etc with the system controller in
26762306a36Sopenharmony_ci	  complex System on Chip(SoC) such as those found on certain keystone
26862306a36Sopenharmony_ci	  generation SoC from TI.
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci	  System controller provides various facilities including power
27162306a36Sopenharmony_ci	  management function support.
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci	  This protocol library is used by client drivers to use the features
27462306a36Sopenharmony_ci	  provided by the system controller.
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ciconfig TRUSTED_FOUNDATIONS
27762306a36Sopenharmony_ci	bool "Trusted Foundations secure monitor support"
27862306a36Sopenharmony_ci	depends on ARM && CPU_V7
27962306a36Sopenharmony_ci	help
28062306a36Sopenharmony_ci	  Some devices (including most early Tegra-based consumer devices on
28162306a36Sopenharmony_ci	  the market) are booted with the Trusted Foundations secure monitor
28262306a36Sopenharmony_ci	  active, requiring some core operations to be performed by the secure
28362306a36Sopenharmony_ci	  monitor instead of the kernel.
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ci	  This option allows the kernel to invoke the secure monitor whenever
28662306a36Sopenharmony_ci	  required on devices using Trusted Foundations. See the functions and
28762306a36Sopenharmony_ci	  comments in linux/firmware/trusted_foundations.h or the device tree
28862306a36Sopenharmony_ci	  bindings for "tlm,trusted-foundations" for details on how to use it.
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci	  Choose N if you don't know what this is about.
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ciconfig TURRIS_MOX_RWTM
29362306a36Sopenharmony_ci	tristate "Turris Mox rWTM secure firmware driver"
29462306a36Sopenharmony_ci	depends on ARCH_MVEBU || COMPILE_TEST
29562306a36Sopenharmony_ci	depends on HAS_DMA && OF
29662306a36Sopenharmony_ci	depends on MAILBOX
29762306a36Sopenharmony_ci	select HW_RANDOM
29862306a36Sopenharmony_ci	select ARMADA_37XX_RWTM_MBOX
29962306a36Sopenharmony_ci	help
30062306a36Sopenharmony_ci	  This driver communicates with the firmware on the Cortex-M3 secure
30162306a36Sopenharmony_ci	  processor of the Turris Mox router. Enable if you are building for
30262306a36Sopenharmony_ci	  Turris Mox, and you will be able to read the device serial number and
30362306a36Sopenharmony_ci	  other manufacturing data and also utilize the Entropy Bit Generator
30462306a36Sopenharmony_ci	  for hardware random number generation.
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_cisource "drivers/firmware/arm_ffa/Kconfig"
30762306a36Sopenharmony_cisource "drivers/firmware/broadcom/Kconfig"
30862306a36Sopenharmony_cisource "drivers/firmware/cirrus/Kconfig"
30962306a36Sopenharmony_cisource "drivers/firmware/google/Kconfig"
31062306a36Sopenharmony_cisource "drivers/firmware/efi/Kconfig"
31162306a36Sopenharmony_cisource "drivers/firmware/imx/Kconfig"
31262306a36Sopenharmony_cisource "drivers/firmware/meson/Kconfig"
31362306a36Sopenharmony_cisource "drivers/firmware/psci/Kconfig"
31462306a36Sopenharmony_cisource "drivers/firmware/smccc/Kconfig"
31562306a36Sopenharmony_cisource "drivers/firmware/tegra/Kconfig"
31662306a36Sopenharmony_cisource "drivers/firmware/xilinx/Kconfig"
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ciendmenu
319