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