hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
/*
 * (C) Copyright 2021 Rockchip Electronics Co., Ltd.
 *
 * SPDX-License-Identifier:     GPL-2.0+
 */
#ifndef _ASM_ARCH_IOC_RK3528_H
#define _ASM_ARCH_IOC_RK3528_H
 
#include <common.h>
 
struct rk3528_gpio0_ioc {
   uint32_t gpio0a_iomux_sel_l;                 /* Address Offset: 0x0000 */
   uint32_t gpio0a_iomux_sel_h;                 /* Address Offset: 0x0004 */
   uint32_t reserved0008[62];                   /* Address Offset: 0x0008 */
   uint32_t gpio0a_ds[3];                       /* Address Offset: 0x0100 */
   uint32_t reserved010c[61];                   /* Address Offset: 0x010C */
   uint32_t gpio0a_pull;                        /* Address Offset: 0x0200 */
   uint32_t reserved0204[63];                   /* Address Offset: 0x0204 */
   uint32_t gpio0a_ie;                          /* Address Offset: 0x0300 */
   uint32_t reserved0304[63];                   /* Address Offset: 0x0304 */
   uint32_t gpio0a_smt;                         /* Address Offset: 0x0400 */
   uint32_t reserved0404[63];                   /* Address Offset: 0x0404 */
   uint32_t gpio0a_sus;                         /* Address Offset: 0x0500 */
   uint32_t reserved0504[63];                   /* Address Offset: 0x0504 */
   uint32_t gpio0a_sl;                          /* Address Offset: 0x0600 */
   uint32_t reserved0604[63];                   /* Address Offset: 0x0604 */
   uint32_t gpio0a_od;                          /* Address Offset: 0x0700 */
   uint32_t vcc5vio_ctrl;                          /* Address Offset: 0x0704 */
};
check_member(rk3528_gpio0_ioc, vcc5vio_ctrl, 0x0704);
 
struct rk3528_gpio1_ioc {
   uint32_t reserved0000[8];                    /* Address Offset: 0x0000 */
   uint32_t gpio1a_iomux_sel_l;                 /* Address Offset: 0x0020 */
   uint32_t gpio1a_iomux_sel_h;                 /* Address Offset: 0x0024 */
   uint32_t gpio1b_iomux_sel_l;                 /* Address Offset: 0x0028 */
   uint32_t gpio1b_iomux_sel_h;                 /* Address Offset: 0x002C */
   uint32_t gpio1c_iomux_sel_l;                 /* Address Offset: 0x0030 */
   uint32_t gpio1c_iomux_sel_h;                 /* Address Offset: 0x0034 */
   uint32_t gpio1d_iomux_sel_l;                 /* Address Offset: 0x0038 */
   uint32_t gpio1d_iomux_sel_h;                 /* Address Offset: 0x003C */
   uint32_t reserved0040[56];                   /* Address Offset: 0x0040 */
   uint32_t gpio1a_ds[4];                       /* Address Offset: 0x0120 */
   uint32_t gpio1b_ds[4];                       /* Address Offset: 0x0130 */
   uint32_t gpio1c_ds[4];                       /* Address Offset: 0x0140 */
   uint32_t gpio1d_ds[4];                       /* Address Offset: 0x0150 */
   uint32_t reserved0160[44];                   /* Address Offset: 0x0160 */
   uint32_t gpio1a_pull;                        /* Address Offset: 0x0210 */
   uint32_t gpio1b_pull;                        /* Address Offset: 0x0214 */
   uint32_t gpio1c_pull;                        /* Address Offset: 0x0218 */
   uint32_t gpio1d_pull;                        /* Address Offset: 0x021C */
   uint32_t reserved0220[60];                   /* Address Offset: 0x0220 */
   uint32_t gpio1a_ie;                          /* Address Offset: 0x0310 */
   uint32_t gpio1b_ie;                          /* Address Offset: 0x0314 */
   uint32_t gpio1c_ie;                          /* Address Offset: 0x0318 */
   uint32_t gpio1d_ie;                          /* Address Offset: 0x031C */
   uint32_t reserved0320[60];                   /* Address Offset: 0x0320 */
   uint32_t gpio1a_smt;                         /* Address Offset: 0x0410 */
   uint32_t gpio1b_smt;                         /* Address Offset: 0x0414 */
   uint32_t gpio1c_smt;                         /* Address Offset: 0x0418 */
   uint32_t gpio1d_smt;                         /* Address Offset: 0x041C */
   uint32_t reserved0420[60];                   /* Address Offset: 0x0420 */
   uint32_t gpio1a_sus;                         /* Address Offset: 0x0510 */
   uint32_t gpio1b_sus;                         /* Address Offset: 0x0514 */
   uint32_t gpio1c_sus;                         /* Address Offset: 0x0518 */
   uint32_t gpio1d_sus;                         /* Address Offset: 0x051C */
   uint32_t reserved0520[60];                   /* Address Offset: 0x0520 */
   uint32_t gpio1a_sl;                          /* Address Offset: 0x0610 */
   uint32_t gpio1b_sl;                          /* Address Offset: 0x0614 */
   uint32_t gpio1c_sl;                          /* Address Offset: 0x0618 */
   uint32_t gpio1d_sl;                          /* Address Offset: 0x061C */
   uint32_t reserved0620[60];                   /* Address Offset: 0x0620 */
   uint32_t gpio1a_od;                          /* Address Offset: 0x0710 */
   uint32_t gpio1b_od;                          /* Address Offset: 0x0714 */
   uint32_t gpio1c_od;                          /* Address Offset: 0x0718 */
   uint32_t gpio1d_od;                          /* Address Offset: 0x071C */
   uint32_t reserved0720[60];                   /* Address Offset: 0x0720 */
   uint32_t vccio0_poc;                         /* Address Offset: 0x0810 */
   uint32_t reserved0814[3];                    /* Address Offset: 0x0814 */
   uint32_t vccio1_poc;                         /* Address Offset: 0x0820 */
};
check_member(rk3528_gpio1_ioc, vccio1_poc, 0x0820);
 
