diff --git a/drivers/core/device.c b/drivers/core/device.c
index 269087a084cf6edbf1637de12602b5773c79e394..1322991d6c7b6e0599679518543da7c5cdb7c5ad 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -673,6 +673,11 @@ fdt_addr_t dev_get_addr(struct udevice *dev)
 	return dev_get_addr_index(dev, 0);
 }
 
+void *dev_get_addr_ptr(struct udevice *dev)
+{
+	return (void *)(uintptr_t)dev_get_addr_index(dev, 0);
+}
+
 bool device_has_children(struct udevice *dev)
 {
 	return !list_empty(&dev->child_head);
diff --git a/include/dm/device.h b/include/dm/device.h
index dad7591dfacb10c8231fa7867eaa9df6607ac388..8970fc015c7eb1158644110338d8e6f181181d1d 100644
--- a/include/dm/device.h
+++ b/include/dm/device.h
@@ -453,6 +453,16 @@ int device_find_next_child(struct udevice **devp);
  */
 fdt_addr_t dev_get_addr(struct udevice *dev);
 
+/**
+ * dev_get_addr_ptr() - Return pointer to the 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 *dev_get_addr_ptr(struct udevice *dev);
+
 /**
  * dev_get_addr_index() - Get the indexed reg property of a device
  *