xref: /openbmc/linux/drivers/char/ipmi/Kconfig (revision d66d0df936744e9254300f048814bc36fb5be068)
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # IPMI device configuration
4 #
5 
6 menuconfig 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 
21 config IPMI_DMI_DECODE
22 	select IPMI_PLAT_DATA
23 	bool
24 
25 config IPMI_PLAT_DATA
26 	bool
27 
28 if IPMI_HANDLER
29 
30 config 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 
40 config 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 
56 config 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 
62 config 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 
70 config IPMI_SSIF
71 	tristate 'IPMI SMBus handler (SSIF)'
72 	depends on I2C
73 	help
74 	  Provides a driver for a SMBus interface to a BMC, meaning that you
75 	  have a driver that must be accessed over an I2C bus instead of a
76 	  standard interface.  This module requires I2C support.
77 
78 config IPMI_IPMB
79 	tristate 'IPMI IPMB interface'
80 	depends on I2C && I2C_SLAVE
81 	help
82 	  Provides a driver for a system running right on the IPMB bus.
83 	  It supports normal system interface messages to a BMC on the IPMB
84 	  bus, and it also supports direct messaging on the bus using
85 	  IPMB direct messages.  This module requires I2C support.
86 
87 config IPMI_POWERNV
88 	depends on PPC_POWERNV
89 	tristate 'POWERNV (OPAL firmware) IPMI interface'
90 	help
91 	  Provides a driver for OPAL firmware-based IPMI interfaces.
92 
93 config IPMI_WATCHDOG
94 	tristate 'IPMI Watchdog Timer'
95 	help
96 	  This enables the IPMI watchdog timer.
97 
98 config IPMI_POWEROFF
99 	tristate 'IPMI Poweroff'
100 	help
101 	  This enables a function to power off the system with IPMI if
102 	  the IPMI management controller is capable of this.
103 
104 endif # IPMI_HANDLER
105 
106 config IPMI_KCS_BMC
107 	tristate
108 
109 config ASPEED_KCS_IPMI_BMC
110 	depends on ARCH_ASPEED || COMPILE_TEST
111 	select IPMI_KCS_BMC
112 	select REGMAP_MMIO
113 	tristate "Aspeed KCS IPMI BMC driver"
114 	help
115 	  Provides a driver for the KCS (Keyboard Controller Style) IPMI
116 	  interface found on Aspeed SOCs (AST2400 and AST2500).
117 
118 	  The driver implements the BMC side of the KCS contorller, it
119 	  provides the access of KCS IO space for BMC side.
120 
121 config NPCM7XX_KCS_IPMI_BMC
122 	depends on ARCH_NPCM || COMPILE_TEST
123 	select IPMI_KCS_BMC
124 	select REGMAP_MMIO
125 	tristate "NPCM KCS IPMI BMC driver"
126 	help
127 	  Provides a driver for the KCS (Keyboard Controller Style) IPMI
128 	  interface found on Nuvoton NPCM SOCs.
129 
130 	  The driver implements the BMC side of the KCS contorller, it
131 	  provides the access of KCS IO space for BMC side.
132 
133 	  This support is also available as a module.  If so, the module
134 	  will be called kcs_bmc_npcm7xx.
135 
136 config IPMI_KCS_BMC_CDEV_IPMI
137 	depends on IPMI_KCS_BMC
138 	tristate "IPMI character device interface for BMC KCS devices"
139 	help
140 	  Provides a BMC-side character device implementing IPMI
141 	  semantics for KCS IPMI devices.
142 
143 	  Say YES if you wish to expose KCS devices on the BMC for IPMI
144 	  purposes.
145 
146 	  This support is also available as a module. The module will be
147 	  called kcs_bmc_cdev_ipmi.
148 
149 config IPMI_KCS_BMC_SERIO
150 	depends on IPMI_KCS_BMC && SERIO
151 	tristate "SerIO adaptor for BMC KCS devices"
152 	help
153 	  Adapts the BMC KCS device for the SerIO subsystem. This allows users
154 	  to take advantage of userspace interfaces provided by SerIO where
155 	  appropriate.
156 
157 	  Say YES if you wish to expose KCS devices on the BMC via SerIO
158 	  interfaces.
159 
160 	  This support is also available as a module. The module will be
161 	  called kcs_bmc_serio.
162 
163 config IPMI_KCS_BMC_CDEV_RAW
164 	depends on IPMI_KCS_BMC
165 	tristate "Raw character device interface for BMC KCS devices"
166 	help
167 	  Provides a BMC-side character device directly exposing the
168 	  data and status registers of a KCS device to userspace. While
169 	  KCS devices are commonly used to implement IPMI message
170 	  passing, they provide a general interface for exchange of
171 	  interrupts, data and status information between the BMC and
172 	  its host.
173 
174 	  Say YES if you wish to use the KCS devices to implement
175 	  protocols that are not IPMI.
176 
177 	  This support is also available as a module. The module will be
178 	  called kcs_bmc_cdev_raw.
179 
180 config ASPEED_BT_IPMI_BMC
181 	depends on ARCH_ASPEED || COMPILE_TEST
182 	depends on MFD_SYSCON
183 	select REGMAP_MMIO
184 	tristate "BT IPMI bmc driver"
185 	help
186 	  Provides a driver for the BT (Block Transfer) IPMI interface
187 	  found on Aspeed SOCs (AST2400 and AST2500). The driver
188 	  implements the BMC side of the BT interface.
189 
190 config SSIF_IPMI_BMC
191 	tristate "SSIF IPMI BMC driver"
192 	depends on I2C && I2C_SLAVE
193 	help
194 	  This enables the IPMI SMBus system interface (SSIF) at the
195 	  management (BMC) side.
196 
197 	  The driver implements the BMC side of the SMBus system
198 	  interface (SSIF).
199 
200 config IPMB_DEVICE_INTERFACE
201 	tristate 'IPMB Interface handler'
202 	depends on I2C
203 	depends on I2C_SLAVE
204 	help
205 	  Provides a driver for a device (Satellite MC) to
206 	  receive requests and send responses back to the BMC via
207 	  the IPMB interface. This module requires I2C support.
208