diff options
Diffstat (limited to 'drivers/net/sky2.h')
-rw-r--r-- | drivers/net/sky2.h | 85 |
1 files changed, 60 insertions, 25 deletions
diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h index 6ed1d47dbbd3..3b0189569d52 100644 --- a/drivers/net/sky2.h +++ b/drivers/net/sky2.h | |||
@@ -32,6 +32,7 @@ enum pci_dev_reg_1 { | |||
32 | PCI_Y2_PHY1_COMA = 1<<28, /* Set PHY 1 to Coma Mode (YUKON-2) */ | 32 | 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) */ | 33 | PCI_Y2_PHY2_POWD = 1<<27, /* Set PHY 2 to Power Down (YUKON-2) */ |
34 | PCI_Y2_PHY1_POWD = 1<<26, /* Set PHY 1 to Power Down (YUKON-2) */ | 34 | PCI_Y2_PHY1_POWD = 1<<26, /* Set PHY 1 to Power Down (YUKON-2) */ |
35 | PCI_Y2_PME_LEGACY= 1<<15, /* PCI Express legacy power management mode */ | ||
35 | }; | 36 | }; |
36 | 37 | ||
37 | enum pci_dev_reg_2 { | 38 | enum pci_dev_reg_2 { |
@@ -370,12 +371,9 @@ enum { | |||
370 | 371 | ||
371 | /* B2_CHIP_ID 8 bit Chip Identification Number */ | 372 | /* B2_CHIP_ID 8 bit Chip Identification Number */ |
372 | enum { | 373 | enum { |
373 | CHIP_ID_GENESIS = 0x0a, /* Chip ID for GENESIS */ | ||
374 | CHIP_ID_YUKON = 0xb0, /* Chip ID for YUKON */ | ||
375 | CHIP_ID_YUKON_LITE = 0xb1, /* Chip ID for YUKON-Lite (Rev. A1-A3) */ | ||
376 | CHIP_ID_YUKON_LP = 0xb2, /* Chip ID for YUKON-LP */ | ||
377 | CHIP_ID_YUKON_XL = 0xb3, /* Chip ID for YUKON-2 XL */ | 374 | CHIP_ID_YUKON_XL = 0xb3, /* Chip ID for YUKON-2 XL */ |
378 | CHIP_ID_YUKON_EC_U = 0xb4, /* Chip ID for YUKON-2 EC Ultra */ | 375 | CHIP_ID_YUKON_EC_U = 0xb4, /* Chip ID for YUKON-2 EC Ultra */ |
376 | CHIP_ID_YUKON_EX = 0xb5, /* Chip ID for YUKON-2 Extreme */ | ||
379 | CHIP_ID_YUKON_EC = 0xb6, /* Chip ID for YUKON-2 EC */ | 377 | CHIP_ID_YUKON_EC = 0xb6, /* Chip ID for YUKON-2 EC */ |
380 | CHIP_ID_YUKON_FE = 0xb7, /* Chip ID for YUKON-2 FE */ | 378 | CHIP_ID_YUKON_FE = 0xb7, /* Chip ID for YUKON-2 FE */ |
381 | 379 | ||
@@ -767,6 +765,24 @@ enum { | |||
767 | POLL_LIST_ADDR_HI= 0x0e2c,/* 32 bit Poll. List Start Addr (high) */ | 765 | POLL_LIST_ADDR_HI= 0x0e2c,/* 32 bit Poll. List Start Addr (high) */ |
768 | }; | 766 | }; |
769 | 767 | ||
768 | enum { | ||
769 | SMB_CFG = 0x0e40, /* 32 bit SMBus Config Register */ | ||
770 | SMB_CSR = 0x0e44, /* 32 bit SMBus Control/Status Register */ | ||
771 | }; | ||
772 | |||
773 | enum { | ||
774 | CPU_WDOG = 0x0e48, /* 32 bit Watchdog Register */ | ||
775 | CPU_CNTR = 0x0e4C, /* 32 bit Counter Register */ | ||
776 | CPU_TIM = 0x0e50,/* 32 bit Timer Compare Register */ | ||
777 | CPU_AHB_ADDR = 0x0e54, /* 32 bit CPU AHB Debug Register */ | ||
778 | CPU_AHB_WDATA = 0x0e58, /* 32 bit CPU AHB Debug Register */ | ||
779 | CPU_AHB_RDATA = 0x0e5C, /* 32 bit CPU AHB Debug Register */ | ||
780 | HCU_MAP_BASE = 0x0e60, /* 32 bit Reset Mapping Base */ | ||
781 | CPU_AHB_CTRL = 0x0e64, /* 32 bit CPU AHB Debug Register */ | ||
782 | HCU_CCSR = 0x0e68, /* 32 bit CPU Control and Status Register */ | ||
783 | HCU_HCSR = 0x0e6C, /* 32 bit Host Control and Status Register */ | ||
784 | }; | ||
785 | |||
770 | /* ASF Subsystem Registers (Yukon-2 only) */ | 786 | /* ASF Subsystem Registers (Yukon-2 only) */ |
771 | enum { | 787 | enum { |
772 | B28_Y2_SMB_CONFIG = 0x0e40,/* 32 bit ASF SMBus Config Register */ | 788 | B28_Y2_SMB_CONFIG = 0x0e40,/* 32 bit ASF SMBus Config Register */ |
@@ -837,33 +853,27 @@ enum { | |||
837 | GMAC_LINK_CTRL = 0x0f10,/* 16 bit Link Control Reg */ | 853 | GMAC_LINK_CTRL = 0x0f10,/* 16 bit Link Control Reg */ |
838 | 854 | ||
839 | /* Wake-up Frame Pattern Match Control Registers (YUKON only) */ | 855 | /* Wake-up Frame Pattern Match Control Registers (YUKON only) */ |
840 | |||
841 | WOL_REG_OFFS = 0x20,/* HW-Bug: Address is + 0x20 against spec. */ | ||
842 | |||
843 | WOL_CTRL_STAT = 0x0f20,/* 16 bit WOL Control/Status Reg */ | 856 | WOL_CTRL_STAT = 0x0f20,/* 16 bit WOL Control/Status Reg */ |
844 | WOL_MATCH_CTL = 0x0f22,/* 8 bit WOL Match Control Reg */ | 857 | WOL_MATCH_CTL = 0x0f22,/* 8 bit WOL Match Control Reg */ |
845 | WOL_MATCH_RES = 0x0f23,/* 8 bit WOL Match Result Reg */ | 858 | WOL_MATCH_RES = 0x0f23,/* 8 bit WOL Match Result Reg */ |
846 | WOL_MAC_ADDR = 0x0f24,/* 32 bit WOL MAC Address */ | 859 | WOL_MAC_ADDR = 0x0f24,/* 32 bit WOL MAC Address */ |
847 | WOL_PATT_PME = 0x0f2a,/* 8 bit WOL PME Match Enable (Yukon-2) */ | ||
848 | WOL_PATT_ASFM = 0x0f2b,/* 8 bit WOL ASF Match Enable (Yukon-2) */ | ||
849 | WOL_PATT_RPTR = 0x0f2c,/* 8 bit WOL Pattern Read Pointer */ | 860 | WOL_PATT_RPTR = 0x0f2c,/* 8 bit WOL Pattern Read Pointer */ |
850 | 861 | ||
851 | /* WOL Pattern Length Registers (YUKON only) */ | 862 | /* WOL Pattern Length Registers (YUKON only) */ |
852 | |||
853 | WOL_PATT_LEN_LO = 0x0f30,/* 32 bit WOL Pattern Length 3..0 */ | 863 | WOL_PATT_LEN_LO = 0x0f30,/* 32 bit WOL Pattern Length 3..0 */ |
854 | WOL_PATT_LEN_HI = 0x0f34,/* 24 bit WOL Pattern Length 6..4 */ | 864 | WOL_PATT_LEN_HI = 0x0f34,/* 24 bit WOL Pattern Length 6..4 */ |
855 | 865 | ||
856 | /* WOL Pattern Counter Registers (YUKON only) */ | 866 | /* WOL Pattern Counter Registers (YUKON only) */ |
857 | |||
858 | |||
859 | WOL_PATT_CNT_0 = 0x0f38,/* 32 bit WOL Pattern Counter 3..0 */ | 867 | WOL_PATT_CNT_0 = 0x0f38,/* 32 bit WOL Pattern Counter 3..0 */ |
860 | WOL_PATT_CNT_4 = 0x0f3c,/* 24 bit WOL Pattern Counter 6..4 */ | 868 | WOL_PATT_CNT_4 = 0x0f3c,/* 24 bit WOL Pattern Counter 6..4 */ |
861 | }; | 869 | }; |
870 | #define WOL_REGS(port, x) (x + (port)*0x80) | ||
862 | 871 | ||
863 | enum { | 872 | enum { |
864 | WOL_PATT_RAM_1 = 0x1000,/* WOL Pattern RAM Link 1 */ | 873 | WOL_PATT_RAM_1 = 0x1000,/* WOL Pattern RAM Link 1 */ |
865 | WOL_PATT_RAM_2 = 0x1400,/* WOL Pattern RAM Link 2 */ | 874 | WOL_PATT_RAM_2 = 0x1400,/* WOL Pattern RAM Link 2 */ |
866 | }; | 875 | }; |
876 | #define WOL_PATT_RAM_BASE(port) (WOL_PATT_RAM_1 + (port)*0x400) | ||
867 | 877 | ||
868 | enum { | 878 | enum { |
869 | BASE_GMAC_1 = 0x2800,/* GMAC 1 registers */ | 879 | BASE_GMAC_1 = 0x2800,/* GMAC 1 registers */ |
@@ -1654,6 +1664,39 @@ enum { | |||
1654 | Y2_ASF_CLR_ASFI = 1<<1, /* Clear host IRQ */ | 1664 | Y2_ASF_CLR_ASFI = 1<<1, /* Clear host IRQ */ |
1655 | Y2_ASF_HOST_IRQ = 1<<0, /* Issue an IRQ to HOST system */ | 1665 | Y2_ASF_HOST_IRQ = 1<<0, /* Issue an IRQ to HOST system */ |
1656 | }; | 1666 | }; |
1667 | /* HCU_CCSR CPU Control and Status Register */ | ||
1668 | enum { | ||
1669 | HCU_CCSR_SMBALERT_MONITOR= 1<<27, /* SMBALERT pin monitor */ | ||
1670 | HCU_CCSR_CPU_SLEEP = 1<<26, /* CPU sleep status */ | ||
1671 | /* Clock Stretching Timeout */ | ||
1672 | HCU_CCSR_CS_TO = 1<<25, | ||
1673 | HCU_CCSR_WDOG = 1<<24, /* Watchdog Reset */ | ||
1674 | |||
1675 | HCU_CCSR_CLR_IRQ_HOST = 1<<17, /* Clear IRQ_HOST */ | ||
1676 | HCU_CCSR_SET_IRQ_HCU = 1<<16, /* Set IRQ_HCU */ | ||
1677 | |||
1678 | HCU_CCSR_AHB_RST = 1<<9, /* Reset AHB bridge */ | ||
1679 | HCU_CCSR_CPU_RST_MODE = 1<<8, /* CPU Reset Mode */ | ||
1680 | |||
1681 | HCU_CCSR_SET_SYNC_CPU = 1<<5, | ||
1682 | HCU_CCSR_CPU_CLK_DIVIDE_MSK = 3<<3,/* CPU Clock Divide */ | ||
1683 | HCU_CCSR_CPU_CLK_DIVIDE_BASE= 1<<3, | ||
1684 | HCU_CCSR_OS_PRSNT = 1<<2, /* ASF OS Present */ | ||
1685 | /* Microcontroller State */ | ||
1686 | HCU_CCSR_UC_STATE_MSK = 3, | ||
1687 | HCU_CCSR_UC_STATE_BASE = 1<<0, | ||
1688 | HCU_CCSR_ASF_RESET = 0, | ||
1689 | HCU_CCSR_ASF_HALTED = 1<<1, | ||
1690 | HCU_CCSR_ASF_RUNNING = 1<<0, | ||
1691 | }; | ||
1692 | |||
1693 | /* HCU_HCSR Host Control and Status Register */ | ||
1694 | enum { | ||
1695 | HCU_HCSR_SET_IRQ_CPU = 1<<16, /* Set IRQ_CPU */ | ||
1696 | |||
1697 | HCU_HCSR_CLR_IRQ_HCU = 1<<1, /* Clear IRQ_HCU */ | ||
1698 | HCU_HCSR_SET_IRQ_HOST = 1<<0, /* Set IRQ_HOST */ | ||
1699 | }; | ||
1657 | 1700 | ||
1658 | /* STAT_CTRL 32 bit Status BMU control register (Yukon-2 only) */ | 1701 | /* STAT_CTRL 32 bit Status BMU control register (Yukon-2 only) */ |
1659 | enum { | 1702 | enum { |
@@ -1715,14 +1758,17 @@ enum { | |||
1715 | GM_IS_RX_COMPL = 1<<0, /* Frame Reception Complete */ | 1758 | GM_IS_RX_COMPL = 1<<0, /* Frame Reception Complete */ |
1716 | 1759 | ||
1717 | #define GMAC_DEF_MSK GM_IS_TX_FF_UR | 1760 | #define GMAC_DEF_MSK GM_IS_TX_FF_UR |
1761 | }; | ||
1718 | 1762 | ||
1719 | /* GMAC_LINK_CTRL 16 bit GMAC Link Control Reg (YUKON only) */ | 1763 | /* GMAC_LINK_CTRL 16 bit GMAC Link Control Reg (YUKON only) */ |
1720 | /* Bits 15.. 2: reserved */ | 1764 | enum { /* Bits 15.. 2: reserved */ |
1721 | GMLC_RST_CLR = 1<<1, /* Clear GMAC Link Reset */ | 1765 | GMLC_RST_CLR = 1<<1, /* Clear GMAC Link Reset */ |
1722 | GMLC_RST_SET = 1<<0, /* Set GMAC Link Reset */ | 1766 | GMLC_RST_SET = 1<<0, /* Set GMAC Link Reset */ |
1767 | }; | ||
1723 | 1768 | ||
1724 | 1769 | ||
1725 | /* WOL_CTRL_STAT 16 bit WOL Control/Status Reg */ | 1770 | /* WOL_CTRL_STAT 16 bit WOL Control/Status Reg */ |
1771 | enum { | ||
1726 | WOL_CTL_LINK_CHG_OCC = 1<<15, | 1772 | WOL_CTL_LINK_CHG_OCC = 1<<15, |
1727 | WOL_CTL_MAGIC_PKT_OCC = 1<<14, | 1773 | WOL_CTL_MAGIC_PKT_OCC = 1<<14, |
1728 | WOL_CTL_PATTERN_OCC = 1<<13, | 1774 | WOL_CTL_PATTERN_OCC = 1<<13, |
@@ -1741,17 +1787,6 @@ enum { | |||
1741 | WOL_CTL_DIS_PATTERN_UNIT = 1<<0, | 1787 | WOL_CTL_DIS_PATTERN_UNIT = 1<<0, |
1742 | }; | 1788 | }; |
1743 | 1789 | ||
1744 | #define WOL_CTL_DEFAULT \ | ||
1745 | (WOL_CTL_DIS_PME_ON_LINK_CHG | \ | ||
1746 | WOL_CTL_DIS_PME_ON_PATTERN | \ | ||
1747 | WOL_CTL_DIS_PME_ON_MAGIC_PKT | \ | ||
1748 | WOL_CTL_DIS_LINK_CHG_UNIT | \ | ||
1749 | WOL_CTL_DIS_PATTERN_UNIT | \ | ||
1750 | WOL_CTL_DIS_MAGIC_PKT_UNIT) | ||
1751 | |||
1752 | /* WOL_MATCH_CTL 8 bit WOL Match Control Reg */ | ||
1753 | #define WOL_CTL_PATT_ENA(x) (1 << (x)) | ||
1754 | |||
1755 | 1790 | ||
1756 | /* Control flags */ | 1791 | /* Control flags */ |
1757 | enum { | 1792 | enum { |
@@ -1875,6 +1910,7 @@ struct sky2_port { | |||
1875 | u8 autoneg; /* AUTONEG_ENABLE, AUTONEG_DISABLE */ | 1910 | u8 autoneg; /* AUTONEG_ENABLE, AUTONEG_DISABLE */ |
1876 | u8 duplex; /* DUPLEX_HALF, DUPLEX_FULL */ | 1911 | u8 duplex; /* DUPLEX_HALF, DUPLEX_FULL */ |
1877 | u8 rx_csum; | 1912 | u8 rx_csum; |
1913 | u8 wol; | ||
1878 | enum flow_control flow_mode; | 1914 | enum flow_control flow_mode; |
1879 | enum flow_control flow_status; | 1915 | enum flow_control flow_status; |
1880 | 1916 | ||
@@ -1887,7 +1923,6 @@ struct sky2_hw { | |||
1887 | struct pci_dev *pdev; | 1923 | struct pci_dev *pdev; |
1888 | struct net_device *dev[2]; | 1924 | struct net_device *dev[2]; |
1889 | 1925 | ||
1890 | int pm_cap; | ||
1891 | u8 chip_id; | 1926 | u8 chip_id; |
1892 | u8 chip_rev; | 1927 | u8 chip_rev; |
1893 | u8 pmd_type; | 1928 | u8 pmd_type; |