| From f4192afd7712a8d6be1e80af7478a12caaaa8917 Mon Sep 17 00:00:00 2001 |
| From: Matthew Smith <mgsmith@netgate.com> |
| Date: Fri, 25 Feb 2022 16:15:40 -0600 |
| Subject: [PATCH] net/igc: Add device ID for i226v |
| |
| Add the device ID 0x125C in order to enable the i226v. |
| Add phy ID for the i226 and allow that ID anywhere the phy ID for the |
| i225 was allowed. |
| --- |
| drivers/net/igc/base/igc_api.c | 1 + |
| drivers/net/igc/base/igc_defines.h | 1 + |
| drivers/net/igc/base/igc_hw.h | 1 + |
| drivers/net/igc/base/igc_i225.c | 1 + |
| drivers/net/igc/base/igc_phy.c | 11 ++++++----- |
| drivers/net/igc/igc_ethdev.c | 1 + |
| 6 files changed, 11 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/net/igc/base/igc_api.c b/drivers/net/igc/base/igc_api.c |
| index 2f8c0753cb..da51ef2d59 100644 |
| --- a/drivers/net/igc/base/igc_api.c |
| +++ b/drivers/net/igc/base/igc_api.c |
| @@ -888,6 +888,7 @@ s32 igc_set_mac_type(struct igc_hw *hw) |
| case IGC_DEV_ID_I225_I: |
| case IGC_DEV_ID_I220_V: |
| case IGC_DEV_ID_I225_BLANK_NVM: |
| + case IGC_DEV_ID_I226_V: |
| mac->type = igc_i225; |
| break; |
| case IGC_DEV_ID_I350_VF: |
| diff --git a/drivers/net/igc/base/igc_defines.h b/drivers/net/igc/base/igc_defines.h |
| index 30a41300f5..767587a171 100644 |
| --- a/drivers/net/igc/base/igc_defines.h |
| +++ b/drivers/net/igc/base/igc_defines.h |
| @@ -1351,6 +1351,7 @@ |
| #define IGP04IGC_E_PHY_ID 0x02A80391 |
| #define M88_VENDOR 0x0141 |
| #define I225_I_PHY_ID 0x67C9DC00 |
| +#define I226_I_PHY_ID 0x67C9DC10 |
| |
| /* M88E1000 Specific Registers */ |
| #define M88IGC_PHY_SPEC_CTRL 0x10 /* PHY Specific Control Reg */ |
| diff --git a/drivers/net/igc/base/igc_hw.h b/drivers/net/igc/base/igc_hw.h |
| index be38fafa5f..686fb721af 100644 |
| --- a/drivers/net/igc/base/igc_hw.h |
| +++ b/drivers/net/igc/base/igc_hw.h |
| @@ -164,6 +164,7 @@ struct igc_hw; |
| #define IGC_DEV_ID_I225_V 0x15F3 |
| #define IGC_DEV_ID_I225_K 0x3100 |
| #define IGC_DEV_ID_I225_I 0x15F8 |
| +#define IGC_DEV_ID_I226_V 0x125C |
| #define IGC_DEV_ID_I220_V 0x15F7 |
| #define IGC_DEV_ID_I225_BLANK_NVM 0x15FD |
| #define IGC_DEV_ID_I354_BACKPLANE_1GBPS 0x1F40 |
| diff --git a/drivers/net/igc/base/igc_i225.c b/drivers/net/igc/base/igc_i225.c |
| index 060b2f8f93..8c078029f7 100644 |
| --- a/drivers/net/igc/base/igc_i225.c |
| +++ b/drivers/net/igc/base/igc_i225.c |
| @@ -176,6 +176,7 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) |
| /* Verify phy id and set remaining function pointers */ |
| switch (phy->id) { |
| case I225_I_PHY_ID: |
| + case I226_I_PHY_ID: |
| phy->type = igc_phy_i225; |
| phy->ops.set_d0_lplu_state = igc_set_d0_lplu_state_i225; |
| phy->ops.set_d3_lplu_state = igc_set_d3_lplu_state_i225; |
| diff --git a/drivers/net/igc/base/igc_phy.c b/drivers/net/igc/base/igc_phy.c |
| index 43bbe69bca..d46a6b3555 100644 |
| --- a/drivers/net/igc/base/igc_phy.c |
| +++ b/drivers/net/igc/base/igc_phy.c |
| @@ -1474,8 +1474,7 @@ s32 igc_phy_setup_autoneg(struct igc_hw *hw) |
| return ret_val; |
| } |
| |
| - if ((phy->autoneg_mask & ADVERTISE_2500_FULL) && |
| - hw->phy.id == I225_I_PHY_ID) { |
| + if (phy->autoneg_mask & ADVERTISE_2500_FULL) { |
| /* Read the MULTI GBT AN Control Register - reg 7.32 */ |
| ret_val = phy->ops.read_reg(hw, (STANDARD_AN_REG_MASK << |
| MMD_DEVADDR_SHIFT) | |
| @@ -1615,8 +1614,7 @@ s32 igc_phy_setup_autoneg(struct igc_hw *hw) |
| ret_val = phy->ops.write_reg(hw, PHY_1000T_CTRL, |
| mii_1000t_ctrl_reg); |
| |
| - if ((phy->autoneg_mask & ADVERTISE_2500_FULL) && |
| - hw->phy.id == I225_I_PHY_ID) |
| + if (phy->autoneg_mask & ADVERTISE_2500_FULL) |
| ret_val = phy->ops.write_reg(hw, |
| (STANDARD_AN_REG_MASK << |
| MMD_DEVADDR_SHIFT) | |
| @@ -1882,6 +1880,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) |
| /* fall-through */ |
| case I225_I_PHY_ID: |
| /* fall-through */ |
| + case I226_I_PHY_ID: |
| reset_dsp = false; |
| break; |
| default: |
| @@ -1923,7 +1922,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) |
| return IGC_SUCCESS; |
| if (hw->phy.id == I210_I_PHY_ID) |
| return IGC_SUCCESS; |
| - if (hw->phy.id == I225_I_PHY_ID) |
| + if (hw->phy.type == igc_phy_i225) |
| return IGC_SUCCESS; |
| if (hw->phy.id == M88E1543_E_PHY_ID || hw->phy.id == M88E1512_E_PHY_ID) |
| return IGC_SUCCESS; |
| @@ -2480,6 +2479,7 @@ s32 igc_get_cable_length_m88_gen2(struct igc_hw *hw) |
| phy->cable_length = phy_data / (is_cm ? 100 : 1); |
| break; |
| case I225_I_PHY_ID: |
| + case I226_I_PHY_ID: |
| if (ret_val) |
| return ret_val; |
| /* TODO - complete with Foxville data */ |
| @@ -3064,6 +3064,7 @@ enum igc_phy_type igc_get_phy_type_from_id(u32 phy_id) |
| phy_type = igc_phy_i210; |
| break; |
| case I225_I_PHY_ID: |
| + case I226_I_PHY_ID: |
| phy_type = igc_phy_i225; |
| break; |
| default: |
| diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c |
| index a1f1a9772b..0dd3a212d7 100644 |
| --- a/drivers/net/igc/igc_ethdev.c |
| +++ b/drivers/net/igc/igc_ethdev.c |
| @@ -97,6 +97,7 @@ static const struct rte_pci_id pci_id_igc_map[] = { |
| { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I225_V) }, |
| { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I225_I) }, |
| { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I225_K) }, |
| + { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I226_V) }, |
| { .vendor_id = 0, /* sentinel */ }, |
| }; |
| |
| -- |
| 2.30.1 (Apple Git-130) |
| |