mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 04:46:01 +01:00
arm: mvebu: Espressobin: Use DM registered MDIO to configure switch
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@nic.cz> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
4d47ea2279
commit
a2b2542992
@ -11,6 +11,7 @@
|
|||||||
#include <i2c.h>
|
#include <i2c.h>
|
||||||
#include <init.h>
|
#include <init.h>
|
||||||
#include <mmc.h>
|
#include <mmc.h>
|
||||||
|
#include <miiphy.h>
|
||||||
#include <phy.h>
|
#include <phy.h>
|
||||||
#include <asm/global_data.h>
|
#include <asm/global_data.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
@ -254,13 +255,14 @@ int board_xhci_enable(fdt_addr_t base)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_LAST_STAGE_INIT
|
||||||
/* Helper function for accessing switch devices in multi-chip connection mode */
|
/* 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)
|
int smi_addr, int reg, u16 value)
|
||||||
{
|
{
|
||||||
u16 smi_cmd = 0;
|
u16 smi_cmd = 0;
|
||||||
|
|
||||||
if (bus->write(bus, dev_smi_addr, 0,
|
if (dm_mdio_write(bus, dev_smi_addr, MDIO_DEVAD_NONE,
|
||||||
MVEBU_SW_SMI_DATA_REG, value) != 0) {
|
MVEBU_SW_SMI_DATA_REG, value) != 0) {
|
||||||
printf("Error writing to the PHY addr=%02x reg=%02x\n",
|
printf("Error writing to the PHY addr=%02x reg=%02x\n",
|
||||||
smi_addr, reg);
|
smi_addr, reg);
|
||||||
@ -272,7 +274,7 @@ static int mii_multi_chip_mode_write(struct mii_dev *bus, int dev_smi_addr,
|
|||||||
(1 << SW_SMI_CMD_SMI_OP_OFF) |
|
(1 << SW_SMI_CMD_SMI_OP_OFF) |
|
||||||
(smi_addr << SW_SMI_CMD_DEV_ADDR_OFF) |
|
(smi_addr << SW_SMI_CMD_DEV_ADDR_OFF) |
|
||||||
(reg << SW_SMI_CMD_REG_ADDR_OFF);
|
(reg << SW_SMI_CMD_REG_ADDR_OFF);
|
||||||
if (bus->write(bus, dev_smi_addr, 0,
|
if (dm_mdio_write(bus, dev_smi_addr, MDIO_DEVAD_NONE,
|
||||||
MVEBU_SW_SMI_CMD_REG, smi_cmd) != 0) {
|
MVEBU_SW_SMI_CMD_REG, smi_cmd) != 0) {
|
||||||
printf("Error writing to the PHY addr=%02x reg=%02x\n",
|
printf("Error writing to the PHY addr=%02x reg=%02x\n",
|
||||||
smi_addr, reg);
|
smi_addr, reg);
|
||||||
@ -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 */
|
/* 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"))
|
if (!of_machine_is_compatible("globalscale,espressobin"))
|
||||||
return 0;
|
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
|
* FIXME: remove this code once Topaz driver gets available
|
||||||
* A3720 Community Board Only
|
* A3720 Community Board Only
|
||||||
@ -327,6 +340,7 @@ int board_network_enable(struct mii_dev *bus)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_OF_BOARD_SETUP
|
#ifdef CONFIG_OF_BOARD_SETUP
|
||||||
int ft_board_setup(void *blob, struct bd_info *bd)
|
int ft_board_setup(void *blob, struct bd_info *bd)
|
||||||
|
@ -25,6 +25,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
|
|||||||
CONFIG_ARCH_EARLY_INIT_R=y
|
CONFIG_ARCH_EARLY_INIT_R=y
|
||||||
CONFIG_BOARD_EARLY_INIT_F=y
|
CONFIG_BOARD_EARLY_INIT_F=y
|
||||||
CONFIG_BOARD_LATE_INIT=y
|
CONFIG_BOARD_LATE_INIT=y
|
||||||
|
CONFIG_LAST_STAGE_INIT=y
|
||||||
# CONFIG_CMD_FLASH is not set
|
# CONFIG_CMD_FLASH is not set
|
||||||
CONFIG_CMD_FUSE=y
|
CONFIG_CMD_FUSE=y
|
||||||
CONFIG_CMD_GPIO=y
|
CONFIG_CMD_GPIO=y
|
||||||
|
Loading…
x
Reference in New Issue
Block a user