xref: /linux/drivers/char/ipmi/Kconfig (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# IPMI device configuration
4#
5
6menuconfig IPMI_HANDLER
7	tristate 'IPMI top-level message handler'
8	depends on HAS_IOMEM
9	select IPMI_DMI_DECODE if DMI
10	help
11	  This enables the central IPMI message handler, required for IPMI
12	  to work.
13
14	  IPMI is a standard for managing sensors (temperature,
15	  voltage, etc.) in a system.
16
17	  See <file:Documentation/driver-api/ipmi.rst> for more details on the driver.
18
19	  If unsure, say N.
20
21config IPMI_DMI_DECODE
22	select IPMI_PLAT_DATA
23	bool
24
25config IPMI_PLAT_DATA
26	bool
27
28if IPMI_HANDLER
29
30config IPMI_PANIC_EVENT
31	bool 'Generate a panic event to all BMCs on a panic'
32	help
33	  When a panic occurs, this will cause the IPMI message handler to,
34	  by default, generate an IPMI event describing the panic to each
35	  interface registered with the message handler.  This is always
36	  available, the module parameter for ipmi_msghandler named
37	  panic_op can be set to "event" to chose this value, this config
38	  simply causes the default value to be set to "event".
39
40config IPMI_PANIC_STRING
41	bool 'Generate OEM events containing the panic string'
42	depends on IPMI_PANIC_EVENT
43	help
44	  When a panic occurs, this will cause the IPMI message handler to,
45	  by default, generate IPMI OEM type f0 events holding the IPMB
46	  address of the panic generator (byte 4 of the event), a sequence
47	  number for the string (byte 5 of the event) and part of the
48	  string (the rest of the event).  Bytes 1, 2, and 3 are the normal
49	  usage for an OEM event.  You can fetch these events and use the
50	  sequence numbers to piece the string together.  This config
51	  parameter sets the default value to generate these events,
52	  the module parameter for ipmi_msghandler named panic_op can
53	  be set to "string" to chose this value, this config simply
54	  causes the default value to be set to "string".
55
56config IPMI_DEVICE_INTERFACE
57	tristate 'Device interface for IPMI'
58	help
59	  This provides an IOCTL interface to the IPMI message handler so
60	  userland processes may use IPMI.  It supports poll() and select().
61
62config IPMI_SI
63	tristate 'IPMI System Interface handler'
64	select IPMI_PLAT_DATA
65	help
66	  Provides a driver for System Interfaces (KCS, SMIC, BT).
67	  Currently, only KCS and SMIC are supported.  If
68	  you are using IPMI, you should probably say "y" here.
69
70config IPMI_SI_ASYNC_INIT
71	bool 'Asynchronous initialization of IPMI System Interface'
72	depends on IPMI_SI
73	default n
74	help
75	  Offloads individual SMI inits. It speeds up the boot time.
76	  It also introduces a very small risk that something else might fail
77	  if it depends on synchronous IPMI init.
78
79config IPMI_SSIF
80	tristate 'IPMI SMBus handler (SSIF)'
81	depends on I2C
82	help
83	  Provides a driver for a SMBus interface to a BMC, meaning that you
84	  have a driver that must be accessed over an I2C bus instead of a
85	  standard interface.  This module requires I2C support.
86
87config IPMI_IPMB
88	tristate 'IPMI IPMB interface'
89	depends on I2C && I2C_SLAVE
90	help
91	  Provides a driver for a system running right on the IPMB bus.
92	  It supports normal system interface messages to a BMC on the IPMB
93	  bus, and it also supports direct messaging on the bus using
94	  IPMB direct messages.  This module requires I2C support.
95
96config IPMI_LS2K
97	bool 'Loongson-2K IPMI interface'
98	depends on LOONGARCH
99	select MFD_LS2K_BMC_CORE
100	help
101	  Provides a driver for Loongson-2K IPMI interfaces.
102
103config IPMI_POWERNV
104	depends on PPC_POWERNV
105	tristate 'POWERNV (OPAL firmware) IPMI interface'
106	help
107	  Provides a driver for OPAL firmware-based IPMI interfaces.
108
109config IPMI_WATCHDOG
110	tristate 'IPMI Watchdog Timer'
111	help
112	  This enables the IPMI watchdog timer.
113
114config IPMI_POWEROFF
115	tristate 'IPMI Poweroff'
116	help
117	  This enables a function to power off the system with IPMI if
118	  the IPMI management controller is capable of this.
119
120endif # IPMI_HANDLER
121
122config IPMI_KCS_BMC
123	tristate
124
125config ASPEED_KCS_IPMI_BMC
126	depends on ARCH_ASPEED || COMPILE_TEST
127	select IPMI_KCS_BMC
128	select REGMAP_MMIO
129	tristate "Aspeed KCS IPMI BMC driver"
130	help
131	  Provides a driver for the KCS (Keyboard Controller Style) IPMI
132	  interface found on Aspeed SOCs (AST2400 and AST2500).
133
134	  The driver implements the BMC side of the KCS contorller, it
135	  provides the access of KCS IO space for BMC side.
136
137config NPCM7XX_KCS_IPMI_BMC
138	depends on ARCH_NPCM || COMPILE_TEST
139	select IPMI_KCS_BMC
140	select REGMAP_MMIO
141	tristate "NPCM KCS IPMI BMC driver"
142	help
143	  Provides a driver for the KCS (Keyboard Controller Style) IPMI
144	  interface found on Nuvoton NPCM SOCs.
145
146	  The driver implements the BMC side of the KCS contorller, it
147	  provides the access of KCS IO space for BMC side.
148
149	  This support is also available as a module.  If so, the module
150	  will be called kcs_bmc_npcm7xx.
151
152config IPMI_KCS_BMC_CDEV_IPMI
153	depends on IPMI_KCS_BMC
154	tristate "IPMI character device interface for BMC KCS devices"
155	help
156	  Provides a BMC-side character device implementing IPMI
157	  semantics for KCS IPMI devices.
158
159	  Say YES if you wish to expose KCS devices on the BMC for IPMI
160	  purposes.
161
162	  This support is also available as a module. The module will be
163	  called kcs_bmc_cdev_ipmi.
164
165config IPMI_KCS_BMC_SERIO
166	depends on IPMI_KCS_BMC && SERIO
167	tristate "SerIO adaptor for BMC KCS devices"
168	help
169	  Adapts the BMC KCS device for the SerIO subsystem. This allows users
170	  to take advantage of userspace interfaces provided by SerIO where
171	  appropriate.
172
173	  Say YES if you wish to expose KCS devices on the BMC via SerIO
174	  interfaces.
175
176	  This support is also available as a module. The module will be
177	  called kcs_bmc_serio.
178
179config ASPEED_BT_IPMI_BMC
180	depends on ARCH_ASPEED || COMPILE_TEST
181	depends on MFD_SYSCON
182	select REGMAP_MMIO
183	tristate "BT IPMI bmc driver"
184	help
185	  Provides a driver for the BT (Block Transfer) IPMI interface
186	  found on Aspeed SOCs (AST2400 and AST2500). The driver
187	  implements the BMC side of the BT interface.
188
189config SSIF_IPMI_BMC
190	tristate "SSIF IPMI BMC driver"
191	depends on I2C && I2C_SLAVE
192	help
193	  This enables the IPMI SMBus system interface (SSIF) at the
194	  management (BMC) side.
195
196	  The driver implements the BMC side of the SMBus system
197	  interface (SSIF).
198
199config SSIF_IPMI_BMC_KUNIT_TEST
200	bool "KUnit tests for SSIF IPMI BMC driver" if !KUNIT_ALL_TESTS
201	depends on KUNIT=y
202	depends on SSIF_IPMI_BMC
203	default KUNIT_ALL_TESTS
204	help
205	  This option builds unit tests that exercise the SSIF BMC state
206	  machine, including request handling, response transmission,
207	  and error paths such as aborted or truncated transfers.
208
209config IPMB_DEVICE_INTERFACE
210	tristate 'IPMB Interface handler'
211	depends on I2C
212	depends on I2C_SLAVE
213	help
214	  Provides a driver for a device (Satellite MC) to
215	  receive requests and send responses back to the BMC via
216	  the IPMB interface. This module requires I2C support.
217