162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# Broadcom pinctrl drivers
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciconfig PINCTRL_BCM281XX
762306a36Sopenharmony_ci	bool "Broadcom BCM281xx pinctrl driver"
862306a36Sopenharmony_ci	depends on OF && (ARCH_BCM_MOBILE || COMPILE_TEST)
962306a36Sopenharmony_ci	select PINMUX
1062306a36Sopenharmony_ci	select PINCONF
1162306a36Sopenharmony_ci	select GENERIC_PINCONF
1262306a36Sopenharmony_ci	select REGMAP_MMIO
1362306a36Sopenharmony_ci	default ARCH_BCM_MOBILE
1462306a36Sopenharmony_ci	help
1562306a36Sopenharmony_ci	  Say Y here to support Broadcom BCM281xx pinctrl driver, which is used
1662306a36Sopenharmony_ci	  for the BCM281xx SoC family, including BCM11130, BCM11140, BCM11351,
1762306a36Sopenharmony_ci	  BCM28145, and BCM28155 SoCs.  This driver requires the pinctrl
1862306a36Sopenharmony_ci	  framework.  GPIO is provided by a separate GPIO driver.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciconfig PINCTRL_BCM2835
2162306a36Sopenharmony_ci	tristate "Broadcom BCM2835 GPIO (with PINCONF) driver"
2262306a36Sopenharmony_ci	depends on OF && (ARCH_BCM2835 || ARCH_BRCMSTB || COMPILE_TEST)
2362306a36Sopenharmony_ci	select PINMUX
2462306a36Sopenharmony_ci	select PINCONF
2562306a36Sopenharmony_ci	select GENERIC_PINCONF
2662306a36Sopenharmony_ci	select GPIOLIB
2762306a36Sopenharmony_ci	select GPIOLIB_IRQCHIP
2862306a36Sopenharmony_ci	default ARCH_BCM2835 || ARCH_BRCMSTB
2962306a36Sopenharmony_ci	help
3062306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM2835 GPIO driver.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ciconfig PINCTRL_BCM4908
3362306a36Sopenharmony_ci	tristate "Broadcom BCM4908 pinmux driver"
3462306a36Sopenharmony_ci	depends on OF && (ARCH_BCMBCA || COMPILE_TEST)
3562306a36Sopenharmony_ci	select PINMUX
3662306a36Sopenharmony_ci	select PINCONF
3762306a36Sopenharmony_ci	select GENERIC_PINCONF
3862306a36Sopenharmony_ci	select GENERIC_PINCTRL_GROUPS
3962306a36Sopenharmony_ci	select GENERIC_PINMUX_FUNCTIONS
4062306a36Sopenharmony_ci	default ARCH_BCMBCA
4162306a36Sopenharmony_ci	help
4262306a36Sopenharmony_ci	  Driver for BCM4908 family SoCs with integrated pin controller.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	  If compiled as module it will be called pinctrl-bcm4908.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciconfig PINCTRL_BCM63XX
4762306a36Sopenharmony_ci	bool
4862306a36Sopenharmony_ci	select PINMUX
4962306a36Sopenharmony_ci	select PINCONF
5062306a36Sopenharmony_ci	select GENERIC_PINCONF
5162306a36Sopenharmony_ci	select GPIOLIB
5262306a36Sopenharmony_ci	select REGMAP
5362306a36Sopenharmony_ci	select GPIO_REGMAP
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciconfig PINCTRL_BCM6318
5662306a36Sopenharmony_ci	bool "Broadcom BCM6318 GPIO driver"
5762306a36Sopenharmony_ci	depends on (BMIPS_GENERIC || COMPILE_TEST)
5862306a36Sopenharmony_ci	depends on OF
5962306a36Sopenharmony_ci	select PINCTRL_BCM63XX
6062306a36Sopenharmony_ci	default BMIPS_GENERIC
6162306a36Sopenharmony_ci	help
6262306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM6318 GPIO driver.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig PINCTRL_BCM6328
6562306a36Sopenharmony_ci	bool "Broadcom BCM6328 GPIO driver"
6662306a36Sopenharmony_ci	depends on (BMIPS_GENERIC || COMPILE_TEST)
6762306a36Sopenharmony_ci	depends on OF
6862306a36Sopenharmony_ci	select PINCTRL_BCM63XX
6962306a36Sopenharmony_ci	default BMIPS_GENERIC
7062306a36Sopenharmony_ci	help
7162306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM6328 GPIO driver.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciconfig PINCTRL_BCM6358
7462306a36Sopenharmony_ci	bool "Broadcom BCM6358 GPIO driver"
7562306a36Sopenharmony_ci	depends on (BMIPS_GENERIC || COMPILE_TEST)
7662306a36Sopenharmony_ci	depends on OF
7762306a36Sopenharmony_ci	select PINCTRL_BCM63XX
7862306a36Sopenharmony_ci	default BMIPS_GENERIC
7962306a36Sopenharmony_ci	help
8062306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM6358 GPIO driver.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ciconfig PINCTRL_BCM6362
8362306a36Sopenharmony_ci	bool "Broadcom BCM6362 GPIO driver"
8462306a36Sopenharmony_ci	depends on (BMIPS_GENERIC || COMPILE_TEST)
8562306a36Sopenharmony_ci	depends on OF
8662306a36Sopenharmony_ci	select PINCTRL_BCM63XX
8762306a36Sopenharmony_ci	default BMIPS_GENERIC
8862306a36Sopenharmony_ci	help
8962306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM6362 GPIO driver.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciconfig PINCTRL_BCM6368
9262306a36Sopenharmony_ci	bool "Broadcom BCM6368 GPIO driver"
9362306a36Sopenharmony_ci	depends on (BMIPS_GENERIC || COMPILE_TEST)
9462306a36Sopenharmony_ci	depends on OF
9562306a36Sopenharmony_ci	select PINCTRL_BCM63XX
9662306a36Sopenharmony_ci	default BMIPS_GENERIC
9762306a36Sopenharmony_ci	help
9862306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM6368 GPIO driver.
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ciconfig PINCTRL_BCM63268
10162306a36Sopenharmony_ci	bool "Broadcom BCM63268 GPIO driver"
10262306a36Sopenharmony_ci	depends on (BMIPS_GENERIC || COMPILE_TEST)
10362306a36Sopenharmony_ci	depends on OF
10462306a36Sopenharmony_ci	select PINCTRL_BCM63XX
10562306a36Sopenharmony_ci	default BMIPS_GENERIC
10662306a36Sopenharmony_ci	help
10762306a36Sopenharmony_ci	   Say Y here to enable the Broadcom BCM63268 GPIO driver.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciconfig PINCTRL_IPROC_GPIO
11062306a36Sopenharmony_ci	bool "Broadcom iProc GPIO (with PINCONF) driver"
11162306a36Sopenharmony_ci	depends on OF_GPIO && (ARCH_BCM_IPROC || COMPILE_TEST)
11262306a36Sopenharmony_ci	select GPIOLIB_IRQCHIP
11362306a36Sopenharmony_ci	select PINCONF
11462306a36Sopenharmony_ci	select GENERIC_PINCONF
11562306a36Sopenharmony_ci	default ARCH_BCM_IPROC
11662306a36Sopenharmony_ci	help
11762306a36Sopenharmony_ci	  Say yes here to enable the Broadcom iProc GPIO driver.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	  The Broadcom iProc based SoCs- Cygnus, NS2, NSP and Stingray, use
12062306a36Sopenharmony_ci	  same GPIO Controller IP hence this driver could be used for all.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	  The Broadcom Cygnus SoC has 3 GPIO controllers including the ASIU
12362306a36Sopenharmony_ci	  GPIO controller (ASIU), the chipCommonG GPIO controller (CCM), and
12462306a36Sopenharmony_ci	  the always-ON GPIO controller (CRMU/AON). All 3 GPIO controllers are
12562306a36Sopenharmony_ci	  supported by this driver.
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci	  The Broadcom NSP has two GPIO controllers including the ChipcommonA
12862306a36Sopenharmony_ci	  GPIO, the ChipcommonB GPIO. Later controller is supported by this
12962306a36Sopenharmony_ci	  driver.
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	  The Broadcom NS2 has two GPIO controller including the CRMU GPIO,
13262306a36Sopenharmony_ci	  the ChipcommonG GPIO. Both controllers are supported by this driver.
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci	  The Broadcom Stingray GPIO controllers are supported by this driver.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	  All above SoCs GPIO controllers support basic PINCONF functions such
13762306a36Sopenharmony_ci	  as bias pull up, pull down, and drive strength configurations, when
13862306a36Sopenharmony_ci	  these pins are muxed to GPIO.
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci	  It provides the framework where pins from the individual GPIO can be
14162306a36Sopenharmony_ci	  individually muxed to GPIO function, through interaction with the
14262306a36Sopenharmony_ci	  SoCs IOMUX controller. This features could be used only on SoCs which
14362306a36Sopenharmony_ci	  support individual pin muxing.
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ciconfig PINCTRL_CYGNUS_MUX
14662306a36Sopenharmony_ci	bool "Broadcom Cygnus IOMUX driver"
14762306a36Sopenharmony_ci	depends on (ARCH_BCM_CYGNUS || COMPILE_TEST)
14862306a36Sopenharmony_ci	depends on OF
14962306a36Sopenharmony_ci	select PINMUX
15062306a36Sopenharmony_ci	select GENERIC_PINCONF
15162306a36Sopenharmony_ci	default ARCH_BCM_CYGNUS
15262306a36Sopenharmony_ci	help
15362306a36Sopenharmony_ci	  Say yes here to enable the Broadcom Cygnus IOMUX driver.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci	  The Broadcom Cygnus IOMUX driver supports group based IOMUX
15662306a36Sopenharmony_ci	  configuration, with the exception that certain individual pins
15762306a36Sopenharmony_ci	  can be overridden to GPIO function
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ciconfig PINCTRL_NS
16062306a36Sopenharmony_ci	bool "Broadcom Northstar pins driver"
16162306a36Sopenharmony_ci	depends on OF && (ARCH_BCM_5301X || COMPILE_TEST)
16262306a36Sopenharmony_ci	select PINMUX
16362306a36Sopenharmony_ci	select GENERIC_PINCONF
16462306a36Sopenharmony_ci	select GENERIC_PINCTRL_GROUPS
16562306a36Sopenharmony_ci	select GENERIC_PINMUX_FUNCTIONS
16662306a36Sopenharmony_ci	default ARCH_BCM_5301X
16762306a36Sopenharmony_ci	help
16862306a36Sopenharmony_ci	  Say yes here to enable the Broadcom NS SoC pins driver.
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	  The Broadcom Northstar pins driver supports muxing multi-purpose pins
17162306a36Sopenharmony_ci	  that can be used for various functions (e.g. SPI, I2C, UART) as well
17262306a36Sopenharmony_ci	  as GPIOs.
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ciconfig PINCTRL_NSP_GPIO
17562306a36Sopenharmony_ci	bool "Broadcom NSP GPIO (with PINCONF) driver"
17662306a36Sopenharmony_ci	depends on OF_GPIO && (ARCH_BCM_NSP || COMPILE_TEST)
17762306a36Sopenharmony_ci	select GPIOLIB_IRQCHIP
17862306a36Sopenharmony_ci	select PINCONF
17962306a36Sopenharmony_ci	select GENERIC_PINCONF
18062306a36Sopenharmony_ci	default ARCH_BCM_NSP
18162306a36Sopenharmony_ci	help
18262306a36Sopenharmony_ci	  Say yes here to enable the Broadcom NSP GPIO driver.
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci	  The Broadcom Northstar Plus SoC ChipcommonA GPIO controller is
18562306a36Sopenharmony_ci	  supported by this driver.
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci	  The ChipcommonA GPIO controller support basic PINCONF functions such
18862306a36Sopenharmony_ci	  as bias pull up, pull down, and drive strength configurations, when
18962306a36Sopenharmony_ci	  these pins are muxed to GPIO.
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ciconfig PINCTRL_NS2_MUX
19262306a36Sopenharmony_ci	bool "Broadcom Northstar2 pinmux driver"
19362306a36Sopenharmony_ci	depends on OF
19462306a36Sopenharmony_ci	depends on ARCH_BCM_IPROC || COMPILE_TEST
19562306a36Sopenharmony_ci	select PINMUX
19662306a36Sopenharmony_ci	select GENERIC_PINCONF
19762306a36Sopenharmony_ci	default ARM64 && ARCH_BCM_IPROC
19862306a36Sopenharmony_ci	help
19962306a36Sopenharmony_ci	  Say yes here to enable the Broadcom NS2 MUX driver.
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci	  The Broadcom Northstar2 IOMUX driver supports group based IOMUX
20262306a36Sopenharmony_ci	  configuration.
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ciconfig PINCTRL_NSP_MUX
20562306a36Sopenharmony_ci	bool "Broadcom NSP IOMUX driver"
20662306a36Sopenharmony_ci	depends on (ARCH_BCM_NSP || COMPILE_TEST)
20762306a36Sopenharmony_ci	depends on OF
20862306a36Sopenharmony_ci	select PINMUX
20962306a36Sopenharmony_ci	select GENERIC_PINCONF
21062306a36Sopenharmony_ci	default ARCH_BCM_NSP
21162306a36Sopenharmony_ci	help
21262306a36Sopenharmony_ci	  Say yes here to enable the Broadcom NSP SOC IOMUX driver.
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci	  The Broadcom Northstar Plus IOMUX driver supports pin based IOMUX
21562306a36Sopenharmony_ci	  configuration, with certain individual pins can be overridden
21662306a36Sopenharmony_ci	  to GPIO function.
217