aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/sky2.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/sky2.h')
-rw-r--r--drivers/net/sky2.h167
1 files changed, 148 insertions, 19 deletions
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
index b8c4a3b5eadf..dce4d276d443 100644
--- a/drivers/net/sky2.h
+++ b/drivers/net/sky2.h
@@ -14,6 +14,8 @@ enum {
14 PCI_DEV_REG3 = 0x80, 14 PCI_DEV_REG3 = 0x80,
15 PCI_DEV_REG4 = 0x84, 15 PCI_DEV_REG4 = 0x84,
16 PCI_DEV_REG5 = 0x88, 16 PCI_DEV_REG5 = 0x88,
17 PCI_CFG_REG_0 = 0x90,
18 PCI_CFG_REG_1 = 0x94,
17}; 19};
18 20
19enum { 21enum {
@@ -28,6 +30,7 @@ enum {
28enum pci_dev_reg_1 { 30enum pci_dev_reg_1 {
29 PCI_Y2_PIG_ENA = 1<<31, /* Enable Plug-in-Go (YUKON-2) */ 31 PCI_Y2_PIG_ENA = 1<<31, /* Enable Plug-in-Go (YUKON-2) */
30 PCI_Y2_DLL_DIS = 1<<30, /* Disable PCI DLL (YUKON-2) */ 32 PCI_Y2_DLL_DIS = 1<<30, /* Disable PCI DLL (YUKON-2) */
33 PCI_SW_PWR_ON_RST= 1<<30, /* SW Power on Reset (Yukon-EX) */
31 PCI_Y2_PHY2_COMA = 1<<29, /* Set PHY 2 to Coma Mode (YUKON-2) */ 34 PCI_Y2_PHY2_COMA = 1<<29, /* Set PHY 2 to Coma Mode (YUKON-2) */
32 PCI_Y2_PHY1_COMA = 1<<28, /* Set PHY 1 to Coma Mode (YUKON-2) */ 35 PCI_Y2_PHY1_COMA = 1<<28, /* Set PHY 1 to Coma Mode (YUKON-2) */
33 PCI_Y2_PHY2_POWD = 1<<27, /* Set PHY 2 to Power Down (YUKON-2) */ 36 PCI_Y2_PHY2_POWD = 1<<27, /* Set PHY 2 to Power Down (YUKON-2) */
@@ -67,6 +70,80 @@ enum pci_dev_reg_4 {
67 | P_ASPM_CLKRUN_REQUEST | P_ASPM_INT_FIFO_EMPTY, 70 | P_ASPM_CLKRUN_REQUEST | P_ASPM_INT_FIFO_EMPTY,
68}; 71};
69 72
73/* PCI_OUR_REG_5 32 bit Our Register 5 (Yukon-ECU only) */
74enum pci_dev_reg_5 {
75 /* Bit 31..27: for A3 & later */
76 P_CTL_DIV_CORE_CLK_ENA = 1<<31, /* Divide Core Clock Enable */
77 P_CTL_SRESET_VMAIN_AV = 1<<30, /* Soft Reset for Vmain_av De-Glitch */
78 P_CTL_BYPASS_VMAIN_AV = 1<<29, /* Bypass En. for Vmain_av De-Glitch */
79 P_CTL_TIM_VMAIN_AV_MSK = 3<<27, /* Bit 28..27: Timer Vmain_av Mask */
80 /* Bit 26..16: Release Clock on Event */
81 P_REL_PCIE_RST_DE_ASS = 1<<26, /* PCIe Reset De-Asserted */
82 P_REL_GPHY_REC_PACKET = 1<<25, /* GPHY Received Packet */
83 P_REL_INT_FIFO_N_EMPTY = 1<<24, /* Internal FIFO Not Empty */
84 P_REL_MAIN_PWR_AVAIL = 1<<23, /* Main Power Available */
85 P_REL_CLKRUN_REQ_REL = 1<<22, /* CLKRUN Request Release */
86 P_REL_PCIE_RESET_ASS = 1<<21, /* PCIe Reset Asserted */
87 P_REL_PME_ASSERTED = 1<<20, /* PME Asserted */
88 P_REL_PCIE_EXIT_L1_ST = 1<<19, /* PCIe Exit L1 State */
89 P_REL_LOADER_NOT_FIN = 1<<18, /* EPROM Loader Not Finished */
90 P_REL_PCIE_RX_EX_IDLE = 1<<17, /* PCIe Rx Exit Electrical Idle State */
91 P_REL_GPHY_LINK_UP = 1<<16, /* GPHY Link Up */
92
93 /* Bit 10.. 0: Mask for Gate Clock */
94 P_GAT_PCIE_RST_ASSERTED = 1<<10,/* PCIe Reset Asserted */
95 P_GAT_GPHY_N_REC_PACKET = 1<<9, /* GPHY Not Received Packet */
96 P_GAT_INT_FIFO_EMPTY = 1<<8, /* Internal FIFO Empty */
97 P_GAT_MAIN_PWR_N_AVAIL = 1<<7, /* Main Power Not Available */
98 P_GAT_CLKRUN_REQ_REL = 1<<6, /* CLKRUN Not Requested */
99 P_GAT_PCIE_RESET_ASS = 1<<5, /* PCIe Reset Asserted */
100 P_GAT_PME_DE_ASSERTED = 1<<4, /* PME De-Asserted */
101 P_GAT_PCIE_ENTER_L1_ST = 1<<3, /* PCIe Enter L1 State */
102 P_GAT_LOADER_FINISHED = 1<<2, /* EPROM Loader Finished */
103 P_GAT_PCIE_RX_EL_IDLE = 1<<1, /* PCIe Rx Electrical Idle State */
104 P_GAT_GPHY_LINK_DOWN = 1<<0, /* GPHY Link Down */
105
106 PCIE_OUR5_EVENT_CLK_D3_SET = P_REL_GPHY_REC_PACKET |
107 P_REL_INT_FIFO_N_EMPTY |
108 P_REL_PCIE_EXIT_L1_ST |
109 P_REL_PCIE_RX_EX_IDLE |
110 P_GAT_GPHY_N_REC_PACKET |
111 P_GAT_INT_FIFO_EMPTY |
112 P_GAT_PCIE_ENTER_L1_ST |
113 P_GAT_PCIE_RX_EL_IDLE,
114};
115
116#/* PCI_CFG_REG_1 32 bit Config Register 1 (Yukon-Ext only) */
117enum pci_cfg_reg1 {
118 P_CF1_DIS_REL_EVT_RST = 1<<24, /* Dis. Rel. Event during PCIE reset */
119 /* Bit 23..21: Release Clock on Event */
120 P_CF1_REL_LDR_NOT_FIN = 1<<23, /* EEPROM Loader Not Finished */
121 P_CF1_REL_VMAIN_AVLBL = 1<<22, /* Vmain available */
122 P_CF1_REL_PCIE_RESET = 1<<21, /* PCI-E reset */
123 /* Bit 20..18: Gate Clock on Event */
124 P_CF1_GAT_LDR_NOT_FIN = 1<<20, /* EEPROM Loader Finished */
125 P_CF1_GAT_PCIE_RX_IDLE = 1<<19, /* PCI-E Rx Electrical idle */
126 P_CF1_GAT_PCIE_RESET = 1<<18, /* PCI-E Reset */
127 P_CF1_PRST_PHY_CLKREQ = 1<<17, /* Enable PCI-E rst & PM2PHY gen. CLKREQ */
128 P_CF1_PCIE_RST_CLKREQ = 1<<16, /* Enable PCI-E rst generate CLKREQ */
129
130 P_CF1_ENA_CFG_LDR_DONE = 1<<8, /* Enable core level Config loader done */
131
132 P_CF1_ENA_TXBMU_RD_IDLE = 1<<1, /* Enable TX BMU Read IDLE for ASPM */
133 P_CF1_ENA_TXBMU_WR_IDLE = 1<<0, /* Enable TX BMU Write IDLE for ASPM */
134
135 PCIE_CFG1_EVENT_CLK_D3_SET = P_CF1_DIS_REL_EVT_RST |
136 P_CF1_REL_LDR_NOT_FIN |
137 P_CF1_REL_VMAIN_AVLBL |
138 P_CF1_REL_PCIE_RESET |
139 P_CF1_GAT_LDR_NOT_FIN |
140 P_CF1_GAT_PCIE_RESET |
141 P_CF1_PRST_PHY_CLKREQ |
142 P_CF1_ENA_CFG_LDR_DONE |
143 P_CF1_ENA_TXBMU_RD_IDLE |
144 P_CF1_ENA_TXBMU_WR_IDLE,
145};
146
70 147
71#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \ 148#define PCI_STATUS_ERROR_BITS (PCI_STATUS_DETECTED_PARITY | \
72 PCI_STATUS_SIG_SYSTEM_ERROR | \ 149 PCI_STATUS_SIG_SYSTEM_ERROR | \
@@ -364,6 +441,20 @@ enum {
364 TST_CFG_WRITE_OFF= 1<<0, /* Disable Config Reg WR */ 441 TST_CFG_WRITE_OFF= 1<<0, /* Disable Config Reg WR */
365}; 442};
366 443
444/* B2_GPIO */
445enum {
446 GLB_GPIO_CLK_DEB_ENA = 1<<31, /* Clock Debug Enable */
447 GLB_GPIO_CLK_DBG_MSK = 0xf<<26, /* Clock Debug */
448
449 GLB_GPIO_INT_RST_D3_DIS = 1<<15, /* Disable Internal Reset After D3 to D0 */
450 GLB_GPIO_LED_PAD_SPEED_UP = 1<<14, /* LED PAD Speed Up */
451 GLB_GPIO_STAT_RACE_DIS = 1<<13, /* Status Race Disable */
452 GLB_GPIO_TEST_SEL_MSK = 3<<11, /* Testmode Select */
453 GLB_GPIO_TEST_SEL_BASE = 1<<11,
454 GLB_GPIO_RAND_ENA = 1<<10, /* Random Enable */
455 GLB_GPIO_RAND_BIT_1 = 1<<9, /* Random Bit 1 */
456};
457
367/* B2_MAC_CFG 8 bit MAC Configuration / Chip Revision */ 458/* B2_MAC_CFG 8 bit MAC Configuration / Chip Revision */
368enum { 459enum {
369 CFG_CHIP_R_MSK = 0xf<<4, /* Bit 7.. 4: Chip Revision */ 460 CFG_CHIP_R_MSK = 0xf<<4, /* Bit 7.. 4: Chip Revision */
@@ -392,6 +483,11 @@ enum {
392 CHIP_REV_YU_FE_A2 = 2, 483 CHIP_REV_YU_FE_A2 = 2,
393 484
394}; 485};
486enum yukon_ex_rev {
487 CHIP_REV_YU_EX_A0 = 1,
488 CHIP_REV_YU_EX_B0 = 2,
489};
490
395 491
396/* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */ 492/* B2_Y2_CLK_GATE 8 bit Clock Gating (Yukon-2 only) */
397enum { 493enum {
@@ -515,23 +611,15 @@ enum {
515enum { 611enum {
516 B8_Q_REGS = 0x0400, /* base of Queue registers */ 612 B8_Q_REGS = 0x0400, /* base of Queue registers */
517 Q_D = 0x00, /* 8*32 bit Current Descriptor */ 613 Q_D = 0x00, /* 8*32 bit Current Descriptor */
518 Q_DA_L = 0x20, /* 32 bit Current Descriptor Address Low dWord */ 614 Q_VLAN = 0x20, /* 16 bit Current VLAN Tag */
519 Q_DA_H = 0x24, /* 32 bit Current Descriptor Address High dWord */ 615 Q_DONE = 0x24, /* 16 bit Done Index */
520 Q_AC_L = 0x28, /* 32 bit Current Address Counter Low dWord */ 616 Q_AC_L = 0x28, /* 32 bit Current Address Counter Low dWord */
521 Q_AC_H = 0x2c, /* 32 bit Current Address Counter High dWord */ 617 Q_AC_H = 0x2c, /* 32 bit Current Address Counter High dWord */
522 Q_BC = 0x30, /* 32 bit Current Byte Counter */ 618 Q_BC = 0x30, /* 32 bit Current Byte Counter */
523 Q_CSR = 0x34, /* 32 bit BMU Control/Status Register */ 619 Q_CSR = 0x34, /* 32 bit BMU Control/Status Register */
524 Q_F = 0x38, /* 32 bit Flag Register */ 620 Q_TEST = 0x38, /* 32 bit Test/Control Register */
525 Q_T1 = 0x3c, /* 32 bit Test Register 1 */
526 Q_T1_TR = 0x3c, /* 8 bit Test Register 1 Transfer SM */
527 Q_T1_WR = 0x3d, /* 8 bit Test Register 1 Write Descriptor SM */
528 Q_T1_RD = 0x3e, /* 8 bit Test Register 1 Read Descriptor SM */
529 Q_T1_SV = 0x3f, /* 8 bit Test Register 1 Supervisor SM */
530 Q_T2 = 0x40, /* 32 bit Test Register 2 */
531 Q_T3 = 0x44, /* 32 bit Test Register 3 */
532 621
533/* Yukon-2 */ 622/* Yukon-2 */
534 Q_DONE = 0x24, /* 16 bit Done Index (Yukon-2 only) */
535 Q_WM = 0x40, /* 16 bit FIFO Watermark */ 623 Q_WM = 0x40, /* 16 bit FIFO Watermark */
536 Q_AL = 0x42, /* 8 bit FIFO Alignment */ 624 Q_AL = 0x42, /* 8 bit FIFO Alignment */
537 Q_RSP = 0x44, /* 16 bit FIFO Read Shadow Pointer */ 625 Q_RSP = 0x44, /* 16 bit FIFO Read Shadow Pointer */
@@ -545,15 +633,16 @@ enum {
545}; 633};
546#define Q_ADDR(reg, offs) (B8_Q_REGS + (reg) + (offs)) 634#define Q_ADDR(reg, offs) (B8_Q_REGS + (reg) + (offs))
547 635
548/* Q_F 32 bit Flag Register */ 636/* Q_TEST 32 bit Test Register */
549enum { 637enum {
550 F_ALM_FULL = 1<<27, /* Rx FIFO: almost full */ 638 /* Transmit */
551 F_EMPTY = 1<<27, /* Tx FIFO: empty flag */ 639 F_TX_CHK_AUTO_OFF = 1<<31, /* Tx checksum auto calc off (Yukon EX) */
552 F_FIFO_EOF = 1<<26, /* Tag (EOF Flag) bit in FIFO */ 640 F_TX_CHK_AUTO_ON = 1<<30, /* Tx checksum auto calc off (Yukon EX) */
553 F_WM_REACHED = 1<<25, /* Watermark reached */ 641
642 /* Receive */
554 F_M_RX_RAM_DIS = 1<<24, /* MAC Rx RAM Read Port disable */ 643 F_M_RX_RAM_DIS = 1<<24, /* MAC Rx RAM Read Port disable */
555 F_FIFO_LEVEL = 0x1fL<<16, /* Bit 23..16: # of Qwords in FIFO */ 644
556 F_WATER_MARK = 0x0007ffL, /* Bit 10.. 0: Watermark */ 645 /* Hardware testbits not used */
557}; 646};
558 647
559/* Queue Prefetch Unit Offsets, use Y2_QADDR() to address (Yukon-2 only)*/ 648/* Queue Prefetch Unit Offsets, use Y2_QADDR() to address (Yukon-2 only)*/
@@ -1608,6 +1697,16 @@ enum {
1608 RX_VLAN_STRIP_ON = 1<<25, /* enable VLAN stripping */ 1697 RX_VLAN_STRIP_ON = 1<<25, /* enable VLAN stripping */
1609 RX_VLAN_STRIP_OFF = 1<<24, /* disable VLAN stripping */ 1698 RX_VLAN_STRIP_OFF = 1<<24, /* disable VLAN stripping */
1610 1699
1700 RX_MACSEC_FLUSH_ON = 1<<23,
1701 RX_MACSEC_FLUSH_OFF = 1<<22,
1702 RX_MACSEC_ASF_FLUSH_ON = 1<<21,
1703 RX_MACSEC_ASF_FLUSH_OFF = 1<<20,
1704
1705 GMF_RX_OVER_ON = 1<<19, /* enable flushing on receive overrun */
1706 GMF_RX_OVER_OFF = 1<<18, /* disable flushing on receive overrun */
1707 GMF_ASF_RX_OVER_ON = 1<<17, /* enable flushing of ASF when overrun */
1708 GMF_ASF_RX_OVER_OFF = 1<<16, /* disable flushing of ASF when overrun */
1709
1611 GMF_WP_TST_ON = 1<<14, /* Write Pointer Test On */ 1710 GMF_WP_TST_ON = 1<<14, /* Write Pointer Test On */
1612 GMF_WP_TST_OFF = 1<<13, /* Write Pointer Test Off */ 1711 GMF_WP_TST_OFF = 1<<13, /* Write Pointer Test Off */
1613 GMF_WP_STEP = 1<<12, /* Write Pointer Step/Increment */ 1712 GMF_WP_STEP = 1<<12, /* Write Pointer Step/Increment */
@@ -1720,6 +1819,15 @@ enum {
1720 1819
1721/* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */ 1820/* GMAC_CTRL 32 bit GMAC Control Reg (YUKON only) */
1722enum { 1821enum {
1822 GMC_SET_RST = 1<<15,/* MAC SEC RST */
1823 GMC_SEC_RST_OFF = 1<<14,/* MAC SEC RSt OFF */
1824 GMC_BYP_MACSECRX_ON = 1<<13,/* Bypass macsec RX */
1825 GMC_BYP_MACSECRX_OFF= 1<<12,/* Bypass macsec RX off */
1826 GMC_BYP_MACSECTX_ON = 1<<11,/* Bypass macsec TX */
1827 GMC_BYP_MACSECTX_OFF= 1<<10,/* Bypass macsec TX off*/
1828 GMC_BYP_RETR_ON = 1<<9, /* Bypass retransmit FIFO On */
1829 GMC_BYP_RETR_OFF= 1<<8, /* Bypass retransmit FIFO Off */
1830
1723 GMC_H_BURST_ON = 1<<7, /* Half Duplex Burst Mode On */ 1831 GMC_H_BURST_ON = 1<<7, /* Half Duplex Burst Mode On */
1724 GMC_H_BURST_OFF = 1<<6, /* Half Duplex Burst Mode Off */ 1832 GMC_H_BURST_OFF = 1<<6, /* Half Duplex Burst Mode Off */
1725 GMC_F_LOOPB_ON = 1<<5, /* FIFO Loopback On */ 1833 GMC_F_LOOPB_ON = 1<<5, /* FIFO Loopback On */
@@ -1805,9 +1913,13 @@ enum {
1805 OP_ADDR64VLAN = OP_ADDR64 | OP_VLAN, 1913 OP_ADDR64VLAN = OP_ADDR64 | OP_VLAN,
1806 OP_LRGLEN = 0x24, 1914 OP_LRGLEN = 0x24,
1807 OP_LRGLENVLAN = OP_LRGLEN | OP_VLAN, 1915 OP_LRGLENVLAN = OP_LRGLEN | OP_VLAN,
1916 OP_MSS = 0x28,
1917 OP_MSSVLAN = OP_MSS | OP_VLAN,
1918
1808 OP_BUFFER = 0x40, 1919 OP_BUFFER = 0x40,
1809 OP_PACKET = 0x41, 1920 OP_PACKET = 0x41,
1810 OP_LARGESEND = 0x43, 1921 OP_LARGESEND = 0x43,
1922 OP_LSOV2 = 0x45,
1811 1923
1812/* YUKON-2 STATUS opcodes defines */ 1924/* YUKON-2 STATUS opcodes defines */
1813 OP_RXSTAT = 0x60, 1925 OP_RXSTAT = 0x60,
@@ -1818,6 +1930,19 @@ enum {
1818 OP_RXTIMEVLAN = OP_RXTIMESTAMP | OP_RXVLAN, 1930 OP_RXTIMEVLAN = OP_RXTIMESTAMP | OP_RXVLAN,
1819 OP_RSS_HASH = 0x65, 1931 OP_RSS_HASH = 0x65,
1820 OP_TXINDEXLE = 0x68, 1932 OP_TXINDEXLE = 0x68,
1933 OP_MACSEC = 0x6c,
1934 OP_PUTIDX = 0x70,
1935};
1936
1937enum status_css {
1938 CSS_TCPUDPCSOK = 1<<7, /* TCP / UDP checksum is ok */
1939 CSS_ISUDP = 1<<6, /* packet is a UDP packet */
1940 CSS_ISTCP = 1<<5, /* packet is a TCP packet */
1941 CSS_ISIPFRAG = 1<<4, /* packet is a TCP/UDP frag, CS calc not done */
1942 CSS_ISIPV6 = 1<<3, /* packet is a IPv6 packet */
1943 CSS_IPV4CSUMOK = 1<<2, /* IP v4: TCP header checksum is ok */
1944 CSS_ISIPV4 = 1<<1, /* packet is a IPv4 packet */
1945 CSS_LINK_BIT = 1<<0, /* port number (legacy) */
1821}; 1946};
1822 1947
1823/* Yukon 2 hardware interface */ 1948/* Yukon 2 hardware interface */
@@ -1838,7 +1963,7 @@ struct sky2_rx_le {
1838struct sky2_status_le { 1963struct sky2_status_le {
1839 __le32 status; /* also checksum */ 1964 __le32 status; /* also checksum */
1840 __le16 length; /* also vlan tag */ 1965 __le16 length; /* also vlan tag */
1841 u8 link; 1966 u8 css;
1842 u8 opcode; 1967 u8 opcode;
1843} __attribute((packed)); 1968} __attribute((packed));
1844 1969
@@ -1873,6 +1998,7 @@ struct sky2_port {
1873 struct sky2_tx_le *tx_le; 1998 struct sky2_tx_le *tx_le;
1874 u16 tx_cons; /* next le to check */ 1999 u16 tx_cons; /* next le to check */
1875 u16 tx_prod; /* next le to use */ 2000 u16 tx_prod; /* next le to use */
2001 u16 tx_next; /* debug only */
1876 u32 tx_addr64; 2002 u32 tx_addr64;
1877 u16 tx_pending; 2003 u16 tx_pending;
1878 u16 tx_last_mss; 2004 u16 tx_last_mss;
@@ -1903,6 +2029,9 @@ struct sky2_port {
1903 enum flow_control flow_mode; 2029 enum flow_control flow_mode;
1904 enum flow_control flow_status; 2030 enum flow_control flow_status;
1905 2031
2032#ifdef CONFIG_SKY2_DEBUG
2033 struct dentry *debugfs;
2034#endif
1906 struct net_device_stats net_stats; 2035 struct net_device_stats net_stats;
1907 2036
1908}; 2037};