On Fri, May 22, 2020 at 04:30:58PM -0500, Jeremy Linton wrote: > Signed-off-by: Jeremy Linton <jeremy.lin...@arm.com> > --- > drivers/net/ethernet/freescale/xgmac_mdio.c | 27 +++++++++++++-------- > 1 file changed, 17 insertions(+), 10 deletions(-) > > diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c > b/drivers/net/ethernet/freescale/xgmac_mdio.c > index c82c85ef5fb3..96ee3bd89983 100644 > --- a/drivers/net/ethernet/freescale/xgmac_mdio.c > +++ b/drivers/net/ethernet/freescale/xgmac_mdio.c > @@ -245,14 +245,14 @@ static int xgmac_mdio_probe(struct platform_device > *pdev) > { > struct device_node *np = pdev->dev.of_node; > struct mii_bus *bus; > - struct resource res; > + struct resource *res; > struct mdio_fsl_priv *priv; > int ret; > > - ret = of_address_to_resource(np, 0, &res); > - if (ret) { > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > + if (!res) { > dev_err(&pdev->dev, "could not obtain address\n"); > - return ret; > + return -EINVAL; > } > > bus = mdiobus_alloc_size(sizeof(struct mdio_fsl_priv)); > @@ -263,21 +263,21 @@ static int xgmac_mdio_probe(struct platform_device > *pdev) > bus->read = xgmac_mdio_read; > bus->write = xgmac_mdio_write; > bus->parent = &pdev->dev; > - snprintf(bus->id, MII_BUS_ID_SIZE, "%llx", (unsigned long > long)res.start); > + snprintf(bus->id, MII_BUS_ID_SIZE, "%llx", (unsigned long > long)res->start); > > /* Set the PHY base address */ > priv = bus->priv; > - priv->mdio_base = of_iomap(np, 0); > + priv->mdio_base = devm_platform_ioremap_resource(pdev, 0); > if (!priv->mdio_base) {
I think you need to pay greater attention to the return value of functions - this is one such case, where devm_platform_ioremap_resource() does not return NULL on failure. It uses devm_ioremap_resource(), which is documented in lib/devres.c to return an error-pointer on failure. > ret = -ENOMEM; > goto err_ioremap; > } > > - priv->is_little_endian = of_property_read_bool(pdev->dev.of_node, > - "little-endian"); > + priv->is_little_endian = device_property_read_bool(&pdev->dev, > + "little-endian"); > > - priv->has_a011043 = of_property_read_bool(pdev->dev.of_node, > - "fsl,erratum-a011043"); > + priv->has_a011043 = device_property_read_bool(&pdev->dev, > + "fsl,erratum-a011043"); > > ret = of_mdiobus_register(bus, np); > if (ret) { > @@ -320,10 +320,17 @@ static const struct of_device_id xgmac_mdio_match[] = { > }; > MODULE_DEVICE_TABLE(of, xgmac_mdio_match); > > +static const struct acpi_device_id xgmac_acpi_match[] = { > + { "NXP0006", (kernel_ulong_t)NULL }, > + { }, > +}; > +MODULE_DEVICE_TABLE(acpi, xgmac_acpi_match); > + > static struct platform_driver xgmac_mdio_driver = { > .driver = { > .name = "fsl-fman_xmdio", > .of_match_table = xgmac_mdio_match, > + .acpi_match_table = xgmac_acpi_match, > }, > .probe = xgmac_mdio_probe, > .remove = xgmac_mdio_remove, > -- > 2.26.2 > > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC for 0.8m (est. 1762m) line in suburbia: sync at 13.1Mbps down 424kbps up