2021-02-17 07:37:34 +00:00
|
|
|
From c9ac0a0da12755016d1fbfe2a31bab0ddcdddfda Mon Sep 17 00:00:00 2001
|
2020-12-24 16:44:52 +00:00
|
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
2021-02-17 07:37:34 +00:00
|
|
|
Date: Tue, 12 Jan 2021 13:55:26 +0100
|
2020-12-24 16:44:52 +00:00
|
|
|
Subject: [PATCH] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys()
|
|
|
|
|
|
|
|
These functions, instead of relying on hard-coded platform-specific
|
|
|
|
address translations, make use of the DMA constraints provided by the DM
|
|
|
|
core. This allows for per-device translations.
|
|
|
|
|
|
|
|
We can't yet get rid of the legacy phys_to_bus()/bus_to_phys()
|
|
|
|
implementations as some of its users are not integrated into the
|
|
|
|
device model.
|
|
|
|
|
|
|
|
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
|
|
Reviewed-by: Simon Glass <sjg@chromium.org>
|
|
|
|
Reviewed-by: Stefan Roese <sr@denx.de>
|
2021-02-17 07:37:34 +00:00
|
|
|
Tested-by: Peter Robinson <pbrobinson@gmail.com>
|
2020-12-24 16:44:52 +00:00
|
|
|
---
|
|
|
|
include/phys2bus.h | 17 +++++++++++++++++
|
|
|
|
1 file changed, 17 insertions(+)
|
|
|
|
|
|
|
|
diff --git a/include/phys2bus.h b/include/phys2bus.h
|
|
|
|
index dc9b8e5a25..866b8b51a8 100644
|
|
|
|
--- a/include/phys2bus.h
|
|
|
|
+++ b/include/phys2bus.h
|
|
|
|
@@ -21,4 +21,21 @@ static inline unsigned long bus_to_phys(unsigned long bus)
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
+#if CONFIG_IS_ENABLED(DM)
|
|
|
|
+#include <dm/device.h>
|
|
|
|
+
|
|
|
|
+static inline dma_addr_t dev_phys_to_bus(struct udevice *dev, phys_addr_t phys)
|
|
|
|
+{
|
|
|
|
+ return phys - dev_get_dma_offset(dev);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static inline phys_addr_t dev_bus_to_phys(struct udevice *dev, dma_addr_t bus)
|
|
|
|
+{
|
|
|
|
+ return bus + dev_get_dma_offset(dev);
|
|
|
|
+}
|
|
|
|
+#else
|
|
|
|
+#define dev_phys_to_bus(_, _addr) _addr
|
|
|
|
+#define dev_bus_to_phys(_, _addr) _addr
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
#endif
|