All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-25  0:05 ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

Hi all,

Here are four patches to make am437x and am335x l4 devices to probe with
ti-sysc driver similar to what we've already done for omap4. The related
legacy hwmod platform data will be removed few merge cycles later.

There are still dependencies to Tero's clkctrl changes and for ti-sysc
drivers changes. So these patches are based on on v4.19-rc3 merged with
my omap-for-v4.20/dt branch plus the following additional series of
patches:

[PATCH 00/11] clk: ti: clkctrl data split based on clkdm boundaries
[PATCH 0/3] ARM: dts: am3/am4/dra7 clkctrl data conversion
[PATCH 0/4] TI sysc driver updates for am335x and am437x

v4.19-rc3 is needed for commit 18eb8aea7fb2 ("net: ethernet:
cpsw-phy-sel: prefer phandle for phy sel") and omap-for-v4.20/dt
is needed to avoid conflicts with clean-up.

I've also pushed out a temporary testing branch for people to test
as omap-for-v4.20/dt-ti-sysc-tmp-testing [0][1].

Regards,

Tony

[0] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git omap-for-v4.20/dt-ti-sysc-tmp-testing
[1] https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing


Tony Lindgren (4):
  ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data
  ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
  ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc

 arch/arm/boot/dts/am335x-shc.dts |    2 +-
 arch/arm/boot/dts/am33xx-l4.dtsi | 2132 +++++++++++++++++++++++++
 arch/arm/boot/dts/am33xx.dtsi    |  623 +-------
 arch/arm/boot/dts/am4372.dtsi    |  876 +----------
 arch/arm/boot/dts/am437x-l4.dtsi | 2499 ++++++++++++++++++++++++++++++
 5 files changed, 4651 insertions(+), 1481 deletions(-)
 create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi
 create mode 100644 arch/arm/boot/dts/am437x-l4.dtsi

-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-25  0:05 ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-arm-kernel

Hi all,

Here are four patches to make am437x and am335x l4 devices to probe with
ti-sysc driver similar to what we've already done for omap4. The related
legacy hwmod platform data will be removed few merge cycles later.

There are still dependencies to Tero's clkctrl changes and for ti-sysc
drivers changes. So these patches are based on on v4.19-rc3 merged with
my omap-for-v4.20/dt branch plus the following additional series of
patches:

[PATCH 00/11] clk: ti: clkctrl data split based on clkdm boundaries
[PATCH 0/3] ARM: dts: am3/am4/dra7 clkctrl data conversion
[PATCH 0/4] TI sysc driver updates for am335x and am437x

v4.19-rc3 is needed for commit 18eb8aea7fb2 ("net: ethernet:
cpsw-phy-sel: prefer phandle for phy sel") and omap-for-v4.20/dt
is needed to avoid conflicts with clean-up.

I've also pushed out a temporary testing branch for people to test
as omap-for-v4.20/dt-ti-sysc-tmp-testing [0][1].

Regards,

Tony

[0] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git omap-for-v4.20/dt-ti-sysc-tmp-testing
[1] https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing


Tony Lindgren (4):
  ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data
  ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
  ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc

 arch/arm/boot/dts/am335x-shc.dts |    2 +-
 arch/arm/boot/dts/am33xx-l4.dtsi | 2132 +++++++++++++++++++++++++
 arch/arm/boot/dts/am33xx.dtsi    |  623 +-------
 arch/arm/boot/dts/am4372.dtsi    |  876 +----------
 arch/arm/boot/dts/am437x-l4.dtsi | 2499 ++++++++++++++++++++++++++++++
 5 files changed, 4651 insertions(+), 1481 deletions(-)
 create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi
 create mode 100644 arch/arm/boot/dts/am437x-l4.dtsi

-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 1/4] ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data
  2018-09-25  0:05 ` Tony Lindgren
@ 2018-09-25  0:05   ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
for l4 interconnect instances with the related ti-sysc interconnect
module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.

Using ti-sysc driver binding allows us to start dropping legacy platform
data in arch/arm/mach-omap2/omap*hwmod*data.c files later on in favor of
ti-sysc dts data.

This data is generated based on platform data from a booted system
and the interconnect acces protection registers for ranges. To avoid
regressions, we initially validate the device tree provided data
against the existing platform data on boot.

Note that we cannot yet include this file from the SoC dtsi file until
the child devices are moved to their proper locations in the
interconnect hierarchy in the following patch. Otherwise we would have
the each module probed twice.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am437x-l4.dtsi | 1662 ++++++++++++++++++++++++++++++
 1 file changed, 1662 insertions(+)
 create mode 100644 arch/arm/boot/dts/am437x-l4.dtsi

diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
new file mode 100644
--- /dev/null
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -0,0 +1,1662 @@
+&l4_wkup {						/* 0x44c00000 */
+	compatible = "ti,am4-l4-wkup", "simple-bus";
+	reg = <0x44c00000 0x800>,
+	      <0x44c00800 0x800>,
+	      <0x44c01000 0x400>,
+	      <0x44c01400 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x44c00000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x44d00000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x44e00000 0x100000>;	/* segment 2 */
+
+	segment@0 {					/* 0x44c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>;	/* ap 3 */
+	};
+
+	segment@100000 {					/* 0x44d00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00100000 0x004000>,	/* ap 4 */
+			 <0x00004000 0x00104000 0x001000>,	/* ap 5 */
+			 <0x00080000 0x00180000 0x002000>,	/* ap 6 */
+			 <0x00082000 0x00182000 0x001000>,	/* ap 7 */
+			 <0x000f0000 0x001f0000 0x010000>;	/* ap 8 */
+
+		target-module@0 {			/* 0x44d00000, ap 4 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x4000>;
+		};
+
+		target-module@80000 {			/* 0x44d80000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x2000>;
+		};
+
+		target-module@f0000 {			/* 0x44df0000, ap 8 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xf0000 0x10000>;
+		};
+	};
+
+	segment@200000 {					/* 0x44e00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00200000 0x001000>,	/* ap 9 */
+			 <0x00003000 0x00203000 0x001000>,	/* ap 10 */
+			 <0x00004000 0x00204000 0x001000>,	/* ap 11 */
+			 <0x00005000 0x00205000 0x001000>,	/* ap 12 */
+			 <0x00006000 0x00206000 0x001000>,	/* ap 13 */
+			 <0x00007000 0x00207000 0x001000>,	/* ap 14 */
+			 <0x00008000 0x00208000 0x001000>,	/* ap 15 */
+			 <0x00009000 0x00209000 0x001000>,	/* ap 16 */
+			 <0x0000a000 0x0020a000 0x001000>,	/* ap 17 */
+			 <0x0000b000 0x0020b000 0x001000>,	/* ap 18 */
+			 <0x0000c000 0x0020c000 0x001000>,	/* ap 19 */
+			 <0x0000d000 0x0020d000 0x001000>,	/* ap 20 */
+			 <0x0000f000 0x0020f000 0x001000>,	/* ap 21 */
+			 <0x00010000 0x00210000 0x010000>,	/* ap 22 */
+			 <0x00030000 0x00230000 0x001000>,	/* ap 23 */
+			 <0x00031000 0x00231000 0x001000>,	/* ap 24 */
+			 <0x00032000 0x00232000 0x001000>,	/* ap 25 */
+			 <0x00033000 0x00233000 0x001000>,	/* ap 26 */
+			 <0x00034000 0x00234000 0x001000>,	/* ap 27 */
+			 <0x00035000 0x00235000 0x001000>,	/* ap 28 */
+			 <0x00036000 0x00236000 0x001000>,	/* ap 29 */
+			 <0x00037000 0x00237000 0x001000>,	/* ap 30 */
+			 <0x00038000 0x00238000 0x001000>,	/* ap 31 */
+			 <0x00039000 0x00239000 0x001000>,	/* ap 32 */
+			 <0x0003a000 0x0023a000 0x001000>,	/* ap 33 */
+			 <0x0003e000 0x0023e000 0x001000>,	/* ap 34 */
+			 <0x0003f000 0x0023f000 0x001000>,	/* ap 35 */
+			 <0x00040000 0x00240000 0x040000>,	/* ap 36 */
+			 <0x00080000 0x00280000 0x001000>,	/* ap 37 */
+			 <0x00088000 0x00288000 0x008000>,	/* ap 38 */
+			 <0x00092000 0x00292000 0x001000>,	/* ap 39 */
+			 <0x00086000 0x00286000 0x001000>,	/* ap 40 */
+			 <0x00087000 0x00287000 0x001000>,	/* ap 41 */
+			 <0x00090000 0x00290000 0x001000>,	/* ap 42 */
+			 <0x00091000 0x00291000 0x001000>;	/* ap 43 */
+
+		target-module@3000 {			/* 0x44e03000, ap 10 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+
+		target-module@5000 {			/* 0x44e05000, ap 12 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x5000 0x1000>;
+		};
+
+		target-module@7000 {			/* 0x44e07000, ap 14 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio1";
+			reg = <0x7000 0x4>,
+			      <0x7010 0x4>,
+			      <0x7114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_GPIO1_CLKCTRL 0>,
+				 <&l4_wkup_clkctrl AM4_L4_WKUP_GPIO1_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x7000 0x1000>;
+		};
+
+		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart1";
+			reg = <0x9050 0x4>,
+			      <0x9054 0x4>,
+			      <0x9058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_UART1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9000 0x1000>;
+		};
+
+		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c1";
+			reg = <0xb000 0x8>,
+			      <0xb010 0x8>,
+			      <0xb090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_I2C1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb000 0x1000>;
+		};
+
+		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "adc_tsc";
+			reg = <0xd000 0x4>,
+			      <0xd010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l3s_tsc_clkdm */
+			clocks = <&l3s_tsc_clkctrl AM4_L3S_TSC_ADC_TSC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd000 0x1000>;
+		};
+
+		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x10000>;
+		};
+
+		target-module@31000 {			/* 0x44e31000, ap 24 40.0 */
+			compatible = "ti,sysc-omap2-timer", "ti,sysc";
+			ti,hwmods = "timer1";
+			reg = <0x31000 0x4>,
+			      <0x31010 0x4>,
+			      <0x31014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_TIMER1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x31000 0x1000>;
+		};
+
+		target-module@33000 {			/* 0x44e33000, ap 26 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x33000 0x1000>;
+		};
+
+		target-module@35000 {			/* 0x44e35000, ap 28 50.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "wd_timer2";
+			reg = <0x35000 0x4>,
+			      <0x35010 0x4>,
+			      <0x35014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
+					 SYSC_OMAP2_SOFTRESET)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_WD_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x35000 0x1000>;
+		};
+
+		target-module@37000 {			/* 0x44e37000, ap 30 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x37000 0x1000>;
+		};
+
+		target-module@39000 {			/* 0x44e39000, ap 32 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x39000 0x1000>;
+		};
+
+		target-module@3e000 {			/* 0x44e3e000, ap 34 60.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "rtc";
+			reg = <0x3e074 0x4>,
+			      <0x3e078 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
+			clocks = <&l4_rtc_clkctrl AM4_L4_RTC_RTC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module@40000 {			/* 0x44e40000, ap 36 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x40000>;
+		};
+
+		target-module@86000 {			/* 0x44e86000, ap 40 70.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "counter_32k";
+			reg = <0x86000 0x4>,
+			      <0x86004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_aon_clkdm */
+			clocks = <&l4_wkup_aon_clkctrl AM4_L4_WKUP_AON_COUNTER_32K_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x86000 0x1000>;
+		};
+
+		target-module@88000 {			/* 0x44e88000, ap 38 12.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00088000 0x00008000>,
+				 <0x00008000 0x00090000 0x00001000>,
+				 <0x00009000 0x00091000 0x00001000>;
+		};
+	};
+};
+
+&l4_fast {					/* 0x4a000000 */
+	compatible = "ti,am4-l4-fast", "simple-bus";
+	reg = <0x4a000000 0x800>,
+	      <0x4a000800 0x800>,
+	      <0x4a001000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4a000000 0x1000000>;	/* segment 0 */
+
+	segment@0 {					/* 0x4a000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00100000 0x00100000 0x008000>,	/* ap 3 */
+			 <0x00108000 0x00108000 0x001000>,	/* ap 4 */
+			 <0x00400000 0x00400000 0x002000>,	/* ap 5 */
+			 <0x00402000 0x00402000 0x001000>,	/* ap 6 */
+			 <0x00200000 0x00200000 0x080000>,	/* ap 7 */
+			 <0x00280000 0x00280000 0x001000>;	/* ap 8 */
+
+		target-module@100000 {			/* 0x4a100000, ap 3 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x100000 0x8000>;
+		};
+
+		target-module@200000 {			/* 0x4a200000, ap 7 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x200000 0x80000>;
+		};
+
+		target-module@400000 {			/* 0x4a400000, ap 5 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x400000 0x2000>;
+		};
+	};
+};
+
+&l4_per {					/* 0x48000000 */
+	compatible = "ti,am4-l4-per", "simple-bus";
+	reg = <0x48000000 0x800>,
+	      <0x48000800 0x800>,
+	      <0x48001000 0x400>,
+	      <0x48001400 0x400>,
+	      <0x48001800 0x400>,
+	      <0x48001c00 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
+		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+
+	segment@0 {					/* 0x48000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
+			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
+			 <0x00001c00 0x00001c00 0x000400>,	/* ap 5 */
+			 <0x00008000 0x00008000 0x001000>,	/* ap 6 */
+			 <0x00009000 0x00009000 0x001000>,	/* ap 7 */
+			 <0x00022000 0x00022000 0x001000>,	/* ap 8 */
+			 <0x00023000 0x00023000 0x001000>,	/* ap 9 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 10 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 11 */
+			 <0x0002a000 0x0002a000 0x001000>,	/* ap 12 */
+			 <0x0002b000 0x0002b000 0x001000>,	/* ap 13 */
+			 <0x00038000 0x00038000 0x002000>,	/* ap 14 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 15 */
+			 <0x0003c000 0x0003c000 0x002000>,	/* ap 16 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 17 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 18 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 19 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 20 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 21 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 22 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 23 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 24 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 25 */
+			 <0x00048000 0x00048000 0x001000>,	/* ap 26 */
+			 <0x00049000 0x00049000 0x001000>,	/* ap 27 */
+			 <0x0004c000 0x0004c000 0x001000>,	/* ap 28 */
+			 <0x0004d000 0x0004d000 0x001000>,	/* ap 29 */
+			 <0x00060000 0x00060000 0x001000>,	/* ap 30 */
+			 <0x00061000 0x00061000 0x001000>,	/* ap 31 */
+			 <0x00080000 0x00080000 0x010000>,	/* ap 32 */
+			 <0x00090000 0x00090000 0x001000>,	/* ap 33 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 65 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 66 */
+			 <0x0004a000 0x0004a000 0x001000>,	/* ap 71 */
+			 <0x0004b000 0x0004b000 0x001000>,	/* ap 72 */
+			 <0x000c8000 0x000c8000 0x001000>,	/* ap 73 */
+			 <0x000c9000 0x000c9000 0x001000>,	/* ap 74 */
+			 <0x000ca000 0x000ca000 0x001000>,	/* ap 77 */
+			 <0x000cb000 0x000cb000 0x001000>,	/* ap 78 */
+			 <0x00034000 0x00034000 0x001000>,	/* ap 80 */
+			 <0x00035000 0x00035000 0x001000>,	/* ap 81 */
+			 <0x00036000 0x00036000 0x001000>,	/* ap 84 */
+			 <0x00037000 0x00037000 0x001000>;	/* ap 85 */
+
+		target-module@8000 {			/* 0x48008000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module@22000 {			/* 0x48022000, ap 8 0a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart2";
+			reg = <0x22050 0x4>,
+			      <0x22054 0x4>,
+			      <0x22058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x48024000, ap 10 1c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart3";
+			reg = <0x24050 0x4>,
+			      <0x24054 0x4>,
+			      <0x24058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module@2a000 {			/* 0x4802a000, ap 12 22.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c2";
+			reg = <0x2a000 0x8>,
+			      <0x2a010 0x8>,
+			      <0x2a090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_I2C2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2a000 0x1000>;
+		};
+
+		target-module@30000 {			/* 0x48030000, ap 65 08.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi0";
+			reg = <0x30000 0x4>,
+			      <0x30110 0x4>,
+			      <0x30114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module@34000 {			/* 0x48034000, ap 80 56.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x34000 0x1000>;
+		};
+
+		target-module@36000 {			/* 0x48036000, ap 84 3e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x36000 0x1000>;
+		};
+
+		target-module@38000 {			/* 0x48038000, ap 14 04.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp0";
+			reg = <0x38000 0x4>,
+			      <0x38004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_MCASP0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x2000>;
+		};
+
+		target-module@3c000 {			/* 0x4803c000, ap 16 2a.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp1";
+			reg = <0x3c000 0x4>,
+			      <0x3c004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_MCASP1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x2000>;
+		};
+
+		target-module@40000 {			/* 0x48040000, ap 18 1e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer2";
+			reg = <0x40000 0x4>,
+			      <0x40010 0x4>,
+			      <0x40014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module@42000 {			/* 0x48042000, ap 20 24.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer3";
+			reg = <0x42000 0x4>,
+			      <0x42010 0x4>,
+			      <0x42014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module@44000 {			/* 0x48044000, ap 22 26.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer4";
+			reg = <0x44000 0x4>,
+			      <0x44010 0x4>,
+			      <0x44014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module@46000 {			/* 0x48046000, ap 24 28.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer5";
+			reg = <0x46000 0x4>,
+			      <0x46010 0x4>,
+			      <0x46014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+
+		target-module@48000 {			/* 0x48048000, ap 26 1a.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer6";
+			reg = <0x48000 0x4>,
+			      <0x48010 0x4>,
+			      <0x48014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x48000 0x1000>;
+		};
+
+		target-module@4a000 {			/* 0x4804a000, ap 71 48.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer7";
+			reg = <0x4a000 0x4>,
+			      <0x4a010 0x4>,
+			      <0x4a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER7_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4a000 0x1000>;
+		};
+
+		target-module@4c000 {			/* 0x4804c000, ap 28 36.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio2";
+			reg = <0x4c000 0x4>,
+			      <0x4c010 0x4>,
+			      <0x4c114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO2_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO2_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x1000>;
+		};
+
+		target-module@60000 {			/* 0x48060000, ap 30 14.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc1";
+			reg = <0x602fc 0x4>,
+			      <0x60110 0x4>,
+			      <0x60114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_MMC1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x60000 0x1000>;
+		};
+
+		target-module@80000 {			/* 0x48080000, ap 32 18.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "elm";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>,
+			      <0x80014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_ELM_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x10000>;
+		};
+
+		target-module@c8000 {			/* 0x480c8000, ap 73 06.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "mailbox";
+			reg = <0xc8000 0x4>,
+			      <0xc8010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_MAILBOX_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc8000 0x1000>;
+		};
+
+		target-module@ca000 {			/* 0x480ca000, ap 77 38.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spinlock";
+			reg = <0xca000 0x4>,
+			      <0xca010 0x4>,
+			      <0xca014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPINLOCK_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xca000 0x1000>;
+		};
+	};
+
+	segment@100000 {					/* 0x48100000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0008c000 0x0018c000 0x001000>,	/* ap 34 */
+			 <0x0008d000 0x0018d000 0x001000>,	/* ap 35 */
+			 <0x0008e000 0x0018e000 0x001000>,	/* ap 36 */
+			 <0x0008f000 0x0018f000 0x001000>,	/* ap 37 */
+			 <0x0009c000 0x0019c000 0x001000>,	/* ap 38 */
+			 <0x0009d000 0x0019d000 0x001000>,	/* ap 39 */
+			 <0x000a6000 0x001a6000 0x001000>,	/* ap 40 */
+			 <0x000a7000 0x001a7000 0x001000>,	/* ap 41 */
+			 <0x000a8000 0x001a8000 0x001000>,	/* ap 42 */
+			 <0x000a9000 0x001a9000 0x001000>,	/* ap 43 */
+			 <0x000aa000 0x001aa000 0x001000>,	/* ap 44 */
+			 <0x000ab000 0x001ab000 0x001000>,	/* ap 45 */
+			 <0x000ac000 0x001ac000 0x001000>,	/* ap 46 */
+			 <0x000ad000 0x001ad000 0x001000>,	/* ap 47 */
+			 <0x000ae000 0x001ae000 0x001000>,	/* ap 48 */
+			 <0x000af000 0x001af000 0x001000>,	/* ap 49 */
+			 <0x000cc000 0x001cc000 0x002000>,	/* ap 50 */
+			 <0x000ce000 0x001ce000 0x002000>,	/* ap 51 */
+			 <0x000d0000 0x001d0000 0x002000>,	/* ap 52 */
+			 <0x000d2000 0x001d2000 0x002000>,	/* ap 53 */
+			 <0x000d8000 0x001d8000 0x001000>,	/* ap 54 */
+			 <0x000d9000 0x001d9000 0x001000>,	/* ap 55 */
+			 <0x000a0000 0x001a0000 0x001000>,	/* ap 67 */
+			 <0x000a1000 0x001a1000 0x001000>,	/* ap 68 */
+			 <0x000a2000 0x001a2000 0x001000>,	/* ap 69 */
+			 <0x000a3000 0x001a3000 0x001000>,	/* ap 70 */
+			 <0x000a4000 0x001a4000 0x001000>,	/* ap 92 */
+			 <0x000a5000 0x001a5000 0x001000>,	/* ap 93 */
+			 <0x000c1000 0x001c1000 0x001000>,	/* ap 94 */
+			 <0x000c2000 0x001c2000 0x001000>;	/* ap 95 */
+
+		target-module@8c000 {			/* 0x4818c000, ap 34 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8c000 0x1000>;
+		};
+
+		target-module@8e000 {			/* 0x4818e000, ap 36 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8e000 0x1000>;
+		};
+
+		target-module@9c000 {			/* 0x4819c000, ap 38 52.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c3";
+			reg = <0x9c000 0x8>,
+			      <0x9c010 0x8>,
+			      <0x9c090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_I2C3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9c000 0x1000>;
+		};
+
+		target-module@a0000 {			/* 0x481a0000, ap 67 2c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi1";
+			reg = <0xa0000 0x4>,
+			      <0xa0110 0x4>,
+			      <0xa0114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x1000>;
+		};
+
+		target-module@a2000 {			/* 0x481a2000, ap 69 2e.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi2";
+			reg = <0xa2000 0x4>,
+			      <0xa2110 0x4>,
+			      <0xa2114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa2000 0x1000>;
+		};
+
+		target-module@a4000 {			/* 0x481a4000, ap 92 62.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi3";
+			reg = <0xa4000 0x4>,
+			      <0xa4110 0x4>,
+			      <0xa4114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa4000 0x1000>;
+		};
+
+		target-module@a6000 {			/* 0x481a6000, ap 40 16.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart4";
+			reg = <0xa6050 0x4>,
+			      <0xa6054 0x4>,
+			      <0xa6058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa6000 0x1000>;
+		};
+
+		target-module@a8000 {			/* 0x481a8000, ap 42 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart5";
+			reg = <0xa8050 0x4>,
+			      <0xa8054 0x4>,
+			      <0xa8058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x1000>;
+		};
+
+		target-module@aa000 {			/* 0x481aa000, ap 44 12.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart6";
+			reg = <0xaa050 0x4>,
+			      <0xaa054 0x4>,
+			      <0xaa058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xaa000 0x1000>;
+		};
+
+		target-module@ac000 {			/* 0x481ac000, ap 46 30.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio3";
+			reg = <0xac000 0x4>,
+			      <0xac010 0x4>,
+			      <0xac114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO3_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO3_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xac000 0x1000>;
+		};
+
+		target-module@ae000 {			/* 0x481ae000, ap 48 32.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio4";
+			reg = <0xae000 0x4>,
+			      <0xae010 0x4>,
+			      <0xae114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO4_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO4_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xae000 0x1000>;
+		};
+
+		target-module@c1000 {			/* 0x481c1000, ap 94 68.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer8";
+			reg = <0xc1000 0x4>,
+			      <0xc1010 0x4>,
+			      <0xc1014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER8_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc1000 0x1000>;
+		};
+
+		target-module@cc000 {			/* 0x481cc000, ap 50 46.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x2000>;
+		};
+
+		target-module@d0000 {			/* 0x481d0000, ap 52 3a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd0000 0x2000>;
+		};
+
+		target-module@d8000 {			/* 0x481d8000, ap 54 5e.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc2";
+			reg = <0xd82fc 0x4>,
+			      <0xd8110 0x4>,
+			      <0xd8114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_MMC2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd8000 0x1000>;
+		};
+	};
+
+	segment@200000 {					/* 0x48200000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	segment@300000 {					/* 0x48300000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00300000 0x001000>,	/* ap 56 */
+			 <0x00001000 0x00301000 0x001000>,	/* ap 57 */
+			 <0x00002000 0x00302000 0x001000>,	/* ap 58 */
+			 <0x00003000 0x00303000 0x001000>,	/* ap 59 */
+			 <0x00004000 0x00304000 0x001000>,	/* ap 60 */
+			 <0x00005000 0x00305000 0x001000>,	/* ap 61 */
+			 <0x00018000 0x00318000 0x004000>,	/* ap 62 */
+			 <0x0001c000 0x0031c000 0x001000>,	/* ap 63 */
+			 <0x00010000 0x00310000 0x002000>,	/* ap 64 */
+			 <0x00028000 0x00328000 0x001000>,	/* ap 75 */
+			 <0x00029000 0x00329000 0x001000>,	/* ap 76 */
+			 <0x00012000 0x00312000 0x001000>,	/* ap 79 */
+			 <0x00020000 0x00320000 0x001000>,	/* ap 82 */
+			 <0x00021000 0x00321000 0x001000>,	/* ap 83 */
+			 <0x00026000 0x00326000 0x001000>,	/* ap 86 */
+			 <0x00027000 0x00327000 0x001000>,	/* ap 87 */
+			 <0x0002a000 0x0032a000 0x000400>,	/* ap 88 */
+			 <0x0002c000 0x0032c000 0x001000>,	/* ap 89 */
+			 <0x00013000 0x00313000 0x001000>,	/* ap 90 */
+			 <0x00014000 0x00314000 0x001000>,	/* ap 91 */
+			 <0x00006000 0x00306000 0x001000>,	/* ap 96 */
+			 <0x00007000 0x00307000 0x001000>,	/* ap 97 */
+			 <0x00008000 0x00308000 0x001000>,	/* ap 98 */
+			 <0x00009000 0x00309000 0x001000>,	/* ap 99 */
+			 <0x0000a000 0x0030a000 0x001000>,	/* ap 100 */
+			 <0x0000b000 0x0030b000 0x001000>,	/* ap 101 */
+			 <0x0003d000 0x0033d000 0x001000>,	/* ap 102 */
+			 <0x0003e000 0x0033e000 0x001000>,	/* ap 103 */
+			 <0x0003f000 0x0033f000 0x001000>,	/* ap 104 */
+			 <0x00040000 0x00340000 0x001000>,	/* ap 105 */
+			 <0x00041000 0x00341000 0x001000>,	/* ap 106 */
+			 <0x00042000 0x00342000 0x001000>,	/* ap 107 */
+			 <0x00045000 0x00345000 0x001000>,	/* ap 108 */
+			 <0x00046000 0x00346000 0x001000>,	/* ap 109 */
+			 <0x00047000 0x00347000 0x001000>,	/* ap 110 */
+			 <0x00048000 0x00348000 0x001000>,	/* ap 111 */
+			 <0x000f2000 0x003f2000 0x002000>,	/* ap 112 */
+			 <0x000f4000 0x003f4000 0x001000>,	/* ap 113 */
+			 <0x0004c000 0x0034c000 0x002000>,	/* ap 114 */
+			 <0x0004e000 0x0034e000 0x001000>,	/* ap 115 */
+			 <0x00022000 0x00322000 0x001000>,	/* ap 116 */
+			 <0x00023000 0x00323000 0x001000>,	/* ap 117 */
+			 <0x000f0000 0x003f0000 0x001000>,	/* ap 118 */
+			 <0x0002a400 0x0032a400 0x000400>,	/* ap 119 */
+			 <0x0002a800 0x0032a800 0x000400>,	/* ap 120 */
+			 <0x0002ac00 0x0032ac00 0x000400>,	/* ap 121 */
+			 <0x0002b000 0x0032b000 0x001000>,	/* ap 122 */
+			 <0x00080000 0x00380000 0x020000>,	/* ap 123 */
+			 <0x000a0000 0x003a0000 0x001000>,	/* ap 124 */
+			 <0x000a8000 0x003a8000 0x008000>,	/* ap 125 */
+			 <0x000b0000 0x003b0000 0x001000>,	/* ap 126 */
+			 <0x000c0000 0x003c0000 0x020000>,	/* ap 127 */
+			 <0x000e0000 0x003e0000 0x001000>,	/* ap 128 */
+			 <0x000e8000 0x003e8000 0x008000>;	/* ap 129 */
+
+		target-module@0 {			/* 0x48300000, ap 56 40.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss0";
+			reg = <0x0 0x4>,
+			      <0x4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x1000>;
+		};
+
+		target-module@2000 {			/* 0x48302000, ap 58 4a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss1";
+			reg = <0x2000 0x4>,
+			      <0x2004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2000 0x1000>;
+		};
+
+		target-module@4000 {			/* 0x48304000, ap 60 44.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss2";
+			reg = <0x4000 0x4>,
+			      <0x4004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4000 0x1000>;
+		};
+
+		target-module@6000 {			/* 0x48306000, ap 96 58.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss3";
+			reg = <0x6000 0x4>,
+			      <0x6004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x6000 0x1000>;
+		};
+
+		target-module@8000 {			/* 0x48308000, ap 98 54.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss4";
+			reg = <0x8000 0x4>,
+			      <0x8004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module@a000 {			/* 0x4830a000, ap 100 60.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss5";
+			reg = <0xa000 0x4>,
+			      <0xa004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa000 0x1000>;
+		};
+
+		target-module@10000 {			/* 0x48310000, ap 64 4e.1 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "rng";
+			reg = <0x11fe0 0x4>,
+			      <0x11fe4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_RNG_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x2000>;
+		};
+
+		target-module@13000 {			/* 0x48313000, ap 90 50.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x13000 0x1000>;
+		};
+
+		target-module@18000 {			/* 0x48318000, ap 62 4c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x18000 0x4000>;
+		};
+
+		target-module@20000 {			/* 0x48320000, ap 82 34.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio5";
+			reg = <0x20000 0x4>,
+			      <0x20010 0x4>,
+			      <0x20114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO5_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO5_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20000 0x1000>;
+		};
+
+		target-module@22000 {			/* 0x48322000, ap 116 64.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio6";
+			reg = <0x22000 0x4>,
+			      <0x22010 0x4>,
+			      <0x22114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO6_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO6_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module@26000 {			/* 0x48326000, ap 86 66.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "vpfe0";
+			reg = <0x26000 0x4>,
+			      <0x26104 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_VPFE0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x26000 0x1000>;
+		};
+
+		target-module@28000 {			/* 0x48328000, ap 75 0e.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "vpfe1";
+			reg = <0x28000 0x4>,
+			      <0x28104 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_VPFE1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x28000 0x1000>;
+		};
+
+		target-module@2a000 {			/* 0x4832a000, ap 88 3c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "dss_core";
+			reg = <0x2a000 0x4>,
+			      <0x2a010 0x4>,
+			      <0x2a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, dss_clkdm */
+			clocks = <&dss_clkctrl AM4_DSS_DSS_CORE_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x0002a000 0x00000400>,
+				 <0x00000400 0x0002a400 0x00000400>,
+				 <0x00000800 0x0002a800 0x00000400>,
+				 <0x00000c00 0x0002ac00 0x00000400>,
+				 <0x00001000 0x0002b000 0x00001000>;
+		};
+
+		target-module@3d000 {			/* 0x4833d000, ap 102 6e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer9";
+			reg = <0x3d000 0x4>,
+			      <0x3d010 0x4>,
+			      <0x3d014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER9_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3d000 0x1000>;
+		};
+
+		target-module@3f000 {			/* 0x4833f000, ap 104 5c.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer10";
+			reg = <0x3f000 0x4>,
+			      <0x3f010 0x4>,
+			      <0x3f014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER10_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3f000 0x1000>;
+		};
+
+		target-module@41000 {			/* 0x48341000, ap 106 76.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer11";
+			reg = <0x41000 0x4>,
+			      <0x41010 0x4>,
+			      <0x41014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER11_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x41000 0x1000>;
+		};
+
+		target-module@45000 {			/* 0x48345000, ap 108 6a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi4";
+			reg = <0x45000 0x4>,
+			      <0x45110 0x4>,
+			      <0x45114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x45000 0x1000>;
+		};
+
+		target-module@47000 {			/* 0x48347000, ap 110 70.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "hdq1w";
+			reg = <0x47000 0x4>,
+			      <0x47014 0x4>,
+			      <0x47018 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_HDQ1W_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x47000 0x1000>;
+		};
+
+		target-module@4c000 {			/* 0x4834c000, ap 114 72.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x2000>;
+		};
+
+		target-module@80000 {			/* 0x48380000, ap 123 42.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "usb_otg_ss0";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x20000>;
+		};
+
+		target-module@a8000 {			/* 0x483a8000, ap 125 6c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x8000>;
+		};
+
+		target-module@c0000 {			/* 0x483c0000, ap 127 7a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "usb_otg_ss1";
+			reg = <0xc0000 0x4>,
+			      <0xc0010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc0000 0x20000>;
+		};
+
+		target-module@e8000 {			/* 0x483e8000, ap 129 78.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe8000 0x8000>;
+		};
+
+		target-module@f2000 {			/* 0x483f2000, ap 112 5a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xf2000 0x2000>;
+		};
+	};
+};
+
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 1/4] ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data
@ 2018-09-25  0:05   ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-arm-kernel

Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
for l4 interconnect instances with the related ti-sysc interconnect
module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.

Using ti-sysc driver binding allows us to start dropping legacy platform
data in arch/arm/mach-omap2/omap*hwmod*data.c files later on in favor of
ti-sysc dts data.

This data is generated based on platform data from a booted system
and the interconnect acces protection registers for ranges. To avoid
regressions, we initially validate the device tree provided data
against the existing platform data on boot.

Note that we cannot yet include this file from the SoC dtsi file until
the child devices are moved to their proper locations in the
interconnect hierarchy in the following patch. Otherwise we would have
the each module probed twice.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am437x-l4.dtsi | 1662 ++++++++++++++++++++++++++++++
 1 file changed, 1662 insertions(+)
 create mode 100644 arch/arm/boot/dts/am437x-l4.dtsi

diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
new file mode 100644
--- /dev/null
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -0,0 +1,1662 @@
+&l4_wkup {						/* 0x44c00000 */
+	compatible = "ti,am4-l4-wkup", "simple-bus";
+	reg = <0x44c00000 0x800>,
+	      <0x44c00800 0x800>,
+	      <0x44c01000 0x400>,
+	      <0x44c01400 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x44c00000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x44d00000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x44e00000 0x100000>;	/* segment 2 */
+
+	segment at 0 {					/* 0x44c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>;	/* ap 3 */
+	};
+
+	segment at 100000 {					/* 0x44d00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00100000 0x004000>,	/* ap 4 */
+			 <0x00004000 0x00104000 0x001000>,	/* ap 5 */
+			 <0x00080000 0x00180000 0x002000>,	/* ap 6 */
+			 <0x00082000 0x00182000 0x001000>,	/* ap 7 */
+			 <0x000f0000 0x001f0000 0x010000>;	/* ap 8 */
+
+		target-module at 0 {			/* 0x44d00000, ap 4 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x4000>;
+		};
+
+		target-module at 80000 {			/* 0x44d80000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x2000>;
+		};
+
+		target-module at f0000 {			/* 0x44df0000, ap 8 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xf0000 0x10000>;
+		};
+	};
+
+	segment at 200000 {					/* 0x44e00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00200000 0x001000>,	/* ap 9 */
+			 <0x00003000 0x00203000 0x001000>,	/* ap 10 */
+			 <0x00004000 0x00204000 0x001000>,	/* ap 11 */
+			 <0x00005000 0x00205000 0x001000>,	/* ap 12 */
+			 <0x00006000 0x00206000 0x001000>,	/* ap 13 */
+			 <0x00007000 0x00207000 0x001000>,	/* ap 14 */
+			 <0x00008000 0x00208000 0x001000>,	/* ap 15 */
+			 <0x00009000 0x00209000 0x001000>,	/* ap 16 */
+			 <0x0000a000 0x0020a000 0x001000>,	/* ap 17 */
+			 <0x0000b000 0x0020b000 0x001000>,	/* ap 18 */
+			 <0x0000c000 0x0020c000 0x001000>,	/* ap 19 */
+			 <0x0000d000 0x0020d000 0x001000>,	/* ap 20 */
+			 <0x0000f000 0x0020f000 0x001000>,	/* ap 21 */
+			 <0x00010000 0x00210000 0x010000>,	/* ap 22 */
+			 <0x00030000 0x00230000 0x001000>,	/* ap 23 */
+			 <0x00031000 0x00231000 0x001000>,	/* ap 24 */
+			 <0x00032000 0x00232000 0x001000>,	/* ap 25 */
+			 <0x00033000 0x00233000 0x001000>,	/* ap 26 */
+			 <0x00034000 0x00234000 0x001000>,	/* ap 27 */
+			 <0x00035000 0x00235000 0x001000>,	/* ap 28 */
+			 <0x00036000 0x00236000 0x001000>,	/* ap 29 */
+			 <0x00037000 0x00237000 0x001000>,	/* ap 30 */
+			 <0x00038000 0x00238000 0x001000>,	/* ap 31 */
+			 <0x00039000 0x00239000 0x001000>,	/* ap 32 */
+			 <0x0003a000 0x0023a000 0x001000>,	/* ap 33 */
+			 <0x0003e000 0x0023e000 0x001000>,	/* ap 34 */
+			 <0x0003f000 0x0023f000 0x001000>,	/* ap 35 */
+			 <0x00040000 0x00240000 0x040000>,	/* ap 36 */
+			 <0x00080000 0x00280000 0x001000>,	/* ap 37 */
+			 <0x00088000 0x00288000 0x008000>,	/* ap 38 */
+			 <0x00092000 0x00292000 0x001000>,	/* ap 39 */
+			 <0x00086000 0x00286000 0x001000>,	/* ap 40 */
+			 <0x00087000 0x00287000 0x001000>,	/* ap 41 */
+			 <0x00090000 0x00290000 0x001000>,	/* ap 42 */
+			 <0x00091000 0x00291000 0x001000>;	/* ap 43 */
+
+		target-module at 3000 {			/* 0x44e03000, ap 10 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+
+		target-module at 5000 {			/* 0x44e05000, ap 12 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x5000 0x1000>;
+		};
+
+		target-module at 7000 {			/* 0x44e07000, ap 14 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio1";
+			reg = <0x7000 0x4>,
+			      <0x7010 0x4>,
+			      <0x7114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_GPIO1_CLKCTRL 0>,
+				 <&l4_wkup_clkctrl AM4_L4_WKUP_GPIO1_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x7000 0x1000>;
+		};
+
+		target-module at 9000 {			/* 0x44e09000, ap 16 04.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart1";
+			reg = <0x9050 0x4>,
+			      <0x9054 0x4>,
+			      <0x9058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_UART1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9000 0x1000>;
+		};
+
+		target-module at b000 {			/* 0x44e0b000, ap 18 48.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c1";
+			reg = <0xb000 0x8>,
+			      <0xb010 0x8>,
+			      <0xb090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_I2C1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb000 0x1000>;
+		};
+
+		target-module at d000 {			/* 0x44e0d000, ap 20 38.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "adc_tsc";
+			reg = <0xd000 0x4>,
+			      <0xd010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l3s_tsc_clkdm */
+			clocks = <&l3s_tsc_clkctrl AM4_L3S_TSC_ADC_TSC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd000 0x1000>;
+		};
+
+		target-module at 10000 {			/* 0x44e10000, ap 22 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x10000>;
+		};
+
+		target-module at 31000 {			/* 0x44e31000, ap 24 40.0 */
+			compatible = "ti,sysc-omap2-timer", "ti,sysc";
+			ti,hwmods = "timer1";
+			reg = <0x31000 0x4>,
+			      <0x31010 0x4>,
+			      <0x31014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_TIMER1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x31000 0x1000>;
+		};
+
+		target-module at 33000 {			/* 0x44e33000, ap 26 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x33000 0x1000>;
+		};
+
+		target-module at 35000 {			/* 0x44e35000, ap 28 50.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "wd_timer2";
+			reg = <0x35000 0x4>,
+			      <0x35010 0x4>,
+			      <0x35014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
+					 SYSC_OMAP2_SOFTRESET)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_WD_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x35000 0x1000>;
+		};
+
+		target-module at 37000 {			/* 0x44e37000, ap 30 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x37000 0x1000>;
+		};
+
+		target-module at 39000 {			/* 0x44e39000, ap 32 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x39000 0x1000>;
+		};
+
+		target-module at 3e000 {			/* 0x44e3e000, ap 34 60.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "rtc";
+			reg = <0x3e074 0x4>,
+			      <0x3e078 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
+			clocks = <&l4_rtc_clkctrl AM4_L4_RTC_RTC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module at 40000 {			/* 0x44e40000, ap 36 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x40000>;
+		};
+
+		target-module at 86000 {			/* 0x44e86000, ap 40 70.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "counter_32k";
+			reg = <0x86000 0x4>,
+			      <0x86004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_aon_clkdm */
+			clocks = <&l4_wkup_aon_clkctrl AM4_L4_WKUP_AON_COUNTER_32K_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x86000 0x1000>;
+		};
+
+		target-module at 88000 {			/* 0x44e88000, ap 38 12.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00088000 0x00008000>,
+				 <0x00008000 0x00090000 0x00001000>,
+				 <0x00009000 0x00091000 0x00001000>;
+		};
+	};
+};
+
+&l4_fast {					/* 0x4a000000 */
+	compatible = "ti,am4-l4-fast", "simple-bus";
+	reg = <0x4a000000 0x800>,
+	      <0x4a000800 0x800>,
+	      <0x4a001000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4a000000 0x1000000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x4a000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00100000 0x00100000 0x008000>,	/* ap 3 */
+			 <0x00108000 0x00108000 0x001000>,	/* ap 4 */
+			 <0x00400000 0x00400000 0x002000>,	/* ap 5 */
+			 <0x00402000 0x00402000 0x001000>,	/* ap 6 */
+			 <0x00200000 0x00200000 0x080000>,	/* ap 7 */
+			 <0x00280000 0x00280000 0x001000>;	/* ap 8 */
+
+		target-module at 100000 {			/* 0x4a100000, ap 3 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x100000 0x8000>;
+		};
+
+		target-module at 200000 {			/* 0x4a200000, ap 7 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x200000 0x80000>;
+		};
+
+		target-module at 400000 {			/* 0x4a400000, ap 5 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x400000 0x2000>;
+		};
+	};
+};
+
+&l4_per {					/* 0x48000000 */
+	compatible = "ti,am4-l4-per", "simple-bus";
+	reg = <0x48000000 0x800>,
+	      <0x48000800 0x800>,
+	      <0x48001000 0x400>,
+	      <0x48001400 0x400>,
+	      <0x48001800 0x400>,
+	      <0x48001c00 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
+		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+
+	segment at 0 {					/* 0x48000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
+			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
+			 <0x00001c00 0x00001c00 0x000400>,	/* ap 5 */
+			 <0x00008000 0x00008000 0x001000>,	/* ap 6 */
+			 <0x00009000 0x00009000 0x001000>,	/* ap 7 */
+			 <0x00022000 0x00022000 0x001000>,	/* ap 8 */
+			 <0x00023000 0x00023000 0x001000>,	/* ap 9 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 10 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 11 */
+			 <0x0002a000 0x0002a000 0x001000>,	/* ap 12 */
+			 <0x0002b000 0x0002b000 0x001000>,	/* ap 13 */
+			 <0x00038000 0x00038000 0x002000>,	/* ap 14 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 15 */
+			 <0x0003c000 0x0003c000 0x002000>,	/* ap 16 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 17 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 18 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 19 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 20 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 21 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 22 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 23 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 24 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 25 */
+			 <0x00048000 0x00048000 0x001000>,	/* ap 26 */
+			 <0x00049000 0x00049000 0x001000>,	/* ap 27 */
+			 <0x0004c000 0x0004c000 0x001000>,	/* ap 28 */
+			 <0x0004d000 0x0004d000 0x001000>,	/* ap 29 */
+			 <0x00060000 0x00060000 0x001000>,	/* ap 30 */
+			 <0x00061000 0x00061000 0x001000>,	/* ap 31 */
+			 <0x00080000 0x00080000 0x010000>,	/* ap 32 */
+			 <0x00090000 0x00090000 0x001000>,	/* ap 33 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 65 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 66 */
+			 <0x0004a000 0x0004a000 0x001000>,	/* ap 71 */
+			 <0x0004b000 0x0004b000 0x001000>,	/* ap 72 */
+			 <0x000c8000 0x000c8000 0x001000>,	/* ap 73 */
+			 <0x000c9000 0x000c9000 0x001000>,	/* ap 74 */
+			 <0x000ca000 0x000ca000 0x001000>,	/* ap 77 */
+			 <0x000cb000 0x000cb000 0x001000>,	/* ap 78 */
+			 <0x00034000 0x00034000 0x001000>,	/* ap 80 */
+			 <0x00035000 0x00035000 0x001000>,	/* ap 81 */
+			 <0x00036000 0x00036000 0x001000>,	/* ap 84 */
+			 <0x00037000 0x00037000 0x001000>;	/* ap 85 */
+
+		target-module at 8000 {			/* 0x48008000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module at 22000 {			/* 0x48022000, ap 8 0a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart2";
+			reg = <0x22050 0x4>,
+			      <0x22054 0x4>,
+			      <0x22058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x48024000, ap 10 1c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart3";
+			reg = <0x24050 0x4>,
+			      <0x24054 0x4>,
+			      <0x24058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module at 2a000 {			/* 0x4802a000, ap 12 22.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c2";
+			reg = <0x2a000 0x8>,
+			      <0x2a010 0x8>,
+			      <0x2a090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_I2C2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2a000 0x1000>;
+		};
+
+		target-module at 30000 {			/* 0x48030000, ap 65 08.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi0";
+			reg = <0x30000 0x4>,
+			      <0x30110 0x4>,
+			      <0x30114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module at 34000 {			/* 0x48034000, ap 80 56.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x34000 0x1000>;
+		};
+
+		target-module at 36000 {			/* 0x48036000, ap 84 3e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x36000 0x1000>;
+		};
+
+		target-module at 38000 {			/* 0x48038000, ap 14 04.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp0";
+			reg = <0x38000 0x4>,
+			      <0x38004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_MCASP0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x2000>;
+		};
+
+		target-module at 3c000 {			/* 0x4803c000, ap 16 2a.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp1";
+			reg = <0x3c000 0x4>,
+			      <0x3c004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_MCASP1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x2000>;
+		};
+
+		target-module at 40000 {			/* 0x48040000, ap 18 1e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer2";
+			reg = <0x40000 0x4>,
+			      <0x40010 0x4>,
+			      <0x40014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module at 42000 {			/* 0x48042000, ap 20 24.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer3";
+			reg = <0x42000 0x4>,
+			      <0x42010 0x4>,
+			      <0x42014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module at 44000 {			/* 0x48044000, ap 22 26.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer4";
+			reg = <0x44000 0x4>,
+			      <0x44010 0x4>,
+			      <0x44014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module at 46000 {			/* 0x48046000, ap 24 28.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer5";
+			reg = <0x46000 0x4>,
+			      <0x46010 0x4>,
+			      <0x46014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+
+		target-module at 48000 {			/* 0x48048000, ap 26 1a.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer6";
+			reg = <0x48000 0x4>,
+			      <0x48010 0x4>,
+			      <0x48014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x48000 0x1000>;
+		};
+
+		target-module at 4a000 {			/* 0x4804a000, ap 71 48.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer7";
+			reg = <0x4a000 0x4>,
+			      <0x4a010 0x4>,
+			      <0x4a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER7_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4a000 0x1000>;
+		};
+
+		target-module at 4c000 {			/* 0x4804c000, ap 28 36.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio2";
+			reg = <0x4c000 0x4>,
+			      <0x4c010 0x4>,
+			      <0x4c114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO2_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO2_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x1000>;
+		};
+
+		target-module at 60000 {			/* 0x48060000, ap 30 14.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc1";
+			reg = <0x602fc 0x4>,
+			      <0x60110 0x4>,
+			      <0x60114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_MMC1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x60000 0x1000>;
+		};
+
+		target-module at 80000 {			/* 0x48080000, ap 32 18.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "elm";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>,
+			      <0x80014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_ELM_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x10000>;
+		};
+
+		target-module at c8000 {			/* 0x480c8000, ap 73 06.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "mailbox";
+			reg = <0xc8000 0x4>,
+			      <0xc8010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_MAILBOX_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc8000 0x1000>;
+		};
+
+		target-module at ca000 {			/* 0x480ca000, ap 77 38.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spinlock";
+			reg = <0xca000 0x4>,
+			      <0xca010 0x4>,
+			      <0xca014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPINLOCK_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xca000 0x1000>;
+		};
+	};
+
+	segment at 100000 {					/* 0x48100000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0008c000 0x0018c000 0x001000>,	/* ap 34 */
+			 <0x0008d000 0x0018d000 0x001000>,	/* ap 35 */
+			 <0x0008e000 0x0018e000 0x001000>,	/* ap 36 */
+			 <0x0008f000 0x0018f000 0x001000>,	/* ap 37 */
+			 <0x0009c000 0x0019c000 0x001000>,	/* ap 38 */
+			 <0x0009d000 0x0019d000 0x001000>,	/* ap 39 */
+			 <0x000a6000 0x001a6000 0x001000>,	/* ap 40 */
+			 <0x000a7000 0x001a7000 0x001000>,	/* ap 41 */
+			 <0x000a8000 0x001a8000 0x001000>,	/* ap 42 */
+			 <0x000a9000 0x001a9000 0x001000>,	/* ap 43 */
+			 <0x000aa000 0x001aa000 0x001000>,	/* ap 44 */
+			 <0x000ab000 0x001ab000 0x001000>,	/* ap 45 */
+			 <0x000ac000 0x001ac000 0x001000>,	/* ap 46 */
+			 <0x000ad000 0x001ad000 0x001000>,	/* ap 47 */
+			 <0x000ae000 0x001ae000 0x001000>,	/* ap 48 */
+			 <0x000af000 0x001af000 0x001000>,	/* ap 49 */
+			 <0x000cc000 0x001cc000 0x002000>,	/* ap 50 */
+			 <0x000ce000 0x001ce000 0x002000>,	/* ap 51 */
+			 <0x000d0000 0x001d0000 0x002000>,	/* ap 52 */
+			 <0x000d2000 0x001d2000 0x002000>,	/* ap 53 */
+			 <0x000d8000 0x001d8000 0x001000>,	/* ap 54 */
+			 <0x000d9000 0x001d9000 0x001000>,	/* ap 55 */
+			 <0x000a0000 0x001a0000 0x001000>,	/* ap 67 */
+			 <0x000a1000 0x001a1000 0x001000>,	/* ap 68 */
+			 <0x000a2000 0x001a2000 0x001000>,	/* ap 69 */
+			 <0x000a3000 0x001a3000 0x001000>,	/* ap 70 */
+			 <0x000a4000 0x001a4000 0x001000>,	/* ap 92 */
+			 <0x000a5000 0x001a5000 0x001000>,	/* ap 93 */
+			 <0x000c1000 0x001c1000 0x001000>,	/* ap 94 */
+			 <0x000c2000 0x001c2000 0x001000>;	/* ap 95 */
+
+		target-module at 8c000 {			/* 0x4818c000, ap 34 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8c000 0x1000>;
+		};
+
+		target-module at 8e000 {			/* 0x4818e000, ap 36 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8e000 0x1000>;
+		};
+
+		target-module at 9c000 {			/* 0x4819c000, ap 38 52.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c3";
+			reg = <0x9c000 0x8>,
+			      <0x9c010 0x8>,
+			      <0x9c090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_I2C3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9c000 0x1000>;
+		};
+
+		target-module at a0000 {			/* 0x481a0000, ap 67 2c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi1";
+			reg = <0xa0000 0x4>,
+			      <0xa0110 0x4>,
+			      <0xa0114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x1000>;
+		};
+
+		target-module at a2000 {			/* 0x481a2000, ap 69 2e.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi2";
+			reg = <0xa2000 0x4>,
+			      <0xa2110 0x4>,
+			      <0xa2114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa2000 0x1000>;
+		};
+
+		target-module at a4000 {			/* 0x481a4000, ap 92 62.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi3";
+			reg = <0xa4000 0x4>,
+			      <0xa4110 0x4>,
+			      <0xa4114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa4000 0x1000>;
+		};
+
+		target-module at a6000 {			/* 0x481a6000, ap 40 16.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart4";
+			reg = <0xa6050 0x4>,
+			      <0xa6054 0x4>,
+			      <0xa6058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa6000 0x1000>;
+		};
+
+		target-module at a8000 {			/* 0x481a8000, ap 42 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart5";
+			reg = <0xa8050 0x4>,
+			      <0xa8054 0x4>,
+			      <0xa8058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x1000>;
+		};
+
+		target-module at aa000 {			/* 0x481aa000, ap 44 12.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart6";
+			reg = <0xaa050 0x4>,
+			      <0xaa054 0x4>,
+			      <0xaa058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_UART6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xaa000 0x1000>;
+		};
+
+		target-module at ac000 {			/* 0x481ac000, ap 46 30.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio3";
+			reg = <0xac000 0x4>,
+			      <0xac010 0x4>,
+			      <0xac114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO3_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO3_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xac000 0x1000>;
+		};
+
+		target-module at ae000 {			/* 0x481ae000, ap 48 32.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio4";
+			reg = <0xae000 0x4>,
+			      <0xae010 0x4>,
+			      <0xae114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO4_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO4_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xae000 0x1000>;
+		};
+
+		target-module at c1000 {			/* 0x481c1000, ap 94 68.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer8";
+			reg = <0xc1000 0x4>,
+			      <0xc1010 0x4>,
+			      <0xc1014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER8_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc1000 0x1000>;
+		};
+
+		target-module at cc000 {			/* 0x481cc000, ap 50 46.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x2000>;
+		};
+
+		target-module at d0000 {			/* 0x481d0000, ap 52 3a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd0000 0x2000>;
+		};
+
+		target-module at d8000 {			/* 0x481d8000, ap 54 5e.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc2";
+			reg = <0xd82fc 0x4>,
+			      <0xd8110 0x4>,
+			      <0xd8114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_MMC2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd8000 0x1000>;
+		};
+	};
+
+	segment at 200000 {					/* 0x48200000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	segment at 300000 {					/* 0x48300000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00300000 0x001000>,	/* ap 56 */
+			 <0x00001000 0x00301000 0x001000>,	/* ap 57 */
+			 <0x00002000 0x00302000 0x001000>,	/* ap 58 */
+			 <0x00003000 0x00303000 0x001000>,	/* ap 59 */
+			 <0x00004000 0x00304000 0x001000>,	/* ap 60 */
+			 <0x00005000 0x00305000 0x001000>,	/* ap 61 */
+			 <0x00018000 0x00318000 0x004000>,	/* ap 62 */
+			 <0x0001c000 0x0031c000 0x001000>,	/* ap 63 */
+			 <0x00010000 0x00310000 0x002000>,	/* ap 64 */
+			 <0x00028000 0x00328000 0x001000>,	/* ap 75 */
+			 <0x00029000 0x00329000 0x001000>,	/* ap 76 */
+			 <0x00012000 0x00312000 0x001000>,	/* ap 79 */
+			 <0x00020000 0x00320000 0x001000>,	/* ap 82 */
+			 <0x00021000 0x00321000 0x001000>,	/* ap 83 */
+			 <0x00026000 0x00326000 0x001000>,	/* ap 86 */
+			 <0x00027000 0x00327000 0x001000>,	/* ap 87 */
+			 <0x0002a000 0x0032a000 0x000400>,	/* ap 88 */
+			 <0x0002c000 0x0032c000 0x001000>,	/* ap 89 */
+			 <0x00013000 0x00313000 0x001000>,	/* ap 90 */
+			 <0x00014000 0x00314000 0x001000>,	/* ap 91 */
+			 <0x00006000 0x00306000 0x001000>,	/* ap 96 */
+			 <0x00007000 0x00307000 0x001000>,	/* ap 97 */
+			 <0x00008000 0x00308000 0x001000>,	/* ap 98 */
+			 <0x00009000 0x00309000 0x001000>,	/* ap 99 */
+			 <0x0000a000 0x0030a000 0x001000>,	/* ap 100 */
+			 <0x0000b000 0x0030b000 0x001000>,	/* ap 101 */
+			 <0x0003d000 0x0033d000 0x001000>,	/* ap 102 */
+			 <0x0003e000 0x0033e000 0x001000>,	/* ap 103 */
+			 <0x0003f000 0x0033f000 0x001000>,	/* ap 104 */
+			 <0x00040000 0x00340000 0x001000>,	/* ap 105 */
+			 <0x00041000 0x00341000 0x001000>,	/* ap 106 */
+			 <0x00042000 0x00342000 0x001000>,	/* ap 107 */
+			 <0x00045000 0x00345000 0x001000>,	/* ap 108 */
+			 <0x00046000 0x00346000 0x001000>,	/* ap 109 */
+			 <0x00047000 0x00347000 0x001000>,	/* ap 110 */
+			 <0x00048000 0x00348000 0x001000>,	/* ap 111 */
+			 <0x000f2000 0x003f2000 0x002000>,	/* ap 112 */
+			 <0x000f4000 0x003f4000 0x001000>,	/* ap 113 */
+			 <0x0004c000 0x0034c000 0x002000>,	/* ap 114 */
+			 <0x0004e000 0x0034e000 0x001000>,	/* ap 115 */
+			 <0x00022000 0x00322000 0x001000>,	/* ap 116 */
+			 <0x00023000 0x00323000 0x001000>,	/* ap 117 */
+			 <0x000f0000 0x003f0000 0x001000>,	/* ap 118 */
+			 <0x0002a400 0x0032a400 0x000400>,	/* ap 119 */
+			 <0x0002a800 0x0032a800 0x000400>,	/* ap 120 */
+			 <0x0002ac00 0x0032ac00 0x000400>,	/* ap 121 */
+			 <0x0002b000 0x0032b000 0x001000>,	/* ap 122 */
+			 <0x00080000 0x00380000 0x020000>,	/* ap 123 */
+			 <0x000a0000 0x003a0000 0x001000>,	/* ap 124 */
+			 <0x000a8000 0x003a8000 0x008000>,	/* ap 125 */
+			 <0x000b0000 0x003b0000 0x001000>,	/* ap 126 */
+			 <0x000c0000 0x003c0000 0x020000>,	/* ap 127 */
+			 <0x000e0000 0x003e0000 0x001000>,	/* ap 128 */
+			 <0x000e8000 0x003e8000 0x008000>;	/* ap 129 */
+
+		target-module at 0 {			/* 0x48300000, ap 56 40.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss0";
+			reg = <0x0 0x4>,
+			      <0x4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x1000>;
+		};
+
+		target-module at 2000 {			/* 0x48302000, ap 58 4a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss1";
+			reg = <0x2000 0x4>,
+			      <0x2004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2000 0x1000>;
+		};
+
+		target-module at 4000 {			/* 0x48304000, ap 60 44.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss2";
+			reg = <0x4000 0x4>,
+			      <0x4004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4000 0x1000>;
+		};
+
+		target-module at 6000 {			/* 0x48306000, ap 96 58.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss3";
+			reg = <0x6000 0x4>,
+			      <0x6004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x6000 0x1000>;
+		};
+
+		target-module at 8000 {			/* 0x48308000, ap 98 54.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss4";
+			reg = <0x8000 0x4>,
+			      <0x8004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module at a000 {			/* 0x4830a000, ap 100 60.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss5";
+			reg = <0xa000 0x4>,
+			      <0xa004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_EPWMSS5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa000 0x1000>;
+		};
+
+		target-module at 10000 {			/* 0x48310000, ap 64 4e.1 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "rng";
+			reg = <0x11fe0 0x4>,
+			      <0x11fe4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_RNG_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x2000>;
+		};
+
+		target-module at 13000 {			/* 0x48313000, ap 90 50.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x13000 0x1000>;
+		};
+
+		target-module at 18000 {			/* 0x48318000, ap 62 4c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x18000 0x4000>;
+		};
+
+		target-module at 20000 {			/* 0x48320000, ap 82 34.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio5";
+			reg = <0x20000 0x4>,
+			      <0x20010 0x4>,
+			      <0x20114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO5_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO5_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20000 0x1000>;
+		};
+
+		target-module at 22000 {			/* 0x48322000, ap 116 64.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio6";
+			reg = <0x22000 0x4>,
+			      <0x22010 0x4>,
+			      <0x22114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_GPIO6_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM4_L4LS_GPIO6_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module at 26000 {			/* 0x48326000, ap 86 66.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "vpfe0";
+			reg = <0x26000 0x4>,
+			      <0x26104 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_VPFE0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x26000 0x1000>;
+		};
+
+		target-module at 28000 {			/* 0x48328000, ap 75 0e.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "vpfe1";
+			reg = <0x28000 0x4>,
+			      <0x28104 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_VPFE1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x28000 0x1000>;
+		};
+
+		target-module at 2a000 {			/* 0x4832a000, ap 88 3c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "dss_core";
+			reg = <0x2a000 0x4>,
+			      <0x2a010 0x4>,
+			      <0x2a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, dss_clkdm */
+			clocks = <&dss_clkctrl AM4_DSS_DSS_CORE_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x0002a000 0x00000400>,
+				 <0x00000400 0x0002a400 0x00000400>,
+				 <0x00000800 0x0002a800 0x00000400>,
+				 <0x00000c00 0x0002ac00 0x00000400>,
+				 <0x00001000 0x0002b000 0x00001000>;
+		};
+
+		target-module at 3d000 {			/* 0x4833d000, ap 102 6e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer9";
+			reg = <0x3d000 0x4>,
+			      <0x3d010 0x4>,
+			      <0x3d014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER9_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3d000 0x1000>;
+		};
+
+		target-module at 3f000 {			/* 0x4833f000, ap 104 5c.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer10";
+			reg = <0x3f000 0x4>,
+			      <0x3f010 0x4>,
+			      <0x3f014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER10_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3f000 0x1000>;
+		};
+
+		target-module at 41000 {			/* 0x48341000, ap 106 76.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer11";
+			reg = <0x41000 0x4>,
+			      <0x41010 0x4>,
+			      <0x41014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_TIMER11_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x41000 0x1000>;
+		};
+
+		target-module at 45000 {			/* 0x48345000, ap 108 6a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi4";
+			reg = <0x45000 0x4>,
+			      <0x45110 0x4>,
+			      <0x45114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_SPI4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x45000 0x1000>;
+		};
+
+		target-module at 47000 {			/* 0x48347000, ap 110 70.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "hdq1w";
+			reg = <0x47000 0x4>,
+			      <0x47014 0x4>,
+			      <0x47018 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_HDQ1W_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x47000 0x1000>;
+		};
+
+		target-module at 4c000 {			/* 0x4834c000, ap 114 72.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x2000>;
+		};
+
+		target-module at 80000 {			/* 0x48380000, ap 123 42.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "usb_otg_ss0";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x20000>;
+		};
+
+		target-module at a8000 {			/* 0x483a8000, ap 125 6c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x8000>;
+		};
+
+		target-module at c0000 {			/* 0x483c0000, ap 127 7a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "usb_otg_ss1";
+			reg = <0xc0000 0x4>,
+			      <0xc0010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_DMADISABLE>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc0000 0x20000>;
+		};
+
+		target-module at e8000 {			/* 0x483e8000, ap 129 78.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe8000 0x8000>;
+		};
+
+		target-module at f2000 {			/* 0x483f2000, ap 112 5a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xf2000 0x2000>;
+		};
+	};
+};
+
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-09-25  0:05 ` Tony Lindgren
@ 2018-09-25  0:05   ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

With l4 interconnect hierarchy and ti-sysc interconnect target module
data in place, we can simply move all the related child devices to
their proper location and enable probing using ti-sysc.

In general the first child device address range starts at range 0
from the ti-sysc interconnect target so the move involves adjusting
the child device reg properties for that.

In case of any regressions, problem devices can be reverted to probe
with legacy platform data as needed by moving them back and removing
the related interconnect target module node.

Note that we are not yet moving dss or wkup_m3, those will be moved
later after some related driver changes.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am4372.dtsi    | 876 +------------------------------
 arch/arm/boot/dts/am437x-l4.dtsi | 865 +++++++++++++++++++++++++++++-
 2 files changed, 858 insertions(+), 883 deletions(-)

diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -8,6 +8,7 @@
  * kind, whether express or implied.
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/am4.h>
@@ -159,12 +160,7 @@
 		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
 			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
 
-		l4_wkup: l4_wkup@44c00000 {
-			compatible = "ti,am4-l4-wkup", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x44c00000 0x287000>;
-
+		l4_wkup: interconnect@44c00000 {
 			wkup_m3: wkup_m3@100000 {
 				compatible = "ti,am4372-wkup-m3";
 				reg = <0x100000 0x4000>,
@@ -173,75 +169,10 @@
 				ti,hwmods = "wkup_m3";
 				ti,pm-firmware = "am335x-pm-firmware.elf";
 			};
-
-			prcm: prcm@1f0000 {
-				compatible = "ti,am4-prcm", "simple-bus";
-				reg = <0x1f0000 0x11000>;
-				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0 0x1f0000 0x11000>;
-
-				prcm_clocks: clocks {
-					#address-cells = <1>;
-					#size-cells = <0>;
-				};
-
-				prcm_clockdomains: clockdomains {
-				};
-			};
-
-			scm: scm@210000 {
-				compatible = "ti,am4-scm", "simple-bus";
-				reg = <0x210000 0x4000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0 0x210000 0x4000>;
-
-				am43xx_pinmux: pinmux@800 {
-					compatible = "ti,am437-padconf",
-						     "pinctrl-single";
-					reg = <0x800 0x31c>;
-					#address-cells = <1>;
-					#size-cells = <0>;
-					#pinctrl-cells = <1>;
-					#interrupt-cells = <1>;
-					interrupt-controller;
-					pinctrl-single,register-width = <32>;
-					pinctrl-single,function-mask = <0xffffffff>;
-				};
-
-				scm_conf: scm_conf@0 {
-					compatible = "syscon";
-					reg = <0x0 0x800>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-
-					scm_clocks: clocks {
-						#address-cells = <1>;
-						#size-cells = <0>;
-					};
-				};
-
-				wkup_m3_ipc: wkup_m3_ipc@1324 {
-					compatible = "ti,am4372-wkup-m3-ipc";
-					reg = <0x1324 0x44>;
-					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
-					ti,rproc = <&wkup_m3>;
-					mboxes = <&mailbox &mbox_wkupm3>;
-				};
-
-				edma_xbar: dma-router@f90 {
-					compatible = "ti,am335x-edma-crossbar";
-					reg = <0xf90 0x40>;
-					#dma-cells = <3>;
-					dma-requests = <64>;
-					dma-masters = <&edma>;
-				};
-
-				scm_clockdomains: clockdomains {
-				};
-			};
+		};
+		l4_per: interconnect@48000000 {
+		};
+		l4_fast: interconnect@4a000000 {
 		};
 
 		emif: emif@4c000000 {
@@ -297,333 +228,6 @@
 			interrupt-names = "edma3_tcerrint";
 		};
 
-		uart0: serial@44e09000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x44e09000 0x2000>;
-			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart1";
-		};
-
-		uart1: serial@48022000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x48022000 0x2000>;
-			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart2";
-			status = "disabled";
-		};
-
-		uart2: serial@48024000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x48024000 0x2000>;
-			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart3";
-			status = "disabled";
-		};
-
-		uart3: serial@481a6000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x481a6000 0x2000>;
-			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart4";
-			status = "disabled";
-		};
-
-		uart4: serial@481a8000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x481a8000 0x2000>;
-			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart5";
-			status = "disabled";
-		};
-
-		uart5: serial@481aa000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x481aa000 0x2000>;
-			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart6";
-			status = "disabled";
-		};
-
-		mailbox: mailbox@480c8000 {
-			compatible = "ti,omap4-mailbox";
-			reg = <0x480C8000 0x200>;
-			interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "mailbox";
-			#mbox-cells = <1>;
-			ti,mbox-num-users = <4>;
-			ti,mbox-num-fifos = <8>;
-			mbox_wkupm3: wkup_m3 {
-				ti,mbox-send-noirq;
-				ti,mbox-tx = <0 0 0>;
-				ti,mbox-rx = <0 0 3>;
-			};
-		};
-
-		timer1: timer@44e31000 {
-			compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
-			reg = <0x44e31000 0x400>;
-			interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-alwon;
-			ti,hwmods = "timer1";
-			clocks = <&timer1_fck>;
-			clock-names = "fck";
-		};
-
-		timer2: timer@48040000  {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48040000  0x400>;
-			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer2";
-			clocks = <&timer2_fck>;
-			clock-names = "fck";
-		};
-
-		timer3: timer@48042000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48042000 0x400>;
-			interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer3";
-			status = "disabled";
-		};
-
-		timer4: timer@48044000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48044000 0x400>;
-			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer4";
-			status = "disabled";
-		};
-
-		timer5: timer@48046000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48046000 0x400>;
-			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer5";
-			status = "disabled";
-		};
-
-		timer6: timer@48048000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48048000 0x400>;
-			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer6";
-			status = "disabled";
-		};
-
-		timer7: timer@4804a000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x4804a000 0x400>;
-			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer7";
-			status = "disabled";
-		};
-
-		timer8: timer@481c1000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x481c1000 0x400>;
-			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer8";
-			status = "disabled";
-		};
-
-		timer9: timer@4833d000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x4833d000 0x400>;
-			interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer9";
-			status = "disabled";
-		};
-
-		timer10: timer@4833f000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x4833f000 0x400>;
-			interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer10";
-			status = "disabled";
-		};
-
-		timer11: timer@48341000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48341000 0x400>;
-			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer11";
-			status = "disabled";
-		};
-
-		counter32k: counter@44e86000 {
-			compatible = "ti,am4372-counter32k","ti,omap-counter32k";
-			reg = <0x44e86000 0x40>;
-			ti,hwmods = "counter_32k";
-		};
-
-		rtc: rtc@44e3e000 {
-			compatible = "ti,am4372-rtc", "ti,am3352-rtc",
-				     "ti,da830-rtc";
-			reg = <0x44e3e000 0x1000>;
-			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "rtc";
-			clocks = <&clk_32768_ck>;
-			clock-names = "int-clk";
-			system-power-controller;
-			status = "disabled";
-		};
-
-		wdt: wdt@44e35000 {
-			compatible = "ti,am4372-wdt","ti,omap3-wdt";
-			reg = <0x44e35000 0x1000>;
-			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "wd_timer2";
-		};
-
-		gpio0: gpio@44e07000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x44e07000 0x1000>;
-			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio1";
-			status = "disabled";
-		};
-
-		gpio1: gpio@4804c000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x4804c000 0x1000>;
-			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio2";
-			status = "disabled";
-		};
-
-		gpio2: gpio@481ac000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x481ac000 0x1000>;
-			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio3";
-			status = "disabled";
-		};
-
-		gpio3: gpio@481ae000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x481ae000 0x1000>;
-			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio4";
-			status = "disabled";
-		};
-
-		gpio4: gpio@48320000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x48320000 0x1000>;
-			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio5";
-			status = "disabled";
-		};
-
-		gpio5: gpio@48322000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x48322000 0x1000>;
-			interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio6";
-			status = "disabled";
-		};
-
-		hwspinlock: spinlock@480ca000 {
-			compatible = "ti,omap4-hwspinlock";
-			reg = <0x480ca000 0x1000>;
-			ti,hwmods = "spinlock";
-			#hwlock-cells = <1>;
-		};
-
-		i2c0: i2c@44e0b000 {
-			compatible = "ti,am4372-i2c","ti,omap4-i2c";
-			reg = <0x44e0b000 0x1000>;
-			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "i2c1";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c1: i2c@4802a000 {
-			compatible = "ti,am4372-i2c","ti,omap4-i2c";
-			reg = <0x4802a000 0x1000>;
-			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "i2c2";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c2: i2c@4819c000 {
-			compatible = "ti,am4372-i2c","ti,omap4-i2c";
-			reg = <0x4819c000 0x1000>;
-			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "i2c3";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi0: spi@48030000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x48030000 0x400>;
-			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi0";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		mmc1: mmc@48060000 {
-			compatible = "ti,omap4-hsmmc";
-			reg = <0x48060000 0x1000>;
-			ti,hwmods = "mmc1";
-			ti,dual-volt;
-			ti,needs-special-reset;
-			dmas = <&edma 24 0>,
-				<&edma 25 0>;
-			dma-names = "tx", "rx";
-			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		mmc2: mmc@481d8000 {
-			compatible = "ti,omap4-hsmmc";
-			reg = <0x481d8000 0x1000>;
-			ti,hwmods = "mmc2";
-			ti,needs-special-reset;
-			dmas = <&edma 2 0>,
-				<&edma 3 0>;
-			dma-names = "tx", "rx";
-			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
 		mmc3: mmc@47810000 {
 			compatible = "ti,omap4-hsmmc";
 			reg = <0x47810000 0x1000>;
@@ -633,282 +237,6 @@
 			status = "disabled";
 		};
 
-		spi1: spi@481a0000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x481a0000 0x400>;
-			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi1";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi2: spi@481a2000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x481a2000 0x400>;
-			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi2";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi3: spi@481a4000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x481a4000 0x400>;
-			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi3";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi4: spi@48345000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x48345000 0x400>;
-			interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi4";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		mac: ethernet@4a100000 {
-			compatible = "ti,am4372-cpsw","ti,cpsw";
-			reg = <0x4a100000 0x800
-			       0x4a101200 0x100>;
-			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ti,hwmods = "cpgmac0";
-			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
-				 <&dpll_clksel_mac_clk>;
-			clock-names = "fck", "cpts", "50mclk";
-			assigned-clocks = <&dpll_clksel_mac_clk>;
-			assigned-clock-rates = <50000000>;
-			status = "disabled";
-			cpdma_channels = <8>;
-			ale_entries = <1024>;
-			bd_ram_size = <0x2000>;
-			mac_control = <0x20>;
-			slaves = <2>;
-			active_slave = <0>;
-			cpts_clock_mult = <0x80000000>;
-			cpts_clock_shift = <29>;
-			ranges;
-			syscon = <&scm_conf>;
-
-			davinci_mdio: mdio@4a101000 {
-				compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
-				reg = <0x4a101000 0x100>;
-				#address-cells = <1>;
-				#size-cells = <0>;
-				ti,hwmods = "davinci_mdio";
-				bus_freq = <1000000>;
-				status = "disabled";
-			};
-
-			cpsw_emac0: slave@4a100200 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			cpsw_emac1: slave@4a100300 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			phy_sel: cpsw-phy-sel@44e10650 {
-				compatible = "ti,am43xx-cpsw-phy-sel";
-				reg= <0x44e10650 0x4>;
-				reg-names = "gmii-sel";
-			};
-		};
-
-		epwmss0: epwmss@48300000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48300000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss0";
-			status = "disabled";
-
-			ecap0: ecap@48300100 {
-				compatible = "ti,am4372-ecap",
-					     "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48300100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				status = "disabled";
-			};
-
-			ehrpwm0: pwm@48300200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48300200 0x80>;
-				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss1: epwmss@48302000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48302000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss1";
-			status = "disabled";
-
-			ecap1: ecap@48302100 {
-				compatible = "ti,am4372-ecap",
-					     "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48302100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				status = "disabled";
-			};
-
-			ehrpwm1: pwm@48302200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48302200 0x80>;
-				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss2: epwmss@48304000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48304000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss2";
-			status = "disabled";
-
-			ecap2: ecap@48304100 {
-				compatible = "ti,am4372-ecap",
-					     "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48304100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				status = "disabled";
-			};
-
-			ehrpwm2: pwm@48304200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48304200 0x80>;
-				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss3: epwmss@48306000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48306000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss3";
-			status = "disabled";
-
-			ehrpwm3: pwm@48306200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48306200 0x80>;
-				clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss4: epwmss@48308000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48308000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss4";
-			status = "disabled";
-
-			ehrpwm4: pwm@48308200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48308200 0x80>;
-				clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss5: epwmss@4830a000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x4830a000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss5";
-			status = "disabled";
-
-			ehrpwm5: pwm@4830a200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x4830a200 0x80>;
-				clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		tscadc: tscadc@44e0d000 {
-			compatible = "ti,am3359-tscadc";
-			reg = <0x44e0d000 0x1000>;
-			ti,hwmods = "adc_tsc";
-			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&adc_tsc_fck>;
-			clock-names = "fck";
-			status = "disabled";
-			dmas = <&edma 53 0>, <&edma 57 0>;
-			dma-names = "fifo0", "fifo1";
-
-			tsc {
-				compatible = "ti,am3359-tsc";
-			};
-
-			adc {
-				#io-channel-cells = <1>;
-				compatible = "ti,am3359-adc";
-			};
-
-		};
-
 		sham: sham@53100000 {
 			compatible = "ti,omap5-sham";
 			ti,hwmods = "sham";
@@ -938,53 +266,6 @@
 			dma-names = "tx", "rx";
 		};
 
-		rng: rng@48310000 {
-			compatible = "ti,omap4-rng";
-			ti,hwmods = "rng";
-			reg = <0x48310000 0x2000>;
-			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
-		};
-
-		mcasp0: mcasp@48038000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp0";
-			reg = <0x48038000 0x2000>,
-			      <0x46000000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 8 2>,
-			       <&edma 9 2>;
-			dma-names = "tx", "rx";
-		};
-
-		mcasp1: mcasp@4803c000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp1";
-			reg = <0x4803C000 0x2000>,
-			      <0x46400000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 10 2>,
-			       <&edma 11 2>;
-			dma-names = "tx", "rx";
-		};
-
-		elm: elm@48080000 {
-			compatible = "ti,am3352-elm";
-			reg = <0x48080000 0x2000>;
-			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "elm";
-			clocks = <&l4ls_gclk>;
-			clock-names = "fck";
-			status = "disabled";
-		};
-
 		gpmc: gpmc@50000000 {
 			compatible = "ti,am3352-gpmc";
 			ti,hwmods = "gpmc";
@@ -1005,102 +286,6 @@
 			status = "disabled";
 		};
 
-		ocp2scp0: ocp2scp@483a8000 {
-			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "ocp2scp0";
-
-			usb2_phy1: phy@483a8000 {
-				compatible = "ti,am437x-usb2";
-				reg = <0x483a8000 0x8000>;
-				syscon-phy-power = <&scm_conf 0x620>;
-				clocks = <&usb_phy0_always_on_clk32k>,
-					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
-				clock-names = "wkupclk", "refclk";
-				#phy-cells = <0>;
-				status = "disabled";
-			};
-		};
-
-		ocp2scp1: ocp2scp@483e8000 {
-			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "ocp2scp1";
-
-			usb2_phy2: phy@483e8000 {
-				compatible = "ti,am437x-usb2";
-				reg = <0x483e8000 0x8000>;
-				syscon-phy-power = <&scm_conf 0x628>;
-				clocks = <&usb_phy1_always_on_clk32k>,
-					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
-				clock-names = "wkupclk", "refclk";
-				#phy-cells = <0>;
-				status = "disabled";
-			};
-		};
-
-		dwc3_1: omap_dwc3@48380000 {
-			compatible = "ti,am437x-dwc3";
-			ti,hwmods = "usb_otg_ss0";
-			reg = <0x48380000 0x10000>;
-			interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			utmi-mode = <1>;
-			ranges;
-
-			usb1: usb@48390000 {
-				compatible = "synopsys,dwc3";
-				reg = <0x48390000 0x10000>;
-				interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
-				interrupt-names = "peripheral",
-						  "host",
-						  "otg";
-				phys = <&usb2_phy1>;
-				phy-names = "usb2-phy";
-				maximum-speed = "high-speed";
-				dr_mode = "otg";
-				status = "disabled";
-				snps,dis_u3_susphy_quirk;
-				snps,dis_u2_susphy_quirk;
-			};
-		};
-
-		dwc3_2: omap_dwc3@483c0000 {
-			compatible = "ti,am437x-dwc3";
-			ti,hwmods = "usb_otg_ss1";
-			reg = <0x483c0000 0x10000>;
-			interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			utmi-mode = <1>;
-			ranges;
-
-			usb2: usb@483d0000 {
-				compatible = "synopsys,dwc3";
-				reg = <0x483d0000 0x10000>;
-				interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
-				interrupt-names = "peripheral",
-						  "host",
-						  "otg";
-				phys = <&usb2_phy2>;
-				phy-names = "usb2-phy";
-				maximum-speed = "high-speed";
-				dr_mode = "otg";
-				status = "disabled";
-				snps,dis_u3_susphy_quirk;
-				snps,dis_u2_susphy_quirk;
-			};
-		};
-
 		qspi: spi@47900000 {
 			compatible = "ti,am4372-qspi";
 			reg = <0x47900000 0x100>,
@@ -1114,16 +299,6 @@
 			status = "disabled";
 		};
 
-		hdq: hdq@48347000 {
-			compatible = "ti,am4372-hdq";
-			reg = <0x48347000 0x1000>;
-			interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&func_12m_clk>;
-			clock-names = "fck";
-			ti,hwmods = "hdq1w";
-			status = "disabled";
-		};
-
 		dss: dss@4832a000 {
 			compatible = "ti,omap3-dss";
 			reg = <0x4832a000 0x200>;
@@ -1173,45 +348,8 @@
 				pool;
 			};
 		};
-
-		dcan0: can@481cc000 {
-			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
-			ti,hwmods = "d_can0";
-			clocks = <&dcan0_fck>;
-			clock-names = "fck";
-			reg = <0x481cc000 0x2000>;
-			syscon-raminit = <&scm_conf 0x644 0>;
-			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		dcan1: can@481d0000 {
-			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
-			ti,hwmods = "d_can1";
-			clocks = <&dcan1_fck>;
-			clock-names = "fck";
-			reg = <0x481d0000 0x2000>;
-			syscon-raminit = <&scm_conf 0x644 1>;
-			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		vpfe0: vpfe@48326000 {
-			compatible = "ti,am437x-vpfe";
-			reg = <0x48326000 0x2000>;
-			interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "vpfe0";
-			status = "disabled";
-		};
-
-		vpfe1: vpfe@48328000 {
-			compatible = "ti,am437x-vpfe";
-			reg = <0x48328000 0x2000>;
-			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "vpfe1";
-			status = "disabled";
-		};
 	};
 };
 
+#include "am437x-l4.dtsi"
 #include "am43xx-clocks.dtsi"
diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
--- a/arch/arm/boot/dts/am437x-l4.dtsi
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -48,11 +48,29 @@
 		};
 
 		target-module@f0000 {			/* 0x44df0000, ap 8 58.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0xf0000 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xf0000 0x10000>;
+
+			prcm: prcm@0 {
+				compatible = "ti,am4-prcm", "simple-bus";
+				reg = <0x0 0x11000>;
+				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x11000>;
+
+				prcm_clocks: clocks {
+					#address-cells = <1>;
+					#size-cells = <0>;
+				};
+
+				prcm_clockdomains: clockdomains {
+				};
+			};
 		};
 	};
 
@@ -134,6 +152,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x7000 0x1000>;
+
+			gpio0: gpio@0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
@@ -156,6 +185,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9000 0x1000>;
+
+			uart0: serial@0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+			};
 		};
 
 		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
@@ -180,6 +215,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xb000 0x1000>;
+
+			i2c0: i2c@0 {
+				compatible = "ti,am4372-i2c","ti,omap4-i2c";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
@@ -198,14 +242,94 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd000 0x1000>;
+
+			tscadc: tscadc@0 {
+				compatible = "ti,am3359-tscadc";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&adc_tsc_fck>;
+				clock-names = "fck";
+				status = "disabled";
+				dmas = <&edma 53 0>, <&edma 57 0>;
+				dma-names = "fifo0", "fifo1";
+
+				tsc {
+					compatible = "ti,am3359-tsc";
+				};
+
+				adc {
+					#io-channel-cells = <1>;
+					compatible = "ti,am3359-adc";
+				};
+
+			};
 		};
 
 		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0x10000 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x10000 0x10000>;
+
+			scm: scm@0 {
+				compatible = "ti,am4-scm", "simple-bus";
+				reg = <0x0 0x4000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x4000>;
+
+				phy_sel: cpsw-phy-sel@650 {
+					compatible = "ti,am43xx-cpsw-phy-sel";
+					reg= <0x650 0x4>;
+					reg-names = "gmii-sel";
+				};
+
+				am43xx_pinmux: pinmux@800 {
+					compatible = "ti,am437-padconf",
+						     "pinctrl-single";
+					reg = <0x800 0x31c>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+					#pinctrl-cells = <1>;
+					#interrupt-cells = <1>;
+					interrupt-controller;
+					pinctrl-single,register-width = <32>;
+					pinctrl-single,function-mask = <0xffffffff>;
+				};
+
+				scm_conf: scm_conf@0 {
+					compatible = "syscon";
+					reg = <0x0 0x800>;
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					scm_clocks: clocks {
+						#address-cells = <1>;
+						#size-cells = <0>;
+					};
+				};
+
+				wkup_m3_ipc: wkup_m3_ipc@1324 {
+					compatible = "ti,am4372-wkup-m3-ipc";
+					reg = <0x1324 0x44>;
+					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+					ti,rproc = <&wkup_m3>;
+					mboxes = <&mailbox &mbox_wkupm3>;
+				};
+
+				edma_xbar: dma-router@f90 {
+					compatible = "ti,am335x-edma-crossbar";
+					reg = <0xf90 0x40>;
+					#dma-cells = <3>;
+					dma-requests = <64>;
+					dma-masters = <&edma>;
+				};
+
+				scm_clockdomains: clockdomains {
+				};
+			};
 		};
 
 		target-module@31000 {			/* 0x44e31000, ap 24 40.0 */
@@ -228,6 +352,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x31000 0x1000>;
+
+			timer1: timer@0 {
+				compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-alwon;
+				clocks = <&timer1_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module@33000 {			/* 0x44e33000, ap 26 18.0 */
@@ -258,6 +391,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x35000 0x1000>;
+
+			wdt: wdt@0 {
+				compatible = "ti,am4372-wdt","ti,omap3-wdt";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+			};
 		};
 
 		target-module@37000 {			/* 0x44e37000, ap 30 08.0 */
@@ -292,6 +431,18 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3e000 0x1000>;
+
+			rtc: rtc@0 {
+				compatible = "ti,am4372-rtc", "ti,am3352-rtc",
+					     "ti,da830-rtc";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clk_32768_ck>;
+				clock-names = "int-clk";
+				system-power-controller;
+				status = "disabled";
+			};
 		};
 
 		target-module@40000 {			/* 0x44e40000, ap 36 68.0 */
@@ -316,6 +467,11 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x86000 0x1000>;
+
+			counter32k: counter@0 {
+				compatible = "ti,am4372-counter32k","ti,omap-counter32k";
+				reg = <0x0 0x40>;
+			};
 		};
 
 		target-module@88000 {			/* 0x44e88000, ap 38 12.0 */
@@ -355,11 +511,74 @@
 			 <0x00280000 0x00280000 0x001000>;	/* ap 8 */
 
 		target-module@100000 {			/* 0x4a100000, ap 3 04.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "cpgmac0";
+			reg = <0x101200 0x4>,
+			      <0x101208 0x4>,
+			      <0x101204 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <0>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,syss-mask = <1>;
+			clocks = <&cpsw_125mhz_clkctrl AM4_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x100000 0x8000>;
+
+			mac: ethernet@0 {
+				compatible = "ti,am4372-cpsw","ti,cpsw";
+				reg = <0x0 0x800
+				       0x1200 0x100>;
+				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
+					 <&dpll_clksel_mac_clk>;
+				clock-names = "fck", "cpts", "50mclk";
+				assigned-clocks = <&dpll_clksel_mac_clk>;
+				assigned-clock-rates = <50000000>;
+				status = "disabled";
+				cpdma_channels = <8>;
+				ale_entries = <1024>;
+				bd_ram_size = <0x2000>;
+				mac_control = <0x20>;
+				slaves = <2>;
+				active_slave = <0>;
+				cpts_clock_mult = <0x80000000>;
+				cpts_clock_shift = <29>;
+				ranges = <0 0 0x8000>;
+				syscon = <&scm_conf>;
+				cpsw-phy-sel = <&phy_sel>;
+
+				davinci_mdio: mdio@1000 {
+					compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
+					reg = <0x1000 0x100>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+					clocks = <&cpsw_125mhz_gclk>;
+					clock-names = "fck";
+					ti,hwmods = "davinci_mdio";
+					bus_freq = <1000000>;
+					status = "disabled";
+				};
+
+				cpsw_emac0: slave@200 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+
+				cpsw_emac1: slave@300 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+			};
 		};
 
 		target-module@200000 {			/* 0x4a200000, ap 7 02.0 */
@@ -475,6 +694,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x22000 0x1000>;
+
+			uart1: serial@0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@24000 {			/* 0x48024000, ap 10 1c.0 */
@@ -497,6 +723,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x24000 0x1000>;
+
+			uart2: serial@0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@2a000 {			/* 0x4802a000, ap 12 22.0 */
@@ -521,6 +754,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2a000 0x1000>;
+
+			i2c1: i2c@0 {
+				compatible = "ti,am4372-i2c","ti,omap4-i2c";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@30000 {			/* 0x48030000, ap 65 08.0 */
@@ -543,6 +785,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x30000 0x1000>;
+
+			spi0: spi@0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@34000 {			/* 0x48034000, ap 80 56.0 */
@@ -576,6 +827,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x38000 0x2000>;
+
+			mcasp0: mcasp@0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46000000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
+					     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 8 2>,
+				       <&edma 9 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@3c000 {			/* 0x4803c000, ap 16 2a.0 */
@@ -593,6 +858,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3c000 0x2000>;
+
+			mcasp1: mcasp@0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46400000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
+					     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 10 2>,
+				       <&edma 11 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@40000 {			/* 0x48040000, ap 18 1e.0 */
@@ -613,6 +892,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x40000 0x1000>;
+
+			timer2: timer@0  {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&timer2_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module@42000 {			/* 0x48042000, ap 20 24.0 */
@@ -633,6 +920,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x42000 0x1000>;
+
+			timer3: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@44000 {			/* 0x48044000, ap 22 26.0 */
@@ -653,6 +947,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x44000 0x1000>;
+
+			timer4: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module@46000 {			/* 0x48046000, ap 24 28.0 */
@@ -673,6 +975,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x46000 0x1000>;
+
+			timer5: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module@48000 {			/* 0x48048000, ap 26 1a.0 */
@@ -693,6 +1003,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x48000 0x1000>;
+
+			timer6: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module@4a000 {			/* 0x4804a000, ap 71 48.0 */
@@ -713,6 +1031,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4a000 0x1000>;
+
+			timer7: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module@4c000 {			/* 0x4804c000, ap 28 36.0 */
@@ -737,6 +1063,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4c000 0x1000>;
+
+			gpio1: gpio@0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module@60000 {			/* 0x48060000, ap 30 14.0 */
@@ -760,6 +1097,18 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x60000 0x1000>;
+
+			mmc1: mmc@0 {
+				compatible = "ti,omap4-hsmmc";
+				reg = <0x0 0x1000>;
+				ti,dual-volt;
+				ti,needs-special-reset;
+				dmas = <&edma 24 0>,
+					<&edma 25 0>;
+				dma-names = "tx", "rx";
+				interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@80000 {			/* 0x48080000, ap 32 18.0 */
@@ -782,6 +1131,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x80000 0x10000>;
+
+			elm: elm@0 {
+				compatible = "ti,am3352-elm";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&l4ls_gclk>;
+				clock-names = "fck";
+				status = "disabled";
+			};
 		};
 
 		target-module@c8000 {			/* 0x480c8000, ap 73 06.0 */
@@ -800,6 +1158,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc8000 0x1000>;
+
+			mailbox: mailbox@0 {
+				compatible = "ti,omap4-mailbox";
+				reg = <0x0 0x200>;
+				interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+				#mbox-cells = <1>;
+				ti,mbox-num-users = <4>;
+				ti,mbox-num-fifos = <8>;
+				mbox_wkupm3: wkup_m3 {
+					ti,mbox-send-noirq;
+					ti,mbox-tx = <0 0 0>;
+					ti,mbox-rx = <0 0 3>;
+				};
+			};
 		};
 
 		target-module@ca000 {			/* 0x480ca000, ap 77 38.0 */
@@ -823,6 +1195,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xca000 0x1000>;
+
+			hwspinlock: spinlock@0 {
+				compatible = "ti,omap4-hwspinlock";
+				reg = <0x0 0x1000>;
+				#hwlock-cells = <1>;
+			};
 		};
 	};
 
@@ -899,6 +1277,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9c000 0x1000>;
+
+			i2c2: i2c@0 {
+				compatible = "ti,am4372-i2c","ti,omap4-i2c";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a0000 {			/* 0x481a0000, ap 67 2c.0 */
@@ -921,6 +1308,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa0000 0x1000>;
+
+			spi1: spi@0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a2000 {			/* 0x481a2000, ap 69 2e.0 */
@@ -943,6 +1339,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa2000 0x1000>;
+
+			spi2: spi@0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a4000 {			/* 0x481a4000, ap 92 62.0 */
@@ -965,6 +1370,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa4000 0x1000>;
+
+			spi3: spi@0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a6000 {			/* 0x481a6000, ap 40 16.0 */
@@ -987,6 +1401,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa6000 0x1000>;
+
+			uart3: serial@0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a8000 {			/* 0x481a8000, ap 42 20.0 */
@@ -1009,6 +1430,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa8000 0x1000>;
+
+			uart4: serial@0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@aa000 {			/* 0x481aa000, ap 44 12.0 */
@@ -1031,6 +1459,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xaa000 0x1000>;
+
+			uart5: serial@0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@ac000 {			/* 0x481ac000, ap 46 30.0 */
@@ -1055,6 +1490,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xac000 0x1000>;
+
+			gpio2: gpio@0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module@ae000 {			/* 0x481ae000, ap 48 32.0 */
@@ -1079,6 +1525,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xae000 0x1000>;
+
+			gpio3: gpio@0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module@c1000 {			/* 0x481c1000, ap 94 68.0 */
@@ -1099,22 +1556,55 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc1000 0x1000>;
+
+			timer8: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@cc000 {			/* 0x481cc000, ap 50 46.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can0";
+			reg = <0xcc000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xcc000 0x2000>;
+
+			dcan0: can@0 {
+				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				syscon-raminit = <&scm_conf 0x644 0>;
+				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@d0000 {			/* 0x481d0000, ap 52 3a.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can1";
+			reg = <0xd0000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd0000 0x2000>;
+
+			dcan1: can@0 {
+				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				syscon-raminit = <&scm_conf 0x644 1>;
+				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@d8000 {			/* 0x481d8000, ap 54 5e.0 */
@@ -1138,6 +1628,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd8000 0x1000>;
+
+			mmc2: mmc@0 {
+				compatible = "ti,omap4-hsmmc";
+				reg = <0x0 0x1000>;
+				ti,needs-special-reset;
+				dmas = <&edma 2 0>,
+					<&edma 3 0>;
+				dma-names = "tx", "rx";
+				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 	};
 
@@ -1226,6 +1727,37 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x1000>;
+
+			epwmss0: epwmss@0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ecap0: ecap@100 {
+					compatible = "ti,am4372-ecap",
+						     "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					status = "disabled";
+				};
+
+				ehrpwm0: pwm@200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@2000 {			/* 0x48302000, ap 58 4a.0 */
@@ -1248,6 +1780,37 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2000 0x1000>;
+
+			epwmss1: epwmss@0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ecap1: ecap@100 {
+					compatible = "ti,am4372-ecap",
+						     "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					status = "disabled";
+				};
+
+				ehrpwm1: pwm@200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@4000 {			/* 0x48304000, ap 60 44.0 */
@@ -1270,6 +1833,37 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4000 0x1000>;
+
+			epwmss2: epwmss@0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ecap2: ecap@100 {
+					compatible = "ti,am4372-ecap",
+						     "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					status = "disabled";
+				};
+
+				ehrpwm2: pwm@200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@6000 {			/* 0x48306000, ap 96 58.0 */
@@ -1292,6 +1886,26 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x6000 0x1000>;
+
+			epwmss3: epwmss@0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ehrpwm3: pwm@200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@8000 {			/* 0x48308000, ap 98 54.0 */
@@ -1314,6 +1928,26 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x8000 0x1000>;
+
+			epwmss4: epwmss@0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ehrpwm4: pwm@48308200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@a000 {			/* 0x4830a000, ap 100 60.0 */
@@ -1336,6 +1970,26 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa000 0x1000>;
+
+			epwmss5: epwmss@0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ehrpwm5: pwm@200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@10000 {			/* 0x48310000, ap 64 4e.1 */
@@ -1353,6 +2007,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x10000 0x2000>;
+
+			rng: rng@0 {
+				compatible = "ti,omap4-rng";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+			};
 		};
 
 		target-module@13000 {			/* 0x48313000, ap 90 50.0 */
@@ -1393,6 +2053,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x20000 0x1000>;
+
+			gpio4: gpio@0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module@22000 {			/* 0x48322000, ap 116 64.0 */
@@ -1417,6 +2088,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x22000 0x1000>;
+
+			gpio5: gpio@0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module@26000 {			/* 0x48326000, ap 86 66.0 */
@@ -1437,6 +2119,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x26000 0x1000>;
+
+			vpfe0: vpfe@0 {
+				compatible = "ti,am437x-vpfe";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@28000 {			/* 0x48328000, ap 75 0e.0 */
@@ -1457,6 +2146,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x28000 0x1000>;
+
+			vpfe1: vpfe@0 {
+				compatible = "ti,am437x-vpfe";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@2a000 {			/* 0x4832a000, ap 88 3c.0 */
@@ -1499,6 +2195,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3d000 0x1000>;
+
+			timer9: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@3f000 {			/* 0x4833f000, ap 104 5c.0 */
@@ -1519,6 +2222,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3f000 0x1000>;
+
+			timer10: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@41000 {			/* 0x48341000, ap 106 76.0 */
@@ -1539,6 +2249,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x41000 0x1000>;
+
+			timer11: timer@0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module@45000 {			/* 0x48345000, ap 108 6a.0 */
@@ -1561,6 +2278,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x45000 0x1000>;
+
+			spi4: spi@0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module@47000 {			/* 0x48347000, ap 110 70.0 */
@@ -1578,6 +2304,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x47000 0x1000>;
+
+			hdq: hdq@0 {
+				compatible = "ti,am4372-hdq";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&func_12m_clk>;
+				clock-names = "fck";
+				status = "disabled";
+			};
 		};
 
 		target-module@4c000 {			/* 0x4834c000, ap 114 72.0 */
@@ -1609,14 +2344,65 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x80000 0x20000>;
+
+			dwc3_1: omap_dwc3@0 {
+				compatible = "ti,am437x-dwc3";
+				reg = <0x0 0x10000>;
+				interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				utmi-mode = <1>;
+				ranges = <0 0 0x20000>;
+
+				usb1: usb@10000 {
+					compatible = "synopsys,dwc3";
+					reg = <0x10000 0x10000>;
+					interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+					interrupt-names = "peripheral",
+							  "host",
+							  "otg";
+					phys = <&usb2_phy1>;
+					phy-names = "usb2-phy";
+					maximum-speed = "high-speed";
+					dr_mode = "otg";
+					status = "disabled";
+					snps,dis_u3_susphy_quirk;
+					snps,dis_u2_susphy_quirk;
+				};
+			};
 		};
 
 		target-module@a8000 {			/* 0x483a8000, ap 125 6c.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "ocp2scp0";
+			reg = <0xa8000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa8000 0x8000>;
+
+			ocp2scp0: ocp2scp@0 {
+				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x8000>;
+
+				usb2_phy1: phy@8000 {
+					compatible = "ti,am437x-usb2";
+					reg = <0x0 0x8000>;
+					syscon-phy-power = <&scm_conf 0x620>;
+					clocks = <&usb_phy0_always_on_clk32k>,
+						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
+					clock-names = "wkupclk", "refclk";
+					#phy-cells = <0>;
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@c0000 {			/* 0x483c0000, ap 127 7a.0 */
@@ -1640,14 +2426,65 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc0000 0x20000>;
+
+			dwc3_2: omap_dwc3@0 {
+				compatible = "ti,am437x-dwc3";
+				reg = <0x0 0x10000>;
+				interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				utmi-mode = <1>;
+				ranges = <0 0 0x20000>;
+
+				usb2: usb@10000 {
+					compatible = "synopsys,dwc3";
+					reg = <0x10000 0x10000>;
+					interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+					interrupt-names = "peripheral",
+							  "host",
+							  "otg";
+					phys = <&usb2_phy2>;
+					phy-names = "usb2-phy";
+					maximum-speed = "high-speed";
+					dr_mode = "otg";
+					status = "disabled";
+					snps,dis_u3_susphy_quirk;
+					snps,dis_u2_susphy_quirk;
+				};
+			};
 		};
 
 		target-module@e8000 {			/* 0x483e8000, ap 129 78.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "ocp2scp1";
+			reg = <0xe8000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP1_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xe8000 0x8000>;
+
+			ocp2scp1: ocp2scp@0 {
+				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x8000>;
+
+				usb2_phy2: phy@8000 {
+					compatible = "ti,am437x-usb2";
+					reg = <0x0 0x8000>;
+					syscon-phy-power = <&scm_conf 0x628>;
+					clocks = <&usb_phy1_always_on_clk32k>,
+						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
+					clock-names = "wkupclk", "refclk";
+					#phy-cells = <0>;
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@f2000 {			/* 0x483f2000, ap 112 5a.0 */
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
@ 2018-09-25  0:05   ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-arm-kernel

With l4 interconnect hierarchy and ti-sysc interconnect target module
data in place, we can simply move all the related child devices to
their proper location and enable probing using ti-sysc.

In general the first child device address range starts at range 0
from the ti-sysc interconnect target so the move involves adjusting
the child device reg properties for that.

In case of any regressions, problem devices can be reverted to probe
with legacy platform data as needed by moving them back and removing
the related interconnect target module node.

Note that we are not yet moving dss or wkup_m3, those will be moved
later after some related driver changes.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am4372.dtsi    | 876 +------------------------------
 arch/arm/boot/dts/am437x-l4.dtsi | 865 +++++++++++++++++++++++++++++-
 2 files changed, 858 insertions(+), 883 deletions(-)

diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -8,6 +8,7 @@
  * kind, whether express or implied.
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/am4.h>
@@ -159,12 +160,7 @@
 		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
 			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
 
-		l4_wkup: l4_wkup at 44c00000 {
-			compatible = "ti,am4-l4-wkup", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x44c00000 0x287000>;
-
+		l4_wkup: interconnect at 44c00000 {
 			wkup_m3: wkup_m3 at 100000 {
 				compatible = "ti,am4372-wkup-m3";
 				reg = <0x100000 0x4000>,
@@ -173,75 +169,10 @@
 				ti,hwmods = "wkup_m3";
 				ti,pm-firmware = "am335x-pm-firmware.elf";
 			};
-
-			prcm: prcm at 1f0000 {
-				compatible = "ti,am4-prcm", "simple-bus";
-				reg = <0x1f0000 0x11000>;
-				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0 0x1f0000 0x11000>;
-
-				prcm_clocks: clocks {
-					#address-cells = <1>;
-					#size-cells = <0>;
-				};
-
-				prcm_clockdomains: clockdomains {
-				};
-			};
-
-			scm: scm at 210000 {
-				compatible = "ti,am4-scm", "simple-bus";
-				reg = <0x210000 0x4000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0 0x210000 0x4000>;
-
-				am43xx_pinmux: pinmux at 800 {
-					compatible = "ti,am437-padconf",
-						     "pinctrl-single";
-					reg = <0x800 0x31c>;
-					#address-cells = <1>;
-					#size-cells = <0>;
-					#pinctrl-cells = <1>;
-					#interrupt-cells = <1>;
-					interrupt-controller;
-					pinctrl-single,register-width = <32>;
-					pinctrl-single,function-mask = <0xffffffff>;
-				};
-
-				scm_conf: scm_conf at 0 {
-					compatible = "syscon";
-					reg = <0x0 0x800>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-
-					scm_clocks: clocks {
-						#address-cells = <1>;
-						#size-cells = <0>;
-					};
-				};
-
-				wkup_m3_ipc: wkup_m3_ipc at 1324 {
-					compatible = "ti,am4372-wkup-m3-ipc";
-					reg = <0x1324 0x44>;
-					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
-					ti,rproc = <&wkup_m3>;
-					mboxes = <&mailbox &mbox_wkupm3>;
-				};
-
-				edma_xbar: dma-router at f90 {
-					compatible = "ti,am335x-edma-crossbar";
-					reg = <0xf90 0x40>;
-					#dma-cells = <3>;
-					dma-requests = <64>;
-					dma-masters = <&edma>;
-				};
-
-				scm_clockdomains: clockdomains {
-				};
-			};
+		};
+		l4_per: interconnect at 48000000 {
+		};
+		l4_fast: interconnect at 4a000000 {
 		};
 
 		emif: emif at 4c000000 {
@@ -297,333 +228,6 @@
 			interrupt-names = "edma3_tcerrint";
 		};
 
-		uart0: serial at 44e09000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x44e09000 0x2000>;
-			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart1";
-		};
-
-		uart1: serial at 48022000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x48022000 0x2000>;
-			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart2";
-			status = "disabled";
-		};
-
-		uart2: serial at 48024000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x48024000 0x2000>;
-			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart3";
-			status = "disabled";
-		};
-
-		uart3: serial at 481a6000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x481a6000 0x2000>;
-			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart4";
-			status = "disabled";
-		};
-
-		uart4: serial at 481a8000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x481a8000 0x2000>;
-			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart5";
-			status = "disabled";
-		};
-
-		uart5: serial at 481aa000 {
-			compatible = "ti,am4372-uart","ti,omap2-uart";
-			reg = <0x481aa000 0x2000>;
-			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "uart6";
-			status = "disabled";
-		};
-
-		mailbox: mailbox at 480c8000 {
-			compatible = "ti,omap4-mailbox";
-			reg = <0x480C8000 0x200>;
-			interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "mailbox";
-			#mbox-cells = <1>;
-			ti,mbox-num-users = <4>;
-			ti,mbox-num-fifos = <8>;
-			mbox_wkupm3: wkup_m3 {
-				ti,mbox-send-noirq;
-				ti,mbox-tx = <0 0 0>;
-				ti,mbox-rx = <0 0 3>;
-			};
-		};
-
-		timer1: timer at 44e31000 {
-			compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
-			reg = <0x44e31000 0x400>;
-			interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-alwon;
-			ti,hwmods = "timer1";
-			clocks = <&timer1_fck>;
-			clock-names = "fck";
-		};
-
-		timer2: timer at 48040000  {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48040000  0x400>;
-			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer2";
-			clocks = <&timer2_fck>;
-			clock-names = "fck";
-		};
-
-		timer3: timer at 48042000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48042000 0x400>;
-			interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer3";
-			status = "disabled";
-		};
-
-		timer4: timer at 48044000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48044000 0x400>;
-			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer4";
-			status = "disabled";
-		};
-
-		timer5: timer at 48046000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48046000 0x400>;
-			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer5";
-			status = "disabled";
-		};
-
-		timer6: timer at 48048000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48048000 0x400>;
-			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer6";
-			status = "disabled";
-		};
-
-		timer7: timer at 4804a000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x4804a000 0x400>;
-			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
-			ti,timer-pwm;
-			ti,hwmods = "timer7";
-			status = "disabled";
-		};
-
-		timer8: timer at 481c1000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x481c1000 0x400>;
-			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer8";
-			status = "disabled";
-		};
-
-		timer9: timer at 4833d000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x4833d000 0x400>;
-			interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer9";
-			status = "disabled";
-		};
-
-		timer10: timer at 4833f000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x4833f000 0x400>;
-			interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer10";
-			status = "disabled";
-		};
-
-		timer11: timer at 48341000 {
-			compatible = "ti,am4372-timer","ti,am335x-timer";
-			reg = <0x48341000 0x400>;
-			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "timer11";
-			status = "disabled";
-		};
-
-		counter32k: counter at 44e86000 {
-			compatible = "ti,am4372-counter32k","ti,omap-counter32k";
-			reg = <0x44e86000 0x40>;
-			ti,hwmods = "counter_32k";
-		};
-
-		rtc: rtc at 44e3e000 {
-			compatible = "ti,am4372-rtc", "ti,am3352-rtc",
-				     "ti,da830-rtc";
-			reg = <0x44e3e000 0x1000>;
-			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "rtc";
-			clocks = <&clk_32768_ck>;
-			clock-names = "int-clk";
-			system-power-controller;
-			status = "disabled";
-		};
-
-		wdt: wdt at 44e35000 {
-			compatible = "ti,am4372-wdt","ti,omap3-wdt";
-			reg = <0x44e35000 0x1000>;
-			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "wd_timer2";
-		};
-
-		gpio0: gpio at 44e07000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x44e07000 0x1000>;
-			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio1";
-			status = "disabled";
-		};
-
-		gpio1: gpio at 4804c000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x4804c000 0x1000>;
-			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio2";
-			status = "disabled";
-		};
-
-		gpio2: gpio at 481ac000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x481ac000 0x1000>;
-			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio3";
-			status = "disabled";
-		};
-
-		gpio3: gpio at 481ae000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x481ae000 0x1000>;
-			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio4";
-			status = "disabled";
-		};
-
-		gpio4: gpio at 48320000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x48320000 0x1000>;
-			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio5";
-			status = "disabled";
-		};
-
-		gpio5: gpio at 48322000 {
-			compatible = "ti,am4372-gpio","ti,omap4-gpio";
-			reg = <0x48322000 0x1000>;
-			interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			ti,hwmods = "gpio6";
-			status = "disabled";
-		};
-
-		hwspinlock: spinlock at 480ca000 {
-			compatible = "ti,omap4-hwspinlock";
-			reg = <0x480ca000 0x1000>;
-			ti,hwmods = "spinlock";
-			#hwlock-cells = <1>;
-		};
-
-		i2c0: i2c at 44e0b000 {
-			compatible = "ti,am4372-i2c","ti,omap4-i2c";
-			reg = <0x44e0b000 0x1000>;
-			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "i2c1";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c1: i2c at 4802a000 {
-			compatible = "ti,am4372-i2c","ti,omap4-i2c";
-			reg = <0x4802a000 0x1000>;
-			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "i2c2";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		i2c2: i2c at 4819c000 {
-			compatible = "ti,am4372-i2c","ti,omap4-i2c";
-			reg = <0x4819c000 0x1000>;
-			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "i2c3";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi0: spi at 48030000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x48030000 0x400>;
-			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi0";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		mmc1: mmc at 48060000 {
-			compatible = "ti,omap4-hsmmc";
-			reg = <0x48060000 0x1000>;
-			ti,hwmods = "mmc1";
-			ti,dual-volt;
-			ti,needs-special-reset;
-			dmas = <&edma 24 0>,
-				<&edma 25 0>;
-			dma-names = "tx", "rx";
-			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		mmc2: mmc at 481d8000 {
-			compatible = "ti,omap4-hsmmc";
-			reg = <0x481d8000 0x1000>;
-			ti,hwmods = "mmc2";
-			ti,needs-special-reset;
-			dmas = <&edma 2 0>,
-				<&edma 3 0>;
-			dma-names = "tx", "rx";
-			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
 		mmc3: mmc at 47810000 {
 			compatible = "ti,omap4-hsmmc";
 			reg = <0x47810000 0x1000>;
@@ -633,282 +237,6 @@
 			status = "disabled";
 		};
 
-		spi1: spi at 481a0000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x481a0000 0x400>;
-			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi1";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi2: spi at 481a2000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x481a2000 0x400>;
-			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi2";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi3: spi at 481a4000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x481a4000 0x400>;
-			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi3";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		spi4: spi at 48345000 {
-			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
-			reg = <0x48345000 0x400>;
-			interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "spi4";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			status = "disabled";
-		};
-
-		mac: ethernet at 4a100000 {
-			compatible = "ti,am4372-cpsw","ti,cpsw";
-			reg = <0x4a100000 0x800
-			       0x4a101200 0x100>;
-			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
-				      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ti,hwmods = "cpgmac0";
-			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
-				 <&dpll_clksel_mac_clk>;
-			clock-names = "fck", "cpts", "50mclk";
-			assigned-clocks = <&dpll_clksel_mac_clk>;
-			assigned-clock-rates = <50000000>;
-			status = "disabled";
-			cpdma_channels = <8>;
-			ale_entries = <1024>;
-			bd_ram_size = <0x2000>;
-			mac_control = <0x20>;
-			slaves = <2>;
-			active_slave = <0>;
-			cpts_clock_mult = <0x80000000>;
-			cpts_clock_shift = <29>;
-			ranges;
-			syscon = <&scm_conf>;
-
-			davinci_mdio: mdio at 4a101000 {
-				compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
-				reg = <0x4a101000 0x100>;
-				#address-cells = <1>;
-				#size-cells = <0>;
-				ti,hwmods = "davinci_mdio";
-				bus_freq = <1000000>;
-				status = "disabled";
-			};
-
-			cpsw_emac0: slave at 4a100200 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			cpsw_emac1: slave at 4a100300 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			phy_sel: cpsw-phy-sel at 44e10650 {
-				compatible = "ti,am43xx-cpsw-phy-sel";
-				reg= <0x44e10650 0x4>;
-				reg-names = "gmii-sel";
-			};
-		};
-
-		epwmss0: epwmss at 48300000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48300000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss0";
-			status = "disabled";
-
-			ecap0: ecap at 48300100 {
-				compatible = "ti,am4372-ecap",
-					     "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48300100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				status = "disabled";
-			};
-
-			ehrpwm0: pwm at 48300200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48300200 0x80>;
-				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss1: epwmss at 48302000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48302000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss1";
-			status = "disabled";
-
-			ecap1: ecap at 48302100 {
-				compatible = "ti,am4372-ecap",
-					     "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48302100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				status = "disabled";
-			};
-
-			ehrpwm1: pwm at 48302200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48302200 0x80>;
-				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss2: epwmss at 48304000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48304000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss2";
-			status = "disabled";
-
-			ecap2: ecap at 48304100 {
-				compatible = "ti,am4372-ecap",
-					     "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48304100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				status = "disabled";
-			};
-
-			ehrpwm2: pwm at 48304200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48304200 0x80>;
-				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss3: epwmss at 48306000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48306000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss3";
-			status = "disabled";
-
-			ehrpwm3: pwm at 48306200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48306200 0x80>;
-				clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss4: epwmss at 48308000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x48308000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss4";
-			status = "disabled";
-
-			ehrpwm4: pwm at 48308200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48308200 0x80>;
-				clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss5: epwmss at 4830a000 {
-			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
-			reg = <0x4830a000 0x10>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "epwmss5";
-			status = "disabled";
-
-			ehrpwm5: pwm at 4830a200 {
-				compatible = "ti,am4372-ehrpwm",
-					     "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x4830a200 0x80>;
-				clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		tscadc: tscadc at 44e0d000 {
-			compatible = "ti,am3359-tscadc";
-			reg = <0x44e0d000 0x1000>;
-			ti,hwmods = "adc_tsc";
-			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&adc_tsc_fck>;
-			clock-names = "fck";
-			status = "disabled";
-			dmas = <&edma 53 0>, <&edma 57 0>;
-			dma-names = "fifo0", "fifo1";
-
-			tsc {
-				compatible = "ti,am3359-tsc";
-			};
-
-			adc {
-				#io-channel-cells = <1>;
-				compatible = "ti,am3359-adc";
-			};
-
-		};
-
 		sham: sham at 53100000 {
 			compatible = "ti,omap5-sham";
 			ti,hwmods = "sham";
@@ -938,53 +266,6 @@
 			dma-names = "tx", "rx";
 		};
 
-		rng: rng at 48310000 {
-			compatible = "ti,omap4-rng";
-			ti,hwmods = "rng";
-			reg = <0x48310000 0x2000>;
-			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
-		};
-
-		mcasp0: mcasp at 48038000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp0";
-			reg = <0x48038000 0x2000>,
-			      <0x46000000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 8 2>,
-			       <&edma 9 2>;
-			dma-names = "tx", "rx";
-		};
-
-		mcasp1: mcasp at 4803c000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp1";
-			reg = <0x4803C000 0x2000>,
-			      <0x46400000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
-				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 10 2>,
-			       <&edma 11 2>;
-			dma-names = "tx", "rx";
-		};
-
-		elm: elm at 48080000 {
-			compatible = "ti,am3352-elm";
-			reg = <0x48080000 0x2000>;
-			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "elm";
-			clocks = <&l4ls_gclk>;
-			clock-names = "fck";
-			status = "disabled";
-		};
-
 		gpmc: gpmc at 50000000 {
 			compatible = "ti,am3352-gpmc";
 			ti,hwmods = "gpmc";
@@ -1005,102 +286,6 @@
 			status = "disabled";
 		};
 
-		ocp2scp0: ocp2scp at 483a8000 {
-			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "ocp2scp0";
-
-			usb2_phy1: phy at 483a8000 {
-				compatible = "ti,am437x-usb2";
-				reg = <0x483a8000 0x8000>;
-				syscon-phy-power = <&scm_conf 0x620>;
-				clocks = <&usb_phy0_always_on_clk32k>,
-					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
-				clock-names = "wkupclk", "refclk";
-				#phy-cells = <0>;
-				status = "disabled";
-			};
-		};
-
-		ocp2scp1: ocp2scp at 483e8000 {
-			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges;
-			ti,hwmods = "ocp2scp1";
-
-			usb2_phy2: phy at 483e8000 {
-				compatible = "ti,am437x-usb2";
-				reg = <0x483e8000 0x8000>;
-				syscon-phy-power = <&scm_conf 0x628>;
-				clocks = <&usb_phy1_always_on_clk32k>,
-					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
-				clock-names = "wkupclk", "refclk";
-				#phy-cells = <0>;
-				status = "disabled";
-			};
-		};
-
-		dwc3_1: omap_dwc3 at 48380000 {
-			compatible = "ti,am437x-dwc3";
-			ti,hwmods = "usb_otg_ss0";
-			reg = <0x48380000 0x10000>;
-			interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			utmi-mode = <1>;
-			ranges;
-
-			usb1: usb at 48390000 {
-				compatible = "synopsys,dwc3";
-				reg = <0x48390000 0x10000>;
-				interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
-				interrupt-names = "peripheral",
-						  "host",
-						  "otg";
-				phys = <&usb2_phy1>;
-				phy-names = "usb2-phy";
-				maximum-speed = "high-speed";
-				dr_mode = "otg";
-				status = "disabled";
-				snps,dis_u3_susphy_quirk;
-				snps,dis_u2_susphy_quirk;
-			};
-		};
-
-		dwc3_2: omap_dwc3 at 483c0000 {
-			compatible = "ti,am437x-dwc3";
-			ti,hwmods = "usb_otg_ss1";
-			reg = <0x483c0000 0x10000>;
-			interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			utmi-mode = <1>;
-			ranges;
-
-			usb2: usb at 483d0000 {
-				compatible = "synopsys,dwc3";
-				reg = <0x483d0000 0x10000>;
-				interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
-					     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
-				interrupt-names = "peripheral",
-						  "host",
-						  "otg";
-				phys = <&usb2_phy2>;
-				phy-names = "usb2-phy";
-				maximum-speed = "high-speed";
-				dr_mode = "otg";
-				status = "disabled";
-				snps,dis_u3_susphy_quirk;
-				snps,dis_u2_susphy_quirk;
-			};
-		};
-
 		qspi: spi at 47900000 {
 			compatible = "ti,am4372-qspi";
 			reg = <0x47900000 0x100>,
@@ -1114,16 +299,6 @@
 			status = "disabled";
 		};
 
-		hdq: hdq at 48347000 {
-			compatible = "ti,am4372-hdq";
-			reg = <0x48347000 0x1000>;
-			interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
-			clocks = <&func_12m_clk>;
-			clock-names = "fck";
-			ti,hwmods = "hdq1w";
-			status = "disabled";
-		};
-
 		dss: dss at 4832a000 {
 			compatible = "ti,omap3-dss";
 			reg = <0x4832a000 0x200>;
@@ -1173,45 +348,8 @@
 				pool;
 			};
 		};
-
-		dcan0: can at 481cc000 {
-			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
-			ti,hwmods = "d_can0";
-			clocks = <&dcan0_fck>;
-			clock-names = "fck";
-			reg = <0x481cc000 0x2000>;
-			syscon-raminit = <&scm_conf 0x644 0>;
-			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		dcan1: can at 481d0000 {
-			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
-			ti,hwmods = "d_can1";
-			clocks = <&dcan1_fck>;
-			clock-names = "fck";
-			reg = <0x481d0000 0x2000>;
-			syscon-raminit = <&scm_conf 0x644 1>;
-			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
-			status = "disabled";
-		};
-
-		vpfe0: vpfe at 48326000 {
-			compatible = "ti,am437x-vpfe";
-			reg = <0x48326000 0x2000>;
-			interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "vpfe0";
-			status = "disabled";
-		};
-
-		vpfe1: vpfe at 48328000 {
-			compatible = "ti,am437x-vpfe";
-			reg = <0x48328000 0x2000>;
-			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
-			ti,hwmods = "vpfe1";
-			status = "disabled";
-		};
 	};
 };
 
+#include "am437x-l4.dtsi"
 #include "am43xx-clocks.dtsi"
diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
--- a/arch/arm/boot/dts/am437x-l4.dtsi
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -48,11 +48,29 @@
 		};
 
 		target-module at f0000 {			/* 0x44df0000, ap 8 58.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0xf0000 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xf0000 0x10000>;
+
+			prcm: prcm at 0 {
+				compatible = "ti,am4-prcm", "simple-bus";
+				reg = <0x0 0x11000>;
+				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x11000>;
+
+				prcm_clocks: clocks {
+					#address-cells = <1>;
+					#size-cells = <0>;
+				};
+
+				prcm_clockdomains: clockdomains {
+				};
+			};
 		};
 	};
 
@@ -134,6 +152,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x7000 0x1000>;
+
+			gpio0: gpio at 0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 9000 {			/* 0x44e09000, ap 16 04.0 */
@@ -156,6 +185,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9000 0x1000>;
+
+			uart0: serial at 0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+			};
 		};
 
 		target-module at b000 {			/* 0x44e0b000, ap 18 48.0 */
@@ -180,6 +215,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xb000 0x1000>;
+
+			i2c0: i2c at 0 {
+				compatible = "ti,am4372-i2c","ti,omap4-i2c";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at d000 {			/* 0x44e0d000, ap 20 38.0 */
@@ -198,14 +242,94 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd000 0x1000>;
+
+			tscadc: tscadc at 0 {
+				compatible = "ti,am3359-tscadc";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&adc_tsc_fck>;
+				clock-names = "fck";
+				status = "disabled";
+				dmas = <&edma 53 0>, <&edma 57 0>;
+				dma-names = "fifo0", "fifo1";
+
+				tsc {
+					compatible = "ti,am3359-tsc";
+				};
+
+				adc {
+					#io-channel-cells = <1>;
+					compatible = "ti,am3359-adc";
+				};
+
+			};
 		};
 
 		target-module at 10000 {			/* 0x44e10000, ap 22 0c.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0x10000 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x10000 0x10000>;
+
+			scm: scm at 0 {
+				compatible = "ti,am4-scm", "simple-bus";
+				reg = <0x0 0x4000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x4000>;
+
+				phy_sel: cpsw-phy-sel at 650 {
+					compatible = "ti,am43xx-cpsw-phy-sel";
+					reg= <0x650 0x4>;
+					reg-names = "gmii-sel";
+				};
+
+				am43xx_pinmux: pinmux at 800 {
+					compatible = "ti,am437-padconf",
+						     "pinctrl-single";
+					reg = <0x800 0x31c>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+					#pinctrl-cells = <1>;
+					#interrupt-cells = <1>;
+					interrupt-controller;
+					pinctrl-single,register-width = <32>;
+					pinctrl-single,function-mask = <0xffffffff>;
+				};
+
+				scm_conf: scm_conf at 0 {
+					compatible = "syscon";
+					reg = <0x0 0x800>;
+					#address-cells = <1>;
+					#size-cells = <1>;
+
+					scm_clocks: clocks {
+						#address-cells = <1>;
+						#size-cells = <0>;
+					};
+				};
+
+				wkup_m3_ipc: wkup_m3_ipc at 1324 {
+					compatible = "ti,am4372-wkup-m3-ipc";
+					reg = <0x1324 0x44>;
+					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+					ti,rproc = <&wkup_m3>;
+					mboxes = <&mailbox &mbox_wkupm3>;
+				};
+
+				edma_xbar: dma-router at f90 {
+					compatible = "ti,am335x-edma-crossbar";
+					reg = <0xf90 0x40>;
+					#dma-cells = <3>;
+					dma-requests = <64>;
+					dma-masters = <&edma>;
+				};
+
+				scm_clockdomains: clockdomains {
+				};
+			};
 		};
 
 		target-module at 31000 {			/* 0x44e31000, ap 24 40.0 */
@@ -228,6 +352,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x31000 0x1000>;
+
+			timer1: timer at 0 {
+				compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-alwon;
+				clocks = <&timer1_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module at 33000 {			/* 0x44e33000, ap 26 18.0 */
@@ -258,6 +391,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x35000 0x1000>;
+
+			wdt: wdt at 0 {
+				compatible = "ti,am4372-wdt","ti,omap3-wdt";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+			};
 		};
 
 		target-module at 37000 {			/* 0x44e37000, ap 30 08.0 */
@@ -292,6 +431,18 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3e000 0x1000>;
+
+			rtc: rtc at 0 {
+				compatible = "ti,am4372-rtc", "ti,am3352-rtc",
+					     "ti,da830-rtc";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&clk_32768_ck>;
+				clock-names = "int-clk";
+				system-power-controller;
+				status = "disabled";
+			};
 		};
 
 		target-module at 40000 {			/* 0x44e40000, ap 36 68.0 */
@@ -316,6 +467,11 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x86000 0x1000>;
+
+			counter32k: counter at 0 {
+				compatible = "ti,am4372-counter32k","ti,omap-counter32k";
+				reg = <0x0 0x40>;
+			};
 		};
 
 		target-module at 88000 {			/* 0x44e88000, ap 38 12.0 */
@@ -355,11 +511,74 @@
 			 <0x00280000 0x00280000 0x001000>;	/* ap 8 */
 
 		target-module at 100000 {			/* 0x4a100000, ap 3 04.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "cpgmac0";
+			reg = <0x101200 0x4>,
+			      <0x101208 0x4>,
+			      <0x101204 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <0>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,syss-mask = <1>;
+			clocks = <&cpsw_125mhz_clkctrl AM4_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x100000 0x8000>;
+
+			mac: ethernet at 0 {
+				compatible = "ti,am4372-cpsw","ti,cpsw";
+				reg = <0x0 0x800
+				       0x1200 0x100>;
+				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
+					      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
+					 <&dpll_clksel_mac_clk>;
+				clock-names = "fck", "cpts", "50mclk";
+				assigned-clocks = <&dpll_clksel_mac_clk>;
+				assigned-clock-rates = <50000000>;
+				status = "disabled";
+				cpdma_channels = <8>;
+				ale_entries = <1024>;
+				bd_ram_size = <0x2000>;
+				mac_control = <0x20>;
+				slaves = <2>;
+				active_slave = <0>;
+				cpts_clock_mult = <0x80000000>;
+				cpts_clock_shift = <29>;
+				ranges = <0 0 0x8000>;
+				syscon = <&scm_conf>;
+				cpsw-phy-sel = <&phy_sel>;
+
+				davinci_mdio: mdio at 1000 {
+					compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
+					reg = <0x1000 0x100>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+					clocks = <&cpsw_125mhz_gclk>;
+					clock-names = "fck";
+					ti,hwmods = "davinci_mdio";
+					bus_freq = <1000000>;
+					status = "disabled";
+				};
+
+				cpsw_emac0: slave at 200 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+
+				cpsw_emac1: slave at 300 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+			};
 		};
 
 		target-module at 200000 {			/* 0x4a200000, ap 7 02.0 */
@@ -475,6 +694,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x22000 0x1000>;
+
+			uart1: serial at 0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 24000 {			/* 0x48024000, ap 10 1c.0 */
@@ -497,6 +723,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x24000 0x1000>;
+
+			uart2: serial at 0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 2a000 {			/* 0x4802a000, ap 12 22.0 */
@@ -521,6 +754,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2a000 0x1000>;
+
+			i2c1: i2c at 0 {
+				compatible = "ti,am4372-i2c","ti,omap4-i2c";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 30000 {			/* 0x48030000, ap 65 08.0 */
@@ -543,6 +785,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x30000 0x1000>;
+
+			spi0: spi at 0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 34000 {			/* 0x48034000, ap 80 56.0 */
@@ -576,6 +827,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x38000 0x2000>;
+
+			mcasp0: mcasp at 0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46000000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
+					     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 8 2>,
+				       <&edma 9 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at 3c000 {			/* 0x4803c000, ap 16 2a.0 */
@@ -593,6 +858,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3c000 0x2000>;
+
+			mcasp1: mcasp at 0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46400000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
+					     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 10 2>,
+				       <&edma 11 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at 40000 {			/* 0x48040000, ap 18 1e.0 */
@@ -613,6 +892,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x40000 0x1000>;
+
+			timer2: timer at 0  {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&timer2_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module at 42000 {			/* 0x48042000, ap 20 24.0 */
@@ -633,6 +920,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x42000 0x1000>;
+
+			timer3: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 44000 {			/* 0x48044000, ap 22 26.0 */
@@ -653,6 +947,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x44000 0x1000>;
+
+			timer4: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module at 46000 {			/* 0x48046000, ap 24 28.0 */
@@ -673,6 +975,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x46000 0x1000>;
+
+			timer5: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module at 48000 {			/* 0x48048000, ap 26 1a.0 */
@@ -693,6 +1003,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x48000 0x1000>;
+
+			timer6: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module at 4a000 {			/* 0x4804a000, ap 71 48.0 */
@@ -713,6 +1031,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4a000 0x1000>;
+
+			timer7: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+				ti,timer-pwm;
+				status = "disabled";
+			};
 		};
 
 		target-module at 4c000 {			/* 0x4804c000, ap 28 36.0 */
@@ -737,6 +1063,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4c000 0x1000>;
+
+			gpio1: gpio at 0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 60000 {			/* 0x48060000, ap 30 14.0 */
@@ -760,6 +1097,18 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x60000 0x1000>;
+
+			mmc1: mmc at 0 {
+				compatible = "ti,omap4-hsmmc";
+				reg = <0x0 0x1000>;
+				ti,dual-volt;
+				ti,needs-special-reset;
+				dmas = <&edma 24 0>,
+					<&edma 25 0>;
+				dma-names = "tx", "rx";
+				interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 80000 {			/* 0x48080000, ap 32 18.0 */
@@ -782,6 +1131,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x80000 0x10000>;
+
+			elm: elm at 0 {
+				compatible = "ti,am3352-elm";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&l4ls_gclk>;
+				clock-names = "fck";
+				status = "disabled";
+			};
 		};
 
 		target-module at c8000 {			/* 0x480c8000, ap 73 06.0 */
@@ -800,6 +1158,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc8000 0x1000>;
+
+			mailbox: mailbox at 0 {
+				compatible = "ti,omap4-mailbox";
+				reg = <0x0 0x200>;
+				interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+				#mbox-cells = <1>;
+				ti,mbox-num-users = <4>;
+				ti,mbox-num-fifos = <8>;
+				mbox_wkupm3: wkup_m3 {
+					ti,mbox-send-noirq;
+					ti,mbox-tx = <0 0 0>;
+					ti,mbox-rx = <0 0 3>;
+				};
+			};
 		};
 
 		target-module at ca000 {			/* 0x480ca000, ap 77 38.0 */
@@ -823,6 +1195,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xca000 0x1000>;
+
+			hwspinlock: spinlock at 0 {
+				compatible = "ti,omap4-hwspinlock";
+				reg = <0x0 0x1000>;
+				#hwlock-cells = <1>;
+			};
 		};
 	};
 
@@ -899,6 +1277,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9c000 0x1000>;
+
+			i2c2: i2c at 0 {
+				compatible = "ti,am4372-i2c","ti,omap4-i2c";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a0000 {			/* 0x481a0000, ap 67 2c.0 */
@@ -921,6 +1308,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa0000 0x1000>;
+
+			spi1: spi at 0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a2000 {			/* 0x481a2000, ap 69 2e.0 */
@@ -943,6 +1339,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa2000 0x1000>;
+
+			spi2: spi at 0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a4000 {			/* 0x481a4000, ap 92 62.0 */
@@ -965,6 +1370,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa4000 0x1000>;
+
+			spi3: spi at 0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a6000 {			/* 0x481a6000, ap 40 16.0 */
@@ -987,6 +1401,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa6000 0x1000>;
+
+			uart3: serial at 0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a8000 {			/* 0x481a8000, ap 42 20.0 */
@@ -1009,6 +1430,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa8000 0x1000>;
+
+			uart4: serial at 0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at aa000 {			/* 0x481aa000, ap 44 12.0 */
@@ -1031,6 +1459,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xaa000 0x1000>;
+
+			uart5: serial at 0 {
+				compatible = "ti,am4372-uart","ti,omap2-uart";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at ac000 {			/* 0x481ac000, ap 46 30.0 */
@@ -1055,6 +1490,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xac000 0x1000>;
+
+			gpio2: gpio at 0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module at ae000 {			/* 0x481ae000, ap 48 32.0 */
@@ -1079,6 +1525,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xae000 0x1000>;
+
+			gpio3: gpio at 0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module at c1000 {			/* 0x481c1000, ap 94 68.0 */
@@ -1099,22 +1556,55 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc1000 0x1000>;
+
+			timer8: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at cc000 {			/* 0x481cc000, ap 50 46.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can0";
+			reg = <0xcc000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xcc000 0x2000>;
+
+			dcan0: can at 0 {
+				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				syscon-raminit = <&scm_conf 0x644 0>;
+				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at d0000 {			/* 0x481d0000, ap 52 3a.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can1";
+			reg = <0xd0000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd0000 0x2000>;
+
+			dcan1: can at 0 {
+				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				syscon-raminit = <&scm_conf 0x644 1>;
+				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at d8000 {			/* 0x481d8000, ap 54 5e.0 */
@@ -1138,6 +1628,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd8000 0x1000>;
+
+			mmc2: mmc at 0 {
+				compatible = "ti,omap4-hsmmc";
+				reg = <0x0 0x1000>;
+				ti,needs-special-reset;
+				dmas = <&edma 2 0>,
+					<&edma 3 0>;
+				dma-names = "tx", "rx";
+				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 	};
 
@@ -1226,6 +1727,37 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x1000>;
+
+			epwmss0: epwmss at 0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ecap0: ecap at 100 {
+					compatible = "ti,am4372-ecap",
+						     "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					status = "disabled";
+				};
+
+				ehrpwm0: pwm at 200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 2000 {			/* 0x48302000, ap 58 4a.0 */
@@ -1248,6 +1780,37 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2000 0x1000>;
+
+			epwmss1: epwmss at 0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ecap1: ecap at 100 {
+					compatible = "ti,am4372-ecap",
+						     "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					status = "disabled";
+				};
+
+				ehrpwm1: pwm at 200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 4000 {			/* 0x48304000, ap 60 44.0 */
@@ -1270,6 +1833,37 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4000 0x1000>;
+
+			epwmss2: epwmss at 0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ecap2: ecap at 100 {
+					compatible = "ti,am4372-ecap",
+						     "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					status = "disabled";
+				};
+
+				ehrpwm2: pwm at 200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 6000 {			/* 0x48306000, ap 96 58.0 */
@@ -1292,6 +1886,26 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x6000 0x1000>;
+
+			epwmss3: epwmss at 0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ehrpwm3: pwm at 200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 8000 {			/* 0x48308000, ap 98 54.0 */
@@ -1314,6 +1928,26 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x8000 0x1000>;
+
+			epwmss4: epwmss at 0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ehrpwm4: pwm at 48308200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at a000 {			/* 0x4830a000, ap 100 60.0 */
@@ -1336,6 +1970,26 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa000 0x1000>;
+
+			epwmss5: epwmss at 0 {
+				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x1000>;
+				status = "disabled";
+
+				ehrpwm5: pwm at 200 {
+					compatible = "ti,am4372-ehrpwm",
+						     "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x200 0x80>;
+					clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 10000 {			/* 0x48310000, ap 64 4e.1 */
@@ -1353,6 +2007,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x10000 0x2000>;
+
+			rng: rng at 0 {
+				compatible = "ti,omap4-rng";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+			};
 		};
 
 		target-module at 13000 {			/* 0x48313000, ap 90 50.0 */
@@ -1393,6 +2053,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x20000 0x1000>;
+
+			gpio4: gpio at 0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 22000 {			/* 0x48322000, ap 116 64.0 */
@@ -1417,6 +2088,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x22000 0x1000>;
+
+			gpio5: gpio at 0 {
+				compatible = "ti,am4372-gpio","ti,omap4-gpio";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 26000 {			/* 0x48326000, ap 86 66.0 */
@@ -1437,6 +2119,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x26000 0x1000>;
+
+			vpfe0: vpfe at 0 {
+				compatible = "ti,am437x-vpfe";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 28000 {			/* 0x48328000, ap 75 0e.0 */
@@ -1457,6 +2146,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x28000 0x1000>;
+
+			vpfe1: vpfe at 0 {
+				compatible = "ti,am437x-vpfe";
+				reg = <0x0 0x2000>;
+				interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 2a000 {			/* 0x4832a000, ap 88 3c.0 */
@@ -1499,6 +2195,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3d000 0x1000>;
+
+			timer9: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 3f000 {			/* 0x4833f000, ap 104 5c.0 */
@@ -1519,6 +2222,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3f000 0x1000>;
+
+			timer10: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 41000 {			/* 0x48341000, ap 106 76.0 */
@@ -1539,6 +2249,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x41000 0x1000>;
+
+			timer11: timer at 0 {
+				compatible = "ti,am4372-timer","ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 45000 {			/* 0x48345000, ap 108 6a.0 */
@@ -1561,6 +2278,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x45000 0x1000>;
+
+			spi4: spi at 0 {
+				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+				reg = <0x0 0x400>;
+				interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <0>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 47000 {			/* 0x48347000, ap 110 70.0 */
@@ -1578,6 +2304,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x47000 0x1000>;
+
+			hdq: hdq at 0 {
+				compatible = "ti,am4372-hdq";
+				reg = <0x0 0x1000>;
+				interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
+				clocks = <&func_12m_clk>;
+				clock-names = "fck";
+				status = "disabled";
+			};
 		};
 
 		target-module at 4c000 {			/* 0x4834c000, ap 114 72.0 */
@@ -1609,14 +2344,65 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x80000 0x20000>;
+
+			dwc3_1: omap_dwc3 at 0 {
+				compatible = "ti,am437x-dwc3";
+				reg = <0x0 0x10000>;
+				interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				utmi-mode = <1>;
+				ranges = <0 0 0x20000>;
+
+				usb1: usb at 10000 {
+					compatible = "synopsys,dwc3";
+					reg = <0x10000 0x10000>;
+					interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+					interrupt-names = "peripheral",
+							  "host",
+							  "otg";
+					phys = <&usb2_phy1>;
+					phy-names = "usb2-phy";
+					maximum-speed = "high-speed";
+					dr_mode = "otg";
+					status = "disabled";
+					snps,dis_u3_susphy_quirk;
+					snps,dis_u2_susphy_quirk;
+				};
+			};
 		};
 
 		target-module at a8000 {			/* 0x483a8000, ap 125 6c.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "ocp2scp0";
+			reg = <0xa8000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa8000 0x8000>;
+
+			ocp2scp0: ocp2scp at 0 {
+				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x8000>;
+
+				usb2_phy1: phy at 8000 {
+					compatible = "ti,am437x-usb2";
+					reg = <0x0 0x8000>;
+					syscon-phy-power = <&scm_conf 0x620>;
+					clocks = <&usb_phy0_always_on_clk32k>,
+						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
+					clock-names = "wkupclk", "refclk";
+					#phy-cells = <0>;
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at c0000 {			/* 0x483c0000, ap 127 7a.0 */
@@ -1640,14 +2426,65 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc0000 0x20000>;
+
+			dwc3_2: omap_dwc3 at 0 {
+				compatible = "ti,am437x-dwc3";
+				reg = <0x0 0x10000>;
+				interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				utmi-mode = <1>;
+				ranges = <0 0 0x20000>;
+
+				usb2: usb at 10000 {
+					compatible = "synopsys,dwc3";
+					reg = <0x10000 0x10000>;
+					interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+						     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+					interrupt-names = "peripheral",
+							  "host",
+							  "otg";
+					phys = <&usb2_phy2>;
+					phy-names = "usb2-phy";
+					maximum-speed = "high-speed";
+					dr_mode = "otg";
+					status = "disabled";
+					snps,dis_u3_susphy_quirk;
+					snps,dis_u2_susphy_quirk;
+				};
+			};
 		};
 
 		target-module at e8000 {			/* 0x483e8000, ap 129 78.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "ocp2scp1";
+			reg = <0xe8000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP1_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xe8000 0x8000>;
+
+			ocp2scp1: ocp2scp at 0 {
+				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x8000>;
+
+				usb2_phy2: phy at 8000 {
+					compatible = "ti,am437x-usb2";
+					reg = <0x0 0x8000>;
+					syscon-phy-power = <&scm_conf 0x628>;
+					clocks = <&usb_phy1_always_on_clk32k>,
+						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
+					clock-names = "wkupclk", "refclk";
+					#phy-cells = <0>;
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at f2000 {			/* 0x483f2000, ap 112 5a.0 */
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 3/4] ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
  2018-09-25  0:05 ` Tony Lindgren
@ 2018-09-25  0:05   ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
for l4 interconnect instances with the related ti-sysc interconnect
module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.

Using ti-sysc driver binding allows us to start dropping legacy platform
data in arch/arm/mach-omap2/omap*hwmod*data.c files later on in favor of
ti-sysc dts data.

This data is generated based on platform data from a booted system
and the interconnect acces protection registers for ranges. To avoid
regressions, we initially validate the device tree provided data
against the existing platform data on boot.

Note that we cannot yet include this file from the SoC dtsi file until
the child devices are moved to their proper locations in the
interconnect hierarchy in the following patch. Otherwise we would have
the each module probed twice.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 1543 ++++++++++++++++++++++++++++++
 1 file changed, 1543 insertions(+)
 create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
new file mode 100644
--- /dev/null
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -0,0 +1,1543 @@
+&l4_wkup {						/* 0x44c00000 */
+	compatible = "ti,am33xx-l4-wkup", "simple-bus";
+	reg = <0x44c00000 0x800>,
+	      <0x44c00800 0x800>,
+	      <0x44c01000 0x400>,
+	      <0x44c01400 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x44c00000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x44d00000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x44e00000 0x100000>;	/* segment 2 */
+
+	segment@0 {					/* 0x44c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>;	/* ap 3 */
+	};
+
+	segment@100000 {					/* 0x44d00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00100000 0x004000>,	/* ap 4 */
+			 <0x00004000 0x00104000 0x001000>,	/* ap 5 */
+			 <0x00080000 0x00180000 0x002000>,	/* ap 6 */
+			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
+
+		target-module@0 {			/* 0x44d00000, ap 4 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x4000>;
+		};
+
+		target-module@80000 {			/* 0x44d80000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x2000>;
+		};
+	};
+
+	segment@200000 {					/* 0x44e00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00200000 0x002000>,	/* ap 8 */
+			 <0x00002000 0x00202000 0x001000>,	/* ap 9 */
+			 <0x00003000 0x00203000 0x001000>,	/* ap 10 */
+			 <0x00004000 0x00204000 0x001000>,	/* ap 11 */
+			 <0x00005000 0x00205000 0x001000>,	/* ap 12 */
+			 <0x00006000 0x00206000 0x001000>,	/* ap 13 */
+			 <0x00007000 0x00207000 0x001000>,	/* ap 14 */
+			 <0x00008000 0x00208000 0x001000>,	/* ap 15 */
+			 <0x00009000 0x00209000 0x001000>,	/* ap 16 */
+			 <0x0000a000 0x0020a000 0x001000>,	/* ap 17 */
+			 <0x0000b000 0x0020b000 0x001000>,	/* ap 18 */
+			 <0x0000c000 0x0020c000 0x001000>,	/* ap 19 */
+			 <0x0000d000 0x0020d000 0x001000>,	/* ap 20 */
+			 <0x0000f000 0x0020f000 0x001000>,	/* ap 21 */
+			 <0x00010000 0x00210000 0x010000>,	/* ap 22 */
+			 <0x00020000 0x00220000 0x010000>,	/* ap 23 */
+			 <0x00030000 0x00230000 0x001000>,	/* ap 24 */
+			 <0x00031000 0x00231000 0x001000>,	/* ap 25 */
+			 <0x00032000 0x00232000 0x001000>,	/* ap 26 */
+			 <0x00033000 0x00233000 0x001000>,	/* ap 27 */
+			 <0x00034000 0x00234000 0x001000>,	/* ap 28 */
+			 <0x00035000 0x00235000 0x001000>,	/* ap 29 */
+			 <0x00036000 0x00236000 0x001000>,	/* ap 30 */
+			 <0x00037000 0x00237000 0x001000>,	/* ap 31 */
+			 <0x00038000 0x00238000 0x001000>,	/* ap 32 */
+			 <0x00039000 0x00239000 0x001000>,	/* ap 33 */
+			 <0x0003a000 0x0023a000 0x001000>,	/* ap 34 */
+			 <0x0003e000 0x0023e000 0x001000>,	/* ap 35 */
+			 <0x0003f000 0x0023f000 0x001000>,	/* ap 36 */
+			 <0x0000e000 0x0020e000 0x001000>,	/* ap 37 */
+			 <0x00040000 0x00240000 0x040000>,	/* ap 38 */
+			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
+
+		target-module@0 {			/* 0x44e00000, ap 8 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x2000>;
+		};
+
+		target-module@3000 {			/* 0x44e03000, ap 10 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+
+		target-module@5000 {			/* 0x44e05000, ap 12 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x5000 0x1000>;
+		};
+
+		target-module@7000 {			/* 0x44e07000, ap 14 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio1";
+			reg = <0x7000 0x4>,
+			      <0x7010 0x4>,
+			      <0x7114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>,
+				 <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x7000 0x1000>;
+		};
+
+		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart1";
+			reg = <0x9050 0x4>,
+			      <0x9054 0x4>,
+			      <0x9058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_UART1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9000 0x1000>;
+		};
+
+		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c1";
+			reg = <0xb000 0x8>,
+			      <0xb010 0x8>,
+			      <0xb090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_I2C1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb000 0x1000>;
+		};
+
+		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "adc_tsc";
+			reg = <0xd000 0x4>,
+			      <0xd010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_ADC_TSC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x0000d000 0x00001000>,
+				 <0x00001000 0x0000e000 0x00001000>;
+		};
+
+		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00010000 0x00010000>,
+				 <0x00010000 0x00020000 0x00010000>;
+		};
+
+		target-module@31000 {			/* 0x44e31000, ap 25 40.0 */
+			compatible = "ti,sysc-omap2-timer", "ti,sysc";
+			ti,hwmods = "timer1";
+			reg = <0x31000 0x4>,
+			      <0x31010 0x4>,
+			      <0x31014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x31000 0x1000>;
+		};
+
+		target-module@33000 {			/* 0x44e33000, ap 27 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x33000 0x1000>;
+		};
+
+		target-module@35000 {			/* 0x44e35000, ap 29 50.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "wd_timer2";
+			reg = <0x35000 0x4>,
+			      <0x35010 0x4>,
+			      <0x35014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
+					 SYSC_OMAP2_SOFTRESET)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_WD_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x35000 0x1000>;
+		};
+
+		target-module@37000 {			/* 0x44e37000, ap 31 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x37000 0x1000>;
+		};
+
+		target-module@39000 {			/* 0x44e39000, ap 33 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x39000 0x1000>;
+		};
+
+		target-module@3e000 {			/* 0x44e3e000, ap 35 60.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "rtc";
+			reg = <0x3e074 0x4>,
+			      <0x3e078 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
+			clocks = <&l4_rtc_clkctrl AM3_L4_RTC_RTC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module@40000 {			/* 0x44e40000, ap 38 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x40000>;
+		};
+	};
+};
+
+&l4_fw {						/* 0x47c00000 */
+	compatible = "ti,am33xx-l4-fw", "simple-bus";
+	reg = <0x47c00000 0x800>,
+	      <0x47c00800 0x800>,
+	      <0x47c01000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x47c00000 0x1000000>;	/* segment 0 */
+
+	segment@0 {					/* 0x47c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x0000c000 0x0000c000 0x001000>,	/* ap 3 */
+			 <0x0000d000 0x0000d000 0x001000>,	/* ap 4 */
+			 <0x0000e000 0x0000e000 0x001000>,	/* ap 5 */
+			 <0x0000f000 0x0000f000 0x001000>,	/* ap 6 */
+			 <0x00010000 0x00010000 0x001000>,	/* ap 7 */
+			 <0x00011000 0x00011000 0x001000>,	/* ap 8 */
+			 <0x0001a000 0x0001a000 0x001000>,	/* ap 9 */
+			 <0x0001b000 0x0001b000 0x001000>,	/* ap 10 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 11 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 12 */
+			 <0x00026000 0x00026000 0x001000>,	/* ap 13 */
+			 <0x00027000 0x00027000 0x001000>,	/* ap 14 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 15 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 16 */
+			 <0x00038000 0x00038000 0x001000>,	/* ap 17 */
+			 <0x00039000 0x00039000 0x001000>,	/* ap 18 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 19 */
+			 <0x0003b000 0x0003b000 0x001000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x0003f000 0x0003f000 0x001000>,	/* ap 22 */
+			 <0x0003c000 0x0003c000 0x001000>,	/* ap 23 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 24 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 25 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 26 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 27 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 28 */
+			 <0x00028000 0x00028000 0x001000>,	/* ap 29 */
+			 <0x00029000 0x00029000 0x001000>,	/* ap 30 */
+			 <0x00032000 0x00032000 0x001000>,	/* ap 31 */
+			 <0x00033000 0x00033000 0x001000>,	/* ap 32 */
+			 <0x0003d000 0x0003d000 0x001000>,	/* ap 33 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 34 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 35 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 36 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 37 */
+			 <0x00015000 0x00015000 0x001000>;	/* ap 38 */
+
+		target-module@c000 {			/* 0x47c0c000, ap 3 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc000 0x1000>;
+		};
+
+		target-module@e000 {			/* 0x47c0e000, ap 5 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module@10000 {			/* 0x47c10000, ap 7 20.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x1000>;
+		};
+
+		target-module@14000 {			/* 0x47c14000, ap 37 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module@1a000 {			/* 0x47c1a000, ap 9 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x1a000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x47c24000, ap 11 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module@26000 {			/* 0x47c26000, ap 13 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x26000 0x1000>;
+		};
+
+		target-module@28000 {			/* 0x47c28000, ap 29 40.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x28000 0x1000>;
+		};
+
+		target-module@30000 {			/* 0x47c30000, ap 15 14.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module@32000 {			/* 0x47c32000, ap 31 06.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x32000 0x1000>;
+		};
+
+		target-module@38000 {			/* 0x47c38000, ap 17 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x1000>;
+		};
+
+		target-module@3a000 {			/* 0x47c3a000, ap 19 1c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3a000 0x1000>;
+		};
+
+		target-module@3c000 {			/* 0x47c3c000, ap 23 38.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x1000>;
+		};
+
+		target-module@3e000 {			/* 0x47c3e000, ap 21 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module@40000 {			/* 0x47c40000, ap 24 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module@42000 {			/* 0x47c42000, ap 35 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module@44000 {			/* 0x47c44000, ap 27 24.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module@46000 {			/* 0x47c46000, ap 25 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+	};
+};
+
+&l4_fast {					/* 0x4a000000 */
+	compatible = "ti,am33xx-l4-fast", "simple-bus";
+	reg = <0x4a000000 0x800>,
+	      <0x4a000800 0x800>,
+	      <0x4a001000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4a000000 0x1000000>;	/* segment 0 */
+
+	segment@0 {					/* 0x4a000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00100000 0x00100000 0x008000>,	/* ap 3 */
+			 <0x00108000 0x00108000 0x001000>,	/* ap 4 */
+			 <0x00180000 0x00180000 0x020000>,	/* ap 5 */
+			 <0x001a0000 0x001a0000 0x001000>,	/* ap 6 */
+			 <0x00200000 0x00200000 0x080000>,	/* ap 7 */
+			 <0x00280000 0x00280000 0x001000>,	/* ap 8 */
+			 <0x00300000 0x00300000 0x080000>,	/* ap 9 */
+			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
+
+		target-module@100000 {			/* 0x4a100000, ap 3 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x100000 0x8000>;
+		};
+
+		target-module@180000 {			/* 0x4a180000, ap 5 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x180000 0x20000>;
+		};
+
+		target-module@200000 {			/* 0x4a200000, ap 7 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x200000 0x80000>;
+		};
+
+		target-module@300000 {			/* 0x4a300000, ap 9 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x300000 0x80000>;
+		};
+	};
+};
+
+&l4_mpuss {						/* 0x4b140000 */
+	compatible = "ti,am33xx-l4-mpuss", "simple-bus";
+	reg = <0x4b144400 0x100>,
+	      <0x4b144800 0x400>;
+	reg-names = "la", "ap";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4b140000 0x008000>;	/* segment 0 */
+
+	segment@0 {					/* 0x4b140000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00004800 0x00004800 0x000400>,	/* ap 0 */
+			 <0x00001000 0x00001000 0x001000>,	/* ap 1 */
+			 <0x00002000 0x00002000 0x001000>,	/* ap 2 */
+			 <0x00004000 0x00004000 0x000400>,	/* ap 3 */
+			 <0x00005000 0x00005000 0x000400>,	/* ap 4 */
+			 <0x00000000 0x00000000 0x001000>,	/* ap 5 */
+			 <0x00003000 0x00003000 0x001000>,	/* ap 6 */
+			 <0x00000800 0x00000800 0x000800>;	/* ap 7 */
+
+		target-module@0 {			/* 0x4b140000, ap 5 02.2 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00000000 0x00001000>,
+				 <0x00001000 0x00001000 0x00001000>,
+				 <0x00002000 0x00002000 0x00001000>;
+		};
+
+		target-module@3000 {			/* 0x4b143000, ap 6 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+	};
+};
+
+&l4_per {						/* 0x48000000 */
+	compatible = "ti,am33xx-l4-per", "simple-bus";
+	reg = <0x48000000 0x800>,
+	      <0x48000800 0x800>,
+	      <0x48001000 0x400>,
+	      <0x48001400 0x400>,
+	      <0x48001800 0x400>,
+	      <0x48001c00 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
+		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+
+	segment@0 {					/* 0x48000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
+			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
+			 <0x00001c00 0x00001c00 0x000400>,	/* ap 5 */
+			 <0x00008000 0x00008000 0x001000>,	/* ap 6 */
+			 <0x00009000 0x00009000 0x001000>,	/* ap 7 */
+			 <0x00016000 0x00016000 0x001000>,	/* ap 8 */
+			 <0x00017000 0x00017000 0x001000>,	/* ap 9 */
+			 <0x00022000 0x00022000 0x001000>,	/* ap 10 */
+			 <0x00023000 0x00023000 0x001000>,	/* ap 11 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 12 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 13 */
+			 <0x0002a000 0x0002a000 0x001000>,	/* ap 14 */
+			 <0x0002b000 0x0002b000 0x001000>,	/* ap 15 */
+			 <0x00038000 0x00038000 0x002000>,	/* ap 16 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 17 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 18 */
+			 <0x00015000 0x00015000 0x001000>,	/* ap 19 */
+			 <0x0003c000 0x0003c000 0x002000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 22 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 23 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 24 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 25 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 26 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 27 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 28 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 29 */
+			 <0x00048000 0x00048000 0x001000>,	/* ap 30 */
+			 <0x00049000 0x00049000 0x001000>,	/* ap 31 */
+			 <0x0004c000 0x0004c000 0x001000>,	/* ap 32 */
+			 <0x0004d000 0x0004d000 0x001000>,	/* ap 33 */
+			 <0x00050000 0x00050000 0x002000>,	/* ap 34 */
+			 <0x00052000 0x00052000 0x001000>,	/* ap 35 */
+			 <0x00060000 0x00060000 0x001000>,	/* ap 36 */
+			 <0x00061000 0x00061000 0x001000>,	/* ap 37 */
+			 <0x00080000 0x00080000 0x010000>,	/* ap 38 */
+			 <0x00090000 0x00090000 0x001000>,	/* ap 39 */
+			 <0x000a0000 0x000a0000 0x010000>,	/* ap 40 */
+			 <0x000b0000 0x000b0000 0x001000>,	/* ap 41 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 77 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 78 */
+			 <0x0004a000 0x0004a000 0x001000>,	/* ap 85 */
+			 <0x0004b000 0x0004b000 0x001000>,	/* ap 86 */
+			 <0x000c8000 0x000c8000 0x001000>,	/* ap 87 */
+			 <0x000c9000 0x000c9000 0x001000>,	/* ap 88 */
+			 <0x000cc000 0x000cc000 0x001000>,	/* ap 89 */
+			 <0x000cd000 0x000cd000 0x001000>,	/* ap 90 */
+			 <0x000ca000 0x000ca000 0x001000>,	/* ap 91 */
+			 <0x000cb000 0x000cb000 0x001000>;	/* ap 92 */
+
+		target-module@8000 {			/* 0x48008000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module@14000 {			/* 0x48014000, ap 18 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module@16000 {			/* 0x48016000, ap 8 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x16000 0x1000>;
+		};
+
+		target-module@22000 {			/* 0x48022000, ap 10 12.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart2";
+			reg = <0x22050 0x4>,
+			      <0x22054 0x4>,
+			      <0x22058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x48024000, ap 12 14.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart3";
+			reg = <0x24050 0x4>,
+			      <0x24054 0x4>,
+			      <0x24058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module@2a000 {			/* 0x4802a000, ap 14 2a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c2";
+			reg = <0x2a000 0x8>,
+			      <0x2a010 0x8>,
+			      <0x2a090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2a000 0x1000>;
+		};
+
+		target-module@30000 {			/* 0x48030000, ap 77 08.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi0";
+			reg = <0x30000 0x4>,
+			      <0x30110 0x4>,
+			      <0x30114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module@38000 {			/* 0x48038000, ap 16 02.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp0";
+			reg = <0x38000 0x4>,
+			      <0x38004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x2000>;
+		};
+
+		target-module@3c000 {			/* 0x4803c000, ap 20 32.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp1";
+			reg = <0x3c000 0x4>,
+			      <0x3c004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x2000>;
+		};
+
+		target-module@40000 {			/* 0x48040000, ap 22 1e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer2";
+			reg = <0x40000 0x4>,
+			      <0x40010 0x4>,
+			      <0x40014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module@42000 {			/* 0x48042000, ap 24 1c.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer3";
+			reg = <0x42000 0x4>,
+			      <0x42010 0x4>,
+			      <0x42014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module@44000 {			/* 0x48044000, ap 26 26.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer4";
+			reg = <0x44000 0x4>,
+			      <0x44010 0x4>,
+			      <0x44014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module@46000 {			/* 0x48046000, ap 28 28.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer5";
+			reg = <0x46000 0x4>,
+			      <0x46010 0x4>,
+			      <0x46014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+
+		target-module@48000 {			/* 0x48048000, ap 30 22.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer6";
+			reg = <0x48000 0x4>,
+			      <0x48010 0x4>,
+			      <0x48014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x48000 0x1000>;
+		};
+
+		target-module@4a000 {			/* 0x4804a000, ap 85 60.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer7";
+			reg = <0x4a000 0x4>,
+			      <0x4a010 0x4>,
+			      <0x4a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER7_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4a000 0x1000>;
+		};
+
+		target-module@4c000 {			/* 0x4804c000, ap 32 36.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio2";
+			reg = <0x4c000 0x4>,
+			      <0x4c010 0x4>,
+			      <0x4c114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x1000>;
+		};
+
+		target-module@50000 {			/* 0x48050000, ap 34 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x50000 0x2000>;
+		};
+
+		target-module@60000 {			/* 0x48060000, ap 36 0c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc1";
+			reg = <0x602fc 0x4>,
+			      <0x60110 0x4>,
+			      <0x60114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x60000 0x1000>;
+		};
+
+		target-module@80000 {			/* 0x48080000, ap 38 18.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "elm";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>,
+			      <0x80014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_ELM_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x10000>;
+		};
+
+		target-module@a0000 {			/* 0x480a0000, ap 40 5e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x10000>;
+		};
+
+		target-module@c8000 {			/* 0x480c8000, ap 87 06.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "mailbox";
+			reg = <0xc8000 0x4>,
+			      <0xc8010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MAILBOX_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc8000 0x1000>;
+		};
+
+		target-module@ca000 {			/* 0x480ca000, ap 91 40.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spinlock";
+			reg = <0xca000 0x4>,
+			      <0xca010 0x4>,
+			      <0xca014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPINLOCK_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xca000 0x1000>;
+		};
+
+		target-module@cc000 {			/* 0x480cc000, ap 89 0e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x1000>;
+		};
+	};
+
+	segment@100000 {					/* 0x48100000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0008c000 0x0018c000 0x001000>,	/* ap 42 */
+			 <0x0008d000 0x0018d000 0x001000>,	/* ap 43 */
+			 <0x0008e000 0x0018e000 0x001000>,	/* ap 44 */
+			 <0x0008f000 0x0018f000 0x001000>,	/* ap 45 */
+			 <0x0009c000 0x0019c000 0x001000>,	/* ap 46 */
+			 <0x0009d000 0x0019d000 0x001000>,	/* ap 47 */
+			 <0x000a6000 0x001a6000 0x001000>,	/* ap 48 */
+			 <0x000a7000 0x001a7000 0x001000>,	/* ap 49 */
+			 <0x000a8000 0x001a8000 0x001000>,	/* ap 50 */
+			 <0x000a9000 0x001a9000 0x001000>,	/* ap 51 */
+			 <0x000aa000 0x001aa000 0x001000>,	/* ap 52 */
+			 <0x000ab000 0x001ab000 0x001000>,	/* ap 53 */
+			 <0x000ac000 0x001ac000 0x001000>,	/* ap 54 */
+			 <0x000ad000 0x001ad000 0x001000>,	/* ap 55 */
+			 <0x000ae000 0x001ae000 0x001000>,	/* ap 56 */
+			 <0x000af000 0x001af000 0x001000>,	/* ap 57 */
+			 <0x000b0000 0x001b0000 0x010000>,	/* ap 58 */
+			 <0x000c0000 0x001c0000 0x001000>,	/* ap 59 */
+			 <0x000cc000 0x001cc000 0x002000>,	/* ap 60 */
+			 <0x000ce000 0x001ce000 0x002000>,	/* ap 61 */
+			 <0x000d0000 0x001d0000 0x002000>,	/* ap 62 */
+			 <0x000d2000 0x001d2000 0x002000>,	/* ap 63 */
+			 <0x000d8000 0x001d8000 0x001000>,	/* ap 64 */
+			 <0x000d9000 0x001d9000 0x001000>,	/* ap 65 */
+			 <0x000a0000 0x001a0000 0x001000>,	/* ap 79 */
+			 <0x000a1000 0x001a1000 0x001000>,	/* ap 80 */
+			 <0x000a2000 0x001a2000 0x001000>,	/* ap 81 */
+			 <0x000a3000 0x001a3000 0x001000>,	/* ap 82 */
+			 <0x000a4000 0x001a4000 0x001000>,	/* ap 83 */
+			 <0x000a5000 0x001a5000 0x001000>;	/* ap 84 */
+
+		target-module@8c000 {			/* 0x4818c000, ap 42 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8c000 0x1000>;
+		};
+
+		target-module@8e000 {			/* 0x4818e000, ap 44 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8e000 0x1000>;
+		};
+
+		target-module@9c000 {			/* 0x4819c000, ap 46 5a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c3";
+			reg = <0x9c000 0x8>,
+			      <0x9c010 0x8>,
+			      <0x9c090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9c000 0x1000>;
+		};
+
+		target-module@a0000 {			/* 0x481a0000, ap 79 24.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi1";
+			reg = <0xa0000 0x4>,
+			      <0xa0110 0x4>,
+			      <0xa0114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x1000>;
+		};
+
+		target-module@a2000 {			/* 0x481a2000, ap 81 2e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa2000 0x1000>;
+		};
+
+		target-module@a4000 {			/* 0x481a4000, ap 83 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa4000 0x1000>;
+		};
+
+		target-module@a6000 {			/* 0x481a6000, ap 48 16.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart4";
+			reg = <0xa6050 0x4>,
+			      <0xa6054 0x4>,
+			      <0xa6058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa6000 0x1000>;
+		};
+
+		target-module@a8000 {			/* 0x481a8000, ap 50 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart5";
+			reg = <0xa8050 0x4>,
+			      <0xa8054 0x4>,
+			      <0xa8058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x1000>;
+		};
+
+		target-module@aa000 {			/* 0x481aa000, ap 52 1a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart6";
+			reg = <0xaa050 0x4>,
+			      <0xaa054 0x4>,
+			      <0xaa058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xaa000 0x1000>;
+		};
+
+		target-module@ac000 {			/* 0x481ac000, ap 54 38.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio3";
+			reg = <0xac000 0x4>,
+			      <0xac010 0x4>,
+			      <0xac114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xac000 0x1000>;
+		};
+
+		target-module@ae000 {			/* 0x481ae000, ap 56 3a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio4";
+			reg = <0xae000 0x4>,
+			      <0xae010 0x4>,
+			      <0xae114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xae000 0x1000>;
+		};
+
+		target-module@b0000 {			/* 0x481b0000, ap 58 50.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb0000 0x10000>;
+		};
+
+		target-module@cc000 {			/* 0x481cc000, ap 60 46.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x2000>;
+		};
+
+		target-module@d0000 {			/* 0x481d0000, ap 62 42.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd0000 0x2000>;
+		};
+
+		target-module@d8000 {			/* 0x481d8000, ap 64 66.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc2";
+			reg = <0xd82fc 0x4>,
+			      <0xd8110 0x4>,
+			      <0xd8114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd8000 0x1000>;
+		};
+	};
+
+	segment@200000 {					/* 0x48200000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	segment@300000 {					/* 0x48300000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00300000 0x001000>,	/* ap 66 */
+			 <0x00001000 0x00301000 0x001000>,	/* ap 67 */
+			 <0x00002000 0x00302000 0x001000>,	/* ap 68 */
+			 <0x00003000 0x00303000 0x001000>,	/* ap 69 */
+			 <0x00004000 0x00304000 0x001000>,	/* ap 70 */
+			 <0x00005000 0x00305000 0x001000>,	/* ap 71 */
+			 <0x0000e000 0x0030e000 0x001000>,	/* ap 72 */
+			 <0x0000f000 0x0030f000 0x001000>,	/* ap 73 */
+			 <0x00018000 0x00318000 0x004000>,	/* ap 74 */
+			 <0x0001c000 0x0031c000 0x001000>,	/* ap 75 */
+			 <0x00010000 0x00310000 0x002000>,	/* ap 76 */
+			 <0x00012000 0x00312000 0x001000>,	/* ap 93 */
+			 <0x00015000 0x00315000 0x001000>,	/* ap 94 */
+			 <0x00016000 0x00316000 0x001000>,	/* ap 95 */
+			 <0x00017000 0x00317000 0x001000>,	/* ap 96 */
+			 <0x00013000 0x00313000 0x001000>,	/* ap 97 */
+			 <0x00014000 0x00314000 0x001000>,	/* ap 98 */
+			 <0x00020000 0x00320000 0x001000>,	/* ap 99 */
+			 <0x00021000 0x00321000 0x001000>,	/* ap 100 */
+			 <0x00022000 0x00322000 0x001000>,	/* ap 101 */
+			 <0x00023000 0x00323000 0x001000>,	/* ap 102 */
+			 <0x00024000 0x00324000 0x001000>,	/* ap 103 */
+			 <0x00025000 0x00325000 0x001000>;	/* ap 104 */
+
+		target-module@0 {			/* 0x48300000, ap 66 48.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss0";
+			reg = <0x0 0x4>,
+			      <0x4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x1000>;
+		};
+
+		target-module@2000 {			/* 0x48302000, ap 68 52.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss1";
+			reg = <0x2000 0x4>,
+			      <0x2004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2000 0x1000>;
+		};
+
+		target-module@4000 {			/* 0x48304000, ap 70 44.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss2";
+			reg = <0x4000 0x4>,
+			      <0x4004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4000 0x1000>;
+		};
+
+		target-module@e000 {			/* 0x4830e000, ap 72 4a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "lcdc";
+			reg = <0xe000 0x4>,
+			      <0xe054 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle ;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, lcdc_clkdm */
+			clocks = <&lcdc_clkctrl AM3_LCDC_LCDC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module@10000 {			/* 0x48310000, ap 76 4e.1 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "rng";
+			reg = <0x11fe0 0x4>,
+			      <0x11fe4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_RNG_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x2000>;
+		};
+
+		target-module@13000 {			/* 0x48313000, ap 97 62.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x13000 0x1000>;
+		};
+
+		target-module@15000 {			/* 0x48315000, ap 94 56.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00015000 0x00001000>,
+				 <0x00001000 0x00016000 0x00001000>;
+		};
+
+		target-module@18000 {			/* 0x48318000, ap 74 4c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x18000 0x4000>;
+		};
+
+		target-module@20000 {			/* 0x48320000, ap 99 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20000 0x1000>;
+		};
+
+		target-module@22000 {			/* 0x48322000, ap 101 3e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x48324000, ap 103 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+	};
+};
+
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 3/4] ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
@ 2018-09-25  0:05   ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-arm-kernel

Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
for l4 interconnect instances with the related ti-sysc interconnect
module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.

Using ti-sysc driver binding allows us to start dropping legacy platform
data in arch/arm/mach-omap2/omap*hwmod*data.c files later on in favor of
ti-sysc dts data.

This data is generated based on platform data from a booted system
and the interconnect acces protection registers for ranges. To avoid
regressions, we initially validate the device tree provided data
against the existing platform data on boot.

Note that we cannot yet include this file from the SoC dtsi file until
the child devices are moved to their proper locations in the
interconnect hierarchy in the following patch. Otherwise we would have
the each module probed twice.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 1543 ++++++++++++++++++++++++++++++
 1 file changed, 1543 insertions(+)
 create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
new file mode 100644
--- /dev/null
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -0,0 +1,1543 @@
+&l4_wkup {						/* 0x44c00000 */
+	compatible = "ti,am33xx-l4-wkup", "simple-bus";
+	reg = <0x44c00000 0x800>,
+	      <0x44c00800 0x800>,
+	      <0x44c01000 0x400>,
+	      <0x44c01400 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x44c00000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x44d00000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x44e00000 0x100000>;	/* segment 2 */
+
+	segment at 0 {					/* 0x44c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>;	/* ap 3 */
+	};
+
+	segment at 100000 {					/* 0x44d00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00100000 0x004000>,	/* ap 4 */
+			 <0x00004000 0x00104000 0x001000>,	/* ap 5 */
+			 <0x00080000 0x00180000 0x002000>,	/* ap 6 */
+			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
+
+		target-module at 0 {			/* 0x44d00000, ap 4 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x4000>;
+		};
+
+		target-module at 80000 {			/* 0x44d80000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x2000>;
+		};
+	};
+
+	segment at 200000 {					/* 0x44e00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00200000 0x002000>,	/* ap 8 */
+			 <0x00002000 0x00202000 0x001000>,	/* ap 9 */
+			 <0x00003000 0x00203000 0x001000>,	/* ap 10 */
+			 <0x00004000 0x00204000 0x001000>,	/* ap 11 */
+			 <0x00005000 0x00205000 0x001000>,	/* ap 12 */
+			 <0x00006000 0x00206000 0x001000>,	/* ap 13 */
+			 <0x00007000 0x00207000 0x001000>,	/* ap 14 */
+			 <0x00008000 0x00208000 0x001000>,	/* ap 15 */
+			 <0x00009000 0x00209000 0x001000>,	/* ap 16 */
+			 <0x0000a000 0x0020a000 0x001000>,	/* ap 17 */
+			 <0x0000b000 0x0020b000 0x001000>,	/* ap 18 */
+			 <0x0000c000 0x0020c000 0x001000>,	/* ap 19 */
+			 <0x0000d000 0x0020d000 0x001000>,	/* ap 20 */
+			 <0x0000f000 0x0020f000 0x001000>,	/* ap 21 */
+			 <0x00010000 0x00210000 0x010000>,	/* ap 22 */
+			 <0x00020000 0x00220000 0x010000>,	/* ap 23 */
+			 <0x00030000 0x00230000 0x001000>,	/* ap 24 */
+			 <0x00031000 0x00231000 0x001000>,	/* ap 25 */
+			 <0x00032000 0x00232000 0x001000>,	/* ap 26 */
+			 <0x00033000 0x00233000 0x001000>,	/* ap 27 */
+			 <0x00034000 0x00234000 0x001000>,	/* ap 28 */
+			 <0x00035000 0x00235000 0x001000>,	/* ap 29 */
+			 <0x00036000 0x00236000 0x001000>,	/* ap 30 */
+			 <0x00037000 0x00237000 0x001000>,	/* ap 31 */
+			 <0x00038000 0x00238000 0x001000>,	/* ap 32 */
+			 <0x00039000 0x00239000 0x001000>,	/* ap 33 */
+			 <0x0003a000 0x0023a000 0x001000>,	/* ap 34 */
+			 <0x0003e000 0x0023e000 0x001000>,	/* ap 35 */
+			 <0x0003f000 0x0023f000 0x001000>,	/* ap 36 */
+			 <0x0000e000 0x0020e000 0x001000>,	/* ap 37 */
+			 <0x00040000 0x00240000 0x040000>,	/* ap 38 */
+			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
+
+		target-module at 0 {			/* 0x44e00000, ap 8 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x2000>;
+		};
+
+		target-module at 3000 {			/* 0x44e03000, ap 10 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+
+		target-module at 5000 {			/* 0x44e05000, ap 12 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x5000 0x1000>;
+		};
+
+		target-module at 7000 {			/* 0x44e07000, ap 14 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio1";
+			reg = <0x7000 0x4>,
+			      <0x7010 0x4>,
+			      <0x7114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>,
+				 <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x7000 0x1000>;
+		};
+
+		target-module at 9000 {			/* 0x44e09000, ap 16 04.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart1";
+			reg = <0x9050 0x4>,
+			      <0x9054 0x4>,
+			      <0x9058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_UART1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9000 0x1000>;
+		};
+
+		target-module at b000 {			/* 0x44e0b000, ap 18 48.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c1";
+			reg = <0xb000 0x8>,
+			      <0xb010 0x8>,
+			      <0xb090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_I2C1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb000 0x1000>;
+		};
+
+		target-module at d000 {			/* 0x44e0d000, ap 20 38.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "adc_tsc";
+			reg = <0xd000 0x4>,
+			      <0xd010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_ADC_TSC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x0000d000 0x00001000>,
+				 <0x00001000 0x0000e000 0x00001000>;
+		};
+
+		target-module at 10000 {			/* 0x44e10000, ap 22 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00010000 0x00010000>,
+				 <0x00010000 0x00020000 0x00010000>;
+		};
+
+		target-module at 31000 {			/* 0x44e31000, ap 25 40.0 */
+			compatible = "ti,sysc-omap2-timer", "ti,sysc";
+			ti,hwmods = "timer1";
+			reg = <0x31000 0x4>,
+			      <0x31010 0x4>,
+			      <0x31014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x31000 0x1000>;
+		};
+
+		target-module at 33000 {			/* 0x44e33000, ap 27 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x33000 0x1000>;
+		};
+
+		target-module at 35000 {			/* 0x44e35000, ap 29 50.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "wd_timer2";
+			reg = <0x35000 0x4>,
+			      <0x35010 0x4>,
+			      <0x35014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
+					 SYSC_OMAP2_SOFTRESET)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_WD_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x35000 0x1000>;
+		};
+
+		target-module at 37000 {			/* 0x44e37000, ap 31 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x37000 0x1000>;
+		};
+
+		target-module at 39000 {			/* 0x44e39000, ap 33 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x39000 0x1000>;
+		};
+
+		target-module at 3e000 {			/* 0x44e3e000, ap 35 60.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "rtc";
+			reg = <0x3e074 0x4>,
+			      <0x3e078 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
+			clocks = <&l4_rtc_clkctrl AM3_L4_RTC_RTC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module at 40000 {			/* 0x44e40000, ap 38 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x40000>;
+		};
+	};
+};
+
+&l4_fw {						/* 0x47c00000 */
+	compatible = "ti,am33xx-l4-fw", "simple-bus";
+	reg = <0x47c00000 0x800>,
+	      <0x47c00800 0x800>,
+	      <0x47c01000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x47c00000 0x1000000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x47c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x0000c000 0x0000c000 0x001000>,	/* ap 3 */
+			 <0x0000d000 0x0000d000 0x001000>,	/* ap 4 */
+			 <0x0000e000 0x0000e000 0x001000>,	/* ap 5 */
+			 <0x0000f000 0x0000f000 0x001000>,	/* ap 6 */
+			 <0x00010000 0x00010000 0x001000>,	/* ap 7 */
+			 <0x00011000 0x00011000 0x001000>,	/* ap 8 */
+			 <0x0001a000 0x0001a000 0x001000>,	/* ap 9 */
+			 <0x0001b000 0x0001b000 0x001000>,	/* ap 10 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 11 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 12 */
+			 <0x00026000 0x00026000 0x001000>,	/* ap 13 */
+			 <0x00027000 0x00027000 0x001000>,	/* ap 14 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 15 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 16 */
+			 <0x00038000 0x00038000 0x001000>,	/* ap 17 */
+			 <0x00039000 0x00039000 0x001000>,	/* ap 18 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 19 */
+			 <0x0003b000 0x0003b000 0x001000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x0003f000 0x0003f000 0x001000>,	/* ap 22 */
+			 <0x0003c000 0x0003c000 0x001000>,	/* ap 23 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 24 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 25 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 26 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 27 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 28 */
+			 <0x00028000 0x00028000 0x001000>,	/* ap 29 */
+			 <0x00029000 0x00029000 0x001000>,	/* ap 30 */
+			 <0x00032000 0x00032000 0x001000>,	/* ap 31 */
+			 <0x00033000 0x00033000 0x001000>,	/* ap 32 */
+			 <0x0003d000 0x0003d000 0x001000>,	/* ap 33 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 34 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 35 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 36 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 37 */
+			 <0x00015000 0x00015000 0x001000>;	/* ap 38 */
+
+		target-module at c000 {			/* 0x47c0c000, ap 3 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc000 0x1000>;
+		};
+
+		target-module at e000 {			/* 0x47c0e000, ap 5 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module at 10000 {			/* 0x47c10000, ap 7 20.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x1000>;
+		};
+
+		target-module at 14000 {			/* 0x47c14000, ap 37 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module at 1a000 {			/* 0x47c1a000, ap 9 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x1a000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x47c24000, ap 11 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module at 26000 {			/* 0x47c26000, ap 13 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x26000 0x1000>;
+		};
+
+		target-module at 28000 {			/* 0x47c28000, ap 29 40.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x28000 0x1000>;
+		};
+
+		target-module at 30000 {			/* 0x47c30000, ap 15 14.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module at 32000 {			/* 0x47c32000, ap 31 06.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x32000 0x1000>;
+		};
+
+		target-module at 38000 {			/* 0x47c38000, ap 17 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x1000>;
+		};
+
+		target-module at 3a000 {			/* 0x47c3a000, ap 19 1c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3a000 0x1000>;
+		};
+
+		target-module at 3c000 {			/* 0x47c3c000, ap 23 38.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x1000>;
+		};
+
+		target-module at 3e000 {			/* 0x47c3e000, ap 21 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module at 40000 {			/* 0x47c40000, ap 24 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module at 42000 {			/* 0x47c42000, ap 35 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module at 44000 {			/* 0x47c44000, ap 27 24.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module at 46000 {			/* 0x47c46000, ap 25 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+	};
+};
+
+&l4_fast {					/* 0x4a000000 */
+	compatible = "ti,am33xx-l4-fast", "simple-bus";
+	reg = <0x4a000000 0x800>,
+	      <0x4a000800 0x800>,
+	      <0x4a001000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4a000000 0x1000000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x4a000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00100000 0x00100000 0x008000>,	/* ap 3 */
+			 <0x00108000 0x00108000 0x001000>,	/* ap 4 */
+			 <0x00180000 0x00180000 0x020000>,	/* ap 5 */
+			 <0x001a0000 0x001a0000 0x001000>,	/* ap 6 */
+			 <0x00200000 0x00200000 0x080000>,	/* ap 7 */
+			 <0x00280000 0x00280000 0x001000>,	/* ap 8 */
+			 <0x00300000 0x00300000 0x080000>,	/* ap 9 */
+			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
+
+		target-module at 100000 {			/* 0x4a100000, ap 3 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x100000 0x8000>;
+		};
+
+		target-module at 180000 {			/* 0x4a180000, ap 5 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x180000 0x20000>;
+		};
+
+		target-module at 200000 {			/* 0x4a200000, ap 7 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x200000 0x80000>;
+		};
+
+		target-module at 300000 {			/* 0x4a300000, ap 9 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x300000 0x80000>;
+		};
+	};
+};
+
+&l4_mpuss {						/* 0x4b140000 */
+	compatible = "ti,am33xx-l4-mpuss", "simple-bus";
+	reg = <0x4b144400 0x100>,
+	      <0x4b144800 0x400>;
+	reg-names = "la", "ap";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4b140000 0x008000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x4b140000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00004800 0x00004800 0x000400>,	/* ap 0 */
+			 <0x00001000 0x00001000 0x001000>,	/* ap 1 */
+			 <0x00002000 0x00002000 0x001000>,	/* ap 2 */
+			 <0x00004000 0x00004000 0x000400>,	/* ap 3 */
+			 <0x00005000 0x00005000 0x000400>,	/* ap 4 */
+			 <0x00000000 0x00000000 0x001000>,	/* ap 5 */
+			 <0x00003000 0x00003000 0x001000>,	/* ap 6 */
+			 <0x00000800 0x00000800 0x000800>;	/* ap 7 */
+
+		target-module at 0 {			/* 0x4b140000, ap 5 02.2 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00000000 0x00001000>,
+				 <0x00001000 0x00001000 0x00001000>,
+				 <0x00002000 0x00002000 0x00001000>;
+		};
+
+		target-module at 3000 {			/* 0x4b143000, ap 6 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+	};
+};
+
+&l4_per {						/* 0x48000000 */
+	compatible = "ti,am33xx-l4-per", "simple-bus";
+	reg = <0x48000000 0x800>,
+	      <0x48000800 0x800>,
+	      <0x48001000 0x400>,
+	      <0x48001400 0x400>,
+	      <0x48001800 0x400>,
+	      <0x48001c00 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
+		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+
+	segment at 0 {					/* 0x48000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
+			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
+			 <0x00001c00 0x00001c00 0x000400>,	/* ap 5 */
+			 <0x00008000 0x00008000 0x001000>,	/* ap 6 */
+			 <0x00009000 0x00009000 0x001000>,	/* ap 7 */
+			 <0x00016000 0x00016000 0x001000>,	/* ap 8 */
+			 <0x00017000 0x00017000 0x001000>,	/* ap 9 */
+			 <0x00022000 0x00022000 0x001000>,	/* ap 10 */
+			 <0x00023000 0x00023000 0x001000>,	/* ap 11 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 12 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 13 */
+			 <0x0002a000 0x0002a000 0x001000>,	/* ap 14 */
+			 <0x0002b000 0x0002b000 0x001000>,	/* ap 15 */
+			 <0x00038000 0x00038000 0x002000>,	/* ap 16 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 17 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 18 */
+			 <0x00015000 0x00015000 0x001000>,	/* ap 19 */
+			 <0x0003c000 0x0003c000 0x002000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 22 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 23 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 24 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 25 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 26 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 27 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 28 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 29 */
+			 <0x00048000 0x00048000 0x001000>,	/* ap 30 */
+			 <0x00049000 0x00049000 0x001000>,	/* ap 31 */
+			 <0x0004c000 0x0004c000 0x001000>,	/* ap 32 */
+			 <0x0004d000 0x0004d000 0x001000>,	/* ap 33 */
+			 <0x00050000 0x00050000 0x002000>,	/* ap 34 */
+			 <0x00052000 0x00052000 0x001000>,	/* ap 35 */
+			 <0x00060000 0x00060000 0x001000>,	/* ap 36 */
+			 <0x00061000 0x00061000 0x001000>,	/* ap 37 */
+			 <0x00080000 0x00080000 0x010000>,	/* ap 38 */
+			 <0x00090000 0x00090000 0x001000>,	/* ap 39 */
+			 <0x000a0000 0x000a0000 0x010000>,	/* ap 40 */
+			 <0x000b0000 0x000b0000 0x001000>,	/* ap 41 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 77 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 78 */
+			 <0x0004a000 0x0004a000 0x001000>,	/* ap 85 */
+			 <0x0004b000 0x0004b000 0x001000>,	/* ap 86 */
+			 <0x000c8000 0x000c8000 0x001000>,	/* ap 87 */
+			 <0x000c9000 0x000c9000 0x001000>,	/* ap 88 */
+			 <0x000cc000 0x000cc000 0x001000>,	/* ap 89 */
+			 <0x000cd000 0x000cd000 0x001000>,	/* ap 90 */
+			 <0x000ca000 0x000ca000 0x001000>,	/* ap 91 */
+			 <0x000cb000 0x000cb000 0x001000>;	/* ap 92 */
+
+		target-module at 8000 {			/* 0x48008000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module at 14000 {			/* 0x48014000, ap 18 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module at 16000 {			/* 0x48016000, ap 8 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x16000 0x1000>;
+		};
+
+		target-module at 22000 {			/* 0x48022000, ap 10 12.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart2";
+			reg = <0x22050 0x4>,
+			      <0x22054 0x4>,
+			      <0x22058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x48024000, ap 12 14.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart3";
+			reg = <0x24050 0x4>,
+			      <0x24054 0x4>,
+			      <0x24058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module at 2a000 {			/* 0x4802a000, ap 14 2a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c2";
+			reg = <0x2a000 0x8>,
+			      <0x2a010 0x8>,
+			      <0x2a090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2a000 0x1000>;
+		};
+
+		target-module at 30000 {			/* 0x48030000, ap 77 08.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi0";
+			reg = <0x30000 0x4>,
+			      <0x30110 0x4>,
+			      <0x30114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module at 38000 {			/* 0x48038000, ap 16 02.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp0";
+			reg = <0x38000 0x4>,
+			      <0x38004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x2000>;
+		};
+
+		target-module at 3c000 {			/* 0x4803c000, ap 20 32.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp1";
+			reg = <0x3c000 0x4>,
+			      <0x3c004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x2000>;
+		};
+
+		target-module at 40000 {			/* 0x48040000, ap 22 1e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer2";
+			reg = <0x40000 0x4>,
+			      <0x40010 0x4>,
+			      <0x40014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module at 42000 {			/* 0x48042000, ap 24 1c.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer3";
+			reg = <0x42000 0x4>,
+			      <0x42010 0x4>,
+			      <0x42014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module at 44000 {			/* 0x48044000, ap 26 26.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer4";
+			reg = <0x44000 0x4>,
+			      <0x44010 0x4>,
+			      <0x44014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module at 46000 {			/* 0x48046000, ap 28 28.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer5";
+			reg = <0x46000 0x4>,
+			      <0x46010 0x4>,
+			      <0x46014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+
+		target-module at 48000 {			/* 0x48048000, ap 30 22.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer6";
+			reg = <0x48000 0x4>,
+			      <0x48010 0x4>,
+			      <0x48014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x48000 0x1000>;
+		};
+
+		target-module at 4a000 {			/* 0x4804a000, ap 85 60.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer7";
+			reg = <0x4a000 0x4>,
+			      <0x4a010 0x4>,
+			      <0x4a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER7_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4a000 0x1000>;
+		};
+
+		target-module at 4c000 {			/* 0x4804c000, ap 32 36.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio2";
+			reg = <0x4c000 0x4>,
+			      <0x4c010 0x4>,
+			      <0x4c114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x1000>;
+		};
+
+		target-module at 50000 {			/* 0x48050000, ap 34 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x50000 0x2000>;
+		};
+
+		target-module at 60000 {			/* 0x48060000, ap 36 0c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc1";
+			reg = <0x602fc 0x4>,
+			      <0x60110 0x4>,
+			      <0x60114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x60000 0x1000>;
+		};
+
+		target-module at 80000 {			/* 0x48080000, ap 38 18.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "elm";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>,
+			      <0x80014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_ELM_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x10000>;
+		};
+
+		target-module at a0000 {			/* 0x480a0000, ap 40 5e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x10000>;
+		};
+
+		target-module at c8000 {			/* 0x480c8000, ap 87 06.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "mailbox";
+			reg = <0xc8000 0x4>,
+			      <0xc8010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MAILBOX_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc8000 0x1000>;
+		};
+
+		target-module at ca000 {			/* 0x480ca000, ap 91 40.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spinlock";
+			reg = <0xca000 0x4>,
+			      <0xca010 0x4>,
+			      <0xca014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPINLOCK_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xca000 0x1000>;
+		};
+
+		target-module at cc000 {			/* 0x480cc000, ap 89 0e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x1000>;
+		};
+	};
+
+	segment at 100000 {					/* 0x48100000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0008c000 0x0018c000 0x001000>,	/* ap 42 */
+			 <0x0008d000 0x0018d000 0x001000>,	/* ap 43 */
+			 <0x0008e000 0x0018e000 0x001000>,	/* ap 44 */
+			 <0x0008f000 0x0018f000 0x001000>,	/* ap 45 */
+			 <0x0009c000 0x0019c000 0x001000>,	/* ap 46 */
+			 <0x0009d000 0x0019d000 0x001000>,	/* ap 47 */
+			 <0x000a6000 0x001a6000 0x001000>,	/* ap 48 */
+			 <0x000a7000 0x001a7000 0x001000>,	/* ap 49 */
+			 <0x000a8000 0x001a8000 0x001000>,	/* ap 50 */
+			 <0x000a9000 0x001a9000 0x001000>,	/* ap 51 */
+			 <0x000aa000 0x001aa000 0x001000>,	/* ap 52 */
+			 <0x000ab000 0x001ab000 0x001000>,	/* ap 53 */
+			 <0x000ac000 0x001ac000 0x001000>,	/* ap 54 */
+			 <0x000ad000 0x001ad000 0x001000>,	/* ap 55 */
+			 <0x000ae000 0x001ae000 0x001000>,	/* ap 56 */
+			 <0x000af000 0x001af000 0x001000>,	/* ap 57 */
+			 <0x000b0000 0x001b0000 0x010000>,	/* ap 58 */
+			 <0x000c0000 0x001c0000 0x001000>,	/* ap 59 */
+			 <0x000cc000 0x001cc000 0x002000>,	/* ap 60 */
+			 <0x000ce000 0x001ce000 0x002000>,	/* ap 61 */
+			 <0x000d0000 0x001d0000 0x002000>,	/* ap 62 */
+			 <0x000d2000 0x001d2000 0x002000>,	/* ap 63 */
+			 <0x000d8000 0x001d8000 0x001000>,	/* ap 64 */
+			 <0x000d9000 0x001d9000 0x001000>,	/* ap 65 */
+			 <0x000a0000 0x001a0000 0x001000>,	/* ap 79 */
+			 <0x000a1000 0x001a1000 0x001000>,	/* ap 80 */
+			 <0x000a2000 0x001a2000 0x001000>,	/* ap 81 */
+			 <0x000a3000 0x001a3000 0x001000>,	/* ap 82 */
+			 <0x000a4000 0x001a4000 0x001000>,	/* ap 83 */
+			 <0x000a5000 0x001a5000 0x001000>;	/* ap 84 */
+
+		target-module at 8c000 {			/* 0x4818c000, ap 42 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8c000 0x1000>;
+		};
+
+		target-module at 8e000 {			/* 0x4818e000, ap 44 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8e000 0x1000>;
+		};
+
+		target-module at 9c000 {			/* 0x4819c000, ap 46 5a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c3";
+			reg = <0x9c000 0x8>,
+			      <0x9c010 0x8>,
+			      <0x9c090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9c000 0x1000>;
+		};
+
+		target-module at a0000 {			/* 0x481a0000, ap 79 24.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi1";
+			reg = <0xa0000 0x4>,
+			      <0xa0110 0x4>,
+			      <0xa0114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x1000>;
+		};
+
+		target-module at a2000 {			/* 0x481a2000, ap 81 2e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa2000 0x1000>;
+		};
+
+		target-module at a4000 {			/* 0x481a4000, ap 83 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa4000 0x1000>;
+		};
+
+		target-module at a6000 {			/* 0x481a6000, ap 48 16.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart4";
+			reg = <0xa6050 0x4>,
+			      <0xa6054 0x4>,
+			      <0xa6058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa6000 0x1000>;
+		};
+
+		target-module at a8000 {			/* 0x481a8000, ap 50 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart5";
+			reg = <0xa8050 0x4>,
+			      <0xa8054 0x4>,
+			      <0xa8058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x1000>;
+		};
+
+		target-module at aa000 {			/* 0x481aa000, ap 52 1a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart6";
+			reg = <0xaa050 0x4>,
+			      <0xaa054 0x4>,
+			      <0xaa058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xaa000 0x1000>;
+		};
+
+		target-module at ac000 {			/* 0x481ac000, ap 54 38.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio3";
+			reg = <0xac000 0x4>,
+			      <0xac010 0x4>,
+			      <0xac114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xac000 0x1000>;
+		};
+
+		target-module at ae000 {			/* 0x481ae000, ap 56 3a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio4";
+			reg = <0xae000 0x4>,
+			      <0xae010 0x4>,
+			      <0xae114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 8>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xae000 0x1000>;
+		};
+
+		target-module at b0000 {			/* 0x481b0000, ap 58 50.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb0000 0x10000>;
+		};
+
+		target-module at cc000 {			/* 0x481cc000, ap 60 46.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x2000>;
+		};
+
+		target-module at d0000 {			/* 0x481d0000, ap 62 42.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd0000 0x2000>;
+		};
+
+		target-module at d8000 {			/* 0x481d8000, ap 64 66.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc2";
+			reg = <0xd82fc 0x4>,
+			      <0xd8110 0x4>,
+			      <0xd8114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd8000 0x1000>;
+		};
+	};
+
+	segment at 200000 {					/* 0x48200000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	segment at 300000 {					/* 0x48300000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00300000 0x001000>,	/* ap 66 */
+			 <0x00001000 0x00301000 0x001000>,	/* ap 67 */
+			 <0x00002000 0x00302000 0x001000>,	/* ap 68 */
+			 <0x00003000 0x00303000 0x001000>,	/* ap 69 */
+			 <0x00004000 0x00304000 0x001000>,	/* ap 70 */
+			 <0x00005000 0x00305000 0x001000>,	/* ap 71 */
+			 <0x0000e000 0x0030e000 0x001000>,	/* ap 72 */
+			 <0x0000f000 0x0030f000 0x001000>,	/* ap 73 */
+			 <0x00018000 0x00318000 0x004000>,	/* ap 74 */
+			 <0x0001c000 0x0031c000 0x001000>,	/* ap 75 */
+			 <0x00010000 0x00310000 0x002000>,	/* ap 76 */
+			 <0x00012000 0x00312000 0x001000>,	/* ap 93 */
+			 <0x00015000 0x00315000 0x001000>,	/* ap 94 */
+			 <0x00016000 0x00316000 0x001000>,	/* ap 95 */
+			 <0x00017000 0x00317000 0x001000>,	/* ap 96 */
+			 <0x00013000 0x00313000 0x001000>,	/* ap 97 */
+			 <0x00014000 0x00314000 0x001000>,	/* ap 98 */
+			 <0x00020000 0x00320000 0x001000>,	/* ap 99 */
+			 <0x00021000 0x00321000 0x001000>,	/* ap 100 */
+			 <0x00022000 0x00322000 0x001000>,	/* ap 101 */
+			 <0x00023000 0x00323000 0x001000>,	/* ap 102 */
+			 <0x00024000 0x00324000 0x001000>,	/* ap 103 */
+			 <0x00025000 0x00325000 0x001000>;	/* ap 104 */
+
+		target-module at 0 {			/* 0x48300000, ap 66 48.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss0";
+			reg = <0x0 0x4>,
+			      <0x4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x1000>;
+		};
+
+		target-module at 2000 {			/* 0x48302000, ap 68 52.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss1";
+			reg = <0x2000 0x4>,
+			      <0x2004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2000 0x1000>;
+		};
+
+		target-module at 4000 {			/* 0x48304000, ap 70 44.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss2";
+			reg = <0x4000 0x4>,
+			      <0x4004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4000 0x1000>;
+		};
+
+		target-module at e000 {			/* 0x4830e000, ap 72 4a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "lcdc";
+			reg = <0xe000 0x4>,
+			      <0xe054 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle ;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, lcdc_clkdm */
+			clocks = <&lcdc_clkctrl AM3_LCDC_LCDC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module at 10000 {			/* 0x48310000, ap 76 4e.1 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "rng";
+			reg = <0x11fe0 0x4>,
+			      <0x11fe4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_RNG_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x2000>;
+		};
+
+		target-module at 13000 {			/* 0x48313000, ap 97 62.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x13000 0x1000>;
+		};
+
+		target-module at 15000 {			/* 0x48315000, ap 94 56.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00015000 0x00001000>,
+				 <0x00001000 0x00016000 0x00001000>;
+		};
+
+		target-module at 18000 {			/* 0x48318000, ap 74 4c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x18000 0x4000>;
+		};
+
+		target-module at 20000 {			/* 0x48320000, ap 99 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20000 0x1000>;
+		};
+
+		target-module at 22000 {			/* 0x48322000, ap 101 3e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x48324000, ap 103 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+	};
+};
+
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
  2018-09-25  0:05 ` Tony Lindgren
@ 2018-09-25  0:05   ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

With l4 interconnect hierarchy and ti-sysc interconnect target module
data in place, we can simply move all the related child devices to
their proper location and enable probing using ti-sysc.

In general the first child device address range starts at range 0
from the ti-sysc interconnect target so the move involves adjusting
the child device reg properties for that.

In case of any regressions, problem devices can be reverted to probe
with legacy platform data as needed by moving them back and removing
the related interconnect target module node.

Note that we are not yet moving dss or wkup_m3, those will be moved
later after some related driver changes.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am335x-shc.dts |   2 +-
 arch/arm/boot/dts/am33xx-l4.dtsi | 613 +++++++++++++++++++++++++++++-
 arch/arm/boot/dts/am33xx.dtsi    | 623 +------------------------------
 3 files changed, 614 insertions(+), 624 deletions(-)

diff --git a/arch/arm/boot/dts/am335x-shc.dts b/arch/arm/boot/dts/am335x-shc.dts
--- a/arch/arm/boot/dts/am335x-shc.dts
+++ b/arch/arm/boot/dts/am335x-shc.dts
@@ -205,7 +205,7 @@
 	pinctrl-1 = <&cpsw_sleep>;
 	status = "okay";
 	slaves = <1>;
-	cpsw_emac0: slave@4a100200  {
+	cpsw_emac0: slave@200 {
 		phy-mode = "mii";
 		phy-handle = <&ethernetphy0>;
 	};
diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -31,11 +31,13 @@
 			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
 
 		target-module@0 {			/* 0x44d00000, ap 4 28.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0x0 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x4000>;
+			status = "disabled";
 		};
 
 		target-module@80000 {			/* 0x44d80000, ap 6 10.0 */
@@ -85,11 +87,28 @@
 			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
 
 		target-module@0 {			/* 0x44e00000, ap 8 58.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x2000>;
+
+			prcm: prcm@0 {
+				compatible = "ti,am3-prcm", "simple-bus";
+				reg = <0 0x2000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x2000>;
+
+				prcm_clocks: clocks {
+					#address-cells = <1>;
+					#size-cells = <0>;
+				};
+
+				prcm_clockdomains: clockdomains {
+				};
+			};
 		};
 
 		target-module@3000 {			/* 0x44e03000, ap 10 0a.0 */
@@ -130,6 +149,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x7000 0x1000>;
+
+			gpio0: gpio@0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <96>;
+			};
 		};
 
 		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
@@ -152,6 +181,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9000 0x1000>;
+
+			uart0: serial@0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <72>;
+				status = "disabled";
+				dmas = <&edma 26 0>, <&edma 27 0>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
@@ -176,6 +215,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xb000 0x1000>;
+
+			i2c0: i2c@0 {
+				compatible = "ti,omap4-i2c";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x1000>;
+				interrupts = <70>;
+				status = "disabled";
+			};
 		};
 
 		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
@@ -195,15 +243,90 @@
 			#size-cells = <1>;
 			ranges = <0x00000000 0x0000d000 0x00001000>,
 				 <0x00001000 0x0000e000 0x00001000>;
+
+				tscadc: tscadc@0 {
+					compatible = "ti,am3359-tscadc";
+					reg = <0x0 0x1000>;
+					interrupts = <16>;
+					status = "disabled";
+					dmas = <&edma 53 0>, <&edma 57 0>;
+					dma-names = "fifo0", "fifo1";
+
+					tsc {
+						compatible = "ti,am3359-tsc";
+					};
+					am335x_adc: adc {
+						#io-channel-cells = <1>;
+						compatible = "ti,am3359-adc";
+					};
+				};
 		};
 
 		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0x10000 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x00000000 0x00010000 0x00010000>,
 				 <0x00010000 0x00020000 0x00010000>;
+
+			scm: scm@0 {
+				compatible = "ti,am3-scm", "simple-bus";
+				reg = <0x0 0x2000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				#pinctrl-cells = <1>;
+				ranges = <0 0 0x2000>;
+
+				phy_sel: cpsw-phy-sel@650 {
+					compatible = "ti,am3352-cpsw-phy-sel";
+					reg= <0x650 0x4>;
+					reg-names = "gmii-sel";
+				};
+
+				am33xx_pinmux: pinmux@800 {
+					compatible = "pinctrl-single";
+					reg = <0x800 0x238>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+					#pinctrl-cells = <1>;
+					pinctrl-single,register-width = <32>;
+					pinctrl-single,function-mask = <0x7f>;
+				};
+
+				scm_conf: scm_conf@0 {
+					compatible = "syscon", "simple-bus";
+					reg = <0x0 0x800>;
+					#address-cells = <1>;
+					#size-cells = <1>;
+					ranges = <0 0 0x800>;
+
+					scm_clocks: clocks {
+						#address-cells = <1>;
+						#size-cells = <0>;
+					};
+				};
+
+				wkup_m3_ipc: wkup_m3_ipc@1324 {
+					compatible = "ti,am3352-wkup-m3-ipc";
+					reg = <0x1324 0x24>;
+					interrupts = <78>;
+					ti,rproc = <&wkup_m3>;
+					mboxes = <&mailbox &mbox_wkupm3>;
+				};
+
+				edma_xbar: dma-router@f90 {
+					compatible = "ti,am335x-edma-crossbar";
+					reg = <0xf90 0x40>;
+					#dma-cells = <3>;
+					dma-requests = <32>;
+					dma-masters = <&edma>;
+				};
+
+				scm_clockdomains: clockdomains {
+				};
+			};
 		};
 
 		target-module@31000 {			/* 0x44e31000, ap 25 40.0 */
@@ -226,6 +349,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x31000 0x1000>;
+
+			timer1: timer@0 {
+				compatible = "ti,am335x-timer-1ms";
+				reg = <0x0 0x400>;
+				interrupts = <67>;
+				ti,timer-alwon;
+				clocks = <&timer1_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module@33000 {			/* 0x44e33000, ap 27 18.0 */
@@ -256,6 +388,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x35000 0x1000>;
+
+			wdt2: wdt@0 {
+				compatible = "ti,omap3-wdt";
+				reg = <0x0 0x1000>;
+				interrupts = <91>;
+			};
 		};
 
 		target-module@37000 {			/* 0x44e37000, ap 31 08.0 */
@@ -290,6 +428,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3e000 0x1000>;
+
+			rtc: rtc@0 {
+				compatible = "ti,am3352-rtc", "ti,da830-rtc";
+				reg = <0x0 0x1000>;
+				interrupts = <75
+					      76>;
+			};
 		};
 
 		target-module@40000 {			/* 0x44e40000, ap 38 68.0 */
@@ -529,11 +674,72 @@
 			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
 
 		target-module@100000 {			/* 0x4a100000, ap 3 08.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "cpgmac0";
+			reg = <0x101200 0x4>,
+			      <0x101208 0x4>,
+			      <0x101204 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <0>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,syss-mask = <1>;
+			clocks = <&cpsw_125mhz_clkctrl AM3_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x100000 0x8000>;
+
+			mac: ethernet@0 {
+				compatible = "ti,am335x-cpsw","ti,cpsw";
+				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
+				clock-names = "fck", "cpts";
+				cpdma_channels = <8>;
+				ale_entries = <1024>;
+				bd_ram_size = <0x2000>;
+				mac_control = <0x20>;
+				slaves = <2>;
+				active_slave = <0>;
+				cpts_clock_mult = <0x80000000>;
+				cpts_clock_shift = <29>;
+				reg = <0x0 0x800
+				       0x1200 0x100>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				/*
+				 * c0_rx_thresh_pend
+				 * c0_rx_pend
+				 * c0_tx_pend
+				 * c0_misc_pend
+				 */
+				interrupts = <40 41 42 43>;
+				ranges = <0 0 0x8000>;
+				syscon = <&scm_conf>;
+				cpsw-phy-sel = <&phy_sel>;
+				status = "disabled";
+
+				davinci_mdio: mdio@1000 {
+					compatible = "ti,cpsw-mdio","ti,davinci_mdio";
+					#address-cells = <1>;
+					#size-cells = <0>;
+					ti,hwmods = "davinci_mdio";
+					bus_freq = <1000000>;
+					reg = <0x1000 0x100>;
+					status = "disabled";
+				};
+
+				cpsw_emac0: slave@200 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+
+				cpsw_emac1: slave@300 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+			};
 		};
 
 		target-module@180000 {			/* 0x4a180000, ap 5 10.0 */
@@ -721,6 +927,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x22000 0x1000>;
+
+			uart1: serial@0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <73>;
+				status = "disabled";
+				dmas = <&edma 28 0>, <&edma 29 0>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@24000 {			/* 0x48024000, ap 12 14.0 */
@@ -743,6 +959,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x24000 0x1000>;
+
+			uart2: serial@0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <74>;
+				status = "disabled";
+				dmas = <&edma 30 0>, <&edma 31 0>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@2a000 {			/* 0x4802a000, ap 14 2a.0 */
@@ -767,6 +993,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2a000 0x1000>;
+
+			i2c1: i2c@0 {
+				compatible = "ti,omap4-i2c";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x1000>;
+				interrupts = <71>;
+				status = "disabled";
+			};
 		};
 
 		target-module@30000 {			/* 0x48030000, ap 77 08.0 */
@@ -789,6 +1024,21 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x30000 0x1000>;
+
+			spi0: spi@0 {
+				compatible = "ti,omap4-mcspi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x400>;
+				interrupts = <65>;
+				ti,spi-num-cs = <2>;
+				dmas = <&edma 16 0
+					&edma 17 0
+					&edma 18 0
+					&edma 19 0>;
+				dma-names = "tx0", "rx0", "tx1", "rx1";
+				status = "disabled";
+			};
 		};
 
 		target-module@38000 {			/* 0x48038000, ap 16 02.0 */
@@ -806,6 +1056,19 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x38000 0x2000>;
+
+			mcasp0: mcasp@0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46000000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <80>, <81>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 8 2>,
+					<&edma 9 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@3c000 {			/* 0x4803c000, ap 20 32.0 */
@@ -823,6 +1086,19 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3c000 0x2000>;
+
+			mcasp1: mcasp@0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46400000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <82>, <83>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 10 2>,
+					<&edma 11 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module@40000 {			/* 0x48040000, ap 22 1e.0 */
@@ -843,6 +1119,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x40000 0x1000>;
+
+			timer2: timer@0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <68>;
+				clocks = <&timer2_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module@42000 {			/* 0x48042000, ap 24 1c.0 */
@@ -863,6 +1147,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x42000 0x1000>;
+
+			timer3: timer@0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <69>;
+			};
 		};
 
 		target-module@44000 {			/* 0x48044000, ap 26 26.0 */
@@ -883,6 +1173,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x44000 0x1000>;
+
+			timer4: timer@0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <92>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module@46000 {			/* 0x48046000, ap 28 28.0 */
@@ -903,6 +1200,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x46000 0x1000>;
+
+			timer5: timer@0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <93>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module@48000 {			/* 0x48048000, ap 30 22.0 */
@@ -923,6 +1227,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x48000 0x1000>;
+
+			timer6: timer@0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <94>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module@4a000 {			/* 0x4804a000, ap 85 60.0 */
@@ -943,6 +1254,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4a000 0x1000>;
+
+			timer7: timer@0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <95>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module@4c000 {			/* 0x4804c000, ap 32 36.0 */
@@ -967,6 +1285,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4c000 0x1000>;
+
+			gpio1: gpio@0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <98>;
+			};
 		};
 
 		target-module@50000 {			/* 0x48050000, ap 34 2c.0 */
@@ -998,6 +1326,19 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x60000 0x1000>;
+
+			mmc1: mmc@0 {
+				compatible = "ti,omap4-hsmmc";
+				ti,dual-volt;
+				ti,needs-special-reset;
+				ti,needs-special-hs-handling;
+				dmas = <&edma_xbar 24 0 0
+					&edma_xbar 25 0 0>;
+				dma-names = "tx", "rx";
+				interrupts = <64>;
+				reg = <0x0 0x1000>;
+				status = "disabled";
+			};
 		};
 
 		target-module@80000 {			/* 0x48080000, ap 38 18.0 */
@@ -1020,6 +1361,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x80000 0x10000>;
+
+			elm: elm@0 {
+				compatible = "ti,am3352-elm";
+				reg = <0x0 0x2000>;
+				interrupts = <4>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a0000 {			/* 0x480a0000, ap 40 5e.0 */
@@ -1046,6 +1394,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc8000 0x1000>;
+
+			mailbox: mailbox@0 {
+				compatible = "ti,omap4-mailbox";
+				reg = <0x0 0x200>;
+				interrupts = <77>;
+				#mbox-cells = <1>;
+				ti,mbox-num-users = <4>;
+				ti,mbox-num-fifos = <8>;
+				mbox_wkupm3: wkup_m3 {
+					ti,mbox-send-noirq;
+					ti,mbox-tx = <0 0 0>;
+					ti,mbox-rx = <0 0 3>;
+				};
+			};
 		};
 
 		target-module@ca000 {			/* 0x480ca000, ap 91 40.0 */
@@ -1069,6 +1431,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xca000 0x1000>;
+
+			hwspinlock: spinlock@0 {
+				compatible = "ti,omap4-hwspinlock";
+				reg = <0x0 0x1000>;
+				#hwlock-cells = <1>;
+			};
 		};
 
 		target-module@cc000 {			/* 0x480cc000, ap 89 0e.0 */
@@ -1153,6 +1521,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9c000 0x1000>;
+
+			i2c2: i2c@0 {
+				compatible = "ti,omap4-i2c";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x1000>;
+				interrupts = <30>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a0000 {			/* 0x481a0000, ap 79 24.0 */
@@ -1175,6 +1552,21 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa0000 0x1000>;
+
+			spi1: spi@0 {
+				compatible = "ti,omap4-mcspi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x400>;
+				interrupts = <125>;
+				ti,spi-num-cs = <2>;
+				dmas = <&edma 42 0
+					&edma 43 0
+					&edma 44 0
+					&edma 45 0>;
+				dma-names = "tx0", "rx0", "tx1", "rx1";
+				status = "disabled";
+			};
 		};
 
 		target-module@a2000 {			/* 0x481a2000, ap 81 2e.0 */
@@ -1213,6 +1605,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa6000 0x1000>;
+
+			uart3: serial@0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <44>;
+				status = "disabled";
+			};
 		};
 
 		target-module@a8000 {			/* 0x481a8000, ap 50 20.0 */
@@ -1235,6 +1635,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa8000 0x1000>;
+
+			uart4: serial@0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <45>;
+				status = "disabled";
+			};
 		};
 
 		target-module@aa000 {			/* 0x481aa000, ap 52 1a.0 */
@@ -1257,6 +1665,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xaa000 0x1000>;
+
+			uart5: serial@0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <46>;
+				status = "disabled";
+			};
 		};
 
 		target-module@ac000 {			/* 0x481ac000, ap 54 38.0 */
@@ -1281,6 +1697,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xac000 0x1000>;
+
+			gpio2: gpio@0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <32>;
+			};
 		};
 
 		target-module@ae000 {			/* 0x481ae000, ap 56 3a.0 */
@@ -1305,6 +1731,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xae000 0x1000>;
+
+			gpio3: gpio@0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <62>;
+			};
 		};
 
 		target-module@b0000 {			/* 0x481b0000, ap 58 50.0 */
@@ -1316,19 +1752,49 @@
 		};
 
 		target-module@cc000 {			/* 0x481cc000, ap 60 46.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can0";
+			reg = <0xcc000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_D_CAN0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xcc000 0x2000>;
+
+			dcan0: can@0 {
+				compatible = "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				clocks = <&dcan0_fck>;
+				clock-names = "fck";
+				syscon-raminit = <&scm_conf 0x644 0>;
+				interrupts = <52>;
+				status = "disabled";
+			};
 		};
 
 		target-module@d0000 {			/* 0x481d0000, ap 62 42.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can1";
+			reg = <0xd0000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_D_CAN1_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd0000 0x2000>;
+
+			dcan1: can@0 {
+				compatible = "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				clocks = <&dcan1_fck>;
+				clock-names = "fck";
+				syscon-raminit = <&scm_conf 0x644 1>;
+				interrupts = <55>;
+				status = "disabled";
+			};
 		};
 
 		target-module@d8000 {			/* 0x481d8000, ap 64 66.0 */
@@ -1352,6 +1818,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd8000 0x1000>;
+
+			mmc2: mmc@0 {
+				compatible = "ti,omap4-hsmmc";
+				ti,needs-special-reset;
+				dmas = <&edma 2 0
+					&edma 3 0>;
+				dma-names = "tx", "rx";
+				interrupts = <28>;
+				reg = <0x0 0x1000>;
+				status = "disabled";
+			};
 		};
 	};
 
@@ -1409,6 +1886,39 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x1000>;
+
+			epwmss0: epwmss@0 {
+				compatible = "ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				status = "disabled";
+				ranges = <0x48300100 0x48300100 0x80   /* ECAP */
+					  0x48300180 0x48300180 0x80   /* EQEP */
+					  0x48300200 0x48300200 0x80>; /* EHRPWM */
+
+				ecap0: ecap@48300100 {
+					compatible = "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x48300100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					interrupts = <31>;
+					interrupt-names = "ecap0";
+					status = "disabled";
+				};
+
+				ehrpwm0: pwm@48300200 {
+					compatible = "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x48300200 0x80>;
+					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@2000 {			/* 0x48302000, ap 68 52.0 */
@@ -1431,6 +1941,39 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2000 0x1000>;
+
+			epwmss1: epwmss@0 {
+				compatible = "ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				status = "disabled";
+				ranges = <0x48302100 0x48302100 0x80   /* ECAP */
+					  0x48302180 0x48302180 0x80   /* EQEP */
+					  0x48302200 0x48302200 0x80>; /* EHRPWM */
+
+				ecap1: ecap@48302100 {
+					compatible = "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x48302100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					interrupts = <47>;
+					interrupt-names = "ecap1";
+					status = "disabled";
+				};
+
+				ehrpwm1: pwm@48302200 {
+					compatible = "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x48302200 0x80>;
+					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@4000 {			/* 0x48304000, ap 70 44.0 */
@@ -1453,6 +1996,39 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4000 0x1000>;
+
+			epwmss2: epwmss@0 {
+				compatible = "ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				status = "disabled";
+				ranges = <0x48304100 0x48304100 0x80   /* ECAP */
+					  0x48304180 0x48304180 0x80   /* EQEP */
+					  0x48304200 0x48304200 0x80>; /* EHRPWM */
+
+				ecap2: ecap@48304100 {
+					compatible = "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x48304100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					interrupts = <61>;
+					interrupt-names = "ecap2";
+					status = "disabled";
+				};
+
+				ehrpwm2: pwm@48304200 {
+					compatible = "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x48304200 0x80>;
+					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module@e000 {			/* 0x4830e000, ap 72 4a.0 */
@@ -1471,6 +2047,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xe000 0x1000>;
+
+			lcdc: lcdc@0 {
+				compatible = "ti,am33xx-tilcdc";
+				reg = <0x0 0x1000>;
+				interrupts = <36>;
+				status = "disabled";
+			};
 		};
 
 		target-module@10000 {			/* 0x48310000, ap 76 4e.1 */
@@ -1488,6 +2071,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x10000 0x2000>;
+
+			rng: rng@0 {
+				compatible = "ti,omap4-rng";
+				reg = <0x0 0x2000>;
+				interrupts = <111>;
+			};
 		};
 
 		target-module@13000 {			/* 0x48313000, ap 97 62.0 */
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -8,6 +8,7 @@
  * kind, whether express or implied.
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/am33xx.h>
 #include <dt-bindings/clock/am3.h>
@@ -166,87 +167,23 @@
 		ranges;
 		ti,hwmods = "l3_main";
 
-		l4_wkup: l4_wkup@44c00000 {
-			compatible = "ti,am3-l4-wkup", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x44c00000 0x280000>;
-
+		l4_wkup: interconnect@44c00000 {
 			wkup_m3: wkup_m3@100000 {
 				compatible = "ti,am3352-wkup-m3";
 				reg = <0x100000 0x4000>,
-				      <0x180000	0x2000>;
+				      <0x180000 0x2000>;
 				reg-names = "umem", "dmem";
 				ti,hwmods = "wkup_m3";
 				ti,pm-firmware = "am335x-pm-firmware.elf";
 			};
-
-			prcm: prcm@200000 {
-				compatible = "ti,am3-prcm", "simple-bus";
-				reg = <0x200000 0x4000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0 0x200000 0x4000>;
-
-				prcm_clocks: clocks {
-					#address-cells = <1>;
-					#size-cells = <0>;
-				};
-
-				prcm_clockdomains: clockdomains {
-				};
-			};
-
-			scm: scm@210000 {
-				compatible = "ti,am3-scm", "simple-bus";
-				reg = <0x210000 0x2000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				#pinctrl-cells = <1>;
-				ranges = <0 0x210000 0x2000>;
-
-				am33xx_pinmux: pinmux@800 {
-					compatible = "pinctrl-single";
-					reg = <0x800 0x238>;
-					#address-cells = <1>;
-					#size-cells = <0>;
-					#pinctrl-cells = <1>;
-					pinctrl-single,register-width = <32>;
-					pinctrl-single,function-mask = <0x7f>;
-				};
-
-				scm_conf: scm_conf@0 {
-					compatible = "syscon", "simple-bus";
-					reg = <0x0 0x800>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-					ranges = <0 0 0x800>;
-
-					scm_clocks: clocks {
-						#address-cells = <1>;
-						#size-cells = <0>;
-					};
-				};
-
-				wkup_m3_ipc: wkup_m3_ipc@1324 {
-					compatible = "ti,am3352-wkup-m3-ipc";
-					reg = <0x1324 0x24>;
-					interrupts = <78>;
-					ti,rproc = <&wkup_m3>;
-					mboxes = <&mailbox &mbox_wkupm3>;
-				};
-
-				edma_xbar: dma-router@f90 {
-					compatible = "ti,am335x-edma-crossbar";
-					reg = <0xf90 0x40>;
-					#dma-cells = <3>;
-					dma-requests = <32>;
-					dma-masters = <&edma>;
-				};
-
-				scm_clockdomains: clockdomains {
-				};
-			};
+		};
+		l4_per: interconnect@48000000 {
+		};
+		l4_fw: interconnect@47c00000 {
+		};
+		l4_fast: interconnect@4a000000 {
+		};
+		l4_mpuss: interconnect@4b140000 {
 		};
 
 		intc: interrupt-controller@48200000 {
@@ -297,166 +234,6 @@
 			interrupt-names = "edma3_tcerrint";
 		};
 
-		gpio0: gpio@44e07000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio1";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x44e07000 0x1000>;
-			interrupts = <96>;
-		};
-
-		gpio1: gpio@4804c000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio2";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x4804c000 0x1000>;
-			interrupts = <98>;
-		};
-
-		gpio2: gpio@481ac000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio3";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x481ac000 0x1000>;
-			interrupts = <32>;
-		};
-
-		gpio3: gpio@481ae000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio4";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x481ae000 0x1000>;
-			interrupts = <62>;
-		};
-
-		uart0: serial@44e09000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart1";
-			clock-frequency = <48000000>;
-			reg = <0x44e09000 0x2000>;
-			interrupts = <72>;
-			status = "disabled";
-			dmas = <&edma 26 0>, <&edma 27 0>;
-			dma-names = "tx", "rx";
-		};
-
-		uart1: serial@48022000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart2";
-			clock-frequency = <48000000>;
-			reg = <0x48022000 0x2000>;
-			interrupts = <73>;
-			status = "disabled";
-			dmas = <&edma 28 0>, <&edma 29 0>;
-			dma-names = "tx", "rx";
-		};
-
-		uart2: serial@48024000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart3";
-			clock-frequency = <48000000>;
-			reg = <0x48024000 0x2000>;
-			interrupts = <74>;
-			status = "disabled";
-			dmas = <&edma 30 0>, <&edma 31 0>;
-			dma-names = "tx", "rx";
-		};
-
-		uart3: serial@481a6000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart4";
-			clock-frequency = <48000000>;
-			reg = <0x481a6000 0x2000>;
-			interrupts = <44>;
-			status = "disabled";
-		};
-
-		uart4: serial@481a8000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart5";
-			clock-frequency = <48000000>;
-			reg = <0x481a8000 0x2000>;
-			interrupts = <45>;
-			status = "disabled";
-		};
-
-		uart5: serial@481aa000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart6";
-			clock-frequency = <48000000>;
-			reg = <0x481aa000 0x2000>;
-			interrupts = <46>;
-			status = "disabled";
-		};
-
-		i2c0: i2c@44e0b000 {
-			compatible = "ti,omap4-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			ti,hwmods = "i2c1";
-			reg = <0x44e0b000 0x1000>;
-			interrupts = <70>;
-			status = "disabled";
-		};
-
-		i2c1: i2c@4802a000 {
-			compatible = "ti,omap4-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			ti,hwmods = "i2c2";
-			reg = <0x4802a000 0x1000>;
-			interrupts = <71>;
-			status = "disabled";
-		};
-
-		i2c2: i2c@4819c000 {
-			compatible = "ti,omap4-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			ti,hwmods = "i2c3";
-			reg = <0x4819c000 0x1000>;
-			interrupts = <30>;
-			status = "disabled";
-		};
-
-		mmc1: mmc@48060000 {
-			compatible = "ti,omap4-hsmmc";
-			ti,hwmods = "mmc1";
-			ti,dual-volt;
-			ti,needs-special-reset;
-			ti,needs-special-hs-handling;
-			dmas = <&edma_xbar 24 0 0
-				&edma_xbar 25 0 0>;
-			dma-names = "tx", "rx";
-			interrupts = <64>;
-			reg = <0x48060000 0x1000>;
-			status = "disabled";
-		};
-
-		mmc2: mmc@481d8000 {
-			compatible = "ti,omap4-hsmmc";
-			ti,hwmods = "mmc2";
-			ti,needs-special-reset;
-			dmas = <&edma 2 0
-				&edma 3 0>;
-			dma-names = "tx", "rx";
-			interrupts = <28>;
-			reg = <0x481d8000 0x1000>;
-			status = "disabled";
-		};
-
 		mmc3: mmc@47810000 {
 			compatible = "ti,omap4-hsmmc";
 			ti,hwmods = "mmc3";
@@ -466,157 +243,6 @@
 			status = "disabled";
 		};
 
-		hwspinlock: spinlock@480ca000 {
-			compatible = "ti,omap4-hwspinlock";
-			reg = <0x480ca000 0x1000>;
-			ti,hwmods = "spinlock";
-			#hwlock-cells = <1>;
-		};
-
-		wdt2: wdt@44e35000 {
-			compatible = "ti,omap3-wdt";
-			ti,hwmods = "wd_timer2";
-			reg = <0x44e35000 0x1000>;
-			interrupts = <91>;
-		};
-
-		dcan0: can@481cc000 {
-			compatible = "ti,am3352-d_can";
-			ti,hwmods = "d_can0";
-			reg = <0x481cc000 0x2000>;
-			clocks = <&dcan0_fck>;
-			clock-names = "fck";
-			syscon-raminit = <&scm_conf 0x644 0>;
-			interrupts = <52>;
-			status = "disabled";
-		};
-
-		dcan1: can@481d0000 {
-			compatible = "ti,am3352-d_can";
-			ti,hwmods = "d_can1";
-			reg = <0x481d0000 0x2000>;
-			clocks = <&dcan1_fck>;
-			clock-names = "fck";
-			syscon-raminit = <&scm_conf 0x644 1>;
-			interrupts = <55>;
-			status = "disabled";
-		};
-
-		mailbox: mailbox@480c8000 {
-			compatible = "ti,omap4-mailbox";
-			reg = <0x480C8000 0x200>;
-			interrupts = <77>;
-			ti,hwmods = "mailbox";
-			#mbox-cells = <1>;
-			ti,mbox-num-users = <4>;
-			ti,mbox-num-fifos = <8>;
-			mbox_wkupm3: wkup_m3 {
-				ti,mbox-send-noirq;
-				ti,mbox-tx = <0 0 0>;
-				ti,mbox-rx = <0 0 3>;
-			};
-		};
-
-		timer1: timer@44e31000 {
-			compatible = "ti,am335x-timer-1ms";
-			reg = <0x44e31000 0x400>;
-			interrupts = <67>;
-			ti,hwmods = "timer1";
-			ti,timer-alwon;
-			clocks = <&timer1_fck>;
-			clock-names = "fck";
-		};
-
-		timer2: timer@48040000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48040000 0x400>;
-			interrupts = <68>;
-			ti,hwmods = "timer2";
-			clocks = <&timer2_fck>;
-			clock-names = "fck";
-		};
-
-		timer3: timer@48042000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48042000 0x400>;
-			interrupts = <69>;
-			ti,hwmods = "timer3";
-		};
-
-		timer4: timer@48044000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48044000 0x400>;
-			interrupts = <92>;
-			ti,hwmods = "timer4";
-			ti,timer-pwm;
-		};
-
-		timer5: timer@48046000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48046000 0x400>;
-			interrupts = <93>;
-			ti,hwmods = "timer5";
-			ti,timer-pwm;
-		};
-
-		timer6: timer@48048000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48048000 0x400>;
-			interrupts = <94>;
-			ti,hwmods = "timer6";
-			ti,timer-pwm;
-		};
-
-		timer7: timer@4804a000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x4804a000 0x400>;
-			interrupts = <95>;
-			ti,hwmods = "timer7";
-			ti,timer-pwm;
-		};
-
-		rtc: rtc@44e3e000 {
-			compatible = "ti,am3352-rtc", "ti,da830-rtc";
-			reg = <0x44e3e000 0x1000>;
-			interrupts = <75
-				      76>;
-			ti,hwmods = "rtc";
-			clocks = <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
-			clock-names = "int-clk";
-		};
-
-		spi0: spi@48030000 {
-			compatible = "ti,omap4-mcspi";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x48030000 0x400>;
-			interrupts = <65>;
-			ti,spi-num-cs = <2>;
-			ti,hwmods = "spi0";
-			dmas = <&edma 16 0
-				&edma 17 0
-				&edma 18 0
-				&edma 19 0>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
-			status = "disabled";
-		};
-
-		spi1: spi@481a0000 {
-			compatible = "ti,omap4-mcspi";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x481a0000 0x400>;
-			interrupts = <125>;
-			ti,spi-num-cs = <2>;
-			ti,hwmods = "spi1";
-			dmas = <&edma 42 0
-				&edma 43 0
-				&edma 44 0
-				&edma 45 0>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
-			status = "disabled";
-		};
-
 		usb: usb@47400000 {
 			compatible = "ti,am33xx-usb";
 			reg = <0x47400000 0x1000>;
@@ -747,163 +373,6 @@
 			};
 		};
 
-		epwmss0: epwmss@48300000 {
-			compatible = "ti,am33xx-pwmss";
-			reg = <0x48300000 0x10>;
-			ti,hwmods = "epwmss0";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			status = "disabled";
-			ranges = <0x48300100 0x48300100 0x80   /* ECAP */
-				  0x48300180 0x48300180 0x80   /* EQEP */
-				  0x48300200 0x48300200 0x80>; /* EHRPWM */
-
-			ecap0: ecap@48300100 {
-				compatible = "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48300100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				interrupts = <31>;
-				interrupt-names = "ecap0";
-				status = "disabled";
-			};
-
-			ehrpwm0: pwm@48300200 {
-				compatible = "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48300200 0x80>;
-				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss1: epwmss@48302000 {
-			compatible = "ti,am33xx-pwmss";
-			reg = <0x48302000 0x10>;
-			ti,hwmods = "epwmss1";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			status = "disabled";
-			ranges = <0x48302100 0x48302100 0x80   /* ECAP */
-				  0x48302180 0x48302180 0x80   /* EQEP */
-				  0x48302200 0x48302200 0x80>; /* EHRPWM */
-
-			ecap1: ecap@48302100 {
-				compatible = "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48302100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				interrupts = <47>;
-				interrupt-names = "ecap1";
-				status = "disabled";
-			};
-
-			ehrpwm1: pwm@48302200 {
-				compatible = "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48302200 0x80>;
-				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss2: epwmss@48304000 {
-			compatible = "ti,am33xx-pwmss";
-			reg = <0x48304000 0x10>;
-			ti,hwmods = "epwmss2";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			status = "disabled";
-			ranges = <0x48304100 0x48304100 0x80   /* ECAP */
-				  0x48304180 0x48304180 0x80   /* EQEP */
-				  0x48304200 0x48304200 0x80>; /* EHRPWM */
-
-			ecap2: ecap@48304100 {
-				compatible = "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48304100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				interrupts = <61>;
-				interrupt-names = "ecap2";
-				status = "disabled";
-			};
-
-			ehrpwm2: pwm@48304200 {
-				compatible = "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48304200 0x80>;
-				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		mac: ethernet@4a100000 {
-			compatible = "ti,am335x-cpsw","ti,cpsw";
-			ti,hwmods = "cpgmac0";
-			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
-			clock-names = "fck", "cpts";
-			cpdma_channels = <8>;
-			ale_entries = <1024>;
-			bd_ram_size = <0x2000>;
-			mac_control = <0x20>;
-			slaves = <2>;
-			active_slave = <0>;
-			cpts_clock_mult = <0x80000000>;
-			cpts_clock_shift = <29>;
-			reg = <0x4a100000 0x800
-			       0x4a101200 0x100>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			/*
-			 * c0_rx_thresh_pend
-			 * c0_rx_pend
-			 * c0_tx_pend
-			 * c0_misc_pend
-			 */
-			interrupts = <40 41 42 43>;
-			ranges;
-			syscon = <&scm_conf>;
-			status = "disabled";
-
-			davinci_mdio: mdio@4a101000 {
-				compatible = "ti,cpsw-mdio","ti,davinci_mdio";
-				#address-cells = <1>;
-				#size-cells = <0>;
-				ti,hwmods = "davinci_mdio";
-				bus_freq = <1000000>;
-				reg = <0x4a101000 0x100>;
-				status = "disabled";
-			};
-
-			cpsw_emac0: slave@4a100200 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			cpsw_emac1: slave@4a100300 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			phy_sel: cpsw-phy-sel@44e10650 {
-				compatible = "ti,am3352-cpsw-phy-sel";
-				reg= <0x44e10650 0x4>;
-				reg-names = "gmii-sel";
-			};
-		};
-
 		ocmcram: ocmcram@40300000 {
 			compatible = "mmio-sram";
 			reg = <0x40300000 0x10000>; /* 64k */
@@ -924,40 +393,6 @@
 			};
 		};
 
-		elm: elm@48080000 {
-			compatible = "ti,am3352-elm";
-			reg = <0x48080000 0x2000>;
-			interrupts = <4>;
-			ti,hwmods = "elm";
-			status = "disabled";
-		};
-
-		lcdc: lcdc@4830e000 {
-			compatible = "ti,am33xx-tilcdc";
-			reg = <0x4830e000 0x1000>;
-			interrupts = <36>;
-			ti,hwmods = "lcdc";
-			status = "disabled";
-		};
-
-		tscadc: tscadc@44e0d000 {
-			compatible = "ti,am3359-tscadc";
-			reg = <0x44e0d000 0x1000>;
-			interrupts = <16>;
-			ti,hwmods = "adc_tsc";
-			status = "disabled";
-			dmas = <&edma 53 0>, <&edma 57 0>;
-			dma-names = "fifo0", "fifo1";
-
-			tsc {
-				compatible = "ti,am3359-tsc";
-			};
-			am335x_adc: adc {
-				#io-channel-cells = <1>;
-				compatible = "ti,am3359-adc";
-			};
-		};
-
 		emif: emif@4c000000 {
 			compatible = "ti,emif-am3352";
 			reg = <0x4c000000 0x1000000>;
@@ -1005,42 +440,8 @@
 			       <&edma 5 0>;
 			dma-names = "tx", "rx";
 		};
-
-		mcasp0: mcasp@48038000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp0";
-			reg = <0x48038000 0x2000>,
-			      <0x46000000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <80>, <81>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 8 2>,
-				<&edma 9 2>;
-			dma-names = "tx", "rx";
-		};
-
-		mcasp1: mcasp@4803c000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp1";
-			reg = <0x4803C000 0x2000>,
-			      <0x46400000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <82>, <83>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 10 2>,
-				<&edma 11 2>;
-			dma-names = "tx", "rx";
-		};
-
-		rng: rng@48310000 {
-			compatible = "ti,omap4-rng";
-			ti,hwmods = "rng";
-			reg = <0x48310000 0x2000>;
-			interrupts = <111>;
-		};
 	};
 };
 
+#include "am33xx-l4.dtsi"
 #include "am33xx-clocks.dtsi"
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
@ 2018-09-25  0:05   ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25  0:05 UTC (permalink / raw)
  To: linux-arm-kernel

With l4 interconnect hierarchy and ti-sysc interconnect target module
data in place, we can simply move all the related child devices to
their proper location and enable probing using ti-sysc.

In general the first child device address range starts at range 0
from the ti-sysc interconnect target so the move involves adjusting
the child device reg properties for that.

In case of any regressions, problem devices can be reverted to probe
with legacy platform data as needed by moving them back and removing
the related interconnect target module node.

Note that we are not yet moving dss or wkup_m3, those will be moved
later after some related driver changes.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am335x-shc.dts |   2 +-
 arch/arm/boot/dts/am33xx-l4.dtsi | 613 +++++++++++++++++++++++++++++-
 arch/arm/boot/dts/am33xx.dtsi    | 623 +------------------------------
 3 files changed, 614 insertions(+), 624 deletions(-)

diff --git a/arch/arm/boot/dts/am335x-shc.dts b/arch/arm/boot/dts/am335x-shc.dts
--- a/arch/arm/boot/dts/am335x-shc.dts
+++ b/arch/arm/boot/dts/am335x-shc.dts
@@ -205,7 +205,7 @@
 	pinctrl-1 = <&cpsw_sleep>;
 	status = "okay";
 	slaves = <1>;
-	cpsw_emac0: slave at 4a100200  {
+	cpsw_emac0: slave at 200 {
 		phy-mode = "mii";
 		phy-handle = <&ethernetphy0>;
 	};
diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -31,11 +31,13 @@
 			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
 
 		target-module at 0 {			/* 0x44d00000, ap 4 28.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0x0 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x4000>;
+			status = "disabled";
 		};
 
 		target-module at 80000 {			/* 0x44d80000, ap 6 10.0 */
@@ -85,11 +87,28 @@
 			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
 
 		target-module at 0 {			/* 0x44e00000, ap 8 58.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x2000>;
+
+			prcm: prcm at 0 {
+				compatible = "ti,am3-prcm", "simple-bus";
+				reg = <0 0x2000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				ranges = <0 0 0x2000>;
+
+				prcm_clocks: clocks {
+					#address-cells = <1>;
+					#size-cells = <0>;
+				};
+
+				prcm_clockdomains: clockdomains {
+				};
+			};
 		};
 
 		target-module at 3000 {			/* 0x44e03000, ap 10 0a.0 */
@@ -130,6 +149,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x7000 0x1000>;
+
+			gpio0: gpio at 0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <96>;
+			};
 		};
 
 		target-module at 9000 {			/* 0x44e09000, ap 16 04.0 */
@@ -152,6 +181,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9000 0x1000>;
+
+			uart0: serial at 0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <72>;
+				status = "disabled";
+				dmas = <&edma 26 0>, <&edma 27 0>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at b000 {			/* 0x44e0b000, ap 18 48.0 */
@@ -176,6 +215,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xb000 0x1000>;
+
+			i2c0: i2c at 0 {
+				compatible = "ti,omap4-i2c";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x1000>;
+				interrupts = <70>;
+				status = "disabled";
+			};
 		};
 
 		target-module at d000 {			/* 0x44e0d000, ap 20 38.0 */
@@ -195,15 +243,90 @@
 			#size-cells = <1>;
 			ranges = <0x00000000 0x0000d000 0x00001000>,
 				 <0x00001000 0x0000e000 0x00001000>;
+
+				tscadc: tscadc at 0 {
+					compatible = "ti,am3359-tscadc";
+					reg = <0x0 0x1000>;
+					interrupts = <16>;
+					status = "disabled";
+					dmas = <&edma 53 0>, <&edma 57 0>;
+					dma-names = "fifo0", "fifo1";
+
+					tsc {
+						compatible = "ti,am3359-tsc";
+					};
+					am335x_adc: adc {
+						#io-channel-cells = <1>;
+						compatible = "ti,am3359-adc";
+					};
+				};
 		};
 
 		target-module at 10000 {			/* 0x44e10000, ap 22 0c.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			reg = <0x10000 0x4>;
+			reg-names = "rev";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x00000000 0x00010000 0x00010000>,
 				 <0x00010000 0x00020000 0x00010000>;
+
+			scm: scm at 0 {
+				compatible = "ti,am3-scm", "simple-bus";
+				reg = <0x0 0x2000>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				#pinctrl-cells = <1>;
+				ranges = <0 0 0x2000>;
+
+				phy_sel: cpsw-phy-sel at 650 {
+					compatible = "ti,am3352-cpsw-phy-sel";
+					reg= <0x650 0x4>;
+					reg-names = "gmii-sel";
+				};
+
+				am33xx_pinmux: pinmux at 800 {
+					compatible = "pinctrl-single";
+					reg = <0x800 0x238>;
+					#address-cells = <1>;
+					#size-cells = <0>;
+					#pinctrl-cells = <1>;
+					pinctrl-single,register-width = <32>;
+					pinctrl-single,function-mask = <0x7f>;
+				};
+
+				scm_conf: scm_conf at 0 {
+					compatible = "syscon", "simple-bus";
+					reg = <0x0 0x800>;
+					#address-cells = <1>;
+					#size-cells = <1>;
+					ranges = <0 0 0x800>;
+
+					scm_clocks: clocks {
+						#address-cells = <1>;
+						#size-cells = <0>;
+					};
+				};
+
+				wkup_m3_ipc: wkup_m3_ipc at 1324 {
+					compatible = "ti,am3352-wkup-m3-ipc";
+					reg = <0x1324 0x24>;
+					interrupts = <78>;
+					ti,rproc = <&wkup_m3>;
+					mboxes = <&mailbox &mbox_wkupm3>;
+				};
+
+				edma_xbar: dma-router at f90 {
+					compatible = "ti,am335x-edma-crossbar";
+					reg = <0xf90 0x40>;
+					#dma-cells = <3>;
+					dma-requests = <32>;
+					dma-masters = <&edma>;
+				};
+
+				scm_clockdomains: clockdomains {
+				};
+			};
 		};
 
 		target-module at 31000 {			/* 0x44e31000, ap 25 40.0 */
@@ -226,6 +349,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x31000 0x1000>;
+
+			timer1: timer at 0 {
+				compatible = "ti,am335x-timer-1ms";
+				reg = <0x0 0x400>;
+				interrupts = <67>;
+				ti,timer-alwon;
+				clocks = <&timer1_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module at 33000 {			/* 0x44e33000, ap 27 18.0 */
@@ -256,6 +388,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x35000 0x1000>;
+
+			wdt2: wdt at 0 {
+				compatible = "ti,omap3-wdt";
+				reg = <0x0 0x1000>;
+				interrupts = <91>;
+			};
 		};
 
 		target-module at 37000 {			/* 0x44e37000, ap 31 08.0 */
@@ -290,6 +428,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3e000 0x1000>;
+
+			rtc: rtc at 0 {
+				compatible = "ti,am3352-rtc", "ti,da830-rtc";
+				reg = <0x0 0x1000>;
+				interrupts = <75
+					      76>;
+			};
 		};
 
 		target-module at 40000 {			/* 0x44e40000, ap 38 68.0 */
@@ -529,11 +674,72 @@
 			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
 
 		target-module at 100000 {			/* 0x4a100000, ap 3 08.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "cpgmac0";
+			reg = <0x101200 0x4>,
+			      <0x101208 0x4>,
+			      <0x101204 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <0>;
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			ti,syss-mask = <1>;
+			clocks = <&cpsw_125mhz_clkctrl AM3_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x100000 0x8000>;
+
+			mac: ethernet at 0 {
+				compatible = "ti,am335x-cpsw","ti,cpsw";
+				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
+				clock-names = "fck", "cpts";
+				cpdma_channels = <8>;
+				ale_entries = <1024>;
+				bd_ram_size = <0x2000>;
+				mac_control = <0x20>;
+				slaves = <2>;
+				active_slave = <0>;
+				cpts_clock_mult = <0x80000000>;
+				cpts_clock_shift = <29>;
+				reg = <0x0 0x800
+				       0x1200 0x100>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				/*
+				 * c0_rx_thresh_pend
+				 * c0_rx_pend
+				 * c0_tx_pend
+				 * c0_misc_pend
+				 */
+				interrupts = <40 41 42 43>;
+				ranges = <0 0 0x8000>;
+				syscon = <&scm_conf>;
+				cpsw-phy-sel = <&phy_sel>;
+				status = "disabled";
+
+				davinci_mdio: mdio at 1000 {
+					compatible = "ti,cpsw-mdio","ti,davinci_mdio";
+					#address-cells = <1>;
+					#size-cells = <0>;
+					ti,hwmods = "davinci_mdio";
+					bus_freq = <1000000>;
+					reg = <0x1000 0x100>;
+					status = "disabled";
+				};
+
+				cpsw_emac0: slave at 200 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+
+				cpsw_emac1: slave at 300 {
+					/* Filled in by U-Boot */
+					mac-address = [ 00 00 00 00 00 00 ];
+				};
+			};
 		};
 
 		target-module at 180000 {			/* 0x4a180000, ap 5 10.0 */
@@ -721,6 +927,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x22000 0x1000>;
+
+			uart1: serial at 0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <73>;
+				status = "disabled";
+				dmas = <&edma 28 0>, <&edma 29 0>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at 24000 {			/* 0x48024000, ap 12 14.0 */
@@ -743,6 +959,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x24000 0x1000>;
+
+			uart2: serial at 0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <74>;
+				status = "disabled";
+				dmas = <&edma 30 0>, <&edma 31 0>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at 2a000 {			/* 0x4802a000, ap 14 2a.0 */
@@ -767,6 +993,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2a000 0x1000>;
+
+			i2c1: i2c at 0 {
+				compatible = "ti,omap4-i2c";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x1000>;
+				interrupts = <71>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 30000 {			/* 0x48030000, ap 77 08.0 */
@@ -789,6 +1024,21 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x30000 0x1000>;
+
+			spi0: spi at 0 {
+				compatible = "ti,omap4-mcspi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x400>;
+				interrupts = <65>;
+				ti,spi-num-cs = <2>;
+				dmas = <&edma 16 0
+					&edma 17 0
+					&edma 18 0
+					&edma 19 0>;
+				dma-names = "tx0", "rx0", "tx1", "rx1";
+				status = "disabled";
+			};
 		};
 
 		target-module at 38000 {			/* 0x48038000, ap 16 02.0 */
@@ -806,6 +1056,19 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x38000 0x2000>;
+
+			mcasp0: mcasp at 0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46000000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <80>, <81>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 8 2>,
+					<&edma 9 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at 3c000 {			/* 0x4803c000, ap 20 32.0 */
@@ -823,6 +1086,19 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3c000 0x2000>;
+
+			mcasp1: mcasp at 0 {
+				compatible = "ti,am33xx-mcasp-audio";
+				reg = <0x0 0x2000>,
+				      <0x46400000 0x400000>;
+				reg-names = "mpu", "dat";
+				interrupts = <82>, <83>;
+				interrupt-names = "tx", "rx";
+				status = "disabled";
+				dmas = <&edma 10 2>,
+					<&edma 11 2>;
+				dma-names = "tx", "rx";
+			};
 		};
 
 		target-module at 40000 {			/* 0x48040000, ap 22 1e.0 */
@@ -843,6 +1119,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x40000 0x1000>;
+
+			timer2: timer at 0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <68>;
+				clocks = <&timer2_fck>;
+				clock-names = "fck";
+			};
 		};
 
 		target-module at 42000 {			/* 0x48042000, ap 24 1c.0 */
@@ -863,6 +1147,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x42000 0x1000>;
+
+			timer3: timer at 0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <69>;
+			};
 		};
 
 		target-module at 44000 {			/* 0x48044000, ap 26 26.0 */
@@ -883,6 +1173,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x44000 0x1000>;
+
+			timer4: timer at 0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <92>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module at 46000 {			/* 0x48046000, ap 28 28.0 */
@@ -903,6 +1200,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x46000 0x1000>;
+
+			timer5: timer at 0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <93>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module at 48000 {			/* 0x48048000, ap 30 22.0 */
@@ -923,6 +1227,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x48000 0x1000>;
+
+			timer6: timer at 0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <94>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module at 4a000 {			/* 0x4804a000, ap 85 60.0 */
@@ -943,6 +1254,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4a000 0x1000>;
+
+			timer7: timer at 0 {
+				compatible = "ti,am335x-timer";
+				reg = <0x0 0x400>;
+				interrupts = <95>;
+				ti,timer-pwm;
+			};
 		};
 
 		target-module at 4c000 {			/* 0x4804c000, ap 32 36.0 */
@@ -967,6 +1285,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4c000 0x1000>;
+
+			gpio1: gpio at 0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <98>;
+			};
 		};
 
 		target-module at 50000 {			/* 0x48050000, ap 34 2c.0 */
@@ -998,6 +1326,19 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x60000 0x1000>;
+
+			mmc1: mmc at 0 {
+				compatible = "ti,omap4-hsmmc";
+				ti,dual-volt;
+				ti,needs-special-reset;
+				ti,needs-special-hs-handling;
+				dmas = <&edma_xbar 24 0 0
+					&edma_xbar 25 0 0>;
+				dma-names = "tx", "rx";
+				interrupts = <64>;
+				reg = <0x0 0x1000>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 80000 {			/* 0x48080000, ap 38 18.0 */
@@ -1020,6 +1361,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x80000 0x10000>;
+
+			elm: elm at 0 {
+				compatible = "ti,am3352-elm";
+				reg = <0x0 0x2000>;
+				interrupts = <4>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a0000 {			/* 0x480a0000, ap 40 5e.0 */
@@ -1046,6 +1394,20 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xc8000 0x1000>;
+
+			mailbox: mailbox at 0 {
+				compatible = "ti,omap4-mailbox";
+				reg = <0x0 0x200>;
+				interrupts = <77>;
+				#mbox-cells = <1>;
+				ti,mbox-num-users = <4>;
+				ti,mbox-num-fifos = <8>;
+				mbox_wkupm3: wkup_m3 {
+					ti,mbox-send-noirq;
+					ti,mbox-tx = <0 0 0>;
+					ti,mbox-rx = <0 0 3>;
+				};
+			};
 		};
 
 		target-module at ca000 {			/* 0x480ca000, ap 91 40.0 */
@@ -1069,6 +1431,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xca000 0x1000>;
+
+			hwspinlock: spinlock at 0 {
+				compatible = "ti,omap4-hwspinlock";
+				reg = <0x0 0x1000>;
+				#hwlock-cells = <1>;
+			};
 		};
 
 		target-module at cc000 {			/* 0x480cc000, ap 89 0e.0 */
@@ -1153,6 +1521,15 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x9c000 0x1000>;
+
+			i2c2: i2c at 0 {
+				compatible = "ti,omap4-i2c";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x1000>;
+				interrupts = <30>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a0000 {			/* 0x481a0000, ap 79 24.0 */
@@ -1175,6 +1552,21 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa0000 0x1000>;
+
+			spi1: spi at 0 {
+				compatible = "ti,omap4-mcspi";
+				#address-cells = <1>;
+				#size-cells = <0>;
+				reg = <0x0 0x400>;
+				interrupts = <125>;
+				ti,spi-num-cs = <2>;
+				dmas = <&edma 42 0
+					&edma 43 0
+					&edma 44 0
+					&edma 45 0>;
+				dma-names = "tx0", "rx0", "tx1", "rx1";
+				status = "disabled";
+			};
 		};
 
 		target-module at a2000 {			/* 0x481a2000, ap 81 2e.0 */
@@ -1213,6 +1605,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa6000 0x1000>;
+
+			uart3: serial at 0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <44>;
+				status = "disabled";
+			};
 		};
 
 		target-module at a8000 {			/* 0x481a8000, ap 50 20.0 */
@@ -1235,6 +1635,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xa8000 0x1000>;
+
+			uart4: serial at 0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <45>;
+				status = "disabled";
+			};
 		};
 
 		target-module at aa000 {			/* 0x481aa000, ap 52 1a.0 */
@@ -1257,6 +1665,14 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xaa000 0x1000>;
+
+			uart5: serial at 0 {
+				compatible = "ti,am3352-uart", "ti,omap3-uart";
+				clock-frequency = <48000000>;
+				reg = <0x0 0x2000>;
+				interrupts = <46>;
+				status = "disabled";
+			};
 		};
 
 		target-module at ac000 {			/* 0x481ac000, ap 54 38.0 */
@@ -1281,6 +1697,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xac000 0x1000>;
+
+			gpio2: gpio at 0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <32>;
+			};
 		};
 
 		target-module at ae000 {			/* 0x481ae000, ap 56 3a.0 */
@@ -1305,6 +1731,16 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xae000 0x1000>;
+
+			gpio3: gpio at 0 {
+				compatible = "ti,omap4-gpio";
+				gpio-controller;
+				#gpio-cells = <2>;
+				interrupt-controller;
+				#interrupt-cells = <2>;
+				reg = <0x0 0x1000>;
+				interrupts = <62>;
+			};
 		};
 
 		target-module at b0000 {			/* 0x481b0000, ap 58 50.0 */
@@ -1316,19 +1752,49 @@
 		};
 
 		target-module at cc000 {			/* 0x481cc000, ap 60 46.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can0";
+			reg = <0xcc000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_D_CAN0_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xcc000 0x2000>;
+
+			dcan0: can at 0 {
+				compatible = "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				clocks = <&dcan0_fck>;
+				clock-names = "fck";
+				syscon-raminit = <&scm_conf 0x644 0>;
+				interrupts = <52>;
+				status = "disabled";
+			};
 		};
 
 		target-module at d0000 {			/* 0x481d0000, ap 62 42.0 */
-			compatible = "ti,sysc";
-			status = "disabled";
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "d_can1";
+			reg = <0xd0000 0x4>;
+			reg-names = "rev";
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_D_CAN1_CLKCTRL 0>;
+			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd0000 0x2000>;
+
+			dcan1: can at 0 {
+				compatible = "ti,am3352-d_can";
+				reg = <0x0 0x2000>;
+				clocks = <&dcan1_fck>;
+				clock-names = "fck";
+				syscon-raminit = <&scm_conf 0x644 1>;
+				interrupts = <55>;
+				status = "disabled";
+			};
 		};
 
 		target-module at d8000 {			/* 0x481d8000, ap 64 66.0 */
@@ -1352,6 +1818,17 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xd8000 0x1000>;
+
+			mmc2: mmc at 0 {
+				compatible = "ti,omap4-hsmmc";
+				ti,needs-special-reset;
+				dmas = <&edma 2 0
+					&edma 3 0>;
+				dma-names = "tx", "rx";
+				interrupts = <28>;
+				reg = <0x0 0x1000>;
+				status = "disabled";
+			};
 		};
 	};
 
@@ -1409,6 +1886,39 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x0 0x1000>;
+
+			epwmss0: epwmss at 0 {
+				compatible = "ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				status = "disabled";
+				ranges = <0x48300100 0x48300100 0x80   /* ECAP */
+					  0x48300180 0x48300180 0x80   /* EQEP */
+					  0x48300200 0x48300200 0x80>; /* EHRPWM */
+
+				ecap0: ecap at 48300100 {
+					compatible = "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x48300100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					interrupts = <31>;
+					interrupt-names = "ecap0";
+					status = "disabled";
+				};
+
+				ehrpwm0: pwm at 48300200 {
+					compatible = "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x48300200 0x80>;
+					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 2000 {			/* 0x48302000, ap 68 52.0 */
@@ -1431,6 +1941,39 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x2000 0x1000>;
+
+			epwmss1: epwmss at 0 {
+				compatible = "ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				status = "disabled";
+				ranges = <0x48302100 0x48302100 0x80   /* ECAP */
+					  0x48302180 0x48302180 0x80   /* EQEP */
+					  0x48302200 0x48302200 0x80>; /* EHRPWM */
+
+				ecap1: ecap at 48302100 {
+					compatible = "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x48302100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					interrupts = <47>;
+					interrupt-names = "ecap1";
+					status = "disabled";
+				};
+
+				ehrpwm1: pwm at 48302200 {
+					compatible = "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x48302200 0x80>;
+					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at 4000 {			/* 0x48304000, ap 70 44.0 */
@@ -1453,6 +1996,39 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x4000 0x1000>;
+
+			epwmss2: epwmss at 0 {
+				compatible = "ti,am33xx-pwmss";
+				reg = <0x0 0x10>;
+				#address-cells = <1>;
+				#size-cells = <1>;
+				status = "disabled";
+				ranges = <0x48304100 0x48304100 0x80   /* ECAP */
+					  0x48304180 0x48304180 0x80   /* EQEP */
+					  0x48304200 0x48304200 0x80>; /* EHRPWM */
+
+				ecap2: ecap at 48304100 {
+					compatible = "ti,am3352-ecap",
+						     "ti,am33xx-ecap";
+					#pwm-cells = <3>;
+					reg = <0x48304100 0x80>;
+					clocks = <&l4ls_gclk>;
+					clock-names = "fck";
+					interrupts = <61>;
+					interrupt-names = "ecap2";
+					status = "disabled";
+				};
+
+				ehrpwm2: pwm at 48304200 {
+					compatible = "ti,am3352-ehrpwm",
+						     "ti,am33xx-ehrpwm";
+					#pwm-cells = <3>;
+					reg = <0x48304200 0x80>;
+					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
+					clock-names = "tbclk", "fck";
+					status = "disabled";
+				};
+			};
 		};
 
 		target-module at e000 {			/* 0x4830e000, ap 72 4a.0 */
@@ -1471,6 +2047,13 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0xe000 0x1000>;
+
+			lcdc: lcdc at 0 {
+				compatible = "ti,am33xx-tilcdc";
+				reg = <0x0 0x1000>;
+				interrupts = <36>;
+				status = "disabled";
+			};
 		};
 
 		target-module at 10000 {			/* 0x48310000, ap 76 4e.1 */
@@ -1488,6 +2071,12 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x10000 0x2000>;
+
+			rng: rng at 0 {
+				compatible = "ti,omap4-rng";
+				reg = <0x0 0x2000>;
+				interrupts = <111>;
+			};
 		};
 
 		target-module at 13000 {			/* 0x48313000, ap 97 62.0 */
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -8,6 +8,7 @@
  * kind, whether express or implied.
  */
 
+#include <dt-bindings/bus/ti-sysc.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/am33xx.h>
 #include <dt-bindings/clock/am3.h>
@@ -166,87 +167,23 @@
 		ranges;
 		ti,hwmods = "l3_main";
 
-		l4_wkup: l4_wkup at 44c00000 {
-			compatible = "ti,am3-l4-wkup", "simple-bus";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			ranges = <0 0x44c00000 0x280000>;
-
+		l4_wkup: interconnect at 44c00000 {
 			wkup_m3: wkup_m3 at 100000 {
 				compatible = "ti,am3352-wkup-m3";
 				reg = <0x100000 0x4000>,
-				      <0x180000	0x2000>;
+				      <0x180000 0x2000>;
 				reg-names = "umem", "dmem";
 				ti,hwmods = "wkup_m3";
 				ti,pm-firmware = "am335x-pm-firmware.elf";
 			};
-
-			prcm: prcm at 200000 {
-				compatible = "ti,am3-prcm", "simple-bus";
-				reg = <0x200000 0x4000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				ranges = <0 0x200000 0x4000>;
-
-				prcm_clocks: clocks {
-					#address-cells = <1>;
-					#size-cells = <0>;
-				};
-
-				prcm_clockdomains: clockdomains {
-				};
-			};
-
-			scm: scm at 210000 {
-				compatible = "ti,am3-scm", "simple-bus";
-				reg = <0x210000 0x2000>;
-				#address-cells = <1>;
-				#size-cells = <1>;
-				#pinctrl-cells = <1>;
-				ranges = <0 0x210000 0x2000>;
-
-				am33xx_pinmux: pinmux at 800 {
-					compatible = "pinctrl-single";
-					reg = <0x800 0x238>;
-					#address-cells = <1>;
-					#size-cells = <0>;
-					#pinctrl-cells = <1>;
-					pinctrl-single,register-width = <32>;
-					pinctrl-single,function-mask = <0x7f>;
-				};
-
-				scm_conf: scm_conf at 0 {
-					compatible = "syscon", "simple-bus";
-					reg = <0x0 0x800>;
-					#address-cells = <1>;
-					#size-cells = <1>;
-					ranges = <0 0 0x800>;
-
-					scm_clocks: clocks {
-						#address-cells = <1>;
-						#size-cells = <0>;
-					};
-				};
-
-				wkup_m3_ipc: wkup_m3_ipc at 1324 {
-					compatible = "ti,am3352-wkup-m3-ipc";
-					reg = <0x1324 0x24>;
-					interrupts = <78>;
-					ti,rproc = <&wkup_m3>;
-					mboxes = <&mailbox &mbox_wkupm3>;
-				};
-
-				edma_xbar: dma-router at f90 {
-					compatible = "ti,am335x-edma-crossbar";
-					reg = <0xf90 0x40>;
-					#dma-cells = <3>;
-					dma-requests = <32>;
-					dma-masters = <&edma>;
-				};
-
-				scm_clockdomains: clockdomains {
-				};
-			};
+		};
+		l4_per: interconnect at 48000000 {
+		};
+		l4_fw: interconnect at 47c00000 {
+		};
+		l4_fast: interconnect at 4a000000 {
+		};
+		l4_mpuss: interconnect at 4b140000 {
 		};
 
 		intc: interrupt-controller at 48200000 {
@@ -297,166 +234,6 @@
 			interrupt-names = "edma3_tcerrint";
 		};
 
-		gpio0: gpio at 44e07000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio1";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x44e07000 0x1000>;
-			interrupts = <96>;
-		};
-
-		gpio1: gpio at 4804c000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio2";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x4804c000 0x1000>;
-			interrupts = <98>;
-		};
-
-		gpio2: gpio at 481ac000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio3";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x481ac000 0x1000>;
-			interrupts = <32>;
-		};
-
-		gpio3: gpio at 481ae000 {
-			compatible = "ti,omap4-gpio";
-			ti,hwmods = "gpio4";
-			gpio-controller;
-			#gpio-cells = <2>;
-			interrupt-controller;
-			#interrupt-cells = <2>;
-			reg = <0x481ae000 0x1000>;
-			interrupts = <62>;
-		};
-
-		uart0: serial at 44e09000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart1";
-			clock-frequency = <48000000>;
-			reg = <0x44e09000 0x2000>;
-			interrupts = <72>;
-			status = "disabled";
-			dmas = <&edma 26 0>, <&edma 27 0>;
-			dma-names = "tx", "rx";
-		};
-
-		uart1: serial at 48022000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart2";
-			clock-frequency = <48000000>;
-			reg = <0x48022000 0x2000>;
-			interrupts = <73>;
-			status = "disabled";
-			dmas = <&edma 28 0>, <&edma 29 0>;
-			dma-names = "tx", "rx";
-		};
-
-		uart2: serial at 48024000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart3";
-			clock-frequency = <48000000>;
-			reg = <0x48024000 0x2000>;
-			interrupts = <74>;
-			status = "disabled";
-			dmas = <&edma 30 0>, <&edma 31 0>;
-			dma-names = "tx", "rx";
-		};
-
-		uart3: serial at 481a6000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart4";
-			clock-frequency = <48000000>;
-			reg = <0x481a6000 0x2000>;
-			interrupts = <44>;
-			status = "disabled";
-		};
-
-		uart4: serial at 481a8000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart5";
-			clock-frequency = <48000000>;
-			reg = <0x481a8000 0x2000>;
-			interrupts = <45>;
-			status = "disabled";
-		};
-
-		uart5: serial at 481aa000 {
-			compatible = "ti,am3352-uart", "ti,omap3-uart";
-			ti,hwmods = "uart6";
-			clock-frequency = <48000000>;
-			reg = <0x481aa000 0x2000>;
-			interrupts = <46>;
-			status = "disabled";
-		};
-
-		i2c0: i2c at 44e0b000 {
-			compatible = "ti,omap4-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			ti,hwmods = "i2c1";
-			reg = <0x44e0b000 0x1000>;
-			interrupts = <70>;
-			status = "disabled";
-		};
-
-		i2c1: i2c at 4802a000 {
-			compatible = "ti,omap4-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			ti,hwmods = "i2c2";
-			reg = <0x4802a000 0x1000>;
-			interrupts = <71>;
-			status = "disabled";
-		};
-
-		i2c2: i2c at 4819c000 {
-			compatible = "ti,omap4-i2c";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			ti,hwmods = "i2c3";
-			reg = <0x4819c000 0x1000>;
-			interrupts = <30>;
-			status = "disabled";
-		};
-
-		mmc1: mmc at 48060000 {
-			compatible = "ti,omap4-hsmmc";
-			ti,hwmods = "mmc1";
-			ti,dual-volt;
-			ti,needs-special-reset;
-			ti,needs-special-hs-handling;
-			dmas = <&edma_xbar 24 0 0
-				&edma_xbar 25 0 0>;
-			dma-names = "tx", "rx";
-			interrupts = <64>;
-			reg = <0x48060000 0x1000>;
-			status = "disabled";
-		};
-
-		mmc2: mmc at 481d8000 {
-			compatible = "ti,omap4-hsmmc";
-			ti,hwmods = "mmc2";
-			ti,needs-special-reset;
-			dmas = <&edma 2 0
-				&edma 3 0>;
-			dma-names = "tx", "rx";
-			interrupts = <28>;
-			reg = <0x481d8000 0x1000>;
-			status = "disabled";
-		};
-
 		mmc3: mmc at 47810000 {
 			compatible = "ti,omap4-hsmmc";
 			ti,hwmods = "mmc3";
@@ -466,157 +243,6 @@
 			status = "disabled";
 		};
 
-		hwspinlock: spinlock at 480ca000 {
-			compatible = "ti,omap4-hwspinlock";
-			reg = <0x480ca000 0x1000>;
-			ti,hwmods = "spinlock";
-			#hwlock-cells = <1>;
-		};
-
-		wdt2: wdt at 44e35000 {
-			compatible = "ti,omap3-wdt";
-			ti,hwmods = "wd_timer2";
-			reg = <0x44e35000 0x1000>;
-			interrupts = <91>;
-		};
-
-		dcan0: can at 481cc000 {
-			compatible = "ti,am3352-d_can";
-			ti,hwmods = "d_can0";
-			reg = <0x481cc000 0x2000>;
-			clocks = <&dcan0_fck>;
-			clock-names = "fck";
-			syscon-raminit = <&scm_conf 0x644 0>;
-			interrupts = <52>;
-			status = "disabled";
-		};
-
-		dcan1: can at 481d0000 {
-			compatible = "ti,am3352-d_can";
-			ti,hwmods = "d_can1";
-			reg = <0x481d0000 0x2000>;
-			clocks = <&dcan1_fck>;
-			clock-names = "fck";
-			syscon-raminit = <&scm_conf 0x644 1>;
-			interrupts = <55>;
-			status = "disabled";
-		};
-
-		mailbox: mailbox at 480c8000 {
-			compatible = "ti,omap4-mailbox";
-			reg = <0x480C8000 0x200>;
-			interrupts = <77>;
-			ti,hwmods = "mailbox";
-			#mbox-cells = <1>;
-			ti,mbox-num-users = <4>;
-			ti,mbox-num-fifos = <8>;
-			mbox_wkupm3: wkup_m3 {
-				ti,mbox-send-noirq;
-				ti,mbox-tx = <0 0 0>;
-				ti,mbox-rx = <0 0 3>;
-			};
-		};
-
-		timer1: timer at 44e31000 {
-			compatible = "ti,am335x-timer-1ms";
-			reg = <0x44e31000 0x400>;
-			interrupts = <67>;
-			ti,hwmods = "timer1";
-			ti,timer-alwon;
-			clocks = <&timer1_fck>;
-			clock-names = "fck";
-		};
-
-		timer2: timer at 48040000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48040000 0x400>;
-			interrupts = <68>;
-			ti,hwmods = "timer2";
-			clocks = <&timer2_fck>;
-			clock-names = "fck";
-		};
-
-		timer3: timer at 48042000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48042000 0x400>;
-			interrupts = <69>;
-			ti,hwmods = "timer3";
-		};
-
-		timer4: timer at 48044000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48044000 0x400>;
-			interrupts = <92>;
-			ti,hwmods = "timer4";
-			ti,timer-pwm;
-		};
-
-		timer5: timer at 48046000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48046000 0x400>;
-			interrupts = <93>;
-			ti,hwmods = "timer5";
-			ti,timer-pwm;
-		};
-
-		timer6: timer at 48048000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x48048000 0x400>;
-			interrupts = <94>;
-			ti,hwmods = "timer6";
-			ti,timer-pwm;
-		};
-
-		timer7: timer at 4804a000 {
-			compatible = "ti,am335x-timer";
-			reg = <0x4804a000 0x400>;
-			interrupts = <95>;
-			ti,hwmods = "timer7";
-			ti,timer-pwm;
-		};
-
-		rtc: rtc at 44e3e000 {
-			compatible = "ti,am3352-rtc", "ti,da830-rtc";
-			reg = <0x44e3e000 0x1000>;
-			interrupts = <75
-				      76>;
-			ti,hwmods = "rtc";
-			clocks = <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
-			clock-names = "int-clk";
-		};
-
-		spi0: spi at 48030000 {
-			compatible = "ti,omap4-mcspi";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x48030000 0x400>;
-			interrupts = <65>;
-			ti,spi-num-cs = <2>;
-			ti,hwmods = "spi0";
-			dmas = <&edma 16 0
-				&edma 17 0
-				&edma 18 0
-				&edma 19 0>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
-			status = "disabled";
-		};
-
-		spi1: spi at 481a0000 {
-			compatible = "ti,omap4-mcspi";
-			#address-cells = <1>;
-			#size-cells = <0>;
-			reg = <0x481a0000 0x400>;
-			interrupts = <125>;
-			ti,spi-num-cs = <2>;
-			ti,hwmods = "spi1";
-			dmas = <&edma 42 0
-				&edma 43 0
-				&edma 44 0
-				&edma 45 0>;
-			dma-names = "tx0", "rx0", "tx1", "rx1";
-			status = "disabled";
-		};
-
 		usb: usb at 47400000 {
 			compatible = "ti,am33xx-usb";
 			reg = <0x47400000 0x1000>;
@@ -747,163 +373,6 @@
 			};
 		};
 
-		epwmss0: epwmss at 48300000 {
-			compatible = "ti,am33xx-pwmss";
-			reg = <0x48300000 0x10>;
-			ti,hwmods = "epwmss0";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			status = "disabled";
-			ranges = <0x48300100 0x48300100 0x80   /* ECAP */
-				  0x48300180 0x48300180 0x80   /* EQEP */
-				  0x48300200 0x48300200 0x80>; /* EHRPWM */
-
-			ecap0: ecap at 48300100 {
-				compatible = "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48300100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				interrupts = <31>;
-				interrupt-names = "ecap0";
-				status = "disabled";
-			};
-
-			ehrpwm0: pwm at 48300200 {
-				compatible = "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48300200 0x80>;
-				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss1: epwmss at 48302000 {
-			compatible = "ti,am33xx-pwmss";
-			reg = <0x48302000 0x10>;
-			ti,hwmods = "epwmss1";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			status = "disabled";
-			ranges = <0x48302100 0x48302100 0x80   /* ECAP */
-				  0x48302180 0x48302180 0x80   /* EQEP */
-				  0x48302200 0x48302200 0x80>; /* EHRPWM */
-
-			ecap1: ecap at 48302100 {
-				compatible = "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48302100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				interrupts = <47>;
-				interrupt-names = "ecap1";
-				status = "disabled";
-			};
-
-			ehrpwm1: pwm at 48302200 {
-				compatible = "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48302200 0x80>;
-				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		epwmss2: epwmss at 48304000 {
-			compatible = "ti,am33xx-pwmss";
-			reg = <0x48304000 0x10>;
-			ti,hwmods = "epwmss2";
-			#address-cells = <1>;
-			#size-cells = <1>;
-			status = "disabled";
-			ranges = <0x48304100 0x48304100 0x80   /* ECAP */
-				  0x48304180 0x48304180 0x80   /* EQEP */
-				  0x48304200 0x48304200 0x80>; /* EHRPWM */
-
-			ecap2: ecap at 48304100 {
-				compatible = "ti,am3352-ecap",
-					     "ti,am33xx-ecap";
-				#pwm-cells = <3>;
-				reg = <0x48304100 0x80>;
-				clocks = <&l4ls_gclk>;
-				clock-names = "fck";
-				interrupts = <61>;
-				interrupt-names = "ecap2";
-				status = "disabled";
-			};
-
-			ehrpwm2: pwm at 48304200 {
-				compatible = "ti,am3352-ehrpwm",
-					     "ti,am33xx-ehrpwm";
-				#pwm-cells = <3>;
-				reg = <0x48304200 0x80>;
-				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
-				clock-names = "tbclk", "fck";
-				status = "disabled";
-			};
-		};
-
-		mac: ethernet at 4a100000 {
-			compatible = "ti,am335x-cpsw","ti,cpsw";
-			ti,hwmods = "cpgmac0";
-			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
-			clock-names = "fck", "cpts";
-			cpdma_channels = <8>;
-			ale_entries = <1024>;
-			bd_ram_size = <0x2000>;
-			mac_control = <0x20>;
-			slaves = <2>;
-			active_slave = <0>;
-			cpts_clock_mult = <0x80000000>;
-			cpts_clock_shift = <29>;
-			reg = <0x4a100000 0x800
-			       0x4a101200 0x100>;
-			#address-cells = <1>;
-			#size-cells = <1>;
-			/*
-			 * c0_rx_thresh_pend
-			 * c0_rx_pend
-			 * c0_tx_pend
-			 * c0_misc_pend
-			 */
-			interrupts = <40 41 42 43>;
-			ranges;
-			syscon = <&scm_conf>;
-			status = "disabled";
-
-			davinci_mdio: mdio at 4a101000 {
-				compatible = "ti,cpsw-mdio","ti,davinci_mdio";
-				#address-cells = <1>;
-				#size-cells = <0>;
-				ti,hwmods = "davinci_mdio";
-				bus_freq = <1000000>;
-				reg = <0x4a101000 0x100>;
-				status = "disabled";
-			};
-
-			cpsw_emac0: slave at 4a100200 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			cpsw_emac1: slave at 4a100300 {
-				/* Filled in by U-Boot */
-				mac-address = [ 00 00 00 00 00 00 ];
-			};
-
-			phy_sel: cpsw-phy-sel at 44e10650 {
-				compatible = "ti,am3352-cpsw-phy-sel";
-				reg= <0x44e10650 0x4>;
-				reg-names = "gmii-sel";
-			};
-		};
-
 		ocmcram: ocmcram at 40300000 {
 			compatible = "mmio-sram";
 			reg = <0x40300000 0x10000>; /* 64k */
@@ -924,40 +393,6 @@
 			};
 		};
 
-		elm: elm at 48080000 {
-			compatible = "ti,am3352-elm";
-			reg = <0x48080000 0x2000>;
-			interrupts = <4>;
-			ti,hwmods = "elm";
-			status = "disabled";
-		};
-
-		lcdc: lcdc at 4830e000 {
-			compatible = "ti,am33xx-tilcdc";
-			reg = <0x4830e000 0x1000>;
-			interrupts = <36>;
-			ti,hwmods = "lcdc";
-			status = "disabled";
-		};
-
-		tscadc: tscadc at 44e0d000 {
-			compatible = "ti,am3359-tscadc";
-			reg = <0x44e0d000 0x1000>;
-			interrupts = <16>;
-			ti,hwmods = "adc_tsc";
-			status = "disabled";
-			dmas = <&edma 53 0>, <&edma 57 0>;
-			dma-names = "fifo0", "fifo1";
-
-			tsc {
-				compatible = "ti,am3359-tsc";
-			};
-			am335x_adc: adc {
-				#io-channel-cells = <1>;
-				compatible = "ti,am3359-adc";
-			};
-		};
-
 		emif: emif at 4c000000 {
 			compatible = "ti,emif-am3352";
 			reg = <0x4c000000 0x1000000>;
@@ -1005,42 +440,8 @@
 			       <&edma 5 0>;
 			dma-names = "tx", "rx";
 		};
-
-		mcasp0: mcasp at 48038000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp0";
-			reg = <0x48038000 0x2000>,
-			      <0x46000000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <80>, <81>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 8 2>,
-				<&edma 9 2>;
-			dma-names = "tx", "rx";
-		};
-
-		mcasp1: mcasp at 4803c000 {
-			compatible = "ti,am33xx-mcasp-audio";
-			ti,hwmods = "mcasp1";
-			reg = <0x4803C000 0x2000>,
-			      <0x46400000 0x400000>;
-			reg-names = "mpu", "dat";
-			interrupts = <82>, <83>;
-			interrupt-names = "tx", "rx";
-			status = "disabled";
-			dmas = <&edma 10 2>,
-				<&edma 11 2>;
-			dma-names = "tx", "rx";
-		};
-
-		rng: rng at 48310000 {
-			compatible = "ti,omap4-rng";
-			ti,hwmods = "rng";
-			reg = <0x48310000 0x2000>;
-			interrupts = <111>;
-		};
 	};
 };
 
+#include "am33xx-l4.dtsi"
 #include "am33xx-clocks.dtsi"
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-25  0:05 ` Tony Lindgren
@ 2018-09-25  5:14   ` Keerthy
  -1 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-09-25  5:14 UTC (permalink / raw)
  To: Tony Lindgren, linux-omap
  Cc: Tero Kristo, devicetree, Benoît Cousson, linux-arm-kernel,
	Dave Gerlach



On Tuesday 25 September 2018 05:35 AM, Tony Lindgren wrote:
> Hi all,
> 
> Here are four patches to make am437x and am335x l4 devices to probe with
> ti-sysc driver similar to what we've already done for omap4. The related
> legacy hwmod platform data will be removed few merge cycles later.
> 
> There are still dependencies to Tero's clkctrl changes and for ti-sysc
> drivers changes. So these patches are based on on v4.19-rc3 merged with
> my omap-for-v4.20/dt branch plus the following additional series of
> patches:
> 
> [PATCH 00/11] clk: ti: clkctrl data split based on clkdm boundaries
> [PATCH 0/3] ARM: dts: am3/am4/dra7 clkctrl data conversion
> [PATCH 0/4] TI sysc driver updates for am335x and am437x
> 
> v4.19-rc3 is needed for commit 18eb8aea7fb2 ("net: ethernet:
> cpsw-phy-sel: prefer phandle for phy sel") and omap-for-v4.20/dt
> is needed to avoid conflicts with clean-up.
> 
> I've also pushed out a temporary testing branch for people to test
> as omap-for-v4.20/dt-ti-sysc-tmp-testing [0][1].
> 
> Regards,
> 
> Tony
> 
> [0] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git omap-for-v4.20/dt-ti-sysc-tmp-testing
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing

Hi Tony,

I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
AM437x-gp the following is happening:

https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/

There seems to be a timeout due to which resume is not immediate i see
1-2s delay and i see i2c timeout.

[  402.247271] omap_i2c 4802a000.i2c: controller timed out
[  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
: -110
[  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
-110
[  402.247522] pixcir_ts 1-005c: Failed to stop
[  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
[pixcir_i2c_ts] returns -110

so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.

I did some touch screen testing after DS0 resume seems to be working.
Everything is in pastebin link provided above.

Regards,
Keerthy
> 
> 
> Tony Lindgren (4):
>   ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data
>   ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
>   ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
>   ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
> 
>  arch/arm/boot/dts/am335x-shc.dts |    2 +-
>  arch/arm/boot/dts/am33xx-l4.dtsi | 2132 +++++++++++++++++++++++++
>  arch/arm/boot/dts/am33xx.dtsi    |  623 +-------
>  arch/arm/boot/dts/am4372.dtsi    |  876 +----------
>  arch/arm/boot/dts/am437x-l4.dtsi | 2499 ++++++++++++++++++++++++++++++
>  5 files changed, 4651 insertions(+), 1481 deletions(-)
>  create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi
>  create mode 100644 arch/arm/boot/dts/am437x-l4.dtsi
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-25  5:14   ` Keerthy
  0 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-09-25  5:14 UTC (permalink / raw)
  To: linux-arm-kernel



On Tuesday 25 September 2018 05:35 AM, Tony Lindgren wrote:
> Hi all,
> 
> Here are four patches to make am437x and am335x l4 devices to probe with
> ti-sysc driver similar to what we've already done for omap4. The related
> legacy hwmod platform data will be removed few merge cycles later.
> 
> There are still dependencies to Tero's clkctrl changes and for ti-sysc
> drivers changes. So these patches are based on on v4.19-rc3 merged with
> my omap-for-v4.20/dt branch plus the following additional series of
> patches:
> 
> [PATCH 00/11] clk: ti: clkctrl data split based on clkdm boundaries
> [PATCH 0/3] ARM: dts: am3/am4/dra7 clkctrl data conversion
> [PATCH 0/4] TI sysc driver updates for am335x and am437x
> 
> v4.19-rc3 is needed for commit 18eb8aea7fb2 ("net: ethernet:
> cpsw-phy-sel: prefer phandle for phy sel") and omap-for-v4.20/dt
> is needed to avoid conflicts with clean-up.
> 
> I've also pushed out a temporary testing branch for people to test
> as omap-for-v4.20/dt-ti-sysc-tmp-testing [0][1].
> 
> Regards,
> 
> Tony
> 
> [0] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git omap-for-v4.20/dt-ti-sysc-tmp-testing
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing

Hi Tony,

I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
AM437x-gp the following is happening:

https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/

There seems to be a timeout due to which resume is not immediate i see
1-2s delay and i see i2c timeout.

[  402.247271] omap_i2c 4802a000.i2c: controller timed out
[  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
: -110
[  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
-110
[  402.247522] pixcir_ts 1-005c: Failed to stop
[  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
[pixcir_i2c_ts] returns -110

so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.

I did some touch screen testing after DS0 resume seems to be working.
Everything is in pastebin link provided above.

Regards,
Keerthy
> 
> 
> Tony Lindgren (4):
>   ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data
>   ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
>   ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
>   ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
> 
>  arch/arm/boot/dts/am335x-shc.dts |    2 +-
>  arch/arm/boot/dts/am33xx-l4.dtsi | 2132 +++++++++++++++++++++++++
>  arch/arm/boot/dts/am33xx.dtsi    |  623 +-------
>  arch/arm/boot/dts/am4372.dtsi    |  876 +----------
>  arch/arm/boot/dts/am437x-l4.dtsi | 2499 ++++++++++++++++++++++++++++++
>  5 files changed, 4651 insertions(+), 1481 deletions(-)
>  create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi
>  create mode 100644 arch/arm/boot/dts/am437x-l4.dtsi
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-25  5:14   ` Keerthy
@ 2018-09-25 14:40     ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25 14:40 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180925 05:18]:
> I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
> AM437x-gp the following is happening:
> 
> https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
> 
> There seems to be a timeout due to which resume is not immediate i see
> 1-2s delay and i see i2c timeout.
> 
> [  402.247271] omap_i2c 4802a000.i2c: controller timed out
> [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
> : -110
> [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
> -110
> [  402.247522] pixcir_ts 1-005c: Failed to stop
> [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
> [pixcir_i2c_ts] returns -110
> 
> so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
> 
> I did some touch screen testing after DS0 resume seems to be working.
> Everything is in pastebin link provided above.

Thanks for testing. Hmm no idea what might be going on with
the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
behaves just fine for suspend and resume. Both are on i2c1,
pixcir calls pixcir_start/stop from suspend and resume while
edt-ft5x06 does not reconfigure anything.

I'll try read some edt-ft5x06 register values on suspend
and resume, let's see if that makes it reproducable here.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-25 14:40     ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25 14:40 UTC (permalink / raw)
  To: linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180925 05:18]:
> I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
> AM437x-gp the following is happening:
> 
> https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
> 
> There seems to be a timeout due to which resume is not immediate i see
> 1-2s delay and i see i2c timeout.
> 
> [  402.247271] omap_i2c 4802a000.i2c: controller timed out
> [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
> : -110
> [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
> -110
> [  402.247522] pixcir_ts 1-005c: Failed to stop
> [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
> [pixcir_i2c_ts] returns -110
> 
> so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
> 
> I did some touch screen testing after DS0 resume seems to be working.
> Everything is in pastebin link provided above.

Thanks for testing. Hmm no idea what might be going on with
the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
behaves just fine for suspend and resume. Both are on i2c1,
pixcir calls pixcir_start/stop from suspend and resume while
edt-ft5x06 does not reconfigure anything.

I'll try read some edt-ft5x06 register values on suspend
and resume, let's see if that makes it reproducable here.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-25 14:40     ` Tony Lindgren
@ 2018-09-25 17:55       ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25 17:55 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180925 14:44]:
> * Keerthy <j-keerthy@ti.com> [180925 05:18]:
> > I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
> > AM437x-gp the following is happening:
> > 
> > https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
> > 
> > There seems to be a timeout due to which resume is not immediate i see
> > 1-2s delay and i see i2c timeout.
> > 
> > [  402.247271] omap_i2c 4802a000.i2c: controller timed out
> > [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
> > : -110
> > [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
> > -110
> > [  402.247522] pixcir_ts 1-005c: Failed to stop
> > [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
> > [pixcir_i2c_ts] returns -110
> > 
> > so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
> > 
> > I did some touch screen testing after DS0 resume seems to be working.
> > Everything is in pastebin link provided above.
> 
> Thanks for testing. Hmm no idea what might be going on with
> the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
> behaves just fine for suspend and resume. Both are on i2c1,
> pixcir calls pixcir_start/stop from suspend and resume while
> edt-ft5x06 does not reconfigure anything.
> 
> I'll try read some edt-ft5x06 register values on suspend
> and resume, let's see if that makes it reproducable here.

So after adding a call to edt_ft5x06_ts_readwrite to
edt_ft5x06_ts_resume I see -110 errors too. Looks like we
have i2c-omap not idled for suspend because of autoidle if
an i2c client reconfigures it's registers for suspend.

Care to test with the following patch applied? If that works
for you, I'll send a proper patch for that.

Regards,

Tony

8< -------------------
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -208,6 +208,8 @@ struct omap_i2c_dev {
 						 * if set, should be trsh+1
 						 */
 	u32			rev;
+	unsigned int		is_suspended:1;
+	unsigned int		needs_resume:1;
 	unsigned		b_hw:1;		/* bad h/w fixes */
 	unsigned		bb_valid:1;	/* true when BB-bit reflects
 						 * the I2C bus state
@@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int omap_i2c_runtime_suspend(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
 	}
 
 	pinctrl_pm_select_sleep_state(dev);
+	omap->is_suspended = true;
 
 	return 0;
 }
 
-static int omap_i2c_runtime_resume(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1535,6 +1537,47 @@ static int omap_i2c_runtime_resume(struct device *dev)
 		return 0;
 
 	__omap_i2c_init(omap);
+	omap->is_suspended = false;
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_suspend(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	/* Is device still enabled because of autosuspend? */
+	if (!ddata->is_suspended) {
+		error = pm_runtime_put_sync_suspend(dev);
+		if (error < 0) {
+			dev_err(dev, "%s failed: %i\n", __func__, error);
+
+			return error;
+		}
+		ddata->needs_resume = true;
+	}
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_resume(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	if (ddata->needs_resume) {
+		error = pm_runtime_get_sync(dev);
+		if (error < 0) {
+			dev_err(dev, "%s failed: %i\n", __func__, error);
+			pm_runtime_put_noidle(dev);
+
+			return error;
+		}
+		pm_runtime_mark_last_busy(dev);
+		pm_runtime_put_autosuspend(dev);
+		ddata->needs_resume = false;
+	}
 
 	return 0;
 }
@@ -1542,18 +1585,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
 static const struct dev_pm_ops omap_i2c_pm_ops = {
 	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
 			   omap_i2c_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
 };
-#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
-#else
-#define OMAP_I2C_PM_OPS NULL
-#endif /* CONFIG_PM */
 
 static struct platform_driver omap_i2c_driver = {
 	.probe		= omap_i2c_probe,
 	.remove		= omap_i2c_remove,
 	.driver		= {
 		.name	= "omap_i2c",
-		.pm	= OMAP_I2C_PM_OPS,
+		.pm	= &omap_i2c_pm_ops,
 		.of_match_table = of_match_ptr(omap_i2c_of_match),
 	},
 };
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-25 17:55       ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-25 17:55 UTC (permalink / raw)
  To: linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180925 14:44]:
> * Keerthy <j-keerthy@ti.com> [180925 05:18]:
> > I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
> > AM437x-gp the following is happening:
> > 
> > https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
> > 
> > There seems to be a timeout due to which resume is not immediate i see
> > 1-2s delay and i see i2c timeout.
> > 
> > [  402.247271] omap_i2c 4802a000.i2c: controller timed out
> > [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
> > : -110
> > [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
> > -110
> > [  402.247522] pixcir_ts 1-005c: Failed to stop
> > [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
> > [pixcir_i2c_ts] returns -110
> > 
> > so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
> > 
> > I did some touch screen testing after DS0 resume seems to be working.
> > Everything is in pastebin link provided above.
> 
> Thanks for testing. Hmm no idea what might be going on with
> the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
> behaves just fine for suspend and resume. Both are on i2c1,
> pixcir calls pixcir_start/stop from suspend and resume while
> edt-ft5x06 does not reconfigure anything.
> 
> I'll try read some edt-ft5x06 register values on suspend
> and resume, let's see if that makes it reproducable here.

So after adding a call to edt_ft5x06_ts_readwrite to
edt_ft5x06_ts_resume I see -110 errors too. Looks like we
have i2c-omap not idled for suspend because of autoidle if
an i2c client reconfigures it's registers for suspend.

Care to test with the following patch applied? If that works
for you, I'll send a proper patch for that.

Regards,

Tony

8< -------------------
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -208,6 +208,8 @@ struct omap_i2c_dev {
 						 * if set, should be trsh+1
 						 */
 	u32			rev;
+	unsigned int		is_suspended:1;
+	unsigned int		needs_resume:1;
 	unsigned		b_hw:1;		/* bad h/w fixes */
 	unsigned		bb_valid:1;	/* true when BB-bit reflects
 						 * the I2C bus state
@@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int omap_i2c_runtime_suspend(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
 	}
 
 	pinctrl_pm_select_sleep_state(dev);
+	omap->is_suspended = true;
 
 	return 0;
 }
 
-static int omap_i2c_runtime_resume(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1535,6 +1537,47 @@ static int omap_i2c_runtime_resume(struct device *dev)
 		return 0;
 
 	__omap_i2c_init(omap);
+	omap->is_suspended = false;
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_suspend(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	/* Is device still enabled because of autosuspend? */
+	if (!ddata->is_suspended) {
+		error = pm_runtime_put_sync_suspend(dev);
+		if (error < 0) {
+			dev_err(dev, "%s failed: %i\n", __func__, error);
+
+			return error;
+		}
+		ddata->needs_resume = true;
+	}
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_resume(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	if (ddata->needs_resume) {
+		error = pm_runtime_get_sync(dev);
+		if (error < 0) {
+			dev_err(dev, "%s failed: %i\n", __func__, error);
+			pm_runtime_put_noidle(dev);
+
+			return error;
+		}
+		pm_runtime_mark_last_busy(dev);
+		pm_runtime_put_autosuspend(dev);
+		ddata->needs_resume = false;
+	}
 
 	return 0;
 }
@@ -1542,18 +1585,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
 static const struct dev_pm_ops omap_i2c_pm_ops = {
 	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
 			   omap_i2c_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
 };
-#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
-#else
-#define OMAP_I2C_PM_OPS NULL
-#endif /* CONFIG_PM */
 
 static struct platform_driver omap_i2c_driver = {
 	.probe		= omap_i2c_probe,
 	.remove		= omap_i2c_remove,
 	.driver		= {
 		.name	= "omap_i2c",
-		.pm	= OMAP_I2C_PM_OPS,
+		.pm	= &omap_i2c_pm_ops,
 		.of_match_table = of_match_ptr(omap_i2c_of_match),
 	},
 };
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-25 17:55       ` Tony Lindgren
@ 2018-09-25 21:16         ` Grygorii Strashko
  -1 siblings, 0 replies; 66+ messages in thread
From: Grygorii Strashko @ 2018-09-25 21:16 UTC (permalink / raw)
  To: Tony Lindgren, Keerthy
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel



On 09/25/2018 12:55 PM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [180925 14:44]:
>> * Keerthy <j-keerthy@ti.com> [180925 05:18]:
>>> I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
>>> AM437x-gp the following is happening:
>>>
>>> https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
>>>
>>> There seems to be a timeout due to which resume is not immediate i see
>>> 1-2s delay and i see i2c timeout.
>>>
>>> [  402.247271] omap_i2c 4802a000.i2c: controller timed out
>>> [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
>>> : -110
>>> [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
>>> -110
>>> [  402.247522] pixcir_ts 1-005c: Failed to stop
>>> [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
>>> [pixcir_i2c_ts] returns -110
>>>
>>> so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
>>>
>>> I did some touch screen testing after DS0 resume seems to be working.
>>> Everything is in pastebin link provided above.

You might want to try it with "echo 1 > /sys/power/pm_print_times"

and add some dbg print in _od_resume_noirq()/_od_suspend_noirq()

>>
>> Thanks for testing. Hmm no idea what might be going on with
>> the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
>> behaves just fine for suspend and resume. Both are on i2c1,
>> pixcir calls pixcir_start/stop from suspend and resume while
>> edt-ft5x06 does not reconfigure anything.
>>
>> I'll try read some edt-ft5x06 register values on suspend
>> and resume, let's see if that makes it reproducable here.
> 
> So after adding a call to edt_ft5x06_ts_readwrite to
> edt_ft5x06_ts_resume I see -110 errors too. Looks like we
> have i2c-omap not idled for suspend because of autoidle if
> an i2c client reconfigures it's registers for suspend.
> 
> Care to test with the following patch applied? If that works
> for you, I'll send a proper patch for that.
> 
> Regards,
> 
> Tony
> 
> 8< -------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -208,6 +208,8 @@ struct omap_i2c_dev {
>   						 * if set, should be trsh+1
>   						 */
>   	u32			rev;
> +	unsigned int		is_suspended:1;
> +	unsigned int		needs_resume:1;
>   	unsigned		b_hw:1;		/* bad h/w fixes */
>   	unsigned		bb_valid:1;	/* true when BB-bit reflects
>   						 * the I2C bus state
> @@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>   	}
>   
>   	pinctrl_pm_select_sleep_state(dev);
> +	omap->is_suspended = true;
>   
>   	return 0;
>   }
>   
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1535,6 +1537,47 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   		return 0;
>   
>   	__omap_i2c_init(omap);
> +	omap->is_suspended = false;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	/* Is device still enabled because of autosuspend? */
> +	if (!ddata->is_suspended) {
> +		error = pm_runtime_put_sync_suspend(dev);

sry, this make no sense - put is nop, because of
pm_runtime_get_noresume() in device_prepare()

> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +
> +			return error;
> +		}
> +		ddata->needs_resume = true;
> +	}
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_resume(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	if (ddata->needs_resume) {
> +		error = pm_runtime_get_sync(dev);
> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +			pm_runtime_put_noidle(dev);
> +
> +			return error;
> +		}
> +		pm_runtime_mark_last_busy(dev);
> +		pm_runtime_put_autosuspend(dev);
> +		ddata->needs_resume = false;
> +	}
>   
>   	return 0;
>   }
> @@ -1542,18 +1585,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   static const struct dev_pm_ops omap_i2c_pm_ops = {
>   	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>   			   omap_i2c_runtime_resume, NULL)
> +	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
>   };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>   
>   static struct platform_driver omap_i2c_driver = {
>   	.probe		= omap_i2c_probe,
>   	.remove		= omap_i2c_remove,
>   	.driver		= {
>   		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>   		.of_match_table = of_match_ptr(omap_i2c_of_match),
>   	},
>   };
> 

-- 
regards,
-grygorii

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-25 21:16         ` Grygorii Strashko
  0 siblings, 0 replies; 66+ messages in thread
From: Grygorii Strashko @ 2018-09-25 21:16 UTC (permalink / raw)
  To: linux-arm-kernel



On 09/25/2018 12:55 PM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [180925 14:44]:
>> * Keerthy <j-keerthy@ti.com> [180925 05:18]:
>>> I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
>>> AM437x-gp the following is happening:
>>>
>>> https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
>>>
>>> There seems to be a timeout due to which resume is not immediate i see
>>> 1-2s delay and i see i2c timeout.
>>>
>>> [  402.247271] omap_i2c 4802a000.i2c: controller timed out
>>> [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
>>> : -110
>>> [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
>>> -110
>>> [  402.247522] pixcir_ts 1-005c: Failed to stop
>>> [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
>>> [pixcir_i2c_ts] returns -110
>>>
>>> so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
>>>
>>> I did some touch screen testing after DS0 resume seems to be working.
>>> Everything is in pastebin link provided above.

You might want to try it with "echo 1 > /sys/power/pm_print_times"

and add some dbg print in _od_resume_noirq()/_od_suspend_noirq()

>>
>> Thanks for testing. Hmm no idea what might be going on with
>> the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
>> behaves just fine for suspend and resume. Both are on i2c1,
>> pixcir calls pixcir_start/stop from suspend and resume while
>> edt-ft5x06 does not reconfigure anything.
>>
>> I'll try read some edt-ft5x06 register values on suspend
>> and resume, let's see if that makes it reproducable here.
> 
> So after adding a call to edt_ft5x06_ts_readwrite to
> edt_ft5x06_ts_resume I see -110 errors too. Looks like we
> have i2c-omap not idled for suspend because of autoidle if
> an i2c client reconfigures it's registers for suspend.
> 
> Care to test with the following patch applied? If that works
> for you, I'll send a proper patch for that.
> 
> Regards,
> 
> Tony
> 
> 8< -------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -208,6 +208,8 @@ struct omap_i2c_dev {
>   						 * if set, should be trsh+1
>   						 */
>   	u32			rev;
> +	unsigned int		is_suspended:1;
> +	unsigned int		needs_resume:1;
>   	unsigned		b_hw:1;		/* bad h/w fixes */
>   	unsigned		bb_valid:1;	/* true when BB-bit reflects
>   						 * the I2C bus state
> @@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>   	}
>   
>   	pinctrl_pm_select_sleep_state(dev);
> +	omap->is_suspended = true;
>   
>   	return 0;
>   }
>   
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1535,6 +1537,47 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   		return 0;
>   
>   	__omap_i2c_init(omap);
> +	omap->is_suspended = false;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	/* Is device still enabled because of autosuspend? */
> +	if (!ddata->is_suspended) {
> +		error = pm_runtime_put_sync_suspend(dev);

sry, this make no sense - put is nop, because of
pm_runtime_get_noresume() in device_prepare()

> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +
> +			return error;
> +		}
> +		ddata->needs_resume = true;
> +	}
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_resume(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	if (ddata->needs_resume) {
> +		error = pm_runtime_get_sync(dev);
> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +			pm_runtime_put_noidle(dev);
> +
> +			return error;
> +		}
> +		pm_runtime_mark_last_busy(dev);
> +		pm_runtime_put_autosuspend(dev);
> +		ddata->needs_resume = false;
> +	}
>   
>   	return 0;
>   }
> @@ -1542,18 +1585,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   static const struct dev_pm_ops omap_i2c_pm_ops = {
>   	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>   			   omap_i2c_runtime_resume, NULL)
> +	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
>   };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>   
>   static struct platform_driver omap_i2c_driver = {
>   	.probe		= omap_i2c_probe,
>   	.remove		= omap_i2c_remove,
>   	.driver		= {
>   		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>   		.of_match_table = of_match_ptr(omap_i2c_of_match),
>   	},
>   };
> 

-- 
regards,
-grygorii

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-25 17:55       ` Tony Lindgren
@ 2018-09-26  4:08         ` Keerthy
  -1 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-09-26  4:08 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel



On Tuesday 25 September 2018 11:25 PM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [180925 14:44]:
>> * Keerthy <j-keerthy@ti.com> [180925 05:18]:
>>> I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
>>> AM437x-gp the following is happening:
>>>
>>> https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
>>>
>>> There seems to be a timeout due to which resume is not immediate i see
>>> 1-2s delay and i see i2c timeout.
>>>
>>> [  402.247271] omap_i2c 4802a000.i2c: controller timed out
>>> [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
>>> : -110
>>> [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
>>> -110
>>> [  402.247522] pixcir_ts 1-005c: Failed to stop
>>> [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
>>> [pixcir_i2c_ts] returns -110
>>>
>>> so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
>>>
>>> I did some touch screen testing after DS0 resume seems to be working.
>>> Everything is in pastebin link provided above.
>>
>> Thanks for testing. Hmm no idea what might be going on with
>> the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
>> behaves just fine for suspend and resume. Both are on i2c1,
>> pixcir calls pixcir_start/stop from suspend and resume while
>> edt-ft5x06 does not reconfigure anything.
>>
>> I'll try read some edt-ft5x06 register values on suspend
>> and resume, let's see if that makes it reproducable here.
> 
> So after adding a call to edt_ft5x06_ts_readwrite to
> edt_ft5x06_ts_resume I see -110 errors too. Looks like we
> have i2c-omap not idled for suspend because of autoidle if
> an i2c client reconfigures it's registers for suspend.
> 
> Care to test with the following patch applied? If that works
> for you, I'll send a proper patch for that.

https://pastebin.ubuntu.com/p/KKNDB6sCcD/

So the below patch is solving the problem only for the first iteration
but i see the problem recurring from second iteration of suspend.

I tried the above cycle multiple times on am437x-gp-evm. I believe
we are one step closer still not completely fixed.

> 
> Regards,
> 
> Tony
> 
> 8< -------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -208,6 +208,8 @@ struct omap_i2c_dev {
>  						 * if set, should be trsh+1
>  						 */
>  	u32			rev;
> +	unsigned int		is_suspended:1;
> +	unsigned int		needs_resume:1;
>  	unsigned		b_hw:1;		/* bad h/w fixes */
>  	unsigned		bb_valid:1;	/* true when BB-bit reflects
>  						 * the I2C bus state
> @@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>  	}
>  
>  	pinctrl_pm_select_sleep_state(dev);
> +	omap->is_suspended = true;
>  
>  	return 0;
>  }
>  
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1535,6 +1537,47 @@ static int omap_i2c_runtime_resume(struct device *dev)
>  		return 0;
>  
>  	__omap_i2c_init(omap);
> +	omap->is_suspended = false;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	/* Is device still enabled because of autosuspend? */
> +	if (!ddata->is_suspended) {
> +		error = pm_runtime_put_sync_suspend(dev);
> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +
> +			return error;
> +		}
> +		ddata->needs_resume = true;
> +	}
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_resume(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	if (ddata->needs_resume) {
> +		error = pm_runtime_get_sync(dev);
> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +			pm_runtime_put_noidle(dev);
> +
> +			return error;
> +		}
> +		pm_runtime_mark_last_busy(dev);
> +		pm_runtime_put_autosuspend(dev);
> +		ddata->needs_resume = false;
> +	}
>  
>  	return 0;
>  }
> @@ -1542,18 +1585,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
>  static const struct dev_pm_ops omap_i2c_pm_ops = {
>  	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>  			   omap_i2c_runtime_resume, NULL)
> +	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
>  };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>  
>  static struct platform_driver omap_i2c_driver = {
>  	.probe		= omap_i2c_probe,
>  	.remove		= omap_i2c_remove,
>  	.driver		= {
>  		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>  		.of_match_table = of_match_ptr(omap_i2c_of_match),
>  	},
>  };
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-26  4:08         ` Keerthy
  0 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-09-26  4:08 UTC (permalink / raw)
  To: linux-arm-kernel



On Tuesday 25 September 2018 11:25 PM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [180925 14:44]:
>> * Keerthy <j-keerthy@ti.com> [180925 05:18]:
>>> I tried Branch [1] above. AM335x-boneblack is doing all good with ds0.
>>> AM437x-gp the following is happening:
>>>
>>> https://pastebin.ubuntu.com/p/fmZNYgJ9Sp/
>>>
>>> There seems to be a timeout due to which resume is not immediate i see
>>> 1-2s delay and i see i2c timeout.
>>>
>>> [  402.247271] omap_i2c 4802a000.i2c: controller timed out
>>> [  402.247441] pixcir_ts 1-005c: pixcir_int_enable: can't read reg 0x34
>>> : -110
>>> [  402.247486] pixcir_ts 1-005c: Failed to disable interrupt generation:
>>> -110
>>> [  402.247522] pixcir_ts 1-005c: Failed to stop
>>> [  402.247607] dpm_run_callback(): pixcir_i2c_ts_resume+0x0/0x98
>>> [pixcir_i2c_ts] returns -110
>>>
>>> so pixcir_i2c_ts_resume is retuning -110 which is timeout error code.
>>>
>>> I did some touch screen testing after DS0 resume seems to be working.
>>> Everything is in pastebin link provided above.
>>
>> Thanks for testing. Hmm no idea what might be going on with
>> the pixcir. I have edt-ft5x06 on the am437x-sk-evm and that
>> behaves just fine for suspend and resume. Both are on i2c1,
>> pixcir calls pixcir_start/stop from suspend and resume while
>> edt-ft5x06 does not reconfigure anything.
>>
>> I'll try read some edt-ft5x06 register values on suspend
>> and resume, let's see if that makes it reproducable here.
> 
> So after adding a call to edt_ft5x06_ts_readwrite to
> edt_ft5x06_ts_resume I see -110 errors too. Looks like we
> have i2c-omap not idled for suspend because of autoidle if
> an i2c client reconfigures it's registers for suspend.
> 
> Care to test with the following patch applied? If that works
> for you, I'll send a proper patch for that.

https://pastebin.ubuntu.com/p/KKNDB6sCcD/

So the below patch is solving the problem only for the first iteration
but i see the problem recurring from second iteration of suspend.

I tried the above cycle multiple times on am437x-gp-evm. I believe
we are one step closer still not completely fixed.

> 
> Regards,
> 
> Tony
> 
> 8< -------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -208,6 +208,8 @@ struct omap_i2c_dev {
>  						 * if set, should be trsh+1
>  						 */
>  	u32			rev;
> +	unsigned int		is_suspended:1;
> +	unsigned int		needs_resume:1;
>  	unsigned		b_hw:1;		/* bad h/w fixes */
>  	unsigned		bb_valid:1;	/* true when BB-bit reflects
>  						 * the I2C bus state
> @@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>  	}
>  
>  	pinctrl_pm_select_sleep_state(dev);
> +	omap->is_suspended = true;
>  
>  	return 0;
>  }
>  
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1535,6 +1537,47 @@ static int omap_i2c_runtime_resume(struct device *dev)
>  		return 0;
>  
>  	__omap_i2c_init(omap);
> +	omap->is_suspended = false;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	/* Is device still enabled because of autosuspend? */
> +	if (!ddata->is_suspended) {
> +		error = pm_runtime_put_sync_suspend(dev);
> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +
> +			return error;
> +		}
> +		ddata->needs_resume = true;
> +	}
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_resume(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	if (ddata->needs_resume) {
> +		error = pm_runtime_get_sync(dev);
> +		if (error < 0) {
> +			dev_err(dev, "%s failed: %i\n", __func__, error);
> +			pm_runtime_put_noidle(dev);
> +
> +			return error;
> +		}
> +		pm_runtime_mark_last_busy(dev);
> +		pm_runtime_put_autosuspend(dev);
> +		ddata->needs_resume = false;
> +	}
>  
>  	return 0;
>  }
> @@ -1542,18 +1585,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
>  static const struct dev_pm_ops omap_i2c_pm_ops = {
>  	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>  			   omap_i2c_runtime_resume, NULL)
> +	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
>  };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>  
>  static struct platform_driver omap_i2c_driver = {
>  	.probe		= omap_i2c_probe,
>  	.remove		= omap_i2c_remove,
>  	.driver		= {
>  		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>  		.of_match_table = of_match_ptr(omap_i2c_of_match),
>  	},
>  };
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-26  4:08         ` Keerthy
@ 2018-09-26 15:59           ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-26 15:59 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180926 04:12]:
> So the below patch is solving the problem only for the first iteration
> but i see the problem recurring from second iteration of suspend.
> 
> I tried the above cycle multiple times on am437x-gp-evm. I believe
> we are one step closer still not completely fixed.

OK thanks, that's interesting, I'll take a look. Good to hear
that is the reason for pixcir issues though :)

FYI, Grygorii also pointed out that am335x gpio debounce bit
needs to be 18 not 8 for all gpio instances in am33xx-l4.dtsi.
Otherwise am335x-evm won't boot.

So I'll be posting at least one more updated test branch.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-26 15:59           ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-26 15:59 UTC (permalink / raw)
  To: linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180926 04:12]:
> So the below patch is solving the problem only for the first iteration
> but i see the problem recurring from second iteration of suspend.
> 
> I tried the above cycle multiple times on am437x-gp-evm. I believe
> we are one step closer still not completely fixed.

OK thanks, that's interesting, I'll take a look. Good to hear
that is the reason for pixcir issues though :)

FYI, Grygorii also pointed out that am335x gpio debounce bit
needs to be 18 not 8 for all gpio instances in am33xx-l4.dtsi.
Otherwise am335x-evm won't boot.

So I'll be posting at least one more updated test branch.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-26 15:59           ` Tony Lindgren
@ 2018-09-26 16:23             ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-26 16:23 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180926 16:04]:
> * Keerthy <j-keerthy@ti.com> [180926 04:12]:
> > So the below patch is solving the problem only for the first iteration
> > but i see the problem recurring from second iteration of suspend.
> > 
> > I tried the above cycle multiple times on am437x-gp-evm. I believe
> > we are one step closer still not completely fixed.
> 
> OK thanks, that's interesting, I'll take a look. Good to hear
> that is the reason for pixcir issues though :)

Heh ooops the previous i2c-omap patch I posted does unpaired
runtime_pm calls.. The put must be left out omap_i2c_resume().

Below is a better patch, seems to work for me multiple times
now.

Regards,

Tony

8< ---------------------------
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -208,6 +208,8 @@ struct omap_i2c_dev {
 						 * if set, should be trsh+1
 						 */
 	u32			rev;
+	unsigned int		is_suspended:1;
+	unsigned int		needs_resume:1;
 	unsigned		b_hw:1;		/* bad h/w fixes */
 	unsigned		bb_valid:1;	/* true when BB-bit reflects
 						 * the I2C bus state
@@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int omap_i2c_runtime_suspend(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
 	}
 
 	pinctrl_pm_select_sleep_state(dev);
+	omap->is_suspended = true;
 
 	return 0;
 }
 
-static int omap_i2c_runtime_resume(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1535,6 +1537,51 @@ static int omap_i2c_runtime_resume(struct device *dev)
 		return 0;
 
 	__omap_i2c_init(omap);
+	omap->is_suspended = false;
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_suspend(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	/* Is device still enabled because of autosuspend? */
+	if (ddata->is_suspended)
+		return 0;
+
+	/* Paired with call in omap_i2c_resume() */
+	error = pm_runtime_put_sync_suspend(dev);
+	if (error < 0) {
+		dev_err(dev, "%s failed: %i\n", __func__, error);
+
+		return error;
+	}
+
+	ddata->needs_resume = true;
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_resume(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	if (!ddata->needs_resume)
+		return 0;
+
+	/* Paired with call in omap_i2c_suspend() */
+	error = pm_runtime_get_sync(dev);
+	if (error < 0) {
+		dev_err(dev, "%s failed: %i\n", __func__, error);
+		pm_runtime_put_noidle(dev);
+
+		return error;
+	}
+
+	ddata->needs_resume = false;
 
 	return 0;
 }
@@ -1542,18 +1589,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
 static const struct dev_pm_ops omap_i2c_pm_ops = {
 	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
 			   omap_i2c_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
 };
-#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
-#else
-#define OMAP_I2C_PM_OPS NULL
-#endif /* CONFIG_PM */
 
 static struct platform_driver omap_i2c_driver = {
 	.probe		= omap_i2c_probe,
 	.remove		= omap_i2c_remove,
 	.driver		= {
 		.name	= "omap_i2c",
-		.pm	= OMAP_I2C_PM_OPS,
+		.pm	= &omap_i2c_pm_ops,
 		.of_match_table = of_match_ptr(omap_i2c_of_match),
 	},
 };
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-26 16:23             ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-26 16:23 UTC (permalink / raw)
  To: linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180926 16:04]:
> * Keerthy <j-keerthy@ti.com> [180926 04:12]:
> > So the below patch is solving the problem only for the first iteration
> > but i see the problem recurring from second iteration of suspend.
> > 
> > I tried the above cycle multiple times on am437x-gp-evm. I believe
> > we are one step closer still not completely fixed.
> 
> OK thanks, that's interesting, I'll take a look. Good to hear
> that is the reason for pixcir issues though :)

Heh ooops the previous i2c-omap patch I posted does unpaired
runtime_pm calls.. The put must be left out omap_i2c_resume().

Below is a better patch, seems to work for me multiple times
now.

Regards,

Tony

8< ---------------------------
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -208,6 +208,8 @@ struct omap_i2c_dev {
 						 * if set, should be trsh+1
 						 */
 	u32			rev;
+	unsigned int		is_suspended:1;
+	unsigned int		needs_resume:1;
 	unsigned		b_hw:1;		/* bad h/w fixes */
 	unsigned		bb_valid:1;	/* true when BB-bit reflects
 						 * the I2C bus state
@@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int omap_i2c_runtime_suspend(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
 	}
 
 	pinctrl_pm_select_sleep_state(dev);
+	omap->is_suspended = true;
 
 	return 0;
 }
 
-static int omap_i2c_runtime_resume(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1535,6 +1537,51 @@ static int omap_i2c_runtime_resume(struct device *dev)
 		return 0;
 
 	__omap_i2c_init(omap);
+	omap->is_suspended = false;
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_suspend(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	/* Is device still enabled because of autosuspend? */
+	if (ddata->is_suspended)
+		return 0;
+
+	/* Paired with call in omap_i2c_resume() */
+	error = pm_runtime_put_sync_suspend(dev);
+	if (error < 0) {
+		dev_err(dev, "%s failed: %i\n", __func__, error);
+
+		return error;
+	}
+
+	ddata->needs_resume = true;
+
+	return 0;
+}
+
+static int __maybe_unused omap_i2c_resume(struct device *dev)
+{
+	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
+	int error;
+
+	if (!ddata->needs_resume)
+		return 0;
+
+	/* Paired with call in omap_i2c_suspend() */
+	error = pm_runtime_get_sync(dev);
+	if (error < 0) {
+		dev_err(dev, "%s failed: %i\n", __func__, error);
+		pm_runtime_put_noidle(dev);
+
+		return error;
+	}
+
+	ddata->needs_resume = false;
 
 	return 0;
 }
@@ -1542,18 +1589,15 @@ static int omap_i2c_runtime_resume(struct device *dev)
 static const struct dev_pm_ops omap_i2c_pm_ops = {
 	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
 			   omap_i2c_runtime_resume, NULL)
+	SET_SYSTEM_SLEEP_PM_OPS(omap_i2c_suspend, omap_i2c_resume)
 };
-#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
-#else
-#define OMAP_I2C_PM_OPS NULL
-#endif /* CONFIG_PM */
 
 static struct platform_driver omap_i2c_driver = {
 	.probe		= omap_i2c_probe,
 	.remove		= omap_i2c_remove,
 	.driver		= {
 		.name	= "omap_i2c",
-		.pm	= OMAP_I2C_PM_OPS,
+		.pm	= &omap_i2c_pm_ops,
 		.of_match_table = of_match_ptr(omap_i2c_of_match),
 	},
 };
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-26 16:23             ` Tony Lindgren
@ 2018-09-26 21:36               ` Grygorii Strashko
  -1 siblings, 0 replies; 66+ messages in thread
From: Grygorii Strashko @ 2018-09-26 21:36 UTC (permalink / raw)
  To: Tony Lindgren, Keerthy
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel



On 09/26/2018 11:23 AM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [180926 16:04]:
>> * Keerthy <j-keerthy@ti.com> [180926 04:12]:
>>> So the below patch is solving the problem only for the first iteration
>>> but i see the problem recurring from second iteration of suspend.
>>>
>>> I tried the above cycle multiple times on am437x-gp-evm. I believe
>>> we are one step closer still not completely fixed.
>>
>> OK thanks, that's interesting, I'll take a look. Good to hear
>> that is the reason for pixcir issues though :)
> 
> Heh ooops the previous i2c-omap patch I posted does unpaired
> runtime_pm calls.. The put must be left out omap_i2c_resume().
> 
> Below is a better patch, seems to work for me multiple times
> now.
> 
> Regards,
> 
> Tony
> 
> 8< ---------------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -208,6 +208,8 @@ struct omap_i2c_dev {
>   						 * if set, should be trsh+1
>   						 */
>   	u32			rev;
> +	unsigned int		is_suspended:1;
> +	unsigned int		needs_resume:1;
>   	unsigned		b_hw:1;		/* bad h/w fixes */
>   	unsigned		bb_valid:1;	/* true when BB-bit reflects
>   						 * the I2C bus state
> @@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>   	}
>   
>   	pinctrl_pm_select_sleep_state(dev);
> +	omap->is_suspended = true;
>   
>   	return 0;
>   }
>   
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1535,6 +1537,51 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   		return 0;
>   
>   	__omap_i2c_init(omap);
> +	omap->is_suspended = false;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	/* Is device still enabled because of autosuspend? */
> +	if (ddata->is_suspended)
> +		return 0;

Sry, but you can't do this. There is no sync between suspend and PM runtime.


> +
> +	/* Paired with call in omap_i2c_resume() */
> +	error = pm_runtime_put_sync_suspend(dev);

This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
what's the current value of usage_count.

> +	if (error < 0) {
> +		dev_err(dev, "%s failed: %i\n", __func__, error);
> +
> +		return error;
> +	}
> +
> +	ddata->needs_resume = true;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_resume(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	if (!ddata->needs_resume)
> +		return 0;
> +
> +	/* Paired with call in omap_i2c_suspend() */
> +	error = pm_runtime_get_sync(dev);
> +	if (error < 0) {
> +		dev_err(dev, "%s failed: %i\n", __func__, error);
> +		pm_runtime_put_noidle(dev);
> +
> +		return error;
> +	}
> +
> +	ddata->needs_resume = false;
>   
>   	return 0;
>   }

To make things work the pm_runtime_force_xx() have to be used, or
like with omap_device, platform/bus code have to handle device state
at suspend_no_irq stage.

1) dev A :.suspend()  - device is in active state (PM runtime)
  - .suspend_noirq() - platform/bus/pm_domain - disable device and mark for resume
  - .resume_noirq() - platform/bus/pm_domain - enable device and clear mark 
  - .resume() - device in active state

2) dev A :.suspend() device is in suspended state and nothing to do
   .suspend_noirq() - platform/bus/pm_domain - nop
   .resume_noirq() - platform/bus/pm_domain - nop
   .resume() - device in suspended state. if smth need to be done - pm_runtime_get() have to be called

3) dev A :.suspend() device is in suspended state and dev A must be prepared for suspend
   -- pm_runtime_get()
   -- prepare dev A for suspend
  - .suspend_noirq() - platform/bus/pm_domain - disable device and mark for resume
  - .resume_noirq() - platform/bus/pm_domain - enable device and clear mark 
  - .resume() - device in active state. 
   -- resume dev A
   -- pm_runtime_put()

4)  dev A :.suspend() device is in suspended state and dev A must be prepared for suspend
   -- pm_runtime_get()
   -- prepare dev A for suspend
   -- pm_runtime_put() <-- dev will not be disabled just usage usage_count sync.

  - .suspend_noirq() - platform/bus/pm_domain - disable device and mark for resume
  - .resume_noirq() - platform/bus/pm_domain - enable device and clear mark 
  - .resume() - nothing to do
  - .complete() : device_complete()->pm_runtime_put() will disable device

-- 
regards,
-grygorii

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-26 21:36               ` Grygorii Strashko
  0 siblings, 0 replies; 66+ messages in thread
From: Grygorii Strashko @ 2018-09-26 21:36 UTC (permalink / raw)
  To: linux-arm-kernel



On 09/26/2018 11:23 AM, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [180926 16:04]:
>> * Keerthy <j-keerthy@ti.com> [180926 04:12]:
>>> So the below patch is solving the problem only for the first iteration
>>> but i see the problem recurring from second iteration of suspend.
>>>
>>> I tried the above cycle multiple times on am437x-gp-evm. I believe
>>> we are one step closer still not completely fixed.
>>
>> OK thanks, that's interesting, I'll take a look. Good to hear
>> that is the reason for pixcir issues though :)
> 
> Heh ooops the previous i2c-omap patch I posted does unpaired
> runtime_pm calls.. The put must be left out omap_i2c_resume().
> 
> Below is a better patch, seems to work for me multiple times
> now.
> 
> Regards,
> 
> Tony
> 
> 8< ---------------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -208,6 +208,8 @@ struct omap_i2c_dev {
>   						 * if set, should be trsh+1
>   						 */
>   	u32			rev;
> +	unsigned int		is_suspended:1;
> +	unsigned int		needs_resume:1;
>   	unsigned		b_hw:1;		/* bad h/w fixes */
>   	unsigned		bb_valid:1;	/* true when BB-bit reflects
>   						 * the I2C bus state
> @@ -1498,8 +1500,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1521,11 +1522,12 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>   	}
>   
>   	pinctrl_pm_select_sleep_state(dev);
> +	omap->is_suspended = true;
>   
>   	return 0;
>   }
>   
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1535,6 +1537,51 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   		return 0;
>   
>   	__omap_i2c_init(omap);
> +	omap->is_suspended = false;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	/* Is device still enabled because of autosuspend? */
> +	if (ddata->is_suspended)
> +		return 0;

Sry, but you can't do this. There is no sync between suspend and PM runtime.


> +
> +	/* Paired with call in omap_i2c_resume() */
> +	error = pm_runtime_put_sync_suspend(dev);

This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
what's the current value of usage_count.

> +	if (error < 0) {
> +		dev_err(dev, "%s failed: %i\n", __func__, error);
> +
> +		return error;
> +	}
> +
> +	ddata->needs_resume = true;
> +
> +	return 0;
> +}
> +
> +static int __maybe_unused omap_i2c_resume(struct device *dev)
> +{
> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> +	int error;
> +
> +	if (!ddata->needs_resume)
> +		return 0;
> +
> +	/* Paired with call in omap_i2c_suspend() */
> +	error = pm_runtime_get_sync(dev);
> +	if (error < 0) {
> +		dev_err(dev, "%s failed: %i\n", __func__, error);
> +		pm_runtime_put_noidle(dev);
> +
> +		return error;
> +	}
> +
> +	ddata->needs_resume = false;
>   
>   	return 0;
>   }

To make things work the pm_runtime_force_xx() have to be used, or
like with omap_device, platform/bus code have to handle device state
at suspend_no_irq stage.

1) dev A :.suspend()  - device is in active state (PM runtime)
  - .suspend_noirq() - platform/bus/pm_domain - disable device and mark for resume
  - .resume_noirq() - platform/bus/pm_domain - enable device and clear mark 
  - .resume() - device in active state

2) dev A :.suspend() device is in suspended state and nothing to do
   .suspend_noirq() - platform/bus/pm_domain - nop
   .resume_noirq() - platform/bus/pm_domain - nop
   .resume() - device in suspended state. if smth need to be done - pm_runtime_get() have to be called

3) dev A :.suspend() device is in suspended state and dev A must be prepared for suspend
   -- pm_runtime_get()
   -- prepare dev A for suspend
  - .suspend_noirq() - platform/bus/pm_domain - disable device and mark for resume
  - .resume_noirq() - platform/bus/pm_domain - enable device and clear mark 
  - .resume() - device in active state. 
   -- resume dev A
   -- pm_runtime_put()

4)  dev A :.suspend() device is in suspended state and dev A must be prepared for suspend
   -- pm_runtime_get()
   -- prepare dev A for suspend
   -- pm_runtime_put() <-- dev will not be disabled just usage usage_count sync.

  - .suspend_noirq() - platform/bus/pm_domain - disable device and mark for resume
  - .resume_noirq() - platform/bus/pm_domain - enable device and clear mark 
  - .resume() - nothing to do
  - .complete() : device_complete()->pm_runtime_put() will disable device

-- 
regards,
-grygorii

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-26 21:36               ` Grygorii Strashko
@ 2018-09-26 23:31                 ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-26 23:31 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Grygorii Strashko <grygorii.strashko@ti.com> [180926 21:41]:
> On 09/26/2018 11:23 AM, Tony Lindgren wrote:
> > +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> > +{
> > +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> > +	int error;
> > +
> > +	/* Is device still enabled because of autosuspend? */
> > +	if (ddata->is_suspended)
> > +		return 0;
> 
> Sry, but you can't do this. There is no sync between suspend and PM runtime.
> 
> 
> > +
> > +	/* Paired with call in omap_i2c_resume() */
> > +	error = pm_runtime_put_sync_suspend(dev);
> 
> This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
> what's the current value of usage_count.

Hmm yeah that's a good point.

> To make things work the pm_runtime_force_xx() have to be used, or
> like with omap_device, platform/bus code have to handle device state
> at suspend_no_irq stage.

OK. So looks like the other i2c bus drivers have already solved it
with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
you're suggesting.

The following works for me, does it look OK to you?

Regards,

Tony

8< ---------------------
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1498,8 +1498,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int omap_i2c_runtime_suspend(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1525,7 +1524,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
 	return 0;
 }
 
-static int omap_i2c_runtime_resume(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1540,20 +1539,18 @@ static int omap_i2c_runtime_resume(struct device *dev)
 }
 
 static const struct dev_pm_ops omap_i2c_pm_ops = {
+	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
+				      pm_runtime_force_resume)
 	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
 			   omap_i2c_runtime_resume, NULL)
 };
-#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
-#else
-#define OMAP_I2C_PM_OPS NULL
-#endif /* CONFIG_PM */
 
 static struct platform_driver omap_i2c_driver = {
 	.probe		= omap_i2c_probe,
 	.remove		= omap_i2c_remove,
 	.driver		= {
 		.name	= "omap_i2c",
-		.pm	= OMAP_I2C_PM_OPS,
+		.pm	= &omap_i2c_pm_ops,
 		.of_match_table = of_match_ptr(omap_i2c_of_match),
 	},
 };
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-26 23:31                 ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-26 23:31 UTC (permalink / raw)
  To: linux-arm-kernel

* Grygorii Strashko <grygorii.strashko@ti.com> [180926 21:41]:
> On 09/26/2018 11:23 AM, Tony Lindgren wrote:
> > +static int __maybe_unused omap_i2c_suspend(struct device *dev)
> > +{
> > +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
> > +	int error;
> > +
> > +	/* Is device still enabled because of autosuspend? */
> > +	if (ddata->is_suspended)
> > +		return 0;
> 
> Sry, but you can't do this. There is no sync between suspend and PM runtime.
> 
> 
> > +
> > +	/* Paired with call in omap_i2c_resume() */
> > +	error = pm_runtime_put_sync_suspend(dev);
> 
> This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
> what's the current value of usage_count.

Hmm yeah that's a good point.

> To make things work the pm_runtime_force_xx() have to be used, or
> like with omap_device, platform/bus code have to handle device state
> at suspend_no_irq stage.

OK. So looks like the other i2c bus drivers have already solved it
with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
you're suggesting.

The following works for me, does it look OK to you?

Regards,

Tony

8< ---------------------
diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
--- a/drivers/i2c/busses/i2c-omap.c
+++ b/drivers/i2c/busses/i2c-omap.c
@@ -1498,8 +1498,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
 	return 0;
 }
 
-#ifdef CONFIG_PM
-static int omap_i2c_runtime_suspend(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1525,7 +1524,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
 	return 0;
 }
 
-static int omap_i2c_runtime_resume(struct device *dev)
+static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
 {
 	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
 
@@ -1540,20 +1539,18 @@ static int omap_i2c_runtime_resume(struct device *dev)
 }
 
 static const struct dev_pm_ops omap_i2c_pm_ops = {
+	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
+				      pm_runtime_force_resume)
 	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
 			   omap_i2c_runtime_resume, NULL)
 };
-#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
-#else
-#define OMAP_I2C_PM_OPS NULL
-#endif /* CONFIG_PM */
 
 static struct platform_driver omap_i2c_driver = {
 	.probe		= omap_i2c_probe,
 	.remove		= omap_i2c_remove,
 	.driver		= {
 		.name	= "omap_i2c",
-		.pm	= OMAP_I2C_PM_OPS,
+		.pm	= &omap_i2c_pm_ops,
 		.of_match_table = of_match_ptr(omap_i2c_of_match),
 	},
 };
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-26 23:31                 ` Tony Lindgren
@ 2018-09-27  4:55                   ` Keerthy
  -1 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-09-27  4:55 UTC (permalink / raw)
  To: Tony Lindgren, Grygorii Strashko
  Cc: devicetree, Dave Gerlach, Tero Kristo, Benoît Cousson,
	linux-omap, linux-arm-kernel



On Thursday 27 September 2018 05:01 AM, Tony Lindgren wrote:
> * Grygorii Strashko <grygorii.strashko@ti.com> [180926 21:41]:
>> On 09/26/2018 11:23 AM, Tony Lindgren wrote:
>>> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
>>> +{
>>> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
>>> +	int error;
>>> +
>>> +	/* Is device still enabled because of autosuspend? */
>>> +	if (ddata->is_suspended)
>>> +		return 0;
>>
>> Sry, but you can't do this. There is no sync between suspend and PM runtime.
>>
>>
>>> +
>>> +	/* Paired with call in omap_i2c_resume() */
>>> +	error = pm_runtime_put_sync_suspend(dev);
>>
>> This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
>> what's the current value of usage_count.
> 
> Hmm yeah that's a good point.
> 
>> To make things work the pm_runtime_force_xx() have to be used, or
>> like with omap_device, platform/bus code have to handle device state
>> at suspend_no_irq stage.
> 
> OK. So looks like the other i2c bus drivers have already solved it
> with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
> you're suggesting.
> 
> The following works for me, does it look OK to you?

This works pretty well with DS0 on am437x-gp-evm. Tested rtc wakeup,
wakeup using uart and touch. All of the work well.

https://pastebin.ubuntu.com/p/RJhJJKhJHX/

Also tested on beaglebone black DS0 works fine. Although there seems to
be an additional warning which was not seen before:

"l4-wkup-clkctrl:0008:0: failed to disable"

log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/

Also the above warning is present without/with this patch on [0].
No such warnings on am4 though.

[0]
https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing

Regards,
Keerthy

> 
> Regards,
> 
> Tony
> 
> 8< ---------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1498,8 +1498,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1525,7 +1524,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>  	return 0;
>  }
>  
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1540,20 +1539,18 @@ static int omap_i2c_runtime_resume(struct device *dev)
>  }
>  
>  static const struct dev_pm_ops omap_i2c_pm_ops = {
> +	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
> +				      pm_runtime_force_resume)
>  	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>  			   omap_i2c_runtime_resume, NULL)
>  };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>  
>  static struct platform_driver omap_i2c_driver = {
>  	.probe		= omap_i2c_probe,
>  	.remove		= omap_i2c_remove,
>  	.driver		= {
>  		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>  		.of_match_table = of_match_ptr(omap_i2c_of_match),
>  	},
>  };
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-27  4:55                   ` Keerthy
  0 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-09-27  4:55 UTC (permalink / raw)
  To: linux-arm-kernel



On Thursday 27 September 2018 05:01 AM, Tony Lindgren wrote:
> * Grygorii Strashko <grygorii.strashko@ti.com> [180926 21:41]:
>> On 09/26/2018 11:23 AM, Tony Lindgren wrote:
>>> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
>>> +{
>>> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
>>> +	int error;
>>> +
>>> +	/* Is device still enabled because of autosuspend? */
>>> +	if (ddata->is_suspended)
>>> +		return 0;
>>
>> Sry, but you can't do this. There is no sync between suspend and PM runtime.
>>
>>
>>> +
>>> +	/* Paired with call in omap_i2c_resume() */
>>> +	error = pm_runtime_put_sync_suspend(dev);
>>
>> This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
>> what's the current value of usage_count.
> 
> Hmm yeah that's a good point.
> 
>> To make things work the pm_runtime_force_xx() have to be used, or
>> like with omap_device, platform/bus code have to handle device state
>> at suspend_no_irq stage.
> 
> OK. So looks like the other i2c bus drivers have already solved it
> with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
> you're suggesting.
> 
> The following works for me, does it look OK to you?

This works pretty well with DS0 on am437x-gp-evm. Tested rtc wakeup,
wakeup using uart and touch. All of the work well.

https://pastebin.ubuntu.com/p/RJhJJKhJHX/

Also tested on beaglebone black DS0 works fine. Although there seems to
be an additional warning which was not seen before:

"l4-wkup-clkctrl:0008:0: failed to disable"

log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/

Also the above warning is present without/with this patch on [0].
No such warnings on am4 though.

[0]
https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing

Regards,
Keerthy

> 
> Regards,
> 
> Tony
> 
> 8< ---------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1498,8 +1498,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1525,7 +1524,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>  	return 0;
>  }
>  
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>  {
>  	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>  
> @@ -1540,20 +1539,18 @@ static int omap_i2c_runtime_resume(struct device *dev)
>  }
>  
>  static const struct dev_pm_ops omap_i2c_pm_ops = {
> +	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
> +				      pm_runtime_force_resume)
>  	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>  			   omap_i2c_runtime_resume, NULL)
>  };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>  
>  static struct platform_driver omap_i2c_driver = {
>  	.probe		= omap_i2c_probe,
>  	.remove		= omap_i2c_remove,
>  	.driver		= {
>  		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>  		.of_match_table = of_match_ptr(omap_i2c_of_match),
>  	},
>  };
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-27  4:55                   ` Keerthy
@ 2018-09-27 14:53                     ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 14:53 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Grygorii Strashko, Dave Gerlach, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180927 05:00]:
> On Thursday 27 September 2018 05:01 AM, Tony Lindgren wrote:
> > The following works for me, does it look OK to you?
> 
> This works pretty well with DS0 on am437x-gp-evm. Tested rtc wakeup,
> wakeup using uart and touch. All of the work well.
> 
> https://pastebin.ubuntu.com/p/RJhJJKhJHX/

OK good to hear and thanks for testing again.

> Also tested on beaglebone black DS0 works fine. Although there seems to
> be an additional warning which was not seen before:
> 
> "l4-wkup-clkctrl:0008:0: failed to disable"
> 
> log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/
> 
> Also the above warning is present without/with this patch on [0].
> No such warnings on am4 though.

OK. For am335x I'll post an updated version of the am335x
changes to fix the gpio dbck offset.

Regards,

Tony

> [0]
> https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-27 14:53                     ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 14:53 UTC (permalink / raw)
  To: linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180927 05:00]:
> On Thursday 27 September 2018 05:01 AM, Tony Lindgren wrote:
> > The following works for me, does it look OK to you?
> 
> This works pretty well with DS0 on am437x-gp-evm. Tested rtc wakeup,
> wakeup using uart and touch. All of the work well.
> 
> https://pastebin.ubuntu.com/p/RJhJJKhJHX/

OK good to hear and thanks for testing again.

> Also tested on beaglebone black DS0 works fine. Although there seems to
> be an additional warning which was not seen before:
> 
> "l4-wkup-clkctrl:0008:0: failed to disable"
> 
> log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/
> 
> Also the above warning is present without/with this patch on [0].
> No such warnings on am4 though.

OK. For am335x I'll post an updated version of the am335x
changes to fix the gpio dbck offset.

Regards,

Tony

> [0]
> https://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git/log/?h=omap-for-v4.20/dt-ti-sysc-tmp-testing

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 3/4] ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
  2018-09-25  0:05   ` Tony Lindgren
@ 2018-09-27 14:56     ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 14:56 UTC (permalink / raw)
  To: linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180925 00:10]:
> Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
> hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
> for l4 interconnect instances with the related ti-sysc interconnect
> module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.
...

> --- /dev/null
> +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
...

> +		target-module@7000 {			/* 0x44e07000, ap 14 20.0 */
> +			compatible = "ti,sysc-omap2", "ti,sysc";
> +			ti,hwmods = "gpio1";
> +			reg = <0x7000 0x4>,
> +			      <0x7010 0x4>,
> +			      <0x7114 0x4>;
> +			reg-names = "rev", "sysc", "syss";
> +			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
> +					 SYSC_OMAP2_SOFTRESET |
> +					 SYSC_OMAP2_AUTOIDLE)>;
> +			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>,
> +					<SYSC_IDLE_SMART>,
> +					<SYSC_IDLE_SMART_WKUP>;
> +			ti,syss-mask = <1>;
> +			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
> +			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>,
> +				 <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 8>;
> +			clock-names = "fck", "dbclk";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges = <0x0 0x7000 0x1000>;
> +		};

The debounce clock for gpio instances on am335x is 18, not 8 like
on the other SoCs as pointed out by Grygorii. Updated patch below
with the offsets fixed.

Regards,

Tony

8< ------------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Mon, 24 Sep 2018 16:20:37 -0700
Subject: [PATCH] ARM: dts: am335x: Add l4 interconnect hierarchy and
 ti-sysc data

Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
for l4 interconnect instances with the related ti-sysc interconnect
module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.

Using ti-sysc driver binding allows us to start dropping legacy platform
data in arch/arm/mach-omap2/omap*hwmod*data.c files later on in favor of
ti-sysc dts data.

This data is generated based on platform data from a booted system
and the interconnect acces protection registers for ranges. To avoid
regressions, we initially validate the device tree provided data
against the existing platform data on boot.

Note that we cannot yet include this file from the SoC dtsi file until
the child devices are moved to their proper locations in the
interconnect hierarchy in the following patch. Otherwise we would have
the each module probed twice.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 1543 ++++++++++++++++++++++++++++++
 1 file changed, 1543 insertions(+)
 create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
new file mode 100644
--- /dev/null
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -0,0 +1,1543 @@
+&l4_wkup {						/* 0x44c00000 */
+	compatible = "ti,am33xx-l4-wkup", "simple-bus";
+	reg = <0x44c00000 0x800>,
+	      <0x44c00800 0x800>,
+	      <0x44c01000 0x400>,
+	      <0x44c01400 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x44c00000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x44d00000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x44e00000 0x100000>;	/* segment 2 */
+
+	segment@0 {					/* 0x44c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>;	/* ap 3 */
+	};
+
+	segment@100000 {					/* 0x44d00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00100000 0x004000>,	/* ap 4 */
+			 <0x00004000 0x00104000 0x001000>,	/* ap 5 */
+			 <0x00080000 0x00180000 0x002000>,	/* ap 6 */
+			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
+
+		target-module@0 {			/* 0x44d00000, ap 4 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x4000>;
+		};
+
+		target-module@80000 {			/* 0x44d80000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x2000>;
+		};
+	};
+
+	segment@200000 {					/* 0x44e00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00200000 0x002000>,	/* ap 8 */
+			 <0x00002000 0x00202000 0x001000>,	/* ap 9 */
+			 <0x00003000 0x00203000 0x001000>,	/* ap 10 */
+			 <0x00004000 0x00204000 0x001000>,	/* ap 11 */
+			 <0x00005000 0x00205000 0x001000>,	/* ap 12 */
+			 <0x00006000 0x00206000 0x001000>,	/* ap 13 */
+			 <0x00007000 0x00207000 0x001000>,	/* ap 14 */
+			 <0x00008000 0x00208000 0x001000>,	/* ap 15 */
+			 <0x00009000 0x00209000 0x001000>,	/* ap 16 */
+			 <0x0000a000 0x0020a000 0x001000>,	/* ap 17 */
+			 <0x0000b000 0x0020b000 0x001000>,	/* ap 18 */
+			 <0x0000c000 0x0020c000 0x001000>,	/* ap 19 */
+			 <0x0000d000 0x0020d000 0x001000>,	/* ap 20 */
+			 <0x0000f000 0x0020f000 0x001000>,	/* ap 21 */
+			 <0x00010000 0x00210000 0x010000>,	/* ap 22 */
+			 <0x00020000 0x00220000 0x010000>,	/* ap 23 */
+			 <0x00030000 0x00230000 0x001000>,	/* ap 24 */
+			 <0x00031000 0x00231000 0x001000>,	/* ap 25 */
+			 <0x00032000 0x00232000 0x001000>,	/* ap 26 */
+			 <0x00033000 0x00233000 0x001000>,	/* ap 27 */
+			 <0x00034000 0x00234000 0x001000>,	/* ap 28 */
+			 <0x00035000 0x00235000 0x001000>,	/* ap 29 */
+			 <0x00036000 0x00236000 0x001000>,	/* ap 30 */
+			 <0x00037000 0x00237000 0x001000>,	/* ap 31 */
+			 <0x00038000 0x00238000 0x001000>,	/* ap 32 */
+			 <0x00039000 0x00239000 0x001000>,	/* ap 33 */
+			 <0x0003a000 0x0023a000 0x001000>,	/* ap 34 */
+			 <0x0003e000 0x0023e000 0x001000>,	/* ap 35 */
+			 <0x0003f000 0x0023f000 0x001000>,	/* ap 36 */
+			 <0x0000e000 0x0020e000 0x001000>,	/* ap 37 */
+			 <0x00040000 0x00240000 0x040000>,	/* ap 38 */
+			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
+
+		target-module@0 {			/* 0x44e00000, ap 8 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x2000>;
+		};
+
+		target-module@3000 {			/* 0x44e03000, ap 10 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+
+		target-module@5000 {			/* 0x44e05000, ap 12 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x5000 0x1000>;
+		};
+
+		target-module@7000 {			/* 0x44e07000, ap 14 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio1";
+			reg = <0x7000 0x4>,
+			      <0x7010 0x4>,
+			      <0x7114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>,
+				 <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x7000 0x1000>;
+		};
+
+		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart1";
+			reg = <0x9050 0x4>,
+			      <0x9054 0x4>,
+			      <0x9058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_UART1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9000 0x1000>;
+		};
+
+		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c1";
+			reg = <0xb000 0x8>,
+			      <0xb010 0x8>,
+			      <0xb090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_I2C1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb000 0x1000>;
+		};
+
+		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "adc_tsc";
+			reg = <0xd000 0x4>,
+			      <0xd010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_ADC_TSC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x0000d000 0x00001000>,
+				 <0x00001000 0x0000e000 0x00001000>;
+		};
+
+		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00010000 0x00010000>,
+				 <0x00010000 0x00020000 0x00010000>;
+		};
+
+		target-module@31000 {			/* 0x44e31000, ap 25 40.0 */
+			compatible = "ti,sysc-omap2-timer", "ti,sysc";
+			ti,hwmods = "timer1";
+			reg = <0x31000 0x4>,
+			      <0x31010 0x4>,
+			      <0x31014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x31000 0x1000>;
+		};
+
+		target-module@33000 {			/* 0x44e33000, ap 27 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x33000 0x1000>;
+		};
+
+		target-module@35000 {			/* 0x44e35000, ap 29 50.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "wd_timer2";
+			reg = <0x35000 0x4>,
+			      <0x35010 0x4>,
+			      <0x35014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
+					 SYSC_OMAP2_SOFTRESET)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_WD_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x35000 0x1000>;
+		};
+
+		target-module@37000 {			/* 0x44e37000, ap 31 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x37000 0x1000>;
+		};
+
+		target-module@39000 {			/* 0x44e39000, ap 33 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x39000 0x1000>;
+		};
+
+		target-module@3e000 {			/* 0x44e3e000, ap 35 60.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "rtc";
+			reg = <0x3e074 0x4>,
+			      <0x3e078 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
+			clocks = <&l4_rtc_clkctrl AM3_L4_RTC_RTC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module@40000 {			/* 0x44e40000, ap 38 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x40000>;
+		};
+	};
+};
+
+&l4_fw {						/* 0x47c00000 */
+	compatible = "ti,am33xx-l4-fw", "simple-bus";
+	reg = <0x47c00000 0x800>,
+	      <0x47c00800 0x800>,
+	      <0x47c01000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x47c00000 0x1000000>;	/* segment 0 */
+
+	segment@0 {					/* 0x47c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x0000c000 0x0000c000 0x001000>,	/* ap 3 */
+			 <0x0000d000 0x0000d000 0x001000>,	/* ap 4 */
+			 <0x0000e000 0x0000e000 0x001000>,	/* ap 5 */
+			 <0x0000f000 0x0000f000 0x001000>,	/* ap 6 */
+			 <0x00010000 0x00010000 0x001000>,	/* ap 7 */
+			 <0x00011000 0x00011000 0x001000>,	/* ap 8 */
+			 <0x0001a000 0x0001a000 0x001000>,	/* ap 9 */
+			 <0x0001b000 0x0001b000 0x001000>,	/* ap 10 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 11 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 12 */
+			 <0x00026000 0x00026000 0x001000>,	/* ap 13 */
+			 <0x00027000 0x00027000 0x001000>,	/* ap 14 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 15 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 16 */
+			 <0x00038000 0x00038000 0x001000>,	/* ap 17 */
+			 <0x00039000 0x00039000 0x001000>,	/* ap 18 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 19 */
+			 <0x0003b000 0x0003b000 0x001000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x0003f000 0x0003f000 0x001000>,	/* ap 22 */
+			 <0x0003c000 0x0003c000 0x001000>,	/* ap 23 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 24 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 25 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 26 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 27 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 28 */
+			 <0x00028000 0x00028000 0x001000>,	/* ap 29 */
+			 <0x00029000 0x00029000 0x001000>,	/* ap 30 */
+			 <0x00032000 0x00032000 0x001000>,	/* ap 31 */
+			 <0x00033000 0x00033000 0x001000>,	/* ap 32 */
+			 <0x0003d000 0x0003d000 0x001000>,	/* ap 33 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 34 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 35 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 36 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 37 */
+			 <0x00015000 0x00015000 0x001000>;	/* ap 38 */
+
+		target-module@c000 {			/* 0x47c0c000, ap 3 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc000 0x1000>;
+		};
+
+		target-module@e000 {			/* 0x47c0e000, ap 5 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module@10000 {			/* 0x47c10000, ap 7 20.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x1000>;
+		};
+
+		target-module@14000 {			/* 0x47c14000, ap 37 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module@1a000 {			/* 0x47c1a000, ap 9 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x1a000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x47c24000, ap 11 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module@26000 {			/* 0x47c26000, ap 13 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x26000 0x1000>;
+		};
+
+		target-module@28000 {			/* 0x47c28000, ap 29 40.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x28000 0x1000>;
+		};
+
+		target-module@30000 {			/* 0x47c30000, ap 15 14.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module@32000 {			/* 0x47c32000, ap 31 06.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x32000 0x1000>;
+		};
+
+		target-module@38000 {			/* 0x47c38000, ap 17 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x1000>;
+		};
+
+		target-module@3a000 {			/* 0x47c3a000, ap 19 1c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3a000 0x1000>;
+		};
+
+		target-module@3c000 {			/* 0x47c3c000, ap 23 38.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x1000>;
+		};
+
+		target-module@3e000 {			/* 0x47c3e000, ap 21 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module@40000 {			/* 0x47c40000, ap 24 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module@42000 {			/* 0x47c42000, ap 35 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module@44000 {			/* 0x47c44000, ap 27 24.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module@46000 {			/* 0x47c46000, ap 25 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+	};
+};
+
+&l4_fast {					/* 0x4a000000 */
+	compatible = "ti,am33xx-l4-fast", "simple-bus";
+	reg = <0x4a000000 0x800>,
+	      <0x4a000800 0x800>,
+	      <0x4a001000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4a000000 0x1000000>;	/* segment 0 */
+
+	segment@0 {					/* 0x4a000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00100000 0x00100000 0x008000>,	/* ap 3 */
+			 <0x00108000 0x00108000 0x001000>,	/* ap 4 */
+			 <0x00180000 0x00180000 0x020000>,	/* ap 5 */
+			 <0x001a0000 0x001a0000 0x001000>,	/* ap 6 */
+			 <0x00200000 0x00200000 0x080000>,	/* ap 7 */
+			 <0x00280000 0x00280000 0x001000>,	/* ap 8 */
+			 <0x00300000 0x00300000 0x080000>,	/* ap 9 */
+			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
+
+		target-module@100000 {			/* 0x4a100000, ap 3 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x100000 0x8000>;
+		};
+
+		target-module@180000 {			/* 0x4a180000, ap 5 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x180000 0x20000>;
+		};
+
+		target-module@200000 {			/* 0x4a200000, ap 7 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x200000 0x80000>;
+		};
+
+		target-module@300000 {			/* 0x4a300000, ap 9 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x300000 0x80000>;
+		};
+	};
+};
+
+&l4_mpuss {						/* 0x4b140000 */
+	compatible = "ti,am33xx-l4-mpuss", "simple-bus";
+	reg = <0x4b144400 0x100>,
+	      <0x4b144800 0x400>;
+	reg-names = "la", "ap";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4b140000 0x008000>;	/* segment 0 */
+
+	segment@0 {					/* 0x4b140000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00004800 0x00004800 0x000400>,	/* ap 0 */
+			 <0x00001000 0x00001000 0x001000>,	/* ap 1 */
+			 <0x00002000 0x00002000 0x001000>,	/* ap 2 */
+			 <0x00004000 0x00004000 0x000400>,	/* ap 3 */
+			 <0x00005000 0x00005000 0x000400>,	/* ap 4 */
+			 <0x00000000 0x00000000 0x001000>,	/* ap 5 */
+			 <0x00003000 0x00003000 0x001000>,	/* ap 6 */
+			 <0x00000800 0x00000800 0x000800>;	/* ap 7 */
+
+		target-module@0 {			/* 0x4b140000, ap 5 02.2 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00000000 0x00001000>,
+				 <0x00001000 0x00001000 0x00001000>,
+				 <0x00002000 0x00002000 0x00001000>;
+		};
+
+		target-module@3000 {			/* 0x4b143000, ap 6 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+	};
+};
+
+&l4_per {						/* 0x48000000 */
+	compatible = "ti,am33xx-l4-per", "simple-bus";
+	reg = <0x48000000 0x800>,
+	      <0x48000800 0x800>,
+	      <0x48001000 0x400>,
+	      <0x48001400 0x400>,
+	      <0x48001800 0x400>,
+	      <0x48001c00 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
+		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+
+	segment@0 {					/* 0x48000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
+			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
+			 <0x00001c00 0x00001c00 0x000400>,	/* ap 5 */
+			 <0x00008000 0x00008000 0x001000>,	/* ap 6 */
+			 <0x00009000 0x00009000 0x001000>,	/* ap 7 */
+			 <0x00016000 0x00016000 0x001000>,	/* ap 8 */
+			 <0x00017000 0x00017000 0x001000>,	/* ap 9 */
+			 <0x00022000 0x00022000 0x001000>,	/* ap 10 */
+			 <0x00023000 0x00023000 0x001000>,	/* ap 11 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 12 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 13 */
+			 <0x0002a000 0x0002a000 0x001000>,	/* ap 14 */
+			 <0x0002b000 0x0002b000 0x001000>,	/* ap 15 */
+			 <0x00038000 0x00038000 0x002000>,	/* ap 16 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 17 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 18 */
+			 <0x00015000 0x00015000 0x001000>,	/* ap 19 */
+			 <0x0003c000 0x0003c000 0x002000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 22 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 23 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 24 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 25 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 26 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 27 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 28 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 29 */
+			 <0x00048000 0x00048000 0x001000>,	/* ap 30 */
+			 <0x00049000 0x00049000 0x001000>,	/* ap 31 */
+			 <0x0004c000 0x0004c000 0x001000>,	/* ap 32 */
+			 <0x0004d000 0x0004d000 0x001000>,	/* ap 33 */
+			 <0x00050000 0x00050000 0x002000>,	/* ap 34 */
+			 <0x00052000 0x00052000 0x001000>,	/* ap 35 */
+			 <0x00060000 0x00060000 0x001000>,	/* ap 36 */
+			 <0x00061000 0x00061000 0x001000>,	/* ap 37 */
+			 <0x00080000 0x00080000 0x010000>,	/* ap 38 */
+			 <0x00090000 0x00090000 0x001000>,	/* ap 39 */
+			 <0x000a0000 0x000a0000 0x010000>,	/* ap 40 */
+			 <0x000b0000 0x000b0000 0x001000>,	/* ap 41 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 77 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 78 */
+			 <0x0004a000 0x0004a000 0x001000>,	/* ap 85 */
+			 <0x0004b000 0x0004b000 0x001000>,	/* ap 86 */
+			 <0x000c8000 0x000c8000 0x001000>,	/* ap 87 */
+			 <0x000c9000 0x000c9000 0x001000>,	/* ap 88 */
+			 <0x000cc000 0x000cc000 0x001000>,	/* ap 89 */
+			 <0x000cd000 0x000cd000 0x001000>,	/* ap 90 */
+			 <0x000ca000 0x000ca000 0x001000>,	/* ap 91 */
+			 <0x000cb000 0x000cb000 0x001000>;	/* ap 92 */
+
+		target-module@8000 {			/* 0x48008000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module@14000 {			/* 0x48014000, ap 18 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module@16000 {			/* 0x48016000, ap 8 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x16000 0x1000>;
+		};
+
+		target-module@22000 {			/* 0x48022000, ap 10 12.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart2";
+			reg = <0x22050 0x4>,
+			      <0x22054 0x4>,
+			      <0x22058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x48024000, ap 12 14.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart3";
+			reg = <0x24050 0x4>,
+			      <0x24054 0x4>,
+			      <0x24058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module@2a000 {			/* 0x4802a000, ap 14 2a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c2";
+			reg = <0x2a000 0x8>,
+			      <0x2a010 0x8>,
+			      <0x2a090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2a000 0x1000>;
+		};
+
+		target-module@30000 {			/* 0x48030000, ap 77 08.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi0";
+			reg = <0x30000 0x4>,
+			      <0x30110 0x4>,
+			      <0x30114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module@38000 {			/* 0x48038000, ap 16 02.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp0";
+			reg = <0x38000 0x4>,
+			      <0x38004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x2000>;
+		};
+
+		target-module@3c000 {			/* 0x4803c000, ap 20 32.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp1";
+			reg = <0x3c000 0x4>,
+			      <0x3c004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x2000>;
+		};
+
+		target-module@40000 {			/* 0x48040000, ap 22 1e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer2";
+			reg = <0x40000 0x4>,
+			      <0x40010 0x4>,
+			      <0x40014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module@42000 {			/* 0x48042000, ap 24 1c.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer3";
+			reg = <0x42000 0x4>,
+			      <0x42010 0x4>,
+			      <0x42014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module@44000 {			/* 0x48044000, ap 26 26.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer4";
+			reg = <0x44000 0x4>,
+			      <0x44010 0x4>,
+			      <0x44014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module@46000 {			/* 0x48046000, ap 28 28.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer5";
+			reg = <0x46000 0x4>,
+			      <0x46010 0x4>,
+			      <0x46014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+
+		target-module@48000 {			/* 0x48048000, ap 30 22.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer6";
+			reg = <0x48000 0x4>,
+			      <0x48010 0x4>,
+			      <0x48014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x48000 0x1000>;
+		};
+
+		target-module@4a000 {			/* 0x4804a000, ap 85 60.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer7";
+			reg = <0x4a000 0x4>,
+			      <0x4a010 0x4>,
+			      <0x4a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER7_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4a000 0x1000>;
+		};
+
+		target-module@4c000 {			/* 0x4804c000, ap 32 36.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio2";
+			reg = <0x4c000 0x4>,
+			      <0x4c010 0x4>,
+			      <0x4c114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x1000>;
+		};
+
+		target-module@50000 {			/* 0x48050000, ap 34 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x50000 0x2000>;
+		};
+
+		target-module@60000 {			/* 0x48060000, ap 36 0c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc1";
+			reg = <0x602fc 0x4>,
+			      <0x60110 0x4>,
+			      <0x60114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x60000 0x1000>;
+		};
+
+		target-module@80000 {			/* 0x48080000, ap 38 18.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "elm";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>,
+			      <0x80014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_ELM_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x10000>;
+		};
+
+		target-module@a0000 {			/* 0x480a0000, ap 40 5e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x10000>;
+		};
+
+		target-module@c8000 {			/* 0x480c8000, ap 87 06.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "mailbox";
+			reg = <0xc8000 0x4>,
+			      <0xc8010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MAILBOX_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc8000 0x1000>;
+		};
+
+		target-module@ca000 {			/* 0x480ca000, ap 91 40.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spinlock";
+			reg = <0xca000 0x4>,
+			      <0xca010 0x4>,
+			      <0xca014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPINLOCK_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xca000 0x1000>;
+		};
+
+		target-module@cc000 {			/* 0x480cc000, ap 89 0e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x1000>;
+		};
+	};
+
+	segment@100000 {					/* 0x48100000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0008c000 0x0018c000 0x001000>,	/* ap 42 */
+			 <0x0008d000 0x0018d000 0x001000>,	/* ap 43 */
+			 <0x0008e000 0x0018e000 0x001000>,	/* ap 44 */
+			 <0x0008f000 0x0018f000 0x001000>,	/* ap 45 */
+			 <0x0009c000 0x0019c000 0x001000>,	/* ap 46 */
+			 <0x0009d000 0x0019d000 0x001000>,	/* ap 47 */
+			 <0x000a6000 0x001a6000 0x001000>,	/* ap 48 */
+			 <0x000a7000 0x001a7000 0x001000>,	/* ap 49 */
+			 <0x000a8000 0x001a8000 0x001000>,	/* ap 50 */
+			 <0x000a9000 0x001a9000 0x001000>,	/* ap 51 */
+			 <0x000aa000 0x001aa000 0x001000>,	/* ap 52 */
+			 <0x000ab000 0x001ab000 0x001000>,	/* ap 53 */
+			 <0x000ac000 0x001ac000 0x001000>,	/* ap 54 */
+			 <0x000ad000 0x001ad000 0x001000>,	/* ap 55 */
+			 <0x000ae000 0x001ae000 0x001000>,	/* ap 56 */
+			 <0x000af000 0x001af000 0x001000>,	/* ap 57 */
+			 <0x000b0000 0x001b0000 0x010000>,	/* ap 58 */
+			 <0x000c0000 0x001c0000 0x001000>,	/* ap 59 */
+			 <0x000cc000 0x001cc000 0x002000>,	/* ap 60 */
+			 <0x000ce000 0x001ce000 0x002000>,	/* ap 61 */
+			 <0x000d0000 0x001d0000 0x002000>,	/* ap 62 */
+			 <0x000d2000 0x001d2000 0x002000>,	/* ap 63 */
+			 <0x000d8000 0x001d8000 0x001000>,	/* ap 64 */
+			 <0x000d9000 0x001d9000 0x001000>,	/* ap 65 */
+			 <0x000a0000 0x001a0000 0x001000>,	/* ap 79 */
+			 <0x000a1000 0x001a1000 0x001000>,	/* ap 80 */
+			 <0x000a2000 0x001a2000 0x001000>,	/* ap 81 */
+			 <0x000a3000 0x001a3000 0x001000>,	/* ap 82 */
+			 <0x000a4000 0x001a4000 0x001000>,	/* ap 83 */
+			 <0x000a5000 0x001a5000 0x001000>;	/* ap 84 */
+
+		target-module@8c000 {			/* 0x4818c000, ap 42 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8c000 0x1000>;
+		};
+
+		target-module@8e000 {			/* 0x4818e000, ap 44 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8e000 0x1000>;
+		};
+
+		target-module@9c000 {			/* 0x4819c000, ap 46 5a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c3";
+			reg = <0x9c000 0x8>,
+			      <0x9c010 0x8>,
+			      <0x9c090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9c000 0x1000>;
+		};
+
+		target-module@a0000 {			/* 0x481a0000, ap 79 24.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi1";
+			reg = <0xa0000 0x4>,
+			      <0xa0110 0x4>,
+			      <0xa0114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x1000>;
+		};
+
+		target-module@a2000 {			/* 0x481a2000, ap 81 2e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa2000 0x1000>;
+		};
+
+		target-module@a4000 {			/* 0x481a4000, ap 83 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa4000 0x1000>;
+		};
+
+		target-module@a6000 {			/* 0x481a6000, ap 48 16.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart4";
+			reg = <0xa6050 0x4>,
+			      <0xa6054 0x4>,
+			      <0xa6058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa6000 0x1000>;
+		};
+
+		target-module@a8000 {			/* 0x481a8000, ap 50 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart5";
+			reg = <0xa8050 0x4>,
+			      <0xa8054 0x4>,
+			      <0xa8058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x1000>;
+		};
+
+		target-module@aa000 {			/* 0x481aa000, ap 52 1a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart6";
+			reg = <0xaa050 0x4>,
+			      <0xaa054 0x4>,
+			      <0xaa058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xaa000 0x1000>;
+		};
+
+		target-module@ac000 {			/* 0x481ac000, ap 54 38.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio3";
+			reg = <0xac000 0x4>,
+			      <0xac010 0x4>,
+			      <0xac114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xac000 0x1000>;
+		};
+
+		target-module@ae000 {			/* 0x481ae000, ap 56 3a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio4";
+			reg = <0xae000 0x4>,
+			      <0xae010 0x4>,
+			      <0xae114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xae000 0x1000>;
+		};
+
+		target-module@b0000 {			/* 0x481b0000, ap 58 50.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb0000 0x10000>;
+		};
+
+		target-module@cc000 {			/* 0x481cc000, ap 60 46.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x2000>;
+		};
+
+		target-module@d0000 {			/* 0x481d0000, ap 62 42.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd0000 0x2000>;
+		};
+
+		target-module@d8000 {			/* 0x481d8000, ap 64 66.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc2";
+			reg = <0xd82fc 0x4>,
+			      <0xd8110 0x4>,
+			      <0xd8114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd8000 0x1000>;
+		};
+	};
+
+	segment@200000 {					/* 0x48200000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	segment@300000 {					/* 0x48300000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00300000 0x001000>,	/* ap 66 */
+			 <0x00001000 0x00301000 0x001000>,	/* ap 67 */
+			 <0x00002000 0x00302000 0x001000>,	/* ap 68 */
+			 <0x00003000 0x00303000 0x001000>,	/* ap 69 */
+			 <0x00004000 0x00304000 0x001000>,	/* ap 70 */
+			 <0x00005000 0x00305000 0x001000>,	/* ap 71 */
+			 <0x0000e000 0x0030e000 0x001000>,	/* ap 72 */
+			 <0x0000f000 0x0030f000 0x001000>,	/* ap 73 */
+			 <0x00018000 0x00318000 0x004000>,	/* ap 74 */
+			 <0x0001c000 0x0031c000 0x001000>,	/* ap 75 */
+			 <0x00010000 0x00310000 0x002000>,	/* ap 76 */
+			 <0x00012000 0x00312000 0x001000>,	/* ap 93 */
+			 <0x00015000 0x00315000 0x001000>,	/* ap 94 */
+			 <0x00016000 0x00316000 0x001000>,	/* ap 95 */
+			 <0x00017000 0x00317000 0x001000>,	/* ap 96 */
+			 <0x00013000 0x00313000 0x001000>,	/* ap 97 */
+			 <0x00014000 0x00314000 0x001000>,	/* ap 98 */
+			 <0x00020000 0x00320000 0x001000>,	/* ap 99 */
+			 <0x00021000 0x00321000 0x001000>,	/* ap 100 */
+			 <0x00022000 0x00322000 0x001000>,	/* ap 101 */
+			 <0x00023000 0x00323000 0x001000>,	/* ap 102 */
+			 <0x00024000 0x00324000 0x001000>,	/* ap 103 */
+			 <0x00025000 0x00325000 0x001000>;	/* ap 104 */
+
+		target-module@0 {			/* 0x48300000, ap 66 48.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss0";
+			reg = <0x0 0x4>,
+			      <0x4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x1000>;
+		};
+
+		target-module@2000 {			/* 0x48302000, ap 68 52.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss1";
+			reg = <0x2000 0x4>,
+			      <0x2004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2000 0x1000>;
+		};
+
+		target-module@4000 {			/* 0x48304000, ap 70 44.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss2";
+			reg = <0x4000 0x4>,
+			      <0x4004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4000 0x1000>;
+		};
+
+		target-module@e000 {			/* 0x4830e000, ap 72 4a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "lcdc";
+			reg = <0xe000 0x4>,
+			      <0xe054 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle ;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, lcdc_clkdm */
+			clocks = <&lcdc_clkctrl AM3_LCDC_LCDC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module@10000 {			/* 0x48310000, ap 76 4e.1 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "rng";
+			reg = <0x11fe0 0x4>,
+			      <0x11fe4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_RNG_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x2000>;
+		};
+
+		target-module@13000 {			/* 0x48313000, ap 97 62.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x13000 0x1000>;
+		};
+
+		target-module@15000 {			/* 0x48315000, ap 94 56.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00015000 0x00001000>,
+				 <0x00001000 0x00016000 0x00001000>;
+		};
+
+		target-module@18000 {			/* 0x48318000, ap 74 4c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x18000 0x4000>;
+		};
+
+		target-module@20000 {			/* 0x48320000, ap 99 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20000 0x1000>;
+		};
+
+		target-module@22000 {			/* 0x48322000, ap 101 3e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module@24000 {			/* 0x48324000, ap 103 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+	};
+};
+
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 3/4] ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data
@ 2018-09-27 14:56     ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 14:56 UTC (permalink / raw)
  To: linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180925 00:10]:
> Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
> hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
> for l4 interconnect instances with the related ti-sysc interconnect
> module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.
...

> --- /dev/null
> +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
...

> +		target-module at 7000 {			/* 0x44e07000, ap 14 20.0 */
> +			compatible = "ti,sysc-omap2", "ti,sysc";
> +			ti,hwmods = "gpio1";
> +			reg = <0x7000 0x4>,
> +			      <0x7010 0x4>,
> +			      <0x7114 0x4>;
> +			reg-names = "rev", "sysc", "syss";
> +			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
> +					 SYSC_OMAP2_SOFTRESET |
> +					 SYSC_OMAP2_AUTOIDLE)>;
> +			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>,
> +					<SYSC_IDLE_SMART>,
> +					<SYSC_IDLE_SMART_WKUP>;
> +			ti,syss-mask = <1>;
> +			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
> +			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>,
> +				 <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 8>;
> +			clock-names = "fck", "dbclk";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges = <0x0 0x7000 0x1000>;
> +		};

The debounce clock for gpio instances on am335x is 18, not 8 like
on the other SoCs as pointed out by Grygorii. Updated patch below
with the offsets fixed.

Regards,

Tony

8< ------------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Mon, 24 Sep 2018 16:20:37 -0700
Subject: [PATCH] ARM: dts: am335x: Add l4 interconnect hierarchy and
 ti-sysc data

Similar to commit 8f42cb7f64c7 ("ARM: dts: omap4: Add l4 interconnect
hierarchy and ti-sysc data"), let's add proper interconnect hierarchy
for l4 interconnect instances with the related ti-sysc interconnect
module data as in Documentation/devicetree/bindings/bus/ti-sysc.txt.

Using ti-sysc driver binding allows us to start dropping legacy platform
data in arch/arm/mach-omap2/omap*hwmod*data.c files later on in favor of
ti-sysc dts data.

This data is generated based on platform data from a booted system
and the interconnect acces protection registers for ranges. To avoid
regressions, we initially validate the device tree provided data
against the existing platform data on boot.

Note that we cannot yet include this file from the SoC dtsi file until
the child devices are moved to their proper locations in the
interconnect hierarchy in the following patch. Otherwise we would have
the each module probed twice.

Cc: Dave Gerlach <d-gerlach@ti.com>
Cc: Keerthy <j-keerthy@ti.com>
Cc: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 1543 ++++++++++++++++++++++++++++++
 1 file changed, 1543 insertions(+)
 create mode 100644 arch/arm/boot/dts/am33xx-l4.dtsi

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
new file mode 100644
--- /dev/null
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -0,0 +1,1543 @@
+&l4_wkup {						/* 0x44c00000 */
+	compatible = "ti,am33xx-l4-wkup", "simple-bus";
+	reg = <0x44c00000 0x800>,
+	      <0x44c00800 0x800>,
+	      <0x44c01000 0x400>,
+	      <0x44c01400 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x44c00000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x44d00000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x44e00000 0x100000>;	/* segment 2 */
+
+	segment at 0 {					/* 0x44c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>;	/* ap 3 */
+	};
+
+	segment at 100000 {					/* 0x44d00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00100000 0x004000>,	/* ap 4 */
+			 <0x00004000 0x00104000 0x001000>,	/* ap 5 */
+			 <0x00080000 0x00180000 0x002000>,	/* ap 6 */
+			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
+
+		target-module at 0 {			/* 0x44d00000, ap 4 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x4000>;
+		};
+
+		target-module at 80000 {			/* 0x44d80000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x2000>;
+		};
+	};
+
+	segment at 200000 {					/* 0x44e00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00200000 0x002000>,	/* ap 8 */
+			 <0x00002000 0x00202000 0x001000>,	/* ap 9 */
+			 <0x00003000 0x00203000 0x001000>,	/* ap 10 */
+			 <0x00004000 0x00204000 0x001000>,	/* ap 11 */
+			 <0x00005000 0x00205000 0x001000>,	/* ap 12 */
+			 <0x00006000 0x00206000 0x001000>,	/* ap 13 */
+			 <0x00007000 0x00207000 0x001000>,	/* ap 14 */
+			 <0x00008000 0x00208000 0x001000>,	/* ap 15 */
+			 <0x00009000 0x00209000 0x001000>,	/* ap 16 */
+			 <0x0000a000 0x0020a000 0x001000>,	/* ap 17 */
+			 <0x0000b000 0x0020b000 0x001000>,	/* ap 18 */
+			 <0x0000c000 0x0020c000 0x001000>,	/* ap 19 */
+			 <0x0000d000 0x0020d000 0x001000>,	/* ap 20 */
+			 <0x0000f000 0x0020f000 0x001000>,	/* ap 21 */
+			 <0x00010000 0x00210000 0x010000>,	/* ap 22 */
+			 <0x00020000 0x00220000 0x010000>,	/* ap 23 */
+			 <0x00030000 0x00230000 0x001000>,	/* ap 24 */
+			 <0x00031000 0x00231000 0x001000>,	/* ap 25 */
+			 <0x00032000 0x00232000 0x001000>,	/* ap 26 */
+			 <0x00033000 0x00233000 0x001000>,	/* ap 27 */
+			 <0x00034000 0x00234000 0x001000>,	/* ap 28 */
+			 <0x00035000 0x00235000 0x001000>,	/* ap 29 */
+			 <0x00036000 0x00236000 0x001000>,	/* ap 30 */
+			 <0x00037000 0x00237000 0x001000>,	/* ap 31 */
+			 <0x00038000 0x00238000 0x001000>,	/* ap 32 */
+			 <0x00039000 0x00239000 0x001000>,	/* ap 33 */
+			 <0x0003a000 0x0023a000 0x001000>,	/* ap 34 */
+			 <0x0003e000 0x0023e000 0x001000>,	/* ap 35 */
+			 <0x0003f000 0x0023f000 0x001000>,	/* ap 36 */
+			 <0x0000e000 0x0020e000 0x001000>,	/* ap 37 */
+			 <0x00040000 0x00240000 0x040000>,	/* ap 38 */
+			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
+
+		target-module at 0 {			/* 0x44e00000, ap 8 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x2000>;
+		};
+
+		target-module at 3000 {			/* 0x44e03000, ap 10 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+
+		target-module at 5000 {			/* 0x44e05000, ap 12 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x5000 0x1000>;
+		};
+
+		target-module at 7000 {			/* 0x44e07000, ap 14 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio1";
+			reg = <0x7000 0x4>,
+			      <0x7010 0x4>,
+			      <0x7114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 0>,
+				 <&l4_wkup_clkctrl AM3_L4_WKUP_GPIO1_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x7000 0x1000>;
+		};
+
+		target-module at 9000 {			/* 0x44e09000, ap 16 04.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart1";
+			reg = <0x9050 0x4>,
+			      <0x9054 0x4>,
+			      <0x9058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_UART1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9000 0x1000>;
+		};
+
+		target-module at b000 {			/* 0x44e0b000, ap 18 48.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c1";
+			reg = <0xb000 0x8>,
+			      <0xb010 0x8>,
+			      <0xb090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_I2C1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb000 0x1000>;
+		};
+
+		target-module at d000 {			/* 0x44e0d000, ap 20 38.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "adc_tsc";
+			reg = <0xd000 0x4>,
+			      <0xd010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_ADC_TSC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x0000d000 0x00001000>,
+				 <0x00001000 0x0000e000 0x00001000>;
+		};
+
+		target-module at 10000 {			/* 0x44e10000, ap 22 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00010000 0x00010000>,
+				 <0x00010000 0x00020000 0x00010000>;
+		};
+
+		target-module at 31000 {			/* 0x44e31000, ap 25 40.0 */
+			compatible = "ti,sysc-omap2-timer", "ti,sysc";
+			ti,hwmods = "timer1";
+			reg = <0x31000 0x4>,
+			      <0x31010 0x4>,
+			      <0x31014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_TIMER1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x31000 0x1000>;
+		};
+
+		target-module at 33000 {			/* 0x44e33000, ap 27 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x33000 0x1000>;
+		};
+
+		target-module at 35000 {			/* 0x44e35000, ap 29 50.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "wd_timer2";
+			reg = <0x35000 0x4>,
+			      <0x35010 0x4>,
+			      <0x35014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_EMUFREE |
+					 SYSC_OMAP2_SOFTRESET)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): wkup_pwrdm, l4_wkup_clkdm */
+			clocks = <&l4_wkup_clkctrl AM3_L4_WKUP_WD_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x35000 0x1000>;
+		};
+
+		target-module at 37000 {			/* 0x44e37000, ap 31 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x37000 0x1000>;
+		};
+
+		target-module at 39000 {			/* 0x44e39000, ap 33 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x39000 0x1000>;
+		};
+
+		target-module at 3e000 {			/* 0x44e3e000, ap 35 60.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "rtc";
+			reg = <0x3e074 0x4>,
+			      <0x3e078 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
+			clocks = <&l4_rtc_clkctrl AM3_L4_RTC_RTC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module at 40000 {			/* 0x44e40000, ap 38 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x40000>;
+		};
+	};
+};
+
+&l4_fw {						/* 0x47c00000 */
+	compatible = "ti,am33xx-l4-fw", "simple-bus";
+	reg = <0x47c00000 0x800>,
+	      <0x47c00800 0x800>,
+	      <0x47c01000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x47c00000 0x1000000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x47c00000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x0000c000 0x0000c000 0x001000>,	/* ap 3 */
+			 <0x0000d000 0x0000d000 0x001000>,	/* ap 4 */
+			 <0x0000e000 0x0000e000 0x001000>,	/* ap 5 */
+			 <0x0000f000 0x0000f000 0x001000>,	/* ap 6 */
+			 <0x00010000 0x00010000 0x001000>,	/* ap 7 */
+			 <0x00011000 0x00011000 0x001000>,	/* ap 8 */
+			 <0x0001a000 0x0001a000 0x001000>,	/* ap 9 */
+			 <0x0001b000 0x0001b000 0x001000>,	/* ap 10 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 11 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 12 */
+			 <0x00026000 0x00026000 0x001000>,	/* ap 13 */
+			 <0x00027000 0x00027000 0x001000>,	/* ap 14 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 15 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 16 */
+			 <0x00038000 0x00038000 0x001000>,	/* ap 17 */
+			 <0x00039000 0x00039000 0x001000>,	/* ap 18 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 19 */
+			 <0x0003b000 0x0003b000 0x001000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x0003f000 0x0003f000 0x001000>,	/* ap 22 */
+			 <0x0003c000 0x0003c000 0x001000>,	/* ap 23 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 24 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 25 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 26 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 27 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 28 */
+			 <0x00028000 0x00028000 0x001000>,	/* ap 29 */
+			 <0x00029000 0x00029000 0x001000>,	/* ap 30 */
+			 <0x00032000 0x00032000 0x001000>,	/* ap 31 */
+			 <0x00033000 0x00033000 0x001000>,	/* ap 32 */
+			 <0x0003d000 0x0003d000 0x001000>,	/* ap 33 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 34 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 35 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 36 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 37 */
+			 <0x00015000 0x00015000 0x001000>;	/* ap 38 */
+
+		target-module at c000 {			/* 0x47c0c000, ap 3 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc000 0x1000>;
+		};
+
+		target-module at e000 {			/* 0x47c0e000, ap 5 0c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module at 10000 {			/* 0x47c10000, ap 7 20.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x1000>;
+		};
+
+		target-module at 14000 {			/* 0x47c14000, ap 37 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module at 1a000 {			/* 0x47c1a000, ap 9 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x1a000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x47c24000, ap 11 28.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module at 26000 {			/* 0x47c26000, ap 13 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x26000 0x1000>;
+		};
+
+		target-module at 28000 {			/* 0x47c28000, ap 29 40.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x28000 0x1000>;
+		};
+
+		target-module at 30000 {			/* 0x47c30000, ap 15 14.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module at 32000 {			/* 0x47c32000, ap 31 06.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x32000 0x1000>;
+		};
+
+		target-module at 38000 {			/* 0x47c38000, ap 17 18.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x1000>;
+		};
+
+		target-module at 3a000 {			/* 0x47c3a000, ap 19 1c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3a000 0x1000>;
+		};
+
+		target-module at 3c000 {			/* 0x47c3c000, ap 23 38.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x1000>;
+		};
+
+		target-module at 3e000 {			/* 0x47c3e000, ap 21 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3e000 0x1000>;
+		};
+
+		target-module at 40000 {			/* 0x47c40000, ap 24 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module at 42000 {			/* 0x47c42000, ap 35 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module at 44000 {			/* 0x47c44000, ap 27 24.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module at 46000 {			/* 0x47c46000, ap 25 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+	};
+};
+
+&l4_fast {					/* 0x4a000000 */
+	compatible = "ti,am33xx-l4-fast", "simple-bus";
+	reg = <0x4a000000 0x800>,
+	      <0x4a000800 0x800>,
+	      <0x4a001000 0x400>;
+	reg-names = "ap", "la", "ia0";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4a000000 0x1000000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x4a000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00100000 0x00100000 0x008000>,	/* ap 3 */
+			 <0x00108000 0x00108000 0x001000>,	/* ap 4 */
+			 <0x00180000 0x00180000 0x020000>,	/* ap 5 */
+			 <0x001a0000 0x001a0000 0x001000>,	/* ap 6 */
+			 <0x00200000 0x00200000 0x080000>,	/* ap 7 */
+			 <0x00280000 0x00280000 0x001000>,	/* ap 8 */
+			 <0x00300000 0x00300000 0x080000>,	/* ap 9 */
+			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
+
+		target-module at 100000 {			/* 0x4a100000, ap 3 08.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x100000 0x8000>;
+		};
+
+		target-module at 180000 {			/* 0x4a180000, ap 5 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x180000 0x20000>;
+		};
+
+		target-module at 200000 {			/* 0x4a200000, ap 7 02.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x200000 0x80000>;
+		};
+
+		target-module at 300000 {			/* 0x4a300000, ap 9 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x300000 0x80000>;
+		};
+	};
+};
+
+&l4_mpuss {						/* 0x4b140000 */
+	compatible = "ti,am33xx-l4-mpuss", "simple-bus";
+	reg = <0x4b144400 0x100>,
+	      <0x4b144800 0x400>;
+	reg-names = "la", "ap";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x4b140000 0x008000>;	/* segment 0 */
+
+	segment at 0 {					/* 0x4b140000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00004800 0x00004800 0x000400>,	/* ap 0 */
+			 <0x00001000 0x00001000 0x001000>,	/* ap 1 */
+			 <0x00002000 0x00002000 0x001000>,	/* ap 2 */
+			 <0x00004000 0x00004000 0x000400>,	/* ap 3 */
+			 <0x00005000 0x00005000 0x000400>,	/* ap 4 */
+			 <0x00000000 0x00000000 0x001000>,	/* ap 5 */
+			 <0x00003000 0x00003000 0x001000>,	/* ap 6 */
+			 <0x00000800 0x00000800 0x000800>;	/* ap 7 */
+
+		target-module at 0 {			/* 0x4b140000, ap 5 02.2 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00000000 0x00001000>,
+				 <0x00001000 0x00001000 0x00001000>,
+				 <0x00002000 0x00002000 0x00001000>;
+		};
+
+		target-module at 3000 {			/* 0x4b143000, ap 6 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3000 0x1000>;
+		};
+	};
+};
+
+&l4_per {						/* 0x48000000 */
+	compatible = "ti,am33xx-l4-per", "simple-bus";
+	reg = <0x48000000 0x800>,
+	      <0x48000800 0x800>,
+	      <0x48001000 0x400>,
+	      <0x48001400 0x400>,
+	      <0x48001800 0x400>,
+	      <0x48001c00 0x400>;
+	reg-names = "ap", "la", "ia0", "ia1", "ia2", "ia3";
+	#address-cells = <1>;
+	#size-cells = <1>;
+	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
+		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
+		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
+		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+
+	segment at 0 {					/* 0x48000000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00000000 0x000800>,	/* ap 0 */
+			 <0x00000800 0x00000800 0x000800>,	/* ap 1 */
+			 <0x00001000 0x00001000 0x000400>,	/* ap 2 */
+			 <0x00001400 0x00001400 0x000400>,	/* ap 3 */
+			 <0x00001800 0x00001800 0x000400>,	/* ap 4 */
+			 <0x00001c00 0x00001c00 0x000400>,	/* ap 5 */
+			 <0x00008000 0x00008000 0x001000>,	/* ap 6 */
+			 <0x00009000 0x00009000 0x001000>,	/* ap 7 */
+			 <0x00016000 0x00016000 0x001000>,	/* ap 8 */
+			 <0x00017000 0x00017000 0x001000>,	/* ap 9 */
+			 <0x00022000 0x00022000 0x001000>,	/* ap 10 */
+			 <0x00023000 0x00023000 0x001000>,	/* ap 11 */
+			 <0x00024000 0x00024000 0x001000>,	/* ap 12 */
+			 <0x00025000 0x00025000 0x001000>,	/* ap 13 */
+			 <0x0002a000 0x0002a000 0x001000>,	/* ap 14 */
+			 <0x0002b000 0x0002b000 0x001000>,	/* ap 15 */
+			 <0x00038000 0x00038000 0x002000>,	/* ap 16 */
+			 <0x0003a000 0x0003a000 0x001000>,	/* ap 17 */
+			 <0x00014000 0x00014000 0x001000>,	/* ap 18 */
+			 <0x00015000 0x00015000 0x001000>,	/* ap 19 */
+			 <0x0003c000 0x0003c000 0x002000>,	/* ap 20 */
+			 <0x0003e000 0x0003e000 0x001000>,	/* ap 21 */
+			 <0x00040000 0x00040000 0x001000>,	/* ap 22 */
+			 <0x00041000 0x00041000 0x001000>,	/* ap 23 */
+			 <0x00042000 0x00042000 0x001000>,	/* ap 24 */
+			 <0x00043000 0x00043000 0x001000>,	/* ap 25 */
+			 <0x00044000 0x00044000 0x001000>,	/* ap 26 */
+			 <0x00045000 0x00045000 0x001000>,	/* ap 27 */
+			 <0x00046000 0x00046000 0x001000>,	/* ap 28 */
+			 <0x00047000 0x00047000 0x001000>,	/* ap 29 */
+			 <0x00048000 0x00048000 0x001000>,	/* ap 30 */
+			 <0x00049000 0x00049000 0x001000>,	/* ap 31 */
+			 <0x0004c000 0x0004c000 0x001000>,	/* ap 32 */
+			 <0x0004d000 0x0004d000 0x001000>,	/* ap 33 */
+			 <0x00050000 0x00050000 0x002000>,	/* ap 34 */
+			 <0x00052000 0x00052000 0x001000>,	/* ap 35 */
+			 <0x00060000 0x00060000 0x001000>,	/* ap 36 */
+			 <0x00061000 0x00061000 0x001000>,	/* ap 37 */
+			 <0x00080000 0x00080000 0x010000>,	/* ap 38 */
+			 <0x00090000 0x00090000 0x001000>,	/* ap 39 */
+			 <0x000a0000 0x000a0000 0x010000>,	/* ap 40 */
+			 <0x000b0000 0x000b0000 0x001000>,	/* ap 41 */
+			 <0x00030000 0x00030000 0x001000>,	/* ap 77 */
+			 <0x00031000 0x00031000 0x001000>,	/* ap 78 */
+			 <0x0004a000 0x0004a000 0x001000>,	/* ap 85 */
+			 <0x0004b000 0x0004b000 0x001000>,	/* ap 86 */
+			 <0x000c8000 0x000c8000 0x001000>,	/* ap 87 */
+			 <0x000c9000 0x000c9000 0x001000>,	/* ap 88 */
+			 <0x000cc000 0x000cc000 0x001000>,	/* ap 89 */
+			 <0x000cd000 0x000cd000 0x001000>,	/* ap 90 */
+			 <0x000ca000 0x000ca000 0x001000>,	/* ap 91 */
+			 <0x000cb000 0x000cb000 0x001000>;	/* ap 92 */
+
+		target-module at 8000 {			/* 0x48008000, ap 6 10.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8000 0x1000>;
+		};
+
+		target-module at 14000 {			/* 0x48014000, ap 18 58.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x14000 0x1000>;
+		};
+
+		target-module at 16000 {			/* 0x48016000, ap 8 3c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x16000 0x1000>;
+		};
+
+		target-module at 22000 {			/* 0x48022000, ap 10 12.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart2";
+			reg = <0x22050 0x4>,
+			      <0x22054 0x4>,
+			      <0x22058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x48024000, ap 12 14.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart3";
+			reg = <0x24050 0x4>,
+			      <0x24054 0x4>,
+			      <0x24058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+
+		target-module at 2a000 {			/* 0x4802a000, ap 14 2a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c2";
+			reg = <0x2a000 0x8>,
+			      <0x2a010 0x8>,
+			      <0x2a090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2a000 0x1000>;
+		};
+
+		target-module at 30000 {			/* 0x48030000, ap 77 08.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi0";
+			reg = <0x30000 0x4>,
+			      <0x30110 0x4>,
+			      <0x30114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x30000 0x1000>;
+		};
+
+		target-module at 38000 {			/* 0x48038000, ap 16 02.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp0";
+			reg = <0x38000 0x4>,
+			      <0x38004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x38000 0x2000>;
+		};
+
+		target-module at 3c000 {			/* 0x4803c000, ap 20 32.0 */
+			compatible = "ti,sysc-omap4-simple", "ti,sysc";
+			ti,hwmods = "mcasp1";
+			reg = <0x3c000 0x4>,
+			      <0x3c004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l3s_clkdm */
+			clocks = <&l3s_clkctrl AM3_L3S_MCASP1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x3c000 0x2000>;
+		};
+
+		target-module at 40000 {			/* 0x48040000, ap 22 1e.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer2";
+			reg = <0x40000 0x4>,
+			      <0x40010 0x4>,
+			      <0x40014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x40000 0x1000>;
+		};
+
+		target-module at 42000 {			/* 0x48042000, ap 24 1c.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer3";
+			reg = <0x42000 0x4>,
+			      <0x42010 0x4>,
+			      <0x42014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x42000 0x1000>;
+		};
+
+		target-module at 44000 {			/* 0x48044000, ap 26 26.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer4";
+			reg = <0x44000 0x4>,
+			      <0x44010 0x4>,
+			      <0x44014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x44000 0x1000>;
+		};
+
+		target-module at 46000 {			/* 0x48046000, ap 28 28.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer5";
+			reg = <0x46000 0x4>,
+			      <0x46010 0x4>,
+			      <0x46014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x46000 0x1000>;
+		};
+
+		target-module at 48000 {			/* 0x48048000, ap 30 22.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer6";
+			reg = <0x48000 0x4>,
+			      <0x48010 0x4>,
+			      <0x48014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x48000 0x1000>;
+		};
+
+		target-module at 4a000 {			/* 0x4804a000, ap 85 60.0 */
+			compatible = "ti,sysc-omap4-timer", "ti,sysc";
+			ti,hwmods = "timer7";
+			reg = <0x4a000 0x4>,
+			      <0x4a010 0x4>,
+			      <0x4a014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_TIMER7_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4a000 0x1000>;
+		};
+
+		target-module at 4c000 {			/* 0x4804c000, ap 32 36.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio2";
+			reg = <0x4c000 0x4>,
+			      <0x4c010 0x4>,
+			      <0x4c114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO2_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4c000 0x1000>;
+		};
+
+		target-module at 50000 {			/* 0x48050000, ap 34 2c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x50000 0x2000>;
+		};
+
+		target-module at 60000 {			/* 0x48060000, ap 36 0c.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc1";
+			reg = <0x602fc 0x4>,
+			      <0x60110 0x4>,
+			      <0x60114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x60000 0x1000>;
+		};
+
+		target-module at 80000 {			/* 0x48080000, ap 38 18.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "elm";
+			reg = <0x80000 0x4>,
+			      <0x80010 0x4>,
+			      <0x80014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_ELM_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x80000 0x10000>;
+		};
+
+		target-module at a0000 {			/* 0x480a0000, ap 40 5e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x10000>;
+		};
+
+		target-module at c8000 {			/* 0x480c8000, ap 87 06.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "mailbox";
+			reg = <0xc8000 0x4>,
+			      <0xc8010 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP4_SOFTRESET>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MAILBOX_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xc8000 0x1000>;
+		};
+
+		target-module at ca000 {			/* 0x480ca000, ap 91 40.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spinlock";
+			reg = <0xca000 0x4>,
+			      <0xca010 0x4>,
+			      <0xca014 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPINLOCK_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xca000 0x1000>;
+		};
+
+		target-module at cc000 {			/* 0x480cc000, ap 89 0e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x1000>;
+		};
+	};
+
+	segment at 100000 {					/* 0x48100000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x0008c000 0x0018c000 0x001000>,	/* ap 42 */
+			 <0x0008d000 0x0018d000 0x001000>,	/* ap 43 */
+			 <0x0008e000 0x0018e000 0x001000>,	/* ap 44 */
+			 <0x0008f000 0x0018f000 0x001000>,	/* ap 45 */
+			 <0x0009c000 0x0019c000 0x001000>,	/* ap 46 */
+			 <0x0009d000 0x0019d000 0x001000>,	/* ap 47 */
+			 <0x000a6000 0x001a6000 0x001000>,	/* ap 48 */
+			 <0x000a7000 0x001a7000 0x001000>,	/* ap 49 */
+			 <0x000a8000 0x001a8000 0x001000>,	/* ap 50 */
+			 <0x000a9000 0x001a9000 0x001000>,	/* ap 51 */
+			 <0x000aa000 0x001aa000 0x001000>,	/* ap 52 */
+			 <0x000ab000 0x001ab000 0x001000>,	/* ap 53 */
+			 <0x000ac000 0x001ac000 0x001000>,	/* ap 54 */
+			 <0x000ad000 0x001ad000 0x001000>,	/* ap 55 */
+			 <0x000ae000 0x001ae000 0x001000>,	/* ap 56 */
+			 <0x000af000 0x001af000 0x001000>,	/* ap 57 */
+			 <0x000b0000 0x001b0000 0x010000>,	/* ap 58 */
+			 <0x000c0000 0x001c0000 0x001000>,	/* ap 59 */
+			 <0x000cc000 0x001cc000 0x002000>,	/* ap 60 */
+			 <0x000ce000 0x001ce000 0x002000>,	/* ap 61 */
+			 <0x000d0000 0x001d0000 0x002000>,	/* ap 62 */
+			 <0x000d2000 0x001d2000 0x002000>,	/* ap 63 */
+			 <0x000d8000 0x001d8000 0x001000>,	/* ap 64 */
+			 <0x000d9000 0x001d9000 0x001000>,	/* ap 65 */
+			 <0x000a0000 0x001a0000 0x001000>,	/* ap 79 */
+			 <0x000a1000 0x001a1000 0x001000>,	/* ap 80 */
+			 <0x000a2000 0x001a2000 0x001000>,	/* ap 81 */
+			 <0x000a3000 0x001a3000 0x001000>,	/* ap 82 */
+			 <0x000a4000 0x001a4000 0x001000>,	/* ap 83 */
+			 <0x000a5000 0x001a5000 0x001000>;	/* ap 84 */
+
+		target-module at 8c000 {			/* 0x4818c000, ap 42 04.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8c000 0x1000>;
+		};
+
+		target-module at 8e000 {			/* 0x4818e000, ap 44 0a.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x8e000 0x1000>;
+		};
+
+		target-module at 9c000 {			/* 0x4819c000, ap 46 5a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "i2c3";
+			reg = <0x9c000 0x8>,
+			      <0x9c010 0x8>,
+			      <0x9c090 0x8>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_I2C3_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x9c000 0x1000>;
+		};
+
+		target-module at a0000 {			/* 0x481a0000, ap 79 24.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "spi1";
+			reg = <0xa0000 0x4>,
+			      <0xa0110 0x4>,
+			      <0xa0114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_SPI1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa0000 0x1000>;
+		};
+
+		target-module at a2000 {			/* 0x481a2000, ap 81 2e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa2000 0x1000>;
+		};
+
+		target-module at a4000 {			/* 0x481a4000, ap 83 30.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa4000 0x1000>;
+		};
+
+		target-module at a6000 {			/* 0x481a6000, ap 48 16.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart4";
+			reg = <0xa6050 0x4>,
+			      <0xa6054 0x4>,
+			      <0xa6058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART4_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa6000 0x1000>;
+		};
+
+		target-module at a8000 {			/* 0x481a8000, ap 50 20.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart5";
+			reg = <0xa8050 0x4>,
+			      <0xa8054 0x4>,
+			      <0xa8058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART5_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xa8000 0x1000>;
+		};
+
+		target-module at aa000 {			/* 0x481aa000, ap 52 1a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "uart6";
+			reg = <0xaa050 0x4>,
+			      <0xaa054 0x4>,
+			      <0xaa058 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_UART6_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xaa000 0x1000>;
+		};
+
+		target-module at ac000 {			/* 0x481ac000, ap 54 38.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio3";
+			reg = <0xac000 0x4>,
+			      <0xac010 0x4>,
+			      <0xac114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO3_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xac000 0x1000>;
+		};
+
+		target-module at ae000 {			/* 0x481ae000, ap 56 3a.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "gpio4";
+			reg = <0xae000 0x4>,
+			      <0xae010 0x4>,
+			      <0xae114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 0>,
+				 <&l4ls_clkctrl AM3_L4LS_GPIO4_CLKCTRL 18>;
+			clock-names = "fck", "dbclk";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xae000 0x1000>;
+		};
+
+		target-module at b0000 {			/* 0x481b0000, ap 58 50.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xb0000 0x10000>;
+		};
+
+		target-module at cc000 {			/* 0x481cc000, ap 60 46.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xcc000 0x2000>;
+		};
+
+		target-module at d0000 {			/* 0x481d0000, ap 62 42.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd0000 0x2000>;
+		};
+
+		target-module at d8000 {			/* 0x481d8000, ap 64 66.0 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "mmc2";
+			reg = <0xd82fc 0x4>,
+			      <0xd8110 0x4>,
+			      <0xd8114 0x4>;
+			reg-names = "rev", "sysc", "syss";
+			ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
+					 SYSC_OMAP2_ENAWAKEUP |
+					 SYSC_OMAP2_SOFTRESET |
+					 SYSC_OMAP2_AUTOIDLE)>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			ti,syss-mask = <1>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_MMC2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xd8000 0x1000>;
+		};
+	};
+
+	segment at 200000 {					/* 0x48200000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+	};
+
+	segment at 300000 {					/* 0x48300000 */
+		compatible = "simple-bus";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0x00000000 0x00300000 0x001000>,	/* ap 66 */
+			 <0x00001000 0x00301000 0x001000>,	/* ap 67 */
+			 <0x00002000 0x00302000 0x001000>,	/* ap 68 */
+			 <0x00003000 0x00303000 0x001000>,	/* ap 69 */
+			 <0x00004000 0x00304000 0x001000>,	/* ap 70 */
+			 <0x00005000 0x00305000 0x001000>,	/* ap 71 */
+			 <0x0000e000 0x0030e000 0x001000>,	/* ap 72 */
+			 <0x0000f000 0x0030f000 0x001000>,	/* ap 73 */
+			 <0x00018000 0x00318000 0x004000>,	/* ap 74 */
+			 <0x0001c000 0x0031c000 0x001000>,	/* ap 75 */
+			 <0x00010000 0x00310000 0x002000>,	/* ap 76 */
+			 <0x00012000 0x00312000 0x001000>,	/* ap 93 */
+			 <0x00015000 0x00315000 0x001000>,	/* ap 94 */
+			 <0x00016000 0x00316000 0x001000>,	/* ap 95 */
+			 <0x00017000 0x00317000 0x001000>,	/* ap 96 */
+			 <0x00013000 0x00313000 0x001000>,	/* ap 97 */
+			 <0x00014000 0x00314000 0x001000>,	/* ap 98 */
+			 <0x00020000 0x00320000 0x001000>,	/* ap 99 */
+			 <0x00021000 0x00321000 0x001000>,	/* ap 100 */
+			 <0x00022000 0x00322000 0x001000>,	/* ap 101 */
+			 <0x00023000 0x00323000 0x001000>,	/* ap 102 */
+			 <0x00024000 0x00324000 0x001000>,	/* ap 103 */
+			 <0x00025000 0x00325000 0x001000>;	/* ap 104 */
+
+		target-module at 0 {			/* 0x48300000, ap 66 48.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss0";
+			reg = <0x0 0x4>,
+			      <0x4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS0_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x0 0x1000>;
+		};
+
+		target-module at 2000 {			/* 0x48302000, ap 68 52.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss1";
+			reg = <0x2000 0x4>,
+			      <0x2004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS1_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x2000 0x1000>;
+		};
+
+		target-module at 4000 {			/* 0x48304000, ap 70 44.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "epwmss2";
+			reg = <0x4000 0x4>,
+			      <0x4004 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>,
+					<SYSC_IDLE_SMART_WKUP>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_EPWMSS2_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x4000 0x1000>;
+		};
+
+		target-module at e000 {			/* 0x4830e000, ap 72 4a.0 */
+			compatible = "ti,sysc-omap4", "ti,sysc";
+			ti,hwmods = "lcdc";
+			reg = <0xe000 0x4>,
+			      <0xe054 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-midle ;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>,
+					<SYSC_IDLE_SMART>;
+			/* Domains (P, C): per_pwrdm, lcdc_clkdm */
+			clocks = <&lcdc_clkctrl AM3_LCDC_LCDC_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0xe000 0x1000>;
+		};
+
+		target-module at 10000 {			/* 0x48310000, ap 76 4e.1 */
+			compatible = "ti,sysc-omap2", "ti,sysc";
+			ti,hwmods = "rng";
+			reg = <0x11fe0 0x4>,
+			      <0x11fe4 0x4>;
+			reg-names = "rev", "sysc";
+			ti,sysc-mask = <SYSC_OMAP2_AUTOIDLE>;
+			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
+					<SYSC_IDLE_NO>;
+			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
+			clocks = <&l4ls_clkctrl AM3_L4LS_RNG_CLKCTRL 0>;
+			clock-names = "fck";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x10000 0x2000>;
+		};
+
+		target-module at 13000 {			/* 0x48313000, ap 97 62.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x13000 0x1000>;
+		};
+
+		target-module at 15000 {			/* 0x48315000, ap 94 56.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x00000000 0x00015000 0x00001000>,
+				 <0x00001000 0x00016000 0x00001000>;
+		};
+
+		target-module at 18000 {			/* 0x48318000, ap 74 4c.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x18000 0x4000>;
+		};
+
+		target-module at 20000 {			/* 0x48320000, ap 99 34.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x20000 0x1000>;
+		};
+
+		target-module at 22000 {			/* 0x48322000, ap 101 3e.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x22000 0x1000>;
+		};
+
+		target-module at 24000 {			/* 0x48324000, ap 103 68.0 */
+			compatible = "ti,sysc";
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges = <0x0 0x24000 0x1000>;
+		};
+	};
+};
+
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-26 23:31                 ` Tony Lindgren
@ 2018-09-27 19:11                   ` Grygorii Strashko
  -1 siblings, 0 replies; 66+ messages in thread
From: Grygorii Strashko @ 2018-09-27 19:11 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel



On 09/26/2018 06:31 PM, Tony Lindgren wrote:
> * Grygorii Strashko <grygorii.strashko@ti.com> [180926 21:41]:
>> On 09/26/2018 11:23 AM, Tony Lindgren wrote:
>>> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
>>> +{
>>> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
>>> +	int error;
>>> +
>>> +	/* Is device still enabled because of autosuspend? */
>>> +	if (ddata->is_suspended)
>>> +		return 0;
>>
>> Sry, but you can't do this. There is no sync between suspend and PM runtime.
>>
>>
>>> +
>>> +	/* Paired with call in omap_i2c_resume() */
>>> +	error = pm_runtime_put_sync_suspend(dev);
>>
>> This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
>> what's the current value of usage_count.
> 
> Hmm yeah that's a good point.
> 
>> To make things work the pm_runtime_force_xx() have to be used, or
>> like with omap_device, platform/bus code have to handle device state
>> at suspend_no_irq stage.
> 
> OK. So looks like the other i2c bus drivers have already solved it
> with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
> you're suggesting.
> 
> The following works for me, does it look OK to you?
> 

it looks good, just curious if it will work both ti-sysc legacy/nonlegacy modes.

> 
> 8< ---------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1498,8 +1498,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1525,7 +1524,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>   	return 0;
>   }
>   
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1540,20 +1539,18 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   }
>   
>   static const struct dev_pm_ops omap_i2c_pm_ops = {
> +	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
> +				      pm_runtime_force_resume)
>   	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>   			   omap_i2c_runtime_resume, NULL)
>   };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>   
>   static struct platform_driver omap_i2c_driver = {
>   	.probe		= omap_i2c_probe,
>   	.remove		= omap_i2c_remove,
>   	.driver		= {
>   		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>   		.of_match_table = of_match_ptr(omap_i2c_of_match),
>   	},
>   };
> 

-- 
regards,
-grygorii

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-27 19:11                   ` Grygorii Strashko
  0 siblings, 0 replies; 66+ messages in thread
From: Grygorii Strashko @ 2018-09-27 19:11 UTC (permalink / raw)
  To: linux-arm-kernel



On 09/26/2018 06:31 PM, Tony Lindgren wrote:
> * Grygorii Strashko <grygorii.strashko@ti.com> [180926 21:41]:
>> On 09/26/2018 11:23 AM, Tony Lindgren wrote:
>>> +static int __maybe_unused omap_i2c_suspend(struct device *dev)
>>> +{
>>> +	struct omap_i2c_dev *ddata = dev_get_drvdata(dev);
>>> +	int error;
>>> +
>>> +	/* Is device still enabled because of autosuspend? */
>>> +	if (ddata->is_suspended)
>>> +		return 0;
>>
>> Sry, but you can't do this. There is no sync between suspend and PM runtime.
>>
>>
>>> +
>>> +	/* Paired with call in omap_i2c_resume() */
>>> +	error = pm_runtime_put_sync_suspend(dev);
>>
>> This is nop!!! More over, in general you can't predict how many times pm_runtime_get was called and
>> what's the current value of usage_count.
> 
> Hmm yeah that's a good point.
> 
>> To make things work the pm_runtime_force_xx() have to be used, or
>> like with omap_device, platform/bus code have to handle device state
>> at suspend_no_irq stage.
> 
> OK. So looks like the other i2c bus drivers have already solved it
> with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
> you're suggesting.
> 
> The following works for me, does it look OK to you?
> 

it looks good, just curious if it will work both ti-sysc legacy/nonlegacy modes.

> 
> 8< ---------------------
> diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
> --- a/drivers/i2c/busses/i2c-omap.c
> +++ b/drivers/i2c/busses/i2c-omap.c
> @@ -1498,8 +1498,7 @@ static int omap_i2c_remove(struct platform_device *pdev)
>   	return 0;
>   }
>   
> -#ifdef CONFIG_PM
> -static int omap_i2c_runtime_suspend(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_suspend(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1525,7 +1524,7 @@ static int omap_i2c_runtime_suspend(struct device *dev)
>   	return 0;
>   }
>   
> -static int omap_i2c_runtime_resume(struct device *dev)
> +static int __maybe_unused omap_i2c_runtime_resume(struct device *dev)
>   {
>   	struct omap_i2c_dev *omap = dev_get_drvdata(dev);
>   
> @@ -1540,20 +1539,18 @@ static int omap_i2c_runtime_resume(struct device *dev)
>   }
>   
>   static const struct dev_pm_ops omap_i2c_pm_ops = {
> +	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
> +				      pm_runtime_force_resume)
>   	SET_RUNTIME_PM_OPS(omap_i2c_runtime_suspend,
>   			   omap_i2c_runtime_resume, NULL)
>   };
> -#define OMAP_I2C_PM_OPS (&omap_i2c_pm_ops)
> -#else
> -#define OMAP_I2C_PM_OPS NULL
> -#endif /* CONFIG_PM */
>   
>   static struct platform_driver omap_i2c_driver = {
>   	.probe		= omap_i2c_probe,
>   	.remove		= omap_i2c_remove,
>   	.driver		= {
>   		.name	= "omap_i2c",
> -		.pm	= OMAP_I2C_PM_OPS,
> +		.pm	= &omap_i2c_pm_ops,
>   		.of_match_table = of_match_ptr(omap_i2c_of_match),
>   	},
>   };
> 

-- 
regards,
-grygorii

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-27 19:11                   ` Grygorii Strashko
@ 2018-09-27 19:38                     ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 19:38 UTC (permalink / raw)
  To: Grygorii Strashko
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Grygorii Strashko <grygorii.strashko@ti.com> [180927 19:16]:
> On 09/26/2018 06:31 PM, Tony Lindgren wrote:
> > 
> > OK. So looks like the other i2c bus drivers have already solved it
> > with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
> > you're suggesting.
> > 
> > The following works for me, does it look OK to you?
> 
> it looks good, just curious if it will work both ti-sysc legacy/nonlegacy modes.

OK, yes it seems to pass my artificial test case without ti-sysc
dts changes, see below. So I just sent the i2c-omap patch as:

"[PATCH] i2c: omap: Use noirq system sleep pm ops to idle device for suspend"

Regards,

Tony

8< -----------
[   70.509713] PM: suspend entry (deep)
[   70.509739] PM: Syncing filesystems ... done.
[   70.516785] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   70.518746] OOM killer disabled.
[   70.518756] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   70.520393] Suspending console(s) (use no_console_suspend to debug)
[   70.532983] wlan0: deauthenticating from 42:04:7a:03:0b:78 by local choice (Reason: 3=DEAUTH_LEAVING)
[   70.589742] wlcore: down
[   70.590435] wlcore: down
[   70.672208] Disabling non-boot CPUs ...
[   70.672237] pm33xx pm33xx: PM: Successfully put all powerdomains to target state
[   70.694047] net eth0: initializing cpsw version 1.15 (0)
[   70.792216] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:04: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:p)
[   70.795548] net eth1: initializing cpsw version 1.15 (0)
[   70.902204] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:05: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:p)
[   71.007103] usb usb1: root hub lost power or was reset
[   71.007121] usb usb2: root hub lost power or was reset
[   71.322414] wlcore: PHY firmware version: Rev 8.2.0.0.236
[   71.417839] wlcore: firmware booted (Rev 8.9.0.0.69)
[   71.444787] OOM killer enabled.
[   71.444799] Restarting tasks ... done.
[   71.461113] PM: suspend exit

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-27 19:38                     ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 19:38 UTC (permalink / raw)
  To: linux-arm-kernel

* Grygorii Strashko <grygorii.strashko@ti.com> [180927 19:16]:
> On 09/26/2018 06:31 PM, Tony Lindgren wrote:
> > 
> > OK. So looks like the other i2c bus drivers have already solved it
> > with simply SET_NOIRQ_SYSTEM_SLEEP_PM_OPS which is along the lines
> > you're suggesting.
> > 
> > The following works for me, does it look OK to you?
> 
> it looks good, just curious if it will work both ti-sysc legacy/nonlegacy modes.

OK, yes it seems to pass my artificial test case without ti-sysc
dts changes, see below. So I just sent the i2c-omap patch as:

"[PATCH] i2c: omap: Use noirq system sleep pm ops to idle device for suspend"

Regards,

Tony

8< -----------
[   70.509713] PM: suspend entry (deep)
[   70.509739] PM: Syncing filesystems ... done.
[   70.516785] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   70.518746] OOM killer disabled.
[   70.518756] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   70.520393] Suspending console(s) (use no_console_suspend to debug)
[   70.532983] wlan0: deauthenticating from 42:04:7a:03:0b:78 by local choice (Reason: 3=DEAUTH_LEAVING)
[   70.589742] wlcore: down
[   70.590435] wlcore: down
[   70.672208] Disabling non-boot CPUs ...
[   70.672237] pm33xx pm33xx: PM: Successfully put all powerdomains to target state
[   70.694047] net eth0: initializing cpsw version 1.15 (0)
[   70.792216] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:04: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:p)
[   70.795548] net eth1: initializing cpsw version 1.15 (0)
[   70.902204] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:05: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:p)
[   71.007103] usb usb1: root hub lost power or was reset
[   71.007121] usb usb2: root hub lost power or was reset
[   71.322414] wlcore: PHY firmware version: Rev 8.2.0.0.236
[   71.417839] wlcore: firmware booted (Rev 8.9.0.0.69)
[   71.444787] OOM killer enabled.
[   71.444799] Restarting tasks ... done.
[   71.461113] PM: suspend exit

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-27 14:53                     ` Tony Lindgren
@ 2018-09-27 21:43                       ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 21:43 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Grygorii Strashko, Dave Gerlach, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180927 14:58]:
> * Keerthy <j-keerthy@ti.com> [180927 05:00]:
> > On Thursday 27 September 2018 05:01 AM, Tony Lindgren wrote:
> > > The following works for me, does it look OK to you?
> > 
> > This works pretty well with DS0 on am437x-gp-evm. Tested rtc wakeup,
> > wakeup using uart and touch. All of the work well.
> > 
> > https://pastebin.ubuntu.com/p/RJhJJKhJHX/
> 
> OK good to hear and thanks for testing again.
> 
> > Also tested on beaglebone black DS0 works fine. Although there seems to
> > be an additional warning which was not seen before:
> > 
> > "l4-wkup-clkctrl:0008:0: failed to disable"
> > 
> > log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/
> > 
> > Also the above warning is present without/with this patch on [0].
> > No such warnings on am4 though.
> 
> OK. For am335x I'll post an updated version of the am335x
> changes to fix the gpio dbck offset.

FYI I have pushed updated patches into a new temporary test
branch omap-for-v4.20/dt-ti-sysc-tmp-testing-v2 with initial
dra7 dts changes too.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-09-27 21:43                       ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-09-27 21:43 UTC (permalink / raw)
  To: linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [180927 14:58]:
> * Keerthy <j-keerthy@ti.com> [180927 05:00]:
> > On Thursday 27 September 2018 05:01 AM, Tony Lindgren wrote:
> > > The following works for me, does it look OK to you?
> > 
> > This works pretty well with DS0 on am437x-gp-evm. Tested rtc wakeup,
> > wakeup using uart and touch. All of the work well.
> > 
> > https://pastebin.ubuntu.com/p/RJhJJKhJHX/
> 
> OK good to hear and thanks for testing again.
> 
> > Also tested on beaglebone black DS0 works fine. Although there seems to
> > be an additional warning which was not seen before:
> > 
> > "l4-wkup-clkctrl:0008:0: failed to disable"
> > 
> > log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/
> > 
> > Also the above warning is present without/with this patch on [0].
> > No such warnings on am4 though.
> 
> OK. For am335x I'll post an updated version of the am335x
> changes to fix the gpio dbck offset.

FYI I have pushed updated patches into a new temporary test
branch omap-for-v4.20/dt-ti-sysc-tmp-testing-v2 with initial
dra7 dts changes too.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-09-27  4:55                   ` Keerthy
@ 2018-10-01 16:32                     ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-10-01 16:32 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Grygorii Strashko, Dave Gerlach, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180927 05:00]:
> Also tested on beaglebone black DS0 works fine. Although there seems to
> be an additional warning which was not seen before:
> 
> "l4-wkup-clkctrl:0008:0: failed to disable"
> 
> log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/

Can you test the following patch applied on top of the
omap-for-v4.20/dt-ti-sysc-tmp-testing-v2 testing branch?

Based on Grygorii's i2c-omap comments, I think we should also
do the following in the ti-sysc driver becasuse the pm_runtime
use count can be whatever.

Regards,

Tony

8< ----------------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Mon, 1 Oct 2018 09:11:57 -0700
Subject: [PATCH] bus: ti-sysc: Just use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS

As Grygorii Strashko pointed out, the runtime PM use count of the
children can be whatever at suspend and we should not use it. So
let's just suspend ti-sysc at noirq level and get rid of some code.

Let's also remove the PM_SLEEP ifdef and use __maybe_unused as the
PM code already deals with the ifdefs.

Suggested-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c | 113 ++----------------------------------------
 1 file changed, 4 insertions(+), 109 deletions(-)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -87,7 +87,6 @@ struct sysc {
 	u32 revision;
 	bool enabled;
 	bool needs_resume;
-	unsigned int noirq_suspend:1;
 	bool child_needs_resume;
 	struct delayed_work idle_work;
 };
@@ -702,75 +701,7 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
 	return error;
 }
 
-#ifdef CONFIG_PM_SLEEP
-static int sysc_suspend(struct device *dev)
-{
-	struct sysc *ddata;
-	int error;
-
-	ddata = dev_get_drvdata(dev);
-
-	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
-		return 0;
-
-	if (!ddata->enabled || ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = pm_runtime_put_sync_suspend(dev);
-	if (error == -EBUSY) {
-		dev_dbg(ddata->dev, "%s busy, tagging for noirq suspend %s\n",
-			__func__, ddata->name ? ddata->name : "");
-
-		ddata->noirq_suspend = true;
-
-		return 0;
-	} else if (error < 0) {
-		dev_warn(ddata->dev, "%s cannot suspend %i %s\n",
-			 __func__, error,
-			 ddata->name ? ddata->name : "");
-
-		return 0;
-	}
-
-	ddata->needs_resume = true;
-
-	return 0;
-}
-
-static int sysc_resume(struct device *dev)
-{
-	struct sysc *ddata;
-	int error;
-
-	ddata = dev_get_drvdata(dev);
-
-	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
-		return 0;
-
-	if (!ddata->needs_resume || ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = pm_runtime_get_sync(dev);
-	if (error < 0) {
-		dev_err(ddata->dev, "%s  error %i %s\n",
-			__func__, error,
-			ddata->name ? ddata->name : "");
-
-		return error;
-	}
-
-	ddata->needs_resume = false;
-
-	return 0;
-}
-
-static int sysc_noirq_suspend(struct device *dev)
+static int __maybe_unused sysc_noirq_suspend(struct device *dev)
 {
 	struct sysc *ddata;
 	int error;
@@ -780,26 +711,10 @@ static int sysc_noirq_suspend(struct device *dev)
 	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
 		return 0;
 
-	if (!ddata->enabled || !ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = sysc_runtime_suspend(dev);
-	if (error) {
-		dev_warn(ddata->dev, "%s busy %i %s\n",
-			 __func__, error, ddata->name ? ddata->name : "");
-
-		return 0;
-	}
-
-	ddata->needs_resume = true;
-
-	return 0;
+	return pm_runtime_force_suspend(dev);
 }
 
-static int sysc_noirq_resume(struct device *dev)
+static int __maybe_unused sysc_noirq_resume(struct device *dev)
 {
 	struct sysc *ddata;
 	int error;
@@ -809,30 +724,10 @@ static int sysc_noirq_resume(struct device *dev)
 	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
 		return 0;
 
-	if (!ddata->needs_resume || !ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = sysc_runtime_resume(dev);
-	if (error) {
-		dev_warn(ddata->dev, "%s cannot resume %i %s\n",
-			 __func__, error,
-			 ddata->name ? ddata->name : "");
-
-		return error;
-	}
-
-	/* Maybe also reconsider clearing noirq_suspend at some point */
-	ddata->needs_resume = false;
-
-	return 0;
+	return pm_runtime_force_resume(dev);
 }
-#endif
 
 static const struct dev_pm_ops sysc_pm_ops = {
-	SET_SYSTEM_SLEEP_PM_OPS(sysc_suspend, sysc_resume)
 	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sysc_noirq_suspend, sysc_noirq_resume)
 	SET_RUNTIME_PM_OPS(sysc_runtime_suspend,
 			   sysc_runtime_resume,
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-10-01 16:32                     ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-10-01 16:32 UTC (permalink / raw)
  To: linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [180927 05:00]:
> Also tested on beaglebone black DS0 works fine. Although there seems to
> be an additional warning which was not seen before:
> 
> "l4-wkup-clkctrl:0008:0: failed to disable"
> 
> log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/

Can you test the following patch applied on top of the
omap-for-v4.20/dt-ti-sysc-tmp-testing-v2 testing branch?

Based on Grygorii's i2c-omap comments, I think we should also
do the following in the ti-sysc driver becasuse the pm_runtime
use count can be whatever.

Regards,

Tony

8< ----------------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Mon, 1 Oct 2018 09:11:57 -0700
Subject: [PATCH] bus: ti-sysc: Just use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS

As Grygorii Strashko pointed out, the runtime PM use count of the
children can be whatever at suspend and we should not use it. So
let's just suspend ti-sysc at noirq level and get rid of some code.

Let's also remove the PM_SLEEP ifdef and use __maybe_unused as the
PM code already deals with the ifdefs.

Suggested-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 drivers/bus/ti-sysc.c | 113 ++----------------------------------------
 1 file changed, 4 insertions(+), 109 deletions(-)

diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -87,7 +87,6 @@ struct sysc {
 	u32 revision;
 	bool enabled;
 	bool needs_resume;
-	unsigned int noirq_suspend:1;
 	bool child_needs_resume;
 	struct delayed_work idle_work;
 };
@@ -702,75 +701,7 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
 	return error;
 }
 
-#ifdef CONFIG_PM_SLEEP
-static int sysc_suspend(struct device *dev)
-{
-	struct sysc *ddata;
-	int error;
-
-	ddata = dev_get_drvdata(dev);
-
-	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
-		return 0;
-
-	if (!ddata->enabled || ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = pm_runtime_put_sync_suspend(dev);
-	if (error == -EBUSY) {
-		dev_dbg(ddata->dev, "%s busy, tagging for noirq suspend %s\n",
-			__func__, ddata->name ? ddata->name : "");
-
-		ddata->noirq_suspend = true;
-
-		return 0;
-	} else if (error < 0) {
-		dev_warn(ddata->dev, "%s cannot suspend %i %s\n",
-			 __func__, error,
-			 ddata->name ? ddata->name : "");
-
-		return 0;
-	}
-
-	ddata->needs_resume = true;
-
-	return 0;
-}
-
-static int sysc_resume(struct device *dev)
-{
-	struct sysc *ddata;
-	int error;
-
-	ddata = dev_get_drvdata(dev);
-
-	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
-		return 0;
-
-	if (!ddata->needs_resume || ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = pm_runtime_get_sync(dev);
-	if (error < 0) {
-		dev_err(ddata->dev, "%s  error %i %s\n",
-			__func__, error,
-			ddata->name ? ddata->name : "");
-
-		return error;
-	}
-
-	ddata->needs_resume = false;
-
-	return 0;
-}
-
-static int sysc_noirq_suspend(struct device *dev)
+static int __maybe_unused sysc_noirq_suspend(struct device *dev)
 {
 	struct sysc *ddata;
 	int error;
@@ -780,26 +711,10 @@ static int sysc_noirq_suspend(struct device *dev)
 	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
 		return 0;
 
-	if (!ddata->enabled || !ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = sysc_runtime_suspend(dev);
-	if (error) {
-		dev_warn(ddata->dev, "%s busy %i %s\n",
-			 __func__, error, ddata->name ? ddata->name : "");
-
-		return 0;
-	}
-
-	ddata->needs_resume = true;
-
-	return 0;
+	return pm_runtime_force_suspend(dev);
 }
 
-static int sysc_noirq_resume(struct device *dev)
+static int __maybe_unused sysc_noirq_resume(struct device *dev)
 {
 	struct sysc *ddata;
 	int error;
@@ -809,30 +724,10 @@ static int sysc_noirq_resume(struct device *dev)
 	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
 		return 0;
 
-	if (!ddata->needs_resume || !ddata->noirq_suspend)
-		return 0;
-
-	dev_dbg(ddata->dev, "%s %s\n", __func__,
-		ddata->name ? ddata->name : "");
-
-	error = sysc_runtime_resume(dev);
-	if (error) {
-		dev_warn(ddata->dev, "%s cannot resume %i %s\n",
-			 __func__, error,
-			 ddata->name ? ddata->name : "");
-
-		return error;
-	}
-
-	/* Maybe also reconsider clearing noirq_suspend at some point */
-	ddata->needs_resume = false;
-
-	return 0;
+	return pm_runtime_force_resume(dev);
 }
-#endif
 
 static const struct dev_pm_ops sysc_pm_ops = {
-	SET_SYSTEM_SLEEP_PM_OPS(sysc_suspend, sysc_resume)
 	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sysc_noirq_suspend, sysc_noirq_resume)
 	SET_RUNTIME_PM_OPS(sysc_runtime_suspend,
 			   sysc_runtime_resume,
-- 
2.19.0

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-10-01 16:32                     ` Tony Lindgren
@ 2018-10-04  4:29                       ` Keerthy
  -1 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-10-04  4:29 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: devicetree, Grygorii Strashko, Dave Gerlach, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel



On Monday 01 October 2018 10:02 PM, Tony Lindgren wrote:
> * Keerthy <j-keerthy@ti.com> [180927 05:00]:
>> Also tested on beaglebone black DS0 works fine. Although there seems to
>> be an additional warning which was not seen before:
>>
>> "l4-wkup-clkctrl:0008:0: failed to disable"
>>
>> log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/
> 
> Can you test the following patch applied on top of the
> omap-for-v4.20/dt-ti-sysc-tmp-testing-v2 testing branch?

Tony,

Apologies for the delay in responding.

AM437X-GP-EVM: https://pastebin.ubuntu.com/p/m3ybBvH7Qj/

Tested for UART/RTCWAKE/TOUCH_WAKE from DS0, apart from the expected
gpio warnings all seems fine.

AM335X-BONEBLACK: https://pastebin.ubuntu.com/p/xdsMDS5XtQ/

Tested for rtcwake/UART wake up from DS0. Again except for gpio messages
everything else seems to be fine.

Regards,
Keerthy

> 
> Based on Grygorii's i2c-omap comments, I think we should also
> do the following in the ti-sysc driver becasuse the pm_runtime
> use count can be whatever.
> 
> Regards,
> 
> Tony
> 
> 8< ----------------------
> From tony Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@atomide.com>
> Date: Mon, 1 Oct 2018 09:11:57 -0700
> Subject: [PATCH] bus: ti-sysc: Just use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS
> 
> As Grygorii Strashko pointed out, the runtime PM use count of the
> children can be whatever at suspend and we should not use it. So
> let's just suspend ti-sysc at noirq level and get rid of some code.
> 
> Let's also remove the PM_SLEEP ifdef and use __maybe_unused as the
> PM code already deals with the ifdefs.
> 
> Suggested-by: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/bus/ti-sysc.c | 113 ++----------------------------------------
>  1 file changed, 4 insertions(+), 109 deletions(-)
> 
> diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
> --- a/drivers/bus/ti-sysc.c
> +++ b/drivers/bus/ti-sysc.c
> @@ -87,7 +87,6 @@ struct sysc {
>  	u32 revision;
>  	bool enabled;
>  	bool needs_resume;
> -	unsigned int noirq_suspend:1;
>  	bool child_needs_resume;
>  	struct delayed_work idle_work;
>  };
> @@ -702,75 +701,7 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
>  	return error;
>  }
>  
> -#ifdef CONFIG_PM_SLEEP
> -static int sysc_suspend(struct device *dev)
> -{
> -	struct sysc *ddata;
> -	int error;
> -
> -	ddata = dev_get_drvdata(dev);
> -
> -	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
> -		return 0;
> -
> -	if (!ddata->enabled || ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = pm_runtime_put_sync_suspend(dev);
> -	if (error == -EBUSY) {
> -		dev_dbg(ddata->dev, "%s busy, tagging for noirq suspend %s\n",
> -			__func__, ddata->name ? ddata->name : "");
> -
> -		ddata->noirq_suspend = true;
> -
> -		return 0;
> -	} else if (error < 0) {
> -		dev_warn(ddata->dev, "%s cannot suspend %i %s\n",
> -			 __func__, error,
> -			 ddata->name ? ddata->name : "");
> -
> -		return 0;
> -	}
> -
> -	ddata->needs_resume = true;
> -
> -	return 0;
> -}
> -
> -static int sysc_resume(struct device *dev)
> -{
> -	struct sysc *ddata;
> -	int error;
> -
> -	ddata = dev_get_drvdata(dev);
> -
> -	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
> -		return 0;
> -
> -	if (!ddata->needs_resume || ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = pm_runtime_get_sync(dev);
> -	if (error < 0) {
> -		dev_err(ddata->dev, "%s  error %i %s\n",
> -			__func__, error,
> -			ddata->name ? ddata->name : "");
> -
> -		return error;
> -	}
> -
> -	ddata->needs_resume = false;
> -
> -	return 0;
> -}
> -
> -static int sysc_noirq_suspend(struct device *dev)
> +static int __maybe_unused sysc_noirq_suspend(struct device *dev)
>  {
>  	struct sysc *ddata;
>  	int error;
> @@ -780,26 +711,10 @@ static int sysc_noirq_suspend(struct device *dev)
>  	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
>  		return 0;
>  
> -	if (!ddata->enabled || !ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = sysc_runtime_suspend(dev);
> -	if (error) {
> -		dev_warn(ddata->dev, "%s busy %i %s\n",
> -			 __func__, error, ddata->name ? ddata->name : "");
> -
> -		return 0;
> -	}
> -
> -	ddata->needs_resume = true;
> -
> -	return 0;
> +	return pm_runtime_force_suspend(dev);
>  }
>  
> -static int sysc_noirq_resume(struct device *dev)
> +static int __maybe_unused sysc_noirq_resume(struct device *dev)
>  {
>  	struct sysc *ddata;
>  	int error;
> @@ -809,30 +724,10 @@ static int sysc_noirq_resume(struct device *dev)
>  	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
>  		return 0;
>  
> -	if (!ddata->needs_resume || !ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = sysc_runtime_resume(dev);
> -	if (error) {
> -		dev_warn(ddata->dev, "%s cannot resume %i %s\n",
> -			 __func__, error,
> -			 ddata->name ? ddata->name : "");
> -
> -		return error;
> -	}
> -
> -	/* Maybe also reconsider clearing noirq_suspend at some point */
> -	ddata->needs_resume = false;
> -
> -	return 0;
> +	return pm_runtime_force_resume(dev);
>  }
> -#endif
>  
>  static const struct dev_pm_ops sysc_pm_ops = {
> -	SET_SYSTEM_SLEEP_PM_OPS(sysc_suspend, sysc_resume)
>  	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sysc_noirq_suspend, sysc_noirq_resume)
>  	SET_RUNTIME_PM_OPS(sysc_runtime_suspend,
>  			   sysc_runtime_resume,
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-10-04  4:29                       ` Keerthy
  0 siblings, 0 replies; 66+ messages in thread
From: Keerthy @ 2018-10-04  4:29 UTC (permalink / raw)
  To: linux-arm-kernel



On Monday 01 October 2018 10:02 PM, Tony Lindgren wrote:
> * Keerthy <j-keerthy@ti.com> [180927 05:00]:
>> Also tested on beaglebone black DS0 works fine. Although there seems to
>> be an additional warning which was not seen before:
>>
>> "l4-wkup-clkctrl:0008:0: failed to disable"
>>
>> log: https://pastebin.ubuntu.com/p/Ns2WRdVkXS/
> 
> Can you test the following patch applied on top of the
> omap-for-v4.20/dt-ti-sysc-tmp-testing-v2 testing branch?

Tony,

Apologies for the delay in responding.

AM437X-GP-EVM: https://pastebin.ubuntu.com/p/m3ybBvH7Qj/

Tested for UART/RTCWAKE/TOUCH_WAKE from DS0, apart from the expected
gpio warnings all seems fine.

AM335X-BONEBLACK: https://pastebin.ubuntu.com/p/xdsMDS5XtQ/

Tested for rtcwake/UART wake up from DS0. Again except for gpio messages
everything else seems to be fine.

Regards,
Keerthy

> 
> Based on Grygorii's i2c-omap comments, I think we should also
> do the following in the ti-sysc driver becasuse the pm_runtime
> use count can be whatever.
> 
> Regards,
> 
> Tony
> 
> 8< ----------------------
> From tony Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@atomide.com>
> Date: Mon, 1 Oct 2018 09:11:57 -0700
> Subject: [PATCH] bus: ti-sysc: Just use SET_NOIRQ_SYSTEM_SLEEP_PM_OPS
> 
> As Grygorii Strashko pointed out, the runtime PM use count of the
> children can be whatever at suspend and we should not use it. So
> let's just suspend ti-sysc at noirq level and get rid of some code.
> 
> Let's also remove the PM_SLEEP ifdef and use __maybe_unused as the
> PM code already deals with the ifdefs.
> 
> Suggested-by: Grygorii Strashko <grygorii.strashko@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  drivers/bus/ti-sysc.c | 113 ++----------------------------------------
>  1 file changed, 4 insertions(+), 109 deletions(-)
> 
> diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
> --- a/drivers/bus/ti-sysc.c
> +++ b/drivers/bus/ti-sysc.c
> @@ -87,7 +87,6 @@ struct sysc {
>  	u32 revision;
>  	bool enabled;
>  	bool needs_resume;
> -	unsigned int noirq_suspend:1;
>  	bool child_needs_resume;
>  	struct delayed_work idle_work;
>  };
> @@ -702,75 +701,7 @@ static int __maybe_unused sysc_runtime_resume(struct device *dev)
>  	return error;
>  }
>  
> -#ifdef CONFIG_PM_SLEEP
> -static int sysc_suspend(struct device *dev)
> -{
> -	struct sysc *ddata;
> -	int error;
> -
> -	ddata = dev_get_drvdata(dev);
> -
> -	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
> -		return 0;
> -
> -	if (!ddata->enabled || ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = pm_runtime_put_sync_suspend(dev);
> -	if (error == -EBUSY) {
> -		dev_dbg(ddata->dev, "%s busy, tagging for noirq suspend %s\n",
> -			__func__, ddata->name ? ddata->name : "");
> -
> -		ddata->noirq_suspend = true;
> -
> -		return 0;
> -	} else if (error < 0) {
> -		dev_warn(ddata->dev, "%s cannot suspend %i %s\n",
> -			 __func__, error,
> -			 ddata->name ? ddata->name : "");
> -
> -		return 0;
> -	}
> -
> -	ddata->needs_resume = true;
> -
> -	return 0;
> -}
> -
> -static int sysc_resume(struct device *dev)
> -{
> -	struct sysc *ddata;
> -	int error;
> -
> -	ddata = dev_get_drvdata(dev);
> -
> -	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
> -		return 0;
> -
> -	if (!ddata->needs_resume || ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = pm_runtime_get_sync(dev);
> -	if (error < 0) {
> -		dev_err(ddata->dev, "%s  error %i %s\n",
> -			__func__, error,
> -			ddata->name ? ddata->name : "");
> -
> -		return error;
> -	}
> -
> -	ddata->needs_resume = false;
> -
> -	return 0;
> -}
> -
> -static int sysc_noirq_suspend(struct device *dev)
> +static int __maybe_unused sysc_noirq_suspend(struct device *dev)
>  {
>  	struct sysc *ddata;
>  	int error;
> @@ -780,26 +711,10 @@ static int sysc_noirq_suspend(struct device *dev)
>  	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
>  		return 0;
>  
> -	if (!ddata->enabled || !ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = sysc_runtime_suspend(dev);
> -	if (error) {
> -		dev_warn(ddata->dev, "%s busy %i %s\n",
> -			 __func__, error, ddata->name ? ddata->name : "");
> -
> -		return 0;
> -	}
> -
> -	ddata->needs_resume = true;
> -
> -	return 0;
> +	return pm_runtime_force_suspend(dev);
>  }
>  
> -static int sysc_noirq_resume(struct device *dev)
> +static int __maybe_unused sysc_noirq_resume(struct device *dev)
>  {
>  	struct sysc *ddata;
>  	int error;
> @@ -809,30 +724,10 @@ static int sysc_noirq_resume(struct device *dev)
>  	if (ddata->cfg.quirks & SYSC_QUIRK_LEGACY_IDLE)
>  		return 0;
>  
> -	if (!ddata->needs_resume || !ddata->noirq_suspend)
> -		return 0;
> -
> -	dev_dbg(ddata->dev, "%s %s\n", __func__,
> -		ddata->name ? ddata->name : "");
> -
> -	error = sysc_runtime_resume(dev);
> -	if (error) {
> -		dev_warn(ddata->dev, "%s cannot resume %i %s\n",
> -			 __func__, error,
> -			 ddata->name ? ddata->name : "");
> -
> -		return error;
> -	}
> -
> -	/* Maybe also reconsider clearing noirq_suspend at some point */
> -	ddata->needs_resume = false;
> -
> -	return 0;
> +	return pm_runtime_force_resume(dev);
>  }
> -#endif
>  
>  static const struct dev_pm_ops sysc_pm_ops = {
> -	SET_SYSTEM_SLEEP_PM_OPS(sysc_suspend, sysc_resume)
>  	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(sysc_noirq_suspend, sysc_noirq_resume)
>  	SET_RUNTIME_PM_OPS(sysc_runtime_suspend,
>  			   sysc_runtime_resume,
> 

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
  2018-10-04  4:29                       ` Keerthy
@ 2018-10-04 14:23                         ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-10-04 14:23 UTC (permalink / raw)
  To: Keerthy
  Cc: devicetree, Grygorii Strashko, Dave Gerlach, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [181004 04:34]:
> Apologies for the delay in responding.
> 
> AM437X-GP-EVM: https://pastebin.ubuntu.com/p/m3ybBvH7Qj/
> 
> Tested for UART/RTCWAKE/TOUCH_WAKE from DS0, apart from the expected
> gpio warnings all seems fine.
> 
> AM335X-BONEBLACK: https://pastebin.ubuntu.com/p/xdsMDS5XtQ/
> 
> Tested for rtcwake/UART wake up from DS0. Again except for gpio messages
> everything else seems to be fine.

OK good to hear and thanks for testing again :) I've sent
a pull request for the ti-sysc driver changes, the dts
changes for am335x, am437x and dra7 will have to wait until
v4.21 merge window at this point. Let's plan on having the
dts changes sit in Linux next for a few weeks right after
v4.20-rc1.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc
@ 2018-10-04 14:23                         ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-10-04 14:23 UTC (permalink / raw)
  To: linux-arm-kernel

* Keerthy <j-keerthy@ti.com> [181004 04:34]:
> Apologies for the delay in responding.
> 
> AM437X-GP-EVM: https://pastebin.ubuntu.com/p/m3ybBvH7Qj/
> 
> Tested for UART/RTCWAKE/TOUCH_WAKE from DS0, apart from the expected
> gpio warnings all seems fine.
> 
> AM335X-BONEBLACK: https://pastebin.ubuntu.com/p/xdsMDS5XtQ/
> 
> Tested for rtcwake/UART wake up from DS0. Again except for gpio messages
> everything else seems to be fine.

OK good to hear and thanks for testing again :) I've sent
a pull request for the ti-sysc driver changes, the dts
changes for am335x, am437x and dra7 will have to wait until
v4.21 merge window at this point. Let's plan on having the
dts changes sit in Linux next for a few weeks right after
v4.20-rc1.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
  2018-09-25  0:05   ` Tony Lindgren
@ 2018-11-27 13:03     ` Peter Ujfalusi
  -1 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-11-27 13:03 UTC (permalink / raw)
  To: Tony Lindgren, linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

Hi Tony,

On 25/09/2018 3.05, Tony Lindgren wrote:
> With l4 interconnect hierarchy and ti-sysc interconnect target module
> data in place, we can simply move all the related child devices to
> their proper location and enable probing using ti-sysc.
> 
> In general the first child device address range starts at range 0
> from the ti-sysc interconnect target so the move involves adjusting
> the child device reg properties for that.
> 
> In case of any regressions, problem devices can be reverted to probe
> with legacy platform data as needed by moving them back and removing
> the related interconnect target module node.
> 
> Note that we are not yet moving dss or wkup_m3, those will be moved
> later after some related driver changes.

Reverting this patch in linux-next makes audio working again on am335x
(bb white + audio cape) :o

Without revert the McASP FIFO would constantly underflow.

Memcpy test via dmatest works with EDMA

> 
> Cc: Dave Gerlach <d-gerlach@ti.com>
> Cc: Keerthy <j-keerthy@ti.com>
> Cc: Tero Kristo <t-kristo@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am335x-shc.dts |   2 +-
>  arch/arm/boot/dts/am33xx-l4.dtsi | 613 +++++++++++++++++++++++++++++-
>  arch/arm/boot/dts/am33xx.dtsi    | 623 +------------------------------
>  3 files changed, 614 insertions(+), 624 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am335x-shc.dts b/arch/arm/boot/dts/am335x-shc.dts
> --- a/arch/arm/boot/dts/am335x-shc.dts
> +++ b/arch/arm/boot/dts/am335x-shc.dts
> @@ -205,7 +205,7 @@
>  	pinctrl-1 = <&cpsw_sleep>;
>  	status = "okay";
>  	slaves = <1>;
> -	cpsw_emac0: slave@4a100200  {
> +	cpsw_emac0: slave@200 {
>  		phy-mode = "mii";
>  		phy-handle = <&ethernetphy0>;
>  	};
> diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
> --- a/arch/arm/boot/dts/am33xx-l4.dtsi
> +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
> @@ -31,11 +31,13 @@
>  			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
>  
>  		target-module@0 {			/* 0x44d00000, ap 4 28.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0x0 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x4000>;
> +			status = "disabled";
>  		};
>  
>  		target-module@80000 {			/* 0x44d80000, ap 6 10.0 */
> @@ -85,11 +87,28 @@
>  			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
>  
>  		target-module@0 {			/* 0x44e00000, ap 8 58.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x2000>;
> +
> +			prcm: prcm@0 {
> +				compatible = "ti,am3-prcm", "simple-bus";
> +				reg = <0 0x2000>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x2000>;
> +
> +				prcm_clocks: clocks {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +				};
> +
> +				prcm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  
>  		target-module@3000 {			/* 0x44e03000, ap 10 0a.0 */
> @@ -130,6 +149,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x7000 0x1000>;
> +
> +			gpio0: gpio@0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <96>;
> +			};
>  		};
>  
>  		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
> @@ -152,6 +181,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9000 0x1000>;
> +
> +			uart0: serial@0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <72>;
> +				status = "disabled";
> +				dmas = <&edma 26 0>, <&edma 27 0>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
> @@ -176,6 +215,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xb000 0x1000>;
> +
> +			i2c0: i2c@0 {
> +				compatible = "ti,omap4-i2c";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <70>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
> @@ -195,15 +243,90 @@
>  			#size-cells = <1>;
>  			ranges = <0x00000000 0x0000d000 0x00001000>,
>  				 <0x00001000 0x0000e000 0x00001000>;
> +
> +				tscadc: tscadc@0 {
> +					compatible = "ti,am3359-tscadc";
> +					reg = <0x0 0x1000>;
> +					interrupts = <16>;
> +					status = "disabled";
> +					dmas = <&edma 53 0>, <&edma 57 0>;
> +					dma-names = "fifo0", "fifo1";
> +
> +					tsc {
> +						compatible = "ti,am3359-tsc";
> +					};
> +					am335x_adc: adc {
> +						#io-channel-cells = <1>;
> +						compatible = "ti,am3359-adc";
> +					};
> +				};
>  		};
>  
>  		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0x10000 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x00000000 0x00010000 0x00010000>,
>  				 <0x00010000 0x00020000 0x00010000>;
> +
> +			scm: scm@0 {
> +				compatible = "ti,am3-scm", "simple-bus";
> +				reg = <0x0 0x2000>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				#pinctrl-cells = <1>;
> +				ranges = <0 0 0x2000>;
> +
> +				phy_sel: cpsw-phy-sel@650 {
> +					compatible = "ti,am3352-cpsw-phy-sel";
> +					reg= <0x650 0x4>;
> +					reg-names = "gmii-sel";
> +				};
> +
> +				am33xx_pinmux: pinmux@800 {
> +					compatible = "pinctrl-single";
> +					reg = <0x800 0x238>;
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					#pinctrl-cells = <1>;
> +					pinctrl-single,register-width = <32>;
> +					pinctrl-single,function-mask = <0x7f>;
> +				};
> +
> +				scm_conf: scm_conf@0 {
> +					compatible = "syscon", "simple-bus";
> +					reg = <0x0 0x800>;
> +					#address-cells = <1>;
> +					#size-cells = <1>;
> +					ranges = <0 0 0x800>;
> +
> +					scm_clocks: clocks {
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +					};
> +				};
> +
> +				wkup_m3_ipc: wkup_m3_ipc@1324 {
> +					compatible = "ti,am3352-wkup-m3-ipc";
> +					reg = <0x1324 0x24>;
> +					interrupts = <78>;
> +					ti,rproc = <&wkup_m3>;
> +					mboxes = <&mailbox &mbox_wkupm3>;
> +				};
> +
> +				edma_xbar: dma-router@f90 {
> +					compatible = "ti,am335x-edma-crossbar";
> +					reg = <0xf90 0x40>;
> +					#dma-cells = <3>;
> +					dma-requests = <32>;
> +					dma-masters = <&edma>;
> +				};
> +
> +				scm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  
>  		target-module@31000 {			/* 0x44e31000, ap 25 40.0 */
> @@ -226,6 +349,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x31000 0x1000>;
> +
> +			timer1: timer@0 {
> +				compatible = "ti,am335x-timer-1ms";
> +				reg = <0x0 0x400>;
> +				interrupts = <67>;
> +				ti,timer-alwon;
> +				clocks = <&timer1_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module@33000 {			/* 0x44e33000, ap 27 18.0 */
> @@ -256,6 +388,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x35000 0x1000>;
> +
> +			wdt2: wdt@0 {
> +				compatible = "ti,omap3-wdt";
> +				reg = <0x0 0x1000>;
> +				interrupts = <91>;
> +			};
>  		};
>  
>  		target-module@37000 {			/* 0x44e37000, ap 31 08.0 */
> @@ -290,6 +428,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3e000 0x1000>;
> +
> +			rtc: rtc@0 {
> +				compatible = "ti,am3352-rtc", "ti,da830-rtc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <75
> +					      76>;
> +			};
>  		};
>  
>  		target-module@40000 {			/* 0x44e40000, ap 38 68.0 */
> @@ -529,11 +674,72 @@
>  			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
>  
>  		target-module@100000 {			/* 0x4a100000, ap 3 08.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4-simple", "ti,sysc";
> +			ti,hwmods = "cpgmac0";
> +			reg = <0x101200 0x4>,
> +			      <0x101208 0x4>,
> +			      <0x101204 0x4>;
> +			reg-names = "rev", "sysc", "syss";
> +			ti,sysc-mask = <0>;
> +			ti,sysc-midle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,syss-mask = <1>;
> +			clocks = <&cpsw_125mhz_clkctrl AM3_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x100000 0x8000>;
> +
> +			mac: ethernet@0 {
> +				compatible = "ti,am335x-cpsw","ti,cpsw";
> +				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
> +				clock-names = "fck", "cpts";
> +				cpdma_channels = <8>;
> +				ale_entries = <1024>;
> +				bd_ram_size = <0x2000>;
> +				mac_control = <0x20>;
> +				slaves = <2>;
> +				active_slave = <0>;
> +				cpts_clock_mult = <0x80000000>;
> +				cpts_clock_shift = <29>;
> +				reg = <0x0 0x800
> +				       0x1200 0x100>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				/*
> +				 * c0_rx_thresh_pend
> +				 * c0_rx_pend
> +				 * c0_tx_pend
> +				 * c0_misc_pend
> +				 */
> +				interrupts = <40 41 42 43>;
> +				ranges = <0 0 0x8000>;
> +				syscon = <&scm_conf>;
> +				cpsw-phy-sel = <&phy_sel>;
> +				status = "disabled";
> +
> +				davinci_mdio: mdio@1000 {
> +					compatible = "ti,cpsw-mdio","ti,davinci_mdio";
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					ti,hwmods = "davinci_mdio";
> +					bus_freq = <1000000>;
> +					reg = <0x1000 0x100>;
> +					status = "disabled";
> +				};
> +
> +				cpsw_emac0: slave@200 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +
> +				cpsw_emac1: slave@300 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +			};
>  		};
>  
>  		target-module@180000 {			/* 0x4a180000, ap 5 10.0 */
> @@ -721,6 +927,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x22000 0x1000>;
> +
> +			uart1: serial@0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <73>;
> +				status = "disabled";
> +				dmas = <&edma 28 0>, <&edma 29 0>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@24000 {			/* 0x48024000, ap 12 14.0 */
> @@ -743,6 +959,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x24000 0x1000>;
> +
> +			uart2: serial@0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <74>;
> +				status = "disabled";
> +				dmas = <&edma 30 0>, <&edma 31 0>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@2a000 {			/* 0x4802a000, ap 14 2a.0 */
> @@ -767,6 +993,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2a000 0x1000>;
> +
> +			i2c1: i2c@0 {
> +				compatible = "ti,omap4-i2c";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <71>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@30000 {			/* 0x48030000, ap 77 08.0 */
> @@ -789,6 +1024,21 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x30000 0x1000>;
> +
> +			spi0: spi@0 {
> +				compatible = "ti,omap4-mcspi";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x400>;
> +				interrupts = <65>;
> +				ti,spi-num-cs = <2>;
> +				dmas = <&edma 16 0
> +					&edma 17 0
> +					&edma 18 0
> +					&edma 19 0>;
> +				dma-names = "tx0", "rx0", "tx1", "rx1";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@38000 {			/* 0x48038000, ap 16 02.0 */
> @@ -806,6 +1056,19 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x38000 0x2000>;
> +
> +			mcasp0: mcasp@0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46000000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <80>, <81>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 8 2>,
> +					<&edma 9 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@3c000 {			/* 0x4803c000, ap 20 32.0 */
> @@ -823,6 +1086,19 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3c000 0x2000>;
> +
> +			mcasp1: mcasp@0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46400000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <82>, <83>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 10 2>,
> +					<&edma 11 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@40000 {			/* 0x48040000, ap 22 1e.0 */
> @@ -843,6 +1119,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x40000 0x1000>;
> +
> +			timer2: timer@0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <68>;
> +				clocks = <&timer2_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module@42000 {			/* 0x48042000, ap 24 1c.0 */
> @@ -863,6 +1147,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x42000 0x1000>;
> +
> +			timer3: timer@0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <69>;
> +			};
>  		};
>  
>  		target-module@44000 {			/* 0x48044000, ap 26 26.0 */
> @@ -883,6 +1173,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x44000 0x1000>;
> +
> +			timer4: timer@0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <92>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module@46000 {			/* 0x48046000, ap 28 28.0 */
> @@ -903,6 +1200,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x46000 0x1000>;
> +
> +			timer5: timer@0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <93>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module@48000 {			/* 0x48048000, ap 30 22.0 */
> @@ -923,6 +1227,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x48000 0x1000>;
> +
> +			timer6: timer@0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <94>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module@4a000 {			/* 0x4804a000, ap 85 60.0 */
> @@ -943,6 +1254,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4a000 0x1000>;
> +
> +			timer7: timer@0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <95>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module@4c000 {			/* 0x4804c000, ap 32 36.0 */
> @@ -967,6 +1285,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4c000 0x1000>;
> +
> +			gpio1: gpio@0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <98>;
> +			};
>  		};
>  
>  		target-module@50000 {			/* 0x48050000, ap 34 2c.0 */
> @@ -998,6 +1326,19 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x60000 0x1000>;
> +
> +			mmc1: mmc@0 {
> +				compatible = "ti,omap4-hsmmc";
> +				ti,dual-volt;
> +				ti,needs-special-reset;
> +				ti,needs-special-hs-handling;
> +				dmas = <&edma_xbar 24 0 0
> +					&edma_xbar 25 0 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <64>;
> +				reg = <0x0 0x1000>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@80000 {			/* 0x48080000, ap 38 18.0 */
> @@ -1020,6 +1361,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x80000 0x10000>;
> +
> +			elm: elm@0 {
> +				compatible = "ti,am3352-elm";
> +				reg = <0x0 0x2000>;
> +				interrupts = <4>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a0000 {			/* 0x480a0000, ap 40 5e.0 */
> @@ -1046,6 +1394,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc8000 0x1000>;
> +
> +			mailbox: mailbox@0 {
> +				compatible = "ti,omap4-mailbox";
> +				reg = <0x0 0x200>;
> +				interrupts = <77>;
> +				#mbox-cells = <1>;
> +				ti,mbox-num-users = <4>;
> +				ti,mbox-num-fifos = <8>;
> +				mbox_wkupm3: wkup_m3 {
> +					ti,mbox-send-noirq;
> +					ti,mbox-tx = <0 0 0>;
> +					ti,mbox-rx = <0 0 3>;
> +				};
> +			};
>  		};
>  
>  		target-module@ca000 {			/* 0x480ca000, ap 91 40.0 */
> @@ -1069,6 +1431,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xca000 0x1000>;
> +
> +			hwspinlock: spinlock@0 {
> +				compatible = "ti,omap4-hwspinlock";
> +				reg = <0x0 0x1000>;
> +				#hwlock-cells = <1>;
> +			};
>  		};
>  
>  		target-module@cc000 {			/* 0x480cc000, ap 89 0e.0 */
> @@ -1153,6 +1521,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9c000 0x1000>;
> +
> +			i2c2: i2c@0 {
> +				compatible = "ti,omap4-i2c";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <30>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a0000 {			/* 0x481a0000, ap 79 24.0 */
> @@ -1175,6 +1552,21 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa0000 0x1000>;
> +
> +			spi1: spi@0 {
> +				compatible = "ti,omap4-mcspi";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x400>;
> +				interrupts = <125>;
> +				ti,spi-num-cs = <2>;
> +				dmas = <&edma 42 0
> +					&edma 43 0
> +					&edma 44 0
> +					&edma 45 0>;
> +				dma-names = "tx0", "rx0", "tx1", "rx1";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a2000 {			/* 0x481a2000, ap 81 2e.0 */
> @@ -1213,6 +1605,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa6000 0x1000>;
> +
> +			uart3: serial@0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <44>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a8000 {			/* 0x481a8000, ap 50 20.0 */
> @@ -1235,6 +1635,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa8000 0x1000>;
> +
> +			uart4: serial@0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <45>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@aa000 {			/* 0x481aa000, ap 52 1a.0 */
> @@ -1257,6 +1665,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xaa000 0x1000>;
> +
> +			uart5: serial@0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <46>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@ac000 {			/* 0x481ac000, ap 54 38.0 */
> @@ -1281,6 +1697,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xac000 0x1000>;
> +
> +			gpio2: gpio@0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <32>;
> +			};
>  		};
>  
>  		target-module@ae000 {			/* 0x481ae000, ap 56 3a.0 */
> @@ -1305,6 +1731,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xae000 0x1000>;
> +
> +			gpio3: gpio@0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <62>;
> +			};
>  		};
>  
>  		target-module@b0000 {			/* 0x481b0000, ap 58 50.0 */
> @@ -1316,19 +1752,49 @@
>  		};
>  
>  		target-module@cc000 {			/* 0x481cc000, ap 60 46.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can0";
> +			reg = <0xcc000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM3_D_CAN0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xcc000 0x2000>;
> +
> +			dcan0: can@0 {
> +				compatible = "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				clocks = <&dcan0_fck>;
> +				clock-names = "fck";
> +				syscon-raminit = <&scm_conf 0x644 0>;
> +				interrupts = <52>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d0000 {			/* 0x481d0000, ap 62 42.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can1";
> +			reg = <0xd0000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM3_D_CAN1_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd0000 0x2000>;
> +
> +			dcan1: can@0 {
> +				compatible = "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				clocks = <&dcan1_fck>;
> +				clock-names = "fck";
> +				syscon-raminit = <&scm_conf 0x644 1>;
> +				interrupts = <55>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d8000 {			/* 0x481d8000, ap 64 66.0 */
> @@ -1352,6 +1818,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd8000 0x1000>;
> +
> +			mmc2: mmc@0 {
> +				compatible = "ti,omap4-hsmmc";
> +				ti,needs-special-reset;
> +				dmas = <&edma 2 0
> +					&edma 3 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <28>;
> +				reg = <0x0 0x1000>;
> +				status = "disabled";
> +			};
>  		};
>  	};
>  
> @@ -1409,6 +1886,39 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x1000>;
> +
> +			epwmss0: epwmss@0 {
> +				compatible = "ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				status = "disabled";
> +				ranges = <0x48300100 0x48300100 0x80   /* ECAP */
> +					  0x48300180 0x48300180 0x80   /* EQEP */
> +					  0x48300200 0x48300200 0x80>; /* EHRPWM */
> +
> +				ecap0: ecap@48300100 {
> +					compatible = "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x48300100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					interrupts = <31>;
> +					interrupt-names = "ecap0";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm0: pwm@48300200 {
> +					compatible = "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x48300200 0x80>;
> +					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@2000 {			/* 0x48302000, ap 68 52.0 */
> @@ -1431,6 +1941,39 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2000 0x1000>;
> +
> +			epwmss1: epwmss@0 {
> +				compatible = "ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				status = "disabled";
> +				ranges = <0x48302100 0x48302100 0x80   /* ECAP */
> +					  0x48302180 0x48302180 0x80   /* EQEP */
> +					  0x48302200 0x48302200 0x80>; /* EHRPWM */
> +
> +				ecap1: ecap@48302100 {
> +					compatible = "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x48302100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					interrupts = <47>;
> +					interrupt-names = "ecap1";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm1: pwm@48302200 {
> +					compatible = "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x48302200 0x80>;
> +					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@4000 {			/* 0x48304000, ap 70 44.0 */
> @@ -1453,6 +1996,39 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4000 0x1000>;
> +
> +			epwmss2: epwmss@0 {
> +				compatible = "ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				status = "disabled";
> +				ranges = <0x48304100 0x48304100 0x80   /* ECAP */
> +					  0x48304180 0x48304180 0x80   /* EQEP */
> +					  0x48304200 0x48304200 0x80>; /* EHRPWM */
> +
> +				ecap2: ecap@48304100 {
> +					compatible = "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x48304100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					interrupts = <61>;
> +					interrupt-names = "ecap2";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm2: pwm@48304200 {
> +					compatible = "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x48304200 0x80>;
> +					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@e000 {			/* 0x4830e000, ap 72 4a.0 */
> @@ -1471,6 +2047,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xe000 0x1000>;
> +
> +			lcdc: lcdc@0 {
> +				compatible = "ti,am33xx-tilcdc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <36>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@10000 {			/* 0x48310000, ap 76 4e.1 */
> @@ -1488,6 +2071,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x10000 0x2000>;
> +
> +			rng: rng@0 {
> +				compatible = "ti,omap4-rng";
> +				reg = <0x0 0x2000>;
> +				interrupts = <111>;
> +			};
>  		};
>  
>  		target-module@13000 {			/* 0x48313000, ap 97 62.0 */
> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> --- a/arch/arm/boot/dts/am33xx.dtsi
> +++ b/arch/arm/boot/dts/am33xx.dtsi
> @@ -8,6 +8,7 @@
>   * kind, whether express or implied.
>   */
>  
> +#include <dt-bindings/bus/ti-sysc.h>
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/pinctrl/am33xx.h>
>  #include <dt-bindings/clock/am3.h>
> @@ -166,87 +167,23 @@
>  		ranges;
>  		ti,hwmods = "l3_main";
>  
> -		l4_wkup: l4_wkup@44c00000 {
> -			compatible = "ti,am3-l4-wkup", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x44c00000 0x280000>;
> -
> +		l4_wkup: interconnect@44c00000 {
>  			wkup_m3: wkup_m3@100000 {
>  				compatible = "ti,am3352-wkup-m3";
>  				reg = <0x100000 0x4000>,
> -				      <0x180000	0x2000>;
> +				      <0x180000 0x2000>;
>  				reg-names = "umem", "dmem";
>  				ti,hwmods = "wkup_m3";
>  				ti,pm-firmware = "am335x-pm-firmware.elf";
>  			};
> -
> -			prcm: prcm@200000 {
> -				compatible = "ti,am3-prcm", "simple-bus";
> -				reg = <0x200000 0x4000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0 0x200000 0x4000>;
> -
> -				prcm_clocks: clocks {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -				};
> -
> -				prcm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			scm: scm@210000 {
> -				compatible = "ti,am3-scm", "simple-bus";
> -				reg = <0x210000 0x2000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				#pinctrl-cells = <1>;
> -				ranges = <0 0x210000 0x2000>;
> -
> -				am33xx_pinmux: pinmux@800 {
> -					compatible = "pinctrl-single";
> -					reg = <0x800 0x238>;
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -					#pinctrl-cells = <1>;
> -					pinctrl-single,register-width = <32>;
> -					pinctrl-single,function-mask = <0x7f>;
> -				};
> -
> -				scm_conf: scm_conf@0 {
> -					compatible = "syscon", "simple-bus";
> -					reg = <0x0 0x800>;
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -					ranges = <0 0 0x800>;
> -
> -					scm_clocks: clocks {
> -						#address-cells = <1>;
> -						#size-cells = <0>;
> -					};
> -				};
> -
> -				wkup_m3_ipc: wkup_m3_ipc@1324 {
> -					compatible = "ti,am3352-wkup-m3-ipc";
> -					reg = <0x1324 0x24>;
> -					interrupts = <78>;
> -					ti,rproc = <&wkup_m3>;
> -					mboxes = <&mailbox &mbox_wkupm3>;
> -				};
> -
> -				edma_xbar: dma-router@f90 {
> -					compatible = "ti,am335x-edma-crossbar";
> -					reg = <0xf90 0x40>;
> -					#dma-cells = <3>;
> -					dma-requests = <32>;
> -					dma-masters = <&edma>;
> -				};
> -
> -				scm_clockdomains: clockdomains {
> -				};
> -			};
> +		};
> +		l4_per: interconnect@48000000 {
> +		};
> +		l4_fw: interconnect@47c00000 {
> +		};
> +		l4_fast: interconnect@4a000000 {
> +		};
> +		l4_mpuss: interconnect@4b140000 {
>  		};
>  
>  		intc: interrupt-controller@48200000 {
> @@ -297,166 +234,6 @@
>  			interrupt-names = "edma3_tcerrint";
>  		};
>  
> -		gpio0: gpio@44e07000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio1";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x44e07000 0x1000>;
> -			interrupts = <96>;
> -		};
> -
> -		gpio1: gpio@4804c000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio2";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x4804c000 0x1000>;
> -			interrupts = <98>;
> -		};
> -
> -		gpio2: gpio@481ac000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio3";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x481ac000 0x1000>;
> -			interrupts = <32>;
> -		};
> -
> -		gpio3: gpio@481ae000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio4";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x481ae000 0x1000>;
> -			interrupts = <62>;
> -		};
> -
> -		uart0: serial@44e09000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart1";
> -			clock-frequency = <48000000>;
> -			reg = <0x44e09000 0x2000>;
> -			interrupts = <72>;
> -			status = "disabled";
> -			dmas = <&edma 26 0>, <&edma 27 0>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		uart1: serial@48022000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart2";
> -			clock-frequency = <48000000>;
> -			reg = <0x48022000 0x2000>;
> -			interrupts = <73>;
> -			status = "disabled";
> -			dmas = <&edma 28 0>, <&edma 29 0>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		uart2: serial@48024000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart3";
> -			clock-frequency = <48000000>;
> -			reg = <0x48024000 0x2000>;
> -			interrupts = <74>;
> -			status = "disabled";
> -			dmas = <&edma 30 0>, <&edma 31 0>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		uart3: serial@481a6000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart4";
> -			clock-frequency = <48000000>;
> -			reg = <0x481a6000 0x2000>;
> -			interrupts = <44>;
> -			status = "disabled";
> -		};
> -
> -		uart4: serial@481a8000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart5";
> -			clock-frequency = <48000000>;
> -			reg = <0x481a8000 0x2000>;
> -			interrupts = <45>;
> -			status = "disabled";
> -		};
> -
> -		uart5: serial@481aa000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart6";
> -			clock-frequency = <48000000>;
> -			reg = <0x481aa000 0x2000>;
> -			interrupts = <46>;
> -			status = "disabled";
> -		};
> -
> -		i2c0: i2c@44e0b000 {
> -			compatible = "ti,omap4-i2c";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			ti,hwmods = "i2c1";
> -			reg = <0x44e0b000 0x1000>;
> -			interrupts = <70>;
> -			status = "disabled";
> -		};
> -
> -		i2c1: i2c@4802a000 {
> -			compatible = "ti,omap4-i2c";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			ti,hwmods = "i2c2";
> -			reg = <0x4802a000 0x1000>;
> -			interrupts = <71>;
> -			status = "disabled";
> -		};
> -
> -		i2c2: i2c@4819c000 {
> -			compatible = "ti,omap4-i2c";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			ti,hwmods = "i2c3";
> -			reg = <0x4819c000 0x1000>;
> -			interrupts = <30>;
> -			status = "disabled";
> -		};
> -
> -		mmc1: mmc@48060000 {
> -			compatible = "ti,omap4-hsmmc";
> -			ti,hwmods = "mmc1";
> -			ti,dual-volt;
> -			ti,needs-special-reset;
> -			ti,needs-special-hs-handling;
> -			dmas = <&edma_xbar 24 0 0
> -				&edma_xbar 25 0 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <64>;
> -			reg = <0x48060000 0x1000>;
> -			status = "disabled";
> -		};
> -
> -		mmc2: mmc@481d8000 {
> -			compatible = "ti,omap4-hsmmc";
> -			ti,hwmods = "mmc2";
> -			ti,needs-special-reset;
> -			dmas = <&edma 2 0
> -				&edma 3 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <28>;
> -			reg = <0x481d8000 0x1000>;
> -			status = "disabled";
> -		};
> -
>  		mmc3: mmc@47810000 {
>  			compatible = "ti,omap4-hsmmc";
>  			ti,hwmods = "mmc3";
> @@ -466,157 +243,6 @@
>  			status = "disabled";
>  		};
>  
> -		hwspinlock: spinlock@480ca000 {
> -			compatible = "ti,omap4-hwspinlock";
> -			reg = <0x480ca000 0x1000>;
> -			ti,hwmods = "spinlock";
> -			#hwlock-cells = <1>;
> -		};
> -
> -		wdt2: wdt@44e35000 {
> -			compatible = "ti,omap3-wdt";
> -			ti,hwmods = "wd_timer2";
> -			reg = <0x44e35000 0x1000>;
> -			interrupts = <91>;
> -		};
> -
> -		dcan0: can@481cc000 {
> -			compatible = "ti,am3352-d_can";
> -			ti,hwmods = "d_can0";
> -			reg = <0x481cc000 0x2000>;
> -			clocks = <&dcan0_fck>;
> -			clock-names = "fck";
> -			syscon-raminit = <&scm_conf 0x644 0>;
> -			interrupts = <52>;
> -			status = "disabled";
> -		};
> -
> -		dcan1: can@481d0000 {
> -			compatible = "ti,am3352-d_can";
> -			ti,hwmods = "d_can1";
> -			reg = <0x481d0000 0x2000>;
> -			clocks = <&dcan1_fck>;
> -			clock-names = "fck";
> -			syscon-raminit = <&scm_conf 0x644 1>;
> -			interrupts = <55>;
> -			status = "disabled";
> -		};
> -
> -		mailbox: mailbox@480c8000 {
> -			compatible = "ti,omap4-mailbox";
> -			reg = <0x480C8000 0x200>;
> -			interrupts = <77>;
> -			ti,hwmods = "mailbox";
> -			#mbox-cells = <1>;
> -			ti,mbox-num-users = <4>;
> -			ti,mbox-num-fifos = <8>;
> -			mbox_wkupm3: wkup_m3 {
> -				ti,mbox-send-noirq;
> -				ti,mbox-tx = <0 0 0>;
> -				ti,mbox-rx = <0 0 3>;
> -			};
> -		};
> -
> -		timer1: timer@44e31000 {
> -			compatible = "ti,am335x-timer-1ms";
> -			reg = <0x44e31000 0x400>;
> -			interrupts = <67>;
> -			ti,hwmods = "timer1";
> -			ti,timer-alwon;
> -			clocks = <&timer1_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer2: timer@48040000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48040000 0x400>;
> -			interrupts = <68>;
> -			ti,hwmods = "timer2";
> -			clocks = <&timer2_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer3: timer@48042000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48042000 0x400>;
> -			interrupts = <69>;
> -			ti,hwmods = "timer3";
> -		};
> -
> -		timer4: timer@48044000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48044000 0x400>;
> -			interrupts = <92>;
> -			ti,hwmods = "timer4";
> -			ti,timer-pwm;
> -		};
> -
> -		timer5: timer@48046000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48046000 0x400>;
> -			interrupts = <93>;
> -			ti,hwmods = "timer5";
> -			ti,timer-pwm;
> -		};
> -
> -		timer6: timer@48048000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48048000 0x400>;
> -			interrupts = <94>;
> -			ti,hwmods = "timer6";
> -			ti,timer-pwm;
> -		};
> -
> -		timer7: timer@4804a000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x4804a000 0x400>;
> -			interrupts = <95>;
> -			ti,hwmods = "timer7";
> -			ti,timer-pwm;
> -		};
> -
> -		rtc: rtc@44e3e000 {
> -			compatible = "ti,am3352-rtc", "ti,da830-rtc";
> -			reg = <0x44e3e000 0x1000>;
> -			interrupts = <75
> -				      76>;
> -			ti,hwmods = "rtc";
> -			clocks = <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
> -			clock-names = "int-clk";
> -		};
> -
> -		spi0: spi@48030000 {
> -			compatible = "ti,omap4-mcspi";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			reg = <0x48030000 0x400>;
> -			interrupts = <65>;
> -			ti,spi-num-cs = <2>;
> -			ti,hwmods = "spi0";
> -			dmas = <&edma 16 0
> -				&edma 17 0
> -				&edma 18 0
> -				&edma 19 0>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1";
> -			status = "disabled";
> -		};
> -
> -		spi1: spi@481a0000 {
> -			compatible = "ti,omap4-mcspi";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			reg = <0x481a0000 0x400>;
> -			interrupts = <125>;
> -			ti,spi-num-cs = <2>;
> -			ti,hwmods = "spi1";
> -			dmas = <&edma 42 0
> -				&edma 43 0
> -				&edma 44 0
> -				&edma 45 0>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1";
> -			status = "disabled";
> -		};
> -
>  		usb: usb@47400000 {
>  			compatible = "ti,am33xx-usb";
>  			reg = <0x47400000 0x1000>;
> @@ -747,163 +373,6 @@
>  			};
>  		};
>  
> -		epwmss0: epwmss@48300000 {
> -			compatible = "ti,am33xx-pwmss";
> -			reg = <0x48300000 0x10>;
> -			ti,hwmods = "epwmss0";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			status = "disabled";
> -			ranges = <0x48300100 0x48300100 0x80   /* ECAP */
> -				  0x48300180 0x48300180 0x80   /* EQEP */
> -				  0x48300200 0x48300200 0x80>; /* EHRPWM */
> -
> -			ecap0: ecap@48300100 {
> -				compatible = "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48300100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				interrupts = <31>;
> -				interrupt-names = "ecap0";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm0: pwm@48300200 {
> -				compatible = "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48300200 0x80>;
> -				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss1: epwmss@48302000 {
> -			compatible = "ti,am33xx-pwmss";
> -			reg = <0x48302000 0x10>;
> -			ti,hwmods = "epwmss1";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			status = "disabled";
> -			ranges = <0x48302100 0x48302100 0x80   /* ECAP */
> -				  0x48302180 0x48302180 0x80   /* EQEP */
> -				  0x48302200 0x48302200 0x80>; /* EHRPWM */
> -
> -			ecap1: ecap@48302100 {
> -				compatible = "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48302100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				interrupts = <47>;
> -				interrupt-names = "ecap1";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm1: pwm@48302200 {
> -				compatible = "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48302200 0x80>;
> -				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss2: epwmss@48304000 {
> -			compatible = "ti,am33xx-pwmss";
> -			reg = <0x48304000 0x10>;
> -			ti,hwmods = "epwmss2";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			status = "disabled";
> -			ranges = <0x48304100 0x48304100 0x80   /* ECAP */
> -				  0x48304180 0x48304180 0x80   /* EQEP */
> -				  0x48304200 0x48304200 0x80>; /* EHRPWM */
> -
> -			ecap2: ecap@48304100 {
> -				compatible = "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48304100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				interrupts = <61>;
> -				interrupt-names = "ecap2";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm2: pwm@48304200 {
> -				compatible = "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48304200 0x80>;
> -				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		mac: ethernet@4a100000 {
> -			compatible = "ti,am335x-cpsw","ti,cpsw";
> -			ti,hwmods = "cpgmac0";
> -			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
> -			clock-names = "fck", "cpts";
> -			cpdma_channels = <8>;
> -			ale_entries = <1024>;
> -			bd_ram_size = <0x2000>;
> -			mac_control = <0x20>;
> -			slaves = <2>;
> -			active_slave = <0>;
> -			cpts_clock_mult = <0x80000000>;
> -			cpts_clock_shift = <29>;
> -			reg = <0x4a100000 0x800
> -			       0x4a101200 0x100>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			/*
> -			 * c0_rx_thresh_pend
> -			 * c0_rx_pend
> -			 * c0_tx_pend
> -			 * c0_misc_pend
> -			 */
> -			interrupts = <40 41 42 43>;
> -			ranges;
> -			syscon = <&scm_conf>;
> -			status = "disabled";
> -
> -			davinci_mdio: mdio@4a101000 {
> -				compatible = "ti,cpsw-mdio","ti,davinci_mdio";
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				ti,hwmods = "davinci_mdio";
> -				bus_freq = <1000000>;
> -				reg = <0x4a101000 0x100>;
> -				status = "disabled";
> -			};
> -
> -			cpsw_emac0: slave@4a100200 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			cpsw_emac1: slave@4a100300 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			phy_sel: cpsw-phy-sel@44e10650 {
> -				compatible = "ti,am3352-cpsw-phy-sel";
> -				reg= <0x44e10650 0x4>;
> -				reg-names = "gmii-sel";
> -			};
> -		};
> -
>  		ocmcram: ocmcram@40300000 {
>  			compatible = "mmio-sram";
>  			reg = <0x40300000 0x10000>; /* 64k */
> @@ -924,40 +393,6 @@
>  			};
>  		};
>  
> -		elm: elm@48080000 {
> -			compatible = "ti,am3352-elm";
> -			reg = <0x48080000 0x2000>;
> -			interrupts = <4>;
> -			ti,hwmods = "elm";
> -			status = "disabled";
> -		};
> -
> -		lcdc: lcdc@4830e000 {
> -			compatible = "ti,am33xx-tilcdc";
> -			reg = <0x4830e000 0x1000>;
> -			interrupts = <36>;
> -			ti,hwmods = "lcdc";
> -			status = "disabled";
> -		};
> -
> -		tscadc: tscadc@44e0d000 {
> -			compatible = "ti,am3359-tscadc";
> -			reg = <0x44e0d000 0x1000>;
> -			interrupts = <16>;
> -			ti,hwmods = "adc_tsc";
> -			status = "disabled";
> -			dmas = <&edma 53 0>, <&edma 57 0>;
> -			dma-names = "fifo0", "fifo1";
> -
> -			tsc {
> -				compatible = "ti,am3359-tsc";
> -			};
> -			am335x_adc: adc {
> -				#io-channel-cells = <1>;
> -				compatible = "ti,am3359-adc";
> -			};
> -		};
> -
>  		emif: emif@4c000000 {
>  			compatible = "ti,emif-am3352";
>  			reg = <0x4c000000 0x1000000>;
> @@ -1005,42 +440,8 @@
>  			       <&edma 5 0>;
>  			dma-names = "tx", "rx";
>  		};
> -
> -		mcasp0: mcasp@48038000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp0";
> -			reg = <0x48038000 0x2000>,
> -			      <0x46000000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <80>, <81>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 8 2>,
> -				<&edma 9 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		mcasp1: mcasp@4803c000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp1";
> -			reg = <0x4803C000 0x2000>,
> -			      <0x46400000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <82>, <83>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 10 2>,
> -				<&edma 11 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		rng: rng@48310000 {
> -			compatible = "ti,omap4-rng";
> -			ti,hwmods = "rng";
> -			reg = <0x48310000 0x2000>;
> -			interrupts = <111>;
> -		};
>  	};
>  };
>  
> +#include "am33xx-l4.dtsi"
>  #include "am33xx-clocks.dtsi"
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
@ 2018-11-27 13:03     ` Peter Ujfalusi
  0 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-11-27 13:03 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Tony,

On 25/09/2018 3.05, Tony Lindgren wrote:
> With l4 interconnect hierarchy and ti-sysc interconnect target module
> data in place, we can simply move all the related child devices to
> their proper location and enable probing using ti-sysc.
> 
> In general the first child device address range starts at range 0
> from the ti-sysc interconnect target so the move involves adjusting
> the child device reg properties for that.
> 
> In case of any regressions, problem devices can be reverted to probe
> with legacy platform data as needed by moving them back and removing
> the related interconnect target module node.
> 
> Note that we are not yet moving dss or wkup_m3, those will be moved
> later after some related driver changes.

Reverting this patch in linux-next makes audio working again on am335x
(bb white + audio cape) :o

Without revert the McASP FIFO would constantly underflow.

Memcpy test via dmatest works with EDMA

> 
> Cc: Dave Gerlach <d-gerlach@ti.com>
> Cc: Keerthy <j-keerthy@ti.com>
> Cc: Tero Kristo <t-kristo@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am335x-shc.dts |   2 +-
>  arch/arm/boot/dts/am33xx-l4.dtsi | 613 +++++++++++++++++++++++++++++-
>  arch/arm/boot/dts/am33xx.dtsi    | 623 +------------------------------
>  3 files changed, 614 insertions(+), 624 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am335x-shc.dts b/arch/arm/boot/dts/am335x-shc.dts
> --- a/arch/arm/boot/dts/am335x-shc.dts
> +++ b/arch/arm/boot/dts/am335x-shc.dts
> @@ -205,7 +205,7 @@
>  	pinctrl-1 = <&cpsw_sleep>;
>  	status = "okay";
>  	slaves = <1>;
> -	cpsw_emac0: slave at 4a100200  {
> +	cpsw_emac0: slave at 200 {
>  		phy-mode = "mii";
>  		phy-handle = <&ethernetphy0>;
>  	};
> diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
> --- a/arch/arm/boot/dts/am33xx-l4.dtsi
> +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
> @@ -31,11 +31,13 @@
>  			 <0x00082000 0x00182000 0x001000>;	/* ap 7 */
>  
>  		target-module at 0 {			/* 0x44d00000, ap 4 28.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0x0 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x4000>;
> +			status = "disabled";
>  		};
>  
>  		target-module at 80000 {			/* 0x44d80000, ap 6 10.0 */
> @@ -85,11 +87,28 @@
>  			 <0x00080000 0x00280000 0x001000>;	/* ap 39 */
>  
>  		target-module at 0 {			/* 0x44e00000, ap 8 58.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x2000>;
> +
> +			prcm: prcm at 0 {
> +				compatible = "ti,am3-prcm", "simple-bus";
> +				reg = <0 0x2000>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x2000>;
> +
> +				prcm_clocks: clocks {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +				};
> +
> +				prcm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  
>  		target-module at 3000 {			/* 0x44e03000, ap 10 0a.0 */
> @@ -130,6 +149,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x7000 0x1000>;
> +
> +			gpio0: gpio at 0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <96>;
> +			};
>  		};
>  
>  		target-module at 9000 {			/* 0x44e09000, ap 16 04.0 */
> @@ -152,6 +181,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9000 0x1000>;
> +
> +			uart0: serial at 0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <72>;
> +				status = "disabled";
> +				dmas = <&edma 26 0>, <&edma 27 0>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module at b000 {			/* 0x44e0b000, ap 18 48.0 */
> @@ -176,6 +215,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xb000 0x1000>;
> +
> +			i2c0: i2c at 0 {
> +				compatible = "ti,omap4-i2c";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <70>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at d000 {			/* 0x44e0d000, ap 20 38.0 */
> @@ -195,15 +243,90 @@
>  			#size-cells = <1>;
>  			ranges = <0x00000000 0x0000d000 0x00001000>,
>  				 <0x00001000 0x0000e000 0x00001000>;
> +
> +				tscadc: tscadc at 0 {
> +					compatible = "ti,am3359-tscadc";
> +					reg = <0x0 0x1000>;
> +					interrupts = <16>;
> +					status = "disabled";
> +					dmas = <&edma 53 0>, <&edma 57 0>;
> +					dma-names = "fifo0", "fifo1";
> +
> +					tsc {
> +						compatible = "ti,am3359-tsc";
> +					};
> +					am335x_adc: adc {
> +						#io-channel-cells = <1>;
> +						compatible = "ti,am3359-adc";
> +					};
> +				};
>  		};
>  
>  		target-module at 10000 {			/* 0x44e10000, ap 22 0c.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0x10000 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x00000000 0x00010000 0x00010000>,
>  				 <0x00010000 0x00020000 0x00010000>;
> +
> +			scm: scm at 0 {
> +				compatible = "ti,am3-scm", "simple-bus";
> +				reg = <0x0 0x2000>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				#pinctrl-cells = <1>;
> +				ranges = <0 0 0x2000>;
> +
> +				phy_sel: cpsw-phy-sel at 650 {
> +					compatible = "ti,am3352-cpsw-phy-sel";
> +					reg= <0x650 0x4>;
> +					reg-names = "gmii-sel";
> +				};
> +
> +				am33xx_pinmux: pinmux at 800 {
> +					compatible = "pinctrl-single";
> +					reg = <0x800 0x238>;
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					#pinctrl-cells = <1>;
> +					pinctrl-single,register-width = <32>;
> +					pinctrl-single,function-mask = <0x7f>;
> +				};
> +
> +				scm_conf: scm_conf at 0 {
> +					compatible = "syscon", "simple-bus";
> +					reg = <0x0 0x800>;
> +					#address-cells = <1>;
> +					#size-cells = <1>;
> +					ranges = <0 0 0x800>;
> +
> +					scm_clocks: clocks {
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +					};
> +				};
> +
> +				wkup_m3_ipc: wkup_m3_ipc at 1324 {
> +					compatible = "ti,am3352-wkup-m3-ipc";
> +					reg = <0x1324 0x24>;
> +					interrupts = <78>;
> +					ti,rproc = <&wkup_m3>;
> +					mboxes = <&mailbox &mbox_wkupm3>;
> +				};
> +
> +				edma_xbar: dma-router at f90 {
> +					compatible = "ti,am335x-edma-crossbar";
> +					reg = <0xf90 0x40>;
> +					#dma-cells = <3>;
> +					dma-requests = <32>;
> +					dma-masters = <&edma>;
> +				};
> +
> +				scm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  
>  		target-module at 31000 {			/* 0x44e31000, ap 25 40.0 */
> @@ -226,6 +349,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x31000 0x1000>;
> +
> +			timer1: timer at 0 {
> +				compatible = "ti,am335x-timer-1ms";
> +				reg = <0x0 0x400>;
> +				interrupts = <67>;
> +				ti,timer-alwon;
> +				clocks = <&timer1_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module at 33000 {			/* 0x44e33000, ap 27 18.0 */
> @@ -256,6 +388,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x35000 0x1000>;
> +
> +			wdt2: wdt at 0 {
> +				compatible = "ti,omap3-wdt";
> +				reg = <0x0 0x1000>;
> +				interrupts = <91>;
> +			};
>  		};
>  
>  		target-module at 37000 {			/* 0x44e37000, ap 31 08.0 */
> @@ -290,6 +428,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3e000 0x1000>;
> +
> +			rtc: rtc at 0 {
> +				compatible = "ti,am3352-rtc", "ti,da830-rtc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <75
> +					      76>;
> +			};
>  		};
>  
>  		target-module at 40000 {			/* 0x44e40000, ap 38 68.0 */
> @@ -529,11 +674,72 @@
>  			 <0x00380000 0x00380000 0x001000>;	/* ap 10 */
>  
>  		target-module at 100000 {			/* 0x4a100000, ap 3 08.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4-simple", "ti,sysc";
> +			ti,hwmods = "cpgmac0";
> +			reg = <0x101200 0x4>,
> +			      <0x101208 0x4>,
> +			      <0x101204 0x4>;
> +			reg-names = "rev", "sysc", "syss";
> +			ti,sysc-mask = <0>;
> +			ti,sysc-midle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,syss-mask = <1>;
> +			clocks = <&cpsw_125mhz_clkctrl AM3_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x100000 0x8000>;
> +
> +			mac: ethernet at 0 {
> +				compatible = "ti,am335x-cpsw","ti,cpsw";
> +				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
> +				clock-names = "fck", "cpts";
> +				cpdma_channels = <8>;
> +				ale_entries = <1024>;
> +				bd_ram_size = <0x2000>;
> +				mac_control = <0x20>;
> +				slaves = <2>;
> +				active_slave = <0>;
> +				cpts_clock_mult = <0x80000000>;
> +				cpts_clock_shift = <29>;
> +				reg = <0x0 0x800
> +				       0x1200 0x100>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				/*
> +				 * c0_rx_thresh_pend
> +				 * c0_rx_pend
> +				 * c0_tx_pend
> +				 * c0_misc_pend
> +				 */
> +				interrupts = <40 41 42 43>;
> +				ranges = <0 0 0x8000>;
> +				syscon = <&scm_conf>;
> +				cpsw-phy-sel = <&phy_sel>;
> +				status = "disabled";
> +
> +				davinci_mdio: mdio at 1000 {
> +					compatible = "ti,cpsw-mdio","ti,davinci_mdio";
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					ti,hwmods = "davinci_mdio";
> +					bus_freq = <1000000>;
> +					reg = <0x1000 0x100>;
> +					status = "disabled";
> +				};
> +
> +				cpsw_emac0: slave at 200 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +
> +				cpsw_emac1: slave at 300 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +			};
>  		};
>  
>  		target-module at 180000 {			/* 0x4a180000, ap 5 10.0 */
> @@ -721,6 +927,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x22000 0x1000>;
> +
> +			uart1: serial at 0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <73>;
> +				status = "disabled";
> +				dmas = <&edma 28 0>, <&edma 29 0>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module at 24000 {			/* 0x48024000, ap 12 14.0 */
> @@ -743,6 +959,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x24000 0x1000>;
> +
> +			uart2: serial at 0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <74>;
> +				status = "disabled";
> +				dmas = <&edma 30 0>, <&edma 31 0>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module at 2a000 {			/* 0x4802a000, ap 14 2a.0 */
> @@ -767,6 +993,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2a000 0x1000>;
> +
> +			i2c1: i2c at 0 {
> +				compatible = "ti,omap4-i2c";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <71>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at 30000 {			/* 0x48030000, ap 77 08.0 */
> @@ -789,6 +1024,21 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x30000 0x1000>;
> +
> +			spi0: spi at 0 {
> +				compatible = "ti,omap4-mcspi";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x400>;
> +				interrupts = <65>;
> +				ti,spi-num-cs = <2>;
> +				dmas = <&edma 16 0
> +					&edma 17 0
> +					&edma 18 0
> +					&edma 19 0>;
> +				dma-names = "tx0", "rx0", "tx1", "rx1";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at 38000 {			/* 0x48038000, ap 16 02.0 */
> @@ -806,6 +1056,19 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x38000 0x2000>;
> +
> +			mcasp0: mcasp at 0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46000000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <80>, <81>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 8 2>,
> +					<&edma 9 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module at 3c000 {			/* 0x4803c000, ap 20 32.0 */
> @@ -823,6 +1086,19 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3c000 0x2000>;
> +
> +			mcasp1: mcasp at 0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46400000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <82>, <83>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 10 2>,
> +					<&edma 11 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module at 40000 {			/* 0x48040000, ap 22 1e.0 */
> @@ -843,6 +1119,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x40000 0x1000>;
> +
> +			timer2: timer at 0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <68>;
> +				clocks = <&timer2_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module at 42000 {			/* 0x48042000, ap 24 1c.0 */
> @@ -863,6 +1147,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x42000 0x1000>;
> +
> +			timer3: timer at 0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <69>;
> +			};
>  		};
>  
>  		target-module at 44000 {			/* 0x48044000, ap 26 26.0 */
> @@ -883,6 +1173,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x44000 0x1000>;
> +
> +			timer4: timer at 0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <92>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module at 46000 {			/* 0x48046000, ap 28 28.0 */
> @@ -903,6 +1200,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x46000 0x1000>;
> +
> +			timer5: timer at 0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <93>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module at 48000 {			/* 0x48048000, ap 30 22.0 */
> @@ -923,6 +1227,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x48000 0x1000>;
> +
> +			timer6: timer at 0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <94>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module at 4a000 {			/* 0x4804a000, ap 85 60.0 */
> @@ -943,6 +1254,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4a000 0x1000>;
> +
> +			timer7: timer at 0 {
> +				compatible = "ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <95>;
> +				ti,timer-pwm;
> +			};
>  		};
>  
>  		target-module at 4c000 {			/* 0x4804c000, ap 32 36.0 */
> @@ -967,6 +1285,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4c000 0x1000>;
> +
> +			gpio1: gpio at 0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <98>;
> +			};
>  		};
>  
>  		target-module at 50000 {			/* 0x48050000, ap 34 2c.0 */
> @@ -998,6 +1326,19 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x60000 0x1000>;
> +
> +			mmc1: mmc at 0 {
> +				compatible = "ti,omap4-hsmmc";
> +				ti,dual-volt;
> +				ti,needs-special-reset;
> +				ti,needs-special-hs-handling;
> +				dmas = <&edma_xbar 24 0 0
> +					&edma_xbar 25 0 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <64>;
> +				reg = <0x0 0x1000>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at 80000 {			/* 0x48080000, ap 38 18.0 */
> @@ -1020,6 +1361,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x80000 0x10000>;
> +
> +			elm: elm at 0 {
> +				compatible = "ti,am3352-elm";
> +				reg = <0x0 0x2000>;
> +				interrupts = <4>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at a0000 {			/* 0x480a0000, ap 40 5e.0 */
> @@ -1046,6 +1394,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc8000 0x1000>;
> +
> +			mailbox: mailbox at 0 {
> +				compatible = "ti,omap4-mailbox";
> +				reg = <0x0 0x200>;
> +				interrupts = <77>;
> +				#mbox-cells = <1>;
> +				ti,mbox-num-users = <4>;
> +				ti,mbox-num-fifos = <8>;
> +				mbox_wkupm3: wkup_m3 {
> +					ti,mbox-send-noirq;
> +					ti,mbox-tx = <0 0 0>;
> +					ti,mbox-rx = <0 0 3>;
> +				};
> +			};
>  		};
>  
>  		target-module at ca000 {			/* 0x480ca000, ap 91 40.0 */
> @@ -1069,6 +1431,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xca000 0x1000>;
> +
> +			hwspinlock: spinlock at 0 {
> +				compatible = "ti,omap4-hwspinlock";
> +				reg = <0x0 0x1000>;
> +				#hwlock-cells = <1>;
> +			};
>  		};
>  
>  		target-module at cc000 {			/* 0x480cc000, ap 89 0e.0 */
> @@ -1153,6 +1521,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9c000 0x1000>;
> +
> +			i2c2: i2c at 0 {
> +				compatible = "ti,omap4-i2c";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <30>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at a0000 {			/* 0x481a0000, ap 79 24.0 */
> @@ -1175,6 +1552,21 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa0000 0x1000>;
> +
> +			spi1: spi at 0 {
> +				compatible = "ti,omap4-mcspi";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				reg = <0x0 0x400>;
> +				interrupts = <125>;
> +				ti,spi-num-cs = <2>;
> +				dmas = <&edma 42 0
> +					&edma 43 0
> +					&edma 44 0
> +					&edma 45 0>;
> +				dma-names = "tx0", "rx0", "tx1", "rx1";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at a2000 {			/* 0x481a2000, ap 81 2e.0 */
> @@ -1213,6 +1605,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa6000 0x1000>;
> +
> +			uart3: serial at 0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <44>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at a8000 {			/* 0x481a8000, ap 50 20.0 */
> @@ -1235,6 +1635,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa8000 0x1000>;
> +
> +			uart4: serial at 0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <45>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at aa000 {			/* 0x481aa000, ap 52 1a.0 */
> @@ -1257,6 +1665,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xaa000 0x1000>;
> +
> +			uart5: serial at 0 {
> +				compatible = "ti,am3352-uart", "ti,omap3-uart";
> +				clock-frequency = <48000000>;
> +				reg = <0x0 0x2000>;
> +				interrupts = <46>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at ac000 {			/* 0x481ac000, ap 54 38.0 */
> @@ -1281,6 +1697,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xac000 0x1000>;
> +
> +			gpio2: gpio at 0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <32>;
> +			};
>  		};
>  
>  		target-module at ae000 {			/* 0x481ae000, ap 56 3a.0 */
> @@ -1305,6 +1731,16 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xae000 0x1000>;
> +
> +			gpio3: gpio at 0 {
> +				compatible = "ti,omap4-gpio";
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				reg = <0x0 0x1000>;
> +				interrupts = <62>;
> +			};
>  		};
>  
>  		target-module at b0000 {			/* 0x481b0000, ap 58 50.0 */
> @@ -1316,19 +1752,49 @@
>  		};
>  
>  		target-module at cc000 {			/* 0x481cc000, ap 60 46.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can0";
> +			reg = <0xcc000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM3_D_CAN0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xcc000 0x2000>;
> +
> +			dcan0: can at 0 {
> +				compatible = "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				clocks = <&dcan0_fck>;
> +				clock-names = "fck";
> +				syscon-raminit = <&scm_conf 0x644 0>;
> +				interrupts = <52>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at d0000 {			/* 0x481d0000, ap 62 42.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can1";
> +			reg = <0xd0000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM3_D_CAN1_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd0000 0x2000>;
> +
> +			dcan1: can at 0 {
> +				compatible = "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				clocks = <&dcan1_fck>;
> +				clock-names = "fck";
> +				syscon-raminit = <&scm_conf 0x644 1>;
> +				interrupts = <55>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at d8000 {			/* 0x481d8000, ap 64 66.0 */
> @@ -1352,6 +1818,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd8000 0x1000>;
> +
> +			mmc2: mmc at 0 {
> +				compatible = "ti,omap4-hsmmc";
> +				ti,needs-special-reset;
> +				dmas = <&edma 2 0
> +					&edma 3 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <28>;
> +				reg = <0x0 0x1000>;
> +				status = "disabled";
> +			};
>  		};
>  	};
>  
> @@ -1409,6 +1886,39 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x1000>;
> +
> +			epwmss0: epwmss at 0 {
> +				compatible = "ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				status = "disabled";
> +				ranges = <0x48300100 0x48300100 0x80   /* ECAP */
> +					  0x48300180 0x48300180 0x80   /* EQEP */
> +					  0x48300200 0x48300200 0x80>; /* EHRPWM */
> +
> +				ecap0: ecap at 48300100 {
> +					compatible = "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x48300100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					interrupts = <31>;
> +					interrupt-names = "ecap0";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm0: pwm at 48300200 {
> +					compatible = "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x48300200 0x80>;
> +					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module at 2000 {			/* 0x48302000, ap 68 52.0 */
> @@ -1431,6 +1941,39 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2000 0x1000>;
> +
> +			epwmss1: epwmss at 0 {
> +				compatible = "ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				status = "disabled";
> +				ranges = <0x48302100 0x48302100 0x80   /* ECAP */
> +					  0x48302180 0x48302180 0x80   /* EQEP */
> +					  0x48302200 0x48302200 0x80>; /* EHRPWM */
> +
> +				ecap1: ecap at 48302100 {
> +					compatible = "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x48302100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					interrupts = <47>;
> +					interrupt-names = "ecap1";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm1: pwm at 48302200 {
> +					compatible = "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x48302200 0x80>;
> +					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module at 4000 {			/* 0x48304000, ap 70 44.0 */
> @@ -1453,6 +1996,39 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4000 0x1000>;
> +
> +			epwmss2: epwmss at 0 {
> +				compatible = "ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				status = "disabled";
> +				ranges = <0x48304100 0x48304100 0x80   /* ECAP */
> +					  0x48304180 0x48304180 0x80   /* EQEP */
> +					  0x48304200 0x48304200 0x80>; /* EHRPWM */
> +
> +				ecap2: ecap at 48304100 {
> +					compatible = "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x48304100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					interrupts = <61>;
> +					interrupt-names = "ecap2";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm2: pwm at 48304200 {
> +					compatible = "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x48304200 0x80>;
> +					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module at e000 {			/* 0x4830e000, ap 72 4a.0 */
> @@ -1471,6 +2047,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xe000 0x1000>;
> +
> +			lcdc: lcdc at 0 {
> +				compatible = "ti,am33xx-tilcdc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <36>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module at 10000 {			/* 0x48310000, ap 76 4e.1 */
> @@ -1488,6 +2071,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x10000 0x2000>;
> +
> +			rng: rng at 0 {
> +				compatible = "ti,omap4-rng";
> +				reg = <0x0 0x2000>;
> +				interrupts = <111>;
> +			};
>  		};
>  
>  		target-module at 13000 {			/* 0x48313000, ap 97 62.0 */
> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> --- a/arch/arm/boot/dts/am33xx.dtsi
> +++ b/arch/arm/boot/dts/am33xx.dtsi
> @@ -8,6 +8,7 @@
>   * kind, whether express or implied.
>   */
>  
> +#include <dt-bindings/bus/ti-sysc.h>
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/pinctrl/am33xx.h>
>  #include <dt-bindings/clock/am3.h>
> @@ -166,87 +167,23 @@
>  		ranges;
>  		ti,hwmods = "l3_main";
>  
> -		l4_wkup: l4_wkup at 44c00000 {
> -			compatible = "ti,am3-l4-wkup", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x44c00000 0x280000>;
> -
> +		l4_wkup: interconnect at 44c00000 {
>  			wkup_m3: wkup_m3 at 100000 {
>  				compatible = "ti,am3352-wkup-m3";
>  				reg = <0x100000 0x4000>,
> -				      <0x180000	0x2000>;
> +				      <0x180000 0x2000>;
>  				reg-names = "umem", "dmem";
>  				ti,hwmods = "wkup_m3";
>  				ti,pm-firmware = "am335x-pm-firmware.elf";
>  			};
> -
> -			prcm: prcm at 200000 {
> -				compatible = "ti,am3-prcm", "simple-bus";
> -				reg = <0x200000 0x4000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0 0x200000 0x4000>;
> -
> -				prcm_clocks: clocks {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -				};
> -
> -				prcm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			scm: scm at 210000 {
> -				compatible = "ti,am3-scm", "simple-bus";
> -				reg = <0x210000 0x2000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				#pinctrl-cells = <1>;
> -				ranges = <0 0x210000 0x2000>;
> -
> -				am33xx_pinmux: pinmux at 800 {
> -					compatible = "pinctrl-single";
> -					reg = <0x800 0x238>;
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -					#pinctrl-cells = <1>;
> -					pinctrl-single,register-width = <32>;
> -					pinctrl-single,function-mask = <0x7f>;
> -				};
> -
> -				scm_conf: scm_conf at 0 {
> -					compatible = "syscon", "simple-bus";
> -					reg = <0x0 0x800>;
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -					ranges = <0 0 0x800>;
> -
> -					scm_clocks: clocks {
> -						#address-cells = <1>;
> -						#size-cells = <0>;
> -					};
> -				};
> -
> -				wkup_m3_ipc: wkup_m3_ipc at 1324 {
> -					compatible = "ti,am3352-wkup-m3-ipc";
> -					reg = <0x1324 0x24>;
> -					interrupts = <78>;
> -					ti,rproc = <&wkup_m3>;
> -					mboxes = <&mailbox &mbox_wkupm3>;
> -				};
> -
> -				edma_xbar: dma-router at f90 {
> -					compatible = "ti,am335x-edma-crossbar";
> -					reg = <0xf90 0x40>;
> -					#dma-cells = <3>;
> -					dma-requests = <32>;
> -					dma-masters = <&edma>;
> -				};
> -
> -				scm_clockdomains: clockdomains {
> -				};
> -			};
> +		};
> +		l4_per: interconnect at 48000000 {
> +		};
> +		l4_fw: interconnect at 47c00000 {
> +		};
> +		l4_fast: interconnect at 4a000000 {
> +		};
> +		l4_mpuss: interconnect at 4b140000 {
>  		};
>  
>  		intc: interrupt-controller at 48200000 {
> @@ -297,166 +234,6 @@
>  			interrupt-names = "edma3_tcerrint";
>  		};
>  
> -		gpio0: gpio at 44e07000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio1";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x44e07000 0x1000>;
> -			interrupts = <96>;
> -		};
> -
> -		gpio1: gpio at 4804c000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio2";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x4804c000 0x1000>;
> -			interrupts = <98>;
> -		};
> -
> -		gpio2: gpio at 481ac000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio3";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x481ac000 0x1000>;
> -			interrupts = <32>;
> -		};
> -
> -		gpio3: gpio at 481ae000 {
> -			compatible = "ti,omap4-gpio";
> -			ti,hwmods = "gpio4";
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			reg = <0x481ae000 0x1000>;
> -			interrupts = <62>;
> -		};
> -
> -		uart0: serial at 44e09000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart1";
> -			clock-frequency = <48000000>;
> -			reg = <0x44e09000 0x2000>;
> -			interrupts = <72>;
> -			status = "disabled";
> -			dmas = <&edma 26 0>, <&edma 27 0>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		uart1: serial at 48022000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart2";
> -			clock-frequency = <48000000>;
> -			reg = <0x48022000 0x2000>;
> -			interrupts = <73>;
> -			status = "disabled";
> -			dmas = <&edma 28 0>, <&edma 29 0>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		uart2: serial at 48024000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart3";
> -			clock-frequency = <48000000>;
> -			reg = <0x48024000 0x2000>;
> -			interrupts = <74>;
> -			status = "disabled";
> -			dmas = <&edma 30 0>, <&edma 31 0>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		uart3: serial at 481a6000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart4";
> -			clock-frequency = <48000000>;
> -			reg = <0x481a6000 0x2000>;
> -			interrupts = <44>;
> -			status = "disabled";
> -		};
> -
> -		uart4: serial at 481a8000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart5";
> -			clock-frequency = <48000000>;
> -			reg = <0x481a8000 0x2000>;
> -			interrupts = <45>;
> -			status = "disabled";
> -		};
> -
> -		uart5: serial at 481aa000 {
> -			compatible = "ti,am3352-uart", "ti,omap3-uart";
> -			ti,hwmods = "uart6";
> -			clock-frequency = <48000000>;
> -			reg = <0x481aa000 0x2000>;
> -			interrupts = <46>;
> -			status = "disabled";
> -		};
> -
> -		i2c0: i2c at 44e0b000 {
> -			compatible = "ti,omap4-i2c";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			ti,hwmods = "i2c1";
> -			reg = <0x44e0b000 0x1000>;
> -			interrupts = <70>;
> -			status = "disabled";
> -		};
> -
> -		i2c1: i2c at 4802a000 {
> -			compatible = "ti,omap4-i2c";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			ti,hwmods = "i2c2";
> -			reg = <0x4802a000 0x1000>;
> -			interrupts = <71>;
> -			status = "disabled";
> -		};
> -
> -		i2c2: i2c at 4819c000 {
> -			compatible = "ti,omap4-i2c";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			ti,hwmods = "i2c3";
> -			reg = <0x4819c000 0x1000>;
> -			interrupts = <30>;
> -			status = "disabled";
> -		};
> -
> -		mmc1: mmc at 48060000 {
> -			compatible = "ti,omap4-hsmmc";
> -			ti,hwmods = "mmc1";
> -			ti,dual-volt;
> -			ti,needs-special-reset;
> -			ti,needs-special-hs-handling;
> -			dmas = <&edma_xbar 24 0 0
> -				&edma_xbar 25 0 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <64>;
> -			reg = <0x48060000 0x1000>;
> -			status = "disabled";
> -		};
> -
> -		mmc2: mmc at 481d8000 {
> -			compatible = "ti,omap4-hsmmc";
> -			ti,hwmods = "mmc2";
> -			ti,needs-special-reset;
> -			dmas = <&edma 2 0
> -				&edma 3 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <28>;
> -			reg = <0x481d8000 0x1000>;
> -			status = "disabled";
> -		};
> -
>  		mmc3: mmc at 47810000 {
>  			compatible = "ti,omap4-hsmmc";
>  			ti,hwmods = "mmc3";
> @@ -466,157 +243,6 @@
>  			status = "disabled";
>  		};
>  
> -		hwspinlock: spinlock at 480ca000 {
> -			compatible = "ti,omap4-hwspinlock";
> -			reg = <0x480ca000 0x1000>;
> -			ti,hwmods = "spinlock";
> -			#hwlock-cells = <1>;
> -		};
> -
> -		wdt2: wdt at 44e35000 {
> -			compatible = "ti,omap3-wdt";
> -			ti,hwmods = "wd_timer2";
> -			reg = <0x44e35000 0x1000>;
> -			interrupts = <91>;
> -		};
> -
> -		dcan0: can at 481cc000 {
> -			compatible = "ti,am3352-d_can";
> -			ti,hwmods = "d_can0";
> -			reg = <0x481cc000 0x2000>;
> -			clocks = <&dcan0_fck>;
> -			clock-names = "fck";
> -			syscon-raminit = <&scm_conf 0x644 0>;
> -			interrupts = <52>;
> -			status = "disabled";
> -		};
> -
> -		dcan1: can at 481d0000 {
> -			compatible = "ti,am3352-d_can";
> -			ti,hwmods = "d_can1";
> -			reg = <0x481d0000 0x2000>;
> -			clocks = <&dcan1_fck>;
> -			clock-names = "fck";
> -			syscon-raminit = <&scm_conf 0x644 1>;
> -			interrupts = <55>;
> -			status = "disabled";
> -		};
> -
> -		mailbox: mailbox at 480c8000 {
> -			compatible = "ti,omap4-mailbox";
> -			reg = <0x480C8000 0x200>;
> -			interrupts = <77>;
> -			ti,hwmods = "mailbox";
> -			#mbox-cells = <1>;
> -			ti,mbox-num-users = <4>;
> -			ti,mbox-num-fifos = <8>;
> -			mbox_wkupm3: wkup_m3 {
> -				ti,mbox-send-noirq;
> -				ti,mbox-tx = <0 0 0>;
> -				ti,mbox-rx = <0 0 3>;
> -			};
> -		};
> -
> -		timer1: timer at 44e31000 {
> -			compatible = "ti,am335x-timer-1ms";
> -			reg = <0x44e31000 0x400>;
> -			interrupts = <67>;
> -			ti,hwmods = "timer1";
> -			ti,timer-alwon;
> -			clocks = <&timer1_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer2: timer at 48040000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48040000 0x400>;
> -			interrupts = <68>;
> -			ti,hwmods = "timer2";
> -			clocks = <&timer2_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer3: timer at 48042000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48042000 0x400>;
> -			interrupts = <69>;
> -			ti,hwmods = "timer3";
> -		};
> -
> -		timer4: timer at 48044000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48044000 0x400>;
> -			interrupts = <92>;
> -			ti,hwmods = "timer4";
> -			ti,timer-pwm;
> -		};
> -
> -		timer5: timer at 48046000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48046000 0x400>;
> -			interrupts = <93>;
> -			ti,hwmods = "timer5";
> -			ti,timer-pwm;
> -		};
> -
> -		timer6: timer at 48048000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x48048000 0x400>;
> -			interrupts = <94>;
> -			ti,hwmods = "timer6";
> -			ti,timer-pwm;
> -		};
> -
> -		timer7: timer at 4804a000 {
> -			compatible = "ti,am335x-timer";
> -			reg = <0x4804a000 0x400>;
> -			interrupts = <95>;
> -			ti,hwmods = "timer7";
> -			ti,timer-pwm;
> -		};
> -
> -		rtc: rtc at 44e3e000 {
> -			compatible = "ti,am3352-rtc", "ti,da830-rtc";
> -			reg = <0x44e3e000 0x1000>;
> -			interrupts = <75
> -				      76>;
> -			ti,hwmods = "rtc";
> -			clocks = <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
> -			clock-names = "int-clk";
> -		};
> -
> -		spi0: spi at 48030000 {
> -			compatible = "ti,omap4-mcspi";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			reg = <0x48030000 0x400>;
> -			interrupts = <65>;
> -			ti,spi-num-cs = <2>;
> -			ti,hwmods = "spi0";
> -			dmas = <&edma 16 0
> -				&edma 17 0
> -				&edma 18 0
> -				&edma 19 0>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1";
> -			status = "disabled";
> -		};
> -
> -		spi1: spi at 481a0000 {
> -			compatible = "ti,omap4-mcspi";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			reg = <0x481a0000 0x400>;
> -			interrupts = <125>;
> -			ti,spi-num-cs = <2>;
> -			ti,hwmods = "spi1";
> -			dmas = <&edma 42 0
> -				&edma 43 0
> -				&edma 44 0
> -				&edma 45 0>;
> -			dma-names = "tx0", "rx0", "tx1", "rx1";
> -			status = "disabled";
> -		};
> -
>  		usb: usb at 47400000 {
>  			compatible = "ti,am33xx-usb";
>  			reg = <0x47400000 0x1000>;
> @@ -747,163 +373,6 @@
>  			};
>  		};
>  
> -		epwmss0: epwmss at 48300000 {
> -			compatible = "ti,am33xx-pwmss";
> -			reg = <0x48300000 0x10>;
> -			ti,hwmods = "epwmss0";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			status = "disabled";
> -			ranges = <0x48300100 0x48300100 0x80   /* ECAP */
> -				  0x48300180 0x48300180 0x80   /* EQEP */
> -				  0x48300200 0x48300200 0x80>; /* EHRPWM */
> -
> -			ecap0: ecap at 48300100 {
> -				compatible = "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48300100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				interrupts = <31>;
> -				interrupt-names = "ecap0";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm0: pwm at 48300200 {
> -				compatible = "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48300200 0x80>;
> -				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss1: epwmss at 48302000 {
> -			compatible = "ti,am33xx-pwmss";
> -			reg = <0x48302000 0x10>;
> -			ti,hwmods = "epwmss1";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			status = "disabled";
> -			ranges = <0x48302100 0x48302100 0x80   /* ECAP */
> -				  0x48302180 0x48302180 0x80   /* EQEP */
> -				  0x48302200 0x48302200 0x80>; /* EHRPWM */
> -
> -			ecap1: ecap at 48302100 {
> -				compatible = "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48302100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				interrupts = <47>;
> -				interrupt-names = "ecap1";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm1: pwm at 48302200 {
> -				compatible = "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48302200 0x80>;
> -				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss2: epwmss at 48304000 {
> -			compatible = "ti,am33xx-pwmss";
> -			reg = <0x48304000 0x10>;
> -			ti,hwmods = "epwmss2";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			status = "disabled";
> -			ranges = <0x48304100 0x48304100 0x80   /* ECAP */
> -				  0x48304180 0x48304180 0x80   /* EQEP */
> -				  0x48304200 0x48304200 0x80>; /* EHRPWM */
> -
> -			ecap2: ecap at 48304100 {
> -				compatible = "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48304100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				interrupts = <61>;
> -				interrupt-names = "ecap2";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm2: pwm at 48304200 {
> -				compatible = "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48304200 0x80>;
> -				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		mac: ethernet at 4a100000 {
> -			compatible = "ti,am335x-cpsw","ti,cpsw";
> -			ti,hwmods = "cpgmac0";
> -			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
> -			clock-names = "fck", "cpts";
> -			cpdma_channels = <8>;
> -			ale_entries = <1024>;
> -			bd_ram_size = <0x2000>;
> -			mac_control = <0x20>;
> -			slaves = <2>;
> -			active_slave = <0>;
> -			cpts_clock_mult = <0x80000000>;
> -			cpts_clock_shift = <29>;
> -			reg = <0x4a100000 0x800
> -			       0x4a101200 0x100>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			/*
> -			 * c0_rx_thresh_pend
> -			 * c0_rx_pend
> -			 * c0_tx_pend
> -			 * c0_misc_pend
> -			 */
> -			interrupts = <40 41 42 43>;
> -			ranges;
> -			syscon = <&scm_conf>;
> -			status = "disabled";
> -
> -			davinci_mdio: mdio at 4a101000 {
> -				compatible = "ti,cpsw-mdio","ti,davinci_mdio";
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				ti,hwmods = "davinci_mdio";
> -				bus_freq = <1000000>;
> -				reg = <0x4a101000 0x100>;
> -				status = "disabled";
> -			};
> -
> -			cpsw_emac0: slave at 4a100200 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			cpsw_emac1: slave at 4a100300 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			phy_sel: cpsw-phy-sel at 44e10650 {
> -				compatible = "ti,am3352-cpsw-phy-sel";
> -				reg= <0x44e10650 0x4>;
> -				reg-names = "gmii-sel";
> -			};
> -		};
> -
>  		ocmcram: ocmcram at 40300000 {
>  			compatible = "mmio-sram";
>  			reg = <0x40300000 0x10000>; /* 64k */
> @@ -924,40 +393,6 @@
>  			};
>  		};
>  
> -		elm: elm at 48080000 {
> -			compatible = "ti,am3352-elm";
> -			reg = <0x48080000 0x2000>;
> -			interrupts = <4>;
> -			ti,hwmods = "elm";
> -			status = "disabled";
> -		};
> -
> -		lcdc: lcdc at 4830e000 {
> -			compatible = "ti,am33xx-tilcdc";
> -			reg = <0x4830e000 0x1000>;
> -			interrupts = <36>;
> -			ti,hwmods = "lcdc";
> -			status = "disabled";
> -		};
> -
> -		tscadc: tscadc at 44e0d000 {
> -			compatible = "ti,am3359-tscadc";
> -			reg = <0x44e0d000 0x1000>;
> -			interrupts = <16>;
> -			ti,hwmods = "adc_tsc";
> -			status = "disabled";
> -			dmas = <&edma 53 0>, <&edma 57 0>;
> -			dma-names = "fifo0", "fifo1";
> -
> -			tsc {
> -				compatible = "ti,am3359-tsc";
> -			};
> -			am335x_adc: adc {
> -				#io-channel-cells = <1>;
> -				compatible = "ti,am3359-adc";
> -			};
> -		};
> -
>  		emif: emif at 4c000000 {
>  			compatible = "ti,emif-am3352";
>  			reg = <0x4c000000 0x1000000>;
> @@ -1005,42 +440,8 @@
>  			       <&edma 5 0>;
>  			dma-names = "tx", "rx";
>  		};
> -
> -		mcasp0: mcasp at 48038000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp0";
> -			reg = <0x48038000 0x2000>,
> -			      <0x46000000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <80>, <81>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 8 2>,
> -				<&edma 9 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		mcasp1: mcasp at 4803c000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp1";
> -			reg = <0x4803C000 0x2000>,
> -			      <0x46400000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <82>, <83>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 10 2>,
> -				<&edma 11 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		rng: rng at 48310000 {
> -			compatible = "ti,omap4-rng";
> -			ti,hwmods = "rng";
> -			reg = <0x48310000 0x2000>;
> -			interrupts = <111>;
> -		};
>  	};
>  };
>  
> +#include "am33xx-l4.dtsi"
>  #include "am33xx-clocks.dtsi"
> 

- P?ter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
  2018-11-27 13:03     ` Peter Ujfalusi
@ 2018-11-27 16:16       ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-11-27 16:16 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181127 13:01]:
> Reverting this patch in linux-next makes audio working again on am335x
> (bb white + audio cape) :o
> 
> Without revert the McASP FIFO would constantly underflow.

Thanks for testing. Hmm the dts change looks right. And
am3_l3s_clkctrl_regs[] has CLKF_SW_SUP for the mcasp fcks.
And there are no opt clocks to enable according to the TRM.

> Memcpy test via dmatest works with EDMA

OK. Can you please test if the following partial revert
also works or is there maybe a dependency to some other
device?

Regards,

Tony

8< ------------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Tue, 27 Nov 2018 08:11:48 -0800
Subject: [PATCH] ARM: dts: Revert am335x mcasp ti-sysc changes

Without this McASP FIFO would constantly underflow. EDMA
test via dmatest works though.

Let's revert the change for now until we know the root cause.

Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 28 ++--------------------------
 arch/arm/boot/dts/am33xx.dtsi    | 29 +++++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -1056,19 +1056,7 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x38000 0x2000>;
-
-			mcasp0: mcasp@0 {
-				compatible = "ti,am33xx-mcasp-audio";
-				reg = <0x0 0x2000>,
-				      <0x46000000 0x400000>;
-				reg-names = "mpu", "dat";
-				interrupts = <80>, <81>;
-				interrupt-names = "tx", "rx";
-				status = "disabled";
-				dmas = <&edma 8 2>,
-					<&edma 9 2>;
-				dma-names = "tx", "rx";
-			};
+			status = "disabled";
 		};
 
 		target-module@3c000 {			/* 0x4803c000, ap 20 32.0 */
@@ -1086,19 +1074,7 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3c000 0x2000>;
-
-			mcasp1: mcasp@0 {
-				compatible = "ti,am33xx-mcasp-audio";
-				reg = <0x0 0x2000>,
-				      <0x46400000 0x400000>;
-				reg-names = "mpu", "dat";
-				interrupts = <82>, <83>;
-				interrupt-names = "tx", "rx";
-				status = "disabled";
-				dmas = <&edma 10 2>,
-					<&edma 11 2>;
-				dma-names = "tx", "rx";
-			};
+			status = "disabled";
 		};
 
 		target-module@40000 {			/* 0x48040000, ap 22 1e.0 */
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -440,7 +440,36 @@
 			       <&edma 5 0>;
 			dma-names = "tx", "rx";
 		};
+
+		mcasp0: mcasp@48038000 {
+			compatible = "ti,am33xx-mcasp-audio";
+			ti,hwmods = "mcasp0";
+			reg = <0x48038000 0x2000>,
+			      <0x46000000 0x400000>;
+			reg-names = "mpu", "dat";
+			interrupts = <80>, <81>;
+			interrupt-names = "tx", "rx";
+			status = "disabled";
+			dmas = <&edma 8 2>,
+				<&edma 9 2>;
+			dma-names = "tx", "rx";
+		};
+
+		mcasp1: mcasp@4803c000 {
+			compatible = "ti,am33xx-mcasp-audio";
+			ti,hwmods = "mcasp1";
+			reg = <0x4803C000 0x2000>,
+			      <0x46400000 0x400000>;
+			reg-names = "mpu", "dat";
+			interrupts = <82>, <83>;
+			interrupt-names = "tx", "rx";
+			status = "disabled";
+			dmas = <&edma 10 2>,
+				<&edma 11 2>;
+			dma-names = "tx", "rx";
+		};
 	};
+
 };
 
 #include "am33xx-l4.dtsi"
-- 
2.19.1

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
@ 2018-11-27 16:16       ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-11-27 16:16 UTC (permalink / raw)
  To: linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181127 13:01]:
> Reverting this patch in linux-next makes audio working again on am335x
> (bb white + audio cape) :o
> 
> Without revert the McASP FIFO would constantly underflow.

Thanks for testing. Hmm the dts change looks right. And
am3_l3s_clkctrl_regs[] has CLKF_SW_SUP for the mcasp fcks.
And there are no opt clocks to enable according to the TRM.

> Memcpy test via dmatest works with EDMA

OK. Can you please test if the following partial revert
also works or is there maybe a dependency to some other
device?

Regards,

Tony

8< ------------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Tue, 27 Nov 2018 08:11:48 -0800
Subject: [PATCH] ARM: dts: Revert am335x mcasp ti-sysc changes

Without this McASP FIFO would constantly underflow. EDMA
test via dmatest works though.

Let's revert the change for now until we know the root cause.

Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am33xx-l4.dtsi | 28 ++--------------------------
 arch/arm/boot/dts/am33xx.dtsi    | 29 +++++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 26 deletions(-)

diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -1056,19 +1056,7 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x38000 0x2000>;
-
-			mcasp0: mcasp at 0 {
-				compatible = "ti,am33xx-mcasp-audio";
-				reg = <0x0 0x2000>,
-				      <0x46000000 0x400000>;
-				reg-names = "mpu", "dat";
-				interrupts = <80>, <81>;
-				interrupt-names = "tx", "rx";
-				status = "disabled";
-				dmas = <&edma 8 2>,
-					<&edma 9 2>;
-				dma-names = "tx", "rx";
-			};
+			status = "disabled";
 		};
 
 		target-module at 3c000 {			/* 0x4803c000, ap 20 32.0 */
@@ -1086,19 +1074,7 @@
 			#address-cells = <1>;
 			#size-cells = <1>;
 			ranges = <0x0 0x3c000 0x2000>;
-
-			mcasp1: mcasp at 0 {
-				compatible = "ti,am33xx-mcasp-audio";
-				reg = <0x0 0x2000>,
-				      <0x46400000 0x400000>;
-				reg-names = "mpu", "dat";
-				interrupts = <82>, <83>;
-				interrupt-names = "tx", "rx";
-				status = "disabled";
-				dmas = <&edma 10 2>,
-					<&edma 11 2>;
-				dma-names = "tx", "rx";
-			};
+			status = "disabled";
 		};
 
 		target-module at 40000 {			/* 0x48040000, ap 22 1e.0 */
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -440,7 +440,36 @@
 			       <&edma 5 0>;
 			dma-names = "tx", "rx";
 		};
+
+		mcasp0: mcasp at 48038000 {
+			compatible = "ti,am33xx-mcasp-audio";
+			ti,hwmods = "mcasp0";
+			reg = <0x48038000 0x2000>,
+			      <0x46000000 0x400000>;
+			reg-names = "mpu", "dat";
+			interrupts = <80>, <81>;
+			interrupt-names = "tx", "rx";
+			status = "disabled";
+			dmas = <&edma 8 2>,
+				<&edma 9 2>;
+			dma-names = "tx", "rx";
+		};
+
+		mcasp1: mcasp at 4803c000 {
+			compatible = "ti,am33xx-mcasp-audio";
+			ti,hwmods = "mcasp1";
+			reg = <0x4803C000 0x2000>,
+			      <0x46400000 0x400000>;
+			reg-names = "mpu", "dat";
+			interrupts = <82>, <83>;
+			interrupt-names = "tx", "rx";
+			status = "disabled";
+			dmas = <&edma 10 2>,
+				<&edma 11 2>;
+			dma-names = "tx", "rx";
+		};
 	};
+
 };
 
 #include "am33xx-l4.dtsi"
-- 
2.19.1

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
  2018-11-27 16:16       ` Tony Lindgren
@ 2018-11-28 12:52         ` Peter Ujfalusi
  -1 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-11-28 12:52 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel



On 27/11/2018 18.16, Tony Lindgren wrote:
> * Peter Ujfalusi <peter.ujfalusi@ti.com> [181127 13:01]:
>> Reverting this patch in linux-next makes audio working again on am335x
>> (bb white + audio cape) :o
>>
>> Without revert the McASP FIFO would constantly underflow.
> 
> Thanks for testing. Hmm the dts change looks right. And
> am3_l3s_clkctrl_regs[] has CLKF_SW_SUP for the mcasp fcks.
> And there are no opt clocks to enable according to the TRM.
> 
>> Memcpy test via dmatest works with EDMA
> 
> OK. Can you please test if the following partial revert
> also works or is there maybe a dependency to some other
> device?

It works, thanks:
Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> 
> Regards,
> 
> Tony
> 
> 8< ------------------
> From tony Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@atomide.com>
> Date: Tue, 27 Nov 2018 08:11:48 -0800
> Subject: [PATCH] ARM: dts: Revert am335x mcasp ti-sysc changes
> 
> Without this McASP FIFO would constantly underflow. EDMA
> test via dmatest works though.
> 
> Let's revert the change for now until we know the root cause.
> 
> Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am33xx-l4.dtsi | 28 ++--------------------------
>  arch/arm/boot/dts/am33xx.dtsi    | 29 +++++++++++++++++++++++++++++
>  2 files changed, 31 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
> --- a/arch/arm/boot/dts/am33xx-l4.dtsi
> +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
> @@ -1056,19 +1056,7 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x38000 0x2000>;
> -
> -			mcasp0: mcasp@0 {
> -				compatible = "ti,am33xx-mcasp-audio";
> -				reg = <0x0 0x2000>,
> -				      <0x46000000 0x400000>;
> -				reg-names = "mpu", "dat";
> -				interrupts = <80>, <81>;
> -				interrupt-names = "tx", "rx";
> -				status = "disabled";
> -				dmas = <&edma 8 2>,
> -					<&edma 9 2>;
> -				dma-names = "tx", "rx";
> -			};
> +			status = "disabled";
>  		};
>  
>  		target-module@3c000 {			/* 0x4803c000, ap 20 32.0 */
> @@ -1086,19 +1074,7 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3c000 0x2000>;
> -
> -			mcasp1: mcasp@0 {
> -				compatible = "ti,am33xx-mcasp-audio";
> -				reg = <0x0 0x2000>,
> -				      <0x46400000 0x400000>;
> -				reg-names = "mpu", "dat";
> -				interrupts = <82>, <83>;
> -				interrupt-names = "tx", "rx";
> -				status = "disabled";
> -				dmas = <&edma 10 2>,
> -					<&edma 11 2>;
> -				dma-names = "tx", "rx";
> -			};
> +			status = "disabled";
>  		};
>  
>  		target-module@40000 {			/* 0x48040000, ap 22 1e.0 */
> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> --- a/arch/arm/boot/dts/am33xx.dtsi
> +++ b/arch/arm/boot/dts/am33xx.dtsi
> @@ -440,7 +440,36 @@
>  			       <&edma 5 0>;
>  			dma-names = "tx", "rx";
>  		};
> +
> +		mcasp0: mcasp@48038000 {
> +			compatible = "ti,am33xx-mcasp-audio";
> +			ti,hwmods = "mcasp0";
> +			reg = <0x48038000 0x2000>,
> +			      <0x46000000 0x400000>;
> +			reg-names = "mpu", "dat";
> +			interrupts = <80>, <81>;
> +			interrupt-names = "tx", "rx";
> +			status = "disabled";
> +			dmas = <&edma 8 2>,
> +				<&edma 9 2>;
> +			dma-names = "tx", "rx";
> +		};
> +
> +		mcasp1: mcasp@4803c000 {
> +			compatible = "ti,am33xx-mcasp-audio";
> +			ti,hwmods = "mcasp1";
> +			reg = <0x4803C000 0x2000>,
> +			      <0x46400000 0x400000>;
> +			reg-names = "mpu", "dat";
> +			interrupts = <82>, <83>;
> +			interrupt-names = "tx", "rx";
> +			status = "disabled";
> +			dmas = <&edma 10 2>,
> +				<&edma 11 2>;
> +			dma-names = "tx", "rx";
> +		};
>  	};
> +
>  };
>  
>  #include "am33xx-l4.dtsi"
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
@ 2018-11-28 12:52         ` Peter Ujfalusi
  0 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-11-28 12:52 UTC (permalink / raw)
  To: linux-arm-kernel



On 27/11/2018 18.16, Tony Lindgren wrote:
> * Peter Ujfalusi <peter.ujfalusi@ti.com> [181127 13:01]:
>> Reverting this patch in linux-next makes audio working again on am335x
>> (bb white + audio cape) :o
>>
>> Without revert the McASP FIFO would constantly underflow.
> 
> Thanks for testing. Hmm the dts change looks right. And
> am3_l3s_clkctrl_regs[] has CLKF_SW_SUP for the mcasp fcks.
> And there are no opt clocks to enable according to the TRM.
> 
>> Memcpy test via dmatest works with EDMA
> 
> OK. Can you please test if the following partial revert
> also works or is there maybe a dependency to some other
> device?

It works, thanks:
Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> 
> Regards,
> 
> Tony
> 
> 8< ------------------
> From tony Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@atomide.com>
> Date: Tue, 27 Nov 2018 08:11:48 -0800
> Subject: [PATCH] ARM: dts: Revert am335x mcasp ti-sysc changes
> 
> Without this McASP FIFO would constantly underflow. EDMA
> test via dmatest works though.
> 
> Let's revert the change for now until we know the root cause.
> 
> Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am33xx-l4.dtsi | 28 ++--------------------------
>  arch/arm/boot/dts/am33xx.dtsi    | 29 +++++++++++++++++++++++++++++
>  2 files changed, 31 insertions(+), 26 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
> --- a/arch/arm/boot/dts/am33xx-l4.dtsi
> +++ b/arch/arm/boot/dts/am33xx-l4.dtsi
> @@ -1056,19 +1056,7 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x38000 0x2000>;
> -
> -			mcasp0: mcasp at 0 {
> -				compatible = "ti,am33xx-mcasp-audio";
> -				reg = <0x0 0x2000>,
> -				      <0x46000000 0x400000>;
> -				reg-names = "mpu", "dat";
> -				interrupts = <80>, <81>;
> -				interrupt-names = "tx", "rx";
> -				status = "disabled";
> -				dmas = <&edma 8 2>,
> -					<&edma 9 2>;
> -				dma-names = "tx", "rx";
> -			};
> +			status = "disabled";
>  		};
>  
>  		target-module at 3c000 {			/* 0x4803c000, ap 20 32.0 */
> @@ -1086,19 +1074,7 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3c000 0x2000>;
> -
> -			mcasp1: mcasp at 0 {
> -				compatible = "ti,am33xx-mcasp-audio";
> -				reg = <0x0 0x2000>,
> -				      <0x46400000 0x400000>;
> -				reg-names = "mpu", "dat";
> -				interrupts = <82>, <83>;
> -				interrupt-names = "tx", "rx";
> -				status = "disabled";
> -				dmas = <&edma 10 2>,
> -					<&edma 11 2>;
> -				dma-names = "tx", "rx";
> -			};
> +			status = "disabled";
>  		};
>  
>  		target-module at 40000 {			/* 0x48040000, ap 22 1e.0 */
> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> --- a/arch/arm/boot/dts/am33xx.dtsi
> +++ b/arch/arm/boot/dts/am33xx.dtsi
> @@ -440,7 +440,36 @@
>  			       <&edma 5 0>;
>  			dma-names = "tx", "rx";
>  		};
> +
> +		mcasp0: mcasp at 48038000 {
> +			compatible = "ti,am33xx-mcasp-audio";
> +			ti,hwmods = "mcasp0";
> +			reg = <0x48038000 0x2000>,
> +			      <0x46000000 0x400000>;
> +			reg-names = "mpu", "dat";
> +			interrupts = <80>, <81>;
> +			interrupt-names = "tx", "rx";
> +			status = "disabled";
> +			dmas = <&edma 8 2>,
> +				<&edma 9 2>;
> +			dma-names = "tx", "rx";
> +		};
> +
> +		mcasp1: mcasp at 4803c000 {
> +			compatible = "ti,am33xx-mcasp-audio";
> +			ti,hwmods = "mcasp1";
> +			reg = <0x4803C000 0x2000>,
> +			      <0x46400000 0x400000>;
> +			reg-names = "mpu", "dat";
> +			interrupts = <82>, <83>;
> +			interrupt-names = "tx", "rx";
> +			status = "disabled";
> +			dmas = <&edma 10 2>,
> +				<&edma 11 2>;
> +			dma-names = "tx", "rx";
> +		};
>  	};
> +
>  };
>  
>  #include "am33xx-l4.dtsi"
> 

- P?ter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
  2018-11-28 12:52         ` Peter Ujfalusi
@ 2018-11-29 19:07           ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-11-29 19:07 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181128 12:50]:
> 
> 
> On 27/11/2018 18.16, Tony Lindgren wrote:
> > * Peter Ujfalusi <peter.ujfalusi@ti.com> [181127 13:01]:
> >> Reverting this patch in linux-next makes audio working again on am335x
> >> (bb white + audio cape) :o
> >>
> >> Without revert the McASP FIFO would constantly underflow.
> > 
> > Thanks for testing. Hmm the dts change looks right. And
> > am3_l3s_clkctrl_regs[] has CLKF_SW_SUP for the mcasp fcks.
> > And there are no opt clocks to enable according to the TRM.
> > 
> >> Memcpy test via dmatest works with EDMA
> > 
> > OK. Can you please test if the following partial revert
> > also works or is there maybe a dependency to some other
> > device?
> 
> It works, thanks:
> Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

OK aplying into omap-for-v4.21/dt-ti-sysc.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
@ 2018-11-29 19:07           ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-11-29 19:07 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181128 12:50]:
> 
> 
> On 27/11/2018 18.16, Tony Lindgren wrote:
> > * Peter Ujfalusi <peter.ujfalusi@ti.com> [181127 13:01]:
> >> Reverting this patch in linux-next makes audio working again on am335x
> >> (bb white + audio cape) :o
> >>
> >> Without revert the McASP FIFO would constantly underflow.
> > 
> > Thanks for testing. Hmm the dts change looks right. And
> > am3_l3s_clkctrl_regs[] has CLKF_SW_SUP for the mcasp fcks.
> > And there are no opt clocks to enable according to the TRM.
> > 
> >> Memcpy test via dmatest works with EDMA
> > 
> > OK. Can you please test if the following partial revert
> > also works or is there maybe a dependency to some other
> > device?
> 
> It works, thanks:
> Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

OK aplying into omap-for-v4.21/dt-ti-sysc.

Regards,

Tony

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-09-25  0:05   ` Tony Lindgren
@ 2018-12-04 12:23     ` Peter Ujfalusi
  -1 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-12-04 12:23 UTC (permalink / raw)
  To: Tony Lindgren, linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

Hi Tony,

On 25/09/2018 3.05, Tony Lindgren wrote:
> With l4 interconnect hierarchy and ti-sysc interconnect target module
> data in place, we can simply move all the related child devices to
> their proper location and enable probing using ti-sysc.
> 
> In general the first child device address range starts at range 0
> from the ti-sysc interconnect target so the move involves adjusting
> the child device reg properties for that.
> 
> In case of any regressions, problem devices can be reverted to probe
> with legacy platform data as needed by moving them back and removing
> the related interconnect target module node.
> 
> Note that we are not yet moving dss or wkup_m3, those will be moved
> later after some related driver changes.

Exactly the same issue as with am335x after:
ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc

reverting this patch makes audio working:

Without revert the McASP FIFO would constantly underflow.

Memcpy test via dmatest works with EDMA


> 
> Cc: Dave Gerlach <d-gerlach@ti.com>
> Cc: Keerthy <j-keerthy@ti.com>
> Cc: Tero Kristo <t-kristo@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am4372.dtsi    | 876 +------------------------------
>  arch/arm/boot/dts/am437x-l4.dtsi | 865 +++++++++++++++++++++++++++++-
>  2 files changed, 858 insertions(+), 883 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
> --- a/arch/arm/boot/dts/am4372.dtsi
> +++ b/arch/arm/boot/dts/am4372.dtsi
> @@ -8,6 +8,7 @@
>   * kind, whether express or implied.
>   */
>  
> +#include <dt-bindings/bus/ti-sysc.h>
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include <dt-bindings/clock/am4.h>
> @@ -159,12 +160,7 @@
>  		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
>  			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
>  
> -		l4_wkup: l4_wkup@44c00000 {
> -			compatible = "ti,am4-l4-wkup", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x44c00000 0x287000>;
> -
> +		l4_wkup: interconnect@44c00000 {
>  			wkup_m3: wkup_m3@100000 {
>  				compatible = "ti,am4372-wkup-m3";
>  				reg = <0x100000 0x4000>,
> @@ -173,75 +169,10 @@
>  				ti,hwmods = "wkup_m3";
>  				ti,pm-firmware = "am335x-pm-firmware.elf";
>  			};
> -
> -			prcm: prcm@1f0000 {
> -				compatible = "ti,am4-prcm", "simple-bus";
> -				reg = <0x1f0000 0x11000>;
> -				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0 0x1f0000 0x11000>;
> -
> -				prcm_clocks: clocks {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -				};
> -
> -				prcm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			scm: scm@210000 {
> -				compatible = "ti,am4-scm", "simple-bus";
> -				reg = <0x210000 0x4000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0 0x210000 0x4000>;
> -
> -				am43xx_pinmux: pinmux@800 {
> -					compatible = "ti,am437-padconf",
> -						     "pinctrl-single";
> -					reg = <0x800 0x31c>;
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -					#pinctrl-cells = <1>;
> -					#interrupt-cells = <1>;
> -					interrupt-controller;
> -					pinctrl-single,register-width = <32>;
> -					pinctrl-single,function-mask = <0xffffffff>;
> -				};
> -
> -				scm_conf: scm_conf@0 {
> -					compatible = "syscon";
> -					reg = <0x0 0x800>;
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -
> -					scm_clocks: clocks {
> -						#address-cells = <1>;
> -						#size-cells = <0>;
> -					};
> -				};
> -
> -				wkup_m3_ipc: wkup_m3_ipc@1324 {
> -					compatible = "ti,am4372-wkup-m3-ipc";
> -					reg = <0x1324 0x44>;
> -					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> -					ti,rproc = <&wkup_m3>;
> -					mboxes = <&mailbox &mbox_wkupm3>;
> -				};
> -
> -				edma_xbar: dma-router@f90 {
> -					compatible = "ti,am335x-edma-crossbar";
> -					reg = <0xf90 0x40>;
> -					#dma-cells = <3>;
> -					dma-requests = <64>;
> -					dma-masters = <&edma>;
> -				};
> -
> -				scm_clockdomains: clockdomains {
> -				};
> -			};
> +		};
> +		l4_per: interconnect@48000000 {
> +		};
> +		l4_fast: interconnect@4a000000 {
>  		};
>  
>  		emif: emif@4c000000 {
> @@ -297,333 +228,6 @@
>  			interrupt-names = "edma3_tcerrint";
>  		};
>  
> -		uart0: serial@44e09000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x44e09000 0x2000>;
> -			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart1";
> -		};
> -
> -		uart1: serial@48022000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x48022000 0x2000>;
> -			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart2";
> -			status = "disabled";
> -		};
> -
> -		uart2: serial@48024000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x48024000 0x2000>;
> -			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart3";
> -			status = "disabled";
> -		};
> -
> -		uart3: serial@481a6000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x481a6000 0x2000>;
> -			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart4";
> -			status = "disabled";
> -		};
> -
> -		uart4: serial@481a8000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x481a8000 0x2000>;
> -			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart5";
> -			status = "disabled";
> -		};
> -
> -		uart5: serial@481aa000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x481aa000 0x2000>;
> -			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart6";
> -			status = "disabled";
> -		};
> -
> -		mailbox: mailbox@480c8000 {
> -			compatible = "ti,omap4-mailbox";
> -			reg = <0x480C8000 0x200>;
> -			interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "mailbox";
> -			#mbox-cells = <1>;
> -			ti,mbox-num-users = <4>;
> -			ti,mbox-num-fifos = <8>;
> -			mbox_wkupm3: wkup_m3 {
> -				ti,mbox-send-noirq;
> -				ti,mbox-tx = <0 0 0>;
> -				ti,mbox-rx = <0 0 3>;
> -			};
> -		};
> -
> -		timer1: timer@44e31000 {
> -			compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
> -			reg = <0x44e31000 0x400>;
> -			interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-alwon;
> -			ti,hwmods = "timer1";
> -			clocks = <&timer1_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer2: timer@48040000  {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48040000  0x400>;
> -			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer2";
> -			clocks = <&timer2_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer3: timer@48042000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48042000 0x400>;
> -			interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer3";
> -			status = "disabled";
> -		};
> -
> -		timer4: timer@48044000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48044000 0x400>;
> -			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer4";
> -			status = "disabled";
> -		};
> -
> -		timer5: timer@48046000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48046000 0x400>;
> -			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer5";
> -			status = "disabled";
> -		};
> -
> -		timer6: timer@48048000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48048000 0x400>;
> -			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer6";
> -			status = "disabled";
> -		};
> -
> -		timer7: timer@4804a000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x4804a000 0x400>;
> -			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer7";
> -			status = "disabled";
> -		};
> -
> -		timer8: timer@481c1000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x481c1000 0x400>;
> -			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer8";
> -			status = "disabled";
> -		};
> -
> -		timer9: timer@4833d000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x4833d000 0x400>;
> -			interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer9";
> -			status = "disabled";
> -		};
> -
> -		timer10: timer@4833f000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x4833f000 0x400>;
> -			interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer10";
> -			status = "disabled";
> -		};
> -
> -		timer11: timer@48341000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48341000 0x400>;
> -			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer11";
> -			status = "disabled";
> -		};
> -
> -		counter32k: counter@44e86000 {
> -			compatible = "ti,am4372-counter32k","ti,omap-counter32k";
> -			reg = <0x44e86000 0x40>;
> -			ti,hwmods = "counter_32k";
> -		};
> -
> -		rtc: rtc@44e3e000 {
> -			compatible = "ti,am4372-rtc", "ti,am3352-rtc",
> -				     "ti,da830-rtc";
> -			reg = <0x44e3e000 0x1000>;
> -			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "rtc";
> -			clocks = <&clk_32768_ck>;
> -			clock-names = "int-clk";
> -			system-power-controller;
> -			status = "disabled";
> -		};
> -
> -		wdt: wdt@44e35000 {
> -			compatible = "ti,am4372-wdt","ti,omap3-wdt";
> -			reg = <0x44e35000 0x1000>;
> -			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "wd_timer2";
> -		};
> -
> -		gpio0: gpio@44e07000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x44e07000 0x1000>;
> -			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio1";
> -			status = "disabled";
> -		};
> -
> -		gpio1: gpio@4804c000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x4804c000 0x1000>;
> -			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio2";
> -			status = "disabled";
> -		};
> -
> -		gpio2: gpio@481ac000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x481ac000 0x1000>;
> -			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio3";
> -			status = "disabled";
> -		};
> -
> -		gpio3: gpio@481ae000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x481ae000 0x1000>;
> -			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio4";
> -			status = "disabled";
> -		};
> -
> -		gpio4: gpio@48320000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x48320000 0x1000>;
> -			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio5";
> -			status = "disabled";
> -		};
> -
> -		gpio5: gpio@48322000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x48322000 0x1000>;
> -			interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio6";
> -			status = "disabled";
> -		};
> -
> -		hwspinlock: spinlock@480ca000 {
> -			compatible = "ti,omap4-hwspinlock";
> -			reg = <0x480ca000 0x1000>;
> -			ti,hwmods = "spinlock";
> -			#hwlock-cells = <1>;
> -		};
> -
> -		i2c0: i2c@44e0b000 {
> -			compatible = "ti,am4372-i2c","ti,omap4-i2c";
> -			reg = <0x44e0b000 0x1000>;
> -			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "i2c1";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		i2c1: i2c@4802a000 {
> -			compatible = "ti,am4372-i2c","ti,omap4-i2c";
> -			reg = <0x4802a000 0x1000>;
> -			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "i2c2";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		i2c2: i2c@4819c000 {
> -			compatible = "ti,am4372-i2c","ti,omap4-i2c";
> -			reg = <0x4819c000 0x1000>;
> -			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "i2c3";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi0: spi@48030000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x48030000 0x400>;
> -			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi0";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		mmc1: mmc@48060000 {
> -			compatible = "ti,omap4-hsmmc";
> -			reg = <0x48060000 0x1000>;
> -			ti,hwmods = "mmc1";
> -			ti,dual-volt;
> -			ti,needs-special-reset;
> -			dmas = <&edma 24 0>,
> -				<&edma 25 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
> -		mmc2: mmc@481d8000 {
> -			compatible = "ti,omap4-hsmmc";
> -			reg = <0x481d8000 0x1000>;
> -			ti,hwmods = "mmc2";
> -			ti,needs-special-reset;
> -			dmas = <&edma 2 0>,
> -				<&edma 3 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
>  		mmc3: mmc@47810000 {
>  			compatible = "ti,omap4-hsmmc";
>  			reg = <0x47810000 0x1000>;
> @@ -633,282 +237,6 @@
>  			status = "disabled";
>  		};
>  
> -		spi1: spi@481a0000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x481a0000 0x400>;
> -			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi1";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi2: spi@481a2000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x481a2000 0x400>;
> -			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi2";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi3: spi@481a4000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x481a4000 0x400>;
> -			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi3";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi4: spi@48345000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x48345000 0x400>;
> -			interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi4";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		mac: ethernet@4a100000 {
> -			compatible = "ti,am4372-cpsw","ti,cpsw";
> -			reg = <0x4a100000 0x800
> -			       0x4a101200 0x100>;
> -			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ti,hwmods = "cpgmac0";
> -			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
> -				 <&dpll_clksel_mac_clk>;
> -			clock-names = "fck", "cpts", "50mclk";
> -			assigned-clocks = <&dpll_clksel_mac_clk>;
> -			assigned-clock-rates = <50000000>;
> -			status = "disabled";
> -			cpdma_channels = <8>;
> -			ale_entries = <1024>;
> -			bd_ram_size = <0x2000>;
> -			mac_control = <0x20>;
> -			slaves = <2>;
> -			active_slave = <0>;
> -			cpts_clock_mult = <0x80000000>;
> -			cpts_clock_shift = <29>;
> -			ranges;
> -			syscon = <&scm_conf>;
> -
> -			davinci_mdio: mdio@4a101000 {
> -				compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
> -				reg = <0x4a101000 0x100>;
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				ti,hwmods = "davinci_mdio";
> -				bus_freq = <1000000>;
> -				status = "disabled";
> -			};
> -
> -			cpsw_emac0: slave@4a100200 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			cpsw_emac1: slave@4a100300 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			phy_sel: cpsw-phy-sel@44e10650 {
> -				compatible = "ti,am43xx-cpsw-phy-sel";
> -				reg= <0x44e10650 0x4>;
> -				reg-names = "gmii-sel";
> -			};
> -		};
> -
> -		epwmss0: epwmss@48300000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48300000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss0";
> -			status = "disabled";
> -
> -			ecap0: ecap@48300100 {
> -				compatible = "ti,am4372-ecap",
> -					     "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48300100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm0: pwm@48300200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48300200 0x80>;
> -				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss1: epwmss@48302000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48302000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss1";
> -			status = "disabled";
> -
> -			ecap1: ecap@48302100 {
> -				compatible = "ti,am4372-ecap",
> -					     "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48302100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm1: pwm@48302200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48302200 0x80>;
> -				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss2: epwmss@48304000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48304000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss2";
> -			status = "disabled";
> -
> -			ecap2: ecap@48304100 {
> -				compatible = "ti,am4372-ecap",
> -					     "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48304100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm2: pwm@48304200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48304200 0x80>;
> -				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss3: epwmss@48306000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48306000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss3";
> -			status = "disabled";
> -
> -			ehrpwm3: pwm@48306200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48306200 0x80>;
> -				clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss4: epwmss@48308000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48308000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss4";
> -			status = "disabled";
> -
> -			ehrpwm4: pwm@48308200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48308200 0x80>;
> -				clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss5: epwmss@4830a000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x4830a000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss5";
> -			status = "disabled";
> -
> -			ehrpwm5: pwm@4830a200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x4830a200 0x80>;
> -				clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		tscadc: tscadc@44e0d000 {
> -			compatible = "ti,am3359-tscadc";
> -			reg = <0x44e0d000 0x1000>;
> -			ti,hwmods = "adc_tsc";
> -			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&adc_tsc_fck>;
> -			clock-names = "fck";
> -			status = "disabled";
> -			dmas = <&edma 53 0>, <&edma 57 0>;
> -			dma-names = "fifo0", "fifo1";
> -
> -			tsc {
> -				compatible = "ti,am3359-tsc";
> -			};
> -
> -			adc {
> -				#io-channel-cells = <1>;
> -				compatible = "ti,am3359-adc";
> -			};
> -
> -		};
> -
>  		sham: sham@53100000 {
>  			compatible = "ti,omap5-sham";
>  			ti,hwmods = "sham";
> @@ -938,53 +266,6 @@
>  			dma-names = "tx", "rx";
>  		};
>  
> -		rng: rng@48310000 {
> -			compatible = "ti,omap4-rng";
> -			ti,hwmods = "rng";
> -			reg = <0x48310000 0x2000>;
> -			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
> -		};
> -
> -		mcasp0: mcasp@48038000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp0";
> -			reg = <0x48038000 0x2000>,
> -			      <0x46000000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
> -				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 8 2>,
> -			       <&edma 9 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		mcasp1: mcasp@4803c000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp1";
> -			reg = <0x4803C000 0x2000>,
> -			      <0x46400000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
> -				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 10 2>,
> -			       <&edma 11 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		elm: elm@48080000 {
> -			compatible = "ti,am3352-elm";
> -			reg = <0x48080000 0x2000>;
> -			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "elm";
> -			clocks = <&l4ls_gclk>;
> -			clock-names = "fck";
> -			status = "disabled";
> -		};
> -
>  		gpmc: gpmc@50000000 {
>  			compatible = "ti,am3352-gpmc";
>  			ti,hwmods = "gpmc";
> @@ -1005,102 +286,6 @@
>  			status = "disabled";
>  		};
>  
> -		ocp2scp0: ocp2scp@483a8000 {
> -			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "ocp2scp0";
> -
> -			usb2_phy1: phy@483a8000 {
> -				compatible = "ti,am437x-usb2";
> -				reg = <0x483a8000 0x8000>;
> -				syscon-phy-power = <&scm_conf 0x620>;
> -				clocks = <&usb_phy0_always_on_clk32k>,
> -					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
> -				clock-names = "wkupclk", "refclk";
> -				#phy-cells = <0>;
> -				status = "disabled";
> -			};
> -		};
> -
> -		ocp2scp1: ocp2scp@483e8000 {
> -			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "ocp2scp1";
> -
> -			usb2_phy2: phy@483e8000 {
> -				compatible = "ti,am437x-usb2";
> -				reg = <0x483e8000 0x8000>;
> -				syscon-phy-power = <&scm_conf 0x628>;
> -				clocks = <&usb_phy1_always_on_clk32k>,
> -					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
> -				clock-names = "wkupclk", "refclk";
> -				#phy-cells = <0>;
> -				status = "disabled";
> -			};
> -		};
> -
> -		dwc3_1: omap_dwc3@48380000 {
> -			compatible = "ti,am437x-dwc3";
> -			ti,hwmods = "usb_otg_ss0";
> -			reg = <0x48380000 0x10000>;
> -			interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			utmi-mode = <1>;
> -			ranges;
> -
> -			usb1: usb@48390000 {
> -				compatible = "synopsys,dwc3";
> -				reg = <0x48390000 0x10000>;
> -				interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> -				interrupt-names = "peripheral",
> -						  "host",
> -						  "otg";
> -				phys = <&usb2_phy1>;
> -				phy-names = "usb2-phy";
> -				maximum-speed = "high-speed";
> -				dr_mode = "otg";
> -				status = "disabled";
> -				snps,dis_u3_susphy_quirk;
> -				snps,dis_u2_susphy_quirk;
> -			};
> -		};
> -
> -		dwc3_2: omap_dwc3@483c0000 {
> -			compatible = "ti,am437x-dwc3";
> -			ti,hwmods = "usb_otg_ss1";
> -			reg = <0x483c0000 0x10000>;
> -			interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			utmi-mode = <1>;
> -			ranges;
> -
> -			usb2: usb@483d0000 {
> -				compatible = "synopsys,dwc3";
> -				reg = <0x483d0000 0x10000>;
> -				interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> -				interrupt-names = "peripheral",
> -						  "host",
> -						  "otg";
> -				phys = <&usb2_phy2>;
> -				phy-names = "usb2-phy";
> -				maximum-speed = "high-speed";
> -				dr_mode = "otg";
> -				status = "disabled";
> -				snps,dis_u3_susphy_quirk;
> -				snps,dis_u2_susphy_quirk;
> -			};
> -		};
> -
>  		qspi: spi@47900000 {
>  			compatible = "ti,am4372-qspi";
>  			reg = <0x47900000 0x100>,
> @@ -1114,16 +299,6 @@
>  			status = "disabled";
>  		};
>  
> -		hdq: hdq@48347000 {
> -			compatible = "ti,am4372-hdq";
> -			reg = <0x48347000 0x1000>;
> -			interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&func_12m_clk>;
> -			clock-names = "fck";
> -			ti,hwmods = "hdq1w";
> -			status = "disabled";
> -		};
> -
>  		dss: dss@4832a000 {
>  			compatible = "ti,omap3-dss";
>  			reg = <0x4832a000 0x200>;
> @@ -1173,45 +348,8 @@
>  				pool;
>  			};
>  		};
> -
> -		dcan0: can@481cc000 {
> -			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> -			ti,hwmods = "d_can0";
> -			clocks = <&dcan0_fck>;
> -			clock-names = "fck";
> -			reg = <0x481cc000 0x2000>;
> -			syscon-raminit = <&scm_conf 0x644 0>;
> -			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
> -		dcan1: can@481d0000 {
> -			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> -			ti,hwmods = "d_can1";
> -			clocks = <&dcan1_fck>;
> -			clock-names = "fck";
> -			reg = <0x481d0000 0x2000>;
> -			syscon-raminit = <&scm_conf 0x644 1>;
> -			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
> -		vpfe0: vpfe@48326000 {
> -			compatible = "ti,am437x-vpfe";
> -			reg = <0x48326000 0x2000>;
> -			interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "vpfe0";
> -			status = "disabled";
> -		};
> -
> -		vpfe1: vpfe@48328000 {
> -			compatible = "ti,am437x-vpfe";
> -			reg = <0x48328000 0x2000>;
> -			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "vpfe1";
> -			status = "disabled";
> -		};
>  	};
>  };
>  
> +#include "am437x-l4.dtsi"
>  #include "am43xx-clocks.dtsi"
> diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
> --- a/arch/arm/boot/dts/am437x-l4.dtsi
> +++ b/arch/arm/boot/dts/am437x-l4.dtsi
> @@ -48,11 +48,29 @@
>  		};
>  
>  		target-module@f0000 {			/* 0x44df0000, ap 8 58.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0xf0000 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xf0000 0x10000>;
> +
> +			prcm: prcm@0 {
> +				compatible = "ti,am4-prcm", "simple-bus";
> +				reg = <0x0 0x11000>;
> +				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x11000>;
> +
> +				prcm_clocks: clocks {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +				};
> +
> +				prcm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  	};
>  
> @@ -134,6 +152,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x7000 0x1000>;
> +
> +			gpio0: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
> @@ -156,6 +185,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9000 0x1000>;
> +
> +			uart0: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
> +			};
>  		};
>  
>  		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
> @@ -180,6 +215,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xb000 0x1000>;
> +
> +			i2c0: i2c@0 {
> +				compatible = "ti,am4372-i2c","ti,omap4-i2c";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
> @@ -198,14 +242,94 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd000 0x1000>;
> +
> +			tscadc: tscadc@0 {
> +				compatible = "ti,am3359-tscadc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&adc_tsc_fck>;
> +				clock-names = "fck";
> +				status = "disabled";
> +				dmas = <&edma 53 0>, <&edma 57 0>;
> +				dma-names = "fifo0", "fifo1";
> +
> +				tsc {
> +					compatible = "ti,am3359-tsc";
> +				};
> +
> +				adc {
> +					#io-channel-cells = <1>;
> +					compatible = "ti,am3359-adc";
> +				};
> +
> +			};
>  		};
>  
>  		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0x10000 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x10000 0x10000>;
> +
> +			scm: scm@0 {
> +				compatible = "ti,am4-scm", "simple-bus";
> +				reg = <0x0 0x4000>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x4000>;
> +
> +				phy_sel: cpsw-phy-sel@650 {
> +					compatible = "ti,am43xx-cpsw-phy-sel";
> +					reg= <0x650 0x4>;
> +					reg-names = "gmii-sel";
> +				};
> +
> +				am43xx_pinmux: pinmux@800 {
> +					compatible = "ti,am437-padconf",
> +						     "pinctrl-single";
> +					reg = <0x800 0x31c>;
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					#pinctrl-cells = <1>;
> +					#interrupt-cells = <1>;
> +					interrupt-controller;
> +					pinctrl-single,register-width = <32>;
> +					pinctrl-single,function-mask = <0xffffffff>;
> +				};
> +
> +				scm_conf: scm_conf@0 {
> +					compatible = "syscon";
> +					reg = <0x0 0x800>;
> +					#address-cells = <1>;
> +					#size-cells = <1>;
> +
> +					scm_clocks: clocks {
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +					};
> +				};
> +
> +				wkup_m3_ipc: wkup_m3_ipc@1324 {
> +					compatible = "ti,am4372-wkup-m3-ipc";
> +					reg = <0x1324 0x44>;
> +					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> +					ti,rproc = <&wkup_m3>;
> +					mboxes = <&mailbox &mbox_wkupm3>;
> +				};
> +
> +				edma_xbar: dma-router@f90 {
> +					compatible = "ti,am335x-edma-crossbar";
> +					reg = <0xf90 0x40>;
> +					#dma-cells = <3>;
> +					dma-requests = <64>;
> +					dma-masters = <&edma>;
> +				};
> +
> +				scm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  
>  		target-module@31000 {			/* 0x44e31000, ap 24 40.0 */
> @@ -228,6 +352,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x31000 0x1000>;
> +
> +			timer1: timer@0 {
> +				compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-alwon;
> +				clocks = <&timer1_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module@33000 {			/* 0x44e33000, ap 26 18.0 */
> @@ -258,6 +391,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x35000 0x1000>;
> +
> +			wdt: wdt@0 {
> +				compatible = "ti,am4372-wdt","ti,omap3-wdt";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
> +			};
>  		};
>  
>  		target-module@37000 {			/* 0x44e37000, ap 30 08.0 */
> @@ -292,6 +431,18 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3e000 0x1000>;
> +
> +			rtc: rtc@0 {
> +				compatible = "ti,am4372-rtc", "ti,am3352-rtc",
> +					     "ti,da830-rtc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&clk_32768_ck>;
> +				clock-names = "int-clk";
> +				system-power-controller;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@40000 {			/* 0x44e40000, ap 36 68.0 */
> @@ -316,6 +467,11 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x86000 0x1000>;
> +
> +			counter32k: counter@0 {
> +				compatible = "ti,am4372-counter32k","ti,omap-counter32k";
> +				reg = <0x0 0x40>;
> +			};
>  		};
>  
>  		target-module@88000 {			/* 0x44e88000, ap 38 12.0 */
> @@ -355,11 +511,74 @@
>  			 <0x00280000 0x00280000 0x001000>;	/* ap 8 */
>  
>  		target-module@100000 {			/* 0x4a100000, ap 3 04.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4-simple", "ti,sysc";
> +			ti,hwmods = "cpgmac0";
> +			reg = <0x101200 0x4>,
> +			      <0x101208 0x4>,
> +			      <0x101204 0x4>;
> +			reg-names = "rev", "sysc", "syss";
> +			ti,sysc-mask = <0>;
> +			ti,sysc-midle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,syss-mask = <1>;
> +			clocks = <&cpsw_125mhz_clkctrl AM4_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x100000 0x8000>;
> +
> +			mac: ethernet@0 {
> +				compatible = "ti,am4372-cpsw","ti,cpsw";
> +				reg = <0x0 0x800
> +				       0x1200 0x100>;
> +				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
> +					 <&dpll_clksel_mac_clk>;
> +				clock-names = "fck", "cpts", "50mclk";
> +				assigned-clocks = <&dpll_clksel_mac_clk>;
> +				assigned-clock-rates = <50000000>;
> +				status = "disabled";
> +				cpdma_channels = <8>;
> +				ale_entries = <1024>;
> +				bd_ram_size = <0x2000>;
> +				mac_control = <0x20>;
> +				slaves = <2>;
> +				active_slave = <0>;
> +				cpts_clock_mult = <0x80000000>;
> +				cpts_clock_shift = <29>;
> +				ranges = <0 0 0x8000>;
> +				syscon = <&scm_conf>;
> +				cpsw-phy-sel = <&phy_sel>;
> +
> +				davinci_mdio: mdio@1000 {
> +					compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
> +					reg = <0x1000 0x100>;
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					clocks = <&cpsw_125mhz_gclk>;
> +					clock-names = "fck";
> +					ti,hwmods = "davinci_mdio";
> +					bus_freq = <1000000>;
> +					status = "disabled";
> +				};
> +
> +				cpsw_emac0: slave@200 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +
> +				cpsw_emac1: slave@300 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +			};
>  		};
>  
>  		target-module@200000 {			/* 0x4a200000, ap 7 02.0 */
> @@ -475,6 +694,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x22000 0x1000>;
> +
> +			uart1: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@24000 {			/* 0x48024000, ap 10 1c.0 */
> @@ -497,6 +723,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x24000 0x1000>;
> +
> +			uart2: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@2a000 {			/* 0x4802a000, ap 12 22.0 */
> @@ -521,6 +754,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2a000 0x1000>;
> +
> +			i2c1: i2c@0 {
> +				compatible = "ti,am4372-i2c","ti,omap4-i2c";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@30000 {			/* 0x48030000, ap 65 08.0 */
> @@ -543,6 +785,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x30000 0x1000>;
> +
> +			spi0: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@34000 {			/* 0x48034000, ap 80 56.0 */
> @@ -576,6 +827,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x38000 0x2000>;
> +
> +			mcasp0: mcasp@0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46000000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
> +					     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 8 2>,
> +				       <&edma 9 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@3c000 {			/* 0x4803c000, ap 16 2a.0 */
> @@ -593,6 +858,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3c000 0x2000>;
> +
> +			mcasp1: mcasp@0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46400000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
> +					     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 10 2>,
> +				       <&edma 11 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@40000 {			/* 0x48040000, ap 18 1e.0 */
> @@ -613,6 +892,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x40000 0x1000>;
> +
> +			timer2: timer@0  {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&timer2_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module@42000 {			/* 0x48042000, ap 20 24.0 */
> @@ -633,6 +920,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x42000 0x1000>;
> +
> +			timer3: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@44000 {			/* 0x48044000, ap 22 26.0 */
> @@ -653,6 +947,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x44000 0x1000>;
> +
> +			timer4: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@46000 {			/* 0x48046000, ap 24 28.0 */
> @@ -673,6 +975,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x46000 0x1000>;
> +
> +			timer5: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@48000 {			/* 0x48048000, ap 26 1a.0 */
> @@ -693,6 +1003,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x48000 0x1000>;
> +
> +			timer6: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@4a000 {			/* 0x4804a000, ap 71 48.0 */
> @@ -713,6 +1031,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4a000 0x1000>;
> +
> +			timer7: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@4c000 {			/* 0x4804c000, ap 28 36.0 */
> @@ -737,6 +1063,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4c000 0x1000>;
> +
> +			gpio1: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@60000 {			/* 0x48060000, ap 30 14.0 */
> @@ -760,6 +1097,18 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x60000 0x1000>;
> +
> +			mmc1: mmc@0 {
> +				compatible = "ti,omap4-hsmmc";
> +				reg = <0x0 0x1000>;
> +				ti,dual-volt;
> +				ti,needs-special-reset;
> +				dmas = <&edma 24 0>,
> +					<&edma 25 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@80000 {			/* 0x48080000, ap 32 18.0 */
> @@ -782,6 +1131,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x80000 0x10000>;
> +
> +			elm: elm@0 {
> +				compatible = "ti,am3352-elm";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&l4ls_gclk>;
> +				clock-names = "fck";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@c8000 {			/* 0x480c8000, ap 73 06.0 */
> @@ -800,6 +1158,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc8000 0x1000>;
> +
> +			mailbox: mailbox@0 {
> +				compatible = "ti,omap4-mailbox";
> +				reg = <0x0 0x200>;
> +				interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
> +				#mbox-cells = <1>;
> +				ti,mbox-num-users = <4>;
> +				ti,mbox-num-fifos = <8>;
> +				mbox_wkupm3: wkup_m3 {
> +					ti,mbox-send-noirq;
> +					ti,mbox-tx = <0 0 0>;
> +					ti,mbox-rx = <0 0 3>;
> +				};
> +			};
>  		};
>  
>  		target-module@ca000 {			/* 0x480ca000, ap 77 38.0 */
> @@ -823,6 +1195,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xca000 0x1000>;
> +
> +			hwspinlock: spinlock@0 {
> +				compatible = "ti,omap4-hwspinlock";
> +				reg = <0x0 0x1000>;
> +				#hwlock-cells = <1>;
> +			};
>  		};
>  	};
>  
> @@ -899,6 +1277,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9c000 0x1000>;
> +
> +			i2c2: i2c@0 {
> +				compatible = "ti,am4372-i2c","ti,omap4-i2c";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a0000 {			/* 0x481a0000, ap 67 2c.0 */
> @@ -921,6 +1308,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa0000 0x1000>;
> +
> +			spi1: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a2000 {			/* 0x481a2000, ap 69 2e.0 */
> @@ -943,6 +1339,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa2000 0x1000>;
> +
> +			spi2: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a4000 {			/* 0x481a4000, ap 92 62.0 */
> @@ -965,6 +1370,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa4000 0x1000>;
> +
> +			spi3: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a6000 {			/* 0x481a6000, ap 40 16.0 */
> @@ -987,6 +1401,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa6000 0x1000>;
> +
> +			uart3: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a8000 {			/* 0x481a8000, ap 42 20.0 */
> @@ -1009,6 +1430,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa8000 0x1000>;
> +
> +			uart4: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@aa000 {			/* 0x481aa000, ap 44 12.0 */
> @@ -1031,6 +1459,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xaa000 0x1000>;
> +
> +			uart5: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@ac000 {			/* 0x481ac000, ap 46 30.0 */
> @@ -1055,6 +1490,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xac000 0x1000>;
> +
> +			gpio2: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@ae000 {			/* 0x481ae000, ap 48 32.0 */
> @@ -1079,6 +1525,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xae000 0x1000>;
> +
> +			gpio3: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@c1000 {			/* 0x481c1000, ap 94 68.0 */
> @@ -1099,22 +1556,55 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc1000 0x1000>;
> +
> +			timer8: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@cc000 {			/* 0x481cc000, ap 50 46.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can0";
> +			reg = <0xcc000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xcc000 0x2000>;
> +
> +			dcan0: can@0 {
> +				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				syscon-raminit = <&scm_conf 0x644 0>;
> +				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d0000 {			/* 0x481d0000, ap 52 3a.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can1";
> +			reg = <0xd0000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd0000 0x2000>;
> +
> +			dcan1: can@0 {
> +				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				syscon-raminit = <&scm_conf 0x644 1>;
> +				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d8000 {			/* 0x481d8000, ap 54 5e.0 */
> @@ -1138,6 +1628,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd8000 0x1000>;
> +
> +			mmc2: mmc@0 {
> +				compatible = "ti,omap4-hsmmc";
> +				reg = <0x0 0x1000>;
> +				ti,needs-special-reset;
> +				dmas = <&edma 2 0>,
> +					<&edma 3 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  	};
>  
> @@ -1226,6 +1727,37 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x1000>;
> +
> +			epwmss0: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ecap0: ecap@100 {
> +					compatible = "ti,am4372-ecap",
> +						     "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm0: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@2000 {			/* 0x48302000, ap 58 4a.0 */
> @@ -1248,6 +1780,37 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2000 0x1000>;
> +
> +			epwmss1: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ecap1: ecap@100 {
> +					compatible = "ti,am4372-ecap",
> +						     "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm1: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@4000 {			/* 0x48304000, ap 60 44.0 */
> @@ -1270,6 +1833,37 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4000 0x1000>;
> +
> +			epwmss2: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ecap2: ecap@100 {
> +					compatible = "ti,am4372-ecap",
> +						     "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm2: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@6000 {			/* 0x48306000, ap 96 58.0 */
> @@ -1292,6 +1886,26 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x6000 0x1000>;
> +
> +			epwmss3: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ehrpwm3: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@8000 {			/* 0x48308000, ap 98 54.0 */
> @@ -1314,6 +1928,26 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x8000 0x1000>;
> +
> +			epwmss4: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ehrpwm4: pwm@48308200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@a000 {			/* 0x4830a000, ap 100 60.0 */
> @@ -1336,6 +1970,26 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa000 0x1000>;
> +
> +			epwmss5: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ehrpwm5: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@10000 {			/* 0x48310000, ap 64 4e.1 */
> @@ -1353,6 +2007,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x10000 0x2000>;
> +
> +			rng: rng@0 {
> +				compatible = "ti,omap4-rng";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
> +			};
>  		};
>  
>  		target-module@13000 {			/* 0x48313000, ap 90 50.0 */
> @@ -1393,6 +2053,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x20000 0x1000>;
> +
> +			gpio4: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@22000 {			/* 0x48322000, ap 116 64.0 */
> @@ -1417,6 +2088,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x22000 0x1000>;
> +
> +			gpio5: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@26000 {			/* 0x48326000, ap 86 66.0 */
> @@ -1437,6 +2119,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x26000 0x1000>;
> +
> +			vpfe0: vpfe@0 {
> +				compatible = "ti,am437x-vpfe";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@28000 {			/* 0x48328000, ap 75 0e.0 */
> @@ -1457,6 +2146,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x28000 0x1000>;
> +
> +			vpfe1: vpfe@0 {
> +				compatible = "ti,am437x-vpfe";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@2a000 {			/* 0x4832a000, ap 88 3c.0 */
> @@ -1499,6 +2195,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3d000 0x1000>;
> +
> +			timer9: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@3f000 {			/* 0x4833f000, ap 104 5c.0 */
> @@ -1519,6 +2222,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3f000 0x1000>;
> +
> +			timer10: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@41000 {			/* 0x48341000, ap 106 76.0 */
> @@ -1539,6 +2249,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x41000 0x1000>;
> +
> +			timer11: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@45000 {			/* 0x48345000, ap 108 6a.0 */
> @@ -1561,6 +2278,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x45000 0x1000>;
> +
> +			spi4: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@47000 {			/* 0x48347000, ap 110 70.0 */
> @@ -1578,6 +2304,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x47000 0x1000>;
> +
> +			hdq: hdq@0 {
> +				compatible = "ti,am4372-hdq";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&func_12m_clk>;
> +				clock-names = "fck";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@4c000 {			/* 0x4834c000, ap 114 72.0 */
> @@ -1609,14 +2344,65 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x80000 0x20000>;
> +
> +			dwc3_1: omap_dwc3@0 {
> +				compatible = "ti,am437x-dwc3";
> +				reg = <0x0 0x10000>;
> +				interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				utmi-mode = <1>;
> +				ranges = <0 0 0x20000>;
> +
> +				usb1: usb@10000 {
> +					compatible = "synopsys,dwc3";
> +					reg = <0x10000 0x10000>;
> +					interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> +					interrupt-names = "peripheral",
> +							  "host",
> +							  "otg";
> +					phys = <&usb2_phy1>;
> +					phy-names = "usb2-phy";
> +					maximum-speed = "high-speed";
> +					dr_mode = "otg";
> +					status = "disabled";
> +					snps,dis_u3_susphy_quirk;
> +					snps,dis_u2_susphy_quirk;
> +				};
> +			};
>  		};
>  
>  		target-module@a8000 {			/* 0x483a8000, ap 125 6c.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "ocp2scp0";
> +			reg = <0xa8000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa8000 0x8000>;
> +
> +			ocp2scp0: ocp2scp@0 {
> +				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x8000>;
> +
> +				usb2_phy1: phy@8000 {
> +					compatible = "ti,am437x-usb2";
> +					reg = <0x0 0x8000>;
> +					syscon-phy-power = <&scm_conf 0x620>;
> +					clocks = <&usb_phy0_always_on_clk32k>,
> +						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
> +					clock-names = "wkupclk", "refclk";
> +					#phy-cells = <0>;
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@c0000 {			/* 0x483c0000, ap 127 7a.0 */
> @@ -1640,14 +2426,65 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc0000 0x20000>;
> +
> +			dwc3_2: omap_dwc3@0 {
> +				compatible = "ti,am437x-dwc3";
> +				reg = <0x0 0x10000>;
> +				interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				utmi-mode = <1>;
> +				ranges = <0 0 0x20000>;
> +
> +				usb2: usb@10000 {
> +					compatible = "synopsys,dwc3";
> +					reg = <0x10000 0x10000>;
> +					interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> +					interrupt-names = "peripheral",
> +							  "host",
> +							  "otg";
> +					phys = <&usb2_phy2>;
> +					phy-names = "usb2-phy";
> +					maximum-speed = "high-speed";
> +					dr_mode = "otg";
> +					status = "disabled";
> +					snps,dis_u3_susphy_quirk;
> +					snps,dis_u2_susphy_quirk;
> +				};
> +			};
>  		};
>  
>  		target-module@e8000 {			/* 0x483e8000, ap 129 78.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "ocp2scp1";
> +			reg = <0xe8000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP1_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xe8000 0x8000>;
> +
> +			ocp2scp1: ocp2scp@0 {
> +				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x8000>;
> +
> +				usb2_phy2: phy@8000 {
> +					compatible = "ti,am437x-usb2";
> +					reg = <0x0 0x8000>;
> +					syscon-phy-power = <&scm_conf 0x628>;
> +					clocks = <&usb_phy1_always_on_clk32k>,
> +						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
> +					clock-names = "wkupclk", "refclk";
> +					#phy-cells = <0>;
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@f2000 {			/* 0x483f2000, ap 112 5a.0 */
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
@ 2018-12-04 12:23     ` Peter Ujfalusi
  0 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-12-04 12:23 UTC (permalink / raw)
  To: Tony Lindgren, linux-omap
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-arm-kernel

Hi Tony,

On 25/09/2018 3.05, Tony Lindgren wrote:
> With l4 interconnect hierarchy and ti-sysc interconnect target module
> data in place, we can simply move all the related child devices to
> their proper location and enable probing using ti-sysc.
> 
> In general the first child device address range starts at range 0
> from the ti-sysc interconnect target so the move involves adjusting
> the child device reg properties for that.
> 
> In case of any regressions, problem devices can be reverted to probe
> with legacy platform data as needed by moving them back and removing
> the related interconnect target module node.
> 
> Note that we are not yet moving dss or wkup_m3, those will be moved
> later after some related driver changes.

Exactly the same issue as with am335x after:
ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc

reverting this patch makes audio working:

Without revert the McASP FIFO would constantly underflow.

Memcpy test via dmatest works with EDMA


> 
> Cc: Dave Gerlach <d-gerlach@ti.com>
> Cc: Keerthy <j-keerthy@ti.com>
> Cc: Tero Kristo <t-kristo@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am4372.dtsi    | 876 +------------------------------
>  arch/arm/boot/dts/am437x-l4.dtsi | 865 +++++++++++++++++++++++++++++-
>  2 files changed, 858 insertions(+), 883 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
> --- a/arch/arm/boot/dts/am4372.dtsi
> +++ b/arch/arm/boot/dts/am4372.dtsi
> @@ -8,6 +8,7 @@
>   * kind, whether express or implied.
>   */
>  
> +#include <dt-bindings/bus/ti-sysc.h>
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/interrupt-controller/arm-gic.h>
>  #include <dt-bindings/clock/am4.h>
> @@ -159,12 +160,7 @@
>  		interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
>  			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
>  
> -		l4_wkup: l4_wkup@44c00000 {
> -			compatible = "ti,am4-l4-wkup", "simple-bus";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges = <0 0x44c00000 0x287000>;
> -
> +		l4_wkup: interconnect@44c00000 {
>  			wkup_m3: wkup_m3@100000 {
>  				compatible = "ti,am4372-wkup-m3";
>  				reg = <0x100000 0x4000>,
> @@ -173,75 +169,10 @@
>  				ti,hwmods = "wkup_m3";
>  				ti,pm-firmware = "am335x-pm-firmware.elf";
>  			};
> -
> -			prcm: prcm@1f0000 {
> -				compatible = "ti,am4-prcm", "simple-bus";
> -				reg = <0x1f0000 0x11000>;
> -				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0 0x1f0000 0x11000>;
> -
> -				prcm_clocks: clocks {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -				};
> -
> -				prcm_clockdomains: clockdomains {
> -				};
> -			};
> -
> -			scm: scm@210000 {
> -				compatible = "ti,am4-scm", "simple-bus";
> -				reg = <0x210000 0x4000>;
> -				#address-cells = <1>;
> -				#size-cells = <1>;
> -				ranges = <0 0x210000 0x4000>;
> -
> -				am43xx_pinmux: pinmux@800 {
> -					compatible = "ti,am437-padconf",
> -						     "pinctrl-single";
> -					reg = <0x800 0x31c>;
> -					#address-cells = <1>;
> -					#size-cells = <0>;
> -					#pinctrl-cells = <1>;
> -					#interrupt-cells = <1>;
> -					interrupt-controller;
> -					pinctrl-single,register-width = <32>;
> -					pinctrl-single,function-mask = <0xffffffff>;
> -				};
> -
> -				scm_conf: scm_conf@0 {
> -					compatible = "syscon";
> -					reg = <0x0 0x800>;
> -					#address-cells = <1>;
> -					#size-cells = <1>;
> -
> -					scm_clocks: clocks {
> -						#address-cells = <1>;
> -						#size-cells = <0>;
> -					};
> -				};
> -
> -				wkup_m3_ipc: wkup_m3_ipc@1324 {
> -					compatible = "ti,am4372-wkup-m3-ipc";
> -					reg = <0x1324 0x44>;
> -					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> -					ti,rproc = <&wkup_m3>;
> -					mboxes = <&mailbox &mbox_wkupm3>;
> -				};
> -
> -				edma_xbar: dma-router@f90 {
> -					compatible = "ti,am335x-edma-crossbar";
> -					reg = <0xf90 0x40>;
> -					#dma-cells = <3>;
> -					dma-requests = <64>;
> -					dma-masters = <&edma>;
> -				};
> -
> -				scm_clockdomains: clockdomains {
> -				};
> -			};
> +		};
> +		l4_per: interconnect@48000000 {
> +		};
> +		l4_fast: interconnect@4a000000 {
>  		};
>  
>  		emif: emif@4c000000 {
> @@ -297,333 +228,6 @@
>  			interrupt-names = "edma3_tcerrint";
>  		};
>  
> -		uart0: serial@44e09000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x44e09000 0x2000>;
> -			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart1";
> -		};
> -
> -		uart1: serial@48022000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x48022000 0x2000>;
> -			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart2";
> -			status = "disabled";
> -		};
> -
> -		uart2: serial@48024000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x48024000 0x2000>;
> -			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart3";
> -			status = "disabled";
> -		};
> -
> -		uart3: serial@481a6000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x481a6000 0x2000>;
> -			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart4";
> -			status = "disabled";
> -		};
> -
> -		uart4: serial@481a8000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x481a8000 0x2000>;
> -			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart5";
> -			status = "disabled";
> -		};
> -
> -		uart5: serial@481aa000 {
> -			compatible = "ti,am4372-uart","ti,omap2-uart";
> -			reg = <0x481aa000 0x2000>;
> -			interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "uart6";
> -			status = "disabled";
> -		};
> -
> -		mailbox: mailbox@480c8000 {
> -			compatible = "ti,omap4-mailbox";
> -			reg = <0x480C8000 0x200>;
> -			interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "mailbox";
> -			#mbox-cells = <1>;
> -			ti,mbox-num-users = <4>;
> -			ti,mbox-num-fifos = <8>;
> -			mbox_wkupm3: wkup_m3 {
> -				ti,mbox-send-noirq;
> -				ti,mbox-tx = <0 0 0>;
> -				ti,mbox-rx = <0 0 3>;
> -			};
> -		};
> -
> -		timer1: timer@44e31000 {
> -			compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
> -			reg = <0x44e31000 0x400>;
> -			interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-alwon;
> -			ti,hwmods = "timer1";
> -			clocks = <&timer1_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer2: timer@48040000  {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48040000  0x400>;
> -			interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer2";
> -			clocks = <&timer2_fck>;
> -			clock-names = "fck";
> -		};
> -
> -		timer3: timer@48042000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48042000 0x400>;
> -			interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer3";
> -			status = "disabled";
> -		};
> -
> -		timer4: timer@48044000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48044000 0x400>;
> -			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer4";
> -			status = "disabled";
> -		};
> -
> -		timer5: timer@48046000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48046000 0x400>;
> -			interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer5";
> -			status = "disabled";
> -		};
> -
> -		timer6: timer@48048000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48048000 0x400>;
> -			interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer6";
> -			status = "disabled";
> -		};
> -
> -		timer7: timer@4804a000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x4804a000 0x400>;
> -			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,timer-pwm;
> -			ti,hwmods = "timer7";
> -			status = "disabled";
> -		};
> -
> -		timer8: timer@481c1000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x481c1000 0x400>;
> -			interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer8";
> -			status = "disabled";
> -		};
> -
> -		timer9: timer@4833d000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x4833d000 0x400>;
> -			interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer9";
> -			status = "disabled";
> -		};
> -
> -		timer10: timer@4833f000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x4833f000 0x400>;
> -			interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer10";
> -			status = "disabled";
> -		};
> -
> -		timer11: timer@48341000 {
> -			compatible = "ti,am4372-timer","ti,am335x-timer";
> -			reg = <0x48341000 0x400>;
> -			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "timer11";
> -			status = "disabled";
> -		};
> -
> -		counter32k: counter@44e86000 {
> -			compatible = "ti,am4372-counter32k","ti,omap-counter32k";
> -			reg = <0x44e86000 0x40>;
> -			ti,hwmods = "counter_32k";
> -		};
> -
> -		rtc: rtc@44e3e000 {
> -			compatible = "ti,am4372-rtc", "ti,am3352-rtc",
> -				     "ti,da830-rtc";
> -			reg = <0x44e3e000 0x1000>;
> -			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "rtc";
> -			clocks = <&clk_32768_ck>;
> -			clock-names = "int-clk";
> -			system-power-controller;
> -			status = "disabled";
> -		};
> -
> -		wdt: wdt@44e35000 {
> -			compatible = "ti,am4372-wdt","ti,omap3-wdt";
> -			reg = <0x44e35000 0x1000>;
> -			interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "wd_timer2";
> -		};
> -
> -		gpio0: gpio@44e07000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x44e07000 0x1000>;
> -			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio1";
> -			status = "disabled";
> -		};
> -
> -		gpio1: gpio@4804c000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x4804c000 0x1000>;
> -			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio2";
> -			status = "disabled";
> -		};
> -
> -		gpio2: gpio@481ac000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x481ac000 0x1000>;
> -			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio3";
> -			status = "disabled";
> -		};
> -
> -		gpio3: gpio@481ae000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x481ae000 0x1000>;
> -			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio4";
> -			status = "disabled";
> -		};
> -
> -		gpio4: gpio@48320000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x48320000 0x1000>;
> -			interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio5";
> -			status = "disabled";
> -		};
> -
> -		gpio5: gpio@48322000 {
> -			compatible = "ti,am4372-gpio","ti,omap4-gpio";
> -			reg = <0x48322000 0x1000>;
> -			interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
> -			gpio-controller;
> -			#gpio-cells = <2>;
> -			interrupt-controller;
> -			#interrupt-cells = <2>;
> -			ti,hwmods = "gpio6";
> -			status = "disabled";
> -		};
> -
> -		hwspinlock: spinlock@480ca000 {
> -			compatible = "ti,omap4-hwspinlock";
> -			reg = <0x480ca000 0x1000>;
> -			ti,hwmods = "spinlock";
> -			#hwlock-cells = <1>;
> -		};
> -
> -		i2c0: i2c@44e0b000 {
> -			compatible = "ti,am4372-i2c","ti,omap4-i2c";
> -			reg = <0x44e0b000 0x1000>;
> -			interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "i2c1";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		i2c1: i2c@4802a000 {
> -			compatible = "ti,am4372-i2c","ti,omap4-i2c";
> -			reg = <0x4802a000 0x1000>;
> -			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "i2c2";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		i2c2: i2c@4819c000 {
> -			compatible = "ti,am4372-i2c","ti,omap4-i2c";
> -			reg = <0x4819c000 0x1000>;
> -			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "i2c3";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi0: spi@48030000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x48030000 0x400>;
> -			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi0";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		mmc1: mmc@48060000 {
> -			compatible = "ti,omap4-hsmmc";
> -			reg = <0x48060000 0x1000>;
> -			ti,hwmods = "mmc1";
> -			ti,dual-volt;
> -			ti,needs-special-reset;
> -			dmas = <&edma 24 0>,
> -				<&edma 25 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
> -		mmc2: mmc@481d8000 {
> -			compatible = "ti,omap4-hsmmc";
> -			reg = <0x481d8000 0x1000>;
> -			ti,hwmods = "mmc2";
> -			ti,needs-special-reset;
> -			dmas = <&edma 2 0>,
> -				<&edma 3 0>;
> -			dma-names = "tx", "rx";
> -			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
>  		mmc3: mmc@47810000 {
>  			compatible = "ti,omap4-hsmmc";
>  			reg = <0x47810000 0x1000>;
> @@ -633,282 +237,6 @@
>  			status = "disabled";
>  		};
>  
> -		spi1: spi@481a0000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x481a0000 0x400>;
> -			interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi1";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi2: spi@481a2000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x481a2000 0x400>;
> -			interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi2";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi3: spi@481a4000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x481a4000 0x400>;
> -			interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi3";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		spi4: spi@48345000 {
> -			compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> -			reg = <0x48345000 0x400>;
> -			interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "spi4";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> -			status = "disabled";
> -		};
> -
> -		mac: ethernet@4a100000 {
> -			compatible = "ti,am4372-cpsw","ti,cpsw";
> -			reg = <0x4a100000 0x800
> -			       0x4a101200 0x100>;
> -			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
> -				      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ti,hwmods = "cpgmac0";
> -			clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
> -				 <&dpll_clksel_mac_clk>;
> -			clock-names = "fck", "cpts", "50mclk";
> -			assigned-clocks = <&dpll_clksel_mac_clk>;
> -			assigned-clock-rates = <50000000>;
> -			status = "disabled";
> -			cpdma_channels = <8>;
> -			ale_entries = <1024>;
> -			bd_ram_size = <0x2000>;
> -			mac_control = <0x20>;
> -			slaves = <2>;
> -			active_slave = <0>;
> -			cpts_clock_mult = <0x80000000>;
> -			cpts_clock_shift = <29>;
> -			ranges;
> -			syscon = <&scm_conf>;
> -
> -			davinci_mdio: mdio@4a101000 {
> -				compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
> -				reg = <0x4a101000 0x100>;
> -				#address-cells = <1>;
> -				#size-cells = <0>;
> -				ti,hwmods = "davinci_mdio";
> -				bus_freq = <1000000>;
> -				status = "disabled";
> -			};
> -
> -			cpsw_emac0: slave@4a100200 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			cpsw_emac1: slave@4a100300 {
> -				/* Filled in by U-Boot */
> -				mac-address = [ 00 00 00 00 00 00 ];
> -			};
> -
> -			phy_sel: cpsw-phy-sel@44e10650 {
> -				compatible = "ti,am43xx-cpsw-phy-sel";
> -				reg= <0x44e10650 0x4>;
> -				reg-names = "gmii-sel";
> -			};
> -		};
> -
> -		epwmss0: epwmss@48300000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48300000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss0";
> -			status = "disabled";
> -
> -			ecap0: ecap@48300100 {
> -				compatible = "ti,am4372-ecap",
> -					     "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48300100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm0: pwm@48300200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48300200 0x80>;
> -				clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss1: epwmss@48302000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48302000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss1";
> -			status = "disabled";
> -
> -			ecap1: ecap@48302100 {
> -				compatible = "ti,am4372-ecap",
> -					     "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48302100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm1: pwm@48302200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48302200 0x80>;
> -				clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss2: epwmss@48304000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48304000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss2";
> -			status = "disabled";
> -
> -			ecap2: ecap@48304100 {
> -				compatible = "ti,am4372-ecap",
> -					     "ti,am3352-ecap",
> -					     "ti,am33xx-ecap";
> -				#pwm-cells = <3>;
> -				reg = <0x48304100 0x80>;
> -				clocks = <&l4ls_gclk>;
> -				clock-names = "fck";
> -				status = "disabled";
> -			};
> -
> -			ehrpwm2: pwm@48304200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48304200 0x80>;
> -				clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss3: epwmss@48306000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48306000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss3";
> -			status = "disabled";
> -
> -			ehrpwm3: pwm@48306200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48306200 0x80>;
> -				clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss4: epwmss@48308000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x48308000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss4";
> -			status = "disabled";
> -
> -			ehrpwm4: pwm@48308200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x48308200 0x80>;
> -				clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		epwmss5: epwmss@4830a000 {
> -			compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> -			reg = <0x4830a000 0x10>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "epwmss5";
> -			status = "disabled";
> -
> -			ehrpwm5: pwm@4830a200 {
> -				compatible = "ti,am4372-ehrpwm",
> -					     "ti,am3352-ehrpwm",
> -					     "ti,am33xx-ehrpwm";
> -				#pwm-cells = <3>;
> -				reg = <0x4830a200 0x80>;
> -				clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
> -				clock-names = "tbclk", "fck";
> -				status = "disabled";
> -			};
> -		};
> -
> -		tscadc: tscadc@44e0d000 {
> -			compatible = "ti,am3359-tscadc";
> -			reg = <0x44e0d000 0x1000>;
> -			ti,hwmods = "adc_tsc";
> -			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&adc_tsc_fck>;
> -			clock-names = "fck";
> -			status = "disabled";
> -			dmas = <&edma 53 0>, <&edma 57 0>;
> -			dma-names = "fifo0", "fifo1";
> -
> -			tsc {
> -				compatible = "ti,am3359-tsc";
> -			};
> -
> -			adc {
> -				#io-channel-cells = <1>;
> -				compatible = "ti,am3359-adc";
> -			};
> -
> -		};
> -
>  		sham: sham@53100000 {
>  			compatible = "ti,omap5-sham";
>  			ti,hwmods = "sham";
> @@ -938,53 +266,6 @@
>  			dma-names = "tx", "rx";
>  		};
>  
> -		rng: rng@48310000 {
> -			compatible = "ti,omap4-rng";
> -			ti,hwmods = "rng";
> -			reg = <0x48310000 0x2000>;
> -			interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
> -		};
> -
> -		mcasp0: mcasp@48038000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp0";
> -			reg = <0x48038000 0x2000>,
> -			      <0x46000000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
> -				     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 8 2>,
> -			       <&edma 9 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		mcasp1: mcasp@4803c000 {
> -			compatible = "ti,am33xx-mcasp-audio";
> -			ti,hwmods = "mcasp1";
> -			reg = <0x4803C000 0x2000>,
> -			      <0x46400000 0x400000>;
> -			reg-names = "mpu", "dat";
> -			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
> -				     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> -			interrupt-names = "tx", "rx";
> -			status = "disabled";
> -			dmas = <&edma 10 2>,
> -			       <&edma 11 2>;
> -			dma-names = "tx", "rx";
> -		};
> -
> -		elm: elm@48080000 {
> -			compatible = "ti,am3352-elm";
> -			reg = <0x48080000 0x2000>;
> -			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "elm";
> -			clocks = <&l4ls_gclk>;
> -			clock-names = "fck";
> -			status = "disabled";
> -		};
> -
>  		gpmc: gpmc@50000000 {
>  			compatible = "ti,am3352-gpmc";
>  			ti,hwmods = "gpmc";
> @@ -1005,102 +286,6 @@
>  			status = "disabled";
>  		};
>  
> -		ocp2scp0: ocp2scp@483a8000 {
> -			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "ocp2scp0";
> -
> -			usb2_phy1: phy@483a8000 {
> -				compatible = "ti,am437x-usb2";
> -				reg = <0x483a8000 0x8000>;
> -				syscon-phy-power = <&scm_conf 0x620>;
> -				clocks = <&usb_phy0_always_on_clk32k>,
> -					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
> -				clock-names = "wkupclk", "refclk";
> -				#phy-cells = <0>;
> -				status = "disabled";
> -			};
> -		};
> -
> -		ocp2scp1: ocp2scp@483e8000 {
> -			compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			ranges;
> -			ti,hwmods = "ocp2scp1";
> -
> -			usb2_phy2: phy@483e8000 {
> -				compatible = "ti,am437x-usb2";
> -				reg = <0x483e8000 0x8000>;
> -				syscon-phy-power = <&scm_conf 0x628>;
> -				clocks = <&usb_phy1_always_on_clk32k>,
> -					 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
> -				clock-names = "wkupclk", "refclk";
> -				#phy-cells = <0>;
> -				status = "disabled";
> -			};
> -		};
> -
> -		dwc3_1: omap_dwc3@48380000 {
> -			compatible = "ti,am437x-dwc3";
> -			ti,hwmods = "usb_otg_ss0";
> -			reg = <0x48380000 0x10000>;
> -			interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			utmi-mode = <1>;
> -			ranges;
> -
> -			usb1: usb@48390000 {
> -				compatible = "synopsys,dwc3";
> -				reg = <0x48390000 0x10000>;
> -				interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> -				interrupt-names = "peripheral",
> -						  "host",
> -						  "otg";
> -				phys = <&usb2_phy1>;
> -				phy-names = "usb2-phy";
> -				maximum-speed = "high-speed";
> -				dr_mode = "otg";
> -				status = "disabled";
> -				snps,dis_u3_susphy_quirk;
> -				snps,dis_u2_susphy_quirk;
> -			};
> -		};
> -
> -		dwc3_2: omap_dwc3@483c0000 {
> -			compatible = "ti,am437x-dwc3";
> -			ti,hwmods = "usb_otg_ss1";
> -			reg = <0x483c0000 0x10000>;
> -			interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> -			#address-cells = <1>;
> -			#size-cells = <1>;
> -			utmi-mode = <1>;
> -			ranges;
> -
> -			usb2: usb@483d0000 {
> -				compatible = "synopsys,dwc3";
> -				reg = <0x483d0000 0x10000>;
> -				interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> -					     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> -				interrupt-names = "peripheral",
> -						  "host",
> -						  "otg";
> -				phys = <&usb2_phy2>;
> -				phy-names = "usb2-phy";
> -				maximum-speed = "high-speed";
> -				dr_mode = "otg";
> -				status = "disabled";
> -				snps,dis_u3_susphy_quirk;
> -				snps,dis_u2_susphy_quirk;
> -			};
> -		};
> -
>  		qspi: spi@47900000 {
>  			compatible = "ti,am4372-qspi";
>  			reg = <0x47900000 0x100>,
> @@ -1114,16 +299,6 @@
>  			status = "disabled";
>  		};
>  
> -		hdq: hdq@48347000 {
> -			compatible = "ti,am4372-hdq";
> -			reg = <0x48347000 0x1000>;
> -			interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
> -			clocks = <&func_12m_clk>;
> -			clock-names = "fck";
> -			ti,hwmods = "hdq1w";
> -			status = "disabled";
> -		};
> -
>  		dss: dss@4832a000 {
>  			compatible = "ti,omap3-dss";
>  			reg = <0x4832a000 0x200>;
> @@ -1173,45 +348,8 @@
>  				pool;
>  			};
>  		};
> -
> -		dcan0: can@481cc000 {
> -			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> -			ti,hwmods = "d_can0";
> -			clocks = <&dcan0_fck>;
> -			clock-names = "fck";
> -			reg = <0x481cc000 0x2000>;
> -			syscon-raminit = <&scm_conf 0x644 0>;
> -			interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
> -		dcan1: can@481d0000 {
> -			compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> -			ti,hwmods = "d_can1";
> -			clocks = <&dcan1_fck>;
> -			clock-names = "fck";
> -			reg = <0x481d0000 0x2000>;
> -			syscon-raminit = <&scm_conf 0x644 1>;
> -			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
> -			status = "disabled";
> -		};
> -
> -		vpfe0: vpfe@48326000 {
> -			compatible = "ti,am437x-vpfe";
> -			reg = <0x48326000 0x2000>;
> -			interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "vpfe0";
> -			status = "disabled";
> -		};
> -
> -		vpfe1: vpfe@48328000 {
> -			compatible = "ti,am437x-vpfe";
> -			reg = <0x48328000 0x2000>;
> -			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
> -			ti,hwmods = "vpfe1";
> -			status = "disabled";
> -		};
>  	};
>  };
>  
> +#include "am437x-l4.dtsi"
>  #include "am43xx-clocks.dtsi"
> diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
> --- a/arch/arm/boot/dts/am437x-l4.dtsi
> +++ b/arch/arm/boot/dts/am437x-l4.dtsi
> @@ -48,11 +48,29 @@
>  		};
>  
>  		target-module@f0000 {			/* 0x44df0000, ap 8 58.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0xf0000 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xf0000 0x10000>;
> +
> +			prcm: prcm@0 {
> +				compatible = "ti,am4-prcm", "simple-bus";
> +				reg = <0x0 0x11000>;
> +				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x11000>;
> +
> +				prcm_clocks: clocks {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +				};
> +
> +				prcm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  	};
>  
> @@ -134,6 +152,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x7000 0x1000>;
> +
> +			gpio0: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@9000 {			/* 0x44e09000, ap 16 04.0 */
> @@ -156,6 +185,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9000 0x1000>;
> +
> +			uart0: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
> +			};
>  		};
>  
>  		target-module@b000 {			/* 0x44e0b000, ap 18 48.0 */
> @@ -180,6 +215,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xb000 0x1000>;
> +
> +			i2c0: i2c@0 {
> +				compatible = "ti,am4372-i2c","ti,omap4-i2c";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d000 {			/* 0x44e0d000, ap 20 38.0 */
> @@ -198,14 +242,94 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd000 0x1000>;
> +
> +			tscadc: tscadc@0 {
> +				compatible = "ti,am3359-tscadc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&adc_tsc_fck>;
> +				clock-names = "fck";
> +				status = "disabled";
> +				dmas = <&edma 53 0>, <&edma 57 0>;
> +				dma-names = "fifo0", "fifo1";
> +
> +				tsc {
> +					compatible = "ti,am3359-tsc";
> +				};
> +
> +				adc {
> +					#io-channel-cells = <1>;
> +					compatible = "ti,am3359-adc";
> +				};
> +
> +			};
>  		};
>  
>  		target-module@10000 {			/* 0x44e10000, ap 22 0c.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			reg = <0x10000 0x4>;
> +			reg-names = "rev";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x10000 0x10000>;
> +
> +			scm: scm@0 {
> +				compatible = "ti,am4-scm", "simple-bus";
> +				reg = <0x0 0x4000>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x4000>;
> +
> +				phy_sel: cpsw-phy-sel@650 {
> +					compatible = "ti,am43xx-cpsw-phy-sel";
> +					reg= <0x650 0x4>;
> +					reg-names = "gmii-sel";
> +				};
> +
> +				am43xx_pinmux: pinmux@800 {
> +					compatible = "ti,am437-padconf",
> +						     "pinctrl-single";
> +					reg = <0x800 0x31c>;
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					#pinctrl-cells = <1>;
> +					#interrupt-cells = <1>;
> +					interrupt-controller;
> +					pinctrl-single,register-width = <32>;
> +					pinctrl-single,function-mask = <0xffffffff>;
> +				};
> +
> +				scm_conf: scm_conf@0 {
> +					compatible = "syscon";
> +					reg = <0x0 0x800>;
> +					#address-cells = <1>;
> +					#size-cells = <1>;
> +
> +					scm_clocks: clocks {
> +						#address-cells = <1>;
> +						#size-cells = <0>;
> +					};
> +				};
> +
> +				wkup_m3_ipc: wkup_m3_ipc@1324 {
> +					compatible = "ti,am4372-wkup-m3-ipc";
> +					reg = <0x1324 0x44>;
> +					interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> +					ti,rproc = <&wkup_m3>;
> +					mboxes = <&mailbox &mbox_wkupm3>;
> +				};
> +
> +				edma_xbar: dma-router@f90 {
> +					compatible = "ti,am335x-edma-crossbar";
> +					reg = <0xf90 0x40>;
> +					#dma-cells = <3>;
> +					dma-requests = <64>;
> +					dma-masters = <&edma>;
> +				};
> +
> +				scm_clockdomains: clockdomains {
> +				};
> +			};
>  		};
>  
>  		target-module@31000 {			/* 0x44e31000, ap 24 40.0 */
> @@ -228,6 +352,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x31000 0x1000>;
> +
> +			timer1: timer@0 {
> +				compatible = "ti,am4372-timer-1ms","ti,am335x-timer-1ms";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-alwon;
> +				clocks = <&timer1_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module@33000 {			/* 0x44e33000, ap 26 18.0 */
> @@ -258,6 +391,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x35000 0x1000>;
> +
> +			wdt: wdt@0 {
> +				compatible = "ti,am4372-wdt","ti,omap3-wdt";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
> +			};
>  		};
>  
>  		target-module@37000 {			/* 0x44e37000, ap 30 08.0 */
> @@ -292,6 +431,18 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3e000 0x1000>;
> +
> +			rtc: rtc@0 {
> +				compatible = "ti,am4372-rtc", "ti,am3352-rtc",
> +					     "ti,da830-rtc";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&clk_32768_ck>;
> +				clock-names = "int-clk";
> +				system-power-controller;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@40000 {			/* 0x44e40000, ap 36 68.0 */
> @@ -316,6 +467,11 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x86000 0x1000>;
> +
> +			counter32k: counter@0 {
> +				compatible = "ti,am4372-counter32k","ti,omap-counter32k";
> +				reg = <0x0 0x40>;
> +			};
>  		};
>  
>  		target-module@88000 {			/* 0x44e88000, ap 38 12.0 */
> @@ -355,11 +511,74 @@
>  			 <0x00280000 0x00280000 0x001000>;	/* ap 8 */
>  
>  		target-module@100000 {			/* 0x4a100000, ap 3 04.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4-simple", "ti,sysc";
> +			ti,hwmods = "cpgmac0";
> +			reg = <0x101200 0x4>,
> +			      <0x101208 0x4>,
> +			      <0x101204 0x4>;
> +			reg-names = "rev", "sysc", "syss";
> +			ti,sysc-mask = <0>;
> +			ti,sysc-midle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,sysc-sidle = <SYSC_IDLE_FORCE>,
> +					<SYSC_IDLE_NO>;
> +			ti,syss-mask = <1>;
> +			clocks = <&cpsw_125mhz_clkctrl AM4_CPSW_125MHZ_CPGMAC0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x100000 0x8000>;
> +
> +			mac: ethernet@0 {
> +				compatible = "ti,am4372-cpsw","ti,cpsw";
> +				reg = <0x0 0x800
> +				       0x1200 0x100>;
> +				interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
> +					      GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
> +					 <&dpll_clksel_mac_clk>;
> +				clock-names = "fck", "cpts", "50mclk";
> +				assigned-clocks = <&dpll_clksel_mac_clk>;
> +				assigned-clock-rates = <50000000>;
> +				status = "disabled";
> +				cpdma_channels = <8>;
> +				ale_entries = <1024>;
> +				bd_ram_size = <0x2000>;
> +				mac_control = <0x20>;
> +				slaves = <2>;
> +				active_slave = <0>;
> +				cpts_clock_mult = <0x80000000>;
> +				cpts_clock_shift = <29>;
> +				ranges = <0 0 0x8000>;
> +				syscon = <&scm_conf>;
> +				cpsw-phy-sel = <&phy_sel>;
> +
> +				davinci_mdio: mdio@1000 {
> +					compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
> +					reg = <0x1000 0x100>;
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +					clocks = <&cpsw_125mhz_gclk>;
> +					clock-names = "fck";
> +					ti,hwmods = "davinci_mdio";
> +					bus_freq = <1000000>;
> +					status = "disabled";
> +				};
> +
> +				cpsw_emac0: slave@200 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +
> +				cpsw_emac1: slave@300 {
> +					/* Filled in by U-Boot */
> +					mac-address = [ 00 00 00 00 00 00 ];
> +				};
> +			};
>  		};
>  
>  		target-module@200000 {			/* 0x4a200000, ap 7 02.0 */
> @@ -475,6 +694,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x22000 0x1000>;
> +
> +			uart1: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@24000 {			/* 0x48024000, ap 10 1c.0 */
> @@ -497,6 +723,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x24000 0x1000>;
> +
> +			uart2: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@2a000 {			/* 0x4802a000, ap 12 22.0 */
> @@ -521,6 +754,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2a000 0x1000>;
> +
> +			i2c1: i2c@0 {
> +				compatible = "ti,am4372-i2c","ti,omap4-i2c";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@30000 {			/* 0x48030000, ap 65 08.0 */
> @@ -543,6 +785,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x30000 0x1000>;
> +
> +			spi0: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@34000 {			/* 0x48034000, ap 80 56.0 */
> @@ -576,6 +827,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x38000 0x2000>;
> +
> +			mcasp0: mcasp@0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46000000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>,
> +					     <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 8 2>,
> +				       <&edma 9 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@3c000 {			/* 0x4803c000, ap 16 2a.0 */
> @@ -593,6 +858,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3c000 0x2000>;
> +
> +			mcasp1: mcasp@0 {
> +				compatible = "ti,am33xx-mcasp-audio";
> +				reg = <0x0 0x2000>,
> +				      <0x46400000 0x400000>;
> +				reg-names = "mpu", "dat";
> +				interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
> +					     <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
> +				interrupt-names = "tx", "rx";
> +				status = "disabled";
> +				dmas = <&edma 10 2>,
> +				       <&edma 11 2>;
> +				dma-names = "tx", "rx";
> +			};
>  		};
>  
>  		target-module@40000 {			/* 0x48040000, ap 18 1e.0 */
> @@ -613,6 +892,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x40000 0x1000>;
> +
> +			timer2: timer@0  {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&timer2_fck>;
> +				clock-names = "fck";
> +			};
>  		};
>  
>  		target-module@42000 {			/* 0x48042000, ap 20 24.0 */
> @@ -633,6 +920,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x42000 0x1000>;
> +
> +			timer3: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@44000 {			/* 0x48044000, ap 22 26.0 */
> @@ -653,6 +947,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x44000 0x1000>;
> +
> +			timer4: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@46000 {			/* 0x48046000, ap 24 28.0 */
> @@ -673,6 +975,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x46000 0x1000>;
> +
> +			timer5: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@48000 {			/* 0x48048000, ap 26 1a.0 */
> @@ -693,6 +1003,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x48000 0x1000>;
> +
> +			timer6: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@4a000 {			/* 0x4804a000, ap 71 48.0 */
> @@ -713,6 +1031,14 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4a000 0x1000>;
> +
> +			timer7: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +				ti,timer-pwm;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@4c000 {			/* 0x4804c000, ap 28 36.0 */
> @@ -737,6 +1063,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4c000 0x1000>;
> +
> +			gpio1: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@60000 {			/* 0x48060000, ap 30 14.0 */
> @@ -760,6 +1097,18 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x60000 0x1000>;
> +
> +			mmc1: mmc@0 {
> +				compatible = "ti,omap4-hsmmc";
> +				reg = <0x0 0x1000>;
> +				ti,dual-volt;
> +				ti,needs-special-reset;
> +				dmas = <&edma 24 0>,
> +					<&edma 25 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@80000 {			/* 0x48080000, ap 32 18.0 */
> @@ -782,6 +1131,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x80000 0x10000>;
> +
> +			elm: elm@0 {
> +				compatible = "ti,am3352-elm";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&l4ls_gclk>;
> +				clock-names = "fck";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@c8000 {			/* 0x480c8000, ap 73 06.0 */
> @@ -800,6 +1158,20 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc8000 0x1000>;
> +
> +			mailbox: mailbox@0 {
> +				compatible = "ti,omap4-mailbox";
> +				reg = <0x0 0x200>;
> +				interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
> +				#mbox-cells = <1>;
> +				ti,mbox-num-users = <4>;
> +				ti,mbox-num-fifos = <8>;
> +				mbox_wkupm3: wkup_m3 {
> +					ti,mbox-send-noirq;
> +					ti,mbox-tx = <0 0 0>;
> +					ti,mbox-rx = <0 0 3>;
> +				};
> +			};
>  		};
>  
>  		target-module@ca000 {			/* 0x480ca000, ap 77 38.0 */
> @@ -823,6 +1195,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xca000 0x1000>;
> +
> +			hwspinlock: spinlock@0 {
> +				compatible = "ti,omap4-hwspinlock";
> +				reg = <0x0 0x1000>;
> +				#hwlock-cells = <1>;
> +			};
>  		};
>  	};
>  
> @@ -899,6 +1277,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x9c000 0x1000>;
> +
> +			i2c2: i2c@0 {
> +				compatible = "ti,am4372-i2c","ti,omap4-i2c";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a0000 {			/* 0x481a0000, ap 67 2c.0 */
> @@ -921,6 +1308,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa0000 0x1000>;
> +
> +			spi1: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a2000 {			/* 0x481a2000, ap 69 2e.0 */
> @@ -943,6 +1339,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa2000 0x1000>;
> +
> +			spi2: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a4000 {			/* 0x481a4000, ap 92 62.0 */
> @@ -965,6 +1370,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa4000 0x1000>;
> +
> +			spi3: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a6000 {			/* 0x481a6000, ap 40 16.0 */
> @@ -987,6 +1401,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa6000 0x1000>;
> +
> +			uart3: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@a8000 {			/* 0x481a8000, ap 42 20.0 */
> @@ -1009,6 +1430,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa8000 0x1000>;
> +
> +			uart4: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@aa000 {			/* 0x481aa000, ap 44 12.0 */
> @@ -1031,6 +1459,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xaa000 0x1000>;
> +
> +			uart5: serial@0 {
> +				compatible = "ti,am4372-uart","ti,omap2-uart";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@ac000 {			/* 0x481ac000, ap 46 30.0 */
> @@ -1055,6 +1490,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xac000 0x1000>;
> +
> +			gpio2: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@ae000 {			/* 0x481ae000, ap 48 32.0 */
> @@ -1079,6 +1525,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xae000 0x1000>;
> +
> +			gpio3: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@c1000 {			/* 0x481c1000, ap 94 68.0 */
> @@ -1099,22 +1556,55 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc1000 0x1000>;
> +
> +			timer8: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@cc000 {			/* 0x481cc000, ap 50 46.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can0";
> +			reg = <0xcc000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xcc000 0x2000>;
> +
> +			dcan0: can@0 {
> +				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				syscon-raminit = <&scm_conf 0x644 0>;
> +				interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d0000 {			/* 0x481d0000, ap 52 3a.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "d_can1";
> +			reg = <0xd0000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd0000 0x2000>;
> +
> +			dcan1: can@0 {
> +				compatible = "ti,am4372-d_can", "ti,am3352-d_can";
> +				reg = <0x0 0x2000>;
> +				syscon-raminit = <&scm_conf 0x644 1>;
> +				interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@d8000 {			/* 0x481d8000, ap 54 5e.0 */
> @@ -1138,6 +1628,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xd8000 0x1000>;
> +
> +			mmc2: mmc@0 {
> +				compatible = "ti,omap4-hsmmc";
> +				reg = <0x0 0x1000>;
> +				ti,needs-special-reset;
> +				dmas = <&edma 2 0>,
> +					<&edma 3 0>;
> +				dma-names = "tx", "rx";
> +				interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  	};
>  
> @@ -1226,6 +1727,37 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x0 0x1000>;
> +
> +			epwmss0: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ecap0: ecap@100 {
> +					compatible = "ti,am4372-ecap",
> +						     "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm0: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@2000 {			/* 0x48302000, ap 58 4a.0 */
> @@ -1248,6 +1780,37 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x2000 0x1000>;
> +
> +			epwmss1: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ecap1: ecap@100 {
> +					compatible = "ti,am4372-ecap",
> +						     "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm1: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@4000 {			/* 0x48304000, ap 60 44.0 */
> @@ -1270,6 +1833,37 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x4000 0x1000>;
> +
> +			epwmss2: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ecap2: ecap@100 {
> +					compatible = "ti,am4372-ecap",
> +						     "ti,am3352-ecap",
> +						     "ti,am33xx-ecap";
> +					#pwm-cells = <3>;
> +					reg = <0x100 0x80>;
> +					clocks = <&l4ls_gclk>;
> +					clock-names = "fck";
> +					status = "disabled";
> +				};
> +
> +				ehrpwm2: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@6000 {			/* 0x48306000, ap 96 58.0 */
> @@ -1292,6 +1886,26 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x6000 0x1000>;
> +
> +			epwmss3: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ehrpwm3: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@8000 {			/* 0x48308000, ap 98 54.0 */
> @@ -1314,6 +1928,26 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x8000 0x1000>;
> +
> +			epwmss4: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ehrpwm4: pwm@48308200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@a000 {			/* 0x4830a000, ap 100 60.0 */
> @@ -1336,6 +1970,26 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa000 0x1000>;
> +
> +			epwmss5: epwmss@0 {
> +				compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
> +				reg = <0x0 0x10>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x1000>;
> +				status = "disabled";
> +
> +				ehrpwm5: pwm@200 {
> +					compatible = "ti,am4372-ehrpwm",
> +						     "ti,am3352-ehrpwm",
> +						     "ti,am33xx-ehrpwm";
> +					#pwm-cells = <3>;
> +					reg = <0x200 0x80>;
> +					clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
> +					clock-names = "tbclk", "fck";
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@10000 {			/* 0x48310000, ap 64 4e.1 */
> @@ -1353,6 +2007,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x10000 0x2000>;
> +
> +			rng: rng@0 {
> +				compatible = "ti,omap4-rng";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
> +			};
>  		};
>  
>  		target-module@13000 {			/* 0x48313000, ap 90 50.0 */
> @@ -1393,6 +2053,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x20000 0x1000>;
> +
> +			gpio4: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@22000 {			/* 0x48322000, ap 116 64.0 */
> @@ -1417,6 +2088,17 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x22000 0x1000>;
> +
> +			gpio5: gpio@0 {
> +				compatible = "ti,am4372-gpio","ti,omap4-gpio";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
> +				gpio-controller;
> +				#gpio-cells = <2>;
> +				interrupt-controller;
> +				#interrupt-cells = <2>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@26000 {			/* 0x48326000, ap 86 66.0 */
> @@ -1437,6 +2119,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x26000 0x1000>;
> +
> +			vpfe0: vpfe@0 {
> +				compatible = "ti,am437x-vpfe";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@28000 {			/* 0x48328000, ap 75 0e.0 */
> @@ -1457,6 +2146,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x28000 0x1000>;
> +
> +			vpfe1: vpfe@0 {
> +				compatible = "ti,am437x-vpfe";
> +				reg = <0x0 0x2000>;
> +				interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@2a000 {			/* 0x4832a000, ap 88 3c.0 */
> @@ -1499,6 +2195,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3d000 0x1000>;
> +
> +			timer9: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@3f000 {			/* 0x4833f000, ap 104 5c.0 */
> @@ -1519,6 +2222,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x3f000 0x1000>;
> +
> +			timer10: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@41000 {			/* 0x48341000, ap 106 76.0 */
> @@ -1539,6 +2249,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x41000 0x1000>;
> +
> +			timer11: timer@0 {
> +				compatible = "ti,am4372-timer","ti,am335x-timer";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@45000 {			/* 0x48345000, ap 108 6a.0 */
> @@ -1561,6 +2278,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x45000 0x1000>;
> +
> +			spi4: spi@0 {
> +				compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
> +				reg = <0x0 0x400>;
> +				interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@47000 {			/* 0x48347000, ap 110 70.0 */
> @@ -1578,6 +2304,15 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x47000 0x1000>;
> +
> +			hdq: hdq@0 {
> +				compatible = "ti,am4372-hdq";
> +				reg = <0x0 0x1000>;
> +				interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>;
> +				clocks = <&func_12m_clk>;
> +				clock-names = "fck";
> +				status = "disabled";
> +			};
>  		};
>  
>  		target-module@4c000 {			/* 0x4834c000, ap 114 72.0 */
> @@ -1609,14 +2344,65 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0x80000 0x20000>;
> +
> +			dwc3_1: omap_dwc3@0 {
> +				compatible = "ti,am437x-dwc3";
> +				reg = <0x0 0x10000>;
> +				interrupts = <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				utmi-mode = <1>;
> +				ranges = <0 0 0x20000>;
> +
> +				usb1: usb@10000 {
> +					compatible = "synopsys,dwc3";
> +					reg = <0x10000 0x10000>;
> +					interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
> +					interrupt-names = "peripheral",
> +							  "host",
> +							  "otg";
> +					phys = <&usb2_phy1>;
> +					phy-names = "usb2-phy";
> +					maximum-speed = "high-speed";
> +					dr_mode = "otg";
> +					status = "disabled";
> +					snps,dis_u3_susphy_quirk;
> +					snps,dis_u2_susphy_quirk;
> +				};
> +			};
>  		};
>  
>  		target-module@a8000 {			/* 0x483a8000, ap 125 6c.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "ocp2scp0";
> +			reg = <0xa8000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP0_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xa8000 0x8000>;
> +
> +			ocp2scp0: ocp2scp@0 {
> +				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x8000>;
> +
> +				usb2_phy1: phy@8000 {
> +					compatible = "ti,am437x-usb2";
> +					reg = <0x0 0x8000>;
> +					syscon-phy-power = <&scm_conf 0x620>;
> +					clocks = <&usb_phy0_always_on_clk32k>,
> +						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS0_CLKCTRL 8>;
> +					clock-names = "wkupclk", "refclk";
> +					#phy-cells = <0>;
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@c0000 {			/* 0x483c0000, ap 127 7a.0 */
> @@ -1640,14 +2426,65 @@
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xc0000 0x20000>;
> +
> +			dwc3_2: omap_dwc3@0 {
> +				compatible = "ti,am437x-dwc3";
> +				reg = <0x0 0x10000>;
> +				interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				utmi-mode = <1>;
> +				ranges = <0 0 0x20000>;
> +
> +				usb2: usb@10000 {
> +					compatible = "synopsys,dwc3";
> +					reg = <0x10000 0x10000>;
> +					interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
> +						     <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
> +					interrupt-names = "peripheral",
> +							  "host",
> +							  "otg";
> +					phys = <&usb2_phy2>;
> +					phy-names = "usb2-phy";
> +					maximum-speed = "high-speed";
> +					dr_mode = "otg";
> +					status = "disabled";
> +					snps,dis_u3_susphy_quirk;
> +					snps,dis_u2_susphy_quirk;
> +				};
> +			};
>  		};
>  
>  		target-module@e8000 {			/* 0x483e8000, ap 129 78.0 */
> -			compatible = "ti,sysc";
> -			status = "disabled";
> +			compatible = "ti,sysc-omap4", "ti,sysc";
> +			ti,hwmods = "ocp2scp1";
> +			reg = <0xe8000 0x4>;
> +			reg-names = "rev";
> +			/* Domains (P, C): per_pwrdm, l4ls_clkdm */
> +			clocks = <&l4ls_clkctrl AM4_L4LS_OCP2SCP1_CLKCTRL 0>;
> +			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
>  			ranges = <0x0 0xe8000 0x8000>;
> +
> +			ocp2scp1: ocp2scp@0 {
> +				compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp";
> +				#address-cells = <1>;
> +				#size-cells = <1>;
> +				ranges = <0 0 0x8000>;
> +
> +				usb2_phy2: phy@8000 {
> +					compatible = "ti,am437x-usb2";
> +					reg = <0x0 0x8000>;
> +					syscon-phy-power = <&scm_conf 0x628>;
> +					clocks = <&usb_phy1_always_on_clk32k>,
> +						 <&l3s_clkctrl AM4_L3S_USB_OTG_SS1_CLKCTRL 8>;
> +					clock-names = "wkupclk", "refclk";
> +					#phy-cells = <0>;
> +					status = "disabled";
> +				};
> +			};
>  		};
>  
>  		target-module@f2000 {			/* 0x483f2000, ap 112 5a.0 */
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-12-04 12:23     ` Peter Ujfalusi
@ 2018-12-04 18:11       ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-04 18:11 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181204 12:22]:
> Hi Tony,
> 
> On 25/09/2018 3.05, Tony Lindgren wrote:
> > With l4 interconnect hierarchy and ti-sysc interconnect target module
> > data in place, we can simply move all the related child devices to
> > their proper location and enable probing using ti-sysc.
> > 
> > In general the first child device address range starts at range 0
> > from the ti-sysc interconnect target so the move involves adjusting
> > the child device reg properties for that.
> > 
> > In case of any regressions, problem devices can be reverted to probe
> > with legacy platform data as needed by moving them back and removing
> > the related interconnect target module node.
> > 
> > Note that we are not yet moving dss or wkup_m3, those will be moved
> > later after some related driver changes.
> 
> Exactly the same issue as with am335x after:
> ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
> 
> reverting this patch makes audio working:
> 
> Without revert the McASP FIFO would constantly underflow.
> 
> Memcpy test via dmatest works with EDMA

OK I should be able to debug it here with am437x-sk-evm then.

If it's not immediately obvious what's going on, let's just
do a revert here too and debug it more separately.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
@ 2018-12-04 18:11       ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-04 18:11 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181204 12:22]:
> Hi Tony,
> 
> On 25/09/2018 3.05, Tony Lindgren wrote:
> > With l4 interconnect hierarchy and ti-sysc interconnect target module
> > data in place, we can simply move all the related child devices to
> > their proper location and enable probing using ti-sysc.
> > 
> > In general the first child device address range starts at range 0
> > from the ti-sysc interconnect target so the move involves adjusting
> > the child device reg properties for that.
> > 
> > In case of any regressions, problem devices can be reverted to probe
> > with legacy platform data as needed by moving them back and removing
> > the related interconnect target module node.
> > 
> > Note that we are not yet moving dss or wkup_m3, those will be moved
> > later after some related driver changes.
> 
> Exactly the same issue as with am335x after:
> ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
> 
> reverting this patch makes audio working:
> 
> Without revert the McASP FIFO would constantly underflow.
> 
> Memcpy test via dmatest works with EDMA

OK I should be able to debug it here with am437x-sk-evm then.

If it's not immediately obvious what's going on, let's just
do a revert here too and debug it more separately.

Regards,

Tony

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-12-04 18:11       ` Tony Lindgren
@ 2018-12-04 23:18         ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-04 23:18 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [181204 18:11]:
> * Peter Ujfalusi <peter.ujfalusi@ti.com> [181204 12:22]:
> > Hi Tony,
> > 
> > On 25/09/2018 3.05, Tony Lindgren wrote:
> > > With l4 interconnect hierarchy and ti-sysc interconnect target module
> > > data in place, we can simply move all the related child devices to
> > > their proper location and enable probing using ti-sysc.
> > > 
> > > In general the first child device address range starts at range 0
> > > from the ti-sysc interconnect target so the move involves adjusting
> > > the child device reg properties for that.
> > > 
> > > In case of any regressions, problem devices can be reverted to probe
> > > with legacy platform data as needed by moving them back and removing
> > > the related interconnect target module node.
> > > 
> > > Note that we are not yet moving dss or wkup_m3, those will be moved
> > > later after some related driver changes.
> > 
> > Exactly the same issue as with am335x after:
> > ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
> > 
> > reverting this patch makes audio working:
> > 
> > Without revert the McASP FIFO would constantly underflow.
> > 
> > Memcpy test via dmatest works with EDMA
> 
> OK I should be able to debug it here with am437x-sk-evm then.
> 
> If it's not immediately obvious what's going on, let's just
> do a revert here too and debug it more separately.

I did not have any luck getting mcasp working on am437x-sk-evm.

After applying " drm/omap: fix bus_flags for panel-dpi" LCD
works again. But modprobe of snd-soc-davinci-mcasp and
snd-soc-tlv320aic3x still does not show anything with aplay -l.

Do I need some other patch or codec driver?

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
@ 2018-12-04 23:18         ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-04 23:18 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [181204 18:11]:
> * Peter Ujfalusi <peter.ujfalusi@ti.com> [181204 12:22]:
> > Hi Tony,
> > 
> > On 25/09/2018 3.05, Tony Lindgren wrote:
> > > With l4 interconnect hierarchy and ti-sysc interconnect target module
> > > data in place, we can simply move all the related child devices to
> > > their proper location and enable probing using ti-sysc.
> > > 
> > > In general the first child device address range starts at range 0
> > > from the ti-sysc interconnect target so the move involves adjusting
> > > the child device reg properties for that.
> > > 
> > > In case of any regressions, problem devices can be reverted to probe
> > > with legacy platform data as needed by moving them back and removing
> > > the related interconnect target module node.
> > > 
> > > Note that we are not yet moving dss or wkup_m3, those will be moved
> > > later after some related driver changes.
> > 
> > Exactly the same issue as with am335x after:
> > ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
> > 
> > reverting this patch makes audio working:
> > 
> > Without revert the McASP FIFO would constantly underflow.
> > 
> > Memcpy test via dmatest works with EDMA
> 
> OK I should be able to debug it here with am437x-sk-evm then.
> 
> If it's not immediately obvious what's going on, let's just
> do a revert here too and debug it more separately.

I did not have any luck getting mcasp working on am437x-sk-evm.

After applying " drm/omap: fix bus_flags for panel-dpi" LCD
works again. But modprobe of snd-soc-davinci-mcasp and
snd-soc-tlv320aic3x still does not show anything with aplay -l.

Do I need some other patch or codec driver?

Regards,

Tony


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-12-04 23:18         ` Tony Lindgren
  (?)
@ 2018-12-05  6:14         ` Peter Ujfalusi
  2018-12-05 19:00             ` Tony Lindgren
  -1 siblings, 1 reply; 66+ messages in thread
From: Peter Ujfalusi @ 2018-12-05  6:14 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel



On 05/12/2018 1.18, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [181204 18:11]:
>> * Peter Ujfalusi <peter.ujfalusi@ti.com> [181204 12:22]:
>>> Hi Tony,
>>>
>>> On 25/09/2018 3.05, Tony Lindgren wrote:
>>>> With l4 interconnect hierarchy and ti-sysc interconnect target module
>>>> data in place, we can simply move all the related child devices to
>>>> their proper location and enable probing using ti-sysc.
>>>>
>>>> In general the first child device address range starts at range 0
>>>> from the ti-sysc interconnect target so the move involves adjusting
>>>> the child device reg properties for that.
>>>>
>>>> In case of any regressions, problem devices can be reverted to probe
>>>> with legacy platform data as needed by moving them back and removing
>>>> the related interconnect target module node.
>>>>
>>>> Note that we are not yet moving dss or wkup_m3, those will be moved
>>>> later after some related driver changes.
>>>
>>> Exactly the same issue as with am335x after:
>>> ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc
>>>
>>> reverting this patch makes audio working:
>>>
>>> Without revert the McASP FIFO would constantly underflow.
>>>
>>> Memcpy test via dmatest works with EDMA
>>
>> OK I should be able to debug it here with am437x-sk-evm then.
>>
>> If it's not immediately obvious what's going on, let's just
>> do a revert here too and debug it more separately.
> 
> I did not have any luck getting mcasp working on am437x-sk-evm.
> 
> After applying " drm/omap: fix bus_flags for panel-dpi" LCD
> works again. But modprobe of snd-soc-davinci-mcasp and
> snd-soc-tlv320aic3x still does not show anything with aplay -l.

Hrm, why they are not loaded automatically?

> Do I need some other patch or codec driver?

snd-soc-edma
snd-soc-davinci-mcasp
snd-soc-tlv320aic3x
snd-soc-simple-card

at the bottom of the stack is needed, but I just build them in for
convenience.

> 
> Regards,
> 
> Tony
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-12-05  6:14         ` Peter Ujfalusi
@ 2018-12-05 19:00             ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-05 19:00 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181205 06:12]:
> On 05/12/2018 1.18, Tony Lindgren wrote:
> > After applying " drm/omap: fix bus_flags for panel-dpi" LCD
> > works again. But modprobe of snd-soc-davinci-mcasp and
> > snd-soc-tlv320aic3x still does not show anything with aplay -l.
> 
> Hrm, why they are not loaded automatically?

Hmm I guess I'm missing some piece of software I've
removed from my system years ago already? :)

> > Do I need some other patch or codec driver?
> 
> snd-soc-edma
> snd-soc-davinci-mcasp
> snd-soc-tlv320aic3x
> snd-soc-simple-card

Oh I thought I tried that but maybe I tried with graph card.
Got it working now thanks.

I think we're missing the top level ranges for mcasp l3 port
and the translation goes wrong there, I'll fix it hopefully
today.

Regards,

Tony

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
@ 2018-12-05 19:00             ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-05 19:00 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Peter Ujfalusi <peter.ujfalusi@ti.com> [181205 06:12]:
> On 05/12/2018 1.18, Tony Lindgren wrote:
> > After applying " drm/omap: fix bus_flags for panel-dpi" LCD
> > works again. But modprobe of snd-soc-davinci-mcasp and
> > snd-soc-tlv320aic3x still does not show anything with aplay -l.
> 
> Hrm, why they are not loaded automatically?

Hmm I guess I'm missing some piece of software I've
removed from my system years ago already? :)

> > Do I need some other patch or codec driver?
> 
> snd-soc-edma
> snd-soc-davinci-mcasp
> snd-soc-tlv320aic3x
> snd-soc-simple-card

Oh I thought I tried that but maybe I tried with graph card.
Got it working now thanks.

I think we're missing the top level ranges for mcasp l3 port
and the translation goes wrong there, I'll fix it hopefully
today.

Regards,

Tony


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-12-05 19:00             ` Tony Lindgren
@ 2018-12-05 23:02               ` Tony Lindgren
  -1 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-05 23:02 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [181205 19:00]:
> I think we're missing the top level ranges for mcasp l3 port
> and the translation goes wrong there, I'll fix it hopefully
> today.

Below is a fix for am473x that works for me as tested with
am473x-sk-evm. Care to test please?

I'll send also a similar fix for am335x separately. And
then for dra7. Looks like for dra7 we're also missing the
mcasp optional clocks too.

Regards,

Tony

8< ------------
>From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Wed, 5 Dec 2018 14:08:21 -0800
Subject: [PATCH] ARM: dts: Add missing ranges for am437x mcasp l3 ports

We need to add mcasp l3 port ranges for mcasp to use a correct l3
data port address for dma.

Fixes: d95adfd45853 ("ARM: dts: am437x: Move l4 child devices to
probe them with ti-sysc")
Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am437x-l4.dtsi | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
--- a/arch/arm/boot/dts/am437x-l4.dtsi
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -613,7 +613,9 @@
 	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
 		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
 		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
-		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+		 <0x00300000 0x48300000 0x100000>,	/* segment 3 */
+		 <0x46000000 0x46000000 0x400000>,	/* l3 data port */
+		 <0x46400000 0x46400000 0x400000>;	/* l3 data port */
 
 	segment@0 {					/* 0x48000000 */
 		compatible = "simple-bus";
@@ -664,7 +666,9 @@
 			 <0x00034000 0x00034000 0x001000>,	/* ap 80 */
 			 <0x00035000 0x00035000 0x001000>,	/* ap 81 */
 			 <0x00036000 0x00036000 0x001000>,	/* ap 84 */
-			 <0x00037000 0x00037000 0x001000>;	/* ap 85 */
+			 <0x00037000 0x00037000 0x001000>,	/* ap 85 */
+			 <0x46000000 0x46000000 0x400000>,	/* l3 data port */
+			 <0x46400000 0x46400000 0x400000>;	/* l3 data port */
 
 		target-module@8000 {			/* 0x48008000, ap 6 10.0 */
 			compatible = "ti,sysc";
@@ -826,7 +830,8 @@
 			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
-			ranges = <0x0 0x38000 0x2000>;
+			ranges = <0x0 0x38000 0x2000>,
+				 <0x46000000 0x46000000 0x400000>;
 
 			mcasp0: mcasp@0 {
 				compatible = "ti,am33xx-mcasp-audio";
@@ -857,7 +862,8 @@
 			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
-			ranges = <0x0 0x3c000 0x2000>;
+			ranges = <0x0 0x3c000 0x2000>,
+				 <0x46400000 0x46400000 0x400000>;
 
 			mcasp1: mcasp@0 {
 				compatible = "ti,am33xx-mcasp-audio";
-- 
2.19.2

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
@ 2018-12-05 23:02               ` Tony Lindgren
  0 siblings, 0 replies; 66+ messages in thread
From: Tony Lindgren @ 2018-12-05 23:02 UTC (permalink / raw)
  To: Peter Ujfalusi
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

* Tony Lindgren <tony@atomide.com> [181205 19:00]:
> I think we're missing the top level ranges for mcasp l3 port
> and the translation goes wrong there, I'll fix it hopefully
> today.

Below is a fix for am473x that works for me as tested with
am473x-sk-evm. Care to test please?

I'll send also a similar fix for am335x separately. And
then for dra7. Looks like for dra7 we're also missing the
mcasp optional clocks too.

Regards,

Tony

8< ------------
From tony Mon Sep 17 00:00:00 2001
From: Tony Lindgren <tony@atomide.com>
Date: Wed, 5 Dec 2018 14:08:21 -0800
Subject: [PATCH] ARM: dts: Add missing ranges for am437x mcasp l3 ports

We need to add mcasp l3 port ranges for mcasp to use a correct l3
data port address for dma.

Fixes: d95adfd45853 ("ARM: dts: am437x: Move l4 child devices to
probe them with ti-sysc")
Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
---
 arch/arm/boot/dts/am437x-l4.dtsi | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
--- a/arch/arm/boot/dts/am437x-l4.dtsi
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -613,7 +613,9 @@
 	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
 		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
 		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
-		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
+		 <0x00300000 0x48300000 0x100000>,	/* segment 3 */
+		 <0x46000000 0x46000000 0x400000>,	/* l3 data port */
+		 <0x46400000 0x46400000 0x400000>;	/* l3 data port */
 
 	segment@0 {					/* 0x48000000 */
 		compatible = "simple-bus";
@@ -664,7 +666,9 @@
 			 <0x00034000 0x00034000 0x001000>,	/* ap 80 */
 			 <0x00035000 0x00035000 0x001000>,	/* ap 81 */
 			 <0x00036000 0x00036000 0x001000>,	/* ap 84 */
-			 <0x00037000 0x00037000 0x001000>;	/* ap 85 */
+			 <0x00037000 0x00037000 0x001000>,	/* ap 85 */
+			 <0x46000000 0x46000000 0x400000>,	/* l3 data port */
+			 <0x46400000 0x46400000 0x400000>;	/* l3 data port */
 
 		target-module@8000 {			/* 0x48008000, ap 6 10.0 */
 			compatible = "ti,sysc";
@@ -826,7 +830,8 @@
 			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
-			ranges = <0x0 0x38000 0x2000>;
+			ranges = <0x0 0x38000 0x2000>,
+				 <0x46000000 0x46000000 0x400000>;
 
 			mcasp0: mcasp@0 {
 				compatible = "ti,am33xx-mcasp-audio";
@@ -857,7 +862,8 @@
 			clock-names = "fck";
 			#address-cells = <1>;
 			#size-cells = <1>;
-			ranges = <0x0 0x3c000 0x2000>;
+			ranges = <0x0 0x3c000 0x2000>,
+				 <0x46400000 0x46400000 0x400000>;
 
 			mcasp1: mcasp@0 {
 				compatible = "ti,am33xx-mcasp-audio";
-- 
2.19.2

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

* Re: [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc
  2018-12-05 23:02               ` Tony Lindgren
  (?)
@ 2018-12-07 12:46               ` Peter Ujfalusi
  -1 siblings, 0 replies; 66+ messages in thread
From: Peter Ujfalusi @ 2018-12-07 12:46 UTC (permalink / raw)
  To: Tony Lindgren
  Cc: devicetree, Dave Gerlach, Keerthy, Tero Kristo,
	Benoît Cousson, linux-omap, linux-arm-kernel

Tony,

On 06/12/2018 1.02, Tony Lindgren wrote:
> * Tony Lindgren <tony@atomide.com> [181205 19:00]:
>> I think we're missing the top level ranges for mcasp l3 port
>> and the translation goes wrong there, I'll fix it hopefully
>> today.
> 
> Below is a fix for am473x that works for me as tested with
> am473x-sk-evm. Care to test please?

the patch works, thanks!

Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> I'll send also a similar fix for am335x separately. And
> then for dra7. Looks like for dra7 we're also missing the
> mcasp optional clocks too.
> 
> Regards,
> 
> Tony
> 
> 8< ------------
> From tony Mon Sep 17 00:00:00 2001
> From: Tony Lindgren <tony@atomide.com>
> Date: Wed, 5 Dec 2018 14:08:21 -0800
> Subject: [PATCH] ARM: dts: Add missing ranges for am437x mcasp l3 ports
> 
> We need to add mcasp l3 port ranges for mcasp to use a correct l3
> data port address for dma.
> 
> Fixes: d95adfd45853 ("ARM: dts: am437x: Move l4 child devices to
> probe them with ti-sysc")
> Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Tony Lindgren <tony@atomide.com>
> ---
>  arch/arm/boot/dts/am437x-l4.dtsi | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
> --- a/arch/arm/boot/dts/am437x-l4.dtsi
> +++ b/arch/arm/boot/dts/am437x-l4.dtsi
> @@ -613,7 +613,9 @@
>  	ranges = <0x00000000 0x48000000 0x100000>,	/* segment 0 */
>  		 <0x00100000 0x48100000 0x100000>,	/* segment 1 */
>  		 <0x00200000 0x48200000 0x100000>,	/* segment 2 */
> -		 <0x00300000 0x48300000 0x100000>;	/* segment 3 */
> +		 <0x00300000 0x48300000 0x100000>,	/* segment 3 */
> +		 <0x46000000 0x46000000 0x400000>,	/* l3 data port */
> +		 <0x46400000 0x46400000 0x400000>;	/* l3 data port */
>  
>  	segment@0 {					/* 0x48000000 */
>  		compatible = "simple-bus";
> @@ -664,7 +666,9 @@
>  			 <0x00034000 0x00034000 0x001000>,	/* ap 80 */
>  			 <0x00035000 0x00035000 0x001000>,	/* ap 81 */
>  			 <0x00036000 0x00036000 0x001000>,	/* ap 84 */
> -			 <0x00037000 0x00037000 0x001000>;	/* ap 85 */
> +			 <0x00037000 0x00037000 0x001000>,	/* ap 85 */
> +			 <0x46000000 0x46000000 0x400000>,	/* l3 data port */
> +			 <0x46400000 0x46400000 0x400000>;	/* l3 data port */
>  
>  		target-module@8000 {			/* 0x48008000, ap 6 10.0 */
>  			compatible = "ti,sysc";
> @@ -826,7 +830,8 @@
>  			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
> -			ranges = <0x0 0x38000 0x2000>;
> +			ranges = <0x0 0x38000 0x2000>,
> +				 <0x46000000 0x46000000 0x400000>;
>  
>  			mcasp0: mcasp@0 {
>  				compatible = "ti,am33xx-mcasp-audio";
> @@ -857,7 +862,8 @@
>  			clock-names = "fck";
>  			#address-cells = <1>;
>  			#size-cells = <1>;
> -			ranges = <0x0 0x3c000 0x2000>;
> +			ranges = <0x0 0x3c000 0x2000>,
> +				 <0x46400000 0x46400000 0x400000>;
>  
>  			mcasp1: mcasp@0 {
>  				compatible = "ti,am33xx-mcasp-audio";
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 66+ messages in thread

end of thread, other threads:[~2018-12-07 12:46 UTC | newest]

Thread overview: 66+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-09-25  0:05 [PATCH 0/4] Update am437x and am335x dts to probe with ti-sysc Tony Lindgren
2018-09-25  0:05 ` Tony Lindgren
2018-09-25  0:05 ` [PATCH 1/4] ARM: dts: am437x: Add l4 interconnect hierarchy and ti-sysc data Tony Lindgren
2018-09-25  0:05   ` Tony Lindgren
2018-09-25  0:05 ` [PATCH 2/4] ARM: dts: am437x: Move l4 child devices to probe them with ti-sysc Tony Lindgren
2018-09-25  0:05   ` Tony Lindgren
2018-12-04 12:23   ` Peter Ujfalusi
2018-12-04 12:23     ` Peter Ujfalusi
2018-12-04 18:11     ` Tony Lindgren
2018-12-04 18:11       ` Tony Lindgren
2018-12-04 23:18       ` Tony Lindgren
2018-12-04 23:18         ` Tony Lindgren
2018-12-05  6:14         ` Peter Ujfalusi
2018-12-05 19:00           ` Tony Lindgren
2018-12-05 19:00             ` Tony Lindgren
2018-12-05 23:02             ` Tony Lindgren
2018-12-05 23:02               ` Tony Lindgren
2018-12-07 12:46               ` Peter Ujfalusi
2018-09-25  0:05 ` [PATCH 3/4] ARM: dts: am335x: Add l4 interconnect hierarchy and ti-sysc data Tony Lindgren
2018-09-25  0:05   ` Tony Lindgren
2018-09-27 14:56   ` Tony Lindgren
2018-09-27 14:56     ` Tony Lindgren
2018-09-25  0:05 ` [PATCH 4/4] ARM: dts: am335x: Move l4 child devices to probe them with ti-sysc Tony Lindgren
2018-09-25  0:05   ` Tony Lindgren
2018-11-27 13:03   ` Peter Ujfalusi
2018-11-27 13:03     ` Peter Ujfalusi
2018-11-27 16:16     ` Tony Lindgren
2018-11-27 16:16       ` Tony Lindgren
2018-11-28 12:52       ` Peter Ujfalusi
2018-11-28 12:52         ` Peter Ujfalusi
2018-11-29 19:07         ` Tony Lindgren
2018-11-29 19:07           ` Tony Lindgren
2018-09-25  5:14 ` [PATCH 0/4] Update am437x and am335x dts to probe " Keerthy
2018-09-25  5:14   ` Keerthy
2018-09-25 14:40   ` Tony Lindgren
2018-09-25 14:40     ` Tony Lindgren
2018-09-25 17:55     ` Tony Lindgren
2018-09-25 17:55       ` Tony Lindgren
2018-09-25 21:16       ` Grygorii Strashko
2018-09-25 21:16         ` Grygorii Strashko
2018-09-26  4:08       ` Keerthy
2018-09-26  4:08         ` Keerthy
2018-09-26 15:59         ` Tony Lindgren
2018-09-26 15:59           ` Tony Lindgren
2018-09-26 16:23           ` Tony Lindgren
2018-09-26 16:23             ` Tony Lindgren
2018-09-26 21:36             ` Grygorii Strashko
2018-09-26 21:36               ` Grygorii Strashko
2018-09-26 23:31               ` Tony Lindgren
2018-09-26 23:31                 ` Tony Lindgren
2018-09-27  4:55                 ` Keerthy
2018-09-27  4:55                   ` Keerthy
2018-09-27 14:53                   ` Tony Lindgren
2018-09-27 14:53                     ` Tony Lindgren
2018-09-27 21:43                     ` Tony Lindgren
2018-09-27 21:43                       ` Tony Lindgren
2018-10-01 16:32                   ` Tony Lindgren
2018-10-01 16:32                     ` Tony Lindgren
2018-10-04  4:29                     ` Keerthy
2018-10-04  4:29                       ` Keerthy
2018-10-04 14:23                       ` Tony Lindgren
2018-10-04 14:23                         ` Tony Lindgren
2018-09-27 19:11                 ` Grygorii Strashko
2018-09-27 19:11                   ` Grygorii Strashko
2018-09-27 19:38                   ` Tony Lindgren
2018-09-27 19:38                     ` Tony Lindgren

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.