Driver does not currently initialize the smi_addr field, but instead keeps
the default value. This leads to issues on systems with different hardware
configuration. We can fix this problem by reading the SMI address from
device tree.

Signed-off-by: Marek Mojík <marek.mo...@nic.cz>
---
 drivers/net/mv88e6xxx.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c
index c073f81e72..4636dbf156 100644
--- a/drivers/net/mv88e6xxx.c
+++ b/drivers/net/mv88e6xxx.c
@@ -753,6 +753,12 @@ static int mv88e6xxx_probe(struct udevice *dev)
                return -ENODEV;
        }
 
+       priv->smi_addr = dev_read_addr(dev);
+       if (priv->smi_addr == FDT_ADDR_T_NONE) {
+               dev_err(dev, "Invalid or missing SMI address\n");
+               return -EINVAL;
+       }
+
        /* probe internal mdio bus */
        ret = mv88e6xxx_probe_mdio(dev);
        if (ret)
-- 
2.42.1

Reply via email to