1 /* 2 * (C) Copyright 2020 Rockchip Electronics Co., Ltd. 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 #ifndef _ASM_ARCH_GRF_RK3568_H 7 #define _ASM_ARCH_GRF_RK3568_H 8 9 #include <common.h> 10 11 struct rk3568_grf { 12 unsigned int gpio1a_iomux_l; 13 unsigned int gpio1a_iomux_h; 14 unsigned int gpio1b_iomux_l; 15 unsigned int gpio1b_iomux_h; 16 unsigned int gpio1c_iomux_l; 17 unsigned int gpio1c_iomux_h; 18 unsigned int gpio1d_iomux_l; 19 unsigned int gpio1d_iomux_h; 20 unsigned int gpio2a_iomux_l; 21 unsigned int gpio2a_iomux_h; 22 unsigned int gpio2b_iomux_l; 23 unsigned int gpio2b_iomux_h; 24 unsigned int gpio2c_iomux_l; 25 unsigned int gpio2c_iomux_h; 26 unsigned int gpio2d_iomux_l; 27 unsigned int gpio2d_iomux_h; 28 unsigned int gpio3a_iomux_l; 29 unsigned int gpio3a_iomux_h; 30 unsigned int gpio3b_iomux_l; 31 unsigned int gpio3b_iomux_h; 32 unsigned int gpio3c_iomux_l; 33 unsigned int gpio3c_iomux_h; 34 unsigned int gpio3d_iomux_l; 35 unsigned int gpio3d_iomux_h; 36 unsigned int gpio4a_iomux_l; 37 unsigned int gpio4a_iomux_h; 38 unsigned int gpio4b_iomux_l; 39 unsigned int gpio4b_iomux_h; 40 unsigned int gpio4c_iomux_l; 41 unsigned int gpio4c_iomux_h; 42 unsigned int gpio4d_iomux_l; 43 unsigned int reserved0[(0x0080 - 0x0078) / 4 - 1]; 44 unsigned int gpio1a_p; 45 unsigned int gpio1b_p; 46 unsigned int gpio1c_p; 47 unsigned int gpio1d_p; 48 unsigned int gpio2a_p; 49 unsigned int gpio2b_p; 50 unsigned int gpio2c_p; 51 unsigned int gpio2d_p; 52 unsigned int gpio3a_p; 53 unsigned int gpio3b_p; 54 unsigned int gpio3c_p; 55 unsigned int gpio3d_p; 56 unsigned int gpio4a_p; 57 unsigned int gpio4b_p; 58 unsigned int gpio4c_p; 59 unsigned int gpio4d_p; 60 unsigned int gpio1a_ie; 61 unsigned int gpio1b_ie; 62 unsigned int gpio1c_ie; 63 unsigned int gpio1d_ie; 64 unsigned int gpio2a_ie; 65 unsigned int gpio2b_ie; 66 unsigned int gpio2c_ie; 67 unsigned int gpio2d_ie; 68 unsigned int gpio3a_ie; 69 unsigned int gpio3b_ie; 70 unsigned int gpio3c_ie; 71 unsigned int gpio3d_ie; 72 unsigned int gpio4a_ie; 73 unsigned int gpio4b_ie; 74 unsigned int gpio4c_ie; 75 unsigned int gpio4d_ie; 76 unsigned int gpio1a_opd; 77 unsigned int gpio1b_opd; 78 unsigned int gpio1c_opd; 79 unsigned int gpio1d_opd; 80 unsigned int gpio2a_opd; 81 unsigned int gpio2b_opd; 82 unsigned int gpio2c_opd; 83 unsigned int gpio2d_opd; 84 unsigned int gpio3a_opd; 85 unsigned int gpio3b_opd; 86 unsigned int gpio3c_opd; 87 unsigned int gpio3d_opd; 88 unsigned int gpio4a_opd; 89 unsigned int gpio4b_opd; 90 unsigned int gpio4c_opd; 91 unsigned int gpio4d_opd; 92 unsigned int gpio1a_sus; 93 unsigned int gpio1b_sus; 94 unsigned int gpio1c_sus; 95 unsigned int gpio1d_sus; 96 unsigned int gpio2a_sus; 97 unsigned int gpio2b_sus; 98 unsigned int gpio2c_sus; 99 unsigned int gpio2d_sus; 100 unsigned int gpio3a_sus; 101 unsigned int gpio3b_sus; 102 unsigned int gpio3c_sus; 103 unsigned int gpio3d_sus; 104 unsigned int gpio4a_sus; 105 unsigned int gpio4b_sus; 106 unsigned int gpio4c_sus; 107 unsigned int gpio4d_sus; 108 unsigned int gpio1a_sl; 109 unsigned int gpio1b_sl; 110 unsigned int gpio1c_sl; 111 unsigned int gpio1d_sl; 112 unsigned int gpio2a_sl; 113 unsigned int gpio2b_sl; 114 unsigned int gpio2c_sl; 115 unsigned int gpio2d_sl; 116 unsigned int gpio3a_sl; 117 unsigned int gpio3b_sl; 118 unsigned int gpio3c_sl; 119 unsigned int gpio3d_sl; 120 unsigned int gpio4a_sl; 121 unsigned int gpio4b_sl; 122 unsigned int gpio4c_sl; 123 unsigned int gpio4d_sl; 124 unsigned int reserved1[(0x0200 - 0x01bc) / 4 - 1]; 125 unsigned int gpio1a_ds_0; 126 unsigned int gpio1a_ds_1; 127 unsigned int gpio1a_ds_2; 128 unsigned int gpio1a_ds_3; 129 unsigned int gpio1b_ds_0; 130 unsigned int gpio1b_ds_1; 131 unsigned int gpio1b_ds_2; 132 unsigned int gpio1b_ds_3; 133 unsigned int gpio1c_ds_0; 134 unsigned int gpio1c_ds_1; 135 unsigned int gpio1c_ds_2; 136 unsigned int gpio1c_ds_3; 137 unsigned int gpio1d_ds_0; 138 unsigned int gpio1d_ds_1; 139 unsigned int gpio1d_ds_2; 140 unsigned int gpio1d_ds_3; 141 unsigned int gpio2a_ds_0; 142 unsigned int gpio2a_ds_1; 143 unsigned int gpio2a_ds_2; 144 unsigned int gpio2a_ds_3; 145 unsigned int gpio2b_ds_0; 146 unsigned int gpio2b_ds_1; 147 unsigned int gpio2b_ds_2; 148 unsigned int gpio2b_ds_3; 149 unsigned int gpio2c_ds_0; 150 unsigned int gpio2c_ds_1; 151 unsigned int gpio2c_ds_2; 152 unsigned int gpio2c_ds_3; 153 unsigned int gpio2d_ds_0; 154 unsigned int gpio2d_ds_1; 155 unsigned int gpio2d_ds_2; 156 unsigned int gpio2d_ds_3; 157 unsigned int gpio3a_ds_0; 158 unsigned int gpio3a_ds_1; 159 unsigned int gpio3a_ds_2; 160 unsigned int gpio3a_ds_3; 161 unsigned int gpio3b_ds_0; 162 unsigned int gpio3b_ds_1; 163 unsigned int gpio3b_ds_2; 164 unsigned int gpio3b_ds_3; 165 unsigned int gpio3c_ds_0; 166 unsigned int gpio3c_ds_1; 167 unsigned int gpio3c_ds_2; 168 unsigned int gpio3c_ds_3; 169 unsigned int gpio3d_ds_0; 170 unsigned int gpio3d_ds_1; 171 unsigned int gpio3d_ds_2; 172 unsigned int gpio3d_ds_3; 173 unsigned int gpio4a_ds_0; 174 unsigned int gpio4a_ds_1; 175 unsigned int gpio4a_ds_2; 176 unsigned int gpio4a_ds_3; 177 unsigned int gpio4b_ds_0; 178 unsigned int gpio4b_ds_1; 179 unsigned int gpio4b_ds_2; 180 unsigned int gpio4b_ds_3; 181 unsigned int gpio4c_ds_0; 182 unsigned int gpio4c_ds_1; 183 unsigned int gpio4c_ds_2; 184 unsigned int gpio4c_ds_3; 185 unsigned int gpio4d_ds_0; 186 unsigned int gpio4d_ds_1; 187 unsigned int gpio4d_ds_2; 188 unsigned int gpio4d_ds_3; 189 unsigned int iofunc_sel0; 190 unsigned int iofunc_sel1; 191 unsigned int iofunc_sel2; 192 unsigned int iofunc_sel3; 193 unsigned int iofunc_sel4; 194 unsigned int iofunc_sel5; 195 unsigned int reserved2[(0x0340 - 0x0314) / 4 - 1]; 196 unsigned int vi_con0; 197 unsigned int vi_con1; 198 unsigned int vi_status0; 199 unsigned int reserved3[(0x0360 - 0x0348) / 4 - 1]; 200 unsigned int vo_con0; 201 unsigned int vo_con1; 202 unsigned int vo_con2; 203 unsigned int vo_con3; 204 unsigned int reserved4[(0x0380 - 0x036c) / 4 - 1]; 205 unsigned int mac0_con0; 206 unsigned int mac0_con1; 207 unsigned int mac1_con0; 208 unsigned int mac1_con1; 209 unsigned int reserved5[(0x03a0 - 0x038c) / 4 - 1]; 210 unsigned int biu_con0; 211 unsigned int biu_con1; 212 unsigned int biu_con2; 213 unsigned int reserved6[(0x03c0 - 0x03a8) / 4 - 1]; 214 unsigned int gic_con0; 215 unsigned int gic_con1; 216 unsigned int gic_con2; 217 unsigned int reserved7[(0x03f0 - 0x03c8) / 4 - 1]; 218 unsigned int gpu_con0; 219 unsigned int gpu_con1; 220 unsigned int reserved8[(0x0400 - 0x03f4) / 4 - 1]; 221 unsigned int cpu_con0; 222 unsigned int reserved9[(0x0420 - 0x0400) / 4 - 1]; 223 unsigned int cpu_status0; 224 unsigned int reserved10[(0x0500 - 0x0420) / 4 - 1]; 225 unsigned int soc_con0; 226 unsigned int soc_con1; 227 unsigned int soc_con2; 228 unsigned int soc_con3; 229 unsigned int reserved11[(0x0514 - 0x050c) / 4 - 1]; 230 unsigned int soc_con5; 231 unsigned int soc_con6; 232 unsigned int reserved12[(0x0580 - 0x0518) / 4 - 1]; 233 unsigned int soc_status0; 234 unsigned int reserved13[(0x05c0 - 0x0580) / 4 - 1]; 235 unsigned int ram_con; 236 unsigned int core_ram_con; 237 unsigned int reserved14[(0x0600 - 0x05c4) / 4 - 1]; 238 unsigned int tsadc_con; 239 unsigned int reserved15[(0x0610 - 0x0600) / 4 - 1]; 240 unsigned int saradc_con; 241 unsigned int reserved16[(0x0700 - 0x0610) / 4 - 1]; 242 unsigned int gpupvtpll_con0; 243 unsigned int gpupvtpll_con1; 244 unsigned int gpupvtpll_con2; 245 unsigned int gpupvtpll_con3; 246 unsigned int reserved17[(0x0740 - 0x070c) / 4 - 1]; 247 unsigned int npupvtpll_con0; 248 unsigned int npupvtpll_con1; 249 unsigned int npupvtpll_con2; 250 unsigned int npupvtpll_con3; 251 unsigned int reserved18[(0x0800 - 0x074c) / 4 - 1]; 252 unsigned int chip_id; 253 unsigned int reserved19[(0x0840 - 0x0800) / 4 - 1]; 254 unsigned int gpio1c5_ds; 255 unsigned int gpio2a2_ds; 256 unsigned int gpio2b0_ds; 257 unsigned int gpio3a0_ds; 258 unsigned int gpio3a6_ds; 259 unsigned int gpio4a0_ds; 260 unsigned int reserved20[(0x0900 - 0x0854) / 4 - 1]; 261 unsigned int dmac0_con0; 262 unsigned int dmac0_con1; 263 unsigned int dmac0_con2; 264 unsigned int dmac0_con3; 265 unsigned int dmac0_con4; 266 unsigned int dmac0_con5; 267 unsigned int dmac0_con6; 268 unsigned int dmac0_con7; 269 unsigned int dmac0_con8; 270 unsigned int dmac0_con9; 271 unsigned int reserved21[(0x0940 - 0x0924) / 4 - 1]; 272 unsigned int dmac1_con0; 273 unsigned int dmac1_con1; 274 unsigned int dmac1_con2; 275 unsigned int dmac1_con3; 276 unsigned int dmac1_con4; 277 unsigned int dmac1_con5; 278 unsigned int dmac1_con6; 279 unsigned int dmac1_con7; 280 unsigned int dmac1_con8; 281 unsigned int dmac1_con9; 282 }; 283 284 check_member(rk3568_grf, dmac1_con9, 0x0964); 285 286 struct rk3568_pmugrf { 287 unsigned int pmu_gpio0a_iomux_l; 288 unsigned int pmu_gpio0a_iomux_h; 289 unsigned int pmu_gpio0b_iomux_l; 290 unsigned int pmu_gpio0b_iomux_h; 291 unsigned int pmu_gpio0c_iomux_l; 292 unsigned int pmu_gpio0c_iomux_h; 293 unsigned int pmu_gpio0d_iomux_l; 294 unsigned int reserved0[(0x0020 - 0x0018) / 4 - 1]; 295 unsigned int pmu_gpio0a_p; 296 unsigned int pmu_gpio0b_p; 297 unsigned int pmu_gpio0c_p; 298 unsigned int pmu_gpio0d_p; 299 unsigned int pmu_gpio0a_ie; 300 unsigned int pmu_gpio0b_ie; 301 unsigned int pmu_gpio0c_ie; 302 unsigned int pmu_gpio0d_ie; 303 unsigned int pmu_gpio0a_opd; 304 unsigned int pmu_gpio0b_opd; 305 unsigned int pmu_gpio0c_opd; 306 unsigned int pmu_gpio0d_opd; 307 unsigned int pmu_gpio0a_sus; 308 unsigned int pmu_gpio0b_sus; 309 unsigned int pmu_gpio0c_sus; 310 unsigned int pmu_gpio0d_sus; 311 unsigned int pmu_gpio0a_sl; 312 unsigned int pmu_gpio0b_sl; 313 unsigned int pmu_gpio0c_sl; 314 unsigned int pmu_gpio0d_sl; 315 unsigned int pmu_gpio0a_ds_0; 316 unsigned int pmu_gpio0a_ds_1; 317 unsigned int pmu_gpio0a_ds_2; 318 unsigned int pmu_gpio0a_ds_3; 319 unsigned int pmu_gpio0b_ds_0; 320 unsigned int pmu_gpio0b_ds_1; 321 unsigned int pmu_gpio0b_ds_2; 322 unsigned int pmu_gpio0b_ds_3; 323 unsigned int pmu_gpio0c_ds_0; 324 unsigned int pmu_gpio0c_ds_1; 325 unsigned int pmu_gpio0c_ds_2; 326 unsigned int pmu_gpio0c_ds_3; 327 unsigned int pmu_gpio0d_ds_0; 328 unsigned int pmu_gpio0d_ds_1; 329 unsigned int pmu_gpio0d_ds_2; 330 unsigned int pmu_gpio0d_ds_3; 331 unsigned int reserved1[(0x0100 - 0x00ac) / 4 - 1]; 332 unsigned int pmu_soc_con0; 333 unsigned int pmu_soc_con1; 334 unsigned int pmu_soc_con2; 335 unsigned int pmu_soc_con3; 336 unsigned int pmu_soc_con4; 337 unsigned int pmu_soc_con5; 338 unsigned int reserved2[(0x0124 - 0x0114) / 4 - 1]; 339 unsigned int pmu_io_vsel0; 340 unsigned int pmu_io_vsel1; 341 unsigned int pmu_io_vsel2; 342 unsigned int reserved3[(0x0180 - 0x012c) / 4 - 1]; 343 unsigned int pmu_dll_con0; 344 unsigned int reserved4[(0x0200 - 0x0180) / 4 - 1]; 345 unsigned int pmu_os_reg0; 346 unsigned int pmu_os_reg1; 347 unsigned int pmu_os_reg2; 348 unsigned int pmu_os_reg3; 349 unsigned int pmu_os_reg4; 350 unsigned int pmu_os_reg5; 351 unsigned int pmu_os_reg6; 352 unsigned int pmu_os_reg7; 353 unsigned int pmu_os_reg8; 354 unsigned int pmu_os_reg9; 355 unsigned int pmu_os_reg10; 356 unsigned int pmu_os_reg11; 357 unsigned int pmu_reset_function_status; 358 unsigned int pmu_reset_function_clr; 359 unsigned int reserved5[(0x0380 - 0x0234) / 4 - 1]; 360 unsigned int pmu_sig_detect_con; 361 unsigned int reserved6[(0x0390 - 0x0380) / 4 - 1]; 362 unsigned int pmu_sig_detect_status; 363 unsigned int reserved7[(0x03a0 - 0x0390) / 4 - 1]; 364 unsigned int pmu_sig_detect_status_clear; 365 unsigned int reserved8[(0x03b0 - 0x03a0) / 4 - 1]; 366 unsigned int pmu_sdmmc_det_counter; 367 }; 368 369 check_member(rk3568_pmugrf, pmu_sdmmc_det_counter, 0x03b0); 370 371 struct rk3568_ddrgrf { 372 unsigned int ddr_con0; 373 unsigned int ddr_con1; 374 unsigned int ddr_con2; 375 unsigned int ddr_con3; 376 unsigned int ddr_con4; 377 unsigned int ddr_split_con; 378 unsigned int reserved0[(0x0020 - 0x0014) / 4 - 1]; 379 unsigned int ddr_lp_con; 380 unsigned int reserved1[(0x0100 - 0x0020) / 4 - 1]; 381 unsigned int ddr_status0; 382 unsigned int ddr_status1; 383 unsigned int ddr_status2; 384 unsigned int ddr_status3; 385 unsigned int ddr_status4; 386 unsigned int ddr_status5; 387 unsigned int ddr_status6; 388 unsigned int ddr_status7; 389 unsigned int ddr_status8; 390 unsigned int ddr_status9; 391 unsigned int reserved2[(0x0130 - 0x0124) / 4 - 1]; 392 unsigned int ddr_status10; 393 unsigned int ddr_status11; 394 unsigned int ddr_status12; 395 }; 396 397 check_member(rk3568_ddrgrf, ddr_status12, 0x0138); 398 399 #endif 400