From: Alice Guo <[email protected]> Add SGMII mode configuration for i.MX95 platform in ENETC driver.
Signed-off-by: Alice Guo <[email protected]> --- drivers/net/fsl_enetc.c | 12 ++++++++++++ drivers/net/fsl_enetc.h | 1 + 2 files changed, 13 insertions(+) diff --git a/drivers/net/fsl_enetc.c b/drivers/net/fsl_enetc.c index f393af40e27..cce1c5ef2a7 100644 --- a/drivers/net/fsl_enetc.c +++ b/drivers/net/fsl_enetc.c @@ -389,6 +389,10 @@ static int enetc_init_sgmii(struct udevice *dev) if (priv->uclass_id == PHY_INTERFACE_MODE_2500BASEX) is2500 = true; +#if IS_ENABLED(CONFIG_ARCH_IMX9) + else if (priv->uclass_id == PHY_INTERFACE_MODE_SGMII && is_imx95()) + return imx95_xpcs_phy_sgmii_1g_config(dev); +#endif /* * Set to SGMII mode, for 1Gbps enable AN, for 2.5Gbps set fixed speed. @@ -482,6 +486,14 @@ static void enetc_setup_mac_iface(struct udevice *dev, if_mode &= ~ENETC_PM_IF_IFMODE_MASK_LS; enetc_write_mac_port(dev, ENETC_PM_IF_MODE, if_mode); break; + case PHY_INTERFACE_MODE_SGMII: + if_mode = enetc_read_mac_port(dev, ENETC_PM_IF_MODE); + if (enetc_is_imx95(dev)) { + if_mode &= ~(ENETC_PM_IF_IFMODE_MASK_IMX | ENETC_PM_IF_MODE_AN_ENA); + if_mode |= IFMODE_SGMII; + } + enetc_write_mac_port(dev, ENETC_PM_IF_MODE, if_mode); + break; }; } diff --git a/drivers/net/fsl_enetc.h b/drivers/net/fsl_enetc.h index 6d868e82f8c..bcab6f252a0 100644 --- a/drivers/net/fsl_enetc.h +++ b/drivers/net/fsl_enetc.h @@ -104,6 +104,7 @@ enum enetc_bdr_type {TX, RX}; #define ENETC_PM_IFM_FULL_DPX_IMX BIT(6) #define ENETC_PM_IFM_FULL_DPX_LS BIT(12) #define ENETC_PM_IF_IFMODE_MASK_IMX GENMASK(2, 0) +#define IFMODE_SGMII 5 #define ENETC_PM_IF_IFMODE_MASK_LS GENMASK(1, 0) /* i.MX95 specific registers */ -- 2.34.1

