[PATCH v4 net-next 0/5] PHY polarity inversion via generic device tree properties
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2026-01-19 09:12:34
Also in:
linux-devicetree, linux-mediatek, lkml
Using the "rx-polarity" and "tx-polarity" device tree properties introduced in linux-phy and merged into net-next in https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=96a2d53f24787df907e8bab388cc3e8f180a2314 we convert here two existing networking use cases - the EN8811H Ethernet PHY and the Mediatek LynxI PCS. v3 at: https://lore.kernel.org/netdev/20260111093940.975359-1-vladimir.oltean@nxp.com/ (local) Changes since v3: It was requested that v3 be resent with just the networking parts, there is no change. v2 at: https://lore.kernel.org/netdev/20260103210403.438687-1-vladimir.oltean@nxp.com/ (local) Changes since v2: - fix bug with existing fwnode which is missing polarity properties. This is supposed to return the default value, not an error. (thanks to Bjørn Mork). - fix inconsistency between PHY_COMMON_PROPS and GENERIC_PHY_COMMON_PROPS Kconfig options by using PHY_COMMON_PROPS everywhere (thanks to Bjørn Mork). v1 at: https://lore.kernel.org/netdev/20251122193341.332324-1-vladimir.oltean@nxp.com/ (local) Changes since v1: - API changes: split error code from returned value; introduce two new helpers for simple driver cases - Add KUnit tests - Bug fixes in core code and in drivers - Defer XPCS patches for later (*) - Convert Mediatek LynxI PCS - Logical change: rx-polarity and tx-polarity refer to the currently described block, and not necessarily to device pins - Apply Rob's feedback - Drop the "joint maintainership" idea. (*) To simplify the generic XPCS driver, I've decided to make "tx-polarity" default to <PHY_POL_NORMAL>, rather than <PHY_POL_NORMAL> OR <PHY_POL_INVERT> for SJA1105. But in order to avoid breakage, it creates a hard dependency on this patch set being merged *first*: https://lore.kernel.org/netdev/20251118190530.580267-1-vladimir.oltean@nxp.com/ (local) so that the SJA1105 driver can provide an XPCS fwnode with the right polarity specified. All patches in context can be seen at: https://github.com/vladimiroltean/linux/tree/phy-polarity-inversion Original cover letter: Polarity inversion (described in patch 4/10) is a feature with at least 4 potential new users waiting for a generic description: - Horatiu Vultur with the lan966x SerDes - Daniel Golle with the MaxLinear GSW1xx switches - Bjørn Mork with the AN8811HB Ethernet PHY - Me with a custom SJA1105 board, switch which uses the DesignWare XPCS I became interested in exploring the problem space because I was averse to the idea of adding vendor-specific device tree properties to describe a common need. This set contains an implementation of a generic feature that should cater to all known needs that were identified during my documentation phase. Apart from what is converted here, we also have the following, which I did not touch: - "st,px_rx_pol_inv" - its binding is a .txt file and I don't have time for such a large detour to convert it to dtschema. - "st,pcie-tx-pol-inv" and "st,sata-tx-pol-inv" - these are defined in a .txt schema but are not implemented in any driver. My verdict would be "delete the properties" but again, I would prefer not introducing such dependency to this series. Vladimir Oltean (5): dt-bindings: net: airoha,en8811h: deprecate "airoha,pnswap-rx" and "airoha,pnswap-tx" net: phy: air_en8811h: deprecate "airoha,pnswap-rx" and "airoha,pnswap-tx" dt-bindings: net: pcs: mediatek,sgmiisys: deprecate "mediatek,pnswap" net: pcs: pcs-mtk-lynxi: pass SGMIISYS OF node to PCS net: pcs: pcs-mtk-lynxi: deprecate "mediatek,pnswap" .../bindings/net/airoha,en8811h.yaml | 11 +++- .../bindings/net/pcs/mediatek,sgmiisys.yaml | 7 ++- drivers/net/dsa/mt7530-mdio.c | 4 +- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 19 +++--- drivers/net/pcs/Kconfig | 1 + drivers/net/pcs/pcs-mtk-lynxi.c | 63 ++++++++++++++++--- drivers/net/phy/Kconfig | 1 + drivers/net/phy/air_en8811h.c | 53 +++++++++++----- include/linux/pcs/pcs-mtk-lynxi.h | 5 +- 9 files changed, 121 insertions(+), 43 deletions(-) -- 2.34.1