struct rk3528_gpio2_ioc {
   uint32_t reserved0000[16];                   /* Address Offset: 0x0000 */
   uint32_t gpio2a_iomux_sel_l;                 /* Address Offset: 0x0040 */
   uint32_t gpio2a_iomux_sel_h;                 /* Address Offset: 0x0044 */
   uint32_t reserved0048[70];                   /* Address Offset: 0x0048 */
   uint32_t gpio2a_ds[4];                       /* Address Offset: 0x0160 */
   uint32_t reserved0170[44];                   /* Address Offset: 0x0170 */
   uint32_t gpio2a_pull;                        /* Address Offset: 0x0220 */
   uint32_t reserved0224[63];                   /* Address Offset: 0x0224 */
   uint32_t gpio2a_ie;                          /* Address Offset: 0x0320 */
   uint32_t reserved0324[63];                   /* Address Offset: 0x0324 */
   uint32_t gpio2a_smt;                         /* Address Offset: 0x0420 */
   uint32_t reserved0424[63];                   /* Address Offset: 0x0424 */
   uint32_t gpio2a_sus;                         /* Address Offset: 0x0520 */
   uint32_t reserved0524[63];                   /* Address Offset: 0x0524 */
   uint32_t gpio2a_sl;                          /* Address Offset: 0x0620 */
   uint32_t reserved0624[63];                   /* Address Offset: 0x0624 */
   uint32_t gpio2a_od;                          /* Address Offset: 0x0720 */
   uint32_t reserved0724[67];                   /* Address Offset: 0x0724 */
   uint32_t vccio2_poc;                         /* Address Offset: 0x0830 */
};
check_member(rk3528_gpio2_ioc, vccio2_poc, 0x0830);
   
struct rk3528_gpio3_ioc {
   uint32_t reserved0000[24];                   /* Address Offset: 0x0000 */
   uint32_t gpio3a_iomux_sel_l;                 /* Address Offset: 0x0060 */
   uint32_t gpio3a_iomux_sel_h;                 /* Address Offset: 0x0064 */
   uint32_t gpio3b_iomux_sel_l;                 /* Address Offset: 0x0068 */
   uint32_t gpio3b_iomux_sel_h;                 /* Address Offset: 0x006C */
   uint32_t gpio3c_iomux_sel_l;                 /* Address Offset: 0x0070 */
   uint32_t reserved0074[71];                   /* Address Offset: 0x0074 */
   uint32_t gpio3a_ds[4];                       /* Address Offset: 0x0190 */
   uint32_t gpio3b_ds[4];                       /* Address Offset: 0x01A0 */
   uint32_t gpio3c_ds[2];                       /* Address Offset: 0x01B0 */
   uint32_t reserved01b8[30];                   /* Address Offset: 0x01B8 */
   uint32_t gpio3a_pull;                        /* Address Offset: 0x0230 */
   uint32_t gpio3b_pull;                        /* Address Offset: 0x0234 */
   uint32_t gpio3c_pull;                        /* Address Offset: 0x0238 */
   uint32_t reserved023c[61];                   /* Address Offset: 0x023C */
   uint32_t gpio3a_ie;                          /* Address Offset: 0x0330 */
   uint32_t gpio3b_ie;                          /* Address Offset: 0x0334 */
   uint32_t gpio3c_ie;                          /* Address Offset: 0x0338 */
   uint32_t reserved033c[61];                   /* Address Offset: 0x033C */
   uint32_t gpio3a_smt;                         /* Address Offset: 0x0430 */
   uint32_t gpio3b_smt;                         /* Address Offset: 0x0434 */
   uint32_t gpio3c_smt;                         /* Address Offset: 0x0438 */
   uint32_t reserved043c[61];                   /* Address Offset: 0x043C */
   uint32_t gpio3a_sus;                         /* Address Offset: 0x0530 */
   uint32_t gpio3b_sus;                         /* Address Offset: 0x0534 */
   uint32_t gpio3c_sus;                         /* Address Offset: 0x0538 */
   uint32_t reserved053c[61];                   /* Address Offset: 0x053C */
   uint32_t gpio3a_sl;                          /* Address Offset: 0x0630 */
   uint32_t gpio3b_sl;                          /* Address Offset: 0x0634 */
   uint32_t gpio3c_sl;                          /* Address Offset: 0x0638 */
   uint32_t reserved063c[61];                   /* Address Offset: 0x063C */
   uint32_t gpio3a_od;                          /* Address Offset: 0x0730 */
   uint32_t gpio3b_od;                          /* Address Offset: 0x0734 */
   uint32_t gpio3c_od;                          /* Address Offset: 0x0738 */
   uint32_t reserved073c[65];                   /* Address Offset: 0x073C */
   uint32_t vccio3_poc;                         /* Address Offset: 0x0840 */
};
check_member(rk3528_gpio3_ioc, vccio3_poc, 0x0840);
 
