From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Vladimir Oltean <vladimir.oltean@nxp.com>,
netdev@vger.kernel.org, devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org,
"Daniel Golle" <daniel@makrotopia.org>,
"Horatiu Vultur" <horatiu.vultur@microchip.com>,
"Bjørn Mork" <bjorn@mork.no>,
"Andrew Lunn" <andrew+netdev@lunn.ch>,
"Heiner Kallweit" <hkallweit1@gmail.com>,
"Russell King" <linux@armlinux.org.uk>,
"David S. Miller" <davem@davemloft.net>,
"Eric Dumazet" <edumazet@google.com>,
"Jakub Kicinski" <kuba@kernel.org>,
"Paolo Abeni" <pabeni@redhat.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Eric Woudstra" <ericwouds@gmail.com>,
"Alexander Couzens" <lynxis@fe80.eu>,
"Chester A. Unal" <chester.a.unal@arinc9.com>,
"DENG Qingfang" <dqfext@gmail.com>,
"Sean Wang" <sean.wang@mediatek.com>,
"Felix Fietkau" <nbd@nbd.name>
Subject: Re: [PATCH v4 net-next 2/5] net: phy: air_en8811h: deprecate "airoha,pnswap-rx" and "airoha,pnswap-tx"
Date: Mon, 19 Jan 2026 16:33:35 +0100 [thread overview]
Message-ID: <ac4707d6-8472-4465-a421-14ab9cc0836d@bootlin.com> (raw)
In-Reply-To: <20260119091220.1493761-3-vladimir.oltean@nxp.com>
Hi Vladimir,
On 19/01/2026 10:12, Vladimir Oltean wrote:
> Prefer the new "rx-polarity" and "tx-polarity" properties, and use the
> vendor specific ones as fallback if the standard description doesn't
> exist.
>
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Thanks,
Maxime
> ---
> v2->v4: none
> v1->v2:
> - adapt to API change: error code and returned value have been split
> - bug fix: supported mask of polarities should be BIT(PHY_POL_NORMAL) |
> BIT(PHY_POL_INVERT) rather than PHY_POL_NORMAL | PHY_POL_INVERT.
>
> drivers/net/phy/Kconfig | 1 +
> drivers/net/phy/air_en8811h.c | 53 +++++++++++++++++++++++++----------
> 2 files changed, 39 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
> index a7ade7b95a2e..7b73332a13d9 100644
> --- a/drivers/net/phy/Kconfig
> +++ b/drivers/net/phy/Kconfig
> @@ -98,6 +98,7 @@ config AS21XXX_PHY
>
> config AIR_EN8811H_PHY
> tristate "Airoha EN8811H 2.5 Gigabit PHY"
> + select PHY_COMMON_PROPS
> help
> Currently supports the Airoha EN8811H PHY.
>
> diff --git a/drivers/net/phy/air_en8811h.c b/drivers/net/phy/air_en8811h.c
> index badd65f0ccee..e890bb2c0aa8 100644
> --- a/drivers/net/phy/air_en8811h.c
> +++ b/drivers/net/phy/air_en8811h.c
> @@ -14,6 +14,7 @@
> #include <linux/clk.h>
> #include <linux/clk-provider.h>
> #include <linux/phy.h>
> +#include <linux/phy/phy-common-props.h>
> #include <linux/firmware.h>
> #include <linux/property.h>
> #include <linux/wordpart.h>
> @@ -966,11 +967,45 @@ static int en8811h_probe(struct phy_device *phydev)
> return 0;
> }
>
> +static int en8811h_config_serdes_polarity(struct phy_device *phydev)
> +{
> + struct device *dev = &phydev->mdio.dev;
> + unsigned int pol, default_pol;
> + u32 pbus_value = 0;
> + int ret;
> +
> + default_pol = PHY_POL_NORMAL;
> + if (device_property_read_bool(dev, "airoha,pnswap-rx"))
> + default_pol = PHY_POL_INVERT;
> +
> + ret = phy_get_rx_polarity(dev_fwnode(dev), phy_modes(phydev->interface),
> + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT),
> + default_pol, &pol);
> + if (ret)
> + return ret;
> + if (pol == PHY_POL_INVERT)
> + pbus_value |= EN8811H_POLARITY_RX_REVERSE;
> +
> + default_pol = PHY_POL_NORMAL;
> + if (device_property_read_bool(dev, "airoha,pnswap-tx"))
> + default_pol = PHY_POL_INVERT;
> +
> + ret = phy_get_tx_polarity(dev_fwnode(dev), phy_modes(phydev->interface),
> + BIT(PHY_POL_NORMAL) | BIT(PHY_POL_INVERT),
> + default_pol, &pol);
> + if (ret)
> + return ret;
> + if (pol == PHY_POL_NORMAL)
> + pbus_value |= EN8811H_POLARITY_TX_NORMAL;
> +
> + return air_buckpbus_reg_modify(phydev, EN8811H_POLARITY,
> + EN8811H_POLARITY_RX_REVERSE |
> + EN8811H_POLARITY_TX_NORMAL, pbus_value);
> +}
> +
> static int en8811h_config_init(struct phy_device *phydev)
> {
> struct en8811h_priv *priv = phydev->priv;
> - struct device *dev = &phydev->mdio.dev;
> - u32 pbus_value;
> int ret;
>
> /* If restart happened in .probe(), no need to restart now */
> @@ -1003,19 +1038,7 @@ static int en8811h_config_init(struct phy_device *phydev)
> if (ret < 0)
> return ret;
>
> - /* Serdes polarity */
> - pbus_value = 0;
> - if (device_property_read_bool(dev, "airoha,pnswap-rx"))
> - pbus_value |= EN8811H_POLARITY_RX_REVERSE;
> - else
> - pbus_value &= ~EN8811H_POLARITY_RX_REVERSE;
> - if (device_property_read_bool(dev, "airoha,pnswap-tx"))
> - pbus_value &= ~EN8811H_POLARITY_TX_NORMAL;
> - else
> - pbus_value |= EN8811H_POLARITY_TX_NORMAL;
> - ret = air_buckpbus_reg_modify(phydev, EN8811H_POLARITY,
> - EN8811H_POLARITY_RX_REVERSE |
> - EN8811H_POLARITY_TX_NORMAL, pbus_value);
> + ret = en8811h_config_serdes_polarity(phydev);
> if (ret < 0)
> return ret;
>
next prev parent reply other threads:[~2026-01-19 15:40 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-19 9:12 [PATCH v4 net-next 0/5] PHY polarity inversion via generic device tree properties Vladimir Oltean
2026-01-19 9:12 ` [PATCH v4 net-next 1/5] dt-bindings: net: airoha,en8811h: deprecate "airoha,pnswap-rx" and "airoha,pnswap-tx" Vladimir Oltean
2026-01-19 9:12 ` [PATCH v4 net-next 2/5] net: phy: air_en8811h: " Vladimir Oltean
2026-01-19 15:33 ` Maxime Chevallier [this message]
2026-01-19 9:12 ` [PATCH v4 net-next 3/5] dt-bindings: net: pcs: mediatek,sgmiisys: deprecate "mediatek,pnswap" Vladimir Oltean
2026-01-19 9:12 ` [PATCH v4 net-next 4/5] net: pcs: pcs-mtk-lynxi: pass SGMIISYS OF node to PCS Vladimir Oltean
2026-01-19 9:12 ` [PATCH v4 net-next 5/5] net: pcs: pcs-mtk-lynxi: deprecate "mediatek,pnswap" Vladimir Oltean
2026-03-24 6:36 ` Frank Wunderlich
2026-03-26 21:54 ` Vladimir Oltean
2026-03-30 17:52 ` Frank Wunderlich
2026-03-30 19:04 ` Vladimir Oltean
2026-04-02 5:50 ` Frank Wunderlich
2026-04-02 9:53 ` Vladimir Oltean
2026-04-03 8:23 ` Frank Wunderlich
2026-01-22 4:00 ` [PATCH v4 net-next 0/5] PHY polarity inversion via generic device tree properties 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=ac4707d6-8472-4465-a421-14ab9cc0836d@bootlin.com \
--to=maxime.chevallier@bootlin.com \
--cc=andrew+netdev@lunn.ch \
--cc=angelogioacchino.delregno@collabora.com \
--cc=bjorn@mork.no \
--cc=chester.a.unal@arinc9.com \
--cc=conor+dt@kernel.org \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=dqfext@gmail.com \
--cc=edumazet@google.com \
--cc=ericwouds@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=horatiu.vultur@microchip.com \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=lynxis@fe80.eu \
--cc=matthias.bgg@gmail.com \
--cc=nbd@nbd.name \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=sean.wang@mediatek.com \
--cc=vladimir.oltean@nxp.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.