brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · b292b79 Raw
78 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Marvell PXA2xx family pin control4 *5 * Copyright (C) 2015 Robert Jarzmik6 */7 8#ifndef __PINCTRL_PXA_H9#define __PINCTRL_PXA_H10 11#define PXA_FUNCTION(_dir, _af, _name)				\12	{							\13		.name = _name,					\14		.muxval = (_dir | (_af << 1)),			\15	}16 17#define PXA_PIN(_pin, funcs...)					\18	{							\19		.pin = _pin,					\20		.functions = (struct pxa_desc_function[]){	\21			funcs, { } },				\22	}23 24#define PXA_GPIO_PIN(_pin, funcs...)				\25	{							\26		.pin = _pin,					\27		.functions = (struct pxa_desc_function[]){	\28			PXA_FUNCTION(0, 0, "gpio_in"),		\29			PXA_FUNCTION(1, 0, "gpio_out"),		\30			funcs, { } },				\31	}32 33#define PXA_GPIO_ONLY_PIN(_pin)					\34	{							\35		.pin = _pin,					\36		.functions = (struct pxa_desc_function[]){	\37			PXA_FUNCTION(0, 0, "gpio_in"),		\38			PXA_FUNCTION(1, 0, "gpio_out"),		\39			{ } },					\40	}41 42#define PXA_PINCTRL_PIN(pin)		\43	PINCTRL_PIN(pin, "P" #pin)44 45struct pxa_desc_function {46	const char	*name;47	u8		muxval;48};49 50struct pxa_desc_pin {51	struct pinctrl_pin_desc		pin;52	struct pxa_desc_function	*functions;53};54 55struct pxa_pinctrl {56	spinlock_t			lock;57	void __iomem			**base_gafr;58	void __iomem			**base_gpdr;59	void __iomem			**base_pgsr;60	struct device			*dev;61	struct pinctrl_desc		desc;62	struct pinctrl_dev		*pctl_dev;63	unsigned			npins;64	const struct pxa_desc_pin	*ppins;65	unsigned			ngroups;66	struct pingroup			*groups;67	unsigned			nfuncs;68	struct pinfunction		*functions;69	char				*name;70};71 72int pxa2xx_pinctrl_init(struct platform_device *pdev,73			const struct pxa_desc_pin *ppins, int npins,74			void __iomem *base_gafr[], void __iomem *base_gpdr[],75			void __iomem *base_gpsr[]);76 77#endif /* __PINCTRL_PXA_H */78