1 /*********************************** 2 * $Id: m68360_quicc.h,v 1.1 2002/03/02 15:01:07 gerg Exp $ 3 *********************************** 4 * 5 *************************************** 6 * Definitions of QUICC memory structures 7 *************************************** 8 */ 9 10 #ifndef __M68360_QUICC_H 11 #define __M68360_QUICC_H 12 13 /* 14 * include registers and 15 * parameter ram definitions files 16 */ 17 #include <asm/m68360_regs.h> 18 #include <asm/m68360_pram.h> 19 20 21 22 /* Buffer Descriptors */ 23 typedef struct quicc_bd { 24 volatile unsigned short status; 25 volatile unsigned short length; 26 volatile unsigned char *buf; /* WARNING: This is only true if *char is 32 bits */ 27 } QUICC_BD; 28 29 30 #ifdef MOTOROLA_ORIGINAL 31 struct user_data { 32 /* BASE + 0x000: user data memory */ 33 volatile unsigned char udata_bd_ucode[0x400]; /*user data bd's Ucode*/ 34 volatile unsigned char udata_bd[0x200]; /*user data Ucode */ 35 volatile unsigned char ucode_ext[0x100]; /*Ucode Extention ram */ 36 volatile unsigned char RESERVED1[0x500]; /* Reserved area */ 37 }; 38 #else 39 struct user_data { 40 /* BASE + 0x000: user data memory */ 41 volatile unsigned char udata_bd_ucode[0x400]; /* user data, bds, Ucode*/ 42 volatile unsigned char udata_bd1[0x200]; /* user, bds */ 43 volatile unsigned char ucode_bd_scratch[0x100]; /* user, bds, ucode scratch */ 44 volatile unsigned char udata_bd2[0x100]; /* user, bds */ 45 volatile unsigned char RESERVED1[0x400]; /* Reserved area */ 46 }; 47 #endif 48 49 50 /* 51 * internal ram 52 */ 53 typedef struct quicc { 54 union { 55 struct quicc32_pram ch_pram_tbl[32]; /* 32*64(bytes) per channel */ 56 struct user_data u; 57 }ch_or_u; /* multipul or user space */ 58 59 /* BASE + 0xc00: PARAMETER RAM */ 60 union { 61 struct scc_pram { 62 union { 63 struct hdlc_pram h; 64 struct uart_pram u; 65 struct bisync_pram b; 66 struct transparent_pram t; 67 unsigned char RESERVED66[0x70]; 68 } pscc; /* scc parameter area (protocol dependent) */ 69 union { 70 struct { 71 unsigned char RESERVED70[0x10]; 72 struct spi_pram spi; 73 unsigned char RESERVED72[0x8]; 74 struct timer_pram timer; 75 } timer_spi; 76 struct { 77 struct idma_pram idma; 78 unsigned char RESERVED67[0x4]; 79 union { 80 struct smc_uart_pram u; 81 struct smc_trnsp_pram t; 82 } psmc; 83 } idma_smc; 84 } pothers; 85 } scc; 86 struct ethernet_pram enet_scc; 87 struct global_multi_pram m; 88 unsigned char pr[0x100]; 89 } pram[4]; 90 91 /* reserved */ 92 93 /* BASE + 0x1000: INTERNAL REGISTERS */ 94 /* SIM */ 95 volatile unsigned long sim_mcr; /* module configuration reg */ 96 volatile unsigned short sim_simtr; /* module test register */ 97 volatile unsigned char RESERVED2[0x2]; /* Reserved area */ 98 volatile unsigned char sim_avr; /* auto vector reg */ 99 volatile unsigned char sim_rsr; /* reset status reg */ 100 volatile unsigned char RESERVED3[0x2]; /* Reserved area */ 101 volatile unsigned char sim_clkocr; /* CLCO control register */ 102 volatile unsigned char RESERVED62[0x3]; /* Reserved area */ 103 volatile unsigned short sim_pllcr; /* PLL control register */ 104 volatile unsigned char RESERVED63[0x2]; /* Reserved area */ 105 volatile unsigned short sim_cdvcr; /* Clock devider control register */ 106 volatile unsigned short sim_pepar; /* Port E pin assignment register */ 107 volatile unsigned char RESERVED64[0xa]; /* Reserved area */ 108 volatile unsigned char sim_sypcr; /* system protection control*/ 109 volatile unsigned char sim_swiv; /* software interrupt vector*/ 110 volatile unsigned char RESERVED6[0x2]; /* Reserved area */ 111 volatile unsigned short sim_picr; /* periodic interrupt control reg */ 112 volatile unsigned char RESERVED7[0x2]; /* Reserved area */ 113 volatile unsigned short sim_pitr; /* periodic interrupt timing reg */ 114 volatile unsigned char RESERVED8[0x3]; /* Reserved area */ 115 volatile unsigned char sim_swsr; /* software service */ 116 volatile unsigned long sim_bkar; /* breakpoint address register*/ 117 volatile unsigned long sim_bkcr; /* breakpoint control register*/ 118 volatile unsigned char RESERVED10[0x8]; /* Reserved area */ 119 /* MEMC */ 120 volatile unsigned long memc_gmr; /* Global memory register */ 121 volatile unsigned short memc_mstat; /* MEMC status register */ 122 volatile unsigned char RESERVED11[0xa]; /* Reserved area */ 123 volatile unsigned long memc_br0; /* base register 0 */ 124 volatile unsigned long memc_or0; /* option register 0 */ 125 volatile unsigned char RESERVED12[0x8]; /* Reserved area */ 126 volatile unsigned long memc_br1; /* base register 1 */ 127 volatile unsigned long memc_or1; /* option register 1 */ 128 volatile unsigned char RESERVED13[0x8]; /* Reserved area */ 129 volatile unsigned long memc_br2; /* base register 2 */ 130 volatile unsigned long memc_or2; /* option register 2 */ 131 volatile unsigned char RESERVED14[0x8]; /* Reserved area */ 132 volatile unsigned long memc_br3; /* base register 3 */ 133 volatile unsigned long memc_or3; /* option register 3 */ 134 volatile unsigned char RESERVED15[0x8]; /* Reserved area */ 135 volatile unsigned long memc_br4; /* base register 3 */ 136 volatile unsigned long memc_or4; /* option register 3 */ 137 volatile unsigned char RESERVED16[0x8]; /* Reserved area */ 138 volatile unsigned long memc_br5; /* base register 3 */ 139 volatile unsigned long memc_or5; /* option register 3 */ 140 volatile unsigned char RESERVED17[0x8]; /* Reserved area */ 141 volatile unsigned long memc_br6; /* base register 3 */ 142 volatile unsigned long memc_or6; /* option register 3 */ 143 volatile unsigned char RESERVED18[0x8]; /* Reserved area */ 144 volatile unsigned long memc_br7; /* base register 3 */ 145 volatile unsigned long memc_or7; /* option register 3 */ 146 volatile unsigned char RESERVED9[0x28]; /* Reserved area */ 147 /* TEST */ 148 volatile unsigned short test_tstmra; /* master shift a */ 149 volatile unsigned short test_tstmrb; /* master shift b */ 150 volatile unsigned short test_tstsc; /* shift count */ 151 volatile unsigned short test_tstrc; /* repetition counter */ 152 volatile unsigned short test_creg; /* control */ 153 volatile unsigned short test_dreg; /* destributed register */ 154 volatile unsigned char RESERVED58[0x404]; /* Reserved area */ 155 /* IDMA1 */ 156 volatile unsigned short idma_iccr; /* channel configuration reg*/ 157 volatile unsigned char RESERVED19[0x2]; /* Reserved area */ 158 volatile unsigned short idma1_cmr; /* dma mode reg */ 159 volatile unsigned char RESERVED68[0x2]; /* Reserved area */ 160 volatile unsigned long idma1_sapr; /* dma source addr ptr */ 161 volatile unsigned long idma1_dapr; /* dma destination addr ptr */ 162 volatile unsigned long idma1_bcr; /* dma byte count reg */ 163 volatile unsigned char idma1_fcr; /* function code reg */ 164 volatile unsigned char RESERVED20; /* Reserved area */ 165 volatile unsigned char idma1_cmar; /* channel mask reg */ 166 volatile unsigned char RESERVED21; /* Reserved area */ 167 volatile unsigned char idma1_csr; /* channel status reg */ 168 volatile unsigned char RESERVED22[0x3]; /* Reserved area */ 169 /* SDMA */ 170 volatile unsigned char sdma_sdsr; /* status reg */ 171 volatile unsigned char RESERVED23; /* Reserved area */ 172 volatile unsigned short sdma_sdcr; /* configuration reg */ 173 volatile unsigned long sdma_sdar; /* address reg */ 174 /* IDMA2 */ 175 volatile unsigned char RESERVED69[0x2]; /* Reserved area */ 176 volatile unsigned short idma2_cmr; /* dma mode reg */ 177 volatile unsigned long idma2_sapr; /* dma source addr ptr */ 178 volatile unsigned long idma2_dapr; /* dma destination addr ptr */ 179 volatile unsigned long idma2_bcr; /* dma byte count reg */ 180 volatile unsigned char idma2_fcr; /* function code reg */ 181 volatile unsigned char RESERVED24; /* Reserved area */ 182 volatile unsigned char idma2_cmar; /* channel mask reg */ 183 volatile unsigned char RESERVED25; /* Reserved area */ 184 volatile unsigned char idma2_csr; /* channel status reg */ 185 volatile unsigned char RESERVED26[0x7]; /* Reserved area */ 186 /* Interrupt Controller */ 187 volatile unsigned long intr_cicr; /* CP interrupt configuration reg*/ 188 volatile unsigned long intr_cipr; /* CP interrupt pending reg */ 189 volatile unsigned long intr_cimr; /* CP interrupt mask reg */ 190 volatile unsigned long intr_cisr; /* CP interrupt in service reg*/ 191 /* Parallel I/O */ 192 volatile unsigned short pio_padir; /* port A data direction reg */ 193 volatile unsigned short pio_papar; /* port A pin assignment reg */ 194 volatile unsigned short pio_paodr; /* port A open drain reg */ 195 volatile unsigned short pio_padat; /* port A data register */ 196 volatile unsigned char RESERVED28[0x8]; /* Reserved area */ 197 volatile unsigned short pio_pcdir; /* port C data direction reg*/ 198 volatile unsigned short pio_pcpar; /* port C pin assignment reg*/ 199 volatile unsigned short pio_pcso; /* port C special options */ 200 volatile unsigned short pio_pcdat; /* port C data register */ 201 volatile unsigned short pio_pcint; /* port C interrupt cntrl reg */ 202 volatile unsigned char RESERVED29[0x16]; /* Reserved area */ 203 /* Timer */ 204 volatile unsigned short timer_tgcr; /* timer global configuration reg */ 205 volatile unsigned char RESERVED30[0xe]; /* Reserved area */ 206 volatile unsigned short timer_tmr1; /* timer 1 mode reg */ 207 volatile unsigned short timer_tmr2; /* timer 2 mode reg */ 208 volatile unsigned short timer_trr1; /* timer 1 referance reg */ 209 volatile unsigned short timer_trr2; /* timer 2 referance reg */ 210 volatile unsigned short timer_tcr1; /* timer 1 capture reg */ 211 volatile unsigned short timer_tcr2; /* timer 2 capture reg */ 212 volatile unsigned short timer_tcn1; /* timer 1 counter reg */ 213 volatile unsigned short timer_tcn2; /* timer 2 counter reg */ 214 volatile unsigned short timer_tmr3; /* timer 3 mode reg */ 215 volatile unsigned short timer_tmr4; /* timer 4 mode reg */ 216 volatile unsigned short timer_trr3; /* timer 3 referance reg */ 217 volatile unsigned short timer_trr4; /* timer 4 referance reg */ 218 volatile unsigned short timer_tcr3; /* timer 3 capture reg */ 219 volatile unsigned short timer_tcr4; /* timer 4 capture reg */ 220 volatile unsigned short timer_tcn3; /* timer 3 counter reg */ 221 volatile unsigned short timer_tcn4; /* timer 4 counter reg */ 222 volatile unsigned short timer_ter1; /* timer 1 event reg */ 223 volatile unsigned short timer_ter2; /* timer 2 event reg */ 224 volatile unsigned short timer_ter3; /* timer 3 event reg */ 225 volatile unsigned short timer_ter4; /* timer 4 event reg */ 226 volatile unsigned char RESERVED34[0x8]; /* Reserved area */ 227 /* CP */ 228 volatile unsigned short cp_cr; /* command register */ 229 volatile unsigned char RESERVED35[0x2]; /* Reserved area */ 230 volatile unsigned short cp_rccr; /* main configuration reg */ 231 volatile unsigned char RESERVED37; /* Reserved area */ 232 volatile unsigned char cp_rmds; /* development support status reg */ 233 volatile unsigned long cp_rmdr; /* development support control reg */ 234 volatile unsigned short cp_rctr1; /* ram break register 1 */ 235 volatile unsigned short cp_rctr2; /* ram break register 2 */ 236 volatile unsigned short cp_rctr3; /* ram break register 3 */ 237 volatile unsigned short cp_rctr4; /* ram break register 4 */ 238 volatile unsigned char RESERVED59[0x2]; /* Reserved area */ 239 volatile unsigned short cp_rter; /* RISC timers event reg */ 240 volatile unsigned char RESERVED38[0x2]; /* Reserved area */ 241 volatile unsigned short cp_rtmr; /* RISC timers mask reg */ 242 volatile unsigned char RESERVED39[0x14]; /* Reserved area */ 243 /* BRG */ 244 union { 245 volatile unsigned long l; 246 struct { 247 volatile unsigned short BRGC_RESERV:14; 248 volatile unsigned short rst:1; 249 volatile unsigned short en:1; 250 volatile unsigned short extc:2; 251 volatile unsigned short atb:1; 252 volatile unsigned short cd:12; 253 volatile unsigned short div16:1; 254 } b; 255 } brgc[4]; /* BRG1-BRG4 configuration regs*/ 256 /* SCC registers */ 257 struct scc_regs { 258 union { 259 struct { 260 /* Low word. */ 261 volatile unsigned short GSMR_RESERV2:1; 262 volatile unsigned short edge:2; 263 volatile unsigned short tci:1; 264 volatile unsigned short tsnc:2; 265 volatile unsigned short rinv:1; 266 volatile unsigned short tinv:1; 267 volatile unsigned short tpl:3; 268 volatile unsigned short tpp:2; 269 volatile unsigned short tend:1; 270 volatile unsigned short tdcr:2; 271 volatile unsigned short rdcr:2; 272 volatile unsigned short renc:3; 273 volatile unsigned short tenc:3; 274 volatile unsigned short diag:2; 275 volatile unsigned short enr:1; 276 volatile unsigned short ent:1; 277 volatile unsigned short mode:4; 278 /* High word. */ 279 volatile unsigned short GSMR_RESERV1:14; 280 volatile unsigned short pri:1; 281 volatile unsigned short gde:1; 282 volatile unsigned short tcrc:2; 283 volatile unsigned short revd:1; 284 volatile unsigned short trx:1; 285 volatile unsigned short ttx:1; 286 volatile unsigned short cdp:1; 287 volatile unsigned short ctsp:1; 288 volatile unsigned short cds:1; 289 volatile unsigned short ctss:1; 290 volatile unsigned short tfl:1; 291 volatile unsigned short rfw:1; 292 volatile unsigned short txsy:1; 293 volatile unsigned short synl:2; 294 volatile unsigned short rtsm:1; 295 volatile unsigned short rsyn:1; 296 } b; 297 struct { 298 volatile unsigned long low; 299 volatile unsigned long high; 300 } w; 301 } scc_gsmr; /* SCC general mode reg */ 302 volatile unsigned short scc_psmr; /* protocol specific mode reg */ 303 volatile unsigned char RESERVED42[0x2]; /* Reserved area */ 304 volatile unsigned short scc_todr; /* SCC transmit on demand */ 305 volatile unsigned short scc_dsr; /* SCC data sync reg */ 306 volatile unsigned short scc_scce; /* SCC event reg */ 307 volatile unsigned char RESERVED43[0x2];/* Reserved area */ 308 volatile unsigned short scc_sccm; /* SCC mask reg */ 309 volatile unsigned char RESERVED44[0x1];/* Reserved area */ 310 volatile unsigned char scc_sccs; /* SCC status reg */ 311 volatile unsigned char RESERVED45[0x8]; /* Reserved area */ 312 } scc_regs[4]; 313 /* SMC */ 314 struct smc_regs { 315 volatile unsigned char RESERVED46[0x2]; /* Reserved area */ 316 volatile unsigned short smc_smcmr; /* SMC mode reg */ 317 volatile unsigned char RESERVED60[0x2]; /* Reserved area */ 318 volatile unsigned char smc_smce; /* SMC event reg */ 319 volatile unsigned char RESERVED47[0x3]; /* Reserved area */ 320 volatile unsigned char smc_smcm; /* SMC mask reg */ 321 volatile unsigned char RESERVED48[0x5]; /* Reserved area */ 322 } smc_regs[2]; 323 /* SPI */ 324 volatile unsigned short spi_spmode; /* SPI mode reg */ 325 volatile unsigned char RESERVED51[0x4]; /* Reserved area */ 326 volatile unsigned char spi_spie; /* SPI event reg */ 327 volatile unsigned char RESERVED52[0x3]; /* Reserved area */ 328 volatile unsigned char spi_spim; /* SPI mask reg */ 329 volatile unsigned char RESERVED53[0x2]; /* Reserved area */ 330 volatile unsigned char spi_spcom; /* SPI command reg */ 331 volatile unsigned char RESERVED54[0x4]; /* Reserved area */ 332 /* PIP */ 333 volatile unsigned short pip_pipc; /* pip configuration reg */ 334 volatile unsigned char RESERVED65[0x2]; /* Reserved area */ 335 volatile unsigned short pip_ptpr; /* pip timing parameters reg */ 336 volatile unsigned long pip_pbdir; /* port b data direction reg */ 337 volatile unsigned long pip_pbpar; /* port b pin assignment reg */ 338 volatile unsigned long pip_pbodr; /* port b open drain reg */ 339 volatile unsigned long pip_pbdat; /* port b data reg */ 340 volatile unsigned char RESERVED71[0x18]; /* Reserved area */ 341 /* Serial Interface */ 342 volatile unsigned long si_simode; /* SI mode register */ 343 volatile unsigned char si_sigmr; /* SI global mode register */ 344 volatile unsigned char RESERVED55; /* Reserved area */ 345 volatile unsigned char si_sistr; /* SI status register */ 346 volatile unsigned char si_sicmr; /* SI command register */ 347 volatile unsigned char RESERVED56[0x4]; /* Reserved area */ 348 volatile unsigned long si_sicr; /* SI clock routing */ 349 volatile unsigned long si_sirp; /* SI ram pointers */ 350 volatile unsigned char RESERVED57[0xc]; /* Reserved area */ 351 volatile unsigned short si_siram[0x80]; /* SI routing ram */ 352 } QUICC; 353 354 #endif 355 356 /* 357 * Local variables: 358 * c-indent-level: 4 359 * c-basic-offset: 4 360 * tab-width: 4 361 * End: 362 */ 363