diff mbox series

[v4,08/13] dm: Introduce dev_phys_to_bus()/dev_bus_to_phys()

Message ID 20201222123548.31680-9-nsaenzjulienne@suse.de
State Superseded
Delegated to: Matthias Brugger
Headers show
Series Raspberry Pi 400/Compute Module 4 support | expand

Commit Message

Nicolas Saenz Julienne Dec. 22, 2020, 12:35 p.m. UTC
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>

---
Changes since v2:
 - Use CONFIG_DM_DMA

 include/phys2bus.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Stefan Roese Dec. 22, 2020, 3:27 p.m. UTC | #1
On 22.12.20 13:35, Nicolas Saenz Julienne wrote:
> 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>

Thanks,
Stefan

> ---
> Changes since v2:
>   - Use CONFIG_DM_DMA
> 
>   include/phys2bus.h | 16 ++++++++++++++++
>   1 file changed, 16 insertions(+)
> 
> diff --git a/include/phys2bus.h b/include/phys2bus.h
> index dc9b8e5a25..516d630aea 100644
> --- a/include/phys2bus.h
> +++ b/include/phys2bus.h
> @@ -21,4 +21,20 @@ static inline unsigned long bus_to_phys(unsigned long bus)
>   }
>   #endif
>   
> +#if CONFIG_IS_ENABLED(DM_DMA)
> +#include <dm/device.h>
> +
> +static inline dma_addr_t dev_phys_to_bus(struct udevice *dev,
> +					 phys_addr_t phys)
> +{
> +	return phys - dev->dma_offset;
> +}
> +
> +static inline phys_addr_t dev_bus_to_phys(struct udevice *dev,
> +					  dma_addr_t bus)
> +{
> +	return bus + dev->dma_offset;
> +}
> +#endif
> +
>   #endif
> 


Viele Grüße,
Stefan
diff mbox series

Patch

diff --git a/include/phys2bus.h b/include/phys2bus.h
index dc9b8e5a25..516d630aea 100644
--- a/include/phys2bus.h
+++ b/include/phys2bus.h
@@ -21,4 +21,20 @@  static inline unsigned long bus_to_phys(unsigned long bus)
 }
 #endif
 
+#if CONFIG_IS_ENABLED(DM_DMA)
+#include <dm/device.h>
+
+static inline dma_addr_t dev_phys_to_bus(struct udevice *dev,
+					 phys_addr_t phys)
+{
+	return phys - dev->dma_offset;
+}
+
+static inline phys_addr_t dev_bus_to_phys(struct udevice *dev,
+					  dma_addr_t bus)
+{
+	return bus + dev->dma_offset;
+}
+#endif
+
 #endif