source: svn/trunk/newcon3bcm2_21bu/toolchain/mips-linux-uclibc/include/linux/sc26198.h @ 2

Last change on this file since 2 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 12.8 KB
Line 
1/*****************************************************************************/
2
3/*
4 *      sc26198.h  -- SC26198 UART hardware info.
5 *
6 *      Copyright (C) 1995-1998  Stallion Technologies
7 *
8 *      This program is free software; you can redistribute it and/or modify
9 *      it under the terms of the GNU General Public License as published by
10 *      the Free Software Foundation; either version 2 of the License, or
11 *      (at your option) any later version.
12 *
13 *      This program is distributed in the hope that it will be useful,
14 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *      GNU General Public License for more details.
17 *
18 *      You should have received a copy of the GNU General Public License
19 *      along with this program; if not, write to the Free Software
20 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 */
22
23/*****************************************************************************/
24#ifndef _SC26198_H
25#define _SC26198_H
26/*****************************************************************************/
27
28/*
29 *      Define the number of async ports per sc26198 uart device.
30 */
31#define SC26198_PORTS           8
32
33/*
34 *      Baud rate timing clocks. All derived from a master 14.7456 MHz clock.
35 */
36#define SC26198_MASTERCLOCK     14745600L
37#define SC26198_DCLK            (SC26198_MASTERCLOCK)
38#define SC26198_CCLK            (SC26198_MASTERCLOCK / 2)
39#define SC26198_BCLK            (SC26198_MASTERCLOCK / 4)
40
41/*
42 *      Define internal FIFO sizes for the 26198 ports.
43 */
44#define SC26198_TXFIFOSIZE      16
45#define SC26198_RXFIFOSIZE      16
46
47/*****************************************************************************/
48
49/*
50 *      Global register definitions. These registers are global to each 26198
51 *      device, not specific ports on it.
52 */
53#define TSTR            0x0d
54#define GCCR            0x0f
55#define ICR             0x1b
56#define WDTRCR          0x1d
57#define IVR             0x1f
58#define BRGTRUA         0x84
59#define GPOSR           0x87
60#define GPOC            0x8b
61#define UCIR            0x8c
62#define CIR             0x8c
63#define BRGTRUB         0x8d
64#define GRXFIFO         0x8e
65#define GTXFIFO         0x8e
66#define GCCR2           0x8f
67#define BRGTRLA         0x94
68#define GPOR            0x97
69#define GPOD            0x9b
70#define BRGTCR          0x9c
71#define GICR            0x9c
72#define BRGTRLB         0x9d
73#define GIBCR           0x9d
74#define GITR            0x9f
75
76/*
77 *      Per port channel registers. These are the register offsets within
78 *      the port address space, so need to have the port address (0 to 7)
79 *      inserted in bit positions 4:6.
80 */
81#define MR0             0x00
82#define MR1             0x01
83#define IOPCR           0x02
84#define BCRBRK          0x03
85#define BCRCOS          0x04
86#define BCRX            0x06
87#define BCRA            0x07
88#define XONCR           0x08
89#define XOFFCR          0x09
90#define ARCR            0x0a
91#define RXCSR           0x0c
92#define TXCSR           0x0e
93#define MR2             0x80
94#define SR              0x81
95#define SCCR            0x81
96#define ISR             0x82
97#define IMR             0x82
98#define TXFIFO          0x83
99#define RXFIFO          0x83
100#define IPR             0x84
101#define IOPIOR          0x85
102#define XISR            0x86
103
104/*
105 *      For any given port calculate the address to use to access a specified
106 *      register. This is only used for unusual access, mostly this is done
107 *      through the assembler access routines.
108 */
109#define SC26198_PORTREG(port,reg)       ((((port) & 0x07) << 4) | (reg))
110
111/*****************************************************************************/
112
113/*
114 *      Global configuration control register bit definitions.
115 */
116#define GCCR_NOACK              0x00
117#define GCCR_IVRACK             0x02
118#define GCCR_IVRCHANACK         0x04
119#define GCCR_IVRTYPCHANACK      0x06
120#define GCCR_ASYNCCYCLE         0x00
121#define GCCR_SYNCCYCLE          0x40
122
123/*****************************************************************************/
124
125/*
126 *      Mode register 0 bit definitions.
127 */
128#define MR0_ADDRNONE            0x00
129#define MR0_AUTOWAKE            0x01
130#define MR0_AUTODOZE            0x02
131#define MR0_AUTOWAKEDOZE        0x03
132#define MR0_SWFNONE             0x00
133#define MR0_SWFTX               0x04
134#define MR0_SWFRX               0x08
135#define MR0_SWFRXTX             0x0c
136#define MR0_TXMASK              0x30
137#define MR0_TXEMPTY             0x00
138#define MR0_TXHIGH              0x10
139#define MR0_TXHALF              0x20
140#define MR0_TXRDY               0x00
141#define MR0_ADDRNT              0x00
142#define MR0_ADDRT               0x40
143#define MR0_SWFNT               0x00
144#define MR0_SWFT                0x80
145
146/*
147 *      Mode register 1 bit definitions.
148 */
149#define MR1_CS5                 0x00
150#define MR1_CS6                 0x01
151#define MR1_CS7                 0x02
152#define MR1_CS8                 0x03
153#define MR1_PAREVEN             0x00
154#define MR1_PARODD              0x04
155#define MR1_PARENB              0x00
156#define MR1_PARFORCE            0x08
157#define MR1_PARNONE             0x10
158#define MR1_PARSPECIAL          0x18
159#define MR1_ERRCHAR             0x00
160#define MR1_ERRBLOCK            0x20
161#define MR1_ISRUNMASKED         0x00
162#define MR1_ISRMASKED           0x40
163#define MR1_AUTORTS             0x80
164
165/*
166 *      Mode register 2 bit definitions.
167 */
168#define MR2_STOP1               0x00
169#define MR2_STOP15              0x01
170#define MR2_STOP2               0x02
171#define MR2_STOP916             0x03
172#define MR2_RXFIFORDY           0x00
173#define MR2_RXFIFOHALF          0x04
174#define MR2_RXFIFOHIGH          0x08
175#define MR2_RXFIFOFULL          0x0c
176#define MR2_AUTOCTS             0x10
177#define MR2_TXRTS               0x20
178#define MR2_MODENORM            0x00
179#define MR2_MODEAUTOECHO        0x40
180#define MR2_MODELOOP            0x80
181#define MR2_MODEREMECHO         0xc0
182
183/*****************************************************************************/
184
185/*
186 *      Baud Rate Generator (BRG) selector values.
187 */
188#define BRG_50                  0x00
189#define BRG_75                  0x01
190#define BRG_150                 0x02
191#define BRG_200                 0x03
192#define BRG_300                 0x04
193#define BRG_450                 0x05
194#define BRG_600                 0x06
195#define BRG_900                 0x07
196#define BRG_1200                0x08
197#define BRG_1800                0x09
198#define BRG_2400                0x0a
199#define BRG_3600                0x0b
200#define BRG_4800                0x0c
201#define BRG_7200                0x0d
202#define BRG_9600                0x0e
203#define BRG_14400               0x0f
204#define BRG_19200               0x10
205#define BRG_28200               0x11
206#define BRG_38400               0x12
207#define BRG_57600               0x13
208#define BRG_115200              0x14
209#define BRG_230400              0x15
210#define BRG_GIN0                0x16
211#define BRG_GIN1                0x17
212#define BRG_CT0                 0x18
213#define BRG_CT1                 0x19
214#define BRG_RX2TX316            0x1b
215#define BRG_RX2TX31             0x1c
216
217#define SC26198_MAXBAUD         921600
218
219/*****************************************************************************/
220
221/*
222 *      Command register command definitions.
223 */
224#define CR_NULL                 0x04
225#define CR_ADDRNORMAL           0x0c
226#define CR_RXRESET              0x14
227#define CR_TXRESET              0x1c
228#define CR_CLEARRXERR           0x24
229#define CR_BREAKRESET           0x2c
230#define CR_TXSTARTBREAK         0x34
231#define CR_TXSTOPBREAK          0x3c
232#define CR_RTSON                0x44
233#define CR_RTSOFF               0x4c
234#define CR_ADDRINIT             0x5c
235#define CR_RXERRBLOCK           0x6c
236#define CR_TXSENDXON            0x84
237#define CR_TXSENDXOFF           0x8c
238#define CR_GANGXONSET           0x94
239#define CR_GANGXOFFSET          0x9c
240#define CR_GANGXONINIT          0xa4
241#define CR_GANGXOFFINIT         0xac
242#define CR_HOSTXON              0xb4
243#define CR_HOSTXOFF             0xbc
244#define CR_CANCELXOFF           0xc4
245#define CR_ADDRRESET            0xdc
246#define CR_RESETALLPORTS        0xf4
247#define CR_RESETALL             0xfc
248
249#define CR_RXENABLE             0x01
250#define CR_TXENABLE             0x02
251
252/*****************************************************************************/
253
254/*
255 *      Channel status register.
256 */
257#define SR_RXRDY                0x01
258#define SR_RXFULL               0x02
259#define SR_TXRDY                0x04
260#define SR_TXEMPTY              0x08
261#define SR_RXOVERRUN            0x10
262#define SR_RXPARITY             0x20
263#define SR_RXFRAMING            0x40
264#define SR_RXBREAK              0x80
265
266#define SR_RXERRS               (SR_RXPARITY | SR_RXFRAMING | SR_RXOVERRUN)
267
268/*****************************************************************************/
269
270/*
271 *      Interrupt status register and interrupt mask register bit definitions.
272 */
273#define IR_TXRDY                0x01
274#define IR_RXRDY                0x02
275#define IR_RXBREAK              0x04
276#define IR_XONXOFF              0x10
277#define IR_ADDRRECOG            0x20
278#define IR_RXWATCHDOG           0x40
279#define IR_IOPORT               0x80
280
281/*****************************************************************************/
282
283/*
284 *      Interrupt vector register field definitions.
285 */
286#define IVR_CHANMASK            0x07
287#define IVR_TYPEMASK            0x18
288#define IVR_CONSTMASK           0xc0
289
290#define IVR_RXDATA              0x10
291#define IVR_RXBADDATA           0x18
292#define IVR_TXDATA              0x08
293#define IVR_OTHER               0x00
294
295/*****************************************************************************/
296
297/*
298 *      BRG timer control register bit definitions.
299 */
300#define BRGCTCR_DISABCLK0       0x00
301#define BRGCTCR_ENABCLK0        0x08
302#define BRGCTCR_DISABCLK1       0x00
303#define BRGCTCR_ENABCLK1        0x80
304
305#define BRGCTCR_0SCLK16         0x00
306#define BRGCTCR_0SCLK32         0x01
307#define BRGCTCR_0SCLK64         0x02
308#define BRGCTCR_0SCLK128        0x03
309#define BRGCTCR_0X1             0x04
310#define BRGCTCR_0X12            0x05
311#define BRGCTCR_0IO1A           0x06
312#define BRGCTCR_0GIN0           0x07
313
314#define BRGCTCR_1SCLK16         0x00
315#define BRGCTCR_1SCLK32         0x10
316#define BRGCTCR_1SCLK64         0x20
317#define BRGCTCR_1SCLK128        0x30
318#define BRGCTCR_1X1             0x40
319#define BRGCTCR_1X12            0x50
320#define BRGCTCR_1IO1B           0x60
321#define BRGCTCR_1GIN1           0x70
322
323/*****************************************************************************/
324
325/*
326 *      Watch dog timer enable register.
327 */
328#define WDTRCR_ENABALL          0xff
329
330/*****************************************************************************/
331
332/*
333 *      XON/XOFF interrupt status register.
334 */
335#define XISR_TXCHARMASK         0x03
336#define XISR_TXCHARNORMAL       0x00
337#define XISR_TXWAIT             0x01
338#define XISR_TXXOFFPEND         0x02
339#define XISR_TXXONPEND          0x03
340
341#define XISR_TXFLOWMASK         0x0c
342#define XISR_TXNORMAL           0x00
343#define XISR_TXSTOPPEND         0x04
344#define XISR_TXSTARTED          0x08
345#define XISR_TXSTOPPED          0x0c
346
347#define XISR_RXFLOWMASK         0x30
348#define XISR_RXFLOWNONE         0x00
349#define XISR_RXXONSENT          0x10
350#define XISR_RXXOFFSENT         0x20
351
352#define XISR_RXXONGOT           0x40
353#define XISR_RXXOFFGOT          0x80
354
355/*****************************************************************************/
356
357/*
358 *      Current interrupt register.
359 */
360#define CIR_TYPEMASK            0xc0
361#define CIR_TYPEOTHER           0x00
362#define CIR_TYPETX              0x40
363#define CIR_TYPERXGOOD          0x80
364#define CIR_TYPERXBAD           0xc0
365
366#define CIR_RXDATA              0x80
367#define CIR_RXBADDATA           0x40
368#define CIR_TXDATA              0x40
369
370#define CIR_CHANMASK            0x07
371#define CIR_CNTMASK             0x38
372
373#define CIR_SUBTYPEMASK         0x38
374#define CIR_SUBNONE             0x00
375#define CIR_SUBCOS              0x08
376#define CIR_SUBADDR             0x10
377#define CIR_SUBXONXOFF          0x18
378#define CIR_SUBBREAK            0x28
379
380/*****************************************************************************/
381
382/*
383 *      Global interrupting channel register.
384 */
385#define GICR_CHANMASK           0x07
386
387/*****************************************************************************/
388
389/*
390 *      Global interrupting byte count register.
391 */
392#define GICR_COUNTMASK          0x0f
393
394/*****************************************************************************/
395
396/*
397 *      Global interrupting type register.
398 */
399#define GITR_RXMASK             0xc0
400#define GITR_RXNONE             0x00
401#define GITR_RXBADDATA          0x80
402#define GITR_RXGOODDATA         0xc0
403#define GITR_TXDATA             0x20
404
405#define GITR_SUBTYPEMASK        0x07
406#define GITR_SUBNONE            0x00
407#define GITR_SUBCOS             0x01
408#define GITR_SUBADDR            0x02
409#define GITR_SUBXONXOFF         0x03
410#define GITR_SUBBREAK           0x05
411
412/*****************************************************************************/
413
414/*
415 *      Input port change register.
416 */
417#define IPR_CTS                 0x01
418#define IPR_DTR                 0x02
419#define IPR_RTS                 0x04
420#define IPR_DCD                 0x08
421#define IPR_CTSCHANGE           0x10
422#define IPR_DTRCHANGE           0x20
423#define IPR_RTSCHANGE           0x40
424#define IPR_DCDCHANGE           0x80
425
426#define IPR_CHANGEMASK          0xf0
427
428/*****************************************************************************/
429
430/*
431 *      IO port interrupt and output register.
432 */
433#define IOPR_CTS                0x01
434#define IOPR_DTR                0x02
435#define IOPR_RTS                0x04
436#define IOPR_DCD                0x08
437#define IOPR_CTSCOS             0x10
438#define IOPR_DTRCOS             0x20
439#define IOPR_RTSCOS             0x40
440#define IOPR_DCDCOS             0x80
441
442/*****************************************************************************/
443
444/*
445 *      IO port configuration register.
446 */
447#define IOPCR_SETCTS            0x00
448#define IOPCR_SETDTR            0x04
449#define IOPCR_SETRTS            0x10
450#define IOPCR_SETDCD            0x00
451
452#define IOPCR_SETSIGS           (IOPCR_SETRTS | IOPCR_SETRTS | IOPCR_SETDTR | IOPCR_SETDCD)
453
454/*****************************************************************************/
455
456/*
457 *      General purpose output select register.
458 */
459#define GPORS_TXC1XA            0x08
460#define GPORS_TXC16XA           0x09
461#define GPORS_RXC16XA           0x0a
462#define GPORS_TXC16XB           0x0b
463#define GPORS_GPOR3             0x0c
464#define GPORS_GPOR2             0x0d
465#define GPORS_GPOR1             0x0e
466#define GPORS_GPOR0             0x0f
467
468/*****************************************************************************/
469
470/*
471 *      General purpose output register.
472 */
473#define GPOR_0                  0x01
474#define GPOR_1                  0x02
475#define GPOR_2                  0x04
476#define GPOR_3                  0x08
477
478/*****************************************************************************/
479
480/*
481 *      General purpose output clock register.
482 */
483#define GPORC_0NONE             0x00
484#define GPORC_0GIN0             0x01
485#define GPORC_0GIN1             0x02
486#define GPORC_0IO3A             0x02
487
488#define GPORC_1NONE             0x00
489#define GPORC_1GIN0             0x04
490#define GPORC_1GIN1             0x08
491#define GPORC_1IO3C             0x0c
492
493#define GPORC_2NONE             0x00
494#define GPORC_2GIN0             0x10
495#define GPORC_2GIN1             0x20
496#define GPORC_2IO3E             0x20
497
498#define GPORC_3NONE             0x00
499#define GPORC_3GIN0             0x40
500#define GPORC_3GIN1             0x80
501#define GPORC_3IO3G             0xc0
502
503/*****************************************************************************/
504
505/*
506 *      General purpose output data register.
507 */
508#define GPOD_0MASK              0x03
509#define GPOD_0SET1              0x00
510#define GPOD_0SET0              0x01
511#define GPOD_0SETR0             0x02
512#define GPOD_0SETIO3B           0x03
513
514#define GPOD_1MASK              0x0c
515#define GPOD_1SET1              0x00
516#define GPOD_1SET0              0x04
517#define GPOD_1SETR0             0x08
518#define GPOD_1SETIO3D           0x0c
519
520#define GPOD_2MASK              0x30
521#define GPOD_2SET1              0x00
522#define GPOD_2SET0              0x10
523#define GPOD_2SETR0             0x20
524#define GPOD_2SETIO3F           0x30
525
526#define GPOD_3MASK              0xc0
527#define GPOD_3SET1              0x00
528#define GPOD_3SET0              0x40
529#define GPOD_3SETR0             0x80
530#define GPOD_3SETIO3H           0xc0
531
532/*****************************************************************************/
533#endif
Note: See TracBrowser for help on using the repository browser.