11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $Id: w6692.h,v 1.4.2.2 2004/01/12 22:52:29 keil Exp $
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Winbond W6692 specific defines
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Author       Petr Novak
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright    by Petr Novak        <petr.novak@i.cz>
7475be4d85a274d0961593db41cf85689db1d583cJoe Perches *
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This software may be used and distributed according to the terms
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of the GNU General Public License, incorporated herein by reference.
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* map W6692 functions to ISAC functions */
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define readW6692	readisac
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define writeW6692	writeisac
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	readW6692fifo	readisacfifo
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	writeW6692fifo	writeisacfifo
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* B-channel FIFO read/write routines */
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
21475be4d85a274d0961593db41cf85689db1d583cJoe Perches#define READW6692BFIFO(cs, bchan, ptr, count)				\
22475be4d85a274d0961593db41cf85689db1d583cJoe Perches	insb(cs->hw.w6692.iobase + W_B_RFIFO + (bchan ? 0x40 : 0), ptr, count)
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
24475be4d85a274d0961593db41cf85689db1d583cJoe Perches#define WRITEW6692BFIFO(cs, bchan, ptr, count)				\
25475be4d85a274d0961593db41cf85689db1d583cJoe Perches	outsb(cs->hw.w6692.iobase + W_B_XFIFO + (bchan ? 0x40 : 0), ptr, count)
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Specifications of W6692 registers */
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RFIFO	0x00	/* R */
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_XFIFO	0x04	/* W */
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_CMDR	0x08	/* W */
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_MODE	0x0c	/* R/W */
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_TIMR	0x10	/* R/W */
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_ISTA		0x14	/* R_clr */
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_IMASK		0x18	/* R/W */
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXIR	0x1c	/* R_clr */
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXIM	0x20	/* R/W */
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_STAR	0x24	/* R */
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RSTA	0x28	/* R */
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_SAM		0x2c	/* R/W */
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_SAP1	0x30	/* R/W */
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_SAP2	0x34	/* R/W */
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_TAM		0x38	/* R/W */
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_TEI1	0x3c	/* R/W */
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_TEI2	0x40	/* R/W */
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RBCH	0x44	/* R */
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RBCL	0x48	/* R */
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_TIMR2		0x4c	/* W */
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1_RC		0x50	/* R/W */
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_CTL		0x54	/* R/W */
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_CIR		0x58	/* R */
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_CIX		0x5c	/* W */
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_SQR		0x60	/* R */
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_SQX		0x64	/* W */
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_PCTL		0x68	/* R/W */
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_MOR		0x6c	/* R */
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_MOX		0x70	/* R/W */
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_MOSR		0x74	/* R_clr */
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_MOCR		0x78	/* R/W */
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_GCR		0x7c	/* R/W */
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_RFIFO	0x80	/* R */
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_XFIFO	0x84	/* W */
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR	0x88	/* W */
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE	0x8c	/* R/W */
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXIR	0x90	/* R_clr */
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXIM	0x94	/* R/W */
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_STAR	0x98	/* R */
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_ADM1	0x9c	/* R/W */
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_ADM2	0xa0	/* R/W */
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_ADR1	0xa4	/* R/W */
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_ADR2	0xa8	/* R/W */
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_RBCL	0xac	/* R */
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_RBCH	0xb0	/* R */
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_XADDR		0xf4	/* R/W */
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_XDATA		0xf8	/* R/W */
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_EPCTL		0xfc	/* W */
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* W6692 register bits */
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_CMDR_XRST	0x01
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_CMDR_XME	0x02
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_CMDR_XMS	0x08
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_CMDR_STT	0x10
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_CMDR_RRST	0x40
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_CMDR_RACK	0x80
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_RLP	0x01
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_DLP	0x02
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_MFD	0x04
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_TEE	0x08
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_TMS	0x10
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_RACT	0x40
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_MODE_MMS	0x80
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_B2_EXI	0x01
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_B1_EXI	0x02
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_D_EXI	0x04
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_XINT0	0x08
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_XINT1	0x10
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_D_XFR	0x20
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_D_RME	0x40
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_INT_D_RMR	0x80
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_WEXP	0x01
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_TEXP	0x02
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_ISC	0x04
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_MOC	0x08
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_TIN2	0x10
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_XCOL	0x20
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_XDUN	0x40
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_EXI_RDOV	0x80
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_STAR_DRDY	0x10
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_STAR_XBZ	0x20
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_D_STAR_XDOW	0x80
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RSTA_RMB	0x10
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RSTA_CRCE	0x20
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_RSTA_RDOV	0x40
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_CTL_SRST	0x20
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_CIR_SCC	0x80
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_CIR_ICC	0x40
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_CIR_COD_MASK	0x0f
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR_XRST	0x01
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR_XME	0x02
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR_XMS	0x04
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR_RACT	0x20
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR_RRST	0x40
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_CMDR_RACK	0x80
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_FTS0	0x01
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_FTS1	0x02
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_SW56	0x04
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_BSW0	0x08
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_BSW1	0x10
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_EPCM	0x20
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_ITF	0x40
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_MODE_MMS	0x80
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXI_XDUN	0x01
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXI_XFR	0x02
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXI_RDOV	0x10
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXI_RME	0x20
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_EXI_RMR	0x40
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_STAR_XBZ	0x01
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_STAR_XDOW	0x04
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_STAR_RMB	0x10
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_STAR_CRCE	0x20
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_STAR_RDOV	0x40
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_B_RBCH_LOV	0x20
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* W6692 Layer1 commands */
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	W_L1CMD_ECK	0x00
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_RST	0x01
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_SCP	0x04
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_SSP	0x02
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_AR8	0x08
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_AR10	0x09
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_EAL	0x0a
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1CMD_DRC	0x0f
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* W6692 Layer1 indications */
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_CE	0x07
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_DRD	0x00
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_LD	0x04
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_ARD	0x08
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_TI	0x0a
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_ATI	0x0b
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_AI8	0x0c
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_AI10	0x0d
1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_L1IND_CD	0x0f
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* FIFO thresholds */
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_D_FIFO_THRESH	64
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define W_B_FIFO_THRESH	64
185