e1000: add support for i225-IT

This patch adds support for i225-IT in e1000 driver.
Add e1000_phy_igc.

Signed-off-by: Marjolaine Amate <marjolaine.amate@odyssee-systemes.fr>
This commit is contained in:
Marjolaine Amate 2024-03-04 16:23:38 +01:00 committed by Tom Rini
parent cc09160f30
commit 85d44e424a
3 changed files with 18 additions and 1 deletions

View file

@ -116,6 +116,8 @@ static struct pci_device_id e1000_supported[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_SERDES) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_SERDES) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_1000BASEKX) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I210_1000BASEKX) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I225_UNPROGRAMMED) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_I225_IT) },
{} {}
}; };
@ -1575,6 +1577,8 @@ e1000_set_mac_type(struct e1000_hw *hw)
case PCI_DEVICE_ID_INTEL_I210_SERDES: case PCI_DEVICE_ID_INTEL_I210_SERDES:
case PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS: case PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS:
case PCI_DEVICE_ID_INTEL_I210_1000BASEKX: case PCI_DEVICE_ID_INTEL_I210_1000BASEKX:
case PCI_DEVICE_ID_INTEL_I225_UNPROGRAMMED:
case PCI_DEVICE_ID_INTEL_I225_IT:
hw->mac_type = e1000_igb; hw->mac_type = e1000_igb;
break; break;
default: default:
@ -3258,7 +3262,8 @@ e1000_setup_copper_link(struct e1000_hw *hw)
if (ret_val) if (ret_val)
return ret_val; return ret_val;
} else if (hw->phy_type == e1000_phy_m88 || } else if (hw->phy_type == e1000_phy_m88 ||
hw->phy_type == e1000_phy_igb) { hw->phy_type == e1000_phy_igb ||
hw->phy_type == e1000_phy_igc) {
ret_val = e1000_copper_link_mgp_setup(hw); ret_val = e1000_copper_link_mgp_setup(hw);
if (ret_val) if (ret_val)
return ret_val; return ret_val;
@ -4531,6 +4536,8 @@ e1000_get_phy_cfg_done(struct e1000_hw *hw)
case e1000_igb: case e1000_igb:
while (timeout) { while (timeout) {
if (hw->mac_type == e1000_igb) { if (hw->mac_type == e1000_igb) {
if (hw->phy_type == e1000_phy_igc)
break;
if (E1000_READ_REG(hw, I210_EEMNGCTL) & cfg_mask) if (E1000_READ_REG(hw, I210_EEMNGCTL) & cfg_mask)
break; break;
} else { } else {
@ -4769,6 +4776,7 @@ e1000_phy_reset(struct e1000_hw *hw)
case e1000_phy_igp_3: case e1000_phy_igp_3:
case e1000_phy_ife: case e1000_phy_ife:
case e1000_phy_igb: case e1000_phy_igb:
case e1000_phy_igc:
ret_val = e1000_phy_hw_reset(hw); ret_val = e1000_phy_hw_reset(hw);
if (ret_val) if (ret_val)
return ret_val; return ret_val;
@ -4834,6 +4842,9 @@ static int e1000_set_phy_type (struct e1000_hw *hw)
case I210_I_PHY_ID: case I210_I_PHY_ID:
hw->phy_type = e1000_phy_igb; hw->phy_type = e1000_phy_igb;
break; break;
case I225_I_PHY_ID:
hw->phy_type = e1000_phy_igc;
break;
/* Fall Through */ /* Fall Through */
default: default:
/* Should never have loaded on this device */ /* Should never have loaded on this device */
@ -4941,6 +4952,8 @@ e1000_detect_gig_phy(struct e1000_hw *hw)
case e1000_igb: case e1000_igb:
if (hw->phy_id == I210_I_PHY_ID) if (hw->phy_id == I210_I_PHY_ID)
match = true; match = true;
if (hw->phy_id == I225_I_PHY_ID)
match = true;
break; break;
default: default:
DEBUGOUT("Invalid MAC type %d\n", hw->mac_type); DEBUGOUT("Invalid MAC type %d\n", hw->mac_type);

View file

@ -212,6 +212,7 @@ typedef enum {
e1000_phy_igp_3, e1000_phy_igp_3,
e1000_phy_ife, e1000_phy_ife,
e1000_phy_igb, e1000_phy_igb,
e1000_phy_igc,
e1000_phy_bm, e1000_phy_bm,
e1000_phy_undefined = 0xFF e1000_phy_undefined = 0xFF
} e1000_phy_type; } e1000_phy_type;
@ -2420,6 +2421,7 @@ struct e1000_hw {
#define BME1000_E_PHY_ID 0x01410CB0 #define BME1000_E_PHY_ID 0x01410CB0
#define I210_I_PHY_ID 0x01410C00 #define I210_I_PHY_ID 0x01410C00
#define I225_I_PHY_ID 0x67C9DCC0
/* Miscellaneous PHY bit definitions. */ /* Miscellaneous PHY bit definitions. */
#define PHY_PREAMBLE 0xFFFFFFFF #define PHY_PREAMBLE 0xFFFFFFFF

View file

@ -2710,6 +2710,8 @@
#define PCI_DEVICE_ID_INTEL_I211_COPPER 0x1539 #define PCI_DEVICE_ID_INTEL_I211_COPPER 0x1539
#define PCI_DEVICE_ID_INTEL_I210_COPPER_FLASHLESS 0x157b #define PCI_DEVICE_ID_INTEL_I210_COPPER_FLASHLESS 0x157b
#define PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS 0x157c #define PCI_DEVICE_ID_INTEL_I210_SERDES_FLASHLESS 0x157c
#define PCI_DEVICE_ID_INTEL_I225_UNPROGRAMMED 0x15dF
#define PCI_DEVICE_ID_INTEL_I225_IT 0x0d9f
#define PCI_DEVICE_ID_INTEL_80960_RP 0x1960 #define PCI_DEVICE_ID_INTEL_80960_RP 0x1960
#define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21 #define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21
#define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30 #define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30