Message ID | 1505160270-10650-5-git-send-email-philipp.tomsich@theobroma-systems.com |
---|---|
State | Accepted |
Delegated to: | Philipp Tomsich |
Headers | show |
Series | rockchip: convert the RK3368 to OF_LIVE and validate on the RK3368-uQ7 | expand |
> The dev_read_addr_ptr() mimics the behaviour of the devfdt_get_addr_ptr(), > retrieving the first address of the node's reg-property and returning > it as a pointer (or NULL on failure). > > Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > --- > > Changes in v3: None > Changes in v2: > - implements the dev_read_addr_ptr() function > > drivers/core/read.c | 7 +++++++ > include/dm/read.h | 15 +++++++++++++++ > 2 files changed, 22 insertions(+) > Applied to u-boot-rockchip, thanks!
On 09/11/2017 10:04 PM, Philipp Tomsich wrote: > The dev_read_addr_ptr() mimics the behaviour of the devfdt_get_addr_ptr(), > retrieving the first address of the node's reg-property and returning > it as a pointer (or NULL on failure). > > Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> > --- > > Changes in v3: None > Changes in v2: > - implements the dev_read_addr_ptr() function > > drivers/core/read.c | 7 +++++++ > include/dm/read.h | 15 +++++++++++++++ > 2 files changed, 22 insertions(+) > > diff --git a/drivers/core/read.c b/drivers/core/read.c > index 6acb333..065589a 100644 > --- a/drivers/core/read.c > +++ b/drivers/core/read.c > @@ -57,6 +57,13 @@ fdt_addr_t dev_read_addr(struct udevice *dev) > return dev_read_addr_index(dev, 0); > } > > +void *dev_read_addr_ptr(struct udevice *dev) > +{ > + fdt_addr_t addr = dev_read_addr(dev); > + > + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; Hello Philipp, this line produces a compiler warning: sandbox: + sandbox + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; + ^ w+drivers/core/read.c: In function ?dev_read_addr_ptr?: w+drivers/core/read.c:64:44: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] Could you, please, provide a follow-up patch. Regards Heinrich > +} > + > fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *property, > fdt_size_t *sizep) > { > diff --git a/include/dm/read.h b/include/dm/read.h > index 49d69c9..e7f7125 100644 > --- a/include/dm/read.h > +++ b/include/dm/read.h > @@ -113,6 +113,16 @@ fdt_addr_t dev_read_addr_index(struct udevice *dev, int index); > fdt_addr_t dev_read_addr(struct udevice *dev); > > /** > + * dev_read_addr_ptr() - Get the reg property of a device > + * as a pointer > + * > + * @dev: Device to read from > + * > + * @return pointer or NULL if not found > + */ > +void *dev_read_addr_ptr(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 > @@ -417,6 +427,11 @@ static inline fdt_addr_t dev_read_addr(struct udevice *dev) > return devfdt_get_addr(dev); > } > > +static inline void *dev_read_addr_ptr(struct udevice *dev) > +{ > + return devfdt_get_addr_ptr(dev); > +} > + > static inline fdt_addr_t dev_read_addr_size(struct udevice *dev, > const char *propname, > fdt_size_t *sizep) >
> On 6 Oct 2017, at 13:47, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote: > > On 09/11/2017 10:04 PM, Philipp Tomsich wrote: >> The dev_read_addr_ptr() mimics the behaviour of the devfdt_get_addr_ptr(), >> retrieving the first address of the node's reg-property and returning >> it as a pointer (or NULL on failure). >> >> Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> >> Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> >> --- >> >> Changes in v3: None >> Changes in v2: >> - implements the dev_read_addr_ptr() function >> >> drivers/core/read.c | 7 +++++++ >> include/dm/read.h | 15 +++++++++++++++ >> 2 files changed, 22 insertions(+) >> >> diff --git a/drivers/core/read.c b/drivers/core/read.c >> index 6acb333..065589a 100644 >> --- a/drivers/core/read.c >> +++ b/drivers/core/read.c >> @@ -57,6 +57,13 @@ fdt_addr_t dev_read_addr(struct udevice *dev) >> return dev_read_addr_index(dev, 0); >> } >> >> +void *dev_read_addr_ptr(struct udevice *dev) >> +{ >> + fdt_addr_t addr = dev_read_addr(dev); >> + >> + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; > > Hello Philipp, > > this line produces a compiler warning: > > sandbox: + sandbox > + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; > + ^ > w+drivers/core/read.c: In function ?dev_read_addr_ptr?: > w+drivers/core/read.c:64:44: warning: cast to pointer from integer of > different size [-Wint-to-pointer-cast] > > Could you, please, provide a follow-up patch. Heinrich, I don’t fully understand what exactly to do here, as there is a patch to address this in flight (https://patchwork.ozlabs.org/patch/819567/) and you had even been on the CC-list for that one… Regards, Philipp. > > Regards > > Heinrich > >> +} >> + >> fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *property, >> fdt_size_t *sizep) >> { >> diff --git a/include/dm/read.h b/include/dm/read.h >> index 49d69c9..e7f7125 100644 >> --- a/include/dm/read.h >> +++ b/include/dm/read.h >> @@ -113,6 +113,16 @@ fdt_addr_t dev_read_addr_index(struct udevice *dev, int index); >> fdt_addr_t dev_read_addr(struct udevice *dev); >> >> /** >> + * dev_read_addr_ptr() - Get the reg property of a device >> + * as a pointer >> + * >> + * @dev: Device to read from >> + * >> + * @return pointer or NULL if not found >> + */ >> +void *dev_read_addr_ptr(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 >> @@ -417,6 +427,11 @@ static inline fdt_addr_t dev_read_addr(struct udevice *dev) >> return devfdt_get_addr(dev); >> } >> >> +static inline void *dev_read_addr_ptr(struct udevice *dev) >> +{ >> + return devfdt_get_addr_ptr(dev); >> +} >> + >> static inline fdt_addr_t dev_read_addr_size(struct udevice *dev, >> const char *propname, >> fdt_size_t *sizep) >> >
On 10/06/2017 02:00 PM, Dr. Philipp Tomsich wrote: > >> On 6 Oct 2017, at 13:47, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote: >> >> On 09/11/2017 10:04 PM, Philipp Tomsich wrote: >>> The dev_read_addr_ptr() mimics the behaviour of the devfdt_get_addr_ptr(), >>> retrieving the first address of the node's reg-property and returning >>> it as a pointer (or NULL on failure). >>> >>> Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> >>> Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com> >>> --- >>> >>> Changes in v3: None >>> Changes in v2: >>> - implements the dev_read_addr_ptr() function >>> >>> drivers/core/read.c | 7 +++++++ >>> include/dm/read.h | 15 +++++++++++++++ >>> 2 files changed, 22 insertions(+) >>> >>> diff --git a/drivers/core/read.c b/drivers/core/read.c >>> index 6acb333..065589a 100644 >>> --- a/drivers/core/read.c >>> +++ b/drivers/core/read.c >>> @@ -57,6 +57,13 @@ fdt_addr_t dev_read_addr(struct udevice *dev) >>> return dev_read_addr_index(dev, 0); >>> } >>> >>> +void *dev_read_addr_ptr(struct udevice *dev) >>> +{ >>> + fdt_addr_t addr = dev_read_addr(dev); >>> + >>> + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; >> >> Hello Philipp, >> >> this line produces a compiler warning: >> >> sandbox: + sandbox >> + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; >> + ^ >> w+drivers/core/read.c: In function ?dev_read_addr_ptr?: >> w+drivers/core/read.c:64:44: warning: cast to pointer from integer of >> different size [-Wint-to-pointer-cast] >> >> Could you, please, provide a follow-up patch. > > Heinrich, > > I don’t fully understand what exactly to do here, as there is a patch to > address this in flight (https://patchwork.ozlabs.org/patch/819567/) and > you had even been on the CC-list for that one… > > Regards, > Philipp. Sorry for the noise. Regards Heinrich > >> >> Regards >> >> Heinrich >> >>> +} >>> + >>> fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *property, >>> fdt_size_t *sizep) >>> { >>> diff --git a/include/dm/read.h b/include/dm/read.h >>> index 49d69c9..e7f7125 100644 >>> --- a/include/dm/read.h >>> +++ b/include/dm/read.h >>> @@ -113,6 +113,16 @@ fdt_addr_t dev_read_addr_index(struct udevice *dev, int index); >>> fdt_addr_t dev_read_addr(struct udevice *dev); >>> >>> /** >>> + * dev_read_addr_ptr() - Get the reg property of a device >>> + * as a pointer >>> + * >>> + * @dev: Device to read from >>> + * >>> + * @return pointer or NULL if not found >>> + */ >>> +void *dev_read_addr_ptr(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 >>> @@ -417,6 +427,11 @@ static inline fdt_addr_t dev_read_addr(struct udevice *dev) >>> return devfdt_get_addr(dev); >>> } >>> >>> +static inline void *dev_read_addr_ptr(struct udevice *dev) >>> +{ >>> + return devfdt_get_addr_ptr(dev); >>> +} >>> + >>> static inline fdt_addr_t dev_read_addr_size(struct udevice *dev, >>> const char *propname, >>> fdt_size_t *sizep) >>> >> > >
diff --git a/drivers/core/read.c b/drivers/core/read.c index 6acb333..065589a 100644 --- a/drivers/core/read.c +++ b/drivers/core/read.c @@ -57,6 +57,13 @@ fdt_addr_t dev_read_addr(struct udevice *dev) return dev_read_addr_index(dev, 0); } +void *dev_read_addr_ptr(struct udevice *dev) +{ + fdt_addr_t addr = dev_read_addr(dev); + + return (addr == FDT_ADDR_T_NONE) ? NULL : (void *)addr; +} + fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *property, fdt_size_t *sizep) { diff --git a/include/dm/read.h b/include/dm/read.h index 49d69c9..e7f7125 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -113,6 +113,16 @@ fdt_addr_t dev_read_addr_index(struct udevice *dev, int index); fdt_addr_t dev_read_addr(struct udevice *dev); /** + * dev_read_addr_ptr() - Get the reg property of a device + * as a pointer + * + * @dev: Device to read from + * + * @return pointer or NULL if not found + */ +void *dev_read_addr_ptr(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 @@ -417,6 +427,11 @@ static inline fdt_addr_t dev_read_addr(struct udevice *dev) return devfdt_get_addr(dev); } +static inline void *dev_read_addr_ptr(struct udevice *dev) +{ + return devfdt_get_addr_ptr(dev); +} + static inline fdt_addr_t dev_read_addr_size(struct udevice *dev, const char *propname, fdt_size_t *sizep)