# SPDX-License-Identifier: GPL-2.0-only
menuconfig POWER_RESET
	bool "Board level reset or power off"
	help
	  Provides a number of drivers which either reset a complete board
	  or shut it down, by manipulating the main power supply on the board.

	  Say Y here to enable board reset and power off

if POWER_RESET

config POWER_RESET_AS3722
	bool "ams AS3722 power-off driver"
	depends on MFD_AS3722
	help
	  This driver supports turning off board via a ams AS3722 power-off.

config POWER_RESET_AT91_POWEROFF
	tristate "Atmel AT91 poweroff driver"
	depends on ARCH_AT91
	default SOC_AT91SAM9 || SOC_SAMA5
	help
	  This driver supports poweroff for Atmel AT91SAM9 and SAMA5
	  SoCs

config POWER_RESET_AT91_RESET
	tristate "Atmel AT91 reset driver"
	depends on ARCH_AT91
	default SOC_AT91SAM9 || SOC_SAM9X60 || SOC_SAM9X7 || SOC_SAMA5
	help
	  This driver supports restart for Atmel AT91SAM9 and SAMA5
	  SoCs

config POWER_RESET_AT91_SAMA5D2_SHDWC
	tristate "Atmel AT91 SAMA5D2-Compatible shutdown controller driver"
	depends on ARCH_AT91
	default SOC_SAM9X60 || SOC_SAM9X7 || SOC_SAMA5
	help
	  This driver supports the alternate shutdown controller for some Atmel
	  SAMA5 SoCs. It is present for example on SAMA5D2 SoC.

config POWER_RESET_ATC260X
	tristate "Actions Semi ATC260x PMIC power-off driver"
	depends on MFD_ATC260X
	help
	  This driver provides power-off and restart support for a system
	  through Actions Semi ATC260x series PMICs.

config POWER_RESET_AXXIA
	bool "LSI Axxia reset driver"
	depends on ARCH_AXXIA
	help
	  This driver supports restart for Axxia SoC.

	  Say Y if you have an Axxia family SoC.

config POWER_RESET_BRCMKONA
	bool "Broadcom Kona reset driver"
	depends on ARM || COMPILE_TEST
	default ARCH_BCM_MOBILE
	help
	  This driver provides restart support for Broadcom Kona chips.

	  Say Y here if you have a Broadcom Kona-based board and you wish
	  to have restart support.

config POWER_RESET_BRCMSTB
	bool "Broadcom STB reset driver"
	depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
	depends on MFD_SYSCON
	default ARCH_BRCMSTB || BMIPS_GENERIC
	help
	  This driver provides restart support for Broadcom STB boards.

	  Say Y here if you have a Broadcom STB board and you wish
	  to have restart support.

config POWER_RESET_EP93XX
	bool "Cirrus EP93XX reset driver" if COMPILE_TEST
	depends on MFD_SYSCON
	default ARCH_EP93XX
	select AUXILIARY_BUS
	help
	  This driver provides restart support for Cirrus EP93XX SoC.

	  Say Y here if you have a Cirrus EP93XX SoC and you wish
	  to have restart support.

config POWER_RESET_GEMINI_POWEROFF
	bool "Cortina Gemini power-off driver"
	depends on ARCH_GEMINI || COMPILE_TEST
	depends on OF && HAS_IOMEM
	default ARCH_GEMINI
	help
	  This driver supports turning off the Cortina Gemini SoC.
	  Select this if you're building a kernel with Gemini SoC support.

config POWER_RESET_GPIO
	bool "GPIO power-off driver"
	depends on OF_GPIO
	help
	  This driver supports turning off your board via a GPIO line.
	  If your board needs a GPIO high/low to power down, say Y and
	  create a binding in your devicetree.

config POWER_RESET_GPIO_RESTART
	bool "GPIO restart driver"
	depends on OF_GPIO
	help
	  This driver supports restarting your board via a GPIO line.
	  If your board needs a GPIO high/low to restart, say Y and
	  create a binding in your devicetree.

config POWER_RESET_HISI
	bool "Hisilicon power-off driver"
	depends on ARCH_HISI
	help
	  Reboot support for Hisilicon boards.

