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