19c80d176SSepherosa Ziehau /****************************************************************************** 29c80d176SSepherosa Ziehau 3*01a55482SSepherosa Ziehau Copyright (c) 2001-2019, Intel Corporation 49c80d176SSepherosa Ziehau All rights reserved. 59c80d176SSepherosa Ziehau 69c80d176SSepherosa Ziehau Redistribution and use in source and binary forms, with or without 79c80d176SSepherosa Ziehau modification, are permitted provided that the following conditions are met: 89c80d176SSepherosa Ziehau 99c80d176SSepherosa Ziehau 1. Redistributions of source code must retain the above copyright notice, 109c80d176SSepherosa Ziehau this list of conditions and the following disclaimer. 119c80d176SSepherosa Ziehau 129c80d176SSepherosa Ziehau 2. Redistributions in binary form must reproduce the above copyright 139c80d176SSepherosa Ziehau notice, this list of conditions and the following disclaimer in the 149c80d176SSepherosa Ziehau documentation and/or other materials provided with the distribution. 159c80d176SSepherosa Ziehau 169c80d176SSepherosa Ziehau 3. Neither the name of the Intel Corporation nor the names of its 179c80d176SSepherosa Ziehau contributors may be used to endorse or promote products derived from 189c80d176SSepherosa Ziehau this software without specific prior written permission. 199c80d176SSepherosa Ziehau 209c80d176SSepherosa Ziehau THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 219c80d176SSepherosa Ziehau AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 229c80d176SSepherosa Ziehau IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 239c80d176SSepherosa Ziehau ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 249c80d176SSepherosa Ziehau LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 259c80d176SSepherosa Ziehau CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 269c80d176SSepherosa Ziehau SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 279c80d176SSepherosa Ziehau INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 289c80d176SSepherosa Ziehau CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 299c80d176SSepherosa Ziehau ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 309c80d176SSepherosa Ziehau POSSIBILITY OF SUCH DAMAGE. 319c80d176SSepherosa Ziehau 329c80d176SSepherosa Ziehau ******************************************************************************/ 3374dc3754SSepherosa Ziehau /*$FreeBSD$*/ 349c80d176SSepherosa Ziehau 359c80d176SSepherosa Ziehau #ifndef _E1000_ICH8LAN_H_ 369c80d176SSepherosa Ziehau #define _E1000_ICH8LAN_H_ 379c80d176SSepherosa Ziehau 389c80d176SSepherosa Ziehau #define ICH_FLASH_GFPREG 0x0000 399c80d176SSepherosa Ziehau #define ICH_FLASH_HSFSTS 0x0004 409c80d176SSepherosa Ziehau #define ICH_FLASH_HSFCTL 0x0006 419c80d176SSepherosa Ziehau #define ICH_FLASH_FADDR 0x0008 429c80d176SSepherosa Ziehau #define ICH_FLASH_FDATA0 0x0010 439c80d176SSepherosa Ziehau 446a5a645eSSepherosa Ziehau /* Requires up to 10 seconds when MNG might be accessing part. */ 456a5a645eSSepherosa Ziehau #define ICH_FLASH_READ_COMMAND_TIMEOUT 10000000 466a5a645eSSepherosa Ziehau #define ICH_FLASH_WRITE_COMMAND_TIMEOUT 10000000 476a5a645eSSepherosa Ziehau #define ICH_FLASH_ERASE_COMMAND_TIMEOUT 10000000 489c80d176SSepherosa Ziehau #define ICH_FLASH_LINEAR_ADDR_MASK 0x00FFFFFF 499c80d176SSepherosa Ziehau #define ICH_FLASH_CYCLE_REPEAT_COUNT 10 509c80d176SSepherosa Ziehau 519c80d176SSepherosa Ziehau #define ICH_CYCLE_READ 0 529c80d176SSepherosa Ziehau #define ICH_CYCLE_WRITE 2 539c80d176SSepherosa Ziehau #define ICH_CYCLE_ERASE 3 549c80d176SSepherosa Ziehau 559c80d176SSepherosa Ziehau #define FLASH_GFPREG_BASE_MASK 0x1FFF 569c80d176SSepherosa Ziehau #define FLASH_SECTOR_ADDR_SHIFT 12 579c80d176SSepherosa Ziehau 589c80d176SSepherosa Ziehau #define ICH_FLASH_SEG_SIZE_256 256 599c80d176SSepherosa Ziehau #define ICH_FLASH_SEG_SIZE_4K 4096 609c80d176SSepherosa Ziehau #define ICH_FLASH_SEG_SIZE_8K 8192 619c80d176SSepherosa Ziehau #define ICH_FLASH_SEG_SIZE_64K 65536 629c80d176SSepherosa Ziehau 639c80d176SSepherosa Ziehau #define E1000_ICH_FWSM_RSPCIPHY 0x00000040 /* Reset PHY on PCI Reset */ 649c80d176SSepherosa Ziehau /* FW established a valid mode */ 659c80d176SSepherosa Ziehau #define E1000_ICH_FWSM_FW_VALID 0x00008000 664be59a01SSepherosa Ziehau #define E1000_ICH_FWSM_PCIM2PCI 0x01000000 /* ME PCIm-to-PCI active */ 674be59a01SSepherosa Ziehau #define E1000_ICH_FWSM_PCIM2PCI_COUNT 2000 689c80d176SSepherosa Ziehau 699c80d176SSepherosa Ziehau #define E1000_ICH_MNG_IAMT_MODE 0x2 709c80d176SSepherosa Ziehau 71379ebbe7SSepherosa Ziehau #define E1000_FWSM_WLOCK_MAC_MASK 0x0380 72379ebbe7SSepherosa Ziehau #define E1000_FWSM_WLOCK_MAC_SHIFT 7 734765c386SMichael Neumann #define E1000_FWSM_ULP_CFG_DONE 0x00000400 /* Low power cfg done */ 746a5a645eSSepherosa Ziehau 756a5a645eSSepherosa Ziehau /* Shared Receive Address Registers */ 76379ebbe7SSepherosa Ziehau #define E1000_SHRAL_PCH_LPT(_i) (0x05408 + ((_i) * 8)) 77379ebbe7SSepherosa Ziehau #define E1000_SHRAH_PCH_LPT(_i) (0x0540C + ((_i) * 8)) 786a5a645eSSepherosa Ziehau 794765c386SMichael Neumann #define E1000_H2ME 0x05B50 /* Host to ME */ 804765c386SMichael Neumann #define E1000_H2ME_ULP 0x00000800 /* ULP Indication Bit */ 814765c386SMichael Neumann #define E1000_H2ME_ENFORCE_SETTINGS 0x00001000 /* Enforce Settings */ 824765c386SMichael Neumann 839c80d176SSepherosa Ziehau #define ID_LED_DEFAULT_ICH8LAN ((ID_LED_DEF1_DEF2 << 12) | \ 846a5a645eSSepherosa Ziehau (ID_LED_OFF1_OFF2 << 8) | \ 856a5a645eSSepherosa Ziehau (ID_LED_OFF1_ON2 << 4) | \ 869c80d176SSepherosa Ziehau (ID_LED_DEF1_DEF2)) 879c80d176SSepherosa Ziehau 889c80d176SSepherosa Ziehau #define E1000_ICH_NVM_SIG_WORD 0x13 899c80d176SSepherosa Ziehau #define E1000_ICH_NVM_SIG_MASK 0xC000 906a5a645eSSepherosa Ziehau #define E1000_ICH_NVM_VALID_SIG_MASK 0xC0 916a5a645eSSepherosa Ziehau #define E1000_ICH_NVM_SIG_VALUE 0x80 929c80d176SSepherosa Ziehau 939c80d176SSepherosa Ziehau #define E1000_ICH8_LAN_INIT_TIMEOUT 1500 949c80d176SSepherosa Ziehau 954765c386SMichael Neumann /* FEXT register bit definition */ 964765c386SMichael Neumann #define E1000_FEXT_PHY_CABLE_DISCONNECTED 0x00000004 974765c386SMichael Neumann 989c80d176SSepherosa Ziehau #define E1000_FEXTNVM_SW_CONFIG 1 994765c386SMichael Neumann #define E1000_FEXTNVM_SW_CONFIG_ICH8M (1 << 27) /* different on ICH8M */ 1009c80d176SSepherosa Ziehau 1014be59a01SSepherosa Ziehau #define E1000_FEXTNVM3_PHY_CFG_COUNTER_MASK 0x0C000000 1024be59a01SSepherosa Ziehau #define E1000_FEXTNVM3_PHY_CFG_COUNTER_50MSEC 0x08000000 1034be59a01SSepherosa Ziehau 1046a5a645eSSepherosa Ziehau #define E1000_FEXTNVM4_BEACON_DURATION_MASK 0x7 1056a5a645eSSepherosa Ziehau #define E1000_FEXTNVM4_BEACON_DURATION_8USEC 0x7 1066a5a645eSSepherosa Ziehau #define E1000_FEXTNVM4_BEACON_DURATION_16USEC 0x3 1076a5a645eSSepherosa Ziehau 108379ebbe7SSepherosa Ziehau #define E1000_FEXTNVM6_REQ_PLL_CLK 0x00000100 1094765c386SMichael Neumann #define E1000_FEXTNVM6_ENABLE_K1_ENTRY_CONDITION 0x00000200 110524ce499SSepherosa Ziehau #define E1000_FEXTNVM6_K1_OFF_ENABLE 0x80000000 11174dc3754SSepherosa Ziehau /* bit for disabling packet buffer read */ 11274dc3754SSepherosa Ziehau #define E1000_FEXTNVM7_DISABLE_PB_READ 0x00040000 11374dc3754SSepherosa Ziehau #define E1000_FEXTNVM7_SIDE_CLK_UNGATE 0x00000004 1144765c386SMichael Neumann #define E1000_FEXTNVM7_DISABLE_SMB_PERST 0x00000020 11574dc3754SSepherosa Ziehau #define E1000_FEXTNVM9_IOSFSB_CLKGATE_DIS 0x00000800 11674dc3754SSepherosa Ziehau #define E1000_FEXTNVM9_IOSFSB_CLKREQ_DIS 0x00001000 11774dc3754SSepherosa Ziehau #define E1000_FEXTNVM11_DISABLE_PB_READ 0x00000200 11874dc3754SSepherosa Ziehau #define E1000_FEXTNVM11_DISABLE_MULR_FIX 0x00002000 119379ebbe7SSepherosa Ziehau 12074dc3754SSepherosa Ziehau /* bit24: RXDCTL thresholds granularity: 0 - cache lines, 1 - descriptors */ 12174dc3754SSepherosa Ziehau #define E1000_RXDCTL_THRESH_UNIT_DESC 0x01000000 12274dc3754SSepherosa Ziehau 12374dc3754SSepherosa Ziehau #define NVM_SIZE_MULTIPLIER 4096 /*multiplier for NVMS field*/ 12474dc3754SSepherosa Ziehau #define E1000_FLASH_BASE_ADDR 0xE000 /*offset of NVM access regs*/ 125524ce499SSepherosa Ziehau #define E1000_CTRL_EXT_NVMVS 0x3 /*NVM valid sector */ 126*01a55482SSepherosa Ziehau #define E1000_TARC0_CB_MULTIQ_3_REQ 0x30000000 127*01a55482SSepherosa Ziehau #define E1000_TARC0_CB_MULTIQ_2_REQ 0x20000000 1289c80d176SSepherosa Ziehau #define PCIE_ICH8_SNOOP_ALL PCIE_NO_SNOOP_ALL 1299c80d176SSepherosa Ziehau 1309c80d176SSepherosa Ziehau #define E1000_ICH_RAR_ENTRIES 7 1316a5a645eSSepherosa Ziehau #define E1000_PCH2_RAR_ENTRIES 5 /* RAR[0], SHRA[0-3] */ 132379ebbe7SSepherosa Ziehau #define E1000_PCH_LPT_RAR_ENTRIES 12 /* RAR[0], SHRA[0-10] */ 1339c80d176SSepherosa Ziehau 1349c80d176SSepherosa Ziehau #define PHY_PAGE_SHIFT 5 1359c80d176SSepherosa Ziehau #define PHY_REG(page, reg) (((page) << PHY_PAGE_SHIFT) | \ 1369c80d176SSepherosa Ziehau ((reg) & MAX_PHY_REG_ADDRESS)) 1379c80d176SSepherosa Ziehau #define IGP3_KMRN_DIAG PHY_REG(770, 19) /* KMRN Diagnostic */ 1389c80d176SSepherosa Ziehau #define IGP3_VR_CTRL PHY_REG(776, 18) /* Voltage Regulator Control */ 1399c80d176SSepherosa Ziehau 1409c80d176SSepherosa Ziehau #define IGP3_KMRN_DIAG_PCS_LOCK_LOSS 0x0002 1419c80d176SSepherosa Ziehau #define IGP3_VR_CTRL_DEV_POWERDOWN_MODE_MASK 0x0300 1429c80d176SSepherosa Ziehau #define IGP3_VR_CTRL_MODE_SHUTDOWN 0x0200 1439c80d176SSepherosa Ziehau 1446a5a645eSSepherosa Ziehau /* PHY Wakeup Registers and defines */ 1456d5e2922SSepherosa Ziehau #define BM_PORT_GEN_CFG PHY_REG(BM_PORT_CTRL_PAGE, 17) 1466a5a645eSSepherosa Ziehau #define BM_RCTL PHY_REG(BM_WUC_PAGE, 0) 1476a5a645eSSepherosa Ziehau #define BM_WUC PHY_REG(BM_WUC_PAGE, 1) 1486a5a645eSSepherosa Ziehau #define BM_WUFC PHY_REG(BM_WUC_PAGE, 2) 1496a5a645eSSepherosa Ziehau #define BM_WUS PHY_REG(BM_WUC_PAGE, 3) 1506a5a645eSSepherosa Ziehau #define BM_RAR_L(_i) (BM_PHY_REG(BM_WUC_PAGE, 16 + ((_i) << 2))) 1516a5a645eSSepherosa Ziehau #define BM_RAR_M(_i) (BM_PHY_REG(BM_WUC_PAGE, 17 + ((_i) << 2))) 1526a5a645eSSepherosa Ziehau #define BM_RAR_H(_i) (BM_PHY_REG(BM_WUC_PAGE, 18 + ((_i) << 2))) 1536a5a645eSSepherosa Ziehau #define BM_RAR_CTRL(_i) (BM_PHY_REG(BM_WUC_PAGE, 19 + ((_i) << 2))) 1546a5a645eSSepherosa Ziehau #define BM_MTA(_i) (BM_PHY_REG(BM_WUC_PAGE, 128 + ((_i) << 1))) 1556a5a645eSSepherosa Ziehau 1566a5a645eSSepherosa Ziehau #define BM_RCTL_UPE 0x0001 /* Unicast Promiscuous Mode */ 1576a5a645eSSepherosa Ziehau #define BM_RCTL_MPE 0x0002 /* Multicast Promiscuous Mode */ 1586a5a645eSSepherosa Ziehau #define BM_RCTL_MO_SHIFT 3 /* Multicast Offset Shift */ 1596a5a645eSSepherosa Ziehau #define BM_RCTL_MO_MASK (3 << 3) /* Multicast Offset Mask */ 1606a5a645eSSepherosa Ziehau #define BM_RCTL_BAM 0x0020 /* Broadcast Accept Mode */ 1616a5a645eSSepherosa Ziehau #define BM_RCTL_PMCF 0x0040 /* Pass MAC Control Frames */ 1626a5a645eSSepherosa Ziehau #define BM_RCTL_RFCE 0x0080 /* Rx Flow Control Enable */ 1636a5a645eSSepherosa Ziehau 1646a5a645eSSepherosa Ziehau #define HV_LED_CONFIG PHY_REG(768, 30) /* LED Configuration */ 1656a5a645eSSepherosa Ziehau #define HV_MUX_DATA_CTRL PHY_REG(776, 16) 1666a5a645eSSepherosa Ziehau #define HV_MUX_DATA_CTRL_GEN_TO_MAC 0x0400 1676a5a645eSSepherosa Ziehau #define HV_MUX_DATA_CTRL_FORCE_SPEED 0x0004 1686d5e2922SSepherosa Ziehau #define HV_STATS_PAGE 778 1694765c386SMichael Neumann /* Half-duplex collision counts */ 1704765c386SMichael Neumann #define HV_SCC_UPPER PHY_REG(HV_STATS_PAGE, 16) /* Single Collision */ 1716d5e2922SSepherosa Ziehau #define HV_SCC_LOWER PHY_REG(HV_STATS_PAGE, 17) 1724765c386SMichael Neumann #define HV_ECOL_UPPER PHY_REG(HV_STATS_PAGE, 18) /* Excessive Coll. */ 1736d5e2922SSepherosa Ziehau #define HV_ECOL_LOWER PHY_REG(HV_STATS_PAGE, 19) 1744765c386SMichael Neumann #define HV_MCC_UPPER PHY_REG(HV_STATS_PAGE, 20) /* Multiple Collision */ 1756d5e2922SSepherosa Ziehau #define HV_MCC_LOWER PHY_REG(HV_STATS_PAGE, 21) 1764765c386SMichael Neumann #define HV_LATECOL_UPPER PHY_REG(HV_STATS_PAGE, 23) /* Late Collision */ 1776d5e2922SSepherosa Ziehau #define HV_LATECOL_LOWER PHY_REG(HV_STATS_PAGE, 24) 1784765c386SMichael Neumann #define HV_COLC_UPPER PHY_REG(HV_STATS_PAGE, 25) /* Collision */ 1796d5e2922SSepherosa Ziehau #define HV_COLC_LOWER PHY_REG(HV_STATS_PAGE, 26) 1806d5e2922SSepherosa Ziehau #define HV_DC_UPPER PHY_REG(HV_STATS_PAGE, 27) /* Defer Count */ 1816d5e2922SSepherosa Ziehau #define HV_DC_LOWER PHY_REG(HV_STATS_PAGE, 28) 1824765c386SMichael Neumann #define HV_TNCRS_UPPER PHY_REG(HV_STATS_PAGE, 29) /* Tx with no CRS */ 1836d5e2922SSepherosa Ziehau #define HV_TNCRS_LOWER PHY_REG(HV_STATS_PAGE, 30) 1846a5a645eSSepherosa Ziehau 1856a5a645eSSepherosa Ziehau #define E1000_FCRTV_PCH 0x05F40 /* PCH Flow Control Refresh Timer Value */ 1866a5a645eSSepherosa Ziehau 1876a5a645eSSepherosa Ziehau #define E1000_NVM_K1_CONFIG 0x1B /* NVM K1 Config Word */ 1886a5a645eSSepherosa Ziehau #define E1000_NVM_K1_ENABLE 0x1 /* NVM Enable K1 bit */ 18974dc3754SSepherosa Ziehau #define K1_ENTRY_LATENCY 0 19074dc3754SSepherosa Ziehau #define K1_MIN_TIME 1 1916a5a645eSSepherosa Ziehau 192379ebbe7SSepherosa Ziehau /* SMBus Control Phy Register */ 193379ebbe7SSepherosa Ziehau #define CV_SMB_CTRL PHY_REG(769, 23) 194379ebbe7SSepherosa Ziehau #define CV_SMB_CTRL_FORCE_SMBUS 0x0001 195379ebbe7SSepherosa Ziehau 1964765c386SMichael Neumann /* I218 Ultra Low Power Configuration 1 Register */ 1974765c386SMichael Neumann #define I218_ULP_CONFIG1 PHY_REG(779, 16) 1984765c386SMichael Neumann #define I218_ULP_CONFIG1_START 0x0001 /* Start auto ULP config */ 1994765c386SMichael Neumann #define I218_ULP_CONFIG1_IND 0x0004 /* Pwr up from ULP indication */ 2004765c386SMichael Neumann #define I218_ULP_CONFIG1_STICKY_ULP 0x0010 /* Set sticky ULP mode */ 2014765c386SMichael Neumann #define I218_ULP_CONFIG1_INBAND_EXIT 0x0020 /* Inband on ULP exit */ 2024765c386SMichael Neumann #define I218_ULP_CONFIG1_WOL_HOST 0x0040 /* WoL Host on ULP exit */ 2034765c386SMichael Neumann #define I218_ULP_CONFIG1_RESET_TO_SMBUS 0x0100 /* Reset to SMBus mode */ 20474dc3754SSepherosa Ziehau /* enable ULP even if when phy powered down via lanphypc */ 20574dc3754SSepherosa Ziehau #define I218_ULP_CONFIG1_EN_ULP_LANPHYPC 0x0400 20674dc3754SSepherosa Ziehau /* disable clear of sticky ULP on PERST */ 20774dc3754SSepherosa Ziehau #define I218_ULP_CONFIG1_DIS_CLR_STICKY_ON_PERST 0x0800 2084765c386SMichael Neumann #define I218_ULP_CONFIG1_DISABLE_SMB_PERST 0x1000 /* Disable on PERST# */ 2094765c386SMichael Neumann 21065aebe9fSSepherosa Ziehau 2116a5a645eSSepherosa Ziehau /* SMBus Address Phy Register */ 2126a5a645eSSepherosa Ziehau #define HV_SMB_ADDR PHY_REG(768, 26) 2136a5a645eSSepherosa Ziehau #define HV_SMB_ADDR_MASK 0x007F 2146a5a645eSSepherosa Ziehau #define HV_SMB_ADDR_PEC_EN 0x0200 2156a5a645eSSepherosa Ziehau #define HV_SMB_ADDR_VALID 0x0080 216379ebbe7SSepherosa Ziehau #define HV_SMB_ADDR_FREQ_MASK 0x1100 217379ebbe7SSepherosa Ziehau #define HV_SMB_ADDR_FREQ_LOW_SHIFT 8 218379ebbe7SSepherosa Ziehau #define HV_SMB_ADDR_FREQ_HIGH_SHIFT 12 2196a5a645eSSepherosa Ziehau 2206a5a645eSSepherosa Ziehau /* Strapping Option Register - RO */ 2216a5a645eSSepherosa Ziehau #define E1000_STRAP 0x0000C 2226a5a645eSSepherosa Ziehau #define E1000_STRAP_SMBUS_ADDRESS_MASK 0x00FE0000 2236a5a645eSSepherosa Ziehau #define E1000_STRAP_SMBUS_ADDRESS_SHIFT 17 224379ebbe7SSepherosa Ziehau #define E1000_STRAP_SMT_FREQ_MASK 0x00003000 225379ebbe7SSepherosa Ziehau #define E1000_STRAP_SMT_FREQ_SHIFT 12 2266a5a645eSSepherosa Ziehau 2276a5a645eSSepherosa Ziehau /* OEM Bits Phy Register */ 2286a5a645eSSepherosa Ziehau #define HV_OEM_BITS PHY_REG(768, 25) 2296a5a645eSSepherosa Ziehau #define HV_OEM_BITS_LPLU 0x0004 /* Low Power Link Up */ 2306a5a645eSSepherosa Ziehau #define HV_OEM_BITS_GBE_DIS 0x0040 /* Gigabit Disable */ 2316a5a645eSSepherosa Ziehau #define HV_OEM_BITS_RESTART_AN 0x0400 /* Restart Auto-negotiation */ 2326a5a645eSSepherosa Ziehau 2336a5a645eSSepherosa Ziehau /* KMRN Mode Control */ 2346a5a645eSSepherosa Ziehau #define HV_KMRN_MODE_CTRL PHY_REG(769, 16) 2356a5a645eSSepherosa Ziehau #define HV_KMRN_MDIO_SLOW 0x0400 2366a5a645eSSepherosa Ziehau 2376d5e2922SSepherosa Ziehau /* KMRN FIFO Control and Status */ 2386d5e2922SSepherosa Ziehau #define HV_KMRN_FIFO_CTRLSTA PHY_REG(770, 16) 2396d5e2922SSepherosa Ziehau #define HV_KMRN_FIFO_CTRLSTA_PREAMBLE_MASK 0x7000 2406d5e2922SSepherosa Ziehau #define HV_KMRN_FIFO_CTRLSTA_PREAMBLE_SHIFT 12 2416d5e2922SSepherosa Ziehau 2426a5a645eSSepherosa Ziehau /* PHY Power Management Control */ 2436a5a645eSSepherosa Ziehau #define HV_PM_CTRL PHY_REG(770, 17) 24465aebe9fSSepherosa Ziehau #define HV_PM_CTRL_K1_CLK_REQ 0x200 2454765c386SMichael Neumann #define HV_PM_CTRL_K1_ENABLE 0x4000 2466a5a645eSSepherosa Ziehau 24774dc3754SSepherosa Ziehau #define I217_PLL_CLOCK_GATE_REG PHY_REG(772, 28) 24874dc3754SSepherosa Ziehau #define I217_PLL_CLOCK_GATE_MASK 0x07FF 24974dc3754SSepherosa Ziehau 2504be59a01SSepherosa Ziehau #define SW_FLAG_TIMEOUT 1000 /* SW Semaphore flag timeout in ms */ 2516a5a645eSSepherosa Ziehau 2524765c386SMichael Neumann /* Inband Control */ 2534765c386SMichael Neumann #define I217_INBAND_CTRL PHY_REG(770, 18) 2544765c386SMichael Neumann #define I217_INBAND_CTRL_LINK_STAT_TX_TIMEOUT_MASK 0x3F00 2554765c386SMichael Neumann #define I217_INBAND_CTRL_LINK_STAT_TX_TIMEOUT_SHIFT 8 2564765c386SMichael Neumann 2574765c386SMichael Neumann /* Low Power Idle GPIO Control */ 2584765c386SMichael Neumann #define I217_LPI_GPIO_CTRL PHY_REG(772, 18) 2594765c386SMichael Neumann #define I217_LPI_GPIO_CTRL_AUTO_EN_LPI 0x0800 2604765c386SMichael Neumann 2616a5a645eSSepherosa Ziehau /* PHY Low Power Idle Control */ 2626a5a645eSSepherosa Ziehau #define I82579_LPI_CTRL PHY_REG(772, 20) 263379ebbe7SSepherosa Ziehau #define I82579_LPI_CTRL_100_ENABLE 0x2000 264379ebbe7SSepherosa Ziehau #define I82579_LPI_CTRL_1000_ENABLE 0x4000 2656a5a645eSSepherosa Ziehau #define I82579_LPI_CTRL_ENABLE_MASK 0x6000 2664765c386SMichael Neumann 2674765c386SMichael Neumann /* 82579 DFT Control */ 2684765c386SMichael Neumann #define I82579_DFT_CTRL PHY_REG(769, 20) 2694765c386SMichael Neumann #define I82579_DFT_CTRL_GATE_PHY_RESET 0x0040 /* Gate PHY Reset on MAC Reset */ 2706a5a645eSSepherosa Ziehau 271379ebbe7SSepherosa Ziehau /* Extended Management Interface (EMI) Registers */ 2726d5e2922SSepherosa Ziehau #define I82579_EMI_ADDR 0x10 2736d5e2922SSepherosa Ziehau #define I82579_EMI_DATA 0x11 2746d5e2922SSepherosa Ziehau #define I82579_LPI_UPDATE_TIMER 0x4805 /* in 40ns units + 40 ns base value */ 275379ebbe7SSepherosa Ziehau #define I82579_MSE_THRESHOLD 0x084F /* 82579 Mean Square Error Threshold */ 276379ebbe7SSepherosa Ziehau #define I82577_MSE_THRESHOLD 0x0887 /* 82577 Mean Square Error Threshold */ 2774be59a01SSepherosa Ziehau #define I82579_MSE_LINK_DOWN 0x2411 /* MSE count before dropping link */ 278379ebbe7SSepherosa Ziehau #define I82579_RX_CONFIG 0x3412 /* Receive configuration */ 2794765c386SMichael Neumann #define I82579_LPI_PLL_SHUT 0x4412 /* LPI PLL Shut Enable */ 2804765c386SMichael Neumann #define I82579_EEE_PCS_STATUS 0x182E /* IEEE MMD Register 3.1 >> 8 */ 281379ebbe7SSepherosa Ziehau #define I82579_EEE_CAPABILITY 0x0410 /* IEEE MMD Register 3.20 */ 282379ebbe7SSepherosa Ziehau #define I82579_EEE_ADVERTISEMENT 0x040E /* IEEE MMD Register 7.60 */ 283379ebbe7SSepherosa Ziehau #define I82579_EEE_LP_ABILITY 0x040F /* IEEE MMD Register 7.61 */ 2844765c386SMichael Neumann #define I82579_EEE_100_SUPPORTED (1 << 1) /* 100BaseTx EEE */ 2854765c386SMichael Neumann #define I82579_EEE_1000_SUPPORTED (1 << 2) /* 1000BaseTx EEE */ 2864765c386SMichael Neumann #define I82579_LPI_100_PLL_SHUT (1 << 2) /* 100M LPI PLL Shut Enabled */ 287379ebbe7SSepherosa Ziehau #define I217_EEE_PCS_STATUS 0x9401 /* IEEE MMD Register 3.1 */ 288379ebbe7SSepherosa Ziehau #define I217_EEE_CAPABILITY 0x8000 /* IEEE MMD Register 3.20 */ 289379ebbe7SSepherosa Ziehau #define I217_EEE_ADVERTISEMENT 0x8001 /* IEEE MMD Register 7.60 */ 290379ebbe7SSepherosa Ziehau #define I217_EEE_LP_ABILITY 0x8002 /* IEEE MMD Register 7.61 */ 2914765c386SMichael Neumann #define I217_RX_CONFIG 0xB20C /* Receive configuration */ 2926d5e2922SSepherosa Ziehau 293379ebbe7SSepherosa Ziehau #define E1000_EEE_RX_LPI_RCVD 0x0400 /* Tx LP idle received */ 294379ebbe7SSepherosa Ziehau #define E1000_EEE_TX_LPI_RCVD 0x0800 /* Rx LP idle received */ 2959c80d176SSepherosa Ziehau 296379ebbe7SSepherosa Ziehau /* Intel Rapid Start Technology Support */ 297379ebbe7SSepherosa Ziehau #define I217_PROXY_CTRL BM_PHY_REG(BM_WUC_PAGE, 70) 298379ebbe7SSepherosa Ziehau #define I217_PROXY_CTRL_AUTO_DISABLE 0x0080 299379ebbe7SSepherosa Ziehau #define I217_SxCTRL PHY_REG(BM_PORT_CTRL_PAGE, 28) 300379ebbe7SSepherosa Ziehau #define I217_SxCTRL_ENABLE_LPI_RESET 0x1000 301379ebbe7SSepherosa Ziehau #define I217_CGFREG PHY_REG(772, 29) 302379ebbe7SSepherosa Ziehau #define I217_CGFREG_ENABLE_MTA_RESET 0x0002 303379ebbe7SSepherosa Ziehau #define I217_MEMPWR PHY_REG(772, 26) 304379ebbe7SSepherosa Ziehau #define I217_MEMPWR_DISABLE_SMB_RELEASE 0x0010 3059c80d176SSepherosa Ziehau 3066a5a645eSSepherosa Ziehau /* Receive Address Initial CRC Calculation */ 3076a5a645eSSepherosa Ziehau #define E1000_PCH_RAICC(_n) (0x05F50 + ((_n) * 4)) 3089c80d176SSepherosa Ziehau 309379ebbe7SSepherosa Ziehau /* Latency Tolerance Reporting */ 310379ebbe7SSepherosa Ziehau #define E1000_LTRV 0x000F8 311379ebbe7SSepherosa Ziehau #define E1000_LTRV_VALUE_MASK 0x000003FF 312379ebbe7SSepherosa Ziehau #define E1000_LTRV_SCALE_MAX 5 313379ebbe7SSepherosa Ziehau #define E1000_LTRV_SCALE_FACTOR 5 314379ebbe7SSepherosa Ziehau #define E1000_LTRV_SCALE_SHIFT 10 315379ebbe7SSepherosa Ziehau #define E1000_LTRV_SCALE_MASK 0x00001C00 316379ebbe7SSepherosa Ziehau #define E1000_LTRV_REQ_SHIFT 15 317379ebbe7SSepherosa Ziehau #define E1000_LTRV_NOSNOOP_SHIFT 16 318379ebbe7SSepherosa Ziehau #define E1000_LTRV_SEND (1 << 30) 319379ebbe7SSepherosa Ziehau 32065aebe9fSSepherosa Ziehau 321379ebbe7SSepherosa Ziehau /* Proprietary Latency Tolerance Reporting PCI Capability */ 322379ebbe7SSepherosa Ziehau #define E1000_PCI_LTR_CAP_LPT 0xA8 323379ebbe7SSepherosa Ziehau 324379ebbe7SSepherosa Ziehau /* OBFF Control & Threshold Defines */ 325379ebbe7SSepherosa Ziehau #define E1000_SVCR_OFF_EN 0x00000001 326379ebbe7SSepherosa Ziehau #define E1000_SVCR_OFF_MASKINT 0x00001000 327379ebbe7SSepherosa Ziehau #define E1000_SVCR_OFF_TIMER_MASK 0xFFFF0000 328379ebbe7SSepherosa Ziehau #define E1000_SVCR_OFF_TIMER_SHIFT 16 329379ebbe7SSepherosa Ziehau #define E1000_SVT_OFF_HWM_MASK 0x0000001F 330379ebbe7SSepherosa Ziehau 331*01a55482SSepherosa Ziehau #define E1000_PCI_VENDOR_ID_REGISTER 0x00 332*01a55482SSepherosa Ziehau 3339c80d176SSepherosa Ziehau void e1000_set_kmrn_lock_loss_workaround_ich8lan(struct e1000_hw *hw, 3349c80d176SSepherosa Ziehau bool state); 3359c80d176SSepherosa Ziehau void e1000_igp3_phy_powerdown_workaround_ich8lan(struct e1000_hw *hw); 3369c80d176SSepherosa Ziehau void e1000_gig_downshift_workaround_ich8lan(struct e1000_hw *hw); 3376d5e2922SSepherosa Ziehau void e1000_suspend_workarounds_ich8lan(struct e1000_hw *hw); 33874dc3754SSepherosa Ziehau u32 e1000_resume_workarounds_pchlan(struct e1000_hw *hw); 3396a5a645eSSepherosa Ziehau s32 e1000_configure_k1_ich8lan(struct e1000_hw *hw, bool k1_enable); 3406a5a645eSSepherosa Ziehau void e1000_copy_rx_addrs_to_phy_ich8lan(struct e1000_hw *hw); 3416a5a645eSSepherosa Ziehau s32 e1000_lv_jumbo_workaround_ich8lan(struct e1000_hw *hw, bool enable); 342379ebbe7SSepherosa Ziehau s32 e1000_read_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 *data); 3434765c386SMichael Neumann s32 e1000_write_emi_reg_locked(struct e1000_hw *hw, u16 addr, u16 data); 3444765c386SMichael Neumann s32 e1000_set_eee_pchlan(struct e1000_hw *hw); 3454765c386SMichael Neumann s32 e1000_enable_ulp_lpt_lp(struct e1000_hw *hw, bool to_sx); 3464765c386SMichael Neumann s32 e1000_disable_ulp_lpt_lp(struct e1000_hw *hw, bool force); 347379ebbe7SSepherosa Ziehau #endif /* _E1000_ICH8LAN_H_ */ 348