aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-04-11 07:04:38 -0400
committerOlof Johansson <olof@lixom.net>2013-04-11 07:04:47 -0400
commit4f779ad9939038821202ac5632bbb9610fbac124 (patch)
treeb33c917786b9eb6ad4fbd6b18034b0cd23c3e54c
parent35db05bb9d8818b33e1e206de70c3741580bf35a (diff)
parent161e89a689bb88004b757986eefda2402448eef7 (diff)
Merge tag 'omap-for-v3.10/dt-signed-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt2
From Tony Lindgren: Device tree updates for omaps via Benoit Cousson <b-cousson@ti.com>. Note that the branch has dependencies to two other branches: - omap-devel-b-for-3.10 from Paul to get the AM33xx missing hwmod and thus avoid a regression with Santosh's hwmod cleanup including in this DT series [1]. It avoids breaking bisect if this series is merged before Paul's fixes. - omap-for-v3.10/usb branch to avoid nasty merge conflict in omap3.dtsi and omap4.dtsi due to the DTS patches contained in the USB branch because of a screw up by the unnamed person typing this signed tag based on Benoit's comments. [1] https://patchwork.kernel.org/patch/2366291/ * tag 'omap-for-v3.10/dt-signed-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (69 commits) ARM/dts: OMAP3: fix pinctrl-single configuration ARM: dts: Add OMAP3430 SDP NOR flash memory binding ARM: dts: Add NOR flash bindings for OMAP2420 H4 ARM: dts: Update OMAP3430 SDP NAND and ONENAND properties ARM: dts: OMAP2+: Identify GPIO banks that are always powered ARM: OMAP2+: Populate DMTIMER errata when using device-tree ARM: dts: OMAP2+: Update DMTIMER compatibility property ARM: OMAP: Add function to request timer by node ARM: OMAP: Force dmtimer restore if context loss is not detectable ARM: OMAP: Simplify dmtimer context-loss handling ARM: dts: AM33XX: Corrects typo in interrupt field in SPI node ARM: dts: OMAP4460: Add CPU OPP table ARM: dts: omap4-panda: move generic sections to panda-common ARM: dts: OMAP443x: Add CPU OPP table ARM: dts: OMAP3: use twl4030 vdd1 regulator for CPU ARM: dts: OMAP36xx: Add CPU OPP table ARM: dts: OMAP34xx/35xx: Add CPU OPP table Documentation: dt: gpio-omap: Move interrupt-controller from #interrupt-cells description ARM: OMAP2+: hwmod: Don't call _init_mpu_rt_base if no sysc ARM: OMAP2+: hwmod: extract module address space from DT blob ... Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r--Documentation/devicetree/bindings/arm/omap/l3-noc.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/omap/timer.txt17
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-omap.txt8
-rw-r--r--Documentation/devicetree/bindings/usb/omap-usb.txt1
-rw-r--r--arch/arm/boot/dts/Makefile4
-rw-r--r--arch/arm/boot/dts/am335x-bone.dts10
-rw-r--r--arch/arm/boot/dts/am335x-evm.dts18
-rw-r--r--arch/arm/boot/dts/am335x-evmsk.dts18
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi40
-rw-r--r--arch/arm/boot/dts/am3517-evm.dts2
-rw-r--r--arch/arm/boot/dts/am3517_mt_ventoux.dts2
-rw-r--r--arch/arm/boot/dts/omap2.dtsi39
-rw-r--r--arch/arm/boot/dts/omap2420-h4.dts46
-rw-r--r--arch/arm/boot/dts/omap2420.dtsi67
-rw-r--r--arch/arm/boot/dts/omap2430.dtsi87
-rw-r--r--arch/arm/boot/dts/omap3-beagle-xm.dts26
-rw-r--r--arch/arm/boot/dts/omap3-beagle.dts8
-rw-r--r--arch/arm/boot/dts/omap3-devkit8000.dts169
-rw-r--r--arch/arm/boot/dts/omap3-evm.dts14
-rw-r--r--arch/arm/boot/dts/omap3-igep.dtsi122
-rw-r--r--arch/arm/boot/dts/omap3-igep0020.dts56
-rw-r--r--arch/arm/boot/dts/omap3-igep0030.dts44
-rw-r--r--arch/arm/boot/dts/omap3-overo.dtsi31
-rw-r--r--arch/arm/boot/dts/omap3.dtsi142
-rw-r--r--arch/arm/boot/dts/omap3430-sdp.dts190
-rw-r--r--arch/arm/boot/dts/omap34xx.dtsi28
-rw-r--r--arch/arm/boot/dts/omap36xx.dtsi13
-rw-r--r--arch/arm/boot/dts/omap4-panda-a4.dts5
-rw-r--r--arch/arm/boot/dts/omap4-panda-common.dtsi251
-rw-r--r--arch/arm/boot/dts/omap4-panda-es.dts5
-rw-r--r--arch/arm/boot/dts/omap4-panda.dts201
-rw-r--r--arch/arm/boot/dts/omap4-sdp.dts74
-rw-r--r--arch/arm/boot/dts/omap4-var-som.dts2
-rw-r--r--arch/arm/boot/dts/omap4.dtsi135
-rw-r--r--arch/arm/boot/dts/omap443x.dtsi27
-rw-r--r--arch/arm/boot/dts/omap4460.dtsi32
-rw-r--r--arch/arm/boot/dts/omap5-evm.dts110
-rw-r--r--arch/arm/boot/dts/omap5.dtsi245
-rw-r--r--arch/arm/boot/dts/twl4030.dtsi18
-rw-r--r--arch/arm/boot/dts/twl6030.dtsi12
-rw-r--r--arch/arm/mach-omap2/board-generic.c1
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c48
-rw-r--r--arch/arm/mach-omap2/pmu.c14
-rw-r--r--arch/arm/mach-omap2/timer.c7
-rw-r--r--arch/arm/plat-omap/dmtimer.c241
-rw-r--r--arch/arm/plat-omap/include/plat/dmtimer.h1
46 files changed, 2172 insertions, 460 deletions
diff --git a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
index 6888a5efc860..c0105de55cbd 100644
--- a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
+++ b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
@@ -6,6 +6,7 @@ provided by Arteris.
6Required properties: 6Required properties:
7- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family 7- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
8 Should be "ti,omap4-l3-noc" for OMAP4 family 8 Should be "ti,omap4-l3-noc" for OMAP4 family
9- reg: Contains L3 register address range for each noc domain.
9- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain. 10- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain.
10 11
11Examples: 12Examples:
diff --git a/Documentation/devicetree/bindings/arm/omap/timer.txt b/Documentation/devicetree/bindings/arm/omap/timer.txt
index 8732d4d41f8b..d02e27c764ec 100644
--- a/Documentation/devicetree/bindings/arm/omap/timer.txt
+++ b/Documentation/devicetree/bindings/arm/omap/timer.txt
@@ -1,7 +1,20 @@
1OMAP Timer bindings 1OMAP Timer bindings
2 2
3Required properties: 3Required properties:
4- compatible: Must be "ti,omap2-timer" for OMAP2+ controllers. 4- compatible: Should be set to one of the below. Please note that
5 OMAP44xx devices have timer instances that are 100%
6 register compatible with OMAP3xxx devices as well as
7 newer timers that are not 100% register compatible.
8 So for OMAP44xx devices timer instances may use
9 different compatible strings.
10
11 ti,omap2420-timer (applicable to OMAP24xx devices)
12 ti,omap3430-timer (applicable to OMAP3xxx/44xx devices)
13 ti,omap4430-timer (applicable to OMAP44xx devices)
14 ti,omap5430-timer (applicable to OMAP543x devices)
15 ti,am335x-timer (applicable to AM335x devices)
16 ti,am335x-timer-1ms (applicable to AM335x devices)
17
5- reg: Contains timer register address range (base address and 18- reg: Contains timer register address range (base address and
6 length). 19 length).
7- interrupts: Contains the interrupt information for the timer. The 20- interrupts: Contains the interrupt information for the timer. The
@@ -22,7 +35,7 @@ Optional properties:
22Example: 35Example:
23 36
24timer12: timer@48304000 { 37timer12: timer@48304000 {
25 compatible = "ti,omap2-timer"; 38 compatible = "ti,omap3430-timer";
26 reg = <0x48304000 0x400>; 39 reg = <0x48304000 0x400>;
27 interrupts = <95>; 40 interrupts = <95>;
28 ti,hwmods = "timer12" 41 ti,hwmods = "timer12"
diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
index bff51a2fee1e..a56e3a53a360 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-omap.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
@@ -5,12 +5,12 @@ Required properties:
5 - "ti,omap2-gpio" for OMAP2 controllers 5 - "ti,omap2-gpio" for OMAP2 controllers
6 - "ti,omap3-gpio" for OMAP3 controllers 6 - "ti,omap3-gpio" for OMAP3 controllers
7 - "ti,omap4-gpio" for OMAP4 controllers 7 - "ti,omap4-gpio" for OMAP4 controllers
8- gpio-controller : Marks the device node as a GPIO controller.
8- #gpio-cells : Should be two. 9- #gpio-cells : Should be two.
9 - first cell is the pin number 10 - first cell is the pin number
10 - second cell is used to specify optional parameters (unused) 11 - second cell is used to specify optional parameters (unused)
11- gpio-controller : Marks the device node as a GPIO controller. 12- interrupt-controller: Mark the device node as an interrupt controller.
12- #interrupt-cells : Should be 2. 13- #interrupt-cells : Should be 2.
13- interrupt-controller: Mark the device node as an interrupt controller
14 The first cell is the GPIO number. 14 The first cell is the GPIO number.
15 The second cell is used to specify flags: 15 The second cell is used to specify flags:
16 bits[3:0] trigger type and level flags: 16 bits[3:0] trigger type and level flags:
@@ -29,8 +29,8 @@ Example:
29gpio4: gpio4 { 29gpio4: gpio4 {
30 compatible = "ti,omap4-gpio"; 30 compatible = "ti,omap4-gpio";
31 ti,hwmods = "gpio4"; 31 ti,hwmods = "gpio4";
32 #gpio-cells = <2>;
33 gpio-controller; 32 gpio-controller;
34 #interrupt-cells = <2>; 33 #gpio-cells = <2>;
35 interrupt-controller; 34 interrupt-controller;
35 #interrupt-cells = <2>;
36}; 36};
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt
index 1ef0ce71f8fa..abce25684abc 100644
--- a/Documentation/devicetree/bindings/usb/omap-usb.txt
+++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
@@ -18,6 +18,7 @@ OMAP MUSB GLUE
18 represents PERIPHERAL. 18 represents PERIPHERAL.
19 - power : Should be "50". This signifies the controller can supply upto 19 - power : Should be "50". This signifies the controller can supply upto
20 100mA when operating in host mode. 20 100mA when operating in host mode.
21 - usb-phy : the phandle for the PHY device
21 22
22Optional properties: 23Optional properties:
23 - ctrl-module : phandle of the control module this glue uses to write to 24 - ctrl-module : phandle of the control module this glue uses to write to
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 9c6255884cbb..f4c2dde779ba 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -115,10 +115,14 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
115 imx28-tx28.dtb 115 imx28-tx28.dtb
116dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb 116dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb
117dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ 117dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
118 omap3430-sdp.dtb \
118 omap3-beagle.dtb \ 119 omap3-beagle.dtb \
120 omap3-devkit8000.dtb \
119 omap3-beagle-xm.dtb \ 121 omap3-beagle-xm.dtb \
120 omap3-evm.dtb \ 122 omap3-evm.dtb \
121 omap3-tobi.dtb \ 123 omap3-tobi.dtb \
124 omap3-igep0020.dtb \
125 omap3-igep0030.dtb \
122 omap4-panda.dtb \ 126 omap4-panda.dtb \
123 omap4-panda-a4.dtb \ 127 omap4-panda-a4.dtb \
124 omap4-panda-es.dtb \ 128 omap4-panda-es.dtb \
diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
index 11b240c5d323..5302f79c05b7 100644
--- a/arch/arm/boot/dts/am335x-bone.dts
+++ b/arch/arm/boot/dts/am335x-bone.dts
@@ -43,7 +43,7 @@
43 status = "okay"; 43 status = "okay";
44 }; 44 };
45 45
46 i2c1: i2c@44e0b000 { 46 i2c0: i2c@44e0b000 {
47 status = "okay"; 47 status = "okay";
48 clock-frequency = <400000>; 48 clock-frequency = <400000>;
49 49
@@ -59,27 +59,27 @@
59 59
60 led@2 { 60 led@2 {
61 label = "beaglebone:green:heartbeat"; 61 label = "beaglebone:green:heartbeat";
62 gpios = <&gpio2 21 0>; 62 gpios = <&gpio1 21 0>;
63 linux,default-trigger = "heartbeat"; 63 linux,default-trigger = "heartbeat";
64 default-state = "off"; 64 default-state = "off";
65 }; 65 };
66 66
67 led@3 { 67 led@3 {
68 label = "beaglebone:green:mmc0"; 68 label = "beaglebone:green:mmc0";
69 gpios = <&gpio2 22 0>; 69 gpios = <&gpio1 22 0>;
70 linux,default-trigger = "mmc0"; 70 linux,default-trigger = "mmc0";
71 default-state = "off"; 71 default-state = "off";
72 }; 72 };
73 73
74 led@4 { 74 led@4 {
75 label = "beaglebone:green:usr2"; 75 label = "beaglebone:green:usr2";
76 gpios = <&gpio2 23 0>; 76 gpios = <&gpio1 23 0>;
77 default-state = "off"; 77 default-state = "off";
78 }; 78 };
79 79
80 led@5 { 80 led@5 {
81 label = "beaglebone:green:usr3"; 81 label = "beaglebone:green:usr3";
82 gpios = <&gpio2 24 0>; 82 gpios = <&gpio1 24 0>;
83 default-state = "off"; 83 default-state = "off";
84 }; 84 };
85 }; 85 };
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index d6496440fcea..0423298a26fe 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -51,7 +51,7 @@
51 status = "okay"; 51 status = "okay";
52 }; 52 };
53 53
54 i2c1: i2c@44e0b000 { 54 i2c0: i2c@44e0b000 {
55 status = "okay"; 55 status = "okay";
56 clock-frequency = <400000>; 56 clock-frequency = <400000>;
57 57
@@ -60,7 +60,7 @@
60 }; 60 };
61 }; 61 };
62 62
63 i2c2: i2c@4802a000 { 63 i2c1: i2c@4802a000 {
64 status = "okay"; 64 status = "okay";
65 clock-frequency = <100000>; 65 clock-frequency = <100000>;
66 66
@@ -123,12 +123,12 @@
123 debounce-delay-ms = <5>; 123 debounce-delay-ms = <5>;
124 col-scan-delay-us = <2>; 124 col-scan-delay-us = <2>;
125 125
126 row-gpios = <&gpio2 25 0 /* Bank1, pin25 */ 126 row-gpios = <&gpio1 25 0 /* Bank1, pin25 */
127 &gpio2 26 0 /* Bank1, pin26 */ 127 &gpio1 26 0 /* Bank1, pin26 */
128 &gpio2 27 0>; /* Bank1, pin27 */ 128 &gpio1 27 0>; /* Bank1, pin27 */
129 129
130 col-gpios = <&gpio2 21 0 /* Bank1, pin21 */ 130 col-gpios = <&gpio1 21 0 /* Bank1, pin21 */
131 &gpio2 22 0>; /* Bank1, pin22 */ 131 &gpio1 22 0>; /* Bank1, pin22 */
132 132
133 linux,keymap = <0x0000008b /* MENU */ 133 linux,keymap = <0x0000008b /* MENU */
134 0x0100009e /* BACK */ 134 0x0100009e /* BACK */
@@ -147,14 +147,14 @@
147 switch@9 { 147 switch@9 {
148 label = "volume-up"; 148 label = "volume-up";
149 linux,code = <115>; 149 linux,code = <115>;
150 gpios = <&gpio1 2 1>; 150 gpios = <&gpio0 2 1>;
151 gpio-key,wakeup; 151 gpio-key,wakeup;
152 }; 152 };
153 153
154 switch@10 { 154 switch@10 {
155 label = "volume-down"; 155 label = "volume-down";
156 linux,code = <114>; 156 linux,code = <114>;
157 gpios = <&gpio1 3 1>; 157 gpios = <&gpio0 3 1>;
158 gpio-key,wakeup; 158 gpio-key,wakeup;
159 }; 159 };
160 }; 160 };
diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts
index f5a6162a4ff2..f67c360844f4 100644
--- a/arch/arm/boot/dts/am335x-evmsk.dts
+++ b/arch/arm/boot/dts/am335x-evmsk.dts
@@ -58,7 +58,7 @@
58 status = "okay"; 58 status = "okay";
59 }; 59 };
60 60
61 i2c1: i2c@44e0b000 { 61 i2c0: i2c@44e0b000 {
62 status = "okay"; 62 status = "okay";
63 clock-frequency = <400000>; 63 clock-frequency = <400000>;
64 64
@@ -115,26 +115,26 @@
115 115
116 led@1 { 116 led@1 {
117 label = "evmsk:green:usr0"; 117 label = "evmsk:green:usr0";
118 gpios = <&gpio2 4 0>; 118 gpios = <&gpio1 4 0>;
119 default-state = "off"; 119 default-state = "off";
120 }; 120 };
121 121
122 led@2 { 122 led@2 {
123 label = "evmsk:green:usr1"; 123 label = "evmsk:green:usr1";
124 gpios = <&gpio2 5 0>; 124 gpios = <&gpio1 5 0>;
125 default-state = "off"; 125 default-state = "off";
126 }; 126 };
127 127
128 led@3 { 128 led@3 {
129 label = "evmsk:green:mmc0"; 129 label = "evmsk:green:mmc0";
130 gpios = <&gpio2 6 0>; 130 gpios = <&gpio1 6 0>;
131 linux,default-trigger = "mmc0"; 131 linux,default-trigger = "mmc0";
132 default-state = "off"; 132 default-state = "off";
133 }; 133 };
134 134
135 led@4 { 135 led@4 {
136 label = "evmsk:green:heartbeat"; 136 label = "evmsk:green:heartbeat";
137 gpios = <&gpio2 7 0>; 137 gpios = <&gpio1 7 0>;
138 linux,default-trigger = "heartbeat"; 138 linux,default-trigger = "heartbeat";
139 default-state = "off"; 139 default-state = "off";
140 }; 140 };
@@ -148,26 +148,26 @@
148 switch@1 { 148 switch@1 {
149 label = "button0"; 149 label = "button0";
150 linux,code = <0x100>; 150 linux,code = <0x100>;
151 gpios = <&gpio3 3 0>; 151 gpios = <&gpio2 3 0>;
152 }; 152 };
153 153
154 switch@2 { 154 switch@2 {
155 label = "button1"; 155 label = "button1";
156 linux,code = <0x101>; 156 linux,code = <0x101>;
157 gpios = <&gpio3 2 0>; 157 gpios = <&gpio2 2 0>;
158 }; 158 };
159 159
160 switch@3 { 160 switch@3 {
161 label = "button2"; 161 label = "button2";
162 linux,code = <0x102>; 162 linux,code = <0x102>;
163 gpios = <&gpio1 30 0>; 163 gpios = <&gpio0 30 0>;
164 gpio-key,wakeup; 164 gpio-key,wakeup;
165 }; 165 };
166 166
167 switch@4 { 167 switch@4 {
168 label = "button3"; 168 label = "button3";
169 linux,code = <0x103>; 169 linux,code = <0x103>;
170 gpios = <&gpio3 5 0>; 170 gpios = <&gpio2 5 0>;
171 }; 171 };
172 }; 172 };
173}; 173};
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 0957645b73af..df6283076e79 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -21,6 +21,8 @@
21 serial3 = &uart4; 21 serial3 = &uart4;
22 serial4 = &uart5; 22 serial4 = &uart5;
23 serial5 = &uart6; 23 serial5 = &uart6;
24 d_can0 = &dcan0;
25 d_can1 = &dcan1;
24 }; 26 };
25 27
26 cpus { 28 cpus {
@@ -87,7 +89,7 @@
87 reg = <0x48200000 0x1000>; 89 reg = <0x48200000 0x1000>;
88 }; 90 };
89 91
90 gpio1: gpio@44e07000 { 92 gpio0: gpio@44e07000 {
91 compatible = "ti,omap4-gpio"; 93 compatible = "ti,omap4-gpio";
92 ti,hwmods = "gpio1"; 94 ti,hwmods = "gpio1";
93 gpio-controller; 95 gpio-controller;
@@ -98,7 +100,7 @@
98 interrupts = <96>; 100 interrupts = <96>;
99 }; 101 };
100 102
101 gpio2: gpio@4804c000 { 103 gpio1: gpio@4804c000 {
102 compatible = "ti,omap4-gpio"; 104 compatible = "ti,omap4-gpio";
103 ti,hwmods = "gpio2"; 105 ti,hwmods = "gpio2";
104 gpio-controller; 106 gpio-controller;
@@ -109,7 +111,7 @@
109 interrupts = <98>; 111 interrupts = <98>;
110 }; 112 };
111 113
112 gpio3: gpio@481ac000 { 114 gpio2: gpio@481ac000 {
113 compatible = "ti,omap4-gpio"; 115 compatible = "ti,omap4-gpio";
114 ti,hwmods = "gpio3"; 116 ti,hwmods = "gpio3";
115 gpio-controller; 117 gpio-controller;
@@ -120,7 +122,7 @@
120 interrupts = <32>; 122 interrupts = <32>;
121 }; 123 };
122 124
123 gpio4: gpio@481ae000 { 125 gpio3: gpio@481ae000 {
124 compatible = "ti,omap4-gpio"; 126 compatible = "ti,omap4-gpio";
125 ti,hwmods = "gpio4"; 127 ti,hwmods = "gpio4";
126 gpio-controller; 128 gpio-controller;
@@ -185,7 +187,7 @@
185 status = "disabled"; 187 status = "disabled";
186 }; 188 };
187 189
188 i2c1: i2c@44e0b000 { 190 i2c0: i2c@44e0b000 {
189 compatible = "ti,omap4-i2c"; 191 compatible = "ti,omap4-i2c";
190 #address-cells = <1>; 192 #address-cells = <1>;
191 #size-cells = <0>; 193 #size-cells = <0>;
@@ -195,7 +197,7 @@
195 status = "disabled"; 197 status = "disabled";
196 }; 198 };
197 199
198 i2c2: i2c@4802a000 { 200 i2c1: i2c@4802a000 {
199 compatible = "ti,omap4-i2c"; 201 compatible = "ti,omap4-i2c";
200 #address-cells = <1>; 202 #address-cells = <1>;
201 #size-cells = <0>; 203 #size-cells = <0>;
@@ -205,7 +207,7 @@
205 status = "disabled"; 207 status = "disabled";
206 }; 208 };
207 209
208 i2c3: i2c@4819c000 { 210 i2c2: i2c@4819c000 {
209 compatible = "ti,omap4-i2c"; 211 compatible = "ti,omap4-i2c";
210 #address-cells = <1>; 212 #address-cells = <1>;
211 #size-cells = <0>; 213 #size-cells = <0>;
@@ -225,7 +227,8 @@
225 dcan0: d_can@481cc000 { 227 dcan0: d_can@481cc000 {
226 compatible = "bosch,d_can"; 228 compatible = "bosch,d_can";
227 ti,hwmods = "d_can0"; 229 ti,hwmods = "d_can0";
228 reg = <0x481cc000 0x2000>; 230 reg = <0x481cc000 0x2000
231 0x44e10644 0x4>;
229 interrupts = <52>; 232 interrupts = <52>;
230 status = "disabled"; 233 status = "disabled";
231 }; 234 };
@@ -233,13 +236,14 @@
233 dcan1: d_can@481d0000 { 236 dcan1: d_can@481d0000 {
234 compatible = "bosch,d_can"; 237 compatible = "bosch,d_can";
235 ti,hwmods = "d_can1"; 238 ti,hwmods = "d_can1";
236 reg = <0x481d0000 0x2000>; 239 reg = <0x481d0000 0x2000
240 0x44e10644 0x4>;
237 interrupts = <55>; 241 interrupts = <55>;
238 status = "disabled"; 242 status = "disabled";
239 }; 243 };
240 244
241 timer1: timer@44e31000 { 245 timer1: timer@44e31000 {
242 compatible = "ti,omap2-timer"; 246 compatible = "ti,am335x-timer-1ms";
243 reg = <0x44e31000 0x400>; 247 reg = <0x44e31000 0x400>;
244 interrupts = <67>; 248 interrupts = <67>;
245 ti,hwmods = "timer1"; 249 ti,hwmods = "timer1";
@@ -247,21 +251,21 @@
247 }; 251 };
248 252
249 timer2: timer@48040000 { 253 timer2: timer@48040000 {
250 compatible = "ti,omap2-timer"; 254 compatible = "ti,am335x-timer";
251 reg = <0x48040000 0x400>; 255 reg = <0x48040000 0x400>;
252 interrupts = <68>; 256 interrupts = <68>;
253 ti,hwmods = "timer2"; 257 ti,hwmods = "timer2";
254 }; 258 };
255 259
256 timer3: timer@48042000 { 260 timer3: timer@48042000 {
257 compatible = "ti,omap2-timer"; 261 compatible = "ti,am335x-timer";
258 reg = <0x48042000 0x400>; 262 reg = <0x48042000 0x400>;
259 interrupts = <69>; 263 interrupts = <69>;
260 ti,hwmods = "timer3"; 264 ti,hwmods = "timer3";
261 }; 265 };
262 266
263 timer4: timer@48044000 { 267 timer4: timer@48044000 {
264 compatible = "ti,omap2-timer"; 268 compatible = "ti,am335x-timer";
265 reg = <0x48044000 0x400>; 269 reg = <0x48044000 0x400>;
266 interrupts = <92>; 270 interrupts = <92>;
267 ti,hwmods = "timer4"; 271 ti,hwmods = "timer4";
@@ -269,7 +273,7 @@
269 }; 273 };
270 274
271 timer5: timer@48046000 { 275 timer5: timer@48046000 {
272 compatible = "ti,omap2-timer"; 276 compatible = "ti,am335x-timer";
273 reg = <0x48046000 0x400>; 277 reg = <0x48046000 0x400>;
274 interrupts = <93>; 278 interrupts = <93>;
275 ti,hwmods = "timer5"; 279 ti,hwmods = "timer5";
@@ -277,7 +281,7 @@
277 }; 281 };
278 282
279 timer6: timer@48048000 { 283 timer6: timer@48048000 {
280 compatible = "ti,omap2-timer"; 284 compatible = "ti,am335x-timer";
281 reg = <0x48048000 0x400>; 285 reg = <0x48048000 0x400>;
282 interrupts = <94>; 286 interrupts = <94>;
283 ti,hwmods = "timer6"; 287 ti,hwmods = "timer6";
@@ -285,7 +289,7 @@
285 }; 289 };
286 290
287 timer7: timer@4804a000 { 291 timer7: timer@4804a000 {
288 compatible = "ti,omap2-timer"; 292 compatible = "ti,am335x-timer";
289 reg = <0x4804a000 0x400>; 293 reg = <0x4804a000 0x400>;
290 interrupts = <95>; 294 interrupts = <95>;
291 ti,hwmods = "timer7"; 295 ti,hwmods = "timer7";
@@ -305,7 +309,7 @@
305 #address-cells = <1>; 309 #address-cells = <1>;
306 #size-cells = <0>; 310 #size-cells = <0>;
307 reg = <0x48030000 0x400>; 311 reg = <0x48030000 0x400>;
308 interrupt = <65>; 312 interrupts = <65>;
309 ti,spi-num-cs = <2>; 313 ti,spi-num-cs = <2>;
310 ti,hwmods = "spi0"; 314 ti,hwmods = "spi0";
311 status = "disabled"; 315 status = "disabled";
@@ -316,7 +320,7 @@
316 #address-cells = <1>; 320 #address-cells = <1>;
317 #size-cells = <0>; 321 #size-cells = <0>;
318 reg = <0x481a0000 0x400>; 322 reg = <0x481a0000 0x400>;
319 interrupt = <125>; 323 interrupts = <125>;
320 ti,spi-num-cs = <2>; 324 ti,spi-num-cs = <2>;
321 ti,hwmods = "spi1"; 325 ti,hwmods = "spi1";
322 status = "disabled"; 326 status = "disabled";
diff --git a/arch/arm/boot/dts/am3517-evm.dts b/arch/arm/boot/dts/am3517-evm.dts
index 474f760ecadf..e9b5bdae4908 100644
--- a/arch/arm/boot/dts/am3517-evm.dts
+++ b/arch/arm/boot/dts/am3517-evm.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TI AM3517 EVM (AM3517/05)"; 13 model = "TI AM3517 EVM (AM3517/05)";
diff --git a/arch/arm/boot/dts/am3517_mt_ventoux.dts b/arch/arm/boot/dts/am3517_mt_ventoux.dts
index 5eb26d7d9b4e..556868388a23 100644
--- a/arch/arm/boot/dts/am3517_mt_ventoux.dts
+++ b/arch/arm/boot/dts/am3517_mt_ventoux.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TeeJet Mt.Ventoux"; 13 model = "TeeJet Mt.Ventoux";
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi
index 761c4b69b25b..37aa7487d4d8 100644
--- a/arch/arm/boot/dts/omap2.dtsi
+++ b/arch/arm/boot/dts/omap2.dtsi
@@ -26,6 +26,11 @@
26 }; 26 };
27 }; 27 };
28 28
29 pmu {
30 compatible = "arm,arm1136-pmu";
31 interrupts = <3>;
32 };
33
29 soc { 34 soc {
30 compatible = "ti,omap-infra"; 35 compatible = "ti,omap-infra";
31 mpu { 36 mpu {
@@ -49,6 +54,18 @@
49 reg = <0x480FE000 0x1000>; 54 reg = <0x480FE000 0x1000>;
50 }; 55 };
51 56
57 sdma: dma-controller@48056000 {
58 compatible = "ti,omap2430-sdma", "ti,omap2420-sdma";
59 reg = <0x48056000 0x1000>;
60 interrupts = <12>,
61 <13>,
62 <14>,
63 <15>;
64 #dma-cells = <1>;
65 #dma-channels = <32>;
66 #dma-requests = <64>;
67 };
68
52 uart1: serial@4806a000 { 69 uart1: serial@4806a000 {
53 compatible = "ti,omap2-uart"; 70 compatible = "ti,omap2-uart";
54 ti,hwmods = "uart1"; 71 ti,hwmods = "uart1";
@@ -68,28 +85,28 @@
68 }; 85 };
69 86
70 timer2: timer@4802a000 { 87 timer2: timer@4802a000 {
71 compatible = "ti,omap2-timer"; 88 compatible = "ti,omap2420-timer";
72 reg = <0x4802a000 0x400>; 89 reg = <0x4802a000 0x400>;
73 interrupts = <38>; 90 interrupts = <38>;
74 ti,hwmods = "timer2"; 91 ti,hwmods = "timer2";
75 }; 92 };
76 93
77 timer3: timer@48078000 { 94 timer3: timer@48078000 {
78 compatible = "ti,omap2-timer"; 95 compatible = "ti,omap2420-timer";
79 reg = <0x48078000 0x400>; 96 reg = <0x48078000 0x400>;
80 interrupts = <39>; 97 interrupts = <39>;
81 ti,hwmods = "timer3"; 98 ti,hwmods = "timer3";
82 }; 99 };
83 100
84 timer4: timer@4807a000 { 101 timer4: timer@4807a000 {
85 compatible = "ti,omap2-timer"; 102 compatible = "ti,omap2420-timer";
86 reg = <0x4807a000 0x400>; 103 reg = <0x4807a000 0x400>;
87 interrupts = <40>; 104 interrupts = <40>;
88 ti,hwmods = "timer4"; 105 ti,hwmods = "timer4";
89 }; 106 };
90 107
91 timer5: timer@4807c000 { 108 timer5: timer@4807c000 {
92 compatible = "ti,omap2-timer"; 109 compatible = "ti,omap2420-timer";
93 reg = <0x4807c000 0x400>; 110 reg = <0x4807c000 0x400>;
94 interrupts = <41>; 111 interrupts = <41>;
95 ti,hwmods = "timer5"; 112 ti,hwmods = "timer5";
@@ -97,7 +114,7 @@
97 }; 114 };
98 115
99 timer6: timer@4807e000 { 116 timer6: timer@4807e000 {
100 compatible = "ti,omap2-timer"; 117 compatible = "ti,omap2420-timer";
101 reg = <0x4807e000 0x400>; 118 reg = <0x4807e000 0x400>;
102 interrupts = <42>; 119 interrupts = <42>;
103 ti,hwmods = "timer6"; 120 ti,hwmods = "timer6";
@@ -105,7 +122,7 @@
105 }; 122 };
106 123
107 timer7: timer@48080000 { 124 timer7: timer@48080000 {
108 compatible = "ti,omap2-timer"; 125 compatible = "ti,omap2420-timer";
109 reg = <0x48080000 0x400>; 126 reg = <0x48080000 0x400>;
110 interrupts = <43>; 127 interrupts = <43>;
111 ti,hwmods = "timer7"; 128 ti,hwmods = "timer7";
@@ -113,7 +130,7 @@
113 }; 130 };
114 131
115 timer8: timer@48082000 { 132 timer8: timer@48082000 {
116 compatible = "ti,omap2-timer"; 133 compatible = "ti,omap2420-timer";
117 reg = <0x48082000 0x400>; 134 reg = <0x48082000 0x400>;
118 interrupts = <44>; 135 interrupts = <44>;
119 ti,hwmods = "timer8"; 136 ti,hwmods = "timer8";
@@ -121,7 +138,7 @@
121 }; 138 };
122 139
123 timer9: timer@48084000 { 140 timer9: timer@48084000 {
124 compatible = "ti,omap2-timer"; 141 compatible = "ti,omap2420-timer";
125 reg = <0x48084000 0x400>; 142 reg = <0x48084000 0x400>;
126 interrupts = <45>; 143 interrupts = <45>;
127 ti,hwmods = "timer9"; 144 ti,hwmods = "timer9";
@@ -129,7 +146,7 @@
129 }; 146 };
130 147
131 timer10: timer@48086000 { 148 timer10: timer@48086000 {
132 compatible = "ti,omap2-timer"; 149 compatible = "ti,omap2420-timer";
133 reg = <0x48086000 0x400>; 150 reg = <0x48086000 0x400>;
134 interrupts = <46>; 151 interrupts = <46>;
135 ti,hwmods = "timer10"; 152 ti,hwmods = "timer10";
@@ -137,7 +154,7 @@
137 }; 154 };
138 155
139 timer11: timer@48088000 { 156 timer11: timer@48088000 {
140 compatible = "ti,omap2-timer"; 157 compatible = "ti,omap2420-timer";
141 reg = <0x48088000 0x400>; 158 reg = <0x48088000 0x400>;
142 interrupts = <47>; 159 interrupts = <47>;
143 ti,hwmods = "timer11"; 160 ti,hwmods = "timer11";
@@ -145,7 +162,7 @@
145 }; 162 };
146 163
147 timer12: timer@4808a000 { 164 timer12: timer@4808a000 {
148 compatible = "ti,omap2-timer"; 165 compatible = "ti,omap2420-timer";
149 reg = <0x4808a000 0x400>; 166 reg = <0x4808a000 0x400>;
150 interrupts = <48>; 167 interrupts = <48>;
151 ti,hwmods = "timer12"; 168 ti,hwmods = "timer12";
diff --git a/arch/arm/boot/dts/omap2420-h4.dts b/arch/arm/boot/dts/omap2420-h4.dts
index 9b0d07746cba..68282ee13e26 100644
--- a/arch/arm/boot/dts/omap2420-h4.dts
+++ b/arch/arm/boot/dts/omap2420-h4.dts
@@ -18,3 +18,49 @@
18 reg = <0x80000000 0x4000000>; /* 64 MB */ 18 reg = <0x80000000 0x4000000>; /* 64 MB */
19 }; 19 };
20}; 20};
21
22&gpmc {
23 ranges = <0 0 0x08000000 0x04000000>;
24
25 nor@0,0 {
26 compatible = "cfi-flash";
27 linux,mtd-name= "intel,ge28f256l18b85";
28 #address-cells = <1>;
29 #size-cells = <1>;
30 reg = <0 0 0x04000000>;
31 bank-width = <2>;
32
33 gpmc,mux-add-data = <2>;
34 gpmc,cs-on-ns = <10>;
35 gpmc,cs-rd-off-ns = <160>;
36 gpmc,cs-wr-off-ns = <160>;
37 gpmc,adv-on-ns = <20>;
38 gpmc,adv-rd-off-ns = <50>;
39 gpmc,adv-wr-off-ns = <50>;
40 gpmc,oe-on-ns = <60>;
41 gpmc,oe-off-ns = <120>;
42 gpmc,we-on-ns = <60>;
43 gpmc,we-off-ns = <120>;
44 gpmc,rd-cycle-ns = <170>;
45 gpmc,wr-cycle-ns = <170>;
46 gpmc,access-ns = <150>;
47 gpmc,page-burst-access-ns = <10>;
48
49 partition@0 {
50 label = "bootloader";
51 reg = <0 0x20000>;
52 };
53 partition@0x20000 {
54 label = "params";
55 reg = <0x20000 0x20000>;
56 };
57 partition@0x40000 {
58 label = "kernel";
59 reg = <0x40000 0x200000>;
60 };
61 partition@0x240000 {
62 label = "file-system";
63 reg = <0x240000 0x3dc0000>;
64 };
65 };
66};
diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi
index af6560908905..da5b285b73be 100644
--- a/arch/arm/boot/dts/omap2420.dtsi
+++ b/arch/arm/boot/dts/omap2420.dtsi
@@ -29,6 +29,65 @@
29 pinctrl-single,function-mask = <0x3f>; 29 pinctrl-single,function-mask = <0x3f>;
30 }; 30 };
31 31
32 gpio1: gpio@48018000 {
33 compatible = "ti,omap2-gpio";
34 reg = <0x48018000 0x200>;
35 interrupts = <29>;
36 ti,hwmods = "gpio1";
37 ti,gpio-always-on;
38 #gpio-cells = <2>;
39 gpio-controller;
40 #interrupt-cells = <2>;
41 interrupt-controller;
42 };
43
44 gpio2: gpio@4801a000 {
45 compatible = "ti,omap2-gpio";
46 reg = <0x4801a000 0x200>;
47 interrupts = <30>;
48 ti,hwmods = "gpio2";
49 ti,gpio-always-on;
50 #gpio-cells = <2>;
51 gpio-controller;
52 #interrupt-cells = <2>;
53 interrupt-controller;
54 };
55
56 gpio3: gpio@4801c000 {
57 compatible = "ti,omap2-gpio";
58 reg = <0x4801c000 0x200>;
59 interrupts = <31>;
60 ti,hwmods = "gpio3";
61 ti,gpio-always-on;
62 #gpio-cells = <2>;
63 gpio-controller;
64 #interrupt-cells = <2>;
65 interrupt-controller;
66 };
67
68 gpio4: gpio@4801e000 {
69 compatible = "ti,omap2-gpio";
70 reg = <0x4801e000 0x200>;
71 interrupts = <32>;
72 ti,hwmods = "gpio4";
73 ti,gpio-always-on;
74 #gpio-cells = <2>;
75 gpio-controller;
76 #interrupt-cells = <2>;
77 interrupt-controller;
78 };
79
80 gpmc: gpmc@6800a000 {
81 compatible = "ti,omap2420-gpmc";
82 reg = <0x6800a000 0x1000>;
83 #address-cells = <2>;
84 #size-cells = <1>;
85 interrupts = <20>;
86 gpmc,num-cs = <8>;
87 gpmc,num-waitpins = <4>;
88 ti,hwmods = "gpmc";
89 };
90
32 mcbsp1: mcbsp@48074000 { 91 mcbsp1: mcbsp@48074000 {
33 compatible = "ti,omap2420-mcbsp"; 92 compatible = "ti,omap2420-mcbsp";
34 reg = <0x48074000 0xff>; 93 reg = <0x48074000 0xff>;
@@ -37,6 +96,9 @@
37 <60>; /* RX interrupt */ 96 <60>; /* RX interrupt */
38 interrupt-names = "tx", "rx"; 97 interrupt-names = "tx", "rx";
39 ti,hwmods = "mcbsp1"; 98 ti,hwmods = "mcbsp1";
99 dmas = <&sdma 31>,
100 <&sdma 32>;
101 dma-names = "tx", "rx";
40 }; 102 };
41 103
42 mcbsp2: mcbsp@48076000 { 104 mcbsp2: mcbsp@48076000 {
@@ -47,10 +109,13 @@
47 <63>; /* RX interrupt */ 109 <63>; /* RX interrupt */
48 interrupt-names = "tx", "rx"; 110 interrupt-names = "tx", "rx";
49 ti,hwmods = "mcbsp2"; 111 ti,hwmods = "mcbsp2";
112 dmas = <&sdma 33>,
113 <&sdma 34>;
114 dma-names = "tx", "rx";
50 }; 115 };
51 116
52 timer1: timer@48028000 { 117 timer1: timer@48028000 {
53 compatible = "ti,omap2-timer"; 118 compatible = "ti,omap2420-timer";
54 reg = <0x48028000 0x400>; 119 reg = <0x48028000 0x400>;
55 interrupts = <37>; 120 interrupts = <37>;
56 ti,hwmods = "timer1"; 121 ti,hwmods = "timer1";
diff --git a/arch/arm/boot/dts/omap2430.dtsi b/arch/arm/boot/dts/omap2430.dtsi
index c3924457c9b6..054bc4439568 100644
--- a/arch/arm/boot/dts/omap2430.dtsi
+++ b/arch/arm/boot/dts/omap2430.dtsi
@@ -29,6 +29,76 @@
29 pinctrl-single,function-mask = <0x3f>; 29 pinctrl-single,function-mask = <0x3f>;
30 }; 30 };
31 31
32 gpio1: gpio@4900c000 {
33 compatible = "ti,omap2-gpio";
34 reg = <0x4900c000 0x200>;
35 interrupts = <29>;
36 ti,hwmods = "gpio1";
37 ti,gpio-always-on;
38 #gpio-cells = <2>;
39 gpio-controller;
40 #interrupt-cells = <2>;
41 interrupt-controller;
42 };
43
44 gpio2: gpio@4900e000 {
45 compatible = "ti,omap2-gpio";
46 reg = <0x4900e000 0x200>;
47 interrupts = <30>;
48 ti,hwmods = "gpio2";
49 ti,gpio-always-on;
50 #gpio-cells = <2>;
51 gpio-controller;
52 #interrupt-cells = <2>;
53 interrupt-controller;
54 };
55
56 gpio3: gpio@49010000 {
57 compatible = "ti,omap2-gpio";
58 reg = <0x49010000 0x200>;
59 interrupts = <31>;
60 ti,hwmods = "gpio3";
61 ti,gpio-always-on;
62 #gpio-cells = <2>;
63 gpio-controller;
64 #interrupt-cells = <2>;
65 interrupt-controller;
66 };
67
68 gpio4: gpio@49012000 {
69 compatible = "ti,omap2-gpio";
70 reg = <0x49012000 0x200>;
71 interrupts = <32>;
72 ti,hwmods = "gpio4";
73 ti,gpio-always-on;
74 #gpio-cells = <2>;
75 gpio-controller;
76 #interrupt-cells = <2>;
77 interrupt-controller;
78 };
79
80 gpio5: gpio@480b6000 {
81 compatible = "ti,omap2-gpio";
82 reg = <0x480b6000 0x200>;
83 interrupts = <33>;
84 ti,hwmods = "gpio5";
85 #gpio-cells = <2>;
86 gpio-controller;
87 #interrupt-cells = <2>;
88 interrupt-controller;
89 };
90
91 gpmc: gpmc@6e000000 {
92 compatible = "ti,omap2430-gpmc";
93 reg = <0x6e000000 0x1000>;
94 #address-cells = <2>;
95 #size-cells = <1>;
96 interrupts = <20>;
97 gpmc,num-cs = <8>;
98 gpmc,num-waitpins = <4>;
99 ti,hwmods = "gpmc";
100 };
101
32 mcbsp1: mcbsp@48074000 { 102 mcbsp1: mcbsp@48074000 {
33 compatible = "ti,omap2430-mcbsp"; 103 compatible = "ti,omap2430-mcbsp";
34 reg = <0x48074000 0xff>; 104 reg = <0x48074000 0xff>;
@@ -40,6 +110,9 @@
40 interrupt-names = "common", "tx", "rx", "rx_overflow"; 110 interrupt-names = "common", "tx", "rx", "rx_overflow";
41 ti,buffer-size = <128>; 111 ti,buffer-size = <128>;
42 ti,hwmods = "mcbsp1"; 112 ti,hwmods = "mcbsp1";
113 dmas = <&sdma 31>,
114 <&sdma 32>;
115 dma-names = "tx", "rx";
43 }; 116 };
44 117
45 mcbsp2: mcbsp@48076000 { 118 mcbsp2: mcbsp@48076000 {
@@ -52,6 +125,9 @@
52 interrupt-names = "common", "tx", "rx"; 125 interrupt-names = "common", "tx", "rx";
53 ti,buffer-size = <128>; 126 ti,buffer-size = <128>;
54 ti,hwmods = "mcbsp2"; 127 ti,hwmods = "mcbsp2";
128 dmas = <&sdma 33>,
129 <&sdma 34>;
130 dma-names = "tx", "rx";
55 }; 131 };
56 132
57 mcbsp3: mcbsp@4808c000 { 133 mcbsp3: mcbsp@4808c000 {
@@ -64,6 +140,9 @@
64 interrupt-names = "common", "tx", "rx"; 140 interrupt-names = "common", "tx", "rx";
65 ti,buffer-size = <128>; 141 ti,buffer-size = <128>;
66 ti,hwmods = "mcbsp3"; 142 ti,hwmods = "mcbsp3";
143 dmas = <&sdma 17>,
144 <&sdma 18>;
145 dma-names = "tx", "rx";
67 }; 146 };
68 147
69 mcbsp4: mcbsp@4808e000 { 148 mcbsp4: mcbsp@4808e000 {
@@ -76,6 +155,9 @@
76 interrupt-names = "common", "tx", "rx"; 155 interrupt-names = "common", "tx", "rx";
77 ti,buffer-size = <128>; 156 ti,buffer-size = <128>;
78 ti,hwmods = "mcbsp4"; 157 ti,hwmods = "mcbsp4";
158 dmas = <&sdma 19>,
159 <&sdma 20>;
160 dma-names = "tx", "rx";
79 }; 161 };
80 162
81 mcbsp5: mcbsp@48096000 { 163 mcbsp5: mcbsp@48096000 {
@@ -88,10 +170,13 @@
88 interrupt-names = "common", "tx", "rx"; 170 interrupt-names = "common", "tx", "rx";
89 ti,buffer-size = <128>; 171 ti,buffer-size = <128>;
90 ti,hwmods = "mcbsp5"; 172 ti,hwmods = "mcbsp5";
173 dmas = <&sdma 21>,
174 <&sdma 22>;
175 dma-names = "tx", "rx";
91 }; 176 };
92 177
93 timer1: timer@49018000 { 178 timer1: timer@49018000 {
94 compatible = "ti,omap2-timer"; 179 compatible = "ti,omap2420-timer";
95 reg = <0x49018000 0x400>; 180 reg = <0x49018000 0x400>;
96 interrupts = <37>; 181 interrupts = <37>;
97 ti,hwmods = "timer1"; 182 ti,hwmods = "timer1";
diff --git a/arch/arm/boot/dts/omap3-beagle-xm.dts b/arch/arm/boot/dts/omap3-beagle-xm.dts
index 3705a81c1fc2..5a31964ae339 100644
--- a/arch/arm/boot/dts/omap3-beagle-xm.dts
+++ b/arch/arm/boot/dts/omap3-beagle-xm.dts
@@ -13,6 +13,12 @@
13 model = "TI OMAP3 BeagleBoard xM"; 13 model = "TI OMAP3 BeagleBoard xM";
14 compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3"; 14 compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3";
15 15
16 cpus {
17 cpu@0 {
18 cpu0-supply = <&vcc>;
19 };
20 };
21
16 memory { 22 memory {
17 device_type = "memory"; 23 device_type = "memory";
18 reg = <0x80000000 0x20000000>; /* 512 MB */ 24 reg = <0x80000000 0x20000000>; /* 512 MB */
@@ -20,10 +26,6 @@
20 26
21 leds { 27 leds {
22 compatible = "gpio-leds"; 28 compatible = "gpio-leds";
23 pmu_stat {
24 label = "beagleboard::pmu_stat";
25 gpios = <&twl_gpio 19 0>; /* LEDB */
26 };
27 29
28 heartbeat { 30 heartbeat {
29 label = "beagleboard::usr0"; 31 label = "beagleboard::usr0";
@@ -38,6 +40,16 @@
38 }; 40 };
39 }; 41 };
40 42
43 pwmleds {
44 compatible = "pwm-leds";
45
46 pmu_stat {
47 label = "beagleboard::pmu_stat";
48 pwms = <&twl_pwmled 1 7812500>;
49 max-brightness = <127>;
50 };
51 };
52
41 sound { 53 sound {
42 compatible = "ti,omap-twl4030"; 54 compatible = "ti,omap-twl4030";
43 ti,model = "omap3beagle"; 55 ti,model = "omap3beagle";
@@ -107,3 +119,9 @@
107 */ 119 */
108 ti,pulldowns = <0x03a1c4>; 120 ti,pulldowns = <0x03a1c4>;
109}; 121};
122
123&usb_otg_hs {
124 interface-type = <0>;
125 mode = <3>;
126 power = <50>;
127};
diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts
index 02d23f15fd86..6eec69997607 100644
--- a/arch/arm/boot/dts/omap3-beagle.dts
+++ b/arch/arm/boot/dts/omap3-beagle.dts
@@ -7,12 +7,18 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TI OMAP3 BeagleBoard"; 13 model = "TI OMAP3 BeagleBoard";
14 compatible = "ti,omap3-beagle", "ti,omap3"; 14 compatible = "ti,omap3-beagle", "ti,omap3";
15 15
16 cpus {
17 cpu@0 {
18 cpu0-supply = <&vcc>;
19 };
20 };
21
16 memory { 22 memory {
17 device_type = "memory"; 23 device_type = "memory";
18 reg = <0x80000000 0x10000000>; /* 256 MB */ 24 reg = <0x80000000 0x10000000>; /* 256 MB */
diff --git a/arch/arm/boot/dts/omap3-devkit8000.dts b/arch/arm/boot/dts/omap3-devkit8000.dts
new file mode 100644
index 000000000000..8a5cdcc6debd
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-devkit8000.dts
@@ -0,0 +1,169 @@
1/*
2 * Author: Anil Kumar <anilk4.v@gmail.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/dts-v1/;
9
10/include/ "omap34xx.dtsi"
11/ {
12 model = "TimLL OMAP3 Devkit8000";
13 compatible = "timll,omap3-devkit8000", "ti,omap3";
14
15 memory {
16 device_type = "memory";
17 reg = <0x80000000 0x10000000>; /* 256 MB */
18 };
19
20 leds {
21 compatible = "gpio-leds";
22
23 heartbeat {
24 label = "devkit8000::led1";
25 gpios = <&gpio6 26 0>; /* 186 -> LED1 */
26 default-state = "on";
27 linux,default-trigger = "heartbeat";
28 };
29
30 mmc {
31 label = "devkit8000::led2";
32 gpios = <&gpio6 3 0>; /* 163 -> LED2 */
33 default-state = "on";
34 linux,default-trigger = "none";
35 };
36
37 usr {
38 label = "devkit8000::led3";
39 gpios = <&gpio6 4 0>; /* 164 -> LED3 */
40 default-state = "on";
41 linux,default-trigger = "usr";
42 };
43
44 };
45
46 sound {
47 compatible = "ti,omap-twl4030";
48 ti,model = "devkit8000";
49
50 ti,mcbsp = <&mcbsp2>;
51 ti,codec = <&twl_audio>;
52 ti,audio-routing =
53 "Ext Spk", "PREDRIVEL",
54 "Ext Spk", "PREDRIVER",
55 "MAINMIC", "Main Mic",
56 "Main Mic", "Mic Bias 1";
57 };
58};
59
60&i2c1 {
61 clock-frequency = <2600000>;
62
63 twl: twl@48 {
64 reg = <0x48>;
65 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
66
67 twl_audio: audio {
68 compatible = "ti,twl4030-audio";
69 codec {
70 };
71 };
72 };
73};
74
75&i2c2 {
76 status = "disabled";
77};
78
79&i2c3 {
80 status = "disabled";
81};
82
83/include/ "twl4030.dtsi"
84
85&mmc1 {
86 vmmc-supply = <&vmmc1>;
87 vmmc_aux-supply = <&vsim>;
88 bus-width = <8>;
89};
90
91&mmc2 {
92 status = "disabled";
93};
94
95&mmc3 {
96 status = "disabled";
97};
98
99&wdt2 {
100 status = "disabled";
101};
102
103&mcbsp1 {
104 status = "disabled";
105};
106
107&mcbsp3 {
108 status = "disabled";
109};
110
111&mcbsp4 {
112 status = "disabled";
113};
114
115&mcbsp5 {
116 status = "disabled";
117};
118
119&gpmc {
120 ranges = <0 0 0x30000000 0x04>; /* CS0: NAND */
121
122 nand@0,0 {
123 reg = <0 0 0>; /* CS0, offset 0 */
124 nand-bus-width = <16>;
125
126 gpmc,sync-clk = <0>;
127 gpmc,cs-on = <0>;
128 gpmc,cs-rd-off = <44>;
129 gpmc,cs-wr-off = <44>;
130 gpmc,adv-on = <6>;
131 gpmc,adv-rd-off = <34>;
132 gpmc,adv-wr-off = <44>;
133 gpmc,we-off = <40>;
134 gpmc,oe-off = <54>;
135 gpmc,access = <64>;
136 gpmc,rd-cycle = <82>;
137 gpmc,wr-cycle = <82>;
138 gpmc,wr-access = <40>;
139 gpmc,wr-data-mux-bus = <0>;
140
141 #address-cells = <1>;
142 #size-cells = <1>;
143
144 x-loader@0 {
145 label = "X-Loader";
146 reg = <0 0x80000>;
147 };
148
149 bootloaders@80000 {
150 label = "U-Boot";
151 reg = <0x80000 0x1e0000>;
152 };
153
154 bootloaders_env@260000 {
155 label = "U-Boot Env";
156 reg = <0x260000 0x20000>;
157 };
158
159 kernel@280000 {
160 label = "Kernel";
161 reg = <0x280000 0x400000>;
162 };
163
164 filesystem@680000 {
165 label = "File System";
166 reg = <0x680000 0xf980000>;
167 };
168 };
169};
diff --git a/arch/arm/boot/dts/omap3-evm.dts b/arch/arm/boot/dts/omap3-evm.dts
index e8ba1c247a39..05f51e10ddd6 100644
--- a/arch/arm/boot/dts/omap3-evm.dts
+++ b/arch/arm/boot/dts/omap3-evm.dts
@@ -7,12 +7,18 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)"; 13 model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
14 compatible = "ti,omap3-evm", "ti,omap3"; 14 compatible = "ti,omap3-evm", "ti,omap3";
15 15
16 cpus {
17 cpu@0 {
18 cpu0-supply = <&vcc>;
19 };
20 };
21
16 memory { 22 memory {
17 device_type = "memory"; 23 device_type = "memory";
18 reg = <0x80000000 0x10000000>; /* 256 MB */ 24 reg = <0x80000000 0x10000000>; /* 256 MB */
@@ -59,3 +65,9 @@
59&twl_gpio { 65&twl_gpio {
60 ti,use-leds; 66 ti,use-leds;
61}; 67};
68
69&usb_otg_hs {
70 interface-type = <0>;
71 mode = <3>;
72 power = <50>;
73};
diff --git a/arch/arm/boot/dts/omap3-igep.dtsi b/arch/arm/boot/dts/omap3-igep.dtsi
new file mode 100644
index 000000000000..f8fe3b748c3e
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-igep.dtsi
@@ -0,0 +1,122 @@
1/*
2 * Device Tree Source for IGEP Technology devices
3 *
4 * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
5 * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11/dts-v1/;
12
13/include/ "omap34xx.dtsi"
14
15/ {
16 memory {
17 device_type = "memory";
18 reg = <0x80000000 0x20000000>; /* 512 MB */
19 };
20
21 sound {
22 compatible = "ti,omap-twl4030";
23 ti,model = "igep2";
24 ti,mcbsp = <&mcbsp2>;
25 ti,codec = <&twl_audio>;
26 };
27};
28
29&omap3_pmx_core {
30 uart1_pins: pinmux_uart1_pins {
31 pinctrl-single,pins = <
32 0x152 0x100 /* uart1_rx.uart1_rx INPUT | MODE0 */
33 0x14c 0 /* uart1_tx.uart1_tx OUTPUT | MODE0 */
34 >;
35 };
36
37 uart2_pins: pinmux_uart2_pins {
38 pinctrl-single,pins = <
39 0x14a 0x100 /* uart2_rx.uart2_rx INPUT | MODE0 */
40 0x148 0 /* uart2_tx.uart2_tx OUTPUT | MODE0 */
41 >;
42 };
43
44 uart3_pins: pinmux_uart3_pins {
45 pinctrl-single,pins = <
46 0x16e 0x100 /* uart3_rx.uart3_rx INPUT | MODE0 */
47 0x170 0 /* uart3_tx.uart3_tx OUTPUT | MODE0 */
48 >;
49 };
50
51 mmc1_pins: pinmux_mmc1_pins {
52 pinctrl-single,pins = <
53 0x114 0x0118 /* sdmmc1_clk.sdmmc1_clk INPUT PULLUP | MODE 0 */
54 0x116 0x0118 /* sdmmc1_cmd.sdmmc1_cmd INPUT PULLUP | MODE 0 */
55 0x118 0x0118 /* sdmmc1_dat0.sdmmc1_dat0 INPUT PULLUP | MODE 0 */
56 0x11a 0x0118 /* sdmmc1_dat1.sdmmc1_dat1 INPUT PULLUP | MODE 0 */
57 0x11c 0x0118 /* sdmmc1_dat2.sdmmc1_dat2 INPUT PULLUP | MODE 0 */
58 0x11e 0x0118 /* sdmmc1_dat3.sdmmc1_dat3 INPUT PULLUP | MODE 0 */
59 0x120 0x0100 /* sdmmc1_dat4.sdmmc1_dat4 INPUT | MODE 0 */
60 0x122 0x0100 /* sdmmc1_dat5.sdmmc1_dat5 INPUT | MODE 0 */
61 0x124 0x0100 /* sdmmc1_dat6.sdmmc1_dat6 INPUT | MODE 0 */
62 0x126 0x0100 /* sdmmc1_dat7.sdmmc1_dat7 INPUT | MODE 0 */
63 >;
64 };
65};
66
67&i2c1 {
68 clock-frequency = <2600000>;
69
70 twl: twl@48 {
71 reg = <0x48>;
72 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
73 interrupt-parent = <&intc>;
74
75 twl_audio: audio {
76 compatible = "ti,twl4030-audio";
77 codec {
78 };
79 };
80 };
81};
82
83/include/ "twl4030.dtsi"
84
85&i2c2 {
86 clock-frequency = <400000>;
87};
88
89&mmc1 {
90 pinctrl-names = "default";
91 pinctrl-0 = <&mmc1_pins>;
92 vmmc-supply = <&vmmc1>;
93 vmmc_aux-supply = <&vsim>;
94 bus-width = <8>;
95};
96
97&mmc2 {
98 status = "disabled";
99};
100
101&mmc3 {
102 status = "disabled";
103};
104
105&uart1 {
106 pinctrl-names = "default";
107 pinctrl-0 = <&uart1_pins>;
108};
109
110&uart2 {
111 pinctrl-names = "default";
112 pinctrl-0 = <&uart2_pins>;
113};
114
115&uart3 {
116 pinctrl-names = "default";
117 pinctrl-0 = <&uart3_pins>;
118};
119
120&twl_gpio {
121 ti,use-leds;
122};
diff --git a/arch/arm/boot/dts/omap3-igep0020.dts b/arch/arm/boot/dts/omap3-igep0020.dts
new file mode 100644
index 000000000000..e2b98490cc9a
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-igep0020.dts
@@ -0,0 +1,56 @@
1/*
2 * Device Tree Source for IGEPv2 board
3 *
4 * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
5 * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/include/ "omap3-igep.dtsi"
13
14/ {
15 model = "IGEPv2";
16 compatible = "isee,omap3-igep0020", "ti,omap3";
17
18 leds {
19 compatible = "gpio-leds";
20 boot {
21 label = "omap3:green:boot";
22 gpios = <&gpio1 26 0>;
23 default-state = "on";
24 };
25
26 user0 {
27 label = "omap3:red:user0";
28 gpios = <&gpio1 27 0>;
29 default-state = "off";
30 };
31
32 user1 {
33 label = "omap3:red:user1";
34 gpios = <&gpio1 28 0>;
35 default-state = "off";
36 };
37
38 user2 {
39 label = "omap3:green:user1";
40 gpios = <&twl_gpio 19 1>;
41 };
42 };
43};
44
45&i2c3 {
46 clock-frequency = <100000>;
47
48 /*
49 * Display monitor features are burnt in the EEPROM
50 * as EDID data.
51 */
52 eeprom@50 {
53 compatible = "ti,eeprom";
54 reg = <0x50>;
55 };
56};
diff --git a/arch/arm/boot/dts/omap3-igep0030.dts b/arch/arm/boot/dts/omap3-igep0030.dts
new file mode 100644
index 000000000000..9dc48d262ffb
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-igep0030.dts
@@ -0,0 +1,44 @@
1/*
2 * Device Tree Source for IGEP COM Module
3 *
4 * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
5 * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/include/ "omap3-igep.dtsi"
13
14/ {
15 model = "IGEP COM Module";
16 compatible = "isee,omap3-igep0030", "ti,omap3";
17
18 leds {
19 compatible = "gpio-leds";
20 boot {
21 label = "omap3:green:boot";
22 gpios = <&twl_gpio 13 1>;
23 default-state = "on";
24 };
25
26 user0 {
27 label = "omap3:red:user0";
28 gpios = <&twl_gpio 18 1>; /* LEDA */
29 default-state = "off";
30 };
31
32 user1 {
33 label = "omap3:green:user1";
34 gpios = <&twl_gpio 19 1>; /* LEDB */
35 default-state = "off";
36 };
37
38 user2 {
39 label = "omap3:red:user1";
40 gpios = <&gpio1 16 1>;
41 default-state = "off";
42 };
43 };
44};
diff --git a/arch/arm/boot/dts/omap3-overo.dtsi b/arch/arm/boot/dts/omap3-overo.dtsi
index 89808ce01673..d4a7280d18b7 100644
--- a/arch/arm/boot/dts/omap3-overo.dtsi
+++ b/arch/arm/boot/dts/omap3-overo.dtsi
@@ -11,17 +11,26 @@
11 */ 11 */
12/dts-v1/; 12/dts-v1/;
13 13
14/include/ "omap3.dtsi" 14/include/ "omap34xx.dtsi"
15 15
16/ { 16/ {
17 leds { 17 pwmleds {
18 compatible = "gpio-leds"; 18 compatible = "pwm-leds";
19
19 overo { 20 overo {
20 label = "overo:blue:COM"; 21 label = "overo:blue:COM";
21 gpios = <&twl_gpio 19 0>; 22 pwms = <&twl_pwmled 1 7812500>;
22 linux,default-trigger = "mmc0"; 23 max-brightness = <127>;
23 }; 24 };
24 }; 25 };
26
27 sound {
28 compatible = "ti,omap-twl4030";
29 ti,model = "overo";
30
31 ti,mcbsp = <&mcbsp2>;
32 ti,codec = <&twl_audio>;
33 };
25}; 34};
26 35
27&i2c1 { 36&i2c1 {
@@ -31,6 +40,12 @@
31 reg = <0x48>; 40 reg = <0x48>;
32 interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 41 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
33 interrupt-parent = <&intc>; 42 interrupt-parent = <&intc>;
43
44 twl_audio: audio {
45 compatible = "ti,twl4030-audio";
46 codec {
47 };
48 };
34 }; 49 };
35}; 50};
36 51
@@ -55,3 +70,9 @@
55&twl_gpio { 70&twl_gpio {
56 ti,use-leds; 71 ti,use-leds;
57}; 72};
73
74&usb_otg_hs {
75 interface-type = <0>;
76 mode = <3>;
77 power = <50>;
78};
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
index a14f74bbce7c..4ad03d9dbf0c 100644
--- a/arch/arm/boot/dts/omap3.dtsi
+++ b/arch/arm/boot/dts/omap3.dtsi
@@ -26,8 +26,14 @@
26 }; 26 };
27 }; 27 };
28 28
29 pmu {
30 compatible = "arm,cortex-a8-pmu";
31 interrupts = <3>;
32 ti,hwmods = "debugss";
33 };
34
29 /* 35 /*
30 * The soc node represents the soc top level view. It is uses for IPs 36 * The soc node represents the soc top level view. It is used for IPs
31 * that are not memory mapped in the MPU view or for the MPU itself. 37 * that are not memory mapped in the MPU view or for the MPU itself.
32 */ 38 */
33 soc { 39 soc {
@@ -75,76 +81,101 @@
75 reg = <0x48200000 0x1000>; 81 reg = <0x48200000 0x1000>;
76 }; 82 };
77 83
84 sdma: dma-controller@48056000 {
85 compatible = "ti,omap3630-sdma", "ti,omap3430-sdma";
86 reg = <0x48056000 0x1000>;
87 interrupts = <12>,
88 <13>,
89 <14>,
90 <15>;
91 #dma-cells = <1>;
92 #dma-channels = <32>;
93 #dma-requests = <96>;
94 };
95
78 omap3_pmx_core: pinmux@48002030 { 96 omap3_pmx_core: pinmux@48002030 {
79 compatible = "ti,omap3-padconf", "pinctrl-single"; 97 compatible = "ti,omap3-padconf", "pinctrl-single";
80 reg = <0x48002030 0x05cc>; 98 reg = <0x48002030 0x05cc>;
81 #address-cells = <1>; 99 #address-cells = <1>;
82 #size-cells = <0>; 100 #size-cells = <0>;
83 pinctrl-single,register-width = <16>; 101 pinctrl-single,register-width = <16>;
84 pinctrl-single,function-mask = <0x7fff>; 102 pinctrl-single,function-mask = <0x7f1f>;
85 }; 103 };
86 104
87 omap3_pmx_wkup: pinmux@0x48002a58 { 105 omap3_pmx_wkup: pinmux@0x48002a00 {
88 compatible = "ti,omap3-padconf", "pinctrl-single"; 106 compatible = "ti,omap3-padconf", "pinctrl-single";
89 reg = <0x48002a58 0x5c>; 107 reg = <0x48002a00 0x5c>;
90 #address-cells = <1>; 108 #address-cells = <1>;
91 #size-cells = <0>; 109 #size-cells = <0>;
92 pinctrl-single,register-width = <16>; 110 pinctrl-single,register-width = <16>;
93 pinctrl-single,function-mask = <0x7fff>; 111 pinctrl-single,function-mask = <0x7f1f>;
94 }; 112 };
95 113
96 gpio1: gpio@48310000 { 114 gpio1: gpio@48310000 {
97 compatible = "ti,omap3-gpio"; 115 compatible = "ti,omap3-gpio";
116 reg = <0x48310000 0x200>;
117 interrupts = <29>;
98 ti,hwmods = "gpio1"; 118 ti,hwmods = "gpio1";
119 ti,gpio-always-on;
99 gpio-controller; 120 gpio-controller;
100 #gpio-cells = <2>; 121 #gpio-cells = <2>;
101 interrupt-controller; 122 interrupt-controller;
102 #interrupt-cells = <1>; 123 #interrupt-cells = <2>;
103 }; 124 };
104 125
105 gpio2: gpio@49050000 { 126 gpio2: gpio@49050000 {
106 compatible = "ti,omap3-gpio"; 127 compatible = "ti,omap3-gpio";
128 reg = <0x49050000 0x200>;
129 interrupts = <30>;
107 ti,hwmods = "gpio2"; 130 ti,hwmods = "gpio2";
108 gpio-controller; 131 gpio-controller;
109 #gpio-cells = <2>; 132 #gpio-cells = <2>;
110 interrupt-controller; 133 interrupt-controller;
111 #interrupt-cells = <1>; 134 #interrupt-cells = <2>;
112 }; 135 };
113 136
114 gpio3: gpio@49052000 { 137 gpio3: gpio@49052000 {
115 compatible = "ti,omap3-gpio"; 138 compatible = "ti,omap3-gpio";
139 reg = <0x49052000 0x200>;
140 interrupts = <31>;
116 ti,hwmods = "gpio3"; 141 ti,hwmods = "gpio3";
117 gpio-controller; 142 gpio-controller;
118 #gpio-cells = <2>; 143 #gpio-cells = <2>;
119 interrupt-controller; 144 interrupt-controller;
120 #interrupt-cells = <1>; 145 #interrupt-cells = <2>;
121 }; 146 };
122 147
123 gpio4: gpio@49054000 { 148 gpio4: gpio@49054000 {
124 compatible = "ti,omap3-gpio"; 149 compatible = "ti,omap3-gpio";
150 reg = <0x49054000 0x200>;
151 interrupts = <32>;
125 ti,hwmods = "gpio4"; 152 ti,hwmods = "gpio4";
126 gpio-controller; 153 gpio-controller;
127 #gpio-cells = <2>; 154 #gpio-cells = <2>;
128 interrupt-controller; 155 interrupt-controller;
129 #interrupt-cells = <1>; 156 #interrupt-cells = <2>;
130 }; 157 };
131 158
132 gpio5: gpio@49056000 { 159 gpio5: gpio@49056000 {
133 compatible = "ti,omap3-gpio"; 160 compatible = "ti,omap3-gpio";
161 reg = <0x49056000 0x200>;
162 interrupts = <33>;
134 ti,hwmods = "gpio5"; 163 ti,hwmods = "gpio5";
135 gpio-controller; 164 gpio-controller;
136 #gpio-cells = <2>; 165 #gpio-cells = <2>;
137 interrupt-controller; 166 interrupt-controller;
138 #interrupt-cells = <1>; 167 #interrupt-cells = <2>;
139 }; 168 };
140 169
141 gpio6: gpio@49058000 { 170 gpio6: gpio@49058000 {
142 compatible = "ti,omap3-gpio"; 171 compatible = "ti,omap3-gpio";
172 reg = <0x49058000 0x200>;
173 interrupts = <34>;
143 ti,hwmods = "gpio6"; 174 ti,hwmods = "gpio6";
144 gpio-controller; 175 gpio-controller;
145 #gpio-cells = <2>; 176 #gpio-cells = <2>;
146 interrupt-controller; 177 interrupt-controller;
147 #interrupt-cells = <1>; 178 #interrupt-cells = <2>;
148 }; 179 };
149 180
150 uart1: serial@4806a000 { 181 uart1: serial@4806a000 {
@@ -192,6 +223,16 @@
192 #size-cells = <0>; 223 #size-cells = <0>;
193 ti,hwmods = "mcspi1"; 224 ti,hwmods = "mcspi1";
194 ti,spi-num-cs = <4>; 225 ti,spi-num-cs = <4>;
226 dmas = <&sdma 35>,
227 <&sdma 36>,
228 <&sdma 37>,
229 <&sdma 38>,
230 <&sdma 39>,
231 <&sdma 40>,
232 <&sdma 41>,
233 <&sdma 42>;
234 dma-names = "tx0", "rx0", "tx1", "rx1",
235 "tx2", "rx2", "tx3", "rx3";
195 }; 236 };
196 237
197 mcspi2: spi@4809a000 { 238 mcspi2: spi@4809a000 {
@@ -200,6 +241,11 @@
200 #size-cells = <0>; 241 #size-cells = <0>;
201 ti,hwmods = "mcspi2"; 242 ti,hwmods = "mcspi2";
202 ti,spi-num-cs = <2>; 243 ti,spi-num-cs = <2>;
244 dmas = <&sdma 43>,
245 <&sdma 44>,
246 <&sdma 45>,
247 <&sdma 46>;
248 dma-names = "tx0", "rx0", "tx1", "rx1";
203 }; 249 };
204 250
205 mcspi3: spi@480b8000 { 251 mcspi3: spi@480b8000 {
@@ -208,6 +254,11 @@
208 #size-cells = <0>; 254 #size-cells = <0>;
209 ti,hwmods = "mcspi3"; 255 ti,hwmods = "mcspi3";
210 ti,spi-num-cs = <2>; 256 ti,spi-num-cs = <2>;
257 dmas = <&sdma 15>,
258 <&sdma 16>,
259 <&sdma 23>,
260 <&sdma 24>;
261 dma-names = "tx0", "rx0", "tx1", "rx1";
211 }; 262 };
212 263
213 mcspi4: spi@480ba000 { 264 mcspi4: spi@480ba000 {
@@ -216,22 +267,30 @@
216 #size-cells = <0>; 267 #size-cells = <0>;
217 ti,hwmods = "mcspi4"; 268 ti,hwmods = "mcspi4";
218 ti,spi-num-cs = <1>; 269 ti,spi-num-cs = <1>;
270 dmas = <&sdma 70>, <&sdma 71>;
271 dma-names = "tx0", "rx0";
219 }; 272 };
220 273
221 mmc1: mmc@4809c000 { 274 mmc1: mmc@4809c000 {
222 compatible = "ti,omap3-hsmmc"; 275 compatible = "ti,omap3-hsmmc";
223 ti,hwmods = "mmc1"; 276 ti,hwmods = "mmc1";
224 ti,dual-volt; 277 ti,dual-volt;
278 dmas = <&sdma 61>, <&sdma 62>;
279 dma-names = "tx", "rx";
225 }; 280 };
226 281
227 mmc2: mmc@480b4000 { 282 mmc2: mmc@480b4000 {
228 compatible = "ti,omap3-hsmmc"; 283 compatible = "ti,omap3-hsmmc";
229 ti,hwmods = "mmc2"; 284 ti,hwmods = "mmc2";
285 dmas = <&sdma 47>, <&sdma 48>;
286 dma-names = "tx", "rx";
230 }; 287 };
231 288
232 mmc3: mmc@480ad000 { 289 mmc3: mmc@480ad000 {
233 compatible = "ti,omap3-hsmmc"; 290 compatible = "ti,omap3-hsmmc";
234 ti,hwmods = "mmc3"; 291 ti,hwmods = "mmc3";
292 dmas = <&sdma 77>, <&sdma 78>;
293 dma-names = "tx", "rx";
235 }; 294 };
236 295
237 wdt2: wdt@48314000 { 296 wdt2: wdt@48314000 {
@@ -249,6 +308,9 @@
249 interrupt-names = "common", "tx", "rx"; 308 interrupt-names = "common", "tx", "rx";
250 ti,buffer-size = <128>; 309 ti,buffer-size = <128>;
251 ti,hwmods = "mcbsp1"; 310 ti,hwmods = "mcbsp1";
311 dmas = <&sdma 31>,
312 <&sdma 32>;
313 dma-names = "tx", "rx";
252 }; 314 };
253 315
254 mcbsp2: mcbsp@49022000 { 316 mcbsp2: mcbsp@49022000 {
@@ -263,6 +325,9 @@
263 interrupt-names = "common", "tx", "rx", "sidetone"; 325 interrupt-names = "common", "tx", "rx", "sidetone";
264 ti,buffer-size = <1280>; 326 ti,buffer-size = <1280>;
265 ti,hwmods = "mcbsp2", "mcbsp2_sidetone"; 327 ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
328 dmas = <&sdma 33>,
329 <&sdma 34>;
330 dma-names = "tx", "rx";
266 }; 331 };
267 332
268 mcbsp3: mcbsp@49024000 { 333 mcbsp3: mcbsp@49024000 {
@@ -277,6 +342,9 @@
277 interrupt-names = "common", "tx", "rx", "sidetone"; 342 interrupt-names = "common", "tx", "rx", "sidetone";
278 ti,buffer-size = <128>; 343 ti,buffer-size = <128>;
279 ti,hwmods = "mcbsp3", "mcbsp3_sidetone"; 344 ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
345 dmas = <&sdma 17>,
346 <&sdma 18>;
347 dma-names = "tx", "rx";
280 }; 348 };
281 349
282 mcbsp4: mcbsp@49026000 { 350 mcbsp4: mcbsp@49026000 {
@@ -289,6 +357,9 @@
289 interrupt-names = "common", "tx", "rx"; 357 interrupt-names = "common", "tx", "rx";
290 ti,buffer-size = <128>; 358 ti,buffer-size = <128>;
291 ti,hwmods = "mcbsp4"; 359 ti,hwmods = "mcbsp4";
360 dmas = <&sdma 19>,
361 <&sdma 20>;
362 dma-names = "tx", "rx";
292 }; 363 };
293 364
294 mcbsp5: mcbsp@48096000 { 365 mcbsp5: mcbsp@48096000 {
@@ -301,10 +372,13 @@
301 interrupt-names = "common", "tx", "rx"; 372 interrupt-names = "common", "tx", "rx";
302 ti,buffer-size = <128>; 373 ti,buffer-size = <128>;
303 ti,hwmods = "mcbsp5"; 374 ti,hwmods = "mcbsp5";
375 dmas = <&sdma 21>,
376 <&sdma 22>;
377 dma-names = "tx", "rx";
304 }; 378 };
305 379
306 timer1: timer@48318000 { 380 timer1: timer@48318000 {
307 compatible = "ti,omap2-timer"; 381 compatible = "ti,omap3430-timer";
308 reg = <0x48318000 0x400>; 382 reg = <0x48318000 0x400>;
309 interrupts = <37>; 383 interrupts = <37>;
310 ti,hwmods = "timer1"; 384 ti,hwmods = "timer1";
@@ -312,28 +386,28 @@
312 }; 386 };
313 387
314 timer2: timer@49032000 { 388 timer2: timer@49032000 {
315 compatible = "ti,omap2-timer"; 389 compatible = "ti,omap3430-timer";
316 reg = <0x49032000 0x400>; 390 reg = <0x49032000 0x400>;
317 interrupts = <38>; 391 interrupts = <38>;
318 ti,hwmods = "timer2"; 392 ti,hwmods = "timer2";
319 }; 393 };
320 394
321 timer3: timer@49034000 { 395 timer3: timer@49034000 {
322 compatible = "ti,omap2-timer"; 396 compatible = "ti,omap3430-timer";
323 reg = <0x49034000 0x400>; 397 reg = <0x49034000 0x400>;
324 interrupts = <39>; 398 interrupts = <39>;
325 ti,hwmods = "timer3"; 399 ti,hwmods = "timer3";
326 }; 400 };
327 401
328 timer4: timer@49036000 { 402 timer4: timer@49036000 {
329 compatible = "ti,omap2-timer"; 403 compatible = "ti,omap3430-timer";
330 reg = <0x49036000 0x400>; 404 reg = <0x49036000 0x400>;
331 interrupts = <40>; 405 interrupts = <40>;
332 ti,hwmods = "timer4"; 406 ti,hwmods = "timer4";
333 }; 407 };
334 408
335 timer5: timer@49038000 { 409 timer5: timer@49038000 {
336 compatible = "ti,omap2-timer"; 410 compatible = "ti,omap3430-timer";
337 reg = <0x49038000 0x400>; 411 reg = <0x49038000 0x400>;
338 interrupts = <41>; 412 interrupts = <41>;
339 ti,hwmods = "timer5"; 413 ti,hwmods = "timer5";
@@ -341,7 +415,7 @@
341 }; 415 };
342 416
343 timer6: timer@4903a000 { 417 timer6: timer@4903a000 {
344 compatible = "ti,omap2-timer"; 418 compatible = "ti,omap3430-timer";
345 reg = <0x4903a000 0x400>; 419 reg = <0x4903a000 0x400>;
346 interrupts = <42>; 420 interrupts = <42>;
347 ti,hwmods = "timer6"; 421 ti,hwmods = "timer6";
@@ -349,7 +423,7 @@
349 }; 423 };
350 424
351 timer7: timer@4903c000 { 425 timer7: timer@4903c000 {
352 compatible = "ti,omap2-timer"; 426 compatible = "ti,omap3430-timer";
353 reg = <0x4903c000 0x400>; 427 reg = <0x4903c000 0x400>;
354 interrupts = <43>; 428 interrupts = <43>;
355 ti,hwmods = "timer7"; 429 ti,hwmods = "timer7";
@@ -357,7 +431,7 @@
357 }; 431 };
358 432
359 timer8: timer@4903e000 { 433 timer8: timer@4903e000 {
360 compatible = "ti,omap2-timer"; 434 compatible = "ti,omap3430-timer";
361 reg = <0x4903e000 0x400>; 435 reg = <0x4903e000 0x400>;
362 interrupts = <44>; 436 interrupts = <44>;
363 ti,hwmods = "timer8"; 437 ti,hwmods = "timer8";
@@ -366,7 +440,7 @@
366 }; 440 };
367 441
368 timer9: timer@49040000 { 442 timer9: timer@49040000 {
369 compatible = "ti,omap2-timer"; 443 compatible = "ti,omap3430-timer";
370 reg = <0x49040000 0x400>; 444 reg = <0x49040000 0x400>;
371 interrupts = <45>; 445 interrupts = <45>;
372 ti,hwmods = "timer9"; 446 ti,hwmods = "timer9";
@@ -374,7 +448,7 @@
374 }; 448 };
375 449
376 timer10: timer@48086000 { 450 timer10: timer@48086000 {
377 compatible = "ti,omap2-timer"; 451 compatible = "ti,omap3430-timer";
378 reg = <0x48086000 0x400>; 452 reg = <0x48086000 0x400>;
379 interrupts = <46>; 453 interrupts = <46>;
380 ti,hwmods = "timer10"; 454 ti,hwmods = "timer10";
@@ -382,7 +456,7 @@
382 }; 456 };
383 457
384 timer11: timer@48088000 { 458 timer11: timer@48088000 {
385 compatible = "ti,omap2-timer"; 459 compatible = "ti,omap3430-timer";
386 reg = <0x48088000 0x400>; 460 reg = <0x48088000 0x400>;
387 interrupts = <47>; 461 interrupts = <47>;
388 ti,hwmods = "timer11"; 462 ti,hwmods = "timer11";
@@ -390,7 +464,7 @@
390 }; 464 };
391 465
392 timer12: timer@48304000 { 466 timer12: timer@48304000 {
393 compatible = "ti,omap2-timer"; 467 compatible = "ti,omap3430-timer";
394 reg = <0x48304000 0x400>; 468 reg = <0x48304000 0x400>;
395 interrupts = <95>; 469 interrupts = <95>;
396 ti,hwmods = "timer12"; 470 ti,hwmods = "timer12";
@@ -428,5 +502,27 @@
428 }; 502 };
429 }; 503 };
430 504
505 gpmc: gpmc@6e000000 {
506 compatible = "ti,omap3430-gpmc";
507 ti,hwmods = "gpmc";
508 reg = <0x6e000000 0x02d0>;
509 interrupts = <20>;
510 gpmc,num-cs = <8>;
511 gpmc,num-waitpins = <4>;
512 #address-cells = <2>;
513 #size-cells = <1>;
514 };
515
516 usb_otg_hs: usb_otg_hs@480ab000 {
517 compatible = "ti,omap3-musb";
518 reg = <0x480ab000 0x1000>;
519 interrupts = <0 92 0x4>, <0 93 0x4>;
520 interrupt-names = "mc", "dma";
521 ti,hwmods = "usb_otg_hs";
522 usb-phy = <&usb2_phy>;
523 multipoint = <1>;
524 num-eps = <16>;
525 ram-bits = <12>;
526 };
431 }; 527 };
432}; 528};
diff --git a/arch/arm/boot/dts/omap3430-sdp.dts b/arch/arm/boot/dts/omap3430-sdp.dts
new file mode 100644
index 000000000000..144ae43453c4
--- /dev/null
+++ b/arch/arm/boot/dts/omap3430-sdp.dts
@@ -0,0 +1,190 @@
1/*
2 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/dts-v1/;
9
10/include/ "omap34xx.dtsi"
11
12/ {
13 model = "TI OMAP3430 SDP";
14 compatible = "ti,omap3430-sdp", "ti,omap3";
15
16 memory {
17 device_type = "memory";
18 reg = <0x80000000 0x10000000>; /* 256 MB */
19 };
20};
21
22&i2c1 {
23 clock-frequency = <2600000>;
24
25 twl: twl@48 {
26 reg = <0x48>;
27 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
28 };
29};
30
31/include/ "twl4030.dtsi"
32
33&mmc1 {
34 vmmc-supply = <&vmmc1>;
35 vmmc_aux-supply = <&vsim>;
36 bus-width = <8>;
37};
38
39&mmc2 {
40 status = "disabled";
41};
42
43&mmc3 {
44 status = "disabled";
45};
46
47&gpmc {
48 ranges = <0 0 0x10000000 0x08000000>,
49 <1 0 0x28000000 0x08000000>,
50 <2 0 0x20000000 0x10000000>;
51
52 nor@0,0 {
53 compatible = "cfi-flash";
54 linux,mtd-name= "intel,pf48f6000m0y1be";
55 #address-cells = <1>;
56 #size-cells = <1>;
57 reg = <0 0 0x08000000>;
58 bank-width = <2>;
59
60 gpmc,mux-add-data = <2>;
61 gpmc,cs-on-ns = <0>;
62 gpmc,cs-rd-off-ns = <186>;
63 gpmc,cs-wr-off-ns = <186>;
64 gpmc,adv-on-ns = <12>;
65 gpmc,adv-rd-off-ns = <48>;
66 gpmc,adv-wr-off-ns = <48>;
67 gpmc,oe-on-ns = <54>;
68 gpmc,oe-off-ns = <168>;
69 gpmc,we-on-ns = <54>;
70 gpmc,we-off-ns = <168>;
71 gpmc,rd-cycle-ns = <186>;
72 gpmc,wr-cycle-ns = <186>;
73 gpmc,access-ns = <114>;
74 gpmc,page-burst-access-ns = <6>;
75 gpmc,bus-turnaround-ns = <12>;
76 gpmc,cycle2cycle-delay-ns = <18>;
77 gpmc,wr-data-mux-bus-ns = <90>;
78 gpmc,wr-access-ns = <186>;
79 gpmc,cycle2cycle-samecsen;
80 gpmc,cycle2cycle-diffcsen;
81
82 partition@0 {
83 label = "bootloader-nor";
84 reg = <0 0x40000>;
85 };
86 partition@0x40000 {
87 label = "params-nor";
88 reg = <0x40000 0x40000>;
89 };
90 partition@0x80000 {
91 label = "kernel-nor";
92 reg = <0x80000 0x200000>;
93 };
94 partition@0x280000 {
95 label = "filesystem-nor";
96 reg = <0x240000 0x7d80000>;
97 };
98 };
99
100 nand@1,0 {
101 linux,mtd-name= "micron,mt29f1g08abb";
102 #address-cells = <1>;
103 #size-cells = <1>;
104 reg = <1 0 0x08000000>;
105 nand-bus-width = <8>;
106
107 ti,nand-ecc-opt = "sw";
108 gpmc,device-nand;
109 gpmc,cs-on-ns = <0>;
110 gpmc,cs-rd-off-ns = <36>;
111 gpmc,cs-wr-off-ns = <36>;
112 gpmc,adv-on-ns = <6>;
113 gpmc,adv-rd-off-ns = <24>;
114 gpmc,adv-wr-off-ns = <36>;
115 gpmc,oe-on-ns = <6>;
116 gpmc,oe-off-ns = <48>;
117 gpmc,we-on-ns = <6>;
118 gpmc,we-off-ns = <30>;
119 gpmc,rd-cycle-ns = <72>;
120 gpmc,wr-cycle-ns = <72>;
121 gpmc,access-ns = <54>;
122 gpmc,wr-access-ns = <30>;
123
124 partition@0 {
125 label = "xloader-nand";
126 reg = <0 0x80000>;
127 };
128 partition@0x80000 {
129 label = "bootloader-nand";
130 reg = <0x80000 0x140000>;
131 };
132 partition@0x1c0000 {
133 label = "params-nand";
134 reg = <0x1c0000 0xc0000>;
135 };
136 partition@0x280000 {
137 label = "kernel-nand";
138 reg = <0x280000 0x500000>;
139 };
140 partition@0x780000 {
141 label = "filesystem-nand";
142 reg = <0x780000 0x7880000>;
143 };
144 };
145
146 onenand@2,0 {
147 linux,mtd-name= "samsung,kfm2g16q2m-deb8";
148 #address-cells = <1>;
149 #size-cells = <1>;
150 reg = <2 0 0x10000000>;
151
152 gpmc,device-width = <2>;
153 gpmc,mux-add-data = <2>;
154 gpmc,cs-on-ns = <0>;
155 gpmc,cs-rd-off-ns = <84>;
156 gpmc,cs-wr-off-ns = <72>;
157 gpmc,adv-on-ns = <0>;
158 gpmc,adv-rd-off-ns = <18>;
159 gpmc,adv-wr-off-ns = <18>;
160 gpmc,oe-on-ns = <30>;
161 gpmc,oe-off-ns = <84>;
162 gpmc,we-on-ns = <0>;
163 gpmc,we-off-ns = <42>;
164 gpmc,rd-cycle-ns = <108>;
165 gpmc,wr-cycle-ns = <96>;
166 gpmc,access-ns = <78>;
167 gpmc,wr-data-mux-bus-ns = <30>;
168
169 partition@0 {
170 label = "xloader-onenand";
171 reg = <0 0x80000>;
172 };
173 partition@0x80000 {
174 label = "bootloader-onenand";
175 reg = <0x80000 0x40000>;
176 };
177 partition@0xc0000 {
178 label = "params-onenand";
179 reg = <0xc0000 0x20000>;
180 };
181 partition@0xe0000 {
182 label = "kernel-onenand";
183 reg = <0xe0000 0x200000>;
184 };
185 partition@0x2e0000 {
186 label = "filesystem-onenand";
187 reg = <0x2e0000 0xfd20000>;
188 };
189 };
190};
diff --git a/arch/arm/boot/dts/omap34xx.dtsi b/arch/arm/boot/dts/omap34xx.dtsi
new file mode 100644
index 000000000000..75ed4ae2e631
--- /dev/null
+++ b/arch/arm/boot/dts/omap34xx.dtsi
@@ -0,0 +1,28 @@
1/*
2 * Device Tree Source for OMAP34xx/OMAP35xx SoC
3 *
4 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/include/ "omap3.dtsi"
12
13/ {
14 cpus {
15 cpu@0 {
16 /* OMAP343x/OMAP35xx variants OPP1-5 */
17 operating-points = <
18 /* kHz uV */
19 125000 975000
20 250000 1075000
21 500000 1200000
22 550000 1270000
23 600000 1350000
24 >;
25 clock-latency = <300000>; /* From legacy driver */
26 };
27 };
28};
diff --git a/arch/arm/boot/dts/omap36xx.dtsi b/arch/arm/boot/dts/omap36xx.dtsi
index 96bf0287cb9f..b89233e43b0f 100644
--- a/arch/arm/boot/dts/omap36xx.dtsi
+++ b/arch/arm/boot/dts/omap36xx.dtsi
@@ -15,6 +15,19 @@
15 serial3 = &uart4; 15 serial3 = &uart4;
16 }; 16 };
17 17
18 cpus {
19 /* OMAP3630/OMAP37xx 'standard device' variants OPP50 to OPP130 */
20 cpu@0 {
21 operating-points = <
22 /* kHz uV */
23 300000 975000
24 600000 1075000
25 800000 1200000
26 >;
27 clock-latency = <300000>; /* From legacy driver */
28 };
29 };
30
18 ocp { 31 ocp {
19 uart4: serial@49042000 { 32 uart4: serial@49042000 {
20 compatible = "ti,omap3-uart"; 33 compatible = "ti,omap3-uart";
diff --git a/arch/arm/boot/dts/omap4-panda-a4.dts b/arch/arm/boot/dts/omap4-panda-a4.dts
index 75466d2abfb5..e30cdf0f5ac1 100644
--- a/arch/arm/boot/dts/omap4-panda-a4.dts
+++ b/arch/arm/boot/dts/omap4-panda-a4.dts
@@ -5,7 +5,10 @@
5 * it under the terms of the GNU General Public License version 2 as 5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8/include/ "omap4-panda.dts" 8/dts-v1/;
9
10/include/ "omap443x.dtsi"
11/include/ "omap4-panda-common.dtsi"
9 12
10/* Pandaboard Rev A4+ have external pullups on SCL & SDA */ 13/* Pandaboard Rev A4+ have external pullups on SCL & SDA */
11&dss_hdmi_pins { 14&dss_hdmi_pins {
diff --git a/arch/arm/boot/dts/omap4-panda-common.dtsi b/arch/arm/boot/dts/omap4-panda-common.dtsi
new file mode 100644
index 000000000000..03bd60deb52b
--- /dev/null
+++ b/arch/arm/boot/dts/omap4-panda-common.dtsi
@@ -0,0 +1,251 @@
1/*
2 * Copyright (C) 2011-2013 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/include/ "elpida_ecb240abacn.dtsi"
9
10/ {
11 model = "TI OMAP4 PandaBoard";
12 compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
13
14 memory {
15 device_type = "memory";
16 reg = <0x80000000 0x40000000>; /* 1 GB */
17 };
18
19 leds {
20 compatible = "gpio-leds";
21 heartbeat {
22 label = "pandaboard::status1";
23 gpios = <&gpio1 7 0>;
24 linux,default-trigger = "heartbeat";
25 };
26
27 mmc {
28 label = "pandaboard::status2";
29 gpios = <&gpio1 8 0>;
30 linux,default-trigger = "mmc0";
31 };
32 };
33
34 sound: sound {
35 compatible = "ti,abe-twl6040";
36 ti,model = "PandaBoard";
37
38 ti,mclk-freq = <38400000>;
39
40 ti,mcpdm = <&mcpdm>;
41
42 ti,twl6040 = <&twl6040>;
43
44 /* Audio routing */
45 ti,audio-routing =
46 "Headset Stereophone", "HSOL",
47 "Headset Stereophone", "HSOR",
48 "Ext Spk", "HFL",
49 "Ext Spk", "HFR",
50 "Line Out", "AUXL",
51 "Line Out", "AUXR",
52 "HSMIC", "Headset Mic",
53 "Headset Mic", "Headset Mic Bias",
54 "AFML", "Line In",
55 "AFMR", "Line In";
56 };
57};
58
59&omap4_pmx_core {
60 pinctrl-names = "default";
61 pinctrl-0 = <
62 &twl6040_pins
63 &mcpdm_pins
64 &mcbsp1_pins
65 &dss_hdmi_pins
66 &tpd12s015_pins
67 >;
68
69 twl6040_pins: pinmux_twl6040_pins {
70 pinctrl-single,pins = <
71 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
72 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
73 >;
74 };
75
76 mcpdm_pins: pinmux_mcpdm_pins {
77 pinctrl-single,pins = <
78 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
79 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
80 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
81 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
82 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
83 >;
84 };
85
86 mcbsp1_pins: pinmux_mcbsp1_pins {
87 pinctrl-single,pins = <
88 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
89 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
90 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
91 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
92 >;
93 };
94
95 dss_hdmi_pins: pinmux_dss_hdmi_pins {
96 pinctrl-single,pins = <
97 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
98 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
99 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
100 >;
101 };
102
103 tpd12s015_pins: pinmux_tpd12s015_pins {
104 pinctrl-single,pins = <
105 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */
106 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
107 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
108 >;
109 };
110
111 i2c1_pins: pinmux_i2c1_pins {
112 pinctrl-single,pins = <
113 0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
114 0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
115 >;
116 };
117
118 i2c2_pins: pinmux_i2c2_pins {
119 pinctrl-single,pins = <
120 0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */
121 0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */
122 >;
123 };
124
125 i2c3_pins: pinmux_i2c3_pins {
126 pinctrl-single,pins = <
127 0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */
128 0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */
129 >;
130 };
131
132 i2c4_pins: pinmux_i2c4_pins {
133 pinctrl-single,pins = <
134 0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */
135 0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */
136 >;
137 };
138};
139
140&i2c1 {
141 pinctrl-names = "default";
142 pinctrl-0 = <&i2c1_pins>;
143
144 clock-frequency = <400000>;
145
146 twl: twl@48 {
147 reg = <0x48>;
148 /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
149 interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
150 interrupt-parent = <&gic>;
151 };
152
153 twl6040: twl@4b {
154 compatible = "ti,twl6040";
155 reg = <0x4b>;
156 /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
157 interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
158 interrupt-parent = <&gic>;
159 ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */
160
161 vio-supply = <&v1v8>;
162 v2v1-supply = <&v2v1>;
163 enable-active-high;
164 };
165};
166
167/include/ "twl6030.dtsi"
168
169&i2c2 {
170 pinctrl-names = "default";
171 pinctrl-0 = <&i2c2_pins>;
172
173 clock-frequency = <400000>;
174};
175
176&i2c3 {
177 pinctrl-names = "default";
178 pinctrl-0 = <&i2c3_pins>;
179
180 clock-frequency = <100000>;
181
182 /*
183 * Display monitor features are burnt in their EEPROM as EDID data.
184 * The EEPROM is connected as I2C slave device.
185 */
186 eeprom@50 {
187 compatible = "ti,eeprom";
188 reg = <0x50>;
189 };
190};
191
192&i2c4 {
193 pinctrl-names = "default";
194 pinctrl-0 = <&i2c4_pins>;
195
196 clock-frequency = <400000>;
197};
198
199&mmc1 {
200 vmmc-supply = <&vmmc>;
201 bus-width = <8>;
202};
203
204&mmc2 {
205 status = "disabled";
206};
207
208&mmc3 {
209 status = "disabled";
210};
211
212&mmc4 {
213 status = "disabled";
214};
215
216&mmc5 {
217 ti,non-removable;
218 bus-width = <4>;
219};
220
221&emif1 {
222 cs1-used;
223 device-handle = <&elpida_ECB240ABACN>;
224};
225
226&emif2 {
227 cs1-used;
228 device-handle = <&elpida_ECB240ABACN>;
229};
230
231&mcbsp2 {
232 status = "disabled";
233};
234
235&mcbsp3 {
236 status = "disabled";
237};
238
239&dmic {
240 status = "disabled";
241};
242
243&twl_usb_comparator {
244 usb-supply = <&vusb>;
245};
246
247&usb_otg_hs {
248 interface-type = <1>;
249 mode = <3>;
250 power = <50>;
251};
diff --git a/arch/arm/boot/dts/omap4-panda-es.dts b/arch/arm/boot/dts/omap4-panda-es.dts
index 73bc1a67e444..f1d8c217ce12 100644
--- a/arch/arm/boot/dts/omap4-panda-es.dts
+++ b/arch/arm/boot/dts/omap4-panda-es.dts
@@ -5,7 +5,10 @@
5 * it under the terms of the GNU General Public License version 2 as 5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8/include/ "omap4-panda.dts" 8/dts-v1/;
9
10/include/ "omap4460.dtsi"
11/include/ "omap4-panda-common.dtsi"
9 12
10/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */ 13/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */
11&sound { 14&sound {
diff --git a/arch/arm/boot/dts/omap4-panda.dts b/arch/arm/boot/dts/omap4-panda.dts
index 4122efe31cfd..f8b221f0168e 100644
--- a/arch/arm/boot/dts/omap4-panda.dts
+++ b/arch/arm/boot/dts/omap4-panda.dts
@@ -7,202 +7,5 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap4.dtsi" 10/include/ "omap443x.dtsi"
11/include/ "elpida_ecb240abacn.dtsi" 11/include/ "omap4-panda-common.dtsi"
12
13/ {
14 model = "TI OMAP4 PandaBoard";
15 compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
16
17 memory {
18 device_type = "memory";
19 reg = <0x80000000 0x40000000>; /* 1 GB */
20 };
21
22 leds {
23 compatible = "gpio-leds";
24 heartbeat {
25 label = "pandaboard::status1";
26 gpios = <&gpio1 7 0>;
27 linux,default-trigger = "heartbeat";
28 };
29
30 mmc {
31 label = "pandaboard::status2";
32 gpios = <&gpio1 8 0>;
33 linux,default-trigger = "mmc0";
34 };
35 };
36
37 sound: sound {
38 compatible = "ti,abe-twl6040";
39 ti,model = "PandaBoard";
40
41 ti,mclk-freq = <38400000>;
42
43 ti,mcpdm = <&mcpdm>;
44
45 ti,twl6040 = <&twl6040>;
46
47 /* Audio routing */
48 ti,audio-routing =
49 "Headset Stereophone", "HSOL",
50 "Headset Stereophone", "HSOR",
51 "Ext Spk", "HFL",
52 "Ext Spk", "HFR",
53 "Line Out", "AUXL",
54 "Line Out", "AUXR",
55 "HSMIC", "Headset Mic",
56 "Headset Mic", "Headset Mic Bias",
57 "AFML", "Line In",
58 "AFMR", "Line In";
59 };
60};
61
62&omap4_pmx_core {
63 pinctrl-names = "default";
64 pinctrl-0 = <
65 &twl6040_pins
66 &mcpdm_pins
67 &mcbsp1_pins
68 &dss_hdmi_pins
69 &tpd12s015_pins
70 >;
71
72 twl6040_pins: pinmux_twl6040_pins {
73 pinctrl-single,pins = <
74 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
75 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
76 >;
77 };
78
79 mcpdm_pins: pinmux_mcpdm_pins {
80 pinctrl-single,pins = <
81 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
82 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
83 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
84 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
85 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
86 >;
87 };
88
89 mcbsp1_pins: pinmux_mcbsp1_pins {
90 pinctrl-single,pins = <
91 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
92 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
93 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
94 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
95 >;
96 };
97
98 dss_hdmi_pins: pinmux_dss_hdmi_pins {
99 pinctrl-single,pins = <
100 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
101 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
102 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
103 >;
104 };
105
106 tpd12s015_pins: pinmux_tpd12s015_pins {
107 pinctrl-single,pins = <
108 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */
109 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
110 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
111 >;
112 };
113};
114
115&i2c1 {
116 clock-frequency = <400000>;
117
118 twl: twl@48 {
119 reg = <0x48>;
120 /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
121 interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
122 interrupt-parent = <&gic>;
123 };
124
125 twl6040: twl@4b {
126 compatible = "ti,twl6040";
127 reg = <0x4b>;
128 /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
129 interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
130 interrupt-parent = <&gic>;
131 ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */
132
133 vio-supply = <&v1v8>;
134 v2v1-supply = <&v2v1>;
135 enable-active-high;
136 };
137};
138
139/include/ "twl6030.dtsi"
140
141&i2c2 {
142 clock-frequency = <400000>;
143};
144
145&i2c3 {
146 clock-frequency = <100000>;
147
148 /*
149 * Display monitor features are burnt in their EEPROM as EDID data.
150 * The EEPROM is connected as I2C slave device.
151 */
152 eeprom@50 {
153 compatible = "ti,eeprom";
154 reg = <0x50>;
155 };
156};
157
158&i2c4 {
159 clock-frequency = <400000>;
160};
161
162&mmc1 {
163 vmmc-supply = <&vmmc>;
164 bus-width = <8>;
165};
166
167&mmc2 {
168 status = "disabled";
169};
170
171&mmc3 {
172 status = "disabled";
173};
174
175&mmc4 {
176 status = "disabled";
177};
178
179&mmc5 {
180 ti,non-removable;
181 bus-width = <4>;
182};
183
184&emif1 {
185 cs1-used;
186 device-handle = <&elpida_ECB240ABACN>;
187};
188
189&emif2 {
190 cs1-used;
191 device-handle = <&elpida_ECB240ABACN>;
192};
193
194&mcbsp2 {
195 status = "disabled";
196};
197
198&mcbsp3 {
199 status = "disabled";
200};
201
202&dmic {
203 status = "disabled";
204};
205
206&twl_usb_comparator {
207 usb-supply = <&vusb>;
208};
diff --git a/arch/arm/boot/dts/omap4-sdp.dts b/arch/arm/boot/dts/omap4-sdp.dts
index 43e5258a9372..c387bdc1b1d1 100644
--- a/arch/arm/boot/dts/omap4-sdp.dts
+++ b/arch/arm/boot/dts/omap4-sdp.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap4.dtsi" 10/include/ "omap443x.dtsi"
11/include/ "elpida_ecb240abacn.dtsi" 11/include/ "elpida_ecb240abacn.dtsi"
12 12
13/ { 13/ {
@@ -80,6 +80,32 @@
80 }; 80 };
81 }; 81 };
82 82
83 pwmleds {
84 compatible = "pwm-leds";
85 kpad {
86 label = "omap4::keypad";
87 pwms = <&twl_pwm 0 7812500>;
88 max-brightness = <127>;
89 };
90
91 charging {
92 label = "omap4:green:chrg";
93 pwms = <&twl_pwmled 0 7812500>;
94 max-brightness = <255>;
95 };
96 };
97
98 backlight {
99 compatible = "pwm-backlight";
100 pwms = <&twl_pwm 1 7812500>;
101 brightness-levels = <
102 0 10 20 30 40
103 50 60 70 80 90
104 100 110 120 127
105 >;
106 default-brightness-level = <13>;
107 };
108
83 sound { 109 sound {
84 compatible = "ti,abe-twl6040"; 110 compatible = "ti,abe-twl6040";
85 ti,model = "SDP4430"; 111 ti,model = "SDP4430";
@@ -212,9 +238,40 @@
212 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ 238 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
213 >; 239 >;
214 }; 240 };
241
242 i2c1_pins: pinmux_i2c1_pins {
243 pinctrl-single,pins = <
244 0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
245 0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
246 >;
247 };
248
249 i2c2_pins: pinmux_i2c2_pins {
250 pinctrl-single,pins = <
251 0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */
252 0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */
253 >;
254 };
255
256 i2c3_pins: pinmux_i2c3_pins {
257 pinctrl-single,pins = <
258 0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */
259 0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */
260 >;
261 };
262
263 i2c4_pins: pinmux_i2c4_pins {
264 pinctrl-single,pins = <
265 0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */
266 0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */
267 >;
268 };
215}; 269};
216 270
217&i2c1 { 271&i2c1 {
272 pinctrl-names = "default";
273 pinctrl-0 = <&i2c1_pins>;
274
218 clock-frequency = <400000>; 275 clock-frequency = <400000>;
219 276
220 twl: twl@48 { 277 twl: twl@48 {
@@ -253,10 +310,16 @@
253/include/ "twl6030.dtsi" 310/include/ "twl6030.dtsi"
254 311
255&i2c2 { 312&i2c2 {
313 pinctrl-names = "default";
314 pinctrl-0 = <&i2c2_pins>;
315
256 clock-frequency = <400000>; 316 clock-frequency = <400000>;
257}; 317};
258 318
259&i2c3 { 319&i2c3 {
320 pinctrl-names = "default";
321 pinctrl-0 = <&i2c3_pins>;
322
260 clock-frequency = <400000>; 323 clock-frequency = <400000>;
261 324
262 /* 325 /*
@@ -279,6 +342,9 @@
279}; 342};
280 343
281&i2c4 { 344&i2c4 {
345 pinctrl-names = "default";
346 pinctrl-0 = <&i2c4_pins>;
347
282 clock-frequency = <400000>; 348 clock-frequency = <400000>;
283 349
284 /* 350 /*
@@ -428,3 +494,9 @@
428&twl_usb_comparator { 494&twl_usb_comparator {
429 usb-supply = <&vusb>; 495 usb-supply = <&vusb>;
430}; 496};
497
498&usb_otg_hs {
499 interface-type = <1>;
500 mode = <3>;
501 power = <50>;
502};
diff --git a/arch/arm/boot/dts/omap4-var-som.dts b/arch/arm/boot/dts/omap4-var-som.dts
index 6601e6af6092..222a413c2c51 100644
--- a/arch/arm/boot/dts/omap4-var-som.dts
+++ b/arch/arm/boot/dts/omap4-var-som.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap4.dtsi" 10/include/ "omap443x.dtsi"
11 11
12/ { 12/ {
13 model = "Variscite OMAP4 SOM"; 13 model = "Variscite OMAP4 SOM";
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index b7db1a2b6ca7..2a5642882c8a 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -94,6 +94,11 @@
94 #size-cells = <1>; 94 #size-cells = <1>;
95 ranges; 95 ranges;
96 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 96 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
97 reg = <0x44000000 0x1000>,
98 <0x44800000 0x2000>,
99 <0x45000000 0x1000>;
100 interrupts = <0 9 0x4>,
101 <0 10 0x4>;
97 102
98 counter32k: counter@4a304000 { 103 counter32k: counter@4a304000 {
99 compatible = "ti,omap-counter32k"; 104 compatible = "ti,omap-counter32k";
@@ -118,15 +123,28 @@
118 pinctrl-single,function-mask = <0x7fff>; 123 pinctrl-single,function-mask = <0x7fff>;
119 }; 124 };
120 125
126 sdma: dma-controller@4a056000 {
127 compatible = "ti,omap4430-sdma";
128 reg = <0x4a056000 0x1000>;
129 interrupts = <0 12 0x4>,
130 <0 13 0x4>,
131 <0 14 0x4>,
132 <0 15 0x4>;
133 #dma-cells = <1>;
134 #dma-channels = <32>;
135 #dma-requests = <127>;
136 };
137
121 gpio1: gpio@4a310000 { 138 gpio1: gpio@4a310000 {
122 compatible = "ti,omap4-gpio"; 139 compatible = "ti,omap4-gpio";
123 reg = <0x4a310000 0x200>; 140 reg = <0x4a310000 0x200>;
124 interrupts = <0 29 0x4>; 141 interrupts = <0 29 0x4>;
125 ti,hwmods = "gpio1"; 142 ti,hwmods = "gpio1";
143 ti,gpio-always-on;
126 gpio-controller; 144 gpio-controller;
127 #gpio-cells = <2>; 145 #gpio-cells = <2>;
128 interrupt-controller; 146 interrupt-controller;
129 #interrupt-cells = <1>; 147 #interrupt-cells = <2>;
130 }; 148 };
131 149
132 gpio2: gpio@48055000 { 150 gpio2: gpio@48055000 {
@@ -137,7 +155,7 @@
137 gpio-controller; 155 gpio-controller;
138 #gpio-cells = <2>; 156 #gpio-cells = <2>;
139 interrupt-controller; 157 interrupt-controller;
140 #interrupt-cells = <1>; 158 #interrupt-cells = <2>;
141 }; 159 };
142 160
143 gpio3: gpio@48057000 { 161 gpio3: gpio@48057000 {
@@ -148,7 +166,7 @@
148 gpio-controller; 166 gpio-controller;
149 #gpio-cells = <2>; 167 #gpio-cells = <2>;
150 interrupt-controller; 168 interrupt-controller;
151 #interrupt-cells = <1>; 169 #interrupt-cells = <2>;
152 }; 170 };
153 171
154 gpio4: gpio@48059000 { 172 gpio4: gpio@48059000 {
@@ -159,7 +177,7 @@
159 gpio-controller; 177 gpio-controller;
160 #gpio-cells = <2>; 178 #gpio-cells = <2>;
161 interrupt-controller; 179 interrupt-controller;
162 #interrupt-cells = <1>; 180 #interrupt-cells = <2>;
163 }; 181 };
164 182
165 gpio5: gpio@4805b000 { 183 gpio5: gpio@4805b000 {
@@ -170,7 +188,7 @@
170 gpio-controller; 188 gpio-controller;
171 #gpio-cells = <2>; 189 #gpio-cells = <2>;
172 interrupt-controller; 190 interrupt-controller;
173 #interrupt-cells = <1>; 191 #interrupt-cells = <2>;
174 }; 192 };
175 193
176 gpio6: gpio@4805d000 { 194 gpio6: gpio@4805d000 {
@@ -181,7 +199,18 @@
181 gpio-controller; 199 gpio-controller;
182 #gpio-cells = <2>; 200 #gpio-cells = <2>;
183 interrupt-controller; 201 interrupt-controller;
184 #interrupt-cells = <1>; 202 #interrupt-cells = <2>;
203 };
204
205 gpmc: gpmc@50000000 {
206 compatible = "ti,omap4430-gpmc";
207 reg = <0x50000000 0x1000>;
208 #address-cells = <2>;
209 #size-cells = <1>;
210 interrupts = <0 20 0x4>;
211 gpmc,num-cs = <8>;
212 gpmc,num-waitpins = <4>;
213 ti,hwmods = "gpmc";
185 }; 214 };
186 215
187 uart1: serial@4806a000 { 216 uart1: serial@4806a000 {
@@ -260,6 +289,16 @@
260 #size-cells = <0>; 289 #size-cells = <0>;
261 ti,hwmods = "mcspi1"; 290 ti,hwmods = "mcspi1";
262 ti,spi-num-cs = <4>; 291 ti,spi-num-cs = <4>;
292 dmas = <&sdma 35>,
293 <&sdma 36>,
294 <&sdma 37>,
295 <&sdma 38>,
296 <&sdma 39>,
297 <&sdma 40>,
298 <&sdma 41>,
299 <&sdma 42>;
300 dma-names = "tx0", "rx0", "tx1", "rx1",
301 "tx2", "rx2", "tx3", "rx3";
263 }; 302 };
264 303
265 mcspi2: spi@4809a000 { 304 mcspi2: spi@4809a000 {
@@ -270,6 +309,11 @@
270 #size-cells = <0>; 309 #size-cells = <0>;
271 ti,hwmods = "mcspi2"; 310 ti,hwmods = "mcspi2";
272 ti,spi-num-cs = <2>; 311 ti,spi-num-cs = <2>;
312 dmas = <&sdma 43>,
313 <&sdma 44>,
314 <&sdma 45>,
315 <&sdma 46>;
316 dma-names = "tx0", "rx0", "tx1", "rx1";
273 }; 317 };
274 318
275 mcspi3: spi@480b8000 { 319 mcspi3: spi@480b8000 {
@@ -280,6 +324,8 @@
280 #size-cells = <0>; 324 #size-cells = <0>;
281 ti,hwmods = "mcspi3"; 325 ti,hwmods = "mcspi3";
282 ti,spi-num-cs = <2>; 326 ti,spi-num-cs = <2>;
327 dmas = <&sdma 15>, <&sdma 16>;
328 dma-names = "tx0", "rx0";
283 }; 329 };
284 330
285 mcspi4: spi@480ba000 { 331 mcspi4: spi@480ba000 {
@@ -290,6 +336,8 @@
290 #size-cells = <0>; 336 #size-cells = <0>;
291 ti,hwmods = "mcspi4"; 337 ti,hwmods = "mcspi4";
292 ti,spi-num-cs = <1>; 338 ti,spi-num-cs = <1>;
339 dmas = <&sdma 70>, <&sdma 71>;
340 dma-names = "tx0", "rx0";
293 }; 341 };
294 342
295 mmc1: mmc@4809c000 { 343 mmc1: mmc@4809c000 {
@@ -299,6 +347,8 @@
299 ti,hwmods = "mmc1"; 347 ti,hwmods = "mmc1";
300 ti,dual-volt; 348 ti,dual-volt;
301 ti,needs-special-reset; 349 ti,needs-special-reset;
350 dmas = <&sdma 61>, <&sdma 62>;
351 dma-names = "tx", "rx";
302 }; 352 };
303 353
304 mmc2: mmc@480b4000 { 354 mmc2: mmc@480b4000 {
@@ -307,6 +357,8 @@
307 interrupts = <0 86 0x4>; 357 interrupts = <0 86 0x4>;
308 ti,hwmods = "mmc2"; 358 ti,hwmods = "mmc2";
309 ti,needs-special-reset; 359 ti,needs-special-reset;
360 dmas = <&sdma 47>, <&sdma 48>;
361 dma-names = "tx", "rx";
310 }; 362 };
311 363
312 mmc3: mmc@480ad000 { 364 mmc3: mmc@480ad000 {
@@ -315,6 +367,8 @@
315 interrupts = <0 94 0x4>; 367 interrupts = <0 94 0x4>;
316 ti,hwmods = "mmc3"; 368 ti,hwmods = "mmc3";
317 ti,needs-special-reset; 369 ti,needs-special-reset;
370 dmas = <&sdma 77>, <&sdma 78>;
371 dma-names = "tx", "rx";
318 }; 372 };
319 373
320 mmc4: mmc@480d1000 { 374 mmc4: mmc@480d1000 {
@@ -323,6 +377,8 @@
323 interrupts = <0 96 0x4>; 377 interrupts = <0 96 0x4>;
324 ti,hwmods = "mmc4"; 378 ti,hwmods = "mmc4";
325 ti,needs-special-reset; 379 ti,needs-special-reset;
380 dmas = <&sdma 57>, <&sdma 58>;
381 dma-names = "tx", "rx";
326 }; 382 };
327 383
328 mmc5: mmc@480d5000 { 384 mmc5: mmc@480d5000 {
@@ -331,6 +387,8 @@
331 interrupts = <0 59 0x4>; 387 interrupts = <0 59 0x4>;
332 ti,hwmods = "mmc5"; 388 ti,hwmods = "mmc5";
333 ti,needs-special-reset; 389 ti,needs-special-reset;
390 dmas = <&sdma 59>, <&sdma 60>;
391 dma-names = "tx", "rx";
334 }; 392 };
335 393
336 wdt2: wdt@4a314000 { 394 wdt2: wdt@4a314000 {
@@ -347,6 +405,9 @@
347 reg-names = "mpu", "dma"; 405 reg-names = "mpu", "dma";
348 interrupts = <0 112 0x4>; 406 interrupts = <0 112 0x4>;
349 ti,hwmods = "mcpdm"; 407 ti,hwmods = "mcpdm";
408 dmas = <&sdma 65>,
409 <&sdma 66>;
410 dma-names = "up_link", "dn_link";
350 }; 411 };
351 412
352 dmic: dmic@4012e000 { 413 dmic: dmic@4012e000 {
@@ -356,6 +417,8 @@
356 reg-names = "mpu", "dma"; 417 reg-names = "mpu", "dma";
357 interrupts = <0 114 0x4>; 418 interrupts = <0 114 0x4>;
358 ti,hwmods = "dmic"; 419 ti,hwmods = "dmic";
420 dmas = <&sdma 67>;
421 dma-names = "up_link";
359 }; 422 };
360 423
361 mcbsp1: mcbsp@40122000 { 424 mcbsp1: mcbsp@40122000 {
@@ -367,6 +430,9 @@
367 interrupt-names = "common"; 430 interrupt-names = "common";
368 ti,buffer-size = <128>; 431 ti,buffer-size = <128>;
369 ti,hwmods = "mcbsp1"; 432 ti,hwmods = "mcbsp1";
433 dmas = <&sdma 33>,
434 <&sdma 34>;
435 dma-names = "tx", "rx";
370 }; 436 };
371 437
372 mcbsp2: mcbsp@40124000 { 438 mcbsp2: mcbsp@40124000 {
@@ -378,6 +444,9 @@
378 interrupt-names = "common"; 444 interrupt-names = "common";
379 ti,buffer-size = <128>; 445 ti,buffer-size = <128>;
380 ti,hwmods = "mcbsp2"; 446 ti,hwmods = "mcbsp2";
447 dmas = <&sdma 17>,
448 <&sdma 18>;
449 dma-names = "tx", "rx";
381 }; 450 };
382 451
383 mcbsp3: mcbsp@40126000 { 452 mcbsp3: mcbsp@40126000 {
@@ -389,6 +458,9 @@
389 interrupt-names = "common"; 458 interrupt-names = "common";
390 ti,buffer-size = <128>; 459 ti,buffer-size = <128>;
391 ti,hwmods = "mcbsp3"; 460 ti,hwmods = "mcbsp3";
461 dmas = <&sdma 19>,
462 <&sdma 20>;
463 dma-names = "tx", "rx";
392 }; 464 };
393 465
394 mcbsp4: mcbsp@48096000 { 466 mcbsp4: mcbsp@48096000 {
@@ -399,6 +471,9 @@
399 interrupt-names = "common"; 471 interrupt-names = "common";
400 ti,buffer-size = <128>; 472 ti,buffer-size = <128>;
401 ti,hwmods = "mcbsp4"; 473 ti,hwmods = "mcbsp4";
474 dmas = <&sdma 31>,
475 <&sdma 32>;
476 dma-names = "tx", "rx";
402 }; 477 };
403 478
404 keypad: keypad@4a31c000 { 479 keypad: keypad@4a31c000 {
@@ -438,10 +513,15 @@
438 #size-cells = <1>; 513 #size-cells = <1>;
439 ranges; 514 ranges;
440 ti,hwmods = "ocp2scp_usb_phy"; 515 ti,hwmods = "ocp2scp_usb_phy";
516 usb2_phy: usb2phy@4a0ad080 {
517 compatible = "ti,omap-usb2";
518 reg = <0x4a0ad080 0x58>;
519 ctrl-module = <&omap_control_usb>;
520 };
441 }; 521 };
442 522
443 timer1: timer@4a318000 { 523 timer1: timer@4a318000 {
444 compatible = "ti,omap2-timer"; 524 compatible = "ti,omap3430-timer";
445 reg = <0x4a318000 0x80>; 525 reg = <0x4a318000 0x80>;
446 interrupts = <0 37 0x4>; 526 interrupts = <0 37 0x4>;
447 ti,hwmods = "timer1"; 527 ti,hwmods = "timer1";
@@ -449,28 +529,28 @@
449 }; 529 };
450 530
451 timer2: timer@48032000 { 531 timer2: timer@48032000 {
452 compatible = "ti,omap2-timer"; 532 compatible = "ti,omap3430-timer";
453 reg = <0x48032000 0x80>; 533 reg = <0x48032000 0x80>;
454 interrupts = <0 38 0x4>; 534 interrupts = <0 38 0x4>;
455 ti,hwmods = "timer2"; 535 ti,hwmods = "timer2";
456 }; 536 };
457 537
458 timer3: timer@48034000 { 538 timer3: timer@48034000 {
459 compatible = "ti,omap2-timer"; 539 compatible = "ti,omap4430-timer";
460 reg = <0x48034000 0x80>; 540 reg = <0x48034000 0x80>;
461 interrupts = <0 39 0x4>; 541 interrupts = <0 39 0x4>;
462 ti,hwmods = "timer3"; 542 ti,hwmods = "timer3";
463 }; 543 };
464 544
465 timer4: timer@48036000 { 545 timer4: timer@48036000 {
466 compatible = "ti,omap2-timer"; 546 compatible = "ti,omap4430-timer";
467 reg = <0x48036000 0x80>; 547 reg = <0x48036000 0x80>;
468 interrupts = <0 40 0x4>; 548 interrupts = <0 40 0x4>;
469 ti,hwmods = "timer4"; 549 ti,hwmods = "timer4";
470 }; 550 };
471 551
472 timer5: timer@40138000 { 552 timer5: timer@40138000 {
473 compatible = "ti,omap2-timer"; 553 compatible = "ti,omap4430-timer";
474 reg = <0x40138000 0x80>, 554 reg = <0x40138000 0x80>,
475 <0x49038000 0x80>; 555 <0x49038000 0x80>;
476 interrupts = <0 41 0x4>; 556 interrupts = <0 41 0x4>;
@@ -479,7 +559,7 @@
479 }; 559 };
480 560
481 timer6: timer@4013a000 { 561 timer6: timer@4013a000 {
482 compatible = "ti,omap2-timer"; 562 compatible = "ti,omap4430-timer";
483 reg = <0x4013a000 0x80>, 563 reg = <0x4013a000 0x80>,
484 <0x4903a000 0x80>; 564 <0x4903a000 0x80>;
485 interrupts = <0 42 0x4>; 565 interrupts = <0 42 0x4>;
@@ -488,7 +568,7 @@
488 }; 568 };
489 569
490 timer7: timer@4013c000 { 570 timer7: timer@4013c000 {
491 compatible = "ti,omap2-timer"; 571 compatible = "ti,omap4430-timer";
492 reg = <0x4013c000 0x80>, 572 reg = <0x4013c000 0x80>,
493 <0x4903c000 0x80>; 573 <0x4903c000 0x80>;
494 interrupts = <0 43 0x4>; 574 interrupts = <0 43 0x4>;
@@ -497,7 +577,7 @@
497 }; 577 };
498 578
499 timer8: timer@4013e000 { 579 timer8: timer@4013e000 {
500 compatible = "ti,omap2-timer"; 580 compatible = "ti,omap4430-timer";
501 reg = <0x4013e000 0x80>, 581 reg = <0x4013e000 0x80>,
502 <0x4903e000 0x80>; 582 <0x4903e000 0x80>;
503 interrupts = <0 44 0x4>; 583 interrupts = <0 44 0x4>;
@@ -507,7 +587,7 @@
507 }; 587 };
508 588
509 timer9: timer@4803e000 { 589 timer9: timer@4803e000 {
510 compatible = "ti,omap2-timer"; 590 compatible = "ti,omap4430-timer";
511 reg = <0x4803e000 0x80>; 591 reg = <0x4803e000 0x80>;
512 interrupts = <0 45 0x4>; 592 interrupts = <0 45 0x4>;
513 ti,hwmods = "timer9"; 593 ti,hwmods = "timer9";
@@ -515,7 +595,7 @@
515 }; 595 };
516 596
517 timer10: timer@48086000 { 597 timer10: timer@48086000 {
518 compatible = "ti,omap2-timer"; 598 compatible = "ti,omap3430-timer";
519 reg = <0x48086000 0x80>; 599 reg = <0x48086000 0x80>;
520 interrupts = <0 46 0x4>; 600 interrupts = <0 46 0x4>;
521 ti,hwmods = "timer10"; 601 ti,hwmods = "timer10";
@@ -523,7 +603,7 @@
523 }; 603 };
524 604
525 timer11: timer@48088000 { 605 timer11: timer@48088000 {
526 compatible = "ti,omap2-timer"; 606 compatible = "ti,omap4430-timer";
527 reg = <0x48088000 0x80>; 607 reg = <0x48088000 0x80>;
528 interrupts = <0 47 0x4>; 608 interrupts = <0 47 0x4>;
529 ti,hwmods = "timer11"; 609 ti,hwmods = "timer11";
@@ -559,5 +639,26 @@
559 interrupts = <0 77 0x4>; 639 interrupts = <0 77 0x4>;
560 }; 640 };
561 }; 641 };
642
643 omap_control_usb: omap-control-usb@4a002300 {
644 compatible = "ti,omap-control-usb";
645 reg = <0x4a002300 0x4>,
646 <0x4a00233c 0x4>;
647 reg-names = "control_dev_conf", "otghs_control";
648 ti,type = <1>;
649 };
650
651 usb_otg_hs: usb_otg_hs@4a0ab000 {
652 compatible = "ti,omap4-musb";
653 reg = <0x4a0ab000 0x7ff>;
654 interrupts = <0 92 0x4>, <0 93 0x4>;
655 interrupt-names = "mc", "dma";
656 ti,hwmods = "usb_otg_hs";
657 usb-phy = <&usb2_phy>;
658 multipoint = <1>;
659 num-eps = <16>;
660 ram-bits = <12>;
661 ti,has-mailbox;
662 };
562 }; 663 };
563}; 664};
diff --git a/arch/arm/boot/dts/omap443x.dtsi b/arch/arm/boot/dts/omap443x.dtsi
new file mode 100644
index 000000000000..cccf39af4925
--- /dev/null
+++ b/arch/arm/boot/dts/omap443x.dtsi
@@ -0,0 +1,27 @@
1/*
2 * Device Tree Source for OMAP443x SoC
3 *
4 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/include/ "omap4.dtsi"
12
13/ {
14 cpus {
15 cpu@0 {
16 /* OMAP443x variants OPP50-OPPNT */
17 operating-points = <
18 /* kHz uV */
19 300000 1025000
20 600000 1200000
21 800000 1313000
22 1008000 1375000
23 >;
24 clock-latency = <300000>; /* From legacy driver */
25 };
26 };
27};
diff --git a/arch/arm/boot/dts/omap4460.dtsi b/arch/arm/boot/dts/omap4460.dtsi
new file mode 100644
index 000000000000..7c2c23cc17ef
--- /dev/null
+++ b/arch/arm/boot/dts/omap4460.dtsi
@@ -0,0 +1,32 @@
1/*
2 * Device Tree Source for OMAP4460 SoC
3 *
4 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10/include/ "omap4.dtsi"
11
12/ {
13 cpus {
14 /* OMAP446x 'standard device' variants OPP50 to OPPTurbo */
15 cpu@0 {
16 operating-points = <
17 /* kHz uV */
18 350000 975000
19 700000 1075000
20 920000 1200000
21 >;
22 clock-latency = <300000>; /* From legacy driver */
23 };
24 };
25
26 pmu {
27 compatible = "arm,cortex-a9-pmu";
28 interrupts = <0 54 0x4>,
29 <0 55 0x4>;
30 ti,hwmods = "debugss";
31 };
32};
diff --git a/arch/arm/boot/dts/omap5-evm.dts b/arch/arm/boot/dts/omap5-evm.dts
index 8722c15bbba2..982acd19477d 100644
--- a/arch/arm/boot/dts/omap5-evm.dts
+++ b/arch/arm/boot/dts/omap5-evm.dts
@@ -16,7 +16,7 @@
16 16
17 memory { 17 memory {
18 device_type = "memory"; 18 device_type = "memory";
19 reg = <0x80000000 0x80000000>; /* 2 GB */ 19 reg = <0x80000000 0x7F000000>; /* 2032 MB */
20 }; 20 };
21 21
22 vmmcsd_fixed: fixedregulator-mmcsd { 22 vmmcsd_fixed: fixedregulator-mmcsd {
@@ -80,6 +80,68 @@
80 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */ 80 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */
81 >; 81 >;
82 }; 82 };
83
84 i2c1_pins: pinmux_i2c1_pins {
85 pinctrl-single,pins = <
86 0x1b2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
87 0x1b4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
88 >;
89 };
90
91 i2c2_pins: pinmux_i2c2_pins {
92 pinctrl-single,pins = <
93 0x178 0x100 /* i2c2_scl INPUTENABLE | MODE0 */
94 0x17a 0x100 /* i2c2_sda INPUTENABLE | MODE0 */
95 >;
96 };
97
98 i2c3_pins: pinmux_i2c3_pins {
99 pinctrl-single,pins = <
100 0x13a 0x100 /* i2c3_scl INPUTENABLE | MODE0 */
101 0x13c 0x100 /* i2c3_sda INPUTENABLE | MODE0 */
102 >;
103 };
104
105 i2c4_pins: pinmux_i2c4_pins {
106 pinctrl-single,pins = <
107 0xb8 0x100 /* i2c4_scl INPUTENABLE | MODE0 */
108 0xba 0x100 /* i2c4_sda INPUTENABLE | MODE0 */
109 >;
110 };
111
112 i2c5_pins: pinmux_i2c5_pins {
113 pinctrl-single,pins = <
114 0x184 0x100 /* i2c5_scl INPUTENABLE | MODE0 */
115 0x186 0x100 /* i2c5_sda INPUTENABLE | MODE0 */
116 >;
117 };
118
119 mcspi2_pins: pinmux_mcspi2_pins {
120 pinctrl-single,pins = <
121 0xbc 0x100 /* MCSPI2_CLK INPUTENABLE | MODE0 */
122 0xbe 0x100 /* MCSPI2_SIMO INPUTENABLE | MODE0 */
123 0xc0 0x118 /* MCSPI2_SOMI PULLUP | INPUTENABLE | MODE0*/
124 0xc2 0x0 /* MCSPI2_CS MODE0*/
125 >;
126 };
127
128 mcspi3_pins: pinmux_mcspi3_pins {
129 pinctrl-single,pins = <
130 0x78 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */
131 0x7a 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */
132 0x7c 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */
133 0x7e 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */
134 >;
135 };
136
137 mcspi4_pins: pinmux_mcspi4_pins {
138 pinctrl-single,pins = <
139 0x164 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */
140 0x168 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */
141 0x16a 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */
142 0x16c 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */
143 >;
144 };
83}; 145};
84 146
85&mmc1 { 147&mmc1 {
@@ -106,7 +168,17 @@
106 status = "disabled"; 168 status = "disabled";
107}; 169};
108 170
171&i2c1 {
172 pinctrl-names = "default";
173 pinctrl-0 = <&i2c1_pins>;
174
175 clock-frequency = <400000>;
176};
177
109&i2c2 { 178&i2c2 {
179 pinctrl-names = "default";
180 pinctrl-0 = <&i2c2_pins>;
181
110 clock-frequency = <400000>; 182 clock-frequency = <400000>;
111 183
112 /* Pressure Sensor */ 184 /* Pressure Sensor */
@@ -116,7 +188,17 @@
116 }; 188 };
117}; 189};
118 190
191&i2c3 {
192 pinctrl-names = "default";
193 pinctrl-0 = <&i2c3_pins>;
194
195 clock-frequency = <400000>;
196};
197
119&i2c4 { 198&i2c4 {
199 pinctrl-names = "default";
200 pinctrl-0 = <&i2c4_pins>;
201
120 clock-frequency = <400000>; 202 clock-frequency = <400000>;
121 203
122 /* Temperature Sensor */ 204 /* Temperature Sensor */
@@ -126,6 +208,13 @@
126 }; 208 };
127}; 209};
128 210
211&i2c5 {
212 pinctrl-names = "default";
213 pinctrl-0 = <&i2c5_pins>;
214
215 clock-frequency = <400000>;
216};
217
129&keypad { 218&keypad {
130 keypad,num-rows = <8>; 219 keypad,num-rows = <8>;
131 keypad,num-columns = <8>; 220 keypad,num-columns = <8>;
@@ -151,3 +240,22 @@
151 cs1-used; 240 cs1-used;
152 device-handle = <&samsung_K3PE0E000B>; 241 device-handle = <&samsung_K3PE0E000B>;
153}; 242};
243
244&mcspi1 {
245
246};
247
248&mcspi2 {
249 pinctrl-names = "default";
250 pinctrl-0 = <&mcspi2_pins>;
251};
252
253&mcspi3 {
254 pinctrl-names = "default";
255 pinctrl-0 = <&mcspi3_pins>;
256};
257
258&mcspi4 {
259 pinctrl-names = "default";
260 pinctrl-0 = <&mcspi4_pins>;
261};
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index 790bb2a4b343..3dd7ff825828 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -18,6 +18,9 @@
18/include/ "skeleton.dtsi" 18/include/ "skeleton.dtsi"
19 19
20/ { 20/ {
21 #address-cells = <1>;
22 #size-cells = <1>;
23
21 compatible = "ti,omap5"; 24 compatible = "ti,omap5";
22 interrupt-parent = <&gic>; 25 interrupt-parent = <&gic>;
23 26
@@ -33,24 +36,32 @@
33 cpus { 36 cpus {
34 cpu@0 { 37 cpu@0 {
35 compatible = "arm,cortex-a15"; 38 compatible = "arm,cortex-a15";
36 timer {
37 compatible = "arm,armv7-timer";
38 /* 14th PPI IRQ, active low level-sensitive */
39 interrupts = <1 14 0x308>;
40 clock-frequency = <6144000>;
41 };
42 }; 39 };
43 cpu@1 { 40 cpu@1 {
44 compatible = "arm,cortex-a15"; 41 compatible = "arm,cortex-a15";
45 timer {
46 compatible = "arm,armv7-timer";
47 /* 14th PPI IRQ, active low level-sensitive */
48 interrupts = <1 14 0x308>;
49 clock-frequency = <6144000>;
50 };
51 }; 42 };
52 }; 43 };
53 44
45 timer {
46 compatible = "arm,armv7-timer";
47 /* PPI secure/nonsecure IRQ, active low level-sensitive */
48 interrupts = <1 13 0x308>,
49 <1 14 0x308>,
50 <1 11 0x308>,
51 <1 10 0x308>;
52 clock-frequency = <6144000>;
53 };
54
55 gic: interrupt-controller@48211000 {
56 compatible = "arm,cortex-a15-gic";
57 interrupt-controller;
58 #interrupt-cells = <3>;
59 reg = <0x48211000 0x1000>,
60 <0x48212000 0x1000>,
61 <0x48214000 0x2000>,
62 <0x48216000 0x2000>;
63 };
64
54 /* 65 /*
55 * The soc node represents the soc top level view. It is uses for IPs 66 * The soc node represents the soc top level view. It is uses for IPs
56 * that are not memory mapped in the MPU view or for the MPU itself. 67 * that are not memory mapped in the MPU view or for the MPU itself.
@@ -76,6 +87,11 @@
76 #size-cells = <1>; 87 #size-cells = <1>;
77 ranges; 88 ranges;
78 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 89 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
90 reg = <0x44000000 0x2000>,
91 <0x44800000 0x3000>,
92 <0x45000000 0x4000>;
93 interrupts = <0 9 0x4>,
94 <0 10 0x4>;
79 95
80 counter32k: counter@4ae04000 { 96 counter32k: counter@4ae04000 {
81 compatible = "ti,omap-counter32k"; 97 compatible = "ti,omap-counter32k";
@@ -100,12 +116,16 @@
100 pinctrl-single,function-mask = <0x7fff>; 116 pinctrl-single,function-mask = <0x7fff>;
101 }; 117 };
102 118
103 gic: interrupt-controller@48211000 { 119 sdma: dma-controller@4a056000 {
104 compatible = "arm,cortex-a15-gic"; 120 compatible = "ti,omap4430-sdma";
105 interrupt-controller; 121 reg = <0x4a056000 0x1000>;
106 #interrupt-cells = <3>; 122 interrupts = <0 12 0x4>,
107 reg = <0x48211000 0x1000>, 123 <0 13 0x4>,
108 <0x48212000 0x1000>; 124 <0 14 0x4>,
125 <0 15 0x4>;
126 #dma-cells = <1>;
127 #dma-channels = <32>;
128 #dma-requests = <127>;
109 }; 129 };
110 130
111 gpio1: gpio@4ae10000 { 131 gpio1: gpio@4ae10000 {
@@ -113,10 +133,11 @@
113 reg = <0x4ae10000 0x200>; 133 reg = <0x4ae10000 0x200>;
114 interrupts = <0 29 0x4>; 134 interrupts = <0 29 0x4>;
115 ti,hwmods = "gpio1"; 135 ti,hwmods = "gpio1";
136 ti,gpio-always-on;
116 gpio-controller; 137 gpio-controller;
117 #gpio-cells = <2>; 138 #gpio-cells = <2>;
118 interrupt-controller; 139 interrupt-controller;
119 #interrupt-cells = <1>; 140 #interrupt-cells = <2>;
120 }; 141 };
121 142
122 gpio2: gpio@48055000 { 143 gpio2: gpio@48055000 {
@@ -127,7 +148,7 @@
127 gpio-controller; 148 gpio-controller;
128 #gpio-cells = <2>; 149 #gpio-cells = <2>;
129 interrupt-controller; 150 interrupt-controller;
130 #interrupt-cells = <1>; 151 #interrupt-cells = <2>;
131 }; 152 };
132 153
133 gpio3: gpio@48057000 { 154 gpio3: gpio@48057000 {
@@ -138,7 +159,7 @@
138 gpio-controller; 159 gpio-controller;
139 #gpio-cells = <2>; 160 #gpio-cells = <2>;
140 interrupt-controller; 161 interrupt-controller;
141 #interrupt-cells = <1>; 162 #interrupt-cells = <2>;
142 }; 163 };
143 164
144 gpio4: gpio@48059000 { 165 gpio4: gpio@48059000 {
@@ -149,7 +170,7 @@
149 gpio-controller; 170 gpio-controller;
150 #gpio-cells = <2>; 171 #gpio-cells = <2>;
151 interrupt-controller; 172 interrupt-controller;
152 #interrupt-cells = <1>; 173 #interrupt-cells = <2>;
153 }; 174 };
154 175
155 gpio5: gpio@4805b000 { 176 gpio5: gpio@4805b000 {
@@ -160,7 +181,7 @@
160 gpio-controller; 181 gpio-controller;
161 #gpio-cells = <2>; 182 #gpio-cells = <2>;
162 interrupt-controller; 183 interrupt-controller;
163 #interrupt-cells = <1>; 184 #interrupt-cells = <2>;
164 }; 185 };
165 186
166 gpio6: gpio@4805d000 { 187 gpio6: gpio@4805d000 {
@@ -171,7 +192,7 @@
171 gpio-controller; 192 gpio-controller;
172 #gpio-cells = <2>; 193 #gpio-cells = <2>;
173 interrupt-controller; 194 interrupt-controller;
174 #interrupt-cells = <1>; 195 #interrupt-cells = <2>;
175 }; 196 };
176 197
177 gpio7: gpio@48051000 { 198 gpio7: gpio@48051000 {
@@ -182,7 +203,7 @@
182 gpio-controller; 203 gpio-controller;
183 #gpio-cells = <2>; 204 #gpio-cells = <2>;
184 interrupt-controller; 205 interrupt-controller;
185 #interrupt-cells = <1>; 206 #interrupt-cells = <2>;
186 }; 207 };
187 208
188 gpio8: gpio@48053000 { 209 gpio8: gpio@48053000 {
@@ -193,7 +214,18 @@
193 gpio-controller; 214 gpio-controller;
194 #gpio-cells = <2>; 215 #gpio-cells = <2>;
195 interrupt-controller; 216 interrupt-controller;
196 #interrupt-cells = <1>; 217 #interrupt-cells = <2>;
218 };
219
220 gpmc: gpmc@50000000 {
221 compatible = "ti,omap4430-gpmc";
222 reg = <0x50000000 0x1000>;
223 #address-cells = <2>;
224 #size-cells = <1>;
225 interrupts = <0 20 0x4>;
226 gpmc,num-cs = <8>;
227 gpmc,num-waitpins = <4>;
228 ti,hwmods = "gpmc";
197 }; 229 };
198 230
199 i2c1: i2c@48070000 { 231 i2c1: i2c@48070000 {
@@ -241,6 +273,65 @@
241 ti,hwmods = "i2c5"; 273 ti,hwmods = "i2c5";
242 }; 274 };
243 275
276 mcspi1: spi@48098000 {
277 compatible = "ti,omap4-mcspi";
278 reg = <0x48098000 0x200>;
279 interrupts = <0 65 0x4>;
280 #address-cells = <1>;
281 #size-cells = <0>;
282 ti,hwmods = "mcspi1";
283 ti,spi-num-cs = <4>;
284 dmas = <&sdma 35>,
285 <&sdma 36>,
286 <&sdma 37>,
287 <&sdma 38>,
288 <&sdma 39>,
289 <&sdma 40>,
290 <&sdma 41>,
291 <&sdma 42>;
292 dma-names = "tx0", "rx0", "tx1", "rx1",
293 "tx2", "rx2", "tx3", "rx3";
294 };
295
296 mcspi2: spi@4809a000 {
297 compatible = "ti,omap4-mcspi";
298 reg = <0x4809a000 0x200>;
299 interrupts = <0 66 0x4>;
300 #address-cells = <1>;
301 #size-cells = <0>;
302 ti,hwmods = "mcspi2";
303 ti,spi-num-cs = <2>;
304 dmas = <&sdma 43>,
305 <&sdma 44>,
306 <&sdma 45>,
307 <&sdma 46>;
308 dma-names = "tx0", "rx0", "tx1", "rx1";
309 };
310
311 mcspi3: spi@480b8000 {
312 compatible = "ti,omap4-mcspi";
313 reg = <0x480b8000 0x200>;
314 interrupts = <0 91 0x4>;
315 #address-cells = <1>;
316 #size-cells = <0>;
317 ti,hwmods = "mcspi3";
318 ti,spi-num-cs = <2>;
319 dmas = <&sdma 15>, <&sdma 16>;
320 dma-names = "tx0", "rx0";
321 };
322
323 mcspi4: spi@480ba000 {
324 compatible = "ti,omap4-mcspi";
325 reg = <0x480ba000 0x200>;
326 interrupts = <0 48 0x4>;
327 #address-cells = <1>;
328 #size-cells = <0>;
329 ti,hwmods = "mcspi4";
330 ti,spi-num-cs = <1>;
331 dmas = <&sdma 70>, <&sdma 71>;
332 dma-names = "tx0", "rx0";
333 };
334
244 uart1: serial@4806a000 { 335 uart1: serial@4806a000 {
245 compatible = "ti,omap4-uart"; 336 compatible = "ti,omap4-uart";
246 reg = <0x4806a000 0x100>; 337 reg = <0x4806a000 0x100>;
@@ -296,6 +387,8 @@
296 ti,hwmods = "mmc1"; 387 ti,hwmods = "mmc1";
297 ti,dual-volt; 388 ti,dual-volt;
298 ti,needs-special-reset; 389 ti,needs-special-reset;
390 dmas = <&sdma 61>, <&sdma 62>;
391 dma-names = "tx", "rx";
299 }; 392 };
300 393
301 mmc2: mmc@480b4000 { 394 mmc2: mmc@480b4000 {
@@ -304,6 +397,8 @@
304 interrupts = <0 86 0x4>; 397 interrupts = <0 86 0x4>;
305 ti,hwmods = "mmc2"; 398 ti,hwmods = "mmc2";
306 ti,needs-special-reset; 399 ti,needs-special-reset;
400 dmas = <&sdma 47>, <&sdma 48>;
401 dma-names = "tx", "rx";
307 }; 402 };
308 403
309 mmc3: mmc@480ad000 { 404 mmc3: mmc@480ad000 {
@@ -312,6 +407,8 @@
312 interrupts = <0 94 0x4>; 407 interrupts = <0 94 0x4>;
313 ti,hwmods = "mmc3"; 408 ti,hwmods = "mmc3";
314 ti,needs-special-reset; 409 ti,needs-special-reset;
410 dmas = <&sdma 77>, <&sdma 78>;
411 dma-names = "tx", "rx";
315 }; 412 };
316 413
317 mmc4: mmc@480d1000 { 414 mmc4: mmc@480d1000 {
@@ -320,6 +417,8 @@
320 interrupts = <0 96 0x4>; 417 interrupts = <0 96 0x4>;
321 ti,hwmods = "mmc4"; 418 ti,hwmods = "mmc4";
322 ti,needs-special-reset; 419 ti,needs-special-reset;
420 dmas = <&sdma 57>, <&sdma 58>;
421 dma-names = "tx", "rx";
323 }; 422 };
324 423
325 mmc5: mmc@480d5000 { 424 mmc5: mmc@480d5000 {
@@ -328,10 +427,13 @@
328 interrupts = <0 59 0x4>; 427 interrupts = <0 59 0x4>;
329 ti,hwmods = "mmc5"; 428 ti,hwmods = "mmc5";
330 ti,needs-special-reset; 429 ti,needs-special-reset;
430 dmas = <&sdma 59>, <&sdma 60>;
431 dma-names = "tx", "rx";
331 }; 432 };
332 433
333 keypad: keypad@4ae1c000 { 434 keypad: keypad@4ae1c000 {
334 compatible = "ti,omap4-keypad"; 435 compatible = "ti,omap4-keypad";
436 reg = <0x4ae1c000 0x400>;
335 ti,hwmods = "kbd"; 437 ti,hwmods = "kbd";
336 }; 438 };
337 439
@@ -342,6 +444,9 @@
342 reg-names = "mpu", "dma"; 444 reg-names = "mpu", "dma";
343 interrupts = <0 112 0x4>; 445 interrupts = <0 112 0x4>;
344 ti,hwmods = "mcpdm"; 446 ti,hwmods = "mcpdm";
447 dmas = <&sdma 65>,
448 <&sdma 66>;
449 dma-names = "up_link", "dn_link";
345 }; 450 };
346 451
347 dmic: dmic@4012e000 { 452 dmic: dmic@4012e000 {
@@ -351,6 +456,8 @@
351 reg-names = "mpu", "dma"; 456 reg-names = "mpu", "dma";
352 interrupts = <0 114 0x4>; 457 interrupts = <0 114 0x4>;
353 ti,hwmods = "dmic"; 458 ti,hwmods = "dmic";
459 dmas = <&sdma 67>;
460 dma-names = "up_link";
354 }; 461 };
355 462
356 mcbsp1: mcbsp@40122000 { 463 mcbsp1: mcbsp@40122000 {
@@ -362,6 +469,9 @@
362 interrupt-names = "common"; 469 interrupt-names = "common";
363 ti,buffer-size = <128>; 470 ti,buffer-size = <128>;
364 ti,hwmods = "mcbsp1"; 471 ti,hwmods = "mcbsp1";
472 dmas = <&sdma 33>,
473 <&sdma 34>;
474 dma-names = "tx", "rx";
365 }; 475 };
366 476
367 mcbsp2: mcbsp@40124000 { 477 mcbsp2: mcbsp@40124000 {
@@ -373,6 +483,9 @@
373 interrupt-names = "common"; 483 interrupt-names = "common";
374 ti,buffer-size = <128>; 484 ti,buffer-size = <128>;
375 ti,hwmods = "mcbsp2"; 485 ti,hwmods = "mcbsp2";
486 dmas = <&sdma 17>,
487 <&sdma 18>;
488 dma-names = "tx", "rx";
376 }; 489 };
377 490
378 mcbsp3: mcbsp@40126000 { 491 mcbsp3: mcbsp@40126000 {
@@ -384,10 +497,13 @@
384 interrupt-names = "common"; 497 interrupt-names = "common";
385 ti,buffer-size = <128>; 498 ti,buffer-size = <128>;
386 ti,hwmods = "mcbsp3"; 499 ti,hwmods = "mcbsp3";
500 dmas = <&sdma 19>,
501 <&sdma 20>;
502 dma-names = "tx", "rx";
387 }; 503 };
388 504
389 timer1: timer@4ae18000 { 505 timer1: timer@4ae18000 {
390 compatible = "ti,omap2-timer"; 506 compatible = "ti,omap5430-timer";
391 reg = <0x4ae18000 0x80>; 507 reg = <0x4ae18000 0x80>;
392 interrupts = <0 37 0x4>; 508 interrupts = <0 37 0x4>;
393 ti,hwmods = "timer1"; 509 ti,hwmods = "timer1";
@@ -395,28 +511,28 @@
395 }; 511 };
396 512
397 timer2: timer@48032000 { 513 timer2: timer@48032000 {
398 compatible = "ti,omap2-timer"; 514 compatible = "ti,omap5430-timer";
399 reg = <0x48032000 0x80>; 515 reg = <0x48032000 0x80>;
400 interrupts = <0 38 0x4>; 516 interrupts = <0 38 0x4>;
401 ti,hwmods = "timer2"; 517 ti,hwmods = "timer2";
402 }; 518 };
403 519
404 timer3: timer@48034000 { 520 timer3: timer@48034000 {
405 compatible = "ti,omap2-timer"; 521 compatible = "ti,omap5430-timer";
406 reg = <0x48034000 0x80>; 522 reg = <0x48034000 0x80>;
407 interrupts = <0 39 0x4>; 523 interrupts = <0 39 0x4>;
408 ti,hwmods = "timer3"; 524 ti,hwmods = "timer3";
409 }; 525 };
410 526
411 timer4: timer@48036000 { 527 timer4: timer@48036000 {
412 compatible = "ti,omap2-timer"; 528 compatible = "ti,omap5430-timer";
413 reg = <0x48036000 0x80>; 529 reg = <0x48036000 0x80>;
414 interrupts = <0 40 0x4>; 530 interrupts = <0 40 0x4>;
415 ti,hwmods = "timer4"; 531 ti,hwmods = "timer4";
416 }; 532 };
417 533
418 timer5: timer@40138000 { 534 timer5: timer@40138000 {
419 compatible = "ti,omap2-timer"; 535 compatible = "ti,omap5430-timer";
420 reg = <0x40138000 0x80>, 536 reg = <0x40138000 0x80>,
421 <0x49038000 0x80>; 537 <0x49038000 0x80>;
422 interrupts = <0 41 0x4>; 538 interrupts = <0 41 0x4>;
@@ -425,7 +541,7 @@
425 }; 541 };
426 542
427 timer6: timer@4013a000 { 543 timer6: timer@4013a000 {
428 compatible = "ti,omap2-timer"; 544 compatible = "ti,omap5430-timer";
429 reg = <0x4013a000 0x80>, 545 reg = <0x4013a000 0x80>,
430 <0x4903a000 0x80>; 546 <0x4903a000 0x80>;
431 interrupts = <0 42 0x4>; 547 interrupts = <0 42 0x4>;
@@ -435,7 +551,7 @@
435 }; 551 };
436 552
437 timer7: timer@4013c000 { 553 timer7: timer@4013c000 {
438 compatible = "ti,omap2-timer"; 554 compatible = "ti,omap5430-timer";
439 reg = <0x4013c000 0x80>, 555 reg = <0x4013c000 0x80>,
440 <0x4903c000 0x80>; 556 <0x4903c000 0x80>;
441 interrupts = <0 43 0x4>; 557 interrupts = <0 43 0x4>;
@@ -444,7 +560,7 @@
444 }; 560 };
445 561
446 timer8: timer@4013e000 { 562 timer8: timer@4013e000 {
447 compatible = "ti,omap2-timer"; 563 compatible = "ti,omap5430-timer";
448 reg = <0x4013e000 0x80>, 564 reg = <0x4013e000 0x80>,
449 <0x4903e000 0x80>; 565 <0x4903e000 0x80>;
450 interrupts = <0 44 0x4>; 566 interrupts = <0 44 0x4>;
@@ -454,27 +570,34 @@
454 }; 570 };
455 571
456 timer9: timer@4803e000 { 572 timer9: timer@4803e000 {
457 compatible = "ti,omap2-timer"; 573 compatible = "ti,omap5430-timer";
458 reg = <0x4803e000 0x80>; 574 reg = <0x4803e000 0x80>;
459 interrupts = <0 45 0x4>; 575 interrupts = <0 45 0x4>;
460 ti,hwmods = "timer9"; 576 ti,hwmods = "timer9";
461 }; 577 };
462 578
463 timer10: timer@48086000 { 579 timer10: timer@48086000 {
464 compatible = "ti,omap2-timer"; 580 compatible = "ti,omap5430-timer";
465 reg = <0x48086000 0x80>; 581 reg = <0x48086000 0x80>;
466 interrupts = <0 46 0x4>; 582 interrupts = <0 46 0x4>;
467 ti,hwmods = "timer10"; 583 ti,hwmods = "timer10";
468 }; 584 };
469 585
470 timer11: timer@48088000 { 586 timer11: timer@48088000 {
471 compatible = "ti,omap2-timer"; 587 compatible = "ti,omap5430-timer";
472 reg = <0x48088000 0x80>; 588 reg = <0x48088000 0x80>;
473 interrupts = <0 47 0x4>; 589 interrupts = <0 47 0x4>;
474 ti,hwmods = "timer11"; 590 ti,hwmods = "timer11";
475 ti,timer-pwm; 591 ti,timer-pwm;
476 }; 592 };
477 593
594 wdt2: wdt@4ae14000 {
595 compatible = "ti,omap5-wdt", "ti,omap3-wdt";
596 reg = <0x4ae14000 0x80>;
597 interrupts = <0 80 0x4>;
598 ti,hwmods = "wd_timer2";
599 };
600
478 emif1: emif@0x4c000000 { 601 emif1: emif@0x4c000000 {
479 compatible = "ti,emif-4d5"; 602 compatible = "ti,emif-4d5";
480 ti,hwmods = "emif1"; 603 ti,hwmods = "emif1";
@@ -496,5 +619,53 @@
496 hw-caps-ll-interface; 619 hw-caps-ll-interface;
497 hw-caps-temp-alert; 620 hw-caps-temp-alert;
498 }; 621 };
622
623 omap_control_usb: omap-control-usb@4a002300 {
624 compatible = "ti,omap-control-usb";
625 reg = <0x4a002300 0x4>,
626 <0x4a002370 0x4>;
627 reg-names = "control_dev_conf", "phy_power_usb";
628 ti,type = <2>;
629 };
630
631 omap_dwc3@4a020000 {
632 compatible = "ti,dwc3";
633 ti,hwmods = "usb_otg_ss";
634 reg = <0x4a020000 0x1000>;
635 interrupts = <0 93 4>;
636 #address-cells = <1>;
637 #size-cells = <1>;
638 utmi-mode = <2>;
639 ranges;
640 dwc3@4a030000 {
641 compatible = "synopsys,dwc3";
642 reg = <0x4a030000 0x1000>;
643 interrupts = <0 92 4>;
644 usb-phy = <&usb2_phy>, <&usb3_phy>;
645 tx-fifo-resize;
646 };
647 };
648
649 ocp2scp {
650 compatible = "ti,omap-ocp2scp";
651 #address-cells = <1>;
652 #size-cells = <1>;
653 ranges;
654 ti,hwmods = "ocp2scp1";
655 usb2_phy: usb2phy@4a084000 {
656 compatible = "ti,omap-usb2";
657 reg = <0x4a084000 0x7c>;
658 ctrl-module = <&omap_control_usb>;
659 };
660
661 usb3_phy: usb3phy@4a084400 {
662 compatible = "ti,omap-usb3";
663 reg = <0x4a084400 0x80>,
664 <0x4a084800 0x64>,
665 <0x4a084c00 0x40>;
666 reg-names = "phy_rx", "phy_tx", "pll_ctrl";
667 ctrl-module = <&omap_control_usb>;
668 };
669 };
499 }; 670 };
500}; 671};
diff --git a/arch/arm/boot/dts/twl4030.dtsi b/arch/arm/boot/dts/twl4030.dtsi
index ed0bc9546837..b3034da00a37 100644
--- a/arch/arm/boot/dts/twl4030.dtsi
+++ b/arch/arm/boot/dts/twl4030.dtsi
@@ -23,6 +23,12 @@
23 compatible = "ti,twl4030-wdt"; 23 compatible = "ti,twl4030-wdt";
24 }; 24 };
25 25
26 vcc: regulator-vdd1 {
27 compatible = "ti,twl4030-vdd1";
28 regulator-min-microvolt = <600000>;
29 regulator-max-microvolt = <1450000>;
30 };
31
26 vdac: regulator-vdac { 32 vdac: regulator-vdac {
27 compatible = "ti,twl4030-vdac"; 33 compatible = "ti,twl4030-vdac";
28 regulator-min-microvolt = <1800000>; 34 regulator-min-microvolt = <1800000>;
@@ -67,7 +73,7 @@
67 #interrupt-cells = <1>; 73 #interrupt-cells = <1>;
68 }; 74 };
69 75
70 twl4030-usb { 76 usb2_phy: twl4030-usb {
71 compatible = "ti,twl4030-usb"; 77 compatible = "ti,twl4030-usb";
72 interrupts = <10>, <4>; 78 interrupts = <10>, <4>;
73 usb1v5-supply = <&vusb1v5>; 79 usb1v5-supply = <&vusb1v5>;
@@ -75,4 +81,14 @@
75 usb3v1-supply = <&vusb3v1>; 81 usb3v1-supply = <&vusb3v1>;
76 usb_mode = <1>; 82 usb_mode = <1>;
77 }; 83 };
84
85 twl_pwm: pwm {
86 compatible = "ti,twl4030-pwm";
87 #pwm-cells = <2>;
88 };
89
90 twl_pwmled: pwmled {
91 compatible = "ti,twl4030-pwmled";
92 #pwm-cells = <2>;
93 };
78}; 94};
diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi
index 9996cfc5ee80..2e3bd3172b23 100644
--- a/arch/arm/boot/dts/twl6030.dtsi
+++ b/arch/arm/boot/dts/twl6030.dtsi
@@ -91,4 +91,16 @@
91 compatible = "ti,twl6030-usb"; 91 compatible = "ti,twl6030-usb";
92 interrupts = <4>, <10>; 92 interrupts = <4>, <10>;
93 }; 93 };
94
95 twl_pwm: pwm {
96 /* provides two PWMs (id 0, 1 for PWM1 and PWM2) */
97 compatible = "ti,twl6030-pwm";
98 #pwm-cells = <2>;
99 };
100
101 twl_pwmled: pwmled {
102 /* provides one PWM (id 0 for Charging indicator LED) */
103 compatible = "ti,twl6030-pwmled";
104 #pwm-cells = <2>;
105 };
94}; 106};
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index e54a48060198..afa509afb27c 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -110,6 +110,7 @@ MACHINE_END
110 110
111static const char *omap3_gp_boards_compat[] __initdata = { 111static const char *omap3_gp_boards_compat[] __initdata = {
112 "ti,omap3-beagle", 112 "ti,omap3-beagle",
113 "timll,omap3-devkit8000",
113 NULL, 114 NULL,
114}; 115};
115 116
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index e5cafed8ef25..63b774fb8089 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -138,6 +138,8 @@
138#include <linux/spinlock.h> 138#include <linux/spinlock.h>
139#include <linux/slab.h> 139#include <linux/slab.h>
140#include <linux/bootmem.h> 140#include <linux/bootmem.h>
141#include <linux/of.h>
142#include <linux/of_address.h>
141 143
142#include <asm/system_misc.h> 144#include <asm/system_misc.h>
143 145
@@ -2346,6 +2348,34 @@ static int _shutdown(struct omap_hwmod *oh)
2346} 2348}
2347 2349
2348/** 2350/**
2351 * of_dev_hwmod_lookup - look up needed hwmod from dt blob
2352 * @np: struct device_node *
2353 * @oh: struct omap_hwmod *
2354 *
2355 * Parse the dt blob and find out needed hwmod. Recursive function is
2356 * implemented to take care hierarchical dt blob parsing.
2357 * Return: The device node on success or NULL on failure.
2358 */
2359static struct device_node *of_dev_hwmod_lookup(struct device_node *np,
2360 struct omap_hwmod *oh)
2361{
2362 struct device_node *np0 = NULL, *np1 = NULL;
2363 const char *p;
2364
2365 for_each_child_of_node(np, np0) {
2366 if (of_find_property(np0, "ti,hwmods", NULL)) {
2367 p = of_get_property(np0, "ti,hwmods", NULL);
2368 if (!strcmp(p, oh->name))
2369 return np0;
2370 np1 = of_dev_hwmod_lookup(np0, oh);
2371 if (np1)
2372 return np1;
2373 }
2374 }
2375 return NULL;
2376}
2377
2378/**
2349 * _init_mpu_rt_base - populate the virtual address for a hwmod 2379 * _init_mpu_rt_base - populate the virtual address for a hwmod
2350 * @oh: struct omap_hwmod * to locate the virtual address 2380 * @oh: struct omap_hwmod * to locate the virtual address
2351 * 2381 *
@@ -2357,7 +2387,8 @@ static int _shutdown(struct omap_hwmod *oh)
2357static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data) 2387static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
2358{ 2388{
2359 struct omap_hwmod_addr_space *mem; 2389 struct omap_hwmod_addr_space *mem;
2360 void __iomem *va_start; 2390 void __iomem *va_start = NULL;
2391 struct device_node *np;
2361 2392
2362 if (!oh) 2393 if (!oh)
2363 return; 2394 return;
@@ -2371,10 +2402,18 @@ static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
2371 if (!mem) { 2402 if (!mem) {
2372 pr_debug("omap_hwmod: %s: no MPU register target found\n", 2403 pr_debug("omap_hwmod: %s: no MPU register target found\n",
2373 oh->name); 2404 oh->name);
2374 return; 2405
2406 /* Extract the IO space from device tree blob */
2407 if (!of_have_populated_dt())
2408 return;
2409
2410 np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh);
2411 if (np)
2412 va_start = of_iomap(np, 0);
2413 } else {
2414 va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
2375 } 2415 }
2376 2416
2377 va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
2378 if (!va_start) { 2417 if (!va_start) {
2379 pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name); 2418 pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
2380 return; 2419 return;
@@ -2406,7 +2445,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
2406 if (oh->_state != _HWMOD_STATE_REGISTERED) 2445 if (oh->_state != _HWMOD_STATE_REGISTERED)
2407 return 0; 2446 return 0;
2408 2447
2409 _init_mpu_rt_base(oh, NULL); 2448 if (oh->class->sysc)
2449 _init_mpu_rt_base(oh, NULL);
2410 2450
2411 r = _init_clocks(oh, NULL); 2451 r = _init_clocks(oh, NULL);
2412 if (IS_ERR_VALUE(r)) { 2452 if (IS_ERR_VALUE(r)) {
diff --git a/arch/arm/mach-omap2/pmu.c b/arch/arm/mach-omap2/pmu.c
index 9debf822687c..9ace8eae7ee8 100644
--- a/arch/arm/mach-omap2/pmu.c
+++ b/arch/arm/mach-omap2/pmu.c
@@ -11,6 +11,8 @@
11 * the Free Software Foundation; either version 2 of the License, or 11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version. 12 * (at your option) any later version.
13 */ 13 */
14#include <linux/of.h>
15
14#include <asm/pmu.h> 16#include <asm/pmu.h>
15 17
16#include "soc.h" 18#include "soc.h"
@@ -63,6 +65,15 @@ static int __init omap_init_pmu(void)
63 unsigned oh_num; 65 unsigned oh_num;
64 char **oh_names; 66 char **oh_names;
65 67
68 /* XXX Remove this check when the CTI driver is available */
69 if (cpu_is_omap443x()) {
70 pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n");
71 return 0;
72 }
73
74 if (of_have_populated_dt())
75 return 0;
76
66 /* 77 /*
67 * To create an ARM-PMU device the following HWMODs 78 * To create an ARM-PMU device the following HWMODs
68 * are required for the various OMAP2+ devices. 79 * are required for the various OMAP2+ devices.
@@ -75,9 +86,6 @@ static int __init omap_init_pmu(void)
75 if (cpu_is_omap443x()) { 86 if (cpu_is_omap443x()) {
76 oh_num = ARRAY_SIZE(omap4430_pmu_oh_names); 87 oh_num = ARRAY_SIZE(omap4430_pmu_oh_names);
77 oh_names = omap4430_pmu_oh_names; 88 oh_names = omap4430_pmu_oh_names;
78 /* XXX Remove the next two lines when CTI driver available */
79 pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n");
80 return 0;
81 } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) { 89 } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
82 oh_num = ARRAY_SIZE(omap3_pmu_oh_names); 90 oh_num = ARRAY_SIZE(omap3_pmu_oh_names);
83 oh_names = omap3_pmu_oh_names; 91 oh_names = omap3_pmu_oh_names;
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index 32c26e4143db..58d86d7abada 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -144,7 +144,12 @@ static struct property device_disabled = {
144}; 144};
145 145
146static struct of_device_id omap_timer_match[] __initdata = { 146static struct of_device_id omap_timer_match[] __initdata = {
147 { .compatible = "ti,omap2-timer", }, 147 { .compatible = "ti,omap2420-timer", },
148 { .compatible = "ti,omap3430-timer", },
149 { .compatible = "ti,omap4430-timer", },
150 { .compatible = "ti,omap5430-timer", },
151 { .compatible = "ti,am335x-timer", },
152 { .compatible = "ti,am335x-timer-1ms", },
148 { } 153 { }
149}; 154};
150 155
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index a0daa2fb5de6..5d0af13adb9b 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -52,6 +52,13 @@ static u32 omap_reserved_systimers;
52static LIST_HEAD(omap_timer_list); 52static LIST_HEAD(omap_timer_list);
53static DEFINE_SPINLOCK(dm_timer_lock); 53static DEFINE_SPINLOCK(dm_timer_lock);
54 54
55enum {
56 REQUEST_ANY = 0,
57 REQUEST_BY_ID,
58 REQUEST_BY_CAP,
59 REQUEST_BY_NODE,
60};
61
55/** 62/**
56 * omap_dm_timer_read_reg - read timer registers in posted and non-posted mode 63 * omap_dm_timer_read_reg - read timer registers in posted and non-posted mode
57 * @timer: timer pointer over which read operation to perform 64 * @timer: timer pointer over which read operation to perform
@@ -178,29 +185,82 @@ int omap_dm_timer_reserve_systimer(int id)
178 return 0; 185 return 0;
179} 186}
180 187
181struct omap_dm_timer *omap_dm_timer_request(void) 188static struct omap_dm_timer *_omap_dm_timer_request(int req_type, void *data)
182{ 189{
183 struct omap_dm_timer *timer = NULL, *t; 190 struct omap_dm_timer *timer = NULL, *t;
191 struct device_node *np = NULL;
184 unsigned long flags; 192 unsigned long flags;
185 int ret = 0; 193 u32 cap = 0;
194 int id = 0;
195
196 switch (req_type) {
197 case REQUEST_BY_ID:
198 id = *(int *)data;
199 break;
200 case REQUEST_BY_CAP:
201 cap = *(u32 *)data;
202 break;
203 case REQUEST_BY_NODE:
204 np = (struct device_node *)data;
205 break;
206 default:
207 /* REQUEST_ANY */
208 break;
209 }
186 210
187 spin_lock_irqsave(&dm_timer_lock, flags); 211 spin_lock_irqsave(&dm_timer_lock, flags);
188 list_for_each_entry(t, &omap_timer_list, node) { 212 list_for_each_entry(t, &omap_timer_list, node) {
189 if (t->reserved) 213 if (t->reserved)
190 continue; 214 continue;
191 215
192 timer = t; 216 switch (req_type) {
193 timer->reserved = 1; 217 case REQUEST_BY_ID:
194 break; 218 if (id == t->pdev->id) {
219 timer = t;
220 timer->reserved = 1;
221 goto found;
222 }
223 break;
224 case REQUEST_BY_CAP:
225 if (cap == (t->capability & cap)) {
226 /*
227 * If timer is not NULL, we have already found
228 * one timer but it was not an exact match
229 * because it had more capabilites that what
230 * was required. Therefore, unreserve the last
231 * timer found and see if this one is a better
232 * match.
233 */
234 if (timer)
235 timer->reserved = 0;
236 timer = t;
237 timer->reserved = 1;
238
239 /* Exit loop early if we find an exact match */
240 if (t->capability == cap)
241 goto found;
242 }
243 break;
244 case REQUEST_BY_NODE:
245 if (np == t->pdev->dev.of_node) {
246 timer = t;
247 timer->reserved = 1;
248 goto found;
249 }
250 break;
251 default:
252 /* REQUEST_ANY */
253 timer = t;
254 timer->reserved = 1;
255 goto found;
256 }
195 } 257 }
258found:
196 spin_unlock_irqrestore(&dm_timer_lock, flags); 259 spin_unlock_irqrestore(&dm_timer_lock, flags);
197 260
198 if (timer) { 261 if (timer && omap_dm_timer_prepare(timer)) {
199 ret = omap_dm_timer_prepare(timer); 262 timer->reserved = 0;
200 if (ret) { 263 timer = NULL;
201 timer->reserved = 0;
202 timer = NULL;
203 }
204 } 264 }
205 265
206 if (!timer) 266 if (!timer)
@@ -208,43 +268,23 @@ struct omap_dm_timer *omap_dm_timer_request(void)
208 268
209 return timer; 269 return timer;
210} 270}
271
272struct omap_dm_timer *omap_dm_timer_request(void)
273{
274 return _omap_dm_timer_request(REQUEST_ANY, NULL);
275}
211EXPORT_SYMBOL_GPL(omap_dm_timer_request); 276EXPORT_SYMBOL_GPL(omap_dm_timer_request);
212 277
213struct omap_dm_timer *omap_dm_timer_request_specific(int id) 278struct omap_dm_timer *omap_dm_timer_request_specific(int id)
214{ 279{
215 struct omap_dm_timer *timer = NULL, *t;
216 unsigned long flags;
217 int ret = 0;
218
219 /* Requesting timer by ID is not supported when device tree is used */ 280 /* Requesting timer by ID is not supported when device tree is used */
220 if (of_have_populated_dt()) { 281 if (of_have_populated_dt()) {
221 pr_warn("%s: Please use omap_dm_timer_request_by_cap()\n", 282 pr_warn("%s: Please use omap_dm_timer_request_by_cap/node()\n",
222 __func__); 283 __func__);
223 return NULL; 284 return NULL;
224 } 285 }
225 286
226 spin_lock_irqsave(&dm_timer_lock, flags); 287 return _omap_dm_timer_request(REQUEST_BY_ID, &id);
227 list_for_each_entry(t, &omap_timer_list, node) {
228 if (t->pdev->id == id && !t->reserved) {
229 timer = t;
230 timer->reserved = 1;
231 break;
232 }
233 }
234 spin_unlock_irqrestore(&dm_timer_lock, flags);
235
236 if (timer) {
237 ret = omap_dm_timer_prepare(timer);
238 if (ret) {
239 timer->reserved = 0;
240 timer = NULL;
241 }
242 }
243
244 if (!timer)
245 pr_debug("%s: timer%d request failed!\n", __func__, id);
246
247 return timer;
248} 288}
249EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific); 289EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
250 290
@@ -259,46 +299,25 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
259 */ 299 */
260struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap) 300struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap)
261{ 301{
262 struct omap_dm_timer *timer = NULL, *t; 302 return _omap_dm_timer_request(REQUEST_BY_CAP, &cap);
263 unsigned long flags; 303}
304EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap);
264 305
265 if (!cap) 306/**
307 * omap_dm_timer_request_by_node - Request a timer by device-tree node
308 * @np: Pointer to device-tree timer node
309 *
310 * Request a timer based upon a device node pointer. Returns pointer to
311 * timer handle on success and a NULL pointer on failure.
312 */
313struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np)
314{
315 if (!np)
266 return NULL; 316 return NULL;
267 317
268 spin_lock_irqsave(&dm_timer_lock, flags); 318 return _omap_dm_timer_request(REQUEST_BY_NODE, np);
269 list_for_each_entry(t, &omap_timer_list, node) {
270 if ((!t->reserved) && ((t->capability & cap) == cap)) {
271 /*
272 * If timer is not NULL, we have already found one timer
273 * but it was not an exact match because it had more
274 * capabilites that what was required. Therefore,
275 * unreserve the last timer found and see if this one
276 * is a better match.
277 */
278 if (timer)
279 timer->reserved = 0;
280
281 timer = t;
282 timer->reserved = 1;
283
284 /* Exit loop early if we find an exact match */
285 if (t->capability == cap)
286 break;
287 }
288 }
289 spin_unlock_irqrestore(&dm_timer_lock, flags);
290
291 if (timer && omap_dm_timer_prepare(timer)) {
292 timer->reserved = 0;
293 timer = NULL;
294 }
295
296 if (!timer)
297 pr_debug("%s: timer request failed!\n", __func__);
298
299 return timer;
300} 319}
301EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap); 320EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_node);
302 321
303int omap_dm_timer_free(struct omap_dm_timer *timer) 322int omap_dm_timer_free(struct omap_dm_timer *timer)
304{ 323{
@@ -315,7 +334,21 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_free);
315 334
316void omap_dm_timer_enable(struct omap_dm_timer *timer) 335void omap_dm_timer_enable(struct omap_dm_timer *timer)
317{ 336{
337 int c;
338
318 pm_runtime_get_sync(&timer->pdev->dev); 339 pm_runtime_get_sync(&timer->pdev->dev);
340
341 if (!(timer->capability & OMAP_TIMER_ALWON)) {
342 if (timer->get_context_loss_count) {
343 c = timer->get_context_loss_count(&timer->pdev->dev);
344 if (c != timer->ctx_loss_count) {
345 omap_timer_restore_context(timer);
346 timer->ctx_loss_count = c;
347 }
348 } else {
349 omap_timer_restore_context(timer);
350 }
351 }
319} 352}
320EXPORT_SYMBOL_GPL(omap_dm_timer_enable); 353EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
321 354
@@ -410,13 +443,6 @@ int omap_dm_timer_start(struct omap_dm_timer *timer)
410 443
411 omap_dm_timer_enable(timer); 444 omap_dm_timer_enable(timer);
412 445
413 if (!(timer->capability & OMAP_TIMER_ALWON)) {
414 if (timer->get_context_loss_count &&
415 timer->get_context_loss_count(&timer->pdev->dev) !=
416 timer->ctx_loss_count)
417 omap_timer_restore_context(timer);
418 }
419
420 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); 446 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
421 if (!(l & OMAP_TIMER_CTRL_ST)) { 447 if (!(l & OMAP_TIMER_CTRL_ST)) {
422 l |= OMAP_TIMER_CTRL_ST; 448 l |= OMAP_TIMER_CTRL_ST;
@@ -441,12 +467,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
441 467
442 __omap_dm_timer_stop(timer, timer->posted, rate); 468 __omap_dm_timer_stop(timer, timer->posted, rate);
443 469
444 if (!(timer->capability & OMAP_TIMER_ALWON)) {
445 if (timer->get_context_loss_count)
446 timer->ctx_loss_count =
447 timer->get_context_loss_count(&timer->pdev->dev);
448 }
449
450 /* 470 /*
451 * Since the register values are computed and written within 471 * Since the register values are computed and written within
452 * __omap_dm_timer_stop, we need to use read to retrieve the 472 * __omap_dm_timer_stop, we need to use read to retrieve the
@@ -553,13 +573,6 @@ int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
553 573
554 omap_dm_timer_enable(timer); 574 omap_dm_timer_enable(timer);
555 575
556 if (!(timer->capability & OMAP_TIMER_ALWON)) {
557 if (timer->get_context_loss_count &&
558 timer->get_context_loss_count(&timer->pdev->dev) !=
559 timer->ctx_loss_count)
560 omap_timer_restore_context(timer);
561 }
562
563 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); 576 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
564 if (autoreload) { 577 if (autoreload) {
565 l |= OMAP_TIMER_CTRL_AR; 578 l |= OMAP_TIMER_CTRL_AR;
@@ -770,6 +783,8 @@ int omap_dm_timers_active(void)
770} 783}
771EXPORT_SYMBOL_GPL(omap_dm_timers_active); 784EXPORT_SYMBOL_GPL(omap_dm_timers_active);
772 785
786static const struct of_device_id omap_timer_match[];
787
773/** 788/**
774 * omap_dm_timer_probe - probe function called for every registered device 789 * omap_dm_timer_probe - probe function called for every registered device
775 * @pdev: pointer to current timer platform device 790 * @pdev: pointer to current timer platform device
@@ -783,7 +798,11 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
783 struct omap_dm_timer *timer; 798 struct omap_dm_timer *timer;
784 struct resource *mem, *irq; 799 struct resource *mem, *irq;
785 struct device *dev = &pdev->dev; 800 struct device *dev = &pdev->dev;
786 struct dmtimer_platform_data *pdata = pdev->dev.platform_data; 801 const struct of_device_id *match;
802 const struct dmtimer_platform_data *pdata;
803
804 match = of_match_device(of_match_ptr(omap_timer_match), dev);
805 pdata = match ? match->data : dev->platform_data;
787 806
788 if (!pdata && !dev->of_node) { 807 if (!pdata && !dev->of_node) {
789 dev_err(dev, "%s: no platform data.\n", __func__); 808 dev_err(dev, "%s: no platform data.\n", __func__);
@@ -823,12 +842,14 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
823 timer->capability |= OMAP_TIMER_SECURE; 842 timer->capability |= OMAP_TIMER_SECURE;
824 } else { 843 } else {
825 timer->id = pdev->id; 844 timer->id = pdev->id;
826 timer->errata = pdata->timer_errata;
827 timer->capability = pdata->timer_capability; 845 timer->capability = pdata->timer_capability;
828 timer->reserved = omap_dm_timer_reserved_systimer(timer->id); 846 timer->reserved = omap_dm_timer_reserved_systimer(timer->id);
829 timer->get_context_loss_count = pdata->get_context_loss_count; 847 timer->get_context_loss_count = pdata->get_context_loss_count;
830 } 848 }
831 849
850 if (pdata)
851 timer->errata = pdata->timer_errata;
852
832 timer->irq = irq->start; 853 timer->irq = irq->start;
833 timer->pdev = pdev; 854 timer->pdev = pdev;
834 855
@@ -881,8 +902,34 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
881 return ret; 902 return ret;
882} 903}
883 904
905static const struct dmtimer_platform_data omap3plus_pdata = {
906 .timer_errata = OMAP_TIMER_ERRATA_I103_I767,
907};
908
884static const struct of_device_id omap_timer_match[] = { 909static const struct of_device_id omap_timer_match[] = {
885 { .compatible = "ti,omap2-timer", }, 910 {
911 .compatible = "ti,omap2420-timer",
912 },
913 {
914 .compatible = "ti,omap3430-timer",
915 .data = &omap3plus_pdata,
916 },
917 {
918 .compatible = "ti,omap4430-timer",
919 .data = &omap3plus_pdata,
920 },
921 {
922 .compatible = "ti,omap5430-timer",
923 .data = &omap3plus_pdata,
924 },
925 {
926 .compatible = "ti,am335x-timer",
927 .data = &omap3plus_pdata,
928 },
929 {
930 .compatible = "ti,am335x-timer-1ms",
931 .data = &omap3plus_pdata,
932 },
886 {}, 933 {},
887}; 934};
888MODULE_DEVICE_TABLE(of, omap_timer_match); 935MODULE_DEVICE_TABLE(of, omap_timer_match);
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index a3fbc48c332e..fb92abb91628 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -128,6 +128,7 @@ int omap_dm_timer_reserve_systimer(int id);
128struct omap_dm_timer *omap_dm_timer_request(void); 128struct omap_dm_timer *omap_dm_timer_request(void);
129struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id); 129struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id);
130struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap); 130struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap);
131struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np);
131int omap_dm_timer_free(struct omap_dm_timer *timer); 132int omap_dm_timer_free(struct omap_dm_timer *timer);
132void omap_dm_timer_enable(struct omap_dm_timer *timer); 133void omap_dm_timer_enable(struct omap_dm_timer *timer);
133void omap_dm_timer_disable(struct omap_dm_timer *timer); 134void omap_dm_timer_disable(struct omap_dm_timer *timer);