1 /*********************************** 2 * $Id: m68360_pram.h,v 1.1 2002/03/02 15:01:07 gerg Exp $ 3 *********************************** 4 * 5 *************************************** 6 * Definitions of the parameter area RAM. 7 * Note that different structures are overlaid 8 * at the same offsets for the different modes 9 * of operation. 10 *************************************** 11 */ 12 13 #ifndef __PRAM_H 14 #define __PRAM_H 15 16 /* Time slot assignment table */ 17 #define VALID_SLOT 0x8000 18 #define WRAP_SLOT 0x4000 19 20 /***************************************************************** 21 Global Multichannel parameter RAM 22 *****************************************************************/ 23 struct global_multi_pram { 24 /* 25 * Global Multichannel parameter RAM 26 */ 27 unsigned long mcbase; /* Multichannel Base pointer */ 28 unsigned short qmcstate; /* Multichannel Controller state */ 29 unsigned short mrblr; /* Maximum Receive Buffer Length */ 30 unsigned short tx_s_ptr; /* TSTATx Pointer */ 31 unsigned short rxptr; /* Current Time slot entry in TSATRx */ 32 unsigned short grfthr; /* Global Receive frame threshold */ 33 unsigned short grfcnt; /* Global Receive Frame Count */ 34 unsigned long intbase; /* Multichannel Base address */ 35 unsigned long iintptr; /* Pointer to interrupt queue */ 36 unsigned short rx_s_ptr; /* TSTARx Pointer */ 37 38 unsigned short txptr; /* Current Time slot entry in TSATTx */ 39 unsigned long c_mask32; /* CRC Constant (debb20e3) */ 40 unsigned short tsatrx[32]; /* Time Slot Assignment Table Rx */ 41 unsigned short tsattx[32]; /* Time Slot Assignment Table Tx */ 42 unsigned short c_mask16; /* CRC Constant (f0b8) */ 43 }; 44 45 /***************************************************************** 46 Quicc32 HDLC parameter RAM 47 *****************************************************************/ 48 struct quicc32_pram { 49 50 unsigned short tbase; /* Tx Buffer Descriptors Base Address */ 51 unsigned short chamr; /* Channel Mode Register */ 52 unsigned long tstate; /* Tx Internal State */ 53 unsigned long txintr; /* Tx Internal Data Pointer */ 54 unsigned short tbptr; /* Tx Buffer Descriptor Pointer */ 55 unsigned short txcntr; /* Tx Internal Byte Count */ 56 unsigned long tupack; /* (Tx Temp) */ 57 unsigned long zistate; /* Zero Insertion machine state */ 58 unsigned long tcrc; /* Temp Transmit CRC */ 59 unsigned short intmask; /* Channel's interrupt mask flags */ 60 unsigned short bdflags; 61 unsigned short rbase; /* Rx Buffer Descriptors Base Address */ 62 unsigned short mflr; /* Max Frame Length Register */ 63 unsigned long rstate; /* Rx Internal State */ 64 unsigned long rxintr; /* Rx Internal Data Pointer */ 65 unsigned short rbptr; /* Rx Buffer Descriptor Pointer */ 66 unsigned short rxbyc; /* Rx Internal Byte Count */ 67 unsigned long rpack; /* (Rx Temp) */ 68 unsigned long zdstate; /* Zero Deletion machine state */ 69 unsigned long rcrc; /* Temp Transmit CRC */ 70 unsigned short maxc; /* Max_length counter */ 71 unsigned short tmp_mb; /* Temp */ 72 }; 73 74 75 /***************************************************************** 76 HDLC parameter RAM 77 *****************************************************************/ 78 79 struct hdlc_pram { 80 /* 81 * SCC parameter RAM 82 */ 83 unsigned short rbase; /* RX BD base address */ 84 unsigned short tbase; /* TX BD base address */ 85 unsigned char rfcr; /* Rx function code */ 86 unsigned char tfcr; /* Tx function code */ 87 unsigned short mrblr; /* Rx buffer length */ 88 unsigned long rstate; /* Rx internal state */ 89 unsigned long rptr; /* Rx internal data pointer */ 90 unsigned short rbptr; /* rb BD Pointer */ 91 unsigned short rcount; /* Rx internal byte count */ 92 unsigned long rtemp; /* Rx temp */ 93 unsigned long tstate; /* Tx internal state */ 94 unsigned long tptr; /* Tx internal data pointer */ 95 unsigned short tbptr; /* Tx BD pointer */ 96 unsigned short tcount; /* Tx byte count */ 97 unsigned long ttemp; /* Tx temp */ 98 unsigned long rcrc; /* temp receive CRC */ 99 unsigned long tcrc; /* temp transmit CRC */ 100 101 /* 102 * HDLC specific parameter RAM 103 */ 104 unsigned char RESERVED1[4]; /* Reserved area */ 105 unsigned long c_mask; /* CRC constant */ 106 unsigned long c_pres; /* CRC preset */ 107 unsigned short disfc; /* discarded frame counter */ 108 unsigned short crcec; /* CRC error counter */ 109 unsigned short abtsc; /* abort sequence counter */ 110 unsigned short nmarc; /* nonmatching address rx cnt */ 111 unsigned short retrc; /* frame retransmission cnt */ 112 unsigned short mflr; /* maximum frame length reg */ 113 unsigned short max_cnt; /* maximum length counter */ 114 unsigned short rfthr; /* received frames threshold */ 115 unsigned short rfcnt; /* received frames count */ 116 unsigned short hmask; /* user defined frm addr mask */ 117 unsigned short haddr1; /* user defined frm address 1 */ 118 unsigned short haddr2; /* user defined frm address 2 */ 119 unsigned short haddr3; /* user defined frm address 3 */ 120 unsigned short haddr4; /* user defined frm address 4 */ 121 unsigned short tmp; /* temp */ 122 unsigned short tmp_mb; /* temp */ 123 }; 124 125 126 127 /***************************************************************** 128 UART parameter RAM 129 *****************************************************************/ 130 131 /* 132 * bits in uart control characters table 133 */ 134 #define CC_INVALID 0x8000 /* control character is valid */ 135 #define CC_REJ 0x4000 /* don't store char in buffer */ 136 #define CC_CHAR 0x00ff /* control character */ 137 138 /* UART */ 139 struct uart_pram { 140 /* 141 * SCC parameter RAM 142 */ 143 unsigned short rbase; /* RX BD base address */ 144 unsigned short tbase; /* TX BD base address */ 145 unsigned char rfcr; /* Rx function code */ 146 unsigned char tfcr; /* Tx function code */ 147 unsigned short mrblr; /* Rx buffer length */ 148 unsigned long rstate; /* Rx internal state */ 149 unsigned long rptr; /* Rx internal data pointer */ 150 unsigned short rbptr; /* rb BD Pointer */ 151 unsigned short rcount; /* Rx internal byte count */ 152 unsigned long rx_temp; /* Rx temp */ 153 unsigned long tstate; /* Tx internal state */ 154 unsigned long tptr; /* Tx internal data pointer */ 155 unsigned short tbptr; /* Tx BD pointer */ 156 unsigned short tcount; /* Tx byte count */ 157 unsigned long ttemp; /* Tx temp */ 158 unsigned long rcrc; /* temp receive CRC */ 159 unsigned long tcrc; /* temp transmit CRC */ 160 161 /* 162 * UART specific parameter RAM 163 */ 164 unsigned char RESERVED1[8]; /* Reserved area */ 165 unsigned short max_idl; /* maximum idle characters */ 166 unsigned short idlc; /* rx idle counter (internal) */ 167 unsigned short brkcr; /* break count register */ 168 169 unsigned short parec; /* Rx parity error counter */ 170 unsigned short frmer; /* Rx framing error counter */ 171 unsigned short nosec; /* Rx noise counter */ 172 unsigned short brkec; /* Rx break character counter */ 173 unsigned short brkln; /* Receive break length */ 174 175 unsigned short uaddr1; /* address character 1 */ 176 unsigned short uaddr2; /* address character 2 */ 177 unsigned short rtemp; /* temp storage */ 178 unsigned short toseq; /* Tx out of sequence char */ 179 unsigned short cc[8]; /* Rx control characters */ 180 unsigned short rccm; /* Rx control char mask */ 181 unsigned short rccr; /* Rx control char register */ 182 unsigned short rlbc; /* Receive last break char */ 183 }; 184 185 186 187 /***************************************************************** 188 BISYNC parameter RAM 189 *****************************************************************/ 190 191 struct bisync_pram { 192 /* 193 * SCC parameter RAM 194 */ 195 unsigned short rbase; /* RX BD base address */ 196 unsigned short tbase; /* TX BD base address */ 197 unsigned char rfcr; /* Rx function code */ 198 unsigned char tfcr; /* Tx function code */ 199 unsigned short mrblr; /* Rx buffer length */ 200 unsigned long rstate; /* Rx internal state */ 201 unsigned long rptr; /* Rx internal data pointer */ 202 unsigned short rbptr; /* rb BD Pointer */ 203 unsigned short rcount; /* Rx internal byte count */ 204 unsigned long rtemp; /* Rx temp */ 205 unsigned long tstate; /* Tx internal state */ 206 unsigned long tptr; /* Tx internal data pointer */ 207 unsigned short tbptr; /* Tx BD pointer */ 208 unsigned short tcount; /* Tx byte count */ 209 unsigned long ttemp; /* Tx temp */ 210 unsigned long rcrc; /* temp receive CRC */ 211 unsigned long tcrc; /* temp transmit CRC */ 212 213 /* 214 * BISYNC specific parameter RAM 215 */ 216 unsigned char RESERVED1[4]; /* Reserved area */ 217 unsigned long crcc; /* CRC Constant Temp Value */ 218 unsigned short prcrc; /* Preset Receiver CRC-16/LRC */ 219 unsigned short ptcrc; /* Preset Transmitter CRC-16/LRC */ 220 unsigned short parec; /* Receive Parity Error Counter */ 221 unsigned short bsync; /* BISYNC SYNC Character */ 222 unsigned short bdle; /* BISYNC DLE Character */ 223 unsigned short cc[8]; /* Rx control characters */ 224 unsigned short rccm; /* Receive Control Character Mask */ 225 }; 226 227 /***************************************************************** 228 IOM2 parameter RAM 229 (overlaid on tx bd[5] of SCC channel[2]) 230 *****************************************************************/ 231 struct iom2_pram { 232 unsigned short ci_data; /* ci data */ 233 unsigned short monitor_data; /* monitor data */ 234 unsigned short tstate; /* transmitter state */ 235 unsigned short rstate; /* receiver state */ 236 }; 237 238 /***************************************************************** 239 SPI/SMC parameter RAM 240 (overlaid on tx bd[6,7] of SCC channel[2]) 241 *****************************************************************/ 242 243 #define SPI_R 0x8000 /* Ready bit in BD */ 244 245 struct spi_pram { 246 unsigned short rbase; /* Rx BD Base Address */ 247 unsigned short tbase; /* Tx BD Base Address */ 248 unsigned char rfcr; /* Rx function code */ 249 unsigned char tfcr; /* Tx function code */ 250 unsigned short mrblr; /* Rx buffer length */ 251 unsigned long rstate; /* Rx internal state */ 252 unsigned long rptr; /* Rx internal data pointer */ 253 unsigned short rbptr; /* rb BD Pointer */ 254 unsigned short rcount; /* Rx internal byte count */ 255 unsigned long rtemp; /* Rx temp */ 256 unsigned long tstate; /* Tx internal state */ 257 unsigned long tptr; /* Tx internal data pointer */ 258 unsigned short tbptr; /* Tx BD pointer */ 259 unsigned short tcount; /* Tx byte count */ 260 unsigned long ttemp; /* Tx temp */ 261 }; 262 263 struct smc_uart_pram { 264 unsigned short rbase; /* Rx BD Base Address */ 265 unsigned short tbase; /* Tx BD Base Address */ 266 unsigned char rfcr; /* Rx function code */ 267 unsigned char tfcr; /* Tx function code */ 268 unsigned short mrblr; /* Rx buffer length */ 269 unsigned long rstate; /* Rx internal state */ 270 unsigned long rptr; /* Rx internal data pointer */ 271 unsigned short rbptr; /* rb BD Pointer */ 272 unsigned short rcount; /* Rx internal byte count */ 273 unsigned long rtemp; /* Rx temp */ 274 unsigned long tstate; /* Tx internal state */ 275 unsigned long tptr; /* Tx internal data pointer */ 276 unsigned short tbptr; /* Tx BD pointer */ 277 unsigned short tcount; /* Tx byte count */ 278 unsigned long ttemp; /* Tx temp */ 279 unsigned short max_idl; /* Maximum IDLE Characters */ 280 unsigned short idlc; /* Temporary IDLE Counter */ 281 unsigned short brkln; /* Last Rx Break Length */ 282 unsigned short brkec; /* Rx Break Condition Counter */ 283 unsigned short brkcr; /* Break Count Register (Tx) */ 284 unsigned short r_mask; /* Temporary bit mask */ 285 }; 286 287 struct smc_trnsp_pram { 288 unsigned short rbase; /* rx BD Base Address */ 289 unsigned short tbase; /* Tx BD Base Address */ 290 unsigned char rfcr; /* Rx function code */ 291 unsigned char tfcr; /* Tx function code */ 292 unsigned short mrblr; /* Rx buffer length */ 293 unsigned long rstate; /* Rx internal state */ 294 unsigned long rptr; /* Rx internal data pointer */ 295 unsigned short rbptr; /* rb BD Pointer */ 296 unsigned short rcount; /* Rx internal byte count */ 297 unsigned long rtemp; /* Rx temp */ 298 unsigned long tstate; /* Tx internal state */ 299 unsigned long tptr; /* Tx internal data pointer */ 300 unsigned short tbptr; /* Tx BD pointer */ 301 unsigned short tcount; /* Tx byte count */ 302 unsigned long ttemp; /* Tx temp */ 303 unsigned short reserved[5]; /* Reserved */ 304 }; 305 306 struct idma_pram { 307 unsigned short ibase; /* IDMA BD Base Address */ 308 unsigned short ibptr; /* IDMA buffer descriptor pointer */ 309 unsigned long istate; /* IDMA internal state */ 310 unsigned long itemp; /* IDMA temp */ 311 }; 312 313 struct ethernet_pram { 314 /* 315 * SCC parameter RAM 316 */ 317 unsigned short rbase; /* RX BD base address */ 318 unsigned short tbase; /* TX BD base address */ 319 unsigned char rfcr; /* Rx function code */ 320 unsigned char tfcr; /* Tx function code */ 321 unsigned short mrblr; /* Rx buffer length */ 322 unsigned long rstate; /* Rx internal state */ 323 unsigned long rptr; /* Rx internal data pointer */ 324 unsigned short rbptr; /* rb BD Pointer */ 325 unsigned short rcount; /* Rx internal byte count */ 326 unsigned long rtemp; /* Rx temp */ 327 unsigned long tstate; /* Tx internal state */ 328 unsigned long tptr; /* Tx internal data pointer */ 329 unsigned short tbptr; /* Tx BD pointer */ 330 unsigned short tcount; /* Tx byte count */ 331 unsigned long ttemp; /* Tx temp */ 332 unsigned long rcrc; /* temp receive CRC */ 333 unsigned long tcrc; /* temp transmit CRC */ 334 335 /* 336 * ETHERNET specific parameter RAM 337 */ 338 unsigned long c_pres; /* preset CRC */ 339 unsigned long c_mask; /* constant mask for CRC */ 340 unsigned long crcec; /* CRC error counter */ 341 unsigned long alec; /* alignment error counter */ 342 unsigned long disfc; /* discard frame counter */ 343 unsigned short pads; /* short frame PAD characters */ 344 unsigned short ret_lim; /* retry limit threshold */ 345 unsigned short ret_cnt; /* retry limit counter */ 346 unsigned short mflr; /* maximum frame length reg */ 347 unsigned short minflr; /* minimum frame length reg */ 348 unsigned short maxd1; /* maximum DMA1 length reg */ 349 unsigned short maxd2; /* maximum DMA2 length reg */ 350 unsigned short maxd; /* rx max DMA */ 351 unsigned short dma_cnt; /* rx dma counter */ 352 unsigned short max_b; /* max bd byte count */ 353 unsigned short gaddr1; /* group address filter 1 */ 354 unsigned short gaddr2; /* group address filter 2 */ 355 unsigned short gaddr3; /* group address filter 3 */ 356 unsigned short gaddr4; /* group address filter 4 */ 357 unsigned long tbuf0_data0; /* save area 0 - current frm */ 358 unsigned long tbuf0_data1; /* save area 1 - current frm */ 359 unsigned long tbuf0_rba0; 360 unsigned long tbuf0_crc; 361 unsigned short tbuf0_bcnt; 362 union { 363 unsigned char b[6]; 364 struct { 365 unsigned short high; 366 unsigned short middl; 367 unsigned short low; 368 } w; 369 } paddr; 370 unsigned short p_per; /* persistence */ 371 unsigned short rfbd_ptr; /* rx first bd pointer */ 372 unsigned short tfbd_ptr; /* tx first bd pointer */ 373 unsigned short tlbd_ptr; /* tx last bd pointer */ 374 unsigned long tbuf1_data0; /* save area 0 - next frame */ 375 unsigned long tbuf1_data1; /* save area 1 - next frame */ 376 unsigned long tbuf1_rba0; 377 unsigned long tbuf1_crc; 378 unsigned short tbuf1_bcnt; 379 unsigned short tx_len; /* tx frame length counter */ 380 unsigned short iaddr1; /* individual address filter 1*/ 381 unsigned short iaddr2; /* individual address filter 2*/ 382 unsigned short iaddr3; /* individual address filter 3*/ 383 unsigned short iaddr4; /* individual address filter 4*/ 384 unsigned short boff_cnt; /* back-off counter */ 385 unsigned short taddr_h; /* temp address (MSB) */ 386 unsigned short taddr_m; /* temp address */ 387 unsigned short taddr_l; /* temp address (LSB) */ 388 }; 389 390 struct transparent_pram { 391 /* 392 * SCC parameter RAM 393 */ 394 unsigned short rbase; /* RX BD base address */ 395 unsigned short tbase; /* TX BD base address */ 396 unsigned char rfcr; /* Rx function code */ 397 unsigned char tfcr; /* Tx function code */ 398 unsigned short mrblr; /* Rx buffer length */ 399 unsigned long rstate; /* Rx internal state */ 400 unsigned long rptr; /* Rx internal data pointer */ 401 unsigned short rbptr; /* rb BD Pointer */ 402 unsigned short rcount; /* Rx internal byte count */ 403 unsigned long rtemp; /* Rx temp */ 404 unsigned long tstate; /* Tx internal state */ 405 unsigned long tptr; /* Tx internal data pointer */ 406 unsigned short tbptr; /* Tx BD pointer */ 407 unsigned short tcount; /* Tx byte count */ 408 unsigned long ttemp; /* Tx temp */ 409 unsigned long rcrc; /* temp receive CRC */ 410 unsigned long tcrc; /* temp transmit CRC */ 411 412 /* 413 * TRANSPARENT specific parameter RAM 414 */ 415 unsigned long crc_p; /* CRC Preset */ 416 unsigned long crc_c; /* CRC constant */ 417 }; 418 419 struct timer_pram { 420 /* 421 * RISC timers parameter RAM 422 */ 423 unsigned short tm_base; /* RISC timer table base adr */ 424 unsigned short tm_ptr; /* RISC timer table pointer */ 425 unsigned short r_tmr; /* RISC timer mode register */ 426 unsigned short r_tmv; /* RISC timer valid register */ 427 unsigned long tm_cmd; /* RISC timer cmd register */ 428 unsigned long tm_cnt; /* RISC timer internal cnt */ 429 }; 430 431 #endif 432