162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Winbond W6692 specific defines
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Author       Karsten Keil <keil@isdn4linux.de>
662306a36Sopenharmony_ci *		based on the w6692 I4L driver from Petr Novak <petr.novak@i.cz>
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * Copyright 2009  by Karsten Keil <keil@isdn4linux.de>
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/* Specifications of W6692 registers */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#define W_D_RFIFO	0x00	/* R */
1462306a36Sopenharmony_ci#define W_D_XFIFO	0x04	/* W */
1562306a36Sopenharmony_ci#define W_D_CMDR	0x08	/* W */
1662306a36Sopenharmony_ci#define W_D_MODE	0x0c	/* R/W */
1762306a36Sopenharmony_ci#define W_D_TIMR	0x10	/* R/W */
1862306a36Sopenharmony_ci#define W_ISTA		0x14	/* R_clr */
1962306a36Sopenharmony_ci#define W_IMASK		0x18	/* R/W */
2062306a36Sopenharmony_ci#define W_D_EXIR	0x1c	/* R_clr */
2162306a36Sopenharmony_ci#define W_D_EXIM	0x20	/* R/W */
2262306a36Sopenharmony_ci#define W_D_STAR	0x24	/* R */
2362306a36Sopenharmony_ci#define W_D_RSTA	0x28	/* R */
2462306a36Sopenharmony_ci#define W_D_SAM		0x2c	/* R/W */
2562306a36Sopenharmony_ci#define W_D_SAP1	0x30	/* R/W */
2662306a36Sopenharmony_ci#define W_D_SAP2	0x34	/* R/W */
2762306a36Sopenharmony_ci#define W_D_TAM		0x38	/* R/W */
2862306a36Sopenharmony_ci#define W_D_TEI1	0x3c	/* R/W */
2962306a36Sopenharmony_ci#define W_D_TEI2	0x40	/* R/W */
3062306a36Sopenharmony_ci#define W_D_RBCH	0x44	/* R */
3162306a36Sopenharmony_ci#define W_D_RBCL	0x48	/* R */
3262306a36Sopenharmony_ci#define W_TIMR2		0x4c	/* W */
3362306a36Sopenharmony_ci#define W_L1_RC		0x50	/* R/W */
3462306a36Sopenharmony_ci#define W_D_CTL		0x54	/* R/W */
3562306a36Sopenharmony_ci#define W_CIR		0x58	/* R */
3662306a36Sopenharmony_ci#define W_CIX		0x5c	/* W */
3762306a36Sopenharmony_ci#define W_SQR		0x60	/* R */
3862306a36Sopenharmony_ci#define W_SQX		0x64	/* W */
3962306a36Sopenharmony_ci#define W_PCTL		0x68	/* R/W */
4062306a36Sopenharmony_ci#define W_MOR		0x6c	/* R */
4162306a36Sopenharmony_ci#define W_MOX		0x70	/* R/W */
4262306a36Sopenharmony_ci#define W_MOSR		0x74	/* R_clr */
4362306a36Sopenharmony_ci#define W_MOCR		0x78	/* R/W */
4462306a36Sopenharmony_ci#define W_GCR		0x7c	/* R/W */
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#define	W_B_RFIFO	0x80	/* R */
4762306a36Sopenharmony_ci#define	W_B_XFIFO	0x84	/* W */
4862306a36Sopenharmony_ci#define	W_B_CMDR	0x88	/* W */
4962306a36Sopenharmony_ci#define	W_B_MODE	0x8c	/* R/W */
5062306a36Sopenharmony_ci#define	W_B_EXIR	0x90	/* R_clr */
5162306a36Sopenharmony_ci#define	W_B_EXIM	0x94	/* R/W */
5262306a36Sopenharmony_ci#define	W_B_STAR	0x98	/* R */
5362306a36Sopenharmony_ci#define	W_B_ADM1	0x9c	/* R/W */
5462306a36Sopenharmony_ci#define	W_B_ADM2	0xa0	/* R/W */
5562306a36Sopenharmony_ci#define	W_B_ADR1	0xa4	/* R/W */
5662306a36Sopenharmony_ci#define	W_B_ADR2	0xa8	/* R/W */
5762306a36Sopenharmony_ci#define	W_B_RBCL	0xac	/* R */
5862306a36Sopenharmony_ci#define	W_B_RBCH	0xb0	/* R */
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci#define W_XADDR		0xf4	/* R/W */
6162306a36Sopenharmony_ci#define W_XDATA		0xf8	/* R/W */
6262306a36Sopenharmony_ci#define W_EPCTL		0xfc	/* W */
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci/* W6692 register bits */
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci#define	W_D_CMDR_XRST	0x01
6762306a36Sopenharmony_ci#define	W_D_CMDR_XME	0x02
6862306a36Sopenharmony_ci#define	W_D_CMDR_XMS	0x08
6962306a36Sopenharmony_ci#define	W_D_CMDR_STT	0x10
7062306a36Sopenharmony_ci#define	W_D_CMDR_RRST	0x40
7162306a36Sopenharmony_ci#define	W_D_CMDR_RACK	0x80
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci#define	W_D_MODE_RLP	0x01
7462306a36Sopenharmony_ci#define	W_D_MODE_DLP	0x02
7562306a36Sopenharmony_ci#define	W_D_MODE_MFD	0x04
7662306a36Sopenharmony_ci#define	W_D_MODE_TEE	0x08
7762306a36Sopenharmony_ci#define	W_D_MODE_TMS	0x10
7862306a36Sopenharmony_ci#define	W_D_MODE_RACT	0x40
7962306a36Sopenharmony_ci#define	W_D_MODE_MMS	0x80
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci#define W_INT_B2_EXI	0x01
8262306a36Sopenharmony_ci#define W_INT_B1_EXI	0x02
8362306a36Sopenharmony_ci#define W_INT_D_EXI	0x04
8462306a36Sopenharmony_ci#define W_INT_XINT0	0x08
8562306a36Sopenharmony_ci#define W_INT_XINT1	0x10
8662306a36Sopenharmony_ci#define W_INT_D_XFR	0x20
8762306a36Sopenharmony_ci#define W_INT_D_RME	0x40
8862306a36Sopenharmony_ci#define W_INT_D_RMR	0x80
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci#define W_D_EXI_WEXP	0x01
9162306a36Sopenharmony_ci#define W_D_EXI_TEXP	0x02
9262306a36Sopenharmony_ci#define W_D_EXI_ISC	0x04
9362306a36Sopenharmony_ci#define W_D_EXI_MOC	0x08
9462306a36Sopenharmony_ci#define W_D_EXI_TIN2	0x10
9562306a36Sopenharmony_ci#define W_D_EXI_XCOL	0x20
9662306a36Sopenharmony_ci#define W_D_EXI_XDUN	0x40
9762306a36Sopenharmony_ci#define W_D_EXI_RDOV	0x80
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci#define	W_D_STAR_DRDY	0x10
10062306a36Sopenharmony_ci#define	W_D_STAR_XBZ	0x20
10162306a36Sopenharmony_ci#define	W_D_STAR_XDOW	0x80
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci#define W_D_RSTA_RMB	0x10
10462306a36Sopenharmony_ci#define W_D_RSTA_CRCE	0x20
10562306a36Sopenharmony_ci#define W_D_RSTA_RDOV	0x40
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci#define W_D_CTL_SRST	0x20
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci#define W_CIR_SCC	0x80
11062306a36Sopenharmony_ci#define W_CIR_ICC	0x40
11162306a36Sopenharmony_ci#define W_CIR_COD_MASK	0x0f
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci#define W_PCTL_PCX	0x01
11462306a36Sopenharmony_ci#define W_PCTL_XMODE	0x02
11562306a36Sopenharmony_ci#define W_PCTL_OE0	0x04
11662306a36Sopenharmony_ci#define W_PCTL_OE1	0x08
11762306a36Sopenharmony_ci#define W_PCTL_OE2	0x10
11862306a36Sopenharmony_ci#define W_PCTL_OE3	0x20
11962306a36Sopenharmony_ci#define W_PCTL_OE4	0x40
12062306a36Sopenharmony_ci#define W_PCTL_OE5	0x80
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci#define	W_B_CMDR_XRST	0x01
12362306a36Sopenharmony_ci#define	W_B_CMDR_XME	0x02
12462306a36Sopenharmony_ci#define	W_B_CMDR_XMS	0x04
12562306a36Sopenharmony_ci#define	W_B_CMDR_RACT	0x20
12662306a36Sopenharmony_ci#define	W_B_CMDR_RRST	0x40
12762306a36Sopenharmony_ci#define	W_B_CMDR_RACK	0x80
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci#define	W_B_MODE_FTS0	0x01
13062306a36Sopenharmony_ci#define	W_B_MODE_FTS1	0x02
13162306a36Sopenharmony_ci#define	W_B_MODE_SW56	0x04
13262306a36Sopenharmony_ci#define	W_B_MODE_BSW0	0x08
13362306a36Sopenharmony_ci#define	W_B_MODE_BSW1	0x10
13462306a36Sopenharmony_ci#define	W_B_MODE_EPCM	0x20
13562306a36Sopenharmony_ci#define	W_B_MODE_ITF	0x40
13662306a36Sopenharmony_ci#define	W_B_MODE_MMS	0x80
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci#define	W_B_EXI_XDUN	0x01
13962306a36Sopenharmony_ci#define	W_B_EXI_XFR	0x02
14062306a36Sopenharmony_ci#define	W_B_EXI_RDOV	0x10
14162306a36Sopenharmony_ci#define	W_B_EXI_RME	0x20
14262306a36Sopenharmony_ci#define	W_B_EXI_RMR	0x40
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci#define	W_B_STAR_XBZ	0x01
14562306a36Sopenharmony_ci#define	W_B_STAR_XDOW	0x04
14662306a36Sopenharmony_ci#define	W_B_STAR_RMB	0x10
14762306a36Sopenharmony_ci#define	W_B_STAR_CRCE	0x20
14862306a36Sopenharmony_ci#define	W_B_STAR_RDOV	0x40
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci#define	W_B_RBCH_LOV	0x20
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci/* W6692 Layer1 commands */
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci#define	W_L1CMD_ECK	0x00
15562306a36Sopenharmony_ci#define W_L1CMD_RST	0x01
15662306a36Sopenharmony_ci#define W_L1CMD_SCP	0x04
15762306a36Sopenharmony_ci#define W_L1CMD_SSP	0x02
15862306a36Sopenharmony_ci#define W_L1CMD_AR8	0x08
15962306a36Sopenharmony_ci#define W_L1CMD_AR10	0x09
16062306a36Sopenharmony_ci#define W_L1CMD_EAL	0x0a
16162306a36Sopenharmony_ci#define W_L1CMD_DRC	0x0f
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci/* W6692 Layer1 indications */
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci#define W_L1IND_CE	0x07
16662306a36Sopenharmony_ci#define W_L1IND_DRD	0x00
16762306a36Sopenharmony_ci#define W_L1IND_LD	0x04
16862306a36Sopenharmony_ci#define W_L1IND_ARD	0x08
16962306a36Sopenharmony_ci#define W_L1IND_TI	0x0a
17062306a36Sopenharmony_ci#define W_L1IND_ATI	0x0b
17162306a36Sopenharmony_ci#define W_L1IND_AI8	0x0c
17262306a36Sopenharmony_ci#define W_L1IND_AI10	0x0d
17362306a36Sopenharmony_ci#define W_L1IND_CD	0x0f
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci/* FIFO thresholds */
17662306a36Sopenharmony_ci#define W_D_FIFO_THRESH	64
17762306a36Sopenharmony_ci#define W_B_FIFO_THRESH	64
178