xref: /rk3399_ARM-atf/include/drivers/rpi3/gpio/rpi3_gpio.h (revision d604ac483136d8d611264474a5e57c31632f46ca)
1*d604ac48SYing-Chun Liu (PaulLiu) /*
2*d604ac48SYing-Chun Liu (PaulLiu)  * Copyright (c) 2019, Linaro Limited
3*d604ac48SYing-Chun Liu (PaulLiu)  * Copyright (c) 2019, Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
4*d604ac48SYing-Chun Liu (PaulLiu)  *
5*d604ac48SYing-Chun Liu (PaulLiu)  * SPDX-License-Identifier: BSD-3-Clause
6*d604ac48SYing-Chun Liu (PaulLiu)  */
7*d604ac48SYing-Chun Liu (PaulLiu) 
8*d604ac48SYing-Chun Liu (PaulLiu) #ifndef RPI3_GPIO_H
9*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_H
10*d604ac48SYing-Chun Liu (PaulLiu) 
11*d604ac48SYing-Chun Liu (PaulLiu) #include <stdint.h>
12*d604ac48SYing-Chun Liu (PaulLiu) #include <drivers/gpio.h>
13*d604ac48SYing-Chun Liu (PaulLiu) 
14*d604ac48SYing-Chun Liu (PaulLiu) struct rpi3_gpio_params {
15*d604ac48SYing-Chun Liu (PaulLiu) 	uintptr_t       reg_base;
16*d604ac48SYing-Chun Liu (PaulLiu) };
17*d604ac48SYing-Chun Liu (PaulLiu) 
18*d604ac48SYing-Chun Liu (PaulLiu) void rpi3_gpio_init(struct rpi3_gpio_params *params);
19*d604ac48SYing-Chun Liu (PaulLiu) int rpi3_gpio_get_select(int gpio);
20*d604ac48SYing-Chun Liu (PaulLiu) void rpi3_gpio_set_select(int gpio, int fsel);
21*d604ac48SYing-Chun Liu (PaulLiu) 
22*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_GPFSEL(n)	((n) * U(0x04))
23*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_GPSET(n)	(((n) * U(0x04)) + U(0x1C))
24*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_GPCLR(n)	(((n) * U(0x04)) + U(0x28))
25*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_GPLEV(n) 	(((n) * U(0x04)) + U(0x34))
26*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_GPPUD		U(0x94)
27*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_GPPUDCLK(n)	(((n) * U(0x04)) + U(0x98))
28*d604ac48SYing-Chun Liu (PaulLiu) 
29*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_INPUT	U(0)
30*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_OUTPUT	U(1)
31*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_ALT0	U(4)
32*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_ALT1	U(5)
33*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_ALT2	U(6)
34*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_ALT3	U(7)
35*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_ALT4	U(3)
36*d604ac48SYing-Chun Liu (PaulLiu) #define RPI3_GPIO_FUNC_ALT5	U(2)
37*d604ac48SYing-Chun Liu (PaulLiu) 
38*d604ac48SYing-Chun Liu (PaulLiu) #endif  /* RPI3_GPIO_H */
39