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