config POWER_RESET_LINKSTATION
	tristate "Buffalo LinkStation power-off driver"
	depends on ARCH_MVEBU || COMPILE_TEST
	depends on OF_MDIO && PHYLIB
	help
	  This driver supports turning off some Buffalo LinkStations by
	  setting an output pin at the ethernet PHY to the correct state.
	  It also makes the device compatible with the WoL function.

	  Say Y here if you have a Buffalo LinkStation LS421D/E.

config POWER_RESET_MACSMC
	tristate "Apple SMC reset/power-off driver"
	depends on MFD_MACSMC
	help
	  This driver supports reset and power-off on Apple Mac machines
	  that implement this functionality via the SMC.

	  Say Y here if you have an Apple Silicon Mac.

config POWER_RESET_MSM
	bool "Qualcomm MSM power-off driver"
	depends on ARCH_QCOM
	help
	  Power off and restart support for Qualcomm boards.

config POWER_RESET_QCOM_PON
	tristate "Qualcomm power-on driver"
	depends on ARCH_QCOM
	depends on MFD_SPMI_PMIC
	select REBOOT_MODE
	help
	  Power On support for Qualcomm boards.
	  If you have a Qualcomm platform and need support for
	  power-on and reboot reason, Say Y.
	  If unsure, Say N.

config POWER_RESET_OCELOT_RESET
	bool "Microsemi Ocelot reset driver"
	depends on MSCC_OCELOT || ARCH_SPARX5 || COMPILE_TEST
	select MFD_SYSCON
	help
	  This driver supports restart for Microsemi Ocelot SoC and similar.

config POWER_RESET_ODROID_GO_ULTRA_POWEROFF
	bool "Odroid Go Ultra power-off driver"
	depends on ARCH_MESON || COMPILE_TEST
	depends on I2C=y && OF
	help
	  This driver supports Power off for Odroid Go Ultra device.

config POWER_RESET_PIIX4_POWEROFF
	tristate "Intel PIIX4 power-off driver"
	depends on PCI
	depends on HAS_IOPORT
	depends on MIPS || COMPILE_TEST
	help
	  This driver supports powering off a system using the Intel PIIX4
	  southbridge, for example the MIPS Malta development board. The
	  southbridge SOff state is entered in response to a request to
	  power off the system.

config POWER_RESET_LTC2952
	bool "LTC2952 PowerPath power-off driver"
	depends on OF_GPIO
	help
	  This driver supports an external powerdown trigger and board power
	  down via the LTC2952. Bindings are made in the device tree.

config POWER_RESET_MT6323
	bool "MediaTek MT6323 power-off driver"
	depends on MFD_MT6397
	help
	  The power-off driver is responsible for externally shutdown down
	  the power of a remote MediaTek SoC MT6323 is connected to through
	  controlling a tiny circuit BBPU inside MT6323 RTC.

	  Say Y if you have a board where MT6323 could be found.

config POWER_RESET_QNAP
	bool "QNAP power-off driver"
	depends on OF_GPIO && PLAT_ORION
	help
	  This driver supports turning off QNAP NAS devices by sending
	  commands to the microcontroller which controls the main power.

	  Say Y if you have a QNAP NAS.

config POWER_RESET_REGULATOR
	bool "Regulator subsystem power-off driver"
	depends on OF && REGULATOR
	help
	  This driver supports turning off your board by disabling a
	  power regulator defined in the devicetree.

config POWER_RESET_RESTART
	bool "Restart power-off driver"
	help
	  Some boards don't actually have the ability to power off.
	  Instead they restart, and u-boot holds the SoC until the
	  user presses a key. u-boot then boots into Linux.

config POWER_RESET_ST
	bool "ST restart driver"
	depends on ARCH_STI
	help
	  Reset support for STMicroelectronics boards.

config POWER_RESET_TH1520_AON
	tristate "T-Head TH1520 AON firmware poweroff and reset driver"
	depends on TH1520_PM_DOMAINS
	help
	  This driver supports power-off and reset operations for T-Head
	  TH1520 SoCs running the AON firmware.

