1*04e2aa7fSJoseph Chen /* 2*04e2aa7fSJoseph Chen * (C) Copyright 2022 Rockchip Electronics Co., Ltd. 3*04e2aa7fSJoseph Chen * 4*04e2aa7fSJoseph Chen * SPDX-License-Identifier: GPL-2.0+ 5*04e2aa7fSJoseph Chen */ 6*04e2aa7fSJoseph Chen #ifndef _ASM_ARCH_IOC_RV1106_H 7*04e2aa7fSJoseph Chen #define _ASM_ARCH_IOC_RV1106_H 8*04e2aa7fSJoseph Chen 9*04e2aa7fSJoseph Chen #include <common.h> 10*04e2aa7fSJoseph Chen 11*04e2aa7fSJoseph Chen struct rv1106_gpio0_ioc { 12*04e2aa7fSJoseph Chen unsigned int gpio0a_iomux_sel_l; 13*04e2aa7fSJoseph Chen unsigned int gpio0a_iomux_sel_h; 14*04e2aa7fSJoseph Chen unsigned int reserved0[(0x0010 - 0x0004) / 4 - 1]; 15*04e2aa7fSJoseph Chen unsigned int gpio0a_ds0; 16*04e2aa7fSJoseph Chen unsigned int gpio0a_ds1; 17*04e2aa7fSJoseph Chen unsigned int gpio0a_ds2; 18*04e2aa7fSJoseph Chen unsigned int gpio0a_ds3; 19*04e2aa7fSJoseph Chen unsigned int reserved1[(0x0030 - 0x001c) / 4 - 1]; 20*04e2aa7fSJoseph Chen unsigned int gpio0a_ie; 21*04e2aa7fSJoseph Chen unsigned int reserved2[(0x0038 - 0x0030) / 4 - 1]; 22*04e2aa7fSJoseph Chen unsigned int gpio0a_p; 23*04e2aa7fSJoseph Chen unsigned int reserved3[(0x0040 - 0x0038) / 4 - 1]; 24*04e2aa7fSJoseph Chen unsigned int gpio0a_sus; 25*04e2aa7fSJoseph Chen unsigned int reserved4[(0x0048 - 0x0040) / 4 - 1]; 26*04e2aa7fSJoseph Chen unsigned int gpio0a_sl; 27*04e2aa7fSJoseph Chen unsigned int reserved5[(0x0058 - 0x0048) / 4 - 1]; 28*04e2aa7fSJoseph Chen unsigned int gpio0a_ie_smt; 29*04e2aa7fSJoseph Chen unsigned int reserved6[(0x0068 - 0x0058) / 4 - 1]; 30*04e2aa7fSJoseph Chen unsigned int gpio0a_od; 31*04e2aa7fSJoseph Chen }; 32*04e2aa7fSJoseph Chen check_member(rv1106_gpio0_ioc, gpio0a_od, 0x0068); 33*04e2aa7fSJoseph Chen 34*04e2aa7fSJoseph Chen struct rv1106_gpio1_ioc { 35*04e2aa7fSJoseph Chen unsigned int gpio1a_iomux_sel_l; 36*04e2aa7fSJoseph Chen unsigned int gpio1a_iomux_sel_h; 37*04e2aa7fSJoseph Chen unsigned int gpio1b_iomux_sel_l; 38*04e2aa7fSJoseph Chen unsigned int reserved0[(0x0010 - 0x0008) / 4 - 1]; 39*04e2aa7fSJoseph Chen unsigned int gpio1c_iomux_sel_l; 40*04e2aa7fSJoseph Chen unsigned int gpio1c_iomux_sel_h; 41*04e2aa7fSJoseph Chen unsigned int gpio1d_iomux_sel_l; 42*04e2aa7fSJoseph Chen unsigned int reserved1[(0x0080 - 0x0018) / 4 - 1]; 43*04e2aa7fSJoseph Chen unsigned int gpio1a_ds0; 44*04e2aa7fSJoseph Chen unsigned int gpio1a_ds1; 45*04e2aa7fSJoseph Chen unsigned int gpio1a_ds2; 46*04e2aa7fSJoseph Chen unsigned int reserved2[(0x0090 - 0x0088) / 4 - 1]; 47*04e2aa7fSJoseph Chen unsigned int gpio1b_ds0; 48*04e2aa7fSJoseph Chen unsigned int gpio1b_ds1; 49*04e2aa7fSJoseph Chen unsigned int reserved3[(0x00a0 - 0x0094) / 4 - 1]; 50*04e2aa7fSJoseph Chen unsigned int gpio1c_ds0; 51*04e2aa7fSJoseph Chen unsigned int gpio1c_ds1; 52*04e2aa7fSJoseph Chen unsigned int gpio1c_ds2; 53*04e2aa7fSJoseph Chen unsigned int gpio1c_ds3; 54*04e2aa7fSJoseph Chen unsigned int gpio1d_ds0; 55*04e2aa7fSJoseph Chen unsigned int gpio1d_ds1; 56*04e2aa7fSJoseph Chen unsigned int reserved4[(0x0180 - 0x00b4) / 4 - 1]; 57*04e2aa7fSJoseph Chen unsigned int gpio1a_ie; 58*04e2aa7fSJoseph Chen unsigned int gpio1b_ie; 59*04e2aa7fSJoseph Chen unsigned int gpio1c_ie; 60*04e2aa7fSJoseph Chen unsigned int gpio1d_ie; 61*04e2aa7fSJoseph Chen unsigned int reserved5[(0x01c0 - 0x018c) / 4 - 1]; 62*04e2aa7fSJoseph Chen unsigned int gpio1a_p; 63*04e2aa7fSJoseph Chen unsigned int gpio1b_p; 64*04e2aa7fSJoseph Chen unsigned int gpio1c_p; 65*04e2aa7fSJoseph Chen unsigned int gpio1d_p; 66*04e2aa7fSJoseph Chen unsigned int reserved6[(0x0200 - 0x01cc) / 4 - 1]; 67*04e2aa7fSJoseph Chen unsigned int gpio1a_sus; 68*04e2aa7fSJoseph Chen unsigned int gpio1b_sus; 69*04e2aa7fSJoseph Chen unsigned int gpio1c_sus; 70*04e2aa7fSJoseph Chen unsigned int gpio1d_sus; 71*04e2aa7fSJoseph Chen unsigned int reserved7[(0x0240 - 0x020c) / 4 - 1]; 72*04e2aa7fSJoseph Chen unsigned int gpio1a_sl; 73*04e2aa7fSJoseph Chen unsigned int gpio1b_sl; 74*04e2aa7fSJoseph Chen unsigned int gpio1c_sl; 75*04e2aa7fSJoseph Chen unsigned int gpio1d_sl; 76*04e2aa7fSJoseph Chen unsigned int reserved8[(0x0280 - 0x024c) / 4 - 1]; 77*04e2aa7fSJoseph Chen unsigned int gpio1a_ie_smt; 78*04e2aa7fSJoseph Chen unsigned int gpio1b_ie_smt; 79*04e2aa7fSJoseph Chen unsigned int gpio1c_ie_smt; 80*04e2aa7fSJoseph Chen unsigned int gpio1d_ie_smt; 81*04e2aa7fSJoseph Chen unsigned int reserved9[(0x02c0 - 0x028c) / 4 - 1]; 82*04e2aa7fSJoseph Chen unsigned int gpio1a_od; 83*04e2aa7fSJoseph Chen unsigned int gpio1b_od; 84*04e2aa7fSJoseph Chen unsigned int gpio1c_od; 85*04e2aa7fSJoseph Chen unsigned int gpio1d_od; 86*04e2aa7fSJoseph Chen unsigned int reserved10[(0x02f4 - 0x02cc) / 4 - 1]; 87*04e2aa7fSJoseph Chen unsigned int force_jtag_uart; 88*04e2aa7fSJoseph Chen }; 89*04e2aa7fSJoseph Chen check_member(rv1106_gpio1_ioc, force_jtag_uart, 0x02f4); 90*04e2aa7fSJoseph Chen 91*04e2aa7fSJoseph Chen struct rv1106_gpio2_ioc { 92*04e2aa7fSJoseph Chen unsigned int reserved0[(0x0020 - 0x0000) / 4]; 93*04e2aa7fSJoseph Chen unsigned int gpio2a_iomux_sel_l; 94*04e2aa7fSJoseph Chen unsigned int gpio2a_iomux_sel_h; 95*04e2aa7fSJoseph Chen unsigned int gpio2b_iomux_sel_l; 96*04e2aa7fSJoseph Chen unsigned int reserved1[(0x00c0 - 0x0028) / 4 - 1]; 97*04e2aa7fSJoseph Chen unsigned int gpio2a_ds0; 98*04e2aa7fSJoseph Chen unsigned int gpio2a_ds1; 99*04e2aa7fSJoseph Chen unsigned int gpio2a_ds2; 100*04e2aa7fSJoseph Chen unsigned int gpio2a_ds3; 101*04e2aa7fSJoseph Chen unsigned int gpio2b_ds0; 102*04e2aa7fSJoseph Chen unsigned int reserved2[(0x0190 - 0x00d0) / 4 - 1]; 103*04e2aa7fSJoseph Chen unsigned int gpio2a_ie; 104*04e2aa7fSJoseph Chen unsigned int gpio2b_ie; 105*04e2aa7fSJoseph Chen unsigned int reserved3[(0x01d0 - 0x0194) / 4 - 1]; 106*04e2aa7fSJoseph Chen unsigned int gpio2a_p; 107*04e2aa7fSJoseph Chen unsigned int gpio2b_p; 108*04e2aa7fSJoseph Chen unsigned int reserved4[(0x0210 - 0x01d4) / 4 - 1]; 109*04e2aa7fSJoseph Chen unsigned int gpio2a_sus; 110*04e2aa7fSJoseph Chen unsigned int gpio2b_sus; 111*04e2aa7fSJoseph Chen unsigned int reserved5[(0x0250 - 0x0214) / 4 - 1]; 112*04e2aa7fSJoseph Chen unsigned int gpio2a_sl; 113*04e2aa7fSJoseph Chen unsigned int gpio2b_sl; 114*04e2aa7fSJoseph Chen unsigned int reserved6[(0x0290 - 0x0254) / 4 - 1]; 115*04e2aa7fSJoseph Chen unsigned int gpio2a_ie_smt; 116*04e2aa7fSJoseph Chen unsigned int gpio2b_ie_smt; 117*04e2aa7fSJoseph Chen unsigned int reserved7[(0x02d0 - 0x0294) / 4 - 1]; 118*04e2aa7fSJoseph Chen unsigned int gpio2a_od; 119*04e2aa7fSJoseph Chen unsigned int gpio2b_od; 120*04e2aa7fSJoseph Chen }; 121*04e2aa7fSJoseph Chen check_member(rv1106_gpio2_ioc, gpio2b_od, 0x02d4); 122*04e2aa7fSJoseph Chen 123*04e2aa7fSJoseph Chen struct rv1106_gpio3_ioc { 124*04e2aa7fSJoseph Chen unsigned int reserved0[(0x0040 - 0x0000) / 4]; 125*04e2aa7fSJoseph Chen unsigned int gpio3a_iomux_sel_l; 126*04e2aa7fSJoseph Chen unsigned int gpio3a_iomux_sel_h; 127*04e2aa7fSJoseph Chen unsigned int gpio3b_iomux_sel_l; 128*04e2aa7fSJoseph Chen unsigned int gpio3b_iomux_sel_h; 129*04e2aa7fSJoseph Chen unsigned int gpio3c_iomux_sel_l; 130*04e2aa7fSJoseph Chen unsigned int gpio3c_iomux_sel_h; 131*04e2aa7fSJoseph Chen unsigned int gpio3d_iomux_sel_l; 132*04e2aa7fSJoseph Chen unsigned int reserved1[(0x0100 - 0x0058) / 4 - 1]; 133*04e2aa7fSJoseph Chen unsigned int gpio3a_ds0; 134*04e2aa7fSJoseph Chen unsigned int gpio3a_ds1; 135*04e2aa7fSJoseph Chen unsigned int gpio3a_ds2; 136*04e2aa7fSJoseph Chen unsigned int gpio3a_ds3; 137*04e2aa7fSJoseph Chen unsigned int reserved2[(0x0128 - 0x010c) / 4 - 1]; 138*04e2aa7fSJoseph Chen unsigned int gpio3c_ds2; 139*04e2aa7fSJoseph Chen unsigned int gpio3c_ds3; 140*04e2aa7fSJoseph Chen unsigned int gpio3d_ds0; 141*04e2aa7fSJoseph Chen unsigned int gpio3d_ds1; 142*04e2aa7fSJoseph Chen unsigned int reserved3[(0x01a0 - 0x0134) / 4 - 1]; 143*04e2aa7fSJoseph Chen unsigned int gpio3a_ie; 144*04e2aa7fSJoseph Chen unsigned int reserved4[(0x01a8 - 0x01a0) / 4 - 1]; 145*04e2aa7fSJoseph Chen unsigned int gpio3c_ie; 146*04e2aa7fSJoseph Chen unsigned int gpio3d_ie; 147*04e2aa7fSJoseph Chen unsigned int reserved5[(0x01e0 - 0x01ac) / 4 - 1]; 148*04e2aa7fSJoseph Chen unsigned int gpio3a_p; 149*04e2aa7fSJoseph Chen unsigned int reserved6[(0x01e8 - 0x01e0) / 4 - 1]; 150*04e2aa7fSJoseph Chen unsigned int gpio3c_p; 151*04e2aa7fSJoseph Chen unsigned int gpio3d_p; 152*04e2aa7fSJoseph Chen unsigned int reserved7[(0x0220 - 0x01ec) / 4 - 1]; 153*04e2aa7fSJoseph Chen unsigned int gpio3a_sus; 154*04e2aa7fSJoseph Chen unsigned int reserved8[(0x0228 - 0x0220) / 4 - 1]; 155*04e2aa7fSJoseph Chen unsigned int gpio3c_sus; 156*04e2aa7fSJoseph Chen unsigned int gpio3d_sus; 157*04e2aa7fSJoseph Chen unsigned int reserved9[(0x0260 - 0x022c) / 4 - 1]; 158*04e2aa7fSJoseph Chen unsigned int gpio3a_sl; 159*04e2aa7fSJoseph Chen unsigned int reserved10[(0x0268 - 0x0260) / 4 - 1]; 160*04e2aa7fSJoseph Chen unsigned int gpio3c_sl; 161*04e2aa7fSJoseph Chen unsigned int gpio3d_sl; 162*04e2aa7fSJoseph Chen unsigned int reserved11[(0x02a0 - 0x026c) / 4 - 1]; 163*04e2aa7fSJoseph Chen unsigned int gpio3a_ie_smt; 164*04e2aa7fSJoseph Chen unsigned int reserved12[(0x02a8 - 0x02a0) / 4 - 1]; 165*04e2aa7fSJoseph Chen unsigned int gpio3c_ie_smt; 166*04e2aa7fSJoseph Chen unsigned int gpio3d_ie_smt; 167*04e2aa7fSJoseph Chen unsigned int reserved13[(0x02e0 - 0x02ac) / 4 - 1]; 168*04e2aa7fSJoseph Chen unsigned int gpio3a_od; 169*04e2aa7fSJoseph Chen unsigned int reserved14[(0x02e8 - 0x02e0) / 4 - 1]; 170*04e2aa7fSJoseph Chen unsigned int gpio3c_od; 171*04e2aa7fSJoseph Chen unsigned int gpio3d_od; 172*04e2aa7fSJoseph Chen unsigned int reserved15[(0x02f4 - 0x02ec) / 4 - 1]; 173*04e2aa7fSJoseph Chen unsigned int force_jtag_sdmmc; 174*04e2aa7fSJoseph Chen }; 175*04e2aa7fSJoseph Chen check_member(rv1106_gpio3_ioc, force_jtag_sdmmc, 0x02f4); 176*04e2aa7fSJoseph Chen 177*04e2aa7fSJoseph Chen struct rv1106_gpio4_ioc { 178*04e2aa7fSJoseph Chen unsigned int gpio4a_iomux_sel_l; 179*04e2aa7fSJoseph Chen unsigned int gpio4a_iomux_sel_h; 180*04e2aa7fSJoseph Chen unsigned int gpio4b_iomux_sel_l; 181*04e2aa7fSJoseph Chen unsigned int reserved0[(0x0010 - 0x0008) / 4 - 1]; 182*04e2aa7fSJoseph Chen unsigned int gpio4c_iomux_sel_l; 183*04e2aa7fSJoseph Chen unsigned int reserved1[(0x0020 - 0x0010) / 4 - 1]; 184*04e2aa7fSJoseph Chen unsigned int gpio4a_ds0; 185*04e2aa7fSJoseph Chen unsigned int gpio4a_ds1; 186*04e2aa7fSJoseph Chen unsigned int gpio4a_ds2; 187*04e2aa7fSJoseph Chen unsigned int gpio4a_ds3; 188*04e2aa7fSJoseph Chen unsigned int gpio4b_ds0; 189*04e2aa7fSJoseph Chen unsigned int reserved2[(0x0060 - 0x0030) / 4 - 1]; 190*04e2aa7fSJoseph Chen unsigned int gpio4a_ie; 191*04e2aa7fSJoseph Chen unsigned int gpio4b_ie; 192*04e2aa7fSJoseph Chen unsigned int reserved3[(0x0070 - 0x0064) / 4 - 1]; 193*04e2aa7fSJoseph Chen unsigned int gpio4a_p; 194*04e2aa7fSJoseph Chen unsigned int gpio4b_p; 195*04e2aa7fSJoseph Chen unsigned int reserved4[(0x0080 - 0x0074) / 4 - 1]; 196*04e2aa7fSJoseph Chen unsigned int gpio4a_sus; 197*04e2aa7fSJoseph Chen unsigned int gpio4b_sus; 198*04e2aa7fSJoseph Chen unsigned int reserved5[(0x0090 - 0x0084) / 4 - 1]; 199*04e2aa7fSJoseph Chen unsigned int gpio4a_sl; 200*04e2aa7fSJoseph Chen unsigned int gpio4b_sl; 201*04e2aa7fSJoseph Chen unsigned int reserved6[(0x00a0 - 0x0094) / 4 - 1]; 202*04e2aa7fSJoseph Chen unsigned int gpio4a_ie_smt; 203*04e2aa7fSJoseph Chen unsigned int gpio4b_ie_smt; 204*04e2aa7fSJoseph Chen unsigned int reserved7[(0x00b0 - 0x00a4) / 4 - 1]; 205*04e2aa7fSJoseph Chen unsigned int gpio4a_od; 206*04e2aa7fSJoseph Chen unsigned int gpio4b_od; 207*04e2aa7fSJoseph Chen unsigned int reserved8[(0x00c0 - 0x00b4) / 4 - 1]; 208*04e2aa7fSJoseph Chen unsigned int saradc_io_con; 209*04e2aa7fSJoseph Chen unsigned int reserved9[(0x0200 - 0x00c0) / 4 - 1]; 210*04e2aa7fSJoseph Chen unsigned int vccio3_vol_con; 211*04e2aa7fSJoseph Chen }; 212*04e2aa7fSJoseph Chen check_member(rv1106_gpio4_ioc, vccio3_vol_con, 0x0200); 213*04e2aa7fSJoseph Chen 214*04e2aa7fSJoseph Chen #endif 215