10#define PCI_DEV_REG1 0x40
11#define PCI_PHY_COMA 0x8000000
12#define PCI_VIO 0x2000000
14#define PCI_DEV_REG2 0x44
15#define PCI_VPD_ROM_SZ 7L<<14
16#define PCI_REV_DESC 1<<2
18#define DRV_NAME "skge"
19#define DRV_VERSION "1.13"
20#define PFX DRV_NAME " "
26#define SKGE_RING_ALIGN 8
27#define RX_BUF_SIZE 1536
28#define PHY_RETRIES 1000
30#define TX_RING_SIZE ( NUM_TX_DESC * sizeof ( struct skge_rx_desc ) )
31#define RX_RING_SIZE ( NUM_RX_DESC * sizeof ( struct skge_tx_desc ) )
32#define RING_SIZE ( TX_RING_SIZE + RX_RING_SIZE )
34#define SKGE_REG_SIZE 0x4000
36#define SKGE_EEPROM_MAGIC 0x9933aabb
41#define AUTONEG_DISABLE 0x00
42#define AUTONEG_ENABLE 0x01
44#define DUPLEX_HALF 0x00
45#define DUPLEX_FULL 0x01
49#define SPEED_1000 1000
51#define ADVERTISED_10baseT_Half (1 << 0)
52#define ADVERTISED_10baseT_Full (1 << 1)
53#define ADVERTISED_100baseT_Half (1 << 2)
54#define ADVERTISED_100baseT_Full (1 << 3)
55#define ADVERTISED_1000baseT_Half (1 << 4)
56#define ADVERTISED_1000baseT_Full (1 << 5)
58#define SUPPORTED_10baseT_Half (1 << 0)
59#define SUPPORTED_10baseT_Full (1 << 1)
60#define SUPPORTED_100baseT_Half (1 << 2)
61#define SUPPORTED_100baseT_Full (1 << 3)
62#define SUPPORTED_1000baseT_Half (1 << 4)
63#define SUPPORTED_1000baseT_Full (1 << 5)
64#define SUPPORTED_Autoneg (1 << 6)
65#define SUPPORTED_TP (1 << 7)
66#define SUPPORTED_FIBRE (1 << 10)
70#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
71 PCI_STATUS_SIG_SYSTEM_ERROR | \
72 PCI_STATUS_REC_MASTER_ABORT | \
73 PCI_STATUS_REC_TARGET_ABORT | \
416#define RAM_ADR_RAN 0x0007ffffL
439#define SK_MAC_TO_53 72
440#define SK_PKT_TO_53 0x2000
441#define SK_PKT_TO_MAX 0xffff
442#define SK_RI_TO_53 36
463#define PA_ENA_TO_ALL (PA_ENA_TO_RX1 | PA_ENA_TO_RX2 |\
464 PA_ENA_TO_TX1 | PA_ENA_TO_TX2)
473#define TXA_MAX_VAL 0x00ffffffUL
534#define Q_ADDR(reg, offs) (B8_Q_REGS + (reg) + (offs))
590#define RB_ADDR(offs, queue) ((u16)B16_RAM_REGS + (u16)(queue) + (offs))
790#define CSR_SET_RESET (CSR_DESC_SET | CSR_FIFO_SET | CSR_HPI_RST |\
791 CSR_SV_RST | CSR_DREAD_RST | CSR_DWRITE_RST |\
793#define CSR_CLR_RESET (CSR_DESC_CLR | CSR_FIFO_CLR | CSR_HPI_RUN |\
794 CSR_SV_RUN | CSR_DREAD_RUN | CSR_DWRITE_RUN |\
820#define RB_MSK 0x0007ffff
856#define SK_XMIT_DUR 0x002faf08UL
857#define SK_BLK_DUR 0x01dcd650UL
859#define SK_DPOLL_DEF 0x00ee6b28UL
861#define SK_DPOLL_MAX 0x00ffffffUL
864#define SK_FACT_62 100
866#define SK_FACT_78 125
934#define WOL_REGS(port, x) (x + (port)*0x80)
940#define WOL_PATT_RAM_BASE(port) (WOL_PATT_RAM_1 + (port)*0x400)
1307#define PHY_B_AS_PAUSE_MSK (PHY_B_AS_PRR | PHY_B_AS_PRT)
1328#define PHY_B_DEF_MSK \
1329 (~(PHY_B_IS_PSE | PHY_B_IS_AN_PR | PHY_B_IS_DUP_CHANGE | \
1330 PHY_B_IS_LSP_CHANGE | PHY_B_IS_LST_CHANGE))
1451#define PHY_M_PS_PAUSE_MSK (PHY_M_PS_TX_P_EN | PHY_M_PS_RX_P_EN)
1504#define PHY_M_EC_M_DSC(x) ((u16)(x)<<10)
1505#define PHY_M_EC_S_DSC(x) ((u16)(x)<<8)
1506#define PHY_M_EC_MAC_S(x) ((u16)(x)<<4)
1508#define PHY_M_EC_M_DSC_2(x) ((u16)(x)<<9)
1527#define PHY_M_LED_PULS_DUR(x) (((u16)(x)<<12) & PHY_M_LEDC_PULS_MSK)
1528#define PHY_M_LED_BLINK_RT(x) (((u16)(x)<<8) & PHY_M_LEDC_BL_R_MSK)
1561#define PHY_M_LED_MO_SGMII(x) ((x)<<14)
1563#define PHY_M_LED_MO_DUP(x) ((x)<<10)
1564#define PHY_M_LED_MO_10(x) ((x)<<8)
1565#define PHY_M_LED_MO_100(x) ((x)<<6)
1566#define PHY_M_LED_MO_1000(x) ((x)<<4)
1567#define PHY_M_LED_MO_RX(x) ((x)<<2)
1568#define PHY_M_LED_MO_TX(x) ((x)<<0)
1630#define PHY_M_FELP_LED2_CTRL(x) (((x)<<8) & PHY_M_FELP_LED2_MSK)
1631#define PHY_M_FELP_LED1_CTRL(x) (((x)<<4) & PHY_M_FELP_LED1_MSK)
1632#define PHY_M_FELP_LED0_CTRL(x) (((x)<<0) & PHY_M_FELP_LED0_MSK)
1669#define PHY_M_LEDC_LOS_CTRL(x) (((x)<<12) & PHY_M_LEDC_LOS_MSK)
1670#define PHY_M_LEDC_INIT_CTRL(x) (((x)<<8) & PHY_M_LEDC_INIT_MSK)
1671#define PHY_M_LEDC_STA1_CTRL(x) (((x)<<4) & PHY_M_LEDC_STA1_MSK)
1672#define PHY_M_LEDC_STA0_CTRL(x) (((x)<<0) & PHY_M_LEDC_STA0_MSK)
1715#define GM_MIB_CNT_BASE 0x0100
1716#define GM_MIB_CNT_SIZE 44
1807#define GM_GPCR_SPEED_1000 (GM_GPCR_GIGS_ENA | GM_GPCR_SPEED_100)
1808#define GM_GPCR_AU_ALL_DIS (GM_GPCR_AU_DUP_DIS | GM_GPCR_AU_FCT_DIS|GM_GPCR_AU_SPD_DIS)
1818#define TX_COL_THR(x) (((x)<<10) & GM_TXCR_COL_THR_MSK)
1819#define TX_COL_DEF 0x04
1840#define TX_JAM_LEN_VAL(x) (((x)<<14) & GM_TXPA_JAMLEN_MSK)
1841#define TX_JAM_IPG_VAL(x) (((x)<<9) & GM_TXPA_JAMIPG_MSK)
1842#define TX_IPG_JAM_DATA(x) (((x)<<4) & GM_TXPA_JAMDAT_MSK)
1854#define DATA_BLIND_VAL(x) (((x)<<11) & GM_SMOD_DATABL_MSK)
1855#define DATA_BLIND_DEF 0x04
1857#define IPG_DATA_VAL(x) (x & GM_SMOD_IPG_MSK)
1858#define IPG_DATA_DEF 0x1e
1869#define GM_SMI_CT_PHY_AD(x) (((x)<<11) & GM_SMI_CT_PHY_A_MSK)
1870#define GM_SMI_CT_REG_AD(x) (((x)<<6) & GM_SMI_CT_REG_A_MSK)
1988#define GPC_HWCFG_GMII_COP (GPC_HWCFG_M_3|GPC_HWCFG_M_2 | GPC_HWCFG_M_1 | GPC_HWCFG_M_0)
1989#define GPC_HWCFG_GMII_FIB (GPC_HWCFG_M_2 | GPC_HWCFG_M_1 | GPC_HWCFG_M_0)
1990#define GPC_ANEG_ADV_ALL_M (GPC_ANEG_3 | GPC_ANEG_2 | GPC_ANEG_1 | GPC_ANEG_0)
1993#define GPC_FRC10MBIT_HALF 0
1994#define GPC_FRC10MBIT_FULL GPC_ANEG_0
1995#define GPC_FRC100MBIT_HALF GPC_ANEG_1
1996#define GPC_FRC100MBIT_FULL (GPC_ANEG_0 | GPC_ANEG_1)
2000#define GPC_ADV_1000_HALF GPC_ANEG_2
2001#define GPC_ADV_1000_FULL GPC_ANEG_3
2002#define GPC_ADV_ALL (GPC_ANEG_2 | GPC_ANEG_3)
2006#define GPC_FORCE_MASTER 0
2007#define GPC_FORCE_SLAVE GPC_ANEG_0
2008#define GPC_PREF_MASTER GPC_ANEG_1
2009#define GPC_PREF_SLAVE (GPC_ANEG_1 | GPC_ANEG_0)
2021#define GMAC_DEF_MSK (GM_IS_RX_FF_OR | GM_IS_TX_FF_UR)
2048#define WOL_CTL_DEFAULT \
2049 (WOL_CTL_DIS_PME_ON_LINK_CHG | \
2050 WOL_CTL_DIS_PME_ON_PATTERN | \
2051 WOL_CTL_DIS_PME_ON_MAGIC_PKT | \
2052 WOL_CTL_DIS_LINK_CHG_UNIT | \
2053 WOL_CTL_DIS_PATTERN_UNIT | \
2054 WOL_CTL_DIS_MAGIC_PKT_UNIT)
2057#define WOL_CTL_PATT_ENA(x) (1 << (x))
2089#define XM_EXM(reg) (XM_EXM_START + ((reg) << 3))
2195#define XM_RT_LIM_MSK 0x1f
2199#define XM_STIME_MSK 0x7f
2203#define XM_IPG_MSK 0xff
2264#define XM_TX_WM_MSK 0x01ff
2269#define XM_THR_MSK 0x03ff
2293#define XM_RX_WM_MSK 0x03ff
2297#define XM_DEV_OUI (0x00ffffffUL<<8)
2298#define XM_DEV_REV (0x07L << 5)
2336#define XM_PAUSE_MODE (XM_MD_SPOE_E | XM_MD_SPOL_I | XM_MD_SPOH_I)
2337#define XM_DEF_MODE (XM_MD_RX_RUNT | XM_MD_RX_IRLE | XM_MD_RX_LONG |\
2338 XM_MD_RX_CRCE | XM_MD_RX_ERR | XM_MD_CSA)
2386#define XMR_DEF_MSK (XMR_OK_LO_OV | XMR_OK_HI_OV)
2420#define XMT_DEF_MSK (XMT_OK_LO_OV | XMT_OK_HI_OV)
2548#define SK_REG(port,reg) (((port)<<7)+(u16)(reg))
2549#define SK_XMAC_REG(port, reg) \
2550 ((BASE_XMAC_1 + (port) * (BASE_XMAC_2 - BASE_XMAC_1)) | (reg) << 1)
2593#define SK_GMAC_REG(port,reg) \
2594 (BASE_GMAC_1 + (port) * (BASE_GMAC_2-BASE_GMAC_1) + (reg))
pseudo_bit_t hash[0x00010]
uint32_t addr
Buffer address.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
static const uint8_t r[3][4]
MD4 shift amounts.
static unsigned int unsigned int reg
@ FLOW_STAT_INDETERMINATED
static void xm_outaddr(const struct skge_hw *hw, int port, int reg, const u8 *addr)
static void skge_write32(const struct skge_hw *hw, int reg, u32 val)
static void gma_write16(const struct skge_hw *hw, int port, int r, u16 v)
static u16 skge_read16(const struct skge_hw *hw, int reg)
static u32 xm_read32(const struct skge_hw *hw, int port, int reg)
static u32 gma_read32(const struct skge_hw *hw, int port, int reg)
static u16 xm_read16(const struct skge_hw *hw, int port, int reg)
@ WOL_CTL_ENA_MAGIC_PKT_UNIT
@ WOL_CTL_DIS_PATTERN_UNIT
@ WOL_CTL_DIS_PME_ON_PATTERN
@ WOL_CTL_ENA_PME_ON_LINK_CHG
@ WOL_CTL_ENA_PME_ON_MAGIC_PKT
@ WOL_CTL_DIS_PME_ON_LINK_CHG
@ WOL_CTL_DIS_LINK_CHG_UNIT
@ WOL_CTL_DIS_PME_ON_MAGIC_PKT
@ WOL_CTL_ENA_PME_ON_PATTERN
@ WOL_CTL_DIS_MAGIC_PKT_UNIT
@ WOL_CTL_ENA_LINK_CHG_UNIT
@ WOL_CTL_ENA_PATTERN_UNIT
static void xm_write32(const struct skge_hw *hw, int port, int r, u32 v)
static void gma_set_addr(struct skge_hw *hw, int port, int reg, const u8 *addr)
static u16 gma_read16(const struct skge_hw *hw, int port, int reg)
static void xm_write16(const struct skge_hw *hw, int port, int r, u16 v)
static void skge_write16(const struct skge_hw *hw, int reg, u16 val)
static u32 skge_read32(const struct skge_hw *hw, int reg)
static void xm_outhash(const struct skge_hw *hw, int port, int reg, const u8 *hash)
#define SK_XMAC_REG(port, reg)
static void skge_write8(const struct skge_hw *hw, int reg, u8 val)
static u8 skge_read8(const struct skge_hw *hw, int reg)
#define SK_GMAC_REG(port, reg)
struct skge_element * next
struct net_device * dev[2]
struct net_device * netdev
enum pause_status flow_status
enum pause_control flow_control
struct skge_element * start
struct skge_element * to_clean
struct skge_element * to_use