pinctrl: cix: Add pin-controller support for sky1

There are two pin-controllers on Cix Sky1 platform.
one is used under S0 state, the other is used under S0 and S5 state.

Signed-off-by: Gary Yang <gary.yang@cixtech.com>
[Dropped pinctrl_provide_dummies()]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
Gary Yang
2025-10-28 10:42:47 +01:00
committed by Linus Walleij
parent 329b71cd1e
commit 920500c5fe
7 changed files with 1199 additions and 0 deletions
+1
View File
@@ -702,6 +702,7 @@ source "drivers/pinctrl/aspeed/Kconfig"
source "drivers/pinctrl/bcm/Kconfig"
source "drivers/pinctrl/berlin/Kconfig"
source "drivers/pinctrl/cirrus/Kconfig"
source "drivers/pinctrl/cix/Kconfig"
source "drivers/pinctrl/freescale/Kconfig"
source "drivers/pinctrl/intel/Kconfig"
source "drivers/pinctrl/mediatek/Kconfig"
+1
View File
@@ -71,6 +71,7 @@ obj-$(CONFIG_ARCH_ASPEED) += aspeed/
obj-y += bcm/
obj-$(CONFIG_PINCTRL_BERLIN) += berlin/
obj-y += cirrus/
obj-y += cix/
obj-y += freescale/
obj-$(CONFIG_X86) += intel/
obj-y += mediatek/
+14
View File
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: GPL-2.0-only
config PINCTRL_SKY1_BASE
tristate
select GENERIC_PINCTRL_GROUPS
select GENERIC_PINMUX_FUNCTIONS
select GENERIC_PINCONF
select REGMAP
config PINCTRL_SKY1
tristate "Cix Sky1 pinctrl driver"
depends on ARCH_CIX || COMPILE_TEST
select PINCTRL_SKY1_BASE
help
Say Y here to enable the sky1 pinctrl driver
+4
View File
@@ -0,0 +1,4 @@
# SPDX-License-Identifier: GPL-2.0
# Cix Sky1 pin control drivers
obj-$(CONFIG_PINCTRL_SKY1_BASE) += pinctrl-sky1-base.o
obj-$(CONFIG_PINCTRL_SKY1) += pinctrl-sky1.o
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+48
View File
@@ -0,0 +1,48 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Author: Jerry Zhu <Jerry.Zhu@cixtech.com>
*/
#ifndef __DRIVERS_PINCTRL_SKY1_H
#define __DRIVERS_PINCTRL_SKY1_H
struct sky1_pinctrl_group {
const char *name;
unsigned long config;
unsigned int pin;
};
struct sky1_pin_desc {
const struct pinctrl_pin_desc pin;
const char * const *func_group;
unsigned int nfunc;
};
struct sky1_pinctrl_soc_info {
const struct sky1_pin_desc *pins;
unsigned int npins;
};
#define SKY_PINFUNCTION(_pin, _func) \
((struct sky1_pin_desc) { \
.pin = _pin, \
.func_group = _func##_group, \
.nfunc = ARRAY_SIZE(_func##_group), \
})
/**
* @dev: a pointer back to containing device
* @base: the offset to the controller in virtual memory
*/
struct sky1_pinctrl {
struct device *dev;
struct pinctrl_dev *pctl;
void __iomem *base;
const struct sky1_pinctrl_soc_info *info;
struct sky1_pinctrl_group *groups;
const char **grp_names;
};
int sky1_base_pinctrl_probe(struct platform_device *pdev,
const struct sky1_pinctrl_soc_info *info);
#endif /* __DRIVERS_PINCTRL_SKY1_H */