Message ID | 20220919083713.730512-4-lynxis@fe80.eu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | net: mediatek: sgmii stability | expand |
On Mon, Sep 19, 2022 at 10:37:10AM +0200, Alexander Couzens wrote: > Ensure autonegotiation is enabled. > > Signed-off-by: Alexander Couzens <lynxis@fe80.eu> > --- > drivers/net/ethernet/mediatek/mtk_sgmii.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/mediatek/mtk_sgmii.c b/drivers/net/ethernet/mediatek/mtk_sgmii.c > index 18de85709e87..6f4c1ca5a36f 100644 > --- a/drivers/net/ethernet/mediatek/mtk_sgmii.c > +++ b/drivers/net/ethernet/mediatek/mtk_sgmii.c > @@ -32,12 +32,13 @@ static int mtk_pcs_setup_mode_an(struct mtk_pcs *mpcs) > regmap_write(mpcs->regmap, SGMSYS_PCS_LINK_TIMER, > SGMII_LINK_TIMER_DEFAULT); > > + /* disable remote fault & enable auto neg */ > regmap_read(mpcs->regmap, SGMSYS_SGMII_MODE, &val); > - val |= SGMII_REMOTE_FAULT_DIS; > + val |= SGMII_REMOTE_FAULT_DIS | SGMII_SPEED_DUPLEX_AN; > regmap_write(mpcs->regmap, SGMSYS_SGMII_MODE, val); > > regmap_read(mpcs->regmap, SGMSYS_PCS_CONTROL_1, &val); > - val |= SGMII_AN_RESTART; > + val |= SGMII_AN_RESTART | SGMII_AN_ENABLE; I'm not sure if I've asked this before, but why does SGMII_AN_RESTART need to be set here? It could do with a comment in the code. Thanks.
On Mon, 19 Sep 2022 12:29:34 +0100 "Russell King (Oracle)" <linux@armlinux.org.uk> wrote: > I'm not sure if I've asked this before, but why does SGMII_AN_RESTART > need to be set here? It could do with a comment in the code. It's not my bit :). I've not added it. But why not (re)start autoneg when powering up the phy? Should it done elsewhere?
diff --git a/drivers/net/ethernet/mediatek/mtk_sgmii.c b/drivers/net/ethernet/mediatek/mtk_sgmii.c index 18de85709e87..6f4c1ca5a36f 100644 --- a/drivers/net/ethernet/mediatek/mtk_sgmii.c +++ b/drivers/net/ethernet/mediatek/mtk_sgmii.c @@ -32,12 +32,13 @@ static int mtk_pcs_setup_mode_an(struct mtk_pcs *mpcs) regmap_write(mpcs->regmap, SGMSYS_PCS_LINK_TIMER, SGMII_LINK_TIMER_DEFAULT); + /* disable remote fault & enable auto neg */ regmap_read(mpcs->regmap, SGMSYS_SGMII_MODE, &val); - val |= SGMII_REMOTE_FAULT_DIS; + val |= SGMII_REMOTE_FAULT_DIS | SGMII_SPEED_DUPLEX_AN; regmap_write(mpcs->regmap, SGMSYS_SGMII_MODE, val); regmap_read(mpcs->regmap, SGMSYS_PCS_CONTROL_1, &val); - val |= SGMII_AN_RESTART; + val |= SGMII_AN_RESTART | SGMII_AN_ENABLE; regmap_write(mpcs->regmap, SGMSYS_PCS_CONTROL_1, val); /* Release PHYA power down state
Ensure autonegotiation is enabled. Signed-off-by: Alexander Couzens <lynxis@fe80.eu> --- drivers/net/ethernet/mediatek/mtk_sgmii.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)