config POWER_RESET_TORADEX_EC
	tristate "Toradex Embedded Controller power-off and reset driver"
	depends on ARCH_MXC || COMPILE_TEST
	depends on I2C
	select REGMAP_I2C
	help
	  This driver supports power-off and reset for SMARC Toradex SoMs,
	  for example the SMARC iMX8MP and SMARC iMX95, using Toradex
	  Embedded Controller (EC).

	  Say Y here if you have a Toradex SMARC SoM.

	  If unsure, say N.

config POWER_RESET_TPS65086
	bool "TPS65086 restart driver"
	depends on MFD_TPS65086
	help
	  This driver adds support for resetting the TPS65086 PMIC on restart.

config POWER_RESET_VERSATILE
	bool "ARM Versatile family reboot driver"
	depends on ARM
	depends on MFD_SYSCON
	depends on OF
	help
	  Power off and restart support for ARM Versatile family of
	  reference boards.

config POWER_RESET_VEXPRESS
	bool "ARM Versatile Express power-off and reset driver"
	depends on ARM || ARM64
	depends on VEXPRESS_CONFIG=y
	help
	  Power off and reset support for the ARM Ltd. Versatile
	  Express boards.

config POWER_RESET_XGENE
	bool "APM SoC X-Gene reset driver"
	depends on ARM64
	help
	  Reboot support for the APM SoC X-Gene Eval boards.

config POWER_RESET_KEYSTONE
	bool "Keystone reset driver"
	depends on ARCH_KEYSTONE || COMPILE_TEST
	depends on HAS_IOMEM
	select MFD_SYSCON
	help
	  Reboot support for the KEYSTONE SoCs.

config POWER_RESET_SPACEMIT_P1
	tristate "SpacemiT P1 poweroff and reset driver"
	depends on ARCH_SPACEMIT || COMPILE_TEST
	depends on MFD_SPACEMIT_P1
	default MFD_SPACEMIT_P1
	help
	  This driver supports power-off and reset operations for the SpacemiT
	  P1 PMIC.

config POWER_RESET_SYSCON
	bool "Generic SYSCON regmap reset driver"
	depends on OF
	depends on HAS_IOMEM
	select MFD_SYSCON
	help
	  Reboot support for generic SYSCON mapped register reset.

config POWER_RESET_SYSCON_POWEROFF
	bool "Generic SYSCON regmap poweroff driver"
	depends on OF
	depends on HAS_IOMEM
	select MFD_SYSCON
	help
	  Poweroff support for generic SYSCON mapped register poweroff.

config POWER_RESET_RMOBILE
	tristate "Renesas R-Mobile reset driver"
	depends on ARCH_RMOBILE || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Reboot support for Renesas R-Mobile and SH-Mobile SoCs.

config REBOOT_MODE
	tristate

config SYSCON_REBOOT_MODE
	tristate "Generic SYSCON regmap reboot mode driver"
	depends on OF
	depends on MFD_SYSCON
	select REBOOT_MODE
	help
	  Say y here will enable reboot mode driver. This will
	  get reboot mode arguments and store it in SYSCON mapped
	  register, then the bootloader can read it to take different
	  action according to the mode.

config POWER_RESET_SC27XX
	tristate "Spreadtrum SC27xx PMIC power-off driver"
	depends on MFD_SC27XX_PMIC || COMPILE_TEST
	help
	  This driver supports powering off a system through
	  Spreadtrum SC27xx series PMICs. The SC27xx series
	  PMICs includes the SC2720, SC2721, SC2723, SC2730
	  and SC2731 chips.

config NVMEM_REBOOT_MODE
	tristate "Generic NVMEM reboot mode driver"
	depends on OF
	select REBOOT_MODE
	help
	  Say y here will enable reboot mode driver. This will
	  get reboot mode arguments and store it in a NVMEM cell,
	  then the bootloader can read it and take different
	  action according to the mode.

config POWER_MLXBF
	tristate "Mellanox BlueField power handling driver"
	depends on (GPIO_MLXBF2 || GPIO_MLXBF3) && ACPI
	help
	  This driver supports reset or low power mode handling for Mellanox BlueField.

endif
