From: Daniel Golle <daniel@makrotopia.org>
To: Vladimir Oltean <olteanv@gmail.com>
Cc: Hauke Mehrtens <hauke@hauke-m.de>, Andrew Lunn <andrew@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
Rasmus Villemoes <ravi@prevas.dk>,
"Benny (Ying-Tsan) Weng" <yweng@maxlinear.com>
Subject: Re: [PATCH net-next] net: dsa: mxl-gsw1xx: fix SerDes RX polarity
Date: Wed, 3 Dec 2025 23:35:18 +0000 [thread overview]
Message-ID: <aTDJNvLR9evdCaDl@makrotopia.org> (raw)
In-Reply-To: <20251203094959.y7pkzo2wdhkajceg@skbuf>
On Wed, Dec 03, 2025 at 11:49:59AM +0200, Vladimir Oltean wrote:
> On Tue, Dec 02, 2025 at 09:57:21AM +0000, Daniel Golle wrote:
> > According to MaxLinear engineer Benny Weng the RX lane of the SerDes
> > port of the GSW1xx switches is inverted in hardware, and the
> > SGMII_PHY_RX0_CFG2_INVERT bit is set by default in order to compensate
> > for that. Hence also set the SGMII_PHY_RX0_CFG2_INVERT bit by default in
> > gsw1xx_pcs_reset().
> >
> > Fixes: 22335939ec90 ("net: dsa: add driver for MaxLinear GSW1xx switch family")
> > Reported-by: Rasmus Villemoes <ravi@prevas.dk>
> > Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> > ---
>
> This shouldn't impact the generic device tree property work, since as
> stated there, there won't be any generically imposed default polarity if
> the device tree property is missing.
>
> We can perhaps use this thread to continue a philosophical debate on how
> should the device tree deal with this situation of internally inverted
> polarities (what does PHY_POL_NORMAL mean: the observable behaviour at
> the external pins, or the hardware IP configuration?). I have more or
> less the same debate going on with the XPCS polarity as set by
> nxp_sja1105_sgmii_pma_config().
In this case it is really just a bug in the datasheet, because the
switch does set the GSW1XX_SGMII_PHY_RX0_CFG2_INVERT bit by default
after reset, which results in RX polarity to be as expected (ie.
negative and positive pins as labeled).
However, the driver was overwriting the register content which resulted
in the polarity being inverted (despite the fact that the
GSW1XX_SGMII_PHY_RX0_CFG2_INVERT wasn't set, because it is actually
inverted internally, which just isn't well documented).
>
> But the patch itself seems fine regardless of these side discussions.
As net-next-6.19 has been tagged by now, should I resend the patch
via 'net' tree after the tag was merged?
>
> Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
>
> > Sent to net-next as the commit to be fixed is only in net-next.
> >
> > drivers/net/dsa/lantiq/mxl-gsw1xx.c | 8 +++++++-
> > 1 file changed, 7 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/dsa/lantiq/mxl-gsw1xx.c b/drivers/net/dsa/lantiq/mxl-gsw1xx.c
> > index 0816c61a47f12..cf33a16fd183b 100644
> > --- a/drivers/net/dsa/lantiq/mxl-gsw1xx.c
> > +++ b/drivers/net/dsa/lantiq/mxl-gsw1xx.c
> > @@ -255,10 +255,16 @@ static int gsw1xx_pcs_reset(struct gsw1xx_priv *priv)
> > FIELD_PREP(GSW1XX_SGMII_PHY_RX0_CFG2_FILT_CNT,
> > GSW1XX_SGMII_PHY_RX0_CFG2_FILT_CNT_DEF);
> >
> > - /* TODO: Take care of inverted RX pair once generic property is
> > + /* RX lane seems to be inverted internally, so bit
> > + * GSW1XX_SGMII_PHY_RX0_CFG2_INVERT needs to be set for normal
> > + * (ie. non-inverted) operation.
> > + *
> > + * TODO: Take care of inverted RX pair once generic property is
> > * available
> > */
> >
> > + val |= GSW1XX_SGMII_PHY_RX0_CFG2_INVERT;
> > +
> > ret = regmap_write(priv->sgmii, GSW1XX_SGMII_PHY_RX0_CFG2, val);
> > if (ret < 0)
> > return ret;
> > --
> > 2.52.0
>
next prev parent reply other threads:[~2025-12-03 23:35 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-02 9:57 [PATCH net-next] net: dsa: mxl-gsw1xx: fix SerDes RX polarity Daniel Golle
2025-12-03 9:49 ` Vladimir Oltean
2025-12-03 23:35 ` Daniel Golle [this message]
2025-12-04 9:03 ` Rasmus Villemoes
2025-12-04 12:29 ` Paolo Abeni
2025-12-04 12:40 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aTDJNvLR9evdCaDl@makrotopia.org \
--to=daniel@makrotopia.org \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=hauke@hauke-m.de \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=pabeni@redhat.com \
--cc=ravi@prevas.dk \
--cc=yweng@maxlinear.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).