18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci#
38c2ecf20Sopenharmony_ci# Broadcom pinctrl drivers
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ciconfig PINCTRL_BCM281XX
78c2ecf20Sopenharmony_ci	bool "Broadcom BCM281xx pinctrl driver"
88c2ecf20Sopenharmony_ci	depends on OF && (ARCH_BCM_MOBILE || COMPILE_TEST)
98c2ecf20Sopenharmony_ci	select PINMUX
108c2ecf20Sopenharmony_ci	select PINCONF
118c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
128c2ecf20Sopenharmony_ci	select REGMAP_MMIO
138c2ecf20Sopenharmony_ci	default ARCH_BCM_MOBILE
148c2ecf20Sopenharmony_ci	help
158c2ecf20Sopenharmony_ci	  Say Y here to support Broadcom BCM281xx pinctrl driver, which is used
168c2ecf20Sopenharmony_ci	  for the BCM281xx SoC family, including BCM11130, BCM11140, BCM11351,
178c2ecf20Sopenharmony_ci	  BCM28145, and BCM28155 SoCs.  This driver requires the pinctrl
188c2ecf20Sopenharmony_ci	  framework.  GPIO is provided by a separate GPIO driver.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciconfig PINCTRL_BCM2835
218c2ecf20Sopenharmony_ci	bool "Broadcom BCM2835 GPIO (with PINCONF) driver"
228c2ecf20Sopenharmony_ci	depends on OF && (ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST)
238c2ecf20Sopenharmony_ci	select PINMUX
248c2ecf20Sopenharmony_ci	select PINCONF
258c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
268c2ecf20Sopenharmony_ci	select GPIOLIB
278c2ecf20Sopenharmony_ci	select GPIOLIB_IRQCHIP
288c2ecf20Sopenharmony_ci	default ARCH_BCM2835 || ARCH_BRCMSTB
298c2ecf20Sopenharmony_ci	help
308c2ecf20Sopenharmony_ci	   Say Y here to enable the Broadcom BCM2835 GPIO driver.
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ciconfig PINCTRL_IPROC_GPIO
338c2ecf20Sopenharmony_ci	bool "Broadcom iProc GPIO (with PINCONF) driver"
348c2ecf20Sopenharmony_ci	depends on OF_GPIO && (ARCH_BCM_IPROC || COMPILE_TEST)
358c2ecf20Sopenharmony_ci	select GPIOLIB_IRQCHIP
368c2ecf20Sopenharmony_ci	select PINCONF
378c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
388c2ecf20Sopenharmony_ci	default ARCH_BCM_IPROC
398c2ecf20Sopenharmony_ci	help
408c2ecf20Sopenharmony_ci	  Say yes here to enable the Broadcom iProc GPIO driver.
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci	  The Broadcom iProc based SoCs- Cygnus, NS2, NSP and Stingray, use
438c2ecf20Sopenharmony_ci	  same GPIO Controller IP hence this driver could be used for all.
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci	  The Broadcom Cygnus SoC has 3 GPIO controllers including the ASIU
468c2ecf20Sopenharmony_ci	  GPIO controller (ASIU), the chipCommonG GPIO controller (CCM), and
478c2ecf20Sopenharmony_ci	  the always-ON GPIO controller (CRMU/AON). All 3 GPIO controllers are
488c2ecf20Sopenharmony_ci	  supported by this driver.
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci	  The Broadcom NSP has two GPIO controllers including the ChipcommonA
518c2ecf20Sopenharmony_ci	  GPIO, the ChipcommonB GPIO. Later controller is supported by this
528c2ecf20Sopenharmony_ci	  driver.
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	  The Broadcom NS2 has two GPIO controller including the CRMU GPIO,
558c2ecf20Sopenharmony_ci	  the ChipcommonG GPIO. Both controllers are supported by this driver.
568c2ecf20Sopenharmony_ci
578c2ecf20Sopenharmony_ci	  The Broadcom Stingray GPIO controllers are supported by this driver.
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci	  All above SoCs GPIO controllers support basic PINCONF functions such
608c2ecf20Sopenharmony_ci	  as bias pull up, pull down, and drive strength configurations, when
618c2ecf20Sopenharmony_ci	  these pins are muxed to GPIO.
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci	  It provides the framework where pins from the individual GPIO can be
648c2ecf20Sopenharmony_ci	  individually muxed to GPIO function, through interaction with the
658c2ecf20Sopenharmony_ci	  SoCs IOMUX controller. This features could be used only on SoCs which
668c2ecf20Sopenharmony_ci	  support individual pin muxing.
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ciconfig PINCTRL_CYGNUS_MUX
698c2ecf20Sopenharmony_ci	bool "Broadcom Cygnus IOMUX driver"
708c2ecf20Sopenharmony_ci	depends on (ARCH_BCM_CYGNUS || COMPILE_TEST)
718c2ecf20Sopenharmony_ci	depends on OF
728c2ecf20Sopenharmony_ci	select PINMUX
738c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
748c2ecf20Sopenharmony_ci	default ARCH_BCM_CYGNUS
758c2ecf20Sopenharmony_ci	help
768c2ecf20Sopenharmony_ci	  Say yes here to enable the Broadcom Cygnus IOMUX driver.
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci	  The Broadcom Cygnus IOMUX driver supports group based IOMUX
798c2ecf20Sopenharmony_ci	  configuration, with the exception that certain individual pins
808c2ecf20Sopenharmony_ci	  can be overridden to GPIO function
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ciconfig PINCTRL_NS
838c2ecf20Sopenharmony_ci	bool "Broadcom Northstar pins driver"
848c2ecf20Sopenharmony_ci	depends on OF && (ARCH_BCM_5301X || COMPILE_TEST)
858c2ecf20Sopenharmony_ci	select PINMUX
868c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
878c2ecf20Sopenharmony_ci	default ARCH_BCM_5301X
888c2ecf20Sopenharmony_ci	help
898c2ecf20Sopenharmony_ci	  Say yes here to enable the Broadcom NS SoC pins driver.
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci	  The Broadcom Northstar pins driver supports muxing multi-purpose pins
928c2ecf20Sopenharmony_ci	  that can be used for various functions (e.g. SPI, I2C, UART) as well
938c2ecf20Sopenharmony_ci	  as GPIOs.
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ciconfig PINCTRL_NSP_GPIO
968c2ecf20Sopenharmony_ci	bool "Broadcom NSP GPIO (with PINCONF) driver"
978c2ecf20Sopenharmony_ci	depends on OF_GPIO && (ARCH_BCM_NSP || COMPILE_TEST)
988c2ecf20Sopenharmony_ci	select GPIOLIB_IRQCHIP
998c2ecf20Sopenharmony_ci	select PINCONF
1008c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
1018c2ecf20Sopenharmony_ci	default ARCH_BCM_NSP
1028c2ecf20Sopenharmony_ci	help
1038c2ecf20Sopenharmony_ci	  Say yes here to enable the Broadcom NSP GPIO driver.
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci	  The Broadcom Northstar Plus SoC ChipcommonA GPIO controller is
1068c2ecf20Sopenharmony_ci	  supported by this driver.
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci	  The ChipcommonA GPIO controller support basic PINCONF functions such
1098c2ecf20Sopenharmony_ci	  as bias pull up, pull down, and drive strength configurations, when
1108c2ecf20Sopenharmony_ci	  these pins are muxed to GPIO.
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ciconfig PINCTRL_NS2_MUX
1138c2ecf20Sopenharmony_ci	bool "Broadcom Northstar2 pinmux driver"
1148c2ecf20Sopenharmony_ci	depends on OF
1158c2ecf20Sopenharmony_ci	depends on ARCH_BCM_IPROC || COMPILE_TEST
1168c2ecf20Sopenharmony_ci	select PINMUX
1178c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
1188c2ecf20Sopenharmony_ci	default ARM64 && ARCH_BCM_IPROC
1198c2ecf20Sopenharmony_ci	help
1208c2ecf20Sopenharmony_ci	  Say yes here to enable the Broadcom NS2 MUX driver.
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ci	  The Broadcom Northstar2 IOMUX driver supports group based IOMUX
1238c2ecf20Sopenharmony_ci	  configuration.
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ciconfig PINCTRL_NSP_MUX
1268c2ecf20Sopenharmony_ci	bool "Broadcom NSP IOMUX driver"
1278c2ecf20Sopenharmony_ci	depends on (ARCH_BCM_NSP || COMPILE_TEST)
1288c2ecf20Sopenharmony_ci	depends on OF
1298c2ecf20Sopenharmony_ci	select PINMUX
1308c2ecf20Sopenharmony_ci	select GENERIC_PINCONF
1318c2ecf20Sopenharmony_ci	default ARCH_BCM_NSP
1328c2ecf20Sopenharmony_ci	help
1338c2ecf20Sopenharmony_ci	  Say yes here to enable the Broadcom NSP SOC IOMUX driver.
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci	  The Broadcom Northstar Plus IOMUX driver supports pin based IOMUX
1368c2ecf20Sopenharmony_ci	  configuration, with certain individual pins can be overridden
1378c2ecf20Sopenharmony_ci	  to GPIO function.
138