[PATCH v3 net-next 00/10] PHY polarity inversion via generic device tree properties
Vladimir Oltean
vladimir.oltean at nxp.com
Sun Jan 11 01:39:29 PST 2026
Introduce "rx-polarity" and "tx-polarity" device tree properties.
Convert two existing networking use cases - the EN8811H Ethernet PHY and
the Mediatek LynxI PCS.
Requested merge strategy:
Patches 1-5 through linux-phy
linux-phy provides stable branch or tag to netdev
patches 6-10 through netdev
v2 at:
https://lore.kernel.org/netdev/20260103210403.438687-1-vladimir.oltean@nxp.com/
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/
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/
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 (10):
dt-bindings: phy: rename transmit-amplitude.yaml to
phy-common-props.yaml
dt-bindings: phy-common-props: create a reusable "protocol-names"
definition
dt-bindings: phy-common-props: ensure protocol-names are unique
dt-bindings: phy-common-props: RX and TX lane polarity inversion
phy: add phy_get_rx_polarity() and phy_get_tx_polarity()
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 +-
.../bindings/phy/phy-common-props.yaml | 157 +++++++
.../bindings/phy/transmit-amplitude.yaml | 103 -----
MAINTAINERS | 10 +
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 ++-
drivers/phy/Kconfig | 22 +
drivers/phy/Makefile | 2 +
drivers/phy/phy-common-props-test.c | 422 ++++++++++++++++++
drivers/phy/phy-common-props.c | 209 +++++++++
include/dt-bindings/phy/phy.h | 4 +
include/linux/pcs/pcs-mtk-lynxi.h | 5 +-
include/linux/phy/phy-common-props.h | 32 ++
18 files changed, 979 insertions(+), 146 deletions(-)
create mode 100644 Documentation/devicetree/bindings/phy/phy-common-props.yaml
delete mode 100644 Documentation/devicetree/bindings/phy/transmit-amplitude.yaml
create mode 100644 drivers/phy/phy-common-props-test.c
create mode 100644 drivers/phy/phy-common-props.c
create mode 100644 include/linux/phy/phy-common-props.h
--
2.43.0
More information about the linux-phy
mailing list