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