menu "Reset Controller Support"

config DM_RESET
	bool "Enable reset controllers using Driver Model"
	depends on DM && OF_CONTROL
	help
	  Enable support for the reset controller driver class. Many hardware
	  modules are equipped with a reset signal, typically driven by some
	  reset controller hardware module within the chip. In U-Boot, reset
	  controller drivers allow control over these reset signals. In some
	  cases this API is applicable to chips outside the CPU as well,
	  although driving such reset isgnals using GPIOs may be more
	  appropriate in this case.

config SANDBOX_RESET
	bool "Enable the sandbox reset test driver"
	depends on DM_MAILBOX && SANDBOX
	help
	  Enable support for a test reset controller implementation, which
	  simply accepts requests to reset various HW modules without actually
	  doing anything beyond a little error checking.

config STI_RESET
	bool "Enable the STi reset"
	depends on ARCH_STI
	help
	  Support for reset controllers on STMicroelectronics STiH407 family SoCs.
	  Say Y if you want to control reset signals provided by system config
	  block.

config STM32_RESET
	bool "Enable the STM32 reset"
	depends on ARCH_STM32 || ARCH_STM32MP
	help
	  Support for reset controllers on STMicroelectronics STM32 family SoCs.
	  This reset driver is compatible with STM32 F4/F7 and H7 SoCs.

config TEGRA_CAR_RESET
	bool "Enable Tegra CAR-based reset driver"
	depends on TEGRA_CAR
	help
	  Enable support for manipulating Tegra's on-SoC reset signals via
	  direct register access to the Tegra CAR (Clock And Reset controller).

config TEGRA186_RESET
	bool "Enable Tegra186 BPMP-based reset driver"
	depends on TEGRA186_BPMP
	help
	  Enable support for manipulating Tegra's on-SoC reset signals via IPC
	  requests to the BPMP (Boot and Power Management Processor).

config RESET_TI_SCI
	bool "TI System Control Interface (TI SCI) reset driver"
	depends on DM_RESET && TI_SCI_PROTOCOL
	help
	  This enables the reset driver support over TI System Control Interface
	  available on some new TI's SoCs. If you wish to use reset resources
	  managed by the TI System Controller, say Y here. Otherwise, say N.

config RESET_BCM6345
	bool "Reset controller driver for BCM6345"
	depends on DM_RESET && ARCH_BMIPS
	help
	  Support reset controller on BCM6345.

config RESET_UNIPHIER
	bool "Reset controller driver for UniPhier SoCs"
	depends on ARCH_UNIPHIER
	default y
	help
	  Support for reset controllers on UniPhier SoCs.
	  Say Y if you want to control reset signals provided by System Control
	  block, Media I/O block, Peripheral Block.

config RESET_AST2500
	bool "Reset controller driver for AST2500 SoCs"
	depends on DM_RESET
	default y if ASPEED_AST2500
	help
	  Support for reset controller on AST2500 SoC.
	  Say Y if you want to control reset signals of different peripherals
	  through System Control Unit (SCU).

config RESET_AST2600
	bool "Reset controller driver for AST2600 SoCs"
	depends on DM_RESET
	default y if ASPEED_AST2600
	help
	  Support for reset controller on AST2600 SoC.
	  Say Y if you want to control reset signals of different peripherals
	  through System Control Unit (SCU).

config RESET_ROCKCHIP
	bool "Reset controller driver for Rockchip SoCs"
	depends on DM_RESET && ARCH_ROCKCHIP && CLK
	default y
	help
	  Support for reset controller on rockchip SoC. The main limitation
	  though is that some reset signals, like I2C or MISC reset multiple
	  devices.

config RESET_HSDK
	bool "Synopsys HSDK Reset Driver"
	depends on DM_RESET && TARGET_HSDK
	default y
	help
	  This enables the reset controller driver for HSDK board.

config RESET_MESON
	bool "Reset controller driver for Amlogic Meson SoCs"
	depends on DM_RESET && ARCH_MESON
	imply REGMAP
	default y
	help
	  Support for reset controller on Amlogic Meson SoC.

config RESET_SOCFPGA
	bool "Reset controller driver for SoCFPGA"
	depends on DM_RESET && ARCH_SOCFPGA
	default y
	help
	  Support for reset controller on SoCFPGA platform.

config RESET_MEDIATEK
	bool "Reset controller driver for MediaTek SoCs"
	depends on DM_RESET && ARCH_MEDIATEK && CLK
	default y
	help
	  Support for reset controller on MediaTek SoCs.

config RESET_MTMIPS
	bool "Reset controller driver for MediaTek MIPS platform"
	depends on DM_RESET && ARCH_MTMIPS
	default y
	help
	  Support for reset controller on MediaTek MIPS platform.

config RESET_SUNXI
	bool "RESET support for Allwinner SoCs"
	depends on DM_RESET && ARCH_SUNXI
	default y
	help
	  This enables support for common reset driver for
	  Allwinner SoCs.

config RESET_HISILICON
	bool "Reset controller driver for HiSilicon SoCs"
	depends on DM_RESET
	help
	  Support for reset controller on HiSilicon SoCs.

config RESET_IMX7
	bool "i.MX7/8 Reset Driver"
	depends on DM_RESET && (ARCH_MX7 || ARCH_IMX8M)
	default y
	help
	  Support for reset controller on i.MX7/8 SoCs.

config RESET_IPQ419
	bool "Reset driver for Qualcomm IPQ40xx SoCs"
	depends on DM_RESET && ARCH_IPQ40XX
	default y
	help
	  Support for reset controller on Qualcomm
	  IPQ40xx SoCs.

config RESET_SIFIVE
	bool "Reset Driver for SiFive SoC's"
	depends on DM_RESET && CLK_SIFIVE_PRCI && (TARGET_SIFIVE_UNLEASHED || TARGET_SIFIVE_UNMATCHED)
	default y
	help
	  PRCI module within SiFive SoC's provides mechanism to reset
	  different hw blocks like DDR, gemgxl. With this driver we leverage
	  U-Boot's reset framework to reset these hardware blocks.

config RESET_SYSCON
	bool "Enable generic syscon reset driver support"
	depends on DM_RESET
	help
	  Support generic syscon mapped register reset devices.

config RESET_RASPBERRYPI
	bool "Raspberry Pi 4 Firmware Reset Controller Driver"
	depends on DM_RESET && ARCH_BCM283X
	default USB_XHCI_PCI
	help
	  Raspberry Pi 4's co-processor controls some of the board's HW
	  initialization process, but it's up to Linux to trigger it when
	  relevant. This driver provides a reset controller capable of
	  interfacing with RPi4's co-processor and model these firmware
	  initialization routines as reset lines.

config RESET_SCMI
	bool "Enable SCMI reset domain driver"
	select SCMI_FIRMWARE
	help
	  Enable this option if you want to support reset controller
	  devices exposed by a SCMI agent based on SCMI reset domain
	  protocol communication with a SCMI server.
endmenu