struct rk3528_gpio4_ioc {
   uint32_t reserved0000[32];                   /* Address Offset: 0x0000 */
   uint32_t gpio4a_iomux_sel_l;                 /* Address Offset: 0x0080 */
   uint32_t gpio4a_iomux_sel_h;                 /* Address Offset: 0x0084 */
   uint32_t gpio4b_iomux_sel_l;                 /* Address Offset: 0x0088 */
   uint32_t gpio4b_iomux_sel_h;                 /* Address Offset: 0x008C */
   uint32_t gpio4c_iomux_sel_l;                 /* Address Offset: 0x0090 */
   uint32_t gpio4c_iomux_sel_h;                 /* Address Offset: 0x0094 */
   uint32_t gpio4d_iomux_sel_l;                 /* Address Offset: 0x0098 */
   uint32_t reserved009c[73];                   /* Address Offset: 0x009C */
   uint32_t gpio4a_ds[4];                       /* Address Offset: 0x01C0 */
   uint32_t gpio4b_ds[4];                       /* Address Offset: 0x01D0 */
   uint32_t gpio4c_ds[4];                       /* Address Offset: 0x01E0 */
   uint32_t gpio4d_ds[1];                       /* Address Offset: 0x01F0 */
   uint32_t reserved01f4[19];                   /* Address Offset: 0x01F4 */
   uint32_t gpio4a_pull;                        /* Address Offset: 0x0240 */
   uint32_t gpio4b_pull;                        /* Address Offset: 0x0244 */
   uint32_t gpio4c_pull;                        /* Address Offset: 0x0248 */
   uint32_t gpio4d_pull;                        /* Address Offset: 0x024C */
   uint32_t reserved0250[60];                   /* Address Offset: 0x0250 */
   uint32_t gpio4a_ie;                          /* Address Offset: 0x0340 */
   uint32_t gpio4b_ie;                          /* Address Offset: 0x0344 */
   uint32_t gpio4c_ie;                          /* Address Offset: 0x0348 */
   uint32_t gpio4d_ie;                          /* Address Offset: 0x034C */
   uint32_t reserved0350[60];                   /* Address Offset: 0x0350 */
   uint32_t gpio4a_smt;                         /* Address Offset: 0x0440 */
   uint32_t gpio4b_smt;                         /* Address Offset: 0x0444 */
   uint32_t gpio4c_smt;                         /* Address Offset: 0x0448 */
   uint32_t gpio4d_smt;                         /* Address Offset: 0x044C */
   uint32_t reserved0450[60];                   /* Address Offset: 0x0450 */
   uint32_t gpio4a_sus;                         /* Address Offset: 0x0540 */
   uint32_t gpio4b_sus;                         /* Address Offset: 0x0544 */
   uint32_t gpio4c_sus;                         /* Address Offset: 0x0548 */
   uint32_t gpio4d_sus;                         /* Address Offset: 0x054C */
   uint32_t reserved0550[60];                   /* Address Offset: 0x0550 */
   uint32_t gpio4a_sl;                          /* Address Offset: 0x0640 */
   uint32_t gpio4b_sl;                          /* Address Offset: 0x0644 */
   uint32_t gpio4c_sl;                          /* Address Offset: 0x0648 */
   uint32_t gpio4d_sl;                          /* Address Offset: 0x064C */
   uint32_t reserved0650[60];                   /* Address Offset: 0x0650 */
   uint32_t gpio4a_od;                          /* Address Offset: 0x0740 */
   uint32_t gpio4b_od;                          /* Address Offset: 0x0744 */
   uint32_t gpio4c_od;                          /* Address Offset: 0x0748 */
   uint32_t gpio4d_od;                          /* Address Offset: 0x074C */
   uint32_t reserved0750[64];                   /* Address Offset: 0x0750 */
   uint32_t vccio4_poc;                         /* Address Offset: 0x0850 */
};
check_member(rk3528_gpio4_ioc, vccio4_poc, 0x0850);
#endif