aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Mojík <marek.mojik@nic.cz>2023-12-06 15:35:56 +0100
committerStefan Roese <sr@denx.de>2024-03-05 08:27:59 +0100
commitfaf96b20ee6e2784273ca95203c4d44629739b71 (patch)
tree485aed765fdf92a5a53a84916e3d4681c24ed30a
parent773cb2bca7743406e34ab4f441fc0a8a0d200a19 (diff)
downloadu-boot-faf96b20ee6e2784273ca95203c4d44629739b71.zip
u-boot-faf96b20ee6e2784273ca95203c4d44629739b71.tar.gz
u-boot-faf96b20ee6e2784273ca95203c4d44629739b71.tar.bz2
net: mv88e6xxx: fix missing SMI address initialization
The mv88e6xxx driver does not currently initialize the smi_addr field, but instead keeps the default zero value. This leads to driver being unusable on devices where the switch is not on address zero of the mdio bus. Fix this problem by reading the SMI address from device tree. Signed-off-by: Marek Mojík <marek.mojik@nic.cz> Reviewed-by: Marek Behún <kabel@kernel.org> Reviewed-by: Stefan Roese <sr@denx.de>
-rw-r--r--drivers/net/mv88e6xxx.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c
index c073f81..8fbbc1c 100644
--- a/drivers/net/mv88e6xxx.c
+++ b/drivers/net/mv88e6xxx.c
@@ -745,6 +745,7 @@ static int mv88e6xxx_probe(struct udevice *dev)
{
struct dsa_pdata *dsa_pdata = dev_get_uclass_plat(dev);
struct mv88e6xxx_priv *priv = dev_get_priv(dev);
+ fdt_addr_t smi_addr;
int val, ret;
if (ofnode_valid(dev_ofnode(dev)) &&
@@ -753,6 +754,13 @@ static int mv88e6xxx_probe(struct udevice *dev)
return -ENODEV;
}
+ smi_addr = dev_read_addr(dev);
+ if (smi_addr == FDT_ADDR_T_NONE) {
+ dev_err(dev, "Missing SMI address\n");
+ return -EINVAL;
+ }
+ priv->smi_addr = smi_addr;
+
/* probe internal mdio bus */
ret = mv88e6xxx_probe_mdio(dev);
if (ret)