# SPDX-License-Identifier: (GPL-2.0+ OR MIT)

config PINCTRL_MSCC
	bool

config PINCTRL_MSCC_OCELOT
	depends on SOC_OCELOT && PINCTRL_FULL && OF_CONTROL
	select PINCTRL_MSCC
	default y
	bool "Microsemi ocelot family pin control driver"
	help
	   Support pin multiplexing and pin configuration control on
	   Microsemi ocelot SoCs.

config PINCTRL_MSCC_LUTON
	depends on SOC_LUTON && PINCTRL_FULL && OF_CONTROL
	select PINCTRL_MSCC
	default y
	bool "Microsemi luton family pin control driver"
	help
	   Support pin multiplexing and pin configuration control on
	   Microsemi luton SoCs.

config PINCTRL_MSCC_JR2
	depends on SOC_JR2 && PINCTRL_FULL && OF_CONTROL
	select PINCTRL_MSCC
	default y
	bool "Microsemi jr2 family pin control driver"
	help
	    Support pin multiplexing and pin configuration control on
	    Microsemi jr2 SoCs.

config PINCTRL_MSCC_SERVALT
	depends on SOC_SERVALT && PINCTRL_FULL && OF_CONTROL
	select PINCTRL_MSCC
	default y
	bool "Microsemi servalt family pin control driver"
	help
	    Support pin multiplexing and pin configuration control on
	    Microsemi servalt SoCs.

config PINCTRL_MSCC_SERVAL
	depends on SOC_SERVAL && PINCTRL_FULL && OF_CONTROL
	select PINCTRL_MSCC
	default y
	bool "Microsemi serval family pin control driver"
	help
	    Support pin multiplexing and pin configuration control on
	    Microsemi serval SoCs.

