123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /*
- * Marvell PXA2xx family pin control
- *
- * Copyright (C) 2015 Robert Jarzmik
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- */
- #ifndef __PINCTRL_PXA_H
- #define __PINCTRL_PXA_H
- #define PXA_FUNCTION(_dir, _af, _name) \
- { \
- .name = _name, \
- .muxval = (_dir | (_af << 1)), \
- }
- #define PXA_PIN(_pin, funcs...) \
- { \
- .pin = _pin, \
- .functions = (struct pxa_desc_function[]){ \
- funcs, { } }, \
- }
- #define PXA_GPIO_PIN(_pin, funcs...) \
- { \
- .pin = _pin, \
- .functions = (struct pxa_desc_function[]){ \
- PXA_FUNCTION(0, 0, "gpio_in"), \
- PXA_FUNCTION(1, 0, "gpio_out"), \
- funcs, { } }, \
- }
- #define PXA_GPIO_ONLY_PIN(_pin) \
- { \
- .pin = _pin, \
- .functions = (struct pxa_desc_function[]){ \
- PXA_FUNCTION(0, 0, "gpio_in"), \
- PXA_FUNCTION(1, 0, "gpio_out"), \
- { } }, \
- }
- #define PXA_PINCTRL_PIN(pin) \
- PINCTRL_PIN(pin, "P" #pin)
- struct pxa_desc_function {
- const char *name;
- u8 muxval;
- };
- struct pxa_desc_pin {
- struct pinctrl_pin_desc pin;
- struct pxa_desc_function *functions;
- };
- struct pxa_pinctrl_group {
- const char *name;
- unsigned pin;
- };
- struct pxa_pinctrl_function {
- const char *name;
- const char **groups;
- unsigned ngroups;
- };
- struct pxa_pinctrl {
- spinlock_t lock;
- void __iomem **base_gafr;
- void __iomem **base_gpdr;
- void __iomem **base_pgsr;
- struct device *dev;
- struct pinctrl_desc desc;
- struct pinctrl_dev *pctl_dev;
- unsigned npins;
- const struct pxa_desc_pin *ppins;
- unsigned ngroups;
- struct pxa_pinctrl_group *groups;
- unsigned nfuncs;
- struct pxa_pinctrl_function *functions;
- char *name;
- };
- int pxa2xx_pinctrl_init(struct platform_device *pdev,
- const struct pxa_desc_pin *ppins, int npins,
- void __iomem *base_gafr[], void __iomem *base_gpdr[],
- void __iomem *base_gpsr[]);
- #endif /* __PINCTRL_PXA_H */
|