Re: [PATCH net-next] net: dsa: mt7530: fix support for MT7531BE

From: Arınç ÜNAL
Date: Tue Apr 11 2023 - 15:51:05 EST


On 11.04.2023 22:43, Daniel Golle wrote:
On Tue, Apr 11, 2023 at 10:30:06PM +0300, Arınç ÜNAL wrote:
On 11.04.2023 03:11, Daniel Golle wrote:
There are two variants of the MT7531 switch IC which got different
features (and pins) regarding port 5:
* MT7531AE: SGMII/1000Base-X/2500Base-X SerDes
* MT7531BE: RGMII

Moving the creation of the SerDes PCS from mt753x_setup to mt7530_probe
with commit 6de285229773 ("net: dsa: mt7530: move SGMII PCS creation to
mt7530_probe function") works fine for MT7531AE which got two instances
of mtk-pcs-lynxi, however, MT7531BE requires mt7531_pll_setup to setup
clocks before the single PCS on port 6 (usually used as CPU port)
starts to work and hence the PCS creation failed on MT7531BE.

Fix this by introducing a pointer to mt7531_create_sgmii function in
struct mt7530_priv and call it again at the end of mt753x_setup like it
was before commit 6de285229773 ("net: dsa: mt7530: move SGMII PCS
creation to mt7530_probe function").

If I understand correctly, this patch does two things.

Run mt7531_create_sgmii() from mt753x_setup(), after mt7531_setup() and
mt7531_setup_common() is run so that PCS on MT7531BE works.


Run the PCS creation code inside the loop only once if
mt7531_dual_sgmii_supported() is false so it doesn't set the nonexistent
port 5 SGMII on MT7531BE.

Yes, both is correct.


Regarding the first part:
I was actually in the middle of moving the code until after
mt7530_pll_setup() and mt7531_pll_setup() on mt7530_setup() and
mt7531_setup() to mt7530_probe(). To me it makes more sense to run them on
mt7530_probe() as there's a good amount of duplicate code on mt7530_setup()
and mt7531_setup().

I thought about doing that as well, however, note that you will have to
move all the reset and regulator setup procedure to mt7530_probe() as
well then, as PLL setup currently happens after that, and that's
probably for a reason.

As the reset and regulator setup works differently on MT7530 and
MT7531, and depending on whether it's a standalone IC package or MCM, I
believe changes unifying this will have to be tested on a lot of
boards...

Not if we don't change the behaviour at all for both switches, which is what I intend to do.



This will resolve the problem here, and make my future work regarding the
PHY muxing feature on the MT7530 switch possible to do.

Regarding the second part:
I'll take your changes to my current RFC patch series while addressing
Jesse's suggestion if this is fine by you.

Yes, I'd appreciate that and I'm ready to test and review once you post
your updated series.

Sounds good, cheers.

Arınç