xref: /linux/drivers/acpi/Kconfig (revision 55f3538c4923e9dfca132e99ebec370e8094afda)
1# SPDX-License-Identifier: GPL-2.0
2#
3# ACPI Configuration
4#
5
6menuconfig ACPI
7	bool "ACPI (Advanced Configuration and Power Interface) Support"
8	depends on !IA64_HP_SIM
9	depends on IA64 || X86 || ARM64
10	depends on PCI
11	select PNP
12	default y if (IA64 || 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
20	  Linux ACPI provides a robust functional replacement for several
21	  legacy configuration and power management interfaces, including
22	  the Plug-and-Play BIOS specification (PnP BIOS), the
23	  MultiProcessor Specification (MPS), and the Advanced Power
24	  Management (APM) specification.  If both ACPI and APM support
25	  are configured, ACPI is used.
26
27	  The project home page for the Linux ACPI subsystem is here:
28	  <https://01.org/linux-acpi>
29
30	  Linux support for ACPI is based on Intel Corporation's ACPI
31	  Component Architecture (ACPI CA).  For more information on the
32	  ACPI CA, see:
33	  <http://acpica.org/>
34
35	  ACPI is an open industry specification originally co-developed by
36	  Hewlett-Packard, Intel, Microsoft, Phoenix, and Toshiba. Currently,
37	  it is developed by the ACPI Specification Working Group (ASWG) under
38	  the UEFI Forum and any UEFI member can join the ASWG and contribute
39	  to the ACPI specification.
40	  The specification is available at:
41	  <http://www.acpi.info>
42	  <http://www.uefi.org/acpi/specs>
43
44if ACPI
45
46config ACPI_LEGACY_TABLES_LOOKUP
47	bool
48
49config ARCH_MIGHT_HAVE_ACPI_PDC
50	bool
51
52config ACPI_GENERIC_GSI
53	bool
54
55config ACPI_SYSTEM_POWER_STATES_SUPPORT
56	bool
57
58config ACPI_CCA_REQUIRED
59	bool
60
61config ACPI_DEBUGGER
62	bool "AML debugger interface"
63	select ACPI_DEBUG
64	help
65	  Enable in-kernel debugging of AML facilities: statistics,
66	  internal object dump, single step control method execution.
67	  This is still under development, currently enabling this only
68	  results in the compilation of the ACPICA debugger files.
69
70if ACPI_DEBUGGER
71
72config ACPI_DEBUGGER_USER
73	tristate "Userspace debugger accessiblity"
74	depends on DEBUG_FS
75	help
76	  Export /sys/kernel/debug/acpi/acpidbg for userspace utilities
77	  to access the debugger functionalities.
78
79endif
80
81config ACPI_SPCR_TABLE
82	bool
83
84config ACPI_LPIT
85	bool
86	depends on X86_64
87	default y
88
89config ACPI_SLEEP
90	bool
91	depends on SUSPEND || HIBERNATION
92	depends on ACPI_SYSTEM_POWER_STATES_SUPPORT
93	default y
94
95config ACPI_PROCFS_POWER
96	bool "Deprecated power /proc/acpi directories"
97	depends on X86 && PROC_FS
98	help
99	  For backwards compatibility, this option allows
100          deprecated power /proc/acpi/ directories to exist, even when
101          they have been replaced by functions in /sys.
102          The deprecated directories (and their replacements) include:
103	  /proc/acpi/battery/* (/sys/class/power_supply/*)
104	  /proc/acpi/ac_adapter/* (sys/class/power_supply/*)
105	  This option has no effect on /proc/acpi/ directories
106	  and functions, which do not yet exist in /sys
107	  This option, together with the proc directories, will be
108	  deleted in the future.
109
110	  Say N to delete power /proc/acpi/ directories that have moved to /sys/
111
112config ACPI_REV_OVERRIDE_POSSIBLE
113	bool "Allow supported ACPI revision to be overridden"
114	depends on X86
115	default y
116	help
117	  The platform firmware on some systems expects Linux to return "5" as
118	  the supported ACPI revision which makes it expose system configuration
119	  information in a special way.
120
121	  For example, based on what ACPI exports as the supported revision,
122	  Dell XPS 13 (2015) configures its audio device to either work in HDA
123	  mode or in I2S mode, where the former is supposed to be used on Linux
124	  until the latter is fully supported (in the kernel as well as in user
125	  space).
126
127	  This option enables a DMI-based quirk for the above Dell machine (so
128	  that HDA audio is exposed by the platform firmware to the kernel) and
129	  makes it possible to force the kernel to return "5" as the supported
130	  ACPI revision via the "acpi_rev_override" command line switch.
131
132config ACPI_EC_DEBUGFS
133	tristate "EC read/write access through /sys/kernel/debug/ec"
134	default n
135	help
136	  Say N to disable Embedded Controller /sys/kernel/debug interface
137
138	  Be aware that using this interface can confuse your Embedded
139	  Controller in a way that a normal reboot is not enough. You then
140	  have to power off your system, and remove the laptop battery for
141	  some seconds.
142	  An Embedded Controller typically is available on laptops and reads
143	  sensor values like battery state and temperature.
144	  The kernel accesses the EC through ACPI parsed code provided by BIOS
145	  tables. This option allows to access the EC directly without ACPI
146	  code being involved.
147	  Thus this option is a debug option that helps to write ACPI drivers
148	  and can be used to identify ACPI code or EC firmware bugs.
149
150config ACPI_AC
151	tristate "AC Adapter"
152	depends on X86
153	select POWER_SUPPLY
154	default y
155	help
156	  This driver supports the AC Adapter object, which indicates
157	  whether a system is on AC or not.  If you have a system that can
158	  switch between A/C and battery, say Y.
159
160	  To compile this driver as a module, choose M here:
161	  the module will be called ac.
162
163config ACPI_BATTERY
164	tristate "Battery"
165	depends on X86
166	select POWER_SUPPLY
167	default y
168	help
169	  This driver adds support for battery information through
170	  /proc/acpi/battery. If you have a mobile system with a battery,
171	  say Y.
172
173	  To compile this driver as a module, choose M here:
174	  the module will be called battery.
175
176config ACPI_BUTTON
177	tristate "Button"
178	depends on INPUT
179	default y
180	help
181	  This driver handles events on the power, sleep, and lid buttons.
182	  A daemon reads events from input devices or via netlink and
183	  performs user-defined actions such as shutting down the system.
184	  This is necessary for software-controlled poweroff.
185
186	  To compile this driver as a module, choose M here:
187	  the module will be called button.
188
189config ACPI_VIDEO
190	tristate "Video"
191	depends on X86 && BACKLIGHT_CLASS_DEVICE
192	depends on INPUT
193	select THERMAL
194	help
195	  This driver implements the ACPI Extensions For Display Adapters
196	  for integrated graphics devices on motherboard, as specified in
197	  ACPI 2.0 Specification, Appendix B.  This supports basic operations
198	  such as defining the video POST device, retrieving EDID information,
199	  and setting up a video output.
200
201	  To compile this driver as a module, choose M here:
202	  the module will be called video.
203
204config ACPI_FAN
205	tristate "Fan"
206	depends on THERMAL
207	default y
208	help
209	  This driver supports ACPI fan devices, allowing user-mode
210	  applications to perform basic fan control (on, off, status).
211
212	  To compile this driver as a module, choose M here:
213	  the module will be called fan.
214
215config ACPI_DOCK
216	bool "Dock"
217	help
218	  This driver supports ACPI-controlled docking stations and removable
219	  drive bays such as the IBM Ultrabay and the Dell Module Bay.
220
221config ACPI_CPU_FREQ_PSS
222	bool
223	select THERMAL
224
225config ACPI_PROCESSOR_CSTATE
226	def_bool y
227	depends on IA64 || X86
228
229config ACPI_PROCESSOR_IDLE
230	bool
231	select CPU_IDLE
232
233config ACPI_MCFG
234	bool
235
236config ACPI_CPPC_LIB
237	bool
238	depends on ACPI_PROCESSOR
239	select MAILBOX
240	select PCC
241	help
242	  If this option is enabled, this file implements common functionality
243	  to parse CPPC tables as described in the ACPI 5.1+ spec. The
244	  routines implemented are meant to be used by other
245	  drivers to control CPU performance using CPPC semantics.
246	  If your platform does not support CPPC in firmware,
247	  leave this option disabled.
248
249config ACPI_PROCESSOR
250	tristate "Processor"
251	depends on X86 || IA64 || ARM64
252	select ACPI_PROCESSOR_IDLE
253	select ACPI_CPU_FREQ_PSS if X86 || IA64
254	default y
255	help
256	  This driver adds support for the ACPI Processor package. It is required
257	  by several flavors of cpufreq performance-state, thermal, throttling and
258	  idle drivers.
259
260	  To compile this driver as a module, choose M here:
261	  the module will be called processor.
262
263config ACPI_IPMI
264	tristate "IPMI"
265	depends on IPMI_HANDLER
266	default n
267	help
268	  This driver enables the ACPI to access the BMC controller. And it
269	  uses the IPMI request/response message to communicate with BMC
270	  controller, which can be found on on the server.
271
272	  To compile this driver as a module, choose M here:
273	  the module will be called as acpi_ipmi.
274
275config ACPI_HOTPLUG_CPU
276	bool
277	depends on ACPI_PROCESSOR && HOTPLUG_CPU
278	select ACPI_CONTAINER
279	default y
280
281config ACPI_PROCESSOR_AGGREGATOR
282	tristate "Processor Aggregator"
283	depends on ACPI_PROCESSOR
284	depends on X86
285	help
286	  ACPI 4.0 defines processor Aggregator, which enables OS to perform
287	  specific processor configuration and control that applies to all
288	  processors in the platform. Currently only logical processor idling
289	  is defined, which is to reduce power consumption. This driver
290	  supports the new device.
291
292config ACPI_THERMAL
293	tristate "Thermal Zone"
294	depends on ACPI_PROCESSOR
295	select THERMAL
296	default y
297	help
298	  This driver supports ACPI thermal zones.  Most mobile and
299	  some desktop systems support ACPI thermal zones.  It is HIGHLY
300	  recommended that this option be enabled, as your processor(s)
301	  may be damaged without it.
302
303	  To compile this driver as a module, choose M here:
304	  the module will be called thermal.
305
306config ACPI_NUMA
307	bool "NUMA support"
308	depends on NUMA
309	depends on (X86 || IA64 || ARM64)
310	default y if IA64_GENERIC || IA64_SGI_SN2 || ARM64
311
312config ACPI_CUSTOM_DSDT_FILE
313	string "Custom DSDT Table file to include"
314	default ""
315	depends on !STANDALONE
316	help
317	  This option supports a custom DSDT by linking it into the kernel.
318	  See Documentation/acpi/dsdt-override.txt
319
320	  Enter the full path name to the file which includes the AmlCode
321	  declaration.
322
323	  If unsure, don't enter a file name.
324
325config ACPI_CUSTOM_DSDT
326	bool
327	default ACPI_CUSTOM_DSDT_FILE != ""
328
329config ARCH_HAS_ACPI_TABLE_UPGRADE
330	def_bool n
331
332config ACPI_TABLE_UPGRADE
333	bool "Allow upgrading ACPI tables via initrd"
334	depends on BLK_DEV_INITRD && ARCH_HAS_ACPI_TABLE_UPGRADE
335	default y
336	help
337	  This option provides functionality to upgrade arbitrary ACPI tables
338	  via initrd. No functional change if no ACPI tables are passed via
339	  initrd, therefore it's safe to say Y.
340	  See Documentation/acpi/initrd_table_override.txt for details
341
342config ACPI_DEBUG
343	bool "Debug Statements"
344	default n
345	help
346	  The ACPI subsystem can produce debug output.  Saying Y enables this
347	  output and increases the kernel size by around 50K.
348
349	  Use the acpi.debug_layer and acpi.debug_level kernel command-line
350	  parameters documented in Documentation/acpi/debug.txt and
351	  Documentation/admin-guide/kernel-parameters.rst to control the type and
352	  amount of debug output.
353
354config ACPI_PCI_SLOT
355	bool "PCI slot detection driver"
356	depends on SYSFS
357	default n
358	help
359	  This driver creates entries in /sys/bus/pci/slots/ for all PCI
360	  slots in the system.  This can help correlate PCI bus addresses,
361	  i.e., segment/bus/device/function tuples, with physical slots in
362	  the system.  If you are unsure, say N.
363
364config ACPI_CONTAINER
365	bool "Container and Module Devices"
366	default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
367	help
368	  This driver supports ACPI Container and Module devices (IDs
369	  ACPI0004, PNP0A05, and PNP0A06).
370
371	  This helps support hotplug of nodes, CPUs, and memory.
372
373	  To compile this driver as a module, choose M here:
374	  the module will be called container.
375
376config ACPI_HOTPLUG_MEMORY
377	bool "Memory Hotplug"
378	depends on MEMORY_HOTPLUG
379	help
380	  This driver supports ACPI memory hotplug.  The driver
381	  fields notifications on ACPI memory devices (PNP0C80),
382	  which represent memory ranges that may be onlined or
383	  offlined during runtime.
384
385	  If your hardware and firmware do not support adding or
386	  removing memory devices at runtime, you need not enable
387	  this driver.
388
389	  To compile this driver as a module, choose M here:
390	  the module will be called acpi_memhotplug.
391
392config ACPI_HOTPLUG_IOAPIC
393	bool
394	depends on PCI
395	depends on X86_IO_APIC
396	default y
397
398config ACPI_SBS
399	tristate "Smart Battery System"
400	depends on X86
401	select POWER_SUPPLY
402	help
403	  This driver supports the Smart Battery System, another
404	  type of access to battery information, found on some laptops.
405
406	  To compile this driver as a module, choose M here:
407	  the modules will be called sbs and sbshc.
408
409config ACPI_HED
410	tristate "Hardware Error Device"
411	help
412	  This driver supports the Hardware Error Device (PNP0C33),
413	  which is used to report some hardware errors notified via
414	  SCI, mainly the corrected errors.
415
416config ACPI_CUSTOM_METHOD
417	tristate "Allow ACPI methods to be inserted/replaced at run time"
418	depends on DEBUG_FS
419	default n
420	help
421	  This debug facility allows ACPI AML methods to be inserted and/or
422	  replaced without rebooting the system. For details refer to:
423	  Documentation/acpi/method-customizing.txt.
424
425	  NOTE: This option is security sensitive, because it allows arbitrary
426	  kernel memory to be written to by root (uid=0) users, allowing them
427	  to bypass certain security measures (e.g. if root is not allowed to
428	  load additional kernel modules after boot, this feature may be used
429	  to override that restriction).
430
431config ACPI_BGRT
432	bool "Boottime Graphics Resource Table support"
433	depends on EFI && (X86 || ARM64)
434        help
435	  This driver adds support for exposing the ACPI Boottime Graphics
436	  Resource Table, which allows the operating system to obtain
437	  data from the firmware boot splash. It will appear under
438	  /sys/firmware/acpi/bgrt/ .
439
440config ACPI_REDUCED_HARDWARE_ONLY
441	bool "Hardware-reduced ACPI support only" if EXPERT
442	def_bool n
443	help
444	  This config item changes the way the ACPI code is built.  When this
445	  option is selected, the kernel will use a specialized version of
446	  ACPICA that ONLY supports the ACPI "reduced hardware" mode.  The
447	  resulting kernel will be smaller but it will also be restricted to
448	  running in ACPI reduced hardware mode ONLY.
449
450	  If you are unsure what to do, do not enable this option.
451
452source "drivers/acpi/nfit/Kconfig"
453
454source "drivers/acpi/apei/Kconfig"
455source "drivers/acpi/dptf/Kconfig"
456
457config ACPI_WATCHDOG
458	bool
459
460config ACPI_EXTLOG
461	tristate "Extended Error Log support"
462	depends on X86_MCE && X86_LOCAL_APIC && EDAC
463	select UEFI_CPER
464	default n
465	help
466	  Certain usages such as Predictive Failure Analysis (PFA) require
467	  more information about the error than what can be described in
468	  processor machine check banks. Most server processors log
469	  additional information about the error in processor uncore
470	  registers. Since the addresses and layout of these registers vary
471	  widely from one processor to another, system software cannot
472	  readily make use of them. To complicate matters further, some of
473	  the additional error information cannot be constructed without
474	  detailed knowledge about platform topology.
475
476	  Enhanced MCA Logging allows firmware to provide additional error
477	  information to system software, synchronous with MCE or CMCI. This
478	  driver adds support for that functionality with corresponding
479	  tracepoint which carries that information to userspace.
480
481menuconfig PMIC_OPREGION
482	bool "PMIC (Power Management Integrated Circuit) operation region support"
483	help
484	  Select this option to enable support for ACPI operation
485	  region of the PMIC chip. The operation region can be used
486	  to control power rails and sensor reading/writing on the
487	  PMIC chip.
488
489if PMIC_OPREGION
490config CRC_PMIC_OPREGION
491	bool "ACPI operation region support for CrystalCove PMIC"
492	depends on INTEL_SOC_PMIC
493	help
494	  This config adds ACPI operation region support for CrystalCove PMIC.
495
496config XPOWER_PMIC_OPREGION
497	bool "ACPI operation region support for XPower AXP288 PMIC"
498	depends on MFD_AXP20X_I2C
499	help
500	  This config adds ACPI operation region support for XPower AXP288 PMIC.
501
502config BXT_WC_PMIC_OPREGION
503	bool "ACPI operation region support for BXT WhiskeyCove PMIC"
504	depends on INTEL_SOC_PMIC_BXTWC
505	help
506	  This config adds ACPI operation region support for BXT WhiskeyCove PMIC.
507
508config CHT_WC_PMIC_OPREGION
509	bool "ACPI operation region support for CHT Whiskey Cove PMIC"
510	depends on INTEL_SOC_PMIC_CHTWC
511	help
512	  This config adds ACPI operation region support for CHT Whiskey Cove PMIC.
513
514config CHT_DC_TI_PMIC_OPREGION
515	bool "ACPI operation region support for Dollar Cove TI PMIC"
516	depends on INTEL_SOC_PMIC_CHTDC_TI
517	help
518	  This config adds ACPI operation region support for Dollar Cove TI PMIC.
519
520endif
521
522config ACPI_CONFIGFS
523	tristate "ACPI configfs support"
524	select CONFIGFS_FS
525	help
526	  Select this option to enable support for ACPI configuration from
527	  userspace. The configurable ACPI groups will be visible under
528	  /config/acpi, assuming configfs is mounted under /config.
529
530if ARM64
531source "drivers/acpi/arm64/Kconfig"
532endif
533
534config TPS68470_PMIC_OPREGION
535	bool "ACPI operation region support for TPS68470 PMIC"
536	depends on MFD_TPS68470
537	help
538	  This config adds ACPI operation region support for TI TPS68470 PMIC.
539	  TPS68470 device is an advanced power management unit that powers
540	  a Compact Camera Module (CCM), generates clocks for image sensors,
541	  drives a dual LED for flash and incorporates two LED drivers for
542	  general purpose indicators.
543	  This driver enables ACPI operation region support control voltage
544	  regulators and clocks.
545
546	  This option is a bool as it provides an ACPI operation
547	  region, which must be available before any of the devices
548	  using this, are probed.
549
550endif	# ACPI
551
552config X86_PM_TIMER
553	bool "Power Management Timer Support" if EXPERT
554	depends on X86 && (ACPI || JAILHOUSE_GUEST)
555	default y
556	help
557	  The Power Management Timer is available on all ACPI-capable,
558	  in most cases even if ACPI is unusable or blacklisted.
559
560	  This timing source is not affected by power management features
561	  like aggressive processor idling, throttling, frequency and/or
562	  voltage scaling, unlike the commonly used Time Stamp Counter
563	  (TSC) timing source.
564
565	  You should nearly always say Y here because many modern
566	  systems require this timer.
567