From 0368f0dd759e2a55f55eea62c3af504a52e10c48 Mon Sep 17 00:00:00 2001 From: Philipp Tomsich Date: Mon, 11 Sep 2017 22:04:12 +0200 Subject: [PATCH] dm: core: add dev_read_addr_ptr() 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 Acked-by: Philipp Tomsich Reviewed-by: Simon Glass --- 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 6acb33388f..065589a6ab 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 49d69c990f..e7f71256a8 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -112,6 +112,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 * @@ -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) -- 2.39.5