0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # IPMI device configuration
0004 #
0005
0006 menuconfig IPMI_HANDLER
0007 tristate 'IPMI top-level message handler'
0008 depends on HAS_IOMEM
0009 select IPMI_DMI_DECODE if DMI
0010 help
0011 This enables the central IPMI message handler, required for IPMI
0012 to work.
0013
0014 IPMI is a standard for managing sensors (temperature,
0015 voltage, etc.) in a system.
0016
0017 See <file:Documentation/driver-api/ipmi.rst> for more details on the driver.
0018
0019 If unsure, say N.
0020
0021 config IPMI_DMI_DECODE
0022 select IPMI_PLAT_DATA
0023 bool
0024
0025 config IPMI_PLAT_DATA
0026 bool
0027
0028 if IPMI_HANDLER
0029
0030 config IPMI_PANIC_EVENT
0031 bool 'Generate a panic event to all BMCs on a panic'
0032 help
0033 When a panic occurs, this will cause the IPMI message handler to,
0034 by default, generate an IPMI event describing the panic to each
0035 interface registered with the message handler. This is always
0036 available, the module parameter for ipmi_msghandler named
0037 panic_op can be set to "event" to chose this value, this config
0038 simply causes the default value to be set to "event".
0039
0040 config IPMI_PANIC_STRING
0041 bool 'Generate OEM events containing the panic string'
0042 depends on IPMI_PANIC_EVENT
0043 help
0044 When a panic occurs, this will cause the IPMI message handler to,
0045 by default, generate IPMI OEM type f0 events holding the IPMB
0046 address of the panic generator (byte 4 of the event), a sequence
0047 number for the string (byte 5 of the event) and part of the
0048 string (the rest of the event). Bytes 1, 2, and 3 are the normal
0049 usage for an OEM event. You can fetch these events and use the
0050 sequence numbers to piece the string together. This config
0051 parameter sets the default value to generate these events,
0052 the module parameter for ipmi_msghandler named panic_op can
0053 be set to "string" to chose this value, this config simply
0054 causes the default value to be set to "string".
0055
0056 config IPMI_DEVICE_INTERFACE
0057 tristate 'Device interface for IPMI'
0058 help
0059 This provides an IOCTL interface to the IPMI message handler so
0060 userland processes may use IPMI. It supports poll() and select().
0061
0062 config IPMI_SI
0063 tristate 'IPMI System Interface handler'
0064 select IPMI_PLAT_DATA
0065 help
0066 Provides a driver for System Interfaces (KCS, SMIC, BT).
0067 Currently, only KCS and SMIC are supported. If
0068 you are using IPMI, you should probably say "y" here.
0069
0070 config IPMI_SSIF
0071 tristate 'IPMI SMBus handler (SSIF)'
0072 depends on I2C
0073 help
0074 Provides a driver for a SMBus interface to a BMC, meaning that you
0075 have a driver that must be accessed over an I2C bus instead of a
0076 standard interface. This module requires I2C support.
0077
0078 config IPMI_IPMB
0079 tristate 'IPMI IPMB interface'
0080 depends on I2C && I2C_SLAVE
0081 help
0082 Provides a driver for a system running right on the IPMB bus.
0083 It supports normal system interface messages to a BMC on the IPMB
0084 bus, and it also supports direct messaging on the bus using
0085 IPMB direct messages. This module requires I2C support.
0086
0087 config IPMI_POWERNV
0088 depends on PPC_POWERNV
0089 tristate 'POWERNV (OPAL firmware) IPMI interface'
0090 help
0091 Provides a driver for OPAL firmware-based IPMI interfaces.
0092
0093 config IPMI_WATCHDOG
0094 tristate 'IPMI Watchdog Timer'
0095 help
0096 This enables the IPMI watchdog timer.
0097
0098 config IPMI_POWEROFF
0099 tristate 'IPMI Poweroff'
0100 help
0101 This enables a function to power off the system with IPMI if
0102 the IPMI management controller is capable of this.
0103
0104 endif # IPMI_HANDLER
0105
0106 config IPMI_KCS_BMC
0107 tristate
0108
0109 config ASPEED_KCS_IPMI_BMC
0110 depends on ARCH_ASPEED || COMPILE_TEST
0111 select IPMI_KCS_BMC
0112 select REGMAP_MMIO
0113 tristate "Aspeed KCS IPMI BMC driver"
0114 help
0115 Provides a driver for the KCS (Keyboard Controller Style) IPMI
0116 interface found on Aspeed SOCs (AST2400 and AST2500).
0117
0118 The driver implements the BMC side of the KCS contorller, it
0119 provides the access of KCS IO space for BMC side.
0120
0121 config NPCM7XX_KCS_IPMI_BMC
0122 depends on ARCH_NPCM7XX || COMPILE_TEST
0123 select IPMI_KCS_BMC
0124 select REGMAP_MMIO
0125 tristate "NPCM7xx KCS IPMI BMC driver"
0126 help
0127 Provides a driver for the KCS (Keyboard Controller Style) IPMI
0128 interface found on Nuvoton NPCM7xx SOCs.
0129
0130 The driver implements the BMC side of the KCS contorller, it
0131 provides the access of KCS IO space for BMC side.
0132
0133 This support is also available as a module. If so, the module
0134 will be called kcs_bmc_npcm7xx.
0135
0136 config IPMI_KCS_BMC_CDEV_IPMI
0137 depends on IPMI_KCS_BMC
0138 tristate "IPMI character device interface for BMC KCS devices"
0139 help
0140 Provides a BMC-side character device implementing IPMI
0141 semantics for KCS IPMI devices.
0142
0143 Say YES if you wish to expose KCS devices on the BMC for IPMI
0144 purposes.
0145
0146 This support is also available as a module. The module will be
0147 called kcs_bmc_cdev_ipmi.
0148
0149 config IPMI_KCS_BMC_SERIO
0150 depends on IPMI_KCS_BMC && SERIO
0151 tristate "SerIO adaptor for BMC KCS devices"
0152 help
0153 Adapts the BMC KCS device for the SerIO subsystem. This allows users
0154 to take advantage of userspace interfaces provided by SerIO where
0155 appropriate.
0156
0157 Say YES if you wish to expose KCS devices on the BMC via SerIO
0158 interfaces.
0159
0160 This support is also available as a module. The module will be
0161 called kcs_bmc_serio.
0162
0163 config ASPEED_BT_IPMI_BMC
0164 depends on ARCH_ASPEED || COMPILE_TEST
0165 depends on REGMAP && REGMAP_MMIO && MFD_SYSCON
0166 tristate "BT IPMI bmc driver"
0167 help
0168 Provides a driver for the BT (Block Transfer) IPMI interface
0169 found on Aspeed SOCs (AST2400 and AST2500). The driver
0170 implements the BMC side of the BT interface.
0171
0172 config IPMB_DEVICE_INTERFACE
0173 tristate 'IPMB Interface handler'
0174 depends on I2C
0175 depends on I2C_SLAVE
0176 help
0177 Provides a driver for a device (Satellite MC) to
0178 receive requests and send responses back to the BMC via
0179 the IPMB interface. This module requires I2C support.