From: Alice Guo <[email protected]> Add SGMII interface mode configuration for i.MX95 platform in ENETC driver.
Signed-off-by: Alice Guo <[email protected]> --- drivers/net/fsl_enetc.c | 10 ++++++++++ drivers/net/fsl_enetc.h | 1 + 2 files changed, 11 insertions(+) diff --git a/drivers/net/fsl_enetc.c b/drivers/net/fsl_enetc.c index 206f1a381bb..8406f70345c 100644 --- a/drivers/net/fsl_enetc.c +++ b/drivers/net/fsl_enetc.c @@ -362,6 +362,8 @@ static int enetc_init_sgmii(struct udevice *dev) if (priv->uclass_id == PHY_INTERFACE_MODE_2500BASEX) is2500 = true; + else if (priv->uclass_id == PHY_INTERFACE_MODE_SGMII) + return imx95_xpcs_phy_sgmii_1g_config(dev); /* * Set to SGMII mode, for 1Gbps enable AN, for 2.5Gbps set fixed speed. @@ -456,6 +458,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..3c35060ecb0 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

