[PATCH v2] ARM: imx: imx8mn-*-evk: use DM settings for PHY configuration

Michael Walle michael at walle.cc
Tue Feb 22 17:00:53 CET 2022


Am 2022-02-22 16:19, schrieb Heiko Thiery:
> With the correct settings described in the device-tree the PHY settings
> in the board init are no longer required. The values are taken from the
> linux device tree.
> 
> Suggested-by: Michael Walle <michael at walle.cc>
> Signed-off-by: Heiko Thiery <heiko.thiery at gmail.com>
> ---
> v2:
>  - remove phy-reset-gpios node (thanks to Michael)
>     When using DM_ETH_PHY the reset-gpios from the phy is used
> 
>  arch/arm/dts/imx8mn-evk.dtsi            | 10 +++++++++-
>  board/freescale/imx8mn_evk/imx8mn_evk.c | 16 ----------------
>  2 files changed, 9 insertions(+), 17 deletions(-)
> 
> diff --git a/arch/arm/dts/imx8mn-evk.dtsi 
> b/arch/arm/dts/imx8mn-evk.dtsi
> index 416fadb22b..fd253f0042 100644
> --- a/arch/arm/dts/imx8mn-evk.dtsi
> +++ b/arch/arm/dts/imx8mn-evk.dtsi
> @@ -53,7 +53,6 @@
>  	pinctrl-0 = <&pinctrl_fec1>;
>  	phy-mode = "rgmii-id";
>  	phy-handle = <&ethphy0>;
> -	phy-reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;

This ...

>  	fsl,magic-packet;
>  	status = "okay";
> 
> @@ -64,6 +63,15 @@
>  		ethphy0: ethernet-phy at 0 {
>  			compatible = "ethernet-phy-ieee802.3-c22";
>  			reg = <0>;
> +			reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
> +			reset-assert-us = <10000>;
> +			qca,disable-smarteee;
.. and these three lines should probably be a separate patch.


> +			vddio-supply = <&vddio>;
> +
> +			vddio: vddio-regulator {
> +				regulator-min-microvolt = <1800000>;
> +				regulator-max-microvolt = <1800000>;
> +			};

This looks good. The rgmii pad delay is already handled by the
phy-mode.

Reviewed-by: Michael Walle <michael at walle.cc>

>  		};
>  	};
>  };
> diff --git a/board/freescale/imx8mn_evk/imx8mn_evk.c
> b/board/freescale/imx8mn_evk/imx8mn_evk.c
> index b24342fd5c..e35d505aea 100644
> --- a/board/freescale/imx8mn_evk/imx8mn_evk.c
> +++ b/board/freescale/imx8mn_evk/imx8mn_evk.c
> @@ -27,22 +27,6 @@ static void setup_fec(void)
>  	clrsetbits_le32(&gpr->gpr[1], 0x2000, 0);
>  }
> 
> -int board_phy_config(struct phy_device *phydev)
> -{
> -	/* enable rgmii rxc skew and phy mode select to RGMII copper */
> -	phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
> -	phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
> -
> -	phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
> -	phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
> -	phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
> -	phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
> -
> -	if (phydev->drv->config)
> -		phydev->drv->config(phydev);
> -	return 0;
> -}
> -
>  int board_init(void)
>  {
>  	setup_fec();


More information about the U-Boot mailing list