#ifndef _SFEREG_H_
#define _SFEREG_H_
struct sfe_desc {
volatile uint32_t d_link;
volatile uint32_t d_cmdsts;
volatile uint32_t d_bufptr;
};
#define CMDSTS_OWN 0x80000000U
#define CMDSTS_MORE 0x40000000U
#define CMDSTS_INTR 0x20000000U
#define CMDSTS_SUPCRC 0x10000000U
#define CMDSTS_INCCRC CMDSTS_SUPCRC
#define CMDSTS_OK 0x08000000U
#define CMDSTS_SIZE 0x00000fffU
#define CMDSTS_TXA 0x04000000U
#define CMDSTS_TFU 0x02000000U
#define CMDSTS_CRS 0x01000000U
#define CMDSTS_TD 0x00800000U
#define CMDSTS_ED 0x00400000U
#define CMDSTS_OWC 0x00200000U
#define CMDSTS_EC 0x00100000U
#define CMDSTS_CCNT 0x000f0000U
#define CMDSTS_CCNT_SHIFT (16)
#define CCNT_MASK 0xfU
#define TXSTAT_BITS \
"\020" \
"\040Own" \
"\037More" \
"\036Intr" \
"\035SupCrc" \
"\034Ok" \
"\033Abort" \
"\032UnderRun" \
"\031NoCarrier" \
"\030Deferd" \
"\027ExcDefer" \
"\026OWColl" \
"\025ExcColl"
#define RXSTAT_BITS \
"\020" \
"\040Own" \
"\037More" \
"\036Intr" \
"\035IncCrc" \
"\034Ok" \
"\032OverRun" \
"\031MCast" \
"\030UniMatch" \
"\027TooLong" \
"\026Runt" \
"\025RxISErr" \
"\024CrcErr" \
"\023FaErr" \
"\022LoopBk" \
"\021RxCol"
#define CMDSTS_RXA 0x04000000U
#define CMDSTS_RXO 0x02000000U
#define CMDSTS_DEST 0x01800000U
#define CMDSTS_DEST_SHIFT 23
#define DEST_REJECT 0U
#define DEST_NODE 1U
#define DEST_MULTI 2U
#define DEST_BROAD 3U
#define CMDSTS_LONG 0x00400000U
#define CMDSTS_RUNT 0x00200000U
#define CMDSTS_ISE 0x00100000U
#define CMDSTS_CRCE 0x00080000U
#define CMDSTS_FAE 0x00040000U
#define CMDSTS_LBP 0x00020000U
#define CMDSTS_COL 0x00010000U
#define CR 0x00
#define CFG 0x04
#define EROMAR 0x08
#define MEAR 0x08
#define PTSCR 0x0c
#define ISR 0x10
#define IMR 0x14
#define IER 0x18
#define ENPHY 0x1c
#define TXDP 0x20
#define TXCFG 0x24
#define RXDP 0x30
#define RXCFG 0x34
#define FLOWCTL 0x38
#define CCSR 0x3c
#define PCR 0x44
#define RFCR 0x48
#define RFDR 0x4c
#define SRR 0x58
#define MII_REGS_BASE 0x80
#define PMCTL 0xb0
#define PMEVT 0xb4
#define WAKECRC 0xbc
#define WAKEMASK 0xc0
#define CR_RELOAD 0x0400U
#define CR_ACCESSMODE 0x0200U
#define CR_RST 0x0100U
#define CR_SWI 0x0080U
#define CR_RXR 0x0020U
#define CR_TXR 0x0010U
#define CR_RXD 0x0008U
#define CR_RXE 0x0004U
#define CR_TXD 0x0002U
#define CR_TXE 0x0001U
#define CR_BITS \
"\020" \
"\011Reset" \
"\010SWI" \
"\006RxReset" \
"\005TxReset" \
"\004RxDisable" \
"\003RxEnable" \
"\002TxDisable" \
"\001TxEnable"
#define CFG_LNKSTS 0x80000000U
#define CFG_SPEED100 0x40000000U
#define CFG_FDUP 0x20000000U
#define CFG_POL 0x10000000U
#define CFG_ANEG_DN 0x08000000U
#define CFG_PHY_CFG 0x00fc0000U
#define CFG_PINT_ACEN 0x00020000U
#define CFG_PAUSE_ADV 0x00010000U
#define CFG_ANEG_SEL 0x0000e000U
#define CFG_EDB_MASTER 0x00002000U
#define CFG_EXT_PHY 0x00001000U
#define CFG_PHY_RST 0x00000400U
#define CFG_RND_CNT 0x00000400U
#define CFG_PHY_DIS 0x00000200U
#define CFG_FAIR_BCKOFF 0x00000200U
#define CFG_EUPHCOMP 0x00000100U
#define CFG_DESCRFMT 0x00000100U
#define CFG_REQALG 0x00000080U
#define CFG_SB 0x00000040U
#define CFG_POW 0x00000020U
#define CFG_EXD 0x00000010U
#define CFG_PESEL 0x00000008U
#define CFG_BROM_DIS 0x00000004U
#define CFG_BEM 0x00000001U
#define CFG_BITS_DP83815 \
"\020" \
"\040CFG_LNKSTS" \
"\037SPEED100" \
"\036FDUP" \
"\035POL" \
"\034ANEG_DN" \
"\022PINT_ACEN" \
"\021PAUSE_ADV" \
"\015EXT_PHY" \
"\013PHY_RST" \
"\012PHY_DIS" \
"\011EUPHCOMP" \
"\010REQALG" \
"\007SB" \
"\006POW" \
"\005EXD" \
"\004PESEL" \
"\003BROM_DIS" \
"\001BEM"
#define CFG_BITS_SIS900 \
"\020" \
"\016EDB_EN" \
"\013RND_CNT" \
"\010REQALG" \
"\007SB" \
"\006POW" \
"\005EXD" \
"\004PESEL" \
"\001BEM"
#define EROMAR_EECS 0x00000008U
#define EROMAR_EESK 0x00000004U
#define EROMAR_EEDO 0x00000002U
#define EROMAR_EEDO_SHIFT 1
#define EROMAR_EEDI 0x00000001U
#define EROMAR_EEDI_SHIFT 0
#define EROMAR_EEREQ 0x00000400U
#define EROMAR_EEDONE 0x00000200U
#define EROMAR_EEGNT 0x00000100U
#define MEAR_MDC 0x00000040U
#define MEAR_MDDIR 0x00000020U
#define MEAR_MDIO 0x00000010U
#define MEAR_MDIO_SHIFT 4
#define DISCARD_TEST 0x40000000U
#define ISR_WAKEEVT 0x10000000U
#define ISR_PAUSE_END 0x08000000U
#define ISR_PAUSE_ST 0x04000000U
#define ISR_TXRCMP 0x02000000U
#define ISR_RXRCMP 0x01000000U
#define ISR_DPERR 0x00800000U
#define ISR_SSERR 0x00400000U
#define ISR_RMABT 0x00200000U
#define ISR_RTABT 0x00100000U
#define ISR_RXSOVR 0x00010000U
#define ISR_HIBERR 0x00008000U
#define ISR_SWI 0x00001000U
#define ISR_TXURN 0x00000400U
#define ISR_TXIDLE 0x00000200U
#define ISR_TXERR 0x00000100U
#define ISR_TXDESC 0x00000080U
#define ISR_TXOK 0x00000040U
#define ISR_RXORN 0x00000020U
#define ISR_RXIDLE 0x00000010U
#define ISR_RXEARLY 0x00000008U
#define ISR_RXERR 0x00000004U
#define ISR_RXDESC 0x00000002U
#define ISR_RXOK 0x00000001U
#define INTR_BITS \
"\020" \
"\035WakeEvt" \
"\034PauseEnd" \
"\033PauseST" \
"\032TXRCMP" \
"\031RXRCMP" \
"\030DPErr" \
"\027SSErr" \
"\026RMAbt" \
"\025RTAbt" \
"\021RxSOVR" \
"\020HIBErr" \
"\015SWI" \
"\013TxUrn" \
"\012TxIdle" \
"\011TxErr" \
"\010TxDesc" \
"\007TxOk" \
"\006RxORN" \
"\005RxIdle" \
"\004RxEarly" \
"\003RxErr" \
"\002RxDesc" \
"\001RxOk"
#define IER_IE 0x00000001
#define ENPHY_DATA 0xffff0000U
#define ENPHY_DATA_SHIFT 16
#define ENPHY_ADDR 0x0000f800U
#define ENPHY_ADDR_SHIFT 11
#define ENPHY_OFFSET 0x000007c0U
#define ENPHY_OFFSET_SHIFT 6
#define ENPHY_RDCMD 0x00000020U
#define ENPHY_ACCESS 0x00000010U
#define TXCFG_CSI 0x80000000U
#define TXCFG_HBI 0x40000000U
#define TXCFG_MLB 0x20000000U
#define TXCFG_ATP 0x10000000U
#define TXCFG_MXDMA 0x00700000U
#define TXCFG_MXDMA_SHIFT 20
#define TXCFG_MXDMA_512 (0U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_4 (1U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_8 (2U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_16 (3U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_32 (4U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_64 (5U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_128 (6U << TXCFG_MXDMA_SHIFT)
#define TXCFG_MXDMA_256 (7U << TXCFG_MXDMA_SHIFT)
#define TXCFG_FLTH 0x00003f00U
#define TXCFG_FLTH_SHIFT 8
#define TXCFG_DRTH 0x0000003fU
#define TXFIFOSIZE 2048U
#define TXCFG_FIFO_UNIT 32U
#define TXCFG_BITS "\020\040CSI\037HBI\036MLB\035ATP"
#define RXCFG_AEP 0x80000000U
#define RXCFG_ARP 0x40000000U
#define RXCFG_ATX 0x10000000U
#define RXCFG_AJAB 0x08000000U
#define RXCFG_ALP_DP83815 0x08000000U
#define RXCFG_MXDMA 0x00700000U
#define RXCFG_MXDMA_SHIFT (20)
#define RXCFG_MXDMA_512 (0U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_4 (1U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_8 (2U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_16 (3U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_32 (4U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_64 (5U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_128 (6U << RXCFG_MXDMA_SHIFT)
#define RXCFG_MXDMA_256 (7U << RXCFG_MXDMA_SHIFT)
#define RXCFG_DRTH 0x0000003eU
#define RXCFG_DRTH_SHIFT 1
#define RXFIFOSIZE 2048U
#define RXCFG_FIFO_UNIT 8U
#define RXCFG_BITS "\020\040AEP\037ARP\035ATX\034AJAB"
#define FLOWCTL_PAUSE 0x00000002U
#define FLOWCTL_FLOWEN 0x00000001U
#define FLOWCTL_BITS "\020\002PAUSE\001FLOWEN"
#define CCSR_PMESTS 0x00008000U
#define CCSR_PMEEN 0x00000100U
#define CCSR_CLKRUN_EN 0x00000001U
#define PCR_PSEN 0x80000000U
#define PCR_PS_MCAST 0x40000000U
#define PCR_PS_DA 0x20000000U
#define PCR_PS_ACT 0x00800000U
#define PCR_PS_RCVD 0x00400000U
#define PCR_PSNEG 0x00200000U
#define PCR_MLD_EN 0x00010000U
#define PCR_PAUSE_CNT 0x0000ffffU
#define PCR_BITS \
"\020" \
"\040PCR_PSEN" \
"\037PCR_PS_MCAST" \
"\036PCR_PS_DA" \
"\030PCR_PS_ACT" \
"\027PCR_PS_RCVD" \
"\026PCR_PSNEG" \
"\021PCR_MLD_EN"
#define RFCR_RFEN 0x80000000U
#define RFCR_AAB 0x40000000U
#define RFCR_AAM 0x20000000U
#define RFCR_AAP 0x10000000U
#define RFCR_APM_DP83815 0x08000000U
#define RFCR_APAT_DP83815 0x07800000U
#define RFCR_APAT_SHIFT 23
#define RFCR_AARP_DP83815 0x00400000U
#define RFCR_MHEN_DP83815 0x00200000U
#define RFCR_UHEN_DP83815 0x00100000U
#define RFCR_ULM_DP83815 0x00080000U
#define RFCR_RFADDR_SIS900 0x000f0000U
#define RFCR_RFADDR_SHIFT_SIS900 16
#define RFCR_RFADDR_DP83815 0x000003ffU
#define RFCR_RFADDR_SHIFT_DP83815 0
#define RFADDR_MAC_SIS900 0U
#define RFADDR_MULTICAST_SIS900 4U
#define RFADDR_MAC_DP83815 0x000U
#define RFADDR_PCOUNT01_DP83815 0x006U
#define RFADDR_PCOUNT23_DP83815 0x008U
#define RFADDR_MULTICAST_DP83815 0x200U
#define RFADDR_PMATCH0_DP83815 0x280U
#define RFADDR_PMATCH1_DP83815 0x282U
#define RFADDR_PMATCH2_DP83815 0x300U
#define RFADDR_PMATCH3_DP83815 0x302U
#define SRR_REV 0x0000ffffU
#define SRR_REV_DP83815CVNG 0x0302U
#define SRR_REV_DP83815DVNG 0x0403U
#define SRR_REV_DP83816AVNG 0x0505U
#define SIS630A_900_REV 0x80
#define SIS630E_900_REV 0x81
#define SIS630S_900_REV 0x82
#define SIS630EA1_900_REV 0x83
#define SIS630ET_900_REV 0x84
#define SIS635A_900_REV 0x90
#define SIS962_900_REV 0X91
#define SIS900B_900_REV 0x03
#define SIS630A0 0x00
#define SIS630A1 0x01
#define SIS630B0 0x10
#define SIS630B1 0x11
#endif