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 PN_BASE
41 #define BANK_BOUNDARY PL_BASE
42 #define SUNXI_GPIO_R_PBASE 0x07022000
43 
44 #if defined(CONFIG_DRIVERS_INTC)
45 #define SUNXI_IRQ_R_GPIOL   (RINTC_IRQ_MASK | 6)
46 #define SUNXI_IRQ_R_GPIOM   (RINTC_IRQ_MASK | 7)
47 #define SUNXI_IRQ_R_GPION   (RINTC_IRQ_MASK | 8)
48 #endif
49 
50 typedef enum
51 {
52     GPIO_PL0 = GPIOL(0),
53     GPIO_PL1 = GPIOL(1),
54     GPIO_PL2 = GPIOL(2),
55     GPIO_PL3 = GPIOL(3),
56     GPIO_PL4 = GPIOL(4),
57     GPIO_PL5 = GPIOL(5),
58     GPIO_PL6 = GPIOL(6),
59     GPIO_PL7 = GPIOL(7),
60     GPIO_PL8 = GPIOL(8),
61     GPIO_PL9 = GPIOL(9),
62     GPIO_PL10 = GPIOL(10),
63 
64     GPIO_PM0 = GPIOM(0),
65     GPIO_PM1 = GPIOM(1),
66     GPIO_PM2 = GPIOM(2),
67     GPIO_PM3 = GPIOM(3),
68     GPIO_PM4 = GPIOM(4),
69     GPIO_PM5 = GPIOM(5),
70     GPIO_PM6 = GPIOM(6),
71     GPIO_PM7 = GPIOM(7),
72     GPIO_PM8 = GPIOM(8),
73 
74     GPIO_PN0 = GPION(0),
75     GPIO_PN1 = GPION(1),
76     GPIO_PN2 = GPION(2),
77     GPIO_PN3 = GPION(3),
78     GPIO_PN4 = GPION(4),
79     GPIO_PN5 = GPION(5),
80     GPIO_PN6 = GPION(6),
81     GPIO_PN7 = GPION(7),
82     GPIO_PN8 = GPION(8),
83     GPIO_PN9 = GPION(9),
84     GPIO_PN10 = GPION(10),
85     GPIO_PN11 = GPION(11),
86     GPIO_PN12 = GPION(12),
87     GPIO_PN13 = GPION(13),
88     GPIO_PN14 = GPION(14),
89     GPIO_PN15 = GPION(15),
90     GPIO_PN16 = GPION(16),
91     GPIO_PN17 = GPION(17),
92     GPIO_PN18 = GPION(18),
93     GPIO_PN19 = GPION(19),
94     GPIO_PN20 = GPION(20),
95     GPIO_PN21 = GPION(21),
96     GPIO_PN22 = GPION(22),
97     GPIO_PN23 = GPION(23),
98 
99 } gpio_pin_t;
100 
101 #ifdef __cplusplus
102 }
103 #endif
104 #endif /* __PLATFORM_GPIO_H__ */
105