xref: /openbmc/linux/drivers/acpi/Kconfig (revision a72594ca)
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 X86_PM_TIMER
365	bool "Power Management Timer Support" if EXPERT
366	depends on X86
367	default y
368	help
369	  The Power Management Timer is available on all ACPI-capable,
370	  in most cases even if ACPI is unusable or blacklisted.
371
372	  This timing source is not affected by power management features
373	  like aggressive processor idling, throttling, frequency and/or
374	  voltage scaling, unlike the commonly used Time Stamp Counter
375	  (TSC) timing source.
376
377	  You should nearly always say Y here because many modern
378	  systems require this timer.
379
380config ACPI_CONTAINER
381	bool "Container and Module Devices"
382	default (ACPI_HOTPLUG_MEMORY || ACPI_HOTPLUG_CPU)
383	help
384	  This driver supports ACPI Container and Module devices (IDs
385	  ACPI0004, PNP0A05, and PNP0A06).
386
387	  This helps support hotplug of nodes, CPUs, and memory.
388
389	  To compile this driver as a module, choose M here:
390	  the module will be called container.
391
392config ACPI_HOTPLUG_MEMORY
393	bool "Memory Hotplug"
394	depends on MEMORY_HOTPLUG
395	help
396	  This driver supports ACPI memory hotplug.  The driver
397	  fields notifications on ACPI memory devices (PNP0C80),
398	  which represent memory ranges that may be onlined or
399	  offlined during runtime.
400
401	  If your hardware and firmware do not support adding or
402	  removing memory devices at runtime, you need not enable
403	  this driver.
404
405	  To compile this driver as a module, choose M here:
406	  the module will be called acpi_memhotplug.
407
408config ACPI_HOTPLUG_IOAPIC
409	bool
410	depends on PCI
411	depends on X86_IO_APIC
412	default y
413
414config ACPI_SBS
415	tristate "Smart Battery System"
416	depends on X86
417	select POWER_SUPPLY
418	help
419	  This driver supports the Smart Battery System, another
420	  type of access to battery information, found on some laptops.
421
422	  To compile this driver as a module, choose M here:
423	  the modules will be called sbs and sbshc.
424
425config ACPI_HED
426	tristate "Hardware Error Device"
427	help
428	  This driver supports the Hardware Error Device (PNP0C33),
429	  which is used to report some hardware errors notified via
430	  SCI, mainly the corrected errors.
431
432config ACPI_CUSTOM_METHOD
433	tristate "Allow ACPI methods to be inserted/replaced at run time"
434	depends on DEBUG_FS
435	default n
436	help
437	  This debug facility allows ACPI AML methods to be inserted and/or
438	  replaced without rebooting the system. For details refer to:
439	  Documentation/acpi/method-customizing.txt.
440
441	  NOTE: This option is security sensitive, because it allows arbitrary
442	  kernel memory to be written to by root (uid=0) users, allowing them
443	  to bypass certain security measures (e.g. if root is not allowed to
444	  load additional kernel modules after boot, this feature may be used
445	  to override that restriction).
446
447config ACPI_BGRT
448	bool "Boottime Graphics Resource Table support"
449	depends on EFI && (X86 || ARM64)
450        help
451	  This driver adds support for exposing the ACPI Boottime Graphics
452	  Resource Table, which allows the operating system to obtain
453	  data from the firmware boot splash. It will appear under
454	  /sys/firmware/acpi/bgrt/ .
455
456config ACPI_REDUCED_HARDWARE_ONLY
457	bool "Hardware-reduced ACPI support only" if EXPERT
458	def_bool n
459	help
460	  This config item changes the way the ACPI code is built.  When this
461	  option is selected, the kernel will use a specialized version of
462	  ACPICA that ONLY supports the ACPI "reduced hardware" mode.  The
463	  resulting kernel will be smaller but it will also be restricted to
464	  running in ACPI reduced hardware mode ONLY.
465
466	  If you are unsure what to do, do not enable this option.
467
468source "drivers/acpi/nfit/Kconfig"
469
470source "drivers/acpi/apei/Kconfig"
471source "drivers/acpi/dptf/Kconfig"
472
473config ACPI_WATCHDOG
474	bool
475
476config ACPI_EXTLOG
477	tristate "Extended Error Log support"
478	depends on X86_MCE && X86_LOCAL_APIC && EDAC
479	select UEFI_CPER
480	default n
481	help
482	  Certain usages such as Predictive Failure Analysis (PFA) require
483	  more information about the error than what can be described in
484	  processor machine check banks. Most server processors log
485	  additional information about the error in processor uncore
486	  registers. Since the addresses and layout of these registers vary
487	  widely from one processor to another, system software cannot
488	  readily make use of them. To complicate matters further, some of
489	  the additional error information cannot be constructed without
490	  detailed knowledge about platform topology.
491
492	  Enhanced MCA Logging allows firmware to provide additional error
493	  information to system software, synchronous with MCE or CMCI. This
494	  driver adds support for that functionality with corresponding
495	  tracepoint which carries that information to userspace.
496
497menuconfig PMIC_OPREGION
498	bool "PMIC (Power Management Integrated Circuit) operation region support"
499	help
500	  Select this option to enable support for ACPI operation
501	  region of the PMIC chip. The operation region can be used
502	  to control power rails and sensor reading/writing on the
503	  PMIC chip.
504
505if PMIC_OPREGION
506config CRC_PMIC_OPREGION
507	bool "ACPI operation region support for CrystalCove PMIC"
508	depends on INTEL_SOC_PMIC
509	help
510	  This config adds ACPI operation region support for CrystalCove PMIC.
511
512config XPOWER_PMIC_OPREGION
513	bool "ACPI operation region support for XPower AXP288 PMIC"
514	depends on MFD_AXP20X_I2C
515	help
516	  This config adds ACPI operation region support for XPower AXP288 PMIC.
517
518config BXT_WC_PMIC_OPREGION
519	bool "ACPI operation region support for BXT WhiskeyCove PMIC"
520	depends on INTEL_SOC_PMIC_BXTWC
521	help
522	  This config adds ACPI operation region support for BXT WhiskeyCove PMIC.
523
524config CHT_WC_PMIC_OPREGION
525	bool "ACPI operation region support for CHT Whiskey Cove PMIC"
526	depends on INTEL_SOC_PMIC_CHTWC
527	help
528	  This config adds ACPI operation region support for CHT Whiskey Cove PMIC.
529
530config CHT_DC_TI_PMIC_OPREGION
531	bool "ACPI operation region support for Dollar Cove TI PMIC"
532	depends on INTEL_SOC_PMIC_CHTDC_TI
533	help
534	  This config adds ACPI operation region support for Dollar Cove TI PMIC.
535
536endif
537
538config ACPI_CONFIGFS
539	tristate "ACPI configfs support"
540	select CONFIGFS_FS
541	help
542	  Select this option to enable support for ACPI configuration from
543	  userspace. The configurable ACPI groups will be visible under
544	  /config/acpi, assuming configfs is mounted under /config.
545
546if ARM64
547source "drivers/acpi/arm64/Kconfig"
548endif
549
550config TPS68470_PMIC_OPREGION
551	bool "ACPI operation region support for TPS68470 PMIC"
552	depends on MFD_TPS68470
553	help
554	  This config adds ACPI operation region support for TI TPS68470 PMIC.
555	  TPS68470 device is an advanced power management unit that powers
556	  a Compact Camera Module (CCM), generates clocks for image sensors,
557	  drives a dual LED for flash and incorporates two LED drivers for
558	  general purpose indicators.
559	  This driver enables ACPI operation region support control voltage
560	  regulators and clocks.
561
562	  This option is a bool as it provides an ACPI operation
563	  region, which must be available before any of the devices
564	  using this, are probed.
565
566endif	# ACPI
567