e6088bbce93d66a954c5c35aba52b9c96616de5a
[safe/jmp/linux-2.6] / arch / m68knommu / include / asm / m68360_pram.h
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;          /* Reaceive 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;           /* alighnment 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