cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pinctrl-pxa2xx.h (1874B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Marvell PXA2xx family pin control
      4 *
      5 * Copyright (C) 2015 Robert Jarzmik
      6 */
      7
      8#ifndef __PINCTRL_PXA_H
      9#define __PINCTRL_PXA_H
     10
     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_group {
     56	const char	*name;
     57	unsigned	pin;
     58};
     59
     60struct pxa_pinctrl_function {
     61	const char	*name;
     62	const char	**groups;
     63	unsigned	ngroups;
     64};
     65
     66struct pxa_pinctrl {
     67	spinlock_t			lock;
     68	void __iomem			**base_gafr;
     69	void __iomem			**base_gpdr;
     70	void __iomem			**base_pgsr;
     71	struct device			*dev;
     72	struct pinctrl_desc		desc;
     73	struct pinctrl_dev		*pctl_dev;
     74	unsigned			npins;
     75	const struct pxa_desc_pin	*ppins;
     76	unsigned			ngroups;
     77	struct pxa_pinctrl_group	*groups;
     78	unsigned			nfuncs;
     79	struct pxa_pinctrl_function	*functions;
     80	char				*name;
     81};
     82
     83int pxa2xx_pinctrl_init(struct platform_device *pdev,
     84			const struct pxa_desc_pin *ppins, int npins,
     85			void __iomem *base_gafr[], void __iomem *base_gpdr[],
     86			void __iomem *base_gpsr[]);
     87
     88#endif /* __PINCTRL_PXA_H */