# SPDX-License-Identifier: GPL-2.0-only
if (ARCH_QCOM || COMPILE_TEST)

config PINCTRL_MSM
	bool
	select PINMUX
	select PINCONF
	select GENERIC_PINCONF
	select GPIOLIB_IRQCHIP

config PINCTRL_APQ8064
	tristate "Qualcomm APQ8064 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm APQ8064 platform.

config PINCTRL_APQ8084
	tristate "Qualcomm APQ8084 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm APQ8084 platform.

config PINCTRL_IPQ4019
	tristate "Qualcomm IPQ4019 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm IPQ4019 platform.

config PINCTRL_IPQ8064
	tristate "Qualcomm IPQ8064 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm IPQ8064 platform.

config PINCTRL_IPQ8074
	tristate "Qualcomm Technologies, Inc. IPQ8074 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for
	  the Qualcomm Technologies Inc. TLMM block found on the
	  Qualcomm Technologies Inc. IPQ8074 platform. Select this for
	  IPQ8074.

config PINCTRL_MSM8660
	tristate "Qualcomm 8660 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm 8660 platform.

config PINCTRL_MSM8960
	tristate "Qualcomm 8960 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm 8960 platform.

config PINCTRL_MDM9615
	tristate "Qualcomm 9615 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm 9615 platform.

config PINCTRL_MSM8X74
	tristate "Qualcomm 8x74 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm 8974 platform.

config PINCTRL_MSM8916
	tristate "Qualcomm 8916 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found on the Qualcomm 8916 platform.

config PINCTRL_MSM8994
	tristate "Qualcomm 8994 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm 8994 platform. The
	  Qualcomm 8992 platform is also supported by this driver.

config PINCTRL_MSM8996
	tristate "Qualcomm MSM8996 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm MSM8996 platform.

config PINCTRL_MSM8998
	tristate "Qualcomm MSM8998 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm TLMM block found in the Qualcomm MSM8998 platform.

config PINCTRL_QCS404
	tristate "Qualcomm QCS404 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  TLMM block found in the Qualcomm QCS404 platform.

config PINCTRL_QDF2XXX
	tristate "Qualcomm Technologies QDF2xxx pin controller driver"
	depends on GPIOLIB && ACPI
	select PINCTRL_MSM
	help
	  This is the GPIO driver for the TLMM block found on the
	  Qualcomm Technologies QDF2xxx SOCs.

config PINCTRL_QCOM_SPMI_PMIC
       tristate "Qualcomm SPMI PMIC pin controller driver"
       depends on GPIOLIB && OF && SPMI
       select REGMAP_SPMI
       select PINMUX
       select PINCONF
       select GENERIC_PINCONF
       select GPIOLIB_IRQCHIP
       select IRQ_DOMAIN_HIERARCHY
       help
         This is the pinctrl, pinmux, pinconf and gpiolib driver for the
         Qualcomm GPIO and MPP blocks found in the Qualcomm PMIC's chips,
         which are using SPMI for communication with SoC. Example PMIC's
         devices are pm8841, pm8941 and pma8084.

config PINCTRL_QCOM_SSBI_PMIC
       tristate "Qualcomm SSBI PMIC pin controller driver"
       depends on GPIOLIB && OF
       select PINMUX
       select PINCONF
       select GENERIC_PINCONF
       select IRQ_DOMAIN_HIERARCHY
       help
         This is the pinctrl, pinmux, pinconf and gpiolib driver for the
         Qualcomm GPIO and MPP blocks found in the Qualcomm PMIC's chips,
         which are using SSBI for communication with SoC. Example PMIC's
         devices are pm8058 and pm8921.

config PINCTRL_SC7180
	tristate "Qualcomm Technologies Inc SC7180 pin controller driver"
	depends on GPIOLIB && OF
	select PINCTRL_MSM
	help
	  This is the pinctrl, pinmux, pinconf and gpiolib driver for the
	  Qualcomm Technologies Inc TLMM block found on the Qualcomm
	  Technologies Inc SC7180 platform.

config PINCTRL_SDM660
       tristate "Qualcomm Technologies Inc SDM660 pin controller driver"
       depends on GPIOLIB && OF
       select PINCTRL_MSM
       help
         This is the pinctrl, pinmux, pinconf and gpiolib driver for the
         Qualcomm Technologies Inc TLMM block found on the Qualcomm
         Technologies Inc SDM660 platform.

config PINCTRL_SDM845
       tristate "Qualcomm Technologies Inc SDM845 pin controller driver"
       depends on GPIOLIB && (OF || ACPI)
       select PINCTRL_MSM
       help
         This is the pinctrl, pinmux, pinconf and gpiolib driver for the
         Qualcomm Technologies Inc TLMM block found on the Qualcomm
         Technologies Inc SDM845 platform.

config PINCTRL_SM8150
       tristate "Qualcomm Technologies Inc SM8150 pin controller driver"
       depends on GPIOLIB && OF
       select PINCTRL_MSM
       help
         This is the pinctrl, pinmux, pinconf and gpiolib driver for the
         Qualcomm Technologies Inc TLMM block found on the Qualcomm
         Technologies Inc SM8150 platform.

endif
