Re: [U-Boot] [PATCH 1/3] Create API to map between CPU physical and bus addresses

2015-03-25 Thread Marek Vasut
On Wednesday, March 25, 2015 at 03:07:33 AM, Stephen Warren wrote:
 On some SoCs, DMA-capable peripherals see a different address space to
 the CPU's physical address space. Create an API to allow platform-agnostic
 drivers to convert between the two address spaces when programming DMA
 operations.
 
 This API will exist on all platforms, but will have a dummy implementation
 when this feature is not required. Other platforms will enable
 CONFIG_PHYS_TO_BUS and provide the required implementation.
 
 Signed-off-by: Stephen Warren swar...@wwwdotorg.org

Applied to -next, thanks!

btw. can't you use __weak here instead of a new ifdef macro (which is not 
documented btw)?

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/3] Create API to map between CPU physical and bus addresses

2015-03-25 Thread Stephen Warren

On 03/25/2015 05:55 AM, Marek Vasut wrote:

On Wednesday, March 25, 2015 at 03:07:33 AM, Stephen Warren wrote:

On some SoCs, DMA-capable peripherals see a different address space to
the CPU's physical address space. Create an API to allow platform-agnostic
drivers to convert between the two address spaces when programming DMA
operations.

This API will exist on all platforms, but will have a dummy implementation
when this feature is not required. Other platforms will enable
CONFIG_PHYS_TO_BUS and provide the required implementation.

Signed-off-by: Stephen Warren swar...@wwwdotorg.org


Applied to -next, thanks!

btw. can't you use __weak here instead of a new ifdef macro (which is not
documented btw)?


__weak wont' work with inlines, which I used to ensure zero code 
overhead in the case the functions aren't needed. If we were OK with 
calling a no-op function in all cases, we could indeed provide a weak 
default implementation and get rid of the ifdef.


The new option is documented in the Kconfig file. I assume we don't need 
to document options in multiple places (both Kconfig and README), since 
if we do, the documentation is bound to become inconsistent in those two 
places. Hopefully README goes away once everything is in Kconfig.

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/3] Create API to map between CPU physical and bus addresses

2015-03-25 Thread Marek Vasut
On Wednesday, March 25, 2015 at 03:40:28 PM, Stephen Warren wrote:
 On 03/25/2015 05:55 AM, Marek Vasut wrote:
  On Wednesday, March 25, 2015 at 03:07:33 AM, Stephen Warren wrote:
  On some SoCs, DMA-capable peripherals see a different address space to
  the CPU's physical address space. Create an API to allow
  platform-agnostic drivers to convert between the two address spaces
  when programming DMA operations.
  
  This API will exist on all platforms, but will have a dummy
  implementation when this feature is not required. Other platforms will
  enable
  CONFIG_PHYS_TO_BUS and provide the required implementation.
  
  Signed-off-by: Stephen Warren swar...@wwwdotorg.org
  
  Applied to -next, thanks!
  
  btw. can't you use __weak here instead of a new ifdef macro (which is not
  documented btw)?
 
 __weak wont' work with inlines, which I used to ensure zero code
 overhead in the case the functions aren't needed. If we were OK with
 calling a no-op function in all cases, we could indeed provide a weak
 default implementation and get rid of the ifdef.

OK, makes sense.

 The new option is documented in the Kconfig file. I assume we don't need
 to document options in multiple places (both Kconfig and README), since
 if we do, the documentation is bound to become inconsistent in those two
 places. Hopefully README goes away once everything is in Kconfig.

Yup, agreed.

Thanks for clearing this up :)

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 1/3] Create API to map between CPU physical and bus addresses

2015-03-24 Thread Stephen Warren
On some SoCs, DMA-capable peripherals see a different address space to
the CPU's physical address space. Create an API to allow platform-agnostic
drivers to convert between the two address spaces when programming DMA
operations.

This API will exist on all platforms, but will have a dummy implementation
when this feature is not required. Other platforms will enable
CONFIG_PHYS_TO_BUS and provide the required implementation.

Signed-off-by: Stephen Warren swar...@wwwdotorg.org
---
These patches depend on previous DWC2 rework that's in the topic/dwc2
branch of the USB repo.

These patches conflict with patches Masahiro has posted to move
arch/arm/cpu/arm1176/bcm2835 to arch/arm/mach-bcm283x(?).

I expect I'll have to rebase this series after the upcoming release once
those two things are merged into u-boot.git. Still, reviews could begin
before that.
---
 drivers/Kconfig|  8 
 include/phys2bus.h | 25 +
 2 files changed, 33 insertions(+)
 create mode 100644 include/phys2bus.h

diff --git a/drivers/Kconfig b/drivers/Kconfig
index dcce532e2df2..941aa0c2612a 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -53,3 +53,11 @@ source drivers/crypto/Kconfig
 source drivers/thermal/Kconfig
 
 endmenu
+
+config PHYS_TO_BUS
+   bool
+   help
+ Some SoCs use a different address map for CPU physical addresses and
+ peripheral DMA master accesses. If yours does, select this option in
+ your platform's Kconfig, and implement the appropriate mapping
+ functions in your platform's support code.
diff --git a/include/phys2bus.h b/include/phys2bus.h
new file mode 100644
index ..87b6d69aa617
--- /dev/null
+++ b/include/phys2bus.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2015 Stephen Warren
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef _BUS_ADDR_H
+#define _BUS_ADDR_H
+
+#ifdef CONFIG_PHYS_TO_BUS
+unsigned long phys_to_bus(unsigned long phys);
+unsigned long bus_to_phys(unsigned long bus);
+#else
+static inline unsigned long phys_to_bus(unsigned long phys)
+{
+   return phys;
+}
+
+static inline unsigned long bus_to_phys(unsigned long bus)
+{
+   return bus;
+}
+#endif
+
+#endif
-- 
1.9.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot