xref: /OK3568_Linux_fs/kernel/drivers/firmware/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# For a description of the syntax of this configuration file,
4*4882a593Smuzhiyun# see Documentation/kbuild/kconfig-language.rst.
5*4882a593Smuzhiyun#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyunmenu "Firmware Drivers"
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunconfig ARM_SCMI_PROTOCOL
10*4882a593Smuzhiyun	tristate "ARM System Control and Management Interface (SCMI) Message Protocol"
11*4882a593Smuzhiyun	depends on ARM || ARM64 || COMPILE_TEST
12*4882a593Smuzhiyun	depends on MAILBOX || HAVE_ARM_SMCCC_DISCOVERY
13*4882a593Smuzhiyun	help
14*4882a593Smuzhiyun	  ARM System Control and Management Interface (SCMI) protocol is a
15*4882a593Smuzhiyun	  set of operating system-independent software interfaces that are
16*4882a593Smuzhiyun	  used in system management. SCMI is extensible and currently provides
17*4882a593Smuzhiyun	  interfaces for: Discovery and self-description of the interfaces
18*4882a593Smuzhiyun	  it supports, Power domain management which is the ability to place
19*4882a593Smuzhiyun	  a given device or domain into the various power-saving states that
20*4882a593Smuzhiyun	  it supports, Performance management which is the ability to control
21*4882a593Smuzhiyun	  the performance of a domain that is composed of compute engines
22*4882a593Smuzhiyun	  such as application processors and other accelerators, Clock
23*4882a593Smuzhiyun	  management which is the ability to set and inquire rates on platform
24*4882a593Smuzhiyun	  managed clocks and Sensor management which is the ability to read
25*4882a593Smuzhiyun	  sensor data, and be notified of sensor value.
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun	  This protocol library provides interface for all the client drivers
28*4882a593Smuzhiyun	  making use of the features offered by the SCMI.
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunconfig ARM_SCMI_POWER_DOMAIN
31*4882a593Smuzhiyun	tristate "SCMI power domain driver"
32*4882a593Smuzhiyun	depends on ARM_SCMI_PROTOCOL || (COMPILE_TEST && OF)
33*4882a593Smuzhiyun	default y
34*4882a593Smuzhiyun	select PM_GENERIC_DOMAINS if PM
35*4882a593Smuzhiyun	help
36*4882a593Smuzhiyun	  This enables support for the SCMI power domains which can be
37*4882a593Smuzhiyun	  enabled or disabled via the SCP firmware
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun	  This driver can also be built as a module.  If so, the module
40*4882a593Smuzhiyun	  will be called scmi_pm_domain. Note this may needed early in boot
41*4882a593Smuzhiyun	  before rootfs may be available.
42*4882a593Smuzhiyun
43*4882a593Smuzhiyunconfig ARM_SCPI_PROTOCOL
44*4882a593Smuzhiyun	tristate "ARM System Control and Power Interface (SCPI) Message Protocol"
45*4882a593Smuzhiyun	depends on ARM || ARM64 || COMPILE_TEST
46*4882a593Smuzhiyun	depends on MAILBOX
47*4882a593Smuzhiyun	help
48*4882a593Smuzhiyun	  System Control and Power Interface (SCPI) Message Protocol is
49*4882a593Smuzhiyun	  defined for the purpose of communication between the Application
50*4882a593Smuzhiyun	  Cores(AP) and the System Control Processor(SCP). The MHU peripheral
51*4882a593Smuzhiyun	  provides a mechanism for inter-processor communication between SCP
52*4882a593Smuzhiyun	  and AP.
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	  SCP controls most of the power managament on the Application
55*4882a593Smuzhiyun	  Processors. It offers control and management of: the core/cluster
56*4882a593Smuzhiyun	  power states, various power domain DVFS including the core/cluster,
57*4882a593Smuzhiyun	  certain system clocks configuration, thermal sensors and many
58*4882a593Smuzhiyun	  others.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	  This protocol library provides interface for all the client drivers
61*4882a593Smuzhiyun	  making use of the features offered by the SCP.
62*4882a593Smuzhiyun
63*4882a593Smuzhiyunconfig ARM_SCPI_POWER_DOMAIN
64*4882a593Smuzhiyun	tristate "SCPI power domain driver"
65*4882a593Smuzhiyun	depends on ARM_SCPI_PROTOCOL || (COMPILE_TEST && OF)
66*4882a593Smuzhiyun	default y
67*4882a593Smuzhiyun	select PM_GENERIC_DOMAINS if PM
68*4882a593Smuzhiyun	help
69*4882a593Smuzhiyun	  This enables support for the SCPI power domains which can be
70*4882a593Smuzhiyun	  enabled or disabled via the SCP firmware
71*4882a593Smuzhiyun
72*4882a593Smuzhiyunconfig ARM_SDE_INTERFACE
73*4882a593Smuzhiyun	bool "ARM Software Delegated Exception Interface (SDEI)"
74*4882a593Smuzhiyun	depends on ARM64
75*4882a593Smuzhiyun	help
76*4882a593Smuzhiyun	  The Software Delegated Exception Interface (SDEI) is an ARM
77*4882a593Smuzhiyun	  standard for registering callbacks from the platform firmware
78*4882a593Smuzhiyun	  into the OS. This is typically used to implement RAS notifications.
79*4882a593Smuzhiyun
80*4882a593Smuzhiyunconfig EDD
81*4882a593Smuzhiyun	tristate "BIOS Enhanced Disk Drive calls determine boot disk"
82*4882a593Smuzhiyun	depends on X86
83*4882a593Smuzhiyun	help
84*4882a593Smuzhiyun	  Say Y or M here if you want to enable BIOS Enhanced Disk Drive
85*4882a593Smuzhiyun	  Services real mode BIOS calls to determine which disk
86*4882a593Smuzhiyun	  BIOS tries boot from.  This information is then exported via sysfs.
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun	  This option is experimental and is known to fail to boot on some
89*4882a593Smuzhiyun          obscure configurations. Most disk controller BIOS vendors do
90*4882a593Smuzhiyun          not yet implement this feature.
91*4882a593Smuzhiyun
92*4882a593Smuzhiyunconfig EDD_OFF
93*4882a593Smuzhiyun	bool "Sets default behavior for EDD detection to off"
94*4882a593Smuzhiyun	depends on EDD
95*4882a593Smuzhiyun	default n
96*4882a593Smuzhiyun	help
97*4882a593Smuzhiyun	  Say Y if you want EDD disabled by default, even though it is compiled into the
98*4882a593Smuzhiyun	  kernel. Say N if you want EDD enabled by default. EDD can be dynamically set
99*4882a593Smuzhiyun	  using the kernel parameter 'edd={on|skipmbr|off}'.
100*4882a593Smuzhiyun
101*4882a593Smuzhiyunconfig FIRMWARE_MEMMAP
102*4882a593Smuzhiyun    bool "Add firmware-provided memory map to sysfs" if EXPERT
103*4882a593Smuzhiyun    default X86
104*4882a593Smuzhiyun    help
105*4882a593Smuzhiyun      Add the firmware-provided (unmodified) memory map to /sys/firmware/memmap.
106*4882a593Smuzhiyun      That memory map is used for example by kexec to set up parameter area
107*4882a593Smuzhiyun      for the next kernel, but can also be used for debugging purposes.
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun      See also Documentation/ABI/testing/sysfs-firmware-memmap.
110*4882a593Smuzhiyun
111*4882a593Smuzhiyunconfig EFI_PCDP
112*4882a593Smuzhiyun	bool "Console device selection via EFI PCDP or HCDP table"
113*4882a593Smuzhiyun	depends on ACPI && EFI && IA64
114*4882a593Smuzhiyun	default y if IA64
115*4882a593Smuzhiyun	help
116*4882a593Smuzhiyun	  If your firmware supplies the PCDP table, and you want to
117*4882a593Smuzhiyun	  automatically use the primary console device it describes
118*4882a593Smuzhiyun	  as the Linux console, say Y here.
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun	  If your firmware supplies the HCDP table, and you want to
121*4882a593Smuzhiyun	  use the first serial port it describes as the Linux console,
122*4882a593Smuzhiyun	  say Y here.  If your EFI ConOut path contains only a UART
123*4882a593Smuzhiyun	  device, it will become the console automatically.  Otherwise,
124*4882a593Smuzhiyun	  you must specify the "console=hcdp" kernel boot argument.
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun	  Neither the PCDP nor the HCDP affects naming of serial devices,
127*4882a593Smuzhiyun	  so a serial console may be /dev/ttyS0, /dev/ttyS1, etc, depending
128*4882a593Smuzhiyun	  on how the driver discovers devices.
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun	  You must also enable the appropriate drivers (serial, VGA, etc.)
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun	  See DIG64_HCDPv20_042804.pdf available from
133*4882a593Smuzhiyun	  <http://www.dig64.org/specifications/>
134*4882a593Smuzhiyun
135*4882a593Smuzhiyunconfig DMIID
136*4882a593Smuzhiyun    bool "Export DMI identification via sysfs to userspace"
137*4882a593Smuzhiyun    depends on DMI
138*4882a593Smuzhiyun    default y
139*4882a593Smuzhiyun	help
140*4882a593Smuzhiyun	  Say Y here if you want to query SMBIOS/DMI system identification
141*4882a593Smuzhiyun	  information from userspace through /sys/class/dmi/id/ or if you want
142*4882a593Smuzhiyun	  DMI-based module auto-loading.
143*4882a593Smuzhiyun
144*4882a593Smuzhiyunconfig DMI_SYSFS
145*4882a593Smuzhiyun	tristate "DMI table support in sysfs"
146*4882a593Smuzhiyun	depends on SYSFS && DMI
147*4882a593Smuzhiyun	default n
148*4882a593Smuzhiyun	help
149*4882a593Smuzhiyun	  Say Y or M here to enable the exporting of the raw DMI table
150*4882a593Smuzhiyun	  data via sysfs.  This is useful for consuming the data without
151*4882a593Smuzhiyun	  requiring any access to /dev/mem at all.  Tables are found
152*4882a593Smuzhiyun	  under /sys/firmware/dmi when this option is enabled and
153*4882a593Smuzhiyun	  loaded.
154*4882a593Smuzhiyun
155*4882a593Smuzhiyunconfig DMI_SCAN_MACHINE_NON_EFI_FALLBACK
156*4882a593Smuzhiyun	bool
157*4882a593Smuzhiyun
158*4882a593Smuzhiyunconfig ISCSI_IBFT_FIND
159*4882a593Smuzhiyun	bool "iSCSI Boot Firmware Table Attributes"
160*4882a593Smuzhiyun	depends on X86 && ISCSI_IBFT
161*4882a593Smuzhiyun	default n
162*4882a593Smuzhiyun	help
163*4882a593Smuzhiyun	  This option enables the kernel to find the region of memory
164*4882a593Smuzhiyun	  in which the ISCSI Boot Firmware Table (iBFT) resides. This
165*4882a593Smuzhiyun	  is necessary for iSCSI Boot Firmware Table Attributes module to work
166*4882a593Smuzhiyun	  properly.
167*4882a593Smuzhiyun
168*4882a593Smuzhiyunconfig ISCSI_IBFT
169*4882a593Smuzhiyun	tristate "iSCSI Boot Firmware Table Attributes module"
170*4882a593Smuzhiyun	select ISCSI_BOOT_SYSFS
171*4882a593Smuzhiyun	select ISCSI_IBFT_FIND if X86
172*4882a593Smuzhiyun	depends on ACPI && SCSI && SCSI_LOWLEVEL
173*4882a593Smuzhiyun	default	n
174*4882a593Smuzhiyun	help
175*4882a593Smuzhiyun	  This option enables support for detection and exposing of iSCSI
176*4882a593Smuzhiyun	  Boot Firmware Table (iBFT) via sysfs to userspace. If you wish to
177*4882a593Smuzhiyun	  detect iSCSI boot parameters dynamically during system boot, say Y.
178*4882a593Smuzhiyun	  Otherwise, say N.
179*4882a593Smuzhiyun
180*4882a593Smuzhiyunconfig RASPBERRYPI_FIRMWARE
181*4882a593Smuzhiyun	tristate "Raspberry Pi Firmware Driver"
182*4882a593Smuzhiyun	depends on BCM2835_MBOX
183*4882a593Smuzhiyun	help
184*4882a593Smuzhiyun	  This option enables support for communicating with the firmware on the
185*4882a593Smuzhiyun	  Raspberry Pi.
186*4882a593Smuzhiyun
187*4882a593Smuzhiyunconfig FW_CFG_SYSFS
188*4882a593Smuzhiyun	tristate "QEMU fw_cfg device support in sysfs"
189*4882a593Smuzhiyun	depends on SYSFS && (ARM || ARM64 || PARISC || PPC_PMAC || SPARC || X86)
190*4882a593Smuzhiyun	depends on HAS_IOPORT_MAP
191*4882a593Smuzhiyun	default n
192*4882a593Smuzhiyun	help
193*4882a593Smuzhiyun	  Say Y or M here to enable the exporting of the QEMU firmware
194*4882a593Smuzhiyun	  configuration (fw_cfg) file entries via sysfs. Entries are
195*4882a593Smuzhiyun	  found under /sys/firmware/fw_cfg when this option is enabled
196*4882a593Smuzhiyun	  and loaded.
197*4882a593Smuzhiyun
198*4882a593Smuzhiyunconfig FW_CFG_SYSFS_CMDLINE
199*4882a593Smuzhiyun	bool "QEMU fw_cfg device parameter parsing"
200*4882a593Smuzhiyun	depends on FW_CFG_SYSFS
201*4882a593Smuzhiyun	help
202*4882a593Smuzhiyun	  Allow the qemu_fw_cfg device to be initialized via the kernel
203*4882a593Smuzhiyun	  command line or using a module parameter.
204*4882a593Smuzhiyun	  WARNING: Using incorrect parameters (base address in particular)
205*4882a593Smuzhiyun	  may crash your system.
206*4882a593Smuzhiyun
207*4882a593Smuzhiyunconfig INTEL_STRATIX10_SERVICE
208*4882a593Smuzhiyun	tristate "Intel Stratix10 Service Layer"
209*4882a593Smuzhiyun	depends on (ARCH_STRATIX10 || ARCH_AGILEX) && HAVE_ARM_SMCCC
210*4882a593Smuzhiyun	default n
211*4882a593Smuzhiyun	help
212*4882a593Smuzhiyun	  Intel Stratix10 service layer runs at privileged exception level,
213*4882a593Smuzhiyun	  interfaces with the service providers (FPGA manager is one of them)
214*4882a593Smuzhiyun	  and manages secure monitor call to communicate with secure monitor
215*4882a593Smuzhiyun	  software at secure monitor exception level.
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun	  Say Y here if you want Stratix10 service layer support.
218*4882a593Smuzhiyun
219*4882a593Smuzhiyunconfig INTEL_STRATIX10_RSU
220*4882a593Smuzhiyun	tristate "Intel Stratix10 Remote System Update"
221*4882a593Smuzhiyun	depends on INTEL_STRATIX10_SERVICE
222*4882a593Smuzhiyun	help
223*4882a593Smuzhiyun	  The Intel Remote System Update (RSU) driver exposes interfaces
224*4882a593Smuzhiyun	  access through the Intel Service Layer to user space via sysfs
225*4882a593Smuzhiyun	  device attribute nodes. The RSU interfaces report/control some of
226*4882a593Smuzhiyun	  the optional RSU features of the Stratix 10 SoC FPGA.
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun	  The RSU provides a way for customers to update the boot
229*4882a593Smuzhiyun	  configuration of a Stratix 10 SoC device with significantly reduced
230*4882a593Smuzhiyun	  risk of corrupting the bitstream storage and bricking the system.
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun	  Enable RSU support if you are using an Intel SoC FPGA with the RSU
233*4882a593Smuzhiyun	  feature enabled and you want Linux user space control.
234*4882a593Smuzhiyun
235*4882a593Smuzhiyun	  Say Y here if you want Intel RSU support.
236*4882a593Smuzhiyun
237*4882a593Smuzhiyunconfig QCOM_SCM
238*4882a593Smuzhiyun	tristate "Qcom SCM driver"
239*4882a593Smuzhiyun	depends on ARM || ARM64
240*4882a593Smuzhiyun	depends on HAVE_ARM_SMCCC
241*4882a593Smuzhiyun	select RESET_CONTROLLER
242*4882a593Smuzhiyun
243*4882a593Smuzhiyunconfig QCOM_SCM_DOWNLOAD_MODE_DEFAULT
244*4882a593Smuzhiyun	bool "Qualcomm download mode enabled by default"
245*4882a593Smuzhiyun	depends on QCOM_SCM
246*4882a593Smuzhiyun	help
247*4882a593Smuzhiyun	  A device with "download mode" enabled will upon an unexpected
248*4882a593Smuzhiyun	  warm-restart enter a special debug mode that allows the user to
249*4882a593Smuzhiyun	  "download" memory content over USB for offline postmortem analysis.
250*4882a593Smuzhiyun	  The feature can be enabled/disabled on the kernel command line.
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun	  Say Y here to enable "download mode" by default.
253*4882a593Smuzhiyun
254*4882a593Smuzhiyunconfig ROCKCHIP_SIP
255*4882a593Smuzhiyun	tristate "Rockchip SIP interface"
256*4882a593Smuzhiyun	depends on HAVE_ARM_SMCCC && ARCH_ROCKCHIP
257*4882a593Smuzhiyun	help
258*4882a593Smuzhiyun	  Say Y here if you want to enable SIP callbacks for Rockchip platforms
259*4882a593Smuzhiyun	  This option enables support for communicating with the ATF.
260*4882a593Smuzhiyun
261*4882a593Smuzhiyunconfig TI_SCI_PROTOCOL
262*4882a593Smuzhiyun	tristate "TI System Control Interface (TISCI) Message Protocol"
263*4882a593Smuzhiyun	depends on TI_MESSAGE_MANAGER
264*4882a593Smuzhiyun	help
265*4882a593Smuzhiyun	  TI System Control Interface (TISCI) Message Protocol is used to manage
266*4882a593Smuzhiyun	  compute systems such as ARM, DSP etc with the system controller in
267*4882a593Smuzhiyun	  complex System on Chip(SoC) such as those found on certain keystone
268*4882a593Smuzhiyun	  generation SoC from TI.
269*4882a593Smuzhiyun
270*4882a593Smuzhiyun	  System controller provides various facilities including power
271*4882a593Smuzhiyun	  management function support.
272*4882a593Smuzhiyun
273*4882a593Smuzhiyun	  This protocol library is used by client drivers to use the features
274*4882a593Smuzhiyun	  provided by the system controller.
275*4882a593Smuzhiyun
276*4882a593Smuzhiyunconfig TRUSTED_FOUNDATIONS
277*4882a593Smuzhiyun	bool "Trusted Foundations secure monitor support"
278*4882a593Smuzhiyun	depends on ARM && CPU_V7
279*4882a593Smuzhiyun	help
280*4882a593Smuzhiyun	  Some devices (including most early Tegra-based consumer devices on
281*4882a593Smuzhiyun	  the market) are booted with the Trusted Foundations secure monitor
282*4882a593Smuzhiyun	  active, requiring some core operations to be performed by the secure
283*4882a593Smuzhiyun	  monitor instead of the kernel.
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun	  This option allows the kernel to invoke the secure monitor whenever
286*4882a593Smuzhiyun	  required on devices using Trusted Foundations. See the functions and
287*4882a593Smuzhiyun	  comments in linux/firmware/trusted_foundations.h or the device tree
288*4882a593Smuzhiyun	  bindings for "tlm,trusted-foundations" for details on how to use it.
289*4882a593Smuzhiyun
290*4882a593Smuzhiyun	  Choose N if you don't know what this is about.
291*4882a593Smuzhiyun
292*4882a593Smuzhiyunconfig TURRIS_MOX_RWTM
293*4882a593Smuzhiyun	tristate "Turris Mox rWTM secure firmware driver"
294*4882a593Smuzhiyun	depends on ARCH_MVEBU || COMPILE_TEST
295*4882a593Smuzhiyun	depends on HAS_DMA && OF
296*4882a593Smuzhiyun	depends on MAILBOX
297*4882a593Smuzhiyun	select HW_RANDOM
298*4882a593Smuzhiyun	select ARMADA_37XX_RWTM_MBOX
299*4882a593Smuzhiyun	help
300*4882a593Smuzhiyun	  This driver communicates with the firmware on the Cortex-M3 secure
301*4882a593Smuzhiyun	  processor of the Turris Mox router. Enable if you are building for
302*4882a593Smuzhiyun	  Turris Mox, and you will be able to read the device serial number and
303*4882a593Smuzhiyun	  other manufacturing data and also utilize the Entropy Bit Generator
304*4882a593Smuzhiyun	  for hardware random number generation.
305*4882a593Smuzhiyun
306*4882a593Smuzhiyunsource "drivers/firmware/broadcom/Kconfig"
307*4882a593Smuzhiyunsource "drivers/firmware/google/Kconfig"
308*4882a593Smuzhiyunsource "drivers/firmware/efi/Kconfig"
309*4882a593Smuzhiyunsource "drivers/firmware/imx/Kconfig"
310*4882a593Smuzhiyunsource "drivers/firmware/meson/Kconfig"
311*4882a593Smuzhiyunsource "drivers/firmware/psci/Kconfig"
312*4882a593Smuzhiyunsource "drivers/firmware/smccc/Kconfig"
313*4882a593Smuzhiyunsource "drivers/firmware/tegra/Kconfig"
314*4882a593Smuzhiyunsource "drivers/firmware/xilinx/Kconfig"
315*4882a593Smuzhiyun
316*4882a593Smuzhiyunendmenu
317