Kconfig 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540
  1. # SPDX-License-Identifier: GPL-2.0
  2. #
  3. # ACPI Configuration
  4. #
  5. config ARCH_SUPPORTS_ACPI
  6. bool
  7. menuconfig ACPI
  8. bool "ACPI (Advanced Configuration and Power Interface) Support"
  9. depends on ARCH_SUPPORTS_ACPI
  10. select PNP
  11. select NLS
  12. default y if X86
  13. help
  14. Advanced Configuration and Power Interface (ACPI) support for
  15. Linux requires an ACPI-compliant platform (hardware/firmware),
  16. and assumes the presence of OS-directed configuration and power
  17. management (OSPM) software. This option will enlarge your
  18. kernel by about 70K.
  19. Linux ACPI provides a robust functional replacement for several
  20. legacy configuration and power management interfaces, including
  21. the Plug-and-Play BIOS specification (PnP BIOS), the
  22. MultiProcessor Specification (MPS), and the Advanced Power
  23. Management (APM) specification. If both ACPI and APM support
  24. are configured, ACPI is used.
  25. The project home page for the Linux ACPI subsystem is here:
  26. <https://01.org/linux-acpi>
  27. Linux support for ACPI is based on Intel Corporation's ACPI
  28. Component Architecture (ACPI CA). For more information on the
  29. ACPI CA, see:
  30. <https://acpica.org/>
  31. ACPI is an open industry specification originally co-developed by
  32. Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba. Currently,
  33. it is developed by the ACPI Specification Working Group (ASWG) under
  34. the UEFI Forum and any UEFI member can join the ASWG and contribute
  35. to the ACPI specification.
  36. The specification is available at:
  37. <https://uefi.org/specifications>
  38. if ACPI
  39. config ACPI_LEGACY_TABLES_LOOKUP
  40. bool
  41. config ARCH_MIGHT_HAVE_ACPI_PDC
  42. bool
  43. config ACPI_GENERIC_GSI
  44. bool
  45. config ACPI_SYSTEM_POWER_STATES_SUPPORT
  46. bool
  47. config ACPI_CCA_REQUIRED
  48. bool
  49. config ACPI_DEBUGGER
  50. bool "AML debugger interface"
  51. select ACPI_DEBUG
  52. help
  53. Enable in-kernel debugging of AML facilities: statistics,
  54. internal object dump, single step control method execution.
  55. This is still under development, currently enabling this only
  56. results in the compilation of the ACPICA debugger files.
  57. if ACPI_DEBUGGER
  58. config ACPI_DEBUGGER_USER
  59. tristate "Userspace debugger accessiblity"
  60. depends on DEBUG_FS
  61. help
  62. Export /sys/kernel/debug/acpi/acpidbg for userspace utilities
  63. to access the debugger functionalities.
  64. endif
  65. config ACPI_SPCR_TABLE
  66. bool "ACPI Serial Port Console Redirection Support"
  67. default y if X86
  68. help
  69. Enable support for Serial Port Console Redirection (SPCR) Table.
  70. This table provides information about the configuration of the
  71. earlycon console.
  72. config ACPI_LPIT
  73. bool
  74. depends on X86_64
  75. default y
  76. config ACPI_SLEEP
  77. bool
  78. depends on SUSPEND || HIBERNATION
  79. depends on ACPI_SYSTEM_POWER_STATES_SUPPORT
  80. default y
  81. config ACPI_REV_OVERRIDE_POSSIBLE
  82. bool "Allow supported ACPI revision to be overridden"
  83. depends on X86
  84. default y
  85. help
  86. The platform firmware on some systems expects Linux to return "5" as
  87. the supported ACPI revision which makes it expose system configuration
  88. information in a special way.
  89. For example, based on what ACPI exports as the supported revision,
  90. Dell XPS 13 (2015) configures its audio device to either work in HDA
  91. mode or in I2S mode, where the former is supposed to be used on Linux
  92. until the latter is fully supported (in the kernel as well as in user
  93. space).
  94. This option enables a DMI-based quirk for the above Dell machine (so
  95. that HDA audio is exposed by the platform firmware to the kernel) and
  96. makes it possible to force the kernel to return "5" as the supported
  97. ACPI revision via the "acpi_rev_override" command line switch.
  98. config ACPI_EC_DEBUGFS
  99. tristate "EC read/write access through /sys/kernel/debug/ec"
  100. help
  101. Say N to disable Embedded Controller /sys/kernel/debug interface
  102. Be aware that using this interface can confuse your Embedded
  103. Controller in a way that a normal reboot is not enough. You then
  104. have to power off your system, and remove the laptop battery for
  105. some seconds.
  106. An Embedded Controller typically is available on laptops and reads
  107. sensor values like battery state and temperature.
  108. The kernel accesses the EC through ACPI parsed code provided by BIOS
  109. tables. This option allows to access the EC directly without ACPI
  110. code being involved.
  111. Thus this option is a debug option that helps to write ACPI drivers
  112. and can be used to identify ACPI code or EC firmware bugs.
  113. config ACPI_AC
  114. tristate "AC Adapter"
  115. select POWER_SUPPLY
  116. default y
  117. help
  118. This driver supports the AC Adapter object, which indicates
  119. whether a system is on AC or not. If you have a system that can
  120. switch between A/C and battery, say Y.
  121. To compile this driver as a module, choose M here:
  122. the module will be called ac.
  123. config ACPI_BATTERY
  124. tristate "Battery"
  125. select POWER_SUPPLY
  126. default y
  127. help
  128. This driver adds support for battery information through
  129. /proc/acpi/battery. If you have a mobile system with a battery,
  130. say Y.
  131. To compile this driver as a module, choose M here:
  132. the module will be called battery.
  133. config ACPI_BUTTON
  134. tristate "Button"
  135. depends on INPUT
  136. default y
  137. help
  138. This driver handles events on the power, sleep, and lid buttons.
  139. A daemon reads events from input devices or via netlink and
  140. performs user-defined actions such as shutting down the system.
  141. This is necessary for software-controlled poweroff.
  142. To compile this driver as a module, choose M here:
  143. the module will be called button.
  144. config ACPI_TINY_POWER_BUTTON
  145. tristate "Tiny Power Button Driver"
  146. depends on !ACPI_BUTTON
  147. help
  148. This driver provides a tiny alternative to the ACPI Button driver.
  149. The tiny power button driver only handles the power button. Rather
  150. than notifying userspace via the input layer or a netlink event, this
  151. driver directly signals the init process to shut down.
  152. This driver is particularly suitable for cloud and VM environments,
  153. which use a simulated power button to initiate a controlled poweroff,
  154. but which may not want to run a separate userspace daemon to process
  155. input events.
  156. config ACPI_TINY_POWER_BUTTON_SIGNAL
  157. int "Tiny Power Button Signal"
  158. depends on ACPI_TINY_POWER_BUTTON
  159. default 38
  160. help
  161. Default signal to send to init in response to the power button.
  162. Likely values here include 38 (SIGRTMIN+4) to power off, or 2
  163. (SIGINT) to simulate Ctrl+Alt+Del.
  164. config ACPI_VIDEO
  165. tristate "Video"
  166. depends on X86 && BACKLIGHT_CLASS_DEVICE
  167. depends on INPUT
  168. select THERMAL
  169. help
  170. This driver implements the ACPI Extensions For Display Adapters
  171. for integrated graphics devices on motherboard, as specified in
  172. ACPI 2.0 Specification, Appendix B. This supports basic operations
  173. such as defining the video POST device, retrieving EDID information,
  174. and setting up a video output.
  175. To compile this driver as a module, choose M here:
  176. the module will be called video.
  177. config ACPI_FAN
  178. tristate "Fan"
  179. depends on THERMAL
  180. default y
  181. help
  182. This driver supports ACPI fan devices, allowing user-mode
  183. applications to perform basic fan control (on, off, status).
  184. To compile this driver as a module, choose M here:
  185. the module will be called fan.
  186. config ACPI_TAD
  187. tristate "ACPI Time and Alarm (TAD) Device Support"
  188. depends on SYSFS && PM_SLEEP
  189. help
  190. The ACPI Time and Alarm (TAD) device is an alternative to the Real
  191. Time Clock (RTC). Its wake timers allow the system to transition from
  192. the S3 (or optionally S4/S5) state to S0 state after a time period
  193. elapses. In comparison with the RTC Alarm, the TAD provides a larger
  194. scale of flexibility in the wake timers. The time capabilities of the
  195. TAD maintain the time of day information across platform power
  196. transitions, and keep track of time even when the platform is turned
  197. off.
  198. config ACPI_DOCK
  199. bool "Dock"
  200. help
  201. This driver supports ACPI-controlled docking stations and removable
  202. drive bays such as the IBM Ultrabay and the Dell Module Bay.
  203. config ACPI_CPU_FREQ_PSS
  204. bool
  205. select THERMAL
  206. config ACPI_PROCESSOR_CSTATE
  207. def_bool y
  208. depends on ACPI_PROCESSOR
  209. depends on IA64 || X86
  210. config ACPI_PROCESSOR_IDLE
  211. bool
  212. select CPU_IDLE
  213. config ACPI_MCFG
  214. bool
  215. config ACPI_CPPC_LIB
  216. bool
  217. depends on ACPI_PROCESSOR
  218. select MAILBOX
  219. select PCC
  220. help
  221. If this option is enabled, this file implements common functionality
  222. to parse CPPC tables as described in the ACPI 5.1+ spec. The
  223. routines implemented are meant to be used by other
  224. drivers to control CPU performance using CPPC semantics.
  225. If your platform does not support CPPC in firmware,
  226. leave this option disabled.
  227. config ACPI_PROCESSOR
  228. tristate "Processor"
  229. depends on X86 || IA64 || ARM64
  230. select ACPI_PROCESSOR_IDLE
  231. select ACPI_CPU_FREQ_PSS if X86 || IA64
  232. default y
  233. help
  234. This driver adds support for the ACPI Processor package. It is required
  235. by several flavors of cpufreq performance-state, thermal, throttling and
  236. idle drivers.
  237. To compile this driver as a module, choose M here:
  238. the module will be called processor.
  239. config ACPI_IPMI
  240. tristate "IPMI"
  241. depends on IPMI_HANDLER
  242. help
  243. This driver enables the ACPI to access the BMC controller. And it
  244. uses the IPMI request/response message to communicate with BMC
  245. controller, which can be found on on the server.
  246. To compile this driver as a module, choose M here:
  247. the module will be called as acpi_ipmi.
  248. config ACPI_HOTPLUG_CPU
  249. bool
  250. depends on ACPI_PROCESSOR && HOTPLUG_CPU
  251. select ACPI_CONTAINER
  252. default y
  253. config ACPI_PROCESSOR_AGGREGATOR
  254. tristate "Processor Aggregator"
  255. depends on ACPI_PROCESSOR
  256. depends on X86
  257. help
  258. ACPI 4.0 defines processor Aggregator, which enables OS to perform
  259. specific processor configuration and control that applies to all
  260. processors in the platform. Currently only logical processor idling
  261. is defined, which is to reduce power consumption. This driver
  262. supports the new device.
  263. config ACPI_THERMAL
  264. tristate "Thermal Zone"
  265. depends on ACPI_PROCESSOR
  266. select THERMAL
  267. default y
  268. help
  269. This driver supports ACPI thermal zones. Most mobile and
  270. some desktop systems support ACPI thermal zones. It is HIGHLY
  271. recommended that this option be enabled, as your processor(s)
  272. may be damaged without it.
  273. To compile this driver as a module, choose M here:
  274. the module will be called thermal.
  275. config ACPI_CUSTOM_DSDT_FILE
  276. string "Custom DSDT Table file to include"
  277. default ""
  278. depends on !STANDALONE
  279. help
  280. This option supports a custom DSDT by linking it into the kernel.
  281. See Documentation/admin-guide/acpi/dsdt-override.rst
  282. Enter the full path name to the file which includes the AmlCode
  283. or dsdt_aml_code declaration.
  284. If unsure, don't enter a file name.
  285. config ACPI_CUSTOM_DSDT
  286. bool
  287. default ACPI_CUSTOM_DSDT_FILE != ""
  288. config ARCH_HAS_ACPI_TABLE_UPGRADE
  289. def_bool n
  290. config ACPI_TABLE_UPGRADE
  291. bool "Allow upgrading ACPI tables via initrd"
  292. depends on BLK_DEV_INITRD && ARCH_HAS_ACPI_TABLE_UPGRADE
  293. default y
  294. help
  295. This option provides functionality to upgrade arbitrary ACPI tables
  296. via initrd. No functional change if no ACPI tables are passed via
  297. initrd, therefore it's safe to say Y.
  298. See Documentation/admin-guide/acpi/initrd_table_override.rst for details
  299. config ACPI_TABLE_OVERRIDE_VIA_BUILTIN_INITRD
  300. bool "Override ACPI tables from built-in initrd"
  301. depends on ACPI_TABLE_UPGRADE
  302. depends on INITRAMFS_SOURCE!="" && INITRAMFS_COMPRESSION_NONE
  303. help
  304. This option provides functionality to override arbitrary ACPI tables
  305. from built-in uncompressed initrd.
  306. See Documentation/admin-guide/acpi/initrd_table_override.rst for details
  307. config ACPI_DEBUG
  308. bool "Debug Statements"
  309. help
  310. The ACPI subsystem can produce debug output. Saying Y enables this
  311. output and increases the kernel size by around 50K.
  312. Use the acpi.debug_layer and acpi.debug_level kernel command-line
  313. parameters documented in Documentation/firmware-guide/acpi/debug.rst and
  314. Documentation/admin-guide/kernel-parameters.rst to control the type and
  315. amount of debug output.
  316. config ACPI_PCI_SLOT
  317. bool "PCI slot detection driver"
  318. depends on SYSFS && PCI
  319. help
  320. This driver creates entries in /sys/bus/pci/slots/ for all PCI
  321. slots in the system. This can help correlate PCI bus addresses,
  322. i.e., segment/bus/device/function tuples, with physical slots in
  323. the system. If you are unsure, say N.
  324. config ACPI_CONTAINER
  325. bool "Container and Module Devices"
  326. default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
  327. help
  328. This driver supports ACPI Container and Module devices (IDs
  329. ACPI0004, PNP0A05, and PNP0A06).
  330. This helps support hotplug of nodes, CPUs, and memory.
  331. To compile this driver as a module, choose M here:
  332. the module will be called container.
  333. config ACPI_HOTPLUG_MEMORY
  334. bool "Memory Hotplug"
  335. depends on MEMORY_HOTPLUG
  336. help
  337. This driver supports ACPI memory hotplug. The driver
  338. fields notifications on ACPI memory devices (PNP0C80),
  339. which represent memory ranges that may be onlined or
  340. offlined during runtime.
  341. If your hardware and firmware do not support adding or
  342. removing memory devices at runtime, you need not enable
  343. this driver.
  344. To compile this driver as a module, choose M here:
  345. the module will be called acpi_memhotplug.
  346. config ACPI_HOTPLUG_IOAPIC
  347. bool
  348. depends on PCI
  349. depends on X86_IO_APIC
  350. default y
  351. config ACPI_SBS
  352. tristate "Smart Battery System"
  353. depends on X86
  354. select POWER_SUPPLY
  355. help
  356. This driver supports the Smart Battery System, another
  357. type of access to battery information, found on some laptops.
  358. To compile this driver as a module, choose M here:
  359. the modules will be called sbs and sbshc.
  360. config ACPI_HED
  361. tristate "Hardware Error Device"
  362. help
  363. This driver supports the Hardware Error Device (PNP0C33),
  364. which is used to report some hardware errors notified via
  365. SCI, mainly the corrected errors.
  366. config ACPI_CUSTOM_METHOD
  367. tristate "Allow ACPI methods to be inserted/replaced at run time"
  368. depends on DEBUG_FS
  369. help
  370. This debug facility allows ACPI AML methods to be inserted and/or
  371. replaced without rebooting the system. For details refer to:
  372. Documentation/firmware-guide/acpi/method-customizing.rst.
  373. NOTE: This option is security sensitive, because it allows arbitrary
  374. kernel memory to be written to by root (uid=0) users, allowing them
  375. to bypass certain security measures (e.g. if root is not allowed to
  376. load additional kernel modules after boot, this feature may be used
  377. to override that restriction).
  378. config ACPI_BGRT
  379. bool "Boottime Graphics Resource Table support"
  380. depends on EFI && (X86 || ARM64)
  381. help
  382. This driver adds support for exposing the ACPI Boottime Graphics
  383. Resource Table, which allows the operating system to obtain
  384. data from the firmware boot splash. It will appear under
  385. /sys/firmware/acpi/bgrt/ .
  386. config ACPI_REDUCED_HARDWARE_ONLY
  387. bool "Hardware-reduced ACPI support only" if EXPERT
  388. def_bool n
  389. help
  390. This config item changes the way the ACPI code is built. When this
  391. option is selected, the kernel will use a specialized version of
  392. ACPICA that ONLY supports the ACPI "reduced hardware" mode. The
  393. resulting kernel will be smaller but it will also be restricted to
  394. running in ACPI reduced hardware mode ONLY.
  395. If you are unsure what to do, do not enable this option.
  396. source "drivers/acpi/nfit/Kconfig"
  397. source "drivers/acpi/numa/Kconfig"
  398. source "drivers/acpi/apei/Kconfig"
  399. source "drivers/acpi/dptf/Kconfig"
  400. config ACPI_WATCHDOG
  401. bool
  402. config ACPI_EXTLOG
  403. tristate "Extended Error Log support"
  404. depends on X86_MCE && X86_LOCAL_APIC && EDAC
  405. select UEFI_CPER
  406. help
  407. Certain usages such as Predictive Failure Analysis (PFA) require
  408. more information about the error than what can be described in
  409. processor machine check banks. Most server processors log
  410. additional information about the error in processor uncore
  411. registers. Since the addresses and layout of these registers vary
  412. widely from one processor to another, system software cannot
  413. readily make use of them. To complicate matters further, some of
  414. the additional error information cannot be constructed without
  415. detailed knowledge about platform topology.
  416. Enhanced MCA Logging allows firmware to provide additional error
  417. information to system software, synchronous with MCE or CMCI. This
  418. driver adds support for that functionality with corresponding
  419. tracepoint which carries that information to userspace.
  420. config ACPI_ADXL
  421. bool
  422. config ACPI_CONFIGFS
  423. tristate "ACPI configfs support"
  424. select CONFIGFS_FS
  425. help
  426. Select this option to enable support for ACPI configuration from
  427. userspace. The configurable ACPI groups will be visible under
  428. /config/acpi, assuming configfs is mounted under /config.
  429. if ARM64
  430. source "drivers/acpi/arm64/Kconfig"
  431. config ACPI_PPTT
  432. bool
  433. endif
  434. source "drivers/acpi/pmic/Kconfig"
  435. endif # ACPI
  436. config X86_PM_TIMER
  437. bool "Power Management Timer Support" if EXPERT
  438. depends on X86 && (ACPI || JAILHOUSE_GUEST)
  439. default y
  440. help
  441. The Power Management Timer is available on all ACPI-capable,
  442. in most cases even if ACPI is unusable or blacklisted.
  443. This timing source is not affected by power management features
  444. like aggressive processor idling, throttling, frequency and/or
  445. voltage scaling, unlike the commonly used Time Stamp Counter
  446. (TSC) timing source.
  447. You should nearly always say Y here because many modern
  448. systems require this timer.