0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef _ASM_POWERPC_IMMAP_QE_H
0013 #define _ASM_POWERPC_IMMAP_QE_H
0014 #ifdef __KERNEL__
0015
0016 #include <linux/types.h>
0017
0018 #include <asm/io.h>
0019
0020 #define QE_IMMAP_SIZE (1024 * 1024)
0021
0022
0023 struct qe_iram {
0024 __be32 iadd;
0025 __be32 idata;
0026 u8 res0[0x04];
0027 __be32 iready;
0028 u8 res1[0x70];
0029 } __attribute__ ((packed));
0030
0031
0032 struct qe_ic_regs {
0033 __be32 qicr;
0034 __be32 qivec;
0035 __be32 qripnr;
0036 __be32 qipnr;
0037 __be32 qipxcc;
0038 __be32 qipycc;
0039 __be32 qipwcc;
0040 __be32 qipzcc;
0041 __be32 qimr;
0042 __be32 qrimr;
0043 __be32 qicnr;
0044 u8 res0[0x4];
0045 __be32 qiprta;
0046 __be32 qiprtb;
0047 u8 res1[0x4];
0048 __be32 qricr;
0049 u8 res2[0x20];
0050 __be32 qhivec;
0051 u8 res3[0x1C];
0052 } __attribute__ ((packed));
0053
0054
0055 struct cp_qe {
0056 __be32 cecr;
0057 __be32 ceccr;
0058 __be32 cecdr;
0059 u8 res0[0xA];
0060 __be16 ceter;
0061 u8 res1[0x2];
0062 __be16 cetmr;
0063 __be32 cetscr;
0064 __be32 cetsr1;
0065 __be32 cetsr2;
0066 u8 res2[0x8];
0067 __be32 cevter;
0068 __be32 cevtmr;
0069 __be16 cercr;
0070 u8 res3[0x2];
0071 u8 res4[0x24];
0072 __be16 ceexe1;
0073 u8 res5[0x2];
0074 __be16 ceexm1;
0075 u8 res6[0x2];
0076 __be16 ceexe2;
0077 u8 res7[0x2];
0078 __be16 ceexm2;
0079 u8 res8[0x2];
0080 __be16 ceexe3;
0081 u8 res9[0x2];
0082 __be16 ceexm3;
0083 u8 res10[0x2];
0084 __be16 ceexe4;
0085 u8 res11[0x2];
0086 __be16 ceexm4;
0087 u8 res12[0x3A];
0088 __be32 ceurnr;
0089 u8 res13[0x244];
0090 } __attribute__ ((packed));
0091
0092
0093 struct qe_mux {
0094 __be32 cmxgcr;
0095 __be32 cmxsi1cr_l;
0096 __be32 cmxsi1cr_h;
0097 __be32 cmxsi1syr;
0098 __be32 cmxucr[4];
0099 __be32 cmxupcr;
0100 u8 res0[0x1C];
0101 } __attribute__ ((packed));
0102
0103
0104 struct qe_timers {
0105 u8 gtcfr1;
0106 u8 res0[0x3];
0107 u8 gtcfr2;
0108 u8 res1[0xB];
0109 __be16 gtmdr1;
0110 __be16 gtmdr2;
0111 __be16 gtrfr1;
0112 __be16 gtrfr2;
0113 __be16 gtcpr1;
0114 __be16 gtcpr2;
0115 __be16 gtcnr1;
0116 __be16 gtcnr2;
0117 __be16 gtmdr3;
0118 __be16 gtmdr4;
0119 __be16 gtrfr3;
0120 __be16 gtrfr4;
0121 __be16 gtcpr3;
0122 __be16 gtcpr4;
0123 __be16 gtcnr3;
0124 __be16 gtcnr4;
0125 __be16 gtevr1;
0126 __be16 gtevr2;
0127 __be16 gtevr3;
0128 __be16 gtevr4;
0129 __be16 gtps;
0130 u8 res2[0x46];
0131 } __attribute__ ((packed));
0132
0133
0134 struct qe_brg {
0135 __be32 brgc[16];
0136 u8 res0[0x40];
0137 } __attribute__ ((packed));
0138
0139
0140 struct spi {
0141 u8 res0[0x20];
0142 __be32 spmode;
0143 u8 res1[0x2];
0144 u8 spie;
0145 u8 res2[0x1];
0146 u8 res3[0x2];
0147 u8 spim;
0148 u8 res4[0x1];
0149 u8 res5[0x1];
0150 u8 spcom;
0151 u8 res6[0x2];
0152 __be32 spitd;
0153 __be32 spird;
0154 u8 res7[0x8];
0155 } __attribute__ ((packed));
0156
0157
0158 struct si1 {
0159 __be16 sixmr1[4];
0160 u8 siglmr1_h;
0161 u8 res0[0x1];
0162 u8 sicmdr1_h;
0163 u8 res2[0x1];
0164 u8 sistr1_h;
0165 u8 res3[0x1];
0166 __be16 sirsr1_h;
0167 u8 sitarc1;
0168 u8 sitbrc1;
0169 u8 sitcrc1;
0170 u8 sitdrc1;
0171 u8 sirarc1;
0172 u8 sirbrc1;
0173 u8 sircrc1;
0174 u8 sirdrc1;
0175 u8 res4[0x8];
0176 __be16 siemr1;
0177 __be16 sifmr1;
0178 __be16 sigmr1;
0179 __be16 sihmr1;
0180 u8 siglmg1_l;
0181 u8 res5[0x1];
0182 u8 sicmdr1_l;
0183 u8 res6[0x1];
0184 u8 sistr1_l;
0185 u8 res7[0x1];
0186 __be16 sirsr1_l;
0187 u8 siterc1;
0188 u8 sitfrc1;
0189 u8 sitgrc1;
0190 u8 sithrc1;
0191 u8 sirerc1;
0192 u8 sirfrc1;
0193 u8 sirgrc1;
0194 u8 sirhrc1;
0195 u8 res8[0x8];
0196 __be32 siml1;
0197 u8 siedm1;
0198 u8 res9[0xBB];
0199 } __attribute__ ((packed));
0200
0201
0202 struct sir {
0203 u8 tx[0x400];
0204 u8 rx[0x400];
0205 u8 res0[0x800];
0206 } __attribute__ ((packed));
0207
0208
0209 struct qe_usb_ctlr {
0210 u8 usb_usmod;
0211 u8 usb_usadr;
0212 u8 usb_uscom;
0213 u8 res1[1];
0214 __be16 usb_usep[4];
0215 u8 res2[4];
0216 __be16 usb_usber;
0217 u8 res3[2];
0218 __be16 usb_usbmr;
0219 u8 res4[1];
0220 u8 usb_usbs;
0221 __be16 usb_ussft;
0222 u8 res5[2];
0223 __be16 usb_usfrn;
0224 u8 res6[0x22];
0225 } __attribute__ ((packed));
0226
0227
0228 struct qe_mcc {
0229 __be32 mcce;
0230 __be32 mccm;
0231 __be32 mccf;
0232 __be32 merl;
0233 u8 res0[0xF0];
0234 } __attribute__ ((packed));
0235
0236
0237 struct ucc_slow {
0238 __be32 gumr_l;
0239 __be32 gumr_h;
0240 __be16 upsmr;
0241 u8 res0[0x2];
0242 __be16 utodr;
0243 __be16 udsr;
0244 __be16 ucce;
0245 u8 res1[0x2];
0246 __be16 uccm;
0247 u8 res2[0x1];
0248 u8 uccs;
0249 u8 res3[0x24];
0250 __be16 utpt;
0251 u8 res4[0x52];
0252 u8 guemr;
0253 } __attribute__ ((packed));
0254
0255
0256 struct ucc_fast {
0257 __be32 gumr;
0258 __be32 upsmr;
0259 __be16 utodr;
0260 u8 res0[0x2];
0261 __be16 udsr;
0262 u8 res1[0x2];
0263 __be32 ucce;
0264 __be32 uccm;
0265 u8 uccs;
0266 u8 res2[0x7];
0267 __be32 urfb;
0268 __be16 urfs;
0269 u8 res3[0x2];
0270 __be16 urfet;
0271 __be16 urfset;
0272
0273 __be32 utfb;
0274 __be16 utfs;
0275 u8 res4[0x2];
0276 __be16 utfet;
0277 u8 res5[0x2];
0278 __be16 utftt;
0279 u8 res6[0x2];
0280 __be16 utpt;
0281 u8 res7[0x2];
0282 __be32 urtry;
0283 u8 res8[0x4C];
0284 u8 guemr;
0285 } __attribute__ ((packed));
0286
0287 struct ucc {
0288 union {
0289 struct ucc_slow slow;
0290 struct ucc_fast fast;
0291 u8 res[0x200];
0292 };
0293 } __attribute__ ((packed));
0294
0295
0296 struct upc {
0297 __be32 upgcr;
0298 __be32 uplpa;
0299 __be32 uphec;
0300 __be32 upuc;
0301 __be32 updc1;
0302 __be32 updc2;
0303 __be32 updc3;
0304 __be32 updc4;
0305 __be32 upstpa;
0306 u8 res0[0xC];
0307 __be32 updrs1_h;
0308 __be32 updrs1_l;
0309 __be32 updrs2_h;
0310 __be32 updrs2_l;
0311 __be32 updrs3_h;
0312 __be32 updrs3_l;
0313 __be32 updrs4_h;
0314 __be32 updrs4_l;
0315 __be32 updrp1;
0316 __be32 updrp2;
0317 __be32 updrp3;
0318 __be32 updrp4;
0319 __be32 upde1;
0320 __be32 upde2;
0321 __be32 upde3;
0322 __be32 upde4;
0323 __be16 uprp1;
0324 __be16 uprp2;
0325 __be16 uprp3;
0326 __be16 uprp4;
0327 u8 res1[0x8];
0328 __be16 uptirr1_0;
0329 __be16 uptirr1_1;
0330 __be16 uptirr1_2;
0331 __be16 uptirr1_3;
0332 __be16 uptirr2_0;
0333 __be16 uptirr2_1;
0334 __be16 uptirr2_2;
0335 __be16 uptirr2_3;
0336 __be16 uptirr3_0;
0337 __be16 uptirr3_1;
0338 __be16 uptirr3_2;
0339 __be16 uptirr3_3;
0340 __be16 uptirr4_0;
0341 __be16 uptirr4_1;
0342 __be16 uptirr4_2;
0343 __be16 uptirr4_3;
0344 __be32 uper1;
0345 __be32 uper2;
0346 __be32 uper3;
0347 __be32 uper4;
0348 u8 res2[0x150];
0349 } __attribute__ ((packed));
0350
0351
0352 struct sdma {
0353 __be32 sdsr;
0354 __be32 sdmr;
0355 __be32 sdtr1;
0356 __be32 sdtr2;
0357 __be32 sdhy1;
0358 __be32 sdhy2;
0359 __be32 sdta1;
0360 __be32 sdta2;
0361 __be32 sdtm1;
0362 __be32 sdtm2;
0363 u8 res0[0x10];
0364 __be32 sdaqr;
0365 __be32 sdaqmr;
0366 u8 res1[0x4];
0367 __be32 sdebcr;
0368 u8 res2[0x38];
0369 } __attribute__ ((packed));
0370
0371
0372 struct dbg {
0373 __be32 bpdcr;
0374 __be32 bpdsr;
0375 __be32 bpdmr;
0376 __be32 bprmrr0;
0377 __be32 bprmrr1;
0378 u8 res0[0x8];
0379 __be32 bprmtr0;
0380 __be32 bprmtr1;
0381 u8 res1[0x8];
0382 __be32 bprmir;
0383 __be32 bprmsr;
0384 __be32 bpemr;
0385 u8 res2[0x48];
0386 } __attribute__ ((packed));
0387
0388
0389
0390
0391
0392 struct rsp {
0393 __be32 tibcr[16];
0394 u8 res0[64];
0395 __be32 ibcr0;
0396 __be32 ibs0;
0397 __be32 ibcnr0;
0398 u8 res1[4];
0399 __be32 ibcr1;
0400 __be32 ibs1;
0401 __be32 ibcnr1;
0402 __be32 npcr;
0403 __be32 dbcr;
0404 __be32 dbar;
0405 __be32 dbamr;
0406 __be32 dbsr;
0407 __be32 dbcnr;
0408 u8 res2[12];
0409 __be32 dbdr_h;
0410 __be32 dbdr_l;
0411 __be32 dbdmr_h;
0412 __be32 dbdmr_l;
0413 __be32 bsr;
0414 __be32 bor;
0415 __be32 bior;
0416 u8 res3[4];
0417 __be32 iatr[4];
0418 __be32 eccr;
0419 __be32 eicr;
0420 u8 res4[0x100-0xf8];
0421 } __attribute__ ((packed));
0422
0423 struct qe_immap {
0424 struct qe_iram iram;
0425 struct qe_ic_regs ic;
0426 struct cp_qe cp;
0427 struct qe_mux qmx;
0428 struct qe_timers qet;
0429 struct spi spi[0x2];
0430 struct qe_mcc mcc;
0431 struct qe_brg brg;
0432 struct qe_usb_ctlr usb;
0433 struct si1 si1;
0434 u8 res11[0x800];
0435 struct sir sir;
0436 struct ucc ucc1;
0437 struct ucc ucc3;
0438 struct ucc ucc5;
0439 struct ucc ucc7;
0440 u8 res12[0x600];
0441 struct upc upc1;
0442 struct ucc ucc2;
0443 struct ucc ucc4;
0444 struct ucc ucc6;
0445 struct ucc ucc8;
0446 u8 res13[0x600];
0447 struct upc upc2;
0448 struct sdma sdma;
0449 struct dbg dbg;
0450
0451 struct rsp rsp[0x2];
0452
0453
0454 u8 res14[0x300];
0455 u8 res15[0x3A00];
0456 u8 res16[0x8000];
0457 u8 muram[0xC000];
0458
0459 u8 res17[0x24000];
0460 u8 res18[0xC0000];
0461 } __attribute__ ((packed));
0462
0463 extern struct qe_immap __iomem *qe_immr;
0464
0465 #endif
0466 #endif