| 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_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 | |
| 79 | config 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 | |
| 87 | config 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 | |
| 96 | config 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 | |
| 103 | config 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 | |
| 109 | config IPMI_WATCHDOG |
| 110 | tristate 'IPMI Watchdog Timer' |
| 111 | help |
| 112 | This enables the IPMI watchdog timer. |
| 113 | |
| 114 | config 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 | |
| 120 | endif # IPMI_HANDLER |
| 121 | |
| 122 | config IPMI_KCS_BMC |
| 123 | tristate |
| 124 | |
| 125 | config 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 | |
| 137 | config 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 | |
| 152 | config 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 | |
| 165 | config 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 | |
| 179 | config 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 | |
| 189 | config 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 | |
| 199 | config 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 | |
| 209 | config 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. |