blob: 7bb3ee25b974c2c5618ee4f1ba7530e8c1a68c4a [file] [log] [blame]
Ying-Chun Liu (PaulLiu)4fb84fb2018-12-21 03:32:10 +08001/*
2 * Copyright (c) 2019, Linaro Limited
3 * Copyright (c) 2019, Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef RPI3_GPIO_H
9#define RPI3_GPIO_H
10
11#include <stdint.h>
12#include <drivers/gpio.h>
13
Andre Przywara203e7c42020-03-11 16:10:40 +000014void rpi3_gpio_init(void);
Ying-Chun Liu (PaulLiu)4fb84fb2018-12-21 03:32:10 +080015int rpi3_gpio_get_select(int gpio);
16void rpi3_gpio_set_select(int gpio, int fsel);
17
18#define RPI3_GPIO_GPFSEL(n) ((n) * U(0x04))
19#define RPI3_GPIO_GPSET(n) (((n) * U(0x04)) + U(0x1C))
20#define RPI3_GPIO_GPCLR(n) (((n) * U(0x04)) + U(0x28))
21#define RPI3_GPIO_GPLEV(n) (((n) * U(0x04)) + U(0x34))
22#define RPI3_GPIO_GPPUD U(0x94)
23#define RPI3_GPIO_GPPUDCLK(n) (((n) * U(0x04)) + U(0x98))
24
25#define RPI3_GPIO_FUNC_INPUT U(0)
26#define RPI3_GPIO_FUNC_OUTPUT U(1)
27#define RPI3_GPIO_FUNC_ALT0 U(4)
28#define RPI3_GPIO_FUNC_ALT1 U(5)
29#define RPI3_GPIO_FUNC_ALT2 U(6)
30#define RPI3_GPIO_FUNC_ALT3 U(7)
31#define RPI3_GPIO_FUNC_ALT4 U(3)
32#define RPI3_GPIO_FUNC_ALT5 U(2)
33
34#endif /* RPI3_GPIO_H */