blob: 0877a6258c0b74abe703da30fde860ecd22bc7fe [file] [log] [blame]
Patrick Georgiac959032020-05-05 22:49:26 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Gabe Blackeee6a7f2013-09-24 01:36:08 -07002
Sam Lewisad7b2e22020-08-03 20:18:29 +10003#ifndef __SOC_TI_AM335X_GPIO_H__
4#define __SOC_TI_AM335X_GPIO_H__
Gabe Blackeee6a7f2013-09-24 01:36:08 -07005
6#include <stdint.h>
7
8enum {
9 AM335X_GPIO_BITS_PER_BANK = 32
10};
11
12struct am335x_gpio_regs {
13 uint32_t revision; // 0x0
14 uint8_t _rsv0[0xc]; // 0x4-0xf
15 uint32_t sysconfig; // 0x10
16 uint8_t _rsv1[0xc]; // 0x14-0x1f
17 uint32_t eoi; // 0x20
18 uint32_t irqstatus_raw_0; // 0x24
19 uint32_t irqstatus_raw_1; // 0x28
20 uint32_t irqstatus_0; // 0x2c
21 uint32_t irqstatus_1; // 0x30
22 uint32_t irqstatus_set_0; // 0x34
23 uint32_t irqstatus_set_1; // 0x38
24 uint32_t irqstatus_clr_0; // 0x3c
25 uint32_t irqstatus_clk_1; // 0x40
26 uint32_t irqwaken_0; // 0x44
27 uint32_t irqwaken_1; // 0x48
28 uint8_t _rsv2[0xc8]; // 0x4c-0x113
29 uint32_t sysstatus; // 0x114
30 uint8_t _rsv3[0x18]; // 0x118-0x12f
31 uint32_t ctrl; // 0x130
32 uint32_t oe; // 0x134
33 uint32_t datain; // 0x138
34 uint32_t dataout; // 0x13c
35 uint32_t leveldetect0; // 0x140
36 uint32_t leveldetect1; // 0x144
37 uint32_t risingdetect; // 0x148
38 uint32_t fallingdetect; // 0x14c
39 uint32_t debouncenable; // 0x150
40 uint32_t debouncingtime; // 0x154
41 uint8_t _rsv4[0x38]; // 0x158-0x18f
42 uint32_t cleardataout; // 0x190
43 uint32_t setdataout; // 0x194
Stefan Reinauer6a001132017-07-13 02:20:27 +020044} __packed;
Gabe Blackeee6a7f2013-09-24 01:36:08 -070045
46static struct am335x_gpio_regs * const am335x_gpio_banks[] = {
47 (void *)0x44e07000, (void *)0x4804c000,
48 (void *)0x481ac000, (void *)0x481ae000
49};
50
51void am335x_disable_gpio_irqs(void);
52
Daniel Lim Wee Soongdf2dbbc2019-03-29 19:21:35 +080053int gpio_direction_input(unsigned int gpio);
54int gpio_direction_output(unsigned int gpio, int value);
55int gpio_get_value(unsigned int gpio);
56int gpio_set_value(unsigned int gpio, int value);
Gabe Blackeee6a7f2013-09-24 01:36:08 -070057
Sam Lewisad7b2e22020-08-03 20:18:29 +100058#endif /* __SOC_TI_AM335X_CLOCK_H__ */