Re: [PATCH] drivers/of: Add devm_of_iomap()
From: Benjamin Herrenschmidt
Date: Fri Jun 15 2018 - 02:52:17 EST
On Fri, 2018-06-15 at 08:16 +0200, Geert Uytterhoeven wrote:
> Hi Ben,
>
> On Fri, Jun 15, 2018 at 1:51 AM Benjamin Herrenschmidt
> <benh@xxxxxxxxxxxxxxxxxxx> wrote:
> > On Thu, 2018-06-14 at 10:27 +0200, Geert Uytterhoeven wrote:
> > > > --- a/include/linux/of_address.h
> > > > +++ b/include/linux/of_address.h
> > > > @@ -40,6 +40,11 @@ extern void __iomem *of_iomap(struct device_node *device, int index);
> > > > void __iomem *of_io_request_and_map(struct device_node *device,
> > > > int index, const char *name);
> > > >
> > > > +/* Request and map, wrapper on devm_ioremap_resource */
> > > > +extern void __iomem *devm_of_iomap(struct device *dev,
> > > > + struct device_node *node, int index,
> > > > + resource_size_t *size);
> > > > +
> > > > /* Extract an address from a device, returns the region size and
> > > > * the address space flags too. The PCI version uses a BAR number
> > > > * instead of an absolute index
> > >
> > > Do you need a dummy for !CONFIG_OF_ADDRESS, to aid compile-testing?
> >
> > I didn't think so, as of_address_to_resource() already has a dummy, so
> > it should build fine.
>
> That dummy doesn't matter, as drivers/of/address won't be built if
> !CONFIG_OF_ADDRESS anyway.
Right but:
- I moved it to lib/devres.c in my respun patch (because otherwise
sparc won't get it)
- The dummy is in include/linux/of_address.h, so devm_of_ioremap will
compile fine either way.
> I mean for compile-testing users of devm_of_iomap().
>
> And according to kbuild test robot <lkp@xxxxxxxxx>:
>
> > > (.text+0x1882): undefined reference to `devm_ioremap_resource'
>
> devm_ioremap_resource() has no dummy for !HAS_IOMEM and
> OF_ADDRESS depends on !SPARC && (HAS_IOMEM || UML),
> bypassing the HAS_IOMEM check on UML.
>
> Gr{oetje,eeting}s,
>
> Geert
>