Linux uses some kind of MFD scheme for the devices in the SLCR register
range, which involves adding the parent register base address to the
register offset of the child devices, as described in DT. This needs
non-standard code in each of those child device drivers.

Instead of replicating this weird driver code, fix up the SLCR parent
device DT ranges to do the translation.

Signed-off-by: Lucas Stach <d...@lynxeye.de>
---
 arch/arm/dts/zynq-7000.dtsi | 4 ++++
 arch/arm/dts/zynq-zed.dts   | 1 +
 2 files changed, 5 insertions(+)
 create mode 100644 arch/arm/dts/zynq-7000.dtsi

diff --git a/arch/arm/dts/zynq-7000.dtsi b/arch/arm/dts/zynq-7000.dtsi
new file mode 100644
index 000000000000..a4555a7a1b6c
--- /dev/null
+++ b/arch/arm/dts/zynq-7000.dtsi
@@ -0,0 +1,4 @@
+
+&slcr {
+       ranges = <0x0 0xf8000000 0x1000>;
+};
diff --git a/arch/arm/dts/zynq-zed.dts b/arch/arm/dts/zynq-zed.dts
index 52d68332499a..9839d810b616 100644
--- a/arch/arm/dts/zynq-zed.dts
+++ b/arch/arm/dts/zynq-zed.dts
@@ -1,4 +1,5 @@
 #include <arm/zynq-zed.dts>
+#include "zynq-7000.dtsi"
 
 / {
        chosen {
-- 
2.23.0


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to