xref: /rk3399_rockchip-uboot/arch/arm/mach-kirkwood/include/mach/gpio.h (revision 1b48bbdd201e99148614d171974c59e29dda5755)
1*ea385723SMasahiro Yamada /*
2*ea385723SMasahiro Yamada  * arch/asm-arm/mach-kirkwood/include/mach/gpio.h
3*ea385723SMasahiro Yamada  *
4*ea385723SMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
5*ea385723SMasahiro Yamada  */
6*ea385723SMasahiro Yamada 
7*ea385723SMasahiro Yamada /*
8*ea385723SMasahiro Yamada  * Based on (mostly copied from) plat-orion based Linux 2.6 kernel driver.
9*ea385723SMasahiro Yamada  * Removed kernel level irq handling. Took some macros from kernel to
10*ea385723SMasahiro Yamada  * allow build.
11*ea385723SMasahiro Yamada  *
12*ea385723SMasahiro Yamada  * Dieter Kiermaier dk-arm-linux@gmx.de
13*ea385723SMasahiro Yamada  */
14*ea385723SMasahiro Yamada 
15*ea385723SMasahiro Yamada #ifndef __KIRKWOOD_GPIO_H
16*ea385723SMasahiro Yamada #define __KIRKWOOD_GPIO_H
17*ea385723SMasahiro Yamada 
18*ea385723SMasahiro Yamada #define GPIO_MAX		50
19*ea385723SMasahiro Yamada #define GPIO_OFF(pin)		(((pin) >> 5) ? 0x0040 : 0x0000)
20*ea385723SMasahiro Yamada #define GPIO_OUT(pin)		(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x00)
21*ea385723SMasahiro Yamada #define GPIO_IO_CONF(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x04)
22*ea385723SMasahiro Yamada #define GPIO_BLINK_EN(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x08)
23*ea385723SMasahiro Yamada #define GPIO_IN_POL(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x0c)
24*ea385723SMasahiro Yamada #define GPIO_DATA_IN(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x10)
25*ea385723SMasahiro Yamada #define GPIO_EDGE_CAUSE(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x14)
26*ea385723SMasahiro Yamada #define GPIO_EDGE_MASK(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x18)
27*ea385723SMasahiro Yamada #define GPIO_LEVEL_MASK(pin)	(MVEBU_GPIO0_BASE + GPIO_OFF(pin) + 0x1c)
28*ea385723SMasahiro Yamada 
29*ea385723SMasahiro Yamada /*
30*ea385723SMasahiro Yamada  * Kirkwood-specific GPIO API
31*ea385723SMasahiro Yamada  */
32*ea385723SMasahiro Yamada 
33*ea385723SMasahiro Yamada void kw_gpio_set_valid(unsigned pin, int mode);
34*ea385723SMasahiro Yamada int kw_gpio_is_valid(unsigned pin, int mode);
35*ea385723SMasahiro Yamada int kw_gpio_direction_input(unsigned pin);
36*ea385723SMasahiro Yamada int kw_gpio_direction_output(unsigned pin, int value);
37*ea385723SMasahiro Yamada int kw_gpio_get_value(unsigned pin);
38*ea385723SMasahiro Yamada void kw_gpio_set_value(unsigned pin, int value);
39*ea385723SMasahiro Yamada void kw_gpio_set_blink(unsigned pin, int blink);
40*ea385723SMasahiro Yamada void kw_gpio_set_unused(unsigned pin);
41*ea385723SMasahiro Yamada 
42*ea385723SMasahiro Yamada #define GPIO_INPUT_OK		(1 << 0)
43*ea385723SMasahiro Yamada #define GPIO_OUTPUT_OK		(1 << 1)
44*ea385723SMasahiro Yamada 
45*ea385723SMasahiro Yamada #endif
46