Hi Simon, On 22.03.2018 19:39, Álvaro Fernández Rojas wrote: > Signed-off-by: Álvaro Fernández Rojas <nolt...@gmail.com> > --- > drivers/core/fdtaddr.c | 12 ++++++++++++ > drivers/core/read.c | 12 ++++++++++++ > include/dm/fdtaddr.h | 22 ++++++++++++++++++++++ > include/dm/read.h | 32 ++++++++++++++++++++++++++++++++ > 4 files changed, 78 insertions(+)
are you okay with these changes? I'd like to have your ACK for this patch before applying. Thanks. > > diff --git a/drivers/core/fdtaddr.c b/drivers/core/fdtaddr.c > index 3847dd836e..8a80000332 100644 > --- a/drivers/core/fdtaddr.c > +++ b/drivers/core/fdtaddr.c > @@ -132,6 +132,18 @@ void *devfdt_get_addr_ptr(struct udevice *dev) > return (void *)(uintptr_t)devfdt_get_addr_index(dev, 0); > } > > +void *devfdt_remap_addr_index(struct udevice *dev, int index) > +{ > + fdt_addr_t addr = devfdt_get_addr_index(dev, index); > + > + return (addr == FDT_ADDR_T_NONE) ? NULL : ioremap(addr, 0); > +} > + > +void *devfdt_remap_addr(struct udevice *dev) > +{ > + return devfdt_remap_addr_index(dev, 0); > +} > + > void *devfdt_map_physmem(struct udevice *dev, unsigned long size) > { > fdt_addr_t addr = devfdt_get_addr(dev); > diff --git a/drivers/core/read.c b/drivers/core/read.c > index 601d1322d6..0d338563ad 100644 > --- a/drivers/core/read.c > +++ b/drivers/core/read.c > @@ -58,6 +58,13 @@ fdt_addr_t dev_read_addr_index(struct udevice *dev, int > index) > return devfdt_get_addr_index(dev, index); > } > > +void *dev_remap_addr_index(struct udevice *dev, int index) > +{ > + fdt_addr_t addr = dev_read_addr_index(dev, index); > + > + return (addr == FDT_ADDR_T_NONE) ? NULL : ioremap(addr, 0); > +} > + > fdt_addr_t dev_read_addr(struct udevice *dev) > { > return dev_read_addr_index(dev, 0); > @@ -70,6 +77,11 @@ void *dev_read_addr_ptr(struct udevice *dev) > return (addr == FDT_ADDR_T_NONE) ? NULL : map_sysmem(addr, 0); > } > > +void * dev_remap_addr(struct udevice *dev) > +{ > + return dev_remap_addr_index(dev, 0); > +} > + > fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *property, > fdt_size_t *sizep) > { > diff --git a/include/dm/fdtaddr.h b/include/dm/fdtaddr.h > index c46f0e91d0..82fc5f931d 100644 > --- a/include/dm/fdtaddr.h > +++ b/include/dm/fdtaddr.h > @@ -35,6 +35,28 @@ fdt_addr_t devfdt_get_addr(struct udevice *dev); > void *devfdt_get_addr_ptr(struct udevice *dev); > > /** > + * devfdt_remap_addr() - Return pointer to the memory-mapped I/O address > + * of the reg property of a device > + * > + * @dev: Pointer to a device > + * > + * @return Pointer to addr, or NULL if there is no such property > + */ > +void *devfdt_remap_addr(struct udevice *dev); > + > +/** > + * devfdt_remap_addr_index() - Return indexed pointer to the memory-mapped > + * I/O address of the reg property of a > device > + * @index: the 'reg' property can hold a list of <addr, size> pairs > + * and @index is used to select which one is required > + * > + * @dev: Pointer to a device > + * > + * @return Pointer to addr, or NULL if there is no such property > + */ > +void *devfdt_remap_addr_index(struct udevice *dev, int index); > + > +/** > * devfdt_map_physmem() - Read device address from reg property of the > * device node and map the address into CPU address > * space. > diff --git a/include/dm/read.h b/include/dm/read.h > index f14c7a7ba8..42eb585137 100644 > --- a/include/dm/read.h > +++ b/include/dm/read.h > @@ -114,6 +114,18 @@ int dev_read_size(struct udevice *dev, const char > *propname); > fdt_addr_t dev_read_addr_index(struct udevice *dev, int index); > > /** > + * dev_remap_addr_index() - Get the indexed reg property of a device > + * as a memory-mapped I/O pointer > + * > + * @dev: Device to read from > + * @index: the 'reg' property can hold a list of <addr, size> pairs > + * and @index is used to select which one is required > + * > + * @return pointer or NULL if not found > + */ > +void * dev_remap_addr_index(struct udevice *dev, int index); > + > +/** > * dev_read_addr() - Get the reg property of a device > * > * @dev: Device to read from > @@ -133,6 +145,16 @@ fdt_addr_t dev_read_addr(struct udevice *dev); > void *dev_read_addr_ptr(struct udevice *dev); > > /** > + * dev_remap_addr() - Get the reg property of a device as a > + * memory-mapped I/O pointer > + * > + * @dev: Device to read from > + * > + * @return pointer or NULL if not found > + */ > +void * dev_remap_addr(struct udevice *dev); > + > +/** > * dev_read_addr_size() - get address and size from a device property > * > * This does no address translation. It simply reads an property that > contains > @@ -483,6 +505,16 @@ static inline void *dev_read_addr_ptr(struct udevice > *dev) > return devfdt_get_addr_ptr(dev); > } > > +static inline void *dev_remap_addr(struct udevice *dev) > +{ > + return devfdt_remap_addr(dev); > +} > + > +static inline void *dev_remap_addr_index(struct udevice *dev, int index) > +{ > + return devfdt_remap_addr_index(dev, index); > +} > + > static inline fdt_addr_t dev_read_addr_size(struct udevice *dev, > const char *propname, > fdt_size_t *sizep) > -- - Daniel _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot