1*920500c5SGary Yang /* SPDX-License-Identifier: GPL-2.0+ */ 2*920500c5SGary Yang /* 3*920500c5SGary Yang * Author: Jerry Zhu <Jerry.Zhu@cixtech.com> 4*920500c5SGary Yang */ 5*920500c5SGary Yang 6*920500c5SGary Yang #ifndef __DRIVERS_PINCTRL_SKY1_H 7*920500c5SGary Yang #define __DRIVERS_PINCTRL_SKY1_H 8*920500c5SGary Yang 9*920500c5SGary Yang struct sky1_pinctrl_group { 10*920500c5SGary Yang const char *name; 11*920500c5SGary Yang unsigned long config; 12*920500c5SGary Yang unsigned int pin; 13*920500c5SGary Yang }; 14*920500c5SGary Yang 15*920500c5SGary Yang struct sky1_pin_desc { 16*920500c5SGary Yang const struct pinctrl_pin_desc pin; 17*920500c5SGary Yang const char * const *func_group; 18*920500c5SGary Yang unsigned int nfunc; 19*920500c5SGary Yang }; 20*920500c5SGary Yang 21*920500c5SGary Yang struct sky1_pinctrl_soc_info { 22*920500c5SGary Yang const struct sky1_pin_desc *pins; 23*920500c5SGary Yang unsigned int npins; 24*920500c5SGary Yang }; 25*920500c5SGary Yang 26*920500c5SGary Yang #define SKY_PINFUNCTION(_pin, _func) \ 27*920500c5SGary Yang ((struct sky1_pin_desc) { \ 28*920500c5SGary Yang .pin = _pin, \ 29*920500c5SGary Yang .func_group = _func##_group, \ 30*920500c5SGary Yang .nfunc = ARRAY_SIZE(_func##_group), \ 31*920500c5SGary Yang }) 32*920500c5SGary Yang /** 33*920500c5SGary Yang * @dev: a pointer back to containing device 34*920500c5SGary Yang * @base: the offset to the controller in virtual memory 35*920500c5SGary Yang */ 36*920500c5SGary Yang struct sky1_pinctrl { 37*920500c5SGary Yang struct device *dev; 38*920500c5SGary Yang struct pinctrl_dev *pctl; 39*920500c5SGary Yang void __iomem *base; 40*920500c5SGary Yang const struct sky1_pinctrl_soc_info *info; 41*920500c5SGary Yang struct sky1_pinctrl_group *groups; 42*920500c5SGary Yang const char **grp_names; 43*920500c5SGary Yang }; 44*920500c5SGary Yang 45*920500c5SGary Yang int sky1_base_pinctrl_probe(struct platform_device *pdev, 46*920500c5SGary Yang const struct sky1_pinctrl_soc_info *info); 47*920500c5SGary Yang 48*920500c5SGary Yang #endif /* __DRIVERS_PINCTRL_SKY1_H */ 49