xref: /rk3399_rockchip-uboot/arch/arm/include/asm/arch-rockchip/ioc_rv1103b.h (revision b9dcc64364a9e8c2e861cee86a555496820c46a6)
1*b9dcc643SXuhui Lin /*
2*b9dcc643SXuhui Lin  * (C) Copyright 2024 Rockchip Electronics Co., Ltd.
3*b9dcc643SXuhui Lin  *
4*b9dcc643SXuhui Lin  * SPDX-License-Identifier:     GPL-2.0+
5*b9dcc643SXuhui Lin  */
6*b9dcc643SXuhui Lin #ifndef _ASM_ARCH_IOC_RV1103B_H
7*b9dcc643SXuhui Lin #define _ASM_ARCH_IOC_RV1103B_H
8*b9dcc643SXuhui Lin 
9*b9dcc643SXuhui Lin #include <common.h>
10*b9dcc643SXuhui Lin 
11*b9dcc643SXuhui Lin /* pmuio0_ioc register structure define */
12*b9dcc643SXuhui Lin struct rv1103b_pmuio0_ioc_reg {
13*b9dcc643SXuhui Lin      uint32_t gpio0a_iomux_sel_0;                 /* address offset: 0x0000 */
14*b9dcc643SXuhui Lin      uint32_t gpio0a_iomux_sel_1;                 /* address offset: 0x0004 */
15*b9dcc643SXuhui Lin      uint32_t reserved0008[62];                   /* address offset: 0x0008 */
16*b9dcc643SXuhui Lin      uint32_t gpio0a_ds_0;                        /* address offset: 0x0100 */
17*b9dcc643SXuhui Lin      uint32_t gpio0a_ds_1;                        /* address offset: 0x0104 */
18*b9dcc643SXuhui Lin      uint32_t gpio0a_ds_2;                        /* address offset: 0x0108 */
19*b9dcc643SXuhui Lin      uint32_t gpio0a_ds_3;                        /* address offset: 0x010c */
20*b9dcc643SXuhui Lin      uint32_t reserved0110[60];                   /* address offset: 0x0110 */
21*b9dcc643SXuhui Lin      uint32_t gpio0a_pull;                        /* address offset: 0x0200 */
22*b9dcc643SXuhui Lin      uint32_t reserved0204[63];                   /* address offset: 0x0204 */
23*b9dcc643SXuhui Lin      uint32_t gpio0a_ie;                          /* address offset: 0x0300 */
24*b9dcc643SXuhui Lin      uint32_t reserved0304[63];                   /* address offset: 0x0304 */
25*b9dcc643SXuhui Lin      uint32_t gpio0a_smt;                         /* address offset: 0x0400 */
26*b9dcc643SXuhui Lin      uint32_t reserved0404[63];                   /* address offset: 0x0404 */
27*b9dcc643SXuhui Lin      uint32_t gpio0a_sus;                         /* address offset: 0x0500 */
28*b9dcc643SXuhui Lin      uint32_t reserved0504[63];                   /* address offset: 0x0504 */
29*b9dcc643SXuhui Lin      uint32_t gpio0a_sl;                          /* address offset: 0x0600 */
30*b9dcc643SXuhui Lin      uint32_t reserved0604[63];                   /* address offset: 0x0604 */
31*b9dcc643SXuhui Lin      uint32_t gpio0a_od;                          /* address offset: 0x0700 */
32*b9dcc643SXuhui Lin      uint32_t reserved0704[63];                   /* address offset: 0x0704 */
33*b9dcc643SXuhui Lin      uint32_t io_vsel;                            /* address offset: 0x0800 */
34*b9dcc643SXuhui Lin      uint32_t grf_jtag_con0;                      /* address offset: 0x0804 */
35*b9dcc643SXuhui Lin      uint32_t grf_jtag_con1;                      /* address offset: 0x0808 */
36*b9dcc643SXuhui Lin      uint32_t reserved080c[61];                   /* address offset: 0x080c */
37*b9dcc643SXuhui Lin      uint32_t xin_con;                            /* address offset: 0x0900 */
38*b9dcc643SXuhui Lin };
39*b9dcc643SXuhui Lin 
40*b9dcc643SXuhui Lin check_member(rv1103b_pmuio0_ioc_reg, xin_con, 0x0900);
41*b9dcc643SXuhui Lin 
42*b9dcc643SXuhui Lin /* pmuio1_ioc register structure define */
43*b9dcc643SXuhui Lin struct rv1103b_pmuio1_ioc_reg {
44*b9dcc643SXuhui Lin      uint32_t reserved0000[2];                    /* address offset: 0x0000 */
45*b9dcc643SXuhui Lin      uint32_t gpio0b_iomux_sel_0;                 /* address offset: 0x0008 */
46*b9dcc643SXuhui Lin      uint32_t gpio0b_iomux_sel_1;                 /* address offset: 0x000c */
47*b9dcc643SXuhui Lin      uint32_t reserved0010[64];                   /* address offset: 0x0010 */
48*b9dcc643SXuhui Lin      uint32_t gpio0b_ds_0;                        /* address offset: 0x0110 */
49*b9dcc643SXuhui Lin      uint32_t gpio0b_ds_1;                        /* address offset: 0x0114 */
50*b9dcc643SXuhui Lin      uint32_t gpio0b_ds_2;                        /* address offset: 0x0118 */
51*b9dcc643SXuhui Lin      uint32_t reserved011c[58];                   /* address offset: 0x011c */
52*b9dcc643SXuhui Lin      uint32_t gpio0b_pull;                        /* address offset: 0x0204 */
53*b9dcc643SXuhui Lin      uint32_t reserved0208[63];                   /* address offset: 0x0208 */
54*b9dcc643SXuhui Lin      uint32_t gpio0b_ie;                          /* address offset: 0x0304 */
55*b9dcc643SXuhui Lin      uint32_t reserved0308[63];                   /* address offset: 0x0308 */
56*b9dcc643SXuhui Lin      uint32_t gpio0b_smt;                         /* address offset: 0x0404 */
57*b9dcc643SXuhui Lin      uint32_t reserved0408[63];                   /* address offset: 0x0408 */
58*b9dcc643SXuhui Lin      uint32_t gpio0b_sus;                         /* address offset: 0x0504 */
59*b9dcc643SXuhui Lin      uint32_t reserved0508[63];                   /* address offset: 0x0508 */
60*b9dcc643SXuhui Lin      uint32_t gpio0b_sl;                          /* address offset: 0x0604 */
61*b9dcc643SXuhui Lin      uint32_t reserved0608[63];                   /* address offset: 0x0608 */
62*b9dcc643SXuhui Lin      uint32_t gpio0b_od;                          /* address offset: 0x0704 */
63*b9dcc643SXuhui Lin      uint32_t reserved0708[62];                   /* address offset: 0x0708 */
64*b9dcc643SXuhui Lin      uint32_t io_vsel;                            /* address offset: 0x0800 */
65*b9dcc643SXuhui Lin      uint32_t grf_jtag_con0;                      /* address offset: 0x0804 */
66*b9dcc643SXuhui Lin      uint32_t grf_jtag_con1;                      /* address offset: 0x0808 */
67*b9dcc643SXuhui Lin };
68*b9dcc643SXuhui Lin 
69*b9dcc643SXuhui Lin check_member(rv1103b_pmuio1_ioc_reg, grf_jtag_con1, 0x0808);
70*b9dcc643SXuhui Lin 
71*b9dcc643SXuhui Lin /* vccio3_ioc register structure define */
72*b9dcc643SXuhui Lin struct rv1103b_vccio3_ioc_reg {
73*b9dcc643SXuhui Lin      uint32_t reserved0000[8];                    /* address offset: 0x0000 */
74*b9dcc643SXuhui Lin      uint32_t gpio1a_iomux_sel_0;                 /* address offset: 0x0020 */
75*b9dcc643SXuhui Lin      uint32_t gpio1a_iomux_sel_1;                 /* address offset: 0x0024 */
76*b9dcc643SXuhui Lin      uint32_t reserved0028[70];                   /* address offset: 0x0028 */
77*b9dcc643SXuhui Lin      uint32_t gpio1a_ds_0;                        /* address offset: 0x0140 */
78*b9dcc643SXuhui Lin      uint32_t gpio1a_ds_1;                        /* address offset: 0x0144 */
79*b9dcc643SXuhui Lin      uint32_t gpio1a_ds_2;                        /* address offset: 0x0148 */
80*b9dcc643SXuhui Lin      uint32_t reserved014c[49];                   /* address offset: 0x014c */
81*b9dcc643SXuhui Lin      uint32_t gpio1a_pull;                        /* address offset: 0x0210 */
82*b9dcc643SXuhui Lin      uint32_t reserved0214[63];                   /* address offset: 0x0214 */
83*b9dcc643SXuhui Lin      uint32_t gpio1a_ie;                          /* address offset: 0x0310 */
84*b9dcc643SXuhui Lin      uint32_t reserved0314[63];                   /* address offset: 0x0314 */
85*b9dcc643SXuhui Lin      uint32_t gpio1a_smt;                         /* address offset: 0x0410 */
86*b9dcc643SXuhui Lin      uint32_t reserved0414[63];                   /* address offset: 0x0414 */
87*b9dcc643SXuhui Lin      uint32_t gpio1a_sus;                         /* address offset: 0x0510 */
88*b9dcc643SXuhui Lin      uint32_t reserved0514[63];                   /* address offset: 0x0514 */
89*b9dcc643SXuhui Lin      uint32_t gpio1a_sl;                          /* address offset: 0x0610 */
90*b9dcc643SXuhui Lin      uint32_t reserved0614[63];                   /* address offset: 0x0614 */
91*b9dcc643SXuhui Lin      uint32_t gpio1a_od;                          /* address offset: 0x0710 */
92*b9dcc643SXuhui Lin      uint32_t reserved0714[59];                   /* address offset: 0x0714 */
93*b9dcc643SXuhui Lin      uint32_t io_vsel_vccio3;                     /* address offset: 0x0800 */
94*b9dcc643SXuhui Lin };
95*b9dcc643SXuhui Lin 
96*b9dcc643SXuhui Lin check_member(rv1103b_vccio3_ioc_reg, io_vsel_vccio3, 0x0800);
97*b9dcc643SXuhui Lin 
98*b9dcc643SXuhui Lin /* vccio4_ioc register structure define */
99*b9dcc643SXuhui Lin struct rv1103b_vccio4_ioc_reg {
100*b9dcc643SXuhui Lin      uint32_t reserved0000[9];                    /* address offset: 0x0000 */
101*b9dcc643SXuhui Lin      uint32_t gpio1a_iomux_sel_1;                 /* address offset: 0x0024 */
102*b9dcc643SXuhui Lin      uint32_t gpio1b_iomux_sel_0;                 /* address offset: 0x0028 */
103*b9dcc643SXuhui Lin      uint32_t gpio1b_iomux_sel_1;                 /* address offset: 0x002c */
104*b9dcc643SXuhui Lin      uint32_t reserved0030[71];                   /* address offset: 0x0030 */
105*b9dcc643SXuhui Lin      uint32_t gpio1a_ds_3;                        /* address offset: 0x014c */
106*b9dcc643SXuhui Lin      uint32_t gpio1b_ds_0;                        /* address offset: 0x0150 */
107*b9dcc643SXuhui Lin      uint32_t gpio1b_ds_1;                        /* address offset: 0x0154 */
108*b9dcc643SXuhui Lin      uint32_t gpio1b_ds_2;                        /* address offset: 0x0158 */
109*b9dcc643SXuhui Lin      uint32_t reserved015c[45];                   /* address offset: 0x015c */
110*b9dcc643SXuhui Lin      uint32_t gpio1a_pull;                        /* address offset: 0x0210 */
111*b9dcc643SXuhui Lin      uint32_t gpio1b_pull;                        /* address offset: 0x0214 */
112*b9dcc643SXuhui Lin      uint32_t reserved0218[62];                   /* address offset: 0x0218 */
113*b9dcc643SXuhui Lin      uint32_t gpio1a_ie;                          /* address offset: 0x0310 */
114*b9dcc643SXuhui Lin      uint32_t gpio1b_ie;                          /* address offset: 0x0314 */
115*b9dcc643SXuhui Lin      uint32_t reserved0318[62];                   /* address offset: 0x0318 */
116*b9dcc643SXuhui Lin      uint32_t gpio1a_smt;                         /* address offset: 0x0410 */
117*b9dcc643SXuhui Lin      uint32_t gpio1b_smt;                         /* address offset: 0x0414 */
118*b9dcc643SXuhui Lin      uint32_t reserved0418[62];                   /* address offset: 0x0418 */
119*b9dcc643SXuhui Lin      uint32_t gpio1a_sus;                         /* address offset: 0x0510 */
120*b9dcc643SXuhui Lin      uint32_t gpio1b_sus;                         /* address offset: 0x0514 */
121*b9dcc643SXuhui Lin      uint32_t reserved0518[62];                   /* address offset: 0x0518 */
122*b9dcc643SXuhui Lin      uint32_t gpio1a_sl;                          /* address offset: 0x0610 */
123*b9dcc643SXuhui Lin      uint32_t gpio1b_sl;                          /* address offset: 0x0614 */
124*b9dcc643SXuhui Lin      uint32_t reserved0618[62];                   /* address offset: 0x0618 */
125*b9dcc643SXuhui Lin      uint32_t gpio1a_od;                          /* address offset: 0x0710 */
126*b9dcc643SXuhui Lin      uint32_t gpio1b_od;                          /* address offset: 0x0714 */
127*b9dcc643SXuhui Lin      uint32_t reserved0718[58];                   /* address offset: 0x0718 */
128*b9dcc643SXuhui Lin      uint32_t io_vsel_vccio4;                     /* address offset: 0x0800 */
129*b9dcc643SXuhui Lin };
130*b9dcc643SXuhui Lin 
131*b9dcc643SXuhui Lin check_member(rv1103b_vccio4_ioc_reg, io_vsel_vccio4, 0x0800);
132*b9dcc643SXuhui Lin 
133*b9dcc643SXuhui Lin /* vccio6_ioc register structure define */
134*b9dcc643SXuhui Lin struct rv1103b_vccio6_ioc_reg {
135*b9dcc643SXuhui Lin      uint32_t reserved0000[16];                   /* address offset: 0x0000 */
136*b9dcc643SXuhui Lin      uint32_t gpio2a_iomux_sel_0;                 /* address offset: 0x0040 */
137*b9dcc643SXuhui Lin      uint32_t gpio2a_iomux_sel_1;                 /* address offset: 0x0044 */
138*b9dcc643SXuhui Lin      uint32_t gpio2b_iomux_sel_0;                 /* address offset: 0x0048 */
139*b9dcc643SXuhui Lin      uint32_t reserved004c[77];                   /* address offset: 0x004c */
140*b9dcc643SXuhui Lin      uint32_t gpio2a_ds_0;                        /* address offset: 0x0180 */
141*b9dcc643SXuhui Lin      uint32_t gpio2a_ds_1;                        /* address offset: 0x0184 */
142*b9dcc643SXuhui Lin      uint32_t gpio2a_ds_2;                        /* address offset: 0x0188 */
143*b9dcc643SXuhui Lin      uint32_t gpio2a_ds_3;                        /* address offset: 0x018c */
144*b9dcc643SXuhui Lin      uint32_t gpio2b_ds_0;                        /* address offset: 0x0190 */
145*b9dcc643SXuhui Lin      uint32_t gpio2b_ds_1;                        /* address offset: 0x0194 */
146*b9dcc643SXuhui Lin      uint32_t reserved0198[34];                   /* address offset: 0x0198 */
147*b9dcc643SXuhui Lin      uint32_t gpio2a_pull;                        /* address offset: 0x0220 */
148*b9dcc643SXuhui Lin      uint32_t gpio2b_pull;                        /* address offset: 0x0224 */
149*b9dcc643SXuhui Lin      uint32_t reserved0228[62];                   /* address offset: 0x0228 */
150*b9dcc643SXuhui Lin      uint32_t gpio2a_ie;                          /* address offset: 0x0320 */
151*b9dcc643SXuhui Lin      uint32_t gpio2b_ie;                          /* address offset: 0x0324 */
152*b9dcc643SXuhui Lin      uint32_t reserved0328[62];                   /* address offset: 0x0328 */
153*b9dcc643SXuhui Lin      uint32_t gpio2a_smt;                         /* address offset: 0x0420 */
154*b9dcc643SXuhui Lin      uint32_t gpio2b_smt;                         /* address offset: 0x0424 */
155*b9dcc643SXuhui Lin      uint32_t reserved0428[62];                   /* address offset: 0x0428 */
156*b9dcc643SXuhui Lin      uint32_t gpio2a_sus;                         /* address offset: 0x0520 */
157*b9dcc643SXuhui Lin      uint32_t gpio2b_sus;                         /* address offset: 0x0524 */
158*b9dcc643SXuhui Lin      uint32_t reserved0528[62];                   /* address offset: 0x0528 */
159*b9dcc643SXuhui Lin      uint32_t gpio2a_sl;                          /* address offset: 0x0620 */
160*b9dcc643SXuhui Lin      uint32_t gpio2b_sl;                          /* address offset: 0x0624 */
161*b9dcc643SXuhui Lin      uint32_t reserved0628[62];                   /* address offset: 0x0628 */
162*b9dcc643SXuhui Lin      uint32_t gpio2a_od;                          /* address offset: 0x0720 */
163*b9dcc643SXuhui Lin      uint32_t gpio2b_od;                          /* address offset: 0x0724 */
164*b9dcc643SXuhui Lin      uint32_t reserved0728[54];                   /* address offset: 0x0728 */
165*b9dcc643SXuhui Lin      uint32_t io_vsel_vccio6;                     /* address offset: 0x0800 */
166*b9dcc643SXuhui Lin      uint32_t misc_con;                           /* address offset: 0x0804 */
167*b9dcc643SXuhui Lin      uint32_t reserved0808;                       /* address offset: 0x0808 */
168*b9dcc643SXuhui Lin      uint32_t saradc_con0;                        /* address offset: 0x080c */
169*b9dcc643SXuhui Lin      uint32_t saradc_con1;                        /* address offset: 0x0810 */
170*b9dcc643SXuhui Lin };
171*b9dcc643SXuhui Lin 
172*b9dcc643SXuhui Lin check_member(rv1103b_vccio6_ioc_reg, saradc_con1, 0x0810);
173*b9dcc643SXuhui Lin 
174*b9dcc643SXuhui Lin /* vccio7_ioc register structure define */
175*b9dcc643SXuhui Lin struct rv1103b_vccio7_ioc_reg {
176*b9dcc643SXuhui Lin      uint32_t reserved0000[11];                   /* address offset: 0x0000 */
177*b9dcc643SXuhui Lin      uint32_t gpio1b_iomux_sel_1;                 /* address offset: 0x002c */
178*b9dcc643SXuhui Lin      uint32_t gpio1c_iomux_sel_0;                 /* address offset: 0x0030 */
179*b9dcc643SXuhui Lin      uint32_t gpio1c_iomux_sel_1;                 /* address offset: 0x0034 */
180*b9dcc643SXuhui Lin      uint32_t gpio1d_iomux_sel_0;                 /* address offset: 0x0038 */
181*b9dcc643SXuhui Lin      uint32_t gpio1d_iomux_sel_1;                 /* address offset: 0x003c */
182*b9dcc643SXuhui Lin      uint32_t reserved0040[70];                   /* address offset: 0x0040 */
183*b9dcc643SXuhui Lin      uint32_t gpio1b_ds_2;                        /* address offset: 0x0158 */
184*b9dcc643SXuhui Lin      uint32_t gpio1b_ds_3;                        /* address offset: 0x015c */
185*b9dcc643SXuhui Lin      uint32_t gpio1c_ds_0;                        /* address offset: 0x0160 */
186*b9dcc643SXuhui Lin      uint32_t reserved0164[44];                   /* address offset: 0x0164 */
187*b9dcc643SXuhui Lin      uint32_t gpio1b_pull;                        /* address offset: 0x0214 */
188*b9dcc643SXuhui Lin      uint32_t gpio1c_pull;                        /* address offset: 0x0218 */
189*b9dcc643SXuhui Lin      uint32_t reserved021c[62];                   /* address offset: 0x021c */
190*b9dcc643SXuhui Lin      uint32_t gpio1b_ie;                          /* address offset: 0x0314 */
191*b9dcc643SXuhui Lin      uint32_t gpio1c_ie;                          /* address offset: 0x0318 */
192*b9dcc643SXuhui Lin      uint32_t reserved031c[62];                   /* address offset: 0x031c */
193*b9dcc643SXuhui Lin      uint32_t gpio1b_smt;                         /* address offset: 0x0414 */
194*b9dcc643SXuhui Lin      uint32_t gpio1c_smt;                         /* address offset: 0x0418 */
195*b9dcc643SXuhui Lin      uint32_t reserved041c[62];                   /* address offset: 0x041c */
196*b9dcc643SXuhui Lin      uint32_t gpio1b_sus;                         /* address offset: 0x0514 */
197*b9dcc643SXuhui Lin      uint32_t gpio1c_sus;                         /* address offset: 0x0518 */
198*b9dcc643SXuhui Lin      uint32_t reserved051c[62];                   /* address offset: 0x051c */
199*b9dcc643SXuhui Lin      uint32_t gpio1b_sl;                          /* address offset: 0x0614 */
200*b9dcc643SXuhui Lin      uint32_t gpio1c_sl;                          /* address offset: 0x0618 */
201*b9dcc643SXuhui Lin      uint32_t reserved061c[62];                   /* address offset: 0x061c */
202*b9dcc643SXuhui Lin      uint32_t gpio1b_od;                          /* address offset: 0x0714 */
203*b9dcc643SXuhui Lin      uint32_t gpio1c_od;                          /* address offset: 0x0718 */
204*b9dcc643SXuhui Lin      uint32_t reserved071c[58];                   /* address offset: 0x071c */
205*b9dcc643SXuhui Lin      uint32_t io_vsel_vccio7;                     /* address offset: 0x0804 */
206*b9dcc643SXuhui Lin      uint32_t misc_con;                           /* address offset: 0x0808 */
207*b9dcc643SXuhui Lin      uint32_t sdcard_io_con;                      /* address offset: 0x080c */
208*b9dcc643SXuhui Lin      uint32_t jtag_m2_con;                        /* address offset: 0x0810 */
209*b9dcc643SXuhui Lin };
210*b9dcc643SXuhui Lin 
211*b9dcc643SXuhui Lin check_member(rv1103b_vccio7_ioc_reg, jtag_m2_con, 0x0810);
212*b9dcc643SXuhui Lin 
213*b9dcc643SXuhui Lin #endif /* _ASM_ARCH_IOC_RV1103B_H */
214