Re: [PATCH] net: netsec: Ignore 'phy-mode' on SynQuacer in DT mode

From: Ard Biesheuvel
Date: Fri Jul 28 2023 - 01:46:10 EST


(cc Masahisa)

On Thu, 27 Jul 2023 at 23:52, Mark Brown <broonie@xxxxxxxxxx> wrote:
>
> As documented in acd7aaf51b20 ("netsec: ignore 'phy-mode' device
> property on ACPI systems") the SocioNext SynQuacer platform ships with
> firmware defining the PHY mode as RGMII even though the physical
> configuration of the PHY is for TX and RX commits. Since
> bbc4d71d63549bc ("net: phy: realtek: fix rtl8211e rx/tx delay config")
> this has caused misconfiguration of the PHY, rendering the network
> unusable.
>
> This was worked around for ACPI by ignoring the phy-mode property but
> the system is also used with DT. Since the firmware used with DT is the
> same (the firmware interface is selectable in the firmware
> configuration) and the firmware configures the PHY prior to running the
> OS we can use the same workaround.
>

Wouldn't this break SynQuacers booting with firmware that lacks a
network driver? (I.e., u-boot?)

I am not sure why, but quite some effort has gone into porting u-boot
to this SoC as well.


> Limit this to the SynQuacer, though practically speaking this is the
> only currently known system using this device.
>
> Fixes: 533dd11a12f6 ("net: socionext: Add Synquacer NetSec driver")
> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
> ---
> drivers/net/ethernet/socionext/netsec.c | 18 ++++++++++++++----
> 1 file changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/socionext/netsec.c b/drivers/net/ethernet/socionext/netsec.c
> index 2d7347b71c41..ae4d336efaa4 100644
> --- a/drivers/net/ethernet/socionext/netsec.c
> +++ b/drivers/net/ethernet/socionext/netsec.c
> @@ -1845,10 +1845,20 @@ static int netsec_of_probe(struct platform_device *pdev,
> {
> int err;
>
> - err = of_get_phy_mode(pdev->dev.of_node, &priv->phy_interface);
> - if (err) {
> - dev_err(&pdev->dev, "missing required property 'phy-mode'\n");
> - return err;
> + if (of_machine_is_compatible("socionext,developer-box")) {
> + /*
> + * SynQuacer reports RGMII but is physically
> + * configured with TX and RX delays, since the
> + * firwmare configures the PHY prior to boot just
> + * ignore the configuration.
> + */
> + priv->phy_interface = PHY_INTERFACE_MODE_NA;
> + } else {
> + err = of_get_phy_mode(pdev->dev.of_node, &priv->phy_interface);
> + if (err) {
> + dev_err(&pdev->dev, "missing required property 'phy-mode'\n");
> + return err;
> + }
> }
>
> priv->phy_np = of_parse_phandle(pdev->dev.of_node, "phy-handle", 0);
>
> ---
> base-commit: 6eaae198076080886b9e7d57f4ae06fa782f90ef
> change-id: 20230727-synquacer-net-e241f34baceb
>
> Best regards,
> --
> Mark Brown <broonie@xxxxxxxxxx>
>