On Wed, 6 Dec 2023 15:35:56 +0100 Marek Mojík <marek.mo...@nic.cz> wrote:
> 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.mo...@nic.cz> > --- > drivers/net/mv88e6xxx.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/net/mv88e6xxx.c b/drivers/net/mv88e6xxx.c > index c073f81e72..8fbbc1cacc 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) Reviewed-by: Marek Behún <ka...@kernel.org>