[PATCH u-boot-marvell 05/19] arm: mvebu: Espressobin: Use DM registered MDIO to configure switch

Stefan Roese sr at denx.de
Mon May 2 08:48:54 CEST 2022


On 27.04.22 12:41, Marek Behún wrote:
> From: Marek Behún <marek.behun at nic.cz>
> 
> In order to be able to get rid of the non-DM MDIO bus registered in
> mvneta driver, we need to stop using board_network_enable() and instead
> use the DM registered MDIO device to configure switch in
> last_stage_init().
> 
> Signed-off-by: Marek Behún <marek.behun at nic.cz>

Reviewed-by: Stefan Roese <sr at denx.de>

Thanks,
Stefan


> ---
>   board/Marvell/mvebu_armada-37xx/board.c     | 26 ++++++++++++++++-----
>   configs/mvebu_espressobin-88f3720_defconfig |  1 +
>   2 files changed, 21 insertions(+), 6 deletions(-)
> 
> diff --git a/board/Marvell/mvebu_armada-37xx/board.c b/board/Marvell/mvebu_armada-37xx/board.c
> index 98e1b36d11..3e5e0a0b5c 100644
> --- a/board/Marvell/mvebu_armada-37xx/board.c
> +++ b/board/Marvell/mvebu_armada-37xx/board.c
> @@ -11,6 +11,7 @@
>   #include <i2c.h>
>   #include <init.h>
>   #include <mmc.h>
> +#include <miiphy.h>
>   #include <phy.h>
>   #include <asm/global_data.h>
>   #include <asm/io.h>
> @@ -254,14 +255,15 @@ int board_xhci_enable(fdt_addr_t base)
>   	return 0;
>   }
>   
> +#ifdef CONFIG_LAST_STAGE_INIT
>   /* Helper function for accessing switch devices in multi-chip connection mode */
> -static int mii_multi_chip_mode_write(struct mii_dev *bus, int dev_smi_addr,
> +static int mii_multi_chip_mode_write(struct udevice *bus, int dev_smi_addr,
>   				     int smi_addr, int reg, u16 value)
>   {
>   	u16 smi_cmd = 0;
>   
> -	if (bus->write(bus, dev_smi_addr, 0,
> -		       MVEBU_SW_SMI_DATA_REG, value) != 0) {
> +	if (dm_mdio_write(bus, dev_smi_addr, MDIO_DEVAD_NONE,
> +			  MVEBU_SW_SMI_DATA_REG, value) != 0) {
>   		printf("Error writing to the PHY addr=%02x reg=%02x\n",
>   		       smi_addr, reg);
>   		return -EFAULT;
> @@ -272,8 +274,8 @@ static int mii_multi_chip_mode_write(struct mii_dev *bus, int dev_smi_addr,
>   		  (1 << SW_SMI_CMD_SMI_OP_OFF) |
>   		  (smi_addr << SW_SMI_CMD_DEV_ADDR_OFF) |
>   		  (reg << SW_SMI_CMD_REG_ADDR_OFF);
> -	if (bus->write(bus, dev_smi_addr, 0,
> -		       MVEBU_SW_SMI_CMD_REG, smi_cmd) != 0) {
> +	if (dm_mdio_write(bus, dev_smi_addr, MDIO_DEVAD_NONE,
> +			  MVEBU_SW_SMI_CMD_REG, smi_cmd) != 0) {
>   		printf("Error writing to the PHY addr=%02x reg=%02x\n",
>   		       smi_addr, reg);
>   		return -EFAULT;
> @@ -283,11 +285,22 @@ static int mii_multi_chip_mode_write(struct mii_dev *bus, int dev_smi_addr,
>   }
>   
>   /* Bring-up board-specific network stuff */
> -int board_network_enable(struct mii_dev *bus)
> +int last_stage_init(void)
>   {
> +	struct udevice *bus;
> +	ofnode node;
> +
>   	if (!of_machine_is_compatible("globalscale,espressobin"))
>   		return 0;
>   
> +	node = ofnode_by_compatible(ofnode_null(), "marvell,orion-mdio");
> +	if (!ofnode_valid(node) ||
> +	    uclass_get_device_by_ofnode(UCLASS_MDIO, node, &bus) ||
> +	    device_probe(bus)) {
> +		printf("Cannot find MDIO bus\n");
> +		return 0;
> +	}
> +
>   	/*
>   	 * FIXME: remove this code once Topaz driver gets available
>   	 * A3720 Community Board Only
> @@ -327,6 +340,7 @@ int board_network_enable(struct mii_dev *bus)
>   
>   	return 0;
>   }
> +#endif
>   
>   #ifdef CONFIG_OF_BOARD_SETUP
>   int ft_board_setup(void *blob, struct bd_info *bd)
> diff --git a/configs/mvebu_espressobin-88f3720_defconfig b/configs/mvebu_espressobin-88f3720_defconfig
> index af30f1b363..37e4fdc41e 100644
> --- a/configs/mvebu_espressobin-88f3720_defconfig
> +++ b/configs/mvebu_espressobin-88f3720_defconfig
> @@ -25,6 +25,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
>   CONFIG_ARCH_EARLY_INIT_R=y
>   CONFIG_BOARD_EARLY_INIT_F=y
>   CONFIG_BOARD_LATE_INIT=y
> +CONFIG_LAST_STAGE_INIT=y
>   # CONFIG_CMD_FLASH is not set
>   CONFIG_CMD_FUSE=y
>   CONFIG_CMD_GPIO=y

Viele Grüße,
Stefan Roese

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list