162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci * Aic79xx register and scratch ram definitions.
362306a36Sopenharmony_ci *
462306a36Sopenharmony_ci * Copyright (c) 1994-2001, 2004 Justin T. Gibbs.
562306a36Sopenharmony_ci * Copyright (c) 2000-2002 Adaptec Inc.
662306a36Sopenharmony_ci * All rights reserved.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * Redistribution and use in source and binary forms, with or without
962306a36Sopenharmony_ci * modification, are permitted provided that the following conditions
1062306a36Sopenharmony_ci * are met:
1162306a36Sopenharmony_ci * 1. Redistributions of source code must retain the above copyright
1262306a36Sopenharmony_ci *    notice, this list of conditions, and the following disclaimer,
1362306a36Sopenharmony_ci *    without modification.
1462306a36Sopenharmony_ci * 2. Redistributions in binary form must reproduce at minimum a disclaimer
1562306a36Sopenharmony_ci *    substantially similar to the "NO WARRANTY" disclaimer below
1662306a36Sopenharmony_ci *    ("Disclaimer") and any redistribution must be conditioned upon
1762306a36Sopenharmony_ci *    including a substantially similar Disclaimer requirement for further
1862306a36Sopenharmony_ci *    binary redistribution.
1962306a36Sopenharmony_ci * 3. Neither the names of the above-listed copyright holders nor the names
2062306a36Sopenharmony_ci *    of any contributors may be used to endorse or promote products derived
2162306a36Sopenharmony_ci *    from this software without specific prior written permission.
2262306a36Sopenharmony_ci *
2362306a36Sopenharmony_ci * Alternatively, this software may be distributed under the terms of the
2462306a36Sopenharmony_ci * GNU General Public License ("GPL") version 2 as published by the Free
2562306a36Sopenharmony_ci * Software Foundation.
2662306a36Sopenharmony_ci *
2762306a36Sopenharmony_ci * NO WARRANTY
2862306a36Sopenharmony_ci * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2962306a36Sopenharmony_ci * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3062306a36Sopenharmony_ci * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
3162306a36Sopenharmony_ci * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3262306a36Sopenharmony_ci * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
3362306a36Sopenharmony_ci * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3462306a36Sopenharmony_ci * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3562306a36Sopenharmony_ci * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
3662306a36Sopenharmony_ci * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
3762306a36Sopenharmony_ci * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
3862306a36Sopenharmony_ci * POSSIBILITY OF SUCH DAMAGES.
3962306a36Sopenharmony_ci *
4062306a36Sopenharmony_ci * $FreeBSD$
4162306a36Sopenharmony_ci */
4262306a36Sopenharmony_ciVERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $"
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci/*
4562306a36Sopenharmony_ci * This file is processed by the aic7xxx_asm utility for use in assembling
4662306a36Sopenharmony_ci * firmware for the aic79xx family of SCSI host adapters as well as to generate
4762306a36Sopenharmony_ci * a C header file for use in the kernel portion of the Aic79xx driver.
4862306a36Sopenharmony_ci */
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci/* Register window Modes */
5162306a36Sopenharmony_ci#define M_DFF0		0
5262306a36Sopenharmony_ci#define M_DFF1		1
5362306a36Sopenharmony_ci#define M_CCHAN		2
5462306a36Sopenharmony_ci#define M_SCSI		3
5562306a36Sopenharmony_ci#define M_CFG		4
5662306a36Sopenharmony_ci#define M_DST_SHIFT	4
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci#define MK_MODE(src, dst) ((src) | ((dst) << M_DST_SHIFT))
5962306a36Sopenharmony_ci#define SET_MODE(src, dst)						\
6062306a36Sopenharmony_ci	SET_SRC_MODE	src;						\
6162306a36Sopenharmony_ci	SET_DST_MODE	dst;						\
6262306a36Sopenharmony_ci	if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) {			\
6362306a36Sopenharmony_ci		mvi	MK_MODE(src, dst) call set_mode_work_around;	\
6462306a36Sopenharmony_ci	} else {							\
6562306a36Sopenharmony_ci		mvi	MODE_PTR, MK_MODE(src, dst);			\
6662306a36Sopenharmony_ci	}
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci#define RESTORE_MODE(mode)						\
6962306a36Sopenharmony_ci	if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) {			\
7062306a36Sopenharmony_ci		mov	mode call set_mode_work_around;			\
7162306a36Sopenharmony_ci	} else {							\
7262306a36Sopenharmony_ci		mov	MODE_PTR, mode;					\
7362306a36Sopenharmony_ci	}
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci#define SET_SEQINTCODE(code)						\
7662306a36Sopenharmony_ci	if ((ahd->bugs & AHD_INTCOLLISION_BUG) != 0) {			\
7762306a36Sopenharmony_ci		mvi	code call set_seqint_work_around;		\
7862306a36Sopenharmony_ci	} else {							\
7962306a36Sopenharmony_ci		mvi	SEQINTCODE, code;				\
8062306a36Sopenharmony_ci	}
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci/*
8362306a36Sopenharmony_ci * Registers marked "dont_generate_debug_code" are not (yet) referenced
8462306a36Sopenharmony_ci * from the driver code, and this keyword inhibit generation
8562306a36Sopenharmony_ci * of debug code for them.
8662306a36Sopenharmony_ci *
8762306a36Sopenharmony_ci * REG_PRETTY_PRINT config will complain if dont_generate_debug_code
8862306a36Sopenharmony_ci * is added to the register which is referenced in the driver.
8962306a36Sopenharmony_ci * Unreferenced register with no dont_generate_debug_code will result
9062306a36Sopenharmony_ci * in dead code. No warning is issued.
9162306a36Sopenharmony_ci */
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci/*
9462306a36Sopenharmony_ci * Mode Pointer
9562306a36Sopenharmony_ci * Controls which of the 5, 512byte, address spaces should be used
9662306a36Sopenharmony_ci * as the source and destination of any register accesses in our
9762306a36Sopenharmony_ci * register window.
9862306a36Sopenharmony_ci */
9962306a36Sopenharmony_ciregister MODE_PTR {
10062306a36Sopenharmony_ci	address			0x000
10162306a36Sopenharmony_ci	access_mode	RW
10262306a36Sopenharmony_ci	field	DST_MODE	0x70
10362306a36Sopenharmony_ci	field	SRC_MODE	0x07
10462306a36Sopenharmony_ci	mode_pointer
10562306a36Sopenharmony_ci	dont_generate_debug_code
10662306a36Sopenharmony_ci}
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ciconst SRC_MODE_SHIFT	0
10962306a36Sopenharmony_ciconst DST_MODE_SHIFT	4
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci/*
11262306a36Sopenharmony_ci * Host Interrupt Status
11362306a36Sopenharmony_ci */
11462306a36Sopenharmony_ciregister INTSTAT {
11562306a36Sopenharmony_ci	address			0x001
11662306a36Sopenharmony_ci	access_mode	RW
11762306a36Sopenharmony_ci	field	HWERRINT	0x80
11862306a36Sopenharmony_ci	field	BRKADRINT	0x40
11962306a36Sopenharmony_ci	field	SWTMINT		0x20
12062306a36Sopenharmony_ci	field	PCIINT		0x10
12162306a36Sopenharmony_ci	field	SCSIINT		0x08
12262306a36Sopenharmony_ci	field	SEQINT		0x04
12362306a36Sopenharmony_ci	field	CMDCMPLT	0x02
12462306a36Sopenharmony_ci	field	SPLTINT		0x01
12562306a36Sopenharmony_ci	mask	INT_PEND 0xFF
12662306a36Sopenharmony_ci}
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci/*
12962306a36Sopenharmony_ci * Sequencer Interrupt Code
13062306a36Sopenharmony_ci */
13162306a36Sopenharmony_ciregister SEQINTCODE {
13262306a36Sopenharmony_ci	address			0x002
13362306a36Sopenharmony_ci	access_mode	RW
13462306a36Sopenharmony_ci	field {
13562306a36Sopenharmony_ci		NO_SEQINT,			/* No seqint pending. */
13662306a36Sopenharmony_ci		BAD_PHASE,			/* unknown scsi bus phase */
13762306a36Sopenharmony_ci		SEND_REJECT,			/* sending a message reject */
13862306a36Sopenharmony_ci		PROTO_VIOLATION, 		/* Protocol Violation */
13962306a36Sopenharmony_ci		NO_MATCH,			/* no cmd match for reconnect */
14062306a36Sopenharmony_ci		IGN_WIDE_RES,			/* Complex IGN Wide Res Msg */
14162306a36Sopenharmony_ci		PDATA_REINIT,			/*
14262306a36Sopenharmony_ci						 * Returned to data phase
14362306a36Sopenharmony_ci						 * that requires data
14462306a36Sopenharmony_ci						 * transfer pointers to be
14562306a36Sopenharmony_ci						 * recalculated from the
14662306a36Sopenharmony_ci						 * transfer residual.
14762306a36Sopenharmony_ci						 */
14862306a36Sopenharmony_ci		HOST_MSG_LOOP,			/*
14962306a36Sopenharmony_ci						 * The bus is ready for the
15062306a36Sopenharmony_ci						 * host to perform another
15162306a36Sopenharmony_ci						 * message transaction.  This
15262306a36Sopenharmony_ci						 * mechanism is used for things
15362306a36Sopenharmony_ci						 * like sync/wide negotiation
15462306a36Sopenharmony_ci						 * that require a kernel based
15562306a36Sopenharmony_ci						 * message state engine.
15662306a36Sopenharmony_ci						 */
15762306a36Sopenharmony_ci		BAD_STATUS,			/* Bad status from target */
15862306a36Sopenharmony_ci		DATA_OVERRUN,			/*
15962306a36Sopenharmony_ci						 * Target attempted to write
16062306a36Sopenharmony_ci						 * beyond the bounds of its
16162306a36Sopenharmony_ci						 * command.
16262306a36Sopenharmony_ci						 */
16362306a36Sopenharmony_ci		MKMSG_FAILED,			/*
16462306a36Sopenharmony_ci						 * Target completed command
16562306a36Sopenharmony_ci						 * without honoring our ATN
16662306a36Sopenharmony_ci						 * request to issue a message. 
16762306a36Sopenharmony_ci						 */
16862306a36Sopenharmony_ci		MISSED_BUSFREE,			/*
16962306a36Sopenharmony_ci						 * The sequencer never saw
17062306a36Sopenharmony_ci						 * the bus go free after
17162306a36Sopenharmony_ci						 * either a command complete
17262306a36Sopenharmony_ci						 * or disconnect message.
17362306a36Sopenharmony_ci						 */
17462306a36Sopenharmony_ci		DUMP_CARD_STATE,
17562306a36Sopenharmony_ci		ILLEGAL_PHASE,
17662306a36Sopenharmony_ci		INVALID_SEQINT,
17762306a36Sopenharmony_ci		CFG4ISTAT_INTR,
17862306a36Sopenharmony_ci		STATUS_OVERRUN,
17962306a36Sopenharmony_ci		CFG4OVERRUN,
18062306a36Sopenharmony_ci		ENTERING_NONPACK,
18162306a36Sopenharmony_ci		TASKMGMT_FUNC_COMPLETE,		/*
18262306a36Sopenharmony_ci						 * Task management function
18362306a36Sopenharmony_ci						 * request completed with
18462306a36Sopenharmony_ci						 * an expected busfree.
18562306a36Sopenharmony_ci						 */
18662306a36Sopenharmony_ci		TASKMGMT_CMD_CMPLT_OKAY,	/*
18762306a36Sopenharmony_ci						 * A command with a non-zero
18862306a36Sopenharmony_ci						 * task management function
18962306a36Sopenharmony_ci						 * has completed via the normal
19062306a36Sopenharmony_ci						 * command completion method
19162306a36Sopenharmony_ci						 * for commands with a zero
19262306a36Sopenharmony_ci						 * task management function.
19362306a36Sopenharmony_ci						 * This happens when an attempt
19462306a36Sopenharmony_ci						 * to abort a command loses
19562306a36Sopenharmony_ci						 * the race for the command to
19662306a36Sopenharmony_ci						 * complete normally.
19762306a36Sopenharmony_ci						 */
19862306a36Sopenharmony_ci		TRACEPOINT0,
19962306a36Sopenharmony_ci		TRACEPOINT1,
20062306a36Sopenharmony_ci		TRACEPOINT2,
20162306a36Sopenharmony_ci		TRACEPOINT3,
20262306a36Sopenharmony_ci		SAW_HWERR,
20362306a36Sopenharmony_ci		BAD_SCB_STATUS
20462306a36Sopenharmony_ci	}
20562306a36Sopenharmony_ci	dont_generate_debug_code
20662306a36Sopenharmony_ci}
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci/*
20962306a36Sopenharmony_ci * Clear Host Interrupt
21062306a36Sopenharmony_ci */
21162306a36Sopenharmony_ciregister CLRINT {
21262306a36Sopenharmony_ci	address			0x003
21362306a36Sopenharmony_ci	access_mode	WO
21462306a36Sopenharmony_ci	count		19
21562306a36Sopenharmony_ci	field	CLRHWERRINT	0x80 /* Rev B or greater */
21662306a36Sopenharmony_ci	field	CLRBRKADRINT	0x40
21762306a36Sopenharmony_ci	field	CLRSWTMINT	0x20
21862306a36Sopenharmony_ci	field	CLRPCIINT	0x10
21962306a36Sopenharmony_ci	field	CLRSCSIINT	0x08
22062306a36Sopenharmony_ci	field	CLRSEQINT	0x04
22162306a36Sopenharmony_ci	field	CLRCMDINT	0x02
22262306a36Sopenharmony_ci	field	CLRSPLTINT	0x01
22362306a36Sopenharmony_ci	dont_generate_debug_code
22462306a36Sopenharmony_ci}
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci/*
22762306a36Sopenharmony_ci * Error Register
22862306a36Sopenharmony_ci */
22962306a36Sopenharmony_ciregister ERROR {
23062306a36Sopenharmony_ci	address			0x004
23162306a36Sopenharmony_ci	access_mode	RO
23262306a36Sopenharmony_ci	field	CIOPARERR	0x80
23362306a36Sopenharmony_ci	field	CIOACCESFAIL	0x40 /* Rev B or greater */
23462306a36Sopenharmony_ci	field	MPARERR		0x20
23562306a36Sopenharmony_ci	field	DPARERR		0x10
23662306a36Sopenharmony_ci	field	SQPARERR	0x08
23762306a36Sopenharmony_ci	field	ILLOPCODE	0x04
23862306a36Sopenharmony_ci	field	DSCTMOUT	0x02
23962306a36Sopenharmony_ci	dont_generate_debug_code
24062306a36Sopenharmony_ci}
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci/*
24362306a36Sopenharmony_ci * Clear Error
24462306a36Sopenharmony_ci */
24562306a36Sopenharmony_ciregister CLRERR {
24662306a36Sopenharmony_ci	address			0x004
24762306a36Sopenharmony_ci	access_mode 	WO
24862306a36Sopenharmony_ci	field	CLRCIOPARERR	0x80
24962306a36Sopenharmony_ci	field	CLRCIOACCESFAIL	0x40 /* Rev B or greater */
25062306a36Sopenharmony_ci	field	CLRMPARERR	0x20
25162306a36Sopenharmony_ci	field	CLRDPARERR	0x10
25262306a36Sopenharmony_ci	field	CLRSQPARERR	0x08
25362306a36Sopenharmony_ci	field	CLRILLOPCODE	0x04
25462306a36Sopenharmony_ci	field	CLRDSCTMOUT	0x02
25562306a36Sopenharmony_ci}
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci/*
25862306a36Sopenharmony_ci * Host Control Register
25962306a36Sopenharmony_ci * Overall host control of the device.
26062306a36Sopenharmony_ci */
26162306a36Sopenharmony_ciregister HCNTRL {
26262306a36Sopenharmony_ci	address			0x005
26362306a36Sopenharmony_ci	access_mode	RW
26462306a36Sopenharmony_ci	count		12
26562306a36Sopenharmony_ci	field	SEQ_RESET	0x80 /* Rev B or greater */
26662306a36Sopenharmony_ci	field	POWRDN		0x40
26762306a36Sopenharmony_ci	field	SWINT		0x10
26862306a36Sopenharmony_ci	field	SWTIMER_START_B	0x08 /* Rev B or greater */
26962306a36Sopenharmony_ci	field	PAUSE		0x04
27062306a36Sopenharmony_ci	field	INTEN		0x02
27162306a36Sopenharmony_ci	field	CHIPRST		0x01
27262306a36Sopenharmony_ci	field	CHIPRSTACK	0x01
27362306a36Sopenharmony_ci	dont_generate_debug_code
27462306a36Sopenharmony_ci}
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci/*
27762306a36Sopenharmony_ci * Host New SCB Queue Offset
27862306a36Sopenharmony_ci */
27962306a36Sopenharmony_ciregister HNSCB_QOFF {
28062306a36Sopenharmony_ci	address			0x006
28162306a36Sopenharmony_ci	access_mode	RW
28262306a36Sopenharmony_ci	size		2
28362306a36Sopenharmony_ci	count		2
28462306a36Sopenharmony_ci	dont_generate_debug_code
28562306a36Sopenharmony_ci}
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ci/*
28862306a36Sopenharmony_ci * Host Empty SCB Queue Offset
28962306a36Sopenharmony_ci */
29062306a36Sopenharmony_ciregister HESCB_QOFF {
29162306a36Sopenharmony_ci	address			0x008
29262306a36Sopenharmony_ci	access_mode	RW
29362306a36Sopenharmony_ci	count		2
29462306a36Sopenharmony_ci	dont_generate_debug_code
29562306a36Sopenharmony_ci}
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci/*
29862306a36Sopenharmony_ci * Host Mailbox
29962306a36Sopenharmony_ci */
30062306a36Sopenharmony_ciregister HS_MAILBOX {
30162306a36Sopenharmony_ci	address			0x00B
30262306a36Sopenharmony_ci	access_mode	RW
30362306a36Sopenharmony_ci	mask	HOST_TQINPOS	0x80	/* Boundary at either 0 or 128 */
30462306a36Sopenharmony_ci	mask	ENINT_COALESCE	0x40	/* Perform interrupt coalescing */
30562306a36Sopenharmony_ci}
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci/*
30862306a36Sopenharmony_ci * Sequencer Interrupt Status
30962306a36Sopenharmony_ci */
31062306a36Sopenharmony_ciregister SEQINTSTAT {
31162306a36Sopenharmony_ci	address			0x00C
31262306a36Sopenharmony_ci	count		1
31362306a36Sopenharmony_ci	access_mode	RO
31462306a36Sopenharmony_ci	field	SEQ_SWTMRTO	0x10
31562306a36Sopenharmony_ci	field	SEQ_SEQINT	0x08
31662306a36Sopenharmony_ci	field	SEQ_SCSIINT	0x04
31762306a36Sopenharmony_ci	field	SEQ_PCIINT	0x02
31862306a36Sopenharmony_ci	field	SEQ_SPLTINT	0x01
31962306a36Sopenharmony_ci}
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci/*
32262306a36Sopenharmony_ci * Clear SEQ Interrupt
32362306a36Sopenharmony_ci */
32462306a36Sopenharmony_ciregister CLRSEQINTSTAT {
32562306a36Sopenharmony_ci	address			0x00C
32662306a36Sopenharmony_ci	access_mode	WO
32762306a36Sopenharmony_ci	field	CLRSEQ_SWTMRTO	0x10
32862306a36Sopenharmony_ci	field	CLRSEQ_SEQINT	0x08
32962306a36Sopenharmony_ci	field	CLRSEQ_SCSIINT	0x04
33062306a36Sopenharmony_ci	field	CLRSEQ_PCIINT	0x02
33162306a36Sopenharmony_ci	field	CLRSEQ_SPLTINT	0x01
33262306a36Sopenharmony_ci	dont_generate_debug_code
33362306a36Sopenharmony_ci}
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci/*
33662306a36Sopenharmony_ci * Software Timer
33762306a36Sopenharmony_ci */
33862306a36Sopenharmony_ciregister SWTIMER {
33962306a36Sopenharmony_ci	address			0x00E
34062306a36Sopenharmony_ci	access_mode	RW
34162306a36Sopenharmony_ci	size		2
34262306a36Sopenharmony_ci	dont_generate_debug_code
34362306a36Sopenharmony_ci}
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci/*
34662306a36Sopenharmony_ci * SEQ New SCB Queue Offset
34762306a36Sopenharmony_ci */
34862306a36Sopenharmony_ciregister SNSCB_QOFF {
34962306a36Sopenharmony_ci	address			0x010
35062306a36Sopenharmony_ci	access_mode	RW
35162306a36Sopenharmony_ci	size		2
35262306a36Sopenharmony_ci	modes		M_CCHAN
35362306a36Sopenharmony_ci	dont_generate_debug_code
35462306a36Sopenharmony_ci}
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci/*
35762306a36Sopenharmony_ci * SEQ Empty SCB Queue Offset
35862306a36Sopenharmony_ci */
35962306a36Sopenharmony_ciregister SESCB_QOFF {
36062306a36Sopenharmony_ci	address			0x012
36162306a36Sopenharmony_ci	count		2
36262306a36Sopenharmony_ci	access_mode	RW
36362306a36Sopenharmony_ci	modes		M_CCHAN
36462306a36Sopenharmony_ci	dont_generate_debug_code
36562306a36Sopenharmony_ci}
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ci/*
36862306a36Sopenharmony_ci * SEQ Done SCB Queue Offset
36962306a36Sopenharmony_ci */
37062306a36Sopenharmony_ciregister SDSCB_QOFF {
37162306a36Sopenharmony_ci	address			0x014
37262306a36Sopenharmony_ci	access_mode	RW
37362306a36Sopenharmony_ci	modes		M_CCHAN
37462306a36Sopenharmony_ci	size		2
37562306a36Sopenharmony_ci	dont_generate_debug_code
37662306a36Sopenharmony_ci}
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci/*
37962306a36Sopenharmony_ci * Queue Offset Control & Status
38062306a36Sopenharmony_ci */
38162306a36Sopenharmony_ciregister QOFF_CTLSTA {
38262306a36Sopenharmony_ci	address			0x016
38362306a36Sopenharmony_ci	access_mode	RW
38462306a36Sopenharmony_ci	modes		M_CCHAN
38562306a36Sopenharmony_ci	field	EMPTY_SCB_AVAIL	0x80
38662306a36Sopenharmony_ci	field	NEW_SCB_AVAIL	0x40
38762306a36Sopenharmony_ci	field	SDSCB_ROLLOVR	0x20
38862306a36Sopenharmony_ci	field	HS_MAILBOX_ACT	0x10
38962306a36Sopenharmony_ci	field	SCB_QSIZE	0x0F {
39062306a36Sopenharmony_ci		SCB_QSIZE_4,
39162306a36Sopenharmony_ci		SCB_QSIZE_8,
39262306a36Sopenharmony_ci		SCB_QSIZE_16,
39362306a36Sopenharmony_ci		SCB_QSIZE_32,
39462306a36Sopenharmony_ci		SCB_QSIZE_64,
39562306a36Sopenharmony_ci		SCB_QSIZE_128,
39662306a36Sopenharmony_ci		SCB_QSIZE_256,
39762306a36Sopenharmony_ci		SCB_QSIZE_512,
39862306a36Sopenharmony_ci		SCB_QSIZE_1024,
39962306a36Sopenharmony_ci		SCB_QSIZE_2048,
40062306a36Sopenharmony_ci		SCB_QSIZE_4096,
40162306a36Sopenharmony_ci		SCB_QSIZE_8192,
40262306a36Sopenharmony_ci		SCB_QSIZE_16384
40362306a36Sopenharmony_ci	}
40462306a36Sopenharmony_ci	dont_generate_debug_code
40562306a36Sopenharmony_ci}
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci/*
40862306a36Sopenharmony_ci * Interrupt Control
40962306a36Sopenharmony_ci */
41062306a36Sopenharmony_ciregister INTCTL {
41162306a36Sopenharmony_ci	address			0x018
41262306a36Sopenharmony_ci	access_mode	RW
41362306a36Sopenharmony_ci	field	SWTMINTMASK	0x80
41462306a36Sopenharmony_ci	field	SWTMINTEN	0x40
41562306a36Sopenharmony_ci	field	SWTIMER_START	0x20
41662306a36Sopenharmony_ci	field	AUTOCLRCMDINT	0x10
41762306a36Sopenharmony_ci	field	PCIINTEN	0x08
41862306a36Sopenharmony_ci	field	SCSIINTEN	0x04
41962306a36Sopenharmony_ci	field	SEQINTEN	0x02
42062306a36Sopenharmony_ci	field	SPLTINTEN	0x01
42162306a36Sopenharmony_ci}
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ci/*
42462306a36Sopenharmony_ci * Data FIFO Control
42562306a36Sopenharmony_ci */
42662306a36Sopenharmony_ciregister DFCNTRL {
42762306a36Sopenharmony_ci	address			0x019
42862306a36Sopenharmony_ci	access_mode	RW
42962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
43062306a36Sopenharmony_ci	count		11
43162306a36Sopenharmony_ci	field	PRELOADEN	0x80
43262306a36Sopenharmony_ci	field	SCSIENWRDIS	0x40	/* Rev B only. */
43362306a36Sopenharmony_ci	field	SCSIEN		0x20
43462306a36Sopenharmony_ci	field	SCSIENACK	0x20
43562306a36Sopenharmony_ci	field	HDMAEN		0x08
43662306a36Sopenharmony_ci	field	HDMAENACK	0x08
43762306a36Sopenharmony_ci	field	DIRECTION	0x04
43862306a36Sopenharmony_ci	field	DIRECTIONACK	0x04
43962306a36Sopenharmony_ci	field	FIFOFLUSH	0x02
44062306a36Sopenharmony_ci	field	FIFOFLUSHACK	0x02
44162306a36Sopenharmony_ci	field	DIRECTIONEN	0x01
44262306a36Sopenharmony_ci}
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ci/*
44562306a36Sopenharmony_ci * Device Space Command 0
44662306a36Sopenharmony_ci */
44762306a36Sopenharmony_ciregister DSCOMMAND0 {
44862306a36Sopenharmony_ci	address			0x019
44962306a36Sopenharmony_ci	count		1
45062306a36Sopenharmony_ci	access_mode	RW
45162306a36Sopenharmony_ci	modes		M_CFG
45262306a36Sopenharmony_ci	field	CACHETHEN	0x80	/* Cache Threshold enable */
45362306a36Sopenharmony_ci	field	DPARCKEN	0x40	/* Data Parity Check Enable */
45462306a36Sopenharmony_ci	field	MPARCKEN	0x20	/* Memory Parity Check Enable */
45562306a36Sopenharmony_ci	field	EXTREQLCK	0x10	/* External Request Lock */
45662306a36Sopenharmony_ci	field	DISABLE_TWATE	0x02	/* Rev B or greater */
45762306a36Sopenharmony_ci	field	CIOPARCKEN	0x01	/* Internal bus parity error enable */
45862306a36Sopenharmony_ci	dont_generate_debug_code
45962306a36Sopenharmony_ci}
46062306a36Sopenharmony_ci
46162306a36Sopenharmony_ci/*
46262306a36Sopenharmony_ci * Data FIFO Status
46362306a36Sopenharmony_ci */
46462306a36Sopenharmony_ciregister DFSTATUS {
46562306a36Sopenharmony_ci	address			0x01A
46662306a36Sopenharmony_ci	access_mode	RO
46762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
46862306a36Sopenharmony_ci	field	PRELOAD_AVAIL		0x80
46962306a36Sopenharmony_ci	field	PKT_PRELOAD_AVAIL	0x40
47062306a36Sopenharmony_ci	field	MREQPEND		0x10
47162306a36Sopenharmony_ci	field	HDONE			0x08
47262306a36Sopenharmony_ci	field	DFTHRESH		0x04
47362306a36Sopenharmony_ci	field	FIFOFULL		0x02
47462306a36Sopenharmony_ci	field	FIFOEMP			0x01
47562306a36Sopenharmony_ci}
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci/*
47862306a36Sopenharmony_ci * S/G Cache Pointer
47962306a36Sopenharmony_ci */
48062306a36Sopenharmony_ciregister SG_CACHE_PRE {
48162306a36Sopenharmony_ci	address			0x01B
48262306a36Sopenharmony_ci	access_mode	WO
48362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
48462306a36Sopenharmony_ci	field	SG_ADDR_MASK	0xf8
48562306a36Sopenharmony_ci	field	ODD_SEG		0x04
48662306a36Sopenharmony_ci	field	LAST_SEG	0x02
48762306a36Sopenharmony_ci	dont_generate_debug_code
48862306a36Sopenharmony_ci}
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ciregister SG_CACHE_SHADOW {
49162306a36Sopenharmony_ci	address			0x01B
49262306a36Sopenharmony_ci	access_mode	RO
49362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
49462306a36Sopenharmony_ci	field	SG_ADDR_MASK	0xf8
49562306a36Sopenharmony_ci	field	ODD_SEG		0x04
49662306a36Sopenharmony_ci	field	LAST_SEG	0x02
49762306a36Sopenharmony_ci	field	LAST_SEG_DONE	0x01
49862306a36Sopenharmony_ci}
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ci/*
50162306a36Sopenharmony_ci * Arbiter Control
50262306a36Sopenharmony_ci */
50362306a36Sopenharmony_ciregister ARBCTL {
50462306a36Sopenharmony_ci	address			0x01B
50562306a36Sopenharmony_ci	access_mode	RW
50662306a36Sopenharmony_ci	modes		M_CFG
50762306a36Sopenharmony_ci	field	RESET_HARB	0x80
50862306a36Sopenharmony_ci	field	RETRY_SWEN	0x08
50962306a36Sopenharmony_ci	field	USE_TIME	0x07
51062306a36Sopenharmony_ci}
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ci/*
51362306a36Sopenharmony_ci * Data Channel Host Address
51462306a36Sopenharmony_ci */
51562306a36Sopenharmony_ciregister HADDR {
51662306a36Sopenharmony_ci	address			0x070
51762306a36Sopenharmony_ci	access_mode	RW
51862306a36Sopenharmony_ci	size		8
51962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
52062306a36Sopenharmony_ci	dont_generate_debug_code
52162306a36Sopenharmony_ci}
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_ci/*
52462306a36Sopenharmony_ci * Host Overlay DMA Address
52562306a36Sopenharmony_ci */
52662306a36Sopenharmony_ciregister HODMAADR {
52762306a36Sopenharmony_ci	address			0x070
52862306a36Sopenharmony_ci	access_mode	RW
52962306a36Sopenharmony_ci	size		8
53062306a36Sopenharmony_ci	modes		M_SCSI
53162306a36Sopenharmony_ci}
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci/*
53462306a36Sopenharmony_ci * PCI PLL Delay.
53562306a36Sopenharmony_ci */
53662306a36Sopenharmony_ciregister PLLDELAY {
53762306a36Sopenharmony_ci	address			0x070
53862306a36Sopenharmony_ci	access_mode	RW
53962306a36Sopenharmony_ci	size		1
54062306a36Sopenharmony_ci	modes		M_CFG
54162306a36Sopenharmony_ci	field	SPLIT_DROP_REQ	0x80
54262306a36Sopenharmony_ci}
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ci/*
54562306a36Sopenharmony_ci * Data Channel Host Count
54662306a36Sopenharmony_ci */
54762306a36Sopenharmony_ciregister HCNT {
54862306a36Sopenharmony_ci	address			0x078
54962306a36Sopenharmony_ci	access_mode	RW
55062306a36Sopenharmony_ci	size		3
55162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
55262306a36Sopenharmony_ci	dont_generate_debug_code
55362306a36Sopenharmony_ci}
55462306a36Sopenharmony_ci
55562306a36Sopenharmony_ci/*
55662306a36Sopenharmony_ci * Host Overlay DMA Count
55762306a36Sopenharmony_ci */
55862306a36Sopenharmony_ciregister HODMACNT {
55962306a36Sopenharmony_ci	address			0x078
56062306a36Sopenharmony_ci	access_mode	RW
56162306a36Sopenharmony_ci	size		2
56262306a36Sopenharmony_ci	modes		M_SCSI
56362306a36Sopenharmony_ci}
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci/*
56662306a36Sopenharmony_ci * Host Overlay DMA Enable
56762306a36Sopenharmony_ci */
56862306a36Sopenharmony_ciregister HODMAEN {
56962306a36Sopenharmony_ci	address			0x07A
57062306a36Sopenharmony_ci	access_mode	RW
57162306a36Sopenharmony_ci	modes		M_SCSI
57262306a36Sopenharmony_ci}
57362306a36Sopenharmony_ci
57462306a36Sopenharmony_ci/*
57562306a36Sopenharmony_ci * Scatter/Gather Host Address
57662306a36Sopenharmony_ci */
57762306a36Sopenharmony_ciregister SGHADDR {
57862306a36Sopenharmony_ci	address			0x07C
57962306a36Sopenharmony_ci	access_mode	RW
58062306a36Sopenharmony_ci	size		8
58162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
58262306a36Sopenharmony_ci	dont_generate_debug_code
58362306a36Sopenharmony_ci}
58462306a36Sopenharmony_ci
58562306a36Sopenharmony_ci/*
58662306a36Sopenharmony_ci * SCB Host Address
58762306a36Sopenharmony_ci */
58862306a36Sopenharmony_ciregister SCBHADDR {
58962306a36Sopenharmony_ci	address			0x07C
59062306a36Sopenharmony_ci	access_mode	RW
59162306a36Sopenharmony_ci	size		8
59262306a36Sopenharmony_ci	modes		M_CCHAN
59362306a36Sopenharmony_ci	dont_generate_debug_code
59462306a36Sopenharmony_ci}
59562306a36Sopenharmony_ci
59662306a36Sopenharmony_ci/*
59762306a36Sopenharmony_ci * Scatter/Gather Host Count
59862306a36Sopenharmony_ci */
59962306a36Sopenharmony_ciregister SGHCNT {
60062306a36Sopenharmony_ci	address			0x084
60162306a36Sopenharmony_ci	access_mode	RW
60262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
60362306a36Sopenharmony_ci	dont_generate_debug_code
60462306a36Sopenharmony_ci}
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_ci/*
60762306a36Sopenharmony_ci * SCB Host Count
60862306a36Sopenharmony_ci */
60962306a36Sopenharmony_ciregister SCBHCNT {
61062306a36Sopenharmony_ci	address			0x084
61162306a36Sopenharmony_ci	access_mode	RW
61262306a36Sopenharmony_ci	modes		M_CCHAN
61362306a36Sopenharmony_ci	dont_generate_debug_code
61462306a36Sopenharmony_ci}
61562306a36Sopenharmony_ci
61662306a36Sopenharmony_ci/*
61762306a36Sopenharmony_ci * Data FIFO Threshold
61862306a36Sopenharmony_ci */
61962306a36Sopenharmony_ciregister DFF_THRSH {
62062306a36Sopenharmony_ci	address			0x088
62162306a36Sopenharmony_ci	access_mode	RW
62262306a36Sopenharmony_ci	modes		M_CFG
62362306a36Sopenharmony_ci	count		1
62462306a36Sopenharmony_ci	field	WR_DFTHRSH	0x70 {
62562306a36Sopenharmony_ci		WR_DFTHRSH_MIN,
62662306a36Sopenharmony_ci		WR_DFTHRSH_25,
62762306a36Sopenharmony_ci		WR_DFTHRSH_50,
62862306a36Sopenharmony_ci		WR_DFTHRSH_63,
62962306a36Sopenharmony_ci		WR_DFTHRSH_75,
63062306a36Sopenharmony_ci		WR_DFTHRSH_85,
63162306a36Sopenharmony_ci		WR_DFTHRSH_90,
63262306a36Sopenharmony_ci		WR_DFTHRSH_MAX
63362306a36Sopenharmony_ci	}
63462306a36Sopenharmony_ci	field	RD_DFTHRSH	0x07 {
63562306a36Sopenharmony_ci		RD_DFTHRSH_MIN,
63662306a36Sopenharmony_ci		RD_DFTHRSH_25,
63762306a36Sopenharmony_ci		RD_DFTHRSH_50,
63862306a36Sopenharmony_ci		RD_DFTHRSH_63,
63962306a36Sopenharmony_ci		RD_DFTHRSH_75,
64062306a36Sopenharmony_ci		RD_DFTHRSH_85,
64162306a36Sopenharmony_ci		RD_DFTHRSH_90,
64262306a36Sopenharmony_ci		RD_DFTHRSH_MAX
64362306a36Sopenharmony_ci	}
64462306a36Sopenharmony_ci	dont_generate_debug_code
64562306a36Sopenharmony_ci}
64662306a36Sopenharmony_ci
64762306a36Sopenharmony_ci/*
64862306a36Sopenharmony_ci * ROM Address
64962306a36Sopenharmony_ci */
65062306a36Sopenharmony_ciregister ROMADDR {
65162306a36Sopenharmony_ci	address			0x08A
65262306a36Sopenharmony_ci	access_mode	RW
65362306a36Sopenharmony_ci	size		3
65462306a36Sopenharmony_ci}
65562306a36Sopenharmony_ci
65662306a36Sopenharmony_ci/*
65762306a36Sopenharmony_ci * ROM Control
65862306a36Sopenharmony_ci */
65962306a36Sopenharmony_ciregister ROMCNTRL {
66062306a36Sopenharmony_ci	address			0x08D
66162306a36Sopenharmony_ci	access_mode	RW
66262306a36Sopenharmony_ci	field	ROMOP		0xE0
66362306a36Sopenharmony_ci	field	ROMSPD		0x18
66462306a36Sopenharmony_ci	field	REPEAT		0x02
66562306a36Sopenharmony_ci	field	RDY		0x01
66662306a36Sopenharmony_ci}
66762306a36Sopenharmony_ci
66862306a36Sopenharmony_ci/*
66962306a36Sopenharmony_ci * ROM Data
67062306a36Sopenharmony_ci */
67162306a36Sopenharmony_ciregister ROMDATA {
67262306a36Sopenharmony_ci	address			0x08E
67362306a36Sopenharmony_ci	access_mode	RW
67462306a36Sopenharmony_ci}
67562306a36Sopenharmony_ci
67662306a36Sopenharmony_ci/*
67762306a36Sopenharmony_ci * Data Channel Receive Message 0
67862306a36Sopenharmony_ci */
67962306a36Sopenharmony_ciregister DCHRXMSG0 {
68062306a36Sopenharmony_ci	address			0x090
68162306a36Sopenharmony_ci	access_mode	RO
68262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
68362306a36Sopenharmony_ci	field		CDNUM	0xF8
68462306a36Sopenharmony_ci	field		CFNUM	0x07
68562306a36Sopenharmony_ci}
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci/*
68862306a36Sopenharmony_ci * CMC Receive Message 0
68962306a36Sopenharmony_ci */
69062306a36Sopenharmony_ciregister CMCRXMSG0 {
69162306a36Sopenharmony_ci	address			0x090
69262306a36Sopenharmony_ci	access_mode	RO
69362306a36Sopenharmony_ci	modes		M_CCHAN
69462306a36Sopenharmony_ci	field		CDNUM	0xF8
69562306a36Sopenharmony_ci	field		CFNUM	0x07
69662306a36Sopenharmony_ci}
69762306a36Sopenharmony_ci
69862306a36Sopenharmony_ci/*
69962306a36Sopenharmony_ci * Overlay Receive Message 0
70062306a36Sopenharmony_ci */
70162306a36Sopenharmony_ciregister OVLYRXMSG0 {
70262306a36Sopenharmony_ci	address			0x090
70362306a36Sopenharmony_ci	access_mode	RO
70462306a36Sopenharmony_ci	modes		M_SCSI
70562306a36Sopenharmony_ci	field		CDNUM	0xF8
70662306a36Sopenharmony_ci	field		CFNUM	0x07
70762306a36Sopenharmony_ci}
70862306a36Sopenharmony_ci
70962306a36Sopenharmony_ci/*
71062306a36Sopenharmony_ci * Relaxed Order Enable
71162306a36Sopenharmony_ci */
71262306a36Sopenharmony_ciregister ROENABLE {
71362306a36Sopenharmony_ci	address			0x090
71462306a36Sopenharmony_ci	access_mode	RW
71562306a36Sopenharmony_ci	modes		M_CFG
71662306a36Sopenharmony_ci	field	MSIROEN		0x20
71762306a36Sopenharmony_ci	field	OVLYROEN	0x10
71862306a36Sopenharmony_ci	field	CMCROEN		0x08
71962306a36Sopenharmony_ci	field	SGROEN		0x04
72062306a36Sopenharmony_ci	field	DCH1ROEN	0x02
72162306a36Sopenharmony_ci	field	DCH0ROEN	0x01
72262306a36Sopenharmony_ci}
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ci/*
72562306a36Sopenharmony_ci * Data Channel Receive Message 1
72662306a36Sopenharmony_ci */
72762306a36Sopenharmony_ciregister DCHRXMSG1 {
72862306a36Sopenharmony_ci	address			0x091
72962306a36Sopenharmony_ci	access_mode	RO
73062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
73162306a36Sopenharmony_ci	field	CBNUM		0xFF
73262306a36Sopenharmony_ci}
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_ci/*
73562306a36Sopenharmony_ci * CMC Receive Message 1
73662306a36Sopenharmony_ci */
73762306a36Sopenharmony_ciregister CMCRXMSG1 {
73862306a36Sopenharmony_ci	address			0x091
73962306a36Sopenharmony_ci	access_mode	RO
74062306a36Sopenharmony_ci	modes		M_CCHAN
74162306a36Sopenharmony_ci	field	CBNUM		0xFF
74262306a36Sopenharmony_ci}
74362306a36Sopenharmony_ci
74462306a36Sopenharmony_ci/*
74562306a36Sopenharmony_ci * Overlay Receive Message 1
74662306a36Sopenharmony_ci */
74762306a36Sopenharmony_ciregister OVLYRXMSG1 {
74862306a36Sopenharmony_ci	address			0x091
74962306a36Sopenharmony_ci	access_mode	RO
75062306a36Sopenharmony_ci	modes		M_SCSI
75162306a36Sopenharmony_ci	field	CBNUM		0xFF
75262306a36Sopenharmony_ci}
75362306a36Sopenharmony_ci
75462306a36Sopenharmony_ci/*
75562306a36Sopenharmony_ci * No Snoop Enable
75662306a36Sopenharmony_ci */
75762306a36Sopenharmony_ciregister NSENABLE {
75862306a36Sopenharmony_ci	address			0x091
75962306a36Sopenharmony_ci	access_mode	RW
76062306a36Sopenharmony_ci	modes		M_CFG
76162306a36Sopenharmony_ci	field	MSINSEN		0x20
76262306a36Sopenharmony_ci	field	OVLYNSEN	0x10
76362306a36Sopenharmony_ci	field	CMCNSEN		0x08
76462306a36Sopenharmony_ci	field	SGNSEN		0x04
76562306a36Sopenharmony_ci	field	DCH1NSEN	0x02
76662306a36Sopenharmony_ci	field	DCH0NSEN	0x01
76762306a36Sopenharmony_ci}
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_ci/*
77062306a36Sopenharmony_ci * Data Channel Receive Message 2
77162306a36Sopenharmony_ci */
77262306a36Sopenharmony_ciregister DCHRXMSG2 {
77362306a36Sopenharmony_ci	address			0x092
77462306a36Sopenharmony_ci	access_mode	RO
77562306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
77662306a36Sopenharmony_ci	field	MINDEX		0xFF
77762306a36Sopenharmony_ci}
77862306a36Sopenharmony_ci
77962306a36Sopenharmony_ci/*
78062306a36Sopenharmony_ci * CMC Receive Message 2
78162306a36Sopenharmony_ci */
78262306a36Sopenharmony_ciregister CMCRXMSG2 {
78362306a36Sopenharmony_ci	address			0x092
78462306a36Sopenharmony_ci	access_mode	RO
78562306a36Sopenharmony_ci	modes		M_CCHAN
78662306a36Sopenharmony_ci	field	MINDEX		0xFF
78762306a36Sopenharmony_ci}
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ci/*
79062306a36Sopenharmony_ci * Overlay Receive Message 2
79162306a36Sopenharmony_ci */
79262306a36Sopenharmony_ciregister OVLYRXMSG2 {
79362306a36Sopenharmony_ci	address			0x092
79462306a36Sopenharmony_ci	access_mode	RO
79562306a36Sopenharmony_ci	modes		M_SCSI
79662306a36Sopenharmony_ci	field	MINDEX		0xFF
79762306a36Sopenharmony_ci}
79862306a36Sopenharmony_ci
79962306a36Sopenharmony_ci/*
80062306a36Sopenharmony_ci * Outstanding Split Transactions
80162306a36Sopenharmony_ci */
80262306a36Sopenharmony_ciregister OST {
80362306a36Sopenharmony_ci	address			0x092
80462306a36Sopenharmony_ci	access_mode	RW
80562306a36Sopenharmony_ci	modes		M_CFG
80662306a36Sopenharmony_ci}
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_ci/*
80962306a36Sopenharmony_ci * Data Channel Receive Message 3
81062306a36Sopenharmony_ci */
81162306a36Sopenharmony_ciregister DCHRXMSG3 {
81262306a36Sopenharmony_ci	address			0x093
81362306a36Sopenharmony_ci	access_mode	RO
81462306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
81562306a36Sopenharmony_ci	field	MCLASS		0x0F
81662306a36Sopenharmony_ci}
81762306a36Sopenharmony_ci
81862306a36Sopenharmony_ci/*
81962306a36Sopenharmony_ci * CMC Receive Message 3
82062306a36Sopenharmony_ci */
82162306a36Sopenharmony_ciregister CMCRXMSG3 {
82262306a36Sopenharmony_ci	address			0x093
82362306a36Sopenharmony_ci	access_mode	RO
82462306a36Sopenharmony_ci	modes		M_CCHAN
82562306a36Sopenharmony_ci	field	MCLASS		0x0F
82662306a36Sopenharmony_ci}
82762306a36Sopenharmony_ci
82862306a36Sopenharmony_ci/*
82962306a36Sopenharmony_ci * Overlay Receive Message 3
83062306a36Sopenharmony_ci */
83162306a36Sopenharmony_ciregister OVLYRXMSG3 {
83262306a36Sopenharmony_ci	address			0x093
83362306a36Sopenharmony_ci	access_mode	RO
83462306a36Sopenharmony_ci	modes		M_SCSI
83562306a36Sopenharmony_ci	field	MCLASS		0x0F
83662306a36Sopenharmony_ci}
83762306a36Sopenharmony_ci
83862306a36Sopenharmony_ci/*
83962306a36Sopenharmony_ci * PCI-X Control
84062306a36Sopenharmony_ci */
84162306a36Sopenharmony_ciregister PCIXCTL {
84262306a36Sopenharmony_ci	address			0x093
84362306a36Sopenharmony_ci	access_mode	RW
84462306a36Sopenharmony_ci	modes		M_CFG
84562306a36Sopenharmony_ci	count		1
84662306a36Sopenharmony_ci	field	SERRPULSE	0x80
84762306a36Sopenharmony_ci	field	UNEXPSCIEN	0x20
84862306a36Sopenharmony_ci	field	SPLTSMADIS	0x10
84962306a36Sopenharmony_ci	field	SPLTSTADIS	0x08
85062306a36Sopenharmony_ci	field	SRSPDPEEN	0x04
85162306a36Sopenharmony_ci	field	TSCSERREN	0x02
85262306a36Sopenharmony_ci	field	CMPABCDIS	0x01
85362306a36Sopenharmony_ci	dont_generate_debug_code
85462306a36Sopenharmony_ci}
85562306a36Sopenharmony_ci
85662306a36Sopenharmony_ci/*
85762306a36Sopenharmony_ci * CMC Sequencer Byte Count
85862306a36Sopenharmony_ci */
85962306a36Sopenharmony_ciregister CMCSEQBCNT {
86062306a36Sopenharmony_ci	address			0x094
86162306a36Sopenharmony_ci	access_mode	RO
86262306a36Sopenharmony_ci	modes		M_CCHAN
86362306a36Sopenharmony_ci}
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_ci/*
86662306a36Sopenharmony_ci * Overlay Sequencer Byte Count
86762306a36Sopenharmony_ci */
86862306a36Sopenharmony_ciregister OVLYSEQBCNT {
86962306a36Sopenharmony_ci	address			0x094
87062306a36Sopenharmony_ci	access_mode	RO
87162306a36Sopenharmony_ci	modes		M_SCSI
87262306a36Sopenharmony_ci}
87362306a36Sopenharmony_ci
87462306a36Sopenharmony_ci/*
87562306a36Sopenharmony_ci * Data Channel Sequencer Byte Count
87662306a36Sopenharmony_ci */
87762306a36Sopenharmony_ciregister DCHSEQBCNT {
87862306a36Sopenharmony_ci	address			0x094
87962306a36Sopenharmony_ci	access_mode	RO
88062306a36Sopenharmony_ci	size		2
88162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
88262306a36Sopenharmony_ci}
88362306a36Sopenharmony_ci
88462306a36Sopenharmony_ci/*
88562306a36Sopenharmony_ci * Data Channel Split Status 0
88662306a36Sopenharmony_ci */
88762306a36Sopenharmony_ciregister DCHSPLTSTAT0 {
88862306a36Sopenharmony_ci	address			0x096
88962306a36Sopenharmony_ci	access_mode	RW
89062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
89162306a36Sopenharmony_ci	count		2
89262306a36Sopenharmony_ci	field	STAETERM	0x80
89362306a36Sopenharmony_ci	field	SCBCERR		0x40
89462306a36Sopenharmony_ci	field	SCADERR		0x20
89562306a36Sopenharmony_ci	field	SCDATBUCKET	0x10
89662306a36Sopenharmony_ci	field	CNTNOTCMPLT	0x08
89762306a36Sopenharmony_ci	field	RXOVRUN		0x04
89862306a36Sopenharmony_ci	field	RXSCEMSG	0x02
89962306a36Sopenharmony_ci	field	RXSPLTRSP	0x01
90062306a36Sopenharmony_ci	dont_generate_debug_code
90162306a36Sopenharmony_ci}
90262306a36Sopenharmony_ci
90362306a36Sopenharmony_ci/*
90462306a36Sopenharmony_ci * CMC Split Status 0
90562306a36Sopenharmony_ci */
90662306a36Sopenharmony_ciregister CMCSPLTSTAT0 {
90762306a36Sopenharmony_ci	address			0x096
90862306a36Sopenharmony_ci	access_mode	RW
90962306a36Sopenharmony_ci	modes		M_CCHAN
91062306a36Sopenharmony_ci	field	STAETERM	0x80
91162306a36Sopenharmony_ci	field	SCBCERR		0x40
91262306a36Sopenharmony_ci	field	SCADERR		0x20
91362306a36Sopenharmony_ci	field	SCDATBUCKET	0x10
91462306a36Sopenharmony_ci	field	CNTNOTCMPLT	0x08
91562306a36Sopenharmony_ci	field	RXOVRUN		0x04
91662306a36Sopenharmony_ci	field	RXSCEMSG	0x02
91762306a36Sopenharmony_ci	field	RXSPLTRSP	0x01
91862306a36Sopenharmony_ci}
91962306a36Sopenharmony_ci
92062306a36Sopenharmony_ci/*
92162306a36Sopenharmony_ci * Overlay Split Status 0
92262306a36Sopenharmony_ci */
92362306a36Sopenharmony_ciregister OVLYSPLTSTAT0 {
92462306a36Sopenharmony_ci	address			0x096
92562306a36Sopenharmony_ci	access_mode	RW
92662306a36Sopenharmony_ci	modes		M_SCSI
92762306a36Sopenharmony_ci	field	STAETERM	0x80
92862306a36Sopenharmony_ci	field	SCBCERR		0x40
92962306a36Sopenharmony_ci	field	SCADERR		0x20
93062306a36Sopenharmony_ci	field	SCDATBUCKET	0x10
93162306a36Sopenharmony_ci	field	CNTNOTCMPLT	0x08
93262306a36Sopenharmony_ci	field	RXOVRUN		0x04
93362306a36Sopenharmony_ci	field	RXSCEMSG	0x02
93462306a36Sopenharmony_ci	field	RXSPLTRSP	0x01
93562306a36Sopenharmony_ci}
93662306a36Sopenharmony_ci
93762306a36Sopenharmony_ci/*
93862306a36Sopenharmony_ci * Data Channel Split Status 1
93962306a36Sopenharmony_ci */
94062306a36Sopenharmony_ciregister DCHSPLTSTAT1 {
94162306a36Sopenharmony_ci	address			0x097
94262306a36Sopenharmony_ci	access_mode	RW
94362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
94462306a36Sopenharmony_ci	count		2
94562306a36Sopenharmony_ci	field	RXDATABUCKET	0x01
94662306a36Sopenharmony_ci	dont_generate_debug_code
94762306a36Sopenharmony_ci}
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_ci/*
95062306a36Sopenharmony_ci * CMC Split Status 1
95162306a36Sopenharmony_ci */
95262306a36Sopenharmony_ciregister CMCSPLTSTAT1 {
95362306a36Sopenharmony_ci	address			0x097
95462306a36Sopenharmony_ci	access_mode	RW
95562306a36Sopenharmony_ci	modes		M_CCHAN
95662306a36Sopenharmony_ci	field	RXDATABUCKET	0x01
95762306a36Sopenharmony_ci}
95862306a36Sopenharmony_ci
95962306a36Sopenharmony_ci/*
96062306a36Sopenharmony_ci * Overlay Split Status 1
96162306a36Sopenharmony_ci */
96262306a36Sopenharmony_ciregister OVLYSPLTSTAT1 {
96362306a36Sopenharmony_ci	address			0x097
96462306a36Sopenharmony_ci	access_mode	RW
96562306a36Sopenharmony_ci	modes		M_SCSI
96662306a36Sopenharmony_ci	field	RXDATABUCKET	0x01
96762306a36Sopenharmony_ci}
96862306a36Sopenharmony_ci
96962306a36Sopenharmony_ci/*
97062306a36Sopenharmony_ci * S/G Receive Message 0
97162306a36Sopenharmony_ci */
97262306a36Sopenharmony_ciregister SGRXMSG0 {
97362306a36Sopenharmony_ci	address			0x098
97462306a36Sopenharmony_ci	access_mode	RO
97562306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
97662306a36Sopenharmony_ci	field		CDNUM	0xF8
97762306a36Sopenharmony_ci	field		CFNUM	0x07
97862306a36Sopenharmony_ci}
97962306a36Sopenharmony_ci
98062306a36Sopenharmony_ci/*
98162306a36Sopenharmony_ci * S/G Receive Message 1
98262306a36Sopenharmony_ci */
98362306a36Sopenharmony_ciregister SGRXMSG1 {
98462306a36Sopenharmony_ci	address			0x099
98562306a36Sopenharmony_ci	access_mode	RO
98662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
98762306a36Sopenharmony_ci	field	CBNUM		0xFF
98862306a36Sopenharmony_ci}
98962306a36Sopenharmony_ci
99062306a36Sopenharmony_ci/*
99162306a36Sopenharmony_ci * S/G Receive Message 2
99262306a36Sopenharmony_ci */
99362306a36Sopenharmony_ciregister SGRXMSG2 {
99462306a36Sopenharmony_ci	address			0x09A
99562306a36Sopenharmony_ci	access_mode	RO
99662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
99762306a36Sopenharmony_ci	field	MINDEX		0xFF
99862306a36Sopenharmony_ci}
99962306a36Sopenharmony_ci
100062306a36Sopenharmony_ci/*
100162306a36Sopenharmony_ci * S/G Receive Message 3
100262306a36Sopenharmony_ci */
100362306a36Sopenharmony_ciregister SGRXMSG3 {
100462306a36Sopenharmony_ci	address			0x09B
100562306a36Sopenharmony_ci	access_mode	RO
100662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
100762306a36Sopenharmony_ci	field	MCLASS		0x0F
100862306a36Sopenharmony_ci}
100962306a36Sopenharmony_ci
101062306a36Sopenharmony_ci/*
101162306a36Sopenharmony_ci * Slave Split Out Address 0
101262306a36Sopenharmony_ci */
101362306a36Sopenharmony_ciregister SLVSPLTOUTADR0 {
101462306a36Sopenharmony_ci	address			0x098
101562306a36Sopenharmony_ci	access_mode	RO
101662306a36Sopenharmony_ci	modes		M_SCSI
101762306a36Sopenharmony_ci	field	LOWER_ADDR	0x7F
101862306a36Sopenharmony_ci}
101962306a36Sopenharmony_ci
102062306a36Sopenharmony_ci/*
102162306a36Sopenharmony_ci * Slave Split Out Address 1
102262306a36Sopenharmony_ci */
102362306a36Sopenharmony_ciregister SLVSPLTOUTADR1 {
102462306a36Sopenharmony_ci	address			0x099
102562306a36Sopenharmony_ci	access_mode	RO
102662306a36Sopenharmony_ci	modes		M_SCSI
102762306a36Sopenharmony_ci	field	REQ_DNUM	0xF8
102862306a36Sopenharmony_ci	field	REQ_FNUM	0x07
102962306a36Sopenharmony_ci}
103062306a36Sopenharmony_ci
103162306a36Sopenharmony_ci/*
103262306a36Sopenharmony_ci * Slave Split Out Address 2
103362306a36Sopenharmony_ci */
103462306a36Sopenharmony_ciregister SLVSPLTOUTADR2 {
103562306a36Sopenharmony_ci	address			0x09A
103662306a36Sopenharmony_ci	access_mode	RO
103762306a36Sopenharmony_ci	modes		M_SCSI
103862306a36Sopenharmony_ci	field	REQ_BNUM	0xFF
103962306a36Sopenharmony_ci}
104062306a36Sopenharmony_ci
104162306a36Sopenharmony_ci/*
104262306a36Sopenharmony_ci * Slave Split Out Address 3
104362306a36Sopenharmony_ci */
104462306a36Sopenharmony_ciregister SLVSPLTOUTADR3 {
104562306a36Sopenharmony_ci	address			0x09B
104662306a36Sopenharmony_ci	access_mode	RO
104762306a36Sopenharmony_ci	modes		M_SCSI
104862306a36Sopenharmony_ci	field	RLXORD		020
104962306a36Sopenharmony_ci	field	TAG_NUM		0x1F
105062306a36Sopenharmony_ci}
105162306a36Sopenharmony_ci
105262306a36Sopenharmony_ci/*
105362306a36Sopenharmony_ci * SG Sequencer Byte Count
105462306a36Sopenharmony_ci */
105562306a36Sopenharmony_ciregister SGSEQBCNT {
105662306a36Sopenharmony_ci	address			0x09C
105762306a36Sopenharmony_ci	access_mode	RO
105862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
105962306a36Sopenharmony_ci}
106062306a36Sopenharmony_ci
106162306a36Sopenharmony_ci/*
106262306a36Sopenharmony_ci * Slave Split Out Attribute 0
106362306a36Sopenharmony_ci */
106462306a36Sopenharmony_ciregister SLVSPLTOUTATTR0 {
106562306a36Sopenharmony_ci	address			0x09C
106662306a36Sopenharmony_ci	access_mode	RO
106762306a36Sopenharmony_ci	modes		M_SCSI
106862306a36Sopenharmony_ci	field	LOWER_BCNT	0xFF
106962306a36Sopenharmony_ci}
107062306a36Sopenharmony_ci
107162306a36Sopenharmony_ci/*
107262306a36Sopenharmony_ci * Slave Split Out Attribute 1
107362306a36Sopenharmony_ci */
107462306a36Sopenharmony_ciregister SLVSPLTOUTATTR1 {
107562306a36Sopenharmony_ci	address			0x09D
107662306a36Sopenharmony_ci	access_mode	RO
107762306a36Sopenharmony_ci	modes		M_SCSI
107862306a36Sopenharmony_ci	field	CMPLT_DNUM	0xF8
107962306a36Sopenharmony_ci	field	CMPLT_FNUM	0x07
108062306a36Sopenharmony_ci}
108162306a36Sopenharmony_ci
108262306a36Sopenharmony_ci/*
108362306a36Sopenharmony_ci * Slave Split Out Attribute 2
108462306a36Sopenharmony_ci */
108562306a36Sopenharmony_ciregister SLVSPLTOUTATTR2 {
108662306a36Sopenharmony_ci	address			0x09E
108762306a36Sopenharmony_ci	access_mode	RO
108862306a36Sopenharmony_ci	size		2
108962306a36Sopenharmony_ci	modes		M_SCSI
109062306a36Sopenharmony_ci	field	CMPLT_BNUM	0xFF
109162306a36Sopenharmony_ci}
109262306a36Sopenharmony_ci/*
109362306a36Sopenharmony_ci * S/G Split Status 0
109462306a36Sopenharmony_ci */
109562306a36Sopenharmony_ciregister SGSPLTSTAT0 {
109662306a36Sopenharmony_ci	address			0x09E
109762306a36Sopenharmony_ci	access_mode	RW
109862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
109962306a36Sopenharmony_ci	count		2
110062306a36Sopenharmony_ci	field	STAETERM	0x80
110162306a36Sopenharmony_ci	field	SCBCERR		0x40
110262306a36Sopenharmony_ci	field	SCADERR		0x20
110362306a36Sopenharmony_ci	field	SCDATBUCKET	0x10
110462306a36Sopenharmony_ci	field	CNTNOTCMPLT	0x08
110562306a36Sopenharmony_ci	field	RXOVRUN		0x04
110662306a36Sopenharmony_ci	field	RXSCEMSG	0x02
110762306a36Sopenharmony_ci	field	RXSPLTRSP	0x01
110862306a36Sopenharmony_ci	dont_generate_debug_code
110962306a36Sopenharmony_ci}
111062306a36Sopenharmony_ci
111162306a36Sopenharmony_ci/*
111262306a36Sopenharmony_ci * S/G Split Status 1
111362306a36Sopenharmony_ci */
111462306a36Sopenharmony_ciregister SGSPLTSTAT1 {
111562306a36Sopenharmony_ci	address			0x09F
111662306a36Sopenharmony_ci	access_mode	RW
111762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
111862306a36Sopenharmony_ci	count		2
111962306a36Sopenharmony_ci	field	RXDATABUCKET	0x01
112062306a36Sopenharmony_ci	dont_generate_debug_code
112162306a36Sopenharmony_ci}
112262306a36Sopenharmony_ci
112362306a36Sopenharmony_ci/*
112462306a36Sopenharmony_ci * Special Function
112562306a36Sopenharmony_ci */
112662306a36Sopenharmony_ciregister SFUNCT {
112762306a36Sopenharmony_ci	address			0x09f
112862306a36Sopenharmony_ci	access_mode	RW
112962306a36Sopenharmony_ci	modes		M_CFG
113062306a36Sopenharmony_ci	field	TEST_GROUP	0xF0
113162306a36Sopenharmony_ci	field	TEST_NUM	0x0F
113262306a36Sopenharmony_ci	dont_generate_debug_code
113362306a36Sopenharmony_ci}
113462306a36Sopenharmony_ci
113562306a36Sopenharmony_ci/*
113662306a36Sopenharmony_ci * Data FIFO 0 PCI Status 
113762306a36Sopenharmony_ci */
113862306a36Sopenharmony_ciregister DF0PCISTAT {
113962306a36Sopenharmony_ci	address			0x0A0
114062306a36Sopenharmony_ci	access_mode	RW
114162306a36Sopenharmony_ci	modes		M_CFG
114262306a36Sopenharmony_ci	count		1
114362306a36Sopenharmony_ci	field	DPE		0x80
114462306a36Sopenharmony_ci	field	SSE		0x40
114562306a36Sopenharmony_ci	field	RMA		0x20
114662306a36Sopenharmony_ci	field	RTA		0x10
114762306a36Sopenharmony_ci	field	SCAAPERR	0x08
114862306a36Sopenharmony_ci	field	RDPERR		0x04
114962306a36Sopenharmony_ci	field	TWATERR		0x02
115062306a36Sopenharmony_ci	field	DPR		0x01
115162306a36Sopenharmony_ci	dont_generate_debug_code
115262306a36Sopenharmony_ci}
115362306a36Sopenharmony_ci
115462306a36Sopenharmony_ci/*
115562306a36Sopenharmony_ci * Data FIFO 1 PCI Status 
115662306a36Sopenharmony_ci */
115762306a36Sopenharmony_ciregister DF1PCISTAT {
115862306a36Sopenharmony_ci	address			0x0A1
115962306a36Sopenharmony_ci	access_mode	RW
116062306a36Sopenharmony_ci	modes		M_CFG
116162306a36Sopenharmony_ci	field	DPE		0x80
116262306a36Sopenharmony_ci	field	SSE		0x40
116362306a36Sopenharmony_ci	field	RMA		0x20
116462306a36Sopenharmony_ci	field	RTA		0x10
116562306a36Sopenharmony_ci	field	SCAAPERR	0x08
116662306a36Sopenharmony_ci	field	RDPERR		0x04
116762306a36Sopenharmony_ci	field	TWATERR		0x02
116862306a36Sopenharmony_ci	field	DPR		0x01
116962306a36Sopenharmony_ci}
117062306a36Sopenharmony_ci
117162306a36Sopenharmony_ci/*
117262306a36Sopenharmony_ci * S/G PCI Status 
117362306a36Sopenharmony_ci */
117462306a36Sopenharmony_ciregister SGPCISTAT {
117562306a36Sopenharmony_ci	address			0x0A2
117662306a36Sopenharmony_ci	access_mode	RW
117762306a36Sopenharmony_ci	modes		M_CFG
117862306a36Sopenharmony_ci	field	DPE		0x80
117962306a36Sopenharmony_ci	field	SSE		0x40
118062306a36Sopenharmony_ci	field	RMA		0x20
118162306a36Sopenharmony_ci	field	RTA		0x10
118262306a36Sopenharmony_ci	field	SCAAPERR	0x08
118362306a36Sopenharmony_ci	field	RDPERR		0x04
118462306a36Sopenharmony_ci	field	DPR		0x01
118562306a36Sopenharmony_ci}
118662306a36Sopenharmony_ci
118762306a36Sopenharmony_ci/*
118862306a36Sopenharmony_ci * CMC PCI Status 
118962306a36Sopenharmony_ci */
119062306a36Sopenharmony_ciregister CMCPCISTAT {
119162306a36Sopenharmony_ci	address			0x0A3
119262306a36Sopenharmony_ci	access_mode	RW
119362306a36Sopenharmony_ci	modes		M_CFG
119462306a36Sopenharmony_ci	field	DPE		0x80
119562306a36Sopenharmony_ci	field	SSE		0x40
119662306a36Sopenharmony_ci	field	RMA		0x20
119762306a36Sopenharmony_ci	field	RTA		0x10
119862306a36Sopenharmony_ci	field	SCAAPERR	0x08
119962306a36Sopenharmony_ci	field	RDPERR		0x04
120062306a36Sopenharmony_ci	field	TWATERR		0x02
120162306a36Sopenharmony_ci	field	DPR		0x01
120262306a36Sopenharmony_ci}
120362306a36Sopenharmony_ci
120462306a36Sopenharmony_ci/*
120562306a36Sopenharmony_ci * Overlay PCI Status 
120662306a36Sopenharmony_ci */
120762306a36Sopenharmony_ciregister OVLYPCISTAT {
120862306a36Sopenharmony_ci	address			0x0A4
120962306a36Sopenharmony_ci	access_mode	RW
121062306a36Sopenharmony_ci	modes		M_CFG
121162306a36Sopenharmony_ci	field	DPE		0x80
121262306a36Sopenharmony_ci	field	SSE		0x40
121362306a36Sopenharmony_ci	field	RMA		0x20
121462306a36Sopenharmony_ci	field	RTA		0x10
121562306a36Sopenharmony_ci	field	SCAAPERR	0x08
121662306a36Sopenharmony_ci	field	RDPERR		0x04
121762306a36Sopenharmony_ci	field	DPR		0x01
121862306a36Sopenharmony_ci}
121962306a36Sopenharmony_ci
122062306a36Sopenharmony_ci/*
122162306a36Sopenharmony_ci * PCI Status for MSI Master DMA Transfer
122262306a36Sopenharmony_ci */
122362306a36Sopenharmony_ciregister MSIPCISTAT {
122462306a36Sopenharmony_ci	address			0x0A6
122562306a36Sopenharmony_ci	access_mode	RW
122662306a36Sopenharmony_ci	modes		M_CFG
122762306a36Sopenharmony_ci	field	SSE		0x40
122862306a36Sopenharmony_ci	field	RMA		0x20
122962306a36Sopenharmony_ci	field	RTA		0x10
123062306a36Sopenharmony_ci	field	CLRPENDMSI	0x08
123162306a36Sopenharmony_ci	field	TWATERR		0x02
123262306a36Sopenharmony_ci	field	DPR		0x01
123362306a36Sopenharmony_ci}
123462306a36Sopenharmony_ci
123562306a36Sopenharmony_ci/*
123662306a36Sopenharmony_ci * PCI Status for Target
123762306a36Sopenharmony_ci */
123862306a36Sopenharmony_ciregister TARGPCISTAT {
123962306a36Sopenharmony_ci	address			0x0A7
124062306a36Sopenharmony_ci	access_mode	RW
124162306a36Sopenharmony_ci	modes		M_CFG
124262306a36Sopenharmony_ci	count		5
124362306a36Sopenharmony_ci	field	DPE		0x80
124462306a36Sopenharmony_ci	field	SSE		0x40
124562306a36Sopenharmony_ci	field	STA		0x08
124662306a36Sopenharmony_ci	field	TWATERR		0x02
124762306a36Sopenharmony_ci	dont_generate_debug_code
124862306a36Sopenharmony_ci}
124962306a36Sopenharmony_ci
125062306a36Sopenharmony_ci/*
125162306a36Sopenharmony_ci * LQ Packet In
125262306a36Sopenharmony_ci * The last LQ Packet received
125362306a36Sopenharmony_ci */
125462306a36Sopenharmony_ciregister LQIN {
125562306a36Sopenharmony_ci	address			0x020
125662306a36Sopenharmony_ci	access_mode	RW
125762306a36Sopenharmony_ci	size		20
125862306a36Sopenharmony_ci	count		2
125962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
126062306a36Sopenharmony_ci	dont_generate_debug_code
126162306a36Sopenharmony_ci}
126262306a36Sopenharmony_ci
126362306a36Sopenharmony_ci/*
126462306a36Sopenharmony_ci * SCB Type Pointer
126562306a36Sopenharmony_ci * SCB offset for Target Mode SCB type information
126662306a36Sopenharmony_ci */
126762306a36Sopenharmony_ciregister TYPEPTR {
126862306a36Sopenharmony_ci	address			0x020
126962306a36Sopenharmony_ci	access_mode	RW
127062306a36Sopenharmony_ci	modes		M_CFG
127162306a36Sopenharmony_ci}
127262306a36Sopenharmony_ci
127362306a36Sopenharmony_ci/*
127462306a36Sopenharmony_ci * Queue Tag Pointer
127562306a36Sopenharmony_ci * SCB offset to the Two Byte tag identifier used for target mode.
127662306a36Sopenharmony_ci */
127762306a36Sopenharmony_ciregister TAGPTR {
127862306a36Sopenharmony_ci	address			0x021
127962306a36Sopenharmony_ci	access_mode	RW
128062306a36Sopenharmony_ci	modes		M_CFG
128162306a36Sopenharmony_ci}
128262306a36Sopenharmony_ci
128362306a36Sopenharmony_ci/*
128462306a36Sopenharmony_ci * Logical Unit Number Pointer
128562306a36Sopenharmony_ci * SCB offset to the LSB (little endian) of the lun field.
128662306a36Sopenharmony_ci */
128762306a36Sopenharmony_ciregister LUNPTR {
128862306a36Sopenharmony_ci	address			0x022
128962306a36Sopenharmony_ci	access_mode	RW
129062306a36Sopenharmony_ci	modes		M_CFG
129162306a36Sopenharmony_ci	count		2
129262306a36Sopenharmony_ci	dont_generate_debug_code
129362306a36Sopenharmony_ci}
129462306a36Sopenharmony_ci
129562306a36Sopenharmony_ci/*
129662306a36Sopenharmony_ci * Data Length Pointer
129762306a36Sopenharmony_ci * SCB offset for the 4 byte data length field in target mode.
129862306a36Sopenharmony_ci */
129962306a36Sopenharmony_ciregister DATALENPTR {
130062306a36Sopenharmony_ci	address			0x023
130162306a36Sopenharmony_ci	access_mode	RW
130262306a36Sopenharmony_ci	modes		M_CFG
130362306a36Sopenharmony_ci}
130462306a36Sopenharmony_ci
130562306a36Sopenharmony_ci/*
130662306a36Sopenharmony_ci * Status Length Pointer
130762306a36Sopenharmony_ci * SCB offset to the two byte status field in target SCBs.
130862306a36Sopenharmony_ci */
130962306a36Sopenharmony_ciregister STATLENPTR {
131062306a36Sopenharmony_ci	address			0x024
131162306a36Sopenharmony_ci	access_mode	RW
131262306a36Sopenharmony_ci	modes		M_CFG
131362306a36Sopenharmony_ci}
131462306a36Sopenharmony_ci
131562306a36Sopenharmony_ci/*
131662306a36Sopenharmony_ci * Command Length Pointer
131762306a36Sopenharmony_ci * Scb offset for the CDB length field in initiator SCBs.
131862306a36Sopenharmony_ci */
131962306a36Sopenharmony_ciregister CMDLENPTR {
132062306a36Sopenharmony_ci	address			0x025
132162306a36Sopenharmony_ci	access_mode	RW
132262306a36Sopenharmony_ci	modes		M_CFG
132362306a36Sopenharmony_ci	count		1
132462306a36Sopenharmony_ci	dont_generate_debug_code
132562306a36Sopenharmony_ci}
132662306a36Sopenharmony_ci
132762306a36Sopenharmony_ci/*
132862306a36Sopenharmony_ci * Task Attribute Pointer
132962306a36Sopenharmony_ci * Scb offset for the byte field specifying the attribute byte
133062306a36Sopenharmony_ci * to be used in command packets.
133162306a36Sopenharmony_ci */ 
133262306a36Sopenharmony_ciregister ATTRPTR {
133362306a36Sopenharmony_ci	address			0x026
133462306a36Sopenharmony_ci	access_mode	RW
133562306a36Sopenharmony_ci	modes		M_CFG
133662306a36Sopenharmony_ci	count		1
133762306a36Sopenharmony_ci	dont_generate_debug_code
133862306a36Sopenharmony_ci}
133962306a36Sopenharmony_ci
134062306a36Sopenharmony_ci/*
134162306a36Sopenharmony_ci * Task Management Flags Pointer
134262306a36Sopenharmony_ci * Scb offset for the byte field specifying the attribute flags
134362306a36Sopenharmony_ci * byte to be used in command packets.
134462306a36Sopenharmony_ci */ 
134562306a36Sopenharmony_ciregister FLAGPTR {
134662306a36Sopenharmony_ci	address			0x027
134762306a36Sopenharmony_ci	access_mode	RW
134862306a36Sopenharmony_ci	modes		M_CFG
134962306a36Sopenharmony_ci	count		1
135062306a36Sopenharmony_ci	dont_generate_debug_code
135162306a36Sopenharmony_ci}
135262306a36Sopenharmony_ci
135362306a36Sopenharmony_ci/*
135462306a36Sopenharmony_ci * Command Pointer
135562306a36Sopenharmony_ci * Scb offset for the first byte in the CDB for initiator SCBs.
135662306a36Sopenharmony_ci */
135762306a36Sopenharmony_ciregister CMDPTR {
135862306a36Sopenharmony_ci	address			0x028
135962306a36Sopenharmony_ci	access_mode	RW
136062306a36Sopenharmony_ci	modes		M_CFG
136162306a36Sopenharmony_ci	count		1
136262306a36Sopenharmony_ci	dont_generate_debug_code
136362306a36Sopenharmony_ci}
136462306a36Sopenharmony_ci
136562306a36Sopenharmony_ci/*
136662306a36Sopenharmony_ci * Queue Next Pointer
136762306a36Sopenharmony_ci * Scb offset for the 2 byte "next scb link".
136862306a36Sopenharmony_ci */
136962306a36Sopenharmony_ciregister QNEXTPTR {
137062306a36Sopenharmony_ci	address			0x029
137162306a36Sopenharmony_ci	access_mode	RW
137262306a36Sopenharmony_ci	modes		M_CFG
137362306a36Sopenharmony_ci	count		1
137462306a36Sopenharmony_ci	dont_generate_debug_code
137562306a36Sopenharmony_ci}
137662306a36Sopenharmony_ci
137762306a36Sopenharmony_ci/*
137862306a36Sopenharmony_ci * SCSI ID Pointer
137962306a36Sopenharmony_ci * Scb offset to the value to place in the SCSIID register
138062306a36Sopenharmony_ci * during target mode connections.
138162306a36Sopenharmony_ci */
138262306a36Sopenharmony_ciregister IDPTR {
138362306a36Sopenharmony_ci	address			0x02A
138462306a36Sopenharmony_ci	access_mode	RW
138562306a36Sopenharmony_ci	modes		M_CFG
138662306a36Sopenharmony_ci}
138762306a36Sopenharmony_ci
138862306a36Sopenharmony_ci/*
138962306a36Sopenharmony_ci * Command Aborted Byte Pointer
139062306a36Sopenharmony_ci * Offset to the SCB flags field that includes the
139162306a36Sopenharmony_ci * "SCB aborted" status bit.
139262306a36Sopenharmony_ci */
139362306a36Sopenharmony_ciregister ABRTBYTEPTR {
139462306a36Sopenharmony_ci	address			0x02B
139562306a36Sopenharmony_ci	access_mode	RW
139662306a36Sopenharmony_ci	modes		M_CFG
139762306a36Sopenharmony_ci	count		1
139862306a36Sopenharmony_ci	dont_generate_debug_code
139962306a36Sopenharmony_ci}
140062306a36Sopenharmony_ci
140162306a36Sopenharmony_ci/*
140262306a36Sopenharmony_ci * Command Aborted Bit Pointer
140362306a36Sopenharmony_ci * Bit offset in the SCB flags field for "SCB aborted" status.
140462306a36Sopenharmony_ci */
140562306a36Sopenharmony_ciregister ABRTBITPTR {
140662306a36Sopenharmony_ci	address			0x02C
140762306a36Sopenharmony_ci	access_mode	RW
140862306a36Sopenharmony_ci	modes		M_CFG
140962306a36Sopenharmony_ci	count		1
141062306a36Sopenharmony_ci	dont_generate_debug_code
141162306a36Sopenharmony_ci}
141262306a36Sopenharmony_ci
141362306a36Sopenharmony_ci/*
141462306a36Sopenharmony_ci * Rev B or greater.
141562306a36Sopenharmony_ci */
141662306a36Sopenharmony_ciregister MAXCMDBYTES {
141762306a36Sopenharmony_ci	address			0x02D
141862306a36Sopenharmony_ci	access_mode	RW
141962306a36Sopenharmony_ci	modes		M_CFG
142062306a36Sopenharmony_ci}
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_ci/*
142362306a36Sopenharmony_ci * Rev B or greater.
142462306a36Sopenharmony_ci */
142562306a36Sopenharmony_ciregister MAXCMD2RCV {
142662306a36Sopenharmony_ci	address			0x02E
142762306a36Sopenharmony_ci	access_mode	RW
142862306a36Sopenharmony_ci	modes		M_CFG
142962306a36Sopenharmony_ci}
143062306a36Sopenharmony_ci
143162306a36Sopenharmony_ci/*
143262306a36Sopenharmony_ci * Rev B or greater.
143362306a36Sopenharmony_ci */
143462306a36Sopenharmony_ciregister SHORTTHRESH {
143562306a36Sopenharmony_ci	address			0x02F
143662306a36Sopenharmony_ci	access_mode	RW
143762306a36Sopenharmony_ci	modes		M_CFG
143862306a36Sopenharmony_ci}
143962306a36Sopenharmony_ci
144062306a36Sopenharmony_ci/*
144162306a36Sopenharmony_ci * Logical Unit Number Length
144262306a36Sopenharmony_ci * The length, in bytes, of the SCB lun field.
144362306a36Sopenharmony_ci */
144462306a36Sopenharmony_ciregister LUNLEN {
144562306a36Sopenharmony_ci	address			0x030
144662306a36Sopenharmony_ci	access_mode	RW
144762306a36Sopenharmony_ci	modes		M_CFG
144862306a36Sopenharmony_ci	count		2
144962306a36Sopenharmony_ci	mask		ILUNLEN	0x0F
145062306a36Sopenharmony_ci	mask		TLUNLEN	0xF0
145162306a36Sopenharmony_ci	dont_generate_debug_code
145262306a36Sopenharmony_ci}
145362306a36Sopenharmony_ciconst LUNLEN_SINGLE_LEVEL_LUN 0xF
145462306a36Sopenharmony_ci
145562306a36Sopenharmony_ci/*
145662306a36Sopenharmony_ci * CDB Limit
145762306a36Sopenharmony_ci * The size, in bytes, of the embedded CDB field in initator SCBs.
145862306a36Sopenharmony_ci */
145962306a36Sopenharmony_ciregister CDBLIMIT {
146062306a36Sopenharmony_ci	address			0x031
146162306a36Sopenharmony_ci	access_mode	RW
146262306a36Sopenharmony_ci	modes		M_CFG
146362306a36Sopenharmony_ci	count		1
146462306a36Sopenharmony_ci	dont_generate_debug_code
146562306a36Sopenharmony_ci}
146662306a36Sopenharmony_ci
146762306a36Sopenharmony_ci/*
146862306a36Sopenharmony_ci * Maximum Commands
146962306a36Sopenharmony_ci * The maximum number of commands to issue during a
147062306a36Sopenharmony_ci * single packetized connection.
147162306a36Sopenharmony_ci */
147262306a36Sopenharmony_ciregister MAXCMD {
147362306a36Sopenharmony_ci	address			0x032
147462306a36Sopenharmony_ci	access_mode	RW
147562306a36Sopenharmony_ci	modes		M_CFG
147662306a36Sopenharmony_ci	count		9
147762306a36Sopenharmony_ci	dont_generate_debug_code
147862306a36Sopenharmony_ci}
147962306a36Sopenharmony_ci
148062306a36Sopenharmony_ci/*
148162306a36Sopenharmony_ci * Maximum Command Counter
148262306a36Sopenharmony_ci * The number of commands already sent during this connection
148362306a36Sopenharmony_ci */
148462306a36Sopenharmony_ciregister MAXCMDCNT {
148562306a36Sopenharmony_ci	address			0x033
148662306a36Sopenharmony_ci	access_mode	RW
148762306a36Sopenharmony_ci	modes		M_CFG
148862306a36Sopenharmony_ci	dont_generate_debug_code
148962306a36Sopenharmony_ci}
149062306a36Sopenharmony_ci
149162306a36Sopenharmony_ci/*
149262306a36Sopenharmony_ci * LQ Packet Reserved Bytes
149362306a36Sopenharmony_ci * The bytes to be sent in the currently reserved fileds
149462306a36Sopenharmony_ci * of all LQ packets.
149562306a36Sopenharmony_ci */
149662306a36Sopenharmony_ciregister LQRSVD01 {
149762306a36Sopenharmony_ci	address			0x034
149862306a36Sopenharmony_ci	access_mode	RW
149962306a36Sopenharmony_ci	modes		M_SCSI
150062306a36Sopenharmony_ci}
150162306a36Sopenharmony_ciregister LQRSVD16 {
150262306a36Sopenharmony_ci	address			0x035
150362306a36Sopenharmony_ci	access_mode	RW
150462306a36Sopenharmony_ci	modes		M_SCSI
150562306a36Sopenharmony_ci}
150662306a36Sopenharmony_ciregister LQRSVD17 {
150762306a36Sopenharmony_ci	address			0x036
150862306a36Sopenharmony_ci	access_mode	RW
150962306a36Sopenharmony_ci	modes		M_SCSI
151062306a36Sopenharmony_ci}
151162306a36Sopenharmony_ci
151262306a36Sopenharmony_ci/*
151362306a36Sopenharmony_ci * Command Reserved 0
151462306a36Sopenharmony_ci * The byte to be sent for the reserved byte 0 of
151562306a36Sopenharmony_ci * outgoing command packets.
151662306a36Sopenharmony_ci */
151762306a36Sopenharmony_ciregister CMDRSVD0 {
151862306a36Sopenharmony_ci	address			0x037
151962306a36Sopenharmony_ci	access_mode	RW
152062306a36Sopenharmony_ci	modes		M_CFG
152162306a36Sopenharmony_ci}
152262306a36Sopenharmony_ci
152362306a36Sopenharmony_ci/*
152462306a36Sopenharmony_ci * LQ Manager Control 0
152562306a36Sopenharmony_ci */
152662306a36Sopenharmony_ciregister LQCTL0 {
152762306a36Sopenharmony_ci	address			0x038
152862306a36Sopenharmony_ci	access_mode	RW
152962306a36Sopenharmony_ci	modes		M_CFG
153062306a36Sopenharmony_ci	field	LQITARGCLT	0xC0
153162306a36Sopenharmony_ci	field	LQIINITGCLT	0x30
153262306a36Sopenharmony_ci	field	LQ0TARGCLT	0x0C
153362306a36Sopenharmony_ci	field	LQ0INITGCLT	0x03
153462306a36Sopenharmony_ci}
153562306a36Sopenharmony_ci
153662306a36Sopenharmony_ci/*
153762306a36Sopenharmony_ci * LQ Manager Control 1
153862306a36Sopenharmony_ci */
153962306a36Sopenharmony_ciregister LQCTL1 {
154062306a36Sopenharmony_ci	address			0x038
154162306a36Sopenharmony_ci	access_mode	RW
154262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
154362306a36Sopenharmony_ci	count		2
154462306a36Sopenharmony_ci	field	PCI2PCI		0x04
154562306a36Sopenharmony_ci	field	SINGLECMD	0x02
154662306a36Sopenharmony_ci	field	ABORTPENDING	0x01
154762306a36Sopenharmony_ci	dont_generate_debug_code
154862306a36Sopenharmony_ci}
154962306a36Sopenharmony_ci
155062306a36Sopenharmony_ci/*
155162306a36Sopenharmony_ci * LQ Manager Control 2
155262306a36Sopenharmony_ci */
155362306a36Sopenharmony_ciregister LQCTL2 {
155462306a36Sopenharmony_ci	address			0x039
155562306a36Sopenharmony_ci	access_mode	RW
155662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
155762306a36Sopenharmony_ci	count		5
155862306a36Sopenharmony_ci	field	LQIRETRY	0x80
155962306a36Sopenharmony_ci	field	LQICONTINUE	0x40
156062306a36Sopenharmony_ci	field	LQITOIDLE	0x20
156162306a36Sopenharmony_ci	field	LQIPAUSE	0x10
156262306a36Sopenharmony_ci	field	LQORETRY	0x08
156362306a36Sopenharmony_ci	field	LQOCONTINUE	0x04
156462306a36Sopenharmony_ci	field	LQOTOIDLE	0x02
156562306a36Sopenharmony_ci	field	LQOPAUSE	0x01
156662306a36Sopenharmony_ci	dont_generate_debug_code
156762306a36Sopenharmony_ci}
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ci/*
157062306a36Sopenharmony_ci * SCSI RAM BIST0
157162306a36Sopenharmony_ci */
157262306a36Sopenharmony_ciregister SCSBIST0 {
157362306a36Sopenharmony_ci	address			0x039
157462306a36Sopenharmony_ci	access_mode	RW
157562306a36Sopenharmony_ci	modes		M_CFG
157662306a36Sopenharmony_ci	field	GSBISTERR	0x40
157762306a36Sopenharmony_ci	field	GSBISTDONE	0x20
157862306a36Sopenharmony_ci	field	GSBISTRUN	0x10
157962306a36Sopenharmony_ci	field	OSBISTERR	0x04
158062306a36Sopenharmony_ci	field	OSBISTDONE	0x02
158162306a36Sopenharmony_ci	field	OSBISTRUN	0x01
158262306a36Sopenharmony_ci}
158362306a36Sopenharmony_ci
158462306a36Sopenharmony_ci/*
158562306a36Sopenharmony_ci * SCSI Sequence Control0
158662306a36Sopenharmony_ci */
158762306a36Sopenharmony_ciregister SCSISEQ0 {
158862306a36Sopenharmony_ci	address			0x03A
158962306a36Sopenharmony_ci	access_mode	RW
159062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
159162306a36Sopenharmony_ci	field	TEMODEO		0x80
159262306a36Sopenharmony_ci	field	ENSELO		0x40
159362306a36Sopenharmony_ci	field	ENARBO		0x20
159462306a36Sopenharmony_ci	field	FORCEBUSFREE	0x10
159562306a36Sopenharmony_ci	field	SCSIRSTO	0x01
159662306a36Sopenharmony_ci}
159762306a36Sopenharmony_ci
159862306a36Sopenharmony_ci/*
159962306a36Sopenharmony_ci * SCSI RAM BIST 1
160062306a36Sopenharmony_ci */
160162306a36Sopenharmony_ciregister SCSBIST1 {
160262306a36Sopenharmony_ci	address			0x03A
160362306a36Sopenharmony_ci	access_mode	RW
160462306a36Sopenharmony_ci	modes		M_CFG
160562306a36Sopenharmony_ci	field	NTBISTERR	0x04
160662306a36Sopenharmony_ci	field	NTBISTDONE	0x02
160762306a36Sopenharmony_ci	field	NTBISTRUN	0x01
160862306a36Sopenharmony_ci}
160962306a36Sopenharmony_ci
161062306a36Sopenharmony_ci/*
161162306a36Sopenharmony_ci * SCSI Sequence Control 1
161262306a36Sopenharmony_ci */
161362306a36Sopenharmony_ciregister SCSISEQ1 {
161462306a36Sopenharmony_ci	address			0x03B
161562306a36Sopenharmony_ci	access_mode	RW
161662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
161762306a36Sopenharmony_ci	count		8
161862306a36Sopenharmony_ci	field	MANUALCTL	0x40
161962306a36Sopenharmony_ci	field	ENSELI		0x20
162062306a36Sopenharmony_ci	field	ENRSELI		0x10
162162306a36Sopenharmony_ci	field	MANUALP		0x0C
162262306a36Sopenharmony_ci	field	ENAUTOATNP	0x02
162362306a36Sopenharmony_ci	field	ALTSTIM		0x01
162462306a36Sopenharmony_ci}
162562306a36Sopenharmony_ci
162662306a36Sopenharmony_ci/*
162762306a36Sopenharmony_ci * SCSI Transfer Control 0
162862306a36Sopenharmony_ci */
162962306a36Sopenharmony_ciregister SXFRCTL0 {
163062306a36Sopenharmony_ci	address			0x03C
163162306a36Sopenharmony_ci	access_mode	RW
163262306a36Sopenharmony_ci	modes		M_SCSI
163362306a36Sopenharmony_ci	field	DFON		0x80
163462306a36Sopenharmony_ci	field	DFPEXP		0x40
163562306a36Sopenharmony_ci	field	BIOSCANCELEN	0x10
163662306a36Sopenharmony_ci	field	SPIOEN		0x08
163762306a36Sopenharmony_ci	dont_generate_debug_code
163862306a36Sopenharmony_ci}
163962306a36Sopenharmony_ci
164062306a36Sopenharmony_ci/*
164162306a36Sopenharmony_ci * SCSI Transfer Control 1
164262306a36Sopenharmony_ci */
164362306a36Sopenharmony_ciregister SXFRCTL1 {
164462306a36Sopenharmony_ci	address			0x03D
164562306a36Sopenharmony_ci	access_mode	RW
164662306a36Sopenharmony_ci	modes		M_SCSI
164762306a36Sopenharmony_ci	field	BITBUCKET	0x80
164862306a36Sopenharmony_ci	field	ENSACHK		0x40
164962306a36Sopenharmony_ci	field	ENSPCHK		0x20
165062306a36Sopenharmony_ci	field	STIMESEL	0x18
165162306a36Sopenharmony_ci	field	ENSTIMER	0x04
165262306a36Sopenharmony_ci	field	ACTNEGEN	0x02
165362306a36Sopenharmony_ci	field	STPWEN		0x01
165462306a36Sopenharmony_ci	dont_generate_debug_code
165562306a36Sopenharmony_ci}
165662306a36Sopenharmony_ci
165762306a36Sopenharmony_ci/*
165862306a36Sopenharmony_ci * SCSI Transfer Control 2
165962306a36Sopenharmony_ci */
166062306a36Sopenharmony_ciregister SXFRCTL2 {
166162306a36Sopenharmony_ci	address			0x03E
166262306a36Sopenharmony_ci	access_mode	RW
166362306a36Sopenharmony_ci	modes		M_SCSI
166462306a36Sopenharmony_ci	field	AUTORSTDIS	0x10
166562306a36Sopenharmony_ci	field	CMDDMAEN	0x08
166662306a36Sopenharmony_ci	field	ASU		0x07
166762306a36Sopenharmony_ci}
166862306a36Sopenharmony_ci
166962306a36Sopenharmony_ci/*
167062306a36Sopenharmony_ci * SCSI Bus Initiator IDs
167162306a36Sopenharmony_ci * Bitmask of observed initiators on the bus.
167262306a36Sopenharmony_ci */
167362306a36Sopenharmony_ciregister BUSINITID {
167462306a36Sopenharmony_ci	address			0x03C
167562306a36Sopenharmony_ci	access_mode	RW
167662306a36Sopenharmony_ci	modes		M_CFG
167762306a36Sopenharmony_ci	size		2
167862306a36Sopenharmony_ci}
167962306a36Sopenharmony_ci
168062306a36Sopenharmony_ci/*
168162306a36Sopenharmony_ci * Data Length Counters
168262306a36Sopenharmony_ci * Packet byte counter.
168362306a36Sopenharmony_ci */
168462306a36Sopenharmony_ciregister DLCOUNT {
168562306a36Sopenharmony_ci	address			0x03C
168662306a36Sopenharmony_ci	access_mode	RW
168762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
168862306a36Sopenharmony_ci	size		3
168962306a36Sopenharmony_ci}
169062306a36Sopenharmony_ci
169162306a36Sopenharmony_ci/*
169262306a36Sopenharmony_ci * Data FIFO Status
169362306a36Sopenharmony_ci */
169462306a36Sopenharmony_ciregister DFFSTAT {
169562306a36Sopenharmony_ci	address			0x03F
169662306a36Sopenharmony_ci	access_mode	RW
169762306a36Sopenharmony_ci	modes		M_SCSI
169862306a36Sopenharmony_ci	field	FIFO1FREE	0x20
169962306a36Sopenharmony_ci	field	FIFO0FREE	0x10
170062306a36Sopenharmony_ci	/*
170162306a36Sopenharmony_ci	 * On the B, this enum only works
170262306a36Sopenharmony_ci	 * in the read direction.  For writes,
170362306a36Sopenharmony_ci	 * you must use the B version of the
170462306a36Sopenharmony_ci	 * CURRFIFO_0 definition which is defined
170562306a36Sopenharmony_ci	 * as a constant outside of this register
170662306a36Sopenharmony_ci	 * definition to avoid confusing the
170762306a36Sopenharmony_ci	 * register pretty printing code.
170862306a36Sopenharmony_ci	 */
170962306a36Sopenharmony_ci	enum	CURRFIFO	0x03 {
171062306a36Sopenharmony_ci		CURRFIFO_0,
171162306a36Sopenharmony_ci		CURRFIFO_1,
171262306a36Sopenharmony_ci		CURRFIFO_NONE	0x3
171362306a36Sopenharmony_ci	}
171462306a36Sopenharmony_ci}
171562306a36Sopenharmony_ci
171662306a36Sopenharmony_ciconst B_CURRFIFO_0 0x2
171762306a36Sopenharmony_ci
171862306a36Sopenharmony_ci/*
171962306a36Sopenharmony_ci * SCSI Bus Target IDs
172062306a36Sopenharmony_ci * Bitmask of observed targets on the bus.
172162306a36Sopenharmony_ci */
172262306a36Sopenharmony_ciregister BUSTARGID {
172362306a36Sopenharmony_ci	address			0x03E
172462306a36Sopenharmony_ci	access_mode	RW
172562306a36Sopenharmony_ci	modes		M_CFG
172662306a36Sopenharmony_ci	size		2
172762306a36Sopenharmony_ci}
172862306a36Sopenharmony_ci
172962306a36Sopenharmony_ci/*
173062306a36Sopenharmony_ci * SCSI Control Signal Out
173162306a36Sopenharmony_ci */
173262306a36Sopenharmony_ciregister SCSISIGO {
173362306a36Sopenharmony_ci	address			0x040
173462306a36Sopenharmony_ci	access_mode	RW
173562306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
173662306a36Sopenharmony_ci	field	CDO		0x80
173762306a36Sopenharmony_ci	field	IOO		0x40
173862306a36Sopenharmony_ci	field	MSGO		0x20
173962306a36Sopenharmony_ci	field	ATNO		0x10
174062306a36Sopenharmony_ci	field	SELO		0x08
174162306a36Sopenharmony_ci	field	BSYO		0x04
174262306a36Sopenharmony_ci	field	REQO		0x02
174362306a36Sopenharmony_ci	field	ACKO		0x01
174462306a36Sopenharmony_ci/*
174562306a36Sopenharmony_ci * Possible phases to write into SCSISIG0
174662306a36Sopenharmony_ci */
174762306a36Sopenharmony_ci	enum	PHASE_MASK  CDO|IOO|MSGO {
174862306a36Sopenharmony_ci		P_DATAOUT	0x0,
174962306a36Sopenharmony_ci		P_DATAIN	IOO,
175062306a36Sopenharmony_ci		P_DATAOUT_DT	P_DATAOUT|MSGO,
175162306a36Sopenharmony_ci		P_DATAIN_DT	P_DATAIN|MSGO,
175262306a36Sopenharmony_ci		P_COMMAND	CDO,
175362306a36Sopenharmony_ci		P_MESGOUT	CDO|MSGO,
175462306a36Sopenharmony_ci		P_STATUS	CDO|IOO,
175562306a36Sopenharmony_ci		P_MESGIN	CDO|IOO|MSGO
175662306a36Sopenharmony_ci	}
175762306a36Sopenharmony_ci	dont_generate_debug_code
175862306a36Sopenharmony_ci}
175962306a36Sopenharmony_ci
176062306a36Sopenharmony_ci/*
176162306a36Sopenharmony_ci * SCSI Control Signal In
176262306a36Sopenharmony_ci */
176362306a36Sopenharmony_ciregister SCSISIGI {
176462306a36Sopenharmony_ci	address			0x041
176562306a36Sopenharmony_ci	access_mode	RO
176662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
176762306a36Sopenharmony_ci	field	CDI		0x80
176862306a36Sopenharmony_ci	field	IOI		0x40
176962306a36Sopenharmony_ci	field	MSGI		0x20
177062306a36Sopenharmony_ci	field	ATNI		0x10
177162306a36Sopenharmony_ci	field	SELI		0x08
177262306a36Sopenharmony_ci	field	BSYI		0x04
177362306a36Sopenharmony_ci	field	REQI		0x02
177462306a36Sopenharmony_ci	field	ACKI		0x01
177562306a36Sopenharmony_ci/*
177662306a36Sopenharmony_ci * Possible phases in SCSISIGI
177762306a36Sopenharmony_ci */
177862306a36Sopenharmony_ci	enum	PHASE_MASK  CDO|IOO|MSGO {
177962306a36Sopenharmony_ci		P_DATAOUT	0x0,
178062306a36Sopenharmony_ci		P_DATAIN	IOO,
178162306a36Sopenharmony_ci		P_DATAOUT_DT	P_DATAOUT|MSGO,
178262306a36Sopenharmony_ci		P_DATAIN_DT	P_DATAIN|MSGO,
178362306a36Sopenharmony_ci		P_COMMAND	CDO,
178462306a36Sopenharmony_ci		P_MESGOUT	CDO|MSGO,
178562306a36Sopenharmony_ci		P_STATUS	CDO|IOO,
178662306a36Sopenharmony_ci		P_MESGIN	CDO|IOO|MSGO
178762306a36Sopenharmony_ci	}
178862306a36Sopenharmony_ci}
178962306a36Sopenharmony_ci
179062306a36Sopenharmony_ci/*
179162306a36Sopenharmony_ci * Multiple Target IDs
179262306a36Sopenharmony_ci * Bitmask of ids to respond as a target.
179362306a36Sopenharmony_ci */
179462306a36Sopenharmony_ciregister MULTARGID {
179562306a36Sopenharmony_ci	address			0x040
179662306a36Sopenharmony_ci	access_mode	RW
179762306a36Sopenharmony_ci	modes		M_CFG
179862306a36Sopenharmony_ci	size		2
179962306a36Sopenharmony_ci	count		2
180062306a36Sopenharmony_ci	dont_generate_debug_code
180162306a36Sopenharmony_ci}
180262306a36Sopenharmony_ci
180362306a36Sopenharmony_ci/*
180462306a36Sopenharmony_ci * SCSI Phase
180562306a36Sopenharmony_ci */
180662306a36Sopenharmony_ciregister SCSIPHASE {
180762306a36Sopenharmony_ci	address			0x042
180862306a36Sopenharmony_ci	access_mode	RO
180962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
181062306a36Sopenharmony_ci	field	STATUS_PHASE	0x20
181162306a36Sopenharmony_ci	field	COMMAND_PHASE	0x10
181262306a36Sopenharmony_ci	field	MSG_IN_PHASE	0x08
181362306a36Sopenharmony_ci	field	MSG_OUT_PHASE	0x04
181462306a36Sopenharmony_ci	field	DATA_PHASE_MASK	0x03 {
181562306a36Sopenharmony_ci		DATA_OUT_PHASE	0x01,
181662306a36Sopenharmony_ci		DATA_IN_PHASE	0x02
181762306a36Sopenharmony_ci	}
181862306a36Sopenharmony_ci}
181962306a36Sopenharmony_ci
182062306a36Sopenharmony_ci/*
182162306a36Sopenharmony_ci * SCSI Data 0 Image
182262306a36Sopenharmony_ci */
182362306a36Sopenharmony_ciregister SCSIDAT0_IMG {
182462306a36Sopenharmony_ci	address			0x043
182562306a36Sopenharmony_ci	access_mode	RW
182662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
182762306a36Sopenharmony_ci}
182862306a36Sopenharmony_ci
182962306a36Sopenharmony_ci/*
183062306a36Sopenharmony_ci * SCSI Latched Data
183162306a36Sopenharmony_ci */
183262306a36Sopenharmony_ciregister SCSIDAT {
183362306a36Sopenharmony_ci	address			0x044
183462306a36Sopenharmony_ci	access_mode	RW
183562306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
183662306a36Sopenharmony_ci	size		2
183762306a36Sopenharmony_ci	dont_generate_debug_code
183862306a36Sopenharmony_ci}
183962306a36Sopenharmony_ci
184062306a36Sopenharmony_ci/*
184162306a36Sopenharmony_ci * SCSI Data Bus
184262306a36Sopenharmony_ci */
184362306a36Sopenharmony_ciregister SCSIBUS {
184462306a36Sopenharmony_ci	address			0x046
184562306a36Sopenharmony_ci	access_mode	RW
184662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
184762306a36Sopenharmony_ci	size		2
184862306a36Sopenharmony_ci}
184962306a36Sopenharmony_ci
185062306a36Sopenharmony_ci/*
185162306a36Sopenharmony_ci * Target ID In
185262306a36Sopenharmony_ci */
185362306a36Sopenharmony_ciregister TARGIDIN {
185462306a36Sopenharmony_ci	address			0x048
185562306a36Sopenharmony_ci	access_mode	RO
185662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
185762306a36Sopenharmony_ci	count		2
185862306a36Sopenharmony_ci	field	CLKOUT		0x80
185962306a36Sopenharmony_ci	field	TARGID		0x0F
186062306a36Sopenharmony_ci	dont_generate_debug_code
186162306a36Sopenharmony_ci}
186262306a36Sopenharmony_ci
186362306a36Sopenharmony_ci/*
186462306a36Sopenharmony_ci * Selection/Reselection ID
186562306a36Sopenharmony_ci * Upper four bits are the device id.  The ONEBIT is set when the re/selecting
186662306a36Sopenharmony_ci * device did not set its own ID.
186762306a36Sopenharmony_ci */
186862306a36Sopenharmony_ciregister SELID {
186962306a36Sopenharmony_ci	address			0x049
187062306a36Sopenharmony_ci	access_mode	RW
187162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
187262306a36Sopenharmony_ci	field	SELID_MASK	0xf0
187362306a36Sopenharmony_ci	field	ONEBIT		0x08
187462306a36Sopenharmony_ci}
187562306a36Sopenharmony_ci
187662306a36Sopenharmony_ci/*
187762306a36Sopenharmony_ci * SCSI Block Control
187862306a36Sopenharmony_ci * Controls Bus type and channel selection.  SELWIDE allows for the
187962306a36Sopenharmony_ci * coexistence of 8bit and 16bit devices on a wide bus.
188062306a36Sopenharmony_ci */
188162306a36Sopenharmony_ciregister SBLKCTL {
188262306a36Sopenharmony_ci	address			0x04A
188362306a36Sopenharmony_ci	access_mode	RW
188462306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
188562306a36Sopenharmony_ci	field	DIAGLEDEN	0x80
188662306a36Sopenharmony_ci	field	DIAGLEDON	0x40
188762306a36Sopenharmony_ci	field	ENAB40		0x08	/* LVD transceiver active */
188862306a36Sopenharmony_ci	field	ENAB20		0x04	/* SE/HVD transceiver active */
188962306a36Sopenharmony_ci	field	SELWIDE		0x02
189062306a36Sopenharmony_ci	dont_generate_debug_code
189162306a36Sopenharmony_ci}
189262306a36Sopenharmony_ci
189362306a36Sopenharmony_ci/*
189462306a36Sopenharmony_ci * Option Mode
189562306a36Sopenharmony_ci */
189662306a36Sopenharmony_ciregister OPTIONMODE {
189762306a36Sopenharmony_ci	address			0x04A
189862306a36Sopenharmony_ci	access_mode	RW
189962306a36Sopenharmony_ci	modes		M_CFG
190062306a36Sopenharmony_ci	count		4
190162306a36Sopenharmony_ci	field	BIOSCANCTL		0x80
190262306a36Sopenharmony_ci	field	AUTOACKEN		0x40
190362306a36Sopenharmony_ci	field	BIASCANCTL		0x20
190462306a36Sopenharmony_ci	field	BUSFREEREV		0x10
190562306a36Sopenharmony_ci	field	ENDGFORMCHK		0x04
190662306a36Sopenharmony_ci	field	AUTO_MSGOUT_DE		0x02
190762306a36Sopenharmony_ci	mask	OPTIONMODE_DEFAULTS	AUTO_MSGOUT_DE
190862306a36Sopenharmony_ci	dont_generate_debug_code
190962306a36Sopenharmony_ci}
191062306a36Sopenharmony_ci
191162306a36Sopenharmony_ci/*
191262306a36Sopenharmony_ci * SCSI Status 0
191362306a36Sopenharmony_ci */
191462306a36Sopenharmony_ciregister SSTAT0	{
191562306a36Sopenharmony_ci	address			0x04B
191662306a36Sopenharmony_ci	access_mode	RO
191762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
191862306a36Sopenharmony_ci	field	TARGET		0x80	/* Board acting as target */
191962306a36Sopenharmony_ci	field	SELDO		0x40	/* Selection Done */
192062306a36Sopenharmony_ci	field	SELDI		0x20	/* Board has been selected */
192162306a36Sopenharmony_ci	field	SELINGO		0x10	/* Selection In Progress */
192262306a36Sopenharmony_ci	field	IOERR		0x08	/* LVD Tranceiver mode changed */
192362306a36Sopenharmony_ci	field	OVERRUN		0x04	/* SCSI Offset overrun detected */
192462306a36Sopenharmony_ci	field	SPIORDY		0x02	/* SCSI PIO Ready */
192562306a36Sopenharmony_ci	field	ARBDO		0x01	/* Arbitration Done Out */
192662306a36Sopenharmony_ci}
192762306a36Sopenharmony_ci
192862306a36Sopenharmony_ci/*
192962306a36Sopenharmony_ci * Clear SCSI Interrupt 0
193062306a36Sopenharmony_ci * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0.
193162306a36Sopenharmony_ci */
193262306a36Sopenharmony_ciregister CLRSINT0 {
193362306a36Sopenharmony_ci	address			0x04B
193462306a36Sopenharmony_ci	access_mode	WO
193562306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
193662306a36Sopenharmony_ci	field	CLRSELDO	0x40
193762306a36Sopenharmony_ci	field	CLRSELDI	0x20
193862306a36Sopenharmony_ci	field	CLRSELINGO	0x10
193962306a36Sopenharmony_ci	field	CLRIOERR	0x08
194062306a36Sopenharmony_ci	field	CLROVERRUN	0x04
194162306a36Sopenharmony_ci	field	CLRSPIORDY	0x02
194262306a36Sopenharmony_ci	field	CLRARBDO	0x01
194362306a36Sopenharmony_ci	dont_generate_debug_code
194462306a36Sopenharmony_ci}
194562306a36Sopenharmony_ci
194662306a36Sopenharmony_ci/*
194762306a36Sopenharmony_ci * SCSI Interrupt Mode 0
194862306a36Sopenharmony_ci * Setting any bit will enable the corresponding function
194962306a36Sopenharmony_ci * in SIMODE0 to interrupt via the IRQ pin.
195062306a36Sopenharmony_ci */
195162306a36Sopenharmony_ciregister SIMODE0 {
195262306a36Sopenharmony_ci	address			0x04B
195362306a36Sopenharmony_ci	access_mode	RW
195462306a36Sopenharmony_ci	modes		M_CFG
195562306a36Sopenharmony_ci	count		8
195662306a36Sopenharmony_ci	field	ENSELDO		0x40
195762306a36Sopenharmony_ci	field	ENSELDI		0x20
195862306a36Sopenharmony_ci	field	ENSELINGO	0x10
195962306a36Sopenharmony_ci	field	ENIOERR		0x08
196062306a36Sopenharmony_ci	field	ENOVERRUN	0x04
196162306a36Sopenharmony_ci	field	ENSPIORDY	0x02
196262306a36Sopenharmony_ci	field	ENARBDO		0x01
196362306a36Sopenharmony_ci}
196462306a36Sopenharmony_ci
196562306a36Sopenharmony_ci/*
196662306a36Sopenharmony_ci * SCSI Status 1
196762306a36Sopenharmony_ci */
196862306a36Sopenharmony_ciregister SSTAT1 {
196962306a36Sopenharmony_ci	address			0x04C
197062306a36Sopenharmony_ci	access_mode	RO
197162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
197262306a36Sopenharmony_ci	field	SELTO		0x80
197362306a36Sopenharmony_ci	field	ATNTARG 	0x40
197462306a36Sopenharmony_ci	field	SCSIRSTI	0x20
197562306a36Sopenharmony_ci	field	PHASEMIS	0x10
197662306a36Sopenharmony_ci	field	BUSFREE		0x08
197762306a36Sopenharmony_ci	field	SCSIPERR	0x04
197862306a36Sopenharmony_ci	field	STRB2FAST	0x02
197962306a36Sopenharmony_ci	field	REQINIT		0x01
198062306a36Sopenharmony_ci}
198162306a36Sopenharmony_ci
198262306a36Sopenharmony_ci/*
198362306a36Sopenharmony_ci * Clear SCSI Interrupt 1
198462306a36Sopenharmony_ci * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1.
198562306a36Sopenharmony_ci */
198662306a36Sopenharmony_ciregister CLRSINT1 {
198762306a36Sopenharmony_ci	address			0x04C
198862306a36Sopenharmony_ci	access_mode	WO
198962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
199062306a36Sopenharmony_ci	field	CLRSELTIMEO	0x80
199162306a36Sopenharmony_ci	field	CLRATNO		0x40
199262306a36Sopenharmony_ci	field	CLRSCSIRSTI	0x20
199362306a36Sopenharmony_ci	field	CLRBUSFREE	0x08
199462306a36Sopenharmony_ci	field	CLRSCSIPERR	0x04
199562306a36Sopenharmony_ci	field	CLRSTRB2FAST	0x02
199662306a36Sopenharmony_ci	field	CLRREQINIT	0x01
199762306a36Sopenharmony_ci	dont_generate_debug_code
199862306a36Sopenharmony_ci}
199962306a36Sopenharmony_ci
200062306a36Sopenharmony_ci/*
200162306a36Sopenharmony_ci * SCSI Status 2
200262306a36Sopenharmony_ci */
200362306a36Sopenharmony_ciregister SSTAT2 {
200462306a36Sopenharmony_ci	address			0x04d
200562306a36Sopenharmony_ci	access_mode	RO
200662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
200762306a36Sopenharmony_ci	field	BUSFREETIME	0xc0 {
200862306a36Sopenharmony_ci		BUSFREE_LQO	0x40,
200962306a36Sopenharmony_ci		BUSFREE_DFF0	0x80,
201062306a36Sopenharmony_ci		BUSFREE_DFF1	0xC0
201162306a36Sopenharmony_ci	}
201262306a36Sopenharmony_ci	field	NONPACKREQ	0x20
201362306a36Sopenharmony_ci	field	EXP_ACTIVE	0x10	/* SCSI Expander Active */
201462306a36Sopenharmony_ci	field	BSYX		0x08	/* Busy Expander */
201562306a36Sopenharmony_ci	field	WIDE_RES	0x04	/* Modes 0 and 1 only */
201662306a36Sopenharmony_ci	field	SDONE		0x02	/* Modes 0 and 1 only */
201762306a36Sopenharmony_ci	field	DMADONE		0x01	/* Modes 0 and 1 only */
201862306a36Sopenharmony_ci}
201962306a36Sopenharmony_ci
202062306a36Sopenharmony_ci/*
202162306a36Sopenharmony_ci * Clear SCSI Interrupt 2
202262306a36Sopenharmony_ci */
202362306a36Sopenharmony_ciregister CLRSINT2 {
202462306a36Sopenharmony_ci	address			0x04D
202562306a36Sopenharmony_ci	access_mode	WO
202662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
202762306a36Sopenharmony_ci	field	CLRNONPACKREQ	0x20
202862306a36Sopenharmony_ci	field	CLRWIDE_RES	0x04	/* Modes 0 and 1 only */
202962306a36Sopenharmony_ci	field	CLRSDONE	0x02	/* Modes 0 and 1 only */
203062306a36Sopenharmony_ci	field	CLRDMADONE	0x01	/* Modes 0 and 1 only */
203162306a36Sopenharmony_ci	dont_generate_debug_code
203262306a36Sopenharmony_ci}
203362306a36Sopenharmony_ci
203462306a36Sopenharmony_ci/*
203562306a36Sopenharmony_ci * SCSI Interrupt Mode 2
203662306a36Sopenharmony_ci */
203762306a36Sopenharmony_ciregister SIMODE2 {
203862306a36Sopenharmony_ci	address			0x04D
203962306a36Sopenharmony_ci	access_mode	RW
204062306a36Sopenharmony_ci	modes		M_CFG
204162306a36Sopenharmony_ci	field	ENWIDE_RES	0x04
204262306a36Sopenharmony_ci	field	ENSDONE		0x02
204362306a36Sopenharmony_ci	field	ENDMADONE	0x01
204462306a36Sopenharmony_ci}
204562306a36Sopenharmony_ci
204662306a36Sopenharmony_ci/*
204762306a36Sopenharmony_ci * Physical Error Diagnosis
204862306a36Sopenharmony_ci */
204962306a36Sopenharmony_ciregister PERRDIAG {
205062306a36Sopenharmony_ci	address			0x04E
205162306a36Sopenharmony_ci	access_mode	RO
205262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
205362306a36Sopenharmony_ci	count		3
205462306a36Sopenharmony_ci	field	HIZERO		0x80
205562306a36Sopenharmony_ci	field	HIPERR		0x40
205662306a36Sopenharmony_ci	field	PREVPHASE	0x20
205762306a36Sopenharmony_ci	field	PARITYERR	0x10
205862306a36Sopenharmony_ci	field	AIPERR		0x08
205962306a36Sopenharmony_ci	field	CRCERR		0x04
206062306a36Sopenharmony_ci	field	DGFORMERR	0x02
206162306a36Sopenharmony_ci	field	DTERR		0x01
206262306a36Sopenharmony_ci}
206362306a36Sopenharmony_ci
206462306a36Sopenharmony_ci/*
206562306a36Sopenharmony_ci * LQI Manager Current State
206662306a36Sopenharmony_ci */
206762306a36Sopenharmony_ciregister LQISTATE {
206862306a36Sopenharmony_ci	address			0x04E
206962306a36Sopenharmony_ci	access_mode	RO
207062306a36Sopenharmony_ci	modes		M_CFG
207162306a36Sopenharmony_ci	count		6
207262306a36Sopenharmony_ci	dont_generate_debug_code
207362306a36Sopenharmony_ci}
207462306a36Sopenharmony_ci
207562306a36Sopenharmony_ci/*
207662306a36Sopenharmony_ci * SCSI Offset Count
207762306a36Sopenharmony_ci */
207862306a36Sopenharmony_ciregister SOFFCNT {
207962306a36Sopenharmony_ci	address			0x04F
208062306a36Sopenharmony_ci	access_mode	RO
208162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
208262306a36Sopenharmony_ci	count		1
208362306a36Sopenharmony_ci}
208462306a36Sopenharmony_ci
208562306a36Sopenharmony_ci/*
208662306a36Sopenharmony_ci * LQO Manager Current State
208762306a36Sopenharmony_ci */
208862306a36Sopenharmony_ciregister LQOSTATE {
208962306a36Sopenharmony_ci	address			0x04F
209062306a36Sopenharmony_ci	access_mode	RO
209162306a36Sopenharmony_ci	modes		M_CFG
209262306a36Sopenharmony_ci	count		2
209362306a36Sopenharmony_ci	dont_generate_debug_code
209462306a36Sopenharmony_ci}
209562306a36Sopenharmony_ci
209662306a36Sopenharmony_ci/*
209762306a36Sopenharmony_ci * LQI Manager Status
209862306a36Sopenharmony_ci */
209962306a36Sopenharmony_ciregister LQISTAT0 {
210062306a36Sopenharmony_ci	address			0x050
210162306a36Sopenharmony_ci	access_mode	RO
210262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
210362306a36Sopenharmony_ci	count		2
210462306a36Sopenharmony_ci	field	LQIATNQAS	0x20
210562306a36Sopenharmony_ci	field	LQICRCT1	0x10
210662306a36Sopenharmony_ci	field	LQICRCT2	0x08
210762306a36Sopenharmony_ci	field	LQIBADLQT	0x04
210862306a36Sopenharmony_ci	field	LQIATNLQ	0x02
210962306a36Sopenharmony_ci	field	LQIATNCMD	0x01
211062306a36Sopenharmony_ci}
211162306a36Sopenharmony_ci
211262306a36Sopenharmony_ci/*
211362306a36Sopenharmony_ci * Clear LQI Interrupts 0
211462306a36Sopenharmony_ci */
211562306a36Sopenharmony_ciregister CLRLQIINT0 {
211662306a36Sopenharmony_ci	address			0x050
211762306a36Sopenharmony_ci	access_mode	WO
211862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
211962306a36Sopenharmony_ci	count		1
212062306a36Sopenharmony_ci	field	CLRLQIATNQAS	0x20
212162306a36Sopenharmony_ci	field	CLRLQICRCT1	0x10
212262306a36Sopenharmony_ci	field	CLRLQICRCT2	0x08
212362306a36Sopenharmony_ci	field	CLRLQIBADLQT	0x04
212462306a36Sopenharmony_ci	field	CLRLQIATNLQ	0x02
212562306a36Sopenharmony_ci	field	CLRLQIATNCMD	0x01
212662306a36Sopenharmony_ci	dont_generate_debug_code
212762306a36Sopenharmony_ci}
212862306a36Sopenharmony_ci
212962306a36Sopenharmony_ci/*
213062306a36Sopenharmony_ci * LQI Manager Interrupt Mode 0
213162306a36Sopenharmony_ci */
213262306a36Sopenharmony_ciregister LQIMODE0 {
213362306a36Sopenharmony_ci	address			0x050
213462306a36Sopenharmony_ci	access_mode	RW
213562306a36Sopenharmony_ci	modes		M_CFG
213662306a36Sopenharmony_ci	count		3
213762306a36Sopenharmony_ci	field	ENLQIATNQASK	0x20
213862306a36Sopenharmony_ci	field	ENLQICRCT1	0x10
213962306a36Sopenharmony_ci	field	ENLQICRCT2	0x08
214062306a36Sopenharmony_ci	field	ENLQIBADLQT	0x04
214162306a36Sopenharmony_ci	field	ENLQIATNLQ	0x02
214262306a36Sopenharmony_ci	field	ENLQIATNCMD	0x01
214362306a36Sopenharmony_ci	dont_generate_debug_code
214462306a36Sopenharmony_ci}
214562306a36Sopenharmony_ci
214662306a36Sopenharmony_ci/*
214762306a36Sopenharmony_ci * LQI Manager Status 1
214862306a36Sopenharmony_ci */
214962306a36Sopenharmony_ciregister LQISTAT1 {
215062306a36Sopenharmony_ci	address			0x051
215162306a36Sopenharmony_ci	access_mode	RO
215262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
215362306a36Sopenharmony_ci	count		3
215462306a36Sopenharmony_ci	field	LQIPHASE_LQ	0x80
215562306a36Sopenharmony_ci	field	LQIPHASE_NLQ	0x40
215662306a36Sopenharmony_ci	field	LQIABORT	0x20
215762306a36Sopenharmony_ci	field	LQICRCI_LQ	0x10
215862306a36Sopenharmony_ci	field	LQICRCI_NLQ	0x08
215962306a36Sopenharmony_ci	field	LQIBADLQI	0x04
216062306a36Sopenharmony_ci	field	LQIOVERI_LQ	0x02
216162306a36Sopenharmony_ci	field	LQIOVERI_NLQ	0x01
216262306a36Sopenharmony_ci}
216362306a36Sopenharmony_ci
216462306a36Sopenharmony_ci/*
216562306a36Sopenharmony_ci * Clear LQI Manager Interrupts1
216662306a36Sopenharmony_ci */
216762306a36Sopenharmony_ciregister CLRLQIINT1 {
216862306a36Sopenharmony_ci	address			0x051
216962306a36Sopenharmony_ci	access_mode	WO
217062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
217162306a36Sopenharmony_ci	count		4
217262306a36Sopenharmony_ci	field	CLRLQIPHASE_LQ	0x80
217362306a36Sopenharmony_ci	field	CLRLQIPHASE_NLQ	0x40
217462306a36Sopenharmony_ci	field	CLRLIQABORT	0x20
217562306a36Sopenharmony_ci	field	CLRLQICRCI_LQ	0x10
217662306a36Sopenharmony_ci	field	CLRLQICRCI_NLQ	0x08
217762306a36Sopenharmony_ci	field	CLRLQIBADLQI	0x04
217862306a36Sopenharmony_ci	field	CLRLQIOVERI_LQ	0x02
217962306a36Sopenharmony_ci	field	CLRLQIOVERI_NLQ	0x01
218062306a36Sopenharmony_ci	dont_generate_debug_code
218162306a36Sopenharmony_ci}
218262306a36Sopenharmony_ci
218362306a36Sopenharmony_ci/*
218462306a36Sopenharmony_ci * LQI Manager Interrupt Mode 1
218562306a36Sopenharmony_ci */
218662306a36Sopenharmony_ciregister LQIMODE1 {
218762306a36Sopenharmony_ci	address			0x051
218862306a36Sopenharmony_ci	access_mode	RW
218962306a36Sopenharmony_ci	modes		M_CFG
219062306a36Sopenharmony_ci	count		4
219162306a36Sopenharmony_ci	field	ENLQIPHASE_LQ	0x80	/* LQIPHASE1 */
219262306a36Sopenharmony_ci	field	ENLQIPHASE_NLQ	0x40	/* LQIPHASE2 */
219362306a36Sopenharmony_ci	field	ENLIQABORT	0x20
219462306a36Sopenharmony_ci	field	ENLQICRCI_LQ	0x10	/* LQICRCI1 */
219562306a36Sopenharmony_ci	field	ENLQICRCI_NLQ	0x08	/* LQICRCI2 */
219662306a36Sopenharmony_ci	field	ENLQIBADLQI	0x04
219762306a36Sopenharmony_ci	field	ENLQIOVERI_LQ	0x02	/* LQIOVERI1 */
219862306a36Sopenharmony_ci	field	ENLQIOVERI_NLQ	0x01	/* LQIOVERI2 */
219962306a36Sopenharmony_ci	dont_generate_debug_code
220062306a36Sopenharmony_ci}
220162306a36Sopenharmony_ci
220262306a36Sopenharmony_ci/*
220362306a36Sopenharmony_ci * LQI Manager Status 2
220462306a36Sopenharmony_ci */
220562306a36Sopenharmony_ciregister LQISTAT2 {
220662306a36Sopenharmony_ci	address			0x052
220762306a36Sopenharmony_ci	access_mode	RO
220862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
220962306a36Sopenharmony_ci	field	PACKETIZED	0x80
221062306a36Sopenharmony_ci	field	LQIPHASE_OUTPKT	0x40
221162306a36Sopenharmony_ci	field	LQIWORKONLQ	0x20
221262306a36Sopenharmony_ci	field	LQIWAITFIFO	0x10
221362306a36Sopenharmony_ci	field	LQISTOPPKT	0x08
221462306a36Sopenharmony_ci	field	LQISTOPLQ	0x04
221562306a36Sopenharmony_ci	field	LQISTOPCMD	0x02
221662306a36Sopenharmony_ci	field	LQIGSAVAIL	0x01
221762306a36Sopenharmony_ci}
221862306a36Sopenharmony_ci
221962306a36Sopenharmony_ci/*
222062306a36Sopenharmony_ci * SCSI Status 3
222162306a36Sopenharmony_ci */
222262306a36Sopenharmony_ciregister SSTAT3 {
222362306a36Sopenharmony_ci	address			0x053
222462306a36Sopenharmony_ci	access_mode	RO
222562306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
222662306a36Sopenharmony_ci	count		3
222762306a36Sopenharmony_ci	field	NTRAMPERR	0x02
222862306a36Sopenharmony_ci	field	OSRAMPERR	0x01
222962306a36Sopenharmony_ci}
223062306a36Sopenharmony_ci
223162306a36Sopenharmony_ci/*
223262306a36Sopenharmony_ci * Clear SCSI Status 3
223362306a36Sopenharmony_ci */
223462306a36Sopenharmony_ciregister CLRSINT3 {
223562306a36Sopenharmony_ci	address			0x053
223662306a36Sopenharmony_ci	access_mode	WO
223762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
223862306a36Sopenharmony_ci	count		3
223962306a36Sopenharmony_ci	field	CLRNTRAMPERR	0x02
224062306a36Sopenharmony_ci	field	CLROSRAMPERR	0x01
224162306a36Sopenharmony_ci	dont_generate_debug_code
224262306a36Sopenharmony_ci}
224362306a36Sopenharmony_ci
224462306a36Sopenharmony_ci/*
224562306a36Sopenharmony_ci * SCSI Interrupt Mode 3
224662306a36Sopenharmony_ci */
224762306a36Sopenharmony_ciregister SIMODE3 {
224862306a36Sopenharmony_ci	address			0x053
224962306a36Sopenharmony_ci	access_mode	RW
225062306a36Sopenharmony_ci	modes		M_CFG
225162306a36Sopenharmony_ci	count		4
225262306a36Sopenharmony_ci	field	ENNTRAMPERR	0x02
225362306a36Sopenharmony_ci	field	ENOSRAMPERR	0x01
225462306a36Sopenharmony_ci	dont_generate_debug_code
225562306a36Sopenharmony_ci}
225662306a36Sopenharmony_ci
225762306a36Sopenharmony_ci/*
225862306a36Sopenharmony_ci * LQO Manager Status 0
225962306a36Sopenharmony_ci */
226062306a36Sopenharmony_ciregister LQOSTAT0 {
226162306a36Sopenharmony_ci	address			0x054
226262306a36Sopenharmony_ci	access_mode	RO
226362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
226462306a36Sopenharmony_ci	count		2
226562306a36Sopenharmony_ci	field	LQOTARGSCBPERR	0x10
226662306a36Sopenharmony_ci	field	LQOSTOPT2	0x08
226762306a36Sopenharmony_ci	field	LQOATNLQ	0x04
226862306a36Sopenharmony_ci	field	LQOATNPKT	0x02
226962306a36Sopenharmony_ci	field	LQOTCRC		0x01
227062306a36Sopenharmony_ci}
227162306a36Sopenharmony_ci
227262306a36Sopenharmony_ci/*
227362306a36Sopenharmony_ci * Clear LQO Manager interrupt 0
227462306a36Sopenharmony_ci */
227562306a36Sopenharmony_ciregister CLRLQOINT0 {
227662306a36Sopenharmony_ci	address			0x054
227762306a36Sopenharmony_ci	access_mode	WO
227862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
227962306a36Sopenharmony_ci	count		3
228062306a36Sopenharmony_ci	field	CLRLQOTARGSCBPERR	0x10
228162306a36Sopenharmony_ci	field	CLRLQOSTOPT2		0x08
228262306a36Sopenharmony_ci	field	CLRLQOATNLQ		0x04
228362306a36Sopenharmony_ci	field	CLRLQOATNPKT		0x02
228462306a36Sopenharmony_ci	field	CLRLQOTCRC		0x01
228562306a36Sopenharmony_ci	dont_generate_debug_code
228662306a36Sopenharmony_ci}
228762306a36Sopenharmony_ci
228862306a36Sopenharmony_ci/*
228962306a36Sopenharmony_ci * LQO Manager Interrupt Mode 0
229062306a36Sopenharmony_ci */
229162306a36Sopenharmony_ciregister LQOMODE0 {
229262306a36Sopenharmony_ci	address			0x054
229362306a36Sopenharmony_ci	access_mode	RW
229462306a36Sopenharmony_ci	modes		M_CFG
229562306a36Sopenharmony_ci	count		4
229662306a36Sopenharmony_ci	field	ENLQOTARGSCBPERR	0x10
229762306a36Sopenharmony_ci	field	ENLQOSTOPT2		0x08
229862306a36Sopenharmony_ci	field	ENLQOATNLQ		0x04
229962306a36Sopenharmony_ci	field	ENLQOATNPKT		0x02
230062306a36Sopenharmony_ci	field	ENLQOTCRC		0x01
230162306a36Sopenharmony_ci	dont_generate_debug_code
230262306a36Sopenharmony_ci}
230362306a36Sopenharmony_ci
230462306a36Sopenharmony_ci/*
230562306a36Sopenharmony_ci * LQO Manager Status 1
230662306a36Sopenharmony_ci */
230762306a36Sopenharmony_ciregister LQOSTAT1 {
230862306a36Sopenharmony_ci	address			0x055
230962306a36Sopenharmony_ci	access_mode	RO
231062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
231162306a36Sopenharmony_ci	field	LQOINITSCBPERR	0x10
231262306a36Sopenharmony_ci	field	LQOSTOPI2	0x08
231362306a36Sopenharmony_ci	field	LQOBADQAS	0x04
231462306a36Sopenharmony_ci	field	LQOBUSFREE	0x02
231562306a36Sopenharmony_ci	field	LQOPHACHGINPKT	0x01
231662306a36Sopenharmony_ci}
231762306a36Sopenharmony_ci
231862306a36Sopenharmony_ci/*
231962306a36Sopenharmony_ci * Clear LOQ Interrupt 1
232062306a36Sopenharmony_ci */
232162306a36Sopenharmony_ciregister CLRLQOINT1 {
232262306a36Sopenharmony_ci	address			0x055
232362306a36Sopenharmony_ci	access_mode	WO
232462306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
232562306a36Sopenharmony_ci	count		7
232662306a36Sopenharmony_ci	field	CLRLQOINITSCBPERR	0x10
232762306a36Sopenharmony_ci	field	CLRLQOSTOPI2		0x08
232862306a36Sopenharmony_ci	field	CLRLQOBADQAS		0x04
232962306a36Sopenharmony_ci	field	CLRLQOBUSFREE		0x02
233062306a36Sopenharmony_ci	field	CLRLQOPHACHGINPKT	0x01
233162306a36Sopenharmony_ci	dont_generate_debug_code
233262306a36Sopenharmony_ci}
233362306a36Sopenharmony_ci
233462306a36Sopenharmony_ci/*
233562306a36Sopenharmony_ci * LQO Manager Interrupt Mode 1
233662306a36Sopenharmony_ci */
233762306a36Sopenharmony_ciregister LQOMODE1 {
233862306a36Sopenharmony_ci	address			0x055
233962306a36Sopenharmony_ci	access_mode	RW
234062306a36Sopenharmony_ci	modes		M_CFG
234162306a36Sopenharmony_ci	count		4
234262306a36Sopenharmony_ci	field	ENLQOINITSCBPERR	0x10
234362306a36Sopenharmony_ci	field	ENLQOSTOPI2		0x08
234462306a36Sopenharmony_ci	field	ENLQOBADQAS		0x04
234562306a36Sopenharmony_ci	field	ENLQOBUSFREE		0x02
234662306a36Sopenharmony_ci	field	ENLQOPHACHGINPKT	0x01
234762306a36Sopenharmony_ci	dont_generate_debug_code
234862306a36Sopenharmony_ci}
234962306a36Sopenharmony_ci
235062306a36Sopenharmony_ci/*
235162306a36Sopenharmony_ci * LQO Manager Status 2
235262306a36Sopenharmony_ci */
235362306a36Sopenharmony_ciregister LQOSTAT2 {
235462306a36Sopenharmony_ci	address			0x056
235562306a36Sopenharmony_ci	access_mode	RO
235662306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
235762306a36Sopenharmony_ci	field	LQOPKT		0xE0
235862306a36Sopenharmony_ci	field	LQOWAITFIFO	0x10
235962306a36Sopenharmony_ci	field	LQOPHACHGOUTPKT	0x02	/* outside of packet boundaries. */
236062306a36Sopenharmony_ci	field	LQOSTOP0	0x01	/* Stopped after sending all packets */
236162306a36Sopenharmony_ci}
236262306a36Sopenharmony_ci
236362306a36Sopenharmony_ci/*
236462306a36Sopenharmony_ci * Output Synchronizer Space Count
236562306a36Sopenharmony_ci */
236662306a36Sopenharmony_ciregister OS_SPACE_CNT {
236762306a36Sopenharmony_ci	address			0x056
236862306a36Sopenharmony_ci	access_mode	RO
236962306a36Sopenharmony_ci	modes		M_CFG
237062306a36Sopenharmony_ci	count		2
237162306a36Sopenharmony_ci	dont_generate_debug_code
237262306a36Sopenharmony_ci}
237362306a36Sopenharmony_ci
237462306a36Sopenharmony_ci/*
237562306a36Sopenharmony_ci * SCSI Interrupt Mode 1
237662306a36Sopenharmony_ci * Setting any bit will enable the corresponding function
237762306a36Sopenharmony_ci * in SIMODE1 to interrupt via the IRQ pin.
237862306a36Sopenharmony_ci */
237962306a36Sopenharmony_ciregister SIMODE1 {
238062306a36Sopenharmony_ci	address			0x057
238162306a36Sopenharmony_ci	access_mode	RW
238262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
238362306a36Sopenharmony_ci	field	ENSELTIMO	0x80
238462306a36Sopenharmony_ci	field	ENATNTARG	0x40
238562306a36Sopenharmony_ci	field	ENSCSIRST	0x20
238662306a36Sopenharmony_ci	field	ENPHASEMIS	0x10
238762306a36Sopenharmony_ci	field	ENBUSFREE	0x08
238862306a36Sopenharmony_ci	field	ENSCSIPERR	0x04
238962306a36Sopenharmony_ci	field	ENSTRB2FAST	0x02
239062306a36Sopenharmony_ci	field	ENREQINIT	0x01
239162306a36Sopenharmony_ci}
239262306a36Sopenharmony_ci
239362306a36Sopenharmony_ci/*
239462306a36Sopenharmony_ci * Good Status FIFO
239562306a36Sopenharmony_ci */
239662306a36Sopenharmony_ciregister GSFIFO {
239762306a36Sopenharmony_ci	address			0x058
239862306a36Sopenharmony_ci	access_mode	RO
239962306a36Sopenharmony_ci	size		2
240062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_SCSI
240162306a36Sopenharmony_ci	dont_generate_debug_code
240262306a36Sopenharmony_ci}
240362306a36Sopenharmony_ci
240462306a36Sopenharmony_ci/*
240562306a36Sopenharmony_ci * Data FIFO SCSI Transfer Control
240662306a36Sopenharmony_ci */
240762306a36Sopenharmony_ciregister DFFSXFRCTL {
240862306a36Sopenharmony_ci	address			0x05A
240962306a36Sopenharmony_ci	access_mode	RW
241062306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
241162306a36Sopenharmony_ci	field	DFFBITBUCKET	0x08
241262306a36Sopenharmony_ci	field	CLRSHCNT	0x04
241362306a36Sopenharmony_ci	field	CLRCHN		0x02
241462306a36Sopenharmony_ci	field	RSTCHN		0x01
241562306a36Sopenharmony_ci}
241662306a36Sopenharmony_ci
241762306a36Sopenharmony_ci/*
241862306a36Sopenharmony_ci * Next SCSI Control Block
241962306a36Sopenharmony_ci */
242062306a36Sopenharmony_ciregister NEXTSCB {
242162306a36Sopenharmony_ci	address			0x05A
242262306a36Sopenharmony_ci	access_mode	RW
242362306a36Sopenharmony_ci	size		2
242462306a36Sopenharmony_ci	modes		M_SCSI
242562306a36Sopenharmony_ci	dont_generate_debug_code
242662306a36Sopenharmony_ci}
242762306a36Sopenharmony_ci
242862306a36Sopenharmony_ci/*
242962306a36Sopenharmony_ci * LQO SCSI Control
243062306a36Sopenharmony_ci * (Rev B only.)
243162306a36Sopenharmony_ci */
243262306a36Sopenharmony_ciregister LQOSCSCTL {
243362306a36Sopenharmony_ci	address			0x05A
243462306a36Sopenharmony_ci	access_mode	RW
243562306a36Sopenharmony_ci	size		1
243662306a36Sopenharmony_ci	modes		M_CFG
243762306a36Sopenharmony_ci	count		1
243862306a36Sopenharmony_ci	field		LQOH2A_VERSION	0x80
243962306a36Sopenharmony_ci	field		LQOBUSETDLY	0x40
244062306a36Sopenharmony_ci	field		LQONOHOLDLACK	0x02
244162306a36Sopenharmony_ci	field		LQONOCHKOVER	0x01
244262306a36Sopenharmony_ci	dont_generate_debug_code
244362306a36Sopenharmony_ci}
244462306a36Sopenharmony_ci
244562306a36Sopenharmony_ci/*
244662306a36Sopenharmony_ci * SEQ Interrupts
244762306a36Sopenharmony_ci */
244862306a36Sopenharmony_ciregister SEQINTSRC {
244962306a36Sopenharmony_ci	address			0x05B
245062306a36Sopenharmony_ci	access_mode	RO
245162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
245262306a36Sopenharmony_ci	field	CTXTDONE	0x40
245362306a36Sopenharmony_ci	field	SAVEPTRS	0x20
245462306a36Sopenharmony_ci	field	CFG4DATA	0x10
245562306a36Sopenharmony_ci	field	CFG4ISTAT	0x08
245662306a36Sopenharmony_ci	field	CFG4TSTAT	0x04
245762306a36Sopenharmony_ci	field	CFG4ICMD	0x02
245862306a36Sopenharmony_ci	field	CFG4TCMD	0x01
245962306a36Sopenharmony_ci}
246062306a36Sopenharmony_ci
246162306a36Sopenharmony_ci/*
246262306a36Sopenharmony_ci * Clear Arp Interrupts
246362306a36Sopenharmony_ci */
246462306a36Sopenharmony_ciregister CLRSEQINTSRC {
246562306a36Sopenharmony_ci	address			0x05B
246662306a36Sopenharmony_ci	access_mode	WO
246762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
246862306a36Sopenharmony_ci	field	CLRCTXTDONE	0x40
246962306a36Sopenharmony_ci	field	CLRSAVEPTRS	0x20
247062306a36Sopenharmony_ci	field	CLRCFG4DATA	0x10
247162306a36Sopenharmony_ci	field	CLRCFG4ISTAT	0x08
247262306a36Sopenharmony_ci	field	CLRCFG4TSTAT	0x04
247362306a36Sopenharmony_ci	field	CLRCFG4ICMD	0x02
247462306a36Sopenharmony_ci	field	CLRCFG4TCMD	0x01
247562306a36Sopenharmony_ci	dont_generate_debug_code
247662306a36Sopenharmony_ci}
247762306a36Sopenharmony_ci
247862306a36Sopenharmony_ci/*
247962306a36Sopenharmony_ci * SEQ Interrupt Enabled (Shared)
248062306a36Sopenharmony_ci */
248162306a36Sopenharmony_ciregister SEQIMODE {
248262306a36Sopenharmony_ci	address			0x05C
248362306a36Sopenharmony_ci	access_mode	RW
248462306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
248562306a36Sopenharmony_ci	field	ENCTXTDONE	0x40
248662306a36Sopenharmony_ci	field	ENSAVEPTRS	0x20
248762306a36Sopenharmony_ci	field	ENCFG4DATA	0x10
248862306a36Sopenharmony_ci	field	ENCFG4ISTAT	0x08
248962306a36Sopenharmony_ci	field	ENCFG4TSTAT	0x04
249062306a36Sopenharmony_ci	field	ENCFG4ICMD	0x02
249162306a36Sopenharmony_ci	field	ENCFG4TCMD	0x01
249262306a36Sopenharmony_ci}
249362306a36Sopenharmony_ci
249462306a36Sopenharmony_ci/*
249562306a36Sopenharmony_ci * Current SCSI Control Block
249662306a36Sopenharmony_ci */
249762306a36Sopenharmony_ciregister CURRSCB {
249862306a36Sopenharmony_ci	address			0x05C
249962306a36Sopenharmony_ci	access_mode	RW
250062306a36Sopenharmony_ci	size		2
250162306a36Sopenharmony_ci	modes		M_SCSI
250262306a36Sopenharmony_ci	dont_generate_debug_code
250362306a36Sopenharmony_ci}
250462306a36Sopenharmony_ci
250562306a36Sopenharmony_ci/*
250662306a36Sopenharmony_ci * Data FIFO Status
250762306a36Sopenharmony_ci */
250862306a36Sopenharmony_ciregister MDFFSTAT {
250962306a36Sopenharmony_ci	address			0x05D
251062306a36Sopenharmony_ci	access_mode	RO
251162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
251262306a36Sopenharmony_ci	field	SHCNTNEGATIVE	0x40 /* Rev B or higher */
251362306a36Sopenharmony_ci	field	SHCNTMINUS1	0x20 /* Rev B or higher */
251462306a36Sopenharmony_ci	field	LASTSDONE	0x10
251562306a36Sopenharmony_ci	field	SHVALID		0x08
251662306a36Sopenharmony_ci	field	DLZERO		0x04 /* FIFO data ends on packet boundary. */
251762306a36Sopenharmony_ci	field	DATAINFIFO	0x02
251862306a36Sopenharmony_ci	field	FIFOFREE	0x01
251962306a36Sopenharmony_ci}
252062306a36Sopenharmony_ci
252162306a36Sopenharmony_ci/*
252262306a36Sopenharmony_ci * CRC Control
252362306a36Sopenharmony_ci */
252462306a36Sopenharmony_ciregister CRCCONTROL {
252562306a36Sopenharmony_ci	address			0x05d
252662306a36Sopenharmony_ci	access_mode	RW
252762306a36Sopenharmony_ci	modes		M_CFG
252862306a36Sopenharmony_ci	field	CRCVALCHKEN		0x40
252962306a36Sopenharmony_ci}
253062306a36Sopenharmony_ci
253162306a36Sopenharmony_ci/*
253262306a36Sopenharmony_ci * SCSI Test Control
253362306a36Sopenharmony_ci */
253462306a36Sopenharmony_ciregister SCSITEST {
253562306a36Sopenharmony_ci	address			0x05E
253662306a36Sopenharmony_ci	access_mode	RW
253762306a36Sopenharmony_ci	modes		M_CFG
253862306a36Sopenharmony_ci	field	CNTRTEST	0x08
253962306a36Sopenharmony_ci	field	SEL_TXPLL_DEBUG	0x04
254062306a36Sopenharmony_ci}
254162306a36Sopenharmony_ci
254262306a36Sopenharmony_ci/*
254362306a36Sopenharmony_ci * Data FIFO Queue Tag
254462306a36Sopenharmony_ci */
254562306a36Sopenharmony_ciregister DFFTAG {
254662306a36Sopenharmony_ci	address			0x05E
254762306a36Sopenharmony_ci	access_mode	RW
254862306a36Sopenharmony_ci	size		2
254962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
255062306a36Sopenharmony_ci}
255162306a36Sopenharmony_ci
255262306a36Sopenharmony_ci/*
255362306a36Sopenharmony_ci * Last SCSI Control Block
255462306a36Sopenharmony_ci */
255562306a36Sopenharmony_ciregister LASTSCB {
255662306a36Sopenharmony_ci	address			0x05E
255762306a36Sopenharmony_ci	access_mode	RW
255862306a36Sopenharmony_ci	size		2
255962306a36Sopenharmony_ci	modes		M_SCSI
256062306a36Sopenharmony_ci	dont_generate_debug_code
256162306a36Sopenharmony_ci}
256262306a36Sopenharmony_ci
256362306a36Sopenharmony_ci/*
256462306a36Sopenharmony_ci * SCSI I/O Cell Power-down Control
256562306a36Sopenharmony_ci */
256662306a36Sopenharmony_ciregister IOPDNCTL {
256762306a36Sopenharmony_ci	address			0x05F
256862306a36Sopenharmony_ci	access_mode	RW
256962306a36Sopenharmony_ci	modes		M_CFG
257062306a36Sopenharmony_ci	field	DISABLE_OE	0x80
257162306a36Sopenharmony_ci	field	PDN_IDIST	0x04
257262306a36Sopenharmony_ci	field	PDN_DIFFSENSE	0x01
257362306a36Sopenharmony_ci}
257462306a36Sopenharmony_ci
257562306a36Sopenharmony_ci/*
257662306a36Sopenharmony_ci * Shadow Host Address.
257762306a36Sopenharmony_ci */
257862306a36Sopenharmony_ciregister SHADDR {
257962306a36Sopenharmony_ci	address			0x060
258062306a36Sopenharmony_ci	access_mode	RO
258162306a36Sopenharmony_ci	size		8
258262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
258362306a36Sopenharmony_ci	dont_generate_debug_code
258462306a36Sopenharmony_ci}
258562306a36Sopenharmony_ci
258662306a36Sopenharmony_ci/*
258762306a36Sopenharmony_ci * Data Group CRC Interval.
258862306a36Sopenharmony_ci */
258962306a36Sopenharmony_ciregister DGRPCRCI {
259062306a36Sopenharmony_ci	address			0x060
259162306a36Sopenharmony_ci	access_mode	RW
259262306a36Sopenharmony_ci	size		2
259362306a36Sopenharmony_ci	modes		M_CFG
259462306a36Sopenharmony_ci}
259562306a36Sopenharmony_ci
259662306a36Sopenharmony_ci/*
259762306a36Sopenharmony_ci * Data Transfer Negotiation Address
259862306a36Sopenharmony_ci */
259962306a36Sopenharmony_ciregister NEGOADDR {
260062306a36Sopenharmony_ci	address			0x060
260162306a36Sopenharmony_ci	access_mode	RW
260262306a36Sopenharmony_ci	modes		M_SCSI
260362306a36Sopenharmony_ci	dont_generate_debug_code
260462306a36Sopenharmony_ci}
260562306a36Sopenharmony_ci
260662306a36Sopenharmony_ci/*
260762306a36Sopenharmony_ci * Data Transfer Negotiation Data - Period Byte
260862306a36Sopenharmony_ci */
260962306a36Sopenharmony_ciregister NEGPERIOD {
261062306a36Sopenharmony_ci	address			0x061
261162306a36Sopenharmony_ci	access_mode	RW
261262306a36Sopenharmony_ci	modes		M_SCSI
261362306a36Sopenharmony_ci	count		1
261462306a36Sopenharmony_ci	dont_generate_debug_code
261562306a36Sopenharmony_ci}
261662306a36Sopenharmony_ci
261762306a36Sopenharmony_ci/*
261862306a36Sopenharmony_ci * Packetized CRC Interval
261962306a36Sopenharmony_ci */
262062306a36Sopenharmony_ciregister PACKCRCI {
262162306a36Sopenharmony_ci	address			0x062
262262306a36Sopenharmony_ci	access_mode	RW
262362306a36Sopenharmony_ci	size		2
262462306a36Sopenharmony_ci	modes		M_CFG
262562306a36Sopenharmony_ci}
262662306a36Sopenharmony_ci
262762306a36Sopenharmony_ci/*
262862306a36Sopenharmony_ci * Data Transfer Negotiation Data - Offset Byte
262962306a36Sopenharmony_ci */
263062306a36Sopenharmony_ciregister NEGOFFSET {
263162306a36Sopenharmony_ci	address			0x062
263262306a36Sopenharmony_ci	access_mode	RW
263362306a36Sopenharmony_ci	modes		M_SCSI
263462306a36Sopenharmony_ci	count		1
263562306a36Sopenharmony_ci	dont_generate_debug_code
263662306a36Sopenharmony_ci}
263762306a36Sopenharmony_ci
263862306a36Sopenharmony_ci/*
263962306a36Sopenharmony_ci * Data Transfer Negotiation Data - PPR Options
264062306a36Sopenharmony_ci */
264162306a36Sopenharmony_ciregister NEGPPROPTS {
264262306a36Sopenharmony_ci	address			0x063
264362306a36Sopenharmony_ci	access_mode	RW
264462306a36Sopenharmony_ci	modes		M_SCSI
264562306a36Sopenharmony_ci	count		1
264662306a36Sopenharmony_ci	field	PPROPT_PACE	0x08
264762306a36Sopenharmony_ci	field	PPROPT_QAS	0x04
264862306a36Sopenharmony_ci	field	PPROPT_DT	0x02
264962306a36Sopenharmony_ci	field	PPROPT_IUT	0x01
265062306a36Sopenharmony_ci	dont_generate_debug_code
265162306a36Sopenharmony_ci}
265262306a36Sopenharmony_ci
265362306a36Sopenharmony_ci/*
265462306a36Sopenharmony_ci * Data Transfer Negotiation Data -  Connection Options
265562306a36Sopenharmony_ci */
265662306a36Sopenharmony_ciregister NEGCONOPTS {
265762306a36Sopenharmony_ci	address			0x064
265862306a36Sopenharmony_ci	access_mode	RW
265962306a36Sopenharmony_ci	modes		M_SCSI
266062306a36Sopenharmony_ci	field	ENSNAPSHOT	0x40
266162306a36Sopenharmony_ci	field	RTI_WRTDIS	0x20
266262306a36Sopenharmony_ci	field	RTI_OVRDTRN	0x10
266362306a36Sopenharmony_ci	field	ENSLOWCRC	0x08
266462306a36Sopenharmony_ci	field	ENAUTOATNI	0x04
266562306a36Sopenharmony_ci	field	ENAUTOATNO	0x02
266662306a36Sopenharmony_ci	field	WIDEXFER	0x01
266762306a36Sopenharmony_ci	dont_generate_debug_code
266862306a36Sopenharmony_ci}
266962306a36Sopenharmony_ci
267062306a36Sopenharmony_ci/*
267162306a36Sopenharmony_ci * Negotiation Table Annex Column Index.
267262306a36Sopenharmony_ci */
267362306a36Sopenharmony_ciregister ANNEXCOL {
267462306a36Sopenharmony_ci	address			0x065
267562306a36Sopenharmony_ci	access_mode	RW
267662306a36Sopenharmony_ci	modes		M_SCSI
267762306a36Sopenharmony_ci	count		7
267862306a36Sopenharmony_ci	dont_generate_debug_code
267962306a36Sopenharmony_ci}
268062306a36Sopenharmony_ci
268162306a36Sopenharmony_ci/*
268262306a36Sopenharmony_ci * SCSI Check
268362306a36Sopenharmony_ci * (Rev. B only)
268462306a36Sopenharmony_ci */
268562306a36Sopenharmony_ciregister SCSCHKN {
268662306a36Sopenharmony_ci	address			0x066
268762306a36Sopenharmony_ci	access_mode	RW
268862306a36Sopenharmony_ci	modes		M_CFG
268962306a36Sopenharmony_ci	count		1
269062306a36Sopenharmony_ci	field	BIDICHKDIS	0x80
269162306a36Sopenharmony_ci	field	STSELSKIDDIS	0x40
269262306a36Sopenharmony_ci	field	CURRFIFODEF	0x20
269362306a36Sopenharmony_ci	field	WIDERESEN	0x10
269462306a36Sopenharmony_ci	field	SDONEMSKDIS	0x08
269562306a36Sopenharmony_ci	field	DFFACTCLR	0x04
269662306a36Sopenharmony_ci	field	SHVALIDSTDIS	0x02
269762306a36Sopenharmony_ci	field	LSTSGCLRDIS	0x01
269862306a36Sopenharmony_ci	dont_generate_debug_code
269962306a36Sopenharmony_ci}
270062306a36Sopenharmony_ci
270162306a36Sopenharmony_ciconst AHD_ANNEXCOL_PER_DEV0	4
270262306a36Sopenharmony_ciconst AHD_NUM_PER_DEV_ANNEXCOLS	4
270362306a36Sopenharmony_ciconst AHD_ANNEXCOL_PRECOMP_SLEW	4
270462306a36Sopenharmony_ciconst	AHD_PRECOMP_MASK	0x07
270562306a36Sopenharmony_ciconst	AHD_PRECOMP_SHIFT	0
270662306a36Sopenharmony_ciconst	AHD_PRECOMP_CUTBACK_17	0x04
270762306a36Sopenharmony_ciconst	AHD_PRECOMP_CUTBACK_29	0x06
270862306a36Sopenharmony_ciconst	AHD_PRECOMP_CUTBACK_37	0x07
270962306a36Sopenharmony_ciconst	AHD_SLEWRATE_MASK	0x78
271062306a36Sopenharmony_ciconst	AHD_SLEWRATE_SHIFT	3
271162306a36Sopenharmony_ci/*
271262306a36Sopenharmony_ci * Rev A has only a single bit (high bit of field) of slew adjustment.
271362306a36Sopenharmony_ci * Rev B has 4 bits.  The current default happens to be the same for both.
271462306a36Sopenharmony_ci */
271562306a36Sopenharmony_ciconst	AHD_SLEWRATE_DEF_REVA	0x08
271662306a36Sopenharmony_ciconst	AHD_SLEWRATE_DEF_REVB	0x08
271762306a36Sopenharmony_ci
271862306a36Sopenharmony_ci/* Rev A does not have any amplitude setting. */
271962306a36Sopenharmony_ciconst AHD_ANNEXCOL_AMPLITUDE	6
272062306a36Sopenharmony_ciconst	AHD_AMPLITUDE_MASK	0x7
272162306a36Sopenharmony_ciconst	AHD_AMPLITUDE_SHIFT	0
272262306a36Sopenharmony_ciconst	AHD_AMPLITUDE_DEF	0x7
272362306a36Sopenharmony_ci
272462306a36Sopenharmony_ci/*
272562306a36Sopenharmony_ci * Negotiation Table Annex Data Port.
272662306a36Sopenharmony_ci */
272762306a36Sopenharmony_ciregister ANNEXDAT {
272862306a36Sopenharmony_ci	address			0x066
272962306a36Sopenharmony_ci	access_mode	RW
273062306a36Sopenharmony_ci	modes		M_SCSI
273162306a36Sopenharmony_ci	count		3
273262306a36Sopenharmony_ci	dont_generate_debug_code
273362306a36Sopenharmony_ci}
273462306a36Sopenharmony_ci
273562306a36Sopenharmony_ci/*
273662306a36Sopenharmony_ci * Initiator's Own Id.
273762306a36Sopenharmony_ci * The SCSI ID to use for Selection Out and seen during a reselection..
273862306a36Sopenharmony_ci */
273962306a36Sopenharmony_ciregister IOWNID {
274062306a36Sopenharmony_ci	address			0x067
274162306a36Sopenharmony_ci	access_mode	RW
274262306a36Sopenharmony_ci	modes		M_SCSI
274362306a36Sopenharmony_ci	dont_generate_debug_code
274462306a36Sopenharmony_ci}
274562306a36Sopenharmony_ci
274662306a36Sopenharmony_ci/*
274762306a36Sopenharmony_ci * 960MHz Phase-Locked Loop Control 0
274862306a36Sopenharmony_ci */
274962306a36Sopenharmony_ciregister PLL960CTL0 {
275062306a36Sopenharmony_ci	address			0x068
275162306a36Sopenharmony_ci	access_mode	RW
275262306a36Sopenharmony_ci	modes		M_CFG
275362306a36Sopenharmony_ci	field	PLL_VCOSEL	0x80
275462306a36Sopenharmony_ci	field	PLL_PWDN	0x40
275562306a36Sopenharmony_ci	field	PLL_NS		0x30
275662306a36Sopenharmony_ci	field	PLL_ENLUD	0x08
275762306a36Sopenharmony_ci	field	PLL_ENLPF	0x04
275862306a36Sopenharmony_ci	field	PLL_DLPF	0x02
275962306a36Sopenharmony_ci	field	PLL_ENFBM	0x01
276062306a36Sopenharmony_ci}
276162306a36Sopenharmony_ci
276262306a36Sopenharmony_ci/*
276362306a36Sopenharmony_ci * Target Own Id
276462306a36Sopenharmony_ci */
276562306a36Sopenharmony_ciregister TOWNID {
276662306a36Sopenharmony_ci	address			0x069
276762306a36Sopenharmony_ci	access_mode	RW
276862306a36Sopenharmony_ci	modes		M_SCSI
276962306a36Sopenharmony_ci	count		2
277062306a36Sopenharmony_ci	dont_generate_debug_code
277162306a36Sopenharmony_ci}
277262306a36Sopenharmony_ci
277362306a36Sopenharmony_ci/*
277462306a36Sopenharmony_ci * 960MHz Phase-Locked Loop Control 1
277562306a36Sopenharmony_ci */
277662306a36Sopenharmony_ciregister PLL960CTL1 {
277762306a36Sopenharmony_ci	address			0x069
277862306a36Sopenharmony_ci	access_mode	RW
277962306a36Sopenharmony_ci	modes		M_CFG
278062306a36Sopenharmony_ci	field	PLL_CNTEN	0x80
278162306a36Sopenharmony_ci	field	PLL_CNTCLR	0x40
278262306a36Sopenharmony_ci	field	PLL_RST		0x01
278362306a36Sopenharmony_ci}
278462306a36Sopenharmony_ci
278562306a36Sopenharmony_ci/*
278662306a36Sopenharmony_ci * Expander Signature
278762306a36Sopenharmony_ci */
278862306a36Sopenharmony_ciregister XSIG {
278962306a36Sopenharmony_ci	address			0x06A
279062306a36Sopenharmony_ci	access_mode	RW
279162306a36Sopenharmony_ci	modes		M_SCSI
279262306a36Sopenharmony_ci}
279362306a36Sopenharmony_ci
279462306a36Sopenharmony_ci/*
279562306a36Sopenharmony_ci * Shadow Byte Count
279662306a36Sopenharmony_ci */
279762306a36Sopenharmony_ciregister SHCNT {
279862306a36Sopenharmony_ci	address			0x068
279962306a36Sopenharmony_ci	access_mode	RW
280062306a36Sopenharmony_ci	size		3
280162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
280262306a36Sopenharmony_ci	dont_generate_debug_code
280362306a36Sopenharmony_ci}
280462306a36Sopenharmony_ci
280562306a36Sopenharmony_ci/*
280662306a36Sopenharmony_ci * Selection Out ID
280762306a36Sopenharmony_ci */
280862306a36Sopenharmony_ciregister SELOID {
280962306a36Sopenharmony_ci	address			0x06B
281062306a36Sopenharmony_ci	access_mode	RW
281162306a36Sopenharmony_ci	modes		M_SCSI
281262306a36Sopenharmony_ci}
281362306a36Sopenharmony_ci
281462306a36Sopenharmony_ci/*
281562306a36Sopenharmony_ci * 960-MHz Phase-Locked Loop Test Count
281662306a36Sopenharmony_ci */
281762306a36Sopenharmony_ciregister PLL960CNT0 {
281862306a36Sopenharmony_ci	address			0x06A
281962306a36Sopenharmony_ci	access_mode	RO
282062306a36Sopenharmony_ci	size		2
282162306a36Sopenharmony_ci	modes		M_CFG
282262306a36Sopenharmony_ci}
282362306a36Sopenharmony_ci
282462306a36Sopenharmony_ci/*
282562306a36Sopenharmony_ci * 400-MHz Phase-Locked Loop Control 0
282662306a36Sopenharmony_ci */
282762306a36Sopenharmony_ciregister PLL400CTL0 {
282862306a36Sopenharmony_ci	address			0x06C
282962306a36Sopenharmony_ci	access_mode	RW
283062306a36Sopenharmony_ci	modes		M_CFG
283162306a36Sopenharmony_ci	field	PLL_VCOSEL	0x80
283262306a36Sopenharmony_ci	field	PLL_PWDN	0x40
283362306a36Sopenharmony_ci	field	PLL_NS		0x30
283462306a36Sopenharmony_ci	field	PLL_ENLUD	0x08
283562306a36Sopenharmony_ci	field	PLL_ENLPF	0x04
283662306a36Sopenharmony_ci	field	PLL_DLPF	0x02
283762306a36Sopenharmony_ci	field	PLL_ENFBM	0x01
283862306a36Sopenharmony_ci}
283962306a36Sopenharmony_ci
284062306a36Sopenharmony_ci/*
284162306a36Sopenharmony_ci * Arbitration Fairness
284262306a36Sopenharmony_ci */
284362306a36Sopenharmony_ciregister FAIRNESS {
284462306a36Sopenharmony_ci	address			0x06C
284562306a36Sopenharmony_ci	access_mode	RW
284662306a36Sopenharmony_ci	size		2
284762306a36Sopenharmony_ci	modes		M_SCSI
284862306a36Sopenharmony_ci}
284962306a36Sopenharmony_ci
285062306a36Sopenharmony_ci/*
285162306a36Sopenharmony_ci * 400-MHz Phase-Locked Loop Control 1
285262306a36Sopenharmony_ci */
285362306a36Sopenharmony_ciregister PLL400CTL1 {
285462306a36Sopenharmony_ci	address			0x06D
285562306a36Sopenharmony_ci	access_mode	RW
285662306a36Sopenharmony_ci	modes		M_CFG
285762306a36Sopenharmony_ci	field	PLL_CNTEN	0x80
285862306a36Sopenharmony_ci	field	PLL_CNTCLR	0x40
285962306a36Sopenharmony_ci	field	PLL_RST		0x01
286062306a36Sopenharmony_ci}
286162306a36Sopenharmony_ci
286262306a36Sopenharmony_ci/*
286362306a36Sopenharmony_ci * Arbitration Unfairness
286462306a36Sopenharmony_ci */
286562306a36Sopenharmony_ciregister UNFAIRNESS {
286662306a36Sopenharmony_ci	address			0x06E
286762306a36Sopenharmony_ci	access_mode	RW
286862306a36Sopenharmony_ci	size		2
286962306a36Sopenharmony_ci	modes		M_SCSI
287062306a36Sopenharmony_ci}
287162306a36Sopenharmony_ci
287262306a36Sopenharmony_ci/*
287362306a36Sopenharmony_ci * 400-MHz Phase-Locked Loop Test Count
287462306a36Sopenharmony_ci */
287562306a36Sopenharmony_ciregister PLL400CNT0 {
287662306a36Sopenharmony_ci	address			0x06E
287762306a36Sopenharmony_ci	access_mode	RO
287862306a36Sopenharmony_ci	size		2
287962306a36Sopenharmony_ci	modes		M_CFG
288062306a36Sopenharmony_ci}
288162306a36Sopenharmony_ci
288262306a36Sopenharmony_ci/*
288362306a36Sopenharmony_ci * SCB Page Pointer
288462306a36Sopenharmony_ci */
288562306a36Sopenharmony_ciregister SCBPTR {
288662306a36Sopenharmony_ci	address			0x0A8
288762306a36Sopenharmony_ci	access_mode	RW
288862306a36Sopenharmony_ci	size		2
288962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1, M_CCHAN, M_SCSI
289062306a36Sopenharmony_ci	dont_generate_debug_code
289162306a36Sopenharmony_ci}
289262306a36Sopenharmony_ci
289362306a36Sopenharmony_ci/*
289462306a36Sopenharmony_ci * CMC SCB Array Count
289562306a36Sopenharmony_ci * Number of bytes to transfer between CMC SCB memory and SCBRAM.
289662306a36Sopenharmony_ci * Transfers must be 8byte aligned and sized.
289762306a36Sopenharmony_ci */
289862306a36Sopenharmony_ciregister CCSCBACNT {
289962306a36Sopenharmony_ci	address			0x0AB
290062306a36Sopenharmony_ci	access_mode	RW
290162306a36Sopenharmony_ci	modes		M_CCHAN
290262306a36Sopenharmony_ci}
290362306a36Sopenharmony_ci
290462306a36Sopenharmony_ci/*
290562306a36Sopenharmony_ci * SCB Autopointer
290662306a36Sopenharmony_ci * SCB-Next Address Snooping logic.  When an SCB is transferred to
290762306a36Sopenharmony_ci * the card, the next SCB address to be used by the CMC array can
290862306a36Sopenharmony_ci * be autoloaded from that transfer.
290962306a36Sopenharmony_ci */
291062306a36Sopenharmony_ciregister SCBAUTOPTR {
291162306a36Sopenharmony_ci	address			0x0AB
291262306a36Sopenharmony_ci	access_mode	RW
291362306a36Sopenharmony_ci	modes		M_CFG
291462306a36Sopenharmony_ci	count		1
291562306a36Sopenharmony_ci	field	AUSCBPTR_EN	0x80
291662306a36Sopenharmony_ci	field	SCBPTR_ADDR	0x38
291762306a36Sopenharmony_ci	field	SCBPTR_OFF	0x07
291862306a36Sopenharmony_ci	dont_generate_debug_code
291962306a36Sopenharmony_ci}
292062306a36Sopenharmony_ci
292162306a36Sopenharmony_ci/*
292262306a36Sopenharmony_ci * CMC SG Ram Address Pointer
292362306a36Sopenharmony_ci */
292462306a36Sopenharmony_ciregister CCSGADDR {
292562306a36Sopenharmony_ci	address			0x0AC
292662306a36Sopenharmony_ci	access_mode	RW
292762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
292862306a36Sopenharmony_ci	dont_generate_debug_code
292962306a36Sopenharmony_ci}
293062306a36Sopenharmony_ci
293162306a36Sopenharmony_ci/*
293262306a36Sopenharmony_ci * CMC SCB RAM Address Pointer
293362306a36Sopenharmony_ci */
293462306a36Sopenharmony_ciregister CCSCBADDR {
293562306a36Sopenharmony_ci	address			0x0AC
293662306a36Sopenharmony_ci	access_mode	RW
293762306a36Sopenharmony_ci	modes		M_CCHAN
293862306a36Sopenharmony_ci	dont_generate_debug_code
293962306a36Sopenharmony_ci}
294062306a36Sopenharmony_ci
294162306a36Sopenharmony_ci/*
294262306a36Sopenharmony_ci * CMC SCB Ram Back-up Address Pointer
294362306a36Sopenharmony_ci * Indicates the true stop location of transfers halted prior
294462306a36Sopenharmony_ci * to SCBHCNT going to 0.
294562306a36Sopenharmony_ci */
294662306a36Sopenharmony_ciregister CCSCBADR_BK {
294762306a36Sopenharmony_ci	address			0x0AC
294862306a36Sopenharmony_ci	access_mode	RO
294962306a36Sopenharmony_ci	modes		M_CFG
295062306a36Sopenharmony_ci}
295162306a36Sopenharmony_ci
295262306a36Sopenharmony_ci/*
295362306a36Sopenharmony_ci * CMC SG Control
295462306a36Sopenharmony_ci */
295562306a36Sopenharmony_ciregister CCSGCTL {
295662306a36Sopenharmony_ci	address			0x0AD
295762306a36Sopenharmony_ci	access_mode	RW
295862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
295962306a36Sopenharmony_ci	field	CCSGDONE	0x80
296062306a36Sopenharmony_ci	field	SG_CACHE_AVAIL	0x10
296162306a36Sopenharmony_ci	field	CCSGENACK	0x08
296262306a36Sopenharmony_ci	mask	CCSGEN		0x0C
296362306a36Sopenharmony_ci	field	SG_FETCH_REQ	0x02
296462306a36Sopenharmony_ci	field	CCSGRESET	0x01
296562306a36Sopenharmony_ci}
296662306a36Sopenharmony_ci
296762306a36Sopenharmony_ci/*
296862306a36Sopenharmony_ci * CMD SCB Control
296962306a36Sopenharmony_ci */
297062306a36Sopenharmony_ciregister CCSCBCTL {
297162306a36Sopenharmony_ci	address			0x0AD
297262306a36Sopenharmony_ci	access_mode	RW
297362306a36Sopenharmony_ci	modes		M_CCHAN
297462306a36Sopenharmony_ci	field	CCSCBDONE	0x80
297562306a36Sopenharmony_ci	field	ARRDONE		0x40
297662306a36Sopenharmony_ci	field	CCARREN		0x10
297762306a36Sopenharmony_ci	field	CCSCBEN		0x08
297862306a36Sopenharmony_ci	field	CCSCBDIR	0x04
297962306a36Sopenharmony_ci	field	CCSCBRESET	0x01
298062306a36Sopenharmony_ci}
298162306a36Sopenharmony_ci
298262306a36Sopenharmony_ci/*
298362306a36Sopenharmony_ci * CMC Ram BIST
298462306a36Sopenharmony_ci */
298562306a36Sopenharmony_ciregister CMC_RAMBIST {
298662306a36Sopenharmony_ci	address			0x0AD
298762306a36Sopenharmony_ci	access_mode	RW
298862306a36Sopenharmony_ci	modes		M_CFG
298962306a36Sopenharmony_ci	field	SG_ELEMENT_SIZE		0x80
299062306a36Sopenharmony_ci	field	SCBRAMBIST_FAIL		0x40
299162306a36Sopenharmony_ci	field	SG_BIST_FAIL		0x20
299262306a36Sopenharmony_ci	field	SG_BIST_EN		0x10
299362306a36Sopenharmony_ci	field	CMC_BUFFER_BIST_FAIL	0x02
299462306a36Sopenharmony_ci	field	CMC_BUFFER_BIST_EN	0x01
299562306a36Sopenharmony_ci}
299662306a36Sopenharmony_ci
299762306a36Sopenharmony_ci/*
299862306a36Sopenharmony_ci * CMC SG RAM Data Port
299962306a36Sopenharmony_ci */
300062306a36Sopenharmony_ciregister CCSGRAM {
300162306a36Sopenharmony_ci	address			0x0B0
300262306a36Sopenharmony_ci	access_mode	RW
300362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
300462306a36Sopenharmony_ci	dont_generate_debug_code
300562306a36Sopenharmony_ci}
300662306a36Sopenharmony_ci
300762306a36Sopenharmony_ci/*
300862306a36Sopenharmony_ci * CMC SCB RAM Data Port
300962306a36Sopenharmony_ci */
301062306a36Sopenharmony_ciregister CCSCBRAM {
301162306a36Sopenharmony_ci	address			0x0B0
301262306a36Sopenharmony_ci	access_mode	RW
301362306a36Sopenharmony_ci	modes		M_CCHAN
301462306a36Sopenharmony_ci	dont_generate_debug_code
301562306a36Sopenharmony_ci}
301662306a36Sopenharmony_ci
301762306a36Sopenharmony_ci/*
301862306a36Sopenharmony_ci * Flex DMA Address.
301962306a36Sopenharmony_ci */
302062306a36Sopenharmony_ciregister FLEXADR {
302162306a36Sopenharmony_ci	address			0x0B0
302262306a36Sopenharmony_ci	access_mode	RW
302362306a36Sopenharmony_ci	size		3
302462306a36Sopenharmony_ci	modes		M_SCSI
302562306a36Sopenharmony_ci}
302662306a36Sopenharmony_ci
302762306a36Sopenharmony_ci/*
302862306a36Sopenharmony_ci * Flex DMA Byte Count
302962306a36Sopenharmony_ci */
303062306a36Sopenharmony_ciregister FLEXCNT {
303162306a36Sopenharmony_ci	address			0x0B3
303262306a36Sopenharmony_ci	access_mode	RW
303362306a36Sopenharmony_ci	size		2
303462306a36Sopenharmony_ci	modes		M_SCSI
303562306a36Sopenharmony_ci}
303662306a36Sopenharmony_ci
303762306a36Sopenharmony_ci/*
303862306a36Sopenharmony_ci * Flex DMA Status
303962306a36Sopenharmony_ci */
304062306a36Sopenharmony_ciregister FLEXDMASTAT {
304162306a36Sopenharmony_ci	address			0x0B5
304262306a36Sopenharmony_ci	access_mode	RW
304362306a36Sopenharmony_ci	modes		M_SCSI
304462306a36Sopenharmony_ci	field	FLEXDMAERR	0x02
304562306a36Sopenharmony_ci	field	FLEXDMADONE	0x01
304662306a36Sopenharmony_ci}
304762306a36Sopenharmony_ci
304862306a36Sopenharmony_ci/*
304962306a36Sopenharmony_ci * Flex DMA Data Port
305062306a36Sopenharmony_ci */
305162306a36Sopenharmony_ciregister FLEXDATA {
305262306a36Sopenharmony_ci	address			0x0B6
305362306a36Sopenharmony_ci	access_mode	RW
305462306a36Sopenharmony_ci	modes		M_SCSI
305562306a36Sopenharmony_ci}
305662306a36Sopenharmony_ci
305762306a36Sopenharmony_ci/*
305862306a36Sopenharmony_ci * Board Data
305962306a36Sopenharmony_ci */
306062306a36Sopenharmony_ciregister BRDDAT {
306162306a36Sopenharmony_ci	address			0x0B8
306262306a36Sopenharmony_ci	access_mode	RW
306362306a36Sopenharmony_ci	modes		M_SCSI
306462306a36Sopenharmony_ci	count		2
306562306a36Sopenharmony_ci	dont_generate_debug_code
306662306a36Sopenharmony_ci}
306762306a36Sopenharmony_ci
306862306a36Sopenharmony_ci/*
306962306a36Sopenharmony_ci * Board Control
307062306a36Sopenharmony_ci */
307162306a36Sopenharmony_ciregister BRDCTL {
307262306a36Sopenharmony_ci	address			0x0B9
307362306a36Sopenharmony_ci	access_mode	RW
307462306a36Sopenharmony_ci	modes		M_SCSI
307562306a36Sopenharmony_ci	count		7
307662306a36Sopenharmony_ci	field	FLXARBACK	0x80
307762306a36Sopenharmony_ci	field	FLXARBREQ	0x40
307862306a36Sopenharmony_ci	field	BRDADDR		0x38
307962306a36Sopenharmony_ci	field	BRDEN		0x04
308062306a36Sopenharmony_ci	field	BRDRW		0x02
308162306a36Sopenharmony_ci	field	BRDSTB		0x01
308262306a36Sopenharmony_ci	dont_generate_debug_code
308362306a36Sopenharmony_ci}
308462306a36Sopenharmony_ci
308562306a36Sopenharmony_ci/*
308662306a36Sopenharmony_ci * Serial EEPROM Address
308762306a36Sopenharmony_ci */
308862306a36Sopenharmony_ciregister SEEADR {
308962306a36Sopenharmony_ci	address			0x0BA
309062306a36Sopenharmony_ci	access_mode	RW
309162306a36Sopenharmony_ci	modes		M_SCSI
309262306a36Sopenharmony_ci	count		4
309362306a36Sopenharmony_ci	dont_generate_debug_code
309462306a36Sopenharmony_ci}
309562306a36Sopenharmony_ci
309662306a36Sopenharmony_ci/*
309762306a36Sopenharmony_ci * Serial EEPROM Data
309862306a36Sopenharmony_ci */
309962306a36Sopenharmony_ciregister SEEDAT {
310062306a36Sopenharmony_ci	address			0x0BC
310162306a36Sopenharmony_ci	access_mode	RW
310262306a36Sopenharmony_ci	size		2
310362306a36Sopenharmony_ci	modes		M_SCSI
310462306a36Sopenharmony_ci	count		4
310562306a36Sopenharmony_ci	dont_generate_debug_code
310662306a36Sopenharmony_ci}
310762306a36Sopenharmony_ci
310862306a36Sopenharmony_ci/*
310962306a36Sopenharmony_ci * Serial EEPROM Status
311062306a36Sopenharmony_ci */
311162306a36Sopenharmony_ciregister SEESTAT {
311262306a36Sopenharmony_ci	address			0x0BE
311362306a36Sopenharmony_ci	access_mode	RO
311462306a36Sopenharmony_ci	modes		M_SCSI
311562306a36Sopenharmony_ci	count		1
311662306a36Sopenharmony_ci	field	INIT_DONE	0x80
311762306a36Sopenharmony_ci	field	SEEOPCODE	0x70
311862306a36Sopenharmony_ci	field	LDALTID_L	0x08
311962306a36Sopenharmony_ci	field	SEEARBACK	0x04
312062306a36Sopenharmony_ci	field	SEEBUSY		0x02
312162306a36Sopenharmony_ci	field	SEESTART	0x01
312262306a36Sopenharmony_ci	dont_generate_debug_code
312362306a36Sopenharmony_ci}
312462306a36Sopenharmony_ci
312562306a36Sopenharmony_ci/*
312662306a36Sopenharmony_ci * Serial EEPROM Control
312762306a36Sopenharmony_ci */
312862306a36Sopenharmony_ciregister SEECTL {
312962306a36Sopenharmony_ci	address			0x0BE
313062306a36Sopenharmony_ci	access_mode	RW
313162306a36Sopenharmony_ci	modes		M_SCSI
313262306a36Sopenharmony_ci	count		4
313362306a36Sopenharmony_ci	field	SEEOPCODE	0x70 {
313462306a36Sopenharmony_ci		SEEOP_ERASE	0x70,
313562306a36Sopenharmony_ci		SEEOP_READ	0x60,
313662306a36Sopenharmony_ci		SEEOP_WRITE	0x50,
313762306a36Sopenharmony_ci	/*
313862306a36Sopenharmony_ci	 * The following four commands use special
313962306a36Sopenharmony_ci	 * addresses for differentiation.
314062306a36Sopenharmony_ci	 */
314162306a36Sopenharmony_ci		SEEOP_ERAL	0x40
314262306a36Sopenharmony_ci	}
314362306a36Sopenharmony_ci	mask	SEEOP_EWEN	0x40
314462306a36Sopenharmony_ci	mask	SEEOP_WALL	0x40
314562306a36Sopenharmony_ci	mask	SEEOP_EWDS	0x40
314662306a36Sopenharmony_ci	field	SEERST		0x02
314762306a36Sopenharmony_ci	field	SEESTART	0x01
314862306a36Sopenharmony_ci	dont_generate_debug_code
314962306a36Sopenharmony_ci}
315062306a36Sopenharmony_ci
315162306a36Sopenharmony_ciconst SEEOP_ERAL_ADDR	0x80
315262306a36Sopenharmony_ciconst SEEOP_EWEN_ADDR	0xC0
315362306a36Sopenharmony_ciconst SEEOP_WRAL_ADDR	0x40
315462306a36Sopenharmony_ciconst SEEOP_EWDS_ADDR	0x00
315562306a36Sopenharmony_ci
315662306a36Sopenharmony_ci/*
315762306a36Sopenharmony_ci * SCB Counter
315862306a36Sopenharmony_ci */
315962306a36Sopenharmony_ciregister SCBCNT {
316062306a36Sopenharmony_ci	address			0x0BF
316162306a36Sopenharmony_ci	access_mode	RW
316262306a36Sopenharmony_ci	modes		M_SCSI
316362306a36Sopenharmony_ci	dont_generate_debug_code
316462306a36Sopenharmony_ci}
316562306a36Sopenharmony_ci
316662306a36Sopenharmony_ci/*
316762306a36Sopenharmony_ci * Data FIFO Write Address
316862306a36Sopenharmony_ci * Pointer to the next QWD location to be written to the data FIFO.
316962306a36Sopenharmony_ci */
317062306a36Sopenharmony_ciregister DFWADDR {
317162306a36Sopenharmony_ci	address			0x0C0
317262306a36Sopenharmony_ci	access_mode	RW
317362306a36Sopenharmony_ci	size		2
317462306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
317562306a36Sopenharmony_ci	dont_generate_debug_code
317662306a36Sopenharmony_ci}
317762306a36Sopenharmony_ci
317862306a36Sopenharmony_ci/*
317962306a36Sopenharmony_ci * DSP Filter Control
318062306a36Sopenharmony_ci */
318162306a36Sopenharmony_ciregister DSPFLTRCTL {
318262306a36Sopenharmony_ci	address			0x0C0
318362306a36Sopenharmony_ci	access_mode	RW
318462306a36Sopenharmony_ci	modes		M_CFG
318562306a36Sopenharmony_ci	field	FLTRDISABLE	0x20
318662306a36Sopenharmony_ci	field	EDGESENSE	0x10
318762306a36Sopenharmony_ci	field	DSPFCNTSEL	0x0F
318862306a36Sopenharmony_ci}
318962306a36Sopenharmony_ci
319062306a36Sopenharmony_ci/*
319162306a36Sopenharmony_ci * DSP Data Channel Control
319262306a36Sopenharmony_ci */
319362306a36Sopenharmony_ciregister DSPDATACTL {
319462306a36Sopenharmony_ci	address			0x0C1
319562306a36Sopenharmony_ci	access_mode	RW
319662306a36Sopenharmony_ci	modes		M_CFG
319762306a36Sopenharmony_ci	count		3
319862306a36Sopenharmony_ci	field	BYPASSENAB	0x80
319962306a36Sopenharmony_ci	field	DESQDIS		0x10
320062306a36Sopenharmony_ci	field	RCVROFFSTDIS	0x04
320162306a36Sopenharmony_ci	field	XMITOFFSTDIS	0x02
320262306a36Sopenharmony_ci	dont_generate_debug_code
320362306a36Sopenharmony_ci}
320462306a36Sopenharmony_ci
320562306a36Sopenharmony_ci/*
320662306a36Sopenharmony_ci * Data FIFO Read Address
320762306a36Sopenharmony_ci * Pointer to the next QWD location to be read from the data FIFO.
320862306a36Sopenharmony_ci */
320962306a36Sopenharmony_ciregister DFRADDR {
321062306a36Sopenharmony_ci	address			0x0C2
321162306a36Sopenharmony_ci	access_mode	RW
321262306a36Sopenharmony_ci	size		2
321362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
321462306a36Sopenharmony_ci}
321562306a36Sopenharmony_ci
321662306a36Sopenharmony_ci/*
321762306a36Sopenharmony_ci * DSP REQ Control
321862306a36Sopenharmony_ci */
321962306a36Sopenharmony_ciregister DSPREQCTL {
322062306a36Sopenharmony_ci	address			0x0C2
322162306a36Sopenharmony_ci	access_mode	RW
322262306a36Sopenharmony_ci	modes		M_CFG
322362306a36Sopenharmony_ci	field	MANREQCTL	0xC0
322462306a36Sopenharmony_ci	field	MANREQDLY	0x3F
322562306a36Sopenharmony_ci}
322662306a36Sopenharmony_ci
322762306a36Sopenharmony_ci/*
322862306a36Sopenharmony_ci * DSP ACK Control
322962306a36Sopenharmony_ci */
323062306a36Sopenharmony_ciregister DSPACKCTL {
323162306a36Sopenharmony_ci	address			0x0C3
323262306a36Sopenharmony_ci	access_mode	RW
323362306a36Sopenharmony_ci	modes		M_CFG
323462306a36Sopenharmony_ci	field	MANACKCTL	0xC0
323562306a36Sopenharmony_ci	field	MANACKDLY	0x3F
323662306a36Sopenharmony_ci}
323762306a36Sopenharmony_ci
323862306a36Sopenharmony_ci/*
323962306a36Sopenharmony_ci * Data FIFO Data
324062306a36Sopenharmony_ci * Read/Write byte port into the data FIFO.  The read and write
324162306a36Sopenharmony_ci * FIFO pointers increment with each read and write respectively
324262306a36Sopenharmony_ci * to this port.
324362306a36Sopenharmony_ci */
324462306a36Sopenharmony_ciregister DFDAT {
324562306a36Sopenharmony_ci	address			0x0C4
324662306a36Sopenharmony_ci	access_mode	RW
324762306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
324862306a36Sopenharmony_ci	dont_generate_debug_code
324962306a36Sopenharmony_ci}
325062306a36Sopenharmony_ci
325162306a36Sopenharmony_ci/*
325262306a36Sopenharmony_ci * DSP Channel Select
325362306a36Sopenharmony_ci */
325462306a36Sopenharmony_ciregister DSPSELECT {
325562306a36Sopenharmony_ci	address			0x0C4
325662306a36Sopenharmony_ci	access_mode	RW
325762306a36Sopenharmony_ci	modes		M_CFG
325862306a36Sopenharmony_ci	count		1
325962306a36Sopenharmony_ci	field	AUTOINCEN	0x80
326062306a36Sopenharmony_ci	field	DSPSEL		0x1F
326162306a36Sopenharmony_ci	dont_generate_debug_code
326262306a36Sopenharmony_ci}
326362306a36Sopenharmony_ci
326462306a36Sopenharmony_ciconst NUMDSPS 0x14
326562306a36Sopenharmony_ci
326662306a36Sopenharmony_ci/*
326762306a36Sopenharmony_ci * Write Bias Control
326862306a36Sopenharmony_ci */
326962306a36Sopenharmony_ciregister WRTBIASCTL {
327062306a36Sopenharmony_ci	address			0x0C5
327162306a36Sopenharmony_ci	access_mode	WO
327262306a36Sopenharmony_ci	modes		M_CFG
327362306a36Sopenharmony_ci	count		3
327462306a36Sopenharmony_ci	field	AUTOXBCDIS	0x80
327562306a36Sopenharmony_ci	field	XMITMANVAL	0x3F
327662306a36Sopenharmony_ci	dont_generate_debug_code
327762306a36Sopenharmony_ci}
327862306a36Sopenharmony_ci
327962306a36Sopenharmony_ci/*
328062306a36Sopenharmony_ci * Currently the WRTBIASCTL is the same as the default.
328162306a36Sopenharmony_ci */
328262306a36Sopenharmony_ciconst WRTBIASCTL_HP_DEFAULT 0x0
328362306a36Sopenharmony_ci
328462306a36Sopenharmony_ci/*
328562306a36Sopenharmony_ci * Receiver Bias Control
328662306a36Sopenharmony_ci */
328762306a36Sopenharmony_ciregister RCVRBIOSCTL {
328862306a36Sopenharmony_ci	address			0x0C6
328962306a36Sopenharmony_ci	access_mode	WO
329062306a36Sopenharmony_ci	modes		M_CFG
329162306a36Sopenharmony_ci	field	AUTORBCDIS	0x80
329262306a36Sopenharmony_ci	field	RCVRMANVAL	0x3F
329362306a36Sopenharmony_ci}
329462306a36Sopenharmony_ci
329562306a36Sopenharmony_ci/*
329662306a36Sopenharmony_ci * Write Bias Calculator
329762306a36Sopenharmony_ci */
329862306a36Sopenharmony_ciregister WRTBIASCALC {
329962306a36Sopenharmony_ci	address			0x0C7
330062306a36Sopenharmony_ci	access_mode	RO
330162306a36Sopenharmony_ci	modes		M_CFG
330262306a36Sopenharmony_ci}
330362306a36Sopenharmony_ci
330462306a36Sopenharmony_ci/*
330562306a36Sopenharmony_ci * Data FIFO Pointers
330662306a36Sopenharmony_ci * Contains the byte offset from DFWADDR and DWRADDR to the current
330762306a36Sopenharmony_ci * FIFO write/read locations.
330862306a36Sopenharmony_ci */
330962306a36Sopenharmony_ciregister DFPTRS {
331062306a36Sopenharmony_ci	address			0x0C8
331162306a36Sopenharmony_ci	access_mode	RW
331262306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
331362306a36Sopenharmony_ci}
331462306a36Sopenharmony_ci
331562306a36Sopenharmony_ci/*
331662306a36Sopenharmony_ci * Receiver Bias Calculator
331762306a36Sopenharmony_ci */
331862306a36Sopenharmony_ciregister RCVRBIASCALC {
331962306a36Sopenharmony_ci	address			0x0C8
332062306a36Sopenharmony_ci	access_mode	RO
332162306a36Sopenharmony_ci	modes		M_CFG
332262306a36Sopenharmony_ci}
332362306a36Sopenharmony_ci
332462306a36Sopenharmony_ci/*
332562306a36Sopenharmony_ci * Data FIFO Backup Read Pointer
332662306a36Sopenharmony_ci * Contains the data FIFO address to be restored if the last
332762306a36Sopenharmony_ci * data accessed from the data FIFO was not transferred successfully.
332862306a36Sopenharmony_ci */
332962306a36Sopenharmony_ciregister DFBKPTR {
333062306a36Sopenharmony_ci	address			0x0C9
333162306a36Sopenharmony_ci	access_mode	RW
333262306a36Sopenharmony_ci	size		2
333362306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
333462306a36Sopenharmony_ci}
333562306a36Sopenharmony_ci
333662306a36Sopenharmony_ci/*
333762306a36Sopenharmony_ci * Skew Calculator
333862306a36Sopenharmony_ci */
333962306a36Sopenharmony_ciregister SKEWCALC {
334062306a36Sopenharmony_ci	address			0x0C9
334162306a36Sopenharmony_ci	access_mode	RO
334262306a36Sopenharmony_ci	modes		M_CFG
334362306a36Sopenharmony_ci}
334462306a36Sopenharmony_ci
334562306a36Sopenharmony_ci/*
334662306a36Sopenharmony_ci * Data FIFO Debug Control
334762306a36Sopenharmony_ci */
334862306a36Sopenharmony_ciregister DFDBCTL {
334962306a36Sopenharmony_ci	address				0x0CB
335062306a36Sopenharmony_ci	access_mode	RW
335162306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
335262306a36Sopenharmony_ci	field	DFF_CIO_WR_RDY		0x20
335362306a36Sopenharmony_ci	field	DFF_CIO_RD_RDY		0x10
335462306a36Sopenharmony_ci	field	DFF_DIR_ERR		0x08
335562306a36Sopenharmony_ci	field	DFF_RAMBIST_FAIL	0x04
335662306a36Sopenharmony_ci	field	DFF_RAMBIST_DONE	0x02
335762306a36Sopenharmony_ci	field	DFF_RAMBIST_EN		0x01
335862306a36Sopenharmony_ci}
335962306a36Sopenharmony_ci
336062306a36Sopenharmony_ci/*
336162306a36Sopenharmony_ci * Data FIFO Space Count
336262306a36Sopenharmony_ci * Number of FIFO locations that are free.
336362306a36Sopenharmony_ci */
336462306a36Sopenharmony_ciregister DFSCNT {
336562306a36Sopenharmony_ci	address			0x0CC
336662306a36Sopenharmony_ci	access_mode	RO
336762306a36Sopenharmony_ci	size		2
336862306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
336962306a36Sopenharmony_ci}
337062306a36Sopenharmony_ci
337162306a36Sopenharmony_ci/*
337262306a36Sopenharmony_ci * Data FIFO Byte Count
337362306a36Sopenharmony_ci * Number of filled FIFO locations.
337462306a36Sopenharmony_ci */
337562306a36Sopenharmony_ciregister DFBCNT {
337662306a36Sopenharmony_ci	address			0x0CE
337762306a36Sopenharmony_ci	access_mode	RO
337862306a36Sopenharmony_ci	size		2
337962306a36Sopenharmony_ci	modes		M_DFF0, M_DFF1
338062306a36Sopenharmony_ci}
338162306a36Sopenharmony_ci
338262306a36Sopenharmony_ci/*
338362306a36Sopenharmony_ci * Sequencer Program Overlay Address.
338462306a36Sopenharmony_ci * Low address must be written prior to high address.
338562306a36Sopenharmony_ci */
338662306a36Sopenharmony_ciregister OVLYADDR {
338762306a36Sopenharmony_ci	address			0x0D4
338862306a36Sopenharmony_ci	modes		M_SCSI
338962306a36Sopenharmony_ci	size		2
339062306a36Sopenharmony_ci	access_mode	RW
339162306a36Sopenharmony_ci}
339262306a36Sopenharmony_ci
339362306a36Sopenharmony_ci/*
339462306a36Sopenharmony_ci * Sequencer Control 0
339562306a36Sopenharmony_ci * Error detection mode, speed configuration,
339662306a36Sopenharmony_ci * single step, breakpoints and program load.
339762306a36Sopenharmony_ci */
339862306a36Sopenharmony_ciregister SEQCTL0 {
339962306a36Sopenharmony_ci	address			0x0D6
340062306a36Sopenharmony_ci	access_mode	RW
340162306a36Sopenharmony_ci	count		11
340262306a36Sopenharmony_ci	field	PERRORDIS	0x80
340362306a36Sopenharmony_ci	field	PAUSEDIS	0x40
340462306a36Sopenharmony_ci	field	FAILDIS		0x20
340562306a36Sopenharmony_ci	field	FASTMODE	0x10
340662306a36Sopenharmony_ci	field	BRKADRINTEN	0x08
340762306a36Sopenharmony_ci	field	STEP		0x04
340862306a36Sopenharmony_ci	field	SEQRESET	0x02
340962306a36Sopenharmony_ci	field	LOADRAM		0x01
341062306a36Sopenharmony_ci}
341162306a36Sopenharmony_ci
341262306a36Sopenharmony_ci/*
341362306a36Sopenharmony_ci * Sequencer Control 1
341462306a36Sopenharmony_ci * Instruction RAM Diagnostics
341562306a36Sopenharmony_ci */
341662306a36Sopenharmony_ciregister SEQCTL1 {
341762306a36Sopenharmony_ci	address			0x0D7
341862306a36Sopenharmony_ci	access_mode RW
341962306a36Sopenharmony_ci	field	OVRLAY_DATA_CHK	0x08
342062306a36Sopenharmony_ci	field	RAMBIST_DONE	0x04
342162306a36Sopenharmony_ci	field	RAMBIST_FAIL	0x02
342262306a36Sopenharmony_ci	field	RAMBIST_EN	0x01
342362306a36Sopenharmony_ci}
342462306a36Sopenharmony_ci
342562306a36Sopenharmony_ci/*
342662306a36Sopenharmony_ci * Sequencer Flags
342762306a36Sopenharmony_ci * Zero and Carry state of the ALU.
342862306a36Sopenharmony_ci */
342962306a36Sopenharmony_ciregister FLAGS {
343062306a36Sopenharmony_ci	address			0x0D8
343162306a36Sopenharmony_ci	access_mode 	RO
343262306a36Sopenharmony_ci	count		23
343362306a36Sopenharmony_ci	field	ZERO		0x02
343462306a36Sopenharmony_ci	field	CARRY		0x01
343562306a36Sopenharmony_ci	dont_generate_debug_code
343662306a36Sopenharmony_ci}
343762306a36Sopenharmony_ci
343862306a36Sopenharmony_ci/*
343962306a36Sopenharmony_ci * Sequencer Interrupt Control
344062306a36Sopenharmony_ci */ 
344162306a36Sopenharmony_ciregister SEQINTCTL {
344262306a36Sopenharmony_ci	address			0x0D9
344362306a36Sopenharmony_ci	access_mode RW
344462306a36Sopenharmony_ci	field	INTVEC1DSL	0x80
344562306a36Sopenharmony_ci	field	INT1_CONTEXT	0x20
344662306a36Sopenharmony_ci	field	SCS_SEQ_INT1M1	0x10
344762306a36Sopenharmony_ci	field	SCS_SEQ_INT1M0	0x08
344862306a36Sopenharmony_ci	field	INTMASK2	0x04
344962306a36Sopenharmony_ci	field	INTMASK1	0x02
345062306a36Sopenharmony_ci	field	IRET		0x01
345162306a36Sopenharmony_ci}
345262306a36Sopenharmony_ci
345362306a36Sopenharmony_ci/*
345462306a36Sopenharmony_ci * Sequencer RAM Data Port
345562306a36Sopenharmony_ci * Single byte window into the Sequencer Instruction Ram area starting
345662306a36Sopenharmony_ci * at the address specified by OVLYADDR.  To write a full instruction word,
345762306a36Sopenharmony_ci * simply write four bytes in succession.  OVLYADDR will increment after the
345862306a36Sopenharmony_ci * most significant instrution byte (the byte with the parity bit) is written.
345962306a36Sopenharmony_ci */
346062306a36Sopenharmony_ciregister SEQRAM {
346162306a36Sopenharmony_ci	address			0x0DA
346262306a36Sopenharmony_ci	access_mode 	RW
346362306a36Sopenharmony_ci	count		2
346462306a36Sopenharmony_ci	dont_generate_debug_code
346562306a36Sopenharmony_ci}
346662306a36Sopenharmony_ci
346762306a36Sopenharmony_ci/*
346862306a36Sopenharmony_ci * Sequencer Program Counter
346962306a36Sopenharmony_ci * Low byte must be written prior to high byte.
347062306a36Sopenharmony_ci */
347162306a36Sopenharmony_ciregister PRGMCNT {
347262306a36Sopenharmony_ci	address			0x0DE
347362306a36Sopenharmony_ci	access_mode	RW
347462306a36Sopenharmony_ci	size		2
347562306a36Sopenharmony_ci	count		5
347662306a36Sopenharmony_ci	dont_generate_debug_code
347762306a36Sopenharmony_ci}
347862306a36Sopenharmony_ci
347962306a36Sopenharmony_ci/*
348062306a36Sopenharmony_ci * Accumulator
348162306a36Sopenharmony_ci */
348262306a36Sopenharmony_ciregister ACCUM {
348362306a36Sopenharmony_ci	address			0x0E0
348462306a36Sopenharmony_ci	access_mode 	RW
348562306a36Sopenharmony_ci	accumulator
348662306a36Sopenharmony_ci	dont_generate_debug_code
348762306a36Sopenharmony_ci}
348862306a36Sopenharmony_ci
348962306a36Sopenharmony_ci/*
349062306a36Sopenharmony_ci * Source Index Register
349162306a36Sopenharmony_ci * Incrementing index for reads of SINDIR and the destination (low byte only)
349262306a36Sopenharmony_ci * for any immediate operands passed in jmp, jc, jnc, call instructions.
349362306a36Sopenharmony_ci * Example:
349462306a36Sopenharmony_ci *		mvi	0xFF	call some_routine;
349562306a36Sopenharmony_ci *
349662306a36Sopenharmony_ci *  Will set SINDEX[0] to 0xFF and call the routine "some_routine.
349762306a36Sopenharmony_ci */
349862306a36Sopenharmony_ciregister SINDEX	{
349962306a36Sopenharmony_ci	address			0x0E2
350062306a36Sopenharmony_ci	access_mode	RW
350162306a36Sopenharmony_ci	size		2
350262306a36Sopenharmony_ci	sindex
350362306a36Sopenharmony_ci	dont_generate_debug_code
350462306a36Sopenharmony_ci}
350562306a36Sopenharmony_ci
350662306a36Sopenharmony_ci/*
350762306a36Sopenharmony_ci * Destination Index Register
350862306a36Sopenharmony_ci * Incrementing index for writes to DINDIR.  Can be used as a scratch register.
350962306a36Sopenharmony_ci */
351062306a36Sopenharmony_ciregister DINDEX {
351162306a36Sopenharmony_ci	address			0x0E4
351262306a36Sopenharmony_ci	access_mode	RW
351362306a36Sopenharmony_ci	size		2
351462306a36Sopenharmony_ci	dont_generate_debug_code
351562306a36Sopenharmony_ci}
351662306a36Sopenharmony_ci
351762306a36Sopenharmony_ci/*
351862306a36Sopenharmony_ci * Break Address
351962306a36Sopenharmony_ci * Sequencer instruction breakpoint address address.
352062306a36Sopenharmony_ci */
352162306a36Sopenharmony_ciregister BRKADDR0 {
352262306a36Sopenharmony_ci	address			0x0E6
352362306a36Sopenharmony_ci	access_mode	RW
352462306a36Sopenharmony_ci}
352562306a36Sopenharmony_ci
352662306a36Sopenharmony_ciregister BRKADDR1 {
352762306a36Sopenharmony_ci	address			0x0E6
352862306a36Sopenharmony_ci	access_mode	RW
352962306a36Sopenharmony_ci	field	BRKDIS		0x80	/* Disable Breakpoint */
353062306a36Sopenharmony_ci}
353162306a36Sopenharmony_ci
353262306a36Sopenharmony_ci/*
353362306a36Sopenharmony_ci * All Ones
353462306a36Sopenharmony_ci * All reads to this register return the value 0xFF.
353562306a36Sopenharmony_ci */
353662306a36Sopenharmony_ciregister ALLONES {
353762306a36Sopenharmony_ci	address			0x0E8
353862306a36Sopenharmony_ci	access_mode RO
353962306a36Sopenharmony_ci	allones
354062306a36Sopenharmony_ci	dont_generate_debug_code
354162306a36Sopenharmony_ci}
354262306a36Sopenharmony_ci
354362306a36Sopenharmony_ci/*
354462306a36Sopenharmony_ci * All Zeros
354562306a36Sopenharmony_ci * All reads to this register return the value 0.
354662306a36Sopenharmony_ci */
354762306a36Sopenharmony_ciregister ALLZEROS {
354862306a36Sopenharmony_ci	address			0x0EA
354962306a36Sopenharmony_ci	access_mode RO
355062306a36Sopenharmony_ci	allzeros
355162306a36Sopenharmony_ci	dont_generate_debug_code
355262306a36Sopenharmony_ci}
355362306a36Sopenharmony_ci
355462306a36Sopenharmony_ci/*
355562306a36Sopenharmony_ci * No Destination
355662306a36Sopenharmony_ci * Writes to this register have no effect.
355762306a36Sopenharmony_ci */
355862306a36Sopenharmony_ciregister NONE {
355962306a36Sopenharmony_ci	address			0x0EA
356062306a36Sopenharmony_ci	access_mode WO
356162306a36Sopenharmony_ci	none
356262306a36Sopenharmony_ci	dont_generate_debug_code
356362306a36Sopenharmony_ci}
356462306a36Sopenharmony_ci
356562306a36Sopenharmony_ci/*
356662306a36Sopenharmony_ci * Source Index Indirect
356762306a36Sopenharmony_ci * Reading this register is equivalent to reading (register_base + SINDEX) and
356862306a36Sopenharmony_ci * incrementing SINDEX by 1.
356962306a36Sopenharmony_ci */
357062306a36Sopenharmony_ciregister SINDIR	{
357162306a36Sopenharmony_ci	address			0x0EC
357262306a36Sopenharmony_ci	access_mode RO
357362306a36Sopenharmony_ci	dont_generate_debug_code
357462306a36Sopenharmony_ci}
357562306a36Sopenharmony_ci
357662306a36Sopenharmony_ci/*
357762306a36Sopenharmony_ci * Destination Index Indirect
357862306a36Sopenharmony_ci * Writing this register is equivalent to writing to (register_base + DINDEX)
357962306a36Sopenharmony_ci * and incrementing DINDEX by 1.
358062306a36Sopenharmony_ci */
358162306a36Sopenharmony_ciregister DINDIR	 {
358262306a36Sopenharmony_ci	address			0x0ED
358362306a36Sopenharmony_ci	access_mode WO
358462306a36Sopenharmony_ci	dont_generate_debug_code
358562306a36Sopenharmony_ci}
358662306a36Sopenharmony_ci
358762306a36Sopenharmony_ci/*
358862306a36Sopenharmony_ci * Function One
358962306a36Sopenharmony_ci * 2's complement to bit value conversion.  Write the 2's complement value
359062306a36Sopenharmony_ci * (0-7 only) to the top nibble and retrieve the bit indexed by that value
359162306a36Sopenharmony_ci * on the next read of this register. 
359262306a36Sopenharmony_ci * Example:
359362306a36Sopenharmony_ci *	Write	0x60
359462306a36Sopenharmony_ci *	Read	0x40
359562306a36Sopenharmony_ci */
359662306a36Sopenharmony_ciregister FUNCTION1 {
359762306a36Sopenharmony_ci	address			0x0F0
359862306a36Sopenharmony_ci	access_mode RW
359962306a36Sopenharmony_ci}
360062306a36Sopenharmony_ci
360162306a36Sopenharmony_ci/*
360262306a36Sopenharmony_ci * Stack
360362306a36Sopenharmony_ci * Window into the stack.  Each stack location is 10 bits wide reported
360462306a36Sopenharmony_ci * low byte followed by high byte.  There are 8 stack locations.
360562306a36Sopenharmony_ci */
360662306a36Sopenharmony_ciregister STACK {
360762306a36Sopenharmony_ci	address			0x0F2
360862306a36Sopenharmony_ci	access_mode RW
360962306a36Sopenharmony_ci	dont_generate_debug_code
361062306a36Sopenharmony_ci}
361162306a36Sopenharmony_ci
361262306a36Sopenharmony_ci/*
361362306a36Sopenharmony_ci * Interrupt Vector 1 Address
361462306a36Sopenharmony_ci * Interrupt branch address for SCS SEQ_INT1 mode 0 and 1 interrupts.
361562306a36Sopenharmony_ci */
361662306a36Sopenharmony_ciregister INTVEC1_ADDR {
361762306a36Sopenharmony_ci	address			0x0F4
361862306a36Sopenharmony_ci	access_mode	RW
361962306a36Sopenharmony_ci	size		2
362062306a36Sopenharmony_ci	modes		M_CFG
362162306a36Sopenharmony_ci	count		1
362262306a36Sopenharmony_ci	dont_generate_debug_code
362362306a36Sopenharmony_ci}
362462306a36Sopenharmony_ci
362562306a36Sopenharmony_ci/*
362662306a36Sopenharmony_ci * Current Address
362762306a36Sopenharmony_ci * Address of the SEQRAM instruction currently executing instruction.
362862306a36Sopenharmony_ci */
362962306a36Sopenharmony_ciregister CURADDR {
363062306a36Sopenharmony_ci	address			0x0F4
363162306a36Sopenharmony_ci	access_mode	RW
363262306a36Sopenharmony_ci	size		2
363362306a36Sopenharmony_ci	modes		M_SCSI
363462306a36Sopenharmony_ci	count		2
363562306a36Sopenharmony_ci	dont_generate_debug_code
363662306a36Sopenharmony_ci}
363762306a36Sopenharmony_ci
363862306a36Sopenharmony_ci/*
363962306a36Sopenharmony_ci * Interrupt Vector 2 Address
364062306a36Sopenharmony_ci * Interrupt branch address for HST_SEQ_INT2 interrupts.
364162306a36Sopenharmony_ci */
364262306a36Sopenharmony_ciregister INTVEC2_ADDR {
364362306a36Sopenharmony_ci	address			0x0F6
364462306a36Sopenharmony_ci	access_mode	RW
364562306a36Sopenharmony_ci	size		2
364662306a36Sopenharmony_ci	modes		M_CFG
364762306a36Sopenharmony_ci	count		1
364862306a36Sopenharmony_ci	dont_generate_debug_code
364962306a36Sopenharmony_ci}
365062306a36Sopenharmony_ci
365162306a36Sopenharmony_ci/*
365262306a36Sopenharmony_ci * Last Address
365362306a36Sopenharmony_ci * Address of the SEQRAM instruction executed prior to the current instruction.
365462306a36Sopenharmony_ci */
365562306a36Sopenharmony_ciregister LASTADDR {
365662306a36Sopenharmony_ci	address			0x0F6
365762306a36Sopenharmony_ci	access_mode	RW
365862306a36Sopenharmony_ci	size		2
365962306a36Sopenharmony_ci	modes		M_SCSI
366062306a36Sopenharmony_ci}
366162306a36Sopenharmony_ci
366262306a36Sopenharmony_ciregister AHD_PCI_CONFIG_BASE {
366362306a36Sopenharmony_ci	address			0x100
366462306a36Sopenharmony_ci	access_mode	RW
366562306a36Sopenharmony_ci	size		256
366662306a36Sopenharmony_ci	modes		M_CFG
366762306a36Sopenharmony_ci}
366862306a36Sopenharmony_ci
366962306a36Sopenharmony_ci/* ---------------------- Scratch RAM Offsets ------------------------- */
367062306a36Sopenharmony_ciscratch_ram {
367162306a36Sopenharmony_ci	/* Mode Specific */
367262306a36Sopenharmony_ci	address			0x0A0
367362306a36Sopenharmony_ci	size	8
367462306a36Sopenharmony_ci	modes	0, 1, 2, 3
367562306a36Sopenharmony_ci	REG0 {
367662306a36Sopenharmony_ci		size		2
367762306a36Sopenharmony_ci		dont_generate_debug_code
367862306a36Sopenharmony_ci	}
367962306a36Sopenharmony_ci	REG1 {
368062306a36Sopenharmony_ci		size		2
368162306a36Sopenharmony_ci	}
368262306a36Sopenharmony_ci	REG_ISR {
368362306a36Sopenharmony_ci		size		2
368462306a36Sopenharmony_ci		dont_generate_debug_code
368562306a36Sopenharmony_ci	}
368662306a36Sopenharmony_ci	SG_STATE {
368762306a36Sopenharmony_ci		size		1
368862306a36Sopenharmony_ci		field	SEGS_AVAIL	0x01
368962306a36Sopenharmony_ci		field	LOADING_NEEDED	0x02
369062306a36Sopenharmony_ci		field	FETCH_INPROG	0x04
369162306a36Sopenharmony_ci	}
369262306a36Sopenharmony_ci	/*
369362306a36Sopenharmony_ci	 * Track whether the transfer byte count for
369462306a36Sopenharmony_ci	 * the current data phase is odd.
369562306a36Sopenharmony_ci	 */
369662306a36Sopenharmony_ci	DATA_COUNT_ODD {
369762306a36Sopenharmony_ci		size		1
369862306a36Sopenharmony_ci	}
369962306a36Sopenharmony_ci}
370062306a36Sopenharmony_ci
370162306a36Sopenharmony_ciscratch_ram {
370262306a36Sopenharmony_ci	/* Mode Specific */
370362306a36Sopenharmony_ci	address			0x0F8
370462306a36Sopenharmony_ci	size	8
370562306a36Sopenharmony_ci	modes	0, 1, 2, 3
370662306a36Sopenharmony_ci	LONGJMP_ADDR {
370762306a36Sopenharmony_ci		size		2
370862306a36Sopenharmony_ci		dont_generate_debug_code
370962306a36Sopenharmony_ci	}
371062306a36Sopenharmony_ci	ACCUM_SAVE {
371162306a36Sopenharmony_ci		size		1
371262306a36Sopenharmony_ci		dont_generate_debug_code
371362306a36Sopenharmony_ci	}
371462306a36Sopenharmony_ci}
371562306a36Sopenharmony_ci
371662306a36Sopenharmony_ci
371762306a36Sopenharmony_ciscratch_ram {
371862306a36Sopenharmony_ci	address			0x100
371962306a36Sopenharmony_ci	size	128
372062306a36Sopenharmony_ci	modes	0, 1, 2, 3
372162306a36Sopenharmony_ci	/*
372262306a36Sopenharmony_ci	 * Per "other-id" execution queues.  We use an array of
372362306a36Sopenharmony_ci	 * tail pointers into lists of SCBs sorted by "other-id".
372462306a36Sopenharmony_ci	 * The execution head pointer threads the head SCBs for
372562306a36Sopenharmony_ci	 * each list.
372662306a36Sopenharmony_ci	 */
372762306a36Sopenharmony_ci	WAITING_SCB_TAILS {
372862306a36Sopenharmony_ci		size		32
372962306a36Sopenharmony_ci		dont_generate_debug_code
373062306a36Sopenharmony_ci	}
373162306a36Sopenharmony_ci	WAITING_TID_HEAD {
373262306a36Sopenharmony_ci		size		2
373362306a36Sopenharmony_ci		dont_generate_debug_code
373462306a36Sopenharmony_ci	}
373562306a36Sopenharmony_ci	WAITING_TID_TAIL {
373662306a36Sopenharmony_ci		size		2
373762306a36Sopenharmony_ci		dont_generate_debug_code
373862306a36Sopenharmony_ci	}
373962306a36Sopenharmony_ci	/*
374062306a36Sopenharmony_ci	 * SCBID of the next SCB in the new SCB queue.
374162306a36Sopenharmony_ci	 */
374262306a36Sopenharmony_ci	NEXT_QUEUED_SCB_ADDR {
374362306a36Sopenharmony_ci		size		4
374462306a36Sopenharmony_ci		dont_generate_debug_code
374562306a36Sopenharmony_ci	}
374662306a36Sopenharmony_ci	/*
374762306a36Sopenharmony_ci	 * head of list of SCBs that have
374862306a36Sopenharmony_ci	 * completed but have not been
374962306a36Sopenharmony_ci	 * put into the qoutfifo.
375062306a36Sopenharmony_ci	 */
375162306a36Sopenharmony_ci	COMPLETE_SCB_HEAD {
375262306a36Sopenharmony_ci		size		2
375362306a36Sopenharmony_ci		dont_generate_debug_code
375462306a36Sopenharmony_ci	}
375562306a36Sopenharmony_ci	/*
375662306a36Sopenharmony_ci	 * The list of completed SCBs in
375762306a36Sopenharmony_ci	 * the active DMA.
375862306a36Sopenharmony_ci	 */
375962306a36Sopenharmony_ci	COMPLETE_SCB_DMAINPROG_HEAD {
376062306a36Sopenharmony_ci		size		2
376162306a36Sopenharmony_ci		dont_generate_debug_code
376262306a36Sopenharmony_ci	}
376362306a36Sopenharmony_ci	/*
376462306a36Sopenharmony_ci	 * head of list of SCBs that have
376562306a36Sopenharmony_ci	 * completed but need to be uploaded
376662306a36Sopenharmony_ci	 * to the host prior to being completed.
376762306a36Sopenharmony_ci	 */
376862306a36Sopenharmony_ci	COMPLETE_DMA_SCB_HEAD {
376962306a36Sopenharmony_ci		size		2
377062306a36Sopenharmony_ci		dont_generate_debug_code
377162306a36Sopenharmony_ci	}
377262306a36Sopenharmony_ci	/*
377362306a36Sopenharmony_ci	 * tail of list of SCBs that have
377462306a36Sopenharmony_ci	 * completed but need to be uploaded
377562306a36Sopenharmony_ci	 * to the host prior to being completed.
377662306a36Sopenharmony_ci	 */
377762306a36Sopenharmony_ci	COMPLETE_DMA_SCB_TAIL {
377862306a36Sopenharmony_ci		size		2
377962306a36Sopenharmony_ci		dont_generate_debug_code
378062306a36Sopenharmony_ci	}
378162306a36Sopenharmony_ci	/*
378262306a36Sopenharmony_ci	 * head of list of SCBs that have
378362306a36Sopenharmony_ci	 * been uploaded to the host, but cannot
378462306a36Sopenharmony_ci	 * be completed until the QFREEZE is in
378562306a36Sopenharmony_ci	 * full effect (i.e. no selections pending).
378662306a36Sopenharmony_ci	 */
378762306a36Sopenharmony_ci	COMPLETE_ON_QFREEZE_HEAD {
378862306a36Sopenharmony_ci		size		2
378962306a36Sopenharmony_ci		dont_generate_debug_code
379062306a36Sopenharmony_ci	}
379162306a36Sopenharmony_ci	/*
379262306a36Sopenharmony_ci	 * Counting semaphore to prevent new select-outs
379362306a36Sopenharmony_ci	 * The queue is frozen so long as the sequencer
379462306a36Sopenharmony_ci	 * and kernel freeze counts differ.
379562306a36Sopenharmony_ci	 */
379662306a36Sopenharmony_ci	QFREEZE_COUNT {
379762306a36Sopenharmony_ci		size		2
379862306a36Sopenharmony_ci	}
379962306a36Sopenharmony_ci	KERNEL_QFREEZE_COUNT {
380062306a36Sopenharmony_ci		size		2
380162306a36Sopenharmony_ci	}
380262306a36Sopenharmony_ci	/*
380362306a36Sopenharmony_ci	 * Mode to restore on legacy idle loop exit.
380462306a36Sopenharmony_ci	 */
380562306a36Sopenharmony_ci	SAVED_MODE {
380662306a36Sopenharmony_ci		size		1
380762306a36Sopenharmony_ci	}
380862306a36Sopenharmony_ci	/*
380962306a36Sopenharmony_ci	 * Single byte buffer used to designate the type or message
381062306a36Sopenharmony_ci	 * to send to a target.
381162306a36Sopenharmony_ci	 */
381262306a36Sopenharmony_ci	MSG_OUT {
381362306a36Sopenharmony_ci		size		1
381462306a36Sopenharmony_ci		dont_generate_debug_code
381562306a36Sopenharmony_ci	}
381662306a36Sopenharmony_ci	/* Parameters for DMA Logic */
381762306a36Sopenharmony_ci	DMAPARAMS {
381862306a36Sopenharmony_ci		size		1
381962306a36Sopenharmony_ci		count		8
382062306a36Sopenharmony_ci		field	PRELOADEN	0x80
382162306a36Sopenharmony_ci		field	WIDEODD		0x40
382262306a36Sopenharmony_ci		field	SCSIEN		0x20
382362306a36Sopenharmony_ci		field	SDMAEN		0x10
382462306a36Sopenharmony_ci		field	SDMAENACK	0x10
382562306a36Sopenharmony_ci		field	HDMAEN		0x08
382662306a36Sopenharmony_ci		field	HDMAENACK	0x08
382762306a36Sopenharmony_ci		field	DIRECTION	0x04	/* Set indicates PCI->SCSI */
382862306a36Sopenharmony_ci		field	FIFOFLUSH	0x02
382962306a36Sopenharmony_ci		field	FIFORESET	0x01
383062306a36Sopenharmony_ci		dont_generate_debug_code
383162306a36Sopenharmony_ci	}
383262306a36Sopenharmony_ci	SEQ_FLAGS {
383362306a36Sopenharmony_ci		size		1
383462306a36Sopenharmony_ci		field	NOT_IDENTIFIED		0x80
383562306a36Sopenharmony_ci		field	NO_CDB_SENT		0x40
383662306a36Sopenharmony_ci		field	TARGET_CMD_IS_TAGGED	0x40
383762306a36Sopenharmony_ci		field	DPHASE			0x20
383862306a36Sopenharmony_ci		/* Target flags */
383962306a36Sopenharmony_ci		field	TARG_CMD_PENDING	0x10
384062306a36Sopenharmony_ci		field	CMDPHASE_PENDING	0x08
384162306a36Sopenharmony_ci		field	DPHASE_PENDING		0x04
384262306a36Sopenharmony_ci		field	SPHASE_PENDING		0x02
384362306a36Sopenharmony_ci		field	NO_DISCONNECT		0x01
384462306a36Sopenharmony_ci	}
384562306a36Sopenharmony_ci	/*
384662306a36Sopenharmony_ci	 * Temporary storage for the
384762306a36Sopenharmony_ci	 * target/channel/lun of a
384862306a36Sopenharmony_ci	 * reconnecting target
384962306a36Sopenharmony_ci	 */
385062306a36Sopenharmony_ci	SAVED_SCSIID {
385162306a36Sopenharmony_ci		size		1
385262306a36Sopenharmony_ci		dont_generate_debug_code
385362306a36Sopenharmony_ci	}
385462306a36Sopenharmony_ci	SAVED_LUN {
385562306a36Sopenharmony_ci		size		1
385662306a36Sopenharmony_ci		dont_generate_debug_code
385762306a36Sopenharmony_ci	}
385862306a36Sopenharmony_ci	/*
385962306a36Sopenharmony_ci	 * The last bus phase as seen by the sequencer. 
386062306a36Sopenharmony_ci	 */
386162306a36Sopenharmony_ci	LASTPHASE {
386262306a36Sopenharmony_ci		size		1
386362306a36Sopenharmony_ci		field	CDI		0x80
386462306a36Sopenharmony_ci		field	IOI		0x40
386562306a36Sopenharmony_ci		field	MSGI		0x20
386662306a36Sopenharmony_ci		field	P_BUSFREE	0x01
386762306a36Sopenharmony_ci		enum	PHASE_MASK  CDO|IOO|MSGO {
386862306a36Sopenharmony_ci			P_DATAOUT	0x0,
386962306a36Sopenharmony_ci			P_DATAIN	IOO,
387062306a36Sopenharmony_ci			P_DATAOUT_DT	P_DATAOUT|MSGO,
387162306a36Sopenharmony_ci			P_DATAIN_DT	P_DATAIN|MSGO,
387262306a36Sopenharmony_ci			P_COMMAND	CDO,
387362306a36Sopenharmony_ci			P_MESGOUT	CDO|MSGO,
387462306a36Sopenharmony_ci			P_STATUS	CDO|IOO,
387562306a36Sopenharmony_ci			P_MESGIN	CDO|IOO|MSGO
387662306a36Sopenharmony_ci		}
387762306a36Sopenharmony_ci	}
387862306a36Sopenharmony_ci	/*
387962306a36Sopenharmony_ci	 * Value to "or" into the SCBPTR[1] value to
388062306a36Sopenharmony_ci	 * indicate that an entry in the QINFIFO is valid.
388162306a36Sopenharmony_ci	 */
388262306a36Sopenharmony_ci	QOUTFIFO_ENTRY_VALID_TAG {
388362306a36Sopenharmony_ci		size		1
388462306a36Sopenharmony_ci		dont_generate_debug_code
388562306a36Sopenharmony_ci	}
388662306a36Sopenharmony_ci	/*
388762306a36Sopenharmony_ci	 * Kernel and sequencer offsets into the queue of
388862306a36Sopenharmony_ci	 * incoming target mode command descriptors.  The
388962306a36Sopenharmony_ci	 * queue is full when the KERNEL_TQINPOS == TQINPOS.
389062306a36Sopenharmony_ci	 */
389162306a36Sopenharmony_ci	KERNEL_TQINPOS {
389262306a36Sopenharmony_ci		size		1
389362306a36Sopenharmony_ci		count		1
389462306a36Sopenharmony_ci		dont_generate_debug_code
389562306a36Sopenharmony_ci	}
389662306a36Sopenharmony_ci	TQINPOS {
389762306a36Sopenharmony_ci		size		1
389862306a36Sopenharmony_ci		count		8
389962306a36Sopenharmony_ci		dont_generate_debug_code
390062306a36Sopenharmony_ci	}
390162306a36Sopenharmony_ci	/*
390262306a36Sopenharmony_ci	 * Base address of our shared data with the kernel driver in host
390362306a36Sopenharmony_ci	 * memory.  This includes the qoutfifo and target mode
390462306a36Sopenharmony_ci	 * incoming command queue.
390562306a36Sopenharmony_ci	 */
390662306a36Sopenharmony_ci	SHARED_DATA_ADDR {
390762306a36Sopenharmony_ci		size		4
390862306a36Sopenharmony_ci		dont_generate_debug_code
390962306a36Sopenharmony_ci	}
391062306a36Sopenharmony_ci	/*
391162306a36Sopenharmony_ci	 * Pointer to location in host memory for next
391262306a36Sopenharmony_ci	 * position in the qoutfifo.
391362306a36Sopenharmony_ci	 */
391462306a36Sopenharmony_ci	QOUTFIFO_NEXT_ADDR {
391562306a36Sopenharmony_ci		size		4
391662306a36Sopenharmony_ci		dont_generate_debug_code
391762306a36Sopenharmony_ci	}
391862306a36Sopenharmony_ci	ARG_1 {
391962306a36Sopenharmony_ci		size		1
392062306a36Sopenharmony_ci		mask	SEND_MSG		0x80
392162306a36Sopenharmony_ci		mask	SEND_SENSE		0x40
392262306a36Sopenharmony_ci		mask	SEND_REJ		0x20
392362306a36Sopenharmony_ci		mask	MSGOUT_PHASEMIS		0x10
392462306a36Sopenharmony_ci		mask	EXIT_MSG_LOOP		0x08
392562306a36Sopenharmony_ci		mask	CONT_MSG_LOOP_WRITE	0x04
392662306a36Sopenharmony_ci		mask	CONT_MSG_LOOP_READ	0x03
392762306a36Sopenharmony_ci		mask	CONT_MSG_LOOP_TARG	0x02
392862306a36Sopenharmony_ci		alias	RETURN_1
392962306a36Sopenharmony_ci		dont_generate_debug_code
393062306a36Sopenharmony_ci	}
393162306a36Sopenharmony_ci	ARG_2 {
393262306a36Sopenharmony_ci		size		1
393362306a36Sopenharmony_ci		count		1
393462306a36Sopenharmony_ci		alias	RETURN_2
393562306a36Sopenharmony_ci		dont_generate_debug_code
393662306a36Sopenharmony_ci	}
393762306a36Sopenharmony_ci
393862306a36Sopenharmony_ci	/*
393962306a36Sopenharmony_ci	 * Snapshot of MSG_OUT taken after each message is sent.
394062306a36Sopenharmony_ci	 */
394162306a36Sopenharmony_ci	LAST_MSG {
394262306a36Sopenharmony_ci		size		1
394362306a36Sopenharmony_ci		dont_generate_debug_code
394462306a36Sopenharmony_ci	}
394562306a36Sopenharmony_ci
394662306a36Sopenharmony_ci	/*
394762306a36Sopenharmony_ci	 * Sequences the kernel driver has okayed for us.  This allows
394862306a36Sopenharmony_ci	 * the driver to do things like prevent initiator or target
394962306a36Sopenharmony_ci	 * operations.
395062306a36Sopenharmony_ci	 */
395162306a36Sopenharmony_ci	SCSISEQ_TEMPLATE {
395262306a36Sopenharmony_ci		size		1
395362306a36Sopenharmony_ci		count		7
395462306a36Sopenharmony_ci		field	MANUALCTL	0x40
395562306a36Sopenharmony_ci		field	ENSELI		0x20
395662306a36Sopenharmony_ci		field	ENRSELI		0x10
395762306a36Sopenharmony_ci		field	MANUALP		0x0C
395862306a36Sopenharmony_ci		field	ENAUTOATNP	0x02
395962306a36Sopenharmony_ci		field	ALTSTIM		0x01
396062306a36Sopenharmony_ci		dont_generate_debug_code
396162306a36Sopenharmony_ci	}
396262306a36Sopenharmony_ci
396362306a36Sopenharmony_ci	/*
396462306a36Sopenharmony_ci	 * The initiator specified tag for this target mode transaction.
396562306a36Sopenharmony_ci	 */
396662306a36Sopenharmony_ci	INITIATOR_TAG {
396762306a36Sopenharmony_ci		size		1
396862306a36Sopenharmony_ci		count		1
396962306a36Sopenharmony_ci		dont_generate_debug_code
397062306a36Sopenharmony_ci	}
397162306a36Sopenharmony_ci
397262306a36Sopenharmony_ci	SEQ_FLAGS2 {
397362306a36Sopenharmony_ci		size		1
397462306a36Sopenharmony_ci		field	PENDING_MK_MESSAGE	0x01
397562306a36Sopenharmony_ci		field	TARGET_MSG_PENDING	0x02
397662306a36Sopenharmony_ci		field	SELECTOUT_QFROZEN	0x04
397762306a36Sopenharmony_ci	}
397862306a36Sopenharmony_ci
397962306a36Sopenharmony_ci	ALLOCFIFO_SCBPTR {
398062306a36Sopenharmony_ci		size		2
398162306a36Sopenharmony_ci		dont_generate_debug_code
398262306a36Sopenharmony_ci	}
398362306a36Sopenharmony_ci
398462306a36Sopenharmony_ci	/*
398562306a36Sopenharmony_ci	 * The maximum amount of time to wait, when interrupt coalescing
398662306a36Sopenharmony_ci	 * is enabled, before issuing a CMDCMPLT interrupt for a completed
398762306a36Sopenharmony_ci	 * command.
398862306a36Sopenharmony_ci	 */
398962306a36Sopenharmony_ci	INT_COALESCING_TIMER {
399062306a36Sopenharmony_ci		size		2
399162306a36Sopenharmony_ci		dont_generate_debug_code
399262306a36Sopenharmony_ci	}
399362306a36Sopenharmony_ci
399462306a36Sopenharmony_ci	/*
399562306a36Sopenharmony_ci	 * The maximum number of commands to coalesce into a single interrupt.
399662306a36Sopenharmony_ci	 * Actually the 2's complement of that value to simplify sequencer
399762306a36Sopenharmony_ci	 * code.
399862306a36Sopenharmony_ci	 */
399962306a36Sopenharmony_ci	INT_COALESCING_MAXCMDS {
400062306a36Sopenharmony_ci		size		1
400162306a36Sopenharmony_ci		dont_generate_debug_code
400262306a36Sopenharmony_ci	}
400362306a36Sopenharmony_ci
400462306a36Sopenharmony_ci	/*
400562306a36Sopenharmony_ci	 * The minimum number of commands still outstanding required
400662306a36Sopenharmony_ci	 * to continue coalescing (2's complement of value).
400762306a36Sopenharmony_ci	 */
400862306a36Sopenharmony_ci	INT_COALESCING_MINCMDS {
400962306a36Sopenharmony_ci		size		1
401062306a36Sopenharmony_ci		dont_generate_debug_code
401162306a36Sopenharmony_ci	}
401262306a36Sopenharmony_ci
401362306a36Sopenharmony_ci	/*
401462306a36Sopenharmony_ci	 * Number of commands "in-flight".
401562306a36Sopenharmony_ci	 */
401662306a36Sopenharmony_ci	CMDS_PENDING {
401762306a36Sopenharmony_ci		size		2
401862306a36Sopenharmony_ci		dont_generate_debug_code
401962306a36Sopenharmony_ci	}
402062306a36Sopenharmony_ci
402162306a36Sopenharmony_ci	/*
402262306a36Sopenharmony_ci	 * The count of commands that have been coalesced.
402362306a36Sopenharmony_ci	 */
402462306a36Sopenharmony_ci	INT_COALESCING_CMDCOUNT {
402562306a36Sopenharmony_ci		size		1
402662306a36Sopenharmony_ci		dont_generate_debug_code
402762306a36Sopenharmony_ci	}
402862306a36Sopenharmony_ci
402962306a36Sopenharmony_ci	/*
403062306a36Sopenharmony_ci	 * Since the HS_MAIBOX is self clearing, copy its contents to
403162306a36Sopenharmony_ci	 * this position in scratch ram every time it changes.
403262306a36Sopenharmony_ci	 */
403362306a36Sopenharmony_ci	LOCAL_HS_MAILBOX {
403462306a36Sopenharmony_ci		size		1
403562306a36Sopenharmony_ci		dont_generate_debug_code
403662306a36Sopenharmony_ci	}
403762306a36Sopenharmony_ci	/*
403862306a36Sopenharmony_ci	 * Target-mode CDB type to CDB length table used
403962306a36Sopenharmony_ci	 * in non-packetized operation.
404062306a36Sopenharmony_ci	 */
404162306a36Sopenharmony_ci	CMDSIZE_TABLE {
404262306a36Sopenharmony_ci		size		8
404362306a36Sopenharmony_ci		count		8
404462306a36Sopenharmony_ci		dont_generate_debug_code
404562306a36Sopenharmony_ci	}
404662306a36Sopenharmony_ci	/*
404762306a36Sopenharmony_ci	 * When an SCB with the MK_MESSAGE flag is
404862306a36Sopenharmony_ci	 * queued to the controller, it cannot enter
404962306a36Sopenharmony_ci	 * the waiting for selection list until the
405062306a36Sopenharmony_ci	 * selections for any previously queued
405162306a36Sopenharmony_ci	 * commands to that target complete.  During
405262306a36Sopenharmony_ci	 * the wait, the MK_MESSAGE SCB is queued
405362306a36Sopenharmony_ci	 * here.
405462306a36Sopenharmony_ci	 */
405562306a36Sopenharmony_ci	MK_MESSAGE_SCB {
405662306a36Sopenharmony_ci		size		2
405762306a36Sopenharmony_ci	}
405862306a36Sopenharmony_ci	/*
405962306a36Sopenharmony_ci	 * Saved SCSIID of MK_MESSAGE_SCB to avoid
406062306a36Sopenharmony_ci	 * an extra SCBPTR operation when deciding
406162306a36Sopenharmony_ci	 * if the MK_MESSAGE_SCB can be run.
406262306a36Sopenharmony_ci	 */
406362306a36Sopenharmony_ci	MK_MESSAGE_SCSIID {
406462306a36Sopenharmony_ci		size		1
406562306a36Sopenharmony_ci	}
406662306a36Sopenharmony_ci}
406762306a36Sopenharmony_ci
406862306a36Sopenharmony_ci/************************* Hardware SCB Definition ****************************/
406962306a36Sopenharmony_ciscb {
407062306a36Sopenharmony_ci	address			0x180
407162306a36Sopenharmony_ci	size		64
407262306a36Sopenharmony_ci	modes		0, 1, 2, 3
407362306a36Sopenharmony_ci	SCB_RESIDUAL_DATACNT {
407462306a36Sopenharmony_ci		size	4
407562306a36Sopenharmony_ci		alias	SCB_CDB_STORE
407662306a36Sopenharmony_ci		alias	SCB_HOST_CDB_PTR
407762306a36Sopenharmony_ci		dont_generate_debug_code
407862306a36Sopenharmony_ci	}
407962306a36Sopenharmony_ci	SCB_RESIDUAL_SGPTR {
408062306a36Sopenharmony_ci		size	4
408162306a36Sopenharmony_ci		field	SG_ADDR_MASK		0xf8	/* In the last byte */
408262306a36Sopenharmony_ci		field	SG_OVERRUN_RESID	0x02	/* In the first byte */
408362306a36Sopenharmony_ci		field	SG_LIST_NULL		0x01	/* In the first byte */
408462306a36Sopenharmony_ci		dont_generate_debug_code
408562306a36Sopenharmony_ci	}
408662306a36Sopenharmony_ci	SCB_SCSI_STATUS {
408762306a36Sopenharmony_ci		size	1
408862306a36Sopenharmony_ci		alias	SCB_HOST_CDB_LEN
408962306a36Sopenharmony_ci		dont_generate_debug_code
409062306a36Sopenharmony_ci	}
409162306a36Sopenharmony_ci	SCB_TARGET_PHASES {
409262306a36Sopenharmony_ci		size	1
409362306a36Sopenharmony_ci		dont_generate_debug_code
409462306a36Sopenharmony_ci	}
409562306a36Sopenharmony_ci	SCB_TARGET_DATA_DIR {
409662306a36Sopenharmony_ci		size	1
409762306a36Sopenharmony_ci		dont_generate_debug_code
409862306a36Sopenharmony_ci	}
409962306a36Sopenharmony_ci	SCB_TARGET_ITAG {
410062306a36Sopenharmony_ci		size	1
410162306a36Sopenharmony_ci		dont_generate_debug_code
410262306a36Sopenharmony_ci	}
410362306a36Sopenharmony_ci	SCB_SENSE_BUSADDR {
410462306a36Sopenharmony_ci		/*
410562306a36Sopenharmony_ci		 * Only valid if CDB length is less than 13 bytes or
410662306a36Sopenharmony_ci		 * we are using a CDB pointer.  Otherwise contains
410762306a36Sopenharmony_ci		 * the last 4 bytes of embedded cdb information.
410862306a36Sopenharmony_ci		 */
410962306a36Sopenharmony_ci		size	4
411062306a36Sopenharmony_ci		alias	SCB_NEXT_COMPLETE
411162306a36Sopenharmony_ci		dont_generate_debug_code
411262306a36Sopenharmony_ci	}
411362306a36Sopenharmony_ci	SCB_TAG {
411462306a36Sopenharmony_ci		alias	SCB_FIFO_USE_COUNT
411562306a36Sopenharmony_ci		size	2
411662306a36Sopenharmony_ci		dont_generate_debug_code
411762306a36Sopenharmony_ci	}
411862306a36Sopenharmony_ci	SCB_CONTROL {
411962306a36Sopenharmony_ci		size	1
412062306a36Sopenharmony_ci		field	TARGET_SCB	0x80
412162306a36Sopenharmony_ci		field	DISCENB		0x40
412262306a36Sopenharmony_ci		field	TAG_ENB		0x20
412362306a36Sopenharmony_ci		field	MK_MESSAGE	0x10
412462306a36Sopenharmony_ci		field	STATUS_RCVD	0x08
412562306a36Sopenharmony_ci		field	DISCONNECTED	0x04
412662306a36Sopenharmony_ci		field	SCB_TAG_TYPE	0x03
412762306a36Sopenharmony_ci	}
412862306a36Sopenharmony_ci	SCB_SCSIID {
412962306a36Sopenharmony_ci		size	1
413062306a36Sopenharmony_ci		field	TID	0xF0
413162306a36Sopenharmony_ci		field	OID	0x0F
413262306a36Sopenharmony_ci	}
413362306a36Sopenharmony_ci	SCB_LUN {
413462306a36Sopenharmony_ci		size	1
413562306a36Sopenharmony_ci		field	LID	0xff
413662306a36Sopenharmony_ci		dont_generate_debug_code
413762306a36Sopenharmony_ci	}
413862306a36Sopenharmony_ci	SCB_TASK_ATTRIBUTE {
413962306a36Sopenharmony_ci		size	1
414062306a36Sopenharmony_ci		/*
414162306a36Sopenharmony_ci		 * Overloaded field for non-packetized 
414262306a36Sopenharmony_ci		 * ignore wide residue message handling.
414362306a36Sopenharmony_ci		 */
414462306a36Sopenharmony_ci		field	SCB_XFERLEN_ODD	0x01
414562306a36Sopenharmony_ci		dont_generate_debug_code
414662306a36Sopenharmony_ci	}
414762306a36Sopenharmony_ci	SCB_CDB_LEN {
414862306a36Sopenharmony_ci		size	1
414962306a36Sopenharmony_ci		field	SCB_CDB_LEN_PTR	0x80	/* CDB in host memory */
415062306a36Sopenharmony_ci		dont_generate_debug_code
415162306a36Sopenharmony_ci	}
415262306a36Sopenharmony_ci	SCB_TASK_MANAGEMENT {
415362306a36Sopenharmony_ci		size	1
415462306a36Sopenharmony_ci		dont_generate_debug_code
415562306a36Sopenharmony_ci	}
415662306a36Sopenharmony_ci	SCB_DATAPTR {
415762306a36Sopenharmony_ci		size	8
415862306a36Sopenharmony_ci		dont_generate_debug_code
415962306a36Sopenharmony_ci	}
416062306a36Sopenharmony_ci	SCB_DATACNT {
416162306a36Sopenharmony_ci		/*
416262306a36Sopenharmony_ci		 * The last byte is really the high address bits for
416362306a36Sopenharmony_ci		 * the data address.
416462306a36Sopenharmony_ci		 */
416562306a36Sopenharmony_ci		size	4
416662306a36Sopenharmony_ci		field	SG_LAST_SEG		0x80	/* In the fourth byte */
416762306a36Sopenharmony_ci		field	SG_HIGH_ADDR_BITS	0x7F	/* In the fourth byte */
416862306a36Sopenharmony_ci		dont_generate_debug_code
416962306a36Sopenharmony_ci	}
417062306a36Sopenharmony_ci	SCB_SGPTR {
417162306a36Sopenharmony_ci		size	4
417262306a36Sopenharmony_ci		field	SG_STATUS_VALID	0x04	/* In the first byte */
417362306a36Sopenharmony_ci		field	SG_FULL_RESID	0x02	/* In the first byte */
417462306a36Sopenharmony_ci		field	SG_LIST_NULL	0x01	/* In the first byte */
417562306a36Sopenharmony_ci		dont_generate_debug_code
417662306a36Sopenharmony_ci	}
417762306a36Sopenharmony_ci	SCB_BUSADDR {
417862306a36Sopenharmony_ci		size	4
417962306a36Sopenharmony_ci		dont_generate_debug_code
418062306a36Sopenharmony_ci	}
418162306a36Sopenharmony_ci	SCB_NEXT {
418262306a36Sopenharmony_ci		alias	SCB_NEXT_SCB_BUSADDR
418362306a36Sopenharmony_ci		size	2
418462306a36Sopenharmony_ci		dont_generate_debug_code
418562306a36Sopenharmony_ci	}
418662306a36Sopenharmony_ci	SCB_NEXT2 {
418762306a36Sopenharmony_ci		size	2
418862306a36Sopenharmony_ci		dont_generate_debug_code
418962306a36Sopenharmony_ci	}
419062306a36Sopenharmony_ci	SCB_SPARE {
419162306a36Sopenharmony_ci		size	8
419262306a36Sopenharmony_ci		alias	SCB_PKT_LUN
419362306a36Sopenharmony_ci	}
419462306a36Sopenharmony_ci	SCB_DISCONNECTED_LISTS {
419562306a36Sopenharmony_ci		size	8
419662306a36Sopenharmony_ci		dont_generate_debug_code
419762306a36Sopenharmony_ci	}
419862306a36Sopenharmony_ci}
419962306a36Sopenharmony_ci
420062306a36Sopenharmony_ci/*********************************** Constants ********************************/
420162306a36Sopenharmony_ciconst MK_MESSAGE_BIT_OFFSET	4
420262306a36Sopenharmony_ciconst TID_SHIFT		4
420362306a36Sopenharmony_ciconst TARGET_CMD_CMPLT	0xfe
420462306a36Sopenharmony_ciconst INVALID_ADDR	0x80
420562306a36Sopenharmony_ci#define SCB_LIST_NULL	0xff
420662306a36Sopenharmony_ci#define QOUTFIFO_ENTRY_VALID_TOGGLE	0x80
420762306a36Sopenharmony_ci
420862306a36Sopenharmony_ciconst CCSGADDR_MAX	0x80
420962306a36Sopenharmony_ciconst CCSCBADDR_MAX	0x80
421062306a36Sopenharmony_ciconst CCSGRAM_MAXSEGS	16
421162306a36Sopenharmony_ci
421262306a36Sopenharmony_ci/* Selection Timeout Timer Constants */
421362306a36Sopenharmony_ciconst STIMESEL_SHIFT	3
421462306a36Sopenharmony_ciconst STIMESEL_MIN	0x18
421562306a36Sopenharmony_ciconst STIMESEL_BUG_ADJ	0x8
421662306a36Sopenharmony_ci
421762306a36Sopenharmony_ci/* WDTR Message values */
421862306a36Sopenharmony_ciconst BUS_8_BIT			0x00
421962306a36Sopenharmony_ciconst BUS_16_BIT		0x01
422062306a36Sopenharmony_ciconst BUS_32_BIT		0x02
422162306a36Sopenharmony_ci
422262306a36Sopenharmony_ci/* Offset maximums */
422362306a36Sopenharmony_ciconst MAX_OFFSET		0xfe
422462306a36Sopenharmony_ciconst MAX_OFFSET_PACED		0xfe
422562306a36Sopenharmony_ciconst MAX_OFFSET_PACED_BUG	0x7f
422662306a36Sopenharmony_ci/*
422762306a36Sopenharmony_ci * Some 160 devices incorrectly accept 0xfe as a
422862306a36Sopenharmony_ci * sync offset, but will overrun this value.  Limit
422962306a36Sopenharmony_ci * to 0x7f for speed lower than U320 which will
423062306a36Sopenharmony_ci * avoid the persistent sync offset overruns.
423162306a36Sopenharmony_ci */
423262306a36Sopenharmony_ciconst MAX_OFFSET_NON_PACED	0x7f
423362306a36Sopenharmony_ciconst HOST_MSG			0xff
423462306a36Sopenharmony_ci
423562306a36Sopenharmony_ci/*
423662306a36Sopenharmony_ci * The size of our sense buffers.
423762306a36Sopenharmony_ci * Sense buffer mapping can be handled in either of two ways.
423862306a36Sopenharmony_ci * The first is to allocate a dmamap for each transaction.
423962306a36Sopenharmony_ci * Depending on the architecture, dmamaps can be costly. The
424062306a36Sopenharmony_ci * alternative is to statically map the buffers in much the same
424162306a36Sopenharmony_ci * way we handle our scatter gather lists.  The driver implements
424262306a36Sopenharmony_ci * the later.
424362306a36Sopenharmony_ci */
424462306a36Sopenharmony_ciconst AHD_SENSE_BUFSIZE		256
424562306a36Sopenharmony_ci
424662306a36Sopenharmony_ci/* Target mode command processing constants */
424762306a36Sopenharmony_ciconst CMD_GROUP_CODE_SHIFT	0x05
424862306a36Sopenharmony_ci
424962306a36Sopenharmony_ciconst STATUS_BUSY		0x08
425062306a36Sopenharmony_ciconst STATUS_QUEUE_FULL		0x28
425162306a36Sopenharmony_ciconst STATUS_PKT_SENSE		0xFF
425262306a36Sopenharmony_ciconst TARGET_DATA_IN		1
425362306a36Sopenharmony_ci
425462306a36Sopenharmony_ciconst SCB_TRANSFER_SIZE_FULL_LUN	56
425562306a36Sopenharmony_ciconst SCB_TRANSFER_SIZE_1BYTE_LUN	48
425662306a36Sopenharmony_ci/* PKT_OVERRUN_BUFSIZE must be a multiple of 256 less than 64K */
425762306a36Sopenharmony_ciconst PKT_OVERRUN_BUFSIZE	512
425862306a36Sopenharmony_ci
425962306a36Sopenharmony_ci/*
426062306a36Sopenharmony_ci * Timer parameters.
426162306a36Sopenharmony_ci */
426262306a36Sopenharmony_ciconst AHD_TIMER_US_PER_TICK	25
426362306a36Sopenharmony_ciconst AHD_TIMER_MAX_TICKS	0xFFFF
426462306a36Sopenharmony_ciconst AHD_TIMER_MAX_US		(AHD_TIMER_MAX_TICKS * AHD_TIMER_US_PER_TICK)
426562306a36Sopenharmony_ci
426662306a36Sopenharmony_ci/*
426762306a36Sopenharmony_ci * Downloaded (kernel inserted) constants
426862306a36Sopenharmony_ci */
426962306a36Sopenharmony_ciconst SG_PREFETCH_CNT download
427062306a36Sopenharmony_ciconst SG_PREFETCH_CNT_LIMIT download
427162306a36Sopenharmony_ciconst SG_PREFETCH_ALIGN_MASK download
427262306a36Sopenharmony_ciconst SG_PREFETCH_ADDR_MASK download
427362306a36Sopenharmony_ciconst SG_SIZEOF download
427462306a36Sopenharmony_ciconst PKT_OVERRUN_BUFOFFSET download
427562306a36Sopenharmony_ciconst SCB_TRANSFER_SIZE	download
427662306a36Sopenharmony_ciconst CACHELINE_MASK download
427762306a36Sopenharmony_ci
427862306a36Sopenharmony_ci/*
427962306a36Sopenharmony_ci * BIOS SCB offsets
428062306a36Sopenharmony_ci */
428162306a36Sopenharmony_ciconst NVRAM_SCB_OFFSET	0x2C
4282