1 /*
2 * Copyright (c) 2019-2025 Allwinner Technology Co., Ltd. ALL rights reserved.
3 *
4 * Allwinner is a trademark of Allwinner Technology Co.,Ltd., registered in
5 * the the People's Republic of China and other countries.
6 * All Allwinner Technology Co.,Ltd. trademarks are used with permission.
7 *
8 * DISCLAIMER
9 * THIRD PARTY LICENCES MAY BE REQUIRED TO IMPLEMENT THE SOLUTION/PRODUCT.
10 * IF YOU NEED TO INTEGRATE THIRD PARTY’S TECHNOLOGY (SONY, DTS, DOLBY, AVS OR MPEGLA, ETC.)
11 * IN ALLWINNERS’SDK OR PRODUCTS, YOU SHALL BE SOLELY RESPONSIBLE TO OBTAIN
12 * ALL APPROPRIATELY REQUIRED THIRD PARTY LICENCES.
13 * ALLWINNER SHALL HAVE NO WARRANTY, INDEMNITY OR OTHER OBLIGATIONS WITH RESPECT TO MATTERS
14 * COVERED UNDER ANY REQUIRED THIRD PARTY LICENSE.
15 * YOU ARE SOLELY RESPONSIBLE FOR YOUR USAGE OF THIRD PARTY’S TECHNOLOGY.
16 *
17 *
18 * THIS SOFTWARE IS PROVIDED BY ALLWINNER"AS IS" AND TO THE MAXIMUM EXTENT
19 * PERMITTED BY LAW, ALLWINNER EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND,
20 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION REGARDING
21 * THE TITLE, NON-INFRINGEMENT, ACCURACY, CONDITION, COMPLETENESS, PERFORMANCE
22 * OR MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
23 * IN NO EVENT SHALL ALLWINNER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
25 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
26 * LOSS OF USE, DATA, OR PROFITS, OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
28 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
30 * OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32 
33 #ifndef __PLATFORM_GPIO_H__
34 #define __PLATFORM_GPIO_H__
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 #define GPIO_MAX_BANK PL_BASE
41 #define BANK_BOUNDARY PL_BASE
42 #define SUNXI_GPIO_PBASE 0x0300B000
43 #define SUXNI_GPIO_R_PBASE 0x07022000
44 
45 /* sunxi gpio irq*/
46 #define SUNXI_GIC_START 32
47 #define SUNXI_IRQ_GPIOC (SUNXI_GIC_START + 67)
48 #define SUNXI_IRQ_GPIOD (SUNXI_GIC_START + 68)
49 #define SUNXI_IRQ_GPIOE (SUNXI_GIC_START + 69)
50 #define SUNXI_IRQ_GPIOF (SUNXI_GIC_START + 70)
51 #define SUNXI_IRQ_GPIOG (SUNXI_GIC_START + 71)
52 #define SUNXI_IRQ_GPIOH (SUNXI_GIC_START + 72)
53 #define SUNXI_IRQ_GPIOI (SUNXI_GIC_START + 73)
54 #define SUNXI_IRQ_R_GPIOL (SUNXI_GIC_START + 106)
55 
56 typedef enum
57 {
58     GPIO_PC0 = GPIOC(0),
59     GPIO_PC1 = GPIOC(1),
60     GPIO_PC2 = GPIOC(2),
61     GPIO_PC3 = GPIOC(3),
62     GPIO_PC4 = GPIOC(4),
63     GPIO_PC5 = GPIOC(5),
64     GPIO_PC6 = GPIOC(6),
65     GPIO_PC7 = GPIOC(7),
66     GPIO_PC8 = GPIOC(8),
67     GPIO_PC9 = GPIOC(9),
68     GPIO_PC10 = GPIOC(10),
69     GPIO_PC11 = GPIOC(11),
70 
71     GPIO_PD0 = GPIOD(0),
72     GPIO_PD1 = GPIOD(1),
73     GPIO_PD2 = GPIOD(2),
74     GPIO_PD3 = GPIOD(3),
75     GPIO_PD4 = GPIOD(4),
76     GPIO_PD5 = GPIOD(5),
77     GPIO_PD6 = GPIOD(6),
78     GPIO_PD7 = GPIOD(7),
79     GPIO_PD8 = GPIOD(8),
80     GPIO_PD9 = GPIOD(9),
81     GPIO_PD10 = GPIOD(10),
82     GPIO_PD11 = GPIOD(11),
83     GPIO_PD12 = GPIOD(12),
84     GPIO_PD13 = GPIOD(13),
85     GPIO_PD14 = GPIOD(14),
86     GPIO_PD15 = GPIOD(15),
87     GPIO_PD16 = GPIOD(16),
88     GPIO_PD17 = GPIOD(17),
89     GPIO_PD18 = GPIOD(18),
90     GPIO_PD19 = GPIOD(19),
91     GPIO_PD20 = GPIOD(20),
92     GPIO_PD21 = GPIOD(21),
93     GPIO_PD22 = GPIOD(22),
94 
95     GPIO_PE0 = GPIOE(0),
96     GPIO_PE1 = GPIOE(1),
97     GPIO_PE2 = GPIOE(2),
98     GPIO_PE3 = GPIOE(3),
99     GPIO_PE4 = GPIOE(4),
100     GPIO_PE5 = GPIOE(5),
101     GPIO_PE6 = GPIOE(6),
102     GPIO_PE7 = GPIOE(7),
103     GPIO_PE8 = GPIOE(8),
104     GPIO_PE9 = GPIOE(9),
105     GPIO_PE10 = GPIOE(10),
106     GPIO_PE11 = GPIOE(11),
107     GPIO_PE12 = GPIOE(12),
108     GPIO_PE13 = GPIOE(13),
109     GPIO_PE14 = GPIOE(14),
110     GPIO_PE15 = GPIOE(15),
111     GPIO_PE16 = GPIOE(16),
112     GPIO_PE17 = GPIOE(17),
113     GPIO_PE18 = GPIOE(18),
114     GPIO_PE19 = GPIOE(19),
115     GPIO_PE20 = GPIOE(20),
116     GPIO_PE21 = GPIOE(21),
117 
118     GPIO_PF0 = GPIOF(0),
119     GPIO_PF1 = GPIOF(1),
120     GPIO_PF2 = GPIOF(2),
121     GPIO_PF3 = GPIOF(3),
122     GPIO_PF4 = GPIOF(4),
123     GPIO_PF5 = GPIOF(5),
124     GPIO_PF6 = GPIOF(6),
125 
126     GPIO_PG0 = GPIOG(0),
127     GPIO_PG1 = GPIOG(1),
128     GPIO_PG2 = GPIOG(2),
129     GPIO_PG3 = GPIOG(3),
130     GPIO_PG4 = GPIOG(4),
131     GPIO_PG5 = GPIOG(5),
132     GPIO_PG6 = GPIOG(6),
133     GPIO_PG7 = GPIOG(7),
134 
135     GPIO_PH0 = GPIOH(0),
136     GPIO_PH1 = GPIOH(1),
137     GPIO_PH2 = GPIOH(2),
138     GPIO_PH3 = GPIOH(3),
139     GPIO_PH4 = GPIOH(4),
140     GPIO_PH5 = GPIOH(5),
141     GPIO_PH6 = GPIOH(6),
142     GPIO_PH7 = GPIOH(7),
143     GPIO_PH8 = GPIOH(8),
144     GPIO_PH9 = GPIOH(9),
145     GPIO_PH10 = GPIOH(10),
146     GPIO_PH11 = GPIOH(11),
147     GPIO_PH12 = GPIOH(12),
148     GPIO_PH13 = GPIOH(13),
149     GPIO_PH14 = GPIOH(14),
150     GPIO_PH15 = GPIOH(15),
151 
152     GPIO_PI0 = GPIOI(0),
153     GPIO_PI1 = GPIOI(1),
154     GPIO_PI2 = GPIOI(2),
155     GPIO_PI3 = GPIOI(3),
156     GPIO_PI4 = GPIOI(4),
157     GPIO_PI5 = GPIOI(5),
158 
159     GPIO_PL0 = GPIOL(0),
160     GPIO_PL1 = GPIOL(1),
161     GPIO_PL2 = GPIOL(2),
162     GPIO_PL3 = GPIOL(3),
163     GPIO_PL4 = GPIOL(4),
164     GPIO_PL5 = GPIOL(5),
165 } gpio_pin_t;
166 
167 #ifdef __cplusplus
168 }
169 #endif
170 #endif /* __PLATFORM_GPIO_H__ */
171