162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# IPMI device configuration
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_cimenuconfig IPMI_HANDLER
762306a36Sopenharmony_ci	tristate 'IPMI top-level message handler'
862306a36Sopenharmony_ci	depends on HAS_IOMEM
962306a36Sopenharmony_ci	select IPMI_DMI_DECODE if DMI
1062306a36Sopenharmony_ci	help
1162306a36Sopenharmony_ci	  This enables the central IPMI message handler, required for IPMI
1262306a36Sopenharmony_ci	  to work.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci	  IPMI is a standard for managing sensors (temperature,
1562306a36Sopenharmony_ci	  voltage, etc.) in a system.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	  See <file:Documentation/driver-api/ipmi.rst> for more details on the driver.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	  If unsure, say N.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciconfig IPMI_DMI_DECODE
2262306a36Sopenharmony_ci	select IPMI_PLAT_DATA
2362306a36Sopenharmony_ci	bool
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ciconfig IPMI_PLAT_DATA
2662306a36Sopenharmony_ci	bool
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciif IPMI_HANDLER
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciconfig IPMI_PANIC_EVENT
3162306a36Sopenharmony_ci	bool 'Generate a panic event to all BMCs on a panic'
3262306a36Sopenharmony_ci	help
3362306a36Sopenharmony_ci	  When a panic occurs, this will cause the IPMI message handler to,
3462306a36Sopenharmony_ci	  by default, generate an IPMI event describing the panic to each
3562306a36Sopenharmony_ci	  interface registered with the message handler.  This is always
3662306a36Sopenharmony_ci	  available, the module parameter for ipmi_msghandler named
3762306a36Sopenharmony_ci	  panic_op can be set to "event" to chose this value, this config
3862306a36Sopenharmony_ci	  simply causes the default value to be set to "event".
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciconfig IPMI_PANIC_STRING
4162306a36Sopenharmony_ci	bool 'Generate OEM events containing the panic string'
4262306a36Sopenharmony_ci	depends on IPMI_PANIC_EVENT
4362306a36Sopenharmony_ci	help
4462306a36Sopenharmony_ci	  When a panic occurs, this will cause the IPMI message handler to,
4562306a36Sopenharmony_ci	  by default, generate IPMI OEM type f0 events holding the IPMB
4662306a36Sopenharmony_ci	  address of the panic generator (byte 4 of the event), a sequence
4762306a36Sopenharmony_ci	  number for the string (byte 5 of the event) and part of the
4862306a36Sopenharmony_ci	  string (the rest of the event).  Bytes 1, 2, and 3 are the normal
4962306a36Sopenharmony_ci	  usage for an OEM event.  You can fetch these events and use the
5062306a36Sopenharmony_ci	  sequence numbers to piece the string together.  This config
5162306a36Sopenharmony_ci	  parameter sets the default value to generate these events,
5262306a36Sopenharmony_ci	  the module parameter for ipmi_msghandler named panic_op can
5362306a36Sopenharmony_ci	  be set to "string" to chose this value, this config simply
5462306a36Sopenharmony_ci	  causes the default value to be set to "string".
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ciconfig IPMI_DEVICE_INTERFACE
5762306a36Sopenharmony_ci	tristate 'Device interface for IPMI'
5862306a36Sopenharmony_ci	help
5962306a36Sopenharmony_ci	  This provides an IOCTL interface to the IPMI message handler so
6062306a36Sopenharmony_ci	  userland processes may use IPMI.  It supports poll() and select().
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciconfig IPMI_SI
6362306a36Sopenharmony_ci	tristate 'IPMI System Interface handler'
6462306a36Sopenharmony_ci	select IPMI_PLAT_DATA
6562306a36Sopenharmony_ci	help
6662306a36Sopenharmony_ci	  Provides a driver for System Interfaces (KCS, SMIC, BT).
6762306a36Sopenharmony_ci	  Currently, only KCS and SMIC are supported.  If
6862306a36Sopenharmony_ci	  you are using IPMI, you should probably say "y" here.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ciconfig IPMI_SSIF
7162306a36Sopenharmony_ci	tristate 'IPMI SMBus handler (SSIF)'
7262306a36Sopenharmony_ci	depends on I2C
7362306a36Sopenharmony_ci	help
7462306a36Sopenharmony_ci	  Provides a driver for a SMBus interface to a BMC, meaning that you
7562306a36Sopenharmony_ci	  have a driver that must be accessed over an I2C bus instead of a
7662306a36Sopenharmony_ci	  standard interface.  This module requires I2C support.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciconfig IPMI_IPMB
7962306a36Sopenharmony_ci	tristate 'IPMI IPMB interface'
8062306a36Sopenharmony_ci	depends on I2C && I2C_SLAVE
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  Provides a driver for a system running right on the IPMB bus.
8362306a36Sopenharmony_ci	  It supports normal system interface messages to a BMC on the IPMB
8462306a36Sopenharmony_ci	  bus, and it also supports direct messaging on the bus using
8562306a36Sopenharmony_ci	  IPMB direct messages.  This module requires I2C support.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciconfig IPMI_POWERNV
8862306a36Sopenharmony_ci	depends on PPC_POWERNV
8962306a36Sopenharmony_ci	tristate 'POWERNV (OPAL firmware) IPMI interface'
9062306a36Sopenharmony_ci	help
9162306a36Sopenharmony_ci	  Provides a driver for OPAL firmware-based IPMI interfaces.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciconfig IPMI_WATCHDOG
9462306a36Sopenharmony_ci	tristate 'IPMI Watchdog Timer'
9562306a36Sopenharmony_ci	help
9662306a36Sopenharmony_ci	  This enables the IPMI watchdog timer.
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciconfig IPMI_POWEROFF
9962306a36Sopenharmony_ci	tristate 'IPMI Poweroff'
10062306a36Sopenharmony_ci	help
10162306a36Sopenharmony_ci	  This enables a function to power off the system with IPMI if
10262306a36Sopenharmony_ci	  the IPMI management controller is capable of this.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciendif # IPMI_HANDLER
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciconfig IPMI_KCS_BMC
10762306a36Sopenharmony_ci	tristate
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciconfig ASPEED_KCS_IPMI_BMC
11062306a36Sopenharmony_ci	depends on ARCH_ASPEED || COMPILE_TEST
11162306a36Sopenharmony_ci	select IPMI_KCS_BMC
11262306a36Sopenharmony_ci	select REGMAP_MMIO
11362306a36Sopenharmony_ci	tristate "Aspeed KCS IPMI BMC driver"
11462306a36Sopenharmony_ci	help
11562306a36Sopenharmony_ci	  Provides a driver for the KCS (Keyboard Controller Style) IPMI
11662306a36Sopenharmony_ci	  interface found on Aspeed SOCs (AST2400 and AST2500).
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci	  The driver implements the BMC side of the KCS contorller, it
11962306a36Sopenharmony_ci	  provides the access of KCS IO space for BMC side.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciconfig NPCM7XX_KCS_IPMI_BMC
12262306a36Sopenharmony_ci	depends on ARCH_NPCM || COMPILE_TEST
12362306a36Sopenharmony_ci	select IPMI_KCS_BMC
12462306a36Sopenharmony_ci	select REGMAP_MMIO
12562306a36Sopenharmony_ci	tristate "NPCM KCS IPMI BMC driver"
12662306a36Sopenharmony_ci	help
12762306a36Sopenharmony_ci	  Provides a driver for the KCS (Keyboard Controller Style) IPMI
12862306a36Sopenharmony_ci	  interface found on Nuvoton NPCM SOCs.
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci	  The driver implements the BMC side of the KCS contorller, it
13162306a36Sopenharmony_ci	  provides the access of KCS IO space for BMC side.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci	  This support is also available as a module.  If so, the module
13462306a36Sopenharmony_ci	  will be called kcs_bmc_npcm7xx.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ciconfig IPMI_KCS_BMC_CDEV_IPMI
13762306a36Sopenharmony_ci	depends on IPMI_KCS_BMC
13862306a36Sopenharmony_ci	tristate "IPMI character device interface for BMC KCS devices"
13962306a36Sopenharmony_ci	help
14062306a36Sopenharmony_ci	  Provides a BMC-side character device implementing IPMI
14162306a36Sopenharmony_ci	  semantics for KCS IPMI devices.
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	  Say YES if you wish to expose KCS devices on the BMC for IPMI
14462306a36Sopenharmony_ci	  purposes.
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci	  This support is also available as a module. The module will be
14762306a36Sopenharmony_ci	  called kcs_bmc_cdev_ipmi.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciconfig IPMI_KCS_BMC_SERIO
15062306a36Sopenharmony_ci	depends on IPMI_KCS_BMC && SERIO
15162306a36Sopenharmony_ci	tristate "SerIO adaptor for BMC KCS devices"
15262306a36Sopenharmony_ci	help
15362306a36Sopenharmony_ci	  Adapts the BMC KCS device for the SerIO subsystem. This allows users
15462306a36Sopenharmony_ci	  to take advantage of userspace interfaces provided by SerIO where
15562306a36Sopenharmony_ci	  appropriate.
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci	  Say YES if you wish to expose KCS devices on the BMC via SerIO
15862306a36Sopenharmony_ci	  interfaces.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci	  This support is also available as a module. The module will be
16162306a36Sopenharmony_ci	  called kcs_bmc_serio.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciconfig ASPEED_BT_IPMI_BMC
16462306a36Sopenharmony_ci	depends on ARCH_ASPEED || COMPILE_TEST
16562306a36Sopenharmony_ci	depends on MFD_SYSCON
16662306a36Sopenharmony_ci	select REGMAP_MMIO
16762306a36Sopenharmony_ci	tristate "BT IPMI bmc driver"
16862306a36Sopenharmony_ci	help
16962306a36Sopenharmony_ci	  Provides a driver for the BT (Block Transfer) IPMI interface
17062306a36Sopenharmony_ci	  found on Aspeed SOCs (AST2400 and AST2500). The driver
17162306a36Sopenharmony_ci	  implements the BMC side of the BT interface.
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ciconfig SSIF_IPMI_BMC
17462306a36Sopenharmony_ci	tristate "SSIF IPMI BMC driver"
17562306a36Sopenharmony_ci	depends on I2C && I2C_SLAVE
17662306a36Sopenharmony_ci	help
17762306a36Sopenharmony_ci	  This enables the IPMI SMBus system interface (SSIF) at the
17862306a36Sopenharmony_ci	  management (BMC) side.
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci	  The driver implements the BMC side of the SMBus system
18162306a36Sopenharmony_ci	  interface (SSIF).
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ciconfig IPMB_DEVICE_INTERFACE
18462306a36Sopenharmony_ci	tristate 'IPMB Interface handler'
18562306a36Sopenharmony_ci	depends on I2C
18662306a36Sopenharmony_ci	depends on I2C_SLAVE
18762306a36Sopenharmony_ci	help
18862306a36Sopenharmony_ci	  Provides a driver for a device (Satellite MC) to
18962306a36Sopenharmony_ci	  receive requests and send responses back to the BMC via
19062306a36Sopenharmony_ci	  the IPMB interface. This module requires I2C support.
191