162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Aic94xx SAS/SATA driver hardware registers definitions.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2004 Adaptec, Inc.  All rights reserved.
662306a36Sopenharmony_ci * Copyright (C) 2004 David Chaw <david_chaw@adaptec.com>
762306a36Sopenharmony_ci * Copyright (C) 2005 Luben Tuikov <luben_tuikov@adaptec.com>
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Luben Tuikov: Some register value updates to make it work with the window
1062306a36Sopenharmony_ci * agnostic register r/w functions.  Some register corrections, sizes,
1162306a36Sopenharmony_ci * etc.
1262306a36Sopenharmony_ci *
1362306a36Sopenharmony_ci * $Id: //depot/aic94xx/aic94xx_reg_def.h#27 $
1462306a36Sopenharmony_ci */
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#ifndef _ADP94XX_REG_DEF_H_
1762306a36Sopenharmony_ci#define _ADP94XX_REG_DEF_H_
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci/*
2062306a36Sopenharmony_ci * Common definitions.
2162306a36Sopenharmony_ci */
2262306a36Sopenharmony_ci#define CSEQ_MODE_PAGE_SIZE	0x200		/* CSEQ mode page size */
2362306a36Sopenharmony_ci#define LmSEQ_MODE_PAGE_SIZE	0x200		/* LmSEQ mode page size */
2462306a36Sopenharmony_ci#define LmSEQ_HOST_REG_SIZE   	0x4000		/* LmSEQ Host Register size */
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci/********************* COM_SAS registers definition *************************/
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci/* The base is REG_BASE_ADDR, defined in aic94xx_reg.h.
2962306a36Sopenharmony_ci */
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci/*
3262306a36Sopenharmony_ci * CHIM Registers, Address Range : (0x00-0xFF)
3362306a36Sopenharmony_ci */
3462306a36Sopenharmony_ci#define COMBIST		(REG_BASE_ADDR + 0x00)
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci/* bits 31:24 */
3762306a36Sopenharmony_ci#define		L7BLKRST		0x80000000
3862306a36Sopenharmony_ci#define		L6BLKRST		0x40000000
3962306a36Sopenharmony_ci#define		L5BLKRST		0x20000000
4062306a36Sopenharmony_ci#define		L4BLKRST		0x10000000
4162306a36Sopenharmony_ci#define		L3BLKRST		0x08000000
4262306a36Sopenharmony_ci#define		L2BLKRST		0x04000000
4362306a36Sopenharmony_ci#define		L1BLKRST		0x02000000
4462306a36Sopenharmony_ci#define		L0BLKRST		0x01000000
4562306a36Sopenharmony_ci#define		LmBLKRST		0xFF000000
4662306a36Sopenharmony_ci#define LmBLKRST_COMBIST(phyid)		(1 << (24 + phyid))
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci#define		OCMBLKRST		0x00400000
4962306a36Sopenharmony_ci#define		CTXMEMBLKRST		0x00200000
5062306a36Sopenharmony_ci#define		CSEQBLKRST		0x00100000
5162306a36Sopenharmony_ci#define		EXSIBLKRST		0x00040000
5262306a36Sopenharmony_ci#define		DPIBLKRST		0x00020000
5362306a36Sopenharmony_ci#define		DFIFBLKRST		0x00010000
5462306a36Sopenharmony_ci#define		HARDRST			0x00000200
5562306a36Sopenharmony_ci#define		COMBLKRST		0x00000100
5662306a36Sopenharmony_ci#define		FRCDFPERR		0x00000080
5762306a36Sopenharmony_ci#define		FRCCIOPERR		0x00000020
5862306a36Sopenharmony_ci#define		FRCBISTERR		0x00000010
5962306a36Sopenharmony_ci#define		COMBISTEN		0x00000004
6062306a36Sopenharmony_ci#define		COMBISTDONE		0x00000002	/* ro */
6162306a36Sopenharmony_ci#define 	COMBISTFAIL		0x00000001	/* ro */
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#define COMSTAT		(REG_BASE_ADDR + 0x04)
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci#define		REQMBXREAD		0x00000040
6662306a36Sopenharmony_ci#define 	RSPMBXAVAIL		0x00000020
6762306a36Sopenharmony_ci#define 	CSBUFPERR		0x00000008
6862306a36Sopenharmony_ci#define		OVLYERR			0x00000004
6962306a36Sopenharmony_ci#define 	CSERR			0x00000002
7062306a36Sopenharmony_ci#define		OVLYDMADONE		0x00000001
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci#define		COMSTAT_MASK		(REQMBXREAD | RSPMBXAVAIL | \
7362306a36Sopenharmony_ci					 CSBUFPERR | OVLYERR | CSERR |\
7462306a36Sopenharmony_ci					 OVLYDMADONE)
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci#define COMSTATEN	(REG_BASE_ADDR + 0x08)
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci#define		EN_REQMBXREAD		0x00000040
7962306a36Sopenharmony_ci#define		EN_RSPMBXAVAIL		0x00000020
8062306a36Sopenharmony_ci#define		EN_CSBUFPERR		0x00000008
8162306a36Sopenharmony_ci#define		EN_OVLYERR		0x00000004
8262306a36Sopenharmony_ci#define		EN_CSERR		0x00000002
8362306a36Sopenharmony_ci#define		EN_OVLYDONE		0x00000001
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci#define SCBPRO		(REG_BASE_ADDR + 0x0C)
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci#define		SCBCONS_MASK		0xFFFF0000
8862306a36Sopenharmony_ci#define		SCBPRO_MASK		0x0000FFFF
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci#define CHIMREQMBX	(REG_BASE_ADDR + 0x10)
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci#define CHIMRSPMBX	(REG_BASE_ADDR + 0x14)
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci#define CHIMINT		(REG_BASE_ADDR + 0x18)
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci#define		EXT_INT0		0x00000800
9762306a36Sopenharmony_ci#define		EXT_INT1		0x00000400
9862306a36Sopenharmony_ci#define		PORRSTDET		0x00000200
9962306a36Sopenharmony_ci#define		HARDRSTDET		0x00000100
10062306a36Sopenharmony_ci#define		DLAVAILQ		0x00000080	/* ro */
10162306a36Sopenharmony_ci#define		HOSTERR			0x00000040
10262306a36Sopenharmony_ci#define		INITERR			0x00000020
10362306a36Sopenharmony_ci#define		DEVINT			0x00000010
10462306a36Sopenharmony_ci#define		COMINT			0x00000008
10562306a36Sopenharmony_ci#define		DEVTIMER2		0x00000004
10662306a36Sopenharmony_ci#define		DEVTIMER1		0x00000002
10762306a36Sopenharmony_ci#define		DLAVAIL			0x00000001
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci#define		CHIMINT_MASK		(HOSTERR | INITERR | DEVINT | COMINT |\
11062306a36Sopenharmony_ci					 DEVTIMER2 | DEVTIMER1 | DLAVAIL)
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci#define 	DEVEXCEPT_MASK		(HOSTERR | INITERR | DEVINT | COMINT)
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci#define CHIMINTEN	(REG_BASE_ADDR + 0x1C)
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci#define		RST_EN_EXT_INT1		0x01000000
11762306a36Sopenharmony_ci#define		RST_EN_EXT_INT0		0x00800000
11862306a36Sopenharmony_ci#define		RST_EN_HOSTERR		0x00400000
11962306a36Sopenharmony_ci#define		RST_EN_INITERR		0x00200000
12062306a36Sopenharmony_ci#define		RST_EN_DEVINT		0x00100000
12162306a36Sopenharmony_ci#define		RST_EN_COMINT		0x00080000
12262306a36Sopenharmony_ci#define		RST_EN_DEVTIMER2	0x00040000
12362306a36Sopenharmony_ci#define		RST_EN_DEVTIMER1	0x00020000
12462306a36Sopenharmony_ci#define		RST_EN_DLAVAIL		0x00010000
12562306a36Sopenharmony_ci#define		SET_EN_EXT_INT1		0x00000100
12662306a36Sopenharmony_ci#define		SET_EN_EXT_INT0		0x00000080
12762306a36Sopenharmony_ci#define		SET_EN_HOSTERR		0x00000040
12862306a36Sopenharmony_ci#define		SET_EN_INITERR		0x00000020
12962306a36Sopenharmony_ci#define		SET_EN_DEVINT		0x00000010
13062306a36Sopenharmony_ci#define		SET_EN_COMINT		0x00000008
13162306a36Sopenharmony_ci#define		SET_EN_DEVTIMER2	0x00000004
13262306a36Sopenharmony_ci#define		SET_EN_DEVTIMER1	0x00000002
13362306a36Sopenharmony_ci#define		SET_EN_DLAVAIL		0x00000001
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci#define		RST_CHIMINTEN		(RST_EN_HOSTERR | RST_EN_INITERR | \
13662306a36Sopenharmony_ci					 RST_EN_DEVINT | RST_EN_COMINT | \
13762306a36Sopenharmony_ci					 RST_EN_DEVTIMER2 | RST_EN_DEVTIMER1 |\
13862306a36Sopenharmony_ci					 RST_EN_DLAVAIL)
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci#define		SET_CHIMINTEN		(SET_EN_HOSTERR | SET_EN_INITERR |\
14162306a36Sopenharmony_ci					 SET_EN_DEVINT | SET_EN_COMINT |\
14262306a36Sopenharmony_ci					 SET_EN_DLAVAIL)
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ci#define OVLYDMACTL	(REG_BASE_ADDR + 0x20)
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci#define		OVLYADR_MASK		0x07FF0000
14762306a36Sopenharmony_ci#define		OVLYLSEQ_MASK		0x0000FF00
14862306a36Sopenharmony_ci#define		OVLYCSEQ		0x00000080
14962306a36Sopenharmony_ci#define		OVLYHALTERR		0x00000040
15062306a36Sopenharmony_ci#define		PIOCMODE		0x00000020
15162306a36Sopenharmony_ci#define		RESETOVLYDMA		0x00000008	/* wo */
15262306a36Sopenharmony_ci#define		STARTOVLYDMA		0x00000004
15362306a36Sopenharmony_ci#define		STOPOVLYDMA		0x00000002	/* wo */
15462306a36Sopenharmony_ci#define		OVLYDMAACT		0x00000001	/* ro */
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci#define OVLYDMACNT	(REG_BASE_ADDR + 0x24)
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci#define		OVLYDOMAIN1		0x20000000	/* ro */
15962306a36Sopenharmony_ci#define		OVLYDOMAIN0		0x10000000
16062306a36Sopenharmony_ci#define		OVLYBUFADR_MASK		0x007F0000
16162306a36Sopenharmony_ci#define		OVLYDMACNT_MASK		0x00003FFF
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci#define OVLYDMAADR	(REG_BASE_ADDR + 0x28)
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci#define DMAERR		(REG_BASE_ADDR + 0x30)
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci#define		OVLYERRSTAT_MASK	0x0000FF00	/* ro */
16862306a36Sopenharmony_ci#define		CSERRSTAT_MASK		0x000000FF	/* ro */
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci#define SPIODATA	(REG_BASE_ADDR + 0x34)
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci/* 0x38 - 0x3C are reserved  */
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci#define T1CNTRLR	(REG_BASE_ADDR + 0x40)
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci#define		T1DONE			0x00010000	/* ro */
17762306a36Sopenharmony_ci#define		TIMER64			0x00000400
17862306a36Sopenharmony_ci#define		T1ENABLE		0x00000200
17962306a36Sopenharmony_ci#define		T1RELOAD		0x00000100
18062306a36Sopenharmony_ci#define		T1PRESCALER_MASK	0x00000003
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci#define	T1CMPR		(REG_BASE_ADDR + 0x44)
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci#define T1CNTR		(REG_BASE_ADDR + 0x48)
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci#define T2CNTRLR	(REG_BASE_ADDR + 0x4C)
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci#define		T2DONE			0x00010000	/* ro */
18962306a36Sopenharmony_ci#define		T2ENABLE		0x00000200
19062306a36Sopenharmony_ci#define		T2RELOAD		0x00000100
19162306a36Sopenharmony_ci#define		T2PRESCALER_MASK	0x00000003
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci#define	T2CMPR		(REG_BASE_ADDR + 0x50)
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci#define T2CNTR		(REG_BASE_ADDR + 0x54)
19662306a36Sopenharmony_ci
19762306a36Sopenharmony_ci/* 0x58h - 0xFCh are reserved */
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci/*
20062306a36Sopenharmony_ci * DCH_SAS Registers, Address Range : (0x800-0xFFF)
20162306a36Sopenharmony_ci */
20262306a36Sopenharmony_ci#define CMDCTXBASE	(REG_BASE_ADDR + 0x800)
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci#define DEVCTXBASE	(REG_BASE_ADDR + 0x808)
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci#define CTXDOMAIN	(REG_BASE_ADDR + 0x810)
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci#define		DEVCTXDOMAIN1		0x00000008	/* ro */
20962306a36Sopenharmony_ci#define		DEVCTXDOMAIN0		0x00000004
21062306a36Sopenharmony_ci#define		CMDCTXDOMAIN1		0x00000002	/* ro */
21162306a36Sopenharmony_ci#define		CMDCTXDOMAIN0		0x00000001
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci#define DCHCTL		(REG_BASE_ADDR + 0x814)
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci#define		OCMBISTREPAIR		0x00080000
21662306a36Sopenharmony_ci#define		OCMBISTEN		0x00040000
21762306a36Sopenharmony_ci#define		OCMBISTDN		0x00020000	/* ro */
21862306a36Sopenharmony_ci#define		OCMBISTFAIL		0x00010000	/* ro */
21962306a36Sopenharmony_ci#define		DDBBISTEN		0x00004000
22062306a36Sopenharmony_ci#define		DDBBISTDN		0x00002000	/* ro */
22162306a36Sopenharmony_ci#define		DDBBISTFAIL		0x00001000	/* ro */
22262306a36Sopenharmony_ci#define		SCBBISTEN		0x00000400
22362306a36Sopenharmony_ci#define		SCBBISTDN		0x00000200	/* ro */
22462306a36Sopenharmony_ci#define		SCBBISTFAIL		0x00000100	/* ro */
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci#define		MEMSEL_MASK		0x000000E0
22762306a36Sopenharmony_ci#define		MEMSEL_CCM_LSEQ		0x00000000
22862306a36Sopenharmony_ci#define		MEMSEL_CCM_IOP		0x00000020
22962306a36Sopenharmony_ci#define		MEMSEL_CCM_SASCTL	0x00000040
23062306a36Sopenharmony_ci#define		MEMSEL_DCM_LSEQ		0x00000060
23162306a36Sopenharmony_ci#define		MEMSEL_DCM_IOP		0x00000080
23262306a36Sopenharmony_ci#define		MEMSEL_OCM		0x000000A0
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci#define		FRCERR			0x00000010
23562306a36Sopenharmony_ci#define		AUTORLS			0x00000001
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci#define DCHREVISION	(REG_BASE_ADDR + 0x818)
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci#define		DCHREVISION_MASK	0x000000FF
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci#define DCHSTATUS	(REG_BASE_ADDR + 0x81C)
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci#define		EN_CFIFTOERR		0x00020000
24462306a36Sopenharmony_ci#define		CFIFTOERR		0x00000200
24562306a36Sopenharmony_ci#define		CSEQINT			0x00000100	/* ro */
24662306a36Sopenharmony_ci#define		LSEQ7INT		0x00000080	/* ro */
24762306a36Sopenharmony_ci#define		LSEQ6INT		0x00000040	/* ro */
24862306a36Sopenharmony_ci#define		LSEQ5INT		0x00000020	/* ro */
24962306a36Sopenharmony_ci#define		LSEQ4INT		0x00000010	/* ro */
25062306a36Sopenharmony_ci#define		LSEQ3INT		0x00000008	/* ro */
25162306a36Sopenharmony_ci#define		LSEQ2INT		0x00000004	/* ro */
25262306a36Sopenharmony_ci#define		LSEQ1INT		0x00000002	/* ro */
25362306a36Sopenharmony_ci#define		LSEQ0INT		0x00000001	/* ro */
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci#define		LSEQINT_MASK		(LSEQ7INT | LSEQ6INT | LSEQ5INT |\
25662306a36Sopenharmony_ci					 LSEQ4INT | LSEQ3INT | LSEQ2INT	|\
25762306a36Sopenharmony_ci					 LSEQ1INT | LSEQ0INT)
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci#define DCHDFIFDEBUG	(REG_BASE_ADDR + 0x820)
26062306a36Sopenharmony_ci#define		ENFAIRMST		0x00FF0000
26162306a36Sopenharmony_ci#define		DISWRMST9		0x00000200
26262306a36Sopenharmony_ci#define		DISWRMST8		0x00000100
26362306a36Sopenharmony_ci#define		DISRDMST		0x000000FF
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ci#define ATOMICSTATCTL	(REG_BASE_ADDR + 0x824)
26662306a36Sopenharmony_ci/* 8 bit wide */
26762306a36Sopenharmony_ci#define		AUTOINC			0x80
26862306a36Sopenharmony_ci#define		ATOMICERR		0x04
26962306a36Sopenharmony_ci#define		ATOMICWIN		0x02
27062306a36Sopenharmony_ci#define		ATOMICDONE		0x01
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci#define ALTCIOADR	(REG_BASE_ADDR + 0x828)
27462306a36Sopenharmony_ci/* 16 bit; bits 8:0 define CIO addr space of CSEQ */
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci#define ASCBPTR		(REG_BASE_ADDR + 0x82C)
27762306a36Sopenharmony_ci/* 16 bit wide */
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci#define ADDBPTR		(REG_BASE_ADDR + 0x82E)
28062306a36Sopenharmony_ci/* 16 bit wide */
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci#define ANEWDATA	(REG_BASE_ADDR + 0x830)
28362306a36Sopenharmony_ci/* 16 bit */
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ci#define AOLDDATA	(REG_BASE_ADDR + 0x834)
28662306a36Sopenharmony_ci/* 16 bit */
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci#define CTXACCESS	(REG_BASE_ADDR + 0x838)
28962306a36Sopenharmony_ci/* 32 bit */
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci/* 0x83Ch - 0xFFCh are reserved */
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci/*
29462306a36Sopenharmony_ci * ARP2 External Processor Registers, Address Range : (0x00-0x1F)
29562306a36Sopenharmony_ci */
29662306a36Sopenharmony_ci#define ARP2CTL		0x00
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ci#define		FRCSCRPERR		0x00040000
29962306a36Sopenharmony_ci#define		FRCARP2PERR		0x00020000
30062306a36Sopenharmony_ci#define		FRCARP2ILLOPC		0x00010000
30162306a36Sopenharmony_ci#define		ENWAITTO		0x00008000
30262306a36Sopenharmony_ci#define		PERRORDIS		0x00004000
30362306a36Sopenharmony_ci#define		FAILDIS			0x00002000
30462306a36Sopenharmony_ci#define		CIOPERRDIS		0x00001000
30562306a36Sopenharmony_ci#define		BREAKEN3		0x00000800
30662306a36Sopenharmony_ci#define		BREAKEN2		0x00000400
30762306a36Sopenharmony_ci#define		BREAKEN1		0x00000200
30862306a36Sopenharmony_ci#define		BREAKEN0		0x00000100
30962306a36Sopenharmony_ci#define		EPAUSE			0x00000008
31062306a36Sopenharmony_ci#define		PAUSED			0x00000004	/* ro */
31162306a36Sopenharmony_ci#define		STEP			0x00000002
31262306a36Sopenharmony_ci#define		ARP2RESET		0x00000001	/* wo */
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ci#define ARP2INT		0x04
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci#define		HALTCODE_MASK		0x00FF0000	/* ro */
31762306a36Sopenharmony_ci#define		ARP2WAITTO		0x00000100
31862306a36Sopenharmony_ci#define		ARP2HALTC		0x00000080
31962306a36Sopenharmony_ci#define		ARP2ILLOPC		0x00000040
32062306a36Sopenharmony_ci#define		ARP2PERR		0x00000020
32162306a36Sopenharmony_ci#define		ARP2CIOPERR		0x00000010
32262306a36Sopenharmony_ci#define		ARP2BREAK3		0x00000008
32362306a36Sopenharmony_ci#define		ARP2BREAK2		0x00000004
32462306a36Sopenharmony_ci#define		ARP2BREAK1		0x00000002
32562306a36Sopenharmony_ci#define		ARP2BREAK0		0x00000001
32662306a36Sopenharmony_ci
32762306a36Sopenharmony_ci#define ARP2INTEN	0x08
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ci#define		EN_ARP2WAITTO		0x00000100
33062306a36Sopenharmony_ci#define		EN_ARP2HALTC		0x00000080
33162306a36Sopenharmony_ci#define		EN_ARP2ILLOPC		0x00000040
33262306a36Sopenharmony_ci#define		EN_ARP2PERR		0x00000020
33362306a36Sopenharmony_ci#define		EN_ARP2CIOPERR		0x00000010
33462306a36Sopenharmony_ci#define		EN_ARP2BREAK3		0x00000008
33562306a36Sopenharmony_ci#define		EN_ARP2BREAK2		0x00000004
33662306a36Sopenharmony_ci#define		EN_ARP2BREAK1		0x00000002
33762306a36Sopenharmony_ci#define		EN_ARP2BREAK0		0x00000001
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci#define ARP2BREAKADR01	0x0C
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci#define		BREAKADR1_MASK		0x0FFF0000
34262306a36Sopenharmony_ci#define		BREAKADR0_MASK		0x00000FFF
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ci#define	ARP2BREAKADR23	0x10
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci#define		BREAKADR3_MASK		0x0FFF0000
34762306a36Sopenharmony_ci#define		BREAKADR2_MASK		0x00000FFF
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci/* 0x14h - 0x1Ch are reserved */
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci/*
35262306a36Sopenharmony_ci * ARP2 Registers, Address Range : (0x00-0x1F)
35362306a36Sopenharmony_ci * The definitions have the same address offset for CSEQ and LmSEQ
35462306a36Sopenharmony_ci * CIO Bus Registers.
35562306a36Sopenharmony_ci */
35662306a36Sopenharmony_ci#define MODEPTR		0x00
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci#define		DSTMODE			0xF0
35962306a36Sopenharmony_ci#define		SRCMODE			0x0F
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci#define ALTMODE		0x01
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci#define		ALTDMODE		0xF0
36462306a36Sopenharmony_ci#define		ALTSMODE		0x0F
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ci#define ATOMICXCHG	0x02
36762306a36Sopenharmony_ci
36862306a36Sopenharmony_ci#define FLAG		0x04
36962306a36Sopenharmony_ci
37062306a36Sopenharmony_ci#define		INTCODE_MASK		0xF0
37162306a36Sopenharmony_ci#define		ALTMODEV2		0x04
37262306a36Sopenharmony_ci#define		CARRY_INT		0x02
37362306a36Sopenharmony_ci#define		CARRY			0x01
37462306a36Sopenharmony_ci
37562306a36Sopenharmony_ci#define ARP2INTCTL	0x05
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ci#define 	PAUSEDIS		0x80
37862306a36Sopenharmony_ci#define		RSTINTCTL		0x40
37962306a36Sopenharmony_ci#define		POPALTMODE		0x08
38062306a36Sopenharmony_ci#define		ALTMODEV		0x04
38162306a36Sopenharmony_ci#define		INTMASK			0x02
38262306a36Sopenharmony_ci#define		IRET			0x01
38362306a36Sopenharmony_ci
38462306a36Sopenharmony_ci#define STACK		0x06
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci#define FUNCTION1	0x07
38762306a36Sopenharmony_ci
38862306a36Sopenharmony_ci#define PRGMCNT		0x08
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci#define ACCUM		0x0A
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ci#define SINDEX		0x0C
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci#define DINDEX		0x0E
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci#define ALLONES		0x10
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci#define ALLZEROS	0x11
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci#define SINDIR		0x12
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ci#define DINDIR		0x13
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ci#define JUMLDIR		0x14
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ci#define ARP2HALTCODE	0x15
40762306a36Sopenharmony_ci
40862306a36Sopenharmony_ci#define CURRADDR	0x16
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci#define LASTADDR	0x18
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ci#define NXTLADDR	0x1A
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci#define DBGPORTPTR	0x1C
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci#define DBGPORT		0x1D
41762306a36Sopenharmony_ci
41862306a36Sopenharmony_ci/*
41962306a36Sopenharmony_ci * CIO Registers.
42062306a36Sopenharmony_ci * The definitions have the same address offset for CSEQ and LmSEQ
42162306a36Sopenharmony_ci * CIO Bus Registers.
42262306a36Sopenharmony_ci */
42362306a36Sopenharmony_ci#define MnSCBPTR      	0x20
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ci#define MnDDBPTR      	0x22
42662306a36Sopenharmony_ci
42762306a36Sopenharmony_ci#define SCRATCHPAGE	0x24
42862306a36Sopenharmony_ci
42962306a36Sopenharmony_ci#define MnSCRATCHPAGE	0x25
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_ci#define SCRATCHPAGESV	0x26
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_ci#define MnSCRATCHPAGESV	0x27
43462306a36Sopenharmony_ci
43562306a36Sopenharmony_ci#define MnDMAERRS	0x46
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ci#define MnSGDMAERRS	0x47
43862306a36Sopenharmony_ci
43962306a36Sopenharmony_ci#define MnSGBUF		0x53
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ci#define MnSGDMASTAT	0x5b
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci#define MnDDMACTL	0x5c	/* RAZOR.rspec.fm rev 1.5 is wrong */
44462306a36Sopenharmony_ci
44562306a36Sopenharmony_ci#define MnDDMASTAT	0x5d	/* RAZOR.rspec.fm rev 1.5 is wrong */
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_ci#define MnDDMAMODE	0x5e	/* RAZOR.rspec.fm rev 1.5 is wrong */
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci#define MnDMAENG	0x60
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_ci#define MnPIPECTL	0x61
45262306a36Sopenharmony_ci
45362306a36Sopenharmony_ci#define MnSGBADR	0x65
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ci#define MnSCB_SITE	0x100
45662306a36Sopenharmony_ci
45762306a36Sopenharmony_ci#define MnDDB_SITE	0x180
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ci/*
46062306a36Sopenharmony_ci * The common definitions below have the same address offset for both
46162306a36Sopenharmony_ci * CSEQ and LmSEQ.
46262306a36Sopenharmony_ci */
46362306a36Sopenharmony_ci#define BISTCTL0	0x4C
46462306a36Sopenharmony_ci
46562306a36Sopenharmony_ci#define BISTCTL1	0x50
46662306a36Sopenharmony_ci
46762306a36Sopenharmony_ci#define MAPPEDSCR	0x800
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_ci/*
47062306a36Sopenharmony_ci * CSEQ Host Register, Address Range : (0x000-0xFFC)
47162306a36Sopenharmony_ci */
47262306a36Sopenharmony_ci#define CSEQ_HOST_REG_BASE_ADR		0xB8001000
47362306a36Sopenharmony_ci
47462306a36Sopenharmony_ci#define CARP2CTL			(CSEQ_HOST_REG_BASE_ADR	+ ARP2CTL)
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_ci#define CARP2INT			(CSEQ_HOST_REG_BASE_ADR	+ ARP2INT)
47762306a36Sopenharmony_ci
47862306a36Sopenharmony_ci#define CARP2INTEN			(CSEQ_HOST_REG_BASE_ADR	+ ARP2INTEN)
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci#define CARP2BREAKADR01			(CSEQ_HOST_REG_BASE_ADR+ARP2BREAKADR01)
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci#define CARP2BREAKADR23			(CSEQ_HOST_REG_BASE_ADR+ARP2BREAKADR23)
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ci#define CBISTCTL			(CSEQ_HOST_REG_BASE_ADR	+ BISTCTL1)
48562306a36Sopenharmony_ci
48662306a36Sopenharmony_ci#define		CSEQRAMBISTEN		0x00000040
48762306a36Sopenharmony_ci#define		CSEQRAMBISTDN		0x00000020	/* ro */
48862306a36Sopenharmony_ci#define		CSEQRAMBISTFAIL		0x00000010	/* ro */
48962306a36Sopenharmony_ci#define		CSEQSCRBISTEN		0x00000004
49062306a36Sopenharmony_ci#define		CSEQSCRBISTDN		0x00000002	/* ro */
49162306a36Sopenharmony_ci#define		CSEQSCRBISTFAIL		0x00000001	/* ro */
49262306a36Sopenharmony_ci
49362306a36Sopenharmony_ci#define CMAPPEDSCR			(CSEQ_HOST_REG_BASE_ADR	+ MAPPEDSCR)
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci/*
49662306a36Sopenharmony_ci * CSEQ CIO Bus Registers, Address Range : (0x0000-0x1FFC)
49762306a36Sopenharmony_ci * 16 modes, each mode is 512 bytes.
49862306a36Sopenharmony_ci * Unless specified, the register should valid for all modes.
49962306a36Sopenharmony_ci */
50062306a36Sopenharmony_ci#define CSEQ_CIO_REG_BASE_ADR		REG_BASE_ADDR_CSEQCIO
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ci#define CSEQm_CIO_REG(Mode, Reg) \
50362306a36Sopenharmony_ci		(CSEQ_CIO_REG_BASE_ADR  + \
50462306a36Sopenharmony_ci		((u32) (Mode) * CSEQ_MODE_PAGE_SIZE) + (u32) (Reg))
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci#define CMODEPTR	(CSEQ_CIO_REG_BASE_ADR + MODEPTR)
50762306a36Sopenharmony_ci
50862306a36Sopenharmony_ci#define CALTMODE	(CSEQ_CIO_REG_BASE_ADR + ALTMODE)
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ci#define CATOMICXCHG	(CSEQ_CIO_REG_BASE_ADR + ATOMICXCHG)
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ci#define CFLAG		(CSEQ_CIO_REG_BASE_ADR + FLAG)
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_ci#define CARP2INTCTL	(CSEQ_CIO_REG_BASE_ADR + ARP2INTCTL)
51562306a36Sopenharmony_ci
51662306a36Sopenharmony_ci#define CSTACK		(CSEQ_CIO_REG_BASE_ADR + STACK)
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_ci#define CFUNCTION1	(CSEQ_CIO_REG_BASE_ADR + FUNCTION1)
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ci#define CPRGMCNT	(CSEQ_CIO_REG_BASE_ADR + PRGMCNT)
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ci#define CACCUM		(CSEQ_CIO_REG_BASE_ADR + ACCUM)
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_ci#define CSINDEX		(CSEQ_CIO_REG_BASE_ADR + SINDEX)
52562306a36Sopenharmony_ci
52662306a36Sopenharmony_ci#define CDINDEX		(CSEQ_CIO_REG_BASE_ADR + DINDEX)
52762306a36Sopenharmony_ci
52862306a36Sopenharmony_ci#define CALLONES	(CSEQ_CIO_REG_BASE_ADR + ALLONES)
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_ci#define CALLZEROS	(CSEQ_CIO_REG_BASE_ADR + ALLZEROS)
53162306a36Sopenharmony_ci
53262306a36Sopenharmony_ci#define CSINDIR		(CSEQ_CIO_REG_BASE_ADR + SINDIR)
53362306a36Sopenharmony_ci
53462306a36Sopenharmony_ci#define CDINDIR		(CSEQ_CIO_REG_BASE_ADR + DINDIR)
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci#define CJUMLDIR	(CSEQ_CIO_REG_BASE_ADR + JUMLDIR)
53762306a36Sopenharmony_ci
53862306a36Sopenharmony_ci#define CARP2HALTCODE	(CSEQ_CIO_REG_BASE_ADR + ARP2HALTCODE)
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_ci#define CCURRADDR	(CSEQ_CIO_REG_BASE_ADR + CURRADDR)
54162306a36Sopenharmony_ci
54262306a36Sopenharmony_ci#define CLASTADDR	(CSEQ_CIO_REG_BASE_ADR + LASTADDR)
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ci#define CNXTLADDR	(CSEQ_CIO_REG_BASE_ADR + NXTLADDR)
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_ci#define CDBGPORTPTR	(CSEQ_CIO_REG_BASE_ADR + DBGPORTPTR)
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ci#define CDBGPORT	(CSEQ_CIO_REG_BASE_ADR + DBGPORT)
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ci#define CSCRATCHPAGE	(CSEQ_CIO_REG_BASE_ADR + SCRATCHPAGE)
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ci#define CMnSCBPTR(Mode)       CSEQm_CIO_REG(Mode, MnSCBPTR)
55362306a36Sopenharmony_ci
55462306a36Sopenharmony_ci#define CMnDDBPTR(Mode)       CSEQm_CIO_REG(Mode, MnDDBPTR)
55562306a36Sopenharmony_ci
55662306a36Sopenharmony_ci#define CMnSCRATCHPAGE(Mode)		CSEQm_CIO_REG(Mode, MnSCRATCHPAGE)
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci#define CLINKCON	(CSEQ_CIO_REG_BASE_ADR + 0x28)
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_ci#define	CCIOAACESS	(CSEQ_CIO_REG_BASE_ADR + 0x2C)
56162306a36Sopenharmony_ci
56262306a36Sopenharmony_ci/* mode 0-7 */
56362306a36Sopenharmony_ci#define MnREQMBX 0x30
56462306a36Sopenharmony_ci#define CMnREQMBX(Mode)			CSEQm_CIO_REG(Mode, 0x30)
56562306a36Sopenharmony_ci
56662306a36Sopenharmony_ci/* mode 8 */
56762306a36Sopenharmony_ci#define CSEQCON				CSEQm_CIO_REG(8, 0x30)
56862306a36Sopenharmony_ci
56962306a36Sopenharmony_ci/* mode 0-7 */
57062306a36Sopenharmony_ci#define MnRSPMBX 0x34
57162306a36Sopenharmony_ci#define CMnRSPMBX(Mode)			CSEQm_CIO_REG(Mode, 0x34)
57262306a36Sopenharmony_ci
57362306a36Sopenharmony_ci/* mode 8 */
57462306a36Sopenharmony_ci#define CSEQCOMCTL			CSEQm_CIO_REG(8, 0x34)
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ci/* mode 8 */
57762306a36Sopenharmony_ci#define CSEQCOMSTAT			CSEQm_CIO_REG(8, 0x35)
57862306a36Sopenharmony_ci
57962306a36Sopenharmony_ci/* mode 8 */
58062306a36Sopenharmony_ci#define CSEQCOMINTEN			CSEQm_CIO_REG(8, 0x36)
58162306a36Sopenharmony_ci
58262306a36Sopenharmony_ci/* mode 8 */
58362306a36Sopenharmony_ci#define CSEQCOMDMACTL			CSEQm_CIO_REG(8, 0x37)
58462306a36Sopenharmony_ci
58562306a36Sopenharmony_ci#define		CSHALTERR		0x10
58662306a36Sopenharmony_ci#define		RESETCSDMA		0x08		/* wo */
58762306a36Sopenharmony_ci#define		STARTCSDMA		0x04
58862306a36Sopenharmony_ci#define		STOPCSDMA		0x02		/* wo */
58962306a36Sopenharmony_ci#define		CSDMAACT		0x01		/* ro */
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_ci/* mode 0-7 */
59262306a36Sopenharmony_ci#define MnINT 0x38
59362306a36Sopenharmony_ci#define CMnINT(Mode)			CSEQm_CIO_REG(Mode, 0x38)
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_ci#define		CMnREQMBXE		0x02
59662306a36Sopenharmony_ci#define		CMnRSPMBXF		0x01
59762306a36Sopenharmony_ci#define		CMnINT_MASK		0x00000003
59862306a36Sopenharmony_ci
59962306a36Sopenharmony_ci/* mode 8 */
60062306a36Sopenharmony_ci#define CSEQREQMBX			CSEQm_CIO_REG(8, 0x38)
60162306a36Sopenharmony_ci
60262306a36Sopenharmony_ci/* mode 0-7 */
60362306a36Sopenharmony_ci#define MnINTEN 0x3C
60462306a36Sopenharmony_ci#define CMnINTEN(Mode)			CSEQm_CIO_REG(Mode, 0x3C)
60562306a36Sopenharmony_ci
60662306a36Sopenharmony_ci#define		EN_CMnRSPMBXF		0x01
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ci/* mode 8 */
60962306a36Sopenharmony_ci#define CSEQRSPMBX			CSEQm_CIO_REG(8, 0x3C)
61062306a36Sopenharmony_ci
61162306a36Sopenharmony_ci/* mode 8 */
61262306a36Sopenharmony_ci#define CSDMAADR			CSEQm_CIO_REG(8, 0x40)
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_ci/* mode 8 */
61562306a36Sopenharmony_ci#define CSDMACNT			CSEQm_CIO_REG(8, 0x48)
61662306a36Sopenharmony_ci
61762306a36Sopenharmony_ci/* mode 8 */
61862306a36Sopenharmony_ci#define CSEQDLCTL			CSEQm_CIO_REG(8, 0x4D)
61962306a36Sopenharmony_ci
62062306a36Sopenharmony_ci#define		DONELISTEND		0x10
62162306a36Sopenharmony_ci#define 	DONELISTSIZE_MASK	0x0F
62262306a36Sopenharmony_ci#define		DONELISTSIZE_8ELEM	0x01
62362306a36Sopenharmony_ci#define		DONELISTSIZE_16ELEM	0x02
62462306a36Sopenharmony_ci#define		DONELISTSIZE_32ELEM	0x03
62562306a36Sopenharmony_ci#define		DONELISTSIZE_64ELEM	0x04
62662306a36Sopenharmony_ci#define		DONELISTSIZE_128ELEM	0x05
62762306a36Sopenharmony_ci#define		DONELISTSIZE_256ELEM	0x06
62862306a36Sopenharmony_ci#define		DONELISTSIZE_512ELEM	0x07
62962306a36Sopenharmony_ci#define		DONELISTSIZE_1024ELEM	0x08
63062306a36Sopenharmony_ci#define		DONELISTSIZE_2048ELEM	0x09
63162306a36Sopenharmony_ci#define		DONELISTSIZE_4096ELEM	0x0A
63262306a36Sopenharmony_ci#define		DONELISTSIZE_8192ELEM	0x0B
63362306a36Sopenharmony_ci#define		DONELISTSIZE_16384ELEM	0x0C
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_ci/* mode 8 */
63662306a36Sopenharmony_ci#define CSEQDLOFFS			CSEQm_CIO_REG(8, 0x4E)
63762306a36Sopenharmony_ci
63862306a36Sopenharmony_ci/* mode 11 */
63962306a36Sopenharmony_ci#define CM11INTVEC0			CSEQm_CIO_REG(11, 0x50)
64062306a36Sopenharmony_ci
64162306a36Sopenharmony_ci/* mode 11 */
64262306a36Sopenharmony_ci#define CM11INTVEC1			CSEQm_CIO_REG(11, 0x52)
64362306a36Sopenharmony_ci
64462306a36Sopenharmony_ci/* mode 11 */
64562306a36Sopenharmony_ci#define CM11INTVEC2			CSEQm_CIO_REG(11, 0x54)
64662306a36Sopenharmony_ci
64762306a36Sopenharmony_ci#define	CCONMSK	  			(CSEQ_CIO_REG_BASE_ADR + 0x60)
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_ci#define	CCONEXIST			(CSEQ_CIO_REG_BASE_ADR + 0x61)
65062306a36Sopenharmony_ci
65162306a36Sopenharmony_ci#define	CCONMODE			(CSEQ_CIO_REG_BASE_ADR + 0x62)
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ci#define CTIMERCALC			(CSEQ_CIO_REG_BASE_ADR + 0x64)
65462306a36Sopenharmony_ci
65562306a36Sopenharmony_ci#define CINTDIS				(CSEQ_CIO_REG_BASE_ADR + 0x68)
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci/* mode 8, 32x32 bits, 128 bytes of mapped buffer */
65862306a36Sopenharmony_ci#define CSBUFFER			CSEQm_CIO_REG(8, 0x80)
65962306a36Sopenharmony_ci
66062306a36Sopenharmony_ci#define	CSCRATCH			(CSEQ_CIO_REG_BASE_ADR + 0x1C0)
66162306a36Sopenharmony_ci
66262306a36Sopenharmony_ci/* mode 0-8 */
66362306a36Sopenharmony_ci#define CMnSCRATCH(Mode)		CSEQm_CIO_REG(Mode, 0x1E0)
66462306a36Sopenharmony_ci
66562306a36Sopenharmony_ci/*
66662306a36Sopenharmony_ci * CSEQ Mapped Instruction RAM Page, Address Range : (0x0000-0x1FFC)
66762306a36Sopenharmony_ci */
66862306a36Sopenharmony_ci#define CSEQ_RAM_REG_BASE_ADR		0xB8004000
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_ci/*
67162306a36Sopenharmony_ci * The common definitions below have the same address offset for all the Link
67262306a36Sopenharmony_ci * sequencers.
67362306a36Sopenharmony_ci */
67462306a36Sopenharmony_ci#define MODECTL		0x40
67562306a36Sopenharmony_ci
67662306a36Sopenharmony_ci#define DBGMODE		0x44
67762306a36Sopenharmony_ci
67862306a36Sopenharmony_ci#define CONTROL		0x48
67962306a36Sopenharmony_ci#define LEDTIMER		0x00010000
68062306a36Sopenharmony_ci#define LEDTIMERS_10us		0x00000000
68162306a36Sopenharmony_ci#define LEDTIMERS_1ms		0x00000800
68262306a36Sopenharmony_ci#define LEDTIMERS_100ms		0x00001000
68362306a36Sopenharmony_ci#define LEDMODE_TXRX		0x00000000
68462306a36Sopenharmony_ci#define LEDMODE_CONNECTED	0x00000200
68562306a36Sopenharmony_ci#define LEDPOL			0x00000100
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci#define LSEQRAM		0x1000
68862306a36Sopenharmony_ci
68962306a36Sopenharmony_ci/*
69062306a36Sopenharmony_ci * LmSEQ Host Registers, Address Range : (0x0000-0x3FFC)
69162306a36Sopenharmony_ci */
69262306a36Sopenharmony_ci#define LSEQ0_HOST_REG_BASE_ADR		0xB8020000
69362306a36Sopenharmony_ci#define LSEQ1_HOST_REG_BASE_ADR		0xB8024000
69462306a36Sopenharmony_ci#define LSEQ2_HOST_REG_BASE_ADR		0xB8028000
69562306a36Sopenharmony_ci#define LSEQ3_HOST_REG_BASE_ADR		0xB802C000
69662306a36Sopenharmony_ci#define LSEQ4_HOST_REG_BASE_ADR		0xB8030000
69762306a36Sopenharmony_ci#define LSEQ5_HOST_REG_BASE_ADR		0xB8034000
69862306a36Sopenharmony_ci#define LSEQ6_HOST_REG_BASE_ADR		0xB8038000
69962306a36Sopenharmony_ci#define LSEQ7_HOST_REG_BASE_ADR		0xB803C000
70062306a36Sopenharmony_ci
70162306a36Sopenharmony_ci#define LmARP2CTL(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
70262306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
70362306a36Sopenharmony_ci					ARP2CTL)
70462306a36Sopenharmony_ci
70562306a36Sopenharmony_ci#define LmARP2INT(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
70662306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
70762306a36Sopenharmony_ci					ARP2INT)
70862306a36Sopenharmony_ci
70962306a36Sopenharmony_ci#define LmARP2INTEN(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
71062306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
71162306a36Sopenharmony_ci					ARP2INTEN)
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ci#define LmDBGMODE(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
71462306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
71562306a36Sopenharmony_ci					DBGMODE)
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_ci#define LmCONTROL(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
71862306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
71962306a36Sopenharmony_ci					CONTROL)
72062306a36Sopenharmony_ci
72162306a36Sopenharmony_ci#define LmARP2BREAKADR01(LinkNum)	(LSEQ0_HOST_REG_BASE_ADR +	  \
72262306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
72362306a36Sopenharmony_ci					ARP2BREAKADR01)
72462306a36Sopenharmony_ci
72562306a36Sopenharmony_ci#define LmARP2BREAKADR23(LinkNum)	(LSEQ0_HOST_REG_BASE_ADR +	  \
72662306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
72762306a36Sopenharmony_ci					ARP2BREAKADR23)
72862306a36Sopenharmony_ci
72962306a36Sopenharmony_ci#define LmMODECTL(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
73062306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
73162306a36Sopenharmony_ci					MODECTL)
73262306a36Sopenharmony_ci
73362306a36Sopenharmony_ci#define		LmAUTODISCI		0x08000000
73462306a36Sopenharmony_ci#define		LmDSBLBITLT		0x04000000
73562306a36Sopenharmony_ci#define		LmDSBLANTT		0x02000000
73662306a36Sopenharmony_ci#define		LmDSBLCRTT		0x01000000
73762306a36Sopenharmony_ci#define		LmDSBLCONT		0x00000100
73862306a36Sopenharmony_ci#define		LmPRIMODE		0x00000080
73962306a36Sopenharmony_ci#define		LmDSBLHOLD		0x00000040
74062306a36Sopenharmony_ci#define		LmDISACK		0x00000020
74162306a36Sopenharmony_ci#define		LmBLIND48		0x00000010
74262306a36Sopenharmony_ci#define		LmRCVMODE_MASK		0x0000000C
74362306a36Sopenharmony_ci#define		LmRCVMODE_PLD		0x00000000
74462306a36Sopenharmony_ci#define		LmRCVMODE_HPC		0x00000004
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_ci#define LmDBGMODE(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
74762306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
74862306a36Sopenharmony_ci					DBGMODE)
74962306a36Sopenharmony_ci
75062306a36Sopenharmony_ci#define		LmFRCPERR		0x80000000
75162306a36Sopenharmony_ci#define		LmMEMSEL_MASK		0x30000000
75262306a36Sopenharmony_ci#define		LmFRCRBPERR		0x00000000
75362306a36Sopenharmony_ci#define		LmFRCTBPERR		0x10000000
75462306a36Sopenharmony_ci#define		LmFRCSGBPERR		0x20000000
75562306a36Sopenharmony_ci#define		LmFRCARBPERR		0x30000000
75662306a36Sopenharmony_ci#define		LmRCVIDW		0x00080000
75762306a36Sopenharmony_ci#define		LmINVDWERR		0x00040000
75862306a36Sopenharmony_ci#define		LmRCVDISP		0x00004000
75962306a36Sopenharmony_ci#define		LmDISPERR		0x00002000
76062306a36Sopenharmony_ci#define		LmDSBLDSCR		0x00000800
76162306a36Sopenharmony_ci#define		LmDSBLSCR		0x00000400
76262306a36Sopenharmony_ci#define		LmFRCNAK		0x00000200
76362306a36Sopenharmony_ci#define		LmFRCROFS		0x00000100
76462306a36Sopenharmony_ci#define		LmFRCCRC		0x00000080
76562306a36Sopenharmony_ci#define		LmFRMTYPE_MASK		0x00000070
76662306a36Sopenharmony_ci#define		LmSG_DATA		0x00000000
76762306a36Sopenharmony_ci#define		LmSG_COMMAND		0x00000010
76862306a36Sopenharmony_ci#define		LmSG_TASK		0x00000020
76962306a36Sopenharmony_ci#define		LmSG_TGTXFER		0x00000030
77062306a36Sopenharmony_ci#define		LmSG_RESPONSE		0x00000040
77162306a36Sopenharmony_ci#define		LmSG_IDENADDR		0x00000050
77262306a36Sopenharmony_ci#define		LmSG_OPENADDR		0x00000060
77362306a36Sopenharmony_ci#define		LmDISCRCGEN		0x00000008
77462306a36Sopenharmony_ci#define		LmDISCRCCHK		0x00000004
77562306a36Sopenharmony_ci#define		LmSSXMTFRM		0x00000002
77662306a36Sopenharmony_ci#define		LmSSRCVFRM		0x00000001
77762306a36Sopenharmony_ci
77862306a36Sopenharmony_ci#define LmCONTROL(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
77962306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
78062306a36Sopenharmony_ci					CONTROL)
78162306a36Sopenharmony_ci
78262306a36Sopenharmony_ci#define		LmSTEPXMTFRM		0x00000002
78362306a36Sopenharmony_ci#define		LmSTEPRCVFRM		0x00000001
78462306a36Sopenharmony_ci
78562306a36Sopenharmony_ci#define LmBISTCTL0(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	  \
78662306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) + \
78762306a36Sopenharmony_ci					BISTCTL0)
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ci#define		ARBBISTEN		0x40000000
79062306a36Sopenharmony_ci#define		ARBBISTDN		0x20000000	/* ro */
79162306a36Sopenharmony_ci#define		ARBBISTFAIL		0x10000000	/* ro */
79262306a36Sopenharmony_ci#define		TBBISTEN		0x00000400
79362306a36Sopenharmony_ci#define		TBBISTDN		0x00000200	/* ro */
79462306a36Sopenharmony_ci#define		TBBISTFAIL		0x00000100	/* ro */
79562306a36Sopenharmony_ci#define		RBBISTEN		0x00000040
79662306a36Sopenharmony_ci#define		RBBISTDN		0x00000020	/* ro */
79762306a36Sopenharmony_ci#define		RBBISTFAIL		0x00000010	/* ro */
79862306a36Sopenharmony_ci#define		SGBISTEN		0x00000004
79962306a36Sopenharmony_ci#define		SGBISTDN		0x00000002	/* ro */
80062306a36Sopenharmony_ci#define		SGBISTFAIL		0x00000001	/* ro */
80162306a36Sopenharmony_ci
80262306a36Sopenharmony_ci#define LmBISTCTL1(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	 \
80362306a36Sopenharmony_ci					((LinkNum)*LmSEQ_HOST_REG_SIZE) +\
80462306a36Sopenharmony_ci					BISTCTL1)
80562306a36Sopenharmony_ci
80662306a36Sopenharmony_ci#define		LmRAMPAGE1		0x00000200
80762306a36Sopenharmony_ci#define		LmRAMPAGE0		0x00000100
80862306a36Sopenharmony_ci#define		LmIMEMBISTEN		0x00000040
80962306a36Sopenharmony_ci#define		LmIMEMBISTDN		0x00000020	/* ro */
81062306a36Sopenharmony_ci#define		LmIMEMBISTFAIL		0x00000010	/* ro */
81162306a36Sopenharmony_ci#define		LmSCRBISTEN		0x00000004
81262306a36Sopenharmony_ci#define		LmSCRBISTDN		0x00000002	/* ro */
81362306a36Sopenharmony_ci#define		LmSCRBISTFAIL		0x00000001	/* ro */
81462306a36Sopenharmony_ci#define		LmRAMPAGE		(LmRAMPAGE1 + LmRAMPAGE0)
81562306a36Sopenharmony_ci#define		LmRAMPAGE_LSHIFT	0x8
81662306a36Sopenharmony_ci
81762306a36Sopenharmony_ci#define LmSCRATCH(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	   \
81862306a36Sopenharmony_ci					((LinkNum) * LmSEQ_HOST_REG_SIZE) +\
81962306a36Sopenharmony_ci					MAPPEDSCR)
82062306a36Sopenharmony_ci
82162306a36Sopenharmony_ci#define LmSEQRAM(LinkNum)		(LSEQ0_HOST_REG_BASE_ADR +	   \
82262306a36Sopenharmony_ci					((LinkNum) * LmSEQ_HOST_REG_SIZE) +\
82362306a36Sopenharmony_ci					LSEQRAM)
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_ci/*
82662306a36Sopenharmony_ci * LmSEQ CIO Bus Register, Address Range : (0x0000-0xFFC)
82762306a36Sopenharmony_ci * 8 modes, each mode is 512 bytes.
82862306a36Sopenharmony_ci * Unless specified, the register should valid for all modes.
82962306a36Sopenharmony_ci */
83062306a36Sopenharmony_ci#define LmSEQ_CIOBUS_REG_BASE		0x2000
83162306a36Sopenharmony_ci
83262306a36Sopenharmony_ci#define  LmSEQ_PHY_BASE(Mode, LinkNum) \
83362306a36Sopenharmony_ci		(LSEQ0_HOST_REG_BASE_ADR + \
83462306a36Sopenharmony_ci		(LmSEQ_HOST_REG_SIZE * (u32) (LinkNum)) + \
83562306a36Sopenharmony_ci		LmSEQ_CIOBUS_REG_BASE + \
83662306a36Sopenharmony_ci		((u32) (Mode) * LmSEQ_MODE_PAGE_SIZE))
83762306a36Sopenharmony_ci
83862306a36Sopenharmony_ci#define  LmSEQ_PHY_REG(Mode, LinkNum, Reg) \
83962306a36Sopenharmony_ci                 (LmSEQ_PHY_BASE(Mode, LinkNum) + (u32) (Reg))
84062306a36Sopenharmony_ci
84162306a36Sopenharmony_ci#define LmMODEPTR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, MODEPTR)
84262306a36Sopenharmony_ci
84362306a36Sopenharmony_ci#define LmALTMODE(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ALTMODE)
84462306a36Sopenharmony_ci
84562306a36Sopenharmony_ci#define LmATOMICXCHG(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ATOMICXCHG)
84662306a36Sopenharmony_ci
84762306a36Sopenharmony_ci#define LmFLAG(LinkNum)			LmSEQ_PHY_REG(0, LinkNum, FLAG)
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_ci#define LmARP2INTCTL(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ARP2INTCTL)
85062306a36Sopenharmony_ci
85162306a36Sopenharmony_ci#define LmSTACK(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, STACK)
85262306a36Sopenharmony_ci
85362306a36Sopenharmony_ci#define LmFUNCTION1(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, FUNCTION1)
85462306a36Sopenharmony_ci
85562306a36Sopenharmony_ci#define LmPRGMCNT(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, PRGMCNT)
85662306a36Sopenharmony_ci
85762306a36Sopenharmony_ci#define LmACCUM(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ACCUM)
85862306a36Sopenharmony_ci
85962306a36Sopenharmony_ci#define LmSINDEX(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, SINDEX)
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_ci#define LmDINDEX(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, DINDEX)
86262306a36Sopenharmony_ci
86362306a36Sopenharmony_ci#define LmALLONES(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ALLONES)
86462306a36Sopenharmony_ci
86562306a36Sopenharmony_ci#define LmALLZEROS(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ALLZEROS)
86662306a36Sopenharmony_ci
86762306a36Sopenharmony_ci#define LmSINDIR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, SINDIR)
86862306a36Sopenharmony_ci
86962306a36Sopenharmony_ci#define LmDINDIR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, DINDIR)
87062306a36Sopenharmony_ci
87162306a36Sopenharmony_ci#define LmJUMLDIR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, JUMLDIR)
87262306a36Sopenharmony_ci
87362306a36Sopenharmony_ci#define LmARP2HALTCODE(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, ARP2HALTCODE)
87462306a36Sopenharmony_ci
87562306a36Sopenharmony_ci#define LmCURRADDR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, CURRADDR)
87662306a36Sopenharmony_ci
87762306a36Sopenharmony_ci#define LmLASTADDR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, LASTADDR)
87862306a36Sopenharmony_ci
87962306a36Sopenharmony_ci#define LmNXTLADDR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, NXTLADDR)
88062306a36Sopenharmony_ci
88162306a36Sopenharmony_ci#define LmDBGPORTPTR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, DBGPORTPTR)
88262306a36Sopenharmony_ci
88362306a36Sopenharmony_ci#define LmDBGPORT(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, DBGPORT)
88462306a36Sopenharmony_ci
88562306a36Sopenharmony_ci#define LmSCRATCHPAGE(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, SCRATCHPAGE)
88662306a36Sopenharmony_ci
88762306a36Sopenharmony_ci#define LmMnSCRATCHPAGE(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 	\
88862306a36Sopenharmony_ci						      MnSCRATCHPAGE)
88962306a36Sopenharmony_ci
89062306a36Sopenharmony_ci#define LmTIMERCALC(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x28)
89162306a36Sopenharmony_ci
89262306a36Sopenharmony_ci#define LmREQMBX(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x30)
89362306a36Sopenharmony_ci
89462306a36Sopenharmony_ci#define LmRSPMBX(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x34)
89562306a36Sopenharmony_ci
89662306a36Sopenharmony_ci#define LmMnINT(LinkNum, Mode)		LmSEQ_PHY_REG(Mode, LinkNum, 0x38)
89762306a36Sopenharmony_ci
89862306a36Sopenharmony_ci#define		CTXMEMSIZE		0x80000000	/* ro */
89962306a36Sopenharmony_ci#define		LmACKREQ		0x08000000
90062306a36Sopenharmony_ci#define		LmNAKREQ		0x04000000
90162306a36Sopenharmony_ci#define		LmMnXMTERR		0x02000000
90262306a36Sopenharmony_ci#define		LmM5OOBSVC		0x01000000
90362306a36Sopenharmony_ci#define		LmHWTINT		0x00800000
90462306a36Sopenharmony_ci#define		LmMnCTXDONE		0x00100000
90562306a36Sopenharmony_ci#define		LmM2REQMBXF		0x00080000
90662306a36Sopenharmony_ci#define		LmM2RSPMBXE		0x00040000
90762306a36Sopenharmony_ci#define		LmMnDMAERR		0x00020000
90862306a36Sopenharmony_ci#define		LmRCVPRIM		0x00010000
90962306a36Sopenharmony_ci#define		LmRCVERR		0x00008000
91062306a36Sopenharmony_ci#define		LmADDRRCV		0x00004000
91162306a36Sopenharmony_ci#define		LmMnHDRMISS		0x00002000
91262306a36Sopenharmony_ci#define		LmMnWAITSCB		0x00001000
91362306a36Sopenharmony_ci#define		LmMnRLSSCB		0x00000800
91462306a36Sopenharmony_ci#define		LmMnSAVECTX		0x00000400
91562306a36Sopenharmony_ci#define		LmMnFETCHSG		0x00000200
91662306a36Sopenharmony_ci#define		LmMnLOADCTX		0x00000100
91762306a36Sopenharmony_ci#define		LmMnCFGICL		0x00000080
91862306a36Sopenharmony_ci#define		LmMnCFGSATA		0x00000040
91962306a36Sopenharmony_ci#define		LmMnCFGEXPSATA		0x00000020
92062306a36Sopenharmony_ci#define		LmMnCFGCMPLT		0x00000010
92162306a36Sopenharmony_ci#define		LmMnCFGRBUF		0x00000008
92262306a36Sopenharmony_ci#define		LmMnSAVETTR		0x00000004
92362306a36Sopenharmony_ci#define		LmMnCFGRDAT		0x00000002
92462306a36Sopenharmony_ci#define		LmMnCFGHDR		0x00000001
92562306a36Sopenharmony_ci
92662306a36Sopenharmony_ci#define LmMnINTEN(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x3C)
92762306a36Sopenharmony_ci
92862306a36Sopenharmony_ci#define		EN_LmACKREQ		0x08000000
92962306a36Sopenharmony_ci#define		EN_LmNAKREQ		0x04000000
93062306a36Sopenharmony_ci#define		EN_LmMnXMTERR		0x02000000
93162306a36Sopenharmony_ci#define		EN_LmM5OOBSVC		0x01000000
93262306a36Sopenharmony_ci#define		EN_LmHWTINT		0x00800000
93362306a36Sopenharmony_ci#define		EN_LmMnCTXDONE		0x00100000
93462306a36Sopenharmony_ci#define		EN_LmM2REQMBXF		0x00080000
93562306a36Sopenharmony_ci#define		EN_LmM2RSPMBXE		0x00040000
93662306a36Sopenharmony_ci#define		EN_LmMnDMAERR		0x00020000
93762306a36Sopenharmony_ci#define		EN_LmRCVPRIM		0x00010000
93862306a36Sopenharmony_ci#define		EN_LmRCVERR		0x00008000
93962306a36Sopenharmony_ci#define		EN_LmADDRRCV		0x00004000
94062306a36Sopenharmony_ci#define		EN_LmMnHDRMISS		0x00002000
94162306a36Sopenharmony_ci#define		EN_LmMnWAITSCB		0x00001000
94262306a36Sopenharmony_ci#define		EN_LmMnRLSSCB		0x00000800
94362306a36Sopenharmony_ci#define		EN_LmMnSAVECTX		0x00000400
94462306a36Sopenharmony_ci#define		EN_LmMnFETCHSG		0x00000200
94562306a36Sopenharmony_ci#define		EN_LmMnLOADCTX		0x00000100
94662306a36Sopenharmony_ci#define		EN_LmMnCFGICL		0x00000080
94762306a36Sopenharmony_ci#define		EN_LmMnCFGSATA		0x00000040
94862306a36Sopenharmony_ci#define		EN_LmMnCFGEXPSATA	0x00000020
94962306a36Sopenharmony_ci#define		EN_LmMnCFGCMPLT		0x00000010
95062306a36Sopenharmony_ci#define		EN_LmMnCFGRBUF		0x00000008
95162306a36Sopenharmony_ci#define		EN_LmMnSAVETTR		0x00000004
95262306a36Sopenharmony_ci#define		EN_LmMnCFGRDAT		0x00000002
95362306a36Sopenharmony_ci#define		EN_LmMnCFGHDR		0x00000001
95462306a36Sopenharmony_ci
95562306a36Sopenharmony_ci#define		LmM0INTEN_MASK		(EN_LmMnCFGCMPLT | EN_LmMnCFGRBUF | \
95662306a36Sopenharmony_ci					 EN_LmMnSAVETTR | EN_LmMnCFGRDAT | \
95762306a36Sopenharmony_ci					 EN_LmMnCFGHDR | EN_LmRCVERR | \
95862306a36Sopenharmony_ci					 EN_LmADDRRCV | EN_LmMnHDRMISS | \
95962306a36Sopenharmony_ci					 EN_LmMnRLSSCB | EN_LmMnSAVECTX | \
96062306a36Sopenharmony_ci					 EN_LmMnFETCHSG | EN_LmMnLOADCTX | \
96162306a36Sopenharmony_ci					 EN_LmHWTINT | EN_LmMnCTXDONE | \
96262306a36Sopenharmony_ci					 EN_LmRCVPRIM | EN_LmMnCFGSATA | \
96362306a36Sopenharmony_ci					 EN_LmMnCFGEXPSATA | EN_LmMnDMAERR)
96462306a36Sopenharmony_ci
96562306a36Sopenharmony_ci#define		LmM1INTEN_MASK		(EN_LmMnCFGCMPLT | EN_LmADDRRCV | \
96662306a36Sopenharmony_ci					 EN_LmMnRLSSCB | EN_LmMnSAVECTX | \
96762306a36Sopenharmony_ci					 EN_LmMnFETCHSG | EN_LmMnLOADCTX | \
96862306a36Sopenharmony_ci					 EN_LmMnXMTERR | EN_LmHWTINT | \
96962306a36Sopenharmony_ci					 EN_LmMnCTXDONE | EN_LmRCVPRIM | \
97062306a36Sopenharmony_ci					 EN_LmRCVERR | EN_LmMnDMAERR)
97162306a36Sopenharmony_ci
97262306a36Sopenharmony_ci#define		LmM2INTEN_MASK		(EN_LmADDRRCV | EN_LmHWTINT | \
97362306a36Sopenharmony_ci					 EN_LmM2REQMBXF | EN_LmRCVPRIM | \
97462306a36Sopenharmony_ci					 EN_LmRCVERR)
97562306a36Sopenharmony_ci
97662306a36Sopenharmony_ci#define		LmM5INTEN_MASK		(EN_LmADDRRCV | EN_LmM5OOBSVC | \
97762306a36Sopenharmony_ci					 EN_LmHWTINT | EN_LmRCVPRIM | \
97862306a36Sopenharmony_ci					 EN_LmRCVERR)
97962306a36Sopenharmony_ci
98062306a36Sopenharmony_ci#define LmXMTPRIMD(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x40)
98162306a36Sopenharmony_ci
98262306a36Sopenharmony_ci#define LmXMTPRIMCS(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x44)
98362306a36Sopenharmony_ci
98462306a36Sopenharmony_ci#define LmCONSTAT(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x45)
98562306a36Sopenharmony_ci
98662306a36Sopenharmony_ci#define LmMnDMAERRS(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x46)
98762306a36Sopenharmony_ci
98862306a36Sopenharmony_ci#define LmMnSGDMAERRS(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x47)
98962306a36Sopenharmony_ci
99062306a36Sopenharmony_ci#define LmM0EXPHDRP(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x48)
99162306a36Sopenharmony_ci
99262306a36Sopenharmony_ci#define LmM1SASALIGN(LinkNum)		LmSEQ_PHY_REG(1, LinkNum, 0x48)
99362306a36Sopenharmony_ci#define SAS_ALIGN_DEFAULT		0xFF
99462306a36Sopenharmony_ci
99562306a36Sopenharmony_ci#define LmM0MSKHDRP(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x49)
99662306a36Sopenharmony_ci
99762306a36Sopenharmony_ci#define LmM1STPALIGN(LinkNum)		LmSEQ_PHY_REG(1, LinkNum, 0x49)
99862306a36Sopenharmony_ci#define STP_ALIGN_DEFAULT		0x1F
99962306a36Sopenharmony_ci
100062306a36Sopenharmony_ci#define LmM0RCVHDRP(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x4A)
100162306a36Sopenharmony_ci
100262306a36Sopenharmony_ci#define LmM1XMTHDRP(LinkNum)		LmSEQ_PHY_REG(1, LinkNum, 0x4A)
100362306a36Sopenharmony_ci
100462306a36Sopenharmony_ci#define LmM0ICLADR(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x4B)
100562306a36Sopenharmony_ci
100662306a36Sopenharmony_ci#define LmM1ALIGNMODE(LinkNum)		LmSEQ_PHY_REG(1, LinkNum, 0x4B)
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_ci#define		LmDISALIGN		0x20
100962306a36Sopenharmony_ci#define		LmROTSTPALIGN		0x10
101062306a36Sopenharmony_ci#define		LmSTPALIGN		0x08
101162306a36Sopenharmony_ci#define		LmROTNOTIFY		0x04
101262306a36Sopenharmony_ci#define		LmDUALALIGN		0x02
101362306a36Sopenharmony_ci#define		LmROTALIGN		0x01
101462306a36Sopenharmony_ci
101562306a36Sopenharmony_ci#define LmM0EXPRCVNT(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x4C)
101662306a36Sopenharmony_ci
101762306a36Sopenharmony_ci#define LmM1XMTCNT(LinkNum)		LmSEQ_PHY_REG(1, LinkNum, 0x4C)
101862306a36Sopenharmony_ci
101962306a36Sopenharmony_ci#define LmMnBUFSTAT(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x4E)
102062306a36Sopenharmony_ci
102162306a36Sopenharmony_ci#define		LmMnBUFPERR		0x01
102262306a36Sopenharmony_ci
102362306a36Sopenharmony_ci/* mode 0-1 */
102462306a36Sopenharmony_ci#define LmMnXFRLVL(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x59)
102562306a36Sopenharmony_ci
102662306a36Sopenharmony_ci#define		LmMnXFRLVL_128		0x05
102762306a36Sopenharmony_ci#define		LmMnXFRLVL_256		0x04
102862306a36Sopenharmony_ci#define		LmMnXFRLVL_512		0x03
102962306a36Sopenharmony_ci#define		LmMnXFRLVL_1024		0x02
103062306a36Sopenharmony_ci#define		LmMnXFRLVL_1536		0x01
103162306a36Sopenharmony_ci#define		LmMnXFRLVL_2048		0x00
103262306a36Sopenharmony_ci
103362306a36Sopenharmony_ci /* mode 0-1 */
103462306a36Sopenharmony_ci#define LmMnSGDMACTL(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x5A)
103562306a36Sopenharmony_ci
103662306a36Sopenharmony_ci#define 	LmMnRESETSG		0x04
103762306a36Sopenharmony_ci#define 	LmMnSTOPSG		0x02
103862306a36Sopenharmony_ci#define 	LmMnSTARTSG		0x01
103962306a36Sopenharmony_ci
104062306a36Sopenharmony_ci/* mode 0-1 */
104162306a36Sopenharmony_ci#define LmMnSGDMASTAT(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x5B)
104262306a36Sopenharmony_ci
104362306a36Sopenharmony_ci/* mode 0-1 */
104462306a36Sopenharmony_ci#define LmMnDDMACTL(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x5C)
104562306a36Sopenharmony_ci
104662306a36Sopenharmony_ci#define 	LmMnFLUSH		0x40		/* wo */
104762306a36Sopenharmony_ci#define 	LmMnRLSRTRY		0x20		/* wo */
104862306a36Sopenharmony_ci#define 	LmMnDISCARD		0x10		/* wo */
104962306a36Sopenharmony_ci#define 	LmMnRESETDAT		0x08		/* wo */
105062306a36Sopenharmony_ci#define 	LmMnSUSDAT		0x04		/* wo */
105162306a36Sopenharmony_ci#define 	LmMnSTOPDAT		0x02		/* wo */
105262306a36Sopenharmony_ci#define 	LmMnSTARTDAT		0x01		/* wo */
105362306a36Sopenharmony_ci
105462306a36Sopenharmony_ci/* mode 0-1 */
105562306a36Sopenharmony_ci#define LmMnDDMASTAT(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x5D)
105662306a36Sopenharmony_ci
105762306a36Sopenharmony_ci#define		LmMnDPEMPTY		0x80
105862306a36Sopenharmony_ci#define		LmMnFLUSHING		0x40
105962306a36Sopenharmony_ci#define		LmMnDDMAREQ		0x20
106062306a36Sopenharmony_ci#define		LmMnHDMAREQ		0x10
106162306a36Sopenharmony_ci#define		LmMnDATFREE		0x08
106262306a36Sopenharmony_ci#define		LmMnDATSUS		0x04
106362306a36Sopenharmony_ci#define		LmMnDATACT		0x02
106462306a36Sopenharmony_ci#define		LmMnDATEN		0x01
106562306a36Sopenharmony_ci
106662306a36Sopenharmony_ci/* mode 0-1 */
106762306a36Sopenharmony_ci#define LmMnDDMAMODE(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x5E)
106862306a36Sopenharmony_ci
106962306a36Sopenharmony_ci#define 	LmMnDMATYPE_NORMAL		0x0000
107062306a36Sopenharmony_ci#define 	LmMnDMATYPE_HOST_ONLY_TX	0x0001
107162306a36Sopenharmony_ci#define 	LmMnDMATYPE_DEVICE_ONLY_TX	0x0002
107262306a36Sopenharmony_ci#define 	LmMnDMATYPE_INVALID		0x0003
107362306a36Sopenharmony_ci#define 	LmMnDMATYPE_MASK	0x0003
107462306a36Sopenharmony_ci
107562306a36Sopenharmony_ci#define 	LmMnDMAWRAP		0x0004
107662306a36Sopenharmony_ci#define 	LmMnBITBUCKET		0x0008
107762306a36Sopenharmony_ci#define 	LmMnDISHDR		0x0010
107862306a36Sopenharmony_ci#define 	LmMnSTPCRC		0x0020
107962306a36Sopenharmony_ci#define 	LmXTEST			0x0040
108062306a36Sopenharmony_ci#define 	LmMnDISCRC		0x0080
108162306a36Sopenharmony_ci#define 	LmMnENINTLK		0x0100
108262306a36Sopenharmony_ci#define 	LmMnADDRFRM		0x0400
108362306a36Sopenharmony_ci#define 	LmMnENXMTCRC		0x0800
108462306a36Sopenharmony_ci
108562306a36Sopenharmony_ci/* mode 0-1 */
108662306a36Sopenharmony_ci#define LmMnXFRCNT(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x70)
108762306a36Sopenharmony_ci
108862306a36Sopenharmony_ci/* mode 0-1 */
108962306a36Sopenharmony_ci#define LmMnDPSEL(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x7B)
109062306a36Sopenharmony_ci#define 	LmMnDPSEL_MASK		0x07
109162306a36Sopenharmony_ci#define 	LmMnEOLPRE		0x40
109262306a36Sopenharmony_ci#define 	LmMnEOSPRE		0x80
109362306a36Sopenharmony_ci
109462306a36Sopenharmony_ci/* Registers used in conjunction with LmMnDPSEL and LmMnDPACC registers */
109562306a36Sopenharmony_ci/* Receive Mode n = 0 */
109662306a36Sopenharmony_ci#define LmMnHRADDR			0x00
109762306a36Sopenharmony_ci#define LmMnHBYTECNT			0x01
109862306a36Sopenharmony_ci#define LmMnHREWIND			0x02
109962306a36Sopenharmony_ci#define LmMnDWADDR			0x03
110062306a36Sopenharmony_ci#define LmMnDSPACECNT			0x04
110162306a36Sopenharmony_ci#define LmMnDFRMSIZE			0x05
110262306a36Sopenharmony_ci
110362306a36Sopenharmony_ci/* Registers used in conjunction with LmMnDPSEL and LmMnDPACC registers */
110462306a36Sopenharmony_ci/* Transmit Mode n = 1 */
110562306a36Sopenharmony_ci#define LmMnHWADDR			0x00
110662306a36Sopenharmony_ci#define LmMnHSPACECNT			0x01
110762306a36Sopenharmony_ci/* #define LmMnHREWIND			0x02 */
110862306a36Sopenharmony_ci#define LmMnDRADDR			0x03
110962306a36Sopenharmony_ci#define LmMnDBYTECNT			0x04
111062306a36Sopenharmony_ci/* #define LmMnDFRMSIZE			0x05 */
111162306a36Sopenharmony_ci
111262306a36Sopenharmony_ci/* mode 0-1 */
111362306a36Sopenharmony_ci#define LmMnDPACC(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x78)
111462306a36Sopenharmony_ci#define 	LmMnDPACC_MASK		0x00FFFFFF
111562306a36Sopenharmony_ci
111662306a36Sopenharmony_ci/* mode 0-1 */
111762306a36Sopenharmony_ci#define LmMnHOLDLVL(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x7D)
111862306a36Sopenharmony_ci
111962306a36Sopenharmony_ci#define LmPRMSTAT0(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x80)
112062306a36Sopenharmony_ci#define LmPRMSTAT0BYTE0			0x80
112162306a36Sopenharmony_ci#define LmPRMSTAT0BYTE1			0x81
112262306a36Sopenharmony_ci#define LmPRMSTAT0BYTE2			0x82
112362306a36Sopenharmony_ci#define LmPRMSTAT0BYTE3			0x83
112462306a36Sopenharmony_ci
112562306a36Sopenharmony_ci#define		LmFRAMERCVD		0x80000000
112662306a36Sopenharmony_ci#define		LmXFRRDYRCVD		0x40000000
112762306a36Sopenharmony_ci#define		LmUNKNOWNP		0x20000000
112862306a36Sopenharmony_ci#define		LmBREAK			0x10000000
112962306a36Sopenharmony_ci#define		LmDONE			0x08000000
113062306a36Sopenharmony_ci#define		LmOPENACPT		0x04000000
113162306a36Sopenharmony_ci#define		LmOPENRJCT		0x02000000
113262306a36Sopenharmony_ci#define		LmOPENRTRY		0x01000000
113362306a36Sopenharmony_ci#define		LmCLOSERV1		0x00800000
113462306a36Sopenharmony_ci#define		LmCLOSERV0		0x00400000
113562306a36Sopenharmony_ci#define		LmCLOSENORM		0x00200000
113662306a36Sopenharmony_ci#define		LmCLOSECLAF		0x00100000
113762306a36Sopenharmony_ci#define		LmNOTIFYRV2		0x00080000
113862306a36Sopenharmony_ci#define		LmNOTIFYRV1		0x00040000
113962306a36Sopenharmony_ci#define		LmNOTIFYRV0		0x00020000
114062306a36Sopenharmony_ci#define		LmNOTIFYSPIN		0x00010000
114162306a36Sopenharmony_ci#define		LmBROADRV4		0x00008000
114262306a36Sopenharmony_ci#define		LmBROADRV3		0x00004000
114362306a36Sopenharmony_ci#define		LmBROADRV2		0x00002000
114462306a36Sopenharmony_ci#define		LmBROADRV1		0x00001000
114562306a36Sopenharmony_ci#define		LmBROADSES		0x00000800
114662306a36Sopenharmony_ci#define		LmBROADRVCH1		0x00000400
114762306a36Sopenharmony_ci#define		LmBROADRVCH0		0x00000200
114862306a36Sopenharmony_ci#define		LmBROADCH		0x00000100
114962306a36Sopenharmony_ci#define		LmAIPRVWP		0x00000080
115062306a36Sopenharmony_ci#define		LmAIPWP			0x00000040
115162306a36Sopenharmony_ci#define		LmAIPWD			0x00000020
115262306a36Sopenharmony_ci#define		LmAIPWC			0x00000010
115362306a36Sopenharmony_ci#define		LmAIPRV2		0x00000008
115462306a36Sopenharmony_ci#define		LmAIPRV1		0x00000004
115562306a36Sopenharmony_ci#define		LmAIPRV0		0x00000002
115662306a36Sopenharmony_ci#define		LmAIPNRML		0x00000001
115762306a36Sopenharmony_ci
115862306a36Sopenharmony_ci#define		LmBROADCAST_MASK	(LmBROADCH | LmBROADRVCH0 | \
115962306a36Sopenharmony_ci					 LmBROADRVCH1)
116062306a36Sopenharmony_ci
116162306a36Sopenharmony_ci#define LmPRMSTAT1(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0x84)
116262306a36Sopenharmony_ci#define LmPRMSTAT1BYTE0			0x84
116362306a36Sopenharmony_ci#define LmPRMSTAT1BYTE1			0x85
116462306a36Sopenharmony_ci#define LmPRMSTAT1BYTE2			0x86
116562306a36Sopenharmony_ci#define LmPRMSTAT1BYTE3			0x87
116662306a36Sopenharmony_ci
116762306a36Sopenharmony_ci#define		LmFRMRCVDSTAT		0x80000000
116862306a36Sopenharmony_ci#define		LmBREAK_DET		0x04000000
116962306a36Sopenharmony_ci#define		LmCLOSE_DET		0x02000000
117062306a36Sopenharmony_ci#define		LmDONE_DET		0x01000000
117162306a36Sopenharmony_ci#define		LmXRDY			0x00040000
117262306a36Sopenharmony_ci#define 	LmSYNCSRST		0x00020000
117362306a36Sopenharmony_ci#define 	LmSYNC			0x00010000
117462306a36Sopenharmony_ci#define 	LmXHOLD			0x00008000
117562306a36Sopenharmony_ci#define 	LmRRDY			0x00004000
117662306a36Sopenharmony_ci#define 	LmHOLD			0x00002000
117762306a36Sopenharmony_ci#define 	LmROK			0x00001000
117862306a36Sopenharmony_ci#define 	LmRIP			0x00000800
117962306a36Sopenharmony_ci#define 	LmCRBLK			0x00000400
118062306a36Sopenharmony_ci#define 	LmACK			0x00000200
118162306a36Sopenharmony_ci#define 	LmNAK			0x00000100
118262306a36Sopenharmony_ci#define 	LmHARDRST		0x00000080
118362306a36Sopenharmony_ci#define 	LmERROR			0x00000040
118462306a36Sopenharmony_ci#define 	LmRERR			0x00000020
118562306a36Sopenharmony_ci#define 	LmPMREQP		0x00000010
118662306a36Sopenharmony_ci#define 	LmPMREQS		0x00000008
118762306a36Sopenharmony_ci#define 	LmPMACK			0x00000004
118862306a36Sopenharmony_ci#define 	LmPMNAK			0x00000002
118962306a36Sopenharmony_ci#define 	LmDMAT			0x00000001
119062306a36Sopenharmony_ci
119162306a36Sopenharmony_ci/* mode 1 */
119262306a36Sopenharmony_ci#define	LmMnSATAFS(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x7E)
119362306a36Sopenharmony_ci#define	LmMnXMTSIZE(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0x93)
119462306a36Sopenharmony_ci
119562306a36Sopenharmony_ci/* mode 0 */
119662306a36Sopenharmony_ci#define LmMnFRMERR(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0xB0)
119762306a36Sopenharmony_ci
119862306a36Sopenharmony_ci#define		LmACRCERR		0x00000800
119962306a36Sopenharmony_ci#define		LmPHYOVRN		0x00000400
120062306a36Sopenharmony_ci#define		LmOBOVRN		0x00000200
120162306a36Sopenharmony_ci#define 	LmMnZERODATA		0x00000100
120262306a36Sopenharmony_ci#define		LmSATAINTLK		0x00000080
120362306a36Sopenharmony_ci#define		LmMnCRCERR		0x00000020
120462306a36Sopenharmony_ci#define		LmRRDYOVRN		0x00000010
120562306a36Sopenharmony_ci#define		LmMISSSOAF		0x00000008
120662306a36Sopenharmony_ci#define		LmMISSSOF		0x00000004
120762306a36Sopenharmony_ci#define		LmMISSEOAF		0x00000002
120862306a36Sopenharmony_ci#define		LmMISSEOF		0x00000001
120962306a36Sopenharmony_ci
121062306a36Sopenharmony_ci#define LmFRMERREN(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0xB4)
121162306a36Sopenharmony_ci
121262306a36Sopenharmony_ci#define 	EN_LmACRCERR		0x00000800
121362306a36Sopenharmony_ci#define 	EN_LmPHYOVRN		0x00000400
121462306a36Sopenharmony_ci#define 	EN_LmOBOVRN		0x00000200
121562306a36Sopenharmony_ci#define 	EN_LmMnZERODATA		0x00000100
121662306a36Sopenharmony_ci#define 	EN_LmSATAINTLK		0x00000080
121762306a36Sopenharmony_ci#define 	EN_LmFRMBAD		0x00000040
121862306a36Sopenharmony_ci#define 	EN_LmMnCRCERR		0x00000020
121962306a36Sopenharmony_ci#define 	EN_LmRRDYOVRN		0x00000010
122062306a36Sopenharmony_ci#define 	EN_LmMISSSOAF		0x00000008
122162306a36Sopenharmony_ci#define 	EN_LmMISSSOF		0x00000004
122262306a36Sopenharmony_ci#define 	EN_LmMISSEOAF		0x00000002
122362306a36Sopenharmony_ci#define 	EN_LmMISSEOF		0x00000001
122462306a36Sopenharmony_ci
122562306a36Sopenharmony_ci#define 	LmFRMERREN_MASK  	(EN_LmSATAINTLK | EN_LmMnCRCERR | \
122662306a36Sopenharmony_ci					 EN_LmRRDYOVRN | EN_LmMISSSOF | \
122762306a36Sopenharmony_ci					 EN_LmMISSEOAF | EN_LmMISSEOF | \
122862306a36Sopenharmony_ci					 EN_LmACRCERR | LmPHYOVRN | \
122962306a36Sopenharmony_ci					 EN_LmOBOVRN | EN_LmMnZERODATA)
123062306a36Sopenharmony_ci
123162306a36Sopenharmony_ci#define LmHWTSTATEN(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0xC5)
123262306a36Sopenharmony_ci
123362306a36Sopenharmony_ci#define		EN_LmDONETO		0x80
123462306a36Sopenharmony_ci#define		EN_LmINVDISP		0x40
123562306a36Sopenharmony_ci#define		EN_LmINVDW		0x20
123662306a36Sopenharmony_ci#define		EN_LmDWSEVENT		0x08
123762306a36Sopenharmony_ci#define		EN_LmCRTTTO		0x04
123862306a36Sopenharmony_ci#define		EN_LmANTTTO		0x02
123962306a36Sopenharmony_ci#define		EN_LmBITLTTO		0x01
124062306a36Sopenharmony_ci
124162306a36Sopenharmony_ci#define		LmHWTSTATEN_MASK	(EN_LmINVDISP | EN_LmINVDW | \
124262306a36Sopenharmony_ci					 EN_LmDWSEVENT | EN_LmCRTTTO | \
124362306a36Sopenharmony_ci					 EN_LmANTTTO | EN_LmDONETO | \
124462306a36Sopenharmony_ci					 EN_LmBITLTTO)
124562306a36Sopenharmony_ci
124662306a36Sopenharmony_ci#define LmHWTSTAT(LinkNum) 		LmSEQ_PHY_REG(0, LinkNum, 0xC7)
124762306a36Sopenharmony_ci
124862306a36Sopenharmony_ci#define		LmDONETO		0x80
124962306a36Sopenharmony_ci#define		LmINVDISP		0x40
125062306a36Sopenharmony_ci#define		LmINVDW			0x20
125162306a36Sopenharmony_ci#define		LmDWSEVENT		0x08
125262306a36Sopenharmony_ci#define		LmCRTTTO		0x04
125362306a36Sopenharmony_ci#define		LmANTTTO		0x02
125462306a36Sopenharmony_ci#define		LmBITLTTO		0x01
125562306a36Sopenharmony_ci
125662306a36Sopenharmony_ci#define LmMnDATABUFADR(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0xC8)
125762306a36Sopenharmony_ci#define		LmDATABUFADR_MASK	0x0FFF
125862306a36Sopenharmony_ci
125962306a36Sopenharmony_ci#define LmMnDATABUF(LinkNum, Mode)	LmSEQ_PHY_REG(Mode, LinkNum, 0xCA)
126062306a36Sopenharmony_ci
126162306a36Sopenharmony_ci#define	LmPRIMSTAT0EN(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0xE0)
126262306a36Sopenharmony_ci
126362306a36Sopenharmony_ci#define 	EN_LmUNKNOWNP 		0x20000000
126462306a36Sopenharmony_ci#define 	EN_LmBREAK		0x10000000
126562306a36Sopenharmony_ci#define 	EN_LmDONE		0x08000000
126662306a36Sopenharmony_ci#define 	EN_LmOPENACPT		0x04000000
126762306a36Sopenharmony_ci#define 	EN_LmOPENRJCT		0x02000000
126862306a36Sopenharmony_ci#define 	EN_LmOPENRTRY		0x01000000
126962306a36Sopenharmony_ci#define 	EN_LmCLOSERV1		0x00800000
127062306a36Sopenharmony_ci#define 	EN_LmCLOSERV0		0x00400000
127162306a36Sopenharmony_ci#define 	EN_LmCLOSENORM		0x00200000
127262306a36Sopenharmony_ci#define 	EN_LmCLOSECLAF		0x00100000
127362306a36Sopenharmony_ci#define 	EN_LmNOTIFYRV2		0x00080000
127462306a36Sopenharmony_ci#define 	EN_LmNOTIFYRV1		0x00040000
127562306a36Sopenharmony_ci#define 	EN_LmNOTIFYRV0		0x00020000
127662306a36Sopenharmony_ci#define 	EN_LmNOTIFYSPIN		0x00010000
127762306a36Sopenharmony_ci#define 	EN_LmBROADRV4		0x00008000
127862306a36Sopenharmony_ci#define 	EN_LmBROADRV3		0x00004000
127962306a36Sopenharmony_ci#define 	EN_LmBROADRV2		0x00002000
128062306a36Sopenharmony_ci#define 	EN_LmBROADRV1		0x00001000
128162306a36Sopenharmony_ci#define 	EN_LmBROADRV0		0x00000800
128262306a36Sopenharmony_ci#define 	EN_LmBROADRVCH1		0x00000400
128362306a36Sopenharmony_ci#define 	EN_LmBROADRVCH0		0x00000200
128462306a36Sopenharmony_ci#define 	EN_LmBROADCH		0x00000100
128562306a36Sopenharmony_ci#define 	EN_LmAIPRVWP		0x00000080
128662306a36Sopenharmony_ci#define 	EN_LmAIPWP		0x00000040
128762306a36Sopenharmony_ci#define 	EN_LmAIPWD		0x00000020
128862306a36Sopenharmony_ci#define 	EN_LmAIPWC		0x00000010
128962306a36Sopenharmony_ci#define 	EN_LmAIPRV2		0x00000008
129062306a36Sopenharmony_ci#define 	EN_LmAIPRV1		0x00000004
129162306a36Sopenharmony_ci#define 	EN_LmAIPRV0		0x00000002
129262306a36Sopenharmony_ci#define 	EN_LmAIPNRML		0x00000001
129362306a36Sopenharmony_ci
129462306a36Sopenharmony_ci#define		LmPRIMSTAT0EN_MASK	(EN_LmBREAK | \
129562306a36Sopenharmony_ci					 EN_LmDONE | EN_LmOPENACPT | \
129662306a36Sopenharmony_ci					 EN_LmOPENRJCT | EN_LmOPENRTRY | \
129762306a36Sopenharmony_ci					 EN_LmCLOSERV1 | EN_LmCLOSERV0 | \
129862306a36Sopenharmony_ci					 EN_LmCLOSENORM | EN_LmCLOSECLAF | \
129962306a36Sopenharmony_ci					 EN_LmBROADRV4 | EN_LmBROADRV3 | \
130062306a36Sopenharmony_ci					 EN_LmBROADRV2 | EN_LmBROADRV1 | \
130162306a36Sopenharmony_ci					 EN_LmBROADRV0 | EN_LmBROADRVCH1 | \
130262306a36Sopenharmony_ci					 EN_LmBROADRVCH0 | EN_LmBROADCH | \
130362306a36Sopenharmony_ci					 EN_LmAIPRVWP | EN_LmAIPWP | \
130462306a36Sopenharmony_ci					 EN_LmAIPWD | EN_LmAIPWC | \
130562306a36Sopenharmony_ci					 EN_LmAIPRV2 | EN_LmAIPRV1 | \
130662306a36Sopenharmony_ci					 EN_LmAIPRV0 | EN_LmAIPNRML)
130762306a36Sopenharmony_ci
130862306a36Sopenharmony_ci#define LmPRIMSTAT1EN(LinkNum)		LmSEQ_PHY_REG(0, LinkNum, 0xE4)
130962306a36Sopenharmony_ci
131062306a36Sopenharmony_ci#define		EN_LmXRDY		0x00040000
131162306a36Sopenharmony_ci#define		EN_LmSYNCSRST		0x00020000
131262306a36Sopenharmony_ci#define		EN_LmSYNC		0x00010000
131362306a36Sopenharmony_ci#define 	EN_LmXHOLD		0x00008000
131462306a36Sopenharmony_ci#define 	EN_LmRRDY		0x00004000
131562306a36Sopenharmony_ci#define 	EN_LmHOLD		0x00002000
131662306a36Sopenharmony_ci#define 	EN_LmROK		0x00001000
131762306a36Sopenharmony_ci#define 	EN_LmRIP		0x00000800
131862306a36Sopenharmony_ci#define 	EN_LmCRBLK		0x00000400
131962306a36Sopenharmony_ci#define 	EN_LmACK		0x00000200
132062306a36Sopenharmony_ci#define 	EN_LmNAK		0x00000100
132162306a36Sopenharmony_ci#define 	EN_LmHARDRST		0x00000080
132262306a36Sopenharmony_ci#define 	EN_LmERROR		0x00000040
132362306a36Sopenharmony_ci#define 	EN_LmRERR		0x00000020
132462306a36Sopenharmony_ci#define 	EN_LmPMREQP		0x00000010
132562306a36Sopenharmony_ci#define 	EN_LmPMREQS		0x00000008
132662306a36Sopenharmony_ci#define 	EN_LmPMACK		0x00000004
132762306a36Sopenharmony_ci#define 	EN_LmPMNAK		0x00000002
132862306a36Sopenharmony_ci#define 	EN_LmDMAT		0x00000001
132962306a36Sopenharmony_ci
133062306a36Sopenharmony_ci#define LmPRIMSTAT1EN_MASK		(EN_LmHARDRST | \
133162306a36Sopenharmony_ci					 EN_LmSYNCSRST | \
133262306a36Sopenharmony_ci					 EN_LmPMREQP | EN_LmPMREQS | \
133362306a36Sopenharmony_ci					 EN_LmPMACK | EN_LmPMNAK)
133462306a36Sopenharmony_ci
133562306a36Sopenharmony_ci#define LmSMSTATE(LinkNum) 		LmSEQ_PHY_REG(0, LinkNum, 0xE8)
133662306a36Sopenharmony_ci
133762306a36Sopenharmony_ci#define LmSMSTATEBRK(LinkNum) 		LmSEQ_PHY_REG(0, LinkNum, 0xEC)
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_ci#define LmSMDBGCTL(LinkNum) 		LmSEQ_PHY_REG(0, LinkNum, 0xF0)
134062306a36Sopenharmony_ci
134162306a36Sopenharmony_ci
134262306a36Sopenharmony_ci/*
134362306a36Sopenharmony_ci * LmSEQ CIO Bus Mode 3 Register.
134462306a36Sopenharmony_ci * Mode 3: Configuration and Setup, IOP Context SCB.
134562306a36Sopenharmony_ci */
134662306a36Sopenharmony_ci#define LmM3SATATIMER(LinkNum) 		LmSEQ_PHY_REG(3, LinkNum, 0x48)
134762306a36Sopenharmony_ci
134862306a36Sopenharmony_ci#define LmM3INTVEC0(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x90)
134962306a36Sopenharmony_ci
135062306a36Sopenharmony_ci#define LmM3INTVEC1(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x92)
135162306a36Sopenharmony_ci
135262306a36Sopenharmony_ci#define LmM3INTVEC2(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x94)
135362306a36Sopenharmony_ci
135462306a36Sopenharmony_ci#define LmM3INTVEC3(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x96)
135562306a36Sopenharmony_ci
135662306a36Sopenharmony_ci#define LmM3INTVEC4(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x98)
135762306a36Sopenharmony_ci
135862306a36Sopenharmony_ci#define LmM3INTVEC5(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x9A)
135962306a36Sopenharmony_ci
136062306a36Sopenharmony_ci#define LmM3INTVEC6(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x9C)
136162306a36Sopenharmony_ci
136262306a36Sopenharmony_ci#define LmM3INTVEC7(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0x9E)
136362306a36Sopenharmony_ci
136462306a36Sopenharmony_ci#define LmM3INTVEC8(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0xA4)
136562306a36Sopenharmony_ci
136662306a36Sopenharmony_ci#define LmM3INTVEC9(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0xA6)
136762306a36Sopenharmony_ci
136862306a36Sopenharmony_ci#define LmM3INTVEC10(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0xB0)
136962306a36Sopenharmony_ci
137062306a36Sopenharmony_ci#define LmM3FRMGAP(LinkNum)		LmSEQ_PHY_REG(3, LinkNum, 0xB4)
137162306a36Sopenharmony_ci
137262306a36Sopenharmony_ci#define LmBITL_TIMER(LinkNum) 		LmSEQ_PHY_REG(0, LinkNum, 0xA2)
137362306a36Sopenharmony_ci
137462306a36Sopenharmony_ci#define LmWWN(LinkNum) 			LmSEQ_PHY_REG(0, LinkNum, 0xA8)
137562306a36Sopenharmony_ci
137662306a36Sopenharmony_ci
137762306a36Sopenharmony_ci/*
137862306a36Sopenharmony_ci * LmSEQ CIO Bus Mode 5 Registers.
137962306a36Sopenharmony_ci * Mode 5: Phy/OOB Control and Status.
138062306a36Sopenharmony_ci */
138162306a36Sopenharmony_ci#define LmSEQ_OOB_REG(phy_id, reg)	LmSEQ_PHY_REG(5, (phy_id), (reg))
138262306a36Sopenharmony_ci
138362306a36Sopenharmony_ci#define OOB_BFLTR	0x100
138462306a36Sopenharmony_ci
138562306a36Sopenharmony_ci#define		BFLTR_THR_MASK		0xF0
138662306a36Sopenharmony_ci#define		BFLTR_TC_MASK		0x0F
138762306a36Sopenharmony_ci
138862306a36Sopenharmony_ci#define OOB_INIT_MIN	0x102
138962306a36Sopenharmony_ci
139062306a36Sopenharmony_ci#define OOB_INIT_MAX	0x104
139162306a36Sopenharmony_ci
139262306a36Sopenharmony_ci#define OOB_INIT_NEG	0x106
139362306a36Sopenharmony_ci
139462306a36Sopenharmony_ci#define	OOB_SAS_MIN	0x108
139562306a36Sopenharmony_ci
139662306a36Sopenharmony_ci#define OOB_SAS_MAX	0x10A
139762306a36Sopenharmony_ci
139862306a36Sopenharmony_ci#define OOB_SAS_NEG	0x10C
139962306a36Sopenharmony_ci
140062306a36Sopenharmony_ci#define OOB_WAKE_MIN	0x10E
140162306a36Sopenharmony_ci
140262306a36Sopenharmony_ci#define OOB_WAKE_MAX	0x110
140362306a36Sopenharmony_ci
140462306a36Sopenharmony_ci#define OOB_WAKE_NEG	0x112
140562306a36Sopenharmony_ci
140662306a36Sopenharmony_ci#define OOB_IDLE_MAX	0x114
140762306a36Sopenharmony_ci
140862306a36Sopenharmony_ci#define OOB_BURST_MAX	0x116
140962306a36Sopenharmony_ci
141062306a36Sopenharmony_ci#define OOB_DATA_KBITS	0x126
141162306a36Sopenharmony_ci
141262306a36Sopenharmony_ci#define OOB_ALIGN_0_DATA	0x12C
141362306a36Sopenharmony_ci
141462306a36Sopenharmony_ci#define OOB_ALIGN_1_DATA	0x130
141562306a36Sopenharmony_ci
141662306a36Sopenharmony_ci#define D10_2_DATA_k		0x00
141762306a36Sopenharmony_ci#define SYNC_DATA_k		0x02
141862306a36Sopenharmony_ci#define ALIGN_1_DATA_k		0x04
141962306a36Sopenharmony_ci#define ALIGN_0_DATA_k		0x08
142062306a36Sopenharmony_ci#define BURST_DATA_k		0x10
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_ci#define OOB_PHY_RESET_COUNT	0x13C
142362306a36Sopenharmony_ci
142462306a36Sopenharmony_ci#define OOB_SIG_GEN	0x140
142562306a36Sopenharmony_ci
142662306a36Sopenharmony_ci#define		START_OOB		0x80
142762306a36Sopenharmony_ci#define		START_DWS		0x40
142862306a36Sopenharmony_ci#define		ALIGN_CNT3		0x30
142962306a36Sopenharmony_ci#define 	ALIGN_CNT2		0x20
143062306a36Sopenharmony_ci#define 	ALIGN_CNT1		0x10
143162306a36Sopenharmony_ci#define 	ALIGN_CNT4		0x00
143262306a36Sopenharmony_ci#define		STOP_DWS		0x08
143362306a36Sopenharmony_ci#define		SEND_COMSAS		0x04
143462306a36Sopenharmony_ci#define		SEND_COMINIT		0x02
143562306a36Sopenharmony_ci#define		SEND_COMWAKE		0x01
143662306a36Sopenharmony_ci
143762306a36Sopenharmony_ci#define OOB_XMIT	0x141
143862306a36Sopenharmony_ci
143962306a36Sopenharmony_ci#define		TX_ENABLE		0x80
144062306a36Sopenharmony_ci#define		XMIT_OOB_BURST		0x10
144162306a36Sopenharmony_ci#define		XMIT_D10_2		0x08
144262306a36Sopenharmony_ci#define		XMIT_SYNC		0x04
144362306a36Sopenharmony_ci#define		XMIT_ALIGN_1		0x02
144462306a36Sopenharmony_ci#define		XMIT_ALIGN_0		0x01
144562306a36Sopenharmony_ci
144662306a36Sopenharmony_ci#define FUNCTION_MASK	0x142
144762306a36Sopenharmony_ci
144862306a36Sopenharmony_ci#define		SAS_MODE_DIS		0x80
144962306a36Sopenharmony_ci#define		SATA_MODE_DIS		0x40
145062306a36Sopenharmony_ci#define		SPINUP_HOLD_DIS		0x20
145162306a36Sopenharmony_ci#define		HOT_PLUG_DIS		0x10
145262306a36Sopenharmony_ci#define		SATA_PS_DIS		0x08
145362306a36Sopenharmony_ci#define		FUNCTION_MASK_DEFAULT	(SPINUP_HOLD_DIS | SATA_PS_DIS)
145462306a36Sopenharmony_ci
145562306a36Sopenharmony_ci#define OOB_MODE	0x143
145662306a36Sopenharmony_ci
145762306a36Sopenharmony_ci#define		SAS_MODE		0x80
145862306a36Sopenharmony_ci#define		SATA_MODE		0x40
145962306a36Sopenharmony_ci#define		SLOW_CLK		0x20
146062306a36Sopenharmony_ci#define		FORCE_XMIT_15		0x08
146162306a36Sopenharmony_ci#define		PHY_SPEED_60		0x04
146262306a36Sopenharmony_ci#define		PHY_SPEED_30		0x02
146362306a36Sopenharmony_ci#define		PHY_SPEED_15		0x01
146462306a36Sopenharmony_ci
146562306a36Sopenharmony_ci#define	CURRENT_STATUS	0x144
146662306a36Sopenharmony_ci
146762306a36Sopenharmony_ci#define		CURRENT_OOB_DONE	0x80
146862306a36Sopenharmony_ci#define		CURRENT_LOSS_OF_SIGNAL	0x40
146962306a36Sopenharmony_ci#define		CURRENT_SPINUP_HOLD	0x20
147062306a36Sopenharmony_ci#define		CURRENT_HOT_PLUG_CNCT	0x10
147162306a36Sopenharmony_ci#define		CURRENT_GTO_TIMEOUT	0x08
147262306a36Sopenharmony_ci#define		CURRENT_OOB_TIMEOUT	0x04
147362306a36Sopenharmony_ci#define		CURRENT_DEVICE_PRESENT	0x02
147462306a36Sopenharmony_ci#define		CURRENT_OOB_ERROR	0x01
147562306a36Sopenharmony_ci
147662306a36Sopenharmony_ci#define 	CURRENT_OOB1_ERROR	(CURRENT_HOT_PLUG_CNCT | \
147762306a36Sopenharmony_ci					 CURRENT_GTO_TIMEOUT)
147862306a36Sopenharmony_ci
147962306a36Sopenharmony_ci#define 	CURRENT_OOB2_ERROR	(CURRENT_HOT_PLUG_CNCT | \
148062306a36Sopenharmony_ci					 CURRENT_OOB_ERROR)
148162306a36Sopenharmony_ci
148262306a36Sopenharmony_ci#define		DEVICE_ADDED_W_CNT	(CURRENT_OOB_DONE | \
148362306a36Sopenharmony_ci					 CURRENT_HOT_PLUG_CNCT | \
148462306a36Sopenharmony_ci					 CURRENT_DEVICE_PRESENT)
148562306a36Sopenharmony_ci
148662306a36Sopenharmony_ci#define		DEVICE_ADDED_WO_CNT	(CURRENT_OOB_DONE | \
148762306a36Sopenharmony_ci					 CURRENT_DEVICE_PRESENT)
148862306a36Sopenharmony_ci
148962306a36Sopenharmony_ci#define 	DEVICE_REMOVED		CURRENT_LOSS_OF_SIGNAL
149062306a36Sopenharmony_ci
149162306a36Sopenharmony_ci#define		CURRENT_PHY_MASK	(CURRENT_OOB_DONE | \
149262306a36Sopenharmony_ci					 CURRENT_LOSS_OF_SIGNAL | \
149362306a36Sopenharmony_ci					 CURRENT_SPINUP_HOLD | \
149462306a36Sopenharmony_ci					 CURRENT_HOT_PLUG_CNCT | \
149562306a36Sopenharmony_ci					 CURRENT_GTO_TIMEOUT | \
149662306a36Sopenharmony_ci					 CURRENT_DEVICE_PRESENT | \
149762306a36Sopenharmony_ci					 CURRENT_OOB_ERROR )
149862306a36Sopenharmony_ci
149962306a36Sopenharmony_ci#define		CURRENT_ERR_MASK	(CURRENT_LOSS_OF_SIGNAL | \
150062306a36Sopenharmony_ci					 CURRENT_GTO_TIMEOUT | \
150162306a36Sopenharmony_ci					 CURRENT_OOB_TIMEOUT | \
150262306a36Sopenharmony_ci					 CURRENT_OOB_ERROR )
150362306a36Sopenharmony_ci
150462306a36Sopenharmony_ci#define SPEED_MASK	0x145
150562306a36Sopenharmony_ci
150662306a36Sopenharmony_ci#define		SATA_SPEED_30_DIS	0x10
150762306a36Sopenharmony_ci#define		SATA_SPEED_15_DIS	0x08
150862306a36Sopenharmony_ci#define		SAS_SPEED_60_DIS	0x04
150962306a36Sopenharmony_ci#define		SAS_SPEED_30_DIS	0x02
151062306a36Sopenharmony_ci#define		SAS_SPEED_15_DIS	0x01
151162306a36Sopenharmony_ci#define		SAS_SPEED_MASK_DEFAULT	0x00
151262306a36Sopenharmony_ci
151362306a36Sopenharmony_ci#define OOB_TIMER_ENABLE	0x14D
151462306a36Sopenharmony_ci
151562306a36Sopenharmony_ci#define		HOT_PLUG_EN		0x80
151662306a36Sopenharmony_ci#define		RCD_EN			0x40
151762306a36Sopenharmony_ci#define 	COMTIMER_EN		0x20
151862306a36Sopenharmony_ci#define		SNTT_EN			0x10
151962306a36Sopenharmony_ci#define		SNLT_EN			0x04
152062306a36Sopenharmony_ci#define		SNWT_EN			0x02
152162306a36Sopenharmony_ci#define		ALIGN_EN		0x01
152262306a36Sopenharmony_ci
152362306a36Sopenharmony_ci#define OOB_STATUS		0x14E
152462306a36Sopenharmony_ci
152562306a36Sopenharmony_ci#define		OOB_DONE		0x80
152662306a36Sopenharmony_ci#define		LOSS_OF_SIGNAL		0x40		/* ro */
152762306a36Sopenharmony_ci#define		SPINUP_HOLD		0x20
152862306a36Sopenharmony_ci#define		HOT_PLUG_CNCT		0x10		/* ro */
152962306a36Sopenharmony_ci#define		GTO_TIMEOUT		0x08		/* ro */
153062306a36Sopenharmony_ci#define		OOB_TIMEOUT		0x04		/* ro */
153162306a36Sopenharmony_ci#define		DEVICE_PRESENT		0x02		/* ro */
153262306a36Sopenharmony_ci#define		OOB_ERROR		0x01		/* ro */
153362306a36Sopenharmony_ci
153462306a36Sopenharmony_ci#define		OOB_STATUS_ERROR_MASK	(LOSS_OF_SIGNAL | GTO_TIMEOUT | \
153562306a36Sopenharmony_ci					 OOB_TIMEOUT | OOB_ERROR)
153662306a36Sopenharmony_ci
153762306a36Sopenharmony_ci#define OOB_STATUS_CLEAR	0x14F
153862306a36Sopenharmony_ci
153962306a36Sopenharmony_ci#define		OOB_DONE_CLR		0x80
154062306a36Sopenharmony_ci#define		LOSS_OF_SIGNAL_CLR 	0x40
154162306a36Sopenharmony_ci#define		SPINUP_HOLD_CLR		0x20
154262306a36Sopenharmony_ci#define		HOT_PLUG_CNCT_CLR     	0x10
154362306a36Sopenharmony_ci#define		GTO_TIMEOUT_CLR		0x08
154462306a36Sopenharmony_ci#define		OOB_TIMEOUT_CLR		0x04
154562306a36Sopenharmony_ci#define		OOB_ERROR_CLR		0x01
154662306a36Sopenharmony_ci
154762306a36Sopenharmony_ci#define HOT_PLUG_DELAY		0x150
154862306a36Sopenharmony_ci/* In 5 ms units. 20 = 100 ms. */
154962306a36Sopenharmony_ci#define	HOTPLUG_DELAY_TIMEOUT		20
155062306a36Sopenharmony_ci
155162306a36Sopenharmony_ci
155262306a36Sopenharmony_ci#define INT_ENABLE_2		0x15A
155362306a36Sopenharmony_ci
155462306a36Sopenharmony_ci#define		OOB_DONE_EN		0x80
155562306a36Sopenharmony_ci#define		LOSS_OF_SIGNAL_EN	0x40
155662306a36Sopenharmony_ci#define		SPINUP_HOLD_EN		0x20
155762306a36Sopenharmony_ci#define		HOT_PLUG_CNCT_EN	0x10
155862306a36Sopenharmony_ci#define		GTO_TIMEOUT_EN		0x08
155962306a36Sopenharmony_ci#define		OOB_TIMEOUT_EN		0x04
156062306a36Sopenharmony_ci#define		DEVICE_PRESENT_EN	0x02
156162306a36Sopenharmony_ci#define		OOB_ERROR_EN		0x01
156262306a36Sopenharmony_ci
156362306a36Sopenharmony_ci#define PHY_CONTROL_0		0x160
156462306a36Sopenharmony_ci
156562306a36Sopenharmony_ci#define		PHY_LOWPWREN_TX		0x80
156662306a36Sopenharmony_ci#define		PHY_LOWPWREN_RX		0x40
156762306a36Sopenharmony_ci#define		SPARE_REG_160_B5	0x20
156862306a36Sopenharmony_ci#define		OFFSET_CANCEL_RX	0x10
156962306a36Sopenharmony_ci
157062306a36Sopenharmony_ci/* bits 3:2 */
157162306a36Sopenharmony_ci#define		PHY_RXCOMCENTER_60V	0x00
157262306a36Sopenharmony_ci#define		PHY_RXCOMCENTER_70V	0x04
157362306a36Sopenharmony_ci#define		PHY_RXCOMCENTER_80V	0x08
157462306a36Sopenharmony_ci#define		PHY_RXCOMCENTER_90V	0x0C
157562306a36Sopenharmony_ci#define 	PHY_RXCOMCENTER_MASK	0x0C
157662306a36Sopenharmony_ci
157762306a36Sopenharmony_ci#define		PHY_RESET		0x02
157862306a36Sopenharmony_ci#define		SAS_DEFAULT_SEL		0x01
157962306a36Sopenharmony_ci
158062306a36Sopenharmony_ci#define PHY_CONTROL_1		0x161
158162306a36Sopenharmony_ci
158262306a36Sopenharmony_ci/* bits 2:0 */
158362306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_50mv	0x00
158462306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_75mv	0x01
158562306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_100mv	0x02
158662306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_125mv	0x03
158762306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_150mv	0x04
158862306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_175mv	0x05
158962306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_200mv	0x06
159062306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_225mv	0x07
159162306a36Sopenharmony_ci#define		SATA_PHY_DETLEVEL_MASK	0x07
159262306a36Sopenharmony_ci
159362306a36Sopenharmony_ci/* bits 5:3 */
159462306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_50mv	0x00
159562306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_75mv	0x08
159662306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_100mv	0x10
159762306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_125mv	0x11
159862306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_150mv	0x20
159962306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_175mv	0x21
160062306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_200mv	0x30
160162306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_225mv	0x31
160262306a36Sopenharmony_ci#define		SAS_PHY_DETLEVEL_MASK	0x38
160362306a36Sopenharmony_ci
160462306a36Sopenharmony_ci#define PHY_CONTROL_2		0x162
160562306a36Sopenharmony_ci
160662306a36Sopenharmony_ci/* bits 7:5 */
160762306a36Sopenharmony_ci#define 	SATA_PHY_DRV_400mv	0x00
160862306a36Sopenharmony_ci#define 	SATA_PHY_DRV_450mv	0x20
160962306a36Sopenharmony_ci#define 	SATA_PHY_DRV_500mv	0x40
161062306a36Sopenharmony_ci#define 	SATA_PHY_DRV_550mv	0x60
161162306a36Sopenharmony_ci#define 	SATA_PHY_DRV_600mv	0x80
161262306a36Sopenharmony_ci#define 	SATA_PHY_DRV_650mv	0xA0
161362306a36Sopenharmony_ci#define 	SATA_PHY_DRV_725mv	0xC0
161462306a36Sopenharmony_ci#define 	SATA_PHY_DRV_800mv	0xE0
161562306a36Sopenharmony_ci#define		SATA_PHY_DRV_MASK	0xE0
161662306a36Sopenharmony_ci
161762306a36Sopenharmony_ci/* bits 4:3 */
161862306a36Sopenharmony_ci#define 	SATA_PREEMP_0		0x00
161962306a36Sopenharmony_ci#define 	SATA_PREEMP_1		0x08
162062306a36Sopenharmony_ci#define 	SATA_PREEMP_2		0x10
162162306a36Sopenharmony_ci#define 	SATA_PREEMP_3		0x18
162262306a36Sopenharmony_ci#define 	SATA_PREEMP_MASK	0x18
162362306a36Sopenharmony_ci
162462306a36Sopenharmony_ci#define 	SATA_CMSH1P5		0x04
162562306a36Sopenharmony_ci
162662306a36Sopenharmony_ci/* bits 1:0 */
162762306a36Sopenharmony_ci#define 	SATA_SLEW_0		0x00
162862306a36Sopenharmony_ci#define 	SATA_SLEW_1		0x01
162962306a36Sopenharmony_ci#define 	SATA_SLEW_2		0x02
163062306a36Sopenharmony_ci#define 	SATA_SLEW_3		0x03
163162306a36Sopenharmony_ci#define 	SATA_SLEW_MASK		0x03
163262306a36Sopenharmony_ci
163362306a36Sopenharmony_ci#define PHY_CONTROL_3		0x163
163462306a36Sopenharmony_ci
163562306a36Sopenharmony_ci/* bits 7:5 */
163662306a36Sopenharmony_ci#define 	SAS_PHY_DRV_400mv	0x00
163762306a36Sopenharmony_ci#define 	SAS_PHY_DRV_450mv	0x20
163862306a36Sopenharmony_ci#define 	SAS_PHY_DRV_500mv	0x40
163962306a36Sopenharmony_ci#define 	SAS_PHY_DRV_550mv	0x60
164062306a36Sopenharmony_ci#define 	SAS_PHY_DRV_600mv	0x80
164162306a36Sopenharmony_ci#define 	SAS_PHY_DRV_650mv	0xA0
164262306a36Sopenharmony_ci#define 	SAS_PHY_DRV_725mv	0xC0
164362306a36Sopenharmony_ci#define 	SAS_PHY_DRV_800mv	0xE0
164462306a36Sopenharmony_ci#define		SAS_PHY_DRV_MASK	0xE0
164562306a36Sopenharmony_ci
164662306a36Sopenharmony_ci/* bits 4:3 */
164762306a36Sopenharmony_ci#define 	SAS_PREEMP_0		0x00
164862306a36Sopenharmony_ci#define 	SAS_PREEMP_1		0x08
164962306a36Sopenharmony_ci#define 	SAS_PREEMP_2		0x10
165062306a36Sopenharmony_ci#define 	SAS_PREEMP_3		0x18
165162306a36Sopenharmony_ci#define 	SAS_PREEMP_MASK		0x18
165262306a36Sopenharmony_ci
165362306a36Sopenharmony_ci#define 	SAS_CMSH1P5		0x04
165462306a36Sopenharmony_ci
165562306a36Sopenharmony_ci/* bits 1:0 */
165662306a36Sopenharmony_ci#define 	SAS_SLEW_0		0x00
165762306a36Sopenharmony_ci#define 	SAS_SLEW_1		0x01
165862306a36Sopenharmony_ci#define 	SAS_SLEW_2		0x02
165962306a36Sopenharmony_ci#define 	SAS_SLEW_3		0x03
166062306a36Sopenharmony_ci#define 	SAS_SLEW_MASK		0x03
166162306a36Sopenharmony_ci
166262306a36Sopenharmony_ci#define PHY_CONTROL_4		0x168
166362306a36Sopenharmony_ci
166462306a36Sopenharmony_ci#define		PHY_DONE_CAL_TX		0x80
166562306a36Sopenharmony_ci#define		PHY_DONE_CAL_RX		0x40
166662306a36Sopenharmony_ci#define		RX_TERM_LOAD_DIS	0x20
166762306a36Sopenharmony_ci#define		TX_TERM_LOAD_DIS	0x10
166862306a36Sopenharmony_ci#define		AUTO_TERM_CAL_DIS	0x08
166962306a36Sopenharmony_ci#define		PHY_SIGDET_FLTR_EN	0x04
167062306a36Sopenharmony_ci#define		OSC_FREQ		0x02
167162306a36Sopenharmony_ci#define		PHY_START_CAL		0x01
167262306a36Sopenharmony_ci
167362306a36Sopenharmony_ci/*
167462306a36Sopenharmony_ci * HST_PCIX2 Registers, Address Range: (0x00-0xFC)
167562306a36Sopenharmony_ci */
167662306a36Sopenharmony_ci#define PCIX_REG_BASE_ADR		0xB8040000
167762306a36Sopenharmony_ci
167862306a36Sopenharmony_ci#define PCIC_VENDOR_ID	0x00
167962306a36Sopenharmony_ci
168062306a36Sopenharmony_ci#define PCIC_DEVICE_ID	0x02
168162306a36Sopenharmony_ci
168262306a36Sopenharmony_ci#define PCIC_COMMAND	0x04
168362306a36Sopenharmony_ci
168462306a36Sopenharmony_ci#define		INT_DIS			0x0400
168562306a36Sopenharmony_ci#define		FBB_EN			0x0200		/* ro */
168662306a36Sopenharmony_ci#define		SERR_EN			0x0100
168762306a36Sopenharmony_ci#define		STEP_EN			0x0080		/* ro */
168862306a36Sopenharmony_ci#define		PERR_EN			0x0040
168962306a36Sopenharmony_ci#define		VGA_EN			0x0020		/* ro */
169062306a36Sopenharmony_ci#define		MWI_EN			0x0010
169162306a36Sopenharmony_ci#define		SPC_EN			0x0008
169262306a36Sopenharmony_ci#define		MST_EN			0x0004
169362306a36Sopenharmony_ci#define		MEM_EN			0x0002
169462306a36Sopenharmony_ci#define		IO_EN			0x0001
169562306a36Sopenharmony_ci
169662306a36Sopenharmony_ci#define	PCIC_STATUS	0x06
169762306a36Sopenharmony_ci
169862306a36Sopenharmony_ci#define		PERR_DET		0x8000
169962306a36Sopenharmony_ci#define		SERR_GEN		0x4000
170062306a36Sopenharmony_ci#define		MABT_DET		0x2000
170162306a36Sopenharmony_ci#define		TABT_DET		0x1000
170262306a36Sopenharmony_ci#define		TABT_GEN		0x0800
170362306a36Sopenharmony_ci#define		DPERR_DET		0x0100
170462306a36Sopenharmony_ci#define		CAP_LIST		0x0010
170562306a36Sopenharmony_ci#define		INT_STAT		0x0008
170662306a36Sopenharmony_ci
170762306a36Sopenharmony_ci#define	PCIC_DEVREV_ID	0x08
170862306a36Sopenharmony_ci
170962306a36Sopenharmony_ci#define	PCIC_CLASS_CODE	0x09
171062306a36Sopenharmony_ci
171162306a36Sopenharmony_ci#define	PCIC_CACHELINE_SIZE	0x0C
171262306a36Sopenharmony_ci
171362306a36Sopenharmony_ci#define	PCIC_MBAR0	0x10
171462306a36Sopenharmony_ci
171562306a36Sopenharmony_ci#define 	PCIC_MBAR0_OFFSET	0
171662306a36Sopenharmony_ci
171762306a36Sopenharmony_ci#define	PCIC_MBAR1	0x18
171862306a36Sopenharmony_ci
171962306a36Sopenharmony_ci#define 	PCIC_MBAR1_OFFSET	2
172062306a36Sopenharmony_ci
172162306a36Sopenharmony_ci#define	PCIC_IOBAR	0x20
172262306a36Sopenharmony_ci
172362306a36Sopenharmony_ci#define 	PCIC_IOBAR_OFFSET	4
172462306a36Sopenharmony_ci
172562306a36Sopenharmony_ci#define	PCIC_SUBVENDOR_ID	0x2C
172662306a36Sopenharmony_ci
172762306a36Sopenharmony_ci#define PCIC_SUBSYTEM_ID	0x2E
172862306a36Sopenharmony_ci
172962306a36Sopenharmony_ci#define PCIX_STATUS		0x44
173062306a36Sopenharmony_ci#define 	RCV_SCE		0x20000000
173162306a36Sopenharmony_ci#define 	UNEXP_SC	0x00080000
173262306a36Sopenharmony_ci#define 	SC_DISCARD	0x00040000
173362306a36Sopenharmony_ci
173462306a36Sopenharmony_ci#define ECC_CTRL_STAT		0x48
173562306a36Sopenharmony_ci#define 	UNCOR_ECCERR	0x00000008
173662306a36Sopenharmony_ci
173762306a36Sopenharmony_ci#define PCIC_PM_CSR		0x5C
173862306a36Sopenharmony_ci
173962306a36Sopenharmony_ci#define		PWR_STATE_D0		0
174062306a36Sopenharmony_ci#define		PWR_STATE_D1		1	/* not supported */
174162306a36Sopenharmony_ci#define		PWR_STATE_D2		2 	/* not supported */
174262306a36Sopenharmony_ci#define		PWR_STATE_D3		3
174362306a36Sopenharmony_ci
174462306a36Sopenharmony_ci#define PCIC_BASE1	0x6C	/* internal use only */
174562306a36Sopenharmony_ci
174662306a36Sopenharmony_ci#define		BASE1_RSVD		0xFFFFFFF8
174762306a36Sopenharmony_ci
174862306a36Sopenharmony_ci#define PCIC_BASEA	0x70	/* internal use only */
174962306a36Sopenharmony_ci
175062306a36Sopenharmony_ci#define		BASEA_RSVD		0xFFFFFFC0
175162306a36Sopenharmony_ci#define 	BASEA_START		0
175262306a36Sopenharmony_ci
175362306a36Sopenharmony_ci#define PCIC_BASEB	0x74	/* internal use only */
175462306a36Sopenharmony_ci
175562306a36Sopenharmony_ci#define		BASEB_RSVD		0xFFFFFF80
175662306a36Sopenharmony_ci#define		BASEB_IOMAP_MASK	0x7F
175762306a36Sopenharmony_ci#define 	BASEB_START		0x80
175862306a36Sopenharmony_ci
175962306a36Sopenharmony_ci#define PCIC_BASEC	0x78	/* internal use only */
176062306a36Sopenharmony_ci
176162306a36Sopenharmony_ci#define		BASEC_RSVD		0xFFFFFFFC
176262306a36Sopenharmony_ci#define 	BASEC_MASK		0x03
176362306a36Sopenharmony_ci#define 	BASEC_START		0x58
176462306a36Sopenharmony_ci
176562306a36Sopenharmony_ci#define PCIC_MBAR_KEY	0x7C	/* internal use only */
176662306a36Sopenharmony_ci
176762306a36Sopenharmony_ci#define 	MBAR_KEY_MASK		0xFFFFFFFF
176862306a36Sopenharmony_ci
176962306a36Sopenharmony_ci#define PCIC_HSTPCIX_CNTRL	0xA0
177062306a36Sopenharmony_ci
177162306a36Sopenharmony_ci#define 	REWIND_DIS		0x0800
177262306a36Sopenharmony_ci#define		SC_TMR_DIS		0x04000000
177362306a36Sopenharmony_ci
177462306a36Sopenharmony_ci#define PCIC_MBAR0_MASK	0xA8
177562306a36Sopenharmony_ci#define		PCIC_MBAR0_SIZE_MASK 	0x1FFFE000
177662306a36Sopenharmony_ci#define		PCIC_MBAR0_SIZE_SHIFT 	13
177762306a36Sopenharmony_ci#define		PCIC_MBAR0_SIZE(val)	\
177862306a36Sopenharmony_ci		    (((val) & PCIC_MBAR0_SIZE_MASK) >> PCIC_MBAR0_SIZE_SHIFT)
177962306a36Sopenharmony_ci
178062306a36Sopenharmony_ci#define PCIC_FLASH_MBAR	0xB8
178162306a36Sopenharmony_ci
178262306a36Sopenharmony_ci#define PCIC_INTRPT_STAT 0xD4
178362306a36Sopenharmony_ci
178462306a36Sopenharmony_ci#define PCIC_TP_CTRL	0xFC
178562306a36Sopenharmony_ci
178662306a36Sopenharmony_ci/*
178762306a36Sopenharmony_ci * EXSI Registers, Address Range: (0x00-0xFC)
178862306a36Sopenharmony_ci */
178962306a36Sopenharmony_ci#define EXSI_REG_BASE_ADR		REG_BASE_ADDR_EXSI
179062306a36Sopenharmony_ci
179162306a36Sopenharmony_ci#define	EXSICNFGR	(EXSI_REG_BASE_ADR + 0x00)
179262306a36Sopenharmony_ci
179362306a36Sopenharmony_ci#define		OCMINITIALIZED		0x80000000
179462306a36Sopenharmony_ci#define		ASIEN			0x00400000
179562306a36Sopenharmony_ci#define		HCMODE			0x00200000
179662306a36Sopenharmony_ci#define		PCIDEF			0x00100000
179762306a36Sopenharmony_ci#define		COMSTOCK		0x00080000
179862306a36Sopenharmony_ci#define		SEEPROMEND		0x00040000
179962306a36Sopenharmony_ci#define		MSTTIMEN		0x00020000
180062306a36Sopenharmony_ci#define		XREGEX			0x00000200
180162306a36Sopenharmony_ci#define		NVRAMW			0x00000100
180262306a36Sopenharmony_ci#define		NVRAMEX			0x00000080
180362306a36Sopenharmony_ci#define		SRAMW			0x00000040
180462306a36Sopenharmony_ci#define		SRAMEX			0x00000020
180562306a36Sopenharmony_ci#define		FLASHW			0x00000010
180662306a36Sopenharmony_ci#define		FLASHEX			0x00000008
180762306a36Sopenharmony_ci#define		SEEPROMCFG		0x00000004
180862306a36Sopenharmony_ci#define		SEEPROMTYP		0x00000002
180962306a36Sopenharmony_ci#define		SEEPROMEX		0x00000001
181062306a36Sopenharmony_ci
181162306a36Sopenharmony_ci
181262306a36Sopenharmony_ci#define EXSICNTRLR	(EXSI_REG_BASE_ADR + 0x04)
181362306a36Sopenharmony_ci
181462306a36Sopenharmony_ci#define		MODINT_EN		0x00000001
181562306a36Sopenharmony_ci
181662306a36Sopenharmony_ci
181762306a36Sopenharmony_ci#define PMSTATR		(EXSI_REG_BASE_ADR + 0x10)
181862306a36Sopenharmony_ci
181962306a36Sopenharmony_ci#define		FLASHRST		0x00000002
182062306a36Sopenharmony_ci#define		FLASHRDY		0x00000001
182162306a36Sopenharmony_ci
182262306a36Sopenharmony_ci
182362306a36Sopenharmony_ci#define FLCNFGR		(EXSI_REG_BASE_ADR + 0x14)
182462306a36Sopenharmony_ci
182562306a36Sopenharmony_ci#define		FLWEH_MASK		0x30000000
182662306a36Sopenharmony_ci#define		FLWESU_MASK		0x0C000000
182762306a36Sopenharmony_ci#define		FLWEPW_MASK		0x03F00000
182862306a36Sopenharmony_ci#define		FLOEH_MASK		0x000C0000
182962306a36Sopenharmony_ci#define 	FLOESU_MASK		0x00030000
183062306a36Sopenharmony_ci#define 	FLOEPW_MASK		0x0000FC00
183162306a36Sopenharmony_ci#define 	FLCSH_MASK		0x00000300
183262306a36Sopenharmony_ci#define 	FLCSSU_MASK		0x000000C0
183362306a36Sopenharmony_ci#define 	FLCSPW_MASK		0x0000003F
183462306a36Sopenharmony_ci
183562306a36Sopenharmony_ci#define SRCNFGR		(EXSI_REG_BASE_ADR + 0x18)
183662306a36Sopenharmony_ci
183762306a36Sopenharmony_ci#define		SRWEH_MASK		0x30000000
183862306a36Sopenharmony_ci#define		SRWESU_MASK		0x0C000000
183962306a36Sopenharmony_ci#define		SRWEPW_MASK		0x03F00000
184062306a36Sopenharmony_ci
184162306a36Sopenharmony_ci#define		SROEH_MASK		0x000C0000
184262306a36Sopenharmony_ci#define 	SROESU_MASK		0x00030000
184362306a36Sopenharmony_ci#define 	SROEPW_MASK		0x0000FC00
184462306a36Sopenharmony_ci#define		SRCSH_MASK		0x00000300
184562306a36Sopenharmony_ci#define		SRCSSU_MASK		0x000000C0
184662306a36Sopenharmony_ci#define		SRCSPW_MASK		0x0000003F
184762306a36Sopenharmony_ci
184862306a36Sopenharmony_ci#define NVCNFGR		(EXSI_REG_BASE_ADR + 0x1C)
184962306a36Sopenharmony_ci
185062306a36Sopenharmony_ci#define 	NVWEH_MASK		0x30000000
185162306a36Sopenharmony_ci#define 	NVWESU_MASK		0x0C000000
185262306a36Sopenharmony_ci#define 	NVWEPW_MASK		0x03F00000
185362306a36Sopenharmony_ci#define 	NVOEH_MASK		0x000C0000
185462306a36Sopenharmony_ci#define 	NVOESU_MASK		0x00030000
185562306a36Sopenharmony_ci#define 	NVOEPW_MASK		0x0000FC00
185662306a36Sopenharmony_ci#define 	NVCSH_MASK		0x00000300
185762306a36Sopenharmony_ci#define 	NVCSSU_MASK		0x000000C0
185862306a36Sopenharmony_ci#define 	NVCSPW_MASK		0x0000003F
185962306a36Sopenharmony_ci
186062306a36Sopenharmony_ci#define XRCNFGR		(EXSI_REG_BASE_ADR + 0x20)
186162306a36Sopenharmony_ci
186262306a36Sopenharmony_ci#define 	XRWEH_MASK		0x30000000
186362306a36Sopenharmony_ci#define 	XRWESU_MASK		0x0C000000
186462306a36Sopenharmony_ci#define 	XRWEPW_MASK		0x03F00000
186562306a36Sopenharmony_ci#define 	XROEH_MASK		0x000C0000
186662306a36Sopenharmony_ci#define 	XROESU_MASK		0x00030000
186762306a36Sopenharmony_ci#define 	XROEPW_MASK		0x0000FC00
186862306a36Sopenharmony_ci#define 	XRCSH_MASK		0x00000300
186962306a36Sopenharmony_ci#define 	XRCSSU_MASK		0x000000C0
187062306a36Sopenharmony_ci#define		XRCSPW_MASK		0x0000003F
187162306a36Sopenharmony_ci
187262306a36Sopenharmony_ci#define XREGADDR	(EXSI_REG_BASE_ADR + 0x24)
187362306a36Sopenharmony_ci
187462306a36Sopenharmony_ci#define 	XRADDRINCEN		0x80000000
187562306a36Sopenharmony_ci#define 	XREGADD_MASK		0x007FFFFF
187662306a36Sopenharmony_ci
187762306a36Sopenharmony_ci
187862306a36Sopenharmony_ci#define XREGDATAR	(EXSI_REG_BASE_ADR + 0x28)
187962306a36Sopenharmony_ci
188062306a36Sopenharmony_ci#define		XREGDATA_MASK 		0x0000FFFF
188162306a36Sopenharmony_ci
188262306a36Sopenharmony_ci#define GPIOOER		(EXSI_REG_BASE_ADR + 0x40)
188362306a36Sopenharmony_ci
188462306a36Sopenharmony_ci#define GPIOODENR	(EXSI_REG_BASE_ADR + 0x44)
188562306a36Sopenharmony_ci
188662306a36Sopenharmony_ci#define GPIOINVR	(EXSI_REG_BASE_ADR + 0x48)
188762306a36Sopenharmony_ci
188862306a36Sopenharmony_ci#define GPIODATAOR	(EXSI_REG_BASE_ADR + 0x4C)
188962306a36Sopenharmony_ci
189062306a36Sopenharmony_ci#define GPIODATAIR	(EXSI_REG_BASE_ADR + 0x50)
189162306a36Sopenharmony_ci
189262306a36Sopenharmony_ci#define GPIOCNFGR	(EXSI_REG_BASE_ADR + 0x54)
189362306a36Sopenharmony_ci
189462306a36Sopenharmony_ci#define		GPIO_EXTSRC		0x00000001
189562306a36Sopenharmony_ci
189662306a36Sopenharmony_ci#define SCNTRLR		(EXSI_REG_BASE_ADR + 0xA0)
189762306a36Sopenharmony_ci
189862306a36Sopenharmony_ci#define 	SXFERDONE		0x00000100
189962306a36Sopenharmony_ci#define 	SXFERCNT_MASK		0x000000E0
190062306a36Sopenharmony_ci#define 	SCMDTYP_MASK		0x0000001C
190162306a36Sopenharmony_ci#define 	SXFERSTART		0x00000002
190262306a36Sopenharmony_ci#define 	SXFEREN			0x00000001
190362306a36Sopenharmony_ci
190462306a36Sopenharmony_ci#define	SRATER		(EXSI_REG_BASE_ADR + 0xA4)
190562306a36Sopenharmony_ci
190662306a36Sopenharmony_ci#define	SADDRR		(EXSI_REG_BASE_ADR + 0xA8)
190762306a36Sopenharmony_ci
190862306a36Sopenharmony_ci#define 	SADDR_MASK		0x0000FFFF
190962306a36Sopenharmony_ci
191062306a36Sopenharmony_ci#define SDATAOR		(EXSI_REG_BASE_ADR + 0xAC)
191162306a36Sopenharmony_ci
191262306a36Sopenharmony_ci#define	SDATAOR0	(EXSI_REG_BASE_ADR + 0xAC)
191362306a36Sopenharmony_ci#define SDATAOR1	(EXSI_REG_BASE_ADR + 0xAD)
191462306a36Sopenharmony_ci#define SDATAOR2	(EXSI_REG_BASE_ADR + 0xAE)
191562306a36Sopenharmony_ci#define SDATAOR3	(EXSI_REG_BASE_ADR + 0xAF)
191662306a36Sopenharmony_ci
191762306a36Sopenharmony_ci#define SDATAIR		(EXSI_REG_BASE_ADR + 0xB0)
191862306a36Sopenharmony_ci
191962306a36Sopenharmony_ci#define SDATAIR0	(EXSI_REG_BASE_ADR + 0xB0)
192062306a36Sopenharmony_ci#define SDATAIR1	(EXSI_REG_BASE_ADR + 0xB1)
192162306a36Sopenharmony_ci#define SDATAIR2	(EXSI_REG_BASE_ADR + 0xB2)
192262306a36Sopenharmony_ci#define SDATAIR3	(EXSI_REG_BASE_ADR + 0xB3)
192362306a36Sopenharmony_ci
192462306a36Sopenharmony_ci#define ASISTAT0R	(EXSI_REG_BASE_ADR + 0xD0)
192562306a36Sopenharmony_ci#define 	ASIFMTERR		0x00000400
192662306a36Sopenharmony_ci#define 	ASISEECHKERR		0x00000200
192762306a36Sopenharmony_ci#define 	ASIERR			0x00000100
192862306a36Sopenharmony_ci
192962306a36Sopenharmony_ci#define ASISTAT1R	(EXSI_REG_BASE_ADR + 0xD4)
193062306a36Sopenharmony_ci#define 	CHECKSUM_MASK		0x0000FFFF
193162306a36Sopenharmony_ci
193262306a36Sopenharmony_ci#define ASIERRADDR	(EXSI_REG_BASE_ADR + 0xD8)
193362306a36Sopenharmony_ci#define ASIERRDATAR	(EXSI_REG_BASE_ADR + 0xDC)
193462306a36Sopenharmony_ci#define ASIERRSTATR	(EXSI_REG_BASE_ADR + 0xE0)
193562306a36Sopenharmony_ci#define 	CPI2ASIBYTECNT_MASK	0x00070000
193662306a36Sopenharmony_ci#define 	CPI2ASIBYTEEN_MASK      0x0000F000
193762306a36Sopenharmony_ci#define 	CPI2ASITARGERR_MASK	0x00000F00
193862306a36Sopenharmony_ci#define 	CPI2ASITARGMID_MASK	0x000000F0
193962306a36Sopenharmony_ci#define 	CPI2ASIMSTERR_MASK	0x0000000F
194062306a36Sopenharmony_ci
194162306a36Sopenharmony_ci/*
194262306a36Sopenharmony_ci * XSRAM, External SRAM (DWord and any BE pattern accessible)
194362306a36Sopenharmony_ci */
194462306a36Sopenharmony_ci#define XSRAM_REG_BASE_ADDR             0xB8100000
194562306a36Sopenharmony_ci#define XSRAM_SIZE                        0x100000
194662306a36Sopenharmony_ci
194762306a36Sopenharmony_ci/*
194862306a36Sopenharmony_ci * NVRAM Registers, Address Range: (0x00000 - 0x3FFFF).
194962306a36Sopenharmony_ci */
195062306a36Sopenharmony_ci#define		NVRAM_REG_BASE_ADR	0xBF800000
195162306a36Sopenharmony_ci#define		NVRAM_MAX_BASE_ADR	0x003FFFFF
195262306a36Sopenharmony_ci
195362306a36Sopenharmony_ci/* OCM base address */
195462306a36Sopenharmony_ci#define		OCM_BASE_ADDR		0xA0000000
195562306a36Sopenharmony_ci#define		OCM_MAX_SIZE		0x20000
195662306a36Sopenharmony_ci
195762306a36Sopenharmony_ci/*
195862306a36Sopenharmony_ci * Sequencers (Central and Link) Scratch RAM page definitions.
195962306a36Sopenharmony_ci */
196062306a36Sopenharmony_ci
196162306a36Sopenharmony_ci/*
196262306a36Sopenharmony_ci * The Central Management Sequencer (CSEQ) Scratch Memory is a 1024
196362306a36Sopenharmony_ci * byte memory.  It is dword accessible and has byte parity
196462306a36Sopenharmony_ci * protection. The CSEQ accesses it in 32 byte windows, either as mode
196562306a36Sopenharmony_ci * dependent or mode independent memory. Each mode has 96 bytes,
196662306a36Sopenharmony_ci * (three 32 byte pages 0-2, not contiguous), leaving 128 bytes of
196762306a36Sopenharmony_ci * Mode Independent memory (four 32 byte pages 3-7). Note that mode
196862306a36Sopenharmony_ci * dependent scratch memory, Mode 8, page 0-3 overlaps mode
196962306a36Sopenharmony_ci * independent scratch memory, pages 0-3.
197062306a36Sopenharmony_ci * - 896 bytes of mode dependent scratch, 96 bytes per Modes 0-7, and
197162306a36Sopenharmony_ci * 128 bytes in mode 8,
197262306a36Sopenharmony_ci * - 259 bytes of mode independent scratch, common to modes 0-15.
197362306a36Sopenharmony_ci *
197462306a36Sopenharmony_ci * Sequencer scratch RAM is 1024 bytes.  This scratch memory is
197562306a36Sopenharmony_ci * divided into mode dependent and mode independent scratch with this
197662306a36Sopenharmony_ci * memory further subdivided into pages of size 32 bytes. There are 5
197762306a36Sopenharmony_ci * pages (160 bytes) of mode independent scratch and 3 pages of
197862306a36Sopenharmony_ci * dependent scratch memory for modes 0-7 (768 bytes). Mode 8 pages
197962306a36Sopenharmony_ci * 0-2 dependent scratch overlap with pages 0-2 of mode independent
198062306a36Sopenharmony_ci * scratch memory.
198162306a36Sopenharmony_ci *
198262306a36Sopenharmony_ci * The host accesses this scratch in a different manner from the
198362306a36Sopenharmony_ci * central sequencer. The sequencer has to use CSEQ registers CSCRPAGE
198462306a36Sopenharmony_ci * and CMnSCRPAGE to access the scratch memory. A flat mapping of the
198562306a36Sopenharmony_ci * scratch memory is available for software convenience and to prevent
198662306a36Sopenharmony_ci * corruption while the sequencer is running. This memory is mapped
198762306a36Sopenharmony_ci * onto addresses 800h - BFFh, total of 400h bytes.
198862306a36Sopenharmony_ci *
198962306a36Sopenharmony_ci * These addresses are mapped as follows:
199062306a36Sopenharmony_ci *
199162306a36Sopenharmony_ci *        800h-83Fh   Mode Dependent Scratch Mode 0 Pages 0-1
199262306a36Sopenharmony_ci *        840h-87Fh   Mode Dependent Scratch Mode 1 Pages 0-1
199362306a36Sopenharmony_ci *        880h-8BFh   Mode Dependent Scratch Mode 2 Pages 0-1
199462306a36Sopenharmony_ci *        8C0h-8FFh   Mode Dependent Scratch Mode 3 Pages 0-1
199562306a36Sopenharmony_ci *        900h-93Fh   Mode Dependent Scratch Mode 4 Pages 0-1
199662306a36Sopenharmony_ci *        940h-97Fh   Mode Dependent Scratch Mode 5 Pages 0-1
199762306a36Sopenharmony_ci *        980h-9BFh   Mode Dependent Scratch Mode 6 Pages 0-1
199862306a36Sopenharmony_ci *        9C0h-9FFh   Mode Dependent Scratch Mode 7 Pages 0-1
199962306a36Sopenharmony_ci *        A00h-A5Fh   Mode Dependent Scratch Mode 8 Pages 0-2
200062306a36Sopenharmony_ci *                    Mode Independent Scratch Pages 0-2
200162306a36Sopenharmony_ci *        A60h-A7Fh   Mode Dependent Scratch Mode 8 Page 3
200262306a36Sopenharmony_ci *                    Mode Independent Scratch Page 3
200362306a36Sopenharmony_ci *        A80h-AFFh   Mode Independent Scratch Pages 4-7
200462306a36Sopenharmony_ci *        B00h-B1Fh   Mode Dependent Scratch Mode 0 Page 2
200562306a36Sopenharmony_ci *        B20h-B3Fh   Mode Dependent Scratch Mode 1 Page 2
200662306a36Sopenharmony_ci *        B40h-B5Fh   Mode Dependent Scratch Mode 2 Page 2
200762306a36Sopenharmony_ci *        B60h-B7Fh   Mode Dependent Scratch Mode 3 Page 2
200862306a36Sopenharmony_ci *        B80h-B9Fh   Mode Dependent Scratch Mode 4 Page 2
200962306a36Sopenharmony_ci *        BA0h-BBFh   Mode Dependent Scratch Mode 5 Page 2
201062306a36Sopenharmony_ci *        BC0h-BDFh   Mode Dependent Scratch Mode 6 Page 2
201162306a36Sopenharmony_ci *        BE0h-BFFh   Mode Dependent Scratch Mode 7 Page 2
201262306a36Sopenharmony_ci */
201362306a36Sopenharmony_ci
201462306a36Sopenharmony_ci/* General macros */
201562306a36Sopenharmony_ci#define CSEQ_PAGE_SIZE			32  /* Scratch page size (in bytes) */
201662306a36Sopenharmony_ci
201762306a36Sopenharmony_ci/* All macros start with offsets from base + 0x800 (CMAPPEDSCR).
201862306a36Sopenharmony_ci * Mode dependent scratch page 0, mode 0.
201962306a36Sopenharmony_ci * For modes 1-7 you have to do arithmetic. */
202062306a36Sopenharmony_ci#define CSEQ_LRM_SAVE_SINDEX		(CMAPPEDSCR + 0x0000)
202162306a36Sopenharmony_ci#define CSEQ_LRM_SAVE_SCBPTR		(CMAPPEDSCR + 0x0002)
202262306a36Sopenharmony_ci#define CSEQ_Q_LINK_HEAD		(CMAPPEDSCR + 0x0004)
202362306a36Sopenharmony_ci#define CSEQ_Q_LINK_TAIL		(CMAPPEDSCR + 0x0006)
202462306a36Sopenharmony_ci#define CSEQ_LRM_SAVE_SCRPAGE		(CMAPPEDSCR + 0x0008)
202562306a36Sopenharmony_ci
202662306a36Sopenharmony_ci/* Mode dependent scratch page 0 mode 8 macros. */
202762306a36Sopenharmony_ci#define CSEQ_RET_ADDR			(CMAPPEDSCR + 0x0200)
202862306a36Sopenharmony_ci#define CSEQ_RET_SCBPTR			(CMAPPEDSCR + 0x0202)
202962306a36Sopenharmony_ci#define CSEQ_SAVE_SCBPTR		(CMAPPEDSCR + 0x0204)
203062306a36Sopenharmony_ci#define CSEQ_EMPTY_TRANS_CTX		(CMAPPEDSCR + 0x0206)
203162306a36Sopenharmony_ci#define CSEQ_RESP_LEN			(CMAPPEDSCR + 0x0208)
203262306a36Sopenharmony_ci#define CSEQ_TMF_SCBPTR			(CMAPPEDSCR + 0x020A)
203362306a36Sopenharmony_ci#define CSEQ_GLOBAL_PREV_SCB		(CMAPPEDSCR + 0x020C)
203462306a36Sopenharmony_ci#define CSEQ_GLOBAL_HEAD		(CMAPPEDSCR + 0x020E)
203562306a36Sopenharmony_ci#define CSEQ_CLEAR_LU_HEAD		(CMAPPEDSCR + 0x0210)
203662306a36Sopenharmony_ci#define CSEQ_TMF_OPCODE			(CMAPPEDSCR + 0x0212)
203762306a36Sopenharmony_ci#define CSEQ_SCRATCH_FLAGS		(CMAPPEDSCR + 0x0213)
203862306a36Sopenharmony_ci#define CSEQ_HSB_SITE                   (CMAPPEDSCR + 0x021A)
203962306a36Sopenharmony_ci#define CSEQ_FIRST_INV_SCB_SITE		(CMAPPEDSCR + 0x021C)
204062306a36Sopenharmony_ci#define CSEQ_FIRST_INV_DDB_SITE		(CMAPPEDSCR + 0x021E)
204162306a36Sopenharmony_ci
204262306a36Sopenharmony_ci/* Mode dependent scratch page 1 mode 8 macros. */
204362306a36Sopenharmony_ci#define CSEQ_LUN_TO_CLEAR		(CMAPPEDSCR + 0x0220)
204462306a36Sopenharmony_ci#define CSEQ_LUN_TO_CHECK		(CMAPPEDSCR + 0x0228)
204562306a36Sopenharmony_ci
204662306a36Sopenharmony_ci/* Mode dependent scratch page 2 mode 8 macros */
204762306a36Sopenharmony_ci#define CSEQ_HQ_NEW_POINTER		(CMAPPEDSCR + 0x0240)
204862306a36Sopenharmony_ci#define CSEQ_HQ_DONE_BASE		(CMAPPEDSCR + 0x0248)
204962306a36Sopenharmony_ci#define CSEQ_HQ_DONE_POINTER		(CMAPPEDSCR + 0x0250)
205062306a36Sopenharmony_ci#define CSEQ_HQ_DONE_PASS		(CMAPPEDSCR + 0x0254)
205162306a36Sopenharmony_ci
205262306a36Sopenharmony_ci/* Mode independent scratch page 4 macros. */
205362306a36Sopenharmony_ci#define CSEQ_Q_EXE_HEAD			(CMAPPEDSCR + 0x0280)
205462306a36Sopenharmony_ci#define CSEQ_Q_EXE_TAIL			(CMAPPEDSCR + 0x0282)
205562306a36Sopenharmony_ci#define CSEQ_Q_DONE_HEAD                (CMAPPEDSCR + 0x0284)
205662306a36Sopenharmony_ci#define CSEQ_Q_DONE_TAIL                (CMAPPEDSCR + 0x0286)
205762306a36Sopenharmony_ci#define CSEQ_Q_SEND_HEAD		(CMAPPEDSCR + 0x0288)
205862306a36Sopenharmony_ci#define CSEQ_Q_SEND_TAIL		(CMAPPEDSCR + 0x028A)
205962306a36Sopenharmony_ci#define CSEQ_Q_DMA2CHIM_HEAD		(CMAPPEDSCR + 0x028C)
206062306a36Sopenharmony_ci#define CSEQ_Q_DMA2CHIM_TAIL		(CMAPPEDSCR + 0x028E)
206162306a36Sopenharmony_ci#define CSEQ_Q_COPY_HEAD		(CMAPPEDSCR + 0x0290)
206262306a36Sopenharmony_ci#define CSEQ_Q_COPY_TAIL		(CMAPPEDSCR + 0x0292)
206362306a36Sopenharmony_ci#define CSEQ_REG0			(CMAPPEDSCR + 0x0294)
206462306a36Sopenharmony_ci#define CSEQ_REG1			(CMAPPEDSCR + 0x0296)
206562306a36Sopenharmony_ci#define CSEQ_REG2			(CMAPPEDSCR + 0x0298)
206662306a36Sopenharmony_ci#define CSEQ_LINK_CTL_Q_MAP		(CMAPPEDSCR + 0x029C)
206762306a36Sopenharmony_ci#define CSEQ_MAX_CSEQ_MODE		(CMAPPEDSCR + 0x029D)
206862306a36Sopenharmony_ci#define CSEQ_FREE_LIST_HACK_COUNT	(CMAPPEDSCR + 0x029E)
206962306a36Sopenharmony_ci
207062306a36Sopenharmony_ci/* Mode independent scratch page 5 macros. */
207162306a36Sopenharmony_ci#define CSEQ_EST_NEXUS_REQ_QUEUE	(CMAPPEDSCR + 0x02A0)
207262306a36Sopenharmony_ci#define CSEQ_EST_NEXUS_REQ_COUNT	(CMAPPEDSCR + 0x02A8)
207362306a36Sopenharmony_ci#define CSEQ_Q_EST_NEXUS_HEAD		(CMAPPEDSCR + 0x02B0)
207462306a36Sopenharmony_ci#define CSEQ_Q_EST_NEXUS_TAIL		(CMAPPEDSCR + 0x02B2)
207562306a36Sopenharmony_ci#define CSEQ_NEED_EST_NEXUS_SCB		(CMAPPEDSCR + 0x02B4)
207662306a36Sopenharmony_ci#define CSEQ_EST_NEXUS_REQ_HEAD		(CMAPPEDSCR + 0x02B6)
207762306a36Sopenharmony_ci#define CSEQ_EST_NEXUS_REQ_TAIL		(CMAPPEDSCR + 0x02B7)
207862306a36Sopenharmony_ci#define CSEQ_EST_NEXUS_SCB_OFFSET	(CMAPPEDSCR + 0x02B8)
207962306a36Sopenharmony_ci
208062306a36Sopenharmony_ci/* Mode independent scratch page 6 macros. */
208162306a36Sopenharmony_ci#define CSEQ_INT_ROUT_RET_ADDR0		(CMAPPEDSCR + 0x02C0)
208262306a36Sopenharmony_ci#define CSEQ_INT_ROUT_RET_ADDR1		(CMAPPEDSCR + 0x02C2)
208362306a36Sopenharmony_ci#define CSEQ_INT_ROUT_SCBPTR		(CMAPPEDSCR + 0x02C4)
208462306a36Sopenharmony_ci#define CSEQ_INT_ROUT_MODE		(CMAPPEDSCR + 0x02C6)
208562306a36Sopenharmony_ci#define CSEQ_ISR_SCRATCH_FLAGS		(CMAPPEDSCR + 0x02C7)
208662306a36Sopenharmony_ci#define CSEQ_ISR_SAVE_SINDEX		(CMAPPEDSCR + 0x02C8)
208762306a36Sopenharmony_ci#define CSEQ_ISR_SAVE_DINDEX		(CMAPPEDSCR + 0x02CA)
208862306a36Sopenharmony_ci#define CSEQ_Q_MONIRTT_HEAD		(CMAPPEDSCR + 0x02D0)
208962306a36Sopenharmony_ci#define CSEQ_Q_MONIRTT_TAIL		(CMAPPEDSCR + 0x02D2)
209062306a36Sopenharmony_ci#define CSEQ_FREE_SCB_MASK		(CMAPPEDSCR + 0x02D5)
209162306a36Sopenharmony_ci#define CSEQ_BUILTIN_FREE_SCB_HEAD	(CMAPPEDSCR + 0x02D6)
209262306a36Sopenharmony_ci#define CSEQ_BUILTIN_FREE_SCB_TAIL	(CMAPPEDSCR + 0x02D8)
209362306a36Sopenharmony_ci#define CSEQ_EXTENDED_FREE_SCB_HEAD	(CMAPPEDSCR + 0x02DA)
209462306a36Sopenharmony_ci#define CSEQ_EXTENDED_FREE_SCB_TAIL	(CMAPPEDSCR + 0x02DC)
209562306a36Sopenharmony_ci
209662306a36Sopenharmony_ci/* Mode independent scratch page 7 macros. */
209762306a36Sopenharmony_ci#define CSEQ_EMPTY_REQ_QUEUE		(CMAPPEDSCR + 0x02E0)
209862306a36Sopenharmony_ci#define CSEQ_EMPTY_REQ_COUNT		(CMAPPEDSCR + 0x02E8)
209962306a36Sopenharmony_ci#define CSEQ_Q_EMPTY_HEAD		(CMAPPEDSCR + 0x02F0)
210062306a36Sopenharmony_ci#define CSEQ_Q_EMPTY_TAIL		(CMAPPEDSCR + 0x02F2)
210162306a36Sopenharmony_ci#define CSEQ_NEED_EMPTY_SCB		(CMAPPEDSCR + 0x02F4)
210262306a36Sopenharmony_ci#define CSEQ_EMPTY_REQ_HEAD		(CMAPPEDSCR + 0x02F6)
210362306a36Sopenharmony_ci#define CSEQ_EMPTY_REQ_TAIL		(CMAPPEDSCR + 0x02F7)
210462306a36Sopenharmony_ci#define CSEQ_EMPTY_SCB_OFFSET		(CMAPPEDSCR + 0x02F8)
210562306a36Sopenharmony_ci#define CSEQ_PRIMITIVE_DATA		(CMAPPEDSCR + 0x02FA)
210662306a36Sopenharmony_ci#define CSEQ_TIMEOUT_CONST		(CMAPPEDSCR + 0x02FC)
210762306a36Sopenharmony_ci
210862306a36Sopenharmony_ci/***************************************************************************
210962306a36Sopenharmony_ci* Link m Sequencer scratch RAM is 512 bytes.
211062306a36Sopenharmony_ci* This scratch memory is divided into mode dependent and mode
211162306a36Sopenharmony_ci* independent scratch with this memory further subdivided into
211262306a36Sopenharmony_ci* pages of size 32 bytes. There are 4 pages (128 bytes) of
211362306a36Sopenharmony_ci* mode independent scratch and 4 pages of dependent scratch
211462306a36Sopenharmony_ci* memory for modes 0-2 (384 bytes).
211562306a36Sopenharmony_ci*
211662306a36Sopenharmony_ci* The host accesses this scratch in a different manner from the
211762306a36Sopenharmony_ci* link sequencer. The sequencer has to use LSEQ registers
211862306a36Sopenharmony_ci* LmSCRPAGE and LmMnSCRPAGE to access the scratch memory. A flat
211962306a36Sopenharmony_ci* mapping of the scratch memory is available for software
212062306a36Sopenharmony_ci* convenience and to prevent corruption while the sequencer is
212162306a36Sopenharmony_ci* running. This memory is mapped onto addresses 800h - 9FFh.
212262306a36Sopenharmony_ci*
212362306a36Sopenharmony_ci* These addresses are mapped as follows:
212462306a36Sopenharmony_ci*
212562306a36Sopenharmony_ci*        800h-85Fh   Mode Dependent Scratch Mode 0 Pages 0-2
212662306a36Sopenharmony_ci*        860h-87Fh   Mode Dependent Scratch Mode 0 Page 3
212762306a36Sopenharmony_ci*                    Mode Dependent Scratch Mode 5 Page 0
212862306a36Sopenharmony_ci*        880h-8DFh   Mode Dependent Scratch Mode 1 Pages 0-2
212962306a36Sopenharmony_ci*        8E0h-8FFh   Mode Dependent Scratch Mode 1 Page 3
213062306a36Sopenharmony_ci*                    Mode Dependent Scratch Mode 5 Page 1
213162306a36Sopenharmony_ci*        900h-95Fh   Mode Dependent Scratch Mode 2 Pages 0-2
213262306a36Sopenharmony_ci*        960h-97Fh   Mode Dependent Scratch Mode 2 Page 3
213362306a36Sopenharmony_ci*                    Mode Dependent Scratch Mode 5 Page 2
213462306a36Sopenharmony_ci*        980h-9DFh   Mode Independent Scratch Pages 0-3
213562306a36Sopenharmony_ci*        9E0h-9FFh   Mode Independent Scratch Page 3
213662306a36Sopenharmony_ci*                    Mode Dependent Scratch Mode 5 Page 3
213762306a36Sopenharmony_ci*
213862306a36Sopenharmony_ci****************************************************************************/
213962306a36Sopenharmony_ci/* General macros */
214062306a36Sopenharmony_ci#define LSEQ_MODE_SCRATCH_SIZE		0x80 /* Size of scratch RAM per mode */
214162306a36Sopenharmony_ci#define LSEQ_PAGE_SIZE			0x20 /* Scratch page size (in bytes) */
214262306a36Sopenharmony_ci#define LSEQ_MODE5_PAGE0_OFFSET 	0x60
214362306a36Sopenharmony_ci
214462306a36Sopenharmony_ci/* Common mode dependent scratch page 0 macros for modes 0,1,2, and 5 */
214562306a36Sopenharmony_ci/* Indexed using LSEQ_MODE_SCRATCH_SIZE * mode, for modes 0,1,2. */
214662306a36Sopenharmony_ci#define LmSEQ_RET_ADDR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0000)
214762306a36Sopenharmony_ci#define LmSEQ_REG0_MODE(LinkNum)	(LmSCRATCH(LinkNum) + 0x0002)
214862306a36Sopenharmony_ci#define LmSEQ_MODE_FLAGS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0004)
214962306a36Sopenharmony_ci
215062306a36Sopenharmony_ci/* Mode flag macros (byte 0) */
215162306a36Sopenharmony_ci#define		SAS_SAVECTX_OCCURRED		0x80
215262306a36Sopenharmony_ci#define		SAS_OOBSVC_OCCURRED		0x40
215362306a36Sopenharmony_ci#define		SAS_OOB_DEVICE_PRESENT		0x20
215462306a36Sopenharmony_ci#define		SAS_CFGHDR_OCCURRED		0x10
215562306a36Sopenharmony_ci#define		SAS_RCV_INTS_ARE_DISABLED	0x08
215662306a36Sopenharmony_ci#define		SAS_OOB_HOT_PLUG_CNCT		0x04
215762306a36Sopenharmony_ci#define		SAS_AWAIT_OPEN_CONNECTION	0x02
215862306a36Sopenharmony_ci#define		SAS_CFGCMPLT_OCCURRED		0x01
215962306a36Sopenharmony_ci
216062306a36Sopenharmony_ci/* Mode flag macros (byte 1) */
216162306a36Sopenharmony_ci#define		SAS_RLSSCB_OCCURRED		0x80
216262306a36Sopenharmony_ci#define		SAS_FORCED_HEADER_MISS		0x40
216362306a36Sopenharmony_ci
216462306a36Sopenharmony_ci#define LmSEQ_RET_ADDR2(LinkNum)	(LmSCRATCH(LinkNum) + 0x0006)
216562306a36Sopenharmony_ci#define LmSEQ_RET_ADDR1(LinkNum)	(LmSCRATCH(LinkNum) + 0x0008)
216662306a36Sopenharmony_ci#define LmSEQ_OPCODE_TO_CSEQ(LinkNum)	(LmSCRATCH(LinkNum) + 0x000B)
216762306a36Sopenharmony_ci#define LmSEQ_DATA_TO_CSEQ(LinkNum)	(LmSCRATCH(LinkNum) + 0x000C)
216862306a36Sopenharmony_ci
216962306a36Sopenharmony_ci/* Mode dependent scratch page 0 macros for mode 0 (non-common) */
217062306a36Sopenharmony_ci/* Absolute offsets */
217162306a36Sopenharmony_ci#define LmSEQ_FIRST_INV_DDB_SITE(LinkNum)	(LmSCRATCH(LinkNum) + 0x000E)
217262306a36Sopenharmony_ci#define LmSEQ_EMPTY_TRANS_CTX(LinkNum)		(LmSCRATCH(LinkNum) + 0x0010)
217362306a36Sopenharmony_ci#define LmSEQ_RESP_LEN(LinkNum)			(LmSCRATCH(LinkNum) + 0x0012)
217462306a36Sopenharmony_ci#define LmSEQ_FIRST_INV_SCB_SITE(LinkNum)	(LmSCRATCH(LinkNum) + 0x0014)
217562306a36Sopenharmony_ci#define LmSEQ_INTEN_SAVE(LinkNum)		(LmSCRATCH(LinkNum) + 0x0016)
217662306a36Sopenharmony_ci#define LmSEQ_LINK_RST_FRM_LEN(LinkNum)		(LmSCRATCH(LinkNum) + 0x001A)
217762306a36Sopenharmony_ci#define LmSEQ_LINK_RST_PROTOCOL(LinkNum)	(LmSCRATCH(LinkNum) + 0x001B)
217862306a36Sopenharmony_ci#define LmSEQ_RESP_STATUS(LinkNum)		(LmSCRATCH(LinkNum) + 0x001C)
217962306a36Sopenharmony_ci#define LmSEQ_LAST_LOADED_SGE(LinkNum)		(LmSCRATCH(LinkNum) + 0x001D)
218062306a36Sopenharmony_ci#define LmSEQ_SAVE_SCBPTR(LinkNum)		(LmSCRATCH(LinkNum) + 0x001E)
218162306a36Sopenharmony_ci
218262306a36Sopenharmony_ci/* Mode dependent scratch page 0 macros for mode 1 (non-common) */
218362306a36Sopenharmony_ci/* Absolute offsets */
218462306a36Sopenharmony_ci#define LmSEQ_Q_XMIT_HEAD(LinkNum)		(LmSCRATCH(LinkNum) + 0x008E)
218562306a36Sopenharmony_ci#define LmSEQ_M1_EMPTY_TRANS_CTX(LinkNum)	(LmSCRATCH(LinkNum) + 0x0090)
218662306a36Sopenharmony_ci#define LmSEQ_INI_CONN_TAG(LinkNum)		(LmSCRATCH(LinkNum) + 0x0092)
218762306a36Sopenharmony_ci#define LmSEQ_FAILED_OPEN_STATUS(LinkNum)	(LmSCRATCH(LinkNum) + 0x009A)
218862306a36Sopenharmony_ci#define LmSEQ_XMIT_REQUEST_TYPE(LinkNum)	(LmSCRATCH(LinkNum) + 0x009B)
218962306a36Sopenharmony_ci#define LmSEQ_M1_RESP_STATUS(LinkNum)		(LmSCRATCH(LinkNum) + 0x009C)
219062306a36Sopenharmony_ci#define LmSEQ_M1_LAST_LOADED_SGE(LinkNum)	(LmSCRATCH(LinkNum) + 0x009D)
219162306a36Sopenharmony_ci#define LmSEQ_M1_SAVE_SCBPTR(LinkNum)		(LmSCRATCH(LinkNum) + 0x009E)
219262306a36Sopenharmony_ci
219362306a36Sopenharmony_ci/* Mode dependent scratch page 0 macros for mode 2 (non-common) */
219462306a36Sopenharmony_ci#define LmSEQ_PORT_COUNTER(LinkNum)		(LmSCRATCH(LinkNum) + 0x010E)
219562306a36Sopenharmony_ci#define LmSEQ_PM_TABLE_PTR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0110)
219662306a36Sopenharmony_ci#define LmSEQ_SATA_INTERLOCK_TMR_SAVE(LinkNum)	(LmSCRATCH(LinkNum) + 0x0112)
219762306a36Sopenharmony_ci#define LmSEQ_IP_BITL(LinkNum)			(LmSCRATCH(LinkNum) + 0x0114)
219862306a36Sopenharmony_ci#define LmSEQ_COPY_SMP_CONN_TAG(LinkNum)	(LmSCRATCH(LinkNum) + 0x0116)
219962306a36Sopenharmony_ci#define LmSEQ_P0M2_OFFS1AH(LinkNum)		(LmSCRATCH(LinkNum) + 0x011A)
220062306a36Sopenharmony_ci
220162306a36Sopenharmony_ci/* Mode dependent scratch page 0 macros for modes 4/5 (non-common) */
220262306a36Sopenharmony_ci/* Absolute offsets */
220362306a36Sopenharmony_ci#define LmSEQ_SAVED_OOB_STATUS(LinkNum)		(LmSCRATCH(LinkNum) + 0x006E)
220462306a36Sopenharmony_ci#define LmSEQ_SAVED_OOB_MODE(LinkNum)		(LmSCRATCH(LinkNum) + 0x006F)
220562306a36Sopenharmony_ci#define LmSEQ_Q_LINK_HEAD(LinkNum)		(LmSCRATCH(LinkNum) + 0x0070)
220662306a36Sopenharmony_ci#define LmSEQ_LINK_RST_ERR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0072)
220762306a36Sopenharmony_ci#define LmSEQ_SAVED_OOB_SIGNALS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0073)
220862306a36Sopenharmony_ci#define LmSEQ_SAS_RESET_MODE(LinkNum)		(LmSCRATCH(LinkNum) + 0x0074)
220962306a36Sopenharmony_ci#define LmSEQ_LINK_RESET_RETRY_COUNT(LinkNum)	(LmSCRATCH(LinkNum) + 0x0075)
221062306a36Sopenharmony_ci#define LmSEQ_NUM_LINK_RESET_RETRIES(LinkNum)	(LmSCRATCH(LinkNum) + 0x0076)
221162306a36Sopenharmony_ci#define LmSEQ_OOB_INT_ENABLES(LinkNum)		(LmSCRATCH(LinkNum) + 0x0078)
221262306a36Sopenharmony_ci#define LmSEQ_NOTIFY_TIMER_DOWN_COUNT(LinkNum)	(LmSCRATCH(LinkNum) + 0x007A)
221362306a36Sopenharmony_ci#define LmSEQ_NOTIFY_TIMER_TIMEOUT(LinkNum)	(LmSCRATCH(LinkNum) + 0x007C)
221462306a36Sopenharmony_ci#define LmSEQ_NOTIFY_TIMER_INITIAL_COUNT(LinkNum) (LmSCRATCH(LinkNum) + 0x007E)
221562306a36Sopenharmony_ci
221662306a36Sopenharmony_ci/* Mode dependent scratch page 1, mode 0 and mode 1 */
221762306a36Sopenharmony_ci#define LmSEQ_SG_LIST_PTR_ADDR0(LinkNum)        (LmSCRATCH(LinkNum) + 0x0020)
221862306a36Sopenharmony_ci#define LmSEQ_SG_LIST_PTR_ADDR1(LinkNum)        (LmSCRATCH(LinkNum) + 0x0030)
221962306a36Sopenharmony_ci#define LmSEQ_M1_SG_LIST_PTR_ADDR0(LinkNum)     (LmSCRATCH(LinkNum) + 0x00A0)
222062306a36Sopenharmony_ci#define LmSEQ_M1_SG_LIST_PTR_ADDR1(LinkNum)     (LmSCRATCH(LinkNum) + 0x00B0)
222162306a36Sopenharmony_ci
222262306a36Sopenharmony_ci/* Mode dependent scratch page 1 macros for mode 2 */
222362306a36Sopenharmony_ci/* Absolute offsets */
222462306a36Sopenharmony_ci#define LmSEQ_INVALID_DWORD_COUNT(LinkNum)	(LmSCRATCH(LinkNum) + 0x0120)
222562306a36Sopenharmony_ci#define LmSEQ_DISPARITY_ERROR_COUNT(LinkNum) 	(LmSCRATCH(LinkNum) + 0x0124)
222662306a36Sopenharmony_ci#define LmSEQ_LOSS_OF_SYNC_COUNT(LinkNum)	(LmSCRATCH(LinkNum) + 0x0128)
222762306a36Sopenharmony_ci
222862306a36Sopenharmony_ci/* Mode dependent scratch page 1 macros for mode 4/5 */
222962306a36Sopenharmony_ci#define LmSEQ_FRAME_TYPE_MASK(LinkNum)	      (LmSCRATCH(LinkNum) + 0x00E0)
223062306a36Sopenharmony_ci#define LmSEQ_HASHED_DEST_ADDR_MASK(LinkNum)  (LmSCRATCH(LinkNum) + 0x00E1)
223162306a36Sopenharmony_ci#define LmSEQ_HASHED_SRC_ADDR_MASK_PRINT(LinkNum) (LmSCRATCH(LinkNum) + 0x00E4)
223262306a36Sopenharmony_ci#define LmSEQ_HASHED_SRC_ADDR_MASK(LinkNum)   (LmSCRATCH(LinkNum) + 0x00E5)
223362306a36Sopenharmony_ci#define LmSEQ_NUM_FILL_BYTES_MASK(LinkNum)    (LmSCRATCH(LinkNum) + 0x00EB)
223462306a36Sopenharmony_ci#define LmSEQ_TAG_MASK(LinkNum)		      (LmSCRATCH(LinkNum) + 0x00F0)
223562306a36Sopenharmony_ci#define LmSEQ_TARGET_PORT_XFER_TAG(LinkNum)   (LmSCRATCH(LinkNum) + 0x00F2)
223662306a36Sopenharmony_ci#define LmSEQ_DATA_OFFSET(LinkNum)	      (LmSCRATCH(LinkNum) + 0x00F4)
223762306a36Sopenharmony_ci
223862306a36Sopenharmony_ci/* Mode dependent scratch page 2 macros for mode 0 */
223962306a36Sopenharmony_ci/* Absolute offsets */
224062306a36Sopenharmony_ci#define LmSEQ_SMP_RCV_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0040)
224162306a36Sopenharmony_ci#define LmSEQ_DEVICE_BITS(LinkNum)		(LmSCRATCH(LinkNum) + 0x005B)
224262306a36Sopenharmony_ci#define LmSEQ_SDB_DDB(LinkNum)			(LmSCRATCH(LinkNum) + 0x005C)
224362306a36Sopenharmony_ci#define LmSEQ_SDB_NUM_TAGS(LinkNum)		(LmSCRATCH(LinkNum) + 0x005E)
224462306a36Sopenharmony_ci#define LmSEQ_SDB_CURR_TAG(LinkNum)		(LmSCRATCH(LinkNum) + 0x005F)
224562306a36Sopenharmony_ci
224662306a36Sopenharmony_ci/* Mode dependent scratch page 2 macros for mode 1 */
224762306a36Sopenharmony_ci/* Absolute offsets */
224862306a36Sopenharmony_ci/* byte 0 bits 1-0 are domain select. */
224962306a36Sopenharmony_ci#define LmSEQ_TX_ID_ADDR_FRAME(LinkNum)		(LmSCRATCH(LinkNum) + 0x00C0)
225062306a36Sopenharmony_ci#define LmSEQ_OPEN_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x00C8)
225162306a36Sopenharmony_ci#define LmSEQ_SRST_AS_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x00CC)
225262306a36Sopenharmony_ci#define LmSEQ_LAST_LOADED_SG_EL(LinkNum)	(LmSCRATCH(LinkNum) + 0x00D4)
225362306a36Sopenharmony_ci
225462306a36Sopenharmony_ci/* Mode dependent scratch page 2 macros for mode 2 */
225562306a36Sopenharmony_ci/* Absolute offsets */
225662306a36Sopenharmony_ci#define LmSEQ_STP_SHUTDOWN_TIMER_TERM_TS(LinkNum) (LmSCRATCH(LinkNum) + 0x0140)
225762306a36Sopenharmony_ci#define LmSEQ_CLOSE_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0144)
225862306a36Sopenharmony_ci#define LmSEQ_BREAK_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0148)
225962306a36Sopenharmony_ci#define LmSEQ_DWS_RESET_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x014C)
226062306a36Sopenharmony_ci#define LmSEQ_SATA_INTERLOCK_TIMER_TERM_TS(LinkNum) \
226162306a36Sopenharmony_ci						(LmSCRATCH(LinkNum) + 0x0150)
226262306a36Sopenharmony_ci#define LmSEQ_MCTL_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0154)
226362306a36Sopenharmony_ci
226462306a36Sopenharmony_ci/* Mode dependent scratch page 2 macros for mode 5 */
226562306a36Sopenharmony_ci#define LmSEQ_COMINIT_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0160)
226662306a36Sopenharmony_ci#define LmSEQ_RCV_ID_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0164)
226762306a36Sopenharmony_ci#define LmSEQ_RCV_FIS_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0168)
226862306a36Sopenharmony_ci#define LmSEQ_DEV_PRES_TIMER_TERM_TS(LinkNum)	(LmSCRATCH(LinkNum) + 0x016C)
226962306a36Sopenharmony_ci
227062306a36Sopenharmony_ci/* Mode dependent scratch page 3 macros for modes 0 and 1 */
227162306a36Sopenharmony_ci/* None defined */
227262306a36Sopenharmony_ci
227362306a36Sopenharmony_ci/* Mode dependent scratch page 3 macros for modes 2 and 5 */
227462306a36Sopenharmony_ci/* None defined */
227562306a36Sopenharmony_ci
227662306a36Sopenharmony_ci/* Mode Independent Scratch page 0 macros. */
227762306a36Sopenharmony_ci#define LmSEQ_Q_TGTXFR_HEAD(LinkNum)	(LmSCRATCH(LinkNum) + 0x0180)
227862306a36Sopenharmony_ci#define LmSEQ_Q_TGTXFR_TAIL(LinkNum)	(LmSCRATCH(LinkNum) + 0x0182)
227962306a36Sopenharmony_ci#define LmSEQ_LINK_NUMBER(LinkNum)	(LmSCRATCH(LinkNum) + 0x0186)
228062306a36Sopenharmony_ci#define LmSEQ_SCRATCH_FLAGS(LinkNum)	(LmSCRATCH(LinkNum) + 0x0187)
228162306a36Sopenharmony_ci/*
228262306a36Sopenharmony_ci * Currently only bit 0, SAS_DWSAQD, is used.
228362306a36Sopenharmony_ci */
228462306a36Sopenharmony_ci#define		SAS_DWSAQD			0x01  /*
228562306a36Sopenharmony_ci						       * DWSSTATUS: DWSAQD
228662306a36Sopenharmony_ci						       * bit las read in ISR.
228762306a36Sopenharmony_ci						       */
228862306a36Sopenharmony_ci#define  LmSEQ_CONNECTION_STATE(LinkNum) (LmSCRATCH(LinkNum) + 0x0188)
228962306a36Sopenharmony_ci/* Connection states (byte 0) */
229062306a36Sopenharmony_ci#define		SAS_WE_OPENED_CS		0x01
229162306a36Sopenharmony_ci#define		SAS_DEVICE_OPENED_CS		0x02
229262306a36Sopenharmony_ci#define		SAS_WE_SENT_DONE_CS		0x04
229362306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_DONE_CS		0x08
229462306a36Sopenharmony_ci#define		SAS_WE_SENT_CLOSE_CS		0x10
229562306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_CLOSE_CS	0x20
229662306a36Sopenharmony_ci#define		SAS_WE_SENT_BREAK_CS		0x40
229762306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_BREAK_CS	0x80
229862306a36Sopenharmony_ci/* Connection states (byte 1) */
229962306a36Sopenharmony_ci#define		SAS_OPN_TIMEOUT_OR_OPN_RJCT_CS	0x01
230062306a36Sopenharmony_ci#define		SAS_AIP_RECEIVED_CS		0x02
230162306a36Sopenharmony_ci#define		SAS_CREDIT_TIMEOUT_OCCURRED_CS	0x04
230262306a36Sopenharmony_ci#define		SAS_ACKNAK_TIMEOUT_OCCURRED_CS	0x08
230362306a36Sopenharmony_ci#define		SAS_SMPRSP_TIMEOUT_OCCURRED_CS	0x10
230462306a36Sopenharmony_ci#define		SAS_DONE_TIMEOUT_OCCURRED_CS	0x20
230562306a36Sopenharmony_ci/* Connection states (byte 2) */
230662306a36Sopenharmony_ci#define		SAS_SMP_RESPONSE_RECEIVED_CS	0x01
230762306a36Sopenharmony_ci#define		SAS_INTLK_TIMEOUT_OCCURRED_CS	0x02
230862306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_DMAT_CS		0x04
230962306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_SYNCSRST_CS	0x08
231062306a36Sopenharmony_ci#define		SAS_CLEARING_AFFILIATION_CS	0x20
231162306a36Sopenharmony_ci#define		SAS_RXTASK_ACTIVE_CS		0x40
231262306a36Sopenharmony_ci#define		SAS_TXTASK_ACTIVE_CS		0x80
231362306a36Sopenharmony_ci/* Connection states (byte 3) */
231462306a36Sopenharmony_ci#define		SAS_PHY_LOSS_OF_SIGNAL_CS	0x01
231562306a36Sopenharmony_ci#define		SAS_DWS_TIMER_EXPIRED_CS	0x02
231662306a36Sopenharmony_ci#define		SAS_LINK_RESET_NOT_COMPLETE_CS	0x04
231762306a36Sopenharmony_ci#define		SAS_PHY_DISABLED_CS		0x08
231862306a36Sopenharmony_ci#define		SAS_LINK_CTL_TASK_ACTIVE_CS	0x10
231962306a36Sopenharmony_ci#define		SAS_PHY_EVENT_TASK_ACTIVE_CS	0x20
232062306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_ID_FRAME_CS	0x40
232162306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_REG_FIS_CS	0x40
232262306a36Sopenharmony_ci#define		SAS_DEVICE_SENT_HARD_RESET_CS	0x80
232362306a36Sopenharmony_ci#define  	SAS_PHY_IS_DOWN_FLAGS	(SAS_PHY_LOSS_OF_SIGNAL_CS|\
232462306a36Sopenharmony_ci					 SAS_DWS_TIMER_EXPIRED_CS |\
232562306a36Sopenharmony_ci					 SAS_LINK_RESET_NOT_COMPLETE_CS|\
232662306a36Sopenharmony_ci					 SAS_PHY_DISABLED_CS)
232762306a36Sopenharmony_ci
232862306a36Sopenharmony_ci#define		SAS_LINK_CTL_PHY_EVENT_FLAGS   (SAS_LINK_CTL_TASK_ACTIVE_CS |\
232962306a36Sopenharmony_ci						SAS_PHY_EVENT_TASK_ACTIVE_CS |\
233062306a36Sopenharmony_ci						SAS_DEVICE_SENT_ID_FRAME_CS  |\
233162306a36Sopenharmony_ci						SAS_DEVICE_SENT_HARD_RESET_CS)
233262306a36Sopenharmony_ci
233362306a36Sopenharmony_ci#define LmSEQ_CONCTL(LinkNum)		(LmSCRATCH(LinkNum) + 0x018C)
233462306a36Sopenharmony_ci#define LmSEQ_CONSTAT(LinkNum)		(LmSCRATCH(LinkNum) + 0x018E)
233562306a36Sopenharmony_ci#define LmSEQ_CONNECTION_MODES(LinkNum)	(LmSCRATCH(LinkNum) + 0x018F)
233662306a36Sopenharmony_ci#define LmSEQ_REG1_ISR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0192)
233762306a36Sopenharmony_ci#define LmSEQ_REG2_ISR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0194)
233862306a36Sopenharmony_ci#define LmSEQ_REG3_ISR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0196)
233962306a36Sopenharmony_ci#define LmSEQ_REG0_ISR(LinkNum)		(LmSCRATCH(LinkNum) + 0x0198)
234062306a36Sopenharmony_ci
234162306a36Sopenharmony_ci/* Mode independent scratch page 1 macros. */
234262306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCBPTR0(LinkNum)	(LmSCRATCH(LinkNum) + 0x01A0)
234362306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCBPTR1(LinkNum)	(LmSCRATCH(LinkNum) + 0x01A2)
234462306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCBPTR2(LinkNum)	(LmSCRATCH(LinkNum) + 0x01A4)
234562306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCBPTR3(LinkNum)	(LmSCRATCH(LinkNum) + 0x01A6)
234662306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCB_OPCODE0(LinkNum)	(LmSCRATCH(LinkNum) + 0x01A8)
234762306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCB_OPCODE1(LinkNum)	(LmSCRATCH(LinkNum) + 0x01A9)
234862306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCB_OPCODE2(LinkNum)	(LmSCRATCH(LinkNum) + 0x01AA)
234962306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCB_OPCODE3(LinkNum)	(LmSCRATCH(LinkNum) + 0x01AB)
235062306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCB_HEAD(LinkNum)	(LmSCRATCH(LinkNum) + 0x01AC)
235162306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_SCB_TAIL(LinkNum)	(LmSCRATCH(LinkNum) + 0x01AD)
235262306a36Sopenharmony_ci#define LmSEQ_EST_NEXUS_BUF_AVAIL(LinkNum)	(LmSCRATCH(LinkNum) + 0x01AE)
235362306a36Sopenharmony_ci#define LmSEQ_TIMEOUT_CONST(LinkNum)		(LmSCRATCH(LinkNum) + 0x01B8)
235462306a36Sopenharmony_ci#define LmSEQ_ISR_SAVE_SINDEX(LinkNum)	        (LmSCRATCH(LinkNum) + 0x01BC)
235562306a36Sopenharmony_ci#define LmSEQ_ISR_SAVE_DINDEX(LinkNum)	        (LmSCRATCH(LinkNum) + 0x01BE)
235662306a36Sopenharmony_ci
235762306a36Sopenharmony_ci/* Mode independent scratch page 2 macros. */
235862306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_PTR0(LinkNum)	(LmSCRATCH(LinkNum) + 0x01C0)
235962306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_PTR1(LinkNum)	(LmSCRATCH(LinkNum) + 0x01C2)
236062306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_PTR2(LinkNum)	(LmSCRATCH(LinkNum) + 0x01C4)
236162306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_PTR3(LinkNum)	(LmSCRATCH(LinkNum) + 0x01C6)
236262306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_OPCD0(LinkNum)	(LmSCRATCH(LinkNum) + 0x01C8)
236362306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_OPCD1(LinkNum)	(LmSCRATCH(LinkNum) + 0x01C9)
236462306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_OPCD2(LinkNum)	(LmSCRATCH(LinkNum) + 0x01CA)
236562306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_OPCD3(LinkNum)	(LmSCRATCH(LinkNum) + 0x01CB)
236662306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_HEAD(LinkNum)	(LmSCRATCH(LinkNum) + 0x01CC)
236762306a36Sopenharmony_ci#define LmSEQ_EMPTY_SCB_TAIL(LinkNum)	(LmSCRATCH(LinkNum) + 0x01CD)
236862306a36Sopenharmony_ci#define LmSEQ_EMPTY_BUFS_AVAIL(LinkNum)	(LmSCRATCH(LinkNum) + 0x01CE)
236962306a36Sopenharmony_ci#define LmSEQ_ATA_SCR_REGS(LinkNum)	(LmSCRATCH(LinkNum) + 0x01D4)
237062306a36Sopenharmony_ci
237162306a36Sopenharmony_ci/* Mode independent scratch page 3 macros. */
237262306a36Sopenharmony_ci#define LmSEQ_DEV_PRES_TMR_TOUT_CONST(LinkNum)	(LmSCRATCH(LinkNum) + 0x01E0)
237362306a36Sopenharmony_ci#define LmSEQ_SATA_INTERLOCK_TIMEOUT(LinkNum)	(LmSCRATCH(LinkNum) + 0x01E4)
237462306a36Sopenharmony_ci#define LmSEQ_STP_SHUTDOWN_TIMEOUT(LinkNum)	(LmSCRATCH(LinkNum) + 0x01E8)
237562306a36Sopenharmony_ci#define LmSEQ_SRST_ASSERT_TIMEOUT(LinkNum)	(LmSCRATCH(LinkNum) + 0x01EC)
237662306a36Sopenharmony_ci#define LmSEQ_RCV_FIS_TIMEOUT(LinkNum)		(LmSCRATCH(LinkNum) + 0x01F0)
237762306a36Sopenharmony_ci#define LmSEQ_ONE_MILLISEC_TIMEOUT(LinkNum)	(LmSCRATCH(LinkNum) + 0x01F4)
237862306a36Sopenharmony_ci#define LmSEQ_TEN_MS_COMINIT_TIMEOUT(LinkNum)	(LmSCRATCH(LinkNum) + 0x01F8)
237962306a36Sopenharmony_ci#define LmSEQ_SMP_RCV_TIMEOUT(LinkNum)		(LmSCRATCH(LinkNum) + 0x01FC)
238062306a36Sopenharmony_ci
238162306a36Sopenharmony_ci#endif
2382