162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * ipac.h	Defines for the Infineon (former Siemens) ISDN
562306a36Sopenharmony_ci *		chip series
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Author       Karsten Keil <keil@isdn4linux.de>
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Copyright 2009  by Karsten Keil <keil@isdn4linux.de>
1062306a36Sopenharmony_ci */
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "iohelper.h"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct isac_hw {
1562306a36Sopenharmony_ci	struct dchannel		dch;
1662306a36Sopenharmony_ci	u32			type;
1762306a36Sopenharmony_ci	u32			off;		/* offset to isac regs */
1862306a36Sopenharmony_ci	char			*name;
1962306a36Sopenharmony_ci	spinlock_t		*hwlock;	/* lock HW access */
2062306a36Sopenharmony_ci	read_reg_func		*read_reg;
2162306a36Sopenharmony_ci	write_reg_func		*write_reg;
2262306a36Sopenharmony_ci	fifo_func		*read_fifo;
2362306a36Sopenharmony_ci	fifo_func		*write_fifo;
2462306a36Sopenharmony_ci	int			(*monitor)(void *, u32, u8 *, int);
2562306a36Sopenharmony_ci	void			(*release)(struct isac_hw *);
2662306a36Sopenharmony_ci	int			(*init)(struct isac_hw *);
2762306a36Sopenharmony_ci	int			(*ctrl)(struct isac_hw *, u32, u_long);
2862306a36Sopenharmony_ci	int			(*open)(struct isac_hw *, struct channel_req *);
2962306a36Sopenharmony_ci	u8			*mon_tx;
3062306a36Sopenharmony_ci	u8			*mon_rx;
3162306a36Sopenharmony_ci	int			mon_txp;
3262306a36Sopenharmony_ci	int			mon_txc;
3362306a36Sopenharmony_ci	int			mon_rxp;
3462306a36Sopenharmony_ci	struct arcofi_msg	*arcofi_list;
3562306a36Sopenharmony_ci	struct timer_list	arcofitimer;
3662306a36Sopenharmony_ci	wait_queue_head_t	arcofi_wait;
3762306a36Sopenharmony_ci	u8			arcofi_bc;
3862306a36Sopenharmony_ci	u8			arcofi_state;
3962306a36Sopenharmony_ci	u8			mocr;
4062306a36Sopenharmony_ci	u8			adf2;
4162306a36Sopenharmony_ci	u8			state;
4262306a36Sopenharmony_ci};
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_cistruct ipac_hw;
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_cistruct hscx_hw {
4762306a36Sopenharmony_ci	struct bchannel		bch;
4862306a36Sopenharmony_ci	struct ipac_hw		*ip;
4962306a36Sopenharmony_ci	u8			fifo_size;
5062306a36Sopenharmony_ci	u8			off;	/* offset to ICA or ICB */
5162306a36Sopenharmony_ci	u8			slot;
5262306a36Sopenharmony_ci	char			log[64];
5362306a36Sopenharmony_ci};
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_cistruct ipac_hw {
5662306a36Sopenharmony_ci	struct isac_hw		isac;
5762306a36Sopenharmony_ci	struct hscx_hw		hscx[2];
5862306a36Sopenharmony_ci	char			*name;
5962306a36Sopenharmony_ci	void			*hw;
6062306a36Sopenharmony_ci	spinlock_t		*hwlock;	/* lock HW access */
6162306a36Sopenharmony_ci	struct module		*owner;
6262306a36Sopenharmony_ci	u32			type;
6362306a36Sopenharmony_ci	read_reg_func		*read_reg;
6462306a36Sopenharmony_ci	write_reg_func		*write_reg;
6562306a36Sopenharmony_ci	fifo_func		*read_fifo;
6662306a36Sopenharmony_ci	fifo_func		*write_fifo;
6762306a36Sopenharmony_ci	void			(*release)(struct ipac_hw *);
6862306a36Sopenharmony_ci	int			(*init)(struct ipac_hw *);
6962306a36Sopenharmony_ci	int			(*ctrl)(struct ipac_hw *, u32, u_long);
7062306a36Sopenharmony_ci	u8			conf;
7162306a36Sopenharmony_ci};
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci#define IPAC_TYPE_ISAC		0x0010
7462306a36Sopenharmony_ci#define IPAC_TYPE_IPAC		0x0020
7562306a36Sopenharmony_ci#define IPAC_TYPE_ISACX		0x0040
7662306a36Sopenharmony_ci#define IPAC_TYPE_IPACX		0x0080
7762306a36Sopenharmony_ci#define IPAC_TYPE_HSCX		0x0100
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci#define ISAC_USE_ARCOFI		0x1000
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci/* Monitor functions */
8262306a36Sopenharmony_ci#define MONITOR_RX_0		0x1000
8362306a36Sopenharmony_ci#define MONITOR_RX_1		0x1001
8462306a36Sopenharmony_ci#define MONITOR_TX_0		0x2000
8562306a36Sopenharmony_ci#define MONITOR_TX_1		0x2001
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci/* All registers original Siemens Spec  */
8862306a36Sopenharmony_ci/* IPAC/ISAC registers */
8962306a36Sopenharmony_ci#define ISAC_ISTA		0x20
9062306a36Sopenharmony_ci#define ISAC_MASK		0x20
9162306a36Sopenharmony_ci#define ISAC_CMDR		0x21
9262306a36Sopenharmony_ci#define ISAC_STAR		0x21
9362306a36Sopenharmony_ci#define ISAC_MODE		0x22
9462306a36Sopenharmony_ci#define ISAC_TIMR		0x23
9562306a36Sopenharmony_ci#define ISAC_EXIR		0x24
9662306a36Sopenharmony_ci#define ISAC_RBCL		0x25
9762306a36Sopenharmony_ci#define ISAC_RSTA		0x27
9862306a36Sopenharmony_ci#define ISAC_RBCH		0x2A
9962306a36Sopenharmony_ci#define ISAC_SPCR		0x30
10062306a36Sopenharmony_ci#define ISAC_CIR0		0x31
10162306a36Sopenharmony_ci#define ISAC_CIX0		0x31
10262306a36Sopenharmony_ci#define ISAC_MOR0		0x32
10362306a36Sopenharmony_ci#define ISAC_MOX0		0x32
10462306a36Sopenharmony_ci#define ISAC_CIR1		0x33
10562306a36Sopenharmony_ci#define ISAC_CIX1		0x33
10662306a36Sopenharmony_ci#define ISAC_MOR1		0x34
10762306a36Sopenharmony_ci#define ISAC_MOX1		0x34
10862306a36Sopenharmony_ci#define ISAC_STCR		0x37
10962306a36Sopenharmony_ci#define ISAC_ADF1		0x38
11062306a36Sopenharmony_ci#define ISAC_ADF2		0x39
11162306a36Sopenharmony_ci#define ISAC_MOCR		0x3a
11262306a36Sopenharmony_ci#define ISAC_MOSR		0x3a
11362306a36Sopenharmony_ci#define ISAC_SQRR		0x3b
11462306a36Sopenharmony_ci#define ISAC_SQXR		0x3b
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci#define ISAC_RBCH_XAC		0x80
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci#define IPAC_D_TIN2		0x01
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci/* IPAC/HSCX */
12162306a36Sopenharmony_ci#define IPAC_ISTAB		0x20	/* RD	*/
12262306a36Sopenharmony_ci#define IPAC_MASKB		0x20	/* WR	*/
12362306a36Sopenharmony_ci#define IPAC_STARB		0x21	/* RD	*/
12462306a36Sopenharmony_ci#define IPAC_CMDRB		0x21	/* WR	*/
12562306a36Sopenharmony_ci#define IPAC_MODEB		0x22	/* R/W	*/
12662306a36Sopenharmony_ci#define IPAC_EXIRB		0x24	/* RD	*/
12762306a36Sopenharmony_ci#define IPAC_RBCLB		0x25	/* RD	*/
12862306a36Sopenharmony_ci#define IPAC_RAH1		0x26	/* WR	*/
12962306a36Sopenharmony_ci#define IPAC_RAH2		0x27	/* WR	*/
13062306a36Sopenharmony_ci#define IPAC_RSTAB		0x27	/* RD	*/
13162306a36Sopenharmony_ci#define IPAC_RAL1		0x28	/* R/W	*/
13262306a36Sopenharmony_ci#define IPAC_RAL2		0x29	/* WR	*/
13362306a36Sopenharmony_ci#define IPAC_RHCRB		0x29	/* RD	*/
13462306a36Sopenharmony_ci#define IPAC_XBCL		0x2A	/* WR	*/
13562306a36Sopenharmony_ci#define IPAC_CCR2		0x2C	/* R/W	*/
13662306a36Sopenharmony_ci#define IPAC_RBCHB		0x2D	/* RD	*/
13762306a36Sopenharmony_ci#define IPAC_XBCH		0x2D	/* WR	*/
13862306a36Sopenharmony_ci#define HSCX_VSTR		0x2E	/* RD	*/
13962306a36Sopenharmony_ci#define IPAC_RLCR		0x2E	/* WR	*/
14062306a36Sopenharmony_ci#define IPAC_CCR1		0x2F	/* R/W	*/
14162306a36Sopenharmony_ci#define IPAC_TSAX		0x30	/* WR	*/
14262306a36Sopenharmony_ci#define IPAC_TSAR		0x31	/* WR	*/
14362306a36Sopenharmony_ci#define IPAC_XCCR		0x32	/* WR	*/
14462306a36Sopenharmony_ci#define IPAC_RCCR		0x33	/* WR	*/
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci/* IPAC_ISTAB/IPAC_MASKB bits */
14762306a36Sopenharmony_ci#define IPAC_B_XPR		0x10
14862306a36Sopenharmony_ci#define IPAC_B_RPF		0x40
14962306a36Sopenharmony_ci#define IPAC_B_RME		0x80
15062306a36Sopenharmony_ci#define IPAC_B_ON		0x2F
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci/* IPAC_EXIRB bits */
15362306a36Sopenharmony_ci#define IPAC_B_RFS		0x04
15462306a36Sopenharmony_ci#define IPAC_B_RFO		0x10
15562306a36Sopenharmony_ci#define IPAC_B_XDU		0x40
15662306a36Sopenharmony_ci#define IPAC_B_XMR		0x80
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci/* IPAC special registers */
15962306a36Sopenharmony_ci#define IPAC_CONF		0xC0	/* R/W	*/
16062306a36Sopenharmony_ci#define IPAC_ISTA		0xC1	/* RD	*/
16162306a36Sopenharmony_ci#define IPAC_MASK		0xC1	/* WR	*/
16262306a36Sopenharmony_ci#define IPAC_ID			0xC2	/* RD	*/
16362306a36Sopenharmony_ci#define IPAC_ACFG		0xC3	/* R/W	*/
16462306a36Sopenharmony_ci#define IPAC_AOE		0xC4	/* R/W	*/
16562306a36Sopenharmony_ci#define IPAC_ARX		0xC5	/* RD	*/
16662306a36Sopenharmony_ci#define IPAC_ATX		0xC5	/* WR	*/
16762306a36Sopenharmony_ci#define IPAC_PITA1		0xC6	/* R/W	*/
16862306a36Sopenharmony_ci#define IPAC_PITA2		0xC7	/* R/W	*/
16962306a36Sopenharmony_ci#define IPAC_POTA1		0xC8	/* R/W	*/
17062306a36Sopenharmony_ci#define IPAC_POTA2		0xC9	/* R/W	*/
17162306a36Sopenharmony_ci#define IPAC_PCFG		0xCA	/* R/W	*/
17262306a36Sopenharmony_ci#define IPAC_SCFG		0xCB	/* R/W	*/
17362306a36Sopenharmony_ci#define IPAC_TIMR2		0xCC	/* R/W	*/
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci/* IPAC_ISTA/_MASK bits */
17662306a36Sopenharmony_ci#define IPAC__EXB		0x01
17762306a36Sopenharmony_ci#define IPAC__ICB		0x02
17862306a36Sopenharmony_ci#define IPAC__EXA		0x04
17962306a36Sopenharmony_ci#define IPAC__ICA		0x08
18062306a36Sopenharmony_ci#define IPAC__EXD		0x10
18162306a36Sopenharmony_ci#define IPAC__ICD		0x20
18262306a36Sopenharmony_ci#define IPAC__INT0		0x40
18362306a36Sopenharmony_ci#define IPAC__INT1		0x80
18462306a36Sopenharmony_ci#define IPAC__ON		0xC0
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci/* HSCX ISTA/MASK bits */
18762306a36Sopenharmony_ci#define HSCX__EXB		0x01
18862306a36Sopenharmony_ci#define HSCX__EXA		0x02
18962306a36Sopenharmony_ci#define HSCX__ICA		0x04
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci/* ISAC/ISACX/IPAC/IPACX L1 commands */
19262306a36Sopenharmony_ci#define ISAC_CMD_TIM		0x0
19362306a36Sopenharmony_ci#define ISAC_CMD_RS		0x1
19462306a36Sopenharmony_ci#define ISAC_CMD_SCZ		0x4
19562306a36Sopenharmony_ci#define ISAC_CMD_SSZ		0x2
19662306a36Sopenharmony_ci#define ISAC_CMD_AR8		0x8
19762306a36Sopenharmony_ci#define ISAC_CMD_AR10		0x9
19862306a36Sopenharmony_ci#define ISAC_CMD_ARL		0xA
19962306a36Sopenharmony_ci#define ISAC_CMD_DUI		0xF
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci/* ISAC/ISACX/IPAC/IPACX L1 indications */
20262306a36Sopenharmony_ci#define ISAC_IND_DR		0x0
20362306a36Sopenharmony_ci#define ISAC_IND_RS		0x1
20462306a36Sopenharmony_ci#define ISAC_IND_SD		0x2
20562306a36Sopenharmony_ci#define ISAC_IND_DIS		0x3
20662306a36Sopenharmony_ci#define ISAC_IND_RSY		0x4
20762306a36Sopenharmony_ci#define ISAC_IND_DR6		0x5
20862306a36Sopenharmony_ci#define ISAC_IND_EI		0x6
20962306a36Sopenharmony_ci#define ISAC_IND_PU		0x7
21062306a36Sopenharmony_ci#define ISAC_IND_ARD		0x8
21162306a36Sopenharmony_ci#define ISAC_IND_TI		0xA
21262306a36Sopenharmony_ci#define ISAC_IND_ATI		0xB
21362306a36Sopenharmony_ci#define ISAC_IND_AI8		0xC
21462306a36Sopenharmony_ci#define ISAC_IND_AI10		0xD
21562306a36Sopenharmony_ci#define ISAC_IND_DID		0xF
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci/* the new ISACX / IPACX */
21862306a36Sopenharmony_ci/* D-channel registers   */
21962306a36Sopenharmony_ci#define ISACX_RFIFOD		0x00	/* RD	*/
22062306a36Sopenharmony_ci#define ISACX_XFIFOD		0x00	/* WR	*/
22162306a36Sopenharmony_ci#define ISACX_ISTAD		0x20	/* RD	*/
22262306a36Sopenharmony_ci#define ISACX_MASKD		0x20	/* WR	*/
22362306a36Sopenharmony_ci#define ISACX_STARD		0x21	/* RD	*/
22462306a36Sopenharmony_ci#define ISACX_CMDRD		0x21	/* WR	*/
22562306a36Sopenharmony_ci#define ISACX_MODED		0x22	/* R/W	*/
22662306a36Sopenharmony_ci#define ISACX_EXMD1		0x23	/* R/W	*/
22762306a36Sopenharmony_ci#define ISACX_TIMR1		0x24	/* R/W	*/
22862306a36Sopenharmony_ci#define ISACX_SAP1		0x25	/* WR	*/
22962306a36Sopenharmony_ci#define ISACX_SAP2		0x26	/* WR	*/
23062306a36Sopenharmony_ci#define ISACX_RBCLD		0x26	/* RD	*/
23162306a36Sopenharmony_ci#define ISACX_RBCHD		0x27	/* RD	*/
23262306a36Sopenharmony_ci#define ISACX_TEI1		0x27	/* WR	*/
23362306a36Sopenharmony_ci#define ISACX_TEI2		0x28	/* WR	*/
23462306a36Sopenharmony_ci#define ISACX_RSTAD		0x28	/* RD	*/
23562306a36Sopenharmony_ci#define ISACX_TMD		0x29	/* R/W	*/
23662306a36Sopenharmony_ci#define ISACX_CIR0		0x2E	/* RD	*/
23762306a36Sopenharmony_ci#define ISACX_CIX0		0x2E	/* WR	*/
23862306a36Sopenharmony_ci#define ISACX_CIR1		0x2F	/* RD	*/
23962306a36Sopenharmony_ci#define ISACX_CIX1		0x2F	/* WR	*/
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci/* Transceiver registers  */
24262306a36Sopenharmony_ci#define ISACX_TR_CONF0		0x30	/* R/W	*/
24362306a36Sopenharmony_ci#define ISACX_TR_CONF1		0x31	/* R/W	*/
24462306a36Sopenharmony_ci#define ISACX_TR_CONF2		0x32	/* R/W	*/
24562306a36Sopenharmony_ci#define ISACX_TR_STA		0x33	/* RD	*/
24662306a36Sopenharmony_ci#define ISACX_TR_CMD		0x34	/* R/W	*/
24762306a36Sopenharmony_ci#define ISACX_SQRR1		0x35	/* RD	*/
24862306a36Sopenharmony_ci#define ISACX_SQXR1		0x35	/* WR	*/
24962306a36Sopenharmony_ci#define ISACX_SQRR2		0x36	/* RD	*/
25062306a36Sopenharmony_ci#define ISACX_SQXR2		0x36	/* WR	*/
25162306a36Sopenharmony_ci#define ISACX_SQRR3		0x37	/* RD	*/
25262306a36Sopenharmony_ci#define ISACX_SQXR3		0x37	/* WR	*/
25362306a36Sopenharmony_ci#define ISACX_ISTATR		0x38	/* RD	*/
25462306a36Sopenharmony_ci#define ISACX_MASKTR		0x39	/* R/W	*/
25562306a36Sopenharmony_ci#define ISACX_TR_MODE		0x3A	/* R/W	*/
25662306a36Sopenharmony_ci#define ISACX_ACFG1		0x3C	/* R/W	*/
25762306a36Sopenharmony_ci#define ISACX_ACFG2		0x3D	/* R/W	*/
25862306a36Sopenharmony_ci#define ISACX_AOE		0x3E	/* R/W	*/
25962306a36Sopenharmony_ci#define ISACX_ARX		0x3F	/* RD	*/
26062306a36Sopenharmony_ci#define ISACX_ATX		0x3F	/* WR	*/
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci/* IOM: Timeslot, DPS, CDA  */
26362306a36Sopenharmony_ci#define ISACX_CDA10		0x40	/* R/W	*/
26462306a36Sopenharmony_ci#define ISACX_CDA11		0x41	/* R/W	*/
26562306a36Sopenharmony_ci#define ISACX_CDA20		0x42	/* R/W	*/
26662306a36Sopenharmony_ci#define ISACX_CDA21		0x43	/* R/W	*/
26762306a36Sopenharmony_ci#define ISACX_CDA_TSDP10	0x44	/* R/W	*/
26862306a36Sopenharmony_ci#define ISACX_CDA_TSDP11	0x45	/* R/W	*/
26962306a36Sopenharmony_ci#define ISACX_CDA_TSDP20	0x46	/* R/W	*/
27062306a36Sopenharmony_ci#define ISACX_CDA_TSDP21	0x47	/* R/W	*/
27162306a36Sopenharmony_ci#define ISACX_BCHA_TSDP_BC1	0x48	/* R/W	*/
27262306a36Sopenharmony_ci#define ISACX_BCHA_TSDP_BC2	0x49	/* R/W	*/
27362306a36Sopenharmony_ci#define ISACX_BCHB_TSDP_BC1	0x4A	/* R/W	*/
27462306a36Sopenharmony_ci#define ISACX_BCHB_TSDP_BC2	0x4B	/* R/W	*/
27562306a36Sopenharmony_ci#define ISACX_TR_TSDP_BC1	0x4C	/* R/W	*/
27662306a36Sopenharmony_ci#define ISACX_TR_TSDP_BC2	0x4D	/* R/W	*/
27762306a36Sopenharmony_ci#define ISACX_CDA1_CR		0x4E	/* R/W	*/
27862306a36Sopenharmony_ci#define ISACX_CDA2_CR		0x4F	/* R/W	*/
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci/* IOM: Contol, Sync transfer, Monitor    */
28162306a36Sopenharmony_ci#define ISACX_TR_CR		0x50	/* R/W	*/
28262306a36Sopenharmony_ci#define ISACX_TRC_CR		0x50	/* R/W	*/
28362306a36Sopenharmony_ci#define ISACX_BCHA_CR		0x51	/* R/W	*/
28462306a36Sopenharmony_ci#define ISACX_BCHB_CR		0x52	/* R/W	*/
28562306a36Sopenharmony_ci#define ISACX_DCI_CR		0x53	/* R/W	*/
28662306a36Sopenharmony_ci#define ISACX_DCIC_CR		0x53	/* R/W	*/
28762306a36Sopenharmony_ci#define ISACX_MON_CR		0x54	/* R/W	*/
28862306a36Sopenharmony_ci#define ISACX_SDS1_CR		0x55	/* R/W	*/
28962306a36Sopenharmony_ci#define ISACX_SDS2_CR		0x56	/* R/W	*/
29062306a36Sopenharmony_ci#define ISACX_IOM_CR		0x57	/* R/W	*/
29162306a36Sopenharmony_ci#define ISACX_STI		0x58	/* RD	*/
29262306a36Sopenharmony_ci#define ISACX_ASTI		0x58	/* WR	*/
29362306a36Sopenharmony_ci#define ISACX_MSTI		0x59	/* R/W	*/
29462306a36Sopenharmony_ci#define ISACX_SDS_CONF		0x5A	/* R/W	*/
29562306a36Sopenharmony_ci#define ISACX_MCDA		0x5B	/* RD	*/
29662306a36Sopenharmony_ci#define ISACX_MOR		0x5C	/* RD	*/
29762306a36Sopenharmony_ci#define ISACX_MOX		0x5C	/* WR	*/
29862306a36Sopenharmony_ci#define ISACX_MOSR		0x5D	/* RD	*/
29962306a36Sopenharmony_ci#define ISACX_MOCR		0x5E	/* R/W	*/
30062306a36Sopenharmony_ci#define ISACX_MSTA		0x5F	/* RD	*/
30162306a36Sopenharmony_ci#define ISACX_MCONF		0x5F	/* WR	*/
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci/* Interrupt and general registers */
30462306a36Sopenharmony_ci#define ISACX_ISTA		0x60	/* RD	*/
30562306a36Sopenharmony_ci#define ISACX_MASK		0x60	/* WR	*/
30662306a36Sopenharmony_ci#define ISACX_AUXI		0x61	/* RD	*/
30762306a36Sopenharmony_ci#define ISACX_AUXM		0x61	/* WR	*/
30862306a36Sopenharmony_ci#define ISACX_MODE1		0x62	/* R/W	*/
30962306a36Sopenharmony_ci#define ISACX_MODE2		0x63	/* R/W	*/
31062306a36Sopenharmony_ci#define ISACX_ID		0x64	/* RD	*/
31162306a36Sopenharmony_ci#define ISACX_SRES		0x64	/* WR	*/
31262306a36Sopenharmony_ci#define ISACX_TIMR2		0x65	/* R/W	*/
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ci/* Register Bits */
31562306a36Sopenharmony_ci/* ISACX/IPACX _ISTAD (R) and _MASKD (W) */
31662306a36Sopenharmony_ci#define ISACX_D_XDU		0x04
31762306a36Sopenharmony_ci#define ISACX_D_XMR		0x08
31862306a36Sopenharmony_ci#define ISACX_D_XPR		0x10
31962306a36Sopenharmony_ci#define ISACX_D_RFO		0x20
32062306a36Sopenharmony_ci#define ISACX_D_RPF		0x40
32162306a36Sopenharmony_ci#define ISACX_D_RME		0x80
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ci/* ISACX/IPACX _ISTA (R) and _MASK (W) */
32462306a36Sopenharmony_ci#define ISACX__ICD		0x01
32562306a36Sopenharmony_ci#define ISACX__MOS		0x02
32662306a36Sopenharmony_ci#define ISACX__TRAN		0x04
32762306a36Sopenharmony_ci#define ISACX__AUX		0x08
32862306a36Sopenharmony_ci#define ISACX__CIC		0x10
32962306a36Sopenharmony_ci#define ISACX__ST		0x20
33062306a36Sopenharmony_ci#define IPACX__ON		0x2C
33162306a36Sopenharmony_ci#define IPACX__ICB		0x40
33262306a36Sopenharmony_ci#define IPACX__ICA		0x80
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci/* ISACX/IPACX _CMDRD (W) */
33562306a36Sopenharmony_ci#define ISACX_CMDRD_XRES	0x01
33662306a36Sopenharmony_ci#define ISACX_CMDRD_XME		0x02
33762306a36Sopenharmony_ci#define ISACX_CMDRD_XTF		0x08
33862306a36Sopenharmony_ci#define ISACX_CMDRD_STI		0x10
33962306a36Sopenharmony_ci#define ISACX_CMDRD_RRES	0x40
34062306a36Sopenharmony_ci#define ISACX_CMDRD_RMC		0x80
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ci/* ISACX/IPACX _RSTAD (R) */
34362306a36Sopenharmony_ci#define ISACX_RSTAD_TA		0x01
34462306a36Sopenharmony_ci#define ISACX_RSTAD_CR		0x02
34562306a36Sopenharmony_ci#define ISACX_RSTAD_SA0		0x04
34662306a36Sopenharmony_ci#define ISACX_RSTAD_SA1		0x08
34762306a36Sopenharmony_ci#define ISACX_RSTAD_RAB		0x10
34862306a36Sopenharmony_ci#define ISACX_RSTAD_CRC		0x20
34962306a36Sopenharmony_ci#define ISACX_RSTAD_RDO		0x40
35062306a36Sopenharmony_ci#define ISACX_RSTAD_VFR		0x80
35162306a36Sopenharmony_ci
35262306a36Sopenharmony_ci/* ISACX/IPACX _CIR0 (R) */
35362306a36Sopenharmony_ci#define ISACX_CIR0_BAS		0x01
35462306a36Sopenharmony_ci#define ISACX_CIR0_SG		0x08
35562306a36Sopenharmony_ci#define ISACX_CIR0_CIC1		0x08
35662306a36Sopenharmony_ci#define ISACX_CIR0_CIC0		0x08
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci/* B-channel registers */
35962306a36Sopenharmony_ci#define IPACX_OFF_ICA		0x70
36062306a36Sopenharmony_ci#define IPACX_OFF_ICB		0x80
36162306a36Sopenharmony_ci
36262306a36Sopenharmony_ci/* ICA: IPACX_OFF_ICA + Reg ICB: IPACX_OFF_ICB + Reg */
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci#define IPACX_ISTAB		0x00    /* RD	*/
36562306a36Sopenharmony_ci#define IPACX_MASKB		0x00	/* WR	*/
36662306a36Sopenharmony_ci#define IPACX_STARB		0x01	/* RD	*/
36762306a36Sopenharmony_ci#define IPACX_CMDRB		0x01	/* WR	*/
36862306a36Sopenharmony_ci#define IPACX_MODEB		0x02	/* R/W	*/
36962306a36Sopenharmony_ci#define IPACX_EXMB		0x03	/* R/W	*/
37062306a36Sopenharmony_ci#define IPACX_RAH1		0x05	/* WR	*/
37162306a36Sopenharmony_ci#define IPACX_RAH2		0x06	/* WR	*/
37262306a36Sopenharmony_ci#define IPACX_RBCLB		0x06	/* RD	*/
37362306a36Sopenharmony_ci#define IPACX_RBCHB		0x07	/* RD	*/
37462306a36Sopenharmony_ci#define IPACX_RAL1		0x07	/* WR	*/
37562306a36Sopenharmony_ci#define IPACX_RAL2		0x08	/* WR	*/
37662306a36Sopenharmony_ci#define IPACX_RSTAB		0x08	/* RD	*/
37762306a36Sopenharmony_ci#define IPACX_TMB		0x09	/* R/W	*/
37862306a36Sopenharmony_ci#define IPACX_RFIFOB		0x0A	/* RD	*/
37962306a36Sopenharmony_ci#define IPACX_XFIFOB		0x0A	/* WR	*/
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ci/* IPACX_ISTAB / IPACX_MASKB bits */
38262306a36Sopenharmony_ci#define IPACX_B_XDU		0x04
38362306a36Sopenharmony_ci#define IPACX_B_XPR		0x10
38462306a36Sopenharmony_ci#define IPACX_B_RFO		0x20
38562306a36Sopenharmony_ci#define IPACX_B_RPF		0x40
38662306a36Sopenharmony_ci#define IPACX_B_RME		0x80
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci#define IPACX_B_ON		0x0B
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ciextern int mISDNisac_init(struct isac_hw *, void *);
39162306a36Sopenharmony_ciextern irqreturn_t mISDNisac_irq(struct isac_hw *, u8);
39262306a36Sopenharmony_ciextern u32 mISDNipac_init(struct ipac_hw *, void *);
39362306a36Sopenharmony_ciextern irqreturn_t mISDNipac_irq(struct ipac_hw *, int);
394