ixgbe: Add KR backplane support for x550em_a
authorMark Rustad <mark.d.rustad@intel.com>
Fri, 1 Apr 2016 19:18:46 +0000 (12:18 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 8 Apr 2016 00:14:06 +0000 (17:14 -0700)
Add support for x550em_a-based KR backplane devices.

Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c

index c96af3fdd5542bf435ed6d3925786f8860d5af0e..1a7bfcfc030e79dde38375ec4ee4d644e7b4bb44 100644 (file)
@@ -131,6 +131,8 @@ static const struct pci_device_id ixgbe_pci_tbl[] = {
        {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_KR), board_X550EM_x},
        {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_10G_T), board_X550EM_x},
        {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_X_SFP), board_X550EM_x},
+       {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_KR), board_x550em_a },
+       {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_KR_L), board_x550em_a },
        {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_SFP_N), board_x550em_a },
        {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_SGMII), board_x550em_a },
        {PCI_VDEVICE(INTEL, IXGBE_DEV_ID_X550EM_A_SGMII_L), board_x550em_a },
index 50e8bc0ef4e7d118ceda28a59aedc06d083710c1..ba3b837c7e9d3b06a69583c314441fe8fa2f57bc 100644 (file)
@@ -81,6 +81,8 @@
 #define IXGBE_DEV_ID_X550EM_X_SFP      0x15AC
 #define IXGBE_DEV_ID_X550EM_X_10G_T    0x15AD
 #define IXGBE_DEV_ID_X550EM_X_1G_T     0x15AE
+#define IXGBE_DEV_ID_X550EM_A_KR       0x15C2
+#define IXGBE_DEV_ID_X550EM_A_KR_L     0x15C3
 #define IXGBE_DEV_ID_X550EM_A_SFP_N    0x15C4
 #define IXGBE_DEV_ID_X550EM_A_SGMII    0x15C6
 #define IXGBE_DEV_ID_X550EM_A_SGMII_L  0x15C7
index 81e5d54476c75dbff09ac835bfe807cdf32d4619..c71e93ed44512d84d41639185759df19cf028050 100644 (file)
@@ -291,6 +291,8 @@ static s32 ixgbe_identify_phy_x550em(struct ixgbe_hw *hw)
                hw->phy.type = ixgbe_phy_x550em_kx4;
                break;
        case IXGBE_DEV_ID_X550EM_X_KR:
+       case IXGBE_DEV_ID_X550EM_A_KR:
+       case IXGBE_DEV_ID_X550EM_A_KR_L:
                hw->phy.type = ixgbe_phy_x550em_kr;
                break;
        case IXGBE_DEV_ID_X550EM_X_1G_T:
@@ -1984,13 +1986,17 @@ static s32 ixgbe_setup_kx4_x550em(struct ixgbe_hw *hw)
        return status;
 }
 
-/**  ixgbe_setup_kr_x550em - Configure the KR PHY.
- *   @hw: pointer to hardware structure
+/**
+ * ixgbe_setup_kr_x550em - Configure the KR PHY
+ * @hw: pointer to hardware structure
  *
- *   Configures the integrated KR PHY.
+ * Configures the integrated KR PHY for X550EM_x.
  **/
 static s32 ixgbe_setup_kr_x550em(struct ixgbe_hw *hw)
 {
+       if (hw->mac.type != ixgbe_mac_X550EM_x)
+               return 0;
+
        return ixgbe_setup_kr_speed_x550em(hw, hw->phy.autoneg_advertised);
 }
 
@@ -2196,7 +2202,9 @@ static s32 ixgbe_setup_fc_x550em(struct ixgbe_hw *hw)
                return IXGBE_ERR_CONFIG;
        }
 
-       if (hw->device_id != IXGBE_DEV_ID_X550EM_X_KR)
+       if (hw->device_id != IXGBE_DEV_ID_X550EM_X_KR &&
+           hw->device_id != IXGBE_DEV_ID_X550EM_A_KR &&
+           hw->device_id != IXGBE_DEV_ID_X550EM_A_KR_L)
                return 0;
 
        rc = hw->mac.ops.read_iosf_sb_reg(hw,
@@ -2437,6 +2445,8 @@ static enum ixgbe_media_type ixgbe_get_media_type_X550em(struct ixgbe_hw *hw)
                /* Fallthrough */
        case IXGBE_DEV_ID_X550EM_X_KR:
        case IXGBE_DEV_ID_X550EM_X_KX4:
+       case IXGBE_DEV_ID_X550EM_A_KR:
+       case IXGBE_DEV_ID_X550EM_A_KR_L:
                media_type = ixgbe_media_type_backplane;
                break;
        case IXGBE_DEV_ID_X550EM_X_SFP: