# SPDX-License-Identifier: GPL-2.0-only
if ARCH_SUNXI

config PINCTRL_SUNXI
	bool
	select PINMUX
	select GENERIC_PINCONF
	select GPIOLIB

config PINCTRL_SUNIV_F1C100S
	def_bool MACH_SUNIV
	select PINCTRL_SUNXI

config PINCTRL_SUN4I_A10
	bool "Support for the Allwinner A10, A20 and R40 PIO"
	default MACH_SUN4I || MACH_SUN7I || MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN5I
	bool "Support for the Allwinner A10s, A13, R8 and NextThing GR8 PIO"
	default MACH_SUN5I
	select PINCTRL_SUNXI

config PINCTRL_SUN6I_A31
	bool "Support for the Allwinner A31 PIO"
	default MACH_SUN6I
	select PINCTRL_SUNXI

config PINCTRL_SUN6I_A31_R
	bool "Support for the Allwinner A31 R-PIO"
	default MACH_SUN6I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_A23
	bool "Support for the Allwinner A23 PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_A33
	bool "Support for the Allwinner A33 PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_A83T
	bool "Support for the Allwinner A83T PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_A83T_R
	bool "Support for the Allwinner A83T R-PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_A23_R
	bool "Support for the Allwinner A23 and A33 R-PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_H3
	bool "Support for the Allwinner H3 PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_H3_R
	bool "Support for the Allwinner H3 and H5 R-PIO"
	default MACH_SUN8I || (ARM64 && ARCH_SUNXI)
	select PINCTRL_SUNXI

config PINCTRL_SUN8I_V3S
	bool "Support for the Allwinner V3s PIO"
	default MACH_SUN8I
	select PINCTRL_SUNXI

config PINCTRL_SUN9I_A80
	bool "Support for the Allwinner A80 PIO"
	default MACH_SUN9I
	select PINCTRL_SUNXI

config PINCTRL_SUN9I_A80_R
	bool "Support for the Allwinner A80 R-PIO"
	default MACH_SUN9I
	select PINCTRL_SUNXI

config PINCTRL_SUN20I_D1
	bool "Support for the Allwinner D1 PIO"
	default MACH_SUN8I || (RISCV && ARCH_SUNXI)
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_A64
	bool "Support for the Allwinner A64 PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_A64_R
	bool "Support for the Allwinner A64 R-PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_A100
	bool "Support for the Allwinner A100 PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_A100_R
	bool "Support for the Allwinner A100 R-PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_H5
	bool "Support for the Allwinner H5 PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_H6
	bool "Support for the Allwinner H6 PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_H6_R
	bool "Support for the Allwinner H6 R-PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_H616
	bool "Support for the Allwinner H616 PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

config PINCTRL_SUN50I_H616_R
	bool "Support for the Allwinner H616 R-PIO"
	default ARM64 && ARCH_SUNXI
	select PINCTRL_SUNXI

endif
