1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2018 Intel Corporation */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef _IGC_DEFINES_H_ 5*4882a593Smuzhiyun #define _IGC_DEFINES_H_ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun /* Number of Transmit and Receive Descriptors must be a multiple of 8 */ 8*4882a593Smuzhiyun #define REQ_TX_DESCRIPTOR_MULTIPLE 8 9*4882a593Smuzhiyun #define REQ_RX_DESCRIPTOR_MULTIPLE 8 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #define IGC_CTRL_EXT_DRV_LOAD 0x10000000 /* Drv loaded bit for FW */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* Definitions for power management and wakeup registers */ 14*4882a593Smuzhiyun /* Wake Up Control */ 15*4882a593Smuzhiyun #define IGC_WUC_PME_EN 0x00000002 /* PME Enable */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* Wake Up Filter Control */ 18*4882a593Smuzhiyun #define IGC_WUFC_LNKC 0x00000001 /* Link Status Change Wakeup Enable */ 19*4882a593Smuzhiyun #define IGC_WUFC_MAG 0x00000002 /* Magic Packet Wakeup Enable */ 20*4882a593Smuzhiyun #define IGC_WUFC_EX 0x00000004 /* Directed Exact Wakeup Enable */ 21*4882a593Smuzhiyun #define IGC_WUFC_MC 0x00000008 /* Directed Multicast Wakeup Enable */ 22*4882a593Smuzhiyun #define IGC_WUFC_BC 0x00000010 /* Broadcast Wakeup Enable */ 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun #define IGC_CTRL_ADVD3WUC 0x00100000 /* D3 WUC */ 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun /* Wake Up Status */ 27*4882a593Smuzhiyun #define IGC_WUS_EX 0x00000004 /* Directed Exact */ 28*4882a593Smuzhiyun #define IGC_WUS_ARPD 0x00000020 /* Directed ARP Request */ 29*4882a593Smuzhiyun #define IGC_WUS_IPV4 0x00000040 /* Directed IPv4 */ 30*4882a593Smuzhiyun #define IGC_WUS_IPV6 0x00000080 /* Directed IPv6 */ 31*4882a593Smuzhiyun #define IGC_WUS_NSD 0x00000400 /* Directed IPv6 Neighbor Solicitation */ 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* Packet types that are enabled for wake packet delivery */ 34*4882a593Smuzhiyun #define WAKE_PKT_WUS ( \ 35*4882a593Smuzhiyun IGC_WUS_EX | \ 36*4882a593Smuzhiyun IGC_WUS_ARPD | \ 37*4882a593Smuzhiyun IGC_WUS_IPV4 | \ 38*4882a593Smuzhiyun IGC_WUS_IPV6 | \ 39*4882a593Smuzhiyun IGC_WUS_NSD) 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /* Wake Up Packet Length */ 42*4882a593Smuzhiyun #define IGC_WUPL_MASK 0x00000FFF 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* Wake Up Packet Memory stores the first 128 bytes of the wake up packet */ 45*4882a593Smuzhiyun #define IGC_WUPM_BYTES 128 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun /* Loop limit on how long we wait for auto-negotiation to complete */ 48*4882a593Smuzhiyun #define COPPER_LINK_UP_LIMIT 10 49*4882a593Smuzhiyun #define PHY_AUTO_NEG_LIMIT 45 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun /* Number of 100 microseconds we wait for PCI Express master disable */ 52*4882a593Smuzhiyun #define MASTER_DISABLE_TIMEOUT 800 53*4882a593Smuzhiyun /*Blocks new Master requests */ 54*4882a593Smuzhiyun #define IGC_CTRL_GIO_MASTER_DISABLE 0x00000004 55*4882a593Smuzhiyun /* Status of Master requests. */ 56*4882a593Smuzhiyun #define IGC_STATUS_GIO_MASTER_ENABLE 0x00080000 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* Receive Address 59*4882a593Smuzhiyun * Number of high/low register pairs in the RAR. The RAR (Receive Address 60*4882a593Smuzhiyun * Registers) holds the directed and multicast addresses that we monitor. 61*4882a593Smuzhiyun * Technically, we have 16 spots. However, we reserve one of these spots 62*4882a593Smuzhiyun * (RAR[15]) for our directed address used by controllers with 63*4882a593Smuzhiyun * manageability enabled, allowing us room for 15 multicast addresses. 64*4882a593Smuzhiyun */ 65*4882a593Smuzhiyun #define IGC_RAH_RAH_MASK 0x0000FFFF 66*4882a593Smuzhiyun #define IGC_RAH_ASEL_MASK 0x00030000 67*4882a593Smuzhiyun #define IGC_RAH_ASEL_SRC_ADDR BIT(16) 68*4882a593Smuzhiyun #define IGC_RAH_QSEL_MASK 0x000C0000 69*4882a593Smuzhiyun #define IGC_RAH_QSEL_SHIFT 18 70*4882a593Smuzhiyun #define IGC_RAH_QSEL_ENABLE BIT(28) 71*4882a593Smuzhiyun #define IGC_RAH_AV 0x80000000 /* Receive descriptor valid */ 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define IGC_RAL_MAC_ADDR_LEN 4 74*4882a593Smuzhiyun #define IGC_RAH_MAC_ADDR_LEN 2 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun /* Error Codes */ 77*4882a593Smuzhiyun #define IGC_SUCCESS 0 78*4882a593Smuzhiyun #define IGC_ERR_NVM 1 79*4882a593Smuzhiyun #define IGC_ERR_PHY 2 80*4882a593Smuzhiyun #define IGC_ERR_CONFIG 3 81*4882a593Smuzhiyun #define IGC_ERR_PARAM 4 82*4882a593Smuzhiyun #define IGC_ERR_MAC_INIT 5 83*4882a593Smuzhiyun #define IGC_ERR_RESET 9 84*4882a593Smuzhiyun #define IGC_ERR_MASTER_REQUESTS_PENDING 10 85*4882a593Smuzhiyun #define IGC_ERR_BLK_PHY_RESET 12 86*4882a593Smuzhiyun #define IGC_ERR_SWFW_SYNC 13 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun /* Device Control */ 89*4882a593Smuzhiyun #define IGC_CTRL_DEV_RST 0x20000000 /* Device reset */ 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #define IGC_CTRL_PHY_RST 0x80000000 /* PHY Reset */ 92*4882a593Smuzhiyun #define IGC_CTRL_SLU 0x00000040 /* Set link up (Force Link) */ 93*4882a593Smuzhiyun #define IGC_CTRL_FRCSPD 0x00000800 /* Force Speed */ 94*4882a593Smuzhiyun #define IGC_CTRL_FRCDPX 0x00001000 /* Force Duplex */ 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #define IGC_CTRL_RFCE 0x08000000 /* Receive Flow Control enable */ 97*4882a593Smuzhiyun #define IGC_CTRL_TFCE 0x10000000 /* Transmit flow control enable */ 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun /* As per the EAS the maximum supported size is 9.5KB (9728 bytes) */ 100*4882a593Smuzhiyun #define MAX_JUMBO_FRAME_SIZE 0x2600 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun /* PBA constants */ 103*4882a593Smuzhiyun #define IGC_PBA_34K 0x0022 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun /* SW Semaphore Register */ 106*4882a593Smuzhiyun #define IGC_SWSM_SMBI 0x00000001 /* Driver Semaphore bit */ 107*4882a593Smuzhiyun #define IGC_SWSM_SWESMBI 0x00000002 /* FW Semaphore bit */ 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* SWFW_SYNC Definitions */ 110*4882a593Smuzhiyun #define IGC_SWFW_EEP_SM 0x1 111*4882a593Smuzhiyun #define IGC_SWFW_PHY0_SM 0x2 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun /* Autoneg Advertisement Register */ 114*4882a593Smuzhiyun #define NWAY_AR_10T_HD_CAPS 0x0020 /* 10T Half Duplex Capable */ 115*4882a593Smuzhiyun #define NWAY_AR_10T_FD_CAPS 0x0040 /* 10T Full Duplex Capable */ 116*4882a593Smuzhiyun #define NWAY_AR_100TX_HD_CAPS 0x0080 /* 100TX Half Duplex Capable */ 117*4882a593Smuzhiyun #define NWAY_AR_100TX_FD_CAPS 0x0100 /* 100TX Full Duplex Capable */ 118*4882a593Smuzhiyun #define NWAY_AR_PAUSE 0x0400 /* Pause operation desired */ 119*4882a593Smuzhiyun #define NWAY_AR_ASM_DIR 0x0800 /* Asymmetric Pause Direction bit */ 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun /* Link Partner Ability Register (Base Page) */ 122*4882a593Smuzhiyun #define NWAY_LPAR_PAUSE 0x0400 /* LP Pause operation desired */ 123*4882a593Smuzhiyun #define NWAY_LPAR_ASM_DIR 0x0800 /* LP Asymmetric Pause Direction bit */ 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun /* 1000BASE-T Control Register */ 126*4882a593Smuzhiyun #define CR_1000T_ASYM_PAUSE 0x0080 /* Advertise asymmetric pause bit */ 127*4882a593Smuzhiyun #define CR_1000T_HD_CAPS 0x0100 /* Advertise 1000T HD capability */ 128*4882a593Smuzhiyun #define CR_1000T_FD_CAPS 0x0200 /* Advertise 1000T FD capability */ 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun /* 1000BASE-T Status Register */ 131*4882a593Smuzhiyun #define SR_1000T_REMOTE_RX_STATUS 0x1000 /* Remote receiver OK */ 132*4882a593Smuzhiyun #define SR_1000T_LOCAL_RX_STATUS 0x2000 /* Local receiver OK */ 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun /* PHY GPY 211 registers */ 135*4882a593Smuzhiyun #define STANDARD_AN_REG_MASK 0x0007 /* MMD */ 136*4882a593Smuzhiyun #define ANEG_MULTIGBT_AN_CTRL 0x0020 /* MULTI GBT AN Control Register */ 137*4882a593Smuzhiyun #define MMD_DEVADDR_SHIFT 16 /* Shift MMD to higher bits */ 138*4882a593Smuzhiyun #define CR_2500T_FD_CAPS 0x0080 /* Advertise 2500T FD capability */ 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun /* NVM Control */ 141*4882a593Smuzhiyun /* Number of milliseconds for NVM auto read done after MAC reset. */ 142*4882a593Smuzhiyun #define AUTO_READ_DONE_TIMEOUT 10 143*4882a593Smuzhiyun #define IGC_EECD_AUTO_RD 0x00000200 /* NVM Auto Read done */ 144*4882a593Smuzhiyun #define IGC_EECD_REQ 0x00000040 /* NVM Access Request */ 145*4882a593Smuzhiyun #define IGC_EECD_GNT 0x00000080 /* NVM Access Grant */ 146*4882a593Smuzhiyun /* NVM Addressing bits based on type 0=small, 1=large */ 147*4882a593Smuzhiyun #define IGC_EECD_ADDR_BITS 0x00000400 148*4882a593Smuzhiyun #define IGC_NVM_GRANT_ATTEMPTS 1000 /* NVM # attempts to gain grant */ 149*4882a593Smuzhiyun #define IGC_EECD_SIZE_EX_MASK 0x00007800 /* NVM Size */ 150*4882a593Smuzhiyun #define IGC_EECD_SIZE_EX_SHIFT 11 151*4882a593Smuzhiyun #define IGC_EECD_FLUPD_I225 0x00800000 /* Update FLASH */ 152*4882a593Smuzhiyun #define IGC_EECD_FLUDONE_I225 0x04000000 /* Update FLASH done*/ 153*4882a593Smuzhiyun #define IGC_EECD_FLASH_DETECTED_I225 0x00080000 /* FLASH detected */ 154*4882a593Smuzhiyun #define IGC_FLUDONE_ATTEMPTS 20000 155*4882a593Smuzhiyun #define IGC_EERD_EEWR_MAX_COUNT 512 /* buffered EEPROM words rw */ 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun /* Offset to data in NVM read/write registers */ 158*4882a593Smuzhiyun #define IGC_NVM_RW_REG_DATA 16 159*4882a593Smuzhiyun #define IGC_NVM_RW_REG_DONE 2 /* Offset to READ/WRITE done bit */ 160*4882a593Smuzhiyun #define IGC_NVM_RW_REG_START 1 /* Start operation */ 161*4882a593Smuzhiyun #define IGC_NVM_RW_ADDR_SHIFT 2 /* Shift to the address bits */ 162*4882a593Smuzhiyun #define IGC_NVM_POLL_READ 0 /* Flag for polling for read complete */ 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun /* NVM Word Offsets */ 165*4882a593Smuzhiyun #define NVM_CHECKSUM_REG 0x003F 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /* For checksumming, the sum of all words in the NVM should equal 0xBABA. */ 168*4882a593Smuzhiyun #define NVM_SUM 0xBABA 169*4882a593Smuzhiyun #define NVM_WORD_SIZE_BASE_SHIFT 6 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun /* Collision related configuration parameters */ 172*4882a593Smuzhiyun #define IGC_COLLISION_THRESHOLD 15 173*4882a593Smuzhiyun #define IGC_CT_SHIFT 4 174*4882a593Smuzhiyun #define IGC_COLLISION_DISTANCE 63 175*4882a593Smuzhiyun #define IGC_COLD_SHIFT 12 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun /* Device Status */ 178*4882a593Smuzhiyun #define IGC_STATUS_FD 0x00000001 /* Full duplex.0=half,1=full */ 179*4882a593Smuzhiyun #define IGC_STATUS_LU 0x00000002 /* Link up.0=no,1=link */ 180*4882a593Smuzhiyun #define IGC_STATUS_FUNC_MASK 0x0000000C /* PCI Function Mask */ 181*4882a593Smuzhiyun #define IGC_STATUS_FUNC_SHIFT 2 182*4882a593Smuzhiyun #define IGC_STATUS_FUNC_1 0x00000004 /* Function 1 */ 183*4882a593Smuzhiyun #define IGC_STATUS_TXOFF 0x00000010 /* transmission paused */ 184*4882a593Smuzhiyun #define IGC_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */ 185*4882a593Smuzhiyun #define IGC_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */ 186*4882a593Smuzhiyun #define IGC_STATUS_SPEED_2500 0x00400000 /* Speed 2.5Gb/s */ 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun #define SPEED_10 10 189*4882a593Smuzhiyun #define SPEED_100 100 190*4882a593Smuzhiyun #define SPEED_1000 1000 191*4882a593Smuzhiyun #define SPEED_2500 2500 192*4882a593Smuzhiyun #define HALF_DUPLEX 1 193*4882a593Smuzhiyun #define FULL_DUPLEX 2 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun /* 1Gbps and 2.5Gbps half duplex is not supported, nor spec-compliant. */ 196*4882a593Smuzhiyun #define ADVERTISE_10_HALF 0x0001 197*4882a593Smuzhiyun #define ADVERTISE_10_FULL 0x0002 198*4882a593Smuzhiyun #define ADVERTISE_100_HALF 0x0004 199*4882a593Smuzhiyun #define ADVERTISE_100_FULL 0x0008 200*4882a593Smuzhiyun #define ADVERTISE_1000_HALF 0x0010 /* Not used, just FYI */ 201*4882a593Smuzhiyun #define ADVERTISE_1000_FULL 0x0020 202*4882a593Smuzhiyun #define ADVERTISE_2500_HALF 0x0040 /* Not used, just FYI */ 203*4882a593Smuzhiyun #define ADVERTISE_2500_FULL 0x0080 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun #define IGC_ALL_SPEED_DUPLEX_2500 ( \ 206*4882a593Smuzhiyun ADVERTISE_10_HALF | ADVERTISE_10_FULL | ADVERTISE_100_HALF | \ 207*4882a593Smuzhiyun ADVERTISE_100_FULL | ADVERTISE_1000_FULL | ADVERTISE_2500_FULL) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun #define AUTONEG_ADVERTISE_SPEED_DEFAULT_2500 IGC_ALL_SPEED_DUPLEX_2500 210*4882a593Smuzhiyun 211*4882a593Smuzhiyun /* Interrupt Cause Read */ 212*4882a593Smuzhiyun #define IGC_ICR_TXDW BIT(0) /* Transmit desc written back */ 213*4882a593Smuzhiyun #define IGC_ICR_TXQE BIT(1) /* Transmit Queue empty */ 214*4882a593Smuzhiyun #define IGC_ICR_LSC BIT(2) /* Link Status Change */ 215*4882a593Smuzhiyun #define IGC_ICR_RXSEQ BIT(3) /* Rx sequence error */ 216*4882a593Smuzhiyun #define IGC_ICR_RXDMT0 BIT(4) /* Rx desc min. threshold (0) */ 217*4882a593Smuzhiyun #define IGC_ICR_RXO BIT(6) /* Rx overrun */ 218*4882a593Smuzhiyun #define IGC_ICR_RXT0 BIT(7) /* Rx timer intr (ring 0) */ 219*4882a593Smuzhiyun #define IGC_ICR_TS BIT(19) /* Time Sync Interrupt */ 220*4882a593Smuzhiyun #define IGC_ICR_DRSTA BIT(30) /* Device Reset Asserted */ 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun /* If this bit asserted, the driver should claim the interrupt */ 223*4882a593Smuzhiyun #define IGC_ICR_INT_ASSERTED BIT(31) 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun #define IGC_ICS_RXT0 IGC_ICR_RXT0 /* Rx timer intr */ 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun #define IMS_ENABLE_MASK ( \ 228*4882a593Smuzhiyun IGC_IMS_RXT0 | \ 229*4882a593Smuzhiyun IGC_IMS_TXDW | \ 230*4882a593Smuzhiyun IGC_IMS_RXDMT0 | \ 231*4882a593Smuzhiyun IGC_IMS_RXSEQ | \ 232*4882a593Smuzhiyun IGC_IMS_LSC) 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun /* Interrupt Mask Set */ 235*4882a593Smuzhiyun #define IGC_IMS_TXDW IGC_ICR_TXDW /* Tx desc written back */ 236*4882a593Smuzhiyun #define IGC_IMS_RXSEQ IGC_ICR_RXSEQ /* Rx sequence error */ 237*4882a593Smuzhiyun #define IGC_IMS_LSC IGC_ICR_LSC /* Link Status Change */ 238*4882a593Smuzhiyun #define IGC_IMS_DOUTSYNC IGC_ICR_DOUTSYNC /* NIC DMA out of sync */ 239*4882a593Smuzhiyun #define IGC_IMS_DRSTA IGC_ICR_DRSTA /* Device Reset Asserted */ 240*4882a593Smuzhiyun #define IGC_IMS_RXT0 IGC_ICR_RXT0 /* Rx timer intr */ 241*4882a593Smuzhiyun #define IGC_IMS_RXDMT0 IGC_ICR_RXDMT0 /* Rx desc min. threshold */ 242*4882a593Smuzhiyun #define IGC_IMS_TS IGC_ICR_TS /* Time Sync Interrupt */ 243*4882a593Smuzhiyun 244*4882a593Smuzhiyun #define IGC_QVECTOR_MASK 0x7FFC /* Q-vector mask */ 245*4882a593Smuzhiyun #define IGC_ITR_VAL_MASK 0x04 /* ITR value mask */ 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun /* Interrupt Cause Set */ 248*4882a593Smuzhiyun #define IGC_ICS_LSC IGC_ICR_LSC /* Link Status Change */ 249*4882a593Smuzhiyun #define IGC_ICS_RXDMT0 IGC_ICR_RXDMT0 /* rx desc min. threshold */ 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun #define IGC_ICR_DOUTSYNC 0x10000000 /* NIC DMA out of sync */ 252*4882a593Smuzhiyun #define IGC_EITR_CNT_IGNR 0x80000000 /* Don't reset counters on write */ 253*4882a593Smuzhiyun #define IGC_IVAR_VALID 0x80 254*4882a593Smuzhiyun #define IGC_GPIE_NSICR 0x00000001 255*4882a593Smuzhiyun #define IGC_GPIE_MSIX_MODE 0x00000010 256*4882a593Smuzhiyun #define IGC_GPIE_EIAME 0x40000000 257*4882a593Smuzhiyun #define IGC_GPIE_PBA 0x80000000 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun /* Receive Descriptor bit definitions */ 260*4882a593Smuzhiyun #define IGC_RXD_STAT_DD 0x01 /* Descriptor Done */ 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun /* Transmit Descriptor bit definitions */ 263*4882a593Smuzhiyun #define IGC_TXD_DTYP_D 0x00100000 /* Data Descriptor */ 264*4882a593Smuzhiyun #define IGC_TXD_DTYP_C 0x00000000 /* Context Descriptor */ 265*4882a593Smuzhiyun #define IGC_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */ 266*4882a593Smuzhiyun #define IGC_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */ 267*4882a593Smuzhiyun #define IGC_TXD_CMD_EOP 0x01000000 /* End of Packet */ 268*4882a593Smuzhiyun #define IGC_TXD_CMD_IC 0x04000000 /* Insert Checksum */ 269*4882a593Smuzhiyun #define IGC_TXD_CMD_DEXT 0x20000000 /* Desc extension (0 = legacy) */ 270*4882a593Smuzhiyun #define IGC_TXD_CMD_VLE 0x40000000 /* Add VLAN tag */ 271*4882a593Smuzhiyun #define IGC_TXD_STAT_DD 0x00000001 /* Descriptor Done */ 272*4882a593Smuzhiyun #define IGC_TXD_CMD_TCP 0x01000000 /* TCP packet */ 273*4882a593Smuzhiyun #define IGC_TXD_CMD_IP 0x02000000 /* IP packet */ 274*4882a593Smuzhiyun #define IGC_TXD_CMD_TSE 0x04000000 /* TCP Seg enable */ 275*4882a593Smuzhiyun #define IGC_TXD_EXTCMD_TSTAMP 0x00000010 /* IEEE1588 Timestamp packet */ 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun /* IPSec Encrypt Enable */ 278*4882a593Smuzhiyun #define IGC_ADVTXD_L4LEN_SHIFT 8 /* Adv ctxt L4LEN shift */ 279*4882a593Smuzhiyun #define IGC_ADVTXD_MSS_SHIFT 16 /* Adv ctxt MSS shift */ 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun /* Transmit Control */ 282*4882a593Smuzhiyun #define IGC_TCTL_EN 0x00000002 /* enable Tx */ 283*4882a593Smuzhiyun #define IGC_TCTL_PSP 0x00000008 /* pad short packets */ 284*4882a593Smuzhiyun #define IGC_TCTL_CT 0x00000ff0 /* collision threshold */ 285*4882a593Smuzhiyun #define IGC_TCTL_COLD 0x003ff000 /* collision distance */ 286*4882a593Smuzhiyun #define IGC_TCTL_RTLC 0x01000000 /* Re-transmit on late collision */ 287*4882a593Smuzhiyun #define IGC_TCTL_MULR 0x10000000 /* Multiple request support */ 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* Flow Control Constants */ 290*4882a593Smuzhiyun #define FLOW_CONTROL_ADDRESS_LOW 0x00C28001 291*4882a593Smuzhiyun #define FLOW_CONTROL_ADDRESS_HIGH 0x00000100 292*4882a593Smuzhiyun #define FLOW_CONTROL_TYPE 0x8808 293*4882a593Smuzhiyun /* Enable XON frame transmission */ 294*4882a593Smuzhiyun #define IGC_FCRTL_XONE 0x80000000 295*4882a593Smuzhiyun 296*4882a593Smuzhiyun /* Management Control */ 297*4882a593Smuzhiyun #define IGC_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */ 298*4882a593Smuzhiyun #define IGC_MANC_BLK_PHY_RST_ON_IDE 0x00040000 /* Block phy resets */ 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun /* Receive Control */ 301*4882a593Smuzhiyun #define IGC_RCTL_RST 0x00000001 /* Software reset */ 302*4882a593Smuzhiyun #define IGC_RCTL_EN 0x00000002 /* enable */ 303*4882a593Smuzhiyun #define IGC_RCTL_SBP 0x00000004 /* store bad packet */ 304*4882a593Smuzhiyun #define IGC_RCTL_UPE 0x00000008 /* unicast promisc enable */ 305*4882a593Smuzhiyun #define IGC_RCTL_MPE 0x00000010 /* multicast promisc enable */ 306*4882a593Smuzhiyun #define IGC_RCTL_LPE 0x00000020 /* long packet enable */ 307*4882a593Smuzhiyun #define IGC_RCTL_LBM_MAC 0x00000040 /* MAC loopback mode */ 308*4882a593Smuzhiyun #define IGC_RCTL_LBM_TCVR 0x000000C0 /* tcvr loopback mode */ 309*4882a593Smuzhiyun 310*4882a593Smuzhiyun #define IGC_RCTL_RDMTS_HALF 0x00000000 /* Rx desc min thresh size */ 311*4882a593Smuzhiyun #define IGC_RCTL_BAM 0x00008000 /* broadcast enable */ 312*4882a593Smuzhiyun 313*4882a593Smuzhiyun /* Split Replication Receive Control */ 314*4882a593Smuzhiyun #define IGC_SRRCTL_TIMESTAMP 0x40000000 315*4882a593Smuzhiyun #define IGC_SRRCTL_TIMER1SEL(timer) (((timer) & 0x3) << 14) 316*4882a593Smuzhiyun #define IGC_SRRCTL_TIMER0SEL(timer) (((timer) & 0x3) << 17) 317*4882a593Smuzhiyun 318*4882a593Smuzhiyun /* Receive Descriptor bit definitions */ 319*4882a593Smuzhiyun #define IGC_RXD_STAT_EOP 0x02 /* End of Packet */ 320*4882a593Smuzhiyun #define IGC_RXD_STAT_IXSM 0x04 /* Ignore checksum */ 321*4882a593Smuzhiyun #define IGC_RXD_STAT_UDPCS 0x10 /* UDP xsum calculated */ 322*4882a593Smuzhiyun #define IGC_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */ 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun /* Advanced Receive Descriptor bit definitions */ 325*4882a593Smuzhiyun #define IGC_RXDADV_STAT_TSIP 0x08000 /* timestamp in packet */ 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun #define IGC_RXDEXT_STATERR_L4E 0x20000000 328*4882a593Smuzhiyun #define IGC_RXDEXT_STATERR_IPE 0x40000000 329*4882a593Smuzhiyun #define IGC_RXDEXT_STATERR_RXE 0x80000000 330*4882a593Smuzhiyun 331*4882a593Smuzhiyun #define IGC_MRQC_RSS_FIELD_IPV4_TCP 0x00010000 332*4882a593Smuzhiyun #define IGC_MRQC_RSS_FIELD_IPV4 0x00020000 333*4882a593Smuzhiyun #define IGC_MRQC_RSS_FIELD_IPV6_TCP_EX 0x00040000 334*4882a593Smuzhiyun #define IGC_MRQC_RSS_FIELD_IPV6 0x00100000 335*4882a593Smuzhiyun #define IGC_MRQC_RSS_FIELD_IPV6_TCP 0x00200000 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun /* Header split receive */ 338*4882a593Smuzhiyun #define IGC_RFCTL_IPV6_EX_DIS 0x00010000 339*4882a593Smuzhiyun #define IGC_RFCTL_LEF 0x00040000 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun #define IGC_RCTL_SZ_256 0x00030000 /* Rx buffer size 256 */ 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun #define IGC_RCTL_MO_SHIFT 12 /* multicast offset shift */ 344*4882a593Smuzhiyun #define IGC_RCTL_CFIEN 0x00080000 /* canonical form enable */ 345*4882a593Smuzhiyun #define IGC_RCTL_DPF 0x00400000 /* discard pause frames */ 346*4882a593Smuzhiyun #define IGC_RCTL_PMCF 0x00800000 /* pass MAC control frames */ 347*4882a593Smuzhiyun #define IGC_RCTL_SECRC 0x04000000 /* Strip Ethernet CRC */ 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun #define I225_RXPBSIZE_DEFAULT 0x000000A2 /* RXPBSIZE default */ 350*4882a593Smuzhiyun #define I225_TXPBSIZE_DEFAULT 0x04000014 /* TXPBSIZE default */ 351*4882a593Smuzhiyun #define IGC_RXPBS_CFG_TS_EN 0x80000000 /* Timestamp in Rx buffer */ 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun #define IGC_TXPBSIZE_TSN 0x04145145 /* 5k bytes buffer for each queue */ 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun #define IGC_DTXMXPKTSZ_TSN 0x19 /* 1600 bytes of max TX DMA packet size */ 356*4882a593Smuzhiyun #define IGC_DTXMXPKTSZ_DEFAULT 0x98 /* 9728-byte Jumbo frames */ 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun /* Time Sync Interrupt Causes */ 359*4882a593Smuzhiyun #define IGC_TSICR_SYS_WRAP BIT(0) /* SYSTIM Wrap around. */ 360*4882a593Smuzhiyun #define IGC_TSICR_TXTS BIT(1) /* Transmit Timestamp. */ 361*4882a593Smuzhiyun #define IGC_TSICR_TT0 BIT(3) /* Target Time 0 Trigger. */ 362*4882a593Smuzhiyun #define IGC_TSICR_TT1 BIT(4) /* Target Time 1 Trigger. */ 363*4882a593Smuzhiyun #define IGC_TSICR_AUTT0 BIT(5) /* Auxiliary Timestamp 0 Taken. */ 364*4882a593Smuzhiyun #define IGC_TSICR_AUTT1 BIT(6) /* Auxiliary Timestamp 1 Taken. */ 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun #define IGC_TSICR_INTERRUPTS IGC_TSICR_TXTS 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun #define IGC_FTQF_VF_BP 0x00008000 369*4882a593Smuzhiyun #define IGC_FTQF_1588_TIME_STAMP 0x08000000 370*4882a593Smuzhiyun #define IGC_FTQF_MASK 0xF0000000 371*4882a593Smuzhiyun #define IGC_FTQF_MASK_PROTO_BP 0x10000000 372*4882a593Smuzhiyun 373*4882a593Smuzhiyun /* Time Sync Receive Control bit definitions */ 374*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_TYPE_MASK 0x0000000E /* Rx type mask */ 375*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_TYPE_L2_V2 0x00 376*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_TYPE_L4_V1 0x02 377*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_TYPE_L2_L4_V2 0x04 378*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_TYPE_ALL 0x08 379*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_TYPE_EVENT_V2 0x0A 380*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_ENABLED 0x00000010 /* enable Rx timestamping */ 381*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_SYSCFI 0x00000020 /* Sys clock frequency */ 382*4882a593Smuzhiyun #define IGC_TSYNCRXCTL_RXSYNSIG 0x00000400 /* Sample RX tstamp in PHY sop */ 383*4882a593Smuzhiyun 384*4882a593Smuzhiyun /* Time Sync Receive Configuration */ 385*4882a593Smuzhiyun #define IGC_TSYNCRXCFG_PTP_V1_CTRLT_MASK 0x000000FF 386*4882a593Smuzhiyun #define IGC_TSYNCRXCFG_PTP_V1_SYNC_MESSAGE 0x00 387*4882a593Smuzhiyun #define IGC_TSYNCRXCFG_PTP_V1_DELAY_REQ_MESSAGE 0x01 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun /* Immediate Interrupt Receive */ 390*4882a593Smuzhiyun #define IGC_IMIR_CLEAR_MASK 0xF001FFFF /* IMIR Reg Clear Mask */ 391*4882a593Smuzhiyun #define IGC_IMIR_PORT_BYPASS 0x20000 /* IMIR Port Bypass Bit */ 392*4882a593Smuzhiyun #define IGC_IMIR_PRIORITY_SHIFT 29 /* IMIR Priority Shift */ 393*4882a593Smuzhiyun #define IGC_IMIREXT_CLEAR_MASK 0x7FFFF /* IMIREXT Reg Clear Mask */ 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun /* Immediate Interrupt Receive Extended */ 396*4882a593Smuzhiyun #define IGC_IMIREXT_CTRL_BP 0x00080000 /* Bypass check of ctrl bits */ 397*4882a593Smuzhiyun #define IGC_IMIREXT_SIZE_BP 0x00001000 /* Packet size bypass */ 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun /* Time Sync Transmit Control bit definitions */ 400*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_TXTT_0 0x00000001 /* Tx timestamp reg 0 valid */ 401*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_ENABLED 0x00000010 /* enable Tx timestamping */ 402*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_MAX_ALLOWED_DLY_MASK 0x0000F000 /* max delay */ 403*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_SYNC_COMP_ERR 0x20000000 /* sync err */ 404*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_SYNC_COMP 0x40000000 /* sync complete */ 405*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_START_SYNC 0x80000000 /* initiate sync */ 406*4882a593Smuzhiyun #define IGC_TSYNCTXCTL_TXSYNSIG 0x00000020 /* Sample TX tstamp in PHY sop */ 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun /* Transmit Scheduling */ 409*4882a593Smuzhiyun #define IGC_TQAVCTRL_TRANSMIT_MODE_TSN 0x00000001 410*4882a593Smuzhiyun #define IGC_TQAVCTRL_ENHANCED_QAV 0x00000008 411*4882a593Smuzhiyun 412*4882a593Smuzhiyun #define IGC_TXQCTL_QUEUE_MODE_LAUNCHT 0x00000001 413*4882a593Smuzhiyun #define IGC_TXQCTL_STRICT_CYCLE 0x00000002 414*4882a593Smuzhiyun #define IGC_TXQCTL_STRICT_END 0x00000004 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun /* Receive Checksum Control */ 417*4882a593Smuzhiyun #define IGC_RXCSUM_CRCOFL 0x00000800 /* CRC32 offload enable */ 418*4882a593Smuzhiyun #define IGC_RXCSUM_PCSD 0x00002000 /* packet checksum disabled */ 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun /* GPY211 - I225 defines */ 421*4882a593Smuzhiyun #define GPY_MMD_MASK 0xFFFF0000 422*4882a593Smuzhiyun #define GPY_MMD_SHIFT 16 423*4882a593Smuzhiyun #define GPY_REG_MASK 0x0000FFFF 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun #define IGC_MMDAC_FUNC_DATA 0x4000 /* Data, no post increment */ 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun /* MAC definitions */ 428*4882a593Smuzhiyun #define IGC_FACTPS_MNGCG 0x20000000 429*4882a593Smuzhiyun #define IGC_FWSM_MODE_MASK 0xE 430*4882a593Smuzhiyun #define IGC_FWSM_MODE_SHIFT 1 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun /* Management Control */ 433*4882a593Smuzhiyun #define IGC_MANC_SMBUS_EN 0x00000001 /* SMBus Enabled - RO */ 434*4882a593Smuzhiyun #define IGC_MANC_ASF_EN 0x00000002 /* ASF Enabled - RO */ 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun /* PHY */ 437*4882a593Smuzhiyun #define PHY_REVISION_MASK 0xFFFFFFF0 438*4882a593Smuzhiyun #define MAX_PHY_REG_ADDRESS 0x1F /* 5 bit address bus (0-0x1F) */ 439*4882a593Smuzhiyun #define IGC_GEN_POLL_TIMEOUT 1920 440*4882a593Smuzhiyun 441*4882a593Smuzhiyun /* PHY Control Register */ 442*4882a593Smuzhiyun #define MII_CR_FULL_DUPLEX 0x0100 /* FDX =1, half duplex =0 */ 443*4882a593Smuzhiyun #define MII_CR_RESTART_AUTO_NEG 0x0200 /* Restart auto negotiation */ 444*4882a593Smuzhiyun #define MII_CR_POWER_DOWN 0x0800 /* Power down */ 445*4882a593Smuzhiyun #define MII_CR_AUTO_NEG_EN 0x1000 /* Auto Neg Enable */ 446*4882a593Smuzhiyun #define MII_CR_LOOPBACK 0x4000 /* 0 = normal, 1 = loopback */ 447*4882a593Smuzhiyun #define MII_CR_RESET 0x8000 /* 0 = normal, 1 = PHY reset */ 448*4882a593Smuzhiyun #define MII_CR_SPEED_1000 0x0040 449*4882a593Smuzhiyun #define MII_CR_SPEED_100 0x2000 450*4882a593Smuzhiyun #define MII_CR_SPEED_10 0x0000 451*4882a593Smuzhiyun 452*4882a593Smuzhiyun /* PHY Status Register */ 453*4882a593Smuzhiyun #define MII_SR_LINK_STATUS 0x0004 /* Link Status 1 = link */ 454*4882a593Smuzhiyun #define MII_SR_AUTONEG_COMPLETE 0x0020 /* Auto Neg Complete */ 455*4882a593Smuzhiyun #define IGC_PHY_RST_COMP 0x0100 /* Internal PHY reset completion */ 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun /* PHY 1000 MII Register/Bit Definitions */ 458*4882a593Smuzhiyun /* PHY Registers defined by IEEE */ 459*4882a593Smuzhiyun #define PHY_CONTROL 0x00 /* Control Register */ 460*4882a593Smuzhiyun #define PHY_STATUS 0x01 /* Status Register */ 461*4882a593Smuzhiyun #define PHY_ID1 0x02 /* Phy Id Reg (word 1) */ 462*4882a593Smuzhiyun #define PHY_ID2 0x03 /* Phy Id Reg (word 2) */ 463*4882a593Smuzhiyun #define PHY_AUTONEG_ADV 0x04 /* Autoneg Advertisement */ 464*4882a593Smuzhiyun #define PHY_LP_ABILITY 0x05 /* Link Partner Ability (Base Page) */ 465*4882a593Smuzhiyun #define PHY_1000T_CTRL 0x09 /* 1000Base-T Control Reg */ 466*4882a593Smuzhiyun #define PHY_1000T_STATUS 0x0A /* 1000Base-T Status Reg */ 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun /* Bit definitions for valid PHY IDs. I = Integrated E = External */ 469*4882a593Smuzhiyun #define I225_I_PHY_ID 0x67C9DC00 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun /* MDI Control */ 472*4882a593Smuzhiyun #define IGC_MDIC_DATA_MASK 0x0000FFFF 473*4882a593Smuzhiyun #define IGC_MDIC_REG_MASK 0x001F0000 474*4882a593Smuzhiyun #define IGC_MDIC_REG_SHIFT 16 475*4882a593Smuzhiyun #define IGC_MDIC_PHY_MASK 0x03E00000 476*4882a593Smuzhiyun #define IGC_MDIC_PHY_SHIFT 21 477*4882a593Smuzhiyun #define IGC_MDIC_OP_WRITE 0x04000000 478*4882a593Smuzhiyun #define IGC_MDIC_OP_READ 0x08000000 479*4882a593Smuzhiyun #define IGC_MDIC_READY 0x10000000 480*4882a593Smuzhiyun #define IGC_MDIC_INT_EN 0x20000000 481*4882a593Smuzhiyun #define IGC_MDIC_ERROR 0x40000000 482*4882a593Smuzhiyun 483*4882a593Smuzhiyun #define IGC_N0_QUEUE -1 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun #define IGC_MAX_MAC_HDR_LEN 127 486*4882a593Smuzhiyun #define IGC_MAX_NETWORK_HDR_LEN 511 487*4882a593Smuzhiyun 488*4882a593Smuzhiyun #define IGC_VLANPQF_QSEL(_n, q_idx) ((q_idx) << ((_n) * 4)) 489*4882a593Smuzhiyun #define IGC_VLANPQF_VALID(_n) (0x1 << (3 + (_n) * 4)) 490*4882a593Smuzhiyun #define IGC_VLANPQF_QUEUE_MASK 0x03 491*4882a593Smuzhiyun 492*4882a593Smuzhiyun #define IGC_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */ 493*4882a593Smuzhiyun #define IGC_ADVTXD_TUCMD_IPV4 0x00000400 /* IP Packet Type:1=IPv4 */ 494*4882a593Smuzhiyun #define IGC_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet Type of TCP */ 495*4882a593Smuzhiyun #define IGC_ADVTXD_TUCMD_L4T_SCTP 0x00001000 /* L4 packet TYPE of SCTP */ 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun /* Maximum size of the MTA register table in all supported adapters */ 498*4882a593Smuzhiyun #define MAX_MTA_REG 128 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun /* EEE defines */ 501*4882a593Smuzhiyun #define IGC_IPCNFG_EEE_2_5G_AN 0x00000010 /* IPCNFG EEE Ena 2.5G AN */ 502*4882a593Smuzhiyun #define IGC_IPCNFG_EEE_1G_AN 0x00000008 /* IPCNFG EEE Ena 1G AN */ 503*4882a593Smuzhiyun #define IGC_IPCNFG_EEE_100M_AN 0x00000004 /* IPCNFG EEE Ena 100M AN */ 504*4882a593Smuzhiyun #define IGC_EEER_EEE_NEG 0x20000000 /* EEE capability nego */ 505*4882a593Smuzhiyun #define IGC_EEER_TX_LPI_EN 0x00010000 /* EEER Tx LPI Enable */ 506*4882a593Smuzhiyun #define IGC_EEER_RX_LPI_EN 0x00020000 /* EEER Rx LPI Enable */ 507*4882a593Smuzhiyun #define IGC_EEER_LPI_FC 0x00040000 /* EEER Ena on Flow Cntrl */ 508*4882a593Smuzhiyun #define IGC_EEE_SU_LPI_CLK_STP 0x00800000 /* EEE LPI Clock Stop */ 509*4882a593Smuzhiyun 510*4882a593Smuzhiyun /* LTR defines */ 511*4882a593Smuzhiyun #define IGC_LTRC_EEEMS_EN 0x00000020 /* Enable EEE LTR max send */ 512*4882a593Smuzhiyun #define IGC_RXPBS_SIZE_I225_MASK 0x0000003F /* Rx packet buffer size */ 513*4882a593Smuzhiyun #define IGC_TW_SYSTEM_1000_MASK 0x000000FF 514*4882a593Smuzhiyun /* Minimum time for 100BASE-T where no data will be transmit following move out 515*4882a593Smuzhiyun * of EEE LPI Tx state 516*4882a593Smuzhiyun */ 517*4882a593Smuzhiyun #define IGC_TW_SYSTEM_100_MASK 0x0000FF00 518*4882a593Smuzhiyun #define IGC_TW_SYSTEM_100_SHIFT 8 519*4882a593Smuzhiyun #define IGC_DMACR_DMAC_EN 0x80000000 /* Enable DMA Coalescing */ 520*4882a593Smuzhiyun #define IGC_DMACR_DMACTHR_MASK 0x00FF0000 521*4882a593Smuzhiyun #define IGC_DMACR_DMACTHR_SHIFT 16 522*4882a593Smuzhiyun /* Reg val to set scale to 1024 nsec */ 523*4882a593Smuzhiyun #define IGC_LTRMINV_SCALE_1024 2 524*4882a593Smuzhiyun /* Reg val to set scale to 32768 nsec */ 525*4882a593Smuzhiyun #define IGC_LTRMINV_SCALE_32768 3 526*4882a593Smuzhiyun /* Reg val to set scale to 1024 nsec */ 527*4882a593Smuzhiyun #define IGC_LTRMAXV_SCALE_1024 2 528*4882a593Smuzhiyun /* Reg val to set scale to 32768 nsec */ 529*4882a593Smuzhiyun #define IGC_LTRMAXV_SCALE_32768 3 530*4882a593Smuzhiyun #define IGC_LTRMINV_LTRV_MASK 0x000003FF /* LTR minimum value */ 531*4882a593Smuzhiyun #define IGC_LTRMAXV_LTRV_MASK 0x000003FF /* LTR maximum value */ 532*4882a593Smuzhiyun #define IGC_LTRMINV_LSNP_REQ 0x00008000 /* LTR Snoop Requirement */ 533*4882a593Smuzhiyun #define IGC_LTRMINV_SCALE_SHIFT 10 534*4882a593Smuzhiyun #define IGC_LTRMAXV_LSNP_REQ 0x00008000 /* LTR Snoop Requirement */ 535*4882a593Smuzhiyun #define IGC_LTRMAXV_SCALE_SHIFT 10 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun #endif /* _IGC_DEFINES_H_ */ 538