Commit d79c304c authored by Karol Kolacinski's avatar Karol Kolacinski Committed by Tony Nguyen
Browse files

ice: Fix E825 initialization



Current implementation checks revision of all PHYs on all PFs, which is
incorrect and may result in initialization failure. Check only the
revision of the current PHY.

Fixes: 7cab44f1 ("ice: Introduce ETH56G PHY model for E825C products")
Reviewed-by: default avatarArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
Signed-off-by: default avatarKarol Kolacinski <karol.kolacinski@intel.com>
Signed-off-by: default avatarGrzegorz Nitka <grzegorz.nitka@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent 76201b59
Loading
Loading
Loading
Loading
+9 −13
Original line number Diff line number Diff line
@@ -2687,14 +2687,15 @@ static bool ice_is_muxed_topo(struct ice_hw *hw)
}

/**
 * ice_ptp_init_phy_e825c - initialize PHY parameters
 * ice_ptp_init_phy_e825 - initialize PHY parameters
 * @hw: pointer to the HW struct
 */
static void ice_ptp_init_phy_e825c(struct ice_hw *hw)
static void ice_ptp_init_phy_e825(struct ice_hw *hw)
{
	struct ice_ptp_hw *ptp = &hw->ptp;
	struct ice_eth56g_params *params;
	u8 phy;
	u32 phy_rev;
	int err;

	ptp->phy_model = ICE_PHY_ETH56G;
	params = &ptp->phy.eth56g;
@@ -2708,16 +2709,11 @@ static void ice_ptp_init_phy_e825c(struct ice_hw *hw)
	ptp->num_lports = params->num_phys * ptp->ports_per_phy;

	ice_sb_access_ena_eth56g(hw, true);
	for (phy = 0; phy < params->num_phys; phy++) {
		u32 phy_rev;
		int err;

		err = ice_read_phy_eth56g(hw, phy, PHY_REG_REVISION, &phy_rev);
	err = ice_read_phy_eth56g(hw, hw->pf_id, PHY_REG_REVISION, &phy_rev);
	if (err || phy_rev != PHY_REVISION_ETH56G) {
		ptp->phy_model = ICE_PHY_UNSUP;
		return;
	}
	}

	ptp->is_2x50g_muxed_topo = ice_is_muxed_topo(hw);
}
@@ -5478,7 +5474,7 @@ void ice_ptp_init_hw(struct ice_hw *hw)
	else if (ice_is_e810(hw))
		ice_ptp_init_phy_e810(ptp);
	else if (ice_is_e825c(hw))
		ice_ptp_init_phy_e825c(hw);
		ice_ptp_init_phy_e825(hw);
	else
		ptp->phy_model = ICE_PHY_UNSUP;
}