723943821b
OBS-URL: https://build.opensuse.org/request/show/858525 OBS-URL: https://build.opensuse.org/package/show/hardware:boot/u-boot?expand=0&rev=118
54 lines
1.5 KiB
Diff
54 lines
1.5 KiB
Diff
From 71105045bc57b3fa5a9970d98c59f56ab06cbf80 Mon Sep 17 00:00:00 2001
|
|
From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
|
|
Date: Thu, 19 Nov 2020 17:15:31 +0100
|
|
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>
|
|
|
|
---
|
|
Changes since v4:
|
|
- Introduce macros for !DM case to make API usage cleaner
|
|
|
|
Changes since v2:
|
|
- Use CONFIG_DM_DMA
|
|
---
|
|
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
|