diff options
Diffstat (limited to 'arch')
213 files changed, 5554 insertions, 3865 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index a1c776b8dcec..fb1ee1c07021 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile | |||
@@ -299,9 +299,11 @@ dtb-$(CONFIG_SOC_IMX6Q) += \ | |||
299 | imx6q-wandboard.dtb \ | 299 | imx6q-wandboard.dtb \ |
300 | imx6q-wandboard-revb1.dtb | 300 | imx6q-wandboard-revb1.dtb |
301 | dtb-$(CONFIG_SOC_IMX6SL) += \ | 301 | dtb-$(CONFIG_SOC_IMX6SL) += \ |
302 | imx6sl-evk.dtb | 302 | imx6sl-evk.dtb \ |
303 | imx6sl-warp.dtb | ||
303 | dtb-$(CONFIG_SOC_IMX6SX) += \ | 304 | dtb-$(CONFIG_SOC_IMX6SX) += \ |
304 | imx6sx-sabreauto.dtb \ | 305 | imx6sx-sabreauto.dtb \ |
306 | imx6sx-sdb-reva.dtb \ | ||
305 | imx6sx-sdb.dtb | 307 | imx6sx-sdb.dtb |
306 | dtb-$(CONFIG_SOC_LS1021A) += \ | 308 | dtb-$(CONFIG_SOC_LS1021A) += \ |
307 | ls1021a-qds.dtb \ | 309 | ls1021a-qds.dtb \ |
@@ -386,6 +388,8 @@ dtb-$(CONFIG_ARCH_OMAP3) += \ | |||
386 | omap3-overo-storm-tobi.dtb \ | 388 | omap3-overo-storm-tobi.dtb \ |
387 | omap3-overo-summit.dtb \ | 389 | omap3-overo-summit.dtb \ |
388 | omap3-overo-tobi.dtb \ | 390 | omap3-overo-tobi.dtb \ |
391 | omap3-pandora-600mhz.dtb \ | ||
392 | omap3-pandora-1ghz.dtb \ | ||
389 | omap3-sbc-t3517.dtb \ | 393 | omap3-sbc-t3517.dtb \ |
390 | omap3-sbc-t3530.dtb \ | 394 | omap3-sbc-t3530.dtb \ |
391 | omap3-sbc-t3730.dtb \ | 395 | omap3-sbc-t3730.dtb \ |
@@ -401,7 +405,8 @@ dtb-$(CONFIG_SOC_AM33XX) += \ | |||
401 | am335x-evmsk.dtb \ | 405 | am335x-evmsk.dtb \ |
402 | am335x-nano.dtb \ | 406 | am335x-nano.dtb \ |
403 | am335x-pepper.dtb \ | 407 | am335x-pepper.dtb \ |
404 | am335x-lxm.dtb | 408 | am335x-lxm.dtb \ |
409 | am335x-chiliboard.dtb | ||
405 | dtb-$(CONFIG_ARCH_OMAP4) += \ | 410 | dtb-$(CONFIG_ARCH_OMAP4) += \ |
406 | omap4-duovero-parlor.dtb \ | 411 | omap4-duovero-parlor.dtb \ |
407 | omap4-panda.dtb \ | 412 | omap4-panda.dtb \ |
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi index 6cc25ed912ee..2c6248d9a9ef 100644 --- a/arch/arm/boot/dts/am335x-bone-common.dtsi +++ b/arch/arm/boot/dts/am335x-bone-common.dtsi | |||
@@ -195,6 +195,7 @@ | |||
195 | 195 | ||
196 | &usb0 { | 196 | &usb0 { |
197 | status = "okay"; | 197 | status = "okay"; |
198 | dr_mode = "peripheral"; | ||
198 | }; | 199 | }; |
199 | 200 | ||
200 | &usb1 { | 201 | &usb1 { |
diff --git a/arch/arm/boot/dts/am335x-chiliboard.dts b/arch/arm/boot/dts/am335x-chiliboard.dts new file mode 100644 index 000000000000..310da20a8aa7 --- /dev/null +++ b/arch/arm/boot/dts/am335x-chiliboard.dts | |||
@@ -0,0 +1,112 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 Jablotron s.r.o. -- http://www.jablotron.com/ | ||
3 | * Author: Rostislav Lisovy <lisovy@jablotron.cz> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | /dts-v1/; | ||
10 | #include "am335x-chilisom.dtsi" | ||
11 | |||
12 | / { | ||
13 | model = "AM335x Chiliboard"; | ||
14 | compatible = "grinn,am335x-chiliboard", "grinn,am335x-chilisom", | ||
15 | "ti,am33xx"; | ||
16 | |||
17 | leds { | ||
18 | compatible = "gpio-leds"; | ||
19 | pinctrl-names = "default"; | ||
20 | pinctrl-0 = <&led_gpio_pins>; | ||
21 | |||
22 | led0 { | ||
23 | label = "led0"; | ||
24 | gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; | ||
25 | default-state = "keep"; | ||
26 | linux,default-trigger = "heartbeat"; | ||
27 | }; | ||
28 | |||
29 | led1 { | ||
30 | label = "led1"; | ||
31 | gpios = <&gpio3 8 GPIO_ACTIVE_LOW>; | ||
32 | default-state = "keep"; | ||
33 | }; | ||
34 | }; | ||
35 | }; | ||
36 | |||
37 | &am33xx_pinmux { | ||
38 | usb1_drvvbus: usb1_drvvbus { | ||
39 | pinctrl-single,pins = < | ||
40 | 0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* usb1_drvvbus.usb1_drvvbus */ | ||
41 | >; | ||
42 | }; | ||
43 | |||
44 | sd_pins: pinmux_sd_card { | ||
45 | pinctrl-single,pins = < | ||
46 | 0xf0 (PIN_INPUT | MUX_MODE0) /* mmc0_dat0.mmc0_dat0 */ | ||
47 | 0xf4 (PIN_INPUT | MUX_MODE0) /* mmc0_dat1.mmc0_dat1 */ | ||
48 | 0xf8 (PIN_INPUT | MUX_MODE0) /* mmc0_dat2.mmc0_dat2 */ | ||
49 | 0xfc (PIN_INPUT | MUX_MODE0) /* mmc0_dat3.mmc0_dat3 */ | ||
50 | 0x100 (PIN_INPUT | MUX_MODE0) /* mmc0_clk.mmc0_clk */ | ||
51 | 0x104 (PIN_INPUT | MUX_MODE0) /* mmc0_cmd.mmc0_cmd */ | ||
52 | 0x160 (PIN_INPUT | MUX_MODE7) /* spi0_cs1.gpio0_6 */ | ||
53 | >; | ||
54 | }; | ||
55 | |||
56 | led_gpio_pins: led_gpio_pins { | ||
57 | pinctrl-single,pins = < | ||
58 | 0x1e4 (PIN_OUTPUT | MUX_MODE7) /* emu0.gpio3_7 */ | ||
59 | 0x1e8 (PIN_OUTPUT | MUX_MODE7) /* emu1.gpio3_8 */ | ||
60 | >; | ||
61 | }; | ||
62 | }; | ||
63 | |||
64 | &ldo4_reg { | ||
65 | regulator-min-microvolt = <3300000>; | ||
66 | regulator-max-microvolt = <3300000>; | ||
67 | }; | ||
68 | |||
69 | /* Ethernet */ | ||
70 | &cpsw_emac0 { | ||
71 | phy_id = <&davinci_mdio>, <0>; | ||
72 | phy-mode = "rmii"; | ||
73 | }; | ||
74 | |||
75 | &phy_sel { | ||
76 | rmii-clock-ext; | ||
77 | }; | ||
78 | |||
79 | /* USB */ | ||
80 | &usb { | ||
81 | status = "okay"; | ||
82 | }; | ||
83 | |||
84 | &usb_ctrl_mod { | ||
85 | status = "okay"; | ||
86 | }; | ||
87 | |||
88 | &usb1_phy { | ||
89 | status = "okay"; | ||
90 | }; | ||
91 | |||
92 | &usb1 { | ||
93 | pinctrl-names = "default"; | ||
94 | pinctrl-0 = <&usb1_drvvbus>; | ||
95 | |||
96 | status = "okay"; | ||
97 | dr_mode = "host"; | ||
98 | }; | ||
99 | |||
100 | &cppi41dma { | ||
101 | status = "okay"; | ||
102 | }; | ||
103 | |||
104 | /* microSD */ | ||
105 | &mmc1 { | ||
106 | pinctrl-names = "default"; | ||
107 | pinctrl-0 = <&sd_pins>; | ||
108 | vmmc-supply = <&ldo4_reg>; | ||
109 | bus-width = <0x4>; | ||
110 | cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; | ||
111 | status = "okay"; | ||
112 | }; | ||
diff --git a/arch/arm/boot/dts/am335x-chilisom.dtsi b/arch/arm/boot/dts/am335x-chilisom.dtsi new file mode 100644 index 000000000000..7e9a34dffe21 --- /dev/null +++ b/arch/arm/boot/dts/am335x-chilisom.dtsi | |||
@@ -0,0 +1,239 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 Jablotron s.r.o. -- http://www.jablotron.com/ | ||
3 | * Author: Rostislav Lisovy <lisovy@jablotron.cz> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | #include "am33xx.dtsi" | ||
10 | |||
11 | / { | ||
12 | model = "Grinn AM335x ChiliSOM"; | ||
13 | compatible = "grinn,am335x-chilisom", "ti,am33xx"; | ||
14 | |||
15 | cpus { | ||
16 | cpu@0 { | ||
17 | cpu0-supply = <&dcdc2_reg>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | memory { | ||
22 | device_type = "memory"; | ||
23 | reg = <0x80000000 0x20000000>; /* 512 MB */ | ||
24 | }; | ||
25 | }; | ||
26 | |||
27 | &am33xx_pinmux { | ||
28 | pinctrl-names = "default"; | ||
29 | |||
30 | i2c0_pins: pinmux_i2c0_pins { | ||
31 | pinctrl-single,pins = < | ||
32 | 0x188 (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_sda.i2c0_sda */ | ||
33 | 0x18c (PIN_INPUT_PULLUP | MUX_MODE0) /* i2c0_scl.i2c0_scl */ | ||
34 | >; | ||
35 | }; | ||
36 | |||
37 | uart0_pins: pinmux_uart0_pins { | ||
38 | pinctrl-single,pins = < | ||
39 | 0x170 (PIN_INPUT_PULLUP | MUX_MODE0) /* uart0_rxd.uart0_rxd */ | ||
40 | 0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */ | ||
41 | >; | ||
42 | }; | ||
43 | |||
44 | cpsw_default: cpsw_default { | ||
45 | pinctrl-single,pins = < | ||
46 | /* Slave 1 */ | ||
47 | 0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1) /* mii1_crs.rmii1_crs */ | ||
48 | 0x110 (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxerr.rmii1_rxerr */ | ||
49 | 0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */ | ||
50 | 0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */ | ||
51 | 0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */ | ||
52 | 0x13c (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd1.rmii1_rxd1 */ | ||
53 | 0x140 (PIN_INPUT_PULLUP | MUX_MODE1) /* mii1_rxd0.rmii1_rxd0 */ | ||
54 | 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* rmii1_ref_clk.rmii_ref_clk */ | ||
55 | >; | ||
56 | }; | ||
57 | |||
58 | cpsw_sleep: cpsw_sleep { | ||
59 | pinctrl-single,pins = < | ||
60 | /* Slave 1 reset value */ | ||
61 | 0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
62 | 0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
63 | 0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
64 | 0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
65 | 0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
66 | 0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
67 | 0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
68 | 0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
69 | 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
70 | >; | ||
71 | }; | ||
72 | |||
73 | davinci_mdio_default: davinci_mdio_default { | ||
74 | pinctrl-single,pins = < | ||
75 | /* mdio_data.mdio_data */ | ||
76 | 0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0) | ||
77 | /* mdio_clk.mdio_clk */ | ||
78 | 0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0) | ||
79 | >; | ||
80 | }; | ||
81 | |||
82 | davinci_mdio_sleep: davinci_mdio_sleep { | ||
83 | pinctrl-single,pins = < | ||
84 | /* MDIO reset value */ | ||
85 | 0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
86 | 0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7) | ||
87 | >; | ||
88 | }; | ||
89 | |||
90 | nandflash_pins: nandflash_pins { | ||
91 | pinctrl-single,pins = < | ||
92 | 0x00 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad0.gpmc_ad0 */ | ||
93 | 0x04 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad1.gpmc_ad1 */ | ||
94 | 0x08 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad2.gpmc_ad2 */ | ||
95 | 0x0c (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad3.gpmc_ad3 */ | ||
96 | 0x10 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad4.gpmc_ad4 */ | ||
97 | 0x14 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad5.gpmc_ad5 */ | ||
98 | 0x18 (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad6.gpmc_ad6 */ | ||
99 | 0x1c (PIN_INPUT_PULLDOWN | MUX_MODE0) /* gpmc_ad7.gpmc_ad7 */ | ||
100 | |||
101 | 0x70 (PIN_INPUT_PULLUP | MUX_MODE0) /* gpmc_wait0.gpmc_wait0 */ | ||
102 | 0x7c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_csn0.gpmc_csn0 */ | ||
103 | 0x90 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_advn_ale.gpmc_advn_ale */ | ||
104 | 0x94 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_oen_ren.gpmc_oen_ren */ | ||
105 | 0x98 (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_wen.gpmc_wen */ | ||
106 | 0x9c (PIN_OUTPUT_PULLUP | MUX_MODE0) /* gpmc_be0n_cle.gpmc_be0n_cle */ | ||
107 | >; | ||
108 | }; | ||
109 | }; | ||
110 | |||
111 | &uart0 { | ||
112 | pinctrl-names = "default"; | ||
113 | pinctrl-0 = <&uart0_pins>; | ||
114 | |||
115 | status = "okay"; | ||
116 | }; | ||
117 | |||
118 | &i2c0 { | ||
119 | pinctrl-names = "default"; | ||
120 | pinctrl-0 = <&i2c0_pins>; | ||
121 | |||
122 | status = "okay"; | ||
123 | clock-frequency = <400000>; | ||
124 | |||
125 | tps: tps@24 { | ||
126 | reg = <0x24>; | ||
127 | }; | ||
128 | |||
129 | }; | ||
130 | |||
131 | /include/ "tps65217.dtsi" | ||
132 | |||
133 | &tps { | ||
134 | regulators { | ||
135 | dcdc1_reg: regulator@0 { | ||
136 | regulator-name = "vdds_dpr"; | ||
137 | regulator-always-on; | ||
138 | }; | ||
139 | |||
140 | dcdc2_reg: regulator@1 { | ||
141 | /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */ | ||
142 | regulator-name = "vdd_mpu"; | ||
143 | regulator-min-microvolt = <925000>; | ||
144 | regulator-max-microvolt = <1325000>; | ||
145 | regulator-boot-on; | ||
146 | regulator-always-on; | ||
147 | }; | ||
148 | |||
149 | dcdc3_reg: regulator@2 { | ||
150 | /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */ | ||
151 | regulator-name = "vdd_core"; | ||
152 | regulator-min-microvolt = <925000>; | ||
153 | regulator-max-microvolt = <1150000>; | ||
154 | regulator-boot-on; | ||
155 | regulator-always-on; | ||
156 | }; | ||
157 | |||
158 | ldo1_reg: regulator@3 { | ||
159 | regulator-name = "vio,vrtc,vdds"; | ||
160 | regulator-boot-on; | ||
161 | regulator-always-on; | ||
162 | }; | ||
163 | |||
164 | ldo2_reg: regulator@4 { | ||
165 | regulator-name = "vdd_3v3aux"; | ||
166 | regulator-boot-on; | ||
167 | regulator-always-on; | ||
168 | }; | ||
169 | |||
170 | ldo3_reg: regulator@5 { | ||
171 | regulator-name = "vdd_1v8"; | ||
172 | regulator-boot-on; | ||
173 | regulator-always-on; | ||
174 | }; | ||
175 | |||
176 | ldo4_reg: regulator@6 { | ||
177 | regulator-name = "vdd_3v3d"; | ||
178 | regulator-boot-on; | ||
179 | regulator-always-on; | ||
180 | }; | ||
181 | }; | ||
182 | }; | ||
183 | |||
184 | /* Ethernet MAC */ | ||
185 | &mac { | ||
186 | slaves = <1>; | ||
187 | pinctrl-names = "default", "sleep"; | ||
188 | pinctrl-0 = <&cpsw_default>; | ||
189 | pinctrl-1 = <&cpsw_sleep>; | ||
190 | status = "okay"; | ||
191 | }; | ||
192 | |||
193 | &davinci_mdio { | ||
194 | pinctrl-names = "default", "sleep"; | ||
195 | pinctrl-0 = <&davinci_mdio_default>; | ||
196 | pinctrl-1 = <&davinci_mdio_sleep>; | ||
197 | status = "okay"; | ||
198 | }; | ||
199 | |||
200 | /* NAND Flash */ | ||
201 | &elm { | ||
202 | status = "okay"; | ||
203 | }; | ||
204 | |||
205 | &gpmc { | ||
206 | status = "okay"; | ||
207 | pinctrl-names = "default"; | ||
208 | pinctrl-0 = <&nandflash_pins>; | ||
209 | ranges = <0 0 0x08000000 0x01000000>; /* CS0 0 @addr 0x08000000, size 0x01000000 */ | ||
210 | nand@0,0 { | ||
211 | reg = <0 0 4>; /* CS0, offset 0, IO size 4 */ | ||
212 | ti,nand-ecc-opt = "bch8"; | ||
213 | ti,elm-id = <&elm>; | ||
214 | nand-bus-width = <8>; | ||
215 | gpmc,device-width = <1>; | ||
216 | gpmc,sync-clk-ps = <0>; | ||
217 | gpmc,cs-on-ns = <0>; | ||
218 | gpmc,cs-rd-off-ns = <44>; | ||
219 | gpmc,cs-wr-off-ns = <44>; | ||
220 | gpmc,adv-on-ns = <6>; | ||
221 | gpmc,adv-rd-off-ns = <34>; | ||
222 | gpmc,adv-wr-off-ns = <44>; | ||
223 | gpmc,we-on-ns = <0>; | ||
224 | gpmc,we-off-ns = <40>; | ||
225 | gpmc,oe-on-ns = <0>; | ||
226 | gpmc,oe-off-ns = <54>; | ||
227 | gpmc,access-ns = <64>; | ||
228 | gpmc,rd-cycle-ns = <82>; | ||
229 | gpmc,wr-cycle-ns = <82>; | ||
230 | gpmc,wait-on-read = "true"; | ||
231 | gpmc,wait-on-write = "true"; | ||
232 | gpmc,bus-turnaround-ns = <0>; | ||
233 | gpmc,cycle2cycle-delay-ns = <0>; | ||
234 | gpmc,clk-activation-ns = <0>; | ||
235 | gpmc,wait-monitoring-ns = <0>; | ||
236 | gpmc,wr-access-ns = <40>; | ||
237 | gpmc,wr-data-mux-bus-ns = <0>; | ||
238 | }; | ||
239 | }; | ||
diff --git a/arch/arm/boot/dts/am335x-nano.dts b/arch/arm/boot/dts/am335x-nano.dts index a3466455b171..5ed4ca6eaf55 100644 --- a/arch/arm/boot/dts/am335x-nano.dts +++ b/arch/arm/boot/dts/am335x-nano.dts | |||
@@ -213,7 +213,9 @@ | |||
213 | pinctrl-0 = <&i2c0_pins>; | 213 | pinctrl-0 = <&i2c0_pins>; |
214 | 214 | ||
215 | gpio@20 { | 215 | gpio@20 { |
216 | compatible = "mcp,mcp23017"; | 216 | compatible = "microchip,mcp23017"; |
217 | gpio-controller; | ||
218 | #gpio-cells = <2>; | ||
217 | reg = <0x20>; | 219 | reg = <0x20>; |
218 | }; | 220 | }; |
219 | 221 | ||
@@ -222,7 +224,7 @@ | |||
222 | }; | 224 | }; |
223 | 225 | ||
224 | eeprom@53 { | 226 | eeprom@53 { |
225 | compatible = "mcp,24c02"; | 227 | compatible = "microchip,24c02"; |
226 | reg = <0x53>; | 228 | reg = <0x53>; |
227 | pagesize = <8>; | 229 | pagesize = <8>; |
228 | }; | 230 | }; |
@@ -297,8 +299,8 @@ | |||
297 | | |-->0x004FFFFF-> Kernel end | 299 | | |-->0x004FFFFF-> Kernel end |
298 | | |-->0x00500000-> File system start | 300 | | |-->0x00500000-> File system start |
299 | | | | 301 | | | |
300 | | |-->0x014FFFFF-> File system end | 302 | | |-->0x01FFFFFF-> File system end |
301 | | |-->0x01500000-> User data start | 303 | | |-->0x02000000-> User data start |
302 | | | | 304 | | | |
303 | | |-->0x03FFFFFF-> User data end | 305 | | |-->0x03FFFFFF-> User data end |
304 | | |-->0x04000000-> Data storage start | 306 | | |-->0x04000000-> Data storage start |
@@ -327,12 +329,12 @@ | |||
327 | 329 | ||
328 | partition@4 { | 330 | partition@4 { |
329 | label = "rootfs"; | 331 | label = "rootfs"; |
330 | reg = <0x00500000 0x01000000>; /* 16MB */ | 332 | reg = <0x00500000 0x01b00000>; /* 27MB */ |
331 | }; | 333 | }; |
332 | 334 | ||
333 | partition@5 { | 335 | partition@5 { |
334 | label = "user"; | 336 | label = "user"; |
335 | reg = <0x01500000 0x02b00000>; /* 43MB */ | 337 | reg = <0x02000000 0x02000000>; /* 32MB */ |
336 | }; | 338 | }; |
337 | 339 | ||
338 | partition@6 { | 340 | partition@6 { |
@@ -343,7 +345,7 @@ | |||
343 | }; | 345 | }; |
344 | 346 | ||
345 | &mac { | 347 | &mac { |
346 | dual_emac = <1>; | 348 | dual_emac; |
347 | status = "okay"; | 349 | status = "okay"; |
348 | }; | 350 | }; |
349 | 351 | ||
@@ -353,11 +355,13 @@ | |||
353 | 355 | ||
354 | &cpsw_emac0 { | 356 | &cpsw_emac0 { |
355 | phy_id = <&davinci_mdio>, <0>; | 357 | phy_id = <&davinci_mdio>, <0>; |
358 | phy-mode = "mii"; | ||
356 | dual_emac_res_vlan = <1>; | 359 | dual_emac_res_vlan = <1>; |
357 | }; | 360 | }; |
358 | 361 | ||
359 | &cpsw_emac1 { | 362 | &cpsw_emac1 { |
360 | phy_id = <&davinci_mdio>, <1>; | 363 | phy_id = <&davinci_mdio>, <1>; |
364 | phy-mode = "mii"; | ||
361 | dual_emac_res_vlan = <2>; | 365 | dual_emac_res_vlan = <2>; |
362 | }; | 366 | }; |
363 | 367 | ||
diff --git a/arch/arm/boot/dts/am33xx-clocks.dtsi b/arch/arm/boot/dts/am33xx-clocks.dtsi index 712edce7d6fb..236c78a3c6ca 100644 --- a/arch/arm/boot/dts/am33xx-clocks.dtsi +++ b/arch/arm/boot/dts/am33xx-clocks.dtsi | |||
@@ -7,7 +7,7 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | &scrm_clocks { | 10 | &scm_clocks { |
11 | sys_clkin_ck: sys_clkin_ck { | 11 | sys_clkin_ck: sys_clkin_ck { |
12 | #clock-cells = <0>; | 12 | #clock-cells = <0>; |
13 | compatible = "ti,mux-clock"; | 13 | compatible = "ti,mux-clock"; |
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi index acd37057bca9..21fcc440fc1a 100644 --- a/arch/arm/boot/dts/am33xx.dtsi +++ b/arch/arm/boot/dts/am33xx.dtsi | |||
@@ -83,20 +83,6 @@ | |||
83 | }; | 83 | }; |
84 | }; | 84 | }; |
85 | 85 | ||
86 | am33xx_control_module: control_module@4a002000 { | ||
87 | compatible = "syscon"; | ||
88 | reg = <0x44e10000 0x7fc>; | ||
89 | }; | ||
90 | |||
91 | am33xx_pinmux: pinmux@44e10800 { | ||
92 | compatible = "pinctrl-single"; | ||
93 | reg = <0x44e10800 0x0238>; | ||
94 | #address-cells = <1>; | ||
95 | #size-cells = <0>; | ||
96 | pinctrl-single,register-width = <32>; | ||
97 | pinctrl-single,function-mask = <0x7f>; | ||
98 | }; | ||
99 | |||
100 | /* | 86 | /* |
101 | * XXX: Use a flat representation of the AM33XX interconnect. | 87 | * XXX: Use a flat representation of the AM33XX interconnect. |
102 | * The real AM33XX interconnect network is quite complex. Since | 88 | * The real AM33XX interconnect network is quite complex. Since |
@@ -111,37 +97,58 @@ | |||
111 | ranges; | 97 | ranges; |
112 | ti,hwmods = "l3_main"; | 98 | ti,hwmods = "l3_main"; |
113 | 99 | ||
114 | prcm: prcm@44e00000 { | 100 | l4_wkup: l4_wkup@44c00000 { |
115 | compatible = "ti,am3-prcm"; | 101 | compatible = "ti,am3-l4-wkup", "simple-bus"; |
116 | reg = <0x44e00000 0x4000>; | 102 | #address-cells = <1>; |
117 | 103 | #size-cells = <1>; | |
118 | prcm_clocks: clocks { | 104 | ranges = <0 0x44c00000 0x280000>; |
119 | #address-cells = <1>; | ||
120 | #size-cells = <0>; | ||
121 | }; | ||
122 | 105 | ||
123 | prcm_clockdomains: clockdomains { | 106 | prcm: prcm@200000 { |
124 | }; | 107 | compatible = "ti,am3-prcm"; |
125 | }; | 108 | reg = <0x200000 0x4000>; |
126 | 109 | ||
127 | scrm: scrm@44e10000 { | 110 | prcm_clocks: clocks { |
128 | compatible = "ti,am3-scrm"; | 111 | #address-cells = <1>; |
129 | reg = <0x44e10000 0x2000>; | 112 | #size-cells = <0>; |
113 | }; | ||
130 | 114 | ||
131 | scrm_clocks: clocks { | 115 | prcm_clockdomains: clockdomains { |
132 | #address-cells = <1>; | 116 | }; |
133 | #size-cells = <0>; | ||
134 | }; | 117 | }; |
135 | 118 | ||
136 | scrm_clockdomains: clockdomains { | 119 | scm: scm@210000 { |
120 | compatible = "ti,am3-scm", "simple-bus"; | ||
121 | reg = <0x210000 0x2000>; | ||
122 | #address-cells = <1>; | ||
123 | #size-cells = <1>; | ||
124 | ranges = <0 0x210000 0x2000>; | ||
125 | |||
126 | am33xx_pinmux: pinmux@800 { | ||
127 | compatible = "pinctrl-single"; | ||
128 | reg = <0x800 0x238>; | ||
129 | #address-cells = <1>; | ||
130 | #size-cells = <0>; | ||
131 | pinctrl-single,register-width = <32>; | ||
132 | pinctrl-single,function-mask = <0x7f>; | ||
133 | }; | ||
134 | |||
135 | scm_conf: scm_conf@0 { | ||
136 | compatible = "syscon"; | ||
137 | reg = <0x0 0x800>; | ||
138 | #address-cells = <1>; | ||
139 | #size-cells = <1>; | ||
140 | |||
141 | scm_clocks: clocks { | ||
142 | #address-cells = <1>; | ||
143 | #size-cells = <0>; | ||
144 | }; | ||
145 | }; | ||
146 | |||
147 | scm_clockdomains: clockdomains { | ||
148 | }; | ||
137 | }; | 149 | }; |
138 | }; | 150 | }; |
139 | 151 | ||
140 | cm: syscon@44e10000 { | ||
141 | compatible = "ti,am33xx-controlmodule", "syscon"; | ||
142 | reg = <0x44e10000 0x800>; | ||
143 | }; | ||
144 | |||
145 | intc: interrupt-controller@48200000 { | 152 | intc: interrupt-controller@48200000 { |
146 | compatible = "ti,am33xx-intc"; | 153 | compatible = "ti,am33xx-intc"; |
147 | interrupt-controller; | 154 | interrupt-controller; |
@@ -350,7 +357,7 @@ | |||
350 | reg = <0x481cc000 0x2000>; | 357 | reg = <0x481cc000 0x2000>; |
351 | clocks = <&dcan0_fck>; | 358 | clocks = <&dcan0_fck>; |
352 | clock-names = "fck"; | 359 | clock-names = "fck"; |
353 | syscon-raminit = <&am33xx_control_module 0x644 0>; | 360 | syscon-raminit = <&scm_conf 0x644 0>; |
354 | interrupts = <52>; | 361 | interrupts = <52>; |
355 | status = "disabled"; | 362 | status = "disabled"; |
356 | }; | 363 | }; |
@@ -361,7 +368,7 @@ | |||
361 | reg = <0x481d0000 0x2000>; | 368 | reg = <0x481d0000 0x2000>; |
362 | clocks = <&dcan1_fck>; | 369 | clocks = <&dcan1_fck>; |
363 | clock-names = "fck"; | 370 | clock-names = "fck"; |
364 | syscon-raminit = <&am33xx_control_module 0x644 1>; | 371 | syscon-raminit = <&scm_conf 0x644 1>; |
365 | interrupts = <55>; | 372 | interrupts = <55>; |
366 | status = "disabled"; | 373 | status = "disabled"; |
367 | }; | 374 | }; |
@@ -720,7 +727,7 @@ | |||
720 | */ | 727 | */ |
721 | interrupts = <40 41 42 43>; | 728 | interrupts = <40 41 42 43>; |
722 | ranges; | 729 | ranges; |
723 | syscon = <&cm>; | 730 | syscon = <&scm_conf>; |
724 | status = "disabled"; | 731 | status = "disabled"; |
725 | 732 | ||
726 | davinci_mdio: mdio@4a101000 { | 733 | davinci_mdio: mdio@4a101000 { |
diff --git a/arch/arm/boot/dts/am3517.dtsi b/arch/arm/boot/dts/am3517.dtsi index c90724bded10..f164dce08755 100644 --- a/arch/arm/boot/dts/am3517.dtsi +++ b/arch/arm/boot/dts/am3517.dtsi | |||
@@ -31,7 +31,7 @@ | |||
31 | status = "disabled"; | 31 | status = "disabled"; |
32 | reg = <0x5c000000 0x30000>; | 32 | reg = <0x5c000000 0x30000>; |
33 | interrupts = <67 68 69 70>; | 33 | interrupts = <67 68 69 70>; |
34 | syscon = <&omap3_scm_general>; | 34 | syscon = <&scm_conf>; |
35 | ti,davinci-ctrl-reg-offset = <0x10000>; | 35 | ti,davinci-ctrl-reg-offset = <0x10000>; |
36 | ti,davinci-ctrl-mod-reg-offset = <0>; | 36 | ti,davinci-ctrl-mod-reg-offset = <0>; |
37 | ti,davinci-ctrl-ram-offset = <0x20000>; | 37 | ti,davinci-ctrl-ram-offset = <0x20000>; |
diff --git a/arch/arm/boot/dts/am35xx-clocks.dtsi b/arch/arm/boot/dts/am35xx-clocks.dtsi index df489d310b50..518b8fde88b0 100644 --- a/arch/arm/boot/dts/am35xx-clocks.dtsi +++ b/arch/arm/boot/dts/am35xx-clocks.dtsi | |||
@@ -7,7 +7,7 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | &scrm_clocks { | 10 | &scm_clocks { |
11 | emac_ick: emac_ick { | 11 | emac_ick: emac_ick { |
12 | #clock-cells = <0>; | 12 | #clock-cells = <0>; |
13 | compatible = "ti,am35xx-gate-clock"; | 13 | compatible = "ti,am35xx-gate-clock"; |
diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi index 1943fc333e7c..48c9bea8df10 100644 --- a/arch/arm/boot/dts/am4372.dtsi +++ b/arch/arm/boot/dts/am4372.dtsi | |||
@@ -57,22 +57,6 @@ | |||
57 | cache-level = <2>; | 57 | cache-level = <2>; |
58 | }; | 58 | }; |
59 | 59 | ||
60 | am43xx_control_module: control_module@4a002000 { | ||
61 | compatible = "syscon"; | ||
62 | reg = <0x44e10000 0x7f4>; | ||
63 | }; | ||
64 | |||
65 | am43xx_pinmux: pinmux@44e10800 { | ||
66 | compatible = "ti,am437-padconf", "pinctrl-single"; | ||
67 | reg = <0x44e10800 0x31c>; | ||
68 | #address-cells = <1>; | ||
69 | #size-cells = <0>; | ||
70 | #interrupt-cells = <1>; | ||
71 | interrupt-controller; | ||
72 | pinctrl-single,register-width = <32>; | ||
73 | pinctrl-single,function-mask = <0xffffffff>; | ||
74 | }; | ||
75 | |||
76 | ocp { | 60 | ocp { |
77 | compatible = "ti,am4372-l3-noc", "simple-bus"; | 61 | compatible = "ti,am4372-l3-noc", "simple-bus"; |
78 | #address-cells = <1>; | 62 | #address-cells = <1>; |
@@ -84,29 +68,58 @@ | |||
84 | interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, | 68 | interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, |
85 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; | 69 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; |
86 | 70 | ||
87 | prcm: prcm@44df0000 { | 71 | l4_wkup: l4_wkup@44c00000 { |
88 | compatible = "ti,am4-prcm"; | 72 | compatible = "ti,am4-l4-wkup", "simple-bus"; |
89 | reg = <0x44df0000 0x11000>; | 73 | #address-cells = <1>; |
90 | 74 | #size-cells = <1>; | |
91 | prcm_clocks: clocks { | 75 | ranges = <0 0x44c00000 0x287000>; |
92 | #address-cells = <1>; | ||
93 | #size-cells = <0>; | ||
94 | }; | ||
95 | 76 | ||
96 | prcm_clockdomains: clockdomains { | 77 | prcm: prcm@1f0000 { |
97 | }; | 78 | compatible = "ti,am4-prcm"; |
98 | }; | 79 | reg = <0x1f0000 0x11000>; |
99 | 80 | ||
100 | scrm: scrm@44e10000 { | 81 | prcm_clocks: clocks { |
101 | compatible = "ti,am4-scrm"; | 82 | #address-cells = <1>; |
102 | reg = <0x44e10000 0x2000>; | 83 | #size-cells = <0>; |
84 | }; | ||
103 | 85 | ||
104 | scrm_clocks: clocks { | 86 | prcm_clockdomains: clockdomains { |
105 | #address-cells = <1>; | 87 | }; |
106 | #size-cells = <0>; | ||
107 | }; | 88 | }; |
108 | 89 | ||
109 | scrm_clockdomains: clockdomains { | 90 | scm: scm@210000 { |
91 | compatible = "ti,am4-scm", "simple-bus"; | ||
92 | reg = <0x210000 0x4000>; | ||
93 | #address-cells = <1>; | ||
94 | #size-cells = <1>; | ||
95 | ranges = <0 0x210000 0x4000>; | ||
96 | |||
97 | am43xx_pinmux: pinmux@800 { | ||
98 | compatible = "ti,am437-padconf", | ||
99 | "pinctrl-single"; | ||
100 | reg = <0x800 0x31c>; | ||
101 | #address-cells = <1>; | ||
102 | #size-cells = <0>; | ||
103 | #interrupt-cells = <1>; | ||
104 | interrupt-controller; | ||
105 | pinctrl-single,register-width = <32>; | ||
106 | pinctrl-single,function-mask = <0xffffffff>; | ||
107 | }; | ||
108 | |||
109 | scm_conf: scm_conf@0 { | ||
110 | compatible = "syscon"; | ||
111 | reg = <0x0 0x800>; | ||
112 | #address-cells = <1>; | ||
113 | #size-cells = <1>; | ||
114 | |||
115 | scm_clocks: clocks { | ||
116 | #address-cells = <1>; | ||
117 | #size-cells = <0>; | ||
118 | }; | ||
119 | }; | ||
120 | |||
121 | scm_clockdomains: clockdomains { | ||
122 | }; | ||
110 | }; | 123 | }; |
111 | }; | 124 | }; |
112 | 125 | ||
@@ -787,7 +800,7 @@ | |||
787 | }; | 800 | }; |
788 | 801 | ||
789 | ocp2scp0: ocp2scp@483a8000 { | 802 | ocp2scp0: ocp2scp@483a8000 { |
790 | compatible = "ti,omap-ocp2scp"; | 803 | compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp"; |
791 | #address-cells = <1>; | 804 | #address-cells = <1>; |
792 | #size-cells = <1>; | 805 | #size-cells = <1>; |
793 | ranges; | 806 | ranges; |
@@ -806,7 +819,7 @@ | |||
806 | }; | 819 | }; |
807 | 820 | ||
808 | ocp2scp1: ocp2scp@483e8000 { | 821 | ocp2scp1: ocp2scp@483e8000 { |
809 | compatible = "ti,omap-ocp2scp"; | 822 | compatible = "ti,am437x-ocp2scp", "ti,omap-ocp2scp"; |
810 | #address-cells = <1>; | 823 | #address-cells = <1>; |
811 | #size-cells = <1>; | 824 | #size-cells = <1>; |
812 | ranges; | 825 | ranges; |
@@ -884,7 +897,7 @@ | |||
884 | }; | 897 | }; |
885 | 898 | ||
886 | hdq: hdq@48347000 { | 899 | hdq: hdq@48347000 { |
887 | compatible = "ti,am43xx-hdq"; | 900 | compatible = "ti,am4372-hdq"; |
888 | reg = <0x48347000 0x1000>; | 901 | reg = <0x48347000 0x1000>; |
889 | interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; | 902 | interrupts = <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>; |
890 | clocks = <&func_12m_clk>; | 903 | clocks = <&func_12m_clk>; |
@@ -933,7 +946,7 @@ | |||
933 | clocks = <&dcan0_fck>; | 946 | clocks = <&dcan0_fck>; |
934 | clock-names = "fck"; | 947 | clock-names = "fck"; |
935 | reg = <0x481cc000 0x2000>; | 948 | reg = <0x481cc000 0x2000>; |
936 | syscon-raminit = <&am43xx_control_module 0x644 0>; | 949 | syscon-raminit = <&scm_conf 0x644 0>; |
937 | interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; | 950 | interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; |
938 | status = "disabled"; | 951 | status = "disabled"; |
939 | }; | 952 | }; |
@@ -944,7 +957,7 @@ | |||
944 | clocks = <&dcan1_fck>; | 957 | clocks = <&dcan1_fck>; |
945 | clock-names = "fck"; | 958 | clock-names = "fck"; |
946 | reg = <0x481d0000 0x2000>; | 959 | reg = <0x481d0000 0x2000>; |
947 | syscon-raminit = <&am43xx_control_module 0x644 1>; | 960 | syscon-raminit = <&scm_conf 0x644 1>; |
948 | interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; | 961 | interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; |
949 | status = "disabled"; | 962 | status = "disabled"; |
950 | }; | 963 | }; |
diff --git a/arch/arm/boot/dts/am437x-idk-evm.dts b/arch/arm/boot/dts/am437x-idk-evm.dts index f9a17e2ca8cb..378344271746 100644 --- a/arch/arm/boot/dts/am437x-idk-evm.dts +++ b/arch/arm/boot/dts/am437x-idk-evm.dts | |||
@@ -133,17 +133,17 @@ | |||
133 | >; | 133 | >; |
134 | }; | 134 | }; |
135 | 135 | ||
136 | i2c1_pins_default: i2c1_pins_default { | 136 | i2c2_pins_default: i2c2_pins_default { |
137 | pinctrl-single,pins = < | 137 | pinctrl-single,pins = < |
138 | 0x15c (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_cs0.i2c1_scl */ | 138 | 0x1e8 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data1.i2c2_scl */ |
139 | 0x158 (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE2) /* spi0_d1.i2c1_sda */ | 139 | 0x1ec (PIN_INPUT | SLEWCTRL_FAST | MUX_MODE3) /* cam1_data0.i2c2_sda */ |
140 | >; | 140 | >; |
141 | }; | 141 | }; |
142 | 142 | ||
143 | i2c1_pins_sleep: i2c1_pins_sleep { | 143 | i2c2_pins_sleep: i2c2_pins_sleep { |
144 | pinctrl-single,pins = < | 144 | pinctrl-single,pins = < |
145 | 0x15c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* spi0_cs0.i2c1_scl */ | 145 | 0x1e8 (PIN_INPUT_PULLDOWN | MUX_MODE7) |
146 | 0x158 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* spi0_d1.i2c1_sda */ | 146 | 0x1ec (PIN_INPUT_PULLDOWN | MUX_MODE7) |
147 | >; | 147 | >; |
148 | }; | 148 | }; |
149 | 149 | ||
@@ -254,7 +254,7 @@ | |||
254 | status = "okay"; | 254 | status = "okay"; |
255 | pinctrl-names = "default", "sleep"; | 255 | pinctrl-names = "default", "sleep"; |
256 | pinctrl-0 = <&i2c0_pins_default>; | 256 | pinctrl-0 = <&i2c0_pins_default>; |
257 | pinctrl-1 = <&i2c0_pins_default>; | 257 | pinctrl-1 = <&i2c0_pins_sleep>; |
258 | clock-frequency = <400000>; | 258 | clock-frequency = <400000>; |
259 | 259 | ||
260 | at24@50 { | 260 | at24@50 { |
@@ -262,17 +262,10 @@ | |||
262 | pagesize = <64>; | 262 | pagesize = <64>; |
263 | reg = <0x50>; | 263 | reg = <0x50>; |
264 | }; | 264 | }; |
265 | }; | ||
266 | |||
267 | &i2c1 { | ||
268 | status = "okay"; | ||
269 | pinctrl-names = "default", "sleep"; | ||
270 | pinctrl-0 = <&i2c1_pins_default>; | ||
271 | pinctrl-1 = <&i2c1_pins_default>; | ||
272 | clock-frequency = <400000>; | ||
273 | 265 | ||
274 | tps: tps62362@60 { | 266 | tps: tps62362@60 { |
275 | compatible = "ti,tps62362"; | 267 | compatible = "ti,tps62362"; |
268 | reg = <0x60>; | ||
276 | regulator-name = "VDD_MPU"; | 269 | regulator-name = "VDD_MPU"; |
277 | regulator-min-microvolt = <950000>; | 270 | regulator-min-microvolt = <950000>; |
278 | regulator-max-microvolt = <1330000>; | 271 | regulator-max-microvolt = <1330000>; |
@@ -284,6 +277,14 @@ | |||
284 | }; | 277 | }; |
285 | }; | 278 | }; |
286 | 279 | ||
280 | &i2c2 { | ||
281 | status = "okay"; | ||
282 | pinctrl-names = "default", "sleep"; | ||
283 | pinctrl-0 = <&i2c2_pins_default>; | ||
284 | pinctrl-1 = <&i2c2_pins_sleep>; | ||
285 | clock-frequency = <100000>; | ||
286 | }; | ||
287 | |||
287 | &epwmss0 { | 288 | &epwmss0 { |
288 | status = "okay"; | 289 | status = "okay"; |
289 | }; | 290 | }; |
diff --git a/arch/arm/boot/dts/am43x-epos-evm.dts b/arch/arm/boot/dts/am43x-epos-evm.dts index 257c099c347e..72f01bb5d61c 100644 --- a/arch/arm/boot/dts/am43x-epos-evm.dts +++ b/arch/arm/boot/dts/am43x-epos-evm.dts | |||
@@ -69,7 +69,48 @@ | |||
69 | }; | 69 | }; |
70 | }; | 70 | }; |
71 | 71 | ||
72 | am43xx_pinmux: pinmux@44e10800 { | 72 | matrix_keypad: matrix_keypad@0 { |
73 | compatible = "gpio-matrix-keypad"; | ||
74 | debounce-delay-ms = <5>; | ||
75 | col-scan-delay-us = <2>; | ||
76 | |||
77 | row-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH /* Bank0, pin12 */ | ||
78 | &gpio0 13 GPIO_ACTIVE_HIGH /* Bank0, pin13 */ | ||
79 | &gpio0 14 GPIO_ACTIVE_HIGH /* Bank0, pin14 */ | ||
80 | &gpio0 15 GPIO_ACTIVE_HIGH>; /* Bank0, pin15 */ | ||
81 | |||
82 | col-gpios = <&gpio3 9 GPIO_ACTIVE_HIGH /* Bank3, pin9 */ | ||
83 | &gpio3 10 GPIO_ACTIVE_HIGH /* Bank3, pin10 */ | ||
84 | &gpio2 18 GPIO_ACTIVE_HIGH /* Bank2, pin18 */ | ||
85 | &gpio2 19 GPIO_ACTIVE_HIGH>; /* Bank2, pin19 */ | ||
86 | |||
87 | linux,keymap = <0x00000201 /* P1 */ | ||
88 | 0x01000204 /* P4 */ | ||
89 | 0x02000207 /* P7 */ | ||
90 | 0x0300020a /* NUMERIC_STAR */ | ||
91 | 0x00010202 /* P2 */ | ||
92 | 0x01010205 /* P5 */ | ||
93 | 0x02010208 /* P8 */ | ||
94 | 0x03010200 /* P0 */ | ||
95 | 0x00020203 /* P3 */ | ||
96 | 0x01020206 /* P6 */ | ||
97 | 0x02020209 /* P9 */ | ||
98 | 0x0302020b /* NUMERIC_POUND */ | ||
99 | 0x00030067 /* UP */ | ||
100 | 0x0103006a /* RIGHT */ | ||
101 | 0x0203006c /* DOWN */ | ||
102 | 0x03030069>; /* LEFT */ | ||
103 | }; | ||
104 | |||
105 | backlight { | ||
106 | compatible = "pwm-backlight"; | ||
107 | pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>; | ||
108 | brightness-levels = <0 51 53 56 62 75 101 152 255>; | ||
109 | default-brightness-level = <8>; | ||
110 | }; | ||
111 | }; | ||
112 | |||
113 | &am43xx_pinmux { | ||
73 | cpsw_default: cpsw_default { | 114 | cpsw_default: cpsw_default { |
74 | pinctrl-single,pins = < | 115 | pinctrl-single,pins = < |
75 | /* Slave 1 */ | 116 | /* Slave 1 */ |
@@ -279,47 +320,6 @@ | |||
279 | 0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) | 320 | 0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7) |
280 | >; | 321 | >; |
281 | }; | 322 | }; |
282 | }; | ||
283 | |||
284 | matrix_keypad: matrix_keypad@0 { | ||
285 | compatible = "gpio-matrix-keypad"; | ||
286 | debounce-delay-ms = <5>; | ||
287 | col-scan-delay-us = <2>; | ||
288 | |||
289 | row-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH /* Bank0, pin12 */ | ||
290 | &gpio0 13 GPIO_ACTIVE_HIGH /* Bank0, pin13 */ | ||
291 | &gpio0 14 GPIO_ACTIVE_HIGH /* Bank0, pin14 */ | ||
292 | &gpio0 15 GPIO_ACTIVE_HIGH>; /* Bank0, pin15 */ | ||
293 | |||
294 | col-gpios = <&gpio3 9 GPIO_ACTIVE_HIGH /* Bank3, pin9 */ | ||
295 | &gpio3 10 GPIO_ACTIVE_HIGH /* Bank3, pin10 */ | ||
296 | &gpio2 18 GPIO_ACTIVE_HIGH /* Bank2, pin18 */ | ||
297 | &gpio2 19 GPIO_ACTIVE_HIGH>; /* Bank2, pin19 */ | ||
298 | |||
299 | linux,keymap = <0x00000201 /* P1 */ | ||
300 | 0x01000204 /* P4 */ | ||
301 | 0x02000207 /* P7 */ | ||
302 | 0x0300020a /* NUMERIC_STAR */ | ||
303 | 0x00010202 /* P2 */ | ||
304 | 0x01010205 /* P5 */ | ||
305 | 0x02010208 /* P8 */ | ||
306 | 0x03010200 /* P0 */ | ||
307 | 0x00020203 /* P3 */ | ||
308 | 0x01020206 /* P6 */ | ||
309 | 0x02020209 /* P9 */ | ||
310 | 0x0302020b /* NUMERIC_POUND */ | ||
311 | 0x00030067 /* UP */ | ||
312 | 0x0103006a /* RIGHT */ | ||
313 | 0x0203006c /* DOWN */ | ||
314 | 0x03030069>; /* LEFT */ | ||
315 | }; | ||
316 | |||
317 | backlight { | ||
318 | compatible = "pwm-backlight"; | ||
319 | pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>; | ||
320 | brightness-levels = <0 51 53 56 62 75 101 152 255>; | ||
321 | default-brightness-level = <8>; | ||
322 | }; | ||
323 | }; | 323 | }; |
324 | 324 | ||
325 | &mmc1 { | 325 | &mmc1 { |
diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi b/arch/arm/boot/dts/am43xx-clocks.dtsi index c7dc9dab93a4..44869aa72642 100644 --- a/arch/arm/boot/dts/am43xx-clocks.dtsi +++ b/arch/arm/boot/dts/am43xx-clocks.dtsi | |||
@@ -7,7 +7,7 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | &scrm_clocks { | 10 | &scm_clocks { |
11 | sys_clkin_ck: sys_clkin_ck { | 11 | sys_clkin_ck: sys_clkin_ck { |
12 | #clock-cells = <0>; | 12 | #clock-cells = <0>; |
13 | compatible = "ti,mux-clock"; | 13 | compatible = "ti,mux-clock"; |
diff --git a/arch/arm/boot/dts/am57xx-beagle-x15.dts b/arch/arm/boot/dts/am57xx-beagle-x15.dts index 03750af3b49a..6a3621c23017 100644 --- a/arch/arm/boot/dts/am57xx-beagle-x15.dts +++ b/arch/arm/boot/dts/am57xx-beagle-x15.dts | |||
@@ -8,7 +8,6 @@ | |||
8 | /dts-v1/; | 8 | /dts-v1/; |
9 | 9 | ||
10 | #include "dra74x.dtsi" | 10 | #include "dra74x.dtsi" |
11 | #include <dt-bindings/clk/ti-dra7-atl.h> | ||
12 | #include <dt-bindings/gpio/gpio.h> | 11 | #include <dt-bindings/gpio/gpio.h> |
13 | #include <dt-bindings/interrupt-controller/irq.h> | 12 | #include <dt-bindings/interrupt-controller/irq.h> |
14 | 13 | ||
@@ -87,6 +86,7 @@ | |||
87 | gpios = <&tps659038_gpio 1 GPIO_ACTIVE_HIGH>; | 86 | gpios = <&tps659038_gpio 1 GPIO_ACTIVE_HIGH>; |
88 | gpio-fan,speed-map = <0 0>, | 87 | gpio-fan,speed-map = <0 0>, |
89 | <13000 1>; | 88 | <13000 1>; |
89 | #cooling-cells = <2>; | ||
90 | }; | 90 | }; |
91 | 91 | ||
92 | extcon_usb1: extcon_usb1 { | 92 | extcon_usb1: extcon_usb1 { |
@@ -442,6 +442,7 @@ | |||
442 | pinctrl-0 = <&tmp102_pins_default>; | 442 | pinctrl-0 = <&tmp102_pins_default>; |
443 | interrupt-parent = <&gpio7>; | 443 | interrupt-parent = <&gpio7>; |
444 | interrupts = <16 IRQ_TYPE_LEVEL_LOW>; | 444 | interrupts = <16 IRQ_TYPE_LEVEL_LOW>; |
445 | #thermal-sensor-cells = <1>; | ||
445 | }; | 446 | }; |
446 | }; | 447 | }; |
447 | 448 | ||
@@ -560,3 +561,50 @@ | |||
560 | &usb2 { | 561 | &usb2 { |
561 | dr_mode = "peripheral"; | 562 | dr_mode = "peripheral"; |
562 | }; | 563 | }; |
564 | |||
565 | &cpu_trips { | ||
566 | cpu_alert1: cpu_alert1 { | ||
567 | temperature = <50000>; /* millicelsius */ | ||
568 | hysteresis = <2000>; /* millicelsius */ | ||
569 | type = "active"; | ||
570 | }; | ||
571 | }; | ||
572 | |||
573 | &cpu_cooling_maps { | ||
574 | map1 { | ||
575 | trip = <&cpu_alert1>; | ||
576 | cooling-device = <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; | ||
577 | }; | ||
578 | }; | ||
579 | |||
580 | &thermal_zones { | ||
581 | board_thermal: board_thermal { | ||
582 | polling-delay-passive = <1250>; /* milliseconds */ | ||
583 | polling-delay = <1500>; /* milliseconds */ | ||
584 | |||
585 | /* sensor ID */ | ||
586 | thermal-sensors = <&tmp102 0>; | ||
587 | |||
588 | board_trips: trips { | ||
589 | board_alert0: board_alert { | ||
590 | temperature = <40000>; /* millicelsius */ | ||
591 | hysteresis = <2000>; /* millicelsius */ | ||
592 | type = "active"; | ||
593 | }; | ||
594 | |||
595 | board_crit: board_crit { | ||
596 | temperature = <105000>; /* millicelsius */ | ||
597 | hysteresis = <0>; /* millicelsius */ | ||
598 | type = "critical"; | ||
599 | }; | ||
600 | }; | ||
601 | |||
602 | board_cooling_maps: cooling-maps { | ||
603 | map0 { | ||
604 | trip = <&board_alert0>; | ||
605 | cooling-device = | ||
606 | <&gpio_fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; | ||
607 | }; | ||
608 | }; | ||
609 | }; | ||
610 | }; | ||
diff --git a/arch/arm/boot/dts/dm8168-evm.dts b/arch/arm/boot/dts/dm8168-evm.dts index 857d0289ad4d..dee39c3f830f 100644 --- a/arch/arm/boot/dts/dm8168-evm.dts +++ b/arch/arm/boot/dts/dm8168-evm.dts | |||
@@ -29,10 +29,22 @@ | |||
29 | &dm816x_pinmux { | 29 | &dm816x_pinmux { |
30 | mcspi1_pins: pinmux_mcspi1_pins { | 30 | mcspi1_pins: pinmux_mcspi1_pins { |
31 | pinctrl-single,pins = < | 31 | pinctrl-single,pins = < |
32 | DM816X_IOPAD(0x0a94, PIN_INPUT | MUX_MODE0) /* SPI_SCLK */ | 32 | DM816X_IOPAD(0x0a94, MUX_MODE0) /* SPI_SCLK */ |
33 | DM816X_IOPAD(0x0a98, PIN_OUTPUT | MUX_MODE0) /* SPI_SCS0 */ | 33 | DM816X_IOPAD(0x0a98, MUX_MODE0) /* SPI_SCS0 */ |
34 | DM816X_IOPAD(0x0aa8, PIN_INPUT | MUX_MODE0) /* SPI_D0 */ | 34 | DM816X_IOPAD(0x0aa8, MUX_MODE0) /* SPI_D0 */ |
35 | DM816X_IOPAD(0x0aac, PIN_INPUT | MUX_MODE0) /* SPI_D1 */ | 35 | DM816X_IOPAD(0x0aac, MUX_MODE0) /* SPI_D1 */ |
36 | >; | ||
37 | }; | ||
38 | |||
39 | usb0_pins: pinmux_usb0_pins { | ||
40 | pinctrl-single,pins = < | ||
41 | DM816X_IOPAD(0x0d04, MUX_MODE0) /* USB0_DRVVBUS */ | ||
42 | >; | ||
43 | }; | ||
44 | |||
45 | usb1_pins: pinmux_usb1_pins { | ||
46 | pinctrl-single,pins = < | ||
47 | DM816X_IOPAD(0x0d08, MUX_MODE0) /* USB1_DRVVBUS */ | ||
36 | >; | 48 | >; |
37 | }; | 49 | }; |
38 | }; | 50 | }; |
@@ -127,3 +139,16 @@ | |||
127 | &mmc1 { | 139 | &mmc1 { |
128 | vmmc-supply = <&vmmcsd_fixed>; | 140 | vmmc-supply = <&vmmcsd_fixed>; |
129 | }; | 141 | }; |
142 | |||
143 | /* At least dm8168-evm rev c won't support multipoint, later may */ | ||
144 | &usb0 { | ||
145 | pinctrl-names = "default"; | ||
146 | pinctrl-0 = <&usb0_pins>; | ||
147 | mentor,multipoint = <0>; | ||
148 | }; | ||
149 | |||
150 | &usb1 { | ||
151 | pinctrl-names = "default"; | ||
152 | pinctrl-0 = <&usb1_pins>; | ||
153 | mentor,multipoint = <0>; | ||
154 | }; | ||
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi index d98d0f7de380..90c820715521 100644 --- a/arch/arm/boot/dts/dm816x.dtsi +++ b/arch/arm/boot/dts/dm816x.dtsi | |||
@@ -97,10 +97,31 @@ | |||
97 | 97 | ||
98 | /* Device Configuration Registers */ | 98 | /* Device Configuration Registers */ |
99 | scm_conf: syscon@600 { | 99 | scm_conf: syscon@600 { |
100 | compatible = "syscon"; | 100 | compatible = "syscon", "simple-bus"; |
101 | reg = <0x600 0x110>; | 101 | reg = <0x600 0x110>; |
102 | #address-cells = <1>; | 102 | #address-cells = <1>; |
103 | #size-cells = <1>; | 103 | #size-cells = <1>; |
104 | ranges = <0 0x600 0x110>; | ||
105 | |||
106 | usb_phy0: usb-phy@20 { | ||
107 | compatible = "ti,dm8168-usb-phy"; | ||
108 | reg = <0x20 0x8>; | ||
109 | reg-names = "phy"; | ||
110 | clocks = <&main_fapll 6>; | ||
111 | clock-names = "refclk"; | ||
112 | #phy-cells = <0>; | ||
113 | syscon = <&scm_conf>; | ||
114 | }; | ||
115 | |||
116 | usb_phy1: usb-phy@28 { | ||
117 | compatible = "ti,dm8168-usb-phy"; | ||
118 | reg = <0x28 0x8>; | ||
119 | reg-names = "phy"; | ||
120 | clocks = <&main_fapll 6>; | ||
121 | clock-names = "refclk"; | ||
122 | #phy-cells = <0>; | ||
123 | syscon = <&scm_conf>; | ||
124 | }; | ||
104 | }; | 125 | }; |
105 | 126 | ||
106 | scrm_clocks: clocks { | 127 | scrm_clocks: clocks { |
@@ -357,26 +378,91 @@ | |||
357 | reg-names = "mc", "control"; | 378 | reg-names = "mc", "control"; |
358 | interrupts = <18>; | 379 | interrupts = <18>; |
359 | interrupt-names = "mc"; | 380 | interrupt-names = "mc"; |
360 | dr_mode = "otg"; | 381 | dr_mode = "host"; |
382 | interface-type = <0>; | ||
383 | phys = <&usb_phy0>; | ||
384 | phy-names = "usb2-phy"; | ||
361 | mentor,multipoint = <1>; | 385 | mentor,multipoint = <1>; |
362 | mentor,num-eps = <16>; | 386 | mentor,num-eps = <16>; |
363 | mentor,ram-bits = <12>; | 387 | mentor,ram-bits = <12>; |
364 | mentor,power = <500>; | 388 | mentor,power = <500>; |
389 | |||
390 | dmas = <&cppi41dma 0 0 &cppi41dma 1 0 | ||
391 | &cppi41dma 2 0 &cppi41dma 3 0 | ||
392 | &cppi41dma 4 0 &cppi41dma 5 0 | ||
393 | &cppi41dma 6 0 &cppi41dma 7 0 | ||
394 | &cppi41dma 8 0 &cppi41dma 9 0 | ||
395 | &cppi41dma 10 0 &cppi41dma 11 0 | ||
396 | &cppi41dma 12 0 &cppi41dma 13 0 | ||
397 | &cppi41dma 14 0 &cppi41dma 0 1 | ||
398 | &cppi41dma 1 1 &cppi41dma 2 1 | ||
399 | &cppi41dma 3 1 &cppi41dma 4 1 | ||
400 | &cppi41dma 5 1 &cppi41dma 6 1 | ||
401 | &cppi41dma 7 1 &cppi41dma 8 1 | ||
402 | &cppi41dma 9 1 &cppi41dma 10 1 | ||
403 | &cppi41dma 11 1 &cppi41dma 12 1 | ||
404 | &cppi41dma 13 1 &cppi41dma 14 1>; | ||
405 | dma-names = | ||
406 | "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", | ||
407 | "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", | ||
408 | "rx14", "rx15", | ||
409 | "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", | ||
410 | "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", | ||
411 | "tx14", "tx15"; | ||
365 | }; | 412 | }; |
366 | 413 | ||
367 | usb1: usb@47401800 { | 414 | usb1: usb@47401800 { |
368 | compatible = "ti,musb-am33xx"; | 415 | compatible = "ti,musb-am33xx"; |
369 | status = "disabled"; | ||
370 | reg = <0x47401c00 0x400 | 416 | reg = <0x47401c00 0x400 |
371 | 0x47401800 0x200>; | 417 | 0x47401800 0x200>; |
372 | reg-names = "mc", "control"; | 418 | reg-names = "mc", "control"; |
373 | interrupts = <19>; | 419 | interrupts = <19>; |
374 | interrupt-names = "mc"; | 420 | interrupt-names = "mc"; |
375 | dr_mode = "otg"; | 421 | dr_mode = "host"; |
422 | interface-type = <0>; | ||
423 | phys = <&usb_phy1>; | ||
424 | phy-names = "usb2-phy"; | ||
376 | mentor,multipoint = <1>; | 425 | mentor,multipoint = <1>; |
377 | mentor,num-eps = <16>; | 426 | mentor,num-eps = <16>; |
378 | mentor,ram-bits = <12>; | 427 | mentor,ram-bits = <12>; |
379 | mentor,power = <500>; | 428 | mentor,power = <500>; |
429 | |||
430 | dmas = <&cppi41dma 15 0 &cppi41dma 16 0 | ||
431 | &cppi41dma 17 0 &cppi41dma 18 0 | ||
432 | &cppi41dma 19 0 &cppi41dma 20 0 | ||
433 | &cppi41dma 21 0 &cppi41dma 22 0 | ||
434 | &cppi41dma 23 0 &cppi41dma 24 0 | ||
435 | &cppi41dma 25 0 &cppi41dma 26 0 | ||
436 | &cppi41dma 27 0 &cppi41dma 28 0 | ||
437 | &cppi41dma 29 0 &cppi41dma 15 1 | ||
438 | &cppi41dma 16 1 &cppi41dma 17 1 | ||
439 | &cppi41dma 18 1 &cppi41dma 19 1 | ||
440 | &cppi41dma 20 1 &cppi41dma 21 1 | ||
441 | &cppi41dma 22 1 &cppi41dma 23 1 | ||
442 | &cppi41dma 24 1 &cppi41dma 25 1 | ||
443 | &cppi41dma 26 1 &cppi41dma 27 1 | ||
444 | &cppi41dma 28 1 &cppi41dma 29 1>; | ||
445 | dma-names = | ||
446 | "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", | ||
447 | "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", | ||
448 | "rx14", "rx15", | ||
449 | "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", | ||
450 | "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", | ||
451 | "tx14", "tx15"; | ||
452 | }; | ||
453 | |||
454 | cppi41dma: dma-controller@47402000 { | ||
455 | compatible = "ti,am3359-cppi41"; | ||
456 | reg = <0x47400000 0x1000 | ||
457 | 0x47402000 0x1000 | ||
458 | 0x47403000 0x1000 | ||
459 | 0x47404000 0x4000>; | ||
460 | reg-names = "glue", "controller", "scheduler", "queuemgr"; | ||
461 | interrupts = <17>; | ||
462 | interrupt-names = "glue"; | ||
463 | #dma-cells = <2>; | ||
464 | #dma-channels = <30>; | ||
465 | #dma-requests = <256>; | ||
380 | }; | 466 | }; |
381 | }; | 467 | }; |
382 | 468 | ||
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi index 5827fedafd43..a3c32e8ee90f 100644 --- a/arch/arm/boot/dts/dra7.dtsi +++ b/arch/arm/boot/dts/dra7.dtsi | |||
@@ -94,17 +94,101 @@ | |||
94 | interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, | 94 | interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, |
95 | <GIC_SPI DIRECT_IRQ(10) IRQ_TYPE_LEVEL_HIGH>; | 95 | <GIC_SPI DIRECT_IRQ(10) IRQ_TYPE_LEVEL_HIGH>; |
96 | 96 | ||
97 | prm: prm@4ae06000 { | 97 | l4_cfg: l4@4a000000 { |
98 | compatible = "ti,dra7-prm"; | 98 | compatible = "ti,dra7-l4-cfg", "simple-bus"; |
99 | reg = <0x4ae06000 0x3000>; | 99 | #address-cells = <1>; |
100 | interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; | 100 | #size-cells = <1>; |
101 | ranges = <0 0x4a000000 0x22c000>; | ||
101 | 102 | ||
102 | prm_clocks: clocks { | 103 | scm: scm@2000 { |
104 | compatible = "ti,dra7-scm-core", "simple-bus"; | ||
105 | reg = <0x2000 0x2000>; | ||
103 | #address-cells = <1>; | 106 | #address-cells = <1>; |
104 | #size-cells = <0>; | 107 | #size-cells = <1>; |
108 | ranges = <0 0x2000 0x2000>; | ||
109 | |||
110 | scm_conf: scm_conf@0 { | ||
111 | compatible = "syscon"; | ||
112 | reg = <0x0 0x1400>; | ||
113 | #address-cells = <1>; | ||
114 | #size-cells = <1>; | ||
115 | |||
116 | pbias_regulator: pbias_regulator { | ||
117 | compatible = "ti,pbias-omap"; | ||
118 | reg = <0xe00 0x4>; | ||
119 | syscon = <&scm_conf>; | ||
120 | pbias_mmc_reg: pbias_mmc_omap5 { | ||
121 | regulator-name = "pbias_mmc_omap5"; | ||
122 | regulator-min-microvolt = <1800000>; | ||
123 | regulator-max-microvolt = <3000000>; | ||
124 | }; | ||
125 | }; | ||
126 | }; | ||
127 | |||
128 | dra7_pmx_core: pinmux@1400 { | ||
129 | compatible = "ti,dra7-padconf", | ||
130 | "pinctrl-single"; | ||
131 | reg = <0x1400 0x0464>; | ||
132 | #address-cells = <1>; | ||
133 | #size-cells = <0>; | ||
134 | #interrupt-cells = <1>; | ||
135 | interrupt-controller; | ||
136 | pinctrl-single,register-width = <32>; | ||
137 | pinctrl-single,function-mask = <0x3fffffff>; | ||
138 | }; | ||
139 | }; | ||
140 | |||
141 | cm_core_aon: cm_core_aon@5000 { | ||
142 | compatible = "ti,dra7-cm-core-aon"; | ||
143 | reg = <0x5000 0x2000>; | ||
144 | |||
145 | cm_core_aon_clocks: clocks { | ||
146 | #address-cells = <1>; | ||
147 | #size-cells = <0>; | ||
148 | }; | ||
149 | |||
150 | cm_core_aon_clockdomains: clockdomains { | ||
151 | }; | ||
152 | }; | ||
153 | |||
154 | cm_core: cm_core@8000 { | ||
155 | compatible = "ti,dra7-cm-core"; | ||
156 | reg = <0x8000 0x3000>; | ||
157 | |||
158 | cm_core_clocks: clocks { | ||
159 | #address-cells = <1>; | ||
160 | #size-cells = <0>; | ||
161 | }; | ||
162 | |||
163 | cm_core_clockdomains: clockdomains { | ||
164 | }; | ||
105 | }; | 165 | }; |
166 | }; | ||
106 | 167 | ||
107 | prm_clockdomains: clockdomains { | 168 | l4_wkup: l4@4ae00000 { |
169 | compatible = "ti,dra7-l4-wkup", "simple-bus"; | ||
170 | #address-cells = <1>; | ||
171 | #size-cells = <1>; | ||
172 | ranges = <0 0x4ae00000 0x3f000>; | ||
173 | |||
174 | counter32k: counter@4000 { | ||
175 | compatible = "ti,omap-counter32k"; | ||
176 | reg = <0x4000 0x40>; | ||
177 | ti,hwmods = "counter_32k"; | ||
178 | }; | ||
179 | |||
180 | prm: prm@6000 { | ||
181 | compatible = "ti,dra7-prm"; | ||
182 | reg = <0x6000 0x3000>; | ||
183 | interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; | ||
184 | |||
185 | prm_clocks: clocks { | ||
186 | #address-cells = <1>; | ||
187 | #size-cells = <0>; | ||
188 | }; | ||
189 | |||
190 | prm_clockdomains: clockdomains { | ||
191 | }; | ||
108 | }; | 192 | }; |
109 | }; | 193 | }; |
110 | 194 | ||
@@ -177,36 +261,16 @@ | |||
177 | }; | 261 | }; |
178 | }; | 262 | }; |
179 | 263 | ||
180 | cm_core_aon: cm_core_aon@4a005000 { | 264 | bandgap: bandgap@4a0021e0 { |
181 | compatible = "ti,dra7-cm-core-aon"; | 265 | reg = <0x4a0021e0 0xc |
182 | reg = <0x4a005000 0x2000>; | 266 | 0x4a00232c 0xc |
183 | 267 | 0x4a002380 0x2c | |
184 | cm_core_aon_clocks: clocks { | 268 | 0x4a0023C0 0x3c |
185 | #address-cells = <1>; | 269 | 0x4a002564 0x8 |
186 | #size-cells = <0>; | 270 | 0x4a002574 0x50>; |
187 | }; | 271 | compatible = "ti,dra752-bandgap"; |
188 | 272 | interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; | |
189 | cm_core_aon_clockdomains: clockdomains { | 273 | #thermal-sensor-cells = <1>; |
190 | }; | ||
191 | }; | ||
192 | |||
193 | cm_core: cm_core@4a008000 { | ||
194 | compatible = "ti,dra7-cm-core"; | ||
195 | reg = <0x4a008000 0x3000>; | ||
196 | |||
197 | cm_core_clocks: clocks { | ||
198 | #address-cells = <1>; | ||
199 | #size-cells = <0>; | ||
200 | }; | ||
201 | |||
202 | cm_core_clockdomains: clockdomains { | ||
203 | }; | ||
204 | }; | ||
205 | |||
206 | counter32k: counter@4ae04000 { | ||
207 | compatible = "ti,omap-counter32k"; | ||
208 | reg = <0x4ae04000 0x40>; | ||
209 | ti,hwmods = "counter_32k"; | ||
210 | }; | 274 | }; |
211 | 275 | ||
212 | dra7_ctrl_core: ctrl_core@4a002000 { | 276 | dra7_ctrl_core: ctrl_core@4a002000 { |
@@ -219,28 +283,6 @@ | |||
219 | reg = <0x4a002e00 0x7c>; | 283 | reg = <0x4a002e00 0x7c>; |
220 | }; | 284 | }; |
221 | 285 | ||
222 | pbias_regulator: pbias_regulator { | ||
223 | compatible = "ti,pbias-omap"; | ||
224 | reg = <0 0x4>; | ||
225 | syscon = <&dra7_ctrl_general>; | ||
226 | pbias_mmc_reg: pbias_mmc_omap5 { | ||
227 | regulator-name = "pbias_mmc_omap5"; | ||
228 | regulator-min-microvolt = <1800000>; | ||
229 | regulator-max-microvolt = <3000000>; | ||
230 | }; | ||
231 | }; | ||
232 | |||
233 | dra7_pmx_core: pinmux@4a003400 { | ||
234 | compatible = "ti,dra7-padconf", "pinctrl-single"; | ||
235 | reg = <0x4a003400 0x0464>; | ||
236 | #address-cells = <1>; | ||
237 | #size-cells = <0>; | ||
238 | #interrupt-cells = <1>; | ||
239 | interrupt-controller; | ||
240 | pinctrl-single,register-width = <32>; | ||
241 | pinctrl-single,function-mask = <0x3fffffff>; | ||
242 | }; | ||
243 | |||
244 | sdma: dma-controller@4a056000 { | 286 | sdma: dma-controller@4a056000 { |
245 | compatible = "ti,omap4430-sdma"; | 287 | compatible = "ti,omap4430-sdma"; |
246 | reg = <0x4a056000 0x1000>; | 288 | reg = <0x4a056000 0x1000>; |
@@ -249,8 +291,8 @@ | |||
249 | <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, | 291 | <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, |
250 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; | 292 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; |
251 | #dma-cells = <1>; | 293 | #dma-cells = <1>; |
252 | #dma-channels = <32>; | 294 | dma-channels = <32>; |
253 | #dma-requests = <127>; | 295 | dma-requests = <127>; |
254 | }; | 296 | }; |
255 | 297 | ||
256 | gpio1: gpio@4ae10000 { | 298 | gpio1: gpio@4ae10000 { |
@@ -658,7 +700,6 @@ | |||
658 | reg = <0x48820000 0x80>; | 700 | reg = <0x48820000 0x80>; |
659 | interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; | 701 | interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; |
660 | ti,hwmods = "timer5"; | 702 | ti,hwmods = "timer5"; |
661 | ti,timer-dsp; | ||
662 | }; | 703 | }; |
663 | 704 | ||
664 | timer6: timer@48822000 { | 705 | timer6: timer@48822000 { |
@@ -666,8 +707,6 @@ | |||
666 | reg = <0x48822000 0x80>; | 707 | reg = <0x48822000 0x80>; |
667 | interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; | 708 | interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; |
668 | ti,hwmods = "timer6"; | 709 | ti,hwmods = "timer6"; |
669 | ti,timer-dsp; | ||
670 | ti,timer-pwm; | ||
671 | }; | 710 | }; |
672 | 711 | ||
673 | timer7: timer@48824000 { | 712 | timer7: timer@48824000 { |
@@ -675,7 +714,6 @@ | |||
675 | reg = <0x48824000 0x80>; | 714 | reg = <0x48824000 0x80>; |
676 | interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; | 715 | interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>; |
677 | ti,hwmods = "timer7"; | 716 | ti,hwmods = "timer7"; |
678 | ti,timer-dsp; | ||
679 | }; | 717 | }; |
680 | 718 | ||
681 | timer8: timer@48826000 { | 719 | timer8: timer@48826000 { |
@@ -683,8 +721,6 @@ | |||
683 | reg = <0x48826000 0x80>; | 721 | reg = <0x48826000 0x80>; |
684 | interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; | 722 | interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; |
685 | ti,hwmods = "timer8"; | 723 | ti,hwmods = "timer8"; |
686 | ti,timer-dsp; | ||
687 | ti,timer-pwm; | ||
688 | }; | 724 | }; |
689 | 725 | ||
690 | timer9: timer@4803e000 { | 726 | timer9: timer@4803e000 { |
@@ -706,7 +742,6 @@ | |||
706 | reg = <0x48088000 0x80>; | 742 | reg = <0x48088000 0x80>; |
707 | interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; | 743 | interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>; |
708 | ti,hwmods = "timer11"; | 744 | ti,hwmods = "timer11"; |
709 | ti,timer-pwm; | ||
710 | }; | 745 | }; |
711 | 746 | ||
712 | timer13: timer@48828000 { | 747 | timer13: timer@48828000 { |
@@ -1090,8 +1125,8 @@ | |||
1090 | <0x4A096800 0x40>; /* pll_ctrl */ | 1125 | <0x4A096800 0x40>; /* pll_ctrl */ |
1091 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | 1126 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; |
1092 | ctrl-module = <&omap_control_sata>; | 1127 | ctrl-module = <&omap_control_sata>; |
1093 | clocks = <&sys_clkin1>; | 1128 | clocks = <&sys_clkin1>, <&sata_ref_clk>; |
1094 | clock-names = "sysclk"; | 1129 | clock-names = "sysclk", "refclk"; |
1095 | #phy-cells = <0>; | 1130 | #phy-cells = <0>; |
1096 | }; | 1131 | }; |
1097 | 1132 | ||
@@ -1410,7 +1445,7 @@ | |||
1410 | compatible = "ti,dra7-d_can"; | 1445 | compatible = "ti,dra7-d_can"; |
1411 | ti,hwmods = "dcan1"; | 1446 | ti,hwmods = "dcan1"; |
1412 | reg = <0x4ae3c000 0x2000>; | 1447 | reg = <0x4ae3c000 0x2000>; |
1413 | syscon-raminit = <&dra7_ctrl_core 0x558 0>; | 1448 | syscon-raminit = <&scm_conf 0x558 0>; |
1414 | interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>; | 1449 | interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>; |
1415 | clocks = <&dcan1_sys_clk_mux>; | 1450 | clocks = <&dcan1_sys_clk_mux>; |
1416 | status = "disabled"; | 1451 | status = "disabled"; |
@@ -1420,12 +1455,23 @@ | |||
1420 | compatible = "ti,dra7-d_can"; | 1455 | compatible = "ti,dra7-d_can"; |
1421 | ti,hwmods = "dcan2"; | 1456 | ti,hwmods = "dcan2"; |
1422 | reg = <0x48480000 0x2000>; | 1457 | reg = <0x48480000 0x2000>; |
1423 | syscon-raminit = <&dra7_ctrl_core 0x558 1>; | 1458 | syscon-raminit = <&scm_conf 0x558 1>; |
1424 | interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>; | 1459 | interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>; |
1425 | clocks = <&sys_clkin1>; | 1460 | clocks = <&sys_clkin1>; |
1426 | status = "disabled"; | 1461 | status = "disabled"; |
1427 | }; | 1462 | }; |
1428 | }; | 1463 | }; |
1464 | |||
1465 | thermal_zones: thermal-zones { | ||
1466 | #include "omap4-cpu-thermal.dtsi" | ||
1467 | #include "omap5-gpu-thermal.dtsi" | ||
1468 | #include "omap5-core-thermal.dtsi" | ||
1469 | }; | ||
1470 | |||
1471 | }; | ||
1472 | |||
1473 | &cpu_thermal { | ||
1474 | polling-delay = <500>; /* milliseconds */ | ||
1429 | }; | 1475 | }; |
1430 | 1476 | ||
1431 | /include/ "dra7xx-clocks.dtsi" | 1477 | /include/ "dra7xx-clocks.dtsi" |
diff --git a/arch/arm/boot/dts/dra72x.dtsi b/arch/arm/boot/dts/dra72x.dtsi index e5a3d23a3df1..6ac8e3601499 100644 --- a/arch/arm/boot/dts/dra72x.dtsi +++ b/arch/arm/boot/dts/dra72x.dtsi | |||
@@ -20,6 +20,11 @@ | |||
20 | device_type = "cpu"; | 20 | device_type = "cpu"; |
21 | compatible = "arm,cortex-a15"; | 21 | compatible = "arm,cortex-a15"; |
22 | reg = <0>; | 22 | reg = <0>; |
23 | |||
24 | /* cooling options */ | ||
25 | cooling-min-level = <0>; | ||
26 | cooling-max-level = <2>; | ||
27 | #cooling-cells = <2>; /* min followed by max */ | ||
23 | }; | 28 | }; |
24 | }; | 29 | }; |
25 | 30 | ||
diff --git a/arch/arm/boot/dts/dra74x.dtsi b/arch/arm/boot/dts/dra74x.dtsi index 10173fab1a15..eef981f4bcd5 100644 --- a/arch/arm/boot/dts/dra74x.dtsi +++ b/arch/arm/boot/dts/dra74x.dtsi | |||
@@ -31,6 +31,11 @@ | |||
31 | clock-names = "cpu"; | 31 | clock-names = "cpu"; |
32 | 32 | ||
33 | clock-latency = <300000>; /* From omap-cpufreq driver */ | 33 | clock-latency = <300000>; /* From omap-cpufreq driver */ |
34 | |||
35 | /* cooling options */ | ||
36 | cooling-min-level = <0>; | ||
37 | cooling-max-level = <2>; | ||
38 | #cooling-cells = <2>; /* min followed by max */ | ||
34 | }; | 39 | }; |
35 | cpu@1 { | 40 | cpu@1 { |
36 | device_type = "cpu"; | 41 | device_type = "cpu"; |
diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi index 4bdcbd61ce47..2a9994f73974 100644 --- a/arch/arm/boot/dts/dra7xx-clocks.dtsi +++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi | |||
@@ -1421,6 +1421,14 @@ | |||
1421 | ti,dividers = <1>, <8>; | 1421 | ti,dividers = <1>, <8>; |
1422 | }; | 1422 | }; |
1423 | 1423 | ||
1424 | clkout2_clk: clkout2_clk { | ||
1425 | #clock-cells = <0>; | ||
1426 | compatible = "ti,gate-clock"; | ||
1427 | clocks = <&clkoutmux2_clk_mux>; | ||
1428 | ti,bit-shift = <8>; | ||
1429 | reg = <0x06b0>; | ||
1430 | }; | ||
1431 | |||
1424 | l3init_960m_gfclk: l3init_960m_gfclk { | 1432 | l3init_960m_gfclk: l3init_960m_gfclk { |
1425 | #clock-cells = <0>; | 1433 | #clock-cells = <0>; |
1426 | compatible = "ti,gate-clock"; | 1434 | compatible = "ti,gate-clock"; |
diff --git a/arch/arm/boot/dts/imx25-pdk.dts b/arch/arm/boot/dts/imx25-pdk.dts index 9c21b1583762..dd45e6971bc3 100644 --- a/arch/arm/boot/dts/imx25-pdk.dts +++ b/arch/arm/boot/dts/imx25-pdk.dts | |||
@@ -75,6 +75,27 @@ | |||
75 | mux-int-port = <1>; | 75 | mux-int-port = <1>; |
76 | mux-ext-port = <4>; | 76 | mux-ext-port = <4>; |
77 | }; | 77 | }; |
78 | |||
79 | wvga: display { | ||
80 | model = "CLAA057VC01CW"; | ||
81 | bits-per-pixel = <16>; | ||
82 | fsl,pcr = <0xfa208b80>; | ||
83 | bus-width = <18>; | ||
84 | native-mode = <&wvga_timings>; | ||
85 | display-timings { | ||
86 | wvga_timings: 640x480 { | ||
87 | hactive = <640>; | ||
88 | vactive = <480>; | ||
89 | hback-porch = <45>; | ||
90 | hfront-porch = <114>; | ||
91 | hsync-len = <1>; | ||
92 | vback-porch = <33>; | ||
93 | vfront-porch = <11>; | ||
94 | vsync-len = <1>; | ||
95 | clock-frequency = <25200000>; | ||
96 | }; | ||
97 | }; | ||
98 | }; | ||
78 | }; | 99 | }; |
79 | 100 | ||
80 | &audmux { | 101 | &audmux { |
@@ -190,6 +211,33 @@ | |||
190 | >; | 211 | >; |
191 | }; | 212 | }; |
192 | 213 | ||
214 | pinctrl_lcd: lcdgrp { | ||
215 | fsl,pins = < | ||
216 | MX25_PAD_LD0__LD0 0xe0 | ||
217 | MX25_PAD_LD1__LD1 0xe0 | ||
218 | MX25_PAD_LD2__LD2 0xe0 | ||
219 | MX25_PAD_LD3__LD3 0xe0 | ||
220 | MX25_PAD_LD4__LD4 0xe0 | ||
221 | MX25_PAD_LD5__LD5 0xe0 | ||
222 | MX25_PAD_LD6__LD6 0xe0 | ||
223 | MX25_PAD_LD7__LD7 0xe0 | ||
224 | MX25_PAD_LD8__LD8 0xe0 | ||
225 | MX25_PAD_LD9__LD9 0xe0 | ||
226 | MX25_PAD_LD10__LD10 0xe0 | ||
227 | MX25_PAD_LD11__LD11 0xe0 | ||
228 | MX25_PAD_LD12__LD12 0xe0 | ||
229 | MX25_PAD_LD13__LD13 0xe0 | ||
230 | MX25_PAD_LD14__LD14 0xe0 | ||
231 | MX25_PAD_LD15__LD15 0xe0 | ||
232 | MX25_PAD_GPIO_E__LD16 0xe0 | ||
233 | MX25_PAD_GPIO_F__LD17 0xe0 | ||
234 | MX25_PAD_HSYNC__HSYNC 0xe0 | ||
235 | MX25_PAD_VSYNC__VSYNC 0xe0 | ||
236 | MX25_PAD_LSCLK__LSCLK 0xe0 | ||
237 | MX25_PAD_OE_ACD__OE_ACD 0xe0 | ||
238 | MX25_PAD_CONTRAST__CONTRAST 0xe0 | ||
239 | >; | ||
240 | }; | ||
193 | 241 | ||
194 | pinctrl_uart1: uart1grp { | 242 | pinctrl_uart1: uart1grp { |
195 | fsl,pins = < | 243 | fsl,pins = < |
@@ -202,6 +250,16 @@ | |||
202 | }; | 250 | }; |
203 | }; | 251 | }; |
204 | 252 | ||
253 | &lcdc { | ||
254 | display = <&wvga>; | ||
255 | fsl,lpccr = <0x00a903ff>; | ||
256 | fsl,lscr1 = <0x00120300>; | ||
257 | fsl,dmacr = <0x00020010>; | ||
258 | pinctrl-names = "default"; | ||
259 | pinctrl-0 = <&pinctrl_lcd>; | ||
260 | status = "okay"; | ||
261 | }; | ||
262 | |||
205 | &nfc { | 263 | &nfc { |
206 | nand-on-flash-bbt; | 264 | nand-on-flash-bbt; |
207 | status = "okay"; | 265 | status = "okay"; |
diff --git a/arch/arm/boot/dts/imx25-pinfunc.h b/arch/arm/boot/dts/imx25-pinfunc.h index 88eebb15da6a..7c4b9f2f9aad 100644 --- a/arch/arm/boot/dts/imx25-pinfunc.h +++ b/arch/arm/boot/dts/imx25-pinfunc.h | |||
@@ -17,48 +17,69 @@ | |||
17 | * <mux_reg conf_reg input_reg mux_mode input_val> | 17 | * <mux_reg conf_reg input_reg mux_mode input_val> |
18 | */ | 18 | */ |
19 | 19 | ||
20 | #define MX25_PAD_TDO__TDO 0x000 0x3e8 0x000 0x00 0x000 | ||
21 | |||
20 | #define MX25_PAD_A10__A10 0x008 0x000 0x000 0x00 0x000 | 22 | #define MX25_PAD_A10__A10 0x008 0x000 0x000 0x00 0x000 |
21 | #define MX25_PAD_A10__GPIO_4_0 0x008 0x000 0x000 0x05 0x000 | 23 | #define MX25_PAD_A10__GPIO_4_0 0x008 0x000 0x000 0x05 0x000 |
22 | 24 | ||
23 | #define MX25_PAD_A13__A13 0x00c 0x22C 0x000 0x00 0x000 | 25 | #define MX25_PAD_A13__A13 0x00c 0x22C 0x000 0x00 0x000 |
24 | #define MX25_PAD_A13__GPIO_4_1 0x00c 0x22C 0x000 0x05 0x000 | 26 | #define MX25_PAD_A13__GPIO_4_1 0x00c 0x22C 0x000 0x05 0x000 |
27 | #define MX25_PAD_A13__LCDC_CLS 0x00c 0x22C 0x000 0x07 0x000 | ||
25 | 28 | ||
26 | #define MX25_PAD_A14__A14 0x010 0x230 0x000 0x10 0x000 | 29 | #define MX25_PAD_A14__A14 0x010 0x230 0x000 0x10 0x000 |
27 | #define MX25_PAD_A14__GPIO_2_0 0x010 0x230 0x000 0x15 0x000 | 30 | #define MX25_PAD_A14__GPIO_2_0 0x010 0x230 0x000 0x15 0x000 |
31 | #define MX25_PAD_A14__SIM1_CLK1 0x010 0x230 0x000 0x16 0x000 | ||
32 | #define MX25_PAD_A14__LCDC_SPL 0x010 0x230 0x000 0x17 0x000 | ||
28 | 33 | ||
29 | #define MX25_PAD_A15__A15 0x014 0x234 0x000 0x10 0x000 | 34 | #define MX25_PAD_A15__A15 0x014 0x234 0x000 0x10 0x000 |
30 | #define MX25_PAD_A15__GPIO_2_1 0x014 0x234 0x000 0x15 0x000 | 35 | #define MX25_PAD_A15__GPIO_2_1 0x014 0x234 0x000 0x15 0x000 |
36 | #define MX25_PAD_A15__SIM1_RST1 0x014 0x234 0x000 0x16 0x000 | ||
37 | #define MX25_PAD_A15__LCDC_PS 0x014 0x234 0x000 0x17 0x000 | ||
31 | 38 | ||
32 | #define MX25_PAD_A16__A16 0x018 0x000 0x000 0x10 0x000 | 39 | #define MX25_PAD_A16__A16 0x018 0x000 0x000 0x10 0x000 |
33 | #define MX25_PAD_A16__GPIO_2_2 0x018 0x000 0x000 0x15 0x000 | 40 | #define MX25_PAD_A16__GPIO_2_2 0x018 0x000 0x000 0x15 0x000 |
41 | #define MX25_PAD_A16__SIM1_VEN1 0x018 0x000 0x000 0x16 0x000 | ||
42 | #define MX25_PAD_A16__LCDC_REV 0x018 0x000 0x000 0x17 0x000 | ||
34 | 43 | ||
35 | #define MX25_PAD_A17__A17 0x01c 0x238 0x000 0x10 0x000 | 44 | #define MX25_PAD_A17__A17 0x01c 0x238 0x000 0x10 0x000 |
36 | #define MX25_PAD_A17__GPIO_2_3 0x01c 0x238 0x000 0x15 0x000 | 45 | #define MX25_PAD_A17__GPIO_2_3 0x01c 0x238 0x000 0x15 0x000 |
46 | #define MX25_PAD_A17__SIM1_TX 0x01c 0x238 0x554 0x16 0x000 | ||
47 | #define MX25_PAD_A17__FEC_TX_ERR 0x01c 0x238 0x000 0x17 0x000 | ||
37 | 48 | ||
38 | #define MX25_PAD_A18__A18 0x020 0x23c 0x000 0x10 0x000 | 49 | #define MX25_PAD_A18__A18 0x020 0x23c 0x000 0x10 0x000 |
39 | #define MX25_PAD_A18__GPIO_2_4 0x020 0x23c 0x000 0x15 0x000 | 50 | #define MX25_PAD_A18__GPIO_2_4 0x020 0x23c 0x000 0x15 0x000 |
51 | #define MX25_PAD_A18__SIM1_PD1 0x020 0x23c 0x550 0x16 0x000 | ||
40 | #define MX25_PAD_A18__FEC_COL 0x020 0x23c 0x504 0x17 0x000 | 52 | #define MX25_PAD_A18__FEC_COL 0x020 0x23c 0x504 0x17 0x000 |
41 | 53 | ||
42 | #define MX25_PAD_A19__A19 0x024 0x240 0x000 0x10 0x000 | 54 | #define MX25_PAD_A19__A19 0x024 0x240 0x000 0x10 0x000 |
43 | #define MX25_PAD_A19__FEC_RX_ER 0x024 0x240 0x518 0x17 0x000 | ||
44 | #define MX25_PAD_A19__GPIO_2_5 0x024 0x240 0x000 0x15 0x000 | 55 | #define MX25_PAD_A19__GPIO_2_5 0x024 0x240 0x000 0x15 0x000 |
56 | #define MX25_PAD_A19__SIM1_RX1 0x024 0x240 0x54c 0x16 0x000 | ||
57 | #define MX25_PAD_A19__FEC_RX_ERR 0x024 0x240 0x518 0x17 0x000 | ||
45 | 58 | ||
46 | #define MX25_PAD_A20__A20 0x028 0x244 0x000 0x10 0x000 | 59 | #define MX25_PAD_A20__A20 0x028 0x244 0x000 0x10 0x000 |
47 | #define MX25_PAD_A20__GPIO_2_6 0x028 0x244 0x000 0x15 0x000 | 60 | #define MX25_PAD_A20__GPIO_2_6 0x028 0x244 0x000 0x15 0x000 |
61 | #define MX25_PAD_A20__SIM2_CLK1 0x028 0x244 0x000 0x16 0x000 | ||
48 | #define MX25_PAD_A20__FEC_RDATA2 0x028 0x244 0x50c 0x17 0x000 | 62 | #define MX25_PAD_A20__FEC_RDATA2 0x028 0x244 0x50c 0x17 0x000 |
49 | 63 | ||
50 | #define MX25_PAD_A21__A21 0x02c 0x248 0x000 0x10 0x000 | 64 | #define MX25_PAD_A21__A21 0x02c 0x248 0x000 0x10 0x000 |
51 | #define MX25_PAD_A21__GPIO_2_7 0x02c 0x248 0x000 0x15 0x000 | 65 | #define MX25_PAD_A21__GPIO_2_7 0x02c 0x248 0x000 0x15 0x000 |
66 | #define MX25_PAD_A21__SIM2_RST1 0x02c 0x248 0x000 0x16 0x000 | ||
52 | #define MX25_PAD_A21__FEC_RDATA3 0x02c 0x248 0x510 0x17 0x000 | 67 | #define MX25_PAD_A21__FEC_RDATA3 0x02c 0x248 0x510 0x17 0x000 |
53 | 68 | ||
54 | #define MX25_PAD_A22__A22 0x030 0x000 0x000 0x10 0x000 | 69 | #define MX25_PAD_A22__A22 0x030 0x000 0x000 0x10 0x000 |
55 | #define MX25_PAD_A22__GPIO_2_8 0x030 0x000 0x000 0x15 0x000 | 70 | #define MX25_PAD_A22__GPIO_2_8 0x030 0x000 0x000 0x15 0x000 |
71 | #define MX25_PAD_A22__FEC_TDATA2 0x030 0x000 0x000 0x17 0x000 | ||
72 | #define MX25_PAD_A22__SIM2_VEN1 0x030 0x000 0x000 0x16 0x000 | ||
73 | #define MX25_PAD_A22__FEC_TDATA2 0x030 0x000 0x000 0x17 0x000 | ||
56 | 74 | ||
57 | #define MX25_PAD_A23__A23 0x034 0x24c 0x000 0x10 0x000 | 75 | #define MX25_PAD_A23__A23 0x034 0x24c 0x000 0x10 0x000 |
58 | #define MX25_PAD_A23__GPIO_2_9 0x034 0x24c 0x000 0x15 0x000 | 76 | #define MX25_PAD_A23__GPIO_2_9 0x034 0x24c 0x000 0x15 0x000 |
77 | #define MX25_PAD_A23__SIM2_TX1 0x034 0x24c 0x560 0x16 0x000 | ||
78 | #define MX25_PAD_A23__FEC_TDATA3 0x034 0x24c 0x000 0x17 0x000 | ||
59 | 79 | ||
60 | #define MX25_PAD_A24__A24 0x038 0x250 0x000 0x10 0x000 | 80 | #define MX25_PAD_A24__A24 0x038 0x250 0x000 0x10 0x000 |
61 | #define MX25_PAD_A24__GPIO_2_10 0x038 0x250 0x000 0x15 0x000 | 81 | #define MX25_PAD_A24__GPIO_2_10 0x038 0x250 0x000 0x15 0x000 |
82 | #define MX25_PAD_A24__SIM2_PD1 0x038 0x250 0x55c 0x16 0x000 | ||
62 | #define MX25_PAD_A24__FEC_RX_CLK 0x038 0x250 0x514 0x17 0x000 | 83 | #define MX25_PAD_A24__FEC_RX_CLK 0x038 0x250 0x514 0x17 0x000 |
63 | 84 | ||
64 | #define MX25_PAD_A25__A25 0x03c 0x254 0x000 0x10 0x000 | 85 | #define MX25_PAD_A25__A25 0x03c 0x254 0x000 0x10 0x000 |
@@ -133,20 +154,25 @@ | |||
133 | #define MX25_PAD_D15__D15 0x088 0x280 0x000 0x00 0x000 | 154 | #define MX25_PAD_D15__D15 0x088 0x280 0x000 0x00 0x000 |
134 | #define MX25_PAD_D15__LD16 0x088 0x280 0x000 0x01 0x000 | 155 | #define MX25_PAD_D15__LD16 0x088 0x280 0x000 0x01 0x000 |
135 | #define MX25_PAD_D15__GPIO_4_5 0x088 0x280 0x000 0x05 0x000 | 156 | #define MX25_PAD_D15__GPIO_4_5 0x088 0x280 0x000 0x05 0x000 |
157 | #define MX25_PAD_D15__SDHC1_DAT7 0x088 0x280 0x4d8 0x06 0x000 | ||
136 | 158 | ||
137 | #define MX25_PAD_D14__D14 0x08c 0x284 0x000 0x00 0x000 | 159 | #define MX25_PAD_D14__D14 0x08c 0x284 0x000 0x00 0x000 |
138 | #define MX25_PAD_D14__LD17 0x08c 0x284 0x000 0x01 0x000 | 160 | #define MX25_PAD_D14__LD17 0x08c 0x284 0x000 0x01 0x000 |
139 | #define MX25_PAD_D14__GPIO_4_6 0x08c 0x284 0x000 0x05 0x000 | 161 | #define MX25_PAD_D14__GPIO_4_6 0x08c 0x284 0x000 0x05 0x000 |
162 | #define MX25_PAD_D14__SDHC1_DAT6 0x08c 0x284 0x4d4 0x06 0x000 | ||
140 | 163 | ||
141 | #define MX25_PAD_D13__D13 0x090 0x288 0x000 0x00 0x000 | 164 | #define MX25_PAD_D13__D13 0x090 0x288 0x000 0x00 0x000 |
142 | #define MX25_PAD_D13__LD18 0x090 0x288 0x000 0x01 0x000 | 165 | #define MX25_PAD_D13__LD18 0x090 0x288 0x000 0x01 0x000 |
143 | #define MX25_PAD_D13__GPIO_4_7 0x090 0x288 0x000 0x05 0x000 | 166 | #define MX25_PAD_D13__GPIO_4_7 0x090 0x288 0x000 0x05 0x000 |
167 | #define MX25_PAD_D13__SDHC1_DAT5 0x090 0x288 0x4d0 0x06 0x000 | ||
144 | 168 | ||
145 | #define MX25_PAD_D12__D12 0x094 0x28c 0x000 0x00 0x000 | 169 | #define MX25_PAD_D12__D12 0x094 0x28c 0x000 0x00 0x000 |
146 | #define MX25_PAD_D12__GPIO_4_8 0x094 0x28c 0x000 0x05 0x000 | 170 | #define MX25_PAD_D12__GPIO_4_8 0x094 0x28c 0x000 0x05 0x000 |
171 | #define MX25_PAD_D12__SDHC1_DAT4 0x094 0x28c 0x4cc 0x06 0x000 | ||
147 | 172 | ||
148 | #define MX25_PAD_D11__D11 0x098 0x290 0x000 0x00 0x000 | 173 | #define MX25_PAD_D11__D11 0x098 0x290 0x000 0x00 0x000 |
149 | #define MX25_PAD_D11__GPIO_4_9 0x098 0x290 0x000 0x05 0x000 | 174 | #define MX25_PAD_D11__GPIO_4_9 0x098 0x290 0x000 0x05 0x000 |
175 | #define MX25_PAD_D11__USBOTG_PWR 0x098 0x290 0x000 0x06 0x000 | ||
150 | 176 | ||
151 | #define MX25_PAD_D10__D10 0x09c 0x294 0x000 0x00 0x000 | 177 | #define MX25_PAD_D10__D10 0x09c 0x294 0x000 0x00 0x000 |
152 | #define MX25_PAD_D10__GPIO_4_10 0x09c 0x294 0x000 0x05 0x000 | 178 | #define MX25_PAD_D10__GPIO_4_10 0x09c 0x294 0x000 0x05 0x000 |
@@ -212,26 +238,33 @@ | |||
212 | 238 | ||
213 | #define MX25_PAD_LD8__LD8 0x0e8 0x2e0 0x000 0x10 0x000 | 239 | #define MX25_PAD_LD8__LD8 0x0e8 0x2e0 0x000 0x10 0x000 |
214 | #define MX25_PAD_LD8__FEC_TX_ERR 0x0e8 0x2e0 0x000 0x15 0x000 | 240 | #define MX25_PAD_LD8__FEC_TX_ERR 0x0e8 0x2e0 0x000 0x15 0x000 |
241 | #define MX25_PAD_LD8__SDHC2_CMD 0x0e8 0x2e0 0x4e0 0x06 0x000 | ||
215 | 242 | ||
216 | #define MX25_PAD_LD9__LD9 0x0ec 0x2e4 0x000 0x10 0x000 | 243 | #define MX25_PAD_LD9__LD9 0x0ec 0x2e4 0x000 0x10 0x000 |
217 | #define MX25_PAD_LD9__FEC_COL 0x0ec 0x2e4 0x504 0x15 0x001 | 244 | #define MX25_PAD_LD9__FEC_COL 0x0ec 0x2e4 0x504 0x15 0x001 |
245 | #define MX25_PAD_LD9__SDHC2_CLK 0x0ec 0x2e4 0x4dc 0x06 0x000 | ||
218 | 246 | ||
219 | #define MX25_PAD_LD10__LD10 0x0f0 0x2e8 0x000 0x10 0x000 | 247 | #define MX25_PAD_LD10__LD10 0x0f0 0x2e8 0x000 0x10 0x000 |
220 | #define MX25_PAD_LD10__FEC_RX_ER 0x0f0 0x2e8 0x518 0x15 0x001 | 248 | #define MX25_PAD_LD10__FEC_RX_ERR 0x0f0 0x2e8 0x518 0x15 0x001 |
221 | 249 | ||
222 | #define MX25_PAD_LD11__LD11 0x0f4 0x2ec 0x000 0x10 0x000 | 250 | #define MX25_PAD_LD11__LD11 0x0f4 0x2ec 0x000 0x10 0x000 |
223 | #define MX25_PAD_LD11__FEC_RDATA2 0x0f4 0x2ec 0x50c 0x15 0x001 | 251 | #define MX25_PAD_LD11__FEC_RDATA2 0x0f4 0x2ec 0x50c 0x15 0x001 |
252 | #define MX25_PAD_LD11__SDHC2_DAT1 0x0f4 0x2ec 0x4e8 0x06 0x000 | ||
224 | 253 | ||
225 | #define MX25_PAD_LD12__LD12 0x0f8 0x2f0 0x000 0x10 0x000 | 254 | #define MX25_PAD_LD12__LD12 0x0f8 0x2f0 0x000 0x10 0x000 |
255 | #define MX25_PAD_LD12__CSPI2_MOSI 0x0f8 0x2f0 0x4a0 0x02 0x000 | ||
226 | #define MX25_PAD_LD12__FEC_RDATA3 0x0f8 0x2f0 0x510 0x15 0x001 | 256 | #define MX25_PAD_LD12__FEC_RDATA3 0x0f8 0x2f0 0x510 0x15 0x001 |
227 | 257 | ||
228 | #define MX25_PAD_LD13__LD13 0x0fc 0x2f4 0x000 0x10 0x000 | 258 | #define MX25_PAD_LD13__LD13 0x0fc 0x2f4 0x000 0x10 0x000 |
259 | #define MX25_PAD_LD13__CSPI2_MISO 0x0fc 0x2f4 0x49c 0x02 0x000 | ||
229 | #define MX25_PAD_LD13__FEC_TDATA2 0x0fc 0x2f4 0x000 0x15 0x000 | 260 | #define MX25_PAD_LD13__FEC_TDATA2 0x0fc 0x2f4 0x000 0x15 0x000 |
230 | 261 | ||
231 | #define MX25_PAD_LD14__LD14 0x100 0x2f8 0x000 0x10 0x000 | 262 | #define MX25_PAD_LD14__LD14 0x100 0x2f8 0x000 0x10 0x000 |
263 | #define MX25_PAD_LD14__CSPI2_SCLK 0x100 0x2f8 0x494 0x02 0x000 | ||
232 | #define MX25_PAD_LD14__FEC_TDATA3 0x100 0x2f8 0x000 0x15 0x000 | 264 | #define MX25_PAD_LD14__FEC_TDATA3 0x100 0x2f8 0x000 0x15 0x000 |
233 | 265 | ||
234 | #define MX25_PAD_LD15__LD15 0x104 0x2fc 0x000 0x10 0x000 | 266 | #define MX25_PAD_LD15__LD15 0x104 0x2fc 0x000 0x10 0x000 |
267 | #define MX25_PAD_LD15__CSPI2_RDY 0x104 0x2fc 0x498 0x02 0x000 | ||
235 | #define MX25_PAD_LD15__FEC_RX_CLK 0x104 0x2fc 0x514 0x15 0x001 | 268 | #define MX25_PAD_LD15__FEC_RX_CLK 0x104 0x2fc 0x514 0x15 0x001 |
236 | 269 | ||
237 | #define MX25_PAD_HSYNC__HSYNC 0x108 0x300 0x000 0x10 0x000 | 270 | #define MX25_PAD_HSYNC__HSYNC 0x108 0x300 0x000 0x10 0x000 |
@@ -244,6 +277,7 @@ | |||
244 | #define MX25_PAD_LSCLK__GPIO_1_24 0x110 0x308 0x000 0x15 0x000 | 277 | #define MX25_PAD_LSCLK__GPIO_1_24 0x110 0x308 0x000 0x15 0x000 |
245 | 278 | ||
246 | #define MX25_PAD_OE_ACD__OE_ACD 0x114 0x30c 0x000 0x10 0x000 | 279 | #define MX25_PAD_OE_ACD__OE_ACD 0x114 0x30c 0x000 0x10 0x000 |
280 | #define MX25_PAD_OE_ACD__CSPI2_SS0 0x114 0x30c 0x4a4 0x02 0x000 | ||
247 | #define MX25_PAD_OE_ACD__GPIO_1_25 0x114 0x30c 0x000 0x15 0x000 | 281 | #define MX25_PAD_OE_ACD__GPIO_1_25 0x114 0x30c 0x000 0x15 0x000 |
248 | 282 | ||
249 | #define MX25_PAD_CONTRAST__CONTRAST 0x118 0x310 0x000 0x10 0x000 | 283 | #define MX25_PAD_CONTRAST__CONTRAST 0x118 0x310 0x000 0x10 0x000 |
@@ -257,26 +291,31 @@ | |||
257 | 291 | ||
258 | #define MX25_PAD_CSI_D2__CSI_D2 0x120 0x318 0x000 0x10 0x000 | 292 | #define MX25_PAD_CSI_D2__CSI_D2 0x120 0x318 0x000 0x10 0x000 |
259 | #define MX25_PAD_CSI_D2__UART5_RXD_MUX 0x120 0x318 0x578 0x11 0x001 | 293 | #define MX25_PAD_CSI_D2__UART5_RXD_MUX 0x120 0x318 0x578 0x11 0x001 |
294 | #define MX25_PAD_CSI_D2__SIM1_CLK0 0x120 0x318 0x000 0x04 0x000 | ||
260 | #define MX25_PAD_CSI_D2__GPIO_1_27 0x120 0x318 0x000 0x15 0x000 | 295 | #define MX25_PAD_CSI_D2__GPIO_1_27 0x120 0x318 0x000 0x15 0x000 |
261 | #define MX25_PAD_CSI_D2__CSPI3_MOSI 0x120 0x318 0x000 0x17 0x000 | 296 | #define MX25_PAD_CSI_D2__CSPI3_MOSI 0x120 0x318 0x000 0x17 0x000 |
262 | 297 | ||
263 | #define MX25_PAD_CSI_D3__CSI_D3 0x124 0x31c 0x000 0x10 0x000 | 298 | #define MX25_PAD_CSI_D3__CSI_D3 0x124 0x31c 0x000 0x10 0x000 |
264 | #define MX25_PAD_CSI_D3__UART5_TXD_MUX 0x124 0x31c 0x000 0x11 0x000 | 299 | #define MX25_PAD_CSI_D3__UART5_TXD_MUX 0x124 0x31c 0x000 0x11 0x000 |
300 | #define MX25_PAD_CSI_D3__SIM1_RST0 0x124 0x31c 0x000 0x04 0x000 | ||
265 | #define MX25_PAD_CSI_D3__GPIO_1_28 0x124 0x31c 0x000 0x15 0x000 | 301 | #define MX25_PAD_CSI_D3__GPIO_1_28 0x124 0x31c 0x000 0x15 0x000 |
266 | #define MX25_PAD_CSI_D3__CSPI3_MISO 0x124 0x31c 0x4b4 0x17 0x001 | 302 | #define MX25_PAD_CSI_D3__CSPI3_MISO 0x124 0x31c 0x4b4 0x17 0x001 |
267 | 303 | ||
268 | #define MX25_PAD_CSI_D4__CSI_D4 0x128 0x320 0x000 0x10 0x000 | 304 | #define MX25_PAD_CSI_D4__CSI_D4 0x128 0x320 0x000 0x10 0x000 |
269 | #define MX25_PAD_CSI_D4__UART5_RTS 0x128 0x320 0x574 0x11 0x001 | 305 | #define MX25_PAD_CSI_D4__UART5_RTS 0x128 0x320 0x574 0x11 0x001 |
306 | #define MX25_PAD_CSI_D4__SIM1_VEN0 0x128 0x320 0x000 0x04 0x000 | ||
270 | #define MX25_PAD_CSI_D4__GPIO_1_29 0x128 0x320 0x000 0x15 0x000 | 307 | #define MX25_PAD_CSI_D4__GPIO_1_29 0x128 0x320 0x000 0x15 0x000 |
271 | #define MX25_PAD_CSI_D4__CSPI3_SCLK 0x128 0x320 0x000 0x17 0x000 | 308 | #define MX25_PAD_CSI_D4__CSPI3_SCLK 0x128 0x320 0x000 0x17 0x000 |
272 | 309 | ||
273 | #define MX25_PAD_CSI_D5__CSI_D5 0x12c 0x324 0x000 0x10 0x000 | 310 | #define MX25_PAD_CSI_D5__CSI_D5 0x12c 0x324 0x000 0x10 0x000 |
274 | #define MX25_PAD_CSI_D5__UART5_CTS 0x12c 0x324 0x000 0x11 0x001 | 311 | #define MX25_PAD_CSI_D5__UART5_CTS 0x12c 0x324 0x000 0x11 0x000 |
312 | #define MX25_PAD_CSI_D5__SIM1_TX0 0x12c 0x324 0x000 0x04 0x000 | ||
275 | #define MX25_PAD_CSI_D5__GPIO_1_30 0x12c 0x324 0x000 0x15 0x000 | 313 | #define MX25_PAD_CSI_D5__GPIO_1_30 0x12c 0x324 0x000 0x15 0x000 |
276 | #define MX25_PAD_CSI_D5__CSPI3_RDY 0x12c 0x324 0x000 0x17 0x000 | 314 | #define MX25_PAD_CSI_D5__CSPI3_RDY 0x12c 0x324 0x000 0x17 0x000 |
277 | 315 | ||
278 | #define MX25_PAD_CSI_D6__CSI_D6 0x130 0x328 0x000 0x10 0x000 | 316 | #define MX25_PAD_CSI_D6__CSI_D6 0x130 0x328 0x000 0x10 0x000 |
279 | #define MX25_PAD_CSI_D6__SDHC2_CMD 0x130 0x328 0x4e0 0x12 0x001 | 317 | #define MX25_PAD_CSI_D6__SDHC2_CMD 0x130 0x328 0x4e0 0x12 0x001 |
318 | #define MX25_PAD_CSI_D6__SIM1_PD0 0x130 0x328 0x000 0x04 0x000 | ||
280 | #define MX25_PAD_CSI_D6__GPIO_1_31 0x130 0x328 0x000 0x15 0x000 | 319 | #define MX25_PAD_CSI_D6__GPIO_1_31 0x130 0x328 0x000 0x15 0x000 |
281 | 320 | ||
282 | #define MX25_PAD_CSI_D7__CSI_D7 0x134 0x32c 0x000 0x10 0x000 | 321 | #define MX25_PAD_CSI_D7__CSI_D7 0x134 0x32c 0x000 0x10 0x000 |
@@ -284,32 +323,32 @@ | |||
284 | #define MX25_PAD_CSI_D7__GPIO_1_6 0x134 0x32c 0x000 0x15 0x000 | 323 | #define MX25_PAD_CSI_D7__GPIO_1_6 0x134 0x32c 0x000 0x15 0x000 |
285 | 324 | ||
286 | #define MX25_PAD_CSI_D8__CSI_D8 0x138 0x330 0x000 0x10 0x000 | 325 | #define MX25_PAD_CSI_D8__CSI_D8 0x138 0x330 0x000 0x10 0x000 |
287 | #define MX25_PAD_CSI_D8__AUD6_RXC 0x138 0x330 0x000 0x12 0x001 | 326 | #define MX25_PAD_CSI_D8__AUD6_RXC 0x138 0x330 0x000 0x12 0x000 |
288 | #define MX25_PAD_CSI_D8__GPIO_1_7 0x138 0x330 0x000 0x15 0x000 | 327 | #define MX25_PAD_CSI_D8__GPIO_1_7 0x138 0x330 0x000 0x15 0x000 |
289 | #define MX25_PAD_CSI_D8__CSPI3_SS2 0x138 0x330 0x4c4 0x17 0x000 | 328 | #define MX25_PAD_CSI_D8__CSPI3_SS2 0x138 0x330 0x4c4 0x17 0x000 |
290 | 329 | ||
291 | #define MX25_PAD_CSI_D9__CSI_D9 0x13c 0x334 0x000 0x10 0x000 | 330 | #define MX25_PAD_CSI_D9__CSI_D9 0x13c 0x334 0x000 0x10 0x000 |
292 | #define MX25_PAD_CSI_D9__AUD6_RXFS 0x13c 0x334 0x000 0x12 0x001 | 331 | #define MX25_PAD_CSI_D9__AUD6_RXFS 0x13c 0x334 0x000 0x12 0x000 |
293 | #define MX25_PAD_CSI_D9__GPIO_4_21 0x13c 0x334 0x000 0x15 0x000 | 332 | #define MX25_PAD_CSI_D9__GPIO_4_21 0x13c 0x334 0x000 0x15 0x000 |
294 | #define MX25_PAD_CSI_D9__CSPI3_SS3 0x13c 0x334 0x4c8 0x17 0x000 | 333 | #define MX25_PAD_CSI_D9__CSPI3_SS3 0x13c 0x334 0x4c8 0x17 0x000 |
295 | 334 | ||
296 | #define MX25_PAD_CSI_MCLK__CSI_MCLK 0x140 0x338 0x000 0x10 0x000 | 335 | #define MX25_PAD_CSI_MCLK__CSI_MCLK 0x140 0x338 0x000 0x10 0x000 |
297 | #define MX25_PAD_CSI_MCLK__AUD6_TXD 0x140 0x338 0x000 0x11 0x001 | 336 | #define MX25_PAD_CSI_MCLK__AUD6_TXD 0x140 0x338 0x000 0x11 0x000 |
298 | #define MX25_PAD_CSI_MCLK__SDHC2_DAT0 0x140 0x338 0x4e4 0x12 0x001 | 337 | #define MX25_PAD_CSI_MCLK__SDHC2_DAT0 0x140 0x338 0x4e4 0x12 0x001 |
299 | #define MX25_PAD_CSI_MCLK__GPIO_1_8 0x140 0x338 0x000 0x15 0x000 | 338 | #define MX25_PAD_CSI_MCLK__GPIO_1_8 0x140 0x338 0x000 0x15 0x000 |
300 | 339 | ||
301 | #define MX25_PAD_CSI_VSYNC__CSI_VSYNC 0x144 0x33c 0x000 0x10 0x000 | 340 | #define MX25_PAD_CSI_VSYNC__CSI_VSYNC 0x144 0x33c 0x000 0x10 0x000 |
302 | #define MX25_PAD_CSI_VSYNC__AUD6_RXD 0x144 0x33c 0x000 0x11 0x001 | 341 | #define MX25_PAD_CSI_VSYNC__AUD6_RXD 0x144 0x33c 0x000 0x11 0x000 |
303 | #define MX25_PAD_CSI_VSYNC__SDHC2_DAT1 0x144 0x33c 0x4e8 0x12 0x001 | 342 | #define MX25_PAD_CSI_VSYNC__SDHC2_DAT1 0x144 0x33c 0x4e8 0x12 0x001 |
304 | #define MX25_PAD_CSI_VSYNC__GPIO_1_9 0x144 0x33c 0x000 0x15 0x000 | 343 | #define MX25_PAD_CSI_VSYNC__GPIO_1_9 0x144 0x33c 0x000 0x15 0x000 |
305 | 344 | ||
306 | #define MX25_PAD_CSI_HSYNC__CSI_HSYNC 0x148 0x340 0x000 0x10 0x000 | 345 | #define MX25_PAD_CSI_HSYNC__CSI_HSYNC 0x148 0x340 0x000 0x10 0x000 |
307 | #define MX25_PAD_CSI_HSYNC__AUD6_TXC 0x148 0x340 0x000 0x11 0x001 | 346 | #define MX25_PAD_CSI_HSYNC__AUD6_TXC 0x148 0x340 0x000 0x11 0x000 |
308 | #define MX25_PAD_CSI_HSYNC__SDHC2_DAT2 0x148 0x340 0x4ec 0x12 0x001 | 347 | #define MX25_PAD_CSI_HSYNC__SDHC2_DAT2 0x148 0x340 0x4ec 0x12 0x001 |
309 | #define MX25_PAD_CSI_HSYNC__GPIO_1_10 0x148 0x340 0x000 0x15 0x000 | 348 | #define MX25_PAD_CSI_HSYNC__GPIO_1_10 0x148 0x340 0x000 0x15 0x000 |
310 | 349 | ||
311 | #define MX25_PAD_CSI_PIXCLK__CSI_PIXCLK 0x14c 0x344 0x000 0x10 0x000 | 350 | #define MX25_PAD_CSI_PIXCLK__CSI_PIXCLK 0x14c 0x344 0x000 0x10 0x000 |
312 | #define MX25_PAD_CSI_PIXCLK__AUD6_TXFS 0x14c 0x344 0x000 0x11 0x001 | 351 | #define MX25_PAD_CSI_PIXCLK__AUD6_TXFS 0x14c 0x344 0x000 0x11 0x000 |
313 | #define MX25_PAD_CSI_PIXCLK__SDHC2_DAT3 0x14c 0x344 0x4f0 0x12 0x001 | 352 | #define MX25_PAD_CSI_PIXCLK__SDHC2_DAT3 0x14c 0x344 0x4f0 0x12 0x001 |
314 | #define MX25_PAD_CSI_PIXCLK__GPIO_1_11 0x14c 0x344 0x000 0x15 0x000 | 353 | #define MX25_PAD_CSI_PIXCLK__GPIO_1_11 0x14c 0x344 0x000 0x15 0x000 |
315 | 354 | ||
@@ -369,8 +408,8 @@ | |||
369 | #define MX25_PAD_UART2_RTS__CC1 0x188 0x380 0x000 0x13 0x000 | 408 | #define MX25_PAD_UART2_RTS__CC1 0x188 0x380 0x000 0x13 0x000 |
370 | #define MX25_PAD_UART2_RTS__GPIO_4_28 0x188 0x380 0x000 0x15 0x000 | 409 | #define MX25_PAD_UART2_RTS__GPIO_4_28 0x188 0x380 0x000 0x15 0x000 |
371 | 410 | ||
372 | #define MX25_PAD_UART2_CTS__FEC_RX_ER 0x18c 0x384 0x518 0x12 0x002 | ||
373 | #define MX25_PAD_UART2_CTS__UART2_CTS 0x18c 0x384 0x000 0x10 0x000 | 411 | #define MX25_PAD_UART2_CTS__UART2_CTS 0x18c 0x384 0x000 0x10 0x000 |
412 | #define MX25_PAD_UART2_CTS__FEC_RX_ERR 0x18c 0x384 0x518 0x12 0x002 | ||
374 | #define MX25_PAD_UART2_CTS__GPIO_4_29 0x18c 0x384 0x000 0x15 0x000 | 413 | #define MX25_PAD_UART2_CTS__GPIO_4_29 0x18c 0x384 0x000 0x15 0x000 |
375 | 414 | ||
376 | #define MX25_PAD_SD1_CMD__SD1_CMD 0x190 0x388 0x000 0x10 0x000 | 415 | #define MX25_PAD_SD1_CMD__SD1_CMD 0x190 0x388 0x000 0x10 0x000 |
@@ -392,11 +431,11 @@ | |||
392 | #define MX25_PAD_SD1_DATA1__GPIO_2_26 0x19c 0x394 0x000 0x15 0x000 | 431 | #define MX25_PAD_SD1_DATA1__GPIO_2_26 0x19c 0x394 0x000 0x15 0x000 |
393 | 432 | ||
394 | #define MX25_PAD_SD1_DATA2__SD1_DATA2 0x1a0 0x398 0x000 0x10 0x000 | 433 | #define MX25_PAD_SD1_DATA2__SD1_DATA2 0x1a0 0x398 0x000 0x10 0x000 |
395 | #define MX25_PAD_SD1_DATA2__FEC_RX_CLK 0x1a0 0x398 0x514 0x15 0x002 | 434 | #define MX25_PAD_SD1_DATA2__FEC_RX_CLK 0x1a0 0x398 0x514 0x12 0x002 |
396 | #define MX25_PAD_SD1_DATA2__GPIO_2_27 0x1a0 0x398 0x000 0x15 0x000 | 435 | #define MX25_PAD_SD1_DATA2__GPIO_2_27 0x1a0 0x398 0x000 0x15 0x000 |
397 | 436 | ||
398 | #define MX25_PAD_SD1_DATA3__SD1_DATA3 0x1a4 0x39c 0x000 0x10 0x000 | 437 | #define MX25_PAD_SD1_DATA3__SD1_DATA3 0x1a4 0x39c 0x000 0x10 0x000 |
399 | #define MX25_PAD_SD1_DATA3__FEC_CRS 0x1a4 0x39c 0x508 0x10 0x002 | 438 | #define MX25_PAD_SD1_DATA3__FEC_CRS 0x1a4 0x39c 0x508 0x12 0x002 |
400 | #define MX25_PAD_SD1_DATA3__GPIO_2_28 0x1a4 0x39c 0x000 0x15 0x000 | 439 | #define MX25_PAD_SD1_DATA3__GPIO_2_28 0x1a4 0x39c 0x000 0x15 0x000 |
401 | 440 | ||
402 | #define MX25_PAD_KPP_ROW0__KPP_ROW0 0x1a8 0x3a0 0x000 0x10 0x000 | 441 | #define MX25_PAD_KPP_ROW0__KPP_ROW0 0x1a8 0x3a0 0x000 0x10 0x000 |
@@ -410,7 +449,7 @@ | |||
410 | #define MX25_PAD_KPP_ROW2__GPIO_2_31 0x1b0 0x3a8 0x000 0x15 0x000 | 449 | #define MX25_PAD_KPP_ROW2__GPIO_2_31 0x1b0 0x3a8 0x000 0x15 0x000 |
411 | 450 | ||
412 | #define MX25_PAD_KPP_ROW3__KPP_ROW3 0x1b4 0x3ac 0x000 0x10 0x000 | 451 | #define MX25_PAD_KPP_ROW3__KPP_ROW3 0x1b4 0x3ac 0x000 0x10 0x000 |
413 | #define MX25_PAD_KPP_ROW3__CSI_LD1 0x1b4 0x3ac 0x48c 0x13 0x002 | 452 | #define MX25_PAD_KPP_ROW3__CSI_D1 0x1b4 0x3ac 0x48c 0x13 0x002 |
414 | #define MX25_PAD_KPP_ROW3__GPIO_3_0 0x1b4 0x3ac 0x000 0x15 0x000 | 453 | #define MX25_PAD_KPP_ROW3__GPIO_3_0 0x1b4 0x3ac 0x000 0x15 0x000 |
415 | 454 | ||
416 | #define MX25_PAD_KPP_COL0__KPP_COL0 0x1b8 0x3b0 0x000 0x10 0x000 | 455 | #define MX25_PAD_KPP_COL0__KPP_COL0 0x1b8 0x3b0 0x000 0x10 0x000 |
@@ -455,9 +494,18 @@ | |||
455 | #define MX25_PAD_FEC_RDATA0__GPIO_3_10 0x1dc 0x3d4 0x000 0x15 0x000 | 494 | #define MX25_PAD_FEC_RDATA0__GPIO_3_10 0x1dc 0x3d4 0x000 0x15 0x000 |
456 | 495 | ||
457 | #define MX25_PAD_FEC_RDATA1__FEC_RDATA1 0x1e0 0x3d8 0x000 0x10 0x000 | 496 | #define MX25_PAD_FEC_RDATA1__FEC_RDATA1 0x1e0 0x3d8 0x000 0x10 0x000 |
497 | /* | ||
498 | * According to the i.MX25 Reference manual (IMX25RM, Rev. 2, | ||
499 | * 01/2011) this is CAN1_TX but that's wrong. | ||
500 | */ | ||
501 | #define MX25_PAD_FEC_RDATA1__CAN2_TX 0x1e0 0x3d8 0x000 0x14 0x000 | ||
458 | #define MX25_PAD_FEC_RDATA1__GPIO_3_11 0x1e0 0x3d8 0x000 0x15 0x000 | 502 | #define MX25_PAD_FEC_RDATA1__GPIO_3_11 0x1e0 0x3d8 0x000 0x15 0x000 |
459 | 503 | ||
460 | #define MX25_PAD_FEC_RX_DV__FEC_RX_DV 0x1e4 0x3dc 0x000 0x10 0x000 | 504 | #define MX25_PAD_FEC_RX_DV__FEC_RX_DV 0x1e4 0x3dc 0x000 0x10 0x000 |
505 | /* | ||
506 | * According to the i.MX25 Reference manual (IMX25RM, Rev. 2, | ||
507 | * 01/2011) this is CAN1_RX but that's wrong. | ||
508 | */ | ||
461 | #define MX25_PAD_FEC_RX_DV__CAN2_RX 0x1e4 0x3dc 0x484 0x14 0x000 | 509 | #define MX25_PAD_FEC_RX_DV__CAN2_RX 0x1e4 0x3dc 0x484 0x14 0x000 |
462 | #define MX25_PAD_FEC_RX_DV__GPIO_3_12 0x1e4 0x3dc 0x000 0x15 0x000 | 510 | #define MX25_PAD_FEC_RX_DV__GPIO_3_12 0x1e4 0x3dc 0x000 0x15 0x000 |
463 | 511 | ||
@@ -471,30 +519,34 @@ | |||
471 | #define MX25_PAD_DE_B__DE_B 0x1f0 0x3ec 0x000 0x10 0x000 | 519 | #define MX25_PAD_DE_B__DE_B 0x1f0 0x3ec 0x000 0x10 0x000 |
472 | #define MX25_PAD_DE_B__GPIO_2_20 0x1f0 0x3ec 0x000 0x15 0x000 | 520 | #define MX25_PAD_DE_B__GPIO_2_20 0x1f0 0x3ec 0x000 0x15 0x000 |
473 | 521 | ||
474 | #define MX25_PAD_TDO__TDO 0x000 0x3e8 0x000 0x00 0x000 | ||
475 | |||
476 | #define MX25_PAD_GPIO_A__GPIO_A 0x1f4 0x3f0 0x000 0x10 0x000 | 522 | #define MX25_PAD_GPIO_A__GPIO_A 0x1f4 0x3f0 0x000 0x10 0x000 |
477 | #define MX25_PAD_GPIO_A__CAN1_TX 0x1f4 0x3f0 0x000 0x16 0x000 | 523 | #define MX25_PAD_GPIO_A__CAN1_TX 0x1f4 0x3f0 0x000 0x16 0x000 |
478 | #define MX25_PAD_GPIO_A__USBOTG_PWR 0x1f4 0x3f0 0x000 0x12 0x000 | 524 | #define MX25_PAD_GPIO_A__USBOTG_PWR 0x1f4 0x3f0 0x000 0x12 0x000 |
479 | 525 | ||
480 | #define MX25_PAD_GPIO_B__GPIO_B 0x1f8 0x3f4 0x000 0x10 0x000 | 526 | #define MX25_PAD_GPIO_B__GPIO_B 0x1f8 0x3f4 0x000 0x10 0x000 |
481 | #define MX25_PAD_GPIO_B__CAN1_RX 0x1f8 0x3f4 0x480 0x16 0x001 | ||
482 | #define MX25_PAD_GPIO_B__USBOTG_OC 0x1f8 0x3f4 0x57c 0x12 0x001 | 527 | #define MX25_PAD_GPIO_B__USBOTG_OC 0x1f8 0x3f4 0x57c 0x12 0x001 |
528 | #define MX25_PAD_GPIO_B__CAN1_RX 0x1f8 0x3f4 0x480 0x16 0x001 | ||
483 | 529 | ||
484 | #define MX25_PAD_GPIO_C__GPIO_C 0x1fc 0x3f8 0x000 0x10 0x000 | 530 | #define MX25_PAD_GPIO_C__GPIO_C 0x1fc 0x3f8 0x000 0x10 0x000 |
531 | #define MX25_PAD_GPIO_C__PWM4_PWMO 0x1fc 0x3f8 0x000 0x11 0x000 | ||
532 | #define MX25_PAD_GPIO_C__I2C2_SCL 0x1fc 0x3f8 0x51c 0x12 0x001 | ||
533 | #define MX25_PAD_GPIO_C__KPP_COL4 0x1fc 0x3f8 0x52c 0x13 0x001 | ||
485 | #define MX25_PAD_GPIO_C__CAN2_TX 0x1fc 0x3f8 0x000 0x16 0x000 | 534 | #define MX25_PAD_GPIO_C__CAN2_TX 0x1fc 0x3f8 0x000 0x16 0x000 |
486 | 535 | ||
487 | #define MX25_PAD_GPIO_D__GPIO_D 0x200 0x3fc 0x000 0x10 0x000 | 536 | #define MX25_PAD_GPIO_D__GPIO_D 0x200 0x3fc 0x000 0x10 0x000 |
537 | #define MX25_PAD_GPIO_D__I2C2_SDA 0x200 0x3fc 0x520 0x12 0x001 | ||
488 | #define MX25_PAD_GPIO_D__CAN2_RX 0x200 0x3fc 0x484 0x16 0x001 | 538 | #define MX25_PAD_GPIO_D__CAN2_RX 0x200 0x3fc 0x484 0x16 0x001 |
489 | 539 | ||
490 | #define MX25_PAD_GPIO_E__GPIO_E 0x204 0x400 0x000 0x10 0x000 | 540 | #define MX25_PAD_GPIO_E__GPIO_E 0x204 0x400 0x000 0x10 0x000 |
491 | #define MX25_PAD_GPIO_E__I2C3_CLK 0x204 0x400 0x524 0x11 0x002 | 541 | #define MX25_PAD_GPIO_E__I2C3_CLK 0x204 0x400 0x524 0x11 0x002 |
492 | #define MX25_PAD_GPIO_E__LD16 0x204 0x400 0x000 0x12 0x000 | 542 | #define MX25_PAD_GPIO_E__LD16 0x204 0x400 0x000 0x12 0x000 |
493 | #define MX25_PAD_GPIO_E__AUD7_TXD 0x204 0x400 0x000 0x14 0x000 | 543 | #define MX25_PAD_GPIO_E__AUD7_TXD 0x204 0x400 0x000 0x14 0x000 |
544 | #define MX25_PAD_GPIO_E__UART4_RXD 0x204 0x400 0x570 0x16 0x002 | ||
494 | 545 | ||
495 | #define MX25_PAD_GPIO_F__GPIO_F 0x208 0x404 0x000 0x10 0x000 | 546 | #define MX25_PAD_GPIO_F__GPIO_F 0x208 0x404 0x000 0x10 0x000 |
496 | #define MX25_PAD_GPIO_F__LD17 0x208 0x404 0x000 0x12 0x000 | 547 | #define MX25_PAD_GPIO_F__LD17 0x208 0x404 0x000 0x12 0x000 |
497 | #define MX25_PAD_GPIO_F__AUD7_TXC 0x208 0x404 0x000 0x14 0x000 | 548 | #define MX25_PAD_GPIO_F__AUD7_TXC 0x208 0x404 0x000 0x14 0x000 |
549 | #define MX25_PAD_GPIO_F__UART4_TXD 0x208 0x404 0x000 0x16 0x000 | ||
498 | 550 | ||
499 | #define MX25_PAD_EXT_ARMCLK__EXT_ARMCLK 0x20c 0x000 0x000 0x10 0x000 | 551 | #define MX25_PAD_EXT_ARMCLK__EXT_ARMCLK 0x20c 0x000 0x000 0x10 0x000 |
500 | #define MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x20c 0x000 0x000 0x15 0x000 | 552 | #define MX25_PAD_EXT_ARMCLK__GPIO_3_15 0x20c 0x000 0x000 0x15 0x000 |
@@ -505,6 +557,7 @@ | |||
505 | #define MX25_PAD_VSTBY_REQ__VSTBY_REQ 0x214 0x408 0x000 0x10 0x000 | 557 | #define MX25_PAD_VSTBY_REQ__VSTBY_REQ 0x214 0x408 0x000 0x10 0x000 |
506 | #define MX25_PAD_VSTBY_REQ__AUD7_TXFS 0x214 0x408 0x000 0x14 0x000 | 558 | #define MX25_PAD_VSTBY_REQ__AUD7_TXFS 0x214 0x408 0x000 0x14 0x000 |
507 | #define MX25_PAD_VSTBY_REQ__GPIO_3_17 0x214 0x408 0x000 0x15 0x000 | 559 | #define MX25_PAD_VSTBY_REQ__GPIO_3_17 0x214 0x408 0x000 0x15 0x000 |
560 | |||
508 | #define MX25_PAD_VSTBY_ACK__VSTBY_ACK 0x218 0x40c 0x000 0x10 0x000 | 561 | #define MX25_PAD_VSTBY_ACK__VSTBY_ACK 0x218 0x40c 0x000 0x10 0x000 |
509 | #define MX25_PAD_VSTBY_ACK__GPIO_3_18 0x218 0x40c 0x000 0x15 0x000 | 562 | #define MX25_PAD_VSTBY_ACK__GPIO_3_18 0x218 0x40c 0x000 0x15 0x000 |
510 | 563 | ||
@@ -517,6 +570,7 @@ | |||
517 | 570 | ||
518 | #define MX25_PAD_BOOT_MODE0__BOOT_MODE0 0x224 0x000 0x000 0x00 0x000 | 571 | #define MX25_PAD_BOOT_MODE0__BOOT_MODE0 0x224 0x000 0x000 0x00 0x000 |
519 | #define MX25_PAD_BOOT_MODE0__GPIO_4_30 0x224 0x000 0x000 0x05 0x000 | 572 | #define MX25_PAD_BOOT_MODE0__GPIO_4_30 0x224 0x000 0x000 0x05 0x000 |
573 | |||
520 | #define MX25_PAD_BOOT_MODE1__BOOT_MODE1 0x228 0x000 0x000 0x00 0x000 | 574 | #define MX25_PAD_BOOT_MODE1__BOOT_MODE1 0x228 0x000 0x000 0x00 0x000 |
521 | #define MX25_PAD_BOOT_MODE1__GPIO_4_31 0x228 0x000 0x000 0x05 0x000 | 575 | #define MX25_PAD_BOOT_MODE1__GPIO_4_31 0x228 0x000 0x000 0x05 0x000 |
522 | 576 | ||
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi index 4b063b68db44..6951b66d1ab7 100644 --- a/arch/arm/boot/dts/imx27.dtsi +++ b/arch/arm/boot/dts/imx27.dtsi | |||
@@ -488,6 +488,7 @@ | |||
488 | interrupts = <54>; | 488 | interrupts = <54>; |
489 | clocks = <&clks IMX27_CLK_USB_IPG_GATE>; | 489 | clocks = <&clks IMX27_CLK_USB_IPG_GATE>; |
490 | fsl,usbmisc = <&usbmisc 1>; | 490 | fsl,usbmisc = <&usbmisc 1>; |
491 | dr_mode = "host"; | ||
491 | status = "disabled"; | 492 | status = "disabled"; |
492 | }; | 493 | }; |
493 | 494 | ||
@@ -497,6 +498,7 @@ | |||
497 | interrupts = <55>; | 498 | interrupts = <55>; |
498 | clocks = <&clks IMX27_CLK_USB_IPG_GATE>; | 499 | clocks = <&clks IMX27_CLK_USB_IPG_GATE>; |
499 | fsl,usbmisc = <&usbmisc 2>; | 500 | fsl,usbmisc = <&usbmisc 2>; |
501 | dr_mode = "host"; | ||
500 | status = "disabled"; | 502 | status = "disabled"; |
501 | }; | 503 | }; |
502 | 504 | ||
diff --git a/arch/arm/boot/dts/imx28-apf28.dts b/arch/arm/boot/dts/imx28-apf28.dts index 7198fe3798c6..070e59cbdd8b 100644 --- a/arch/arm/boot/dts/imx28-apf28.dts +++ b/arch/arm/boot/dts/imx28-apf28.dts | |||
@@ -78,7 +78,7 @@ | |||
78 | phy-mode = "rmii"; | 78 | phy-mode = "rmii"; |
79 | pinctrl-names = "default"; | 79 | pinctrl-names = "default"; |
80 | pinctrl-0 = <&mac0_pins_a>; | 80 | pinctrl-0 = <&mac0_pins_a>; |
81 | phy-reset-gpios = <&gpio4 13 0>; | 81 | phy-reset-gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; |
82 | status = "okay"; | 82 | status = "okay"; |
83 | }; | 83 | }; |
84 | }; | 84 | }; |
diff --git a/arch/arm/boot/dts/imx28-apf28dev.dts b/arch/arm/boot/dts/imx28-apf28dev.dts index 1f38a052ad4b..7ac4f1af16ac 100644 --- a/arch/arm/boot/dts/imx28-apf28dev.dts +++ b/arch/arm/boot/dts/imx28-apf28dev.dts | |||
@@ -110,6 +110,13 @@ | |||
110 | }; | 110 | }; |
111 | }; | 111 | }; |
112 | }; | 112 | }; |
113 | |||
114 | can0: can@80032000 { | ||
115 | pinctrl-names = "default"; | ||
116 | pinctrl-0 = <&can0_pins_a>; | ||
117 | xceiver-supply = <®_can0_vcc>; | ||
118 | status = "okay"; | ||
119 | }; | ||
113 | }; | 120 | }; |
114 | 121 | ||
115 | apbx@80040000 { | 122 | apbx@80040000 { |
@@ -130,6 +137,13 @@ | |||
130 | status = "okay"; | 137 | status = "okay"; |
131 | }; | 138 | }; |
132 | 139 | ||
140 | auart0: serial@8006a000 { | ||
141 | pinctrl-names = "default"; | ||
142 | pinctrl-0 = <&auart0_pins_a>; | ||
143 | fsl,uart-has-rtscts; | ||
144 | status = "okay"; | ||
145 | }; | ||
146 | |||
133 | usbphy0: usbphy@8007c000 { | 147 | usbphy0: usbphy@8007c000 { |
134 | status = "okay"; | 148 | status = "okay"; |
135 | }; | 149 | }; |
@@ -143,7 +157,8 @@ | |||
143 | ahb@80080000 { | 157 | ahb@80080000 { |
144 | usb0: usb@80080000 { | 158 | usb0: usb@80080000 { |
145 | pinctrl-names = "default"; | 159 | pinctrl-names = "default"; |
146 | pinctrl-0 = <&usb0_otg_apf28dev>; | 160 | pinctrl-0 = <&usb0_otg_apf28dev |
161 | &usb0_id_pins_b>; | ||
147 | vbus-supply = <®_usb0_vbus>; | 162 | vbus-supply = <®_usb0_vbus>; |
148 | status = "okay"; | 163 | status = "okay"; |
149 | }; | 164 | }; |
@@ -156,7 +171,7 @@ | |||
156 | phy-mode = "rmii"; | 171 | phy-mode = "rmii"; |
157 | pinctrl-names = "default"; | 172 | pinctrl-names = "default"; |
158 | pinctrl-0 = <&mac1_pins_a>; | 173 | pinctrl-0 = <&mac1_pins_a>; |
159 | phy-reset-gpios = <&gpio0 23 0>; | 174 | phy-reset-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; |
160 | status = "okay"; | 175 | status = "okay"; |
161 | }; | 176 | }; |
162 | }; | 177 | }; |
@@ -175,6 +190,14 @@ | |||
175 | gpio = <&gpio1 23 1>; | 190 | gpio = <&gpio1 23 1>; |
176 | enable-active-high; | 191 | enable-active-high; |
177 | }; | 192 | }; |
193 | |||
194 | reg_can0_vcc: regulator@1 { | ||
195 | compatible = "regulator-fixed"; | ||
196 | reg = <1>; | ||
197 | regulator-name = "can0_vcc"; | ||
198 | regulator-min-microvolt = <5000000>; | ||
199 | regulator-max-microvolt = <5000000>; | ||
200 | }; | ||
178 | }; | 201 | }; |
179 | 202 | ||
180 | leds { | 203 | leds { |
@@ -200,8 +223,9 @@ | |||
200 | 223 | ||
201 | user-button { | 224 | user-button { |
202 | label = "User button"; | 225 | label = "User button"; |
203 | gpios = <&gpio0 17 0>; | 226 | gpios = <&gpio0 17 GPIO_ACTIVE_LOW>; |
204 | linux,code = <0x100>; | 227 | linux,code = <0x100>; |
228 | gpio-key,wakeup; | ||
205 | }; | 229 | }; |
206 | }; | 230 | }; |
207 | }; | 231 | }; |
diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi index 47f68ac868d4..25e25f82fbae 100644 --- a/arch/arm/boot/dts/imx28.dtsi +++ b/arch/arm/boot/dts/imx28.dtsi | |||
@@ -829,6 +829,19 @@ | |||
829 | fsl,pull-up = <MXS_PULL_DISABLE>; | 829 | fsl,pull-up = <MXS_PULL_DISABLE>; |
830 | }; | 830 | }; |
831 | 831 | ||
832 | spi3_pins_b: spi3@1 { | ||
833 | reg = <1>; | ||
834 | fsl,pinmux-ids = < | ||
835 | MX28_PAD_SSP3_SCK__SSP3_SCK | ||
836 | MX28_PAD_SSP3_MOSI__SSP3_CMD | ||
837 | MX28_PAD_SSP3_MISO__SSP3_D0 | ||
838 | MX28_PAD_SSP3_SS0__SSP3_D3 | ||
839 | >; | ||
840 | fsl,drive-strength = <MXS_DRIVE_8mA>; | ||
841 | fsl,voltage = <MXS_VOLTAGE_HIGH>; | ||
842 | fsl,pull-up = <MXS_PULL_ENABLE>; | ||
843 | }; | ||
844 | |||
832 | usb0_pins_a: usb0@0 { | 845 | usb0_pins_a: usb0@0 { |
833 | reg = <0>; | 846 | reg = <0>; |
834 | fsl,pinmux-ids = < | 847 | fsl,pinmux-ids = < |
@@ -1197,6 +1210,7 @@ | |||
1197 | interrupts = <92>; | 1210 | interrupts = <92>; |
1198 | clocks = <&clks 61>; | 1211 | clocks = <&clks 61>; |
1199 | fsl,usbphy = <&usbphy1>; | 1212 | fsl,usbphy = <&usbphy1>; |
1213 | dr_mode = "host"; | ||
1200 | status = "disabled"; | 1214 | status = "disabled"; |
1201 | }; | 1215 | }; |
1202 | 1216 | ||
diff --git a/arch/arm/boot/dts/imx35.dtsi b/arch/arm/boot/dts/imx35.dtsi index 6932928f3b45..b6478e97d6a7 100644 --- a/arch/arm/boot/dts/imx35.dtsi +++ b/arch/arm/boot/dts/imx35.dtsi | |||
@@ -318,6 +318,7 @@ | |||
318 | clocks = <&clks 73>; | 318 | clocks = <&clks 73>; |
319 | fsl,usbmisc = <&usbmisc 1>; | 319 | fsl,usbmisc = <&usbmisc 1>; |
320 | fsl,usbphy = <&usbphy1>; | 320 | fsl,usbphy = <&usbphy1>; |
321 | dr_mode = "host"; | ||
321 | status = "disabled"; | 322 | status = "disabled"; |
322 | }; | 323 | }; |
323 | 324 | ||
diff --git a/arch/arm/boot/dts/imx50.dtsi b/arch/arm/boot/dts/imx50.dtsi index 620b0f030591..e2457138311f 100644 --- a/arch/arm/boot/dts/imx50.dtsi +++ b/arch/arm/boot/dts/imx50.dtsi | |||
@@ -197,6 +197,7 @@ | |||
197 | reg = <0x53f80200 0x0200>; | 197 | reg = <0x53f80200 0x0200>; |
198 | interrupts = <14>; | 198 | interrupts = <14>; |
199 | clocks = <&clks IMX5_CLK_USB_PHY2_GATE>; | 199 | clocks = <&clks IMX5_CLK_USB_PHY2_GATE>; |
200 | dr_mode = "host"; | ||
200 | status = "disabled"; | 201 | status = "disabled"; |
201 | }; | 202 | }; |
202 | 203 | ||
@@ -205,6 +206,7 @@ | |||
205 | reg = <0x53f80400 0x0200>; | 206 | reg = <0x53f80400 0x0200>; |
206 | interrupts = <16>; | 207 | interrupts = <16>; |
207 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 208 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
209 | dr_mode = "host"; | ||
208 | status = "disabled"; | 210 | status = "disabled"; |
209 | }; | 211 | }; |
210 | 212 | ||
@@ -213,6 +215,7 @@ | |||
213 | reg = <0x53f80600 0x0200>; | 215 | reg = <0x53f80600 0x0200>; |
214 | interrupts = <17>; | 216 | interrupts = <17>; |
215 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 217 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
218 | dr_mode = "host"; | ||
216 | status = "disabled"; | 219 | status = "disabled"; |
217 | }; | 220 | }; |
218 | 221 | ||
diff --git a/arch/arm/boot/dts/imx51.dtsi b/arch/arm/boot/dts/imx51.dtsi index c0116cffc513..f46fe9bf0bcb 100644 --- a/arch/arm/boot/dts/imx51.dtsi +++ b/arch/arm/boot/dts/imx51.dtsi | |||
@@ -265,6 +265,7 @@ | |||
265 | interrupts = <14>; | 265 | interrupts = <14>; |
266 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 266 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
267 | fsl,usbmisc = <&usbmisc 1>; | 267 | fsl,usbmisc = <&usbmisc 1>; |
268 | dr_mode = "host"; | ||
268 | status = "disabled"; | 269 | status = "disabled"; |
269 | }; | 270 | }; |
270 | 271 | ||
@@ -274,6 +275,7 @@ | |||
274 | interrupts = <16>; | 275 | interrupts = <16>; |
275 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 276 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
276 | fsl,usbmisc = <&usbmisc 2>; | 277 | fsl,usbmisc = <&usbmisc 2>; |
278 | dr_mode = "host"; | ||
277 | status = "disabled"; | 279 | status = "disabled"; |
278 | }; | 280 | }; |
279 | 281 | ||
@@ -283,6 +285,7 @@ | |||
283 | interrupts = <17>; | 285 | interrupts = <17>; |
284 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 286 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
285 | fsl,usbmisc = <&usbmisc 3>; | 287 | fsl,usbmisc = <&usbmisc 3>; |
288 | dr_mode = "host"; | ||
286 | status = "disabled"; | 289 | status = "disabled"; |
287 | }; | 290 | }; |
288 | 291 | ||
diff --git a/arch/arm/boot/dts/imx53.dtsi b/arch/arm/boot/dts/imx53.dtsi index ff4fa7ecacd8..c3e3ca9362fb 100644 --- a/arch/arm/boot/dts/imx53.dtsi +++ b/arch/arm/boot/dts/imx53.dtsi | |||
@@ -309,6 +309,7 @@ | |||
309 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 309 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
310 | fsl,usbmisc = <&usbmisc 1>; | 310 | fsl,usbmisc = <&usbmisc 1>; |
311 | fsl,usbphy = <&usbphy1>; | 311 | fsl,usbphy = <&usbphy1>; |
312 | dr_mode = "host"; | ||
312 | status = "disabled"; | 313 | status = "disabled"; |
313 | }; | 314 | }; |
314 | 315 | ||
@@ -318,6 +319,7 @@ | |||
318 | interrupts = <16>; | 319 | interrupts = <16>; |
319 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 320 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
320 | fsl,usbmisc = <&usbmisc 2>; | 321 | fsl,usbmisc = <&usbmisc 2>; |
322 | dr_mode = "host"; | ||
321 | status = "disabled"; | 323 | status = "disabled"; |
322 | }; | 324 | }; |
323 | 325 | ||
@@ -327,6 +329,7 @@ | |||
327 | interrupts = <17>; | 329 | interrupts = <17>; |
328 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; | 330 | clocks = <&clks IMX5_CLK_USBOH3_GATE>; |
329 | fsl,usbmisc = <&usbmisc 3>; | 331 | fsl,usbmisc = <&usbmisc 3>; |
332 | dr_mode = "host"; | ||
330 | status = "disabled"; | 333 | status = "disabled"; |
331 | }; | 334 | }; |
332 | 335 | ||
diff --git a/arch/arm/boot/dts/imx6dl-aristainetos_4.dts b/arch/arm/boot/dts/imx6dl-aristainetos_4.dts index 9cd06e5e59f0..d4c4a22db488 100644 --- a/arch/arm/boot/dts/imx6dl-aristainetos_4.dts +++ b/arch/arm/boot/dts/imx6dl-aristainetos_4.dts | |||
@@ -83,3 +83,7 @@ | |||
83 | &ipu1_di0_disp0 { | 83 | &ipu1_di0_disp0 { |
84 | remote-endpoint = <&display0_in>; | 84 | remote-endpoint = <&display0_in>; |
85 | }; | 85 | }; |
86 | |||
87 | &pwm1 { | ||
88 | status = "okay"; | ||
89 | }; | ||
diff --git a/arch/arm/boot/dts/imx6dl-aristainetos_7.dts b/arch/arm/boot/dts/imx6dl-aristainetos_7.dts index b413e24288dc..15203f0e9725 100644 --- a/arch/arm/boot/dts/imx6dl-aristainetos_7.dts +++ b/arch/arm/boot/dts/imx6dl-aristainetos_7.dts | |||
@@ -72,3 +72,7 @@ | |||
72 | &ipu1_di0_disp0 { | 72 | &ipu1_di0_disp0 { |
73 | remote-endpoint = <&display0_in>; | 73 | remote-endpoint = <&display0_in>; |
74 | }; | 74 | }; |
75 | |||
76 | &pwm3 { | ||
77 | status = "okay"; | ||
78 | }; | ||
diff --git a/arch/arm/boot/dts/imx6dl-cubox-i.dts b/arch/arm/boot/dts/imx6dl-cubox-i.dts index 58aa8f2b0f26..e0b7fe8e18f8 100644 --- a/arch/arm/boot/dts/imx6dl-cubox-i.dts +++ b/arch/arm/boot/dts/imx6dl-cubox-i.dts | |||
@@ -1,5 +1,43 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2014 Russell King | 2 | * Copyright (C) 2014 Russell King |
3 | * | ||
4 | * This file is dual-licensed: you can use it either under the terms | ||
5 | * of the GPL or the X11 license, at your option. Note that this dual | ||
6 | * licensing only applies to this file, and not this project as a | ||
7 | * whole. | ||
8 | * | ||
9 | * a) This file is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License as | ||
11 | * published by the Free Software Foundation; either version 2 of the | ||
12 | * License. | ||
13 | * | ||
14 | * This file is distributed in the hope that it will be useful | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * Or, alternatively | ||
20 | * | ||
21 | * b) Permission is hereby granted, free of charge, to any person | ||
22 | * obtaining a copy of this software and associated documentation | ||
23 | * files (the "Software"), to deal in the Software without | ||
24 | * restriction, including without limitation the rights to use | ||
25 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
26 | * sell copies of the Software, and to permit persons to whom the | ||
27 | * Software is furnished to do so, subject to the following | ||
28 | * conditions: | ||
29 | * | ||
30 | * The above copyright notice and this permission notice shall be | ||
31 | * included in all copies or substantial portions of the Software. | ||
32 | * | ||
33 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
34 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
35 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
36 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
37 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
38 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
39 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
40 | * OTHER DEALINGS IN THE SOFTWARE. | ||
3 | */ | 41 | */ |
4 | /dts-v1/; | 42 | /dts-v1/; |
5 | 43 | ||
diff --git a/arch/arm/boot/dts/imx6dl-hummingboard.dts b/arch/arm/boot/dts/imx6dl-hummingboard.dts index 44a0e6736bb1..7369d2d7da3e 100644 --- a/arch/arm/boot/dts/imx6dl-hummingboard.dts +++ b/arch/arm/boot/dts/imx6dl-hummingboard.dts | |||
@@ -1,6 +1,44 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com) | 2 | * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com) |
3 | * Based on dt work by Russell King | 3 | * Based on dt work by Russell King |
4 | * | ||
5 | * This file is dual-licensed: you can use it either under the terms | ||
6 | * of the GPL or the X11 license, at your option. Note that this dual | ||
7 | * licensing only applies to this file, and not this project as a | ||
8 | * whole. | ||
9 | * | ||
10 | * a) This file is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU General Public License as | ||
12 | * published by the Free Software Foundation; either version 2 of the | ||
13 | * License. | ||
14 | * | ||
15 | * This file is distributed in the hope that it will be useful | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * Or, alternatively | ||
21 | * | ||
22 | * b) Permission is hereby granted, free of charge, to any person | ||
23 | * obtaining a copy of this software and associated documentation | ||
24 | * files (the "Software"), to deal in the Software without | ||
25 | * restriction, including without limitation the rights to use | ||
26 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
27 | * sell copies of the Software, and to permit persons to whom the | ||
28 | * Software is furnished to do so, subject to the following | ||
29 | * conditions: | ||
30 | * | ||
31 | * The above copyright notice and this permission notice shall be | ||
32 | * included in all copies or substantial portions of the Software. | ||
33 | * | ||
34 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
35 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
36 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
37 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
38 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
39 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
40 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
41 | * OTHER DEALINGS IN THE SOFTWARE. | ||
4 | */ | 42 | */ |
5 | /dts-v1/; | 43 | /dts-v1/; |
6 | 44 | ||
diff --git a/arch/arm/boot/dts/imx6q-cubox-i.dts b/arch/arm/boot/dts/imx6q-cubox-i.dts index 9efd8b0c8011..670bd8c4c847 100644 --- a/arch/arm/boot/dts/imx6q-cubox-i.dts +++ b/arch/arm/boot/dts/imx6q-cubox-i.dts | |||
@@ -1,5 +1,43 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2014 Russell King | 2 | * Copyright (C) 2014 Russell King |
3 | * | ||
4 | * This file is dual-licensed: you can use it either under the terms | ||
5 | * of the GPL or the X11 license, at your option. Note that this dual | ||
6 | * licensing only applies to this file, and not this project as a | ||
7 | * whole. | ||
8 | * | ||
9 | * a) This file is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License as | ||
11 | * published by the Free Software Foundation; either version 2 of the | ||
12 | * License. | ||
13 | * | ||
14 | * This file is distributed in the hope that it will be useful | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * Or, alternatively | ||
20 | * | ||
21 | * b) Permission is hereby granted, free of charge, to any person | ||
22 | * obtaining a copy of this software and associated documentation | ||
23 | * files (the "Software"), to deal in the Software without | ||
24 | * restriction, including without limitation the rights to use | ||
25 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
26 | * sell copies of the Software, and to permit persons to whom the | ||
27 | * Software is furnished to do so, subject to the following | ||
28 | * conditions: | ||
29 | * | ||
30 | * The above copyright notice and this permission notice shall be | ||
31 | * included in all copies or substantial portions of the Software. | ||
32 | * | ||
33 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
34 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
35 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
36 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
37 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
38 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
39 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
40 | * OTHER DEALINGS IN THE SOFTWARE. | ||
3 | */ | 41 | */ |
4 | /dts-v1/; | 42 | /dts-v1/; |
5 | 43 | ||
diff --git a/arch/arm/boot/dts/imx6q-hummingboard.dts b/arch/arm/boot/dts/imx6q-hummingboard.dts index c2bf8476ce45..0f6044553a24 100644 --- a/arch/arm/boot/dts/imx6q-hummingboard.dts +++ b/arch/arm/boot/dts/imx6q-hummingboard.dts | |||
@@ -1,6 +1,44 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com) | 2 | * Copyright (C) 2014 Rabeeh Khoury (rabeeh@solid-run.com) |
3 | * Based on dt work by Russell King | 3 | * Based on dt work by Russell King |
4 | * | ||
5 | * This file is dual-licensed: you can use it either under the terms | ||
6 | * of the GPL or the X11 license, at your option. Note that this dual | ||
7 | * licensing only applies to this file, and not this project as a | ||
8 | * whole. | ||
9 | * | ||
10 | * a) This file is free software; you can redistribute it and/or | ||
11 | * modify it under the terms of the GNU General Public License as | ||
12 | * published by the Free Software Foundation; either version 2 of the | ||
13 | * License. | ||
14 | * | ||
15 | * This file is distributed in the hope that it will be useful | ||
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
18 | * GNU General Public License for more details. | ||
19 | * | ||
20 | * Or, alternatively | ||
21 | * | ||
22 | * b) Permission is hereby granted, free of charge, to any person | ||
23 | * obtaining a copy of this software and associated documentation | ||
24 | * files (the "Software"), to deal in the Software without | ||
25 | * restriction, including without limitation the rights to use | ||
26 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
27 | * sell copies of the Software, and to permit persons to whom the | ||
28 | * Software is furnished to do so, subject to the following | ||
29 | * conditions: | ||
30 | * | ||
31 | * The above copyright notice and this permission notice shall be | ||
32 | * included in all copies or substantial portions of the Software. | ||
33 | * | ||
34 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
35 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
36 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
37 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
38 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
39 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
40 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
41 | * OTHER DEALINGS IN THE SOFTWARE. | ||
4 | */ | 42 | */ |
5 | /dts-v1/; | 43 | /dts-v1/; |
6 | 44 | ||
diff --git a/arch/arm/boot/dts/imx6q.dtsi b/arch/arm/boot/dts/imx6q.dtsi index 93ec79bb6b35..399103b8e2c9 100644 --- a/arch/arm/boot/dts/imx6q.dtsi +++ b/arch/arm/boot/dts/imx6q.dtsi | |||
@@ -294,19 +294,21 @@ | |||
294 | }; | 294 | }; |
295 | 295 | ||
296 | &mipi_dsi { | 296 | &mipi_dsi { |
297 | port@2 { | 297 | ports { |
298 | reg = <2>; | 298 | port@2 { |
299 | reg = <2>; | ||
299 | 300 | ||
300 | mipi_mux_2: endpoint { | 301 | mipi_mux_2: endpoint { |
301 | remote-endpoint = <&ipu2_di0_mipi>; | 302 | remote-endpoint = <&ipu2_di0_mipi>; |
303 | }; | ||
302 | }; | 304 | }; |
303 | }; | ||
304 | 305 | ||
305 | port@3 { | 306 | port@3 { |
306 | reg = <3>; | 307 | reg = <3>; |
307 | 308 | ||
308 | mipi_mux_3: endpoint { | 309 | mipi_mux_3: endpoint { |
309 | remote-endpoint = <&ipu2_di1_mipi>; | 310 | remote-endpoint = <&ipu2_di1_mipi>; |
311 | }; | ||
310 | }; | 312 | }; |
311 | }; | 313 | }; |
312 | }; | 314 | }; |
diff --git a/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi b/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi index 6a524ca011e7..d033bb182060 100644 --- a/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi +++ b/arch/arm/boot/dts/imx6qdl-cubox-i.dtsi | |||
@@ -1,8 +1,48 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2014 Russell King | 2 | * Copyright (C) 2014 Russell King |
3 | * | ||
4 | * This file is dual-licensed: you can use it either under the terms | ||
5 | * of the GPL or the X11 license, at your option. Note that this dual | ||
6 | * licensing only applies to this file, and not this project as a | ||
7 | * whole. | ||
8 | * | ||
9 | * a) This file is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License as | ||
11 | * published by the Free Software Foundation; either version 2 of the | ||
12 | * License. | ||
13 | * | ||
14 | * This file is distributed in the hope that it will be useful | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * Or, alternatively | ||
20 | * | ||
21 | * b) Permission is hereby granted, free of charge, to any person | ||
22 | * obtaining a copy of this software and associated documentation | ||
23 | * files (the "Software"), to deal in the Software without | ||
24 | * restriction, including without limitation the rights to use | ||
25 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
26 | * sell copies of the Software, and to permit persons to whom the | ||
27 | * Software is furnished to do so, subject to the following | ||
28 | * conditions: | ||
29 | * | ||
30 | * The above copyright notice and this permission notice shall be | ||
31 | * included in all copies or substantial portions of the Software. | ||
32 | * | ||
33 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
34 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
35 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
36 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
37 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
38 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
39 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
40 | * OTHER DEALINGS IN THE SOFTWARE. | ||
3 | */ | 41 | */ |
4 | #include "imx6qdl-microsom.dtsi" | 42 | #include "imx6qdl-microsom.dtsi" |
5 | #include "imx6qdl-microsom-ar8035.dtsi" | 43 | #include "imx6qdl-microsom-ar8035.dtsi" |
44 | #include <dt-bindings/input/input.h> | ||
45 | #include <dt-bindings/gpio/gpio.h> | ||
6 | 46 | ||
7 | / { | 47 | / { |
8 | ir_recv: ir-receiver { | 48 | ir_recv: ir-receiver { |
@@ -66,6 +106,18 @@ | |||
66 | spdif-controller = <&spdif>; | 106 | spdif-controller = <&spdif>; |
67 | spdif-out; | 107 | spdif-out; |
68 | }; | 108 | }; |
109 | |||
110 | gpio-keys { | ||
111 | compatible = "gpio-keys"; | ||
112 | pinctrl-0 = <&pinctrl_gpio_key>; | ||
113 | pinctrl-names = "default"; | ||
114 | |||
115 | button_0 { | ||
116 | label = "Button 0"; | ||
117 | gpios = <&gpio3 8 GPIO_ACTIVE_LOW>; | ||
118 | linux,code = <BTN_0>; | ||
119 | }; | ||
120 | }; | ||
69 | }; | 121 | }; |
70 | 122 | ||
71 | &hdmi { | 123 | &hdmi { |
@@ -170,9 +222,19 @@ | |||
170 | MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059 | 222 | MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059 |
171 | >; | 223 | >; |
172 | }; | 224 | }; |
225 | |||
226 | pinctrl_gpio_key: gpio-key { | ||
227 | fsl,pins = < | ||
228 | MX6QDL_PAD_EIM_DA8__GPIO3_IO08 0x17059 | ||
229 | >; | ||
230 | }; | ||
173 | }; | 231 | }; |
174 | }; | 232 | }; |
175 | 233 | ||
234 | &pwm1 { | ||
235 | status = "okay"; | ||
236 | }; | ||
237 | |||
176 | &spdif { | 238 | &spdif { |
177 | pinctrl-names = "default"; | 239 | pinctrl-names = "default"; |
178 | pinctrl-0 = <&pinctrl_cubox_i_spdif>; | 240 | pinctrl-0 = <&pinctrl_cubox_i_spdif>; |
diff --git a/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi b/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi index 62841e85a91e..151a3db2aea9 100644 --- a/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi +++ b/arch/arm/boot/dts/imx6qdl-hummingboard.dtsi | |||
@@ -1,5 +1,43 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2013,2014 Russell King | 2 | * Copyright (C) 2013,2014 Russell King |
3 | * | ||
4 | * This file is dual-licensed: you can use it either under the terms | ||
5 | * of the GPL or the X11 license, at your option. Note that this dual | ||
6 | * licensing only applies to this file, and not this project as a | ||
7 | * whole. | ||
8 | * | ||
9 | * a) This file is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License as | ||
11 | * published by the Free Software Foundation; either version 2 of the | ||
12 | * License. | ||
13 | * | ||
14 | * This file is distributed in the hope that it will be useful | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * Or, alternatively | ||
20 | * | ||
21 | * b) Permission is hereby granted, free of charge, to any person | ||
22 | * obtaining a copy of this software and associated documentation | ||
23 | * files (the "Software"), to deal in the Software without | ||
24 | * restriction, including without limitation the rights to use | ||
25 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
26 | * sell copies of the Software, and to permit persons to whom the | ||
27 | * Software is furnished to do so, subject to the following | ||
28 | * conditions: | ||
29 | * | ||
30 | * The above copyright notice and this permission notice shall be | ||
31 | * included in all copies or substantial portions of the Software. | ||
32 | * | ||
33 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
34 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
35 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
36 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
37 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
38 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
39 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
40 | * OTHER DEALINGS IN THE SOFTWARE. | ||
3 | */ | 41 | */ |
4 | #include "imx6qdl-microsom.dtsi" | 42 | #include "imx6qdl-microsom.dtsi" |
5 | #include "imx6qdl-microsom-ar8035.dtsi" | 43 | #include "imx6qdl-microsom-ar8035.dtsi" |
@@ -50,6 +88,19 @@ | |||
50 | }; | 88 | }; |
51 | }; | 89 | }; |
52 | 90 | ||
91 | sound-sgtl5000 { | ||
92 | audio-codec = <&sgtl5000>; | ||
93 | audio-routing = | ||
94 | "MIC_IN", "Mic Jack", | ||
95 | "Mic Jack", "Mic Bias", | ||
96 | "Headphone Jack", "HP_OUT"; | ||
97 | compatible = "fsl,imx-audio-sgtl5000"; | ||
98 | model = "On-board Codec"; | ||
99 | mux-ext-port = <5>; | ||
100 | mux-int-port = <1>; | ||
101 | ssi-controller = <&ssi1>; | ||
102 | }; | ||
103 | |||
53 | sound-spdif { | 104 | sound-spdif { |
54 | compatible = "fsl,imx-audio-spdif"; | 105 | compatible = "fsl,imx-audio-spdif"; |
55 | model = "On-board SPDIF"; | 106 | model = "On-board SPDIF"; |
@@ -59,6 +110,10 @@ | |||
59 | }; | 110 | }; |
60 | }; | 111 | }; |
61 | 112 | ||
113 | &audmux { | ||
114 | status = "okay"; | ||
115 | }; | ||
116 | |||
62 | &can1 { | 117 | &can1 { |
63 | pinctrl-names = "default"; | 118 | pinctrl-names = "default"; |
64 | pinctrl-0 = <&pinctrl_hummingboard_flexcan1>; | 119 | pinctrl-0 = <&pinctrl_hummingboard_flexcan1>; |
@@ -75,16 +130,24 @@ | |||
75 | &i2c1 { | 130 | &i2c1 { |
76 | pinctrl-names = "default"; | 131 | pinctrl-names = "default"; |
77 | pinctrl-0 = <&pinctrl_hummingboard_i2c1>; | 132 | pinctrl-0 = <&pinctrl_hummingboard_i2c1>; |
78 | |||
79 | /* | ||
80 | * Not fitted on Carrier-1 board... yet | ||
81 | status = "okay"; | 133 | status = "okay"; |
82 | 134 | ||
135 | /* Pro baseboard model */ | ||
83 | rtc: pcf8523@68 { | 136 | rtc: pcf8523@68 { |
84 | compatible = "nxp,pcf8523"; | 137 | compatible = "nxp,pcf8523"; |
85 | reg = <0x68>; | 138 | reg = <0x68>; |
86 | }; | 139 | }; |
87 | */ | 140 | |
141 | /* Pro baseboard model */ | ||
142 | sgtl5000: sgtl5000@0a { | ||
143 | clocks = <&clks IMX6QDL_CLK_CKO>; | ||
144 | compatible = "fsl,sgtl5000"; | ||
145 | pinctrl-names = "default"; | ||
146 | pinctrl-0 = <&pinctrl_hummingboard_sgtl5000>; | ||
147 | reg = <0x0a>; | ||
148 | VDDA-supply = <®_3p3v>; | ||
149 | VDDIO-supply = <®_3p3v>; | ||
150 | }; | ||
88 | }; | 151 | }; |
89 | 152 | ||
90 | &i2c2 { | 153 | &i2c2 { |
@@ -129,6 +192,20 @@ | |||
129 | >; | 192 | >; |
130 | }; | 193 | }; |
131 | 194 | ||
195 | pinctrl_hummingboard_pwm1: pwm1grp { | ||
196 | fsl,pins = <MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b1>; | ||
197 | }; | ||
198 | |||
199 | pinctrl_hummingboard_sgtl5000: hummingboard-sgtl5000 { | ||
200 | fsl,pins = < | ||
201 | MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0 | ||
202 | MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0 | ||
203 | MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0 | ||
204 | MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0 | ||
205 | MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0 | ||
206 | >; | ||
207 | }; | ||
208 | |||
132 | pinctrl_hummingboard_spdif: hummingboard-spdif { | 209 | pinctrl_hummingboard_spdif: hummingboard-spdif { |
133 | fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>; | 210 | fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>; |
134 | }; | 211 | }; |
@@ -168,12 +245,28 @@ | |||
168 | }; | 245 | }; |
169 | }; | 246 | }; |
170 | 247 | ||
248 | &pwm1 { | ||
249 | pinctrl-names = "default"; | ||
250 | pinctrl-0 = <&pinctrl_hummingboard_pwm1>; | ||
251 | status = "okay"; | ||
252 | }; | ||
253 | |||
254 | &pwm2 { | ||
255 | pinctrl-names = "default"; | ||
256 | status = "okay"; | ||
257 | }; | ||
258 | |||
171 | &spdif { | 259 | &spdif { |
172 | pinctrl-names = "default"; | 260 | pinctrl-names = "default"; |
173 | pinctrl-0 = <&pinctrl_hummingboard_spdif>; | 261 | pinctrl-0 = <&pinctrl_hummingboard_spdif>; |
174 | status = "okay"; | 262 | status = "okay"; |
175 | }; | 263 | }; |
176 | 264 | ||
265 | &ssi1 { | ||
266 | fsl,mode = "i2s-slave"; | ||
267 | status = "okay"; | ||
268 | }; | ||
269 | |||
177 | &usbh1 { | 270 | &usbh1 { |
178 | disable-over-current; | 271 | disable-over-current; |
179 | vbus-supply = <®_usbh1_vbus>; | 272 | vbus-supply = <®_usbh1_vbus>; |
diff --git a/arch/arm/boot/dts/imx6qdl-microsom-ar8035.dtsi b/arch/arm/boot/dts/imx6qdl-microsom-ar8035.dtsi index db9f45b2c573..4a1820309cdb 100644 --- a/arch/arm/boot/dts/imx6qdl-microsom-ar8035.dtsi +++ b/arch/arm/boot/dts/imx6qdl-microsom-ar8035.dtsi | |||
@@ -3,6 +3,44 @@ | |||
3 | * | 3 | * |
4 | * This describes the hookup for an AR8035 to the iMX6 on the SolidRun | 4 | * This describes the hookup for an AR8035 to the iMX6 on the SolidRun |
5 | * MicroSOM. | 5 | * MicroSOM. |
6 | * | ||
7 | * This file is dual-licensed: you can use it either under the terms | ||
8 | * of the GPL or the X11 license, at your option. Note that this dual | ||
9 | * licensing only applies to this file, and not this project as a | ||
10 | * whole. | ||
11 | * | ||
12 | * a) This file is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License as | ||
14 | * published by the Free Software Foundation; either version 2 of the | ||
15 | * License. | ||
16 | * | ||
17 | * This file is distributed in the hope that it will be useful | ||
18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
20 | * GNU General Public License for more details. | ||
21 | * | ||
22 | * Or, alternatively | ||
23 | * | ||
24 | * b) Permission is hereby granted, free of charge, to any person | ||
25 | * obtaining a copy of this software and associated documentation | ||
26 | * files (the "Software"), to deal in the Software without | ||
27 | * restriction, including without limitation the rights to use | ||
28 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
29 | * sell copies of the Software, and to permit persons to whom the | ||
30 | * Software is furnished to do so, subject to the following | ||
31 | * conditions: | ||
32 | * | ||
33 | * The above copyright notice and this permission notice shall be | ||
34 | * included in all copies or substantial portions of the Software. | ||
35 | * | ||
36 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
37 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
38 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
39 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
40 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
41 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
42 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
43 | * OTHER DEALINGS IN THE SOFTWARE. | ||
6 | */ | 44 | */ |
7 | &fec { | 45 | &fec { |
8 | pinctrl-names = "default"; | 46 | pinctrl-names = "default"; |
diff --git a/arch/arm/boot/dts/imx6qdl-microsom.dtsi b/arch/arm/boot/dts/imx6qdl-microsom.dtsi index 79eac6849d4c..349f82be816e 100644 --- a/arch/arm/boot/dts/imx6qdl-microsom.dtsi +++ b/arch/arm/boot/dts/imx6qdl-microsom.dtsi | |||
@@ -1,5 +1,43 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2013,2014 Russell King | 2 | * Copyright (C) 2013,2014 Russell King |
3 | * | ||
4 | * This file is dual-licensed: you can use it either under the terms | ||
5 | * of the GPL or the X11 license, at your option. Note that this dual | ||
6 | * licensing only applies to this file, and not this project as a | ||
7 | * whole. | ||
8 | * | ||
9 | * a) This file is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License as | ||
11 | * published by the Free Software Foundation; either version 2 of the | ||
12 | * License. | ||
13 | * | ||
14 | * This file is distributed in the hope that it will be useful | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * Or, alternatively | ||
20 | * | ||
21 | * b) Permission is hereby granted, free of charge, to any person | ||
22 | * obtaining a copy of this software and associated documentation | ||
23 | * files (the "Software"), to deal in the Software without | ||
24 | * restriction, including without limitation the rights to use | ||
25 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
26 | * sell copies of the Software, and to permit persons to whom the | ||
27 | * Software is furnished to do so, subject to the following | ||
28 | * conditions: | ||
29 | * | ||
30 | * The above copyright notice and this permission notice shall be | ||
31 | * included in all copies or substantial portions of the Software. | ||
32 | * | ||
33 | * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND | ||
34 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
35 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
36 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
37 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY | ||
38 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
39 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
40 | * OTHER DEALINGS IN THE SOFTWARE. | ||
3 | */ | 41 | */ |
4 | 42 | ||
5 | &iomuxc { | 43 | &iomuxc { |
diff --git a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi index 009abd69385d..46b2fed7c319 100644 --- a/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +++ b/arch/arm/boot/dts/imx6qdl-sabreauto.dtsi | |||
@@ -182,6 +182,34 @@ | |||
182 | }; | 182 | }; |
183 | }; | 183 | }; |
184 | 184 | ||
185 | &i2c3 { | ||
186 | pinctrl-names = "default"; | ||
187 | pinctrl-0 = <&pinctrl_i2c3>; | ||
188 | pinctrl-assert-gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>; | ||
189 | status = "okay"; | ||
190 | |||
191 | max7310_a: gpio@30 { | ||
192 | compatible = "maxim,max7310"; | ||
193 | reg = <0x30>; | ||
194 | gpio-controller; | ||
195 | #gpio-cells = <2>; | ||
196 | }; | ||
197 | |||
198 | max7310_b: gpio@32 { | ||
199 | compatible = "maxim,max7310"; | ||
200 | reg = <0x32>; | ||
201 | gpio-controller; | ||
202 | #gpio-cells = <2>; | ||
203 | }; | ||
204 | |||
205 | max7310_c: gpio@34 { | ||
206 | compatible = "maxim,max7310"; | ||
207 | reg = <0x34>; | ||
208 | gpio-controller; | ||
209 | #gpio-cells = <2>; | ||
210 | }; | ||
211 | }; | ||
212 | |||
185 | &iomuxc { | 213 | &iomuxc { |
186 | pinctrl-names = "default"; | 214 | pinctrl-names = "default"; |
187 | pinctrl-0 = <&pinctrl_hog>; | 215 | pinctrl-0 = <&pinctrl_hog>; |
@@ -265,6 +293,13 @@ | |||
265 | >; | 293 | >; |
266 | }; | 294 | }; |
267 | 295 | ||
296 | pinctrl_i2c3: i2c3grp { | ||
297 | fsl,pins = < | ||
298 | MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b8b1 | ||
299 | MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1 | ||
300 | >; | ||
301 | }; | ||
302 | |||
268 | pinctrl_pwm3: pwm1grp { | 303 | pinctrl_pwm3: pwm1grp { |
269 | fsl,pins = < | 304 | fsl,pins = < |
270 | MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1 | 305 | MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1 |
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi index d6c69ec44314..f74a8ded515f 100644 --- a/arch/arm/boot/dts/imx6qdl.dtsi +++ b/arch/arm/boot/dts/imx6qdl.dtsi | |||
@@ -53,6 +53,7 @@ | |||
53 | interrupt-controller; | 53 | interrupt-controller; |
54 | reg = <0x00a01000 0x1000>, | 54 | reg = <0x00a01000 0x1000>, |
55 | <0x00a00100 0x100>; | 55 | <0x00a00100 0x100>; |
56 | interrupt-parent = <&intc>; | ||
56 | }; | 57 | }; |
57 | 58 | ||
58 | clocks { | 59 | clocks { |
@@ -82,7 +83,7 @@ | |||
82 | #address-cells = <1>; | 83 | #address-cells = <1>; |
83 | #size-cells = <1>; | 84 | #size-cells = <1>; |
84 | compatible = "simple-bus"; | 85 | compatible = "simple-bus"; |
85 | interrupt-parent = <&intc>; | 86 | interrupt-parent = <&gpc>; |
86 | ranges; | 87 | ranges; |
87 | 88 | ||
88 | dma_apbh: dma-apbh@00110000 { | 89 | dma_apbh: dma-apbh@00110000 { |
@@ -122,6 +123,7 @@ | |||
122 | compatible = "arm,cortex-a9-twd-timer"; | 123 | compatible = "arm,cortex-a9-twd-timer"; |
123 | reg = <0x00a00600 0x20>; | 124 | reg = <0x00a00600 0x20>; |
124 | interrupts = <1 13 0xf01>; | 125 | interrupts = <1 13 0xf01>; |
126 | interrupt-parent = <&intc>; | ||
125 | clocks = <&clks IMX6QDL_CLK_TWD>; | 127 | clocks = <&clks IMX6QDL_CLK_TWD>; |
126 | }; | 128 | }; |
127 | 129 | ||
@@ -357,6 +359,7 @@ | |||
357 | clocks = <&clks IMX6QDL_CLK_IPG>, | 359 | clocks = <&clks IMX6QDL_CLK_IPG>, |
358 | <&clks IMX6QDL_CLK_PWM1>; | 360 | <&clks IMX6QDL_CLK_PWM1>; |
359 | clock-names = "ipg", "per"; | 361 | clock-names = "ipg", "per"; |
362 | status = "disabled"; | ||
360 | }; | 363 | }; |
361 | 364 | ||
362 | pwm2: pwm@02084000 { | 365 | pwm2: pwm@02084000 { |
@@ -367,6 +370,7 @@ | |||
367 | clocks = <&clks IMX6QDL_CLK_IPG>, | 370 | clocks = <&clks IMX6QDL_CLK_IPG>, |
368 | <&clks IMX6QDL_CLK_PWM2>; | 371 | <&clks IMX6QDL_CLK_PWM2>; |
369 | clock-names = "ipg", "per"; | 372 | clock-names = "ipg", "per"; |
373 | status = "disabled"; | ||
370 | }; | 374 | }; |
371 | 375 | ||
372 | pwm3: pwm@02088000 { | 376 | pwm3: pwm@02088000 { |
@@ -377,6 +381,7 @@ | |||
377 | clocks = <&clks IMX6QDL_CLK_IPG>, | 381 | clocks = <&clks IMX6QDL_CLK_IPG>, |
378 | <&clks IMX6QDL_CLK_PWM3>; | 382 | <&clks IMX6QDL_CLK_PWM3>; |
379 | clock-names = "ipg", "per"; | 383 | clock-names = "ipg", "per"; |
384 | status = "disabled"; | ||
380 | }; | 385 | }; |
381 | 386 | ||
382 | pwm4: pwm@0208c000 { | 387 | pwm4: pwm@0208c000 { |
@@ -387,6 +392,7 @@ | |||
387 | clocks = <&clks IMX6QDL_CLK_IPG>, | 392 | clocks = <&clks IMX6QDL_CLK_IPG>, |
388 | <&clks IMX6QDL_CLK_PWM4>; | 393 | <&clks IMX6QDL_CLK_PWM4>; |
389 | clock-names = "ipg", "per"; | 394 | clock-names = "ipg", "per"; |
395 | status = "disabled"; | ||
390 | }; | 396 | }; |
391 | 397 | ||
392 | can1: flexcan@02090000 { | 398 | can1: flexcan@02090000 { |
@@ -598,7 +604,7 @@ | |||
598 | regulator-name = "vddpu"; | 604 | regulator-name = "vddpu"; |
599 | regulator-min-microvolt = <725000>; | 605 | regulator-min-microvolt = <725000>; |
600 | regulator-max-microvolt = <1450000>; | 606 | regulator-max-microvolt = <1450000>; |
601 | regulator-always-on; | 607 | regulator-enable-ramp-delay = <150>; |
602 | anatop-reg-offset = <0x140>; | 608 | anatop-reg-offset = <0x140>; |
603 | anatop-vol-bit-shift = <9>; | 609 | anatop-vol-bit-shift = <9>; |
604 | anatop-vol-bit-width = <5>; | 610 | anatop-vol-bit-width = <5>; |
@@ -658,7 +664,7 @@ | |||
658 | #size-cells = <1>; | 664 | #size-cells = <1>; |
659 | ranges = <0 0x020cc000 0x4000>; | 665 | ranges = <0 0x020cc000 0x4000>; |
660 | 666 | ||
661 | snvs-rtc-lp@34 { | 667 | snvs_rtc: snvs-rtc-lp@34 { |
662 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; | 668 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; |
663 | reg = <0x34 0x58>; | 669 | reg = <0x34 0x58>; |
664 | interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>, | 670 | interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>, |
@@ -693,8 +699,19 @@ | |||
693 | gpc: gpc@020dc000 { | 699 | gpc: gpc@020dc000 { |
694 | compatible = "fsl,imx6q-gpc"; | 700 | compatible = "fsl,imx6q-gpc"; |
695 | reg = <0x020dc000 0x4000>; | 701 | reg = <0x020dc000 0x4000>; |
702 | interrupt-controller; | ||
703 | #interrupt-cells = <3>; | ||
696 | interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>, | 704 | interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>, |
697 | <0 90 IRQ_TYPE_LEVEL_HIGH>; | 705 | <0 90 IRQ_TYPE_LEVEL_HIGH>; |
706 | interrupt-parent = <&intc>; | ||
707 | pu-supply = <®_pu>; | ||
708 | clocks = <&clks IMX6QDL_CLK_GPU3D_CORE>, | ||
709 | <&clks IMX6QDL_CLK_GPU3D_SHADER>, | ||
710 | <&clks IMX6QDL_CLK_GPU2D_CORE>, | ||
711 | <&clks IMX6QDL_CLK_GPU2D_AXI>, | ||
712 | <&clks IMX6QDL_CLK_OPENVG_AXI>, | ||
713 | <&clks IMX6QDL_CLK_VPU_AXI>; | ||
714 | #power-domain-cells = <1>; | ||
698 | }; | 715 | }; |
699 | 716 | ||
700 | gpr: iomuxc-gpr@020e0000 { | 717 | gpr: iomuxc-gpr@020e0000 { |
@@ -845,6 +862,7 @@ | |||
845 | clocks = <&clks IMX6QDL_CLK_USBOH3>; | 862 | clocks = <&clks IMX6QDL_CLK_USBOH3>; |
846 | fsl,usbphy = <&usbphy2>; | 863 | fsl,usbphy = <&usbphy2>; |
847 | fsl,usbmisc = <&usbmisc 1>; | 864 | fsl,usbmisc = <&usbmisc 1>; |
865 | dr_mode = "host"; | ||
848 | status = "disabled"; | 866 | status = "disabled"; |
849 | }; | 867 | }; |
850 | 868 | ||
@@ -854,6 +872,7 @@ | |||
854 | interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>; | 872 | interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>; |
855 | clocks = <&clks IMX6QDL_CLK_USBOH3>; | 873 | clocks = <&clks IMX6QDL_CLK_USBOH3>; |
856 | fsl,usbmisc = <&usbmisc 2>; | 874 | fsl,usbmisc = <&usbmisc 2>; |
875 | dr_mode = "host"; | ||
857 | status = "disabled"; | 876 | status = "disabled"; |
858 | }; | 877 | }; |
859 | 878 | ||
@@ -863,6 +882,7 @@ | |||
863 | interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>; | 882 | interrupts = <0 42 IRQ_TYPE_LEVEL_HIGH>; |
864 | clocks = <&clks IMX6QDL_CLK_USBOH3>; | 883 | clocks = <&clks IMX6QDL_CLK_USBOH3>; |
865 | fsl,usbmisc = <&usbmisc 3>; | 884 | fsl,usbmisc = <&usbmisc 3>; |
885 | dr_mode = "host"; | ||
866 | status = "disabled"; | 886 | status = "disabled"; |
867 | }; | 887 | }; |
868 | 888 | ||
@@ -1022,19 +1042,24 @@ | |||
1022 | reg = <0x021e0000 0x4000>; | 1042 | reg = <0x021e0000 0x4000>; |
1023 | status = "disabled"; | 1043 | status = "disabled"; |
1024 | 1044 | ||
1025 | port@0 { | 1045 | ports { |
1026 | reg = <0>; | 1046 | #address-cells = <1>; |
1047 | #size-cells = <0>; | ||
1048 | |||
1049 | port@0 { | ||
1050 | reg = <0>; | ||
1027 | 1051 | ||
1028 | mipi_mux_0: endpoint { | 1052 | mipi_mux_0: endpoint { |
1029 | remote-endpoint = <&ipu1_di0_mipi>; | 1053 | remote-endpoint = <&ipu1_di0_mipi>; |
1054 | }; | ||
1030 | }; | 1055 | }; |
1031 | }; | ||
1032 | 1056 | ||
1033 | port@1 { | 1057 | port@1 { |
1034 | reg = <1>; | 1058 | reg = <1>; |
1035 | 1059 | ||
1036 | mipi_mux_1: endpoint { | 1060 | mipi_mux_1: endpoint { |
1037 | remote-endpoint = <&ipu1_di1_mipi>; | 1061 | remote-endpoint = <&ipu1_di1_mipi>; |
1062 | }; | ||
1038 | }; | 1063 | }; |
1039 | }; | 1064 | }; |
1040 | }; | 1065 | }; |
diff --git a/arch/arm/boot/dts/imx6sl-warp.dts b/arch/arm/boot/dts/imx6sl-warp.dts new file mode 100644 index 000000000000..64f7decf1fdc --- /dev/null +++ b/arch/arm/boot/dts/imx6sl-warp.dts | |||
@@ -0,0 +1,262 @@ | |||
1 | /* | ||
2 | * Copyright 2014, 2015 O.S. Systems Software LTDA. | ||
3 | * | ||
4 | * This file is dual-licensed: you can use it either under the terms | ||
5 | * of the GPL or the X11 license, at your option. Note that this dual | ||
6 | * licensing only applies to this file, and not this project as a | ||
7 | * whole. | ||
8 | * | ||
9 | * a) This file is free software; you can redistribute it and/or | ||
10 | * modify it under the terms of the GNU General Public License as | ||
11 | * published by the Free Software Foundation; either version 2 of | ||
12 | * the License, or (at your option) any later version. | ||
13 | * | ||
14 | * This file is distributed in the hope that it will be useful, | ||
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
17 | * GNU General Public License for more details. | ||
18 | * | ||
19 | * You should have received a copy of the GNU General Public | ||
20 | * License along with this file; if not, write to the Free | ||
21 | * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, | ||
22 | * MA 02110-1301 USA | ||
23 | * | ||
24 | * Or, alternatively, | ||
25 | * | ||
26 | * b) Permission is hereby granted, free of charge, to any person | ||
27 | * obtaining a copy of this software and associated documentation | ||
28 | * files (the "Software"), to deal in the Software without | ||
29 | * restriction, including without limitation the rights to use, | ||
30 | * copy, modify, merge, publish, distribute, sublicense, and/or | ||
31 | * sell copies of the Software, and to permit persons to whom the | ||
32 | * Software is furnished to do so, subject to the following | ||
33 | * conditions: | ||
34 | * | ||
35 | * The above copyright notice and this permission notice shall be | ||
36 | * included in all copies or substantial portions of the Software. | ||
37 | * | ||
38 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
39 | * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
40 | * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
41 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
42 | * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
43 | * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
44 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
45 | * OTHER DEALINGS IN THE SOFTWARE. | ||
46 | */ | ||
47 | |||
48 | /dts-v1/; | ||
49 | |||
50 | #include <dt-bindings/gpio/gpio.h> | ||
51 | #include "imx6sl.dtsi" | ||
52 | |||
53 | / { | ||
54 | model = "WaRP Board"; | ||
55 | compatible = "warp,imx6sl-warp", "fsl,imx6sl"; | ||
56 | |||
57 | memory { | ||
58 | reg = <0x80000000 0x20000000>; | ||
59 | }; | ||
60 | |||
61 | regulators { | ||
62 | compatible = "simple-bus"; | ||
63 | #address-cells = <1>; | ||
64 | #size-cells = <0>; | ||
65 | |||
66 | reg_usb_otg1_vbus: regulator@0 { | ||
67 | compatible = "regulator-fixed"; | ||
68 | reg = <0>; | ||
69 | regulator-name = "usb_otg1_vbus"; | ||
70 | regulator-min-microvolt = <5000000>; | ||
71 | regulator-max-microvolt = <5000000>; | ||
72 | gpio = <&gpio4 0 0>; | ||
73 | enable-active-high; | ||
74 | }; | ||
75 | |||
76 | reg_usb_otg2_vbus: regulator@1 { | ||
77 | compatible = "regulator-fixed"; | ||
78 | reg = <1>; | ||
79 | regulator-name = "usb_otg2_vbus"; | ||
80 | regulator-min-microvolt = <5000000>; | ||
81 | regulator-max-microvolt = <5000000>; | ||
82 | gpio = <&gpio4 2 0>; | ||
83 | enable-active-high; | ||
84 | }; | ||
85 | |||
86 | reg_1p8v: regulator@2 { | ||
87 | compatible = "regulator-fixed"; | ||
88 | reg = <2>; | ||
89 | regulator-name = "1P8V"; | ||
90 | regulator-min-microvolt = <1800000>; | ||
91 | regulator-max-microvolt = <1800000>; | ||
92 | }; | ||
93 | }; | ||
94 | |||
95 | usdhc3_pwrseq: usdhc3_pwrseq { | ||
96 | compatible = "mmc-pwrseq-simple"; | ||
97 | reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>, /* WL_REG_ON */ | ||
98 | <&gpio3 25 GPIO_ACTIVE_LOW>, /* BT_REG_ON */ | ||
99 | <&gpio4 4 GPIO_ACTIVE_LOW>, /* BT_WAKE */ | ||
100 | <&gpio4 6 GPIO_ACTIVE_LOW>; /* BT_RST_N */ | ||
101 | }; | ||
102 | }; | ||
103 | |||
104 | &uart1 { | ||
105 | pinctrl-names = "default"; | ||
106 | pinctrl-0 = <&pinctrl_uart1>; | ||
107 | status = "okay"; | ||
108 | }; | ||
109 | |||
110 | &uart2 { | ||
111 | pinctrl-names = "default"; | ||
112 | pinctrl-0 = <&pinctrl_uart2>; | ||
113 | fsl,uart-has-rtscts; | ||
114 | status = "okay"; | ||
115 | }; | ||
116 | |||
117 | &uart3 { | ||
118 | pinctrl-names = "default"; | ||
119 | pinctrl-0 = <&pinctrl_uart3>; | ||
120 | status = "okay"; | ||
121 | }; | ||
122 | |||
123 | &usbotg1 { | ||
124 | vbus-supply = <®_usb_otg1_vbus>; | ||
125 | dr_mode = "host"; | ||
126 | disable-over-current; | ||
127 | status = "okay"; | ||
128 | }; | ||
129 | |||
130 | &usbotg2 { | ||
131 | vbus-supply = <®_usb_otg2_vbus>; | ||
132 | disable-over-current; | ||
133 | status = "okay"; | ||
134 | }; | ||
135 | |||
136 | &usdhc2 { | ||
137 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; | ||
138 | pinctrl-0 = <&pinctrl_usdhc2>; | ||
139 | pinctrl-1 = <&pinctrl_usdhc2_100mhz>; | ||
140 | pinctrl-2 = <&pinctrl_usdhc2_200mhz>; | ||
141 | bus-width = <8>; | ||
142 | non-removable; | ||
143 | status = "okay"; | ||
144 | }; | ||
145 | |||
146 | &usdhc3 { | ||
147 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; | ||
148 | pinctrl-0 = <&pinctrl_usdhc3>; | ||
149 | pinctrl-1 = <&pinctrl_usdhc3_100mhz>; | ||
150 | pinctrl-2 = <&pinctrl_usdhc3_200mhz>; | ||
151 | bus-width = <4>; | ||
152 | non-removable; | ||
153 | keep-power-in-suspend; | ||
154 | enable-sdio-wakeup; | ||
155 | mmc-pwrseq = <&usdhc3_pwrseq>; | ||
156 | status = "okay"; | ||
157 | }; | ||
158 | |||
159 | &iomuxc { | ||
160 | imx6sl-warp { | ||
161 | pinctrl_uart1: uart1grp { | ||
162 | fsl,pins = < | ||
163 | MX6SL_PAD_UART1_RXD__UART1_RX_DATA 0x41b0b1 | ||
164 | MX6SL_PAD_UART1_TXD__UART1_TX_DATA 0x41b0b1 | ||
165 | >; | ||
166 | }; | ||
167 | |||
168 | pinctrl_uart2: uart2grp { | ||
169 | fsl,pins = < | ||
170 | MX6SL_PAD_EPDC_D12__UART2_RX_DATA 0x41b0b1 | ||
171 | MX6SL_PAD_EPDC_D13__UART2_TX_DATA 0x41b0b1 | ||
172 | MX6SL_PAD_EPDC_D14__UART2_RTS_B 0x4130B1 | ||
173 | MX6SL_PAD_EPDC_D15__UART2_CTS_B 0x4130B1 | ||
174 | >; | ||
175 | }; | ||
176 | |||
177 | pinctrl_uart3: uart3grp { | ||
178 | fsl,pins = < | ||
179 | MX6SL_PAD_AUD_RXC__UART3_RX_DATA 0x41b0b1 | ||
180 | MX6SL_PAD_AUD_RXC__UART3_TX_DATA 0x41b0b1 | ||
181 | >; | ||
182 | }; | ||
183 | |||
184 | pinctrl_usdhc2: usdhc2grp { | ||
185 | fsl,pins = < | ||
186 | MX6SL_PAD_SD2_CMD__SD2_CMD 0x417059 | ||
187 | MX6SL_PAD_SD2_CLK__SD2_CLK 0x410059 | ||
188 | MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x417059 | ||
189 | MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x417059 | ||
190 | MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x417059 | ||
191 | MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x417059 | ||
192 | MX6SL_PAD_SD2_DAT4__SD2_DATA4 0x417059 | ||
193 | MX6SL_PAD_SD2_DAT5__SD2_DATA5 0x417059 | ||
194 | MX6SL_PAD_SD2_DAT6__SD2_DATA6 0x417059 | ||
195 | MX6SL_PAD_SD2_DAT7__SD2_DATA7 0x417059 | ||
196 | >; | ||
197 | }; | ||
198 | |||
199 | pinctrl_usdhc2_100mhz: usdhc2grp100mhz { | ||
200 | fsl,pins = < | ||
201 | MX6SL_PAD_SD2_CMD__SD2_CMD 0x4170b9 | ||
202 | MX6SL_PAD_SD2_CLK__SD2_CLK 0x4100b9 | ||
203 | MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x4170b9 | ||
204 | MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x4170b9 | ||
205 | MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x4170b9 | ||
206 | MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x4170b9 | ||
207 | MX6SL_PAD_SD2_DAT4__SD2_DATA4 0x4170b9 | ||
208 | MX6SL_PAD_SD2_DAT5__SD2_DATA5 0x4170b9 | ||
209 | MX6SL_PAD_SD2_DAT6__SD2_DATA6 0x4170b9 | ||
210 | MX6SL_PAD_SD2_DAT7__SD2_DATA7 0x4170b9 | ||
211 | >; | ||
212 | }; | ||
213 | |||
214 | pinctrl_usdhc2_200mhz: usdhc2grp200mhz { | ||
215 | fsl,pins = < | ||
216 | MX6SL_PAD_SD2_CMD__SD2_CMD 0x4170f9 | ||
217 | MX6SL_PAD_SD2_CLK__SD2_CLK 0x4100f9 | ||
218 | MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x4170f9 | ||
219 | MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x4170f9 | ||
220 | MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x4170f9 | ||
221 | MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x4170f9 | ||
222 | MX6SL_PAD_SD2_DAT4__SD2_DATA4 0x4170f9 | ||
223 | MX6SL_PAD_SD2_DAT5__SD2_DATA5 0x4170f9 | ||
224 | MX6SL_PAD_SD2_DAT6__SD2_DATA6 0x4170f9 | ||
225 | MX6SL_PAD_SD2_DAT7__SD2_DATA7 0x4170f9 | ||
226 | >; | ||
227 | }; | ||
228 | |||
229 | pinctrl_usdhc3: usdhc3grp { | ||
230 | fsl,pins = < | ||
231 | MX6SL_PAD_SD3_CMD__SD3_CMD 0x417059 | ||
232 | MX6SL_PAD_SD3_CLK__SD3_CLK 0x410059 | ||
233 | MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x417059 | ||
234 | MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x417059 | ||
235 | MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x417059 | ||
236 | MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x417059 | ||
237 | >; | ||
238 | }; | ||
239 | |||
240 | pinctrl_usdhc3_100mhz: usdhc3grp100mhz { | ||
241 | fsl,pins = < | ||
242 | MX6SL_PAD_SD3_CMD__SD3_CMD 0x4170b9 | ||
243 | MX6SL_PAD_SD3_CLK__SD3_CLK 0x4100b9 | ||
244 | MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x4170b9 | ||
245 | MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x4170b9 | ||
246 | MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x4170b9 | ||
247 | MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x4170b9 | ||
248 | >; | ||
249 | }; | ||
250 | |||
251 | pinctrl_usdhc3_200mhz: usdhc3grp200mhz { | ||
252 | fsl,pins = < | ||
253 | MX6SL_PAD_SD3_CMD__SD3_CMD 0x4170f9 | ||
254 | MX6SL_PAD_SD3_CLK__SD3_CLK 0x4100f9 | ||
255 | MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x4170f9 | ||
256 | MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x4170f9 | ||
257 | MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x4170f9 | ||
258 | MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x4170f9 | ||
259 | >; | ||
260 | }; | ||
261 | }; | ||
262 | }; | ||
diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi index 36ab8e054cee..a78e715e3982 100644 --- a/arch/arm/boot/dts/imx6sl.dtsi +++ b/arch/arm/boot/dts/imx6sl.dtsi | |||
@@ -72,6 +72,7 @@ | |||
72 | interrupt-controller; | 72 | interrupt-controller; |
73 | reg = <0x00a01000 0x1000>, | 73 | reg = <0x00a01000 0x1000>, |
74 | <0x00a00100 0x100>; | 74 | <0x00a00100 0x100>; |
75 | interrupt-parent = <&intc>; | ||
75 | }; | 76 | }; |
76 | 77 | ||
77 | clocks { | 78 | clocks { |
@@ -95,7 +96,7 @@ | |||
95 | #address-cells = <1>; | 96 | #address-cells = <1>; |
96 | #size-cells = <1>; | 97 | #size-cells = <1>; |
97 | compatible = "simple-bus"; | 98 | compatible = "simple-bus"; |
98 | interrupt-parent = <&intc>; | 99 | interrupt-parent = <&gpc>; |
99 | ranges; | 100 | ranges; |
100 | 101 | ||
101 | ocram: sram@00900000 { | 102 | ocram: sram@00900000 { |
@@ -568,7 +569,7 @@ | |||
568 | #size-cells = <1>; | 569 | #size-cells = <1>; |
569 | ranges = <0 0x020cc000 0x4000>; | 570 | ranges = <0 0x020cc000 0x4000>; |
570 | 571 | ||
571 | snvs-rtc-lp@34 { | 572 | snvs_rtc: snvs-rtc-lp@34 { |
572 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; | 573 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; |
573 | reg = <0x34 0x58>; | 574 | reg = <0x34 0x58>; |
574 | interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>, | 575 | interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>, |
@@ -603,7 +604,14 @@ | |||
603 | gpc: gpc@020dc000 { | 604 | gpc: gpc@020dc000 { |
604 | compatible = "fsl,imx6sl-gpc", "fsl,imx6q-gpc"; | 605 | compatible = "fsl,imx6sl-gpc", "fsl,imx6q-gpc"; |
605 | reg = <0x020dc000 0x4000>; | 606 | reg = <0x020dc000 0x4000>; |
607 | interrupt-controller; | ||
608 | #interrupt-cells = <3>; | ||
606 | interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>; | 609 | interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>; |
610 | interrupt-parent = <&intc>; | ||
611 | pu-supply = <®_pu>; | ||
612 | clocks = <&clks IMX6SL_CLK_GPU2D_OVG>, | ||
613 | <&clks IMX6SL_CLK_GPU2D_PODF>; | ||
614 | #power-domain-cells = <1>; | ||
607 | }; | 615 | }; |
608 | 616 | ||
609 | gpr: iomuxc-gpr@020e0000 { | 617 | gpr: iomuxc-gpr@020e0000 { |
@@ -699,6 +707,7 @@ | |||
699 | interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>; | 707 | interrupts = <0 40 IRQ_TYPE_LEVEL_HIGH>; |
700 | clocks = <&clks IMX6SL_CLK_USBOH3>; | 708 | clocks = <&clks IMX6SL_CLK_USBOH3>; |
701 | fsl,usbmisc = <&usbmisc 2>; | 709 | fsl,usbmisc = <&usbmisc 2>; |
710 | dr_mode = "host"; | ||
702 | status = "disabled"; | 711 | status = "disabled"; |
703 | }; | 712 | }; |
704 | 713 | ||
diff --git a/arch/arm/boot/dts/imx6sx-sdb-reva.dts b/arch/arm/boot/dts/imx6sx-sdb-reva.dts new file mode 100644 index 000000000000..c76b87cba275 --- /dev/null +++ b/arch/arm/boot/dts/imx6sx-sdb-reva.dts | |||
@@ -0,0 +1,143 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 Freescale Semiconductor, Inc. | ||
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 | |||
9 | #include "imx6sx-sdb.dtsi" | ||
10 | |||
11 | / { | ||
12 | model = "Freescale i.MX6 SoloX SDB RevA Board"; | ||
13 | }; | ||
14 | |||
15 | &i2c1 { | ||
16 | clock-frequency = <100000>; | ||
17 | pinctrl-names = "default"; | ||
18 | pinctrl-0 = <&pinctrl_i2c1>; | ||
19 | status = "okay"; | ||
20 | |||
21 | pmic: pfuze100@08 { | ||
22 | compatible = "fsl,pfuze100"; | ||
23 | reg = <0x08>; | ||
24 | |||
25 | regulators { | ||
26 | sw1a_reg: sw1ab { | ||
27 | regulator-min-microvolt = <300000>; | ||
28 | regulator-max-microvolt = <1875000>; | ||
29 | regulator-boot-on; | ||
30 | regulator-always-on; | ||
31 | regulator-ramp-delay = <6250>; | ||
32 | }; | ||
33 | |||
34 | sw1c_reg: sw1c { | ||
35 | regulator-min-microvolt = <300000>; | ||
36 | regulator-max-microvolt = <1875000>; | ||
37 | regulator-boot-on; | ||
38 | regulator-always-on; | ||
39 | regulator-ramp-delay = <6250>; | ||
40 | }; | ||
41 | |||
42 | sw2_reg: sw2 { | ||
43 | regulator-min-microvolt = <800000>; | ||
44 | regulator-max-microvolt = <3300000>; | ||
45 | regulator-boot-on; | ||
46 | regulator-always-on; | ||
47 | }; | ||
48 | |||
49 | sw3a_reg: sw3a { | ||
50 | regulator-min-microvolt = <400000>; | ||
51 | regulator-max-microvolt = <1975000>; | ||
52 | regulator-boot-on; | ||
53 | regulator-always-on; | ||
54 | }; | ||
55 | |||
56 | sw3b_reg: sw3b { | ||
57 | regulator-min-microvolt = <400000>; | ||
58 | regulator-max-microvolt = <1975000>; | ||
59 | regulator-boot-on; | ||
60 | regulator-always-on; | ||
61 | }; | ||
62 | |||
63 | sw4_reg: sw4 { | ||
64 | regulator-min-microvolt = <800000>; | ||
65 | regulator-max-microvolt = <3300000>; | ||
66 | }; | ||
67 | |||
68 | swbst_reg: swbst { | ||
69 | regulator-min-microvolt = <5000000>; | ||
70 | regulator-max-microvolt = <5150000>; | ||
71 | }; | ||
72 | |||
73 | snvs_reg: vsnvs { | ||
74 | regulator-min-microvolt = <1000000>; | ||
75 | regulator-max-microvolt = <3000000>; | ||
76 | regulator-boot-on; | ||
77 | regulator-always-on; | ||
78 | }; | ||
79 | |||
80 | vref_reg: vrefddr { | ||
81 | regulator-boot-on; | ||
82 | regulator-always-on; | ||
83 | }; | ||
84 | |||
85 | vgen1_reg: vgen1 { | ||
86 | regulator-min-microvolt = <800000>; | ||
87 | regulator-max-microvolt = <1550000>; | ||
88 | regulator-always-on; | ||
89 | }; | ||
90 | |||
91 | vgen2_reg: vgen2 { | ||
92 | regulator-min-microvolt = <800000>; | ||
93 | regulator-max-microvolt = <1550000>; | ||
94 | }; | ||
95 | |||
96 | vgen3_reg: vgen3 { | ||
97 | regulator-min-microvolt = <1800000>; | ||
98 | regulator-max-microvolt = <3300000>; | ||
99 | regulator-always-on; | ||
100 | }; | ||
101 | |||
102 | vgen4_reg: vgen4 { | ||
103 | regulator-min-microvolt = <1800000>; | ||
104 | regulator-max-microvolt = <3300000>; | ||
105 | regulator-always-on; | ||
106 | }; | ||
107 | |||
108 | vgen5_reg: vgen5 { | ||
109 | regulator-min-microvolt = <1800000>; | ||
110 | regulator-max-microvolt = <3300000>; | ||
111 | regulator-always-on; | ||
112 | }; | ||
113 | |||
114 | vgen6_reg: vgen6 { | ||
115 | regulator-min-microvolt = <1800000>; | ||
116 | regulator-max-microvolt = <3300000>; | ||
117 | regulator-always-on; | ||
118 | }; | ||
119 | }; | ||
120 | }; | ||
121 | }; | ||
122 | |||
123 | &qspi2 { | ||
124 | pinctrl-names = "default"; | ||
125 | pinctrl-0 = <&pinctrl_qspi2>; | ||
126 | status = "okay"; | ||
127 | |||
128 | flash0: s25fl128s@0 { | ||
129 | reg = <0>; | ||
130 | #address-cells = <1>; | ||
131 | #size-cells = <1>; | ||
132 | compatible = "spansion,s25fl128s"; | ||
133 | spi-max-frequency = <66000000>; | ||
134 | }; | ||
135 | |||
136 | flash1: s25fl128s@1 { | ||
137 | reg = <1>; | ||
138 | #address-cells = <1>; | ||
139 | #size-cells = <1>; | ||
140 | compatible = "spansion,s25fl128s"; | ||
141 | spi-max-frequency = <66000000>; | ||
142 | }; | ||
143 | }; | ||
diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts index 32f07d6b4042..0bfc4e7865b2 100644 --- a/arch/arm/boot/dts/imx6sx-sdb.dts +++ b/arch/arm/boot/dts/imx6sx-sdb.dts | |||
@@ -1,197 +1,40 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) 2014 Freescale Semiconductor, Inc. | 2 | * Copyright (C) 2015 Freescale Semiconductor, Inc. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify | 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 | 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 | 8 | ||
9 | /dts-v1/; | 9 | #include "imx6sx-sdb.dtsi" |
10 | |||
11 | #include <dt-bindings/gpio/gpio.h> | ||
12 | #include <dt-bindings/input/input.h> | ||
13 | #include "imx6sx.dtsi" | ||
14 | 10 | ||
15 | / { | 11 | / { |
16 | model = "Freescale i.MX6 SoloX SDB Board"; | 12 | model = "Freescale i.MX6 SoloX SDB RevB Board"; |
17 | compatible = "fsl,imx6sx-sdb", "fsl,imx6sx"; | ||
18 | |||
19 | chosen { | ||
20 | stdout-path = &uart1; | ||
21 | }; | ||
22 | |||
23 | memory { | ||
24 | reg = <0x80000000 0x40000000>; | ||
25 | }; | ||
26 | |||
27 | backlight { | ||
28 | compatible = "pwm-backlight"; | ||
29 | pwms = <&pwm3 0 5000000>; | ||
30 | brightness-levels = <0 4 8 16 32 64 128 255>; | ||
31 | default-brightness-level = <6>; | ||
32 | }; | ||
33 | |||
34 | gpio-keys { | ||
35 | compatible = "gpio-keys"; | ||
36 | pinctrl-names = "default"; | ||
37 | pinctrl-0 = <&pinctrl_gpio_keys>; | ||
38 | |||
39 | volume-up { | ||
40 | label = "Volume Up"; | ||
41 | gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; | ||
42 | linux,code = <KEY_VOLUMEUP>; | ||
43 | }; | ||
44 | |||
45 | volume-down { | ||
46 | label = "Volume Down"; | ||
47 | gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; | ||
48 | linux,code = <KEY_VOLUMEDOWN>; | ||
49 | }; | ||
50 | }; | ||
51 | |||
52 | regulators { | ||
53 | compatible = "simple-bus"; | ||
54 | #address-cells = <1>; | ||
55 | #size-cells = <0>; | ||
56 | |||
57 | vcc_sd3: regulator@0 { | ||
58 | compatible = "regulator-fixed"; | ||
59 | reg = <0>; | ||
60 | pinctrl-names = "default"; | ||
61 | pinctrl-0 = <&pinctrl_vcc_sd3>; | ||
62 | regulator-name = "VCC_SD3"; | ||
63 | regulator-min-microvolt = <3000000>; | ||
64 | regulator-max-microvolt = <3000000>; | ||
65 | gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>; | ||
66 | enable-active-high; | ||
67 | }; | ||
68 | |||
69 | reg_usb_otg1_vbus: regulator@1 { | ||
70 | compatible = "regulator-fixed"; | ||
71 | reg = <1>; | ||
72 | pinctrl-names = "default"; | ||
73 | pinctrl-0 = <&pinctrl_usb_otg1>; | ||
74 | regulator-name = "usb_otg1_vbus"; | ||
75 | regulator-min-microvolt = <5000000>; | ||
76 | regulator-max-microvolt = <5000000>; | ||
77 | gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; | ||
78 | enable-active-high; | ||
79 | }; | ||
80 | |||
81 | reg_usb_otg2_vbus: regulator@2 { | ||
82 | compatible = "regulator-fixed"; | ||
83 | reg = <2>; | ||
84 | pinctrl-names = "default"; | ||
85 | pinctrl-0 = <&pinctrl_usb_otg2>; | ||
86 | regulator-name = "usb_otg2_vbus"; | ||
87 | regulator-min-microvolt = <5000000>; | ||
88 | regulator-max-microvolt = <5000000>; | ||
89 | gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; | ||
90 | enable-active-high; | ||
91 | }; | ||
92 | |||
93 | reg_psu_5v: regulator@3 { | ||
94 | compatible = "regulator-fixed"; | ||
95 | reg = <3>; | ||
96 | regulator-name = "PSU-5V0"; | ||
97 | regulator-min-microvolt = <5000000>; | ||
98 | regulator-max-microvolt = <5000000>; | ||
99 | }; | ||
100 | |||
101 | reg_lcd_3v3: regulator@4 { | ||
102 | compatible = "regulator-fixed"; | ||
103 | reg = <4>; | ||
104 | regulator-name = "lcd-3v3"; | ||
105 | gpio = <&gpio3 27 0>; | ||
106 | enable-active-high; | ||
107 | }; | ||
108 | |||
109 | reg_peri_3v3: regulator@5 { | ||
110 | compatible = "regulator-fixed"; | ||
111 | reg = <5>; | ||
112 | pinctrl-names = "default"; | ||
113 | pinctrl-0 = <&pinctrl_peri_3v3>; | ||
114 | regulator-name = "peri_3v3"; | ||
115 | regulator-min-microvolt = <3300000>; | ||
116 | regulator-max-microvolt = <3300000>; | ||
117 | gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>; | ||
118 | enable-active-high; | ||
119 | regulator-always-on; | ||
120 | }; | ||
121 | |||
122 | reg_enet_3v3: regulator@6 { | ||
123 | compatible = "regulator-fixed"; | ||
124 | reg = <6>; | ||
125 | pinctrl-names = "default"; | ||
126 | pinctrl-0 = <&pinctrl_enet_3v3>; | ||
127 | regulator-name = "enet_3v3"; | ||
128 | regulator-min-microvolt = <3300000>; | ||
129 | regulator-max-microvolt = <3300000>; | ||
130 | gpios = <&gpio2 6 GPIO_ACTIVE_LOW>; | ||
131 | }; | ||
132 | }; | ||
133 | |||
134 | sound { | ||
135 | compatible = "fsl,imx6sx-sdb-wm8962", "fsl,imx-audio-wm8962"; | ||
136 | model = "wm8962-audio"; | ||
137 | ssi-controller = <&ssi2>; | ||
138 | audio-codec = <&codec>; | ||
139 | audio-routing = | ||
140 | "Headphone Jack", "HPOUTL", | ||
141 | "Headphone Jack", "HPOUTR", | ||
142 | "Ext Spk", "SPKOUTL", | ||
143 | "Ext Spk", "SPKOUTR", | ||
144 | "AMIC", "MICBIAS", | ||
145 | "IN3R", "AMIC"; | ||
146 | mux-int-port = <2>; | ||
147 | mux-ext-port = <6>; | ||
148 | }; | ||
149 | }; | ||
150 | |||
151 | &audmux { | ||
152 | pinctrl-names = "default"; | ||
153 | pinctrl-0 = <&pinctrl_audmux>; | ||
154 | status = "okay"; | ||
155 | }; | 13 | }; |
156 | 14 | ||
157 | &fec1 { | 15 | &cpu0 { |
158 | pinctrl-names = "default"; | 16 | operating-points = < |
159 | pinctrl-0 = <&pinctrl_enet1>; | 17 | /* kHz uV */ |
160 | phy-supply = <®_enet_3v3>; | 18 | 996000 1250000 |
161 | phy-mode = "rgmii"; | 19 | 792000 1175000 |
162 | phy-handle = <ðphy1>; | 20 | 396000 1175000 |
163 | status = "okay"; | 21 | >; |
164 | 22 | fsl,soc-operating-points = < | |
165 | mdio { | 23 | /* ARM kHz SOC uV */ |
166 | #address-cells = <1>; | 24 | 996000 1250000 |
167 | #size-cells = <0>; | 25 | 792000 1175000 |
168 | 26 | 396000 1175000 | |
169 | ethphy1: ethernet-phy@1 { | 27 | >; |
170 | reg = <1>; | ||
171 | }; | ||
172 | |||
173 | ethphy2: ethernet-phy@2 { | ||
174 | reg = <2>; | ||
175 | }; | ||
176 | }; | ||
177 | }; | 28 | }; |
178 | 29 | ||
179 | &fec2 { | 30 | &i2c1 { |
31 | clock-frequency = <100000>; | ||
180 | pinctrl-names = "default"; | 32 | pinctrl-names = "default"; |
181 | pinctrl-0 = <&pinctrl_enet2>; | 33 | pinctrl-0 = <&pinctrl_i2c1>; |
182 | phy-mode = "rgmii"; | ||
183 | phy-handle = <ðphy2>; | ||
184 | status = "okay"; | 34 | status = "okay"; |
185 | }; | ||
186 | |||
187 | &i2c1 { | ||
188 | clock-frequency = <100000>; | ||
189 | pinctrl-names = "default"; | ||
190 | pinctrl-0 = <&pinctrl_i2c1>; | ||
191 | status = "okay"; | ||
192 | 35 | ||
193 | pmic: pfuze100@08 { | 36 | pmic: pfuze100@08 { |
194 | compatible = "fsl,pfuze100"; | 37 | compatible = "fsl,pfuze200"; |
195 | reg = <0x08>; | 38 | reg = <0x08>; |
196 | 39 | ||
197 | regulators { | 40 | regulators { |
@@ -203,14 +46,6 @@ | |||
203 | regulator-ramp-delay = <6250>; | 46 | regulator-ramp-delay = <6250>; |
204 | }; | 47 | }; |
205 | 48 | ||
206 | sw1c_reg: sw1c { | ||
207 | regulator-min-microvolt = <300000>; | ||
208 | regulator-max-microvolt = <1875000>; | ||
209 | regulator-boot-on; | ||
210 | regulator-always-on; | ||
211 | regulator-ramp-delay = <6250>; | ||
212 | }; | ||
213 | |||
214 | sw2_reg: sw2 { | 49 | sw2_reg: sw2 { |
215 | regulator-min-microvolt = <800000>; | 50 | regulator-min-microvolt = <800000>; |
216 | regulator-max-microvolt = <3300000>; | 51 | regulator-max-microvolt = <3300000>; |
@@ -232,11 +67,6 @@ | |||
232 | regulator-always-on; | 67 | regulator-always-on; |
233 | }; | 68 | }; |
234 | 69 | ||
235 | sw4_reg: sw4 { | ||
236 | regulator-min-microvolt = <800000>; | ||
237 | regulator-max-microvolt = <3300000>; | ||
238 | }; | ||
239 | |||
240 | swbst_reg: swbst { | 70 | swbst_reg: swbst { |
241 | regulator-min-microvolt = <5000000>; | 71 | regulator-min-microvolt = <5000000>; |
242 | regulator-max-microvolt = <5150000>; | 72 | regulator-max-microvolt = <5150000>; |
@@ -292,401 +122,24 @@ | |||
292 | }; | 122 | }; |
293 | }; | 123 | }; |
294 | 124 | ||
295 | &i2c4 { | ||
296 | clock-frequency = <100000>; | ||
297 | pinctrl-names = "default"; | ||
298 | pinctrl-0 = <&pinctrl_i2c4>; | ||
299 | status = "okay"; | ||
300 | |||
301 | codec: wm8962@1a { | ||
302 | compatible = "wlf,wm8962"; | ||
303 | reg = <0x1a>; | ||
304 | clocks = <&clks IMX6SX_CLK_AUDIO>; | ||
305 | DCVDD-supply = <&vgen4_reg>; | ||
306 | DBVDD-supply = <&vgen4_reg>; | ||
307 | AVDD-supply = <&vgen4_reg>; | ||
308 | CPVDD-supply = <&vgen4_reg>; | ||
309 | MICVDD-supply = <&vgen3_reg>; | ||
310 | PLLVDD-supply = <&vgen4_reg>; | ||
311 | SPKVDD1-supply = <®_psu_5v>; | ||
312 | SPKVDD2-supply = <®_psu_5v>; | ||
313 | }; | ||
314 | }; | ||
315 | |||
316 | &lcdif1 { | ||
317 | pinctrl-names = "default"; | ||
318 | pinctrl-0 = <&pinctrl_lcd>; | ||
319 | lcd-supply = <®_lcd_3v3>; | ||
320 | display = <&display0>; | ||
321 | status = "okay"; | ||
322 | |||
323 | display0: display0 { | ||
324 | bits-per-pixel = <16>; | ||
325 | bus-width = <24>; | ||
326 | |||
327 | display-timings { | ||
328 | native-mode = <&timing0>; | ||
329 | timing0: timing0 { | ||
330 | clock-frequency = <33500000>; | ||
331 | hactive = <800>; | ||
332 | vactive = <480>; | ||
333 | hback-porch = <89>; | ||
334 | hfront-porch = <164>; | ||
335 | vback-porch = <23>; | ||
336 | vfront-porch = <10>; | ||
337 | hsync-len = <10>; | ||
338 | vsync-len = <10>; | ||
339 | hsync-active = <0>; | ||
340 | vsync-active = <0>; | ||
341 | de-active = <1>; | ||
342 | pixelclk-active = <0>; | ||
343 | }; | ||
344 | }; | ||
345 | }; | ||
346 | }; | ||
347 | |||
348 | &pwm3 { | ||
349 | pinctrl-names = "default"; | ||
350 | pinctrl-0 = <&pinctrl_pwm3>; | ||
351 | status = "okay"; | ||
352 | }; | ||
353 | |||
354 | &snvs_poweroff { | ||
355 | status = "okay"; | ||
356 | }; | ||
357 | |||
358 | &qspi2 { | 125 | &qspi2 { |
359 | pinctrl-names = "default"; | 126 | pinctrl-names = "default"; |
360 | pinctrl-0 = <&pinctrl_qspi2>; | 127 | pinctrl-0 = <&pinctrl_qspi2>; |
361 | status = "okay"; | 128 | status = "okay"; |
362 | 129 | ||
363 | flash0: s25fl128s@0 { | 130 | flash0: n25q256a@0 { |
364 | reg = <0>; | ||
365 | #address-cells = <1>; | 131 | #address-cells = <1>; |
366 | #size-cells = <1>; | 132 | #size-cells = <1>; |
367 | compatible = "spansion,s25fl128s"; | 133 | compatible = "micron,n25q256a"; |
368 | spi-max-frequency = <66000000>; | 134 | spi-max-frequency = <29000000>; |
135 | reg = <0>; | ||
369 | }; | 136 | }; |
370 | 137 | ||
371 | flash1: s25fl128s@1 { | 138 | flash1: n25q256a@1 { |
372 | reg = <1>; | ||
373 | #address-cells = <1>; | 139 | #address-cells = <1>; |
374 | #size-cells = <1>; | 140 | #size-cells = <1>; |
375 | compatible = "spansion,s25fl128s"; | 141 | compatible = "micron,n25q256a"; |
376 | spi-max-frequency = <66000000>; | 142 | spi-max-frequency = <29000000>; |
377 | }; | 143 | reg = <1>; |
378 | }; | ||
379 | |||
380 | &ssi2 { | ||
381 | status = "okay"; | ||
382 | }; | ||
383 | |||
384 | &uart1 { | ||
385 | pinctrl-names = "default"; | ||
386 | pinctrl-0 = <&pinctrl_uart1>; | ||
387 | status = "okay"; | ||
388 | }; | ||
389 | |||
390 | &uart5 { /* for bluetooth */ | ||
391 | pinctrl-names = "default"; | ||
392 | pinctrl-0 = <&pinctrl_uart5>; | ||
393 | fsl,uart-has-rtscts; | ||
394 | status = "okay"; | ||
395 | }; | ||
396 | |||
397 | &usbotg1 { | ||
398 | vbus-supply = <®_usb_otg1_vbus>; | ||
399 | pinctrl-names = "default"; | ||
400 | pinctrl-0 = <&pinctrl_usb_otg1_id>; | ||
401 | status = "okay"; | ||
402 | }; | ||
403 | |||
404 | &usbotg2 { | ||
405 | vbus-supply = <®_usb_otg2_vbus>; | ||
406 | dr_mode = "host"; | ||
407 | status = "okay"; | ||
408 | }; | ||
409 | |||
410 | &usdhc2 { | ||
411 | pinctrl-names = "default"; | ||
412 | pinctrl-0 = <&pinctrl_usdhc2>; | ||
413 | non-removable; | ||
414 | no-1-8-v; | ||
415 | keep-power-in-suspend; | ||
416 | enable-sdio-wakeup; | ||
417 | status = "okay"; | ||
418 | }; | ||
419 | |||
420 | &usdhc3 { | ||
421 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; | ||
422 | pinctrl-0 = <&pinctrl_usdhc3>; | ||
423 | pinctrl-1 = <&pinctrl_usdhc3_100mhz>; | ||
424 | pinctrl-2 = <&pinctrl_usdhc3_200mhz>; | ||
425 | bus-width = <8>; | ||
426 | cd-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; | ||
427 | wp-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>; | ||
428 | keep-power-in-suspend; | ||
429 | enable-sdio-wakeup; | ||
430 | vmmc-supply = <&vcc_sd3>; | ||
431 | status = "okay"; | ||
432 | }; | ||
433 | |||
434 | &usdhc4 { | ||
435 | pinctrl-names = "default"; | ||
436 | pinctrl-0 = <&pinctrl_usdhc4>; | ||
437 | cd-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>; | ||
438 | wp-gpios = <&gpio6 20 GPIO_ACTIVE_HIGH>; | ||
439 | status = "okay"; | ||
440 | }; | ||
441 | |||
442 | &iomuxc { | ||
443 | imx6x-sdb { | ||
444 | pinctrl_audmux: audmuxgrp { | ||
445 | fsl,pins = < | ||
446 | MX6SX_PAD_CSI_DATA00__AUDMUX_AUD6_TXC 0x130b0 | ||
447 | MX6SX_PAD_CSI_DATA01__AUDMUX_AUD6_TXFS 0x130b0 | ||
448 | MX6SX_PAD_CSI_HSYNC__AUDMUX_AUD6_TXD 0x120b0 | ||
449 | MX6SX_PAD_CSI_VSYNC__AUDMUX_AUD6_RXD 0x130b0 | ||
450 | MX6SX_PAD_CSI_PIXCLK__AUDMUX_MCLK 0x130b0 | ||
451 | >; | ||
452 | }; | ||
453 | |||
454 | pinctrl_enet1: enet1grp { | ||
455 | fsl,pins = < | ||
456 | MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0xa0b1 | ||
457 | MX6SX_PAD_ENET1_MDC__ENET1_MDC 0xa0b1 | ||
458 | MX6SX_PAD_RGMII1_TXC__ENET1_RGMII_TXC 0xa0b1 | ||
459 | MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0xa0b1 | ||
460 | MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0xa0b1 | ||
461 | MX6SX_PAD_RGMII1_TD2__ENET1_TX_DATA_2 0xa0b1 | ||
462 | MX6SX_PAD_RGMII1_TD3__ENET1_TX_DATA_3 0xa0b1 | ||
463 | MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0xa0b1 | ||
464 | MX6SX_PAD_RGMII1_RXC__ENET1_RX_CLK 0x3081 | ||
465 | MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x3081 | ||
466 | MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x3081 | ||
467 | MX6SX_PAD_RGMII1_RD2__ENET1_RX_DATA_2 0x3081 | ||
468 | MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x3081 | ||
469 | MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081 | ||
470 | MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x91 | ||
471 | >; | ||
472 | }; | ||
473 | |||
474 | pinctrl_enet_3v3: enet3v3grp { | ||
475 | fsl,pins = < | ||
476 | MX6SX_PAD_ENET2_COL__GPIO2_IO_6 0x80000000 | ||
477 | >; | ||
478 | }; | ||
479 | |||
480 | pinctrl_enet2: enet2grp { | ||
481 | fsl,pins = < | ||
482 | MX6SX_PAD_RGMII2_TXC__ENET2_RGMII_TXC 0xa0b9 | ||
483 | MX6SX_PAD_RGMII2_TD0__ENET2_TX_DATA_0 0xa0b1 | ||
484 | MX6SX_PAD_RGMII2_TD1__ENET2_TX_DATA_1 0xa0b1 | ||
485 | MX6SX_PAD_RGMII2_TD2__ENET2_TX_DATA_2 0xa0b1 | ||
486 | MX6SX_PAD_RGMII2_TD3__ENET2_TX_DATA_3 0xa0b1 | ||
487 | MX6SX_PAD_RGMII2_TX_CTL__ENET2_TX_EN 0xa0b1 | ||
488 | MX6SX_PAD_RGMII2_RXC__ENET2_RX_CLK 0x3081 | ||
489 | MX6SX_PAD_RGMII2_RD0__ENET2_RX_DATA_0 0x3081 | ||
490 | MX6SX_PAD_RGMII2_RD1__ENET2_RX_DATA_1 0x3081 | ||
491 | MX6SX_PAD_RGMII2_RD2__ENET2_RX_DATA_2 0x3081 | ||
492 | MX6SX_PAD_RGMII2_RD3__ENET2_RX_DATA_3 0x3081 | ||
493 | MX6SX_PAD_RGMII2_RX_CTL__ENET2_RX_EN 0x3081 | ||
494 | >; | ||
495 | }; | ||
496 | |||
497 | pinctrl_gpio_keys: gpio_keysgrp { | ||
498 | fsl,pins = < | ||
499 | MX6SX_PAD_CSI_DATA04__GPIO1_IO_18 0x17059 | ||
500 | MX6SX_PAD_CSI_DATA05__GPIO1_IO_19 0x17059 | ||
501 | >; | ||
502 | }; | ||
503 | |||
504 | pinctrl_i2c1: i2c1grp { | ||
505 | fsl,pins = < | ||
506 | MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x4001b8b1 | ||
507 | MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x4001b8b1 | ||
508 | >; | ||
509 | }; | ||
510 | |||
511 | pinctrl_i2c4: i2c4grp { | ||
512 | fsl,pins = < | ||
513 | MX6SX_PAD_CSI_DATA07__I2C4_SDA 0x4001b8b1 | ||
514 | MX6SX_PAD_CSI_DATA06__I2C4_SCL 0x4001b8b1 | ||
515 | >; | ||
516 | }; | ||
517 | |||
518 | pinctrl_lcd: lcdgrp { | ||
519 | fsl,pins = < | ||
520 | MX6SX_PAD_LCD1_DATA00__LCDIF1_DATA_0 0x4001b0b0 | ||
521 | MX6SX_PAD_LCD1_DATA01__LCDIF1_DATA_1 0x4001b0b0 | ||
522 | MX6SX_PAD_LCD1_DATA02__LCDIF1_DATA_2 0x4001b0b0 | ||
523 | MX6SX_PAD_LCD1_DATA03__LCDIF1_DATA_3 0x4001b0b0 | ||
524 | MX6SX_PAD_LCD1_DATA04__LCDIF1_DATA_4 0x4001b0b0 | ||
525 | MX6SX_PAD_LCD1_DATA05__LCDIF1_DATA_5 0x4001b0b0 | ||
526 | MX6SX_PAD_LCD1_DATA06__LCDIF1_DATA_6 0x4001b0b0 | ||
527 | MX6SX_PAD_LCD1_DATA07__LCDIF1_DATA_7 0x4001b0b0 | ||
528 | MX6SX_PAD_LCD1_DATA08__LCDIF1_DATA_8 0x4001b0b0 | ||
529 | MX6SX_PAD_LCD1_DATA09__LCDIF1_DATA_9 0x4001b0b0 | ||
530 | MX6SX_PAD_LCD1_DATA10__LCDIF1_DATA_10 0x4001b0b0 | ||
531 | MX6SX_PAD_LCD1_DATA11__LCDIF1_DATA_11 0x4001b0b0 | ||
532 | MX6SX_PAD_LCD1_DATA12__LCDIF1_DATA_12 0x4001b0b0 | ||
533 | MX6SX_PAD_LCD1_DATA13__LCDIF1_DATA_13 0x4001b0b0 | ||
534 | MX6SX_PAD_LCD1_DATA14__LCDIF1_DATA_14 0x4001b0b0 | ||
535 | MX6SX_PAD_LCD1_DATA15__LCDIF1_DATA_15 0x4001b0b0 | ||
536 | MX6SX_PAD_LCD1_DATA16__LCDIF1_DATA_16 0x4001b0b0 | ||
537 | MX6SX_PAD_LCD1_DATA17__LCDIF1_DATA_17 0x4001b0b0 | ||
538 | MX6SX_PAD_LCD1_DATA18__LCDIF1_DATA_18 0x4001b0b0 | ||
539 | MX6SX_PAD_LCD1_DATA19__LCDIF1_DATA_19 0x4001b0b0 | ||
540 | MX6SX_PAD_LCD1_DATA20__LCDIF1_DATA_20 0x4001b0b0 | ||
541 | MX6SX_PAD_LCD1_DATA21__LCDIF1_DATA_21 0x4001b0b0 | ||
542 | MX6SX_PAD_LCD1_DATA22__LCDIF1_DATA_22 0x4001b0b0 | ||
543 | MX6SX_PAD_LCD1_DATA23__LCDIF1_DATA_23 0x4001b0b0 | ||
544 | MX6SX_PAD_LCD1_CLK__LCDIF1_CLK 0x4001b0b0 | ||
545 | MX6SX_PAD_LCD1_ENABLE__LCDIF1_ENABLE 0x4001b0b0 | ||
546 | MX6SX_PAD_LCD1_VSYNC__LCDIF1_VSYNC 0x4001b0b0 | ||
547 | MX6SX_PAD_LCD1_HSYNC__LCDIF1_HSYNC 0x4001b0b0 | ||
548 | MX6SX_PAD_LCD1_RESET__GPIO3_IO_27 0x4001b0b0 | ||
549 | >; | ||
550 | }; | ||
551 | |||
552 | pinctrl_peri_3v3: peri3v3grp { | ||
553 | fsl,pins = < | ||
554 | MX6SX_PAD_QSPI1A_DATA0__GPIO4_IO_16 0x80000000 | ||
555 | >; | ||
556 | }; | ||
557 | |||
558 | pinctrl_pwm3: pwm3grp-1 { | ||
559 | fsl,pins = < | ||
560 | MX6SX_PAD_SD1_DATA2__PWM3_OUT 0x110b0 | ||
561 | >; | ||
562 | }; | ||
563 | |||
564 | pinctrl_qspi2: qspi2grp { | ||
565 | fsl,pins = < | ||
566 | MX6SX_PAD_NAND_WP_B__QSPI2_A_DATA_0 0x70f1 | ||
567 | MX6SX_PAD_NAND_READY_B__QSPI2_A_DATA_1 0x70f1 | ||
568 | MX6SX_PAD_NAND_CE0_B__QSPI2_A_DATA_2 0x70f1 | ||
569 | MX6SX_PAD_NAND_CE1_B__QSPI2_A_DATA_3 0x70f1 | ||
570 | MX6SX_PAD_NAND_CLE__QSPI2_A_SCLK 0x70f1 | ||
571 | MX6SX_PAD_NAND_ALE__QSPI2_A_SS0_B 0x70f1 | ||
572 | MX6SX_PAD_NAND_DATA01__QSPI2_B_DATA_0 0x70f1 | ||
573 | MX6SX_PAD_NAND_DATA00__QSPI2_B_DATA_1 0x70f1 | ||
574 | MX6SX_PAD_NAND_WE_B__QSPI2_B_DATA_2 0x70f1 | ||
575 | MX6SX_PAD_NAND_RE_B__QSPI2_B_DATA_3 0x70f1 | ||
576 | MX6SX_PAD_NAND_DATA02__QSPI2_B_SCLK 0x70f1 | ||
577 | MX6SX_PAD_NAND_DATA03__QSPI2_B_SS0_B 0x70f1 | ||
578 | >; | ||
579 | }; | ||
580 | |||
581 | pinctrl_vcc_sd3: vccsd3grp { | ||
582 | fsl,pins = < | ||
583 | MX6SX_PAD_KEY_COL1__GPIO2_IO_11 0x17059 | ||
584 | >; | ||
585 | }; | ||
586 | |||
587 | pinctrl_uart1: uart1grp { | ||
588 | fsl,pins = < | ||
589 | MX6SX_PAD_GPIO1_IO04__UART1_TX 0x1b0b1 | ||
590 | MX6SX_PAD_GPIO1_IO05__UART1_RX 0x1b0b1 | ||
591 | >; | ||
592 | }; | ||
593 | |||
594 | pinctrl_uart5: uart5grp { | ||
595 | fsl,pins = < | ||
596 | MX6SX_PAD_KEY_ROW3__UART5_RX 0x1b0b1 | ||
597 | MX6SX_PAD_KEY_COL3__UART5_TX 0x1b0b1 | ||
598 | MX6SX_PAD_KEY_ROW2__UART5_CTS_B 0x1b0b1 | ||
599 | MX6SX_PAD_KEY_COL2__UART5_RTS_B 0x1b0b1 | ||
600 | >; | ||
601 | }; | ||
602 | |||
603 | pinctrl_usb_otg1: usbotg1grp { | ||
604 | fsl,pins = < | ||
605 | MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x10b0 | ||
606 | >; | ||
607 | }; | ||
608 | |||
609 | pinctrl_usb_otg1_id: usbotg1idgrp { | ||
610 | fsl,pins = < | ||
611 | MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID 0x17059 | ||
612 | >; | ||
613 | }; | ||
614 | |||
615 | pinctrl_usb_otg2: usbot2ggrp { | ||
616 | fsl,pins = < | ||
617 | MX6SX_PAD_GPIO1_IO12__GPIO1_IO_12 0x10b0 | ||
618 | >; | ||
619 | }; | ||
620 | |||
621 | pinctrl_usdhc2: usdhc2grp { | ||
622 | fsl,pins = < | ||
623 | MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x17059 | ||
624 | MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x10059 | ||
625 | MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059 | ||
626 | MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059 | ||
627 | MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059 | ||
628 | MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059 | ||
629 | >; | ||
630 | }; | ||
631 | |||
632 | pinctrl_usdhc3: usdhc3grp { | ||
633 | fsl,pins = < | ||
634 | MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x17059 | ||
635 | MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x10059 | ||
636 | MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x17059 | ||
637 | MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x17059 | ||
638 | MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x17059 | ||
639 | MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x17059 | ||
640 | MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x17059 | ||
641 | MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x17059 | ||
642 | MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x17059 | ||
643 | MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x17059 | ||
644 | MX6SX_PAD_KEY_COL0__GPIO2_IO_10 0x17059 /* CD */ | ||
645 | MX6SX_PAD_KEY_ROW0__GPIO2_IO_15 0x17059 /* WP */ | ||
646 | >; | ||
647 | }; | ||
648 | |||
649 | pinctrl_usdhc3_100mhz: usdhc3grp-100mhz { | ||
650 | fsl,pins = < | ||
651 | MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x170b9 | ||
652 | MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x100b9 | ||
653 | MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x170b9 | ||
654 | MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x170b9 | ||
655 | MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x170b9 | ||
656 | MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x170b9 | ||
657 | MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x170b9 | ||
658 | MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x170b9 | ||
659 | MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x170b9 | ||
660 | MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x170b9 | ||
661 | >; | ||
662 | }; | ||
663 | |||
664 | pinctrl_usdhc3_200mhz: usdhc3grp-200mhz { | ||
665 | fsl,pins = < | ||
666 | MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x170f9 | ||
667 | MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x100f9 | ||
668 | MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x170f9 | ||
669 | MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x170f9 | ||
670 | MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x170f9 | ||
671 | MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x170f9 | ||
672 | MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x170f9 | ||
673 | MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x170f9 | ||
674 | MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x170f9 | ||
675 | MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x170f9 | ||
676 | >; | ||
677 | }; | ||
678 | |||
679 | pinctrl_usdhc4: usdhc4grp { | ||
680 | fsl,pins = < | ||
681 | MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x17059 | ||
682 | MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x10059 | ||
683 | MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x17059 | ||
684 | MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x17059 | ||
685 | MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x17059 | ||
686 | MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x17059 | ||
687 | MX6SX_PAD_SD4_DATA7__GPIO6_IO_21 0x17059 /* CD */ | ||
688 | MX6SX_PAD_SD4_DATA6__GPIO6_IO_20 0x17059 /* WP */ | ||
689 | >; | ||
690 | }; | ||
691 | }; | 144 | }; |
692 | }; | 145 | }; |
diff --git a/arch/arm/boot/dts/imx6sx-sdb.dtsi b/arch/arm/boot/dts/imx6sx-sdb.dtsi new file mode 100644 index 000000000000..cef04cef3a80 --- /dev/null +++ b/arch/arm/boot/dts/imx6sx-sdb.dtsi | |||
@@ -0,0 +1,562 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2014 Freescale Semiconductor, Inc. | ||
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 | |||
9 | /dts-v1/; | ||
10 | |||
11 | #include <dt-bindings/gpio/gpio.h> | ||
12 | #include <dt-bindings/input/input.h> | ||
13 | #include "imx6sx.dtsi" | ||
14 | |||
15 | / { | ||
16 | model = "Freescale i.MX6 SoloX SDB Board"; | ||
17 | compatible = "fsl,imx6sx-sdb", "fsl,imx6sx"; | ||
18 | |||
19 | chosen { | ||
20 | stdout-path = &uart1; | ||
21 | }; | ||
22 | |||
23 | memory { | ||
24 | reg = <0x80000000 0x40000000>; | ||
25 | }; | ||
26 | |||
27 | backlight { | ||
28 | compatible = "pwm-backlight"; | ||
29 | pwms = <&pwm3 0 5000000>; | ||
30 | brightness-levels = <0 4 8 16 32 64 128 255>; | ||
31 | default-brightness-level = <6>; | ||
32 | }; | ||
33 | |||
34 | gpio-keys { | ||
35 | compatible = "gpio-keys"; | ||
36 | pinctrl-names = "default"; | ||
37 | pinctrl-0 = <&pinctrl_gpio_keys>; | ||
38 | |||
39 | volume-up { | ||
40 | label = "Volume Up"; | ||
41 | gpios = <&gpio1 18 GPIO_ACTIVE_LOW>; | ||
42 | linux,code = <KEY_VOLUMEUP>; | ||
43 | }; | ||
44 | |||
45 | volume-down { | ||
46 | label = "Volume Down"; | ||
47 | gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; | ||
48 | linux,code = <KEY_VOLUMEDOWN>; | ||
49 | }; | ||
50 | }; | ||
51 | |||
52 | regulators { | ||
53 | compatible = "simple-bus"; | ||
54 | #address-cells = <1>; | ||
55 | #size-cells = <0>; | ||
56 | |||
57 | vcc_sd3: regulator@0 { | ||
58 | compatible = "regulator-fixed"; | ||
59 | reg = <0>; | ||
60 | pinctrl-names = "default"; | ||
61 | pinctrl-0 = <&pinctrl_vcc_sd3>; | ||
62 | regulator-name = "VCC_SD3"; | ||
63 | regulator-min-microvolt = <3000000>; | ||
64 | regulator-max-microvolt = <3000000>; | ||
65 | gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>; | ||
66 | enable-active-high; | ||
67 | }; | ||
68 | |||
69 | reg_usb_otg1_vbus: regulator@1 { | ||
70 | compatible = "regulator-fixed"; | ||
71 | reg = <1>; | ||
72 | pinctrl-names = "default"; | ||
73 | pinctrl-0 = <&pinctrl_usb_otg1>; | ||
74 | regulator-name = "usb_otg1_vbus"; | ||
75 | regulator-min-microvolt = <5000000>; | ||
76 | regulator-max-microvolt = <5000000>; | ||
77 | gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; | ||
78 | enable-active-high; | ||
79 | }; | ||
80 | |||
81 | reg_usb_otg2_vbus: regulator@2 { | ||
82 | compatible = "regulator-fixed"; | ||
83 | reg = <2>; | ||
84 | pinctrl-names = "default"; | ||
85 | pinctrl-0 = <&pinctrl_usb_otg2>; | ||
86 | regulator-name = "usb_otg2_vbus"; | ||
87 | regulator-min-microvolt = <5000000>; | ||
88 | regulator-max-microvolt = <5000000>; | ||
89 | gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>; | ||
90 | enable-active-high; | ||
91 | }; | ||
92 | |||
93 | reg_psu_5v: regulator@3 { | ||
94 | compatible = "regulator-fixed"; | ||
95 | reg = <3>; | ||
96 | regulator-name = "PSU-5V0"; | ||
97 | regulator-min-microvolt = <5000000>; | ||
98 | regulator-max-microvolt = <5000000>; | ||
99 | }; | ||
100 | |||
101 | reg_lcd_3v3: regulator@4 { | ||
102 | compatible = "regulator-fixed"; | ||
103 | reg = <4>; | ||
104 | regulator-name = "lcd-3v3"; | ||
105 | gpio = <&gpio3 27 0>; | ||
106 | enable-active-high; | ||
107 | }; | ||
108 | |||
109 | reg_peri_3v3: regulator@5 { | ||
110 | compatible = "regulator-fixed"; | ||
111 | reg = <5>; | ||
112 | pinctrl-names = "default"; | ||
113 | pinctrl-0 = <&pinctrl_peri_3v3>; | ||
114 | regulator-name = "peri_3v3"; | ||
115 | regulator-min-microvolt = <3300000>; | ||
116 | regulator-max-microvolt = <3300000>; | ||
117 | gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>; | ||
118 | enable-active-high; | ||
119 | regulator-always-on; | ||
120 | }; | ||
121 | |||
122 | reg_enet_3v3: regulator@6 { | ||
123 | compatible = "regulator-fixed"; | ||
124 | reg = <6>; | ||
125 | pinctrl-names = "default"; | ||
126 | pinctrl-0 = <&pinctrl_enet_3v3>; | ||
127 | regulator-name = "enet_3v3"; | ||
128 | regulator-min-microvolt = <3300000>; | ||
129 | regulator-max-microvolt = <3300000>; | ||
130 | gpios = <&gpio2 6 GPIO_ACTIVE_LOW>; | ||
131 | }; | ||
132 | }; | ||
133 | |||
134 | sound { | ||
135 | compatible = "fsl,imx6sx-sdb-wm8962", "fsl,imx-audio-wm8962"; | ||
136 | model = "wm8962-audio"; | ||
137 | ssi-controller = <&ssi2>; | ||
138 | audio-codec = <&codec>; | ||
139 | audio-routing = | ||
140 | "Headphone Jack", "HPOUTL", | ||
141 | "Headphone Jack", "HPOUTR", | ||
142 | "Ext Spk", "SPKOUTL", | ||
143 | "Ext Spk", "SPKOUTR", | ||
144 | "AMIC", "MICBIAS", | ||
145 | "IN3R", "AMIC"; | ||
146 | mux-int-port = <2>; | ||
147 | mux-ext-port = <6>; | ||
148 | }; | ||
149 | }; | ||
150 | |||
151 | &audmux { | ||
152 | pinctrl-names = "default"; | ||
153 | pinctrl-0 = <&pinctrl_audmux>; | ||
154 | status = "okay"; | ||
155 | }; | ||
156 | |||
157 | &fec1 { | ||
158 | pinctrl-names = "default"; | ||
159 | pinctrl-0 = <&pinctrl_enet1>; | ||
160 | phy-supply = <®_enet_3v3>; | ||
161 | phy-mode = "rgmii"; | ||
162 | phy-handle = <ðphy1>; | ||
163 | status = "okay"; | ||
164 | |||
165 | mdio { | ||
166 | #address-cells = <1>; | ||
167 | #size-cells = <0>; | ||
168 | |||
169 | ethphy1: ethernet-phy@1 { | ||
170 | reg = <1>; | ||
171 | }; | ||
172 | |||
173 | ethphy2: ethernet-phy@2 { | ||
174 | reg = <2>; | ||
175 | }; | ||
176 | }; | ||
177 | }; | ||
178 | |||
179 | &fec2 { | ||
180 | pinctrl-names = "default"; | ||
181 | pinctrl-0 = <&pinctrl_enet2>; | ||
182 | phy-mode = "rgmii"; | ||
183 | phy-handle = <ðphy2>; | ||
184 | status = "okay"; | ||
185 | }; | ||
186 | |||
187 | &i2c4 { | ||
188 | clock-frequency = <100000>; | ||
189 | pinctrl-names = "default"; | ||
190 | pinctrl-0 = <&pinctrl_i2c4>; | ||
191 | status = "okay"; | ||
192 | |||
193 | codec: wm8962@1a { | ||
194 | compatible = "wlf,wm8962"; | ||
195 | reg = <0x1a>; | ||
196 | clocks = <&clks IMX6SX_CLK_AUDIO>; | ||
197 | DCVDD-supply = <&vgen4_reg>; | ||
198 | DBVDD-supply = <&vgen4_reg>; | ||
199 | AVDD-supply = <&vgen4_reg>; | ||
200 | CPVDD-supply = <&vgen4_reg>; | ||
201 | MICVDD-supply = <&vgen3_reg>; | ||
202 | PLLVDD-supply = <&vgen4_reg>; | ||
203 | SPKVDD1-supply = <®_psu_5v>; | ||
204 | SPKVDD2-supply = <®_psu_5v>; | ||
205 | }; | ||
206 | }; | ||
207 | |||
208 | &lcdif1 { | ||
209 | pinctrl-names = "default"; | ||
210 | pinctrl-0 = <&pinctrl_lcd>; | ||
211 | lcd-supply = <®_lcd_3v3>; | ||
212 | display = <&display0>; | ||
213 | status = "okay"; | ||
214 | |||
215 | display0: display0 { | ||
216 | bits-per-pixel = <16>; | ||
217 | bus-width = <24>; | ||
218 | |||
219 | display-timings { | ||
220 | native-mode = <&timing0>; | ||
221 | timing0: timing0 { | ||
222 | clock-frequency = <33500000>; | ||
223 | hactive = <800>; | ||
224 | vactive = <480>; | ||
225 | hback-porch = <89>; | ||
226 | hfront-porch = <164>; | ||
227 | vback-porch = <23>; | ||
228 | vfront-porch = <10>; | ||
229 | hsync-len = <10>; | ||
230 | vsync-len = <10>; | ||
231 | hsync-active = <0>; | ||
232 | vsync-active = <0>; | ||
233 | de-active = <1>; | ||
234 | pixelclk-active = <0>; | ||
235 | }; | ||
236 | }; | ||
237 | }; | ||
238 | }; | ||
239 | |||
240 | &pwm3 { | ||
241 | pinctrl-names = "default"; | ||
242 | pinctrl-0 = <&pinctrl_pwm3>; | ||
243 | status = "okay"; | ||
244 | }; | ||
245 | |||
246 | &snvs_poweroff { | ||
247 | status = "okay"; | ||
248 | }; | ||
249 | |||
250 | &ssi2 { | ||
251 | status = "okay"; | ||
252 | }; | ||
253 | |||
254 | &uart1 { | ||
255 | pinctrl-names = "default"; | ||
256 | pinctrl-0 = <&pinctrl_uart1>; | ||
257 | status = "okay"; | ||
258 | }; | ||
259 | |||
260 | &uart5 { /* for bluetooth */ | ||
261 | pinctrl-names = "default"; | ||
262 | pinctrl-0 = <&pinctrl_uart5>; | ||
263 | fsl,uart-has-rtscts; | ||
264 | status = "okay"; | ||
265 | }; | ||
266 | |||
267 | &usbotg1 { | ||
268 | vbus-supply = <®_usb_otg1_vbus>; | ||
269 | pinctrl-names = "default"; | ||
270 | pinctrl-0 = <&pinctrl_usb_otg1_id>; | ||
271 | status = "okay"; | ||
272 | }; | ||
273 | |||
274 | &usbotg2 { | ||
275 | vbus-supply = <®_usb_otg2_vbus>; | ||
276 | dr_mode = "host"; | ||
277 | status = "okay"; | ||
278 | }; | ||
279 | |||
280 | &usdhc2 { | ||
281 | pinctrl-names = "default"; | ||
282 | pinctrl-0 = <&pinctrl_usdhc2>; | ||
283 | non-removable; | ||
284 | no-1-8-v; | ||
285 | keep-power-in-suspend; | ||
286 | enable-sdio-wakeup; | ||
287 | status = "okay"; | ||
288 | }; | ||
289 | |||
290 | &usdhc3 { | ||
291 | pinctrl-names = "default", "state_100mhz", "state_200mhz"; | ||
292 | pinctrl-0 = <&pinctrl_usdhc3>; | ||
293 | pinctrl-1 = <&pinctrl_usdhc3_100mhz>; | ||
294 | pinctrl-2 = <&pinctrl_usdhc3_200mhz>; | ||
295 | bus-width = <8>; | ||
296 | cd-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; | ||
297 | wp-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>; | ||
298 | keep-power-in-suspend; | ||
299 | enable-sdio-wakeup; | ||
300 | vmmc-supply = <&vcc_sd3>; | ||
301 | status = "okay"; | ||
302 | }; | ||
303 | |||
304 | &usdhc4 { | ||
305 | pinctrl-names = "default"; | ||
306 | pinctrl-0 = <&pinctrl_usdhc4>; | ||
307 | cd-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>; | ||
308 | wp-gpios = <&gpio6 20 GPIO_ACTIVE_HIGH>; | ||
309 | status = "okay"; | ||
310 | }; | ||
311 | |||
312 | &iomuxc { | ||
313 | imx6x-sdb { | ||
314 | pinctrl_audmux: audmuxgrp { | ||
315 | fsl,pins = < | ||
316 | MX6SX_PAD_CSI_DATA00__AUDMUX_AUD6_TXC 0x130b0 | ||
317 | MX6SX_PAD_CSI_DATA01__AUDMUX_AUD6_TXFS 0x130b0 | ||
318 | MX6SX_PAD_CSI_HSYNC__AUDMUX_AUD6_TXD 0x120b0 | ||
319 | MX6SX_PAD_CSI_VSYNC__AUDMUX_AUD6_RXD 0x130b0 | ||
320 | MX6SX_PAD_CSI_PIXCLK__AUDMUX_MCLK 0x130b0 | ||
321 | >; | ||
322 | }; | ||
323 | |||
324 | pinctrl_enet1: enet1grp { | ||
325 | fsl,pins = < | ||
326 | MX6SX_PAD_ENET1_MDIO__ENET1_MDIO 0xa0b1 | ||
327 | MX6SX_PAD_ENET1_MDC__ENET1_MDC 0xa0b1 | ||
328 | MX6SX_PAD_RGMII1_TXC__ENET1_RGMII_TXC 0xa0b1 | ||
329 | MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0 0xa0b1 | ||
330 | MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1 0xa0b1 | ||
331 | MX6SX_PAD_RGMII1_TD2__ENET1_TX_DATA_2 0xa0b1 | ||
332 | MX6SX_PAD_RGMII1_TD3__ENET1_TX_DATA_3 0xa0b1 | ||
333 | MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN 0xa0b1 | ||
334 | MX6SX_PAD_RGMII1_RXC__ENET1_RX_CLK 0x3081 | ||
335 | MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0 0x3081 | ||
336 | MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1 0x3081 | ||
337 | MX6SX_PAD_RGMII1_RD2__ENET1_RX_DATA_2 0x3081 | ||
338 | MX6SX_PAD_RGMII1_RD3__ENET1_RX_DATA_3 0x3081 | ||
339 | MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN 0x3081 | ||
340 | MX6SX_PAD_ENET2_RX_CLK__ENET2_REF_CLK_25M 0x91 | ||
341 | >; | ||
342 | }; | ||
343 | |||
344 | pinctrl_enet_3v3: enet3v3grp { | ||
345 | fsl,pins = < | ||
346 | MX6SX_PAD_ENET2_COL__GPIO2_IO_6 0x80000000 | ||
347 | >; | ||
348 | }; | ||
349 | |||
350 | pinctrl_enet2: enet2grp { | ||
351 | fsl,pins = < | ||
352 | MX6SX_PAD_RGMII2_TXC__ENET2_RGMII_TXC 0xa0b9 | ||
353 | MX6SX_PAD_RGMII2_TD0__ENET2_TX_DATA_0 0xa0b1 | ||
354 | MX6SX_PAD_RGMII2_TD1__ENET2_TX_DATA_1 0xa0b1 | ||
355 | MX6SX_PAD_RGMII2_TD2__ENET2_TX_DATA_2 0xa0b1 | ||
356 | MX6SX_PAD_RGMII2_TD3__ENET2_TX_DATA_3 0xa0b1 | ||
357 | MX6SX_PAD_RGMII2_TX_CTL__ENET2_TX_EN 0xa0b1 | ||
358 | MX6SX_PAD_RGMII2_RXC__ENET2_RX_CLK 0x3081 | ||
359 | MX6SX_PAD_RGMII2_RD0__ENET2_RX_DATA_0 0x3081 | ||
360 | MX6SX_PAD_RGMII2_RD1__ENET2_RX_DATA_1 0x3081 | ||
361 | MX6SX_PAD_RGMII2_RD2__ENET2_RX_DATA_2 0x3081 | ||
362 | MX6SX_PAD_RGMII2_RD3__ENET2_RX_DATA_3 0x3081 | ||
363 | MX6SX_PAD_RGMII2_RX_CTL__ENET2_RX_EN 0x3081 | ||
364 | >; | ||
365 | }; | ||
366 | |||
367 | pinctrl_gpio_keys: gpio_keysgrp { | ||
368 | fsl,pins = < | ||
369 | MX6SX_PAD_CSI_DATA04__GPIO1_IO_18 0x17059 | ||
370 | MX6SX_PAD_CSI_DATA05__GPIO1_IO_19 0x17059 | ||
371 | >; | ||
372 | }; | ||
373 | |||
374 | pinctrl_i2c1: i2c1grp { | ||
375 | fsl,pins = < | ||
376 | MX6SX_PAD_GPIO1_IO01__I2C1_SDA 0x4001b8b1 | ||
377 | MX6SX_PAD_GPIO1_IO00__I2C1_SCL 0x4001b8b1 | ||
378 | >; | ||
379 | }; | ||
380 | |||
381 | pinctrl_i2c4: i2c4grp { | ||
382 | fsl,pins = < | ||
383 | MX6SX_PAD_CSI_DATA07__I2C4_SDA 0x4001b8b1 | ||
384 | MX6SX_PAD_CSI_DATA06__I2C4_SCL 0x4001b8b1 | ||
385 | >; | ||
386 | }; | ||
387 | |||
388 | pinctrl_lcd: lcdgrp { | ||
389 | fsl,pins = < | ||
390 | MX6SX_PAD_LCD1_DATA00__LCDIF1_DATA_0 0x4001b0b0 | ||
391 | MX6SX_PAD_LCD1_DATA01__LCDIF1_DATA_1 0x4001b0b0 | ||
392 | MX6SX_PAD_LCD1_DATA02__LCDIF1_DATA_2 0x4001b0b0 | ||
393 | MX6SX_PAD_LCD1_DATA03__LCDIF1_DATA_3 0x4001b0b0 | ||
394 | MX6SX_PAD_LCD1_DATA04__LCDIF1_DATA_4 0x4001b0b0 | ||
395 | MX6SX_PAD_LCD1_DATA05__LCDIF1_DATA_5 0x4001b0b0 | ||
396 | MX6SX_PAD_LCD1_DATA06__LCDIF1_DATA_6 0x4001b0b0 | ||
397 | MX6SX_PAD_LCD1_DATA07__LCDIF1_DATA_7 0x4001b0b0 | ||
398 | MX6SX_PAD_LCD1_DATA08__LCDIF1_DATA_8 0x4001b0b0 | ||
399 | MX6SX_PAD_LCD1_DATA09__LCDIF1_DATA_9 0x4001b0b0 | ||
400 | MX6SX_PAD_LCD1_DATA10__LCDIF1_DATA_10 0x4001b0b0 | ||
401 | MX6SX_PAD_LCD1_DATA11__LCDIF1_DATA_11 0x4001b0b0 | ||
402 | MX6SX_PAD_LCD1_DATA12__LCDIF1_DATA_12 0x4001b0b0 | ||
403 | MX6SX_PAD_LCD1_DATA13__LCDIF1_DATA_13 0x4001b0b0 | ||
404 | MX6SX_PAD_LCD1_DATA14__LCDIF1_DATA_14 0x4001b0b0 | ||
405 | MX6SX_PAD_LCD1_DATA15__LCDIF1_DATA_15 0x4001b0b0 | ||
406 | MX6SX_PAD_LCD1_DATA16__LCDIF1_DATA_16 0x4001b0b0 | ||
407 | MX6SX_PAD_LCD1_DATA17__LCDIF1_DATA_17 0x4001b0b0 | ||
408 | MX6SX_PAD_LCD1_DATA18__LCDIF1_DATA_18 0x4001b0b0 | ||
409 | MX6SX_PAD_LCD1_DATA19__LCDIF1_DATA_19 0x4001b0b0 | ||
410 | MX6SX_PAD_LCD1_DATA20__LCDIF1_DATA_20 0x4001b0b0 | ||
411 | MX6SX_PAD_LCD1_DATA21__LCDIF1_DATA_21 0x4001b0b0 | ||
412 | MX6SX_PAD_LCD1_DATA22__LCDIF1_DATA_22 0x4001b0b0 | ||
413 | MX6SX_PAD_LCD1_DATA23__LCDIF1_DATA_23 0x4001b0b0 | ||
414 | MX6SX_PAD_LCD1_CLK__LCDIF1_CLK 0x4001b0b0 | ||
415 | MX6SX_PAD_LCD1_ENABLE__LCDIF1_ENABLE 0x4001b0b0 | ||
416 | MX6SX_PAD_LCD1_VSYNC__LCDIF1_VSYNC 0x4001b0b0 | ||
417 | MX6SX_PAD_LCD1_HSYNC__LCDIF1_HSYNC 0x4001b0b0 | ||
418 | MX6SX_PAD_LCD1_RESET__GPIO3_IO_27 0x4001b0b0 | ||
419 | >; | ||
420 | }; | ||
421 | |||
422 | pinctrl_peri_3v3: peri3v3grp { | ||
423 | fsl,pins = < | ||
424 | MX6SX_PAD_QSPI1A_DATA0__GPIO4_IO_16 0x80000000 | ||
425 | >; | ||
426 | }; | ||
427 | |||
428 | pinctrl_pwm3: pwm3grp-1 { | ||
429 | fsl,pins = < | ||
430 | MX6SX_PAD_SD1_DATA2__PWM3_OUT 0x110b0 | ||
431 | >; | ||
432 | }; | ||
433 | |||
434 | pinctrl_qspi2: qspi2grp { | ||
435 | fsl,pins = < | ||
436 | MX6SX_PAD_NAND_WP_B__QSPI2_A_DATA_0 0x70f1 | ||
437 | MX6SX_PAD_NAND_READY_B__QSPI2_A_DATA_1 0x70f1 | ||
438 | MX6SX_PAD_NAND_CE0_B__QSPI2_A_DATA_2 0x70f1 | ||
439 | MX6SX_PAD_NAND_CE1_B__QSPI2_A_DATA_3 0x70f1 | ||
440 | MX6SX_PAD_NAND_CLE__QSPI2_A_SCLK 0x70f1 | ||
441 | MX6SX_PAD_NAND_ALE__QSPI2_A_SS0_B 0x70f1 | ||
442 | MX6SX_PAD_NAND_DATA01__QSPI2_B_DATA_0 0x70f1 | ||
443 | MX6SX_PAD_NAND_DATA00__QSPI2_B_DATA_1 0x70f1 | ||
444 | MX6SX_PAD_NAND_WE_B__QSPI2_B_DATA_2 0x70f1 | ||
445 | MX6SX_PAD_NAND_RE_B__QSPI2_B_DATA_3 0x70f1 | ||
446 | MX6SX_PAD_NAND_DATA02__QSPI2_B_SCLK 0x70f1 | ||
447 | MX6SX_PAD_NAND_DATA03__QSPI2_B_SS0_B 0x70f1 | ||
448 | >; | ||
449 | }; | ||
450 | |||
451 | pinctrl_vcc_sd3: vccsd3grp { | ||
452 | fsl,pins = < | ||
453 | MX6SX_PAD_KEY_COL1__GPIO2_IO_11 0x17059 | ||
454 | >; | ||
455 | }; | ||
456 | |||
457 | pinctrl_uart1: uart1grp { | ||
458 | fsl,pins = < | ||
459 | MX6SX_PAD_GPIO1_IO04__UART1_TX 0x1b0b1 | ||
460 | MX6SX_PAD_GPIO1_IO05__UART1_RX 0x1b0b1 | ||
461 | >; | ||
462 | }; | ||
463 | |||
464 | pinctrl_uart5: uart5grp { | ||
465 | fsl,pins = < | ||
466 | MX6SX_PAD_KEY_ROW3__UART5_RX 0x1b0b1 | ||
467 | MX6SX_PAD_KEY_COL3__UART5_TX 0x1b0b1 | ||
468 | MX6SX_PAD_KEY_ROW2__UART5_CTS_B 0x1b0b1 | ||
469 | MX6SX_PAD_KEY_COL2__UART5_RTS_B 0x1b0b1 | ||
470 | >; | ||
471 | }; | ||
472 | |||
473 | pinctrl_usb_otg1: usbotg1grp { | ||
474 | fsl,pins = < | ||
475 | MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9 0x10b0 | ||
476 | >; | ||
477 | }; | ||
478 | |||
479 | pinctrl_usb_otg1_id: usbotg1idgrp { | ||
480 | fsl,pins = < | ||
481 | MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID 0x17059 | ||
482 | >; | ||
483 | }; | ||
484 | |||
485 | pinctrl_usb_otg2: usbot2ggrp { | ||
486 | fsl,pins = < | ||
487 | MX6SX_PAD_GPIO1_IO12__GPIO1_IO_12 0x10b0 | ||
488 | >; | ||
489 | }; | ||
490 | |||
491 | pinctrl_usdhc2: usdhc2grp { | ||
492 | fsl,pins = < | ||
493 | MX6SX_PAD_SD2_CMD__USDHC2_CMD 0x17059 | ||
494 | MX6SX_PAD_SD2_CLK__USDHC2_CLK 0x10059 | ||
495 | MX6SX_PAD_SD2_DATA0__USDHC2_DATA0 0x17059 | ||
496 | MX6SX_PAD_SD2_DATA1__USDHC2_DATA1 0x17059 | ||
497 | MX6SX_PAD_SD2_DATA2__USDHC2_DATA2 0x17059 | ||
498 | MX6SX_PAD_SD2_DATA3__USDHC2_DATA3 0x17059 | ||
499 | >; | ||
500 | }; | ||
501 | |||
502 | pinctrl_usdhc3: usdhc3grp { | ||
503 | fsl,pins = < | ||
504 | MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x17059 | ||
505 | MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x10059 | ||
506 | MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x17059 | ||
507 | MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x17059 | ||
508 | MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x17059 | ||
509 | MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x17059 | ||
510 | MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x17059 | ||
511 | MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x17059 | ||
512 | MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x17059 | ||
513 | MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x17059 | ||
514 | MX6SX_PAD_KEY_COL0__GPIO2_IO_10 0x17059 /* CD */ | ||
515 | MX6SX_PAD_KEY_ROW0__GPIO2_IO_15 0x17059 /* WP */ | ||
516 | >; | ||
517 | }; | ||
518 | |||
519 | pinctrl_usdhc3_100mhz: usdhc3grp-100mhz { | ||
520 | fsl,pins = < | ||
521 | MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x170b9 | ||
522 | MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x100b9 | ||
523 | MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x170b9 | ||
524 | MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x170b9 | ||
525 | MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x170b9 | ||
526 | MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x170b9 | ||
527 | MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x170b9 | ||
528 | MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x170b9 | ||
529 | MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x170b9 | ||
530 | MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x170b9 | ||
531 | >; | ||
532 | }; | ||
533 | |||
534 | pinctrl_usdhc3_200mhz: usdhc3grp-200mhz { | ||
535 | fsl,pins = < | ||
536 | MX6SX_PAD_SD3_CMD__USDHC3_CMD 0x170f9 | ||
537 | MX6SX_PAD_SD3_CLK__USDHC3_CLK 0x100f9 | ||
538 | MX6SX_PAD_SD3_DATA0__USDHC3_DATA0 0x170f9 | ||
539 | MX6SX_PAD_SD3_DATA1__USDHC3_DATA1 0x170f9 | ||
540 | MX6SX_PAD_SD3_DATA2__USDHC3_DATA2 0x170f9 | ||
541 | MX6SX_PAD_SD3_DATA3__USDHC3_DATA3 0x170f9 | ||
542 | MX6SX_PAD_SD3_DATA4__USDHC3_DATA4 0x170f9 | ||
543 | MX6SX_PAD_SD3_DATA5__USDHC3_DATA5 0x170f9 | ||
544 | MX6SX_PAD_SD3_DATA6__USDHC3_DATA6 0x170f9 | ||
545 | MX6SX_PAD_SD3_DATA7__USDHC3_DATA7 0x170f9 | ||
546 | >; | ||
547 | }; | ||
548 | |||
549 | pinctrl_usdhc4: usdhc4grp { | ||
550 | fsl,pins = < | ||
551 | MX6SX_PAD_SD4_CMD__USDHC4_CMD 0x17059 | ||
552 | MX6SX_PAD_SD4_CLK__USDHC4_CLK 0x10059 | ||
553 | MX6SX_PAD_SD4_DATA0__USDHC4_DATA0 0x17059 | ||
554 | MX6SX_PAD_SD4_DATA1__USDHC4_DATA1 0x17059 | ||
555 | MX6SX_PAD_SD4_DATA2__USDHC4_DATA2 0x17059 | ||
556 | MX6SX_PAD_SD4_DATA3__USDHC4_DATA3 0x17059 | ||
557 | MX6SX_PAD_SD4_DATA7__GPIO6_IO_21 0x17059 /* CD */ | ||
558 | MX6SX_PAD_SD4_DATA6__GPIO6_IO_20 0x17059 /* WP */ | ||
559 | >; | ||
560 | }; | ||
561 | }; | ||
562 | }; | ||
diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi index 7a24fee1e7ae..708175d59b9c 100644 --- a/arch/arm/boot/dts/imx6sx.dtsi +++ b/arch/arm/boot/dts/imx6sx.dtsi | |||
@@ -88,6 +88,7 @@ | |||
88 | interrupt-controller; | 88 | interrupt-controller; |
89 | reg = <0x00a01000 0x1000>, | 89 | reg = <0x00a01000 0x1000>, |
90 | <0x00a00100 0x100>; | 90 | <0x00a00100 0x100>; |
91 | interrupt-parent = <&intc>; | ||
91 | }; | 92 | }; |
92 | 93 | ||
93 | clocks { | 94 | clocks { |
@@ -131,7 +132,7 @@ | |||
131 | #address-cells = <1>; | 132 | #address-cells = <1>; |
132 | #size-cells = <1>; | 133 | #size-cells = <1>; |
133 | compatible = "simple-bus"; | 134 | compatible = "simple-bus"; |
134 | interrupt-parent = <&intc>; | 135 | interrupt-parent = <&gpc>; |
135 | ranges; | 136 | ranges; |
136 | 137 | ||
137 | pmu { | 138 | pmu { |
@@ -666,7 +667,7 @@ | |||
666 | #size-cells = <1>; | 667 | #size-cells = <1>; |
667 | ranges = <0 0x020cc000 0x4000>; | 668 | ranges = <0 0x020cc000 0x4000>; |
668 | 669 | ||
669 | snvs-rtc-lp@34 { | 670 | snvs_rtc: snvs-rtc-lp@34 { |
670 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; | 671 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; |
671 | reg = <0x34 0x58>; | 672 | reg = <0x34 0x58>; |
672 | interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; | 673 | interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; |
@@ -700,7 +701,10 @@ | |||
700 | gpc: gpc@020dc000 { | 701 | gpc: gpc@020dc000 { |
701 | compatible = "fsl,imx6sx-gpc", "fsl,imx6q-gpc"; | 702 | compatible = "fsl,imx6sx-gpc", "fsl,imx6q-gpc"; |
702 | reg = <0x020dc000 0x4000>; | 703 | reg = <0x020dc000 0x4000>; |
704 | interrupt-controller; | ||
705 | #interrupt-cells = <3>; | ||
703 | interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; | 706 | interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; |
707 | interrupt-parent = <&intc>; | ||
704 | }; | 708 | }; |
705 | 709 | ||
706 | iomuxc: iomuxc@020e0000 { | 710 | iomuxc: iomuxc@020e0000 { |
@@ -763,6 +767,7 @@ | |||
763 | fsl,usbmisc = <&usbmisc 2>; | 767 | fsl,usbmisc = <&usbmisc 2>; |
764 | phy_type = "hsic"; | 768 | phy_type = "hsic"; |
765 | fsl,anatop = <&anatop>; | 769 | fsl,anatop = <&anatop>; |
770 | dr_mode = "host"; | ||
766 | status = "disabled"; | 771 | status = "disabled"; |
767 | }; | 772 | }; |
768 | 773 | ||
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi index 59d1c297bb30..578fa2a54dce 100644 --- a/arch/arm/boot/dts/omap2.dtsi +++ b/arch/arm/boot/dts/omap2.dtsi | |||
@@ -87,8 +87,8 @@ | |||
87 | <14>, | 87 | <14>, |
88 | <15>; | 88 | <15>; |
89 | #dma-cells = <1>; | 89 | #dma-cells = <1>; |
90 | #dma-channels = <32>; | 90 | dma-channels = <32>; |
91 | #dma-requests = <64>; | 91 | dma-requests = <64>; |
92 | }; | 92 | }; |
93 | 93 | ||
94 | i2c1: i2c@48070000 { | 94 | i2c1: i2c@48070000 { |
diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi index e2b2e93d7b61..5b9a376cc31e 100644 --- a/arch/arm/boot/dts/omap2420.dtsi +++ b/arch/arm/boot/dts/omap2420.dtsi | |||
@@ -14,47 +14,65 @@ | |||
14 | compatible = "ti,omap2420", "ti,omap2"; | 14 | compatible = "ti,omap2420", "ti,omap2"; |
15 | 15 | ||
16 | ocp { | 16 | ocp { |
17 | prcm: prcm@48008000 { | 17 | l4: l4@48000000 { |
18 | compatible = "ti,omap2-prcm"; | 18 | compatible = "ti,omap2-l4", "simple-bus"; |
19 | reg = <0x48008000 0x1000>; | 19 | #address-cells = <1>; |
20 | #size-cells = <1>; | ||
21 | ranges = <0 0x48000000 0x100000>; | ||
20 | 22 | ||
21 | prcm_clocks: clocks { | 23 | prcm: prcm@8000 { |
22 | #address-cells = <1>; | 24 | compatible = "ti,omap2-prcm"; |
23 | #size-cells = <0>; | 25 | reg = <0x8000 0x1000>; |
24 | }; | ||
25 | 26 | ||
26 | prcm_clockdomains: clockdomains { | 27 | prcm_clocks: clocks { |
27 | }; | 28 | #address-cells = <1>; |
28 | }; | 29 | #size-cells = <0>; |
30 | }; | ||
29 | 31 | ||
30 | scrm: scrm@48000000 { | 32 | prcm_clockdomains: clockdomains { |
31 | compatible = "ti,omap2-scrm"; | 33 | }; |
32 | reg = <0x48000000 0x1000>; | 34 | }; |
33 | 35 | ||
34 | scrm_clocks: clocks { | 36 | scm: scm@0 { |
37 | compatible = "ti,omap2-scm", "simple-bus"; | ||
38 | reg = <0x0 0x1000>; | ||
35 | #address-cells = <1>; | 39 | #address-cells = <1>; |
36 | #size-cells = <0>; | 40 | #size-cells = <1>; |
41 | ranges = <0 0x0 0x1000>; | ||
42 | |||
43 | omap2420_pmx: pinmux@30 { | ||
44 | compatible = "ti,omap2420-padconf", | ||
45 | "pinctrl-single"; | ||
46 | reg = <0x30 0x0113>; | ||
47 | #address-cells = <1>; | ||
48 | #size-cells = <0>; | ||
49 | pinctrl-single,register-width = <8>; | ||
50 | pinctrl-single,function-mask = <0x3f>; | ||
51 | }; | ||
52 | |||
53 | scm_conf: scm_conf@270 { | ||
54 | compatible = "syscon"; | ||
55 | reg = <0x270 0x100>; | ||
56 | #address-cells = <1>; | ||
57 | #size-cells = <1>; | ||
58 | |||
59 | scm_clocks: clocks { | ||
60 | #address-cells = <1>; | ||
61 | #size-cells = <0>; | ||
62 | }; | ||
63 | }; | ||
64 | |||
65 | scm_clockdomains: clockdomains { | ||
66 | }; | ||
37 | }; | 67 | }; |
38 | 68 | ||
39 | scrm_clockdomains: clockdomains { | 69 | counter32k: counter@4000 { |
70 | compatible = "ti,omap-counter32k"; | ||
71 | reg = <0x4000 0x20>; | ||
72 | ti,hwmods = "counter_32k"; | ||
40 | }; | 73 | }; |
41 | }; | 74 | }; |
42 | 75 | ||
43 | counter32k: counter@48004000 { | ||
44 | compatible = "ti,omap-counter32k"; | ||
45 | reg = <0x48004000 0x20>; | ||
46 | ti,hwmods = "counter_32k"; | ||
47 | }; | ||
48 | |||
49 | omap2420_pmx: pinmux@48000030 { | ||
50 | compatible = "ti,omap2420-padconf", "pinctrl-single"; | ||
51 | reg = <0x48000030 0x0113>; | ||
52 | #address-cells = <1>; | ||
53 | #size-cells = <0>; | ||
54 | pinctrl-single,register-width = <8>; | ||
55 | pinctrl-single,function-mask = <0x3f>; | ||
56 | }; | ||
57 | |||
58 | gpio1: gpio@48018000 { | 76 | gpio1: gpio@48018000 { |
59 | compatible = "ti,omap2-gpio"; | 77 | compatible = "ti,omap2-gpio"; |
60 | reg = <0x48018000 0x200>; | 78 | reg = <0x48018000 0x200>; |
diff --git a/arch/arm/boot/dts/omap2430-clocks.dtsi b/arch/arm/boot/dts/omap2430-clocks.dtsi index 805f75df1cf2..93fed68839b9 100644 --- a/arch/arm/boot/dts/omap2430-clocks.dtsi +++ b/arch/arm/boot/dts/omap2430-clocks.dtsi | |||
@@ -8,12 +8,12 @@ | |||
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | &scrm_clocks { | 11 | &scm_clocks { |
12 | mcbsp3_mux_fck: mcbsp3_mux_fck { | 12 | mcbsp3_mux_fck: mcbsp3_mux_fck { |
13 | #clock-cells = <0>; | 13 | #clock-cells = <0>; |
14 | compatible = "ti,composite-mux-clock"; | 14 | compatible = "ti,composite-mux-clock"; |
15 | clocks = <&func_96m_ck>, <&mcbsp_clks>; | 15 | clocks = <&func_96m_ck>, <&mcbsp_clks>; |
16 | reg = <0x02e8>; | 16 | reg = <0x78>; |
17 | }; | 17 | }; |
18 | 18 | ||
19 | mcbsp3_fck: mcbsp3_fck { | 19 | mcbsp3_fck: mcbsp3_fck { |
@@ -27,7 +27,7 @@ | |||
27 | compatible = "ti,composite-mux-clock"; | 27 | compatible = "ti,composite-mux-clock"; |
28 | clocks = <&func_96m_ck>, <&mcbsp_clks>; | 28 | clocks = <&func_96m_ck>, <&mcbsp_clks>; |
29 | ti,bit-shift = <2>; | 29 | ti,bit-shift = <2>; |
30 | reg = <0x02e8>; | 30 | reg = <0x78>; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | mcbsp4_fck: mcbsp4_fck { | 33 | mcbsp4_fck: mcbsp4_fck { |
@@ -41,7 +41,7 @@ | |||
41 | compatible = "ti,composite-mux-clock"; | 41 | compatible = "ti,composite-mux-clock"; |
42 | clocks = <&func_96m_ck>, <&mcbsp_clks>; | 42 | clocks = <&func_96m_ck>, <&mcbsp_clks>; |
43 | ti,bit-shift = <4>; | 43 | ti,bit-shift = <4>; |
44 | reg = <0x02e8>; | 44 | reg = <0x78>; |
45 | }; | 45 | }; |
46 | 46 | ||
47 | mcbsp5_fck: mcbsp5_fck { | 47 | mcbsp5_fck: mcbsp5_fck { |
diff --git a/arch/arm/boot/dts/omap2430.dtsi b/arch/arm/boot/dts/omap2430.dtsi index 0dc8de2782b1..11a7963be003 100644 --- a/arch/arm/boot/dts/omap2430.dtsi +++ b/arch/arm/boot/dts/omap2430.dtsi | |||
@@ -14,60 +14,73 @@ | |||
14 | compatible = "ti,omap2430", "ti,omap2"; | 14 | compatible = "ti,omap2430", "ti,omap2"; |
15 | 15 | ||
16 | ocp { | 16 | ocp { |
17 | prcm: prcm@49006000 { | 17 | l4_wkup: l4_wkup@49000000 { |
18 | compatible = "ti,omap2-prcm"; | 18 | compatible = "ti,omap2-l4-wkup", "simple-bus"; |
19 | reg = <0x49006000 0x1000>; | 19 | #address-cells = <1>; |
20 | #size-cells = <1>; | ||
21 | ranges = <0 0x49000000 0x31000>; | ||
20 | 22 | ||
21 | prcm_clocks: clocks { | 23 | prcm: prcm@6000 { |
22 | #address-cells = <1>; | 24 | compatible = "ti,omap2-prcm"; |
23 | #size-cells = <0>; | 25 | reg = <0x6000 0x1000>; |
24 | }; | ||
25 | 26 | ||
26 | prcm_clockdomains: clockdomains { | 27 | prcm_clocks: clocks { |
27 | }; | 28 | #address-cells = <1>; |
28 | }; | 29 | #size-cells = <0>; |
29 | 30 | }; | |
30 | scrm: scrm@49002000 { | ||
31 | compatible = "ti,omap2-scrm"; | ||
32 | reg = <0x49002000 0x1000>; | ||
33 | 31 | ||
34 | scrm_clocks: clocks { | 32 | prcm_clockdomains: clockdomains { |
35 | #address-cells = <1>; | 33 | }; |
36 | #size-cells = <0>; | ||
37 | }; | 34 | }; |
38 | 35 | ||
39 | scrm_clockdomains: clockdomains { | 36 | scm: scm@2000 { |
37 | compatible = "ti,omap2-scm", "simple-bus"; | ||
38 | reg = <0x2000 0x1000>; | ||
39 | #address-cells = <1>; | ||
40 | #size-cells = <1>; | ||
41 | ranges = <0 0x2000 0x1000>; | ||
42 | |||
43 | omap2430_pmx: pinmux@30 { | ||
44 | compatible = "ti,omap2430-padconf", | ||
45 | "pinctrl-single"; | ||
46 | reg = <0x30 0x0154>; | ||
47 | #address-cells = <1>; | ||
48 | #size-cells = <0>; | ||
49 | pinctrl-single,register-width = <8>; | ||
50 | pinctrl-single,function-mask = <0x3f>; | ||
51 | }; | ||
52 | |||
53 | scm_conf: scm_conf@270 { | ||
54 | compatible = "syscon"; | ||
55 | reg = <0x270 0x240>; | ||
56 | #address-cells = <1>; | ||
57 | #size-cells = <1>; | ||
58 | |||
59 | scm_clocks: clocks { | ||
60 | #address-cells = <1>; | ||
61 | #size-cells = <0>; | ||
62 | }; | ||
63 | |||
64 | pbias_regulator: pbias_regulator { | ||
65 | compatible = "ti,pbias-omap"; | ||
66 | reg = <0x230 0x4>; | ||
67 | syscon = <&scm_conf>; | ||
68 | pbias_mmc_reg: pbias_mmc_omap2430 { | ||
69 | regulator-name = "pbias_mmc_omap2430"; | ||
70 | regulator-min-microvolt = <1800000>; | ||
71 | regulator-max-microvolt = <3000000>; | ||
72 | }; | ||
73 | }; | ||
74 | }; | ||
75 | |||
76 | scm_clockdomains: clockdomains { | ||
77 | }; | ||
40 | }; | 78 | }; |
41 | }; | ||
42 | |||
43 | counter32k: counter@49020000 { | ||
44 | compatible = "ti,omap-counter32k"; | ||
45 | reg = <0x49020000 0x20>; | ||
46 | ti,hwmods = "counter_32k"; | ||
47 | }; | ||
48 | |||
49 | omap2430_pmx: pinmux@49002030 { | ||
50 | compatible = "ti,omap2430-padconf", "pinctrl-single"; | ||
51 | reg = <0x49002030 0x0154>; | ||
52 | #address-cells = <1>; | ||
53 | #size-cells = <0>; | ||
54 | pinctrl-single,register-width = <8>; | ||
55 | pinctrl-single,function-mask = <0x3f>; | ||
56 | }; | ||
57 | |||
58 | omap2_scm_general: tisyscon@49002270 { | ||
59 | compatible = "syscon"; | ||
60 | reg = <0x49002270 0x240>; | ||
61 | }; | ||
62 | 79 | ||
63 | pbias_regulator: pbias_regulator { | 80 | counter32k: counter@20000 { |
64 | compatible = "ti,pbias-omap"; | 81 | compatible = "ti,omap-counter32k"; |
65 | reg = <0x230 0x4>; | 82 | reg = <0x20000 0x20>; |
66 | syscon = <&omap2_scm_general>; | 83 | ti,hwmods = "counter_32k"; |
67 | pbias_mmc_reg: pbias_mmc_omap2430 { | ||
68 | regulator-name = "pbias_mmc_omap2430"; | ||
69 | regulator-min-microvolt = <1800000>; | ||
70 | regulator-max-microvolt = <3000000>; | ||
71 | }; | 84 | }; |
72 | }; | 85 | }; |
73 | 86 | ||
diff --git a/arch/arm/boot/dts/omap24xx-clocks.dtsi b/arch/arm/boot/dts/omap24xx-clocks.dtsi index a1365ca926eb..63965b876973 100644 --- a/arch/arm/boot/dts/omap24xx-clocks.dtsi +++ b/arch/arm/boot/dts/omap24xx-clocks.dtsi | |||
@@ -7,13 +7,13 @@ | |||
7 | * it under the terms of the GNU General Public License version 2 as | 7 | * it under the terms of the GNU General Public License version 2 as |
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | &scrm_clocks { | 10 | &scm_clocks { |
11 | mcbsp1_mux_fck: mcbsp1_mux_fck { | 11 | mcbsp1_mux_fck: mcbsp1_mux_fck { |
12 | #clock-cells = <0>; | 12 | #clock-cells = <0>; |
13 | compatible = "ti,composite-mux-clock"; | 13 | compatible = "ti,composite-mux-clock"; |
14 | clocks = <&func_96m_ck>, <&mcbsp_clks>; | 14 | clocks = <&func_96m_ck>, <&mcbsp_clks>; |
15 | ti,bit-shift = <2>; | 15 | ti,bit-shift = <2>; |
16 | reg = <0x0274>; | 16 | reg = <0x4>; |
17 | }; | 17 | }; |
18 | 18 | ||
19 | mcbsp1_fck: mcbsp1_fck { | 19 | mcbsp1_fck: mcbsp1_fck { |
@@ -27,7 +27,7 @@ | |||
27 | compatible = "ti,composite-mux-clock"; | 27 | compatible = "ti,composite-mux-clock"; |
28 | clocks = <&func_96m_ck>, <&mcbsp_clks>; | 28 | clocks = <&func_96m_ck>, <&mcbsp_clks>; |
29 | ti,bit-shift = <6>; | 29 | ti,bit-shift = <6>; |
30 | reg = <0x0274>; | 30 | reg = <0x4>; |
31 | }; | 31 | }; |
32 | 32 | ||
33 | mcbsp2_fck: mcbsp2_fck { | 33 | mcbsp2_fck: mcbsp2_fck { |
diff --git a/arch/arm/boot/dts/omap3-beagle-xm.dts b/arch/arm/boot/dts/omap3-beagle-xm.dts index 25f7b0a22114..da1464bfbc60 100644 --- a/arch/arm/boot/dts/omap3-beagle-xm.dts +++ b/arch/arm/boot/dts/omap3-beagle-xm.dts | |||
@@ -60,7 +60,6 @@ | |||
60 | ti,model = "omap3beagle"; | 60 | ti,model = "omap3beagle"; |
61 | 61 | ||
62 | ti,mcbsp = <&mcbsp2>; | 62 | ti,mcbsp = <&mcbsp2>; |
63 | ti,codec = <&twl_audio>; | ||
64 | }; | 63 | }; |
65 | 64 | ||
66 | gpio_keys { | 65 | gpio_keys { |
diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts index c792391ef090..28f99a14c0a1 100644 --- a/arch/arm/boot/dts/omap3-beagle.dts +++ b/arch/arm/boot/dts/omap3-beagle.dts | |||
@@ -71,7 +71,6 @@ | |||
71 | ti,model = "omap3beagle"; | 71 | ti,model = "omap3beagle"; |
72 | 72 | ||
73 | ti,mcbsp = <&mcbsp2>; | 73 | ti,mcbsp = <&mcbsp2>; |
74 | ti,codec = <&twl_audio>; | ||
75 | }; | 74 | }; |
76 | 75 | ||
77 | gpio_keys { | 76 | gpio_keys { |
@@ -379,3 +378,55 @@ | |||
379 | }; | 378 | }; |
380 | }; | 379 | }; |
381 | }; | 380 | }; |
381 | |||
382 | &gpmc { | ||
383 | status = "ok"; | ||
384 | ranges = <0 0 0x30000000 0x1000000>; /* CS0 space, 16MB */ | ||
385 | |||
386 | /* Chip select 0 */ | ||
387 | nand@0,0 { | ||
388 | reg = <0 0 4>; /* NAND I/O window, 4 bytes */ | ||
389 | interrupts = <20>; | ||
390 | ti,nand-ecc-opt = "ham1"; | ||
391 | nand-bus-width = <16>; | ||
392 | #address-cells = <1>; | ||
393 | #size-cells = <1>; | ||
394 | |||
395 | gpmc,device-width = <2>; | ||
396 | gpmc,cs-on-ns = <0>; | ||
397 | gpmc,cs-rd-off-ns = <36>; | ||
398 | gpmc,cs-wr-off-ns = <36>; | ||
399 | gpmc,adv-on-ns = <6>; | ||
400 | gpmc,adv-rd-off-ns = <24>; | ||
401 | gpmc,adv-wr-off-ns = <36>; | ||
402 | gpmc,oe-on-ns = <6>; | ||
403 | gpmc,oe-off-ns = <48>; | ||
404 | gpmc,we-on-ns = <6>; | ||
405 | gpmc,we-off-ns = <30>; | ||
406 | gpmc,rd-cycle-ns = <72>; | ||
407 | gpmc,wr-cycle-ns = <72>; | ||
408 | gpmc,access-ns = <54>; | ||
409 | gpmc,wr-access-ns = <30>; | ||
410 | |||
411 | partition@0 { | ||
412 | label = "X-Loader"; | ||
413 | reg = <0 0x80000>; | ||
414 | }; | ||
415 | partition@80000 { | ||
416 | label = "U-Boot"; | ||
417 | reg = <0x80000 0x1e0000>; | ||
418 | }; | ||
419 | partition@1c0000 { | ||
420 | label = "U-Boot Env"; | ||
421 | reg = <0x260000 0x20000>; | ||
422 | }; | ||
423 | partition@280000 { | ||
424 | label = "Kernel"; | ||
425 | reg = <0x280000 0x400000>; | ||
426 | }; | ||
427 | partition@780000 { | ||
428 | label = "Filesystem"; | ||
429 | reg = <0x680000 0xf980000>; | ||
430 | }; | ||
431 | }; | ||
432 | }; | ||
diff --git a/arch/arm/boot/dts/omap3-cm-t3x30.dtsi b/arch/arm/boot/dts/omap3-cm-t3x30.dtsi index d9e92b654f85..046cd7733c4f 100644 --- a/arch/arm/boot/dts/omap3-cm-t3x30.dtsi +++ b/arch/arm/boot/dts/omap3-cm-t3x30.dtsi | |||
@@ -16,7 +16,6 @@ | |||
16 | ti,model = "cm-t35"; | 16 | ti,model = "cm-t35"; |
17 | 17 | ||
18 | ti,mcbsp = <&mcbsp2>; | 18 | ti,mcbsp = <&mcbsp2>; |
19 | ti,codec = <&twl_audio>; | ||
20 | }; | 19 | }; |
21 | }; | 20 | }; |
22 | 21 | ||
diff --git a/arch/arm/boot/dts/omap3-devkit8000.dts b/arch/arm/boot/dts/omap3-devkit8000.dts index 169037e5ff53..134d3f27a8ec 100644 --- a/arch/arm/boot/dts/omap3-devkit8000.dts +++ b/arch/arm/boot/dts/omap3-devkit8000.dts | |||
@@ -48,7 +48,6 @@ | |||
48 | ti,model = "devkit8000"; | 48 | ti,model = "devkit8000"; |
49 | 49 | ||
50 | ti,mcbsp = <&mcbsp2>; | 50 | ti,mcbsp = <&mcbsp2>; |
51 | ti,codec = <&twl_audio>; | ||
52 | ti,audio-routing = | 51 | ti,audio-routing = |
53 | "Ext Spk", "PREDRIVEL", | 52 | "Ext Spk", "PREDRIVEL", |
54 | "Ext Spk", "PREDRIVER", | 53 | "Ext Spk", "PREDRIVER", |
diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi index fb3a69604ed5..b9f68817bd6e 100644 --- a/arch/arm/boot/dts/omap3-gta04.dtsi +++ b/arch/arm/boot/dts/omap3-gta04.dtsi | |||
@@ -46,7 +46,6 @@ | |||
46 | ti,model = "gta04"; | 46 | ti,model = "gta04"; |
47 | 47 | ||
48 | ti,mcbsp = <&mcbsp2>; | 48 | ti,mcbsp = <&mcbsp2>; |
49 | ti,codec = <&twl_audio>; | ||
50 | }; | 49 | }; |
51 | 50 | ||
52 | spi_lcd { | 51 | spi_lcd { |
diff --git a/arch/arm/boot/dts/omap3-igep.dtsi b/arch/arm/boot/dts/omap3-igep.dtsi index 8a63ad2286aa..d5e5cd449b16 100644 --- a/arch/arm/boot/dts/omap3-igep.dtsi +++ b/arch/arm/boot/dts/omap3-igep.dtsi | |||
@@ -22,7 +22,6 @@ | |||
22 | compatible = "ti,omap-twl4030"; | 22 | compatible = "ti,omap-twl4030"; |
23 | ti,model = "igep2"; | 23 | ti,model = "igep2"; |
24 | ti,mcbsp = <&mcbsp2>; | 24 | ti,mcbsp = <&mcbsp2>; |
25 | ti,codec = <&twl_audio>; | ||
26 | }; | 25 | }; |
27 | 26 | ||
28 | vdd33: regulator-vdd33 { | 27 | vdd33: regulator-vdd33 { |
diff --git a/arch/arm/boot/dts/omap3-lilly-a83x.dtsi b/arch/arm/boot/dts/omap3-lilly-a83x.dtsi index e81fb651d5d0..e63133304a34 100644 --- a/arch/arm/boot/dts/omap3-lilly-a83x.dtsi +++ b/arch/arm/boot/dts/omap3-lilly-a83x.dtsi | |||
@@ -38,7 +38,6 @@ | |||
38 | ti,model = "lilly-a83x"; | 38 | ti,model = "lilly-a83x"; |
39 | 39 | ||
40 | ti,mcbsp = <&mcbsp2>; | 40 | ti,mcbsp = <&mcbsp2>; |
41 | ti,codec = <&twl_audio>; | ||
42 | }; | 41 | }; |
43 | 42 | ||
44 | reg_vcc3: vcc3 { | 43 | reg_vcc3: vcc3 { |
diff --git a/arch/arm/boot/dts/omap3-n9.dts b/arch/arm/boot/dts/omap3-n9.dts index 9938b5dc1909..f2e213931e09 100644 --- a/arch/arm/boot/dts/omap3-n9.dts +++ b/arch/arm/boot/dts/omap3-n9.dts | |||
@@ -16,3 +16,40 @@ | |||
16 | model = "Nokia N9"; | 16 | model = "Nokia N9"; |
17 | compatible = "nokia,omap3-n9", "ti,omap36xx", "ti,omap3"; | 17 | compatible = "nokia,omap3-n9", "ti,omap36xx", "ti,omap3"; |
18 | }; | 18 | }; |
19 | |||
20 | &i2c2 { | ||
21 | smia_1: camera@10 { | ||
22 | compatible = "nokia,smia"; | ||
23 | reg = <0x10>; | ||
24 | /* No reset gpio */ | ||
25 | vana-supply = <&vaux3>; | ||
26 | clocks = <&isp 0>; | ||
27 | clock-frequency = <9600000>; | ||
28 | nokia,nvm-size = <(16 * 64)>; | ||
29 | port { | ||
30 | smia_1_1: endpoint { | ||
31 | link-frequencies = /bits/ 64 <199200000 210000000 499200000>; | ||
32 | clock-lanes = <0>; | ||
33 | data-lanes = <1 2>; | ||
34 | remote-endpoint = <&csi2a_ep>; | ||
35 | }; | ||
36 | }; | ||
37 | }; | ||
38 | }; | ||
39 | |||
40 | &isp { | ||
41 | vdd-csiphy1-supply = <&vaux2>; | ||
42 | vdd-csiphy2-supply = <&vaux2>; | ||
43 | ports { | ||
44 | port@2 { | ||
45 | reg = <2>; | ||
46 | csi2a_ep: endpoint { | ||
47 | remote-endpoint = <&smia_1_1>; | ||
48 | clock-lanes = <2>; | ||
49 | data-lanes = <1 3>; | ||
50 | crc = <1>; | ||
51 | lane-polarities = <1 1 1>; | ||
52 | }; | ||
53 | }; | ||
54 | }; | ||
55 | }; | ||
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts index 60403273f83e..bbea3076e1d4 100644 --- a/arch/arm/boot/dts/omap3-n900.dts +++ b/arch/arm/boot/dts/omap3-n900.dts | |||
@@ -9,13 +9,34 @@ | |||
9 | 9 | ||
10 | /dts-v1/; | 10 | /dts-v1/; |
11 | 11 | ||
12 | #include "omap34xx-hs.dtsi" | 12 | #include "omap34xx.dtsi" |
13 | #include <dt-bindings/input/input.h> | 13 | #include <dt-bindings/input/input.h> |
14 | 14 | ||
15 | /* | ||
16 | * Default secure signed bootloader (Nokia X-Loader) does not enable L3 firewall | ||
17 | * for omap AES HW crypto support. When linux kernel try to access memory of AES | ||
18 | * blocks then kernel receive "Unhandled fault: external abort on non-linefetch" | ||
19 | * and crash. Until somebody fix omap-aes.c and omap_hwmod_3xxx_data.c code (no | ||
20 | * crash anymore) omap AES support will be disabled for all Nokia N900 devices. | ||
21 | * There is "unofficial" version of bootloader which enables AES in L3 firewall | ||
22 | * but it is not widely used and to prevent kernel crash rather AES is disabled. | ||
23 | * There is also no runtime detection code if AES is disabled in L3 firewall... | ||
24 | */ | ||
25 | &aes { | ||
26 | status = "disabled"; | ||
27 | }; | ||
28 | |||
15 | / { | 29 | / { |
16 | model = "Nokia N900"; | 30 | model = "Nokia N900"; |
17 | compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3"; | 31 | compatible = "nokia,omap3-n900", "ti,omap3430", "ti,omap3"; |
18 | 32 | ||
33 | aliases { | ||
34 | i2c0; | ||
35 | i2c1 = &i2c1; | ||
36 | i2c2 = &i2c2; | ||
37 | i2c3 = &i2c3; | ||
38 | }; | ||
39 | |||
19 | cpus { | 40 | cpus { |
20 | cpu@0 { | 41 | cpu@0 { |
21 | cpu0-supply = <&vcc>; | 42 | cpu0-supply = <&vcc>; |
@@ -704,7 +725,7 @@ | |||
704 | compatible = "smsc,lan91c94"; | 725 | compatible = "smsc,lan91c94"; |
705 | interrupt-parent = <&gpio2>; | 726 | interrupt-parent = <&gpio2>; |
706 | interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */ | 727 | interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */ |
707 | reg = <1 0x300 0xf>; /* 16 byte IO range at offset 0x300 */ | 728 | reg = <1 0 0xf>; /* 16 byte IO range */ |
708 | bank-width = <2>; | 729 | bank-width = <2>; |
709 | pinctrl-names = "default"; | 730 | pinctrl-names = "default"; |
710 | pinctrl-0 = <ðernet_pins>; | 731 | pinctrl-0 = <ðernet_pins>; |
diff --git a/arch/arm/boot/dts/omap3-n950-n9.dtsi b/arch/arm/boot/dts/omap3-n950-n9.dtsi index c41db94ee9c2..800b379d368d 100644 --- a/arch/arm/boot/dts/omap3-n950-n9.dtsi +++ b/arch/arm/boot/dts/omap3-n950-n9.dtsi | |||
@@ -8,7 +8,7 @@ | |||
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include "omap36xx-hs.dtsi" | 11 | #include "omap36xx.dtsi" |
12 | 12 | ||
13 | / { | 13 | / { |
14 | cpus { | 14 | cpus { |
diff --git a/arch/arm/boot/dts/omap3-n950.dts b/arch/arm/boot/dts/omap3-n950.dts index 261c5589bfa3..0885b34d5d7d 100644 --- a/arch/arm/boot/dts/omap3-n950.dts +++ b/arch/arm/boot/dts/omap3-n950.dts | |||
@@ -16,3 +16,40 @@ | |||
16 | model = "Nokia N950"; | 16 | model = "Nokia N950"; |
17 | compatible = "nokia,omap3-n950", "ti,omap36xx", "ti,omap3"; | 17 | compatible = "nokia,omap3-n950", "ti,omap36xx", "ti,omap3"; |
18 | }; | 18 | }; |
19 | |||
20 | &i2c2 { | ||
21 | smia_1: camera@10 { | ||
22 | compatible = "nokia,smia"; | ||
23 | reg = <0x10>; | ||
24 | /* No reset gpio */ | ||
25 | vana-supply = <&vaux3>; | ||
26 | clocks = <&isp 0>; | ||
27 | clock-frequency = <9600000>; | ||
28 | nokia,nvm-size = <(16 * 64)>; | ||
29 | port { | ||
30 | smia_1_1: endpoint { | ||
31 | link-frequencies = /bits/ 64 <210000000 333600000 398400000>; | ||
32 | clock-lanes = <0>; | ||
33 | data-lanes = <1 2>; | ||
34 | remote-endpoint = <&csi2a_ep>; | ||
35 | }; | ||
36 | }; | ||
37 | }; | ||
38 | }; | ||
39 | |||
40 | &isp { | ||
41 | vdd-csiphy1-supply = <&vaux2>; | ||
42 | vdd-csiphy2-supply = <&vaux2>; | ||
43 | ports { | ||
44 | port@2 { | ||
45 | reg = <2>; | ||
46 | csi2a_ep: endpoint { | ||
47 | remote-endpoint = <&smia_1_1>; | ||
48 | clock-lanes = <2>; | ||
49 | data-lanes = <3 1>; | ||
50 | crc = <1>; | ||
51 | lane-polarities = <1 1 1>; | ||
52 | }; | ||
53 | }; | ||
54 | }; | ||
55 | }; | ||
diff --git a/arch/arm/boot/dts/omap3-overo-base.dtsi b/arch/arm/boot/dts/omap3-overo-base.dtsi index d36bf0250a05..18e1649681c1 100644 --- a/arch/arm/boot/dts/omap3-overo-base.dtsi +++ b/arch/arm/boot/dts/omap3-overo-base.dtsi | |||
@@ -27,7 +27,6 @@ | |||
27 | ti,model = "overo"; | 27 | ti,model = "overo"; |
28 | 28 | ||
29 | ti,mcbsp = <&mcbsp2>; | 29 | ti,mcbsp = <&mcbsp2>; |
30 | ti,codec = <&twl_audio>; | ||
31 | }; | 30 | }; |
32 | 31 | ||
33 | /* HS USB Port 2 Power */ | 32 | /* HS USB Port 2 Power */ |
diff --git a/arch/arm/boot/dts/omap3-pandora-1ghz.dts b/arch/arm/boot/dts/omap3-pandora-1ghz.dts new file mode 100644 index 000000000000..9619a28dfd7d --- /dev/null +++ b/arch/arm/boot/dts/omap3-pandora-1ghz.dts | |||
@@ -0,0 +1,70 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 | ||
3 | * Nikolaus Schaller <hns@goldelico.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | /* | ||
11 | * device tree for OpenPandora 1GHz with DM3730 | ||
12 | */ | ||
13 | |||
14 | /dts-v1/; | ||
15 | |||
16 | #include "omap36xx.dtsi" | ||
17 | #include "omap3-pandora-common.dtsi" | ||
18 | |||
19 | / { | ||
20 | model = "Pandora Handheld Console 1GHz"; | ||
21 | |||
22 | compatible = "ti,omap36xx", "ti,omap3"; | ||
23 | }; | ||
24 | |||
25 | &omap3_pmx_core2 { | ||
26 | |||
27 | pinctrl-names = "default"; | ||
28 | pinctrl-0 = < | ||
29 | &hsusb2_2_pins | ||
30 | &control_pins | ||
31 | >; | ||
32 | |||
33 | hsusb2_2_pins: pinmux_hsusb2_2_pins { | ||
34 | pinctrl-single,pins = < | ||
35 | OMAP3630_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */ | ||
36 | OMAP3630_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */ | ||
37 | OMAP3630_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */ | ||
38 | OMAP3630_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */ | ||
39 | OMAP3630_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */ | ||
40 | OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */ | ||
41 | >; | ||
42 | }; | ||
43 | |||
44 | mmc3_pins: pinmux_mmc3_pins { | ||
45 | pinctrl-single,pins = < | ||
46 | OMAP3630_CORE2_IOPAD(0x25d8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_clk.sdmmc3_clk */ | ||
47 | OMAP3630_CORE2_IOPAD(0x25da, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_ctl.sdmmc3_cmd */ | ||
48 | OMAP3630_CORE2_IOPAD(0x25e2, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d3.sdmmc3_dat3 */ | ||
49 | OMAP3630_CORE2_IOPAD(0x25e4, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d4.sdmmc3_dat0 */ | ||
50 | OMAP3630_CORE2_IOPAD(0x25e6, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d5.sdmmc3_dat1 */ | ||
51 | OMAP3630_CORE2_IOPAD(0x25e8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d6.sdmmc3_dat2 */ | ||
52 | >; | ||
53 | }; | ||
54 | |||
55 | control_pins: pinmux_control_pins { | ||
56 | pinctrl-single,pins = < | ||
57 | OMAP3630_CORE2_IOPAD(0x25dc, PIN_INPUT_PULLDOWN | MUX_MODE4) /* etk_d0.gpio_14 = HP_SHUTDOWN */ | ||
58 | OMAP3630_CORE2_IOPAD(0x25de, PIN_OUTPUT | MUX_MODE4) /* etk_d1.gpio_15 = BT_SHUTDOWN */ | ||
59 | OMAP3630_CORE2_IOPAD(0x25e0, PIN_OUTPUT | MUX_MODE4) /* etk_d2.gpio_16 = RESET_USB_HOST */ | ||
60 | OMAP3630_CORE2_IOPAD(0x25ea, PIN_INPUT | MUX_MODE4) /* etk_d7.gpio_21 = WIFI IRQ */ | ||
61 | OMAP3630_CORE2_IOPAD(0x25ec, PIN_OUTPUT | MUX_MODE4) /* etk_d8.gpio_22 = MSECURE */ | ||
62 | OMAP3630_CORE2_IOPAD(0x25ee, PIN_OUTPUT | MUX_MODE4) /* etk_d9.gpio_23 = WIFI_POWER */ | ||
63 | OMAP3_WKUP_IOPAD(0x2a54, PIN_INPUT | MUX_MODE4) /* reserved.gpio_127 = MMC2_WP */ | ||
64 | OMAP3_WKUP_IOPAD(0x2a56, PIN_INPUT | MUX_MODE4) /* reserved.gpio_126 = MMC1_WP */ | ||
65 | OMAP3_WKUP_IOPAD(0x2a58, PIN_OUTPUT | MUX_MODE4) /* reserved.gpio_128 = LED_MMC1 */ | ||
66 | OMAP3_WKUP_IOPAD(0x2a5a, PIN_OUTPUT | MUX_MODE4) /* reserved.gpio_129 = LED_MMC2 */ | ||
67 | |||
68 | >; | ||
69 | }; | ||
70 | }; | ||
diff --git a/arch/arm/boot/dts/omap3-pandora-600mhz.dts b/arch/arm/boot/dts/omap3-pandora-600mhz.dts new file mode 100644 index 000000000000..fb803a70a2bb --- /dev/null +++ b/arch/arm/boot/dts/omap3-pandora-600mhz.dts | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 | ||
3 | * Nikolaus Schaller <hns@goldelico.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License version 2 as | ||
7 | * published by the Free Software Foundation. | ||
8 | */ | ||
9 | |||
10 | /* | ||
11 | * device tree for OpenPandora with OMAP3530 | ||
12 | */ | ||
13 | |||
14 | /dts-v1/; | ||
15 | |||
16 | #include "omap34xx.dtsi" | ||
17 | #include "omap3-pandora-common.dtsi" | ||
18 | |||
19 | / { | ||
20 | model = "Pandora Handheld Console"; | ||
21 | |||
22 | compatible = "ti,omap3"; | ||
23 | }; | ||
24 | |||
25 | &omap3_pmx_core2 { | ||
26 | |||
27 | pinctrl-names = "default"; | ||
28 | pinctrl-0 = < | ||
29 | &hsusb2_2_pins | ||
30 | &control_pins | ||
31 | >; | ||
32 | |||
33 | hsusb2_2_pins: pinmux_hsusb2_2_pins { | ||
34 | pinctrl-single,pins = < | ||
35 | OMAP3430_CORE2_IOPAD(0x25f0, PIN_OUTPUT | MUX_MODE3) /* etk_d10.hsusb2_clk */ | ||
36 | OMAP3430_CORE2_IOPAD(0x25f2, PIN_OUTPUT | MUX_MODE3) /* etk_d11.hsusb2_stp */ | ||
37 | OMAP3430_CORE2_IOPAD(0x25f4, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d12.hsusb2_dir */ | ||
38 | OMAP3430_CORE2_IOPAD(0x25f6, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d13.hsusb2_nxt */ | ||
39 | OMAP3430_CORE2_IOPAD(0x25f8, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d14.hsusb2_data0 */ | ||
40 | OMAP3430_CORE2_IOPAD(0x25fa, PIN_INPUT_PULLDOWN | MUX_MODE3) /* etk_d15.hsusb2_data1 */ | ||
41 | >; | ||
42 | }; | ||
43 | |||
44 | mmc3_pins: pinmux_mmc3_pins { | ||
45 | pinctrl-single,pins = < | ||
46 | OMAP3430_CORE2_IOPAD(0x25d8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_clk.sdmmc3_clk */ | ||
47 | OMAP3430_CORE2_IOPAD(0x25da, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_ctl.sdmmc3_cmd */ | ||
48 | OMAP3430_CORE2_IOPAD(0x25e2, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d3.sdmmc3_dat3 */ | ||
49 | OMAP3430_CORE2_IOPAD(0x25e4, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d4.sdmmc3_dat0 */ | ||
50 | OMAP3430_CORE2_IOPAD(0x25e6, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d5.sdmmc3_dat1 */ | ||
51 | OMAP3430_CORE2_IOPAD(0x25e8, PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d6.sdmmc3_dat2 */ | ||
52 | >; | ||
53 | }; | ||
54 | |||
55 | control_pins: pinmux_control_pins { | ||
56 | pinctrl-single,pins = < | ||
57 | OMAP3430_CORE2_IOPAD(0x25dc, PIN_INPUT_PULLDOWN | MUX_MODE4) /* etk_d0.gpio_14 = HP_SHUTDOWN */ | ||
58 | OMAP3430_CORE2_IOPAD(0x25de, PIN_OUTPUT | MUX_MODE4) /* etk_d1.gpio_15 = BT_SHUTDOWN */ | ||
59 | OMAP3430_CORE2_IOPAD(0x25e0, PIN_OUTPUT | MUX_MODE4) /* etk_d2.gpio_16 = RESET_USB_HOST */ | ||
60 | OMAP3430_CORE2_IOPAD(0x25ea, PIN_INPUT | MUX_MODE4) /* etk_d7.gpio_21 = WIFI IRQ */ | ||
61 | OMAP3430_CORE2_IOPAD(0x25ec, PIN_OUTPUT | MUX_MODE4) /* etk_d8.gpio_22 = MSECURE */ | ||
62 | OMAP3430_CORE2_IOPAD(0x25ee, PIN_OUTPUT | MUX_MODE4) /* etk_d9.gpio_23 = WIFI_POWER */ | ||
63 | >; | ||
64 | }; | ||
65 | }; | ||
diff --git a/arch/arm/boot/dts/omap3-pandora-common.dtsi b/arch/arm/boot/dts/omap3-pandora-common.dtsi new file mode 100644 index 000000000000..782ab1ff1d08 --- /dev/null +++ b/arch/arm/boot/dts/omap3-pandora-common.dtsi | |||
@@ -0,0 +1,640 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2015 | ||
3 | * Nikolaus Schaller <hns@goldelico.com> | ||
4 | * | ||
5 | * Common device tree include for OpenPandora devices. | ||
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 <dt-bindings/input/input.h> | ||
13 | |||
14 | / { | ||
15 | cpus { | ||
16 | cpu@0 { | ||
17 | cpu0-supply = <&vcc>; | ||
18 | }; | ||
19 | }; | ||
20 | |||
21 | memory { | ||
22 | device_type = "memory"; | ||
23 | reg = <0x80000000 0x20000000>; /* 512 MB */ | ||
24 | }; | ||
25 | |||
26 | aliases { | ||
27 | display0 = &lcd; | ||
28 | }; | ||
29 | |||
30 | tv: connector@1 { | ||
31 | compatible = "connector-analog-tv"; | ||
32 | label = "tv"; | ||
33 | |||
34 | port { | ||
35 | tv_connector_in: endpoint { | ||
36 | remote-endpoint = <&venc_out>; | ||
37 | }; | ||
38 | }; | ||
39 | }; | ||
40 | |||
41 | gpio-leds { | ||
42 | |||
43 | compatible = "gpio-leds"; | ||
44 | |||
45 | pinctrl-names = "default"; | ||
46 | pinctrl-0 = <&led_pins>; | ||
47 | |||
48 | led@1 { | ||
49 | label = "pandora::sd1"; | ||
50 | gpios = <&gpio5 0 GPIO_ACTIVE_HIGH>; /* GPIO_128 */ | ||
51 | linux,default-trigger = "mmc0"; | ||
52 | default-state = "off"; | ||
53 | }; | ||
54 | |||
55 | led@2 { | ||
56 | label = "pandora::sd2"; | ||
57 | gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>; /* GPIO_129 */ | ||
58 | linux,default-trigger = "mmc1"; | ||
59 | default-state = "off"; | ||
60 | }; | ||
61 | |||
62 | led@3 { | ||
63 | label = "pandora::bluetooth"; | ||
64 | gpios = <&gpio5 30 GPIO_ACTIVE_HIGH>; /* GPIO_158 */ | ||
65 | linux,default-trigger = "heartbeat"; | ||
66 | default-state = "off"; | ||
67 | }; | ||
68 | |||
69 | led@4 { | ||
70 | label = "pandora::wifi"; | ||
71 | gpios = <&gpio5 31 GPIO_ACTIVE_HIGH>; /* GPIO_159 */ | ||
72 | linux,default-trigger = "mmc2"; | ||
73 | default-state = "off"; | ||
74 | }; | ||
75 | }; | ||
76 | |||
77 | gpio-keys { | ||
78 | compatible = "gpio-keys"; | ||
79 | |||
80 | pinctrl-names = "default"; | ||
81 | pinctrl-0 = <&button_pins>; | ||
82 | |||
83 | up-button { | ||
84 | label = "up"; | ||
85 | linux,code = <KEY_UP>; | ||
86 | gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* GPIO_110 */ | ||
87 | gpio-key,wakeup; | ||
88 | }; | ||
89 | |||
90 | down-button { | ||
91 | label = "down"; | ||
92 | linux,code = <KEY_DOWN>; | ||
93 | gpios = <&gpio4 7 GPIO_ACTIVE_LOW>; /* GPIO_103 */ | ||
94 | gpio-key,wakeup; | ||
95 | }; | ||
96 | |||
97 | left-button { | ||
98 | label = "left"; | ||
99 | linux,code = <KEY_LEFT>; | ||
100 | gpios = <&gpio4 0 GPIO_ACTIVE_LOW>; /* GPIO_96 */ | ||
101 | gpio-key,wakeup; | ||
102 | }; | ||
103 | |||
104 | right-button { | ||
105 | label = "right"; | ||
106 | linux,code = <KEY_RIGHT>; | ||
107 | gpios = <&gpio4 2 GPIO_ACTIVE_LOW>; /* GPIO_98 */ | ||
108 | gpio-key,wakeup; | ||
109 | }; | ||
110 | |||
111 | pageup-button { | ||
112 | label = "game 1"; | ||
113 | linux,code = <KEY_PAGEUP>; | ||
114 | gpios = <&gpio4 13 GPIO_ACTIVE_LOW>; /* GPIO_109 */ | ||
115 | gpio-key,wakeup; | ||
116 | }; | ||
117 | |||
118 | pagedown-button { | ||
119 | label = "game 3"; | ||
120 | linux,code = <KEY_PAGEDOWN>; | ||
121 | gpios = <&gpio4 10 GPIO_ACTIVE_LOW>; /* GPIO_106 */ | ||
122 | gpio-key,wakeup; | ||
123 | }; | ||
124 | |||
125 | home-button { | ||
126 | label = "game 4"; | ||
127 | linux,code = <KEY_HOME>; | ||
128 | gpios = <&gpio4 5 GPIO_ACTIVE_LOW>; /* GPIO_101 */ | ||
129 | gpio-key,wakeup; | ||
130 | }; | ||
131 | |||
132 | end-button { | ||
133 | label = "game 2"; | ||
134 | linux,code = <KEY_END>; | ||
135 | gpios = <&gpio4 15 GPIO_ACTIVE_LOW>; /* GPIO_111 */ | ||
136 | gpio-key,wakeup; | ||
137 | }; | ||
138 | |||
139 | right-shift { | ||
140 | label = "l"; | ||
141 | linux,code = <KEY_RIGHTSHIFT>; | ||
142 | gpios = <&gpio4 6 GPIO_ACTIVE_LOW>; /* GPIO_102 */ | ||
143 | gpio-key,wakeup; | ||
144 | }; | ||
145 | |||
146 | kp-plus { | ||
147 | label = "l2"; | ||
148 | linux,code = <KEY_KPPLUS>; | ||
149 | gpios = <&gpio4 1 GPIO_ACTIVE_LOW>; /* GPIO_97 */ | ||
150 | gpio-key,wakeup; | ||
151 | }; | ||
152 | |||
153 | right-ctrl { | ||
154 | label = "r"; | ||
155 | linux,code = <KEY_RIGHTCTRL>; | ||
156 | gpios = <&gpio4 9 GPIO_ACTIVE_LOW>; /* GPIO_105 */ | ||
157 | gpio-key,wakeup; | ||
158 | }; | ||
159 | |||
160 | kp-minus { | ||
161 | label = "r2"; | ||
162 | linux,code = <KEY_KPMINUS>; | ||
163 | gpios = <&gpio4 11 GPIO_ACTIVE_LOW>; /* GPIO_107 */ | ||
164 | gpio-key,wakeup; | ||
165 | }; | ||
166 | |||
167 | left-ctrl { | ||
168 | label = "ctrl"; | ||
169 | linux,code = <KEY_LEFTCTRL>; | ||
170 | gpios = <&gpio4 8 GPIO_ACTIVE_LOW>; /* GPIO_104 */ | ||
171 | gpio-key,wakeup; | ||
172 | }; | ||
173 | |||
174 | menu { | ||
175 | label = "menu"; | ||
176 | linux,code = <KEY_MENU>; | ||
177 | gpios = <&gpio4 3 GPIO_ACTIVE_LOW>; /* GPIO_99 */ | ||
178 | gpio-key,wakeup; | ||
179 | }; | ||
180 | |||
181 | hold { | ||
182 | label = "hold"; | ||
183 | linux,code = <KEY_COFFEE>; | ||
184 | gpios = <&gpio6 16 GPIO_ACTIVE_LOW>; /* GPIO_176 */ | ||
185 | gpio-key,wakeup; | ||
186 | }; | ||
187 | |||
188 | left-alt { | ||
189 | label = "alt"; | ||
190 | linux,code = <KEY_LEFTALT>; | ||
191 | gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>; /* GPIO_100 */ | ||
192 | gpio-key,wakeup; | ||
193 | }; | ||
194 | |||
195 | lid { | ||
196 | label = "lid"; | ||
197 | linux,code = <0x00>; /* SW_LID lid shut */ | ||
198 | linux,input-type = <0x05>; /* EV_SW */ | ||
199 | gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>; /* GPIO_108 */ | ||
200 | }; | ||
201 | }; | ||
202 | }; | ||
203 | |||
204 | &omap3_pmx_core { | ||
205 | |||
206 | mmc1_pins: pinmux_mmc1_pins { | ||
207 | pinctrl-single,pins = < | ||
208 | OMAP3_CORE1_IOPAD(0x2144, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_clk.sdmmc1_clk */ | ||
209 | OMAP3_CORE1_IOPAD(0x2146, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_cmd.sdmmc1_cmd */ | ||
210 | OMAP3_CORE1_IOPAD(0x2148, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat0.sdmmc1_dat0 */ | ||
211 | OMAP3_CORE1_IOPAD(0x214a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat1.sdmmc1_dat1 */ | ||
212 | OMAP3_CORE1_IOPAD(0x214c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat2.sdmmc1_dat2 */ | ||
213 | OMAP3_CORE1_IOPAD(0x214e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc1_dat3.sdmmc1_dat3 */ | ||
214 | >; | ||
215 | }; | ||
216 | |||
217 | mmc2_pins: pinmux_mmc2_pins { | ||
218 | pinctrl-single,pins = < | ||
219 | OMAP3_CORE1_IOPAD(0x2158, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk.sdmmc2_clk */ | ||
220 | OMAP3_CORE1_IOPAD(0x215a, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd.sdmmc2_cmd */ | ||
221 | OMAP3_CORE1_IOPAD(0x215c, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0.sdmmc2_dat0 */ | ||
222 | OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */ | ||
223 | OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */ | ||
224 | OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */ | ||
225 | OMAP3_CORE1_IOPAD(0x2164, PIN_OUTPUT_PULLUP | MUX_MODE1) /* sdmmc2_dat4.sdmmc2_dirdat0 */ | ||
226 | OMAP3_CORE1_IOPAD(0x2166, PIN_OUTPUT_PULLUP | MUX_MODE1) /* sdmmc2_dat5.sdmmc2_dirdat1 */ | ||
227 | OMAP3_CORE1_IOPAD(0x2168, PIN_OUTPUT_PULLUP | MUX_MODE1) /* sdmmc2_dat6.sdmmc2_dircmd */ | ||
228 | OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT_PULLUP | MUX_MODE1) /* sdmmc2_dat7.sdmmc2_clkin */ | ||
229 | >; | ||
230 | }; | ||
231 | |||
232 | dss_dpi_pins: pinmux_dss_dpi_pins { | ||
233 | pinctrl-single,pins = < | ||
234 | OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0) /* dss_pclk.dss_pclk */ | ||
235 | OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0) /* dss_hsync.dss_hsync */ | ||
236 | OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0) /* dss_vsync.dss_vsync */ | ||
237 | OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0) /* dss_acbias.dss_acbias */ | ||
238 | OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0) /* dss_data0.dss_data0 */ | ||
239 | OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0) /* dss_data1.dss_data1 */ | ||
240 | OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0) /* dss_data2.dss_data2 */ | ||
241 | OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0) /* dss_data3.dss_data3 */ | ||
242 | OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0) /* dss_data4.dss_data4 */ | ||
243 | OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0) /* dss_data5.dss_data5 */ | ||
244 | OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0) /* dss_data6.dss_data6 */ | ||
245 | OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT | MUX_MODE0) /* dss_data7.dss_data7 */ | ||
246 | OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT | MUX_MODE0) /* dss_data8.dss_data8 */ | ||
247 | OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT | MUX_MODE0) /* dss_data9.dss_data9 */ | ||
248 | OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE0) /* dss_data10.dss_data10 */ | ||
249 | OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE0) /* dss_data11.dss_data11 */ | ||
250 | OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE0) /* dss_data12.dss_data12 */ | ||
251 | OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE0) /* dss_data13.dss_data13 */ | ||
252 | OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT | MUX_MODE0) /* dss_data14.dss_data14 */ | ||
253 | OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0) /* dss_data15.dss_data15 */ | ||
254 | OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE0) /* dss_data16.dss_data16 */ | ||
255 | OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE0) /* dss_data17.dss_data17 */ | ||
256 | OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE0) /* dss_data18.dss_data18 */ | ||
257 | OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT | MUX_MODE0) /* dss_data19.dss_data19 */ | ||
258 | OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE0) /* dss_data20.dss_data20 */ | ||
259 | OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT | MUX_MODE0) /* dss_data21.dss_data21 */ | ||
260 | OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE0) /* dss_data22.dss_data22 */ | ||
261 | OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE0) /* dss_data23.dss_data23 */ | ||
262 | OMAP3_CORE1_IOPAD(0x218e, PIN_OUTPUT | MUX_MODE4) /* GPIO_157 = lcd reset */ | ||
263 | >; | ||
264 | }; | ||
265 | |||
266 | uart3_pins: pinmux_uart3_pins { | ||
267 | pinctrl-single,pins = < | ||
268 | OMAP3_CORE1_IOPAD(0x219e, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */ | ||
269 | OMAP3_CORE1_IOPAD(0x21a0, PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx */ | ||
270 | >; | ||
271 | }; | ||
272 | |||
273 | led_pins: pinmux_leds_pins { | ||
274 | pinctrl-single,pins = < | ||
275 | OMAP3_CORE1_IOPAD(0x2154, PIN_OUTPUT | MUX_MODE4) /* GPIO_128 */ | ||
276 | OMAP3_CORE1_IOPAD(0x2156, PIN_OUTPUT | MUX_MODE4) /* GPIO_129 */ | ||
277 | OMAP3_CORE1_IOPAD(0x2190, PIN_OUTPUT | MUX_MODE4) /* GPIO_158 */ | ||
278 | OMAP3_CORE1_IOPAD(0x2192, PIN_OUTPUT | MUX_MODE4) /* GPIO_159 */ | ||
279 | >; | ||
280 | }; | ||
281 | |||
282 | button_pins: pinmux_button_pins { | ||
283 | pinctrl-single,pins = < | ||
284 | OMAP3_CORE1_IOPAD(0x2110, PIN_INPUT | MUX_MODE4) /* GPIO_96 */ | ||
285 | OMAP3_CORE1_IOPAD(0x2112, PIN_INPUT | MUX_MODE4) /* GPIO_97 */ | ||
286 | OMAP3_CORE1_IOPAD(0x2114, PIN_INPUT | MUX_MODE4) /* GPIO_98 */ | ||
287 | OMAP3_CORE1_IOPAD(0x2116, PIN_INPUT | MUX_MODE4) /* GPIO_99 */ | ||
288 | OMAP3_CORE1_IOPAD(0x2118, PIN_INPUT | MUX_MODE4) /* GPIO_100 */ | ||
289 | OMAP3_CORE1_IOPAD(0x211a, PIN_INPUT | MUX_MODE4) /* GPIO_101 */ | ||
290 | OMAP3_CORE1_IOPAD(0x211c, PIN_INPUT | MUX_MODE4) /* GPIO_102 */ | ||
291 | OMAP3_CORE1_IOPAD(0x211e, PIN_INPUT | MUX_MODE4) /* GPIO_103 */ | ||
292 | OMAP3_CORE1_IOPAD(0x2120, PIN_INPUT | MUX_MODE4) /* GPIO_104 */ | ||
293 | OMAP3_CORE1_IOPAD(0x2122, PIN_INPUT | MUX_MODE4) /* GPIO_105 */ | ||
294 | OMAP3_CORE1_IOPAD(0x2124, PIN_INPUT | MUX_MODE4) /* GPIO_106 */ | ||
295 | OMAP3_CORE1_IOPAD(0x2126, PIN_INPUT | MUX_MODE4) /* GPIO_107 */ | ||
296 | OMAP3_CORE1_IOPAD(0x2128, PIN_INPUT | MUX_MODE4) /* GPIO_108 */ | ||
297 | OMAP3_CORE1_IOPAD(0x212a, PIN_INPUT | MUX_MODE4) /* GPIO_109 */ | ||
298 | OMAP3_CORE1_IOPAD(0x212c, PIN_INPUT | MUX_MODE4) /* GPIO_110 */ | ||
299 | OMAP3_CORE1_IOPAD(0x212e, PIN_INPUT | MUX_MODE4) /* GPIO_111 */ | ||
300 | OMAP3_CORE1_IOPAD(0x21d2, PIN_INPUT | MUX_MODE4) /* GPIO_176 */ | ||
301 | >; | ||
302 | }; | ||
303 | |||
304 | penirq_pins: pinmux_penirq_pins { | ||
305 | pinctrl-single,pins = < | ||
306 | /* here we could enable to wakeup the cpu from suspend by a pen touch */ | ||
307 | OMAP3_CORE1_IOPAD(0x210c, PIN_INPUT | MUX_MODE4) /* GPIO_94 */ | ||
308 | >; | ||
309 | }; | ||
310 | |||
311 | }; | ||
312 | |||
313 | &omap3_pmx_core2 { | ||
314 | /* define in CPU specific file that includes this one | ||
315 | * use either OMAP3430_CORE2_IOPAD() or OMAP3630_CORE2_IOPAD() | ||
316 | */ | ||
317 | }; | ||
318 | |||
319 | &i2c1 { | ||
320 | clock-frequency = <2600000>; | ||
321 | |||
322 | twl: twl@48 { | ||
323 | reg = <0x48>; | ||
324 | interrupts = <7>; /* SYS_NIRQ cascaded to intc */ | ||
325 | interrupt-parent = <&intc>; | ||
326 | |||
327 | twl_power: power { | ||
328 | compatible = "ti,twl4030-power-reset"; | ||
329 | ti,use_poweroff; | ||
330 | }; | ||
331 | |||
332 | twl_audio: audio { | ||
333 | compatible = "ti,twl4030-audio"; | ||
334 | |||
335 | codec { | ||
336 | ti,ramp_delay_value = <3>; | ||
337 | }; | ||
338 | }; | ||
339 | }; | ||
340 | }; | ||
341 | |||
342 | #include "twl4030.dtsi" | ||
343 | #include "twl4030_omap3.dtsi" | ||
344 | |||
345 | &twl_keypad { | ||
346 | keypad,num-rows = <8>; | ||
347 | keypad,num-columns = <6>; | ||
348 | linux,keymap = < | ||
349 | MATRIX_KEY(0, 0, KEY_9) | ||
350 | MATRIX_KEY(0, 1, KEY_8) | ||
351 | MATRIX_KEY(0, 2, KEY_I) | ||
352 | MATRIX_KEY(0, 3, KEY_J) | ||
353 | MATRIX_KEY(0, 4, KEY_N) | ||
354 | MATRIX_KEY(0, 5, KEY_M) | ||
355 | MATRIX_KEY(1, 0, KEY_0) | ||
356 | MATRIX_KEY(1, 1, KEY_7) | ||
357 | MATRIX_KEY(1, 2, KEY_U) | ||
358 | MATRIX_KEY(1, 3, KEY_H) | ||
359 | MATRIX_KEY(1, 4, KEY_B) | ||
360 | MATRIX_KEY(1, 5, KEY_SPACE) | ||
361 | MATRIX_KEY(2, 0, KEY_BACKSPACE) | ||
362 | MATRIX_KEY(2, 1, KEY_6) | ||
363 | MATRIX_KEY(2, 2, KEY_Y) | ||
364 | MATRIX_KEY(2, 3, KEY_G) | ||
365 | MATRIX_KEY(2, 4, KEY_V) | ||
366 | MATRIX_KEY(2, 5, KEY_FN) | ||
367 | MATRIX_KEY(3, 0, KEY_O) | ||
368 | MATRIX_KEY(3, 1, KEY_5) | ||
369 | MATRIX_KEY(3, 2, KEY_T) | ||
370 | MATRIX_KEY(3, 3, KEY_F) | ||
371 | MATRIX_KEY(3, 4, KEY_C) | ||
372 | MATRIX_KEY(4, 0, KEY_P) | ||
373 | MATRIX_KEY(4, 1, KEY_4) | ||
374 | MATRIX_KEY(4, 2, KEY_R) | ||
375 | MATRIX_KEY(4, 3, KEY_D) | ||
376 | MATRIX_KEY(4, 4, KEY_X) | ||
377 | MATRIX_KEY(5, 0, KEY_K) | ||
378 | MATRIX_KEY(5, 1, KEY_3) | ||
379 | MATRIX_KEY(5, 2, KEY_E) | ||
380 | MATRIX_KEY(5, 3, KEY_S) | ||
381 | MATRIX_KEY(5, 4, KEY_Z) | ||
382 | MATRIX_KEY(6, 0, KEY_L) | ||
383 | MATRIX_KEY(6, 1, KEY_2) | ||
384 | MATRIX_KEY(6, 2, KEY_W) | ||
385 | MATRIX_KEY(6, 3, KEY_A) | ||
386 | MATRIX_KEY(6, 4, KEY_RIGHTBRACE) | ||
387 | MATRIX_KEY(7, 0, KEY_ENTER) | ||
388 | MATRIX_KEY(7, 1, KEY_1) | ||
389 | MATRIX_KEY(7, 2, KEY_Q) | ||
390 | MATRIX_KEY(7, 3, KEY_LEFTSHIFT) | ||
391 | MATRIX_KEY(7, 4, KEY_LEFTBRACE ) | ||
392 | >; | ||
393 | }; | ||
394 | |||
395 | /* backup battery charger */ | ||
396 | &charger { | ||
397 | ti,bb-uvolt = <3200000>; | ||
398 | ti,bb-uamp = <150>; | ||
399 | }; | ||
400 | |||
401 | /* MMC2 */ | ||
402 | &vmmc2 { | ||
403 | regulator-min-microvolt = <1850000>; | ||
404 | regulator-max-microvolt = <3150000>; | ||
405 | }; | ||
406 | |||
407 | /* LCD */ | ||
408 | &vaux1 { | ||
409 | regulator-min-microvolt = <3000000>; | ||
410 | regulator-max-microvolt = <3000000>; | ||
411 | }; | ||
412 | |||
413 | /* USB Host PHY */ | ||
414 | &vaux2 { | ||
415 | regulator-min-microvolt = <1800000>; | ||
416 | regulator-max-microvolt = <1800000>; | ||
417 | }; | ||
418 | |||
419 | /* available on expansion connector */ | ||
420 | &vaux3 { | ||
421 | regulator-min-microvolt = <2800000>; | ||
422 | regulator-max-microvolt = <2800000>; | ||
423 | }; | ||
424 | |||
425 | /* ADS7846 and nubs */ | ||
426 | &vaux4 { | ||
427 | regulator-min-microvolt = <2800000>; | ||
428 | regulator-max-microvolt = <2800000>; | ||
429 | }; | ||
430 | |||
431 | /* power audio DAC and LID sensor */ | ||
432 | &vsim { | ||
433 | regulator-min-microvolt = <2800000>; | ||
434 | regulator-max-microvolt = <2800000>; | ||
435 | regulator-always-on; | ||
436 | }; | ||
437 | |||
438 | &i2c2 { | ||
439 | clock-frequency = <100000>; | ||
440 | /* no clients so we should disable clock */ | ||
441 | }; | ||
442 | |||
443 | &i2c3 { | ||
444 | clock-frequency = <100000>; | ||
445 | |||
446 | bq27500@55 { | ||
447 | compatible = "ti,bq27500"; | ||
448 | reg = <0x55>; | ||
449 | }; | ||
450 | |||
451 | }; | ||
452 | |||
453 | &usb_otg_hs { | ||
454 | interface-type = <0>; | ||
455 | usb-phy = <&usb2_phy>; | ||
456 | phys = <&usb2_phy>; | ||
457 | phy-names = "usb2-phy"; | ||
458 | mode = <3>; | ||
459 | power = <50>; | ||
460 | }; | ||
461 | |||
462 | &mmc1 { | ||
463 | pinctrl-names = "default"; | ||
464 | pinctrl-0 = <&mmc1_pins>; | ||
465 | vmmc-supply = <&vmmc1>; | ||
466 | bus-width = <4>; | ||
467 | cd-gpios = <&twl_gpio 0 GPIO_ACTIVE_LOW>; | ||
468 | wp-gpios = <&gpio4 30 GPIO_ACTIVE_LOW>; /* GPIO_126 */ | ||
469 | }; | ||
470 | |||
471 | &mmc2 { | ||
472 | pinctrl-names = "default"; | ||
473 | pinctrl-0 = <&mmc2_pins>; | ||
474 | vmmc-supply = <&vmmc2>; | ||
475 | bus-width = <4>; | ||
476 | cd-gpios = <&twl_gpio 1 GPIO_ACTIVE_HIGH>; | ||
477 | wp-gpios = <&gpio4 31 GPIO_ACTIVE_LOW>; /* GPIO_127 */ | ||
478 | }; | ||
479 | |||
480 | /* bluetooth*/ | ||
481 | &uart1 { | ||
482 | }; | ||
483 | |||
484 | /* spare (expansion connector) */ | ||
485 | &uart2 { | ||
486 | }; | ||
487 | |||
488 | /* console (expansion connector) */ | ||
489 | &uart3 { | ||
490 | pinctrl-names = "default"; | ||
491 | pinctrl-0 = <&uart3_pins>; | ||
492 | interrupts-extended = <&intc 74 &omap3_pmx_core OMAP3_UART3_RX>; | ||
493 | }; | ||
494 | |||
495 | &usbhshost { | ||
496 | port2-mode = "ehci-phy"; | ||
497 | }; | ||
498 | |||
499 | &gpmc { | ||
500 | ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */ | ||
501 | |||
502 | nand@0,0 { | ||
503 | reg = <0 0 4>; /* CS0, offset 0, IO size 4 */ | ||
504 | nand-bus-width = <16>; | ||
505 | ti,nand-ecc-opt = "sw"; | ||
506 | |||
507 | gpmc,sync-clk-ps = <0>; | ||
508 | gpmc,cs-on-ns = <0>; | ||
509 | gpmc,cs-rd-off-ns = <44>; | ||
510 | gpmc,cs-wr-off-ns = <44>; | ||
511 | gpmc,adv-on-ns = <6>; | ||
512 | gpmc,adv-rd-off-ns = <34>; | ||
513 | gpmc,adv-wr-off-ns = <44>; | ||
514 | gpmc,we-off-ns = <40>; | ||
515 | gpmc,oe-off-ns = <54>; | ||
516 | gpmc,access-ns = <64>; | ||
517 | gpmc,rd-cycle-ns = <82>; | ||
518 | gpmc,wr-cycle-ns = <82>; | ||
519 | gpmc,wr-access-ns = <40>; | ||
520 | gpmc,wr-data-mux-bus-ns = <0>; | ||
521 | gpmc,device-width = <2>; | ||
522 | |||
523 | #address-cells = <1>; | ||
524 | #size-cells = <1>; | ||
525 | |||
526 | /* u-boot uses mtdparts=nand:512k(xloader),1920k(uboot),128k(uboot-env),10m(boot),-(rootfs) */ | ||
527 | |||
528 | x-loader@0 { | ||
529 | label = "xloader"; | ||
530 | reg = <0 0x80000>; | ||
531 | }; | ||
532 | |||
533 | bootloaders@80000 { | ||
534 | label = "uboot"; | ||
535 | reg = <0x80000 0x1e0000>; | ||
536 | }; | ||
537 | |||
538 | bootloaders_env@260000 { | ||
539 | label = "uboot-env"; | ||
540 | reg = <0x260000 0x20000>; | ||
541 | }; | ||
542 | |||
543 | kernel@280000 { | ||
544 | label = "boot"; | ||
545 | reg = <0x280000 0xa00000>; | ||
546 | }; | ||
547 | |||
548 | filesystem@680000 { | ||
549 | label = "rootfs"; | ||
550 | reg = <0xc80000 0>; /* 0 = MTDPART_SIZ_FULL */ | ||
551 | }; | ||
552 | }; | ||
553 | }; | ||
554 | |||
555 | &mcspi1 { | ||
556 | tsc2046@0 { | ||
557 | reg = <0>; /* CS0 */ | ||
558 | compatible = "ti,tsc2046"; | ||
559 | spi-max-frequency = <1000000>; | ||
560 | pinctrl-names = "default"; | ||
561 | pinctrl-0 = <&penirq_pins>; | ||
562 | interrupt-parent = <&gpio3>; | ||
563 | interrupts = <30 0>; /* GPIO_94 */ | ||
564 | pendown-gpio = <&gpio3 30 0>; | ||
565 | vcc-supply = <&vaux4>; | ||
566 | |||
567 | ti,x-min = /bits/ 16 <0>; | ||
568 | ti,x-max = /bits/ 16 <8000>; | ||
569 | ti,y-min = /bits/ 16 <0>; | ||
570 | ti,y-max = /bits/ 16 <4800>; | ||
571 | ti,x-plate-ohms = /bits/ 16 <40>; | ||
572 | ti,pressure-max = /bits/ 16 <255>; | ||
573 | |||
574 | linux,wakeup; | ||
575 | }; | ||
576 | |||
577 | lcd: lcd@1 { | ||
578 | reg = <1>; /* CS1 */ | ||
579 | compatible = "omapdss,tpo,td043mtea1"; | ||
580 | spi-max-frequency = <100000>; | ||
581 | spi-cpol; | ||
582 | spi-cpha; | ||
583 | |||
584 | label = "lcd"; | ||
585 | reset-gpios = <&gpio5 29 GPIO_ACTIVE_LOW>; /* GPIO_157 */ | ||
586 | vcc-supply = <&vaux1>; | ||
587 | |||
588 | port { | ||
589 | lcd_in: endpoint { | ||
590 | remote-endpoint = <&dpi_out>; | ||
591 | }; | ||
592 | }; | ||
593 | }; | ||
594 | |||
595 | |||
596 | }; | ||
597 | |||
598 | /* n/a - used as GPIOs */ | ||
599 | &mcbsp1 { | ||
600 | }; | ||
601 | |||
602 | /* audio DAC */ | ||
603 | &mcbsp2 { | ||
604 | }; | ||
605 | |||
606 | /* bluetooth */ | ||
607 | &mcbsp3 { | ||
608 | }; | ||
609 | |||
610 | /* to twl4030*/ | ||
611 | &mcbsp4 { | ||
612 | }; | ||
613 | |||
614 | &venc { | ||
615 | status = "ok"; | ||
616 | |||
617 | vdda-supply = <&vdac>; | ||
618 | |||
619 | port { | ||
620 | venc_out: endpoint { | ||
621 | remote-endpoint = <&tv_connector_in>; | ||
622 | ti,channels = <2>; | ||
623 | }; | ||
624 | }; | ||
625 | }; | ||
626 | |||
627 | &dss { | ||
628 | pinctrl-names = "default"; | ||
629 | pinctrl-0 = < &dss_dpi_pins >; | ||
630 | |||
631 | status = "ok"; | ||
632 | vdds_dsi-supply = <&vpll2>; | ||
633 | |||
634 | port { | ||
635 | dpi_out: endpoint { | ||
636 | remote-endpoint = <&lcd_in>; | ||
637 | data-lines = <24>; | ||
638 | }; | ||
639 | }; | ||
640 | }; | ||
diff --git a/arch/arm/boot/dts/omap3-tao3530.dtsi b/arch/arm/boot/dts/omap3-tao3530.dtsi index e89820a6776e..7bd8d9a4f67f 100644 --- a/arch/arm/boot/dts/omap3-tao3530.dtsi +++ b/arch/arm/boot/dts/omap3-tao3530.dtsi | |||
@@ -8,7 +8,16 @@ | |||
8 | */ | 8 | */ |
9 | /dts-v1/; | 9 | /dts-v1/; |
10 | 10 | ||
11 | #include "omap34xx-hs.dtsi" | 11 | #include "omap34xx.dtsi" |
12 | |||
13 | /* Secure omaps have some devices inaccessible depending on the firmware */ | ||
14 | &aes { | ||
15 | status = "disabled"; | ||
16 | }; | ||
17 | |||
18 | &sham { | ||
19 | status = "disabled"; | ||
20 | }; | ||
12 | 21 | ||
13 | / { | 22 | / { |
14 | cpus { | 23 | cpus { |
@@ -45,7 +54,6 @@ | |||
45 | 54 | ||
46 | /* McBSP2 is used for onboard sound, same as on beagle */ | 55 | /* McBSP2 is used for onboard sound, same as on beagle */ |
47 | ti,mcbsp = <&mcbsp2>; | 56 | ti,mcbsp = <&mcbsp2>; |
48 | ti,codec = <&twl_audio>; | ||
49 | }; | 57 | }; |
50 | 58 | ||
51 | /* Regulator to enable/switch the vcc of the Wifi module */ | 59 | /* Regulator to enable/switch the vcc of the Wifi module */ |
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi index 01b71111bd55..02cd996d0b06 100644 --- a/arch/arm/boot/dts/omap3.dtsi +++ b/arch/arm/boot/dts/omap3.dtsi | |||
@@ -87,6 +87,60 @@ | |||
87 | ranges; | 87 | ranges; |
88 | ti,hwmods = "l3_main"; | 88 | ti,hwmods = "l3_main"; |
89 | 89 | ||
90 | l4_core: l4@48000000 { | ||
91 | compatible = "ti,omap3-l4-core", "simple-bus"; | ||
92 | #address-cells = <1>; | ||
93 | #size-cells = <1>; | ||
94 | ranges = <0 0x48000000 0x1000000>; | ||
95 | |||
96 | scm: scm@2000 { | ||
97 | compatible = "ti,omap3-scm", "simple-bus"; | ||
98 | reg = <0x2000 0x2000>; | ||
99 | #address-cells = <1>; | ||
100 | #size-cells = <1>; | ||
101 | ranges = <0 0x2000 0x2000>; | ||
102 | |||
103 | omap3_pmx_core: pinmux@30 { | ||
104 | compatible = "ti,omap3-padconf", | ||
105 | "pinctrl-single"; | ||
106 | reg = <0x30 0x238>; | ||
107 | #address-cells = <1>; | ||
108 | #size-cells = <0>; | ||
109 | #interrupt-cells = <1>; | ||
110 | interrupt-controller; | ||
111 | pinctrl-single,register-width = <16>; | ||
112 | pinctrl-single,function-mask = <0xff1f>; | ||
113 | }; | ||
114 | |||
115 | scm_conf: scm_conf@270 { | ||
116 | compatible = "syscon"; | ||
117 | reg = <0x270 0x330>; | ||
118 | #address-cells = <1>; | ||
119 | #size-cells = <1>; | ||
120 | |||
121 | scm_clocks: clocks { | ||
122 | #address-cells = <1>; | ||
123 | #size-cells = <0>; | ||
124 | }; | ||
125 | }; | ||
126 | |||
127 | scm_clockdomains: clockdomains { | ||
128 | }; | ||
129 | |||
130 | omap3_pmx_wkup: pinmux@a00 { | ||
131 | compatible = "ti,omap3-padconf", | ||
132 | "pinctrl-single"; | ||
133 | reg = <0xa00 0x5c>; | ||
134 | #address-cells = <1>; | ||
135 | #size-cells = <0>; | ||
136 | #interrupt-cells = <1>; | ||
137 | interrupt-controller; | ||
138 | pinctrl-single,register-width = <16>; | ||
139 | pinctrl-single,function-mask = <0xff1f>; | ||
140 | }; | ||
141 | }; | ||
142 | }; | ||
143 | |||
90 | aes: aes@480c5000 { | 144 | aes: aes@480c5000 { |
91 | compatible = "ti,omap3-aes"; | 145 | compatible = "ti,omap3-aes"; |
92 | ti,hwmods = "aes"; | 146 | ti,hwmods = "aes"; |
@@ -121,19 +175,6 @@ | |||
121 | }; | 175 | }; |
122 | }; | 176 | }; |
123 | 177 | ||
124 | scrm: scrm@48002000 { | ||
125 | compatible = "ti,omap3-scrm"; | ||
126 | reg = <0x48002000 0x2000>; | ||
127 | |||
128 | scrm_clocks: clocks { | ||
129 | #address-cells = <1>; | ||
130 | #size-cells = <0>; | ||
131 | }; | ||
132 | |||
133 | scrm_clockdomains: clockdomains { | ||
134 | }; | ||
135 | }; | ||
136 | |||
137 | counter32k: counter@48320000 { | 178 | counter32k: counter@48320000 { |
138 | compatible = "ti,omap-counter32k"; | 179 | compatible = "ti,omap-counter32k"; |
139 | reg = <0x48320000 0x20>; | 180 | reg = <0x48320000 0x20>; |
@@ -155,41 +196,14 @@ | |||
155 | <14>, | 196 | <14>, |
156 | <15>; | 197 | <15>; |
157 | #dma-cells = <1>; | 198 | #dma-cells = <1>; |
158 | #dma-channels = <32>; | 199 | dma-channels = <32>; |
159 | #dma-requests = <96>; | 200 | dma-requests = <96>; |
160 | }; | ||
161 | |||
162 | omap3_pmx_core: pinmux@48002030 { | ||
163 | compatible = "ti,omap3-padconf", "pinctrl-single"; | ||
164 | reg = <0x48002030 0x0238>; | ||
165 | #address-cells = <1>; | ||
166 | #size-cells = <0>; | ||
167 | #interrupt-cells = <1>; | ||
168 | interrupt-controller; | ||
169 | pinctrl-single,register-width = <16>; | ||
170 | pinctrl-single,function-mask = <0xff1f>; | ||
171 | }; | ||
172 | |||
173 | omap3_pmx_wkup: pinmux@48002a00 { | ||
174 | compatible = "ti,omap3-padconf", "pinctrl-single"; | ||
175 | reg = <0x48002a00 0x5c>; | ||
176 | #address-cells = <1>; | ||
177 | #size-cells = <0>; | ||
178 | #interrupt-cells = <1>; | ||
179 | interrupt-controller; | ||
180 | pinctrl-single,register-width = <16>; | ||
181 | pinctrl-single,function-mask = <0xff1f>; | ||
182 | }; | ||
183 | |||
184 | omap3_scm_general: tisyscon@48002270 { | ||
185 | compatible = "syscon"; | ||
186 | reg = <0x48002270 0x2f0>; | ||
187 | }; | 201 | }; |
188 | 202 | ||
189 | pbias_regulator: pbias_regulator { | 203 | pbias_regulator: pbias_regulator { |
190 | compatible = "ti,pbias-omap"; | 204 | compatible = "ti,pbias-omap"; |
191 | reg = <0x2b0 0x4>; | 205 | reg = <0x2b0 0x4>; |
192 | syscon = <&omap3_scm_general>; | 206 | syscon = <&scm_conf>; |
193 | pbias_mmc_reg: pbias_mmc_omap2430 { | 207 | pbias_mmc_reg: pbias_mmc_omap2430 { |
194 | regulator-name = "pbias_mmc_omap2430"; | 208 | regulator-name = "pbias_mmc_omap2430"; |
195 | regulator-min-microvolt = <1800000>; | 209 | regulator-min-microvolt = <1800000>; |
diff --git a/arch/arm/boot/dts/omap34xx-hs.dtsi b/arch/arm/boot/dts/omap34xx-hs.dtsi deleted file mode 100644 index 1ff626489546..000000000000 --- a/arch/arm/boot/dts/omap34xx-hs.dtsi +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | /* Disabled modules for secure omaps */ | ||
2 | |||
3 | #include "omap34xx.dtsi" | ||
4 | |||
5 | /* Secure omaps have some devices inaccessible depending on the firmware */ | ||
6 | &aes { | ||
7 | status = "disabled"; | ||
8 | }; | ||
9 | |||
10 | &sham { | ||
11 | status = "disabled"; | ||
12 | }; | ||
13 | |||
14 | &timer12 { | ||
15 | status = "disabled"; | ||
16 | }; | ||
diff --git a/arch/arm/boot/dts/omap34xx.dtsi b/arch/arm/boot/dts/omap34xx.dtsi index 3819c1e91591..4f6b2d5b1902 100644 --- a/arch/arm/boot/dts/omap34xx.dtsi +++ b/arch/arm/boot/dts/omap34xx.dtsi | |||
@@ -8,6 +8,8 @@ | |||
8 | * kind, whether express or implied. | 8 | * kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <dt-bindings/media/omap3-isp.h> | ||
12 | |||
11 | #include "omap3.dtsi" | 13 | #include "omap3.dtsi" |
12 | 14 | ||
13 | / { | 15 | / { |
@@ -37,6 +39,21 @@ | |||
37 | pinctrl-single,register-width = <16>; | 39 | pinctrl-single,register-width = <16>; |
38 | pinctrl-single,function-mask = <0xff1f>; | 40 | pinctrl-single,function-mask = <0xff1f>; |
39 | }; | 41 | }; |
42 | |||
43 | isp: isp@480bc000 { | ||
44 | compatible = "ti,omap3-isp"; | ||
45 | reg = <0x480bc000 0x12fc | ||
46 | 0x480bd800 0x017c>; | ||
47 | interrupts = <24>; | ||
48 | iommus = <&mmu_isp>; | ||
49 | syscon = <&scm_conf 0xdc>; | ||
50 | ti,phy-type = <OMAP3ISP_PHY_TYPE_COMPLEX_IO>; | ||
51 | #clock-cells = <1>; | ||
52 | ports { | ||
53 | #address-cells = <1>; | ||
54 | #size-cells = <0>; | ||
55 | }; | ||
56 | }; | ||
40 | }; | 57 | }; |
41 | }; | 58 | }; |
42 | 59 | ||
diff --git a/arch/arm/boot/dts/omap36xx-hs.dtsi b/arch/arm/boot/dts/omap36xx-hs.dtsi deleted file mode 100644 index 2c7febb0e016..000000000000 --- a/arch/arm/boot/dts/omap36xx-hs.dtsi +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | /* Disabled modules for secure omaps */ | ||
2 | |||
3 | #include "omap36xx.dtsi" | ||
4 | |||
5 | /* Secure omaps have some devices inaccessible depending on the firmware */ | ||
6 | &aes { | ||
7 | status = "disabled"; | ||
8 | }; | ||
9 | |||
10 | &sham { | ||
11 | status = "disabled"; | ||
12 | }; | ||
13 | |||
14 | &timer12 { | ||
15 | status = "disabled"; | ||
16 | }; | ||
diff --git a/arch/arm/boot/dts/omap36xx.dtsi b/arch/arm/boot/dts/omap36xx.dtsi index 541704a59a5a..86253de5a97a 100644 --- a/arch/arm/boot/dts/omap36xx.dtsi +++ b/arch/arm/boot/dts/omap36xx.dtsi | |||
@@ -8,6 +8,8 @@ | |||
8 | * kind, whether express or implied. | 8 | * kind, whether express or implied. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <dt-bindings/media/omap3-isp.h> | ||
12 | |||
11 | #include "omap3.dtsi" | 13 | #include "omap3.dtsi" |
12 | 14 | ||
13 | / { | 15 | / { |
@@ -69,6 +71,21 @@ | |||
69 | pinctrl-single,register-width = <16>; | 71 | pinctrl-single,register-width = <16>; |
70 | pinctrl-single,function-mask = <0xff1f>; | 72 | pinctrl-single,function-mask = <0xff1f>; |
71 | }; | 73 | }; |
74 | |||
75 | isp: isp@480bc000 { | ||
76 | compatible = "ti,omap3-isp"; | ||
77 | reg = <0x480bc000 0x12fc | ||
78 | 0x480bd800 0x0600>; | ||
79 | interrupts = <24>; | ||
80 | iommus = <&mmu_isp>; | ||
81 | syscon = <&scm_conf 0x2f0>; | ||
82 | ti,phy-type = <OMAP3ISP_PHY_TYPE_CSIPHY>; | ||
83 | #clock-cells = <1>; | ||
84 | ports { | ||
85 | #address-cells = <1>; | ||
86 | #size-cells = <0>; | ||
87 | }; | ||
88 | }; | ||
72 | }; | 89 | }; |
73 | }; | 90 | }; |
74 | 91 | ||
diff --git a/arch/arm/boot/dts/omap3xxx-clocks.dtsi b/arch/arm/boot/dts/omap3xxx-clocks.dtsi index 5c375003bad1..bbba5bdc4bc9 100644 --- a/arch/arm/boot/dts/omap3xxx-clocks.dtsi +++ b/arch/arm/boot/dts/omap3xxx-clocks.dtsi | |||
@@ -79,13 +79,14 @@ | |||
79 | clock-div = <1>; | 79 | clock-div = <1>; |
80 | }; | 80 | }; |
81 | }; | 81 | }; |
82 | &scrm_clocks { | 82 | |
83 | &scm_clocks { | ||
83 | mcbsp5_mux_fck: mcbsp5_mux_fck { | 84 | mcbsp5_mux_fck: mcbsp5_mux_fck { |
84 | #clock-cells = <0>; | 85 | #clock-cells = <0>; |
85 | compatible = "ti,composite-mux-clock"; | 86 | compatible = "ti,composite-mux-clock"; |
86 | clocks = <&core_96m_fck>, <&mcbsp_clks>; | 87 | clocks = <&core_96m_fck>, <&mcbsp_clks>; |
87 | ti,bit-shift = <4>; | 88 | ti,bit-shift = <4>; |
88 | reg = <0x02d8>; | 89 | reg = <0x68>; |
89 | }; | 90 | }; |
90 | 91 | ||
91 | mcbsp5_fck: mcbsp5_fck { | 92 | mcbsp5_fck: mcbsp5_fck { |
@@ -99,7 +100,7 @@ | |||
99 | compatible = "ti,composite-mux-clock"; | 100 | compatible = "ti,composite-mux-clock"; |
100 | clocks = <&core_96m_fck>, <&mcbsp_clks>; | 101 | clocks = <&core_96m_fck>, <&mcbsp_clks>; |
101 | ti,bit-shift = <2>; | 102 | ti,bit-shift = <2>; |
102 | reg = <0x0274>; | 103 | reg = <0x04>; |
103 | }; | 104 | }; |
104 | 105 | ||
105 | mcbsp1_fck: mcbsp1_fck { | 106 | mcbsp1_fck: mcbsp1_fck { |
@@ -113,7 +114,7 @@ | |||
113 | compatible = "ti,composite-mux-clock"; | 114 | compatible = "ti,composite-mux-clock"; |
114 | clocks = <&per_96m_fck>, <&mcbsp_clks>; | 115 | clocks = <&per_96m_fck>, <&mcbsp_clks>; |
115 | ti,bit-shift = <6>; | 116 | ti,bit-shift = <6>; |
116 | reg = <0x0274>; | 117 | reg = <0x04>; |
117 | }; | 118 | }; |
118 | 119 | ||
119 | mcbsp2_fck: mcbsp2_fck { | 120 | mcbsp2_fck: mcbsp2_fck { |
@@ -126,7 +127,7 @@ | |||
126 | #clock-cells = <0>; | 127 | #clock-cells = <0>; |
127 | compatible = "ti,composite-mux-clock"; | 128 | compatible = "ti,composite-mux-clock"; |
128 | clocks = <&per_96m_fck>, <&mcbsp_clks>; | 129 | clocks = <&per_96m_fck>, <&mcbsp_clks>; |
129 | reg = <0x02d8>; | 130 | reg = <0x68>; |
130 | }; | 131 | }; |
131 | 132 | ||
132 | mcbsp3_fck: mcbsp3_fck { | 133 | mcbsp3_fck: mcbsp3_fck { |
@@ -140,7 +141,7 @@ | |||
140 | compatible = "ti,composite-mux-clock"; | 141 | compatible = "ti,composite-mux-clock"; |
141 | clocks = <&per_96m_fck>, <&mcbsp_clks>; | 142 | clocks = <&per_96m_fck>, <&mcbsp_clks>; |
142 | ti,bit-shift = <2>; | 143 | ti,bit-shift = <2>; |
143 | reg = <0x02d8>; | 144 | reg = <0x68>; |
144 | }; | 145 | }; |
145 | 146 | ||
146 | mcbsp4_fck: mcbsp4_fck { | 147 | mcbsp4_fck: mcbsp4_fck { |
diff --git a/arch/arm/boot/dts/omap4-cpu-thermal.dtsi b/arch/arm/boot/dts/omap4-cpu-thermal.dtsi index cb9458feb2e3..ab7f87ae96f0 100644 --- a/arch/arm/boot/dts/omap4-cpu-thermal.dtsi +++ b/arch/arm/boot/dts/omap4-cpu-thermal.dtsi | |||
@@ -18,7 +18,7 @@ cpu_thermal: cpu_thermal { | |||
18 | /* sensor ID */ | 18 | /* sensor ID */ |
19 | thermal-sensors = <&bandgap 0>; | 19 | thermal-sensors = <&bandgap 0>; |
20 | 20 | ||
21 | trips { | 21 | cpu_trips: trips { |
22 | cpu_alert0: cpu_alert { | 22 | cpu_alert0: cpu_alert { |
23 | temperature = <100000>; /* millicelsius */ | 23 | temperature = <100000>; /* millicelsius */ |
24 | hysteresis = <2000>; /* millicelsius */ | 24 | hysteresis = <2000>; /* millicelsius */ |
@@ -31,7 +31,7 @@ cpu_thermal: cpu_thermal { | |||
31 | }; | 31 | }; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | cooling-maps { | 34 | cpu_cooling_maps: cooling-maps { |
35 | map0 { | 35 | map0 { |
36 | trip = <&cpu_alert0>; | 36 | trip = <&cpu_alert0>; |
37 | cooling-device = | 37 | cooling-device = |
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi index 074147cebae4..cf2681b2d173 100644 --- a/arch/arm/boot/dts/omap4.dtsi +++ b/arch/arm/boot/dts/omap4.dtsi | |||
@@ -114,99 +114,141 @@ | |||
114 | interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, | 114 | interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, |
115 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; | 115 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; |
116 | 116 | ||
117 | cm1: cm1@4a004000 { | 117 | l4_cfg: l4@4a000000 { |
118 | compatible = "ti,omap4-cm1"; | 118 | compatible = "ti,omap4-l4-cfg", "simple-bus"; |
119 | reg = <0x4a004000 0x2000>; | 119 | #address-cells = <1>; |
120 | 120 | #size-cells = <1>; | |
121 | cm1_clocks: clocks { | 121 | ranges = <0 0x4a000000 0x1000000>; |
122 | #address-cells = <1>; | ||
123 | #size-cells = <0>; | ||
124 | }; | ||
125 | 122 | ||
126 | cm1_clockdomains: clockdomains { | 123 | cm1: cm1@4000 { |
127 | }; | 124 | compatible = "ti,omap4-cm1"; |
128 | }; | 125 | reg = <0x4000 0x2000>; |
129 | 126 | ||
130 | prm: prm@4a306000 { | 127 | cm1_clocks: clocks { |
131 | compatible = "ti,omap4-prm"; | 128 | #address-cells = <1>; |
132 | reg = <0x4a306000 0x3000>; | 129 | #size-cells = <0>; |
133 | interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; | 130 | }; |
134 | 131 | ||
135 | prm_clocks: clocks { | 132 | cm1_clockdomains: clockdomains { |
136 | #address-cells = <1>; | 133 | }; |
137 | #size-cells = <0>; | ||
138 | }; | 134 | }; |
139 | 135 | ||
140 | prm_clockdomains: clockdomains { | 136 | cm2: cm2@8000 { |
141 | }; | 137 | compatible = "ti,omap4-cm2"; |
142 | }; | 138 | reg = <0x8000 0x3000>; |
143 | 139 | ||
144 | cm2: cm2@4a008000 { | 140 | cm2_clocks: clocks { |
145 | compatible = "ti,omap4-cm2"; | 141 | #address-cells = <1>; |
146 | reg = <0x4a008000 0x3000>; | 142 | #size-cells = <0>; |
143 | }; | ||
147 | 144 | ||
148 | cm2_clocks: clocks { | 145 | cm2_clockdomains: clockdomains { |
149 | #address-cells = <1>; | 146 | }; |
150 | #size-cells = <0>; | ||
151 | }; | 147 | }; |
152 | 148 | ||
153 | cm2_clockdomains: clockdomains { | 149 | omap4_scm_core: scm@2000 { |
150 | compatible = "ti,omap4-scm-core", "simple-bus"; | ||
151 | reg = <0x2000 0x1000>; | ||
152 | #address-cells = <1>; | ||
153 | #size-cells = <1>; | ||
154 | ranges = <0 0x2000 0x1000>; | ||
155 | |||
156 | scm_conf: scm_conf@0 { | ||
157 | compatible = "syscon"; | ||
158 | reg = <0x0 0x800>; | ||
159 | #address-cells = <1>; | ||
160 | #size-cells = <1>; | ||
161 | }; | ||
154 | }; | 162 | }; |
155 | }; | ||
156 | |||
157 | scrm: scrm@4a30a000 { | ||
158 | compatible = "ti,omap4-scrm"; | ||
159 | reg = <0x4a30a000 0x2000>; | ||
160 | 163 | ||
161 | scrm_clocks: clocks { | 164 | omap4_padconf_core: scm@100000 { |
165 | compatible = "ti,omap4-scm-padconf-core", | ||
166 | "simple-bus"; | ||
162 | #address-cells = <1>; | 167 | #address-cells = <1>; |
163 | #size-cells = <0>; | 168 | #size-cells = <1>; |
169 | ranges = <0 0x100000 0x1000>; | ||
170 | |||
171 | omap4_pmx_core: pinmux@40 { | ||
172 | compatible = "ti,omap4-padconf", | ||
173 | "pinctrl-single"; | ||
174 | reg = <0x40 0x0196>; | ||
175 | #address-cells = <1>; | ||
176 | #size-cells = <0>; | ||
177 | #interrupt-cells = <1>; | ||
178 | interrupt-controller; | ||
179 | pinctrl-single,register-width = <16>; | ||
180 | pinctrl-single,function-mask = <0x7fff>; | ||
181 | }; | ||
182 | |||
183 | omap4_padconf_global: omap4_padconf_global@5a0 { | ||
184 | compatible = "syscon"; | ||
185 | reg = <0x5a0 0x170>; | ||
186 | #address-cells = <1>; | ||
187 | #size-cells = <1>; | ||
188 | |||
189 | pbias_regulator: pbias_regulator { | ||
190 | compatible = "ti,pbias-omap"; | ||
191 | reg = <0x60 0x4>; | ||
192 | syscon = <&omap4_padconf_global>; | ||
193 | pbias_mmc_reg: pbias_mmc_omap4 { | ||
194 | regulator-name = "pbias_mmc_omap4"; | ||
195 | regulator-min-microvolt = <1800000>; | ||
196 | regulator-max-microvolt = <3000000>; | ||
197 | }; | ||
198 | }; | ||
199 | }; | ||
164 | }; | 200 | }; |
165 | 201 | ||
166 | scrm_clockdomains: clockdomains { | 202 | l4_wkup: l4@300000 { |
167 | }; | 203 | compatible = "ti,omap4-l4-wkup", "simple-bus"; |
168 | }; | 204 | #address-cells = <1>; |
169 | 205 | #size-cells = <1>; | |
170 | counter32k: counter@4a304000 { | 206 | ranges = <0 0x300000 0x40000>; |
171 | compatible = "ti,omap-counter32k"; | 207 | |
172 | reg = <0x4a304000 0x20>; | 208 | counter32k: counter@4000 { |
173 | ti,hwmods = "counter_32k"; | 209 | compatible = "ti,omap-counter32k"; |
174 | }; | 210 | reg = <0x4000 0x20>; |
175 | 211 | ti,hwmods = "counter_32k"; | |
176 | omap4_pmx_core: pinmux@4a100040 { | 212 | }; |
177 | compatible = "ti,omap4-padconf", "pinctrl-single"; | 213 | |
178 | reg = <0x4a100040 0x0196>; | 214 | prm: prm@6000 { |
179 | #address-cells = <1>; | 215 | compatible = "ti,omap4-prm"; |
180 | #size-cells = <0>; | 216 | reg = <0x6000 0x3000>; |
181 | #interrupt-cells = <1>; | 217 | interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; |
182 | interrupt-controller; | 218 | |
183 | pinctrl-single,register-width = <16>; | 219 | prm_clocks: clocks { |
184 | pinctrl-single,function-mask = <0x7fff>; | 220 | #address-cells = <1>; |
185 | }; | 221 | #size-cells = <0>; |
186 | omap4_pmx_wkup: pinmux@4a31e040 { | 222 | }; |
187 | compatible = "ti,omap4-padconf", "pinctrl-single"; | 223 | |
188 | reg = <0x4a31e040 0x0038>; | 224 | prm_clockdomains: clockdomains { |
189 | #address-cells = <1>; | 225 | }; |
190 | #size-cells = <0>; | 226 | }; |
191 | #interrupt-cells = <1>; | 227 | |
192 | interrupt-controller; | 228 | scrm: scrm@a000 { |
193 | pinctrl-single,register-width = <16>; | 229 | compatible = "ti,omap4-scrm"; |
194 | pinctrl-single,function-mask = <0x7fff>; | 230 | reg = <0xa000 0x2000>; |
195 | }; | 231 | |
196 | 232 | scrm_clocks: clocks { | |
197 | omap4_padconf_global: tisyscon@4a1005a0 { | 233 | #address-cells = <1>; |
198 | compatible = "syscon"; | 234 | #size-cells = <0>; |
199 | reg = <0x4a1005a0 0x170>; | 235 | }; |
200 | }; | 236 | |
201 | 237 | scrm_clockdomains: clockdomains { | |
202 | pbias_regulator: pbias_regulator { | 238 | }; |
203 | compatible = "ti,pbias-omap"; | 239 | }; |
204 | reg = <0x60 0x4>; | 240 | |
205 | syscon = <&omap4_padconf_global>; | 241 | omap4_pmx_wkup: pinmux@1e040 { |
206 | pbias_mmc_reg: pbias_mmc_omap4 { | 242 | compatible = "ti,omap4-padconf", |
207 | regulator-name = "pbias_mmc_omap4"; | 243 | "pinctrl-single"; |
208 | regulator-min-microvolt = <1800000>; | 244 | reg = <0x1e040 0x0038>; |
209 | regulator-max-microvolt = <3000000>; | 245 | #address-cells = <1>; |
246 | #size-cells = <0>; | ||
247 | #interrupt-cells = <1>; | ||
248 | interrupt-controller; | ||
249 | pinctrl-single,register-width = <16>; | ||
250 | pinctrl-single,function-mask = <0x7fff>; | ||
251 | }; | ||
210 | }; | 252 | }; |
211 | }; | 253 | }; |
212 | 254 | ||
@@ -223,8 +265,8 @@ | |||
223 | <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, | 265 | <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, |
224 | <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | 266 | <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; |
225 | #dma-cells = <1>; | 267 | #dma-cells = <1>; |
226 | #dma-channels = <32>; | 268 | dma-channels = <32>; |
227 | #dma-requests = <127>; | 269 | dma-requests = <127>; |
228 | }; | 270 | }; |
229 | 271 | ||
230 | gpio1: gpio@4a310000 { | 272 | gpio1: gpio@4a310000 { |
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi index b321fdf42c9f..3cdb5c22148d 100644 --- a/arch/arm/boot/dts/omap5.dtsi +++ b/arch/arm/boot/dts/omap5.dtsi | |||
@@ -129,99 +129,141 @@ | |||
129 | interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, | 129 | interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>, |
130 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; | 130 | <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; |
131 | 131 | ||
132 | prm: prm@4ae06000 { | 132 | l4_cfg: l4@4a000000 { |
133 | compatible = "ti,omap5-prm"; | 133 | compatible = "ti,omap5-l4-cfg", "simple-bus"; |
134 | reg = <0x4ae06000 0x3000>; | 134 | #address-cells = <1>; |
135 | interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; | 135 | #size-cells = <1>; |
136 | ranges = <0 0x4a000000 0x22a000>; | ||
136 | 137 | ||
137 | prm_clocks: clocks { | 138 | scm_core: scm@2000 { |
139 | compatible = "ti,omap5-scm-core", "simple-bus"; | ||
140 | reg = <0x2000 0x1000>; | ||
138 | #address-cells = <1>; | 141 | #address-cells = <1>; |
139 | #size-cells = <0>; | 142 | #size-cells = <1>; |
143 | ranges = <0 0x2000 0x800>; | ||
144 | |||
145 | scm_conf: scm_conf@0 { | ||
146 | compatible = "syscon"; | ||
147 | reg = <0x0 0x800>; | ||
148 | #address-cells = <1>; | ||
149 | #size-cells = <1>; | ||
150 | }; | ||
140 | }; | 151 | }; |
141 | 152 | ||
142 | prm_clockdomains: clockdomains { | 153 | scm_padconf_core: scm@2800 { |
154 | compatible = "ti,omap5-scm-padconf-core", | ||
155 | "simple-bus"; | ||
156 | #address-cells = <1>; | ||
157 | #size-cells = <1>; | ||
158 | ranges = <0 0x2800 0x800>; | ||
159 | |||
160 | omap5_pmx_core: pinmux@40 { | ||
161 | compatible = "ti,omap5-padconf", | ||
162 | "pinctrl-single"; | ||
163 | reg = <0x40 0x01b6>; | ||
164 | #address-cells = <1>; | ||
165 | #size-cells = <0>; | ||
166 | #interrupt-cells = <1>; | ||
167 | interrupt-controller; | ||
168 | pinctrl-single,register-width = <16>; | ||
169 | pinctrl-single,function-mask = <0x7fff>; | ||
170 | }; | ||
171 | |||
172 | omap5_padconf_global: omap5_padconf_global@5a0 { | ||
173 | compatible = "syscon"; | ||
174 | reg = <0x5a0 0xec>; | ||
175 | #address-cells = <1>; | ||
176 | #size-cells = <1>; | ||
177 | |||
178 | pbias_regulator: pbias_regulator { | ||
179 | compatible = "ti,pbias-omap"; | ||
180 | reg = <0x60 0x4>; | ||
181 | syscon = <&omap5_padconf_global>; | ||
182 | pbias_mmc_reg: pbias_mmc_omap5 { | ||
183 | regulator-name = "pbias_mmc_omap5"; | ||
184 | regulator-min-microvolt = <1800000>; | ||
185 | regulator-max-microvolt = <3000000>; | ||
186 | }; | ||
187 | }; | ||
188 | }; | ||
143 | }; | 189 | }; |
144 | }; | ||
145 | 190 | ||
146 | cm_core_aon: cm_core_aon@4a004000 { | 191 | cm_core_aon: cm_core_aon@4000 { |
147 | compatible = "ti,omap5-cm-core-aon"; | 192 | compatible = "ti,omap5-cm-core-aon"; |
148 | reg = <0x4a004000 0x2000>; | 193 | reg = <0x4000 0x2000>; |
149 | 194 | ||
150 | cm_core_aon_clocks: clocks { | 195 | cm_core_aon_clocks: clocks { |
151 | #address-cells = <1>; | 196 | #address-cells = <1>; |
152 | #size-cells = <0>; | 197 | #size-cells = <0>; |
153 | }; | 198 | }; |
154 | 199 | ||
155 | cm_core_aon_clockdomains: clockdomains { | 200 | cm_core_aon_clockdomains: clockdomains { |
201 | }; | ||
156 | }; | 202 | }; |
157 | }; | ||
158 | 203 | ||
159 | scrm: scrm@4ae0a000 { | 204 | cm_core: cm_core@8000 { |
160 | compatible = "ti,omap5-scrm"; | 205 | compatible = "ti,omap5-cm-core"; |
161 | reg = <0x4ae0a000 0x2000>; | 206 | reg = <0x8000 0x3000>; |
162 | 207 | ||
163 | scrm_clocks: clocks { | 208 | cm_core_clocks: clocks { |
164 | #address-cells = <1>; | 209 | #address-cells = <1>; |
165 | #size-cells = <0>; | 210 | #size-cells = <0>; |
166 | }; | 211 | }; |
167 | 212 | ||
168 | scrm_clockdomains: clockdomains { | 213 | cm_core_clockdomains: clockdomains { |
214 | }; | ||
169 | }; | 215 | }; |
170 | }; | 216 | }; |
171 | 217 | ||
172 | cm_core: cm_core@4a008000 { | 218 | l4_wkup: l4@4ae00000 { |
173 | compatible = "ti,omap5-cm-core"; | 219 | compatible = "ti,omap5-l4-wkup", "simple-bus"; |
174 | reg = <0x4a008000 0x3000>; | 220 | #address-cells = <1>; |
221 | #size-cells = <1>; | ||
222 | ranges = <0 0x4ae00000 0x2b000>; | ||
175 | 223 | ||
176 | cm_core_clocks: clocks { | 224 | counter32k: counter@4000 { |
177 | #address-cells = <1>; | 225 | compatible = "ti,omap-counter32k"; |
178 | #size-cells = <0>; | 226 | reg = <0x4000 0x40>; |
227 | ti,hwmods = "counter_32k"; | ||
179 | }; | 228 | }; |
180 | 229 | ||
181 | cm_core_clockdomains: clockdomains { | 230 | prm: prm@6000 { |
231 | compatible = "ti,omap5-prm"; | ||
232 | reg = <0x6000 0x3000>; | ||
233 | interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; | ||
234 | |||
235 | prm_clocks: clocks { | ||
236 | #address-cells = <1>; | ||
237 | #size-cells = <0>; | ||
238 | }; | ||
239 | |||
240 | prm_clockdomains: clockdomains { | ||
241 | }; | ||
182 | }; | 242 | }; |
183 | }; | ||
184 | 243 | ||
185 | counter32k: counter@4ae04000 { | 244 | scrm: scrm@a000 { |
186 | compatible = "ti,omap-counter32k"; | 245 | compatible = "ti,omap5-scrm"; |
187 | reg = <0x4ae04000 0x40>; | 246 | reg = <0xa000 0x2000>; |
188 | ti,hwmods = "counter_32k"; | ||
189 | }; | ||
190 | 247 | ||
191 | omap5_pmx_core: pinmux@4a002840 { | 248 | scrm_clocks: clocks { |
192 | compatible = "ti,omap5-padconf", "pinctrl-single"; | 249 | #address-cells = <1>; |
193 | reg = <0x4a002840 0x01b6>; | 250 | #size-cells = <0>; |
194 | #address-cells = <1>; | 251 | }; |
195 | #size-cells = <0>; | ||
196 | #interrupt-cells = <1>; | ||
197 | interrupt-controller; | ||
198 | pinctrl-single,register-width = <16>; | ||
199 | pinctrl-single,function-mask = <0x7fff>; | ||
200 | }; | ||
201 | omap5_pmx_wkup: pinmux@4ae0c840 { | ||
202 | compatible = "ti,omap5-padconf", "pinctrl-single"; | ||
203 | reg = <0x4ae0c840 0x0038>; | ||
204 | #address-cells = <1>; | ||
205 | #size-cells = <0>; | ||
206 | #interrupt-cells = <1>; | ||
207 | interrupt-controller; | ||
208 | pinctrl-single,register-width = <16>; | ||
209 | pinctrl-single,function-mask = <0x7fff>; | ||
210 | }; | ||
211 | 252 | ||
212 | omap5_padconf_global: tisyscon@4a002da0 { | 253 | scrm_clockdomains: clockdomains { |
213 | compatible = "syscon"; | 254 | }; |
214 | reg = <0x4A002da0 0xec>; | 255 | }; |
215 | }; | ||
216 | 256 | ||
217 | pbias_regulator: pbias_regulator { | 257 | omap5_pmx_wkup: pinmux@c840 { |
218 | compatible = "ti,pbias-omap"; | 258 | compatible = "ti,omap5-padconf", |
219 | reg = <0x60 0x4>; | 259 | "pinctrl-single"; |
220 | syscon = <&omap5_padconf_global>; | 260 | reg = <0xc840 0x0038>; |
221 | pbias_mmc_reg: pbias_mmc_omap5 { | 261 | #address-cells = <1>; |
222 | regulator-name = "pbias_mmc_omap5"; | 262 | #size-cells = <0>; |
223 | regulator-min-microvolt = <1800000>; | 263 | #interrupt-cells = <1>; |
224 | regulator-max-microvolt = <3000000>; | 264 | interrupt-controller; |
265 | pinctrl-single,register-width = <16>; | ||
266 | pinctrl-single,function-mask = <0x7fff>; | ||
225 | }; | 267 | }; |
226 | }; | 268 | }; |
227 | 269 | ||
@@ -238,8 +280,8 @@ | |||
238 | <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, | 280 | <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, |
239 | <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; | 281 | <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>; |
240 | #dma-cells = <1>; | 282 | #dma-cells = <1>; |
241 | #dma-channels = <32>; | 283 | dma-channels = <32>; |
242 | #dma-requests = <127>; | 284 | dma-requests = <127>; |
243 | }; | 285 | }; |
244 | 286 | ||
245 | gpio1: gpio@4ae10000 { | 287 | gpio1: gpio@4ae10000 { |
@@ -929,8 +971,8 @@ | |||
929 | <0x4A096800 0x40>; /* pll_ctrl */ | 971 | <0x4A096800 0x40>; /* pll_ctrl */ |
930 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; | 972 | reg-names = "phy_rx", "phy_tx", "pll_ctrl"; |
931 | ctrl-module = <&omap_control_sata>; | 973 | ctrl-module = <&omap_control_sata>; |
932 | clocks = <&sys_clkin>; | 974 | clocks = <&sys_clkin>, <&sata_ref_clk>; |
933 | clock-names = "sysclk"; | 975 | clock-names = "sysclk", "refclk"; |
934 | #phy-cells = <0>; | 976 | #phy-cells = <0>; |
935 | }; | 977 | }; |
936 | }; | 978 | }; |
diff --git a/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi b/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi index 36cafbfa1bfa..606753eb72c8 100644 --- a/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi +++ b/arch/arm/boot/dts/vf-colibri-eval-v3.dtsi | |||
@@ -12,6 +12,12 @@ | |||
12 | bootargs = "console=ttyLP0,115200"; | 12 | bootargs = "console=ttyLP0,115200"; |
13 | }; | 13 | }; |
14 | 14 | ||
15 | clk16m: clk16m { | ||
16 | compatible = "fixed-clock"; | ||
17 | #clock-cells = <0>; | ||
18 | clock-frequency = <16000000>; | ||
19 | }; | ||
20 | |||
15 | regulators { | 21 | regulators { |
16 | compatible = "simple-bus"; | 22 | compatible = "simple-bus"; |
17 | #address-cells = <1>; | 23 | #address-cells = <1>; |
@@ -47,6 +53,21 @@ | |||
47 | status = "okay"; | 53 | status = "okay"; |
48 | }; | 54 | }; |
49 | 55 | ||
56 | &dspi1 { | ||
57 | status = "okay"; | ||
58 | |||
59 | mcp2515can: can@0 { | ||
60 | compatible = "microchip,mcp2515"; | ||
61 | pinctrl-names = "default"; | ||
62 | pinctrl-0 = <&pinctrl_can_int>; | ||
63 | reg = <0>; | ||
64 | clocks = <&clk16m>; | ||
65 | spi-max-frequency = <10000000>; | ||
66 | interrupt-parent = <&gpio1>; | ||
67 | interrupts = <11 GPIO_ACTIVE_LOW>; | ||
68 | }; | ||
69 | }; | ||
70 | |||
50 | &esdhc1 { | 71 | &esdhc1 { |
51 | pinctrl-names = "default"; | 72 | pinctrl-names = "default"; |
52 | pinctrl-0 = <&pinctrl_esdhc1>; | 73 | pinctrl-0 = <&pinctrl_esdhc1>; |
@@ -94,3 +115,13 @@ | |||
94 | &usbh1 { | 115 | &usbh1 { |
95 | vbus-supply = <&usbh_vbus_reg>; | 116 | vbus-supply = <&usbh_vbus_reg>; |
96 | }; | 117 | }; |
118 | |||
119 | &iomuxc { | ||
120 | vf610-colibri { | ||
121 | pinctrl_can_int: can_int { | ||
122 | fsl,pins = < | ||
123 | VF610_PAD_PTB21__GPIO_43 0x22ed | ||
124 | >; | ||
125 | }; | ||
126 | }; | ||
127 | }; | ||
diff --git a/arch/arm/boot/dts/vf-colibri.dtsi b/arch/arm/boot/dts/vf-colibri.dtsi index 5c2b7320856d..fbef0828e930 100644 --- a/arch/arm/boot/dts/vf-colibri.dtsi +++ b/arch/arm/boot/dts/vf-colibri.dtsi | |||
@@ -23,6 +23,12 @@ | |||
23 | status = "okay"; | 23 | status = "okay"; |
24 | }; | 24 | }; |
25 | 25 | ||
26 | &dspi1 { | ||
27 | bus-num = <1>; | ||
28 | pinctrl-names = "default"; | ||
29 | pinctrl-0 = <&pinctrl_dspi1>; | ||
30 | }; | ||
31 | |||
26 | &edma0 { | 32 | &edma0 { |
27 | status = "okay"; | 33 | status = "okay"; |
28 | }; | 34 | }; |
@@ -107,6 +113,15 @@ | |||
107 | >; | 113 | >; |
108 | }; | 114 | }; |
109 | 115 | ||
116 | pinctrl_dspi1: dspi1grp { | ||
117 | fsl,pins = < | ||
118 | VF610_PAD_PTD5__DSPI1_CS0 0x33e2 | ||
119 | VF610_PAD_PTD6__DSPI1_SIN 0x33e1 | ||
120 | VF610_PAD_PTD7__DSPI1_SOUT 0x33e2 | ||
121 | VF610_PAD_PTD8__DSPI1_SCK 0x33e2 | ||
122 | >; | ||
123 | }; | ||
124 | |||
110 | pinctrl_esdhc1: esdhc1grp { | 125 | pinctrl_esdhc1: esdhc1grp { |
111 | fsl,pins = < | 126 | fsl,pins = < |
112 | VF610_PAD_PTA24__ESDHC1_CLK 0x31ef | 127 | VF610_PAD_PTA24__ESDHC1_CLK 0x31ef |
diff --git a/arch/arm/boot/dts/vf500.dtsi b/arch/arm/boot/dts/vf500.dtsi index 1dbf8d2d1ddf..e976d2fa1527 100644 --- a/arch/arm/boot/dts/vf500.dtsi +++ b/arch/arm/boot/dts/vf500.dtsi | |||
@@ -24,14 +24,13 @@ | |||
24 | }; | 24 | }; |
25 | 25 | ||
26 | soc { | 26 | soc { |
27 | interrupt-parent = <&intc>; | ||
28 | |||
29 | aips-bus@40000000 { | 27 | aips-bus@40000000 { |
30 | 28 | ||
31 | intc: interrupt-controller@40002000 { | 29 | intc: interrupt-controller@40002000 { |
32 | compatible = "arm,cortex-a9-gic"; | 30 | compatible = "arm,cortex-a9-gic"; |
33 | #interrupt-cells = <3>; | 31 | #interrupt-cells = <3>; |
34 | interrupt-controller; | 32 | interrupt-controller; |
33 | interrupt-parent = <&intc>; | ||
35 | reg = <0x40003000 0x1000>, | 34 | reg = <0x40003000 0x1000>, |
36 | <0x40002100 0x100>; | 35 | <0x40002100 0x100>; |
37 | }; | 36 | }; |
@@ -40,145 +39,17 @@ | |||
40 | compatible = "arm,cortex-a9-global-timer"; | 39 | compatible = "arm,cortex-a9-global-timer"; |
41 | reg = <0x40002200 0x20>; | 40 | reg = <0x40002200 0x20>; |
42 | interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>; | 41 | interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>; |
42 | interrupt-parent = <&intc>; | ||
43 | clocks = <&clks VF610_CLK_PLATFORM_BUS>; | 43 | clocks = <&clks VF610_CLK_PLATFORM_BUS>; |
44 | }; | 44 | }; |
45 | }; | 45 | }; |
46 | }; | 46 | }; |
47 | }; | 47 | }; |
48 | 48 | ||
49 | &adc0 { | 49 | &mscm_ir { |
50 | interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; | 50 | interrupt-parent = <&intc>; |
51 | }; | ||
52 | |||
53 | &adc1 { | ||
54 | interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; | ||
55 | }; | ||
56 | |||
57 | &can0 { | ||
58 | interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; | ||
59 | }; | ||
60 | |||
61 | &can1 { | ||
62 | interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>; | ||
63 | }; | ||
64 | |||
65 | &dspi0 { | ||
66 | interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; | ||
67 | }; | ||
68 | |||
69 | &edma0 { | ||
70 | interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, | ||
71 | <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; | ||
72 | interrupt-names = "edma-tx", "edma-err"; | ||
73 | }; | ||
74 | |||
75 | &edma1 { | ||
76 | interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, | ||
77 | <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; | ||
78 | interrupt-names = "edma-tx", "edma-err"; | ||
79 | }; | ||
80 | |||
81 | &esdhc1 { | ||
82 | interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; | ||
83 | }; | ||
84 | |||
85 | &fec0 { | ||
86 | interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; | ||
87 | }; | ||
88 | |||
89 | &fec1 { | ||
90 | interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>; | ||
91 | }; | ||
92 | |||
93 | &ftm { | ||
94 | interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>; | ||
95 | }; | ||
96 | |||
97 | &gpio0 { | ||
98 | interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; | ||
99 | }; | ||
100 | |||
101 | &gpio1 { | ||
102 | interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; | ||
103 | }; | ||
104 | |||
105 | &gpio2 { | ||
106 | interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; | ||
107 | }; | ||
108 | |||
109 | &gpio3 { | ||
110 | interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>; | ||
111 | }; | ||
112 | |||
113 | &gpio4 { | ||
114 | interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>; | ||
115 | }; | ||
116 | |||
117 | &i2c0 { | ||
118 | interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; | ||
119 | }; | ||
120 | |||
121 | &pit { | ||
122 | interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>; | ||
123 | }; | ||
124 | |||
125 | &qspi0 { | ||
126 | interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>; | ||
127 | }; | ||
128 | |||
129 | &sai2 { | ||
130 | interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; | ||
131 | }; | ||
132 | |||
133 | &snvsrtc { | ||
134 | interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; | ||
135 | }; | ||
136 | |||
137 | &src { | ||
138 | interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; | ||
139 | }; | ||
140 | |||
141 | &uart0 { | ||
142 | interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>; | ||
143 | }; | ||
144 | |||
145 | &uart1 { | ||
146 | interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; | ||
147 | }; | ||
148 | |||
149 | &uart2 { | ||
150 | interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; | ||
151 | }; | ||
152 | |||
153 | &uart3 { | ||
154 | interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; | ||
155 | }; | ||
156 | |||
157 | &uart4 { | ||
158 | interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>; | ||
159 | }; | ||
160 | |||
161 | &uart5 { | ||
162 | interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; | ||
163 | }; | ||
164 | |||
165 | &usbdev0 { | ||
166 | interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; | ||
167 | }; | ||
168 | |||
169 | &usbh1 { | ||
170 | interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; | ||
171 | }; | ||
172 | |||
173 | &usbphy0 { | ||
174 | interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; | ||
175 | }; | ||
176 | |||
177 | &usbphy1 { | ||
178 | interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; | ||
179 | }; | 51 | }; |
180 | 52 | ||
181 | &wdoga5 { | 53 | &wdoga5 { |
182 | interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; | ||
183 | status = "okay"; | 54 | status = "okay"; |
184 | }; | 55 | }; |
diff --git a/arch/arm/boot/dts/vfxxx.dtsi b/arch/arm/boot/dts/vfxxx.dtsi index a29c7ce15eaf..4aa335166be7 100644 --- a/arch/arm/boot/dts/vfxxx.dtsi +++ b/arch/arm/boot/dts/vfxxx.dtsi | |||
@@ -54,6 +54,7 @@ | |||
54 | #address-cells = <1>; | 54 | #address-cells = <1>; |
55 | #size-cells = <1>; | 55 | #size-cells = <1>; |
56 | compatible = "simple-bus"; | 56 | compatible = "simple-bus"; |
57 | interrupt-parent = <&mscm_ir>; | ||
57 | ranges; | 58 | ranges; |
58 | 59 | ||
59 | aips0: aips-bus@40000000 { | 60 | aips0: aips-bus@40000000 { |
@@ -62,6 +63,19 @@ | |||
62 | #size-cells = <1>; | 63 | #size-cells = <1>; |
63 | ranges; | 64 | ranges; |
64 | 65 | ||
66 | mscm_cpucfg: cpucfg@40001000 { | ||
67 | compatible = "fsl,vf610-mscm-cpucfg", "syscon"; | ||
68 | reg = <0x40001000 0x800>; | ||
69 | }; | ||
70 | |||
71 | mscm_ir: interrupt-controller@40001800 { | ||
72 | compatible = "fsl,vf610-mscm-ir"; | ||
73 | reg = <0x40001800 0x400>; | ||
74 | fsl,cpucfg = <&mscm_cpucfg>; | ||
75 | interrupt-controller; | ||
76 | #interrupt-cells = <2>; | ||
77 | }; | ||
78 | |||
65 | edma0: dma-controller@40018000 { | 79 | edma0: dma-controller@40018000 { |
66 | #dma-cells = <2>; | 80 | #dma-cells = <2>; |
67 | compatible = "fsl,vf610-edma"; | 81 | compatible = "fsl,vf610-edma"; |
@@ -69,6 +83,9 @@ | |||
69 | <0x40024000 0x1000>, | 83 | <0x40024000 0x1000>, |
70 | <0x40025000 0x1000>; | 84 | <0x40025000 0x1000>; |
71 | dma-channels = <32>; | 85 | dma-channels = <32>; |
86 | interrupts = <8 IRQ_TYPE_LEVEL_HIGH>, | ||
87 | <9 IRQ_TYPE_LEVEL_HIGH>; | ||
88 | interrupt-names = "edma-tx", "edma-err"; | ||
72 | clock-names = "dmamux0", "dmamux1"; | 89 | clock-names = "dmamux0", "dmamux1"; |
73 | clocks = <&clks VF610_CLK_DMAMUX0>, | 90 | clocks = <&clks VF610_CLK_DMAMUX0>, |
74 | <&clks VF610_CLK_DMAMUX1>; | 91 | <&clks VF610_CLK_DMAMUX1>; |
@@ -78,6 +95,7 @@ | |||
78 | can0: flexcan@40020000 { | 95 | can0: flexcan@40020000 { |
79 | compatible = "fsl,vf610-flexcan"; | 96 | compatible = "fsl,vf610-flexcan"; |
80 | reg = <0x40020000 0x4000>; | 97 | reg = <0x40020000 0x4000>; |
98 | interrupts = <58 IRQ_TYPE_LEVEL_HIGH>; | ||
81 | clocks = <&clks VF610_CLK_FLEXCAN0>, | 99 | clocks = <&clks VF610_CLK_FLEXCAN0>, |
82 | <&clks VF610_CLK_FLEXCAN0>; | 100 | <&clks VF610_CLK_FLEXCAN0>; |
83 | clock-names = "ipg", "per"; | 101 | clock-names = "ipg", "per"; |
@@ -87,6 +105,7 @@ | |||
87 | uart0: serial@40027000 { | 105 | uart0: serial@40027000 { |
88 | compatible = "fsl,vf610-lpuart"; | 106 | compatible = "fsl,vf610-lpuart"; |
89 | reg = <0x40027000 0x1000>; | 107 | reg = <0x40027000 0x1000>; |
108 | interrupts = <61 IRQ_TYPE_LEVEL_HIGH>; | ||
90 | clocks = <&clks VF610_CLK_UART0>; | 109 | clocks = <&clks VF610_CLK_UART0>; |
91 | clock-names = "ipg"; | 110 | clock-names = "ipg"; |
92 | dmas = <&edma0 0 2>, | 111 | dmas = <&edma0 0 2>, |
@@ -98,6 +117,7 @@ | |||
98 | uart1: serial@40028000 { | 117 | uart1: serial@40028000 { |
99 | compatible = "fsl,vf610-lpuart"; | 118 | compatible = "fsl,vf610-lpuart"; |
100 | reg = <0x40028000 0x1000>; | 119 | reg = <0x40028000 0x1000>; |
120 | interrupts = <62 IRQ_TYPE_LEVEL_HIGH>; | ||
101 | clocks = <&clks VF610_CLK_UART1>; | 121 | clocks = <&clks VF610_CLK_UART1>; |
102 | clock-names = "ipg"; | 122 | clock-names = "ipg"; |
103 | dmas = <&edma0 0 4>, | 123 | dmas = <&edma0 0 4>, |
@@ -109,6 +129,7 @@ | |||
109 | uart2: serial@40029000 { | 129 | uart2: serial@40029000 { |
110 | compatible = "fsl,vf610-lpuart"; | 130 | compatible = "fsl,vf610-lpuart"; |
111 | reg = <0x40029000 0x1000>; | 131 | reg = <0x40029000 0x1000>; |
132 | interrupts = <63 IRQ_TYPE_LEVEL_HIGH>; | ||
112 | clocks = <&clks VF610_CLK_UART2>; | 133 | clocks = <&clks VF610_CLK_UART2>; |
113 | clock-names = "ipg"; | 134 | clock-names = "ipg"; |
114 | dmas = <&edma0 0 6>, | 135 | dmas = <&edma0 0 6>, |
@@ -120,6 +141,7 @@ | |||
120 | uart3: serial@4002a000 { | 141 | uart3: serial@4002a000 { |
121 | compatible = "fsl,vf610-lpuart"; | 142 | compatible = "fsl,vf610-lpuart"; |
122 | reg = <0x4002a000 0x1000>; | 143 | reg = <0x4002a000 0x1000>; |
144 | interrupts = <64 IRQ_TYPE_LEVEL_HIGH>; | ||
123 | clocks = <&clks VF610_CLK_UART3>; | 145 | clocks = <&clks VF610_CLK_UART3>; |
124 | clock-names = "ipg"; | 146 | clock-names = "ipg"; |
125 | dmas = <&edma0 0 8>, | 147 | dmas = <&edma0 0 8>, |
@@ -133,15 +155,29 @@ | |||
133 | #size-cells = <0>; | 155 | #size-cells = <0>; |
134 | compatible = "fsl,vf610-dspi"; | 156 | compatible = "fsl,vf610-dspi"; |
135 | reg = <0x4002c000 0x1000>; | 157 | reg = <0x4002c000 0x1000>; |
158 | interrupts = <67 IRQ_TYPE_LEVEL_HIGH>; | ||
136 | clocks = <&clks VF610_CLK_DSPI0>; | 159 | clocks = <&clks VF610_CLK_DSPI0>; |
137 | clock-names = "dspi"; | 160 | clock-names = "dspi"; |
138 | spi-num-chipselects = <5>; | 161 | spi-num-chipselects = <5>; |
139 | status = "disabled"; | 162 | status = "disabled"; |
140 | }; | 163 | }; |
141 | 164 | ||
165 | dspi1: dspi1@4002d000 { | ||
166 | #address-cells = <1>; | ||
167 | #size-cells = <0>; | ||
168 | compatible = "fsl,vf610-dspi"; | ||
169 | reg = <0x4002d000 0x1000>; | ||
170 | interrupts = <68 IRQ_TYPE_LEVEL_HIGH>; | ||
171 | clocks = <&clks VF610_CLK_DSPI1>; | ||
172 | clock-names = "dspi"; | ||
173 | spi-num-chipselects = <5>; | ||
174 | status = "disabled"; | ||
175 | }; | ||
176 | |||
142 | sai2: sai@40031000 { | 177 | sai2: sai@40031000 { |
143 | compatible = "fsl,vf610-sai"; | 178 | compatible = "fsl,vf610-sai"; |
144 | reg = <0x40031000 0x1000>; | 179 | reg = <0x40031000 0x1000>; |
180 | interrupts = <86 IRQ_TYPE_LEVEL_HIGH>; | ||
145 | clocks = <&clks VF610_CLK_SAI2>; | 181 | clocks = <&clks VF610_CLK_SAI2>; |
146 | clock-names = "sai"; | 182 | clock-names = "sai"; |
147 | dma-names = "tx", "rx"; | 183 | dma-names = "tx", "rx"; |
@@ -153,6 +189,7 @@ | |||
153 | pit: pit@40037000 { | 189 | pit: pit@40037000 { |
154 | compatible = "fsl,vf610-pit"; | 190 | compatible = "fsl,vf610-pit"; |
155 | reg = <0x40037000 0x1000>; | 191 | reg = <0x40037000 0x1000>; |
192 | interrupts = <39 IRQ_TYPE_LEVEL_HIGH>; | ||
156 | clocks = <&clks VF610_CLK_PIT>; | 193 | clocks = <&clks VF610_CLK_PIT>; |
157 | clock-names = "pit"; | 194 | clock-names = "pit"; |
158 | }; | 195 | }; |
@@ -186,6 +223,7 @@ | |||
186 | adc0: adc@4003b000 { | 223 | adc0: adc@4003b000 { |
187 | compatible = "fsl,vf610-adc"; | 224 | compatible = "fsl,vf610-adc"; |
188 | reg = <0x4003b000 0x1000>; | 225 | reg = <0x4003b000 0x1000>; |
226 | interrupts = <53 IRQ_TYPE_LEVEL_HIGH>; | ||
189 | clocks = <&clks VF610_CLK_ADC0>; | 227 | clocks = <&clks VF610_CLK_ADC0>; |
190 | clock-names = "adc"; | 228 | clock-names = "adc"; |
191 | status = "disabled"; | 229 | status = "disabled"; |
@@ -194,6 +232,7 @@ | |||
194 | wdoga5: wdog@4003e000 { | 232 | wdoga5: wdog@4003e000 { |
195 | compatible = "fsl,vf610-wdt", "fsl,imx21-wdt"; | 233 | compatible = "fsl,vf610-wdt", "fsl,imx21-wdt"; |
196 | reg = <0x4003e000 0x1000>; | 234 | reg = <0x4003e000 0x1000>; |
235 | interrupts = <20 IRQ_TYPE_LEVEL_HIGH>; | ||
197 | clocks = <&clks VF610_CLK_WDT>; | 236 | clocks = <&clks VF610_CLK_WDT>; |
198 | clock-names = "wdog"; | 237 | clock-names = "wdog"; |
199 | status = "disabled"; | 238 | status = "disabled"; |
@@ -204,6 +243,7 @@ | |||
204 | #size-cells = <0>; | 243 | #size-cells = <0>; |
205 | compatible = "fsl,vf610-qspi"; | 244 | compatible = "fsl,vf610-qspi"; |
206 | reg = <0x40044000 0x1000>; | 245 | reg = <0x40044000 0x1000>; |
246 | interrupts = <24 IRQ_TYPE_LEVEL_HIGH>; | ||
207 | clocks = <&clks VF610_CLK_QSPI0_EN>, | 247 | clocks = <&clks VF610_CLK_QSPI0_EN>, |
208 | <&clks VF610_CLK_QSPI0>; | 248 | <&clks VF610_CLK_QSPI0>; |
209 | clock-names = "qspi_en", "qspi"; | 249 | clock-names = "qspi_en", "qspi"; |
@@ -213,7 +253,6 @@ | |||
213 | iomuxc: iomuxc@40048000 { | 253 | iomuxc: iomuxc@40048000 { |
214 | compatible = "fsl,vf610-iomuxc"; | 254 | compatible = "fsl,vf610-iomuxc"; |
215 | reg = <0x40048000 0x1000>; | 255 | reg = <0x40048000 0x1000>; |
216 | #gpio-range-cells = <3>; | ||
217 | }; | 256 | }; |
218 | 257 | ||
219 | gpio0: gpio@40049000 { | 258 | gpio0: gpio@40049000 { |
@@ -221,6 +260,7 @@ | |||
221 | reg = <0x40049000 0x1000 0x400ff000 0x40>; | 260 | reg = <0x40049000 0x1000 0x400ff000 0x40>; |
222 | gpio-controller; | 261 | gpio-controller; |
223 | #gpio-cells = <2>; | 262 | #gpio-cells = <2>; |
263 | interrupts = <107 IRQ_TYPE_LEVEL_HIGH>; | ||
224 | interrupt-controller; | 264 | interrupt-controller; |
225 | #interrupt-cells = <2>; | 265 | #interrupt-cells = <2>; |
226 | gpio-ranges = <&iomuxc 0 0 32>; | 266 | gpio-ranges = <&iomuxc 0 0 32>; |
@@ -231,6 +271,7 @@ | |||
231 | reg = <0x4004a000 0x1000 0x400ff040 0x40>; | 271 | reg = <0x4004a000 0x1000 0x400ff040 0x40>; |
232 | gpio-controller; | 272 | gpio-controller; |
233 | #gpio-cells = <2>; | 273 | #gpio-cells = <2>; |
274 | interrupts = <108 IRQ_TYPE_LEVEL_HIGH>; | ||
234 | interrupt-controller; | 275 | interrupt-controller; |
235 | #interrupt-cells = <2>; | 276 | #interrupt-cells = <2>; |
236 | gpio-ranges = <&iomuxc 0 32 32>; | 277 | gpio-ranges = <&iomuxc 0 32 32>; |
@@ -241,6 +282,7 @@ | |||
241 | reg = <0x4004b000 0x1000 0x400ff080 0x40>; | 282 | reg = <0x4004b000 0x1000 0x400ff080 0x40>; |
242 | gpio-controller; | 283 | gpio-controller; |
243 | #gpio-cells = <2>; | 284 | #gpio-cells = <2>; |
285 | interrupts = <109 IRQ_TYPE_LEVEL_HIGH>; | ||
244 | interrupt-controller; | 286 | interrupt-controller; |
245 | #interrupt-cells = <2>; | 287 | #interrupt-cells = <2>; |
246 | gpio-ranges = <&iomuxc 0 64 32>; | 288 | gpio-ranges = <&iomuxc 0 64 32>; |
@@ -251,6 +293,7 @@ | |||
251 | reg = <0x4004c000 0x1000 0x400ff0c0 0x40>; | 293 | reg = <0x4004c000 0x1000 0x400ff0c0 0x40>; |
252 | gpio-controller; | 294 | gpio-controller; |
253 | #gpio-cells = <2>; | 295 | #gpio-cells = <2>; |
296 | interrupts = <110 IRQ_TYPE_LEVEL_HIGH>; | ||
254 | interrupt-controller; | 297 | interrupt-controller; |
255 | #interrupt-cells = <2>; | 298 | #interrupt-cells = <2>; |
256 | gpio-ranges = <&iomuxc 0 96 32>; | 299 | gpio-ranges = <&iomuxc 0 96 32>; |
@@ -261,6 +304,7 @@ | |||
261 | reg = <0x4004d000 0x1000 0x400ff100 0x40>; | 304 | reg = <0x4004d000 0x1000 0x400ff100 0x40>; |
262 | gpio-controller; | 305 | gpio-controller; |
263 | #gpio-cells = <2>; | 306 | #gpio-cells = <2>; |
307 | interrupts = <111 IRQ_TYPE_LEVEL_HIGH>; | ||
264 | interrupt-controller; | 308 | interrupt-controller; |
265 | #interrupt-cells = <2>; | 309 | #interrupt-cells = <2>; |
266 | gpio-ranges = <&iomuxc 0 128 7>; | 310 | gpio-ranges = <&iomuxc 0 128 7>; |
@@ -274,6 +318,7 @@ | |||
274 | usbphy0: usbphy@40050800 { | 318 | usbphy0: usbphy@40050800 { |
275 | compatible = "fsl,vf610-usbphy"; | 319 | compatible = "fsl,vf610-usbphy"; |
276 | reg = <0x40050800 0x400>; | 320 | reg = <0x40050800 0x400>; |
321 | interrupts = <50 IRQ_TYPE_LEVEL_HIGH>; | ||
277 | clocks = <&clks VF610_CLK_USBPHY0>; | 322 | clocks = <&clks VF610_CLK_USBPHY0>; |
278 | fsl,anatop = <&anatop>; | 323 | fsl,anatop = <&anatop>; |
279 | status = "disabled"; | 324 | status = "disabled"; |
@@ -282,6 +327,7 @@ | |||
282 | usbphy1: usbphy@40050c00 { | 327 | usbphy1: usbphy@40050c00 { |
283 | compatible = "fsl,vf610-usbphy"; | 328 | compatible = "fsl,vf610-usbphy"; |
284 | reg = <0x40050c00 0x400>; | 329 | reg = <0x40050c00 0x400>; |
330 | interrupts = <51 IRQ_TYPE_LEVEL_HIGH>; | ||
285 | clocks = <&clks VF610_CLK_USBPHY1>; | 331 | clocks = <&clks VF610_CLK_USBPHY1>; |
286 | fsl,anatop = <&anatop>; | 332 | fsl,anatop = <&anatop>; |
287 | status = "disabled"; | 333 | status = "disabled"; |
@@ -292,6 +338,7 @@ | |||
292 | #size-cells = <0>; | 338 | #size-cells = <0>; |
293 | compatible = "fsl,vf610-i2c"; | 339 | compatible = "fsl,vf610-i2c"; |
294 | reg = <0x40066000 0x1000>; | 340 | reg = <0x40066000 0x1000>; |
341 | interrupts = <71 IRQ_TYPE_LEVEL_HIGH>; | ||
295 | clocks = <&clks VF610_CLK_I2C0>; | 342 | clocks = <&clks VF610_CLK_I2C0>; |
296 | clock-names = "ipg"; | 343 | clock-names = "ipg"; |
297 | dmas = <&edma0 0 50>, | 344 | dmas = <&edma0 0 50>, |
@@ -311,6 +358,7 @@ | |||
311 | usbdev0: usb@40034000 { | 358 | usbdev0: usb@40034000 { |
312 | compatible = "fsl,vf610-usb", "fsl,imx27-usb"; | 359 | compatible = "fsl,vf610-usb", "fsl,imx27-usb"; |
313 | reg = <0x40034000 0x800>; | 360 | reg = <0x40034000 0x800>; |
361 | interrupts = <75 IRQ_TYPE_LEVEL_HIGH>; | ||
314 | clocks = <&clks VF610_CLK_USBC0>; | 362 | clocks = <&clks VF610_CLK_USBC0>; |
315 | fsl,usbphy = <&usbphy0>; | 363 | fsl,usbphy = <&usbphy0>; |
316 | fsl,usbmisc = <&usbmisc0 0>; | 364 | fsl,usbmisc = <&usbmisc0 0>; |
@@ -329,6 +377,7 @@ | |||
329 | src: src@4006e000 { | 377 | src: src@4006e000 { |
330 | compatible = "fsl,vf610-src", "syscon"; | 378 | compatible = "fsl,vf610-src", "syscon"; |
331 | reg = <0x4006e000 0x1000>; | 379 | reg = <0x4006e000 0x1000>; |
380 | interrupts = <96 IRQ_TYPE_LEVEL_HIGH>; | ||
332 | }; | 381 | }; |
333 | }; | 382 | }; |
334 | 383 | ||
@@ -345,6 +394,9 @@ | |||
345 | <0x400a1000 0x1000>, | 394 | <0x400a1000 0x1000>, |
346 | <0x400a2000 0x1000>; | 395 | <0x400a2000 0x1000>; |
347 | dma-channels = <32>; | 396 | dma-channels = <32>; |
397 | interrupts = <10 IRQ_TYPE_LEVEL_HIGH>, | ||
398 | <11 IRQ_TYPE_LEVEL_HIGH>; | ||
399 | interrupt-names = "edma-tx", "edma-err"; | ||
348 | clock-names = "dmamux0", "dmamux1"; | 400 | clock-names = "dmamux0", "dmamux1"; |
349 | clocks = <&clks VF610_CLK_DMAMUX2>, | 401 | clocks = <&clks VF610_CLK_DMAMUX2>, |
350 | <&clks VF610_CLK_DMAMUX3>; | 402 | <&clks VF610_CLK_DMAMUX3>; |
@@ -360,6 +412,7 @@ | |||
360 | snvsrtc: snvs-rtc-lp@34 { | 412 | snvsrtc: snvs-rtc-lp@34 { |
361 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; | 413 | compatible = "fsl,sec-v4.0-mon-rtc-lp"; |
362 | reg = <0x34 0x58>; | 414 | reg = <0x34 0x58>; |
415 | interrupts = <100 IRQ_TYPE_LEVEL_HIGH>; | ||
363 | clocks = <&clks VF610_CLK_SNVS>; | 416 | clocks = <&clks VF610_CLK_SNVS>; |
364 | clock-names = "snvs-rtc"; | 417 | clock-names = "snvs-rtc"; |
365 | }; | 418 | }; |
@@ -368,6 +421,7 @@ | |||
368 | uart4: serial@400a9000 { | 421 | uart4: serial@400a9000 { |
369 | compatible = "fsl,vf610-lpuart"; | 422 | compatible = "fsl,vf610-lpuart"; |
370 | reg = <0x400a9000 0x1000>; | 423 | reg = <0x400a9000 0x1000>; |
424 | interrupts = <65 IRQ_TYPE_LEVEL_HIGH>; | ||
371 | clocks = <&clks VF610_CLK_UART4>; | 425 | clocks = <&clks VF610_CLK_UART4>; |
372 | clock-names = "ipg"; | 426 | clock-names = "ipg"; |
373 | status = "disabled"; | 427 | status = "disabled"; |
@@ -376,6 +430,7 @@ | |||
376 | uart5: serial@400aa000 { | 430 | uart5: serial@400aa000 { |
377 | compatible = "fsl,vf610-lpuart"; | 431 | compatible = "fsl,vf610-lpuart"; |
378 | reg = <0x400aa000 0x1000>; | 432 | reg = <0x400aa000 0x1000>; |
433 | interrupts = <66 IRQ_TYPE_LEVEL_HIGH>; | ||
379 | clocks = <&clks VF610_CLK_UART5>; | 434 | clocks = <&clks VF610_CLK_UART5>; |
380 | clock-names = "ipg"; | 435 | clock-names = "ipg"; |
381 | status = "disabled"; | 436 | status = "disabled"; |
@@ -384,6 +439,7 @@ | |||
384 | adc1: adc@400bb000 { | 439 | adc1: adc@400bb000 { |
385 | compatible = "fsl,vf610-adc"; | 440 | compatible = "fsl,vf610-adc"; |
386 | reg = <0x400bb000 0x1000>; | 441 | reg = <0x400bb000 0x1000>; |
442 | interrupts = <54 IRQ_TYPE_LEVEL_HIGH>; | ||
387 | clocks = <&clks VF610_CLK_ADC1>; | 443 | clocks = <&clks VF610_CLK_ADC1>; |
388 | clock-names = "adc"; | 444 | clock-names = "adc"; |
389 | status = "disabled"; | 445 | status = "disabled"; |
@@ -392,6 +448,7 @@ | |||
392 | esdhc1: esdhc@400b2000 { | 448 | esdhc1: esdhc@400b2000 { |
393 | compatible = "fsl,imx53-esdhc"; | 449 | compatible = "fsl,imx53-esdhc"; |
394 | reg = <0x400b2000 0x1000>; | 450 | reg = <0x400b2000 0x1000>; |
451 | interrupts = <28 IRQ_TYPE_LEVEL_HIGH>; | ||
395 | clocks = <&clks VF610_CLK_IPG_BUS>, | 452 | clocks = <&clks VF610_CLK_IPG_BUS>, |
396 | <&clks VF610_CLK_PLATFORM_BUS>, | 453 | <&clks VF610_CLK_PLATFORM_BUS>, |
397 | <&clks VF610_CLK_ESDHC1>; | 454 | <&clks VF610_CLK_ESDHC1>; |
@@ -402,6 +459,7 @@ | |||
402 | usbh1: usb@400b4000 { | 459 | usbh1: usb@400b4000 { |
403 | compatible = "fsl,vf610-usb", "fsl,imx27-usb"; | 460 | compatible = "fsl,vf610-usb", "fsl,imx27-usb"; |
404 | reg = <0x400b4000 0x800>; | 461 | reg = <0x400b4000 0x800>; |
462 | interrupts = <76 IRQ_TYPE_LEVEL_HIGH>; | ||
405 | clocks = <&clks VF610_CLK_USBC1>; | 463 | clocks = <&clks VF610_CLK_USBC1>; |
406 | fsl,usbphy = <&usbphy1>; | 464 | fsl,usbphy = <&usbphy1>; |
407 | fsl,usbmisc = <&usbmisc1 0>; | 465 | fsl,usbmisc = <&usbmisc1 0>; |
@@ -420,6 +478,7 @@ | |||
420 | ftm: ftm@400b8000 { | 478 | ftm: ftm@400b8000 { |
421 | compatible = "fsl,ftm-timer"; | 479 | compatible = "fsl,ftm-timer"; |
422 | reg = <0x400b8000 0x1000 0x400b9000 0x1000>; | 480 | reg = <0x400b8000 0x1000 0x400b9000 0x1000>; |
481 | interrupts = <44 IRQ_TYPE_LEVEL_HIGH>; | ||
423 | clock-names = "ftm-evt", "ftm-src", | 482 | clock-names = "ftm-evt", "ftm-src", |
424 | "ftm-evt-counter-en", "ftm-src-counter-en"; | 483 | "ftm-evt-counter-en", "ftm-src-counter-en"; |
425 | clocks = <&clks VF610_CLK_FTM2>, | 484 | clocks = <&clks VF610_CLK_FTM2>, |
@@ -432,6 +491,7 @@ | |||
432 | fec0: ethernet@400d0000 { | 491 | fec0: ethernet@400d0000 { |
433 | compatible = "fsl,mvf600-fec"; | 492 | compatible = "fsl,mvf600-fec"; |
434 | reg = <0x400d0000 0x1000>; | 493 | reg = <0x400d0000 0x1000>; |
494 | interrupts = <78 IRQ_TYPE_LEVEL_HIGH>; | ||
435 | clocks = <&clks VF610_CLK_ENET0>, | 495 | clocks = <&clks VF610_CLK_ENET0>, |
436 | <&clks VF610_CLK_ENET0>, | 496 | <&clks VF610_CLK_ENET0>, |
437 | <&clks VF610_CLK_ENET>; | 497 | <&clks VF610_CLK_ENET>; |
@@ -442,6 +502,7 @@ | |||
442 | fec1: ethernet@400d1000 { | 502 | fec1: ethernet@400d1000 { |
443 | compatible = "fsl,mvf600-fec"; | 503 | compatible = "fsl,mvf600-fec"; |
444 | reg = <0x400d1000 0x1000>; | 504 | reg = <0x400d1000 0x1000>; |
505 | interrupts = <79 IRQ_TYPE_LEVEL_HIGH>; | ||
445 | clocks = <&clks VF610_CLK_ENET1>, | 506 | clocks = <&clks VF610_CLK_ENET1>, |
446 | <&clks VF610_CLK_ENET1>, | 507 | <&clks VF610_CLK_ENET1>, |
447 | <&clks VF610_CLK_ENET>; | 508 | <&clks VF610_CLK_ENET>; |
@@ -452,6 +513,7 @@ | |||
452 | can1: flexcan@400d4000 { | 513 | can1: flexcan@400d4000 { |
453 | compatible = "fsl,vf610-flexcan"; | 514 | compatible = "fsl,vf610-flexcan"; |
454 | reg = <0x400d4000 0x4000>; | 515 | reg = <0x400d4000 0x4000>; |
516 | interrupts = <59 IRQ_TYPE_LEVEL_HIGH>; | ||
455 | clocks = <&clks VF610_CLK_FLEXCAN1>, | 517 | clocks = <&clks VF610_CLK_FLEXCAN1>, |
456 | <&clks VF610_CLK_FLEXCAN1>; | 518 | <&clks VF610_CLK_FLEXCAN1>; |
457 | clock-names = "ipg", "per"; | 519 | clock-names = "ipg", "per"; |
diff --git a/arch/arm/configs/imx_v4_v5_defconfig b/arch/arm/configs/imx_v4_v5_defconfig index e6b0007355f8..af07e058ba11 100644 --- a/arch/arm/configs/imx_v4_v5_defconfig +++ b/arch/arm/configs/imx_v4_v5_defconfig | |||
@@ -24,9 +24,8 @@ CONFIG_ARCH_MXC=y | |||
24 | CONFIG_MACH_SCB9328=y | 24 | CONFIG_MACH_SCB9328=y |
25 | CONFIG_MACH_APF9328=y | 25 | CONFIG_MACH_APF9328=y |
26 | CONFIG_MACH_MX21ADS=y | 26 | CONFIG_MACH_MX21ADS=y |
27 | CONFIG_MACH_MX25_3DS=y | ||
28 | CONFIG_MACH_EUKREA_CPUIMX25SD=y | 27 | CONFIG_MACH_EUKREA_CPUIMX25SD=y |
29 | CONFIG_MACH_IMX25_DT=y | 28 | CONFIG_SOC_IMX25=y |
30 | CONFIG_MACH_MX27ADS=y | 29 | CONFIG_MACH_MX27ADS=y |
31 | CONFIG_MACH_MX27_3DS=y | 30 | CONFIG_MACH_MX27_3DS=y |
32 | CONFIG_MACH_IMX27_VISSTRIM_M10=y | 31 | CONFIG_MACH_IMX27_VISSTRIM_M10=y |
diff --git a/arch/arm/configs/multi_v5_defconfig b/arch/arm/configs/multi_v5_defconfig index 9d56781a8f80..f69a459f4f92 100644 --- a/arch/arm/configs/multi_v5_defconfig +++ b/arch/arm/configs/multi_v5_defconfig | |||
@@ -13,7 +13,7 @@ CONFIG_ARCH_MVEBU=y | |||
13 | CONFIG_MACH_KIRKWOOD=y | 13 | CONFIG_MACH_KIRKWOOD=y |
14 | CONFIG_MACH_NETXBIG=y | 14 | CONFIG_MACH_NETXBIG=y |
15 | CONFIG_ARCH_MXC=y | 15 | CONFIG_ARCH_MXC=y |
16 | CONFIG_MACH_IMX25_DT=y | 16 | CONFIG_SOC_IMX25=y |
17 | CONFIG_MACH_IMX27_DT=y | 17 | CONFIG_MACH_IMX27_DT=y |
18 | CONFIG_ARCH_U300=y | 18 | CONFIG_ARCH_U300=y |
19 | CONFIG_PCI_MVEBU=y | 19 | CONFIG_PCI_MVEBU=y |
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig index e8a4c955241b..b7e6b6fba5e0 100644 --- a/arch/arm/configs/multi_v7_defconfig +++ b/arch/arm/configs/multi_v7_defconfig | |||
@@ -62,6 +62,17 @@ CONFIG_MACH_SPEAR1340=y | |||
62 | CONFIG_ARCH_STI=y | 62 | CONFIG_ARCH_STI=y |
63 | CONFIG_ARCH_EXYNOS=y | 63 | CONFIG_ARCH_EXYNOS=y |
64 | CONFIG_EXYNOS5420_MCPM=y | 64 | CONFIG_EXYNOS5420_MCPM=y |
65 | CONFIG_ARCH_SHMOBILE_MULTI=y | ||
66 | CONFIG_ARCH_EMEV2=y | ||
67 | CONFIG_ARCH_R7S72100=y | ||
68 | CONFIG_ARCH_R8A73A4=y | ||
69 | CONFIG_ARCH_R8A7740=y | ||
70 | CONFIG_ARCH_R8A7779=y | ||
71 | CONFIG_ARCH_R8A7790=y | ||
72 | CONFIG_ARCH_R8A7791=y | ||
73 | CONFIG_ARCH_R8A7794=y | ||
74 | CONFIG_ARCH_SH73A0=y | ||
75 | CONFIG_MACH_MARZEN=y | ||
65 | CONFIG_ARCH_SUNXI=y | 76 | CONFIG_ARCH_SUNXI=y |
66 | CONFIG_ARCH_SIRF=y | 77 | CONFIG_ARCH_SIRF=y |
67 | CONFIG_ARCH_TEGRA=y | 78 | CONFIG_ARCH_TEGRA=y |
@@ -84,6 +95,8 @@ CONFIG_PCI_KEYSTONE=y | |||
84 | CONFIG_PCI_MSI=y | 95 | CONFIG_PCI_MSI=y |
85 | CONFIG_PCI_MVEBU=y | 96 | CONFIG_PCI_MVEBU=y |
86 | CONFIG_PCI_TEGRA=y | 97 | CONFIG_PCI_TEGRA=y |
98 | CONFIG_PCI_RCAR_GEN2=y | ||
99 | CONFIG_PCI_RCAR_GEN2_PCIE=y | ||
87 | CONFIG_PCIEPORTBUS=y | 100 | CONFIG_PCIEPORTBUS=y |
88 | CONFIG_SMP=y | 101 | CONFIG_SMP=y |
89 | CONFIG_NR_CPUS=8 | 102 | CONFIG_NR_CPUS=8 |
@@ -130,6 +143,7 @@ CONFIG_DEVTMPFS_MOUNT=y | |||
130 | CONFIG_DMA_CMA=y | 143 | CONFIG_DMA_CMA=y |
131 | CONFIG_CMA_SIZE_MBYTES=64 | 144 | CONFIG_CMA_SIZE_MBYTES=64 |
132 | CONFIG_OMAP_OCP2SCP=y | 145 | CONFIG_OMAP_OCP2SCP=y |
146 | CONFIG_SIMPLE_PM_BUS=y | ||
133 | CONFIG_MTD=y | 147 | CONFIG_MTD=y |
134 | CONFIG_MTD_CMDLINE_PARTS=y | 148 | CONFIG_MTD_CMDLINE_PARTS=y |
135 | CONFIG_MTD_BLOCK=y | 149 | CONFIG_MTD_BLOCK=y |
@@ -157,6 +171,7 @@ CONFIG_AHCI_SUNXI=y | |||
157 | CONFIG_AHCI_TEGRA=y | 171 | CONFIG_AHCI_TEGRA=y |
158 | CONFIG_SATA_HIGHBANK=y | 172 | CONFIG_SATA_HIGHBANK=y |
159 | CONFIG_SATA_MV=y | 173 | CONFIG_SATA_MV=y |
174 | CONFIG_SATA_RCAR=y | ||
160 | CONFIG_NETDEVICES=y | 175 | CONFIG_NETDEVICES=y |
161 | CONFIG_HIX5HD2_GMAC=y | 176 | CONFIG_HIX5HD2_GMAC=y |
162 | CONFIG_SUN4I_EMAC=y | 177 | CONFIG_SUN4I_EMAC=y |
@@ -167,14 +182,17 @@ CONFIG_MV643XX_ETH=y | |||
167 | CONFIG_MVNETA=y | 182 | CONFIG_MVNETA=y |
168 | CONFIG_KS8851=y | 183 | CONFIG_KS8851=y |
169 | CONFIG_R8169=y | 184 | CONFIG_R8169=y |
185 | CONFIG_SH_ETH=y | ||
170 | CONFIG_SMSC911X=y | 186 | CONFIG_SMSC911X=y |
171 | CONFIG_STMMAC_ETH=y | 187 | CONFIG_STMMAC_ETH=y |
172 | CONFIG_TI_CPSW=y | 188 | CONFIG_TI_CPSW=y |
173 | CONFIG_XILINX_EMACLITE=y | 189 | CONFIG_XILINX_EMACLITE=y |
174 | CONFIG_AT803X_PHY=y | 190 | CONFIG_AT803X_PHY=y |
175 | CONFIG_MARVELL_PHY=y | 191 | CONFIG_MARVELL_PHY=y |
192 | CONFIG_SMSC_PHY=y | ||
176 | CONFIG_BROADCOM_PHY=y | 193 | CONFIG_BROADCOM_PHY=y |
177 | CONFIG_ICPLUS_PHY=y | 194 | CONFIG_ICPLUS_PHY=y |
195 | CONFIG_MICREL_PHY=y | ||
178 | CONFIG_USB_PEGASUS=y | 196 | CONFIG_USB_PEGASUS=y |
179 | CONFIG_USB_USBNET=y | 197 | CONFIG_USB_USBNET=y |
180 | CONFIG_USB_NET_SMSC75XX=y | 198 | CONFIG_USB_NET_SMSC75XX=y |
@@ -192,15 +210,18 @@ CONFIG_KEYBOARD_CROS_EC=y | |||
192 | CONFIG_MOUSE_PS2_ELANTECH=y | 210 | CONFIG_MOUSE_PS2_ELANTECH=y |
193 | CONFIG_INPUT_TOUCHSCREEN=y | 211 | CONFIG_INPUT_TOUCHSCREEN=y |
194 | CONFIG_TOUCHSCREEN_ATMEL_MXT=y | 212 | CONFIG_TOUCHSCREEN_ATMEL_MXT=y |
213 | CONFIG_TOUCHSCREEN_ST1232=m | ||
195 | CONFIG_TOUCHSCREEN_STMPE=y | 214 | CONFIG_TOUCHSCREEN_STMPE=y |
196 | CONFIG_TOUCHSCREEN_SUN4I=y | 215 | CONFIG_TOUCHSCREEN_SUN4I=y |
197 | CONFIG_INPUT_MISC=y | 216 | CONFIG_INPUT_MISC=y |
198 | CONFIG_INPUT_MPU3050=y | 217 | CONFIG_INPUT_MPU3050=y |
199 | CONFIG_INPUT_AXP20X_PEK=y | 218 | CONFIG_INPUT_AXP20X_PEK=y |
219 | CONFIG_INPUT_ADXL34X=m | ||
200 | CONFIG_SERIO_AMBAKMI=y | 220 | CONFIG_SERIO_AMBAKMI=y |
201 | CONFIG_SERIAL_8250=y | 221 | CONFIG_SERIAL_8250=y |
202 | CONFIG_SERIAL_8250_CONSOLE=y | 222 | CONFIG_SERIAL_8250_CONSOLE=y |
203 | CONFIG_SERIAL_8250_DW=y | 223 | CONFIG_SERIAL_8250_DW=y |
224 | CONFIG_SERIAL_8250_EM=y | ||
204 | CONFIG_SERIAL_8250_MT6577=y | 225 | CONFIG_SERIAL_8250_MT6577=y |
205 | CONFIG_SERIAL_AMBA_PL011=y | 226 | CONFIG_SERIAL_AMBA_PL011=y |
206 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y | 227 | CONFIG_SERIAL_AMBA_PL011_CONSOLE=y |
@@ -213,6 +234,9 @@ CONFIG_SERIAL_SIRFSOC_CONSOLE=y | |||
213 | CONFIG_SERIAL_TEGRA=y | 234 | CONFIG_SERIAL_TEGRA=y |
214 | CONFIG_SERIAL_IMX=y | 235 | CONFIG_SERIAL_IMX=y |
215 | CONFIG_SERIAL_IMX_CONSOLE=y | 236 | CONFIG_SERIAL_IMX_CONSOLE=y |
237 | CONFIG_SERIAL_SH_SCI=y | ||
238 | CONFIG_SERIAL_SH_SCI_NR_UARTS=20 | ||
239 | CONFIG_SERIAL_SH_SCI_CONSOLE=y | ||
216 | CONFIG_SERIAL_MSM=y | 240 | CONFIG_SERIAL_MSM=y |
217 | CONFIG_SERIAL_MSM_CONSOLE=y | 241 | CONFIG_SERIAL_MSM_CONSOLE=y |
218 | CONFIG_SERIAL_VT8500=y | 242 | CONFIG_SERIAL_VT8500=y |
@@ -233,19 +257,26 @@ CONFIG_I2C_MUX_PCA954x=y | |||
233 | CONFIG_I2C_MUX_PINCTRL=y | 257 | CONFIG_I2C_MUX_PINCTRL=y |
234 | CONFIG_I2C_CADENCE=y | 258 | CONFIG_I2C_CADENCE=y |
235 | CONFIG_I2C_DESIGNWARE_PLATFORM=y | 259 | CONFIG_I2C_DESIGNWARE_PLATFORM=y |
260 | CONFIG_I2C_GPIO=m | ||
236 | CONFIG_I2C_EXYNOS5=y | 261 | CONFIG_I2C_EXYNOS5=y |
237 | CONFIG_I2C_MV64XXX=y | 262 | CONFIG_I2C_MV64XXX=y |
263 | CONFIG_I2C_RIIC=y | ||
238 | CONFIG_I2C_S3C2410=y | 264 | CONFIG_I2C_S3C2410=y |
265 | CONFIG_I2C_SH_MOBILE=y | ||
239 | CONFIG_I2C_SIRF=y | 266 | CONFIG_I2C_SIRF=y |
240 | CONFIG_I2C_TEGRA=y | ||
241 | CONFIG_I2C_ST=y | 267 | CONFIG_I2C_ST=y |
242 | CONFIG_SPI=y | 268 | CONFIG_I2C_TEGRA=y |
243 | CONFIG_I2C_XILINX=y | 269 | CONFIG_I2C_XILINX=y |
244 | CONFIG_SPI_DAVINCI=y | 270 | CONFIG_I2C_RCAR=y |
271 | CONFIG_SPI=y | ||
245 | CONFIG_SPI_CADENCE=y | 272 | CONFIG_SPI_CADENCE=y |
273 | CONFIG_SPI_DAVINCI=y | ||
246 | CONFIG_SPI_OMAP24XX=y | 274 | CONFIG_SPI_OMAP24XX=y |
247 | CONFIG_SPI_ORION=y | 275 | CONFIG_SPI_ORION=y |
248 | CONFIG_SPI_PL022=y | 276 | CONFIG_SPI_PL022=y |
277 | CONFIG_SPI_RSPI=y | ||
278 | CONFIG_SPI_SH_MSIOF=m | ||
279 | CONFIG_SPI_SH_HSPI=y | ||
249 | CONFIG_SPI_SIRF=y | 280 | CONFIG_SPI_SIRF=y |
250 | CONFIG_SPI_SUN4I=y | 281 | CONFIG_SPI_SUN4I=y |
251 | CONFIG_SPI_SUN6I=y | 282 | CONFIG_SPI_SUN6I=y |
@@ -259,12 +290,15 @@ CONFIG_PINCTRL_PALMAS=y | |||
259 | CONFIG_PINCTRL_APQ8084=y | 290 | CONFIG_PINCTRL_APQ8084=y |
260 | CONFIG_GPIO_SYSFS=y | 291 | CONFIG_GPIO_SYSFS=y |
261 | CONFIG_GPIO_GENERIC_PLATFORM=y | 292 | CONFIG_GPIO_GENERIC_PLATFORM=y |
262 | CONFIG_GPIO_DWAPB=y | ||
263 | CONFIG_GPIO_DAVINCI=y | 293 | CONFIG_GPIO_DAVINCI=y |
294 | CONFIG_GPIO_DWAPB=y | ||
295 | CONFIG_GPIO_EM=y | ||
296 | CONFIG_GPIO_RCAR=y | ||
264 | CONFIG_GPIO_XILINX=y | 297 | CONFIG_GPIO_XILINX=y |
265 | CONFIG_GPIO_ZYNQ=y | 298 | CONFIG_GPIO_ZYNQ=y |
266 | CONFIG_GPIO_PCA953X=y | 299 | CONFIG_GPIO_PCA953X=y |
267 | CONFIG_GPIO_PCA953X_IRQ=y | 300 | CONFIG_GPIO_PCA953X_IRQ=y |
301 | CONFIG_GPIO_PCF857X=y | ||
268 | CONFIG_GPIO_TWL4030=y | 302 | CONFIG_GPIO_TWL4030=y |
269 | CONFIG_GPIO_PALMAS=y | 303 | CONFIG_GPIO_PALMAS=y |
270 | CONFIG_GPIO_SYSCON=y | 304 | CONFIG_GPIO_SYSCON=y |
@@ -276,10 +310,12 @@ CONFIG_POWER_RESET_AS3722=y | |||
276 | CONFIG_POWER_RESET_GPIO=y | 310 | CONFIG_POWER_RESET_GPIO=y |
277 | CONFIG_POWER_RESET_KEYSTONE=y | 311 | CONFIG_POWER_RESET_KEYSTONE=y |
278 | CONFIG_POWER_RESET_SUN6I=y | 312 | CONFIG_POWER_RESET_SUN6I=y |
313 | CONFIG_POWER_RESET_RMOBILE=y | ||
279 | CONFIG_SENSORS_LM90=y | 314 | CONFIG_SENSORS_LM90=y |
280 | CONFIG_SENSORS_LM95245=y | 315 | CONFIG_SENSORS_LM95245=y |
281 | CONFIG_THERMAL=y | 316 | CONFIG_THERMAL=y |
282 | CONFIG_CPU_THERMAL=y | 317 | CONFIG_CPU_THERMAL=y |
318 | CONFIG_RCAR_THERMAL=y | ||
283 | CONFIG_ARMADA_THERMAL=y | 319 | CONFIG_ARMADA_THERMAL=y |
284 | CONFIG_DAVINCI_WATCHDOG | 320 | CONFIG_DAVINCI_WATCHDOG |
285 | CONFIG_ST_THERMAL_SYSCFG=y | 321 | CONFIG_ST_THERMAL_SYSCFG=y |
@@ -290,6 +326,7 @@ CONFIG_ARM_SP805_WATCHDOG=y | |||
290 | CONFIG_ORION_WATCHDOG=y | 326 | CONFIG_ORION_WATCHDOG=y |
291 | CONFIG_SUNXI_WATCHDOG=y | 327 | CONFIG_SUNXI_WATCHDOG=y |
292 | CONFIG_MESON_WATCHDOG=y | 328 | CONFIG_MESON_WATCHDOG=y |
329 | CONFIG_MFD_AS3711=y | ||
293 | CONFIG_MFD_AS3722=y | 330 | CONFIG_MFD_AS3722=y |
294 | CONFIG_MFD_BCM590XX=y | 331 | CONFIG_MFD_BCM590XX=y |
295 | CONFIG_MFD_AXP20X=y | 332 | CONFIG_MFD_AXP20X=y |
@@ -304,13 +341,16 @@ CONFIG_MFD_TPS65090=y | |||
304 | CONFIG_MFD_TPS6586X=y | 341 | CONFIG_MFD_TPS6586X=y |
305 | CONFIG_MFD_TPS65910=y | 342 | CONFIG_MFD_TPS65910=y |
306 | CONFIG_REGULATOR_AB8500=y | 343 | CONFIG_REGULATOR_AB8500=y |
344 | CONFIG_REGULATOR_AS3711=y | ||
307 | CONFIG_REGULATOR_AS3722=y | 345 | CONFIG_REGULATOR_AS3722=y |
308 | CONFIG_REGULATOR_AXP20X=y | 346 | CONFIG_REGULATOR_AXP20X=y |
309 | CONFIG_REGULATOR_BCM590XX=y | 347 | CONFIG_REGULATOR_BCM590XX=y |
348 | CONFIG_REGULATOR_DA9210=y | ||
310 | CONFIG_REGULATOR_GPIO=y | 349 | CONFIG_REGULATOR_GPIO=y |
311 | CONFIG_MFD_SYSCON=y | 350 | CONFIG_MFD_SYSCON=y |
312 | CONFIG_POWER_RESET_SYSCON=y | 351 | CONFIG_POWER_RESET_SYSCON=y |
313 | CONFIG_REGULATOR_MAX8907=y | 352 | CONFIG_REGULATOR_MAX8907=y |
353 | CONFIG_REGULATOR_MAX8973=y | ||
314 | CONFIG_REGULATOR_MAX77686=y | 354 | CONFIG_REGULATOR_MAX77686=y |
315 | CONFIG_REGULATOR_PALMAS=y | 355 | CONFIG_REGULATOR_PALMAS=y |
316 | CONFIG_REGULATOR_S2MPS11=y | 356 | CONFIG_REGULATOR_S2MPS11=y |
@@ -324,18 +364,32 @@ CONFIG_REGULATOR_TWL4030=y | |||
324 | CONFIG_REGULATOR_VEXPRESS=y | 364 | CONFIG_REGULATOR_VEXPRESS=y |
325 | CONFIG_MEDIA_SUPPORT=y | 365 | CONFIG_MEDIA_SUPPORT=y |
326 | CONFIG_MEDIA_CAMERA_SUPPORT=y | 366 | CONFIG_MEDIA_CAMERA_SUPPORT=y |
367 | CONFIG_MEDIA_CONTROLLER=y | ||
368 | CONFIG_VIDEO_V4L2_SUBDEV_API=y | ||
327 | CONFIG_MEDIA_USB_SUPPORT=y | 369 | CONFIG_MEDIA_USB_SUPPORT=y |
328 | CONFIG_USB_VIDEO_CLASS=y | 370 | CONFIG_USB_VIDEO_CLASS=y |
329 | CONFIG_USB_GSPCA=y | 371 | CONFIG_USB_GSPCA=y |
372 | CONFIG_V4L_PLATFORM_DRIVERS=y | ||
373 | CONFIG_SOC_CAMERA=m | ||
374 | CONFIG_SOC_CAMERA_PLATFORM=m | ||
375 | CONFIG_VIDEO_RCAR_VIN=m | ||
376 | CONFIG_V4L_MEM2MEM_DRIVERS=y | ||
377 | CONFIG_VIDEO_RENESAS_VSP1=m | ||
378 | # CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set | ||
379 | CONFIG_VIDEO_ADV7180=m | ||
330 | CONFIG_DRM=y | 380 | CONFIG_DRM=y |
381 | CONFIG_DRM_RCAR_DU=m | ||
331 | CONFIG_DRM_TEGRA=y | 382 | CONFIG_DRM_TEGRA=y |
332 | CONFIG_DRM_PANEL_SIMPLE=y | 383 | CONFIG_DRM_PANEL_SIMPLE=y |
333 | CONFIG_FB_ARMCLCD=y | 384 | CONFIG_FB_ARMCLCD=y |
334 | CONFIG_FB_WM8505=y | 385 | CONFIG_FB_WM8505=y |
386 | CONFIG_FB_SH_MOBILE_LCDC=y | ||
335 | CONFIG_FB_SIMPLE=y | 387 | CONFIG_FB_SIMPLE=y |
388 | CONFIG_FB_SH_MOBILE_MERAM=y | ||
336 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | 389 | CONFIG_BACKLIGHT_LCD_SUPPORT=y |
337 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | 390 | CONFIG_BACKLIGHT_CLASS_DEVICE=y |
338 | CONFIG_BACKLIGHT_PWM=y | 391 | CONFIG_BACKLIGHT_PWM=y |
392 | CONFIG_BACKLIGHT_AS3711=y | ||
339 | CONFIG_FRAMEBUFFER_CONSOLE=y | 393 | CONFIG_FRAMEBUFFER_CONSOLE=y |
340 | CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y | 394 | CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y |
341 | CONFIG_SOUND=y | 395 | CONFIG_SOUND=y |
@@ -343,6 +397,8 @@ CONFIG_SND=y | |||
343 | CONFIG_SND_DYNAMIC_MINORS=y | 397 | CONFIG_SND_DYNAMIC_MINORS=y |
344 | CONFIG_SND_USB_AUDIO=y | 398 | CONFIG_SND_USB_AUDIO=y |
345 | CONFIG_SND_SOC=y | 399 | CONFIG_SND_SOC=y |
400 | CONFIG_SND_SOC_SH4_FSI=m | ||
401 | CONFIG_SND_SOC_RCAR=m | ||
346 | CONFIG_SND_SOC_TEGRA=y | 402 | CONFIG_SND_SOC_TEGRA=y |
347 | CONFIG_SND_SOC_TEGRA_RT5640=y | 403 | CONFIG_SND_SOC_TEGRA_RT5640=y |
348 | CONFIG_SND_SOC_TEGRA_WM8753=y | 404 | CONFIG_SND_SOC_TEGRA_WM8753=y |
@@ -350,6 +406,8 @@ CONFIG_SND_SOC_TEGRA_WM8903=y | |||
350 | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y | 406 | CONFIG_SND_SOC_TEGRA_TRIMSLICE=y |
351 | CONFIG_SND_SOC_TEGRA_ALC5632=y | 407 | CONFIG_SND_SOC_TEGRA_ALC5632=y |
352 | CONFIG_SND_SOC_TEGRA_MAX98090=y | 408 | CONFIG_SND_SOC_TEGRA_MAX98090=y |
409 | CONFIG_SND_SOC_AK4642=m | ||
410 | CONFIG_SND_SOC_WM8978=m | ||
353 | CONFIG_USB=y | 411 | CONFIG_USB=y |
354 | CONFIG_USB_XHCI_HCD=y | 412 | CONFIG_USB_XHCI_HCD=y |
355 | CONFIG_USB_XHCI_MVEBU=y | 413 | CONFIG_USB_XHCI_MVEBU=y |
@@ -362,6 +420,8 @@ CONFIG_USB_ISP1760_HCD=y | |||
362 | CONFIG_USB_OHCI_HCD=y | 420 | CONFIG_USB_OHCI_HCD=y |
363 | CONFIG_USB_OHCI_HCD_STI=y | 421 | CONFIG_USB_OHCI_HCD_STI=y |
364 | CONFIG_USB_OHCI_HCD_PLATFORM=y | 422 | CONFIG_USB_OHCI_HCD_PLATFORM=y |
423 | CONFIG_USB_R8A66597_HCD=m | ||
424 | CONFIG_USB_RENESAS_USBHS=m | ||
365 | CONFIG_USB_STORAGE=y | 425 | CONFIG_USB_STORAGE=y |
366 | CONFIG_USB_DWC3=y | 426 | CONFIG_USB_DWC3=y |
367 | CONFIG_USB_CHIPIDEA=y | 427 | CONFIG_USB_CHIPIDEA=y |
@@ -374,6 +434,10 @@ CONFIG_SAMSUNG_USB3PHY=y | |||
374 | CONFIG_USB_GPIO_VBUS=y | 434 | CONFIG_USB_GPIO_VBUS=y |
375 | CONFIG_USB_ISP1301=y | 435 | CONFIG_USB_ISP1301=y |
376 | CONFIG_USB_MXS_PHY=y | 436 | CONFIG_USB_MXS_PHY=y |
437 | CONFIG_USB_RCAR_PHY=m | ||
438 | CONFIG_USB_RCAR_GEN2_PHY=m | ||
439 | CONFIG_USB_GADGET=y | ||
440 | CONFIG_USB_RENESAS_USBHS_UDC=m | ||
377 | CONFIG_MMC=y | 441 | CONFIG_MMC=y |
378 | CONFIG_MMC_BLOCK_MINORS=16 | 442 | CONFIG_MMC_BLOCK_MINORS=16 |
379 | CONFIG_MMC_ARMMMCI=y | 443 | CONFIG_MMC_ARMMMCI=y |
@@ -392,12 +456,14 @@ CONFIG_MMC_SDHCI_ST=y | |||
392 | CONFIG_MMC_OMAP=y | 456 | CONFIG_MMC_OMAP=y |
393 | CONFIG_MMC_OMAP_HS=y | 457 | CONFIG_MMC_OMAP_HS=y |
394 | CONFIG_MMC_MVSDIO=y | 458 | CONFIG_MMC_MVSDIO=y |
395 | CONFIG_MMC_SUNXI=y | 459 | CONFIG_MMC_SDHI=y |
396 | CONFIG_MMC_DW=y | 460 | CONFIG_MMC_DW=y |
397 | CONFIG_MMC_DW_IDMAC=y | 461 | CONFIG_MMC_DW_IDMAC=y |
398 | CONFIG_MMC_DW_PLTFM=y | 462 | CONFIG_MMC_DW_PLTFM=y |
399 | CONFIG_MMC_DW_EXYNOS=y | 463 | CONFIG_MMC_DW_EXYNOS=y |
400 | CONFIG_MMC_DW_ROCKCHIP=y | 464 | CONFIG_MMC_DW_ROCKCHIP=y |
465 | CONFIG_MMC_SH_MMCIF=y | ||
466 | CONFIG_MMC_SUNXI=y | ||
401 | CONFIG_NEW_LEDS=y | 467 | CONFIG_NEW_LEDS=y |
402 | CONFIG_LEDS_CLASS=y | 468 | CONFIG_LEDS_CLASS=y |
403 | CONFIG_LEDS_GPIO=y | 469 | CONFIG_LEDS_GPIO=y |
@@ -421,10 +487,12 @@ CONFIG_RTC_DRV_AS3722=y | |||
421 | CONFIG_RTC_DRV_DS1307=y | 487 | CONFIG_RTC_DRV_DS1307=y |
422 | CONFIG_RTC_DRV_MAX8907=y | 488 | CONFIG_RTC_DRV_MAX8907=y |
423 | CONFIG_RTC_DRV_MAX77686=y | 489 | CONFIG_RTC_DRV_MAX77686=y |
490 | CONFIG_RTC_DRV_RS5C372=m | ||
424 | CONFIG_RTC_DRV_PALMAS=y | 491 | CONFIG_RTC_DRV_PALMAS=y |
425 | CONFIG_RTC_DRV_TWL4030=y | 492 | CONFIG_RTC_DRV_TWL4030=y |
426 | CONFIG_RTC_DRV_TPS6586X=y | 493 | CONFIG_RTC_DRV_TPS6586X=y |
427 | CONFIG_RTC_DRV_TPS65910=y | 494 | CONFIG_RTC_DRV_TPS65910=y |
495 | CONFIG_RTC_DRV_S35390A=m | ||
428 | CONFIG_RTC_DRV_EM3027=y | 496 | CONFIG_RTC_DRV_EM3027=y |
429 | CONFIG_RTC_DRV_PL031=y | 497 | CONFIG_RTC_DRV_PL031=y |
430 | CONFIG_RTC_DRV_VT8500=y | 498 | CONFIG_RTC_DRV_VT8500=y |
@@ -436,6 +504,9 @@ CONFIG_DMADEVICES=y | |||
436 | CONFIG_DW_DMAC=y | 504 | CONFIG_DW_DMAC=y |
437 | CONFIG_MV_XOR=y | 505 | CONFIG_MV_XOR=y |
438 | CONFIG_TEGRA20_APB_DMA=y | 506 | CONFIG_TEGRA20_APB_DMA=y |
507 | CONFIG_SH_DMAE=y | ||
508 | CONFIG_RCAR_AUDMAC_PP=m | ||
509 | CONFIG_RCAR_DMAC=y | ||
439 | CONFIG_STE_DMA40=y | 510 | CONFIG_STE_DMA40=y |
440 | CONFIG_SIRF_DMA=y | 511 | CONFIG_SIRF_DMA=y |
441 | CONFIG_TI_EDMA=y | 512 | CONFIG_TI_EDMA=y |
@@ -468,6 +539,7 @@ CONFIG_IIO=y | |||
468 | CONFIG_XILINX_XADC=y | 539 | CONFIG_XILINX_XADC=y |
469 | CONFIG_AK8975=y | 540 | CONFIG_AK8975=y |
470 | CONFIG_PWM=y | 541 | CONFIG_PWM=y |
542 | CONFIG_PWM_RENESAS_TPU=y | ||
471 | CONFIG_PWM_TEGRA=y | 543 | CONFIG_PWM_TEGRA=y |
472 | CONFIG_PWM_VT8500=y | 544 | CONFIG_PWM_VT8500=y |
473 | CONFIG_PHY_HIX5HD2_SATA=y | 545 | CONFIG_PHY_HIX5HD2_SATA=y |
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig index b7386524c356..a097cffa1231 100644 --- a/arch/arm/configs/omap2plus_defconfig +++ b/arch/arm/configs/omap2plus_defconfig | |||
@@ -114,6 +114,7 @@ CONFIG_MTD_PHYSMAP_OF=y | |||
114 | CONFIG_MTD_NAND=y | 114 | CONFIG_MTD_NAND=y |
115 | CONFIG_MTD_NAND_ECC_BCH=y | 115 | CONFIG_MTD_NAND_ECC_BCH=y |
116 | CONFIG_MTD_NAND_OMAP2=y | 116 | CONFIG_MTD_NAND_OMAP2=y |
117 | CONFIG_MTD_NAND_OMAP_BCH=y | ||
117 | CONFIG_MTD_ONENAND=y | 118 | CONFIG_MTD_ONENAND=y |
118 | CONFIG_MTD_ONENAND_VERIFY_WRITE=y | 119 | CONFIG_MTD_ONENAND_VERIFY_WRITE=y |
119 | CONFIG_MTD_ONENAND_OMAP2=y | 120 | CONFIG_MTD_ONENAND_OMAP2=y |
@@ -248,6 +249,7 @@ CONFIG_TWL6040_CORE=y | |||
248 | CONFIG_REGULATOR_PALMAS=y | 249 | CONFIG_REGULATOR_PALMAS=y |
249 | CONFIG_REGULATOR_PBIAS=y | 250 | CONFIG_REGULATOR_PBIAS=y |
250 | CONFIG_REGULATOR_TI_ABB=y | 251 | CONFIG_REGULATOR_TI_ABB=y |
252 | CONFIG_REGULATOR_TPS62360=m | ||
251 | CONFIG_REGULATOR_TPS65023=y | 253 | CONFIG_REGULATOR_TPS65023=y |
252 | CONFIG_REGULATOR_TPS6507X=y | 254 | CONFIG_REGULATOR_TPS6507X=y |
253 | CONFIG_REGULATOR_TPS65217=y | 255 | CONFIG_REGULATOR_TPS65217=y |
@@ -374,7 +376,7 @@ CONFIG_PWM_TIEHRPWM=m | |||
374 | CONFIG_PWM_TWL=m | 376 | CONFIG_PWM_TWL=m |
375 | CONFIG_PWM_TWL_LED=m | 377 | CONFIG_PWM_TWL_LED=m |
376 | CONFIG_OMAP_USB2=m | 378 | CONFIG_OMAP_USB2=m |
377 | CONFIG_TI_PIPE3=m | 379 | CONFIG_TI_PIPE3=y |
378 | CONFIG_EXT2_FS=y | 380 | CONFIG_EXT2_FS=y |
379 | CONFIG_EXT3_FS=y | 381 | CONFIG_EXT3_FS=y |
380 | # CONFIG_EXT3_FS_XATTR is not set | 382 | # CONFIG_EXT3_FS_XATTR is not set |
diff --git a/arch/arm/mach-asm9260/Kconfig b/arch/arm/mach-asm9260/Kconfig index 8423be76080e..52241207a82a 100644 --- a/arch/arm/mach-asm9260/Kconfig +++ b/arch/arm/mach-asm9260/Kconfig | |||
@@ -2,5 +2,7 @@ config MACH_ASM9260 | |||
2 | bool "Alphascale ASM9260" | 2 | bool "Alphascale ASM9260" |
3 | depends on ARCH_MULTI_V5 | 3 | depends on ARCH_MULTI_V5 |
4 | select CPU_ARM926T | 4 | select CPU_ARM926T |
5 | select ASM9260_TIMER | ||
6 | select GENERIC_CLOCKEVENTS | ||
5 | help | 7 | help |
6 | Support for Alphascale ASM9260 based platform. | 8 | Support for Alphascale ASM9260 based platform. |
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index e8627e04e1e6..3a3d3e9d7bfd 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig | |||
@@ -21,6 +21,7 @@ config MXC_AVIC | |||
21 | 21 | ||
22 | config MXC_DEBUG_BOARD | 22 | config MXC_DEBUG_BOARD |
23 | bool "Enable MXC debug board(for 3-stack)" | 23 | bool "Enable MXC debug board(for 3-stack)" |
24 | depends on MACH_MX27_3DS || MACH_MX31_3DS || MACH_MX35_3DS | ||
24 | help | 25 | help |
25 | The debug board is an integral part of the MXC 3-stack(PDK) | 26 | The debug board is an integral part of the MXC 3-stack(PDK) |
26 | platforms, it can be attached or removed from the peripheral | 27 | platforms, it can be attached or removed from the peripheral |
@@ -50,6 +51,7 @@ config HAVE_IMX_ANATOP | |||
50 | 51 | ||
51 | config HAVE_IMX_GPC | 52 | config HAVE_IMX_GPC |
52 | bool | 53 | bool |
54 | select PM_GENERIC_DOMAINS if PM | ||
53 | 55 | ||
54 | config HAVE_IMX_MMDC | 56 | config HAVE_IMX_MMDC |
55 | bool | 57 | bool |
@@ -77,13 +79,6 @@ config SOC_IMX21 | |||
77 | select IMX_HAVE_IOMUX_V1 | 79 | select IMX_HAVE_IOMUX_V1 |
78 | select MXC_AVIC | 80 | select MXC_AVIC |
79 | 81 | ||
80 | config SOC_IMX25 | ||
81 | bool | ||
82 | select ARCH_MXC_IOMUX_V3 | ||
83 | select CPU_ARM926T | ||
84 | select MXC_AVIC | ||
85 | select PINCTRL_IMX25 | ||
86 | |||
87 | config SOC_IMX27 | 82 | config SOC_IMX27 |
88 | bool | 83 | bool |
89 | select CPU_ARM926T | 84 | select CPU_ARM926T |
@@ -149,62 +144,6 @@ config MACH_MX21ADS | |||
149 | Include support for MX21ADS platform. This includes specific | 144 | Include support for MX21ADS platform. This includes specific |
150 | configurations for the board and its peripherals. | 145 | configurations for the board and its peripherals. |
151 | 146 | ||
152 | comment "MX25 platforms:" | ||
153 | |||
154 | config MACH_MX25_3DS | ||
155 | bool "Support MX25PDK (3DS) Platform" | ||
156 | select IMX_HAVE_PLATFORM_FLEXCAN | ||
157 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC | ||
158 | select IMX_HAVE_PLATFORM_IMX2_WDT | ||
159 | select IMX_HAVE_PLATFORM_IMXDI_RTC | ||
160 | select IMX_HAVE_PLATFORM_IMX_FB | ||
161 | select IMX_HAVE_PLATFORM_IMX_I2C | ||
162 | select IMX_HAVE_PLATFORM_IMX_KEYPAD | ||
163 | select IMX_HAVE_PLATFORM_IMX_UART | ||
164 | select IMX_HAVE_PLATFORM_MXC_EHCI | ||
165 | select IMX_HAVE_PLATFORM_MXC_NAND | ||
166 | select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX | ||
167 | select SOC_IMX25 | ||
168 | |||
169 | config MACH_EUKREA_CPUIMX25SD | ||
170 | bool "Support Eukrea CPUIMX25 Platform" | ||
171 | select IMX_HAVE_PLATFORM_FLEXCAN | ||
172 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC | ||
173 | select IMX_HAVE_PLATFORM_IMX2_WDT | ||
174 | select IMX_HAVE_PLATFORM_IMXDI_RTC | ||
175 | select IMX_HAVE_PLATFORM_IMX_FB | ||
176 | select IMX_HAVE_PLATFORM_IMX_I2C | ||
177 | select IMX_HAVE_PLATFORM_IMX_UART | ||
178 | select IMX_HAVE_PLATFORM_MXC_EHCI | ||
179 | select IMX_HAVE_PLATFORM_MXC_NAND | ||
180 | select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX | ||
181 | select USB_ULPI_VIEWPORT if USB_ULPI | ||
182 | select SOC_IMX25 | ||
183 | |||
184 | choice | ||
185 | prompt "Baseboard" | ||
186 | depends on MACH_EUKREA_CPUIMX25SD | ||
187 | default MACH_EUKREA_MBIMXSD25_BASEBOARD | ||
188 | |||
189 | config MACH_EUKREA_MBIMXSD25_BASEBOARD | ||
190 | bool "Eukrea MBIMXSD development board" | ||
191 | select IMX_HAVE_PLATFORM_GPIO_KEYS | ||
192 | select IMX_HAVE_PLATFORM_IMX_SSI | ||
193 | select IMX_HAVE_PLATFORM_SPI_IMX | ||
194 | select LEDS_GPIO_REGISTER | ||
195 | help | ||
196 | This adds board specific devices that can be found on Eukrea's | ||
197 | MBIMXSD evaluation board. | ||
198 | |||
199 | endchoice | ||
200 | |||
201 | config MACH_IMX25_DT | ||
202 | bool "Support i.MX25 platforms from device tree" | ||
203 | select SOC_IMX25 | ||
204 | help | ||
205 | Include support for Freescale i.MX25 based platforms | ||
206 | using the device tree for discovery | ||
207 | |||
208 | comment "MX27 platforms:" | 147 | comment "MX27 platforms:" |
209 | 148 | ||
210 | config MACH_MX27ADS | 149 | config MACH_MX27ADS |
@@ -557,6 +496,20 @@ config MACH_VPR200 | |||
557 | 496 | ||
558 | endif | 497 | endif |
559 | 498 | ||
499 | if ARCH_MULTI_V5 | ||
500 | |||
501 | comment "Device tree only" | ||
502 | |||
503 | config SOC_IMX25 | ||
504 | bool "i.MX25 support" | ||
505 | select ARCH_MXC_IOMUX_V3 | ||
506 | select CPU_ARM926T | ||
507 | select MXC_AVIC | ||
508 | select PINCTRL_IMX25 | ||
509 | help | ||
510 | This enables support for Freescale i.MX25 processor | ||
511 | endif | ||
512 | |||
560 | if ARCH_MULTI_V7 | 513 | if ARCH_MULTI_V7 |
561 | 514 | ||
562 | comment "Device tree only" | 515 | comment "Device tree only" |
@@ -631,12 +584,14 @@ config SOC_IMX6SX | |||
631 | 584 | ||
632 | config SOC_VF610 | 585 | config SOC_VF610 |
633 | bool "Vybrid Family VF610 support" | 586 | bool "Vybrid Family VF610 support" |
587 | select IRQ_DOMAIN_HIERARCHY | ||
634 | select ARM_GIC | 588 | select ARM_GIC |
635 | select PINCTRL_VF610 | 589 | select PINCTRL_VF610 |
636 | select PL310_ERRATA_769419 if CACHE_L2X0 | 590 | select PL310_ERRATA_769419 if CACHE_L2X0 |
591 | select SMP_ON_UP if SMP | ||
637 | 592 | ||
638 | help | 593 | help |
639 | This enable support for Freescale Vybrid VF610 processor. | 594 | This enables support for Freescale Vybrid VF610 processor. |
640 | 595 | ||
641 | choice | 596 | choice |
642 | prompt "Clocksource for scheduler clock" | 597 | prompt "Clocksource for scheduler clock" |
@@ -666,7 +621,7 @@ config SOC_LS1021A | |||
666 | select ZONE_DMA if ARM_LPAE | 621 | select ZONE_DMA if ARM_LPAE |
667 | 622 | ||
668 | help | 623 | help |
669 | This enable support for Freescale LS1021A processor. | 624 | This enables support for Freescale LS1021A processor. |
670 | 625 | ||
671 | endif | 626 | endif |
672 | 627 | ||
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 8d1b10180908..3244cf1d2773 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile | |||
@@ -3,7 +3,7 @@ obj-y := time.o cpu.o system.o irq-common.o | |||
3 | obj-$(CONFIG_SOC_IMX1) += clk-imx1.o mm-imx1.o | 3 | obj-$(CONFIG_SOC_IMX1) += clk-imx1.o mm-imx1.o |
4 | obj-$(CONFIG_SOC_IMX21) += clk-imx21.o mm-imx21.o | 4 | obj-$(CONFIG_SOC_IMX21) += clk-imx21.o mm-imx21.o |
5 | 5 | ||
6 | obj-$(CONFIG_SOC_IMX25) += clk-imx25.o mm-imx25.o ehci-imx25.o cpu-imx25.o | 6 | obj-$(CONFIG_SOC_IMX25) += clk-imx25.o cpu-imx25.o mach-imx25.o |
7 | 7 | ||
8 | obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o | 8 | obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o |
9 | obj-$(CONFIG_SOC_IMX27) += clk-imx27.o mm-imx27.o ehci-imx27.o | 9 | obj-$(CONFIG_SOC_IMX27) += clk-imx27.o mm-imx27.o ehci-imx27.o |
@@ -48,12 +48,6 @@ obj-$(CONFIG_MACH_IMX1_DT) += imx1-dt.o | |||
48 | # i.MX21 based machines | 48 | # i.MX21 based machines |
49 | obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o | 49 | obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o |
50 | 50 | ||
51 | # i.MX25 based machines | ||
52 | obj-$(CONFIG_MACH_MX25_3DS) += mach-mx25_3ds.o | ||
53 | obj-$(CONFIG_MACH_EUKREA_CPUIMX25SD) += mach-eukrea_cpuimx25.o | ||
54 | obj-$(CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD) += eukrea_mbimxsd25-baseboard.o | ||
55 | obj-$(CONFIG_MACH_IMX25_DT) += imx25-dt.o | ||
56 | |||
57 | # i.MX27 based machines | 51 | # i.MX27 based machines |
58 | obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o | 52 | obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o |
59 | obj-$(CONFIG_MACH_MX27_3DS) += mach-mx27_3ds.o | 53 | obj-$(CONFIG_MACH_MX27_3DS) += mach-mx27_3ds.o |
diff --git a/arch/arm/mach-imx/clk-imx25.c b/arch/arm/mach-imx/clk-imx25.c index 59c0c8558c6b..9c2633a9de9f 100644 --- a/arch/arm/mach-imx/clk-imx25.c +++ b/arch/arm/mach-imx/clk-imx25.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include "clk.h" | 30 | #include "clk.h" |
31 | #include "common.h" | 31 | #include "common.h" |
32 | #include "hardware.h" | 32 | #include "hardware.h" |
33 | #include "mx25.h" | ||
34 | 33 | ||
35 | #define CCM_MPCTL 0x00 | 34 | #define CCM_MPCTL 0x00 |
36 | #define CCM_UPCTL 0x04 | 35 | #define CCM_UPCTL 0x04 |
@@ -239,80 +238,6 @@ static int __init __mx25_clocks_init(unsigned long osc_rate, | |||
239 | return 0; | 238 | return 0; |
240 | } | 239 | } |
241 | 240 | ||
242 | int __init mx25_clocks_init(void) | ||
243 | { | ||
244 | void __iomem *ccm; | ||
245 | |||
246 | ccm = ioremap(MX25_CRM_BASE_ADDR, SZ_16K); | ||
247 | |||
248 | __mx25_clocks_init(24000000, ccm); | ||
249 | |||
250 | clk_register_clkdev(clk[gpt1_ipg], "ipg", "imx-gpt.0"); | ||
251 | clk_register_clkdev(clk[gpt_ipg_per], "per", "imx-gpt.0"); | ||
252 | /* i.mx25 has the i.mx21 type uart */ | ||
253 | clk_register_clkdev(clk[uart1_ipg], "ipg", "imx21-uart.0"); | ||
254 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.0"); | ||
255 | clk_register_clkdev(clk[uart2_ipg], "ipg", "imx21-uart.1"); | ||
256 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.1"); | ||
257 | clk_register_clkdev(clk[uart3_ipg], "ipg", "imx21-uart.2"); | ||
258 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.2"); | ||
259 | clk_register_clkdev(clk[uart4_ipg], "ipg", "imx21-uart.3"); | ||
260 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.3"); | ||
261 | clk_register_clkdev(clk[uart5_ipg], "ipg", "imx21-uart.4"); | ||
262 | clk_register_clkdev(clk[uart_ipg_per], "per", "imx21-uart.4"); | ||
263 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.0"); | ||
264 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.0"); | ||
265 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.0"); | ||
266 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.1"); | ||
267 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.1"); | ||
268 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.1"); | ||
269 | clk_register_clkdev(clk[ipg], "ipg", "mxc-ehci.2"); | ||
270 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "mxc-ehci.2"); | ||
271 | clk_register_clkdev(clk[usb_div], "per", "mxc-ehci.2"); | ||
272 | clk_register_clkdev(clk[ipg], "ipg", "imx-udc-mx27"); | ||
273 | clk_register_clkdev(clk[usbotg_ahb], "ahb", "imx-udc-mx27"); | ||
274 | clk_register_clkdev(clk[usb_div], "per", "imx-udc-mx27"); | ||
275 | clk_register_clkdev(clk[nfc_ipg_per], NULL, "imx25-nand.0"); | ||
276 | /* i.mx25 has the i.mx35 type cspi */ | ||
277 | clk_register_clkdev(clk[cspi1_ipg], NULL, "imx35-cspi.0"); | ||
278 | clk_register_clkdev(clk[cspi2_ipg], NULL, "imx35-cspi.1"); | ||
279 | clk_register_clkdev(clk[cspi3_ipg], NULL, "imx35-cspi.2"); | ||
280 | clk_register_clkdev(clk[kpp_ipg], NULL, "imx-keypad"); | ||
281 | clk_register_clkdev(clk[tsc_ipg], NULL, "mx25-adc"); | ||
282 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx21-i2c.0"); | ||
283 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx21-i2c.1"); | ||
284 | clk_register_clkdev(clk[i2c_ipg_per], NULL, "imx21-i2c.2"); | ||
285 | clk_register_clkdev(clk[fec_ipg], "ipg", "imx25-fec.0"); | ||
286 | clk_register_clkdev(clk[fec_ahb], "ahb", "imx25-fec.0"); | ||
287 | clk_register_clkdev(clk[dryice_ipg], NULL, "imxdi_rtc.0"); | ||
288 | clk_register_clkdev(clk[lcdc_ipg_per], "per", "imx21-fb.0"); | ||
289 | clk_register_clkdev(clk[lcdc_ipg], "ipg", "imx21-fb.0"); | ||
290 | clk_register_clkdev(clk[lcdc_ahb], "ahb", "imx21-fb.0"); | ||
291 | clk_register_clkdev(clk[wdt_ipg], NULL, "imx2-wdt.0"); | ||
292 | clk_register_clkdev(clk[ssi1_ipg], NULL, "imx-ssi.0"); | ||
293 | clk_register_clkdev(clk[ssi2_ipg], NULL, "imx-ssi.1"); | ||
294 | clk_register_clkdev(clk[esdhc1_ipg_per], "per", "sdhci-esdhc-imx25.0"); | ||
295 | clk_register_clkdev(clk[esdhc1_ipg], "ipg", "sdhci-esdhc-imx25.0"); | ||
296 | clk_register_clkdev(clk[esdhc1_ahb], "ahb", "sdhci-esdhc-imx25.0"); | ||
297 | clk_register_clkdev(clk[esdhc2_ipg_per], "per", "sdhci-esdhc-imx25.1"); | ||
298 | clk_register_clkdev(clk[esdhc2_ipg], "ipg", "sdhci-esdhc-imx25.1"); | ||
299 | clk_register_clkdev(clk[esdhc2_ahb], "ahb", "sdhci-esdhc-imx25.1"); | ||
300 | clk_register_clkdev(clk[csi_ipg_per], "per", "imx25-camera.0"); | ||
301 | clk_register_clkdev(clk[csi_ipg], "ipg", "imx25-camera.0"); | ||
302 | clk_register_clkdev(clk[csi_ahb], "ahb", "imx25-camera.0"); | ||
303 | clk_register_clkdev(clk[dummy], "audmux", NULL); | ||
304 | clk_register_clkdev(clk[can1_ipg], NULL, "flexcan.0"); | ||
305 | clk_register_clkdev(clk[can2_ipg], NULL, "flexcan.1"); | ||
306 | /* i.mx25 has the i.mx35 type sdma */ | ||
307 | clk_register_clkdev(clk[sdma_ipg], "ipg", "imx35-sdma"); | ||
308 | clk_register_clkdev(clk[sdma_ahb], "ahb", "imx35-sdma"); | ||
309 | clk_register_clkdev(clk[iim_ipg], "iim", NULL); | ||
310 | |||
311 | mxc_timer_init(MX25_IO_ADDRESS(MX25_GPT1_BASE_ADDR), MX25_INT_GPT1); | ||
312 | |||
313 | return 0; | ||
314 | } | ||
315 | |||
316 | static void __init mx25_clocks_init_dt(struct device_node *np) | 241 | static void __init mx25_clocks_init_dt(struct device_node *np) |
317 | { | 242 | { |
318 | struct device_node *refnp; | 243 | struct device_node *refnp; |
diff --git a/arch/arm/mach-imx/clk-imx6q.c b/arch/arm/mach-imx/clk-imx6q.c index d04a430607b8..469a150bf98f 100644 --- a/arch/arm/mach-imx/clk-imx6q.c +++ b/arch/arm/mach-imx/clk-imx6q.c | |||
@@ -119,6 +119,7 @@ static unsigned int share_count_asrc; | |||
119 | static unsigned int share_count_ssi1; | 119 | static unsigned int share_count_ssi1; |
120 | static unsigned int share_count_ssi2; | 120 | static unsigned int share_count_ssi2; |
121 | static unsigned int share_count_ssi3; | 121 | static unsigned int share_count_ssi3; |
122 | static unsigned int share_count_mipi_core_cfg; | ||
122 | 123 | ||
123 | static void __init imx6q_clocks_init(struct device_node *ccm_node) | 124 | static void __init imx6q_clocks_init(struct device_node *ccm_node) |
124 | { | 125 | { |
@@ -246,6 +247,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) | |||
246 | clk[IMX6QDL_CLK_PLL3_60M] = imx_clk_fixed_factor("pll3_60m", "pll3_usb_otg", 1, 8); | 247 | clk[IMX6QDL_CLK_PLL3_60M] = imx_clk_fixed_factor("pll3_60m", "pll3_usb_otg", 1, 8); |
247 | clk[IMX6QDL_CLK_TWD] = imx_clk_fixed_factor("twd", "arm", 1, 2); | 248 | clk[IMX6QDL_CLK_TWD] = imx_clk_fixed_factor("twd", "arm", 1, 2); |
248 | clk[IMX6QDL_CLK_GPT_3M] = imx_clk_fixed_factor("gpt_3m", "osc", 1, 8); | 249 | clk[IMX6QDL_CLK_GPT_3M] = imx_clk_fixed_factor("gpt_3m", "osc", 1, 8); |
250 | clk[IMX6QDL_CLK_VIDEO_27M] = imx_clk_fixed_factor("video_27m", "pll3_pfd1_540m", 1, 20); | ||
249 | if (cpu_is_imx6dl()) { | 251 | if (cpu_is_imx6dl()) { |
250 | clk[IMX6QDL_CLK_GPU2D_AXI] = imx_clk_fixed_factor("gpu2d_axi", "mmdc_ch0_axi_podf", 1, 1); | 252 | clk[IMX6QDL_CLK_GPU2D_AXI] = imx_clk_fixed_factor("gpu2d_axi", "mmdc_ch0_axi_podf", 1, 1); |
251 | clk[IMX6QDL_CLK_GPU3D_AXI] = imx_clk_fixed_factor("gpu3d_axi", "mmdc_ch0_axi_podf", 1, 1); | 253 | clk[IMX6QDL_CLK_GPU3D_AXI] = imx_clk_fixed_factor("gpu3d_axi", "mmdc_ch0_axi_podf", 1, 1); |
@@ -400,7 +402,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) | |||
400 | clk[IMX6QDL_CLK_GPU2D_CORE] = imx_clk_gate2("gpu2d_core", "gpu2d_core_podf", base + 0x6c, 24); | 402 | clk[IMX6QDL_CLK_GPU2D_CORE] = imx_clk_gate2("gpu2d_core", "gpu2d_core_podf", base + 0x6c, 24); |
401 | clk[IMX6QDL_CLK_GPU3D_CORE] = imx_clk_gate2("gpu3d_core", "gpu3d_core_podf", base + 0x6c, 26); | 403 | clk[IMX6QDL_CLK_GPU3D_CORE] = imx_clk_gate2("gpu3d_core", "gpu3d_core_podf", base + 0x6c, 26); |
402 | clk[IMX6QDL_CLK_HDMI_IAHB] = imx_clk_gate2("hdmi_iahb", "ahb", base + 0x70, 0); | 404 | clk[IMX6QDL_CLK_HDMI_IAHB] = imx_clk_gate2("hdmi_iahb", "ahb", base + 0x70, 0); |
403 | clk[IMX6QDL_CLK_HDMI_ISFR] = imx_clk_gate2("hdmi_isfr", "pll3_pfd1_540m", base + 0x70, 4); | 405 | clk[IMX6QDL_CLK_HDMI_ISFR] = imx_clk_gate2("hdmi_isfr", "video_27m", base + 0x70, 4); |
404 | clk[IMX6QDL_CLK_I2C1] = imx_clk_gate2("i2c1", "ipg_per", base + 0x70, 6); | 406 | clk[IMX6QDL_CLK_I2C1] = imx_clk_gate2("i2c1", "ipg_per", base + 0x70, 6); |
405 | clk[IMX6QDL_CLK_I2C2] = imx_clk_gate2("i2c2", "ipg_per", base + 0x70, 8); | 407 | clk[IMX6QDL_CLK_I2C2] = imx_clk_gate2("i2c2", "ipg_per", base + 0x70, 8); |
406 | clk[IMX6QDL_CLK_I2C3] = imx_clk_gate2("i2c3", "ipg_per", base + 0x70, 10); | 408 | clk[IMX6QDL_CLK_I2C3] = imx_clk_gate2("i2c3", "ipg_per", base + 0x70, 10); |
@@ -415,7 +417,9 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node) | |||
415 | clk[IMX6QDL_CLK_LDB_DI0] = imx_clk_gate2("ldb_di0", "ldb_di0_podf", base + 0x74, 12); | 417 | clk[IMX6QDL_CLK_LDB_DI0] = imx_clk_gate2("ldb_di0", "ldb_di0_podf", base + 0x74, 12); |
416 | clk[IMX6QDL_CLK_LDB_DI1] = imx_clk_gate2("ldb_di1", "ldb_di1_podf", base + 0x74, 14); | 418 | clk[IMX6QDL_CLK_LDB_DI1] = imx_clk_gate2("ldb_di1", "ldb_di1_podf", base + 0x74, 14); |
417 | clk[IMX6QDL_CLK_IPU2_DI1] = imx_clk_gate2("ipu2_di1", "ipu2_di1_sel", base + 0x74, 10); | 419 | clk[IMX6QDL_CLK_IPU2_DI1] = imx_clk_gate2("ipu2_di1", "ipu2_di1_sel", base + 0x74, 10); |
418 | clk[IMX6QDL_CLK_HSI_TX] = imx_clk_gate2("hsi_tx", "hsi_tx_podf", base + 0x74, 16); | 420 | clk[IMX6QDL_CLK_HSI_TX] = imx_clk_gate2_shared("hsi_tx", "hsi_tx_podf", base + 0x74, 16, &share_count_mipi_core_cfg); |
421 | clk[IMX6QDL_CLK_MIPI_CORE_CFG] = imx_clk_gate2_shared("mipi_core_cfg", "video_27m", base + 0x74, 16, &share_count_mipi_core_cfg); | ||
422 | clk[IMX6QDL_CLK_MIPI_IPG] = imx_clk_gate2_shared("mipi_ipg", "ipg", base + 0x74, 16, &share_count_mipi_core_cfg); | ||
419 | if (cpu_is_imx6dl()) | 423 | if (cpu_is_imx6dl()) |
420 | /* | 424 | /* |
421 | * The multiplexer and divider of the imx6q clock gpu2d get | 425 | * The multiplexer and divider of the imx6q clock gpu2d get |
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h index 1028b6c505c4..0f04e30b726d 100644 --- a/arch/arm/mach-imx/common.h +++ b/arch/arm/mach-imx/common.h | |||
@@ -23,13 +23,11 @@ struct of_device_id; | |||
23 | 23 | ||
24 | void mx1_map_io(void); | 24 | void mx1_map_io(void); |
25 | void mx21_map_io(void); | 25 | void mx21_map_io(void); |
26 | void mx25_map_io(void); | ||
27 | void mx27_map_io(void); | 26 | void mx27_map_io(void); |
28 | void mx31_map_io(void); | 27 | void mx31_map_io(void); |
29 | void mx35_map_io(void); | 28 | void mx35_map_io(void); |
30 | void imx1_init_early(void); | 29 | void imx1_init_early(void); |
31 | void imx21_init_early(void); | 30 | void imx21_init_early(void); |
32 | void imx25_init_early(void); | ||
33 | void imx27_init_early(void); | 31 | void imx27_init_early(void); |
34 | void imx31_init_early(void); | 32 | void imx31_init_early(void); |
35 | void imx35_init_early(void); | 33 | void imx35_init_early(void); |
@@ -37,13 +35,11 @@ void mxc_init_irq(void __iomem *); | |||
37 | void tzic_init_irq(void); | 35 | void tzic_init_irq(void); |
38 | void mx1_init_irq(void); | 36 | void mx1_init_irq(void); |
39 | void mx21_init_irq(void); | 37 | void mx21_init_irq(void); |
40 | void mx25_init_irq(void); | ||
41 | void mx27_init_irq(void); | 38 | void mx27_init_irq(void); |
42 | void mx31_init_irq(void); | 39 | void mx31_init_irq(void); |
43 | void mx35_init_irq(void); | 40 | void mx35_init_irq(void); |
44 | void imx1_soc_init(void); | 41 | void imx1_soc_init(void); |
45 | void imx21_soc_init(void); | 42 | void imx21_soc_init(void); |
46 | void imx25_soc_init(void); | ||
47 | void imx27_soc_init(void); | 43 | void imx27_soc_init(void); |
48 | void imx31_soc_init(void); | 44 | void imx31_soc_init(void); |
49 | void imx35_soc_init(void); | 45 | void imx35_soc_init(void); |
@@ -51,7 +47,6 @@ void epit_timer_init(void __iomem *base, int irq); | |||
51 | void mxc_timer_init(void __iomem *, int); | 47 | void mxc_timer_init(void __iomem *, int); |
52 | int mx1_clocks_init(unsigned long fref); | 48 | int mx1_clocks_init(unsigned long fref); |
53 | int mx21_clocks_init(unsigned long lref, unsigned long fref); | 49 | int mx21_clocks_init(unsigned long lref, unsigned long fref); |
54 | int mx25_clocks_init(void); | ||
55 | int mx27_clocks_init(unsigned long fref); | 50 | int mx27_clocks_init(unsigned long fref); |
56 | int mx31_clocks_init(unsigned long fref); | 51 | int mx31_clocks_init(unsigned long fref); |
57 | int mx35_clocks_init(void); | 52 | int mx35_clocks_init(void); |
@@ -71,6 +66,7 @@ unsigned int imx_get_soc_revision(void); | |||
71 | void imx_init_revision_from_anatop(void); | 66 | void imx_init_revision_from_anatop(void); |
72 | struct device *imx_soc_device_init(void); | 67 | struct device *imx_soc_device_init(void); |
73 | void imx6_enable_rbc(bool enable); | 68 | void imx6_enable_rbc(bool enable); |
69 | void imx_gpc_check_dt(void); | ||
74 | void imx_gpc_set_arm_power_in_lpm(bool power_off); | 70 | void imx_gpc_set_arm_power_in_lpm(bool power_off); |
75 | void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw); | 71 | void imx_gpc_set_arm_power_up_timing(u32 sw2iso, u32 sw); |
76 | void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw); | 72 | void imx_gpc_set_arm_power_down_timing(u32 sw2iso, u32 sw); |
@@ -106,7 +102,6 @@ static inline void imx_scu_map_io(void) {} | |||
106 | static inline void imx_smp_prepare(void) {} | 102 | static inline void imx_smp_prepare(void) {} |
107 | #endif | 103 | #endif |
108 | void imx_src_init(void); | 104 | void imx_src_init(void); |
109 | void imx_gpc_init(void); | ||
110 | void imx_gpc_pre_suspend(bool arm_power_off); | 105 | void imx_gpc_pre_suspend(bool arm_power_off); |
111 | void imx_gpc_post_resume(void); | 106 | void imx_gpc_post_resume(void); |
112 | void imx_gpc_mask_all(void); | 107 | void imx_gpc_mask_all(void); |
diff --git a/arch/arm/mach-imx/cpu-imx25.c b/arch/arm/mach-imx/cpu-imx25.c index 96ec64b5ff7d..d0ad67e802d3 100644 --- a/arch/arm/mach-imx/cpu-imx25.c +++ b/arch/arm/mach-imx/cpu-imx25.c | |||
@@ -11,6 +11,8 @@ | |||
11 | */ | 11 | */ |
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <linux/of.h> | ||
15 | #include <linux/of_address.h> | ||
14 | 16 | ||
15 | #include "iim.h" | 17 | #include "iim.h" |
16 | #include "hardware.h" | 18 | #include "hardware.h" |
@@ -20,8 +22,15 @@ static int mx25_cpu_rev = -1; | |||
20 | static int mx25_read_cpu_rev(void) | 22 | static int mx25_read_cpu_rev(void) |
21 | { | 23 | { |
22 | u32 rev; | 24 | u32 rev; |
25 | void __iomem *iim_base; | ||
26 | struct device_node *np; | ||
27 | |||
28 | np = of_find_compatible_node(NULL, NULL, "fsl,imx25-iim"); | ||
29 | iim_base = of_iomap(np, 0); | ||
30 | BUG_ON(!iim_base); | ||
31 | rev = readl(iim_base + MXC_IIMSREV); | ||
32 | iounmap(iim_base); | ||
23 | 33 | ||
24 | rev = __raw_readl(MX25_IO_ADDRESS(MX25_IIM_BASE_ADDR + MXC_IIMSREV)); | ||
25 | switch (rev) { | 34 | switch (rev) { |
26 | case 0x00: | 35 | case 0x00: |
27 | return IMX_CHIP_REVISION_1_0; | 36 | return IMX_CHIP_REVISION_1_0; |
diff --git a/arch/arm/mach-imx/devices-imx25.h b/arch/arm/mach-imx/devices-imx25.h deleted file mode 100644 index 61a114cddc39..000000000000 --- a/arch/arm/mach-imx/devices-imx25.h +++ /dev/null | |||
@@ -1,85 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include "devices/devices-common.h" | ||
10 | |||
11 | extern const struct imx_fec_data imx25_fec_data; | ||
12 | #define imx25_add_fec(pdata) \ | ||
13 | imx_add_fec(&imx25_fec_data, pdata) | ||
14 | |||
15 | extern const struct imx_flexcan_data imx25_flexcan_data[]; | ||
16 | #define imx25_add_flexcan(id) \ | ||
17 | imx_add_flexcan(&imx25_flexcan_data[id]) | ||
18 | #define imx25_add_flexcan0() imx25_add_flexcan(0) | ||
19 | #define imx25_add_flexcan1() imx25_add_flexcan(1) | ||
20 | |||
21 | extern const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data; | ||
22 | #define imx25_add_fsl_usb2_udc(pdata) \ | ||
23 | imx_add_fsl_usb2_udc(&imx25_fsl_usb2_udc_data, pdata) | ||
24 | |||
25 | extern struct imx_imxdi_rtc_data imx25_imxdi_rtc_data; | ||
26 | #define imx25_add_imxdi_rtc() \ | ||
27 | imx_add_imxdi_rtc(&imx25_imxdi_rtc_data) | ||
28 | |||
29 | extern const struct imx_imx2_wdt_data imx25_imx2_wdt_data; | ||
30 | #define imx25_add_imx2_wdt() \ | ||
31 | imx_add_imx2_wdt(&imx25_imx2_wdt_data) | ||
32 | |||
33 | extern const struct imx_imx_fb_data imx25_imx_fb_data; | ||
34 | #define imx25_add_imx_fb(pdata) \ | ||
35 | imx_add_imx_fb(&imx25_imx_fb_data, pdata) | ||
36 | |||
37 | extern const struct imx_imx_i2c_data imx25_imx_i2c_data[]; | ||
38 | #define imx25_add_imx_i2c(id, pdata) \ | ||
39 | imx_add_imx_i2c(&imx25_imx_i2c_data[id], pdata) | ||
40 | #define imx25_add_imx_i2c0(pdata) imx25_add_imx_i2c(0, pdata) | ||
41 | #define imx25_add_imx_i2c1(pdata) imx25_add_imx_i2c(1, pdata) | ||
42 | #define imx25_add_imx_i2c2(pdata) imx25_add_imx_i2c(2, pdata) | ||
43 | |||
44 | extern const struct imx_imx_keypad_data imx25_imx_keypad_data; | ||
45 | #define imx25_add_imx_keypad(pdata) \ | ||
46 | imx_add_imx_keypad(&imx25_imx_keypad_data, pdata) | ||
47 | |||
48 | extern const struct imx_imx_ssi_data imx25_imx_ssi_data[]; | ||
49 | #define imx25_add_imx_ssi(id, pdata) \ | ||
50 | imx_add_imx_ssi(&imx25_imx_ssi_data[id], pdata) | ||
51 | |||
52 | extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[]; | ||
53 | #define imx25_add_imx_uart(id, pdata) \ | ||
54 | imx_add_imx_uart_1irq(&imx25_imx_uart_data[id], pdata) | ||
55 | #define imx25_add_imx_uart0(pdata) imx25_add_imx_uart(0, pdata) | ||
56 | #define imx25_add_imx_uart1(pdata) imx25_add_imx_uart(1, pdata) | ||
57 | #define imx25_add_imx_uart2(pdata) imx25_add_imx_uart(2, pdata) | ||
58 | #define imx25_add_imx_uart3(pdata) imx25_add_imx_uart(3, pdata) | ||
59 | #define imx25_add_imx_uart4(pdata) imx25_add_imx_uart(4, pdata) | ||
60 | |||
61 | extern const struct imx_mx2_camera_data imx25_mx2_camera_data; | ||
62 | #define imx25_add_mx2_camera(pdata) \ | ||
63 | imx_add_mx2_camera(&imx25_mx2_camera_data, pdata) | ||
64 | |||
65 | extern const struct imx_mxc_ehci_data imx25_mxc_ehci_otg_data; | ||
66 | #define imx25_add_mxc_ehci_otg(pdata) \ | ||
67 | imx_add_mxc_ehci(&imx25_mxc_ehci_otg_data, pdata) | ||
68 | extern const struct imx_mxc_ehci_data imx25_mxc_ehci_hs_data; | ||
69 | #define imx25_add_mxc_ehci_hs(pdata) \ | ||
70 | imx_add_mxc_ehci(&imx25_mxc_ehci_hs_data, pdata) | ||
71 | |||
72 | extern const struct imx_mxc_nand_data imx25_mxc_nand_data; | ||
73 | #define imx25_add_mxc_nand(pdata) \ | ||
74 | imx_add_mxc_nand(&imx25_mxc_nand_data, pdata) | ||
75 | |||
76 | extern const struct imx_sdhci_esdhc_imx_data imx25_sdhci_esdhc_imx_data[]; | ||
77 | #define imx25_add_sdhci_esdhc_imx(id, pdata) \ | ||
78 | imx_add_sdhci_esdhc_imx(&imx25_sdhci_esdhc_imx_data[id], pdata) | ||
79 | |||
80 | extern const struct imx_spi_imx_data imx25_cspi_data[]; | ||
81 | #define imx25_add_spi_imx(id, pdata) \ | ||
82 | imx_add_spi_imx(&imx25_cspi_data[id], pdata) | ||
83 | #define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata) | ||
84 | #define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata) | ||
85 | #define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata) | ||
diff --git a/arch/arm/mach-imx/devices/Kconfig b/arch/arm/mach-imx/devices/Kconfig index 1d2cc1805f3e..3a552989248e 100644 --- a/arch/arm/mach-imx/devices/Kconfig +++ b/arch/arm/mach-imx/devices/Kconfig | |||
@@ -21,9 +21,6 @@ config IMX_HAVE_PLATFORM_IMX27_CODA | |||
21 | config IMX_HAVE_PLATFORM_IMX2_WDT | 21 | config IMX_HAVE_PLATFORM_IMX2_WDT |
22 | bool | 22 | bool |
23 | 23 | ||
24 | config IMX_HAVE_PLATFORM_IMXDI_RTC | ||
25 | bool | ||
26 | |||
27 | config IMX_HAVE_PLATFORM_IMX_FB | 24 | config IMX_HAVE_PLATFORM_IMX_FB |
28 | bool | 25 | bool |
29 | 26 | ||
diff --git a/arch/arm/mach-imx/devices/Makefile b/arch/arm/mach-imx/devices/Makefile index 8fdb12b4ca7e..e5cf587bc1a0 100644 --- a/arch/arm/mach-imx/devices/Makefile +++ b/arch/arm/mach-imx/devices/Makefile | |||
@@ -8,7 +8,6 @@ obj-y += platform-gpio-mxc.o | |||
8 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX21_HCD) += platform-imx21-hcd.o | 8 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX21_HCD) += platform-imx21-hcd.o |
9 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX27_CODA) += platform-imx27-coda.o | 9 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX27_CODA) += platform-imx27-coda.o |
10 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o | 10 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o |
11 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMXDI_RTC) += platform-imxdi_rtc.o | ||
12 | obj-y += platform-imx-dma.o | 11 | obj-y += platform-imx-dma.o |
13 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o | 12 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o |
14 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o | 13 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o |
diff --git a/arch/arm/mach-imx/devices/platform-fec.c b/arch/arm/mach-imx/devices/platform-fec.c index d86f9250b4ee..b403a4fe2892 100644 --- a/arch/arm/mach-imx/devices/platform-fec.c +++ b/arch/arm/mach-imx/devices/platform-fec.c | |||
@@ -19,11 +19,6 @@ | |||
19 | .irq = soc ## _INT_FEC, \ | 19 | .irq = soc ## _INT_FEC, \ |
20 | } | 20 | } |
21 | 21 | ||
22 | #ifdef CONFIG_SOC_IMX25 | ||
23 | const struct imx_fec_data imx25_fec_data __initconst = | ||
24 | imx_fec_data_entry_single(MX25, "imx25-fec"); | ||
25 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
26 | |||
27 | #ifdef CONFIG_SOC_IMX27 | 22 | #ifdef CONFIG_SOC_IMX27 |
28 | const struct imx_fec_data imx27_fec_data __initconst = | 23 | const struct imx_fec_data imx27_fec_data __initconst = |
29 | imx_fec_data_entry_single(MX27, "imx27-fec"); | 24 | imx_fec_data_entry_single(MX27, "imx27-fec"); |
diff --git a/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c index 23b0061347cb..25e1de6f3a47 100644 --- a/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c +++ b/arch/arm/mach-imx/devices/platform-fsl-usb2-udc.c | |||
@@ -18,11 +18,6 @@ | |||
18 | .irq = soc ## _INT_USB_OTG, \ | 18 | .irq = soc ## _INT_USB_OTG, \ |
19 | } | 19 | } |
20 | 20 | ||
21 | #ifdef CONFIG_SOC_IMX25 | ||
22 | const struct imx_fsl_usb2_udc_data imx25_fsl_usb2_udc_data __initconst = | ||
23 | imx_fsl_usb2_udc_data_entry_single(MX25, "imx-udc-mx27"); | ||
24 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
25 | |||
26 | #ifdef CONFIG_SOC_IMX27 | 21 | #ifdef CONFIG_SOC_IMX27 |
27 | const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst = | 22 | const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst = |
28 | imx_fsl_usb2_udc_data_entry_single(MX27, "imx-udc-mx27"); | 23 | imx_fsl_usb2_udc_data_entry_single(MX27, "imx-udc-mx27"); |
diff --git a/arch/arm/mach-imx/devices/platform-imx-fb.c b/arch/arm/mach-imx/devices/platform-imx-fb.c index 25a47c616b2d..7df6328306f9 100644 --- a/arch/arm/mach-imx/devices/platform-imx-fb.c +++ b/arch/arm/mach-imx/devices/platform-imx-fb.c | |||
@@ -29,11 +29,6 @@ const struct imx_imx_fb_data imx21_imx_fb_data __initconst = | |||
29 | imx_imx_fb_data_entry_single(MX21, "imx21-fb", SZ_4K); | 29 | imx_imx_fb_data_entry_single(MX21, "imx21-fb", SZ_4K); |
30 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 30 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
31 | 31 | ||
32 | #ifdef CONFIG_SOC_IMX25 | ||
33 | const struct imx_imx_fb_data imx25_imx_fb_data __initconst = | ||
34 | imx_imx_fb_data_entry_single(MX25, "imx21-fb", SZ_16K); | ||
35 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
36 | |||
37 | #ifdef CONFIG_SOC_IMX27 | 32 | #ifdef CONFIG_SOC_IMX27 |
38 | const struct imx_imx_fb_data imx27_imx_fb_data __initconst = | 33 | const struct imx_imx_fb_data imx27_imx_fb_data __initconst = |
39 | imx_imx_fb_data_entry_single(MX27, "imx21-fb", SZ_4K); | 34 | imx_imx_fb_data_entry_single(MX27, "imx21-fb", SZ_4K); |
diff --git a/arch/arm/mach-imx/devices/platform-imx-i2c.c b/arch/arm/mach-imx/devices/platform-imx-i2c.c index 644ac2689882..ae9791522fc8 100644 --- a/arch/arm/mach-imx/devices/platform-imx-i2c.c +++ b/arch/arm/mach-imx/devices/platform-imx-i2c.c | |||
@@ -31,16 +31,6 @@ const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst = | |||
31 | imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K); | 31 | imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K); |
32 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 32 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
33 | 33 | ||
34 | #ifdef CONFIG_SOC_IMX25 | ||
35 | const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst = { | ||
36 | #define imx25_imx_i2c_data_entry(_id, _hwid) \ | ||
37 | imx_imx_i2c_data_entry(MX25, "imx21-i2c", _id, _hwid, SZ_16K) | ||
38 | imx25_imx_i2c_data_entry(0, 1), | ||
39 | imx25_imx_i2c_data_entry(1, 2), | ||
40 | imx25_imx_i2c_data_entry(2, 3), | ||
41 | }; | ||
42 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
43 | |||
44 | #ifdef CONFIG_SOC_IMX27 | 34 | #ifdef CONFIG_SOC_IMX27 |
45 | const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { | 35 | const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = { |
46 | #define imx27_imx_i2c_data_entry(_id, _hwid) \ | 36 | #define imx27_imx_i2c_data_entry(_id, _hwid) \ |
diff --git a/arch/arm/mach-imx/devices/platform-imx-keypad.c b/arch/arm/mach-imx/devices/platform-imx-keypad.c index f42200b7aca9..479e4d70dbf9 100644 --- a/arch/arm/mach-imx/devices/platform-imx-keypad.c +++ b/arch/arm/mach-imx/devices/platform-imx-keypad.c | |||
@@ -21,11 +21,6 @@ const struct imx_imx_keypad_data imx21_imx_keypad_data __initconst = | |||
21 | imx_imx_keypad_data_entry_single(MX21, SZ_16); | 21 | imx_imx_keypad_data_entry_single(MX21, SZ_16); |
22 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 22 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
23 | 23 | ||
24 | #ifdef CONFIG_SOC_IMX25 | ||
25 | const struct imx_imx_keypad_data imx25_imx_keypad_data __initconst = | ||
26 | imx_imx_keypad_data_entry_single(MX25, SZ_16K); | ||
27 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
28 | |||
29 | #ifdef CONFIG_SOC_IMX27 | 24 | #ifdef CONFIG_SOC_IMX27 |
30 | const struct imx_imx_keypad_data imx27_imx_keypad_data __initconst = | 25 | const struct imx_imx_keypad_data imx27_imx_keypad_data __initconst = |
31 | imx_imx_keypad_data_entry_single(MX27, SZ_16); | 26 | imx_imx_keypad_data_entry_single(MX27, SZ_16); |
diff --git a/arch/arm/mach-imx/devices/platform-imx-ssi.c b/arch/arm/mach-imx/devices/platform-imx-ssi.c index 1c7c721ebff1..6f0e94eb29ee 100644 --- a/arch/arm/mach-imx/devices/platform-imx-ssi.c +++ b/arch/arm/mach-imx/devices/platform-imx-ssi.c | |||
@@ -30,15 +30,6 @@ const struct imx_imx_ssi_data imx21_imx_ssi_data[] __initconst = { | |||
30 | }; | 30 | }; |
31 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 31 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
32 | 32 | ||
33 | #ifdef CONFIG_SOC_IMX25 | ||
34 | const struct imx_imx_ssi_data imx25_imx_ssi_data[] __initconst = { | ||
35 | #define imx25_imx_ssi_data_entry(_id, _hwid) \ | ||
36 | imx_imx_ssi_data_entry(MX25, _id, _hwid, SZ_4K) | ||
37 | imx25_imx_ssi_data_entry(0, 1), | ||
38 | imx25_imx_ssi_data_entry(1, 2), | ||
39 | }; | ||
40 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
41 | |||
42 | #ifdef CONFIG_SOC_IMX27 | 33 | #ifdef CONFIG_SOC_IMX27 |
43 | const struct imx_imx_ssi_data imx27_imx_ssi_data[] __initconst = { | 34 | const struct imx_imx_ssi_data imx27_imx_ssi_data[] __initconst = { |
44 | #define imx27_imx_ssi_data_entry(_id, _hwid) \ | 35 | #define imx27_imx_ssi_data_entry(_id, _hwid) \ |
diff --git a/arch/arm/mach-imx/devices/platform-imx-uart.c b/arch/arm/mach-imx/devices/platform-imx-uart.c index 8c01836bc1d4..6962cff4a950 100644 --- a/arch/arm/mach-imx/devices/platform-imx-uart.c +++ b/arch/arm/mach-imx/devices/platform-imx-uart.c | |||
@@ -47,18 +47,6 @@ const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst = { | |||
47 | }; | 47 | }; |
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | #ifdef CONFIG_SOC_IMX25 | ||
51 | const struct imx_imx_uart_1irq_data imx25_imx_uart_data[] __initconst = { | ||
52 | #define imx25_imx_uart_data_entry(_id, _hwid) \ | ||
53 | imx_imx_uart_1irq_data_entry(MX25, _id, _hwid, SZ_16K) | ||
54 | imx25_imx_uart_data_entry(0, 1), | ||
55 | imx25_imx_uart_data_entry(1, 2), | ||
56 | imx25_imx_uart_data_entry(2, 3), | ||
57 | imx25_imx_uart_data_entry(3, 4), | ||
58 | imx25_imx_uart_data_entry(4, 5), | ||
59 | }; | ||
60 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
61 | |||
62 | #ifdef CONFIG_SOC_IMX27 | 50 | #ifdef CONFIG_SOC_IMX27 |
63 | const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst = { | 51 | const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst = { |
64 | #define imx27_imx_uart_data_entry(_id, _hwid) \ | 52 | #define imx27_imx_uart_data_entry(_id, _hwid) \ |
diff --git a/arch/arm/mach-imx/devices/platform-imx2-wdt.c b/arch/arm/mach-imx/devices/platform-imx2-wdt.c index 54f63bc25ca4..8c134c8d7500 100644 --- a/arch/arm/mach-imx/devices/platform-imx2-wdt.c +++ b/arch/arm/mach-imx/devices/platform-imx2-wdt.c | |||
@@ -25,11 +25,6 @@ const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst = | |||
25 | imx_imx2_wdt_data_entry_single(MX21, 0, , SZ_4K); | 25 | imx_imx2_wdt_data_entry_single(MX21, 0, , SZ_4K); |
26 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 26 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
27 | 27 | ||
28 | #ifdef CONFIG_SOC_IMX25 | ||
29 | const struct imx_imx2_wdt_data imx25_imx2_wdt_data __initconst = | ||
30 | imx_imx2_wdt_data_entry_single(MX25, 0, , SZ_16K); | ||
31 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
32 | |||
33 | #ifdef CONFIG_SOC_IMX27 | 28 | #ifdef CONFIG_SOC_IMX27 |
34 | const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst = | 29 | const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst = |
35 | imx_imx2_wdt_data_entry_single(MX27, 0, , SZ_4K); | 30 | imx_imx2_wdt_data_entry_single(MX27, 0, , SZ_4K); |
diff --git a/arch/arm/mach-imx/devices/platform-imxdi_rtc.c b/arch/arm/mach-imx/devices/platform-imxdi_rtc.c deleted file mode 100644 index 5bb490d556ea..000000000000 --- a/arch/arm/mach-imx/devices/platform-imxdi_rtc.c +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <asm/sizes.h> | ||
10 | |||
11 | #include "../hardware.h" | ||
12 | #include "devices-common.h" | ||
13 | |||
14 | #define imx_imxdi_rtc_data_entry_single(soc) \ | ||
15 | { \ | ||
16 | .iobase = soc ## _DRYICE_BASE_ADDR, \ | ||
17 | .irq = soc ## _INT_DRYICE, \ | ||
18 | } | ||
19 | |||
20 | #ifdef CONFIG_SOC_IMX25 | ||
21 | const struct imx_imxdi_rtc_data imx25_imxdi_rtc_data __initconst = | ||
22 | imx_imxdi_rtc_data_entry_single(MX25); | ||
23 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
24 | |||
25 | struct platform_device *__init imx_add_imxdi_rtc( | ||
26 | const struct imx_imxdi_rtc_data *data) | ||
27 | { | ||
28 | struct resource res[] = { | ||
29 | { | ||
30 | .start = data->iobase, | ||
31 | .end = data->iobase + SZ_16K - 1, | ||
32 | .flags = IORESOURCE_MEM, | ||
33 | }, { | ||
34 | .start = data->irq, | ||
35 | .end = data->irq, | ||
36 | .flags = IORESOURCE_IRQ, | ||
37 | }, | ||
38 | }; | ||
39 | |||
40 | return imx_add_platform_device("imxdi_rtc", 0, | ||
41 | res, ARRAY_SIZE(res), NULL, 0); | ||
42 | } | ||
diff --git a/arch/arm/mach-imx/devices/platform-mx2-camera.c b/arch/arm/mach-imx/devices/platform-mx2-camera.c index b53e1f348f51..4c377c33242c 100644 --- a/arch/arm/mach-imx/devices/platform-mx2-camera.c +++ b/arch/arm/mach-imx/devices/platform-mx2-camera.c | |||
@@ -27,11 +27,6 @@ | |||
27 | .irqemmaprp = soc ## _INT_EMMAPRP, \ | 27 | .irqemmaprp = soc ## _INT_EMMAPRP, \ |
28 | } | 28 | } |
29 | 29 | ||
30 | #ifdef CONFIG_SOC_IMX25 | ||
31 | const struct imx_mx2_camera_data imx25_mx2_camera_data __initconst = | ||
32 | imx_mx2_camera_data_entry_single(MX25, "imx25-camera"); | ||
33 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
34 | |||
35 | #ifdef CONFIG_SOC_IMX27 | 30 | #ifdef CONFIG_SOC_IMX27 |
36 | const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst = | 31 | const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst = |
37 | imx_mx2_camera_data_entry_single_emma(MX27, "imx27-camera"); | 32 | imx_mx2_camera_data_entry_single_emma(MX27, "imx27-camera"); |
diff --git a/arch/arm/mach-imx/devices/platform-mxc-ehci.c b/arch/arm/mach-imx/devices/platform-mxc-ehci.c index 296353662ff0..4537abd2a8f2 100644 --- a/arch/arm/mach-imx/devices/platform-mxc-ehci.c +++ b/arch/arm/mach-imx/devices/platform-mxc-ehci.c | |||
@@ -18,13 +18,6 @@ | |||
18 | .irq = soc ## _INT_USB_ ## hs, \ | 18 | .irq = soc ## _INT_USB_ ## hs, \ |
19 | } | 19 | } |
20 | 20 | ||
21 | #ifdef CONFIG_SOC_IMX25 | ||
22 | const struct imx_mxc_ehci_data imx25_mxc_ehci_otg_data __initconst = | ||
23 | imx_mxc_ehci_data_entry_single(MX25, 0, OTG); | ||
24 | const struct imx_mxc_ehci_data imx25_mxc_ehci_hs_data __initconst = | ||
25 | imx_mxc_ehci_data_entry_single(MX25, 1, HS); | ||
26 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
27 | |||
28 | #ifdef CONFIG_SOC_IMX27 | 21 | #ifdef CONFIG_SOC_IMX27 |
29 | const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data __initconst = | 22 | const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data __initconst = |
30 | imx_mxc_ehci_data_entry_single(MX27, 0, OTG); | 23 | imx_mxc_ehci_data_entry_single(MX27, 0, OTG); |
diff --git a/arch/arm/mach-imx/devices/platform-mxc_nand.c b/arch/arm/mach-imx/devices/platform-mxc_nand.c index fa618a34f462..676df4920c7b 100644 --- a/arch/arm/mach-imx/devices/platform-mxc_nand.c +++ b/arch/arm/mach-imx/devices/platform-mxc_nand.c | |||
@@ -34,11 +34,6 @@ const struct imx_mxc_nand_data imx21_mxc_nand_data __initconst = | |||
34 | imx_mxc_nand_data_entry_single(MX21, "imx21-nand", SZ_4K); | 34 | imx_mxc_nand_data_entry_single(MX21, "imx21-nand", SZ_4K); |
35 | #endif /* ifdef CONFIG_SOC_IMX21 */ | 35 | #endif /* ifdef CONFIG_SOC_IMX21 */ |
36 | 36 | ||
37 | #ifdef CONFIG_SOC_IMX25 | ||
38 | const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst = | ||
39 | imx_mxc_nand_data_entry_single(MX25, "imx25-nand", SZ_8K); | ||
40 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
41 | |||
42 | #ifdef CONFIG_SOC_IMX27 | 37 | #ifdef CONFIG_SOC_IMX27 |
43 | const struct imx_mxc_nand_data imx27_mxc_nand_data __initconst = | 38 | const struct imx_mxc_nand_data imx27_mxc_nand_data __initconst = |
44 | imx_mxc_nand_data_entry_single(MX27, "imx27-nand", SZ_4K); | 39 | imx_mxc_nand_data_entry_single(MX27, "imx27-nand", SZ_4K); |
diff --git a/arch/arm/mach-imx/devices/platform-spi_imx.c b/arch/arm/mach-imx/devices/platform-spi_imx.c index aca825d74c48..5e9707b47f92 100644 --- a/arch/arm/mach-imx/devices/platform-spi_imx.c +++ b/arch/arm/mach-imx/devices/platform-spi_imx.c | |||
@@ -39,17 +39,6 @@ const struct imx_spi_imx_data imx21_cspi_data[] __initconst = { | |||
39 | }; | 39 | }; |
40 | #endif | 40 | #endif |
41 | 41 | ||
42 | #ifdef CONFIG_SOC_IMX25 | ||
43 | /* i.mx25 has the i.mx35 type cspi */ | ||
44 | const struct imx_spi_imx_data imx25_cspi_data[] __initconst = { | ||
45 | #define imx25_cspi_data_entry(_id, _hwid) \ | ||
46 | imx_spi_imx_data_entry(MX25, CSPI, "imx35-cspi", _id, _hwid, SZ_16K) | ||
47 | imx25_cspi_data_entry(0, 1), | ||
48 | imx25_cspi_data_entry(1, 2), | ||
49 | imx25_cspi_data_entry(2, 3), | ||
50 | }; | ||
51 | #endif /* ifdef CONFIG_SOC_IMX25 */ | ||
52 | |||
53 | #ifdef CONFIG_SOC_IMX27 | 42 | #ifdef CONFIG_SOC_IMX27 |
54 | const struct imx_spi_imx_data imx27_cspi_data[] __initconst = { | 43 | const struct imx_spi_imx_data imx27_cspi_data[] __initconst = { |
55 | #define imx27_cspi_data_entry(_id, _hwid) \ | 44 | #define imx27_cspi_data_entry(_id, _hwid) \ |
diff --git a/arch/arm/mach-imx/ehci-imx25.c b/arch/arm/mach-imx/ehci-imx25.c deleted file mode 100644 index 42a5a3d14c5f..000000000000 --- a/arch/arm/mach-imx/ehci-imx25.c +++ /dev/null | |||
@@ -1,99 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de> | ||
3 | * Copyright (C) 2010 Freescale Semiconductor, Inc. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms of the GNU General Public License as published by the | ||
7 | * Free Software Foundation; either version 2 of the License, or (at your | ||
8 | * option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, but | ||
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | ||
12 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | ||
13 | * for more details. | ||
14 | */ | ||
15 | |||
16 | #include <linux/platform_device.h> | ||
17 | #include <linux/io.h> | ||
18 | #include <linux/platform_data/usb-ehci-mxc.h> | ||
19 | |||
20 | #include "ehci.h" | ||
21 | #include "hardware.h" | ||
22 | |||
23 | #define USBCTRL_OTGBASE_OFFSET 0x600 | ||
24 | |||
25 | #define MX25_OTG_SIC_SHIFT 29 | ||
26 | #define MX25_OTG_SIC_MASK (0x3 << MX25_OTG_SIC_SHIFT) | ||
27 | #define MX25_OTG_PM_BIT (1 << 24) | ||
28 | #define MX25_OTG_PP_BIT (1 << 11) | ||
29 | #define MX25_OTG_OCPOL_BIT (1 << 3) | ||
30 | |||
31 | #define MX25_H1_SIC_SHIFT 21 | ||
32 | #define MX25_H1_SIC_MASK (0x3 << MX25_H1_SIC_SHIFT) | ||
33 | #define MX25_H1_PP_BIT (1 << 18) | ||
34 | #define MX25_H1_PM_BIT (1 << 16) | ||
35 | #define MX25_H1_IPPUE_UP_BIT (1 << 7) | ||
36 | #define MX25_H1_IPPUE_DOWN_BIT (1 << 6) | ||
37 | #define MX25_H1_TLL_BIT (1 << 5) | ||
38 | #define MX25_H1_USBTE_BIT (1 << 4) | ||
39 | #define MX25_H1_OCPOL_BIT (1 << 2) | ||
40 | |||
41 | int mx25_initialize_usb_hw(int port, unsigned int flags) | ||
42 | { | ||
43 | unsigned int v; | ||
44 | |||
45 | v = readl(MX25_IO_ADDRESS(MX25_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET)); | ||
46 | |||
47 | switch (port) { | ||
48 | case 0: /* OTG port */ | ||
49 | v &= ~(MX25_OTG_SIC_MASK | MX25_OTG_PM_BIT | MX25_OTG_PP_BIT | | ||
50 | MX25_OTG_OCPOL_BIT); | ||
51 | v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX25_OTG_SIC_SHIFT; | ||
52 | |||
53 | if (!(flags & MXC_EHCI_POWER_PINS_ENABLED)) | ||
54 | v |= MX25_OTG_PM_BIT; | ||
55 | |||
56 | if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH) | ||
57 | v |= MX25_OTG_PP_BIT; | ||
58 | |||
59 | if (!(flags & MXC_EHCI_OC_PIN_ACTIVE_LOW)) | ||
60 | v |= MX25_OTG_OCPOL_BIT; | ||
61 | |||
62 | break; | ||
63 | case 1: /* H1 port */ | ||
64 | v &= ~(MX25_H1_SIC_MASK | MX25_H1_PM_BIT | MX25_H1_PP_BIT | | ||
65 | MX25_H1_OCPOL_BIT | MX25_H1_TLL_BIT | MX25_H1_USBTE_BIT | | ||
66 | MX25_H1_IPPUE_DOWN_BIT | MX25_H1_IPPUE_UP_BIT); | ||
67 | v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX25_H1_SIC_SHIFT; | ||
68 | |||
69 | if (!(flags & MXC_EHCI_POWER_PINS_ENABLED)) | ||
70 | v |= MX25_H1_PM_BIT; | ||
71 | |||
72 | if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH) | ||
73 | v |= MX25_H1_PP_BIT; | ||
74 | |||
75 | if (!(flags & MXC_EHCI_OC_PIN_ACTIVE_LOW)) | ||
76 | v |= MX25_H1_OCPOL_BIT; | ||
77 | |||
78 | if (!(flags & MXC_EHCI_TTL_ENABLED)) | ||
79 | v |= MX25_H1_TLL_BIT; | ||
80 | |||
81 | if (flags & MXC_EHCI_INTERNAL_PHY) | ||
82 | v |= MX25_H1_USBTE_BIT; | ||
83 | |||
84 | if (flags & MXC_EHCI_IPPUE_DOWN) | ||
85 | v |= MX25_H1_IPPUE_DOWN_BIT; | ||
86 | |||
87 | if (flags & MXC_EHCI_IPPUE_UP) | ||
88 | v |= MX25_H1_IPPUE_UP_BIT; | ||
89 | |||
90 | break; | ||
91 | default: | ||
92 | return -EINVAL; | ||
93 | } | ||
94 | |||
95 | writel(v, MX25_IO_ADDRESS(MX25_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET)); | ||
96 | |||
97 | return 0; | ||
98 | } | ||
99 | |||
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c deleted file mode 100644 index e77cc3af6db2..000000000000 --- a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c +++ /dev/null | |||
@@ -1,310 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Eric Benard - eric@eukrea.com | ||
3 | * | ||
4 | * Based on pcm970-baseboard.c which is : | ||
5 | * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License | ||
9 | * as published by the Free Software Foundation; either version 2 | ||
10 | * of the License, or (at your option) any later version. | ||
11 | * This program is distributed in the hope that it will be useful, | ||
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | * GNU General Public License for more details. | ||
15 | * | ||
16 | * You should have received a copy of the GNU General Public License | ||
17 | * along with this program; if not, write to the Free Software | ||
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, | ||
19 | * MA 02110-1301, USA. | ||
20 | */ | ||
21 | |||
22 | #include <linux/gpio.h> | ||
23 | #include <linux/leds.h> | ||
24 | #include <linux/platform_device.h> | ||
25 | #include <linux/input.h> | ||
26 | #include <linux/spi/spi.h> | ||
27 | #include <video/platform_lcd.h> | ||
28 | |||
29 | #include <asm/mach-types.h> | ||
30 | #include <asm/mach/arch.h> | ||
31 | |||
32 | #include "common.h" | ||
33 | #include "devices-imx25.h" | ||
34 | #include "hardware.h" | ||
35 | #include "iomux-mx25.h" | ||
36 | #include "mx25.h" | ||
37 | |||
38 | static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = { | ||
39 | /* LCD */ | ||
40 | MX25_PAD_LD0__LD0, | ||
41 | MX25_PAD_LD1__LD1, | ||
42 | MX25_PAD_LD2__LD2, | ||
43 | MX25_PAD_LD3__LD3, | ||
44 | MX25_PAD_LD4__LD4, | ||
45 | MX25_PAD_LD5__LD5, | ||
46 | MX25_PAD_LD6__LD6, | ||
47 | MX25_PAD_LD7__LD7, | ||
48 | MX25_PAD_LD8__LD8, | ||
49 | MX25_PAD_LD9__LD9, | ||
50 | MX25_PAD_LD10__LD10, | ||
51 | MX25_PAD_LD11__LD11, | ||
52 | MX25_PAD_LD12__LD12, | ||
53 | MX25_PAD_LD13__LD13, | ||
54 | MX25_PAD_LD14__LD14, | ||
55 | MX25_PAD_LD15__LD15, | ||
56 | MX25_PAD_GPIO_E__LD16, | ||
57 | MX25_PAD_GPIO_F__LD17, | ||
58 | MX25_PAD_HSYNC__HSYNC, | ||
59 | MX25_PAD_VSYNC__VSYNC, | ||
60 | MX25_PAD_LSCLK__LSCLK, | ||
61 | MX25_PAD_OE_ACD__OE_ACD, | ||
62 | MX25_PAD_CONTRAST__CONTRAST, | ||
63 | /* LCD_PWR */ | ||
64 | MX25_PAD_PWM__GPIO_1_26, | ||
65 | /* LED */ | ||
66 | MX25_PAD_POWER_FAIL__GPIO_3_19, | ||
67 | /* SWITCH */ | ||
68 | MX25_PAD_VSTBY_ACK__GPIO_3_18, | ||
69 | /* UART2 */ | ||
70 | MX25_PAD_UART2_RTS__UART2_RTS, | ||
71 | MX25_PAD_UART2_CTS__UART2_CTS, | ||
72 | MX25_PAD_UART2_TXD__UART2_TXD, | ||
73 | MX25_PAD_UART2_RXD__UART2_RXD, | ||
74 | /* SD1 */ | ||
75 | MX25_PAD_SD1_CMD__SD1_CMD, | ||
76 | MX25_PAD_SD1_CLK__SD1_CLK, | ||
77 | MX25_PAD_SD1_DATA0__SD1_DATA0, | ||
78 | MX25_PAD_SD1_DATA1__SD1_DATA1, | ||
79 | MX25_PAD_SD1_DATA2__SD1_DATA2, | ||
80 | MX25_PAD_SD1_DATA3__SD1_DATA3, | ||
81 | /* SD1 CD */ | ||
82 | MX25_PAD_DE_B__GPIO_2_20, | ||
83 | /* I2S */ | ||
84 | MX25_PAD_KPP_COL3__AUD5_TXFS, | ||
85 | MX25_PAD_KPP_COL2__AUD5_TXC, | ||
86 | MX25_PAD_KPP_COL1__AUD5_RXD, | ||
87 | MX25_PAD_KPP_COL0__AUD5_TXD, | ||
88 | /* CAN */ | ||
89 | MX25_PAD_GPIO_D__CAN2_RX, | ||
90 | MX25_PAD_GPIO_C__CAN2_TX, | ||
91 | /* SPI1 */ | ||
92 | MX25_PAD_CSPI1_MOSI__CSPI1_MOSI, | ||
93 | MX25_PAD_CSPI1_MISO__CSPI1_MISO, | ||
94 | MX25_PAD_CSPI1_SS0__GPIO_1_16, | ||
95 | MX25_PAD_CSPI1_SS1__GPIO_1_17, | ||
96 | MX25_PAD_CSPI1_SCLK__CSPI1_SCLK, | ||
97 | MX25_PAD_CSPI1_RDY__GPIO_2_22, | ||
98 | }; | ||
99 | |||
100 | #define GPIO_LED1 IMX_GPIO_NR(3, 19) | ||
101 | #define GPIO_SWITCH1 IMX_GPIO_NR(3, 18) | ||
102 | #define GPIO_SD1CD IMX_GPIO_NR(2, 20) | ||
103 | #define GPIO_LCDPWR IMX_GPIO_NR(1, 26) | ||
104 | #define GPIO_SPI1_SS0 IMX_GPIO_NR(1, 16) | ||
105 | #define GPIO_SPI1_SS1 IMX_GPIO_NR(1, 17) | ||
106 | #define GPIO_SPI1_IRQ IMX_GPIO_NR(2, 22) | ||
107 | |||
108 | static struct imx_fb_videomode eukrea_mximxsd_modes[] = { | ||
109 | { | ||
110 | .mode = { | ||
111 | .name = "CMO-QVGA", | ||
112 | .refresh = 60, | ||
113 | .xres = 320, | ||
114 | .yres = 240, | ||
115 | .pixclock = KHZ2PICOS(6500), | ||
116 | .left_margin = 30, | ||
117 | .right_margin = 38, | ||
118 | .upper_margin = 20, | ||
119 | .lower_margin = 3, | ||
120 | .hsync_len = 15, | ||
121 | .vsync_len = 4, | ||
122 | }, | ||
123 | .bpp = 16, | ||
124 | .pcr = 0xCAD08B80, | ||
125 | }, { | ||
126 | .mode = { | ||
127 | .name = "DVI-VGA", | ||
128 | .refresh = 60, | ||
129 | .xres = 640, | ||
130 | .yres = 480, | ||
131 | .pixclock = 32000, | ||
132 | .hsync_len = 7, | ||
133 | .left_margin = 100, | ||
134 | .right_margin = 100, | ||
135 | .vsync_len = 7, | ||
136 | .upper_margin = 7, | ||
137 | .lower_margin = 100, | ||
138 | }, | ||
139 | .pcr = 0xFA208B80, | ||
140 | .bpp = 16, | ||
141 | }, { | ||
142 | .mode = { | ||
143 | .name = "DVI-SVGA", | ||
144 | .refresh = 60, | ||
145 | .xres = 800, | ||
146 | .yres = 600, | ||
147 | .pixclock = 25000, | ||
148 | .hsync_len = 7, | ||
149 | .left_margin = 75, | ||
150 | .right_margin = 75, | ||
151 | .vsync_len = 7, | ||
152 | .upper_margin = 7, | ||
153 | .lower_margin = 75, | ||
154 | }, | ||
155 | .pcr = 0xFA208B80, | ||
156 | .bpp = 16, | ||
157 | }, | ||
158 | }; | ||
159 | |||
160 | static const struct imx_fb_platform_data eukrea_mximxsd_fb_pdata __initconst = { | ||
161 | .mode = eukrea_mximxsd_modes, | ||
162 | .num_modes = ARRAY_SIZE(eukrea_mximxsd_modes), | ||
163 | .pwmr = 0x00A903FF, | ||
164 | .lscr1 = 0x00120300, | ||
165 | .dmacr = 0x00040060, | ||
166 | }; | ||
167 | |||
168 | static void eukrea_mbimxsd_lcd_power_set(struct plat_lcd_data *pd, | ||
169 | unsigned int power) | ||
170 | { | ||
171 | if (power) | ||
172 | gpio_direction_output(GPIO_LCDPWR, 1); | ||
173 | else | ||
174 | gpio_direction_output(GPIO_LCDPWR, 0); | ||
175 | } | ||
176 | |||
177 | static struct plat_lcd_data eukrea_mbimxsd_lcd_power_data = { | ||
178 | .set_power = eukrea_mbimxsd_lcd_power_set, | ||
179 | }; | ||
180 | |||
181 | static struct platform_device eukrea_mbimxsd_lcd_powerdev = { | ||
182 | .name = "platform-lcd", | ||
183 | .dev.platform_data = &eukrea_mbimxsd_lcd_power_data, | ||
184 | }; | ||
185 | |||
186 | static const struct gpio_led eukrea_mbimxsd_leds[] __initconst = { | ||
187 | { | ||
188 | .name = "led1", | ||
189 | .default_trigger = "heartbeat", | ||
190 | .active_low = 1, | ||
191 | .gpio = GPIO_LED1, | ||
192 | }, | ||
193 | }; | ||
194 | |||
195 | static const struct gpio_led_platform_data | ||
196 | eukrea_mbimxsd_led_info __initconst = { | ||
197 | .leds = eukrea_mbimxsd_leds, | ||
198 | .num_leds = ARRAY_SIZE(eukrea_mbimxsd_leds), | ||
199 | }; | ||
200 | |||
201 | static struct gpio_keys_button eukrea_mbimxsd_gpio_buttons[] = { | ||
202 | { | ||
203 | .gpio = GPIO_SWITCH1, | ||
204 | .code = BTN_0, | ||
205 | .desc = "BP1", | ||
206 | .active_low = 1, | ||
207 | .wakeup = 1, | ||
208 | }, | ||
209 | }; | ||
210 | |||
211 | static const struct gpio_keys_platform_data | ||
212 | eukrea_mbimxsd_button_data __initconst = { | ||
213 | .buttons = eukrea_mbimxsd_gpio_buttons, | ||
214 | .nbuttons = ARRAY_SIZE(eukrea_mbimxsd_gpio_buttons), | ||
215 | }; | ||
216 | |||
217 | static struct platform_device *platform_devices[] __initdata = { | ||
218 | &eukrea_mbimxsd_lcd_powerdev, | ||
219 | }; | ||
220 | |||
221 | static const struct imxuart_platform_data uart_pdata __initconst = { | ||
222 | .flags = IMXUART_HAVE_RTSCTS, | ||
223 | }; | ||
224 | |||
225 | static struct i2c_board_info eukrea_mbimxsd_i2c_devices[] = { | ||
226 | { | ||
227 | I2C_BOARD_INFO("tlv320aic23", 0x1a), | ||
228 | }, | ||
229 | }; | ||
230 | |||
231 | static const | ||
232 | struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata __initconst = { | ||
233 | .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE, | ||
234 | }; | ||
235 | |||
236 | static struct esdhc_platform_data sd1_pdata = { | ||
237 | .cd_gpio = GPIO_SD1CD, | ||
238 | .cd_type = ESDHC_CD_GPIO, | ||
239 | .wp_type = ESDHC_WP_NONE, | ||
240 | }; | ||
241 | |||
242 | static struct spi_board_info eukrea_mbimxsd25_spi_board_info[] __initdata = { | ||
243 | { | ||
244 | .modalias = "spidev", | ||
245 | .max_speed_hz = 20000000, | ||
246 | .bus_num = 0, | ||
247 | .chip_select = 0, | ||
248 | .mode = SPI_MODE_0, | ||
249 | }, | ||
250 | { | ||
251 | .modalias = "spidev", | ||
252 | .max_speed_hz = 20000000, | ||
253 | .bus_num = 0, | ||
254 | .chip_select = 1, | ||
255 | .mode = SPI_MODE_0, | ||
256 | }, | ||
257 | }; | ||
258 | |||
259 | static int eukrea_mbimxsd25_spi_cs[] = {GPIO_SPI1_SS0, GPIO_SPI1_SS1}; | ||
260 | |||
261 | static const struct spi_imx_master eukrea_mbimxsd25_spi0_data __initconst = { | ||
262 | .chipselect = eukrea_mbimxsd25_spi_cs, | ||
263 | .num_chipselect = ARRAY_SIZE(eukrea_mbimxsd25_spi_cs), | ||
264 | }; | ||
265 | |||
266 | /* | ||
267 | * system init for baseboard usage. Will be called by cpuimx25 init. | ||
268 | * | ||
269 | * Add platform devices present on this baseboard and init | ||
270 | * them from CPU side as far as required to use them later on | ||
271 | */ | ||
272 | void __init eukrea_mbimxsd25_baseboard_init(void) | ||
273 | { | ||
274 | if (mxc_iomux_v3_setup_multiple_pads(eukrea_mbimxsd_pads, | ||
275 | ARRAY_SIZE(eukrea_mbimxsd_pads))) | ||
276 | printk(KERN_ERR "error setting mbimxsd pads !\n"); | ||
277 | |||
278 | imx25_add_imx_uart1(&uart_pdata); | ||
279 | imx25_add_imx_fb(&eukrea_mximxsd_fb_pdata); | ||
280 | imx25_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata); | ||
281 | |||
282 | imx25_add_flexcan1(); | ||
283 | imx25_add_sdhci_esdhc_imx(0, &sd1_pdata); | ||
284 | |||
285 | gpio_request(GPIO_LED1, "LED1"); | ||
286 | gpio_direction_output(GPIO_LED1, 1); | ||
287 | gpio_free(GPIO_LED1); | ||
288 | |||
289 | gpio_request(GPIO_SWITCH1, "SWITCH1"); | ||
290 | gpio_direction_input(GPIO_SWITCH1); | ||
291 | gpio_free(GPIO_SWITCH1); | ||
292 | |||
293 | gpio_request(GPIO_LCDPWR, "LCDPWR"); | ||
294 | gpio_direction_output(GPIO_LCDPWR, 1); | ||
295 | |||
296 | i2c_register_board_info(0, eukrea_mbimxsd_i2c_devices, | ||
297 | ARRAY_SIZE(eukrea_mbimxsd_i2c_devices)); | ||
298 | |||
299 | gpio_request(GPIO_SPI1_IRQ, "SPI1_IRQ"); | ||
300 | gpio_direction_input(GPIO_SPI1_IRQ); | ||
301 | gpio_free(GPIO_SPI1_IRQ); | ||
302 | imx25_add_spi_imx0(&eukrea_mbimxsd25_spi0_data); | ||
303 | spi_register_board_info(eukrea_mbimxsd25_spi_board_info, | ||
304 | ARRAY_SIZE(eukrea_mbimxsd25_spi_board_info)); | ||
305 | |||
306 | platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices)); | ||
307 | gpio_led_register_device(-1, &eukrea_mbimxsd_led_info); | ||
308 | imx_add_gpio_keys(&eukrea_mbimxsd_button_data); | ||
309 | imx_add_platform_device("eukrea_tlv320", 0, NULL, 0, NULL, 0); | ||
310 | } | ||
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c index 14d6c8249b76..6edc940e0865 100644 --- a/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c +++ b/arch/arm/mach-imx/eukrea_mbimxsd35-baseboard.c | |||
@@ -100,7 +100,7 @@ static struct mx3fb_platform_data mx3fb_pdata __initdata = { | |||
100 | .num_modes = ARRAY_SIZE(fb_modedb), | 100 | .num_modes = ARRAY_SIZE(fb_modedb), |
101 | }; | 101 | }; |
102 | 102 | ||
103 | static iomux_v3_cfg_t eukrea_mbimxsd_pads[] = { | 103 | static const iomux_v3_cfg_t eukrea_mbimxsd_pads[] __initconst = { |
104 | /* LCD */ | 104 | /* LCD */ |
105 | MX35_PAD_LD0__IPU_DISPB_DAT_0, | 105 | MX35_PAD_LD0__IPU_DISPB_DAT_0, |
106 | MX35_PAD_LD1__IPU_DISPB_DAT_1, | 106 | MX35_PAD_LD1__IPU_DISPB_DAT_1, |
diff --git a/arch/arm/mach-imx/gpc.c b/arch/arm/mach-imx/gpc.c index 745caa18ab2c..4d60005e9277 100644 --- a/arch/arm/mach-imx/gpc.c +++ b/arch/arm/mach-imx/gpc.c | |||
@@ -10,15 +10,25 @@ | |||
10 | * http://www.gnu.org/copyleft/gpl.html | 10 | * http://www.gnu.org/copyleft/gpl.html |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/clk.h> | ||
14 | #include <linux/delay.h> | ||
13 | #include <linux/io.h> | 15 | #include <linux/io.h> |
14 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
15 | #include <linux/of.h> | 17 | #include <linux/of.h> |
16 | #include <linux/of_address.h> | 18 | #include <linux/of_address.h> |
17 | #include <linux/of_irq.h> | 19 | #include <linux/of_irq.h> |
20 | #include <linux/platform_device.h> | ||
21 | #include <linux/pm_domain.h> | ||
22 | #include <linux/regulator/consumer.h> | ||
18 | #include <linux/irqchip/arm-gic.h> | 23 | #include <linux/irqchip/arm-gic.h> |
19 | #include "common.h" | 24 | #include "common.h" |
25 | #include "hardware.h" | ||
20 | 26 | ||
27 | #define GPC_CNTR 0x000 | ||
21 | #define GPC_IMR1 0x008 | 28 | #define GPC_IMR1 0x008 |
29 | #define GPC_PGC_GPU_PDN 0x260 | ||
30 | #define GPC_PGC_GPU_PUPSCR 0x264 | ||
31 | #define GPC_PGC_GPU_PDNSCR 0x268 | ||
22 | #define GPC_PGC_CPU_PDN 0x2a0 | 32 | #define GPC_PGC_CPU_PDN 0x2a0 |
23 | #define GPC_PGC_CPU_PUPSCR 0x2a4 | 33 | #define GPC_PGC_CPU_PUPSCR 0x2a4 |
24 | #define GPC_PGC_CPU_PDNSCR 0x2a8 | 34 | #define GPC_PGC_CPU_PDNSCR 0x2a8 |
@@ -26,6 +36,19 @@ | |||
26 | #define GPC_PGC_SW_SHIFT 0x0 | 36 | #define GPC_PGC_SW_SHIFT 0x0 |
27 | 37 | ||
28 | #define IMR_NUM 4 | 38 | #define IMR_NUM 4 |
39 | #define GPC_MAX_IRQS (IMR_NUM * 32) | ||
40 | |||
41 | #define GPU_VPU_PUP_REQ BIT(1) | ||
42 | #define GPU_VPU_PDN_REQ BIT(0) | ||
43 | |||
44 | #define GPC_CLK_MAX 6 | ||
45 | |||
46 | struct pu_domain { | ||
47 | struct generic_pm_domain base; | ||
48 | struct regulator *reg; | ||
49 | struct clk *clk[GPC_CLK_MAX]; | ||
50 | int num_clks; | ||
51 | }; | ||
29 | 52 | ||
30 | static void __iomem *gpc_base; | 53 | static void __iomem *gpc_base; |
31 | static u32 gpc_wake_irqs[IMR_NUM]; | 54 | static u32 gpc_wake_irqs[IMR_NUM]; |
@@ -77,17 +100,17 @@ void imx_gpc_post_resume(void) | |||
77 | 100 | ||
78 | static int imx_gpc_irq_set_wake(struct irq_data *d, unsigned int on) | 101 | static int imx_gpc_irq_set_wake(struct irq_data *d, unsigned int on) |
79 | { | 102 | { |
80 | unsigned int idx = d->hwirq / 32 - 1; | 103 | unsigned int idx = d->hwirq / 32; |
81 | u32 mask; | 104 | u32 mask; |
82 | 105 | ||
83 | /* Sanity check for SPI irq */ | ||
84 | if (d->hwirq < 32) | ||
85 | return -EINVAL; | ||
86 | |||
87 | mask = 1 << d->hwirq % 32; | 106 | mask = 1 << d->hwirq % 32; |
88 | gpc_wake_irqs[idx] = on ? gpc_wake_irqs[idx] | mask : | 107 | gpc_wake_irqs[idx] = on ? gpc_wake_irqs[idx] | mask : |
89 | gpc_wake_irqs[idx] & ~mask; | 108 | gpc_wake_irqs[idx] & ~mask; |
90 | 109 | ||
110 | /* | ||
111 | * Do *not* call into the parent, as the GIC doesn't have any | ||
112 | * wake-up facility... | ||
113 | */ | ||
91 | return 0; | 114 | return 0; |
92 | } | 115 | } |
93 | 116 | ||
@@ -117,7 +140,7 @@ void imx_gpc_hwirq_unmask(unsigned int hwirq) | |||
117 | void __iomem *reg; | 140 | void __iomem *reg; |
118 | u32 val; | 141 | u32 val; |
119 | 142 | ||
120 | reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4; | 143 | reg = gpc_base + GPC_IMR1 + hwirq / 32 * 4; |
121 | val = readl_relaxed(reg); | 144 | val = readl_relaxed(reg); |
122 | val &= ~(1 << hwirq % 32); | 145 | val &= ~(1 << hwirq % 32); |
123 | writel_relaxed(val, reg); | 146 | writel_relaxed(val, reg); |
@@ -128,7 +151,7 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) | |||
128 | void __iomem *reg; | 151 | void __iomem *reg; |
129 | u32 val; | 152 | u32 val; |
130 | 153 | ||
131 | reg = gpc_base + GPC_IMR1 + (hwirq / 32 - 1) * 4; | 154 | reg = gpc_base + GPC_IMR1 + hwirq / 32 * 4; |
132 | val = readl_relaxed(reg); | 155 | val = readl_relaxed(reg); |
133 | val |= 1 << (hwirq % 32); | 156 | val |= 1 << (hwirq % 32); |
134 | writel_relaxed(val, reg); | 157 | writel_relaxed(val, reg); |
@@ -136,37 +159,319 @@ void imx_gpc_hwirq_mask(unsigned int hwirq) | |||
136 | 159 | ||
137 | static void imx_gpc_irq_unmask(struct irq_data *d) | 160 | static void imx_gpc_irq_unmask(struct irq_data *d) |
138 | { | 161 | { |
139 | /* Sanity check for SPI irq */ | ||
140 | if (d->hwirq < 32) | ||
141 | return; | ||
142 | |||
143 | imx_gpc_hwirq_unmask(d->hwirq); | 162 | imx_gpc_hwirq_unmask(d->hwirq); |
163 | irq_chip_unmask_parent(d); | ||
144 | } | 164 | } |
145 | 165 | ||
146 | static void imx_gpc_irq_mask(struct irq_data *d) | 166 | static void imx_gpc_irq_mask(struct irq_data *d) |
147 | { | 167 | { |
148 | /* Sanity check for SPI irq */ | ||
149 | if (d->hwirq < 32) | ||
150 | return; | ||
151 | |||
152 | imx_gpc_hwirq_mask(d->hwirq); | 168 | imx_gpc_hwirq_mask(d->hwirq); |
169 | irq_chip_mask_parent(d); | ||
153 | } | 170 | } |
154 | 171 | ||
155 | void __init imx_gpc_init(void) | 172 | static struct irq_chip imx_gpc_chip = { |
173 | .name = "GPC", | ||
174 | .irq_eoi = irq_chip_eoi_parent, | ||
175 | .irq_mask = imx_gpc_irq_mask, | ||
176 | .irq_unmask = imx_gpc_irq_unmask, | ||
177 | .irq_retrigger = irq_chip_retrigger_hierarchy, | ||
178 | .irq_set_wake = imx_gpc_irq_set_wake, | ||
179 | #ifdef CONFIG_SMP | ||
180 | .irq_set_affinity = irq_chip_set_affinity_parent, | ||
181 | #endif | ||
182 | }; | ||
183 | |||
184 | static int imx_gpc_domain_xlate(struct irq_domain *domain, | ||
185 | struct device_node *controller, | ||
186 | const u32 *intspec, | ||
187 | unsigned int intsize, | ||
188 | unsigned long *out_hwirq, | ||
189 | unsigned int *out_type) | ||
156 | { | 190 | { |
157 | struct device_node *np; | 191 | if (domain->of_node != controller) |
192 | return -EINVAL; /* Shouldn't happen, really... */ | ||
193 | if (intsize != 3) | ||
194 | return -EINVAL; /* Not GIC compliant */ | ||
195 | if (intspec[0] != 0) | ||
196 | return -EINVAL; /* No PPI should point to this domain */ | ||
197 | |||
198 | *out_hwirq = intspec[1]; | ||
199 | *out_type = intspec[2]; | ||
200 | return 0; | ||
201 | } | ||
202 | |||
203 | static int imx_gpc_domain_alloc(struct irq_domain *domain, | ||
204 | unsigned int irq, | ||
205 | unsigned int nr_irqs, void *data) | ||
206 | { | ||
207 | struct of_phandle_args *args = data; | ||
208 | struct of_phandle_args parent_args; | ||
209 | irq_hw_number_t hwirq; | ||
158 | int i; | 210 | int i; |
159 | 211 | ||
160 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpc"); | 212 | if (args->args_count != 3) |
161 | gpc_base = of_iomap(np, 0); | 213 | return -EINVAL; /* Not GIC compliant */ |
162 | WARN_ON(!gpc_base); | 214 | if (args->args[0] != 0) |
215 | return -EINVAL; /* No PPI should point to this domain */ | ||
216 | |||
217 | hwirq = args->args[1]; | ||
218 | if (hwirq >= GPC_MAX_IRQS) | ||
219 | return -EINVAL; /* Can't deal with this */ | ||
220 | |||
221 | for (i = 0; i < nr_irqs; i++) | ||
222 | irq_domain_set_hwirq_and_chip(domain, irq + i, hwirq + i, | ||
223 | &imx_gpc_chip, NULL); | ||
224 | |||
225 | parent_args = *args; | ||
226 | parent_args.np = domain->parent->of_node; | ||
227 | return irq_domain_alloc_irqs_parent(domain, irq, nr_irqs, &parent_args); | ||
228 | } | ||
229 | |||
230 | static struct irq_domain_ops imx_gpc_domain_ops = { | ||
231 | .xlate = imx_gpc_domain_xlate, | ||
232 | .alloc = imx_gpc_domain_alloc, | ||
233 | .free = irq_domain_free_irqs_common, | ||
234 | }; | ||
235 | |||
236 | static int __init imx_gpc_init(struct device_node *node, | ||
237 | struct device_node *parent) | ||
238 | { | ||
239 | struct irq_domain *parent_domain, *domain; | ||
240 | int i; | ||
241 | |||
242 | if (!parent) { | ||
243 | pr_err("%s: no parent, giving up\n", node->full_name); | ||
244 | return -ENODEV; | ||
245 | } | ||
246 | |||
247 | parent_domain = irq_find_host(parent); | ||
248 | if (!parent_domain) { | ||
249 | pr_err("%s: unable to obtain parent domain\n", node->full_name); | ||
250 | return -ENXIO; | ||
251 | } | ||
252 | |||
253 | gpc_base = of_iomap(node, 0); | ||
254 | if (WARN_ON(!gpc_base)) | ||
255 | return -ENOMEM; | ||
256 | |||
257 | domain = irq_domain_add_hierarchy(parent_domain, 0, GPC_MAX_IRQS, | ||
258 | node, &imx_gpc_domain_ops, | ||
259 | NULL); | ||
260 | if (!domain) { | ||
261 | iounmap(gpc_base); | ||
262 | return -ENOMEM; | ||
263 | } | ||
163 | 264 | ||
164 | /* Initially mask all interrupts */ | 265 | /* Initially mask all interrupts */ |
165 | for (i = 0; i < IMR_NUM; i++) | 266 | for (i = 0; i < IMR_NUM; i++) |
166 | writel_relaxed(~0, gpc_base + GPC_IMR1 + i * 4); | 267 | writel_relaxed(~0, gpc_base + GPC_IMR1 + i * 4); |
167 | 268 | ||
168 | /* Register GPC as the secondary interrupt controller behind GIC */ | 269 | return 0; |
169 | gic_arch_extn.irq_mask = imx_gpc_irq_mask; | 270 | } |
170 | gic_arch_extn.irq_unmask = imx_gpc_irq_unmask; | 271 | |
171 | gic_arch_extn.irq_set_wake = imx_gpc_irq_set_wake; | 272 | /* |
273 | * We cannot use the IRQCHIP_DECLARE macro that lives in | ||
274 | * drivers/irqchip, so we're forced to roll our own. Not very nice. | ||
275 | */ | ||
276 | OF_DECLARE_2(irqchip, imx_gpc, "fsl,imx6q-gpc", imx_gpc_init); | ||
277 | |||
278 | void __init imx_gpc_check_dt(void) | ||
279 | { | ||
280 | struct device_node *np; | ||
281 | |||
282 | np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-gpc"); | ||
283 | if (WARN_ON(!np || | ||
284 | !of_find_property(np, "interrupt-controller", NULL))) | ||
285 | pr_warn("Outdated DT detected, system is about to crash!!!\n"); | ||
286 | } | ||
287 | |||
288 | #ifdef CONFIG_PM_GENERIC_DOMAINS | ||
289 | |||
290 | static void _imx6q_pm_pu_power_off(struct generic_pm_domain *genpd) | ||
291 | { | ||
292 | int iso, iso2sw; | ||
293 | u32 val; | ||
294 | |||
295 | /* Read ISO and ISO2SW power down delays */ | ||
296 | val = readl_relaxed(gpc_base + GPC_PGC_GPU_PDNSCR); | ||
297 | iso = val & 0x3f; | ||
298 | iso2sw = (val >> 8) & 0x3f; | ||
299 | |||
300 | /* Gate off PU domain when GPU/VPU when powered down */ | ||
301 | writel_relaxed(0x1, gpc_base + GPC_PGC_GPU_PDN); | ||
302 | |||
303 | /* Request GPC to power down GPU/VPU */ | ||
304 | val = readl_relaxed(gpc_base + GPC_CNTR); | ||
305 | val |= GPU_VPU_PDN_REQ; | ||
306 | writel_relaxed(val, gpc_base + GPC_CNTR); | ||
307 | |||
308 | /* Wait ISO + ISO2SW IPG clock cycles */ | ||
309 | ndelay((iso + iso2sw) * 1000 / 66); | ||
310 | } | ||
311 | |||
312 | static int imx6q_pm_pu_power_off(struct generic_pm_domain *genpd) | ||
313 | { | ||
314 | struct pu_domain *pu = container_of(genpd, struct pu_domain, base); | ||
315 | |||
316 | _imx6q_pm_pu_power_off(genpd); | ||
317 | |||
318 | if (pu->reg) | ||
319 | regulator_disable(pu->reg); | ||
320 | |||
321 | return 0; | ||
322 | } | ||
323 | |||
324 | static int imx6q_pm_pu_power_on(struct generic_pm_domain *genpd) | ||
325 | { | ||
326 | struct pu_domain *pu = container_of(genpd, struct pu_domain, base); | ||
327 | int i, ret, sw, sw2iso; | ||
328 | u32 val; | ||
329 | |||
330 | if (pu->reg) | ||
331 | ret = regulator_enable(pu->reg); | ||
332 | if (pu->reg && ret) { | ||
333 | pr_err("%s: failed to enable regulator: %d\n", __func__, ret); | ||
334 | return ret; | ||
335 | } | ||
336 | |||
337 | /* Enable reset clocks for all devices in the PU domain */ | ||
338 | for (i = 0; i < pu->num_clks; i++) | ||
339 | clk_prepare_enable(pu->clk[i]); | ||
340 | |||
341 | /* Gate off PU domain when GPU/VPU when powered down */ | ||
342 | writel_relaxed(0x1, gpc_base + GPC_PGC_GPU_PDN); | ||
343 | |||
344 | /* Read ISO and ISO2SW power down delays */ | ||
345 | val = readl_relaxed(gpc_base + GPC_PGC_GPU_PUPSCR); | ||
346 | sw = val & 0x3f; | ||
347 | sw2iso = (val >> 8) & 0x3f; | ||
348 | |||
349 | /* Request GPC to power up GPU/VPU */ | ||
350 | val = readl_relaxed(gpc_base + GPC_CNTR); | ||
351 | val |= GPU_VPU_PUP_REQ; | ||
352 | writel_relaxed(val, gpc_base + GPC_CNTR); | ||
353 | |||
354 | /* Wait ISO + ISO2SW IPG clock cycles */ | ||
355 | ndelay((sw + sw2iso) * 1000 / 66); | ||
356 | |||
357 | /* Disable reset clocks for all devices in the PU domain */ | ||
358 | for (i = 0; i < pu->num_clks; i++) | ||
359 | clk_disable_unprepare(pu->clk[i]); | ||
360 | |||
361 | return 0; | ||
362 | } | ||
363 | |||
364 | static struct generic_pm_domain imx6q_arm_domain = { | ||
365 | .name = "ARM", | ||
366 | }; | ||
367 | |||
368 | static struct pu_domain imx6q_pu_domain = { | ||
369 | .base = { | ||
370 | .name = "PU", | ||
371 | .power_off = imx6q_pm_pu_power_off, | ||
372 | .power_on = imx6q_pm_pu_power_on, | ||
373 | .power_off_latency_ns = 25000, | ||
374 | .power_on_latency_ns = 2000000, | ||
375 | }, | ||
376 | }; | ||
377 | |||
378 | static struct generic_pm_domain imx6sl_display_domain = { | ||
379 | .name = "DISPLAY", | ||
380 | }; | ||
381 | |||
382 | static struct generic_pm_domain *imx_gpc_domains[] = { | ||
383 | &imx6q_arm_domain, | ||
384 | &imx6q_pu_domain.base, | ||
385 | &imx6sl_display_domain, | ||
386 | }; | ||
387 | |||
388 | static struct genpd_onecell_data imx_gpc_onecell_data = { | ||
389 | .domains = imx_gpc_domains, | ||
390 | .num_domains = ARRAY_SIZE(imx_gpc_domains), | ||
391 | }; | ||
392 | |||
393 | static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg) | ||
394 | { | ||
395 | struct clk *clk; | ||
396 | bool is_off; | ||
397 | int i; | ||
398 | |||
399 | imx6q_pu_domain.reg = pu_reg; | ||
400 | |||
401 | for (i = 0; ; i++) { | ||
402 | clk = of_clk_get(dev->of_node, i); | ||
403 | if (IS_ERR(clk)) | ||
404 | break; | ||
405 | if (i >= GPC_CLK_MAX) { | ||
406 | dev_err(dev, "more than %d clocks\n", GPC_CLK_MAX); | ||
407 | goto clk_err; | ||
408 | } | ||
409 | imx6q_pu_domain.clk[i] = clk; | ||
410 | } | ||
411 | imx6q_pu_domain.num_clks = i; | ||
412 | |||
413 | is_off = IS_ENABLED(CONFIG_PM); | ||
414 | if (is_off) { | ||
415 | _imx6q_pm_pu_power_off(&imx6q_pu_domain.base); | ||
416 | } else { | ||
417 | /* | ||
418 | * Enable power if compiled without CONFIG_PM in case the | ||
419 | * bootloader disabled it. | ||
420 | */ | ||
421 | imx6q_pm_pu_power_on(&imx6q_pu_domain.base); | ||
422 | } | ||
423 | |||
424 | pm_genpd_init(&imx6q_pu_domain.base, NULL, is_off); | ||
425 | return of_genpd_add_provider_onecell(dev->of_node, | ||
426 | &imx_gpc_onecell_data); | ||
427 | |||
428 | clk_err: | ||
429 | while (i--) | ||
430 | clk_put(imx6q_pu_domain.clk[i]); | ||
431 | return -EINVAL; | ||
432 | } | ||
433 | |||
434 | #else | ||
435 | static inline int imx_gpc_genpd_init(struct device *dev, struct regulator *reg) | ||
436 | { | ||
437 | return 0; | ||
438 | } | ||
439 | #endif /* CONFIG_PM_GENERIC_DOMAINS */ | ||
440 | |||
441 | static int imx_gpc_probe(struct platform_device *pdev) | ||
442 | { | ||
443 | struct regulator *pu_reg; | ||
444 | int ret; | ||
445 | |||
446 | pu_reg = devm_regulator_get_optional(&pdev->dev, "pu"); | ||
447 | if (PTR_ERR(pu_reg) == -ENODEV) | ||
448 | pu_reg = NULL; | ||
449 | if (IS_ERR(pu_reg)) { | ||
450 | ret = PTR_ERR(pu_reg); | ||
451 | dev_err(&pdev->dev, "failed to get pu regulator: %d\n", ret); | ||
452 | return ret; | ||
453 | } | ||
454 | |||
455 | return imx_gpc_genpd_init(&pdev->dev, pu_reg); | ||
456 | } | ||
457 | |||
458 | static const struct of_device_id imx_gpc_dt_ids[] = { | ||
459 | { .compatible = "fsl,imx6q-gpc" }, | ||
460 | { .compatible = "fsl,imx6sl-gpc" }, | ||
461 | { } | ||
462 | }; | ||
463 | |||
464 | static struct platform_driver imx_gpc_driver = { | ||
465 | .driver = { | ||
466 | .name = "imx-gpc", | ||
467 | .owner = THIS_MODULE, | ||
468 | .of_match_table = imx_gpc_dt_ids, | ||
469 | }, | ||
470 | .probe = imx_gpc_probe, | ||
471 | }; | ||
472 | |||
473 | static int __init imx_pgc_init(void) | ||
474 | { | ||
475 | return platform_driver_register(&imx_gpc_driver); | ||
172 | } | 476 | } |
477 | subsys_initcall(imx_pgc_init); | ||
diff --git a/arch/arm/mach-imx/hardware.h b/arch/arm/mach-imx/hardware.h index 66b2b564c463..76af2c03c241 100644 --- a/arch/arm/mach-imx/hardware.h +++ b/arch/arm/mach-imx/hardware.h | |||
@@ -112,7 +112,6 @@ | |||
112 | #include "mx21.h" | 112 | #include "mx21.h" |
113 | #include "mx27.h" | 113 | #include "mx27.h" |
114 | #include "mx1.h" | 114 | #include "mx1.h" |
115 | #include "mx25.h" | ||
116 | 115 | ||
117 | #define imx_map_entry(soc, name, _type) { \ | 116 | #define imx_map_entry(soc, name, _type) { \ |
118 | .virtual = soc ## _IO_P2V(soc ## _ ## name ## _BASE_ADDR), \ | 117 | .virtual = soc ## _IO_P2V(soc ## _ ## name ## _BASE_ADDR), \ |
diff --git a/arch/arm/mach-imx/iomux-mx25.h b/arch/arm/mach-imx/iomux-mx25.h deleted file mode 100644 index be51e838375c..000000000000 --- a/arch/arm/mach-imx/iomux-mx25.h +++ /dev/null | |||
@@ -1,524 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/plat-mxc/include/mach/iomux-mx25.h | ||
3 | * | ||
4 | * Copyright (C) 2009 by Lothar Wassmann <LW@KARO-electronics.de> | ||
5 | * | ||
6 | * based on arch/arm/mach-mx25/mx25_pins.h | ||
7 | * Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved. | ||
8 | * and | ||
9 | * arch/arm/plat-mxc/include/mach/iomux-mx35.h | ||
10 | * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH <armlinux@phytec.de> | ||
11 | * | ||
12 | * The code contained herein is licensed under the GNU General Public | ||
13 | * License. You may obtain a copy of the GNU General Public License | ||
14 | * Version 2 or later at the following locations: | ||
15 | * | ||
16 | * http://www.opensource.org/licenses/gpl-license.html | ||
17 | * http://www.gnu.org/copyleft/gpl.html | ||
18 | */ | ||
19 | #ifndef __MACH_IOMUX_MX25_H__ | ||
20 | #define __MACH_IOMUX_MX25_H__ | ||
21 | |||
22 | #include "iomux-v3.h" | ||
23 | |||
24 | /* | ||
25 | * IOMUX/PAD Bit field definitions | ||
26 | */ | ||
27 | |||
28 | #define MX25_PAD_A10__A10 IOMUX_PAD(0x000, 0x008, 0x00, 0, 0, NO_PAD_CTRL) | ||
29 | #define MX25_PAD_A10__GPIO_4_0 IOMUX_PAD(0x000, 0x008, 0x05, 0, 0, NO_PAD_CTRL) | ||
30 | |||
31 | #define MX25_PAD_A13__A13 IOMUX_PAD(0x22C, 0x00c, 0x00, 0, 0, NO_PAD_CTRL) | ||
32 | #define MX25_PAD_A13__GPIO_4_1 IOMUX_PAD(0x22C, 0x00c, 0x05, 0, 0, NO_PAD_CTRL) | ||
33 | |||
34 | #define MX25_PAD_A14__A14 IOMUX_PAD(0x230, 0x010, 0x10, 0, 0, NO_PAD_CTRL) | ||
35 | #define MX25_PAD_A14__GPIO_2_0 IOMUX_PAD(0x230, 0x010, 0x15, 0, 0, NO_PAD_CTRL) | ||
36 | |||
37 | #define MX25_PAD_A15__A15 IOMUX_PAD(0x234, 0x014, 0x10, 0, 0, NO_PAD_CTRL) | ||
38 | #define MX25_PAD_A15__GPIO_2_1 IOMUX_PAD(0x234, 0x014, 0x15, 0, 0, NO_PAD_CTRL) | ||
39 | |||
40 | #define MX25_PAD_A16__A16 IOMUX_PAD(0x000, 0x018, 0x10, 0, 0, NO_PAD_CTRL) | ||
41 | #define MX25_PAD_A16__GPIO_2_2 IOMUX_PAD(0x000, 0x018, 0x15, 0, 0, NO_PAD_CTRL) | ||
42 | |||
43 | #define MX25_PAD_A17__A17 IOMUX_PAD(0x238, 0x01c, 0x10, 0, 0, NO_PAD_CTRL) | ||
44 | #define MX25_PAD_A17__GPIO_2_3 IOMUX_PAD(0x238, 0x01c, 0x15, 0, 0, NO_PAD_CTRL) | ||
45 | |||
46 | #define MX25_PAD_A18__A18 IOMUX_PAD(0x23c, 0x020, 0x10, 0, 0, NO_PAD_CTRL) | ||
47 | #define MX25_PAD_A18__GPIO_2_4 IOMUX_PAD(0x23c, 0x020, 0x15, 0, 0, NO_PAD_CTRL) | ||
48 | #define MX25_PAD_A18__FEC_COL IOMUX_PAD(0x23c, 0x020, 0x17, 0x504, 0, NO_PAD_CTRL) | ||
49 | |||
50 | #define MX25_PAD_A19__A19 IOMUX_PAD(0x240, 0x024, 0x10, 0, 0, NO_PAD_CTRL) | ||
51 | #define MX25_PAD_A19__FEC_RX_ER IOMUX_PAD(0x240, 0x024, 0x17, 0x518, 0, NO_PAD_CTRL) | ||
52 | #define MX25_PAD_A19__GPIO_2_5 IOMUX_PAD(0x240, 0x024, 0x15, 0, 0, NO_PAD_CTRL) | ||
53 | |||
54 | #define MX25_PAD_A20__A20 IOMUX_PAD(0x244, 0x028, 0x10, 0, 0, NO_PAD_CTRL) | ||
55 | #define MX25_PAD_A20__GPIO_2_6 IOMUX_PAD(0x244, 0x028, 0x15, 0, 0, NO_PAD_CTRL) | ||
56 | #define MX25_PAD_A20__FEC_RDATA2 IOMUX_PAD(0x244, 0x028, 0x17, 0x50c, 0, NO_PAD_CTRL) | ||
57 | |||
58 | #define MX25_PAD_A21__A21 IOMUX_PAD(0x248, 0x02c, 0x10, 0, 0, NO_PAD_CTRL) | ||
59 | #define MX25_PAD_A21__GPIO_2_7 IOMUX_PAD(0x248, 0x02c, 0x15, 0, 0, NO_PAD_CTRL) | ||
60 | #define MX25_PAD_A21__FEC_RDATA3 IOMUX_PAD(0x248, 0x02c, 0x17, 0x510, 0, NO_PAD_CTRL) | ||
61 | |||
62 | #define MX25_PAD_A22__A22 IOMUX_PAD(0x000, 0x030, 0x10, 0, 0, NO_PAD_CTRL) | ||
63 | #define MX25_PAD_A22__GPIO_2_8 IOMUX_PAD(0x000, 0x030, 0x15, 0, 0, NO_PAD_CTRL) | ||
64 | |||
65 | #define MX25_PAD_A23__A23 IOMUX_PAD(0x24c, 0x034, 0x10, 0, 0, NO_PAD_CTRL) | ||
66 | #define MX25_PAD_A23__GPIO_2_9 IOMUX_PAD(0x24c, 0x034, 0x15, 0, 0, NO_PAD_CTRL) | ||
67 | |||
68 | #define MX25_PAD_A24__A24 IOMUX_PAD(0x250, 0x038, 0x10, 0, 0, NO_PAD_CTRL) | ||
69 | #define MX25_PAD_A24__GPIO_2_10 IOMUX_PAD(0x250, 0x038, 0x15, 0, 0, NO_PAD_CTRL) | ||
70 | #define MX25_PAD_A24__FEC_RX_CLK IOMUX_PAD(0x250, 0x038, 0x17, 0x514, 0, NO_PAD_CTRL) | ||
71 | |||
72 | #define MX25_PAD_A25__A25 IOMUX_PAD(0x254, 0x03c, 0x10, 0, 0, NO_PAD_CTRL) | ||
73 | #define MX25_PAD_A25__GPIO_2_11 IOMUX_PAD(0x254, 0x03c, 0x15, 0, 0, NO_PAD_CTRL) | ||
74 | #define MX25_PAD_A25__FEC_CRS IOMUX_PAD(0x254, 0x03c, 0x17, 0x508, 0, NO_PAD_CTRL) | ||
75 | |||
76 | #define MX25_PAD_EB0__EB0 IOMUX_PAD(0x258, 0x040, 0x10, 0, 0, NO_PAD_CTRL) | ||
77 | #define MX25_PAD_EB0__AUD4_TXD IOMUX_PAD(0x258, 0x040, 0x14, 0x464, 0, NO_PAD_CTRL) | ||
78 | #define MX25_PAD_EB0__GPIO_2_12 IOMUX_PAD(0x258, 0x040, 0x15, 0, 0, NO_PAD_CTRL) | ||
79 | |||
80 | #define MX25_PAD_EB1__EB1 IOMUX_PAD(0x25c, 0x044, 0x10, 0, 0, NO_PAD_CTRL) | ||
81 | #define MX25_PAD_EB1__AUD4_RXD IOMUX_PAD(0x25c, 0x044, 0x14, 0x460, 0, NO_PAD_CTRL) | ||
82 | #define MX25_PAD_EB1__GPIO_2_13 IOMUX_PAD(0x25c, 0x044, 0x15, 0, 0, NO_PAD_CTRL) | ||
83 | |||
84 | #define MX25_PAD_OE__OE IOMUX_PAD(0x260, 0x048, 0x10, 0, 0, NO_PAD_CTRL) | ||
85 | #define MX25_PAD_OE__AUD4_TXC IOMUX_PAD(0x260, 0x048, 0x14, 0, 0, NO_PAD_CTRL) | ||
86 | #define MX25_PAD_OE__GPIO_2_14 IOMUX_PAD(0x260, 0x048, 0x15, 0, 0, NO_PAD_CTRL) | ||
87 | |||
88 | #define MX25_PAD_CS0__CS0 IOMUX_PAD(0x000, 0x04c, 0x00, 0, 0, NO_PAD_CTRL) | ||
89 | #define MX25_PAD_CS0__GPIO_4_2 IOMUX_PAD(0x000, 0x04c, 0x05, 0, 0, NO_PAD_CTRL) | ||
90 | |||
91 | #define MX25_PAD_CS1__CS1 IOMUX_PAD(0x000, 0x050, 0x00, 0, 0, NO_PAD_CTRL) | ||
92 | #define MX25_PAD_CS1__NF_CE3 IOMUX_PAD(0x000, 0x050, 0x01, 0, 0, NO_PAD_CTRL) | ||
93 | #define MX25_PAD_CS1__GPIO_4_3 IOMUX_PAD(0x000, 0x050, 0x05, 0, 0, NO_PAD_CTRL) | ||
94 | |||
95 | #define MX25_PAD_CS4__CS4 IOMUX_PAD(0x264, 0x054, 0x10, 0, 0, NO_PAD_CTRL) | ||
96 | #define MX25_PAD_CS4__NF_CE1 IOMUX_PAD(0x264, 0x054, 0x01, 0, 0, NO_PAD_CTRL) | ||
97 | #define MX25_PAD_CS4__UART5_CTS IOMUX_PAD(0x264, 0x054, 0x13, 0, 0, NO_PAD_CTRL) | ||
98 | #define MX25_PAD_CS4__GPIO_3_20 IOMUX_PAD(0x264, 0x054, 0x15, 0, 0, NO_PAD_CTRL) | ||
99 | |||
100 | #define MX25_PAD_CS5__CS5 IOMUX_PAD(0x268, 0x058, 0x10, 0, 0, NO_PAD_CTRL) | ||
101 | #define MX25_PAD_CS5__NF_CE2 IOMUX_PAD(0x268, 0x058, 0x01, 0, 0, NO_PAD_CTRL) | ||
102 | #define MX25_PAD_CS5__UART5_RTS IOMUX_PAD(0x268, 0x058, 0x13, 0x574, 0, NO_PAD_CTRL) | ||
103 | #define MX25_PAD_CS5__GPIO_3_21 IOMUX_PAD(0x268, 0x058, 0x15, 0, 0, NO_PAD_CTRL) | ||
104 | |||
105 | #define MX25_PAD_NF_CE0__NF_CE0 IOMUX_PAD(0x26c, 0x05c, 0x10, 0, 0, NO_PAD_CTRL) | ||
106 | #define MX25_PAD_NF_CE0__GPIO_3_22 IOMUX_PAD(0x26c, 0x05c, 0x15, 0, 0, NO_PAD_CTRL) | ||
107 | |||
108 | #define MX25_PAD_ECB__ECB IOMUX_PAD(0x270, 0x060, 0x10, 0, 0, NO_PAD_CTRL) | ||
109 | #define MX25_PAD_ECB__UART5_TXD_MUX IOMUX_PAD(0x270, 0x060, 0x13, 0, 0, NO_PAD_CTRL) | ||
110 | #define MX25_PAD_ECB__GPIO_3_23 IOMUX_PAD(0x270, 0x060, 0x15, 0, 0, NO_PAD_CTRL) | ||
111 | |||
112 | #define MX25_PAD_LBA__LBA IOMUX_PAD(0x274, 0x064, 0x10, 0, 0, NO_PAD_CTRL) | ||
113 | #define MX25_PAD_LBA__UART5_RXD_MUX IOMUX_PAD(0x274, 0x064, 0x13, 0x578, 0, NO_PAD_CTRL) | ||
114 | #define MX25_PAD_LBA__GPIO_3_24 IOMUX_PAD(0x274, 0x064, 0x15, 0, 0, NO_PAD_CTRL) | ||
115 | |||
116 | #define MX25_PAD_BCLK__BCLK IOMUX_PAD(0x000, 0x068, 0x00, 0, 0, NO_PAD_CTRL) | ||
117 | #define MX25_PAD_BCLK__GPIO_4_4 IOMUX_PAD(0x000, 0x068, 0x05, 0, 0, NO_PAD_CTRL) | ||
118 | |||
119 | #define MX25_PAD_RW__RW IOMUX_PAD(0x278, 0x06c, 0x10, 0, 0, NO_PAD_CTRL) | ||
120 | #define MX25_PAD_RW__AUD4_TXFS IOMUX_PAD(0x278, 0x06c, 0x14, 0x474, 0, NO_PAD_CTRL) | ||
121 | #define MX25_PAD_RW__GPIO_3_25 IOMUX_PAD(0x278, 0x06c, 0x15, 0, 0, NO_PAD_CTRL) | ||
122 | |||
123 | #define MX25_PAD_NFWE_B__NFWE_B IOMUX_PAD(0x000, 0x070, 0x10, 0, 0, NO_PAD_CTRL) | ||
124 | #define MX25_PAD_NFWE_B__GPIO_3_26 IOMUX_PAD(0x000, 0x070, 0x15, 0, 0, NO_PAD_CTRL) | ||
125 | |||
126 | #define MX25_PAD_NFRE_B__NFRE_B IOMUX_PAD(0x000, 0x074, 0x10, 0, 0, NO_PAD_CTRL) | ||
127 | #define MX25_PAD_NFRE_B__GPIO_3_27 IOMUX_PAD(0x000, 0x074, 0x15, 0, 0, NO_PAD_CTRL) | ||
128 | |||
129 | #define MX25_PAD_NFALE__NFALE IOMUX_PAD(0x000, 0x078, 0x10, 0, 0, NO_PAD_CTRL) | ||
130 | #define MX25_PAD_NFALE__GPIO_3_28 IOMUX_PAD(0x000, 0x078, 0x15, 0, 0, NO_PAD_CTRL) | ||
131 | |||
132 | #define MX25_PAD_NFCLE__NFCLE IOMUX_PAD(0x000, 0x07c, 0x10, 0, 0, NO_PAD_CTRL) | ||
133 | #define MX25_PAD_NFCLE__GPIO_3_29 IOMUX_PAD(0x000, 0x07c, 0x15, 0, 0, NO_PAD_CTRL) | ||
134 | |||
135 | #define MX25_PAD_NFWP_B__NFWP_B IOMUX_PAD(0x000, 0x080, 0x10, 0, 0, NO_PAD_CTRL) | ||
136 | #define MX25_PAD_NFWP_B__GPIO_3_30 IOMUX_PAD(0x000, 0x080, 0x15, 0, 0, NO_PAD_CTRL) | ||
137 | |||
138 | #define MX25_PAD_NFRB__NFRB IOMUX_PAD(0x27c, 0x084, 0x10, 0, 0, PAD_CTL_PKE) | ||
139 | #define MX25_PAD_NFRB__GPIO_3_31 IOMUX_PAD(0x27c, 0x084, 0x15, 0, 0, NO_PAD_CTRL) | ||
140 | |||
141 | #define MX25_PAD_D15__D15 IOMUX_PAD(0x280, 0x088, 0x00, 0, 0, NO_PAD_CTRL) | ||
142 | #define MX25_PAD_D15__LD16 IOMUX_PAD(0x280, 0x088, 0x01, 0, 0, PAD_CTL_SRE_FAST) | ||
143 | #define MX25_PAD_D15__GPIO_4_5 IOMUX_PAD(0x280, 0x088, 0x05, 0, 0, NO_PAD_CTRL) | ||
144 | |||
145 | #define MX25_PAD_D14__D14 IOMUX_PAD(0x284, 0x08c, 0x00, 0, 0, NO_PAD_CTRL) | ||
146 | #define MX25_PAD_D14__LD17 IOMUX_PAD(0x284, 0x08c, 0x01, 0, 0, PAD_CTL_SRE_FAST) | ||
147 | #define MX25_PAD_D14__GPIO_4_6 IOMUX_PAD(0x284, 0x08c, 0x05, 0, 0, NO_PAD_CTRL) | ||
148 | |||
149 | #define MX25_PAD_D13__D13 IOMUX_PAD(0x288, 0x090, 0x00, 0, 0, NO_PAD_CTRL) | ||
150 | #define MX25_PAD_D13__LD18 IOMUX_PAD(0x288, 0x090, 0x01, 0, 0, PAD_CTL_SRE_FAST) | ||
151 | #define MX25_PAD_D13__GPIO_4_7 IOMUX_PAD(0x288, 0x090, 0x05, 0, 0, NO_PAD_CTRL) | ||
152 | |||
153 | #define MX25_PAD_D12__D12 IOMUX_PAD(0x28c, 0x094, 0x00, 0, 0, NO_PAD_CTRL) | ||
154 | #define MX25_PAD_D12__GPIO_4_8 IOMUX_PAD(0x28c, 0x094, 0x05, 0, 0, NO_PAD_CTRL) | ||
155 | |||
156 | #define MX25_PAD_D11__D11 IOMUX_PAD(0x290, 0x098, 0x00, 0, 0, NO_PAD_CTRL) | ||
157 | #define MX25_PAD_D11__GPIO_4_9 IOMUX_PAD(0x290, 0x098, 0x05, 0, 0, NO_PAD_CTRL) | ||
158 | |||
159 | #define MX25_PAD_D10__D10 IOMUX_PAD(0x294, 0x09c, 0x00, 0, 0, NO_PAD_CTRL) | ||
160 | #define MX25_PAD_D10__GPIO_4_10 IOMUX_PAD(0x294, 0x09c, 0x05, 0, 0, NO_PAD_CTRL) | ||
161 | #define MX25_PAD_D10__USBOTG_OC IOMUX_PAD(0x294, 0x09c, 0x06, 0x57c, 0, PAD_CTL_PUS_100K_UP) | ||
162 | |||
163 | #define MX25_PAD_D9__D9 IOMUX_PAD(0x298, 0x0a0, 0x00, 0, 0, NO_PAD_CTRL) | ||
164 | #define MX25_PAD_D9__GPIO_4_11 IOMUX_PAD(0x298, 0x0a0, 0x05, 0, 0, NO_PAD_CTRL) | ||
165 | #define MX25_PAD_D9__USBH2_PWR IOMUX_PAD(0x298, 0x0a0, 0x06, 0, 0, PAD_CTL_PKE) | ||
166 | |||
167 | #define MX25_PAD_D8__D8 IOMUX_PAD(0x29c, 0x0a4, 0x00, 0, 0, NO_PAD_CTRL) | ||
168 | #define MX25_PAD_D8__GPIO_4_12 IOMUX_PAD(0x29c, 0x0a4, 0x05, 0, 0, NO_PAD_CTRL) | ||
169 | #define MX25_PAD_D8__USBH2_OC IOMUX_PAD(0x29c, 0x0a4, 0x06, 0x580, 0, PAD_CTL_PUS_100K_UP) | ||
170 | |||
171 | #define MX25_PAD_D7__D7 IOMUX_PAD(0x2a0, 0x0a8, 0x00, 0, 0, NO_PAD_CTRL) | ||
172 | #define MX25_PAD_D7__GPIO_4_13 IOMUX_PAD(0x2a0, 0x0a8, 0x05, 0, 0, NO_PAD_CTRL) | ||
173 | |||
174 | #define MX25_PAD_D6__D6 IOMUX_PAD(0x2a4, 0x0ac, 0x00, 0, 0, NO_PAD_CTRL) | ||
175 | #define MX25_PAD_D6__GPIO_4_14 IOMUX_PAD(0x2a4, 0x0ac, 0x05, 0, 0, NO_PAD_CTRL) | ||
176 | |||
177 | #define MX25_PAD_D5__D5 IOMUX_PAD(0x2a8, 0x0b0, 0x00, 0, 0, NO_PAD_CTRL) | ||
178 | #define MX25_PAD_D5__GPIO_4_15 IOMUX_PAD(0x2a8, 0x0b0, 0x05, 0, 0, NO_PAD_CTRL) | ||
179 | |||
180 | #define MX25_PAD_D4__D4 IOMUX_PAD(0x2ac, 0x0b4, 0x00, 0, 0, NO_PAD_CTRL) | ||
181 | #define MX25_PAD_D4__GPIO_4_16 IOMUX_PAD(0x2ac, 0x0b4, 0x05, 0, 0, NO_PAD_CTRL) | ||
182 | |||
183 | #define MX25_PAD_D3__D3 IOMUX_PAD(0x2b0, 0x0b8, 0x00, 0, 0, NO_PAD_CTRL) | ||
184 | #define MX25_PAD_D3__GPIO_4_17 IOMUX_PAD(0x2b0, 0x0b8, 0x05, 0, 0, NO_PAD_CTRL) | ||
185 | |||
186 | #define MX25_PAD_D2__D2 IOMUX_PAD(0x2b4, 0x0bc, 0x00, 0, 0, NO_PAD_CTRL) | ||
187 | #define MX25_PAD_D2__GPIO_4_18 IOMUX_PAD(0x2b4, 0x0bc, 0x05, 0, 0, NO_PAD_CTRL) | ||
188 | |||
189 | #define MX25_PAD_D1__D1 IOMUX_PAD(0x2b8, 0x0c0, 0x00, 0, 0, NO_PAD_CTRL) | ||
190 | #define MX25_PAD_D1__GPIO_4_19 IOMUX_PAD(0x2b8, 0x0c0, 0x05, 0, 0, NO_PAD_CTRL) | ||
191 | |||
192 | #define MX25_PAD_D0__D0 IOMUX_PAD(0x2bc, 0x0c4, 0x00, 0, 0, NO_PAD_CTRL) | ||
193 | #define MX25_PAD_D0__GPIO_4_20 IOMUX_PAD(0x2bc, 0x0c4, 0x05, 0, 0, NO_PAD_CTRL) | ||
194 | |||
195 | #define MX25_PAD_LD0__LD0 IOMUX_PAD(0x2c0, 0x0c8, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
196 | #define MX25_PAD_LD0__CSI_D0 IOMUX_PAD(0x2c0, 0x0c8, 0x12, 0x488, 0, NO_PAD_CTRL) | ||
197 | #define MX25_PAD_LD0__GPIO_2_15 IOMUX_PAD(0x2c0, 0x0c8, 0x15, 0, 0, NO_PAD_CTRL) | ||
198 | |||
199 | #define MX25_PAD_LD1__LD1 IOMUX_PAD(0x2c4, 0x0cc, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
200 | #define MX25_PAD_LD1__CSI_D1 IOMUX_PAD(0x2c4, 0x0cc, 0x12, 0x48c, 0, NO_PAD_CTRL) | ||
201 | #define MX25_PAD_LD1__GPIO_2_16 IOMUX_PAD(0x2c4, 0x0cc, 0x15, 0, 0, NO_PAD_CTRL) | ||
202 | |||
203 | #define MX25_PAD_LD2__LD2 IOMUX_PAD(0x2c8, 0x0d0, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
204 | #define MX25_PAD_LD2__GPIO_2_17 IOMUX_PAD(0x2c8, 0x0d0, 0x15, 0, 0, NO_PAD_CTRL) | ||
205 | |||
206 | #define MX25_PAD_LD3__LD3 IOMUX_PAD(0x2cc, 0x0d4, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
207 | #define MX25_PAD_LD3__GPIO_2_18 IOMUX_PAD(0x2cc, 0x0d4, 0x15, 0, 0, NO_PAD_CTRL) | ||
208 | |||
209 | #define MX25_PAD_LD4__LD4 IOMUX_PAD(0x2d0, 0x0d8, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
210 | #define MX25_PAD_LD4__GPIO_2_19 IOMUX_PAD(0x2d0, 0x0d8, 0x15, 0, 0, NO_PAD_CTRL) | ||
211 | |||
212 | #define MX25_PAD_LD5__LD5 IOMUX_PAD(0x2d4, 0x0dc, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
213 | #define MX25_PAD_LD5__GPIO_1_19 IOMUX_PAD(0x2d4, 0x0dc, 0x15, 0, 0, NO_PAD_CTRL) | ||
214 | |||
215 | #define MX25_PAD_LD6__LD6 IOMUX_PAD(0x2d8, 0x0e0, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
216 | #define MX25_PAD_LD6__GPIO_1_20 IOMUX_PAD(0x2d8, 0x0e0, 0x15, 0, 0, NO_PAD_CTRL) | ||
217 | |||
218 | #define MX25_PAD_LD7__LD7 IOMUX_PAD(0x2dc, 0x0e4, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
219 | #define MX25_PAD_LD7__GPIO_1_21 IOMUX_PAD(0x2dc, 0x0e4, 0x15, 0, 0, NO_PAD_CTRL) | ||
220 | |||
221 | #define MX25_PAD_LD8__LD8 IOMUX_PAD(0x2e0, 0x0e8, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
222 | #define MX25_PAD_LD8__FEC_TX_ERR IOMUX_PAD(0x2e0, 0x0e8, 0x15, 0, 0, NO_PAD_CTRL) | ||
223 | |||
224 | #define MX25_PAD_LD9__LD9 IOMUX_PAD(0x2e4, 0x0ec, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
225 | #define MX25_PAD_LD9__FEC_COL IOMUX_PAD(0x2e4, 0x0ec, 0x15, 0x504, 1, NO_PAD_CTRL) | ||
226 | |||
227 | #define MX25_PAD_LD10__LD10 IOMUX_PAD(0x2e8, 0x0f0, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
228 | #define MX25_PAD_LD10__FEC_RX_ER IOMUX_PAD(0x2e8, 0x0f0, 0x15, 0x518, 1, NO_PAD_CTRL) | ||
229 | |||
230 | #define MX25_PAD_LD11__LD11 IOMUX_PAD(0x2ec, 0x0f4, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
231 | #define MX25_PAD_LD11__FEC_RDATA2 IOMUX_PAD(0x2ec, 0x0f4, 0x15, 0x50c, 1, NO_PAD_CTRL) | ||
232 | |||
233 | #define MX25_PAD_LD12__LD12 IOMUX_PAD(0x2f0, 0x0f8, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
234 | #define MX25_PAD_LD12__FEC_RDATA3 IOMUX_PAD(0x2f0, 0x0f8, 0x15, 0x510, 1, NO_PAD_CTRL) | ||
235 | |||
236 | #define MX25_PAD_LD13__LD13 IOMUX_PAD(0x2f4, 0x0fc, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
237 | #define MX25_PAD_LD13__FEC_TDATA2 IOMUX_PAD(0x2f4, 0x0fc, 0x15, 0, 0, NO_PAD_CTRL) | ||
238 | |||
239 | #define MX25_PAD_LD14__LD14 IOMUX_PAD(0x2f8, 0x100, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
240 | #define MX25_PAD_LD14__FEC_TDATA3 IOMUX_PAD(0x2f8, 0x100, 0x15, 0, 0, NO_PAD_CTRL) | ||
241 | |||
242 | #define MX25_PAD_LD15__LD15 IOMUX_PAD(0x2fc, 0x104, 0x10, 0, 0, PAD_CTL_SRE_FAST) | ||
243 | #define MX25_PAD_LD15__FEC_RX_CLK IOMUX_PAD(0x2fc, 0x104, 0x15, 0x514, 1, NO_PAD_CTRL) | ||
244 | |||
245 | #define MX25_PAD_HSYNC__HSYNC IOMUX_PAD(0x300, 0x108, 0x10, 0, 0, NO_PAD_CTRL) | ||
246 | #define MX25_PAD_HSYNC__GPIO_1_22 IOMUX_PAD(0x300, 0x108, 0x15, 0, 0, NO_PAD_CTRL) | ||
247 | |||
248 | #define MX25_PAD_VSYNC__VSYNC IOMUX_PAD(0x304, 0x10c, 0x10, 0, 0, NO_PAD_CTRL) | ||
249 | #define MX25_PAD_VSYNC__GPIO_1_23 IOMUX_PAD(0x304, 0x10c, 0x15, 0, 0, NO_PAD_CTRL) | ||
250 | |||
251 | #define MX25_PAD_LSCLK__LSCLK IOMUX_PAD(0x308, 0x110, 0x10, 0, 0, NO_PAD_CTRL) | ||
252 | #define MX25_PAD_LSCLK__GPIO_1_24 IOMUX_PAD(0x308, 0x110, 0x15, 0, 0, NO_PAD_CTRL) | ||
253 | |||
254 | #define MX25_PAD_OE_ACD__OE_ACD IOMUX_PAD(0x30c, 0x114, 0x10, 0, 0, NO_PAD_CTRL) | ||
255 | #define MX25_PAD_OE_ACD__GPIO_1_25 IOMUX_PAD(0x30c, 0x114, 0x15, 0, 0, NO_PAD_CTRL) | ||
256 | |||
257 | #define MX25_PAD_CONTRAST__CONTRAST IOMUX_PAD(0x310, 0x118, 0x10, 0, 0, NO_PAD_CTRL) | ||
258 | #define MX25_PAD_CONTRAST__PWM4_PWMO IOMUX_PAD(0x310, 0x118, 0x14, 0, 0, NO_PAD_CTRL) | ||
259 | #define MX25_PAD_CONTRAST__FEC_CRS IOMUX_PAD(0x310, 0x118, 0x15, 0x508, 1, NO_PAD_CTRL) | ||
260 | |||
261 | #define MX25_PAD_PWM__PWM IOMUX_PAD(0x314, 0x11c, 0x10, 0, 0, NO_PAD_CTRL) | ||
262 | #define MX25_PAD_PWM__GPIO_1_26 IOMUX_PAD(0x314, 0x11c, 0x15, 0, 0, NO_PAD_CTRL) | ||
263 | #define MX25_PAD_PWM__USBH2_OC IOMUX_PAD(0x314, 0x11c, 0x16, 0x580, 1, PAD_CTL_PUS_100K_UP) | ||
264 | |||
265 | #define MX25_PAD_CSI_D2__CSI_D2 IOMUX_PAD(0x318, 0x120, 0x10, 0, 0, NO_PAD_CTRL) | ||
266 | #define MX25_PAD_CSI_D2__UART5_RXD_MUX IOMUX_PAD(0x318, 0x120, 0x11, 0x578, 1, NO_PAD_CTRL) | ||
267 | #define MX25_PAD_CSI_D2__GPIO_1_27 IOMUX_PAD(0x318, 0x120, 0x15, 0, 0, NO_PAD_CTRL) | ||
268 | #define MX25_PAD_CSI_D2__CSPI3_MOSI IOMUX_PAD(0x318, 0x120, 0x17, 0, 0, NO_PAD_CTRL) | ||
269 | |||
270 | #define MX25_PAD_CSI_D3__CSI_D3 IOMUX_PAD(0x31c, 0x124, 0x10, 0, 0, NO_PAD_CTRL) | ||
271 | #define MX25_PAD_CSI_D3__GPIO_1_28 IOMUX_PAD(0x31c, 0x124, 0x15, 0, 0, NO_PAD_CTRL) | ||
272 | #define MX25_PAD_CSI_D3__CSPI3_MISO IOMUX_PAD(0x31c, 0x124, 0x17, 0x4b4, 1, NO_PAD_CTRL) | ||
273 | |||
274 | #define MX25_PAD_CSI_D4__CSI_D4 IOMUX_PAD(0x320, 0x128, 0x10, 0, 0, NO_PAD_CTRL) | ||
275 | #define MX25_PAD_CSI_D4__UART5_RTS IOMUX_PAD(0x320, 0x128, 0x11, 0x574, 1, NO_PAD_CTRL) | ||
276 | #define MX25_PAD_CSI_D4__GPIO_1_29 IOMUX_PAD(0x320, 0x128, 0x15, 0, 0, NO_PAD_CTRL) | ||
277 | #define MX25_PAD_CSI_D4__CSPI3_SCLK IOMUX_PAD(0x320, 0x128, 0x17, 0, 0, NO_PAD_CTRL) | ||
278 | |||
279 | #define MX25_PAD_CSI_D5__CSI_D5 IOMUX_PAD(0x324, 0x12c, 0x10, 0, 0, NO_PAD_CTRL) | ||
280 | #define MX25_PAD_CSI_D5__GPIO_1_30 IOMUX_PAD(0x324, 0x12c, 0x15, 0, 0, NO_PAD_CTRL) | ||
281 | #define MX25_PAD_CSI_D5__CSPI3_RDY IOMUX_PAD(0x324, 0x12c, 0x17, 0, 0, NO_PAD_CTRL) | ||
282 | |||
283 | #define MX25_PAD_CSI_D6__CSI_D6 IOMUX_PAD(0x328, 0x130, 0x10, 0, 0, NO_PAD_CTRL) | ||
284 | #define MX25_PAD_CSI_D6__GPIO_1_31 IOMUX_PAD(0x328, 0x130, 0x15, 0, 0, NO_PAD_CTRL) | ||
285 | |||
286 | #define MX25_PAD_CSI_D7__CSI_D7 IOMUX_PAD(0x32c, 0x134, 0x10, 0, 0, NO_PAD_CTRL) | ||
287 | #define MX25_PAD_CSI_D7__GPIO_1_6 IOMUX_PAD(0x32c, 0x134, 0x15, 0, 0, NO_PAD_CTRL) | ||
288 | |||
289 | #define MX25_PAD_CSI_D8__CSI_D8 IOMUX_PAD(0x330, 0x138, 0x10, 0, 0, NO_PAD_CTRL) | ||
290 | #define MX25_PAD_CSI_D8__GPIO_1_7 IOMUX_PAD(0x330, 0x138, 0x15, 0, 0, NO_PAD_CTRL) | ||
291 | |||
292 | #define MX25_PAD_CSI_D9__CSI_D9 IOMUX_PAD(0x334, 0x13c, 0x10, 0, 0, NO_PAD_CTRL) | ||
293 | #define MX25_PAD_CSI_D9__GPIO_4_21 IOMUX_PAD(0x334, 0x13c, 0x15, 0, 0, NO_PAD_CTRL) | ||
294 | |||
295 | #define MX25_PAD_CSI_MCLK__CSI_MCLK IOMUX_PAD(0x338, 0x140, 0x10, 0, 0, NO_PAD_CTRL) | ||
296 | #define MX25_PAD_CSI_MCLK__GPIO_1_8 IOMUX_PAD(0x338, 0x140, 0x15, 0, 0, NO_PAD_CTRL) | ||
297 | |||
298 | #define MX25_PAD_CSI_VSYNC__CSI_VSYNC IOMUX_PAD(0x33c, 0x144, 0x10, 0, 0, NO_PAD_CTRL) | ||
299 | #define MX25_PAD_CSI_VSYNC__GPIO_1_9 IOMUX_PAD(0x33c, 0x144, 0x15, 0, 0, NO_PAD_CTRL) | ||
300 | |||
301 | #define MX25_PAD_CSI_HSYNC__CSI_HSYNC IOMUX_PAD(0x340, 0x148, 0x10, 0, 0, NO_PAD_CTRL) | ||
302 | #define MX25_PAD_CSI_HSYNC__GPIO_1_10 IOMUX_PAD(0x340, 0x148, 0x15, 0, 0, NO_PAD_CTRL) | ||
303 | |||
304 | #define MX25_PAD_CSI_PIXCLK__CSI_PIXCLK IOMUX_PAD(0x344, 0x14c, 0x10, 0, 0, NO_PAD_CTRL) | ||
305 | #define MX25_PAD_CSI_PIXCLK__GPIO_1_11 IOMUX_PAD(0x344, 0x14c, 0x15, 0, 0, NO_PAD_CTRL) | ||
306 | |||
307 | #define MX25_PAD_I2C1_CLK__I2C1_CLK IOMUX_PAD(0x348, 0x150, 0x10, 0, 0, NO_PAD_CTRL) | ||
308 | #define MX25_PAD_I2C1_CLK__GPIO_1_12 IOMUX_PAD(0x348, 0x150, 0x15, 0, 0, NO_PAD_CTRL) | ||
309 | |||
310 | #define MX25_PAD_I2C1_DAT__I2C1_DAT IOMUX_PAD(0x34c, 0x154, 0x10, 0, 0, NO_PAD_CTRL) | ||
311 | #define MX25_PAD_I2C1_DAT__GPIO_1_13 IOMUX_PAD(0x34c, 0x154, 0x15, 0, 0, NO_PAD_CTRL) | ||
312 | |||
313 | #define MX25_PAD_CSPI1_MOSI__CSPI1_MOSI IOMUX_PAD(0x350, 0x158, 0x10, 0, 0, NO_PAD_CTRL) | ||
314 | #define MX25_PAD_CSPI1_MOSI__GPIO_1_14 IOMUX_PAD(0x350, 0x158, 0x15, 0, 0, NO_PAD_CTRL) | ||
315 | |||
316 | #define MX25_PAD_CSPI1_MISO__CSPI1_MISO IOMUX_PAD(0x354, 0x15c, 0x10, 0, 0, NO_PAD_CTRL) | ||
317 | #define MX25_PAD_CSPI1_MISO__GPIO_1_15 IOMUX_PAD(0x354, 0x15c, 0x15, 0, 0, NO_PAD_CTRL) | ||
318 | |||
319 | #define MX25_PAD_CSPI1_SS0__CSPI1_SS0 IOMUX_PAD(0x358, 0x160, 0x10, 0, 0, NO_PAD_CTRL) | ||
320 | #define MX25_PAD_CSPI1_SS0__GPIO_1_16 IOMUX_PAD(0x358, 0x160, 0x15, 0, 0, NO_PAD_CTRL) | ||
321 | |||
322 | #define MX25_PAD_CSPI1_SS1__CSPI1_SS1 IOMUX_PAD(0x35c, 0x164, 0x10, 0, 0, NO_PAD_CTRL) | ||
323 | #define MX25_PAD_CSPI1_SS1__GPIO_1_17 IOMUX_PAD(0x35c, 0x164, 0x15, 0, 0, NO_PAD_CTRL) | ||
324 | |||
325 | #define MX25_PAD_CSPI1_SCLK__CSPI1_SCLK IOMUX_PAD(0x360, 0x168, 0x10, 0, 0, NO_PAD_CTRL) | ||
326 | #define MX25_PAD_CSPI1_SCLK__GPIO_1_18 IOMUX_PAD(0x360, 0x168, 0x15, 0, 0, NO_PAD_CTRL) | ||
327 | |||
328 | #define MX25_PAD_CSPI1_RDY__CSPI1_RDY IOMUX_PAD(0x364, 0x16c, 0x10, 0, 0, PAD_CTL_PKE) | ||
329 | #define MX25_PAD_CSPI1_RDY__GPIO_2_22 IOMUX_PAD(0x364, 0x16c, 0x15, 0, 0, NO_PAD_CTRL) | ||
330 | |||
331 | #define MX25_PAD_UART1_RXD__UART1_RXD IOMUX_PAD(0x368, 0x170, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN) | ||
332 | #define MX25_PAD_UART1_RXD__GPIO_4_22 IOMUX_PAD(0x368, 0x170, 0x15, 0, 0, NO_PAD_CTRL) | ||
333 | |||
334 | #define MX25_PAD_UART1_TXD__UART1_TXD IOMUX_PAD(0x36c, 0x174, 0x10, 0, 0, NO_PAD_CTRL) | ||
335 | #define MX25_PAD_UART1_TXD__GPIO_4_23 IOMUX_PAD(0x36c, 0x174, 0x15, 0, 0, NO_PAD_CTRL) | ||
336 | |||
337 | #define MX25_PAD_UART1_RTS__UART1_RTS IOMUX_PAD(0x370, 0x178, 0x10, 0, 0, PAD_CTL_PUS_100K_UP) | ||
338 | #define MX25_PAD_UART1_RTS__CSI_D0 IOMUX_PAD(0x370, 0x178, 0x11, 0x488, 1, NO_PAD_CTRL) | ||
339 | #define MX25_PAD_UART1_RTS__GPIO_4_24 IOMUX_PAD(0x370, 0x178, 0x15, 0, 0, NO_PAD_CTRL) | ||
340 | |||
341 | #define MX25_PAD_UART1_CTS__UART1_CTS IOMUX_PAD(0x374, 0x17c, 0x10, 0, 0, PAD_CTL_PUS_100K_UP) | ||
342 | #define MX25_PAD_UART1_CTS__CSI_D1 IOMUX_PAD(0x374, 0x17c, 0x11, 0x48c, 1, NO_PAD_CTRL) | ||
343 | #define MX25_PAD_UART1_CTS__GPIO_4_25 IOMUX_PAD(0x374, 0x17c, 0x15, 0, 0, NO_PAD_CTRL) | ||
344 | |||
345 | #define MX25_PAD_UART2_RXD__UART2_RXD IOMUX_PAD(0x378, 0x180, 0x10, 0, 0, NO_PAD_CTRL) | ||
346 | #define MX25_PAD_UART2_RXD__GPIO_4_26 IOMUX_PAD(0x378, 0x180, 0x15, 0, 0, NO_PAD_CTRL) | ||
347 | |||
348 | #define MX25_PAD_UART2_TXD__UART2_TXD IOMUX_PAD(0x37c, 0x184, 0x10, 0, 0, NO_PAD_CTRL) | ||
349 | #define MX25_PAD_UART2_TXD__GPIO_4_27 IOMUX_PAD(0x37c, 0x184, 0x15, 0, 0, NO_PAD_CTRL) | ||
350 | |||
351 | #define MX25_PAD_UART2_RTS__UART2_RTS IOMUX_PAD(0x380, 0x188, 0x10, 0, 0, NO_PAD_CTRL) | ||
352 | #define MX25_PAD_UART2_RTS__FEC_COL IOMUX_PAD(0x380, 0x188, 0x12, 0x504, 2, NO_PAD_CTRL) | ||
353 | #define MX25_PAD_UART2_RTS__GPIO_4_28 IOMUX_PAD(0x380, 0x188, 0x15, 0, 0, NO_PAD_CTRL) | ||
354 | |||
355 | #define MX25_PAD_UART2_CTS__FEC_RX_ER IOMUX_PAD(0x384, 0x18c, 0x12, 0x518, 2, NO_PAD_CTRL) | ||
356 | #define MX25_PAD_UART2_CTS__UART2_CTS IOMUX_PAD(0x384, 0x18c, 0x10, 0, 0, NO_PAD_CTRL) | ||
357 | #define MX25_PAD_UART2_CTS__GPIO_4_29 IOMUX_PAD(0x384, 0x18c, 0x15, 0, 0, NO_PAD_CTRL) | ||
358 | |||
359 | #define MX25_PAD_SD1_CMD__SD1_CMD IOMUX_PAD(0x388, 0x190, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) | ||
360 | #define MX25_PAD_SD1_CMD__FEC_RDATA2 IOMUX_PAD(0x388, 0x190, 0x12, 0x50c, 2, NO_PAD_CTRL) | ||
361 | #define MX25_PAD_SD1_CMD__GPIO_2_23 IOMUX_PAD(0x388, 0x190, 0x15, 0, 0, NO_PAD_CTRL) | ||
362 | |||
363 | #define MX25_PAD_SD1_CLK__SD1_CLK IOMUX_PAD(0x38c, 0x194, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) | ||
364 | #define MX25_PAD_SD1_CLK__FEC_RDATA3 IOMUX_PAD(0x38c, 0x194, 0x12, 0x510, 2, NO_PAD_CTRL) | ||
365 | #define MX25_PAD_SD1_CLK__GPIO_2_24 IOMUX_PAD(0x38c, 0x194, 0x15, 0, 0, NO_PAD_CTRL) | ||
366 | |||
367 | #define MX25_PAD_SD1_DATA0__SD1_DATA0 IOMUX_PAD(0x390, 0x198, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) | ||
368 | #define MX25_PAD_SD1_DATA0__GPIO_2_25 IOMUX_PAD(0x390, 0x198, 0x15, 0, 0, NO_PAD_CTRL) | ||
369 | |||
370 | #define MX25_PAD_SD1_DATA1__SD1_DATA1 IOMUX_PAD(0x394, 0x19c, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) | ||
371 | #define MX25_PAD_SD1_DATA1__AUD7_RXD IOMUX_PAD(0x394, 0x19c, 0x13, 0x478, 0, NO_PAD_CTRL) | ||
372 | #define MX25_PAD_SD1_DATA1__GPIO_2_26 IOMUX_PAD(0x394, 0x19c, 0x15, 0, 0, NO_PAD_CTRL) | ||
373 | |||
374 | #define MX25_PAD_SD1_DATA2__SD1_DATA2 IOMUX_PAD(0x398, 0x1a0, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) | ||
375 | #define MX25_PAD_SD1_DATA2__FEC_RX_CLK IOMUX_PAD(0x398, 0x1a0, 0x15, 0x514, 2, NO_PAD_CTRL) | ||
376 | #define MX25_PAD_SD1_DATA2__GPIO_2_27 IOMUX_PAD(0x398, 0x1a0, 0x15, 0, 0, NO_PAD_CTRL) | ||
377 | |||
378 | #define MX25_PAD_SD1_DATA3__SD1_DATA3 IOMUX_PAD(0x39c, 0x1a4, 0x10, 0, 0, PAD_CTL_PUS_47K_UP) | ||
379 | #define MX25_PAD_SD1_DATA3__FEC_CRS IOMUX_PAD(0x39c, 0x1a4, 0x10, 0x508, 2, NO_PAD_CTRL) | ||
380 | #define MX25_PAD_SD1_DATA3__GPIO_2_28 IOMUX_PAD(0x39c, 0x1a4, 0x15, 0, 0, NO_PAD_CTRL) | ||
381 | |||
382 | #define KPP_CTL_ROW (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP) | ||
383 | #define KPP_CTL_COL (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP | PAD_CTL_ODE) | ||
384 | |||
385 | #define MX25_PAD_KPP_ROW0__KPP_ROW0 IOMUX_PAD(0x3a0, 0x1a8, 0x10, 0, 0, KPP_CTL_ROW) | ||
386 | #define MX25_PAD_KPP_ROW0__GPIO_2_29 IOMUX_PAD(0x3a0, 0x1a8, 0x15, 0, 0, NO_PAD_CTRL) | ||
387 | |||
388 | #define MX25_PAD_KPP_ROW1__KPP_ROW1 IOMUX_PAD(0x3a4, 0x1ac, 0x10, 0, 0, KPP_CTL_ROW) | ||
389 | #define MX25_PAD_KPP_ROW1__GPIO_2_30 IOMUX_PAD(0x3a4, 0x1ac, 0x15, 0, 0, NO_PAD_CTRL) | ||
390 | |||
391 | #define MX25_PAD_KPP_ROW2__KPP_ROW2 IOMUX_PAD(0x3a8, 0x1b0, 0x10, 0, 0, KPP_CTL_ROW) | ||
392 | #define MX25_PAD_KPP_ROW2__CSI_D0 IOMUX_PAD(0x3a8, 0x1b0, 0x13, 0x488, 2, NO_PAD_CTRL) | ||
393 | #define MX25_PAD_KPP_ROW2__GPIO_2_31 IOMUX_PAD(0x3a8, 0x1b0, 0x15, 0, 0, NO_PAD_CTRL) | ||
394 | |||
395 | #define MX25_PAD_KPP_ROW3__KPP_ROW3 IOMUX_PAD(0x3ac, 0x1b4, 0x10, 0, 0, KPP_CTL_ROW) | ||
396 | #define MX25_PAD_KPP_ROW3__CSI_LD1 IOMUX_PAD(0x3ac, 0x1b4, 0x13, 0x48c, 2, NO_PAD_CTRL) | ||
397 | #define MX25_PAD_KPP_ROW3__GPIO_3_0 IOMUX_PAD(0x3ac, 0x1b4, 0x15, 0, 0, NO_PAD_CTRL) | ||
398 | |||
399 | #define MX25_PAD_KPP_COL0__KPP_COL0 IOMUX_PAD(0x3b0, 0x1b8, 0x10, 0, 0, KPP_CTL_COL) | ||
400 | #define MX25_PAD_KPP_COL0__UART4_RXD_MUX IOMUX_PAD(0x3b0, 0x1b8, 0x11, 0x570, 1, NO_PAD_CTRL) | ||
401 | #define MX25_PAD_KPP_COL0__AUD5_TXD IOMUX_PAD(0x3b0, 0x1b8, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
402 | #define MX25_PAD_KPP_COL0__GPIO_3_1 IOMUX_PAD(0x3b0, 0x1b8, 0x15, 0, 0, NO_PAD_CTRL) | ||
403 | |||
404 | #define MX25_PAD_KPP_COL1__KPP_COL1 IOMUX_PAD(0x3b4, 0x1bc, 0x10, 0, 0, KPP_CTL_COL) | ||
405 | #define MX25_PAD_KPP_COL1__UART4_TXD_MUX IOMUX_PAD(0x3b4, 0x1bc, 0x11, 0, 0, NO_PAD_CTRL) | ||
406 | #define MX25_PAD_KPP_COL1__AUD5_RXD IOMUX_PAD(0x3b4, 0x1bc, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
407 | #define MX25_PAD_KPP_COL1__GPIO_3_2 IOMUX_PAD(0x3b4, 0x1bc, 0x15, 0, 0, NO_PAD_CTRL) | ||
408 | |||
409 | #define MX25_PAD_KPP_COL2__KPP_COL2 IOMUX_PAD(0x3b8, 0x1c0, 0x10, 0, 0, KPP_CTL_COL) | ||
410 | #define MX25_PAD_KPP_COL2__UART4_RTS IOMUX_PAD(0x3b8, 0x1c0, 0x11, 0, 0, NO_PAD_CTRL) | ||
411 | #define MX25_PAD_KPP_COL2__AUD5_TXC IOMUX_PAD(0x3b8, 0x1c0, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
412 | #define MX25_PAD_KPP_COL2__GPIO_3_3 IOMUX_PAD(0x3b8, 0x1c0, 0x15, 0, 0, NO_PAD_CTRL) | ||
413 | |||
414 | #define MX25_PAD_KPP_COL3__KPP_COL3 IOMUX_PAD(0x3bc, 0x1c4, 0x10, 0, 0, KPP_CTL_COL) | ||
415 | #define MX25_PAD_KPP_COL3__UART4_CTS IOMUX_PAD(0x3bc, 0x1c4, 0x11, 0, 0, NO_PAD_CTRL) | ||
416 | #define MX25_PAD_KPP_COL3__AUD5_TXFS IOMUX_PAD(0x3bc, 0x1c4, 0x12, 0, 0, PAD_CTL_PKE | PAD_CTL_PUS_100K_UP) | ||
417 | #define MX25_PAD_KPP_COL3__GPIO_3_4 IOMUX_PAD(0x3bc, 0x1c4, 0x15, 0, 0, NO_PAD_CTRL) | ||
418 | |||
419 | #define MX25_PAD_FEC_MDC__FEC_MDC IOMUX_PAD(0x3c0, 0x1c8, 0x10, 0, 0, NO_PAD_CTRL) | ||
420 | #define MX25_PAD_FEC_MDC__AUD4_TXD IOMUX_PAD(0x3c0, 0x1c8, 0x12, 0x464, 1, NO_PAD_CTRL) | ||
421 | #define MX25_PAD_FEC_MDC__GPIO_3_5 IOMUX_PAD(0x3c0, 0x1c8, 0x15, 0, 0, NO_PAD_CTRL) | ||
422 | |||
423 | #define MX25_PAD_FEC_MDIO__FEC_MDIO IOMUX_PAD(0x3c4, 0x1cc, 0x10, 0, 0, PAD_CTL_HYS | PAD_CTL_PUS_22K_UP) | ||
424 | #define MX25_PAD_FEC_MDIO__AUD4_RXD IOMUX_PAD(0x3c4, 0x1cc, 0x12, 0x460, 1, NO_PAD_CTRL) | ||
425 | #define MX25_PAD_FEC_MDIO__GPIO_3_6 IOMUX_PAD(0x3c4, 0x1cc, 0x15, 0, 0, NO_PAD_CTRL) | ||
426 | |||
427 | #define MX25_PAD_FEC_TDATA0__FEC_TDATA0 IOMUX_PAD(0x3c8, 0x1d0, 0x10, 0, 0, NO_PAD_CTRL) | ||
428 | #define MX25_PAD_FEC_TDATA0__GPIO_3_7 IOMUX_PAD(0x3c8, 0x1d0, 0x15, 0, 0, NO_PAD_CTRL) | ||
429 | |||
430 | #define MX25_PAD_FEC_TDATA1__FEC_TDATA1 IOMUX_PAD(0x3cc, 0x1d4, 0x10, 0, 0, NO_PAD_CTRL) | ||
431 | #define MX25_PAD_FEC_TDATA1__AUD4_TXFS IOMUX_PAD(0x3cc, 0x1d4, 0x12, 0x474, 1, NO_PAD_CTRL) | ||
432 | #define MX25_PAD_FEC_TDATA1__GPIO_3_8 IOMUX_PAD(0x3cc, 0x1d4, 0x15, 0, 0, NO_PAD_CTRL) | ||
433 | |||
434 | #define MX25_PAD_FEC_TX_EN__FEC_TX_EN IOMUX_PAD(0x3d0, 0x1d8, 0x10, 0, 0, NO_PAD_CTRL) | ||
435 | #define MX25_PAD_FEC_TX_EN__GPIO_3_9 IOMUX_PAD(0x3d0, 0x1d8, 0x15, 0, 0, NO_PAD_CTRL) | ||
436 | |||
437 | #define MX25_PAD_FEC_RDATA0__FEC_RDATA0 IOMUX_PAD(0x3d4, 0x1dc, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTRL) | ||
438 | #define MX25_PAD_FEC_RDATA0__GPIO_3_10 IOMUX_PAD(0x3d4, 0x1dc, 0x15, 0, 0, NO_PAD_CTRL) | ||
439 | |||
440 | #define MX25_PAD_FEC_RDATA1__FEC_RDATA1 IOMUX_PAD(0x3d8, 0x1e0, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTRL) | ||
441 | #define MX25_PAD_FEC_RDATA1__GPIO_3_11 IOMUX_PAD(0x3d8, 0x1e0, 0x15, 0, 0, NO_PAD_CTRL) | ||
442 | |||
443 | #define MX25_PAD_FEC_RX_DV__FEC_RX_DV IOMUX_PAD(0x3dc, 0x1e4, 0x10, 0, 0, PAD_CTL_PUS_100K_DOWN | NO_PAD_CTRL) | ||
444 | #define MX25_PAD_FEC_RX_DV__CAN2_RX IOMUX_PAD(0x3dc, 0x1e4, 0x14, 0x484, 0, PAD_CTL_PUS_22K_UP) | ||
445 | #define MX25_PAD_FEC_RX_DV__GPIO_3_12 IOMUX_PAD(0x3dc, 0x1e4, 0x15, 0, 0, NO_PAD_CTRL) | ||
446 | |||
447 | #define MX25_PAD_FEC_TX_CLK__FEC_TX_CLK IOMUX_PAD(0x3e0, 0x1e8, 0x10, 0, 0, PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN) | ||
448 | #define MX25_PAD_FEC_TX_CLK__GPIO_3_13 IOMUX_PAD(0x3e0, 0x1e8, 0x15, 0, 0, NO_PAD_CTRL) | ||
449 | |||
450 | #define MX25_PAD_RTCK__RTCK IOMUX_PAD(0x3e4, 0x1ec, 0x10, 0, 0, NO_PAD_CTRL) | ||
451 | #define MX25_PAD_RTCK__OWIRE IOMUX_PAD(0x3e4, 0x1ec, 0x11, 0, 0, NO_PAD_CTRL) | ||
452 | #define MX25_PAD_RTCK__GPIO_3_14 IOMUX_PAD(0x3e4, 0x1ec, 0x15, 0, 0, NO_PAD_CTRL) | ||
453 | |||
454 | #define MX25_PAD_DE_B__DE_B IOMUX_PAD(0x3ec, 0x1f0, 0x10, 0, 0, NO_PAD_CTRL) | ||
455 | #define MX25_PAD_DE_B__GPIO_2_20 IOMUX_PAD(0x3ec, 0x1f0, 0x15, 0, 0, NO_PAD_CTRL) | ||
456 | |||
457 | #define MX25_PAD_TDO__TDO IOMUX_PAD(0x3e8, 0x000, 0x00, 0, 0, NO_PAD_CTRL) | ||
458 | |||
459 | #define MX25_PAD_GPIO_A__GPIO_A IOMUX_PAD(0x3f0, 0x1f4, 0x10, 0, 0, NO_PAD_CTRL) | ||
460 | #define MX25_PAD_GPIO_A__CAN1_TX IOMUX_PAD(0x3f0, 0x1f4, 0x16, 0, 0, PAD_CTL_PUS_22K_UP) | ||
461 | #define MX25_PAD_GPIO_A__USBOTG_PWR IOMUX_PAD(0x3f0, 0x1f4, 0x12, 0, 0, PAD_CTL_PKE) | ||
462 | |||
463 | #define MX25_PAD_GPIO_B__GPIO_B IOMUX_PAD(0x3f4, 0x1f8, 0x10, 0, 0, NO_PAD_CTRL) | ||
464 | #define MX25_PAD_GPIO_B__CAN1_RX IOMUX_PAD(0x3f4, 0x1f8, 0x16, 0x480, 1, PAD_CTL_PUS_22K_UP) | ||
465 | #define MX25_PAD_GPIO_B__USBOTG_OC IOMUX_PAD(0x3f4, 0x1f8, 0x12, 0x57c, 1, PAD_CTL_PUS_100K_UP) | ||
466 | |||
467 | #define MX25_PAD_GPIO_C__GPIO_C IOMUX_PAD(0x3f8, 0x1fc, 0x10, 0, 0, NO_PAD_CTRL) | ||
468 | #define MX25_PAD_GPIO_C__CAN2_TX IOMUX_PAD(0x3f8, 0x1fc, 0x16, 0, 0, PAD_CTL_PUS_22K_UP) | ||
469 | |||
470 | #define MX25_PAD_GPIO_D__GPIO_D IOMUX_PAD(0x3fc, 0x200, 0x10, 0, 0, NO_PAD_CTRL) | ||
471 | #define MX25_PAD_GPIO_E__LD16 IOMUX_PAD(0x400, 0x204, 0x02, 0, 0, PAD_CTL_SRE_FAST) | ||
472 | #define MX25_PAD_GPIO_D__CAN2_RX IOMUX_PAD(0x3fc, 0x200, 0x16, 0x484, 1, PAD_CTL_PUS_22K_UP) | ||
473 | |||
474 | #define MX25_PAD_GPIO_E__GPIO_E IOMUX_PAD(0x400, 0x204, 0x10, 0, 0, NO_PAD_CTRL) | ||
475 | #define MX25_PAD_GPIO_F__LD17 IOMUX_PAD(0x404, 0x208, 0x02, 0, 0, PAD_CTL_SRE_FAST) | ||
476 | #define MX25_PAD_GPIO_E__AUD7_TXD IOMUX_PAD(0x400, 0x204, 0x14, 0, 0, NO_PAD_CTRL) | ||
477 | |||
478 | #define MX25_PAD_GPIO_F__GPIO_F IOMUX_PAD(0x404, 0x208, 0x10, 0, 0, NO_PAD_CTRL) | ||
479 | #define MX25_PAD_GPIO_F__AUD7_TXC IOMUX_PAD(0x404, 0x208, 0x14, 0, 0, NO_PAD_CTRL) | ||
480 | |||
481 | #define MX25_PAD_EXT_ARMCLK__EXT_ARMCLK IOMUX_PAD(0x000, 0x20c, 0x10, 0, 0, NO_PAD_CTRL) | ||
482 | #define MX25_PAD_EXT_ARMCLK__GPIO_3_15 IOMUX_PAD(0x000, 0x20c, 0x15, 0, 0, NO_PAD_CTRL) | ||
483 | |||
484 | #define MX25_PAD_UPLL_BYPCLK__UPLL_BYPCLK IOMUX_PAD(0x000, 0x210, 0x10, 0, 0, NO_PAD_CTRL) | ||
485 | #define MX25_PAD_UPLL_BYPCLK__GPIO_3_16 IOMUX_PAD(0x000, 0x210, 0x15, 0, 0, NO_PAD_CTRL) | ||
486 | |||
487 | #define MX25_PAD_VSTBY_REQ__VSTBY_REQ IOMUX_PAD(0x408, 0x214, 0x10, 0, 0, NO_PAD_CTRL) | ||
488 | #define MX25_PAD_VSTBY_REQ__AUD7_TXFS IOMUX_PAD(0x408, 0x214, 0x14, 0, 0, NO_PAD_CTRL) | ||
489 | #define MX25_PAD_VSTBY_REQ__GPIO_3_17 IOMUX_PAD(0x408, 0x214, 0x15, 0, 0, NO_PAD_CTRL) | ||
490 | #define MX25_PAD_VSTBY_ACK__VSTBY_ACK IOMUX_PAD(0x40c, 0x218, 0x10, 0, 0, NO_PAD_CTRL) | ||
491 | #define MX25_PAD_VSTBY_ACK__GPIO_3_18 IOMUX_PAD(0x40c, 0x218, 0x15, 0, 0, NO_PAD_CTRL) | ||
492 | |||
493 | #define MX25_PAD_POWER_FAIL__POWER_FAIL IOMUX_PAD(0x410, 0x21c, 0x10, 0, 0, NO_PAD_CTRL) | ||
494 | #define MX25_PAD_POWER_FAIL__AUD7_RXD IOMUX_PAD(0x410, 0x21c, 0x14, 0x478, 1, NO_PAD_CTRL) | ||
495 | #define MX25_PAD_POWER_FAIL__GPIO_3_19 IOMUX_PAD(0x410, 0x21c, 0x15, 0, 0, NO_PAD_CTRL) | ||
496 | |||
497 | #define MX25_PAD_CLKO__CLKO IOMUX_PAD(0x414, 0x220, 0x10, 0, 0, NO_PAD_CTRL) | ||
498 | #define MX25_PAD_CLKO__GPIO_2_21 IOMUX_PAD(0x414, 0x220, 0x15, 0, 0, NO_PAD_CTRL) | ||
499 | |||
500 | #define MX25_PAD_BOOT_MODE0__BOOT_MODE0 IOMUX_PAD(0x000, 0x224, 0x00, 0, 0, NO_PAD_CTRL) | ||
501 | #define MX25_PAD_BOOT_MODE0__GPIO_4_30 IOMUX_PAD(0x000, 0x224, 0x05, 0, 0, NO_PAD_CTRL) | ||
502 | #define MX25_PAD_BOOT_MODE1__BOOT_MODE1 IOMUX_PAD(0x000, 0x228, 0x00, 0, 0, NO_PAD_CTRL) | ||
503 | #define MX25_PAD_BOOT_MODE1__GPIO_4_31 IOMUX_PAD(0x000, 0x228, 0x05, 0, 0, NO_PAD_CTRL) | ||
504 | |||
505 | #define MX25_PAD_CTL_GRP_DVS_MISC IOMUX_PAD(0x418, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
506 | #define MX25_PAD_CTL_GRP_DSE_FEC IOMUX_PAD(0x41c, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
507 | #define MX25_PAD_CTL_GRP_DVS_JTAG IOMUX_PAD(0x420, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
508 | #define MX25_PAD_CTL_GRP_DSE_NFC IOMUX_PAD(0x424, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
509 | #define MX25_PAD_CTL_GRP_DSE_CSI IOMUX_PAD(0x428, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
510 | #define MX25_PAD_CTL_GRP_DSE_WEIM IOMUX_PAD(0x42c, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
511 | #define MX25_PAD_CTL_GRP_DSE_DDR IOMUX_PAD(0x430, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
512 | #define MX25_PAD_CTL_GRP_DVS_CRM IOMUX_PAD(0x434, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
513 | #define MX25_PAD_CTL_GRP_DSE_KPP IOMUX_PAD(0x438, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
514 | #define MX25_PAD_CTL_GRP_DSE_SDHC1 IOMUX_PAD(0x43c, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
515 | #define MX25_PAD_CTL_GRP_DSE_LCD IOMUX_PAD(0x440, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
516 | #define MX25_PAD_CTL_GRP_DSE_UART IOMUX_PAD(0x444, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
517 | #define MX25_PAD_CTL_GRP_DVS_NFC IOMUX_PAD(0x448, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
518 | #define MX25_PAD_CTL_GRP_DVS_CSI IOMUX_PAD(0x44c, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
519 | #define MX25_PAD_CTL_GRP_DSE_CSPI1 IOMUX_PAD(0x450, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
520 | #define MX25_PAD_CTL_GRP_DDRTYPE IOMUX_PAD(0x454, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
521 | #define MX25_PAD_CTL_GRP_DVS_SDHC1 IOMUX_PAD(0x458, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
522 | #define MX25_PAD_CTL_GRP_DVS_LCD IOMUX_PAD(0x45c, 0x000, 0, 0, 0, NO_PAD_CTRL) | ||
523 | |||
524 | #endif /* __MACH_IOMUX_MX25_H__ */ | ||
diff --git a/arch/arm/mach-imx/iomux-mx3.h b/arch/arm/mach-imx/iomux-mx3.h index 0a5adba61e0b..2e4a0ddca76c 100644 --- a/arch/arm/mach-imx/iomux-mx3.h +++ b/arch/arm/mach-imx/iomux-mx3.h | |||
@@ -114,7 +114,7 @@ enum iomux_gp_func { | |||
114 | */ | 114 | */ |
115 | int mxc_iomux_alloc_pin(unsigned int pin, const char *label); | 115 | int mxc_iomux_alloc_pin(unsigned int pin, const char *label); |
116 | /* | 116 | /* |
117 | * setups mutliple pins | 117 | * setups multiple pins |
118 | * convenient way to call the above function with tables | 118 | * convenient way to call the above function with tables |
119 | */ | 119 | */ |
120 | int mxc_iomux_setup_multiple_pins(const unsigned int *pin_list, unsigned count, | 120 | int mxc_iomux_setup_multiple_pins(const unsigned int *pin_list, unsigned count, |
diff --git a/arch/arm/mach-imx/iomux-v3.c b/arch/arm/mach-imx/iomux-v3.c index d61f9606fc56..a53b2e64f98d 100644 --- a/arch/arm/mach-imx/iomux-v3.c +++ b/arch/arm/mach-imx/iomux-v3.c | |||
@@ -56,9 +56,10 @@ int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad) | |||
56 | return 0; | 56 | return 0; |
57 | } | 57 | } |
58 | 58 | ||
59 | int mxc_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t *pad_list, unsigned count) | 59 | int mxc_iomux_v3_setup_multiple_pads(const iomux_v3_cfg_t *pad_list, |
60 | unsigned count) | ||
60 | { | 61 | { |
61 | iomux_v3_cfg_t *p = pad_list; | 62 | const iomux_v3_cfg_t *p = pad_list; |
62 | int i; | 63 | int i; |
63 | int ret; | 64 | int ret; |
64 | 65 | ||
diff --git a/arch/arm/mach-imx/iomux-v3.h b/arch/arm/mach-imx/iomux-v3.h index 2fa3b5430102..f79e165a3b3c 100644 --- a/arch/arm/mach-imx/iomux-v3.h +++ b/arch/arm/mach-imx/iomux-v3.h | |||
@@ -128,10 +128,11 @@ typedef u64 iomux_v3_cfg_t; | |||
128 | int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad); | 128 | int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad); |
129 | 129 | ||
130 | /* | 130 | /* |
131 | * setups mutliple pads | 131 | * setups multiple pads |
132 | * convenient way to call the above function with tables | 132 | * convenient way to call the above function with tables |
133 | */ | 133 | */ |
134 | int mxc_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t *pad_list, unsigned count); | 134 | int mxc_iomux_v3_setup_multiple_pads(const iomux_v3_cfg_t *pad_list, |
135 | unsigned count); | ||
135 | 136 | ||
136 | /* | 137 | /* |
137 | * Initialise the iomux controller | 138 | * Initialise the iomux controller |
diff --git a/arch/arm/mach-imx/mach-cpuimx35.c b/arch/arm/mach-imx/mach-cpuimx35.c index 62a6e02f4763..922ffd6ca039 100644 --- a/arch/arm/mach-imx/mach-cpuimx35.c +++ b/arch/arm/mach-imx/mach-cpuimx35.c | |||
@@ -75,7 +75,7 @@ static struct i2c_board_info eukrea_cpuimx35_i2c_devices[] = { | |||
75 | }, | 75 | }, |
76 | }; | 76 | }; |
77 | 77 | ||
78 | static iomux_v3_cfg_t eukrea_cpuimx35_pads[] = { | 78 | static const iomux_v3_cfg_t eukrea_cpuimx35_pads[] __initconst = { |
79 | /* UART1 */ | 79 | /* UART1 */ |
80 | MX35_PAD_CTS1__UART1_CTS, | 80 | MX35_PAD_CTS1__UART1_CTS, |
81 | MX35_PAD_RTS1__UART1_RTS, | 81 | MX35_PAD_RTS1__UART1_RTS, |
diff --git a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c b/arch/arm/mach-imx/mach-eukrea_cpuimx25.c deleted file mode 100644 index b2ee6e009fe4..000000000000 --- a/arch/arm/mach-imx/mach-eukrea_cpuimx25.c +++ /dev/null | |||
@@ -1,172 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Sascha Hauer, <kernel@pengutronix.de> | ||
3 | * Copyright 2010 Eric Bénard - Eukréa Electromatique, <eric@eukrea.com> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License | ||
7 | * as published by the Free Software Foundation; either version 2 | ||
8 | * of the License, or (at your option) any later version. | ||
9 | * This program is distributed in the hope that it will be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write to the Free Software | ||
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
17 | * Boston, MA 02110-1301, USA. | ||
18 | */ | ||
19 | |||
20 | #include <linux/types.h> | ||
21 | #include <linux/init.h> | ||
22 | #include <linux/delay.h> | ||
23 | #include <linux/clk.h> | ||
24 | #include <linux/irq.h> | ||
25 | #include <linux/gpio.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | #include <linux/usb/otg.h> | ||
28 | #include <linux/usb/ulpi.h> | ||
29 | |||
30 | #include <asm/mach-types.h> | ||
31 | #include <asm/mach/arch.h> | ||
32 | #include <asm/mach/time.h> | ||
33 | #include <asm/memory.h> | ||
34 | #include <asm/mach/map.h> | ||
35 | |||
36 | #include "common.h" | ||
37 | #include "devices-imx25.h" | ||
38 | #include "ehci.h" | ||
39 | #include "eukrea-baseboards.h" | ||
40 | #include "hardware.h" | ||
41 | #include "iomux-mx25.h" | ||
42 | #include "mx25.h" | ||
43 | |||
44 | static const struct imxuart_platform_data uart_pdata __initconst = { | ||
45 | .flags = IMXUART_HAVE_RTSCTS, | ||
46 | }; | ||
47 | |||
48 | static iomux_v3_cfg_t eukrea_cpuimx25_pads[] = { | ||
49 | /* FEC - RMII */ | ||
50 | MX25_PAD_FEC_MDC__FEC_MDC, | ||
51 | MX25_PAD_FEC_MDIO__FEC_MDIO, | ||
52 | MX25_PAD_FEC_TDATA0__FEC_TDATA0, | ||
53 | MX25_PAD_FEC_TDATA1__FEC_TDATA1, | ||
54 | MX25_PAD_FEC_TX_EN__FEC_TX_EN, | ||
55 | MX25_PAD_FEC_RDATA0__FEC_RDATA0, | ||
56 | MX25_PAD_FEC_RDATA1__FEC_RDATA1, | ||
57 | MX25_PAD_FEC_RX_DV__FEC_RX_DV, | ||
58 | MX25_PAD_FEC_TX_CLK__FEC_TX_CLK, | ||
59 | /* I2C1 */ | ||
60 | MX25_PAD_I2C1_CLK__I2C1_CLK, | ||
61 | MX25_PAD_I2C1_DAT__I2C1_DAT, | ||
62 | }; | ||
63 | |||
64 | static const struct fec_platform_data mx25_fec_pdata __initconst = { | ||
65 | .phy = PHY_INTERFACE_MODE_RMII, | ||
66 | }; | ||
67 | |||
68 | static const struct mxc_nand_platform_data | ||
69 | eukrea_cpuimx25_nand_board_info __initconst = { | ||
70 | .width = 1, | ||
71 | .hw_ecc = 1, | ||
72 | .flash_bbt = 1, | ||
73 | }; | ||
74 | |||
75 | static const struct imxi2c_platform_data | ||
76 | eukrea_cpuimx25_i2c0_data __initconst = { | ||
77 | .bitrate = 100000, | ||
78 | }; | ||
79 | |||
80 | static struct i2c_board_info eukrea_cpuimx25_i2c_devices[] = { | ||
81 | { | ||
82 | I2C_BOARD_INFO("pcf8563", 0x51), | ||
83 | }, | ||
84 | }; | ||
85 | |||
86 | static int eukrea_cpuimx25_otg_init(struct platform_device *pdev) | ||
87 | { | ||
88 | return mx25_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI); | ||
89 | } | ||
90 | |||
91 | static const struct mxc_usbh_platform_data otg_pdata __initconst = { | ||
92 | .init = eukrea_cpuimx25_otg_init, | ||
93 | .portsc = MXC_EHCI_MODE_UTMI, | ||
94 | }; | ||
95 | |||
96 | static int eukrea_cpuimx25_usbh2_init(struct platform_device *pdev) | ||
97 | { | ||
98 | return mx25_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_SINGLE_UNI | | ||
99 | MXC_EHCI_INTERNAL_PHY | MXC_EHCI_IPPUE_DOWN); | ||
100 | } | ||
101 | |||
102 | static const struct mxc_usbh_platform_data usbh2_pdata __initconst = { | ||
103 | .init = eukrea_cpuimx25_usbh2_init, | ||
104 | .portsc = MXC_EHCI_MODE_SERIAL, | ||
105 | }; | ||
106 | |||
107 | static const struct fsl_usb2_platform_data otg_device_pdata __initconst = { | ||
108 | .operating_mode = FSL_USB2_DR_DEVICE, | ||
109 | .phy_mode = FSL_USB2_PHY_UTMI, | ||
110 | .workaround = FLS_USB2_WORKAROUND_ENGCM09152, | ||
111 | }; | ||
112 | |||
113 | static bool otg_mode_host __initdata; | ||
114 | |||
115 | static int __init eukrea_cpuimx25_otg_mode(char *options) | ||
116 | { | ||
117 | if (!strcmp(options, "host")) | ||
118 | otg_mode_host = true; | ||
119 | else if (!strcmp(options, "device")) | ||
120 | otg_mode_host = false; | ||
121 | else | ||
122 | pr_info("otg_mode neither \"host\" nor \"device\". " | ||
123 | "Defaulting to device\n"); | ||
124 | return 1; | ||
125 | } | ||
126 | __setup("otg_mode=", eukrea_cpuimx25_otg_mode); | ||
127 | |||
128 | static void __init eukrea_cpuimx25_init(void) | ||
129 | { | ||
130 | imx25_soc_init(); | ||
131 | |||
132 | if (mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx25_pads, | ||
133 | ARRAY_SIZE(eukrea_cpuimx25_pads))) | ||
134 | printk(KERN_ERR "error setting cpuimx25 pads !\n"); | ||
135 | |||
136 | imx25_add_imx_uart0(&uart_pdata); | ||
137 | imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info); | ||
138 | imx25_add_imxdi_rtc(); | ||
139 | imx25_add_fec(&mx25_fec_pdata); | ||
140 | imx25_add_imx2_wdt(); | ||
141 | |||
142 | i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, | ||
143 | ARRAY_SIZE(eukrea_cpuimx25_i2c_devices)); | ||
144 | imx25_add_imx_i2c0(&eukrea_cpuimx25_i2c0_data); | ||
145 | |||
146 | if (otg_mode_host) | ||
147 | imx25_add_mxc_ehci_otg(&otg_pdata); | ||
148 | else | ||
149 | imx25_add_fsl_usb2_udc(&otg_device_pdata); | ||
150 | |||
151 | imx25_add_mxc_ehci_hs(&usbh2_pdata); | ||
152 | |||
153 | #ifdef CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD | ||
154 | eukrea_mbimxsd25_baseboard_init(); | ||
155 | #endif | ||
156 | } | ||
157 | |||
158 | static void __init eukrea_cpuimx25_timer_init(void) | ||
159 | { | ||
160 | mx25_clocks_init(); | ||
161 | } | ||
162 | |||
163 | MACHINE_START(EUKREA_CPUIMX25SD, "Eukrea CPUIMX25") | ||
164 | /* Maintainer: Eukrea Electromatique */ | ||
165 | .atag_offset = 0x100, | ||
166 | .map_io = mx25_map_io, | ||
167 | .init_early = imx25_init_early, | ||
168 | .init_irq = mx25_init_irq, | ||
169 | .init_time = eukrea_cpuimx25_timer_init, | ||
170 | .init_machine = eukrea_cpuimx25_init, | ||
171 | .restart = mxc_restart, | ||
172 | MACHINE_END | ||
diff --git a/arch/arm/mach-imx/imx25-dt.c b/arch/arm/mach-imx/mach-imx25.c index 25defbdb06c4..9379fd0a7b4d 100644 --- a/arch/arm/mach-imx/imx25-dt.c +++ b/arch/arm/mach-imx/mach-imx25.c | |||
@@ -10,12 +10,29 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/irq.h> | 12 | #include <linux/irq.h> |
13 | #include <linux/of_address.h> | ||
13 | #include <linux/of_irq.h> | 14 | #include <linux/of_irq.h> |
14 | #include <linux/of_platform.h> | 15 | #include <linux/of_platform.h> |
15 | #include <asm/mach/arch.h> | 16 | #include <asm/mach/arch.h> |
16 | #include <asm/mach/time.h> | 17 | #include <asm/mach/time.h> |
17 | #include "common.h" | 18 | #include "common.h" |
18 | #include "mx25.h" | 19 | #include "hardware.h" |
20 | |||
21 | static void __init imx25_init_early(void) | ||
22 | { | ||
23 | mxc_set_cpu_type(MXC_CPU_MX25); | ||
24 | } | ||
25 | |||
26 | static void __init mx25_init_irq(void) | ||
27 | { | ||
28 | struct device_node *np; | ||
29 | void __iomem *avic_base; | ||
30 | |||
31 | np = of_find_compatible_node(NULL, NULL, "fsl,avic"); | ||
32 | avic_base = of_iomap(np, 0); | ||
33 | BUG_ON(!avic_base); | ||
34 | mxc_init_irq(avic_base); | ||
35 | } | ||
19 | 36 | ||
20 | static const char * const imx25_dt_board_compat[] __initconst = { | 37 | static const char * const imx25_dt_board_compat[] __initconst = { |
21 | "fsl,imx25", | 38 | "fsl,imx25", |
@@ -23,7 +40,6 @@ static const char * const imx25_dt_board_compat[] __initconst = { | |||
23 | }; | 40 | }; |
24 | 41 | ||
25 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") | 42 | DT_MACHINE_START(IMX25_DT, "Freescale i.MX25 (Device Tree Support)") |
26 | .map_io = mx25_map_io, | ||
27 | .init_early = imx25_init_early, | 43 | .init_early = imx25_init_early, |
28 | .init_irq = mx25_init_irq, | 44 | .init_irq = mx25_init_irq, |
29 | .dt_compat = imx25_dt_board_compat, | 45 | .dt_compat = imx25_dt_board_compat, |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 4ad6e473cf83..e21a693fc984 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
@@ -387,10 +387,10 @@ static void __init imx6q_map_io(void) | |||
387 | 387 | ||
388 | static void __init imx6q_init_irq(void) | 388 | static void __init imx6q_init_irq(void) |
389 | { | 389 | { |
390 | imx_gpc_check_dt(); | ||
390 | imx_init_revision_from_anatop(); | 391 | imx_init_revision_from_anatop(); |
391 | imx_init_l2cache(); | 392 | imx_init_l2cache(); |
392 | imx_src_init(); | 393 | imx_src_init(); |
393 | imx_gpc_init(); | ||
394 | irqchip_init(); | 394 | irqchip_init(); |
395 | } | 395 | } |
396 | 396 | ||
diff --git a/arch/arm/mach-imx/mach-imx6sl.c b/arch/arm/mach-imx/mach-imx6sl.c index 24bfaaf944c8..12a1b098fc6a 100644 --- a/arch/arm/mach-imx/mach-imx6sl.c +++ b/arch/arm/mach-imx/mach-imx6sl.c | |||
@@ -61,10 +61,10 @@ static void __init imx6sl_init_machine(void) | |||
61 | 61 | ||
62 | static void __init imx6sl_init_irq(void) | 62 | static void __init imx6sl_init_irq(void) |
63 | { | 63 | { |
64 | imx_gpc_check_dt(); | ||
64 | imx_init_revision_from_anatop(); | 65 | imx_init_revision_from_anatop(); |
65 | imx_init_l2cache(); | 66 | imx_init_l2cache(); |
66 | imx_src_init(); | 67 | imx_src_init(); |
67 | imx_gpc_init(); | ||
68 | irqchip_init(); | 68 | irqchip_init(); |
69 | } | 69 | } |
70 | 70 | ||
diff --git a/arch/arm/mach-imx/mach-imx6sx.c b/arch/arm/mach-imx/mach-imx6sx.c index 66988eb6a3a4..f17b7004c24b 100644 --- a/arch/arm/mach-imx/mach-imx6sx.c +++ b/arch/arm/mach-imx/mach-imx6sx.c | |||
@@ -81,10 +81,10 @@ static void __init imx6sx_init_machine(void) | |||
81 | 81 | ||
82 | static void __init imx6sx_init_irq(void) | 82 | static void __init imx6sx_init_irq(void) |
83 | { | 83 | { |
84 | imx_gpc_check_dt(); | ||
84 | imx_init_revision_from_anatop(); | 85 | imx_init_revision_from_anatop(); |
85 | imx_init_l2cache(); | 86 | imx_init_l2cache(); |
86 | imx_src_init(); | 87 | imx_src_init(); |
87 | imx_gpc_init(); | ||
88 | irqchip_init(); | 88 | irqchip_init(); |
89 | } | 89 | } |
90 | 90 | ||
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c deleted file mode 100644 index 0d01e367b062..000000000000 --- a/arch/arm/mach-imx/mach-mx25_3ds.c +++ /dev/null | |||
@@ -1,270 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2009 Sascha Hauer, <kernel@pengutronix.de> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation; either version 2 | ||
7 | * of the License, or (at your option) any later version. | ||
8 | * This program is distributed in the hope that it will be useful, | ||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
11 | * GNU General Public License for more details. | ||
12 | * | ||
13 | * You should have received a copy of the GNU General Public License | ||
14 | * along with this program; if not, write to the Free Software | ||
15 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
16 | * Boston, MA 02110-1301, USA. | ||
17 | */ | ||
18 | |||
19 | /* | ||
20 | * This machine is known as: | ||
21 | * - i.MX25 3-Stack Development System | ||
22 | * - i.MX25 Platform Development Kit (i.MX25 PDK) | ||
23 | */ | ||
24 | |||
25 | #include <linux/types.h> | ||
26 | #include <linux/init.h> | ||
27 | #include <linux/delay.h> | ||
28 | #include <linux/clk.h> | ||
29 | #include <linux/irq.h> | ||
30 | #include <linux/gpio.h> | ||
31 | #include <linux/platform_device.h> | ||
32 | #include <linux/usb/otg.h> | ||
33 | |||
34 | #include <asm/mach-types.h> | ||
35 | #include <asm/mach/arch.h> | ||
36 | #include <asm/mach/time.h> | ||
37 | #include <asm/memory.h> | ||
38 | #include <asm/mach/map.h> | ||
39 | |||
40 | #include "common.h" | ||
41 | #include "devices-imx25.h" | ||
42 | #include "ehci.h" | ||
43 | #include "hardware.h" | ||
44 | #include "iomux-mx25.h" | ||
45 | #include "mx25.h" | ||
46 | |||
47 | #define MX25PDK_CAN_PWDN IMX_GPIO_NR(4, 6) | ||
48 | |||
49 | static const struct imxuart_platform_data uart_pdata __initconst = { | ||
50 | .flags = IMXUART_HAVE_RTSCTS, | ||
51 | }; | ||
52 | |||
53 | static iomux_v3_cfg_t mx25pdk_pads[] = { | ||
54 | MX25_PAD_FEC_MDC__FEC_MDC, | ||
55 | MX25_PAD_FEC_MDIO__FEC_MDIO, | ||
56 | MX25_PAD_FEC_TDATA0__FEC_TDATA0, | ||
57 | MX25_PAD_FEC_TDATA1__FEC_TDATA1, | ||
58 | MX25_PAD_FEC_TX_EN__FEC_TX_EN, | ||
59 | MX25_PAD_FEC_RDATA0__FEC_RDATA0, | ||
60 | MX25_PAD_FEC_RDATA1__FEC_RDATA1, | ||
61 | MX25_PAD_FEC_RX_DV__FEC_RX_DV, | ||
62 | MX25_PAD_FEC_TX_CLK__FEC_TX_CLK, | ||
63 | MX25_PAD_A17__GPIO_2_3, /* FEC_EN, GPIO 35 */ | ||
64 | MX25_PAD_D12__GPIO_4_8, /* FEC_RESET_B, GPIO 104 */ | ||
65 | |||
66 | /* LCD */ | ||
67 | MX25_PAD_LD0__LD0, | ||
68 | MX25_PAD_LD1__LD1, | ||
69 | MX25_PAD_LD2__LD2, | ||
70 | MX25_PAD_LD3__LD3, | ||
71 | MX25_PAD_LD4__LD4, | ||
72 | MX25_PAD_LD5__LD5, | ||
73 | MX25_PAD_LD6__LD6, | ||
74 | MX25_PAD_LD7__LD7, | ||
75 | MX25_PAD_LD8__LD8, | ||
76 | MX25_PAD_LD9__LD9, | ||
77 | MX25_PAD_LD10__LD10, | ||
78 | MX25_PAD_LD11__LD11, | ||
79 | MX25_PAD_LD12__LD12, | ||
80 | MX25_PAD_LD13__LD13, | ||
81 | MX25_PAD_LD14__LD14, | ||
82 | MX25_PAD_LD15__LD15, | ||
83 | MX25_PAD_GPIO_E__LD16, | ||
84 | MX25_PAD_GPIO_F__LD17, | ||
85 | MX25_PAD_HSYNC__HSYNC, | ||
86 | MX25_PAD_VSYNC__VSYNC, | ||
87 | MX25_PAD_LSCLK__LSCLK, | ||
88 | MX25_PAD_OE_ACD__OE_ACD, | ||
89 | MX25_PAD_CONTRAST__CONTRAST, | ||
90 | |||
91 | /* Keypad */ | ||
92 | MX25_PAD_KPP_ROW0__KPP_ROW0, | ||
93 | MX25_PAD_KPP_ROW1__KPP_ROW1, | ||
94 | MX25_PAD_KPP_ROW2__KPP_ROW2, | ||
95 | MX25_PAD_KPP_ROW3__KPP_ROW3, | ||
96 | MX25_PAD_KPP_COL0__KPP_COL0, | ||
97 | MX25_PAD_KPP_COL1__KPP_COL1, | ||
98 | MX25_PAD_KPP_COL2__KPP_COL2, | ||
99 | MX25_PAD_KPP_COL3__KPP_COL3, | ||
100 | |||
101 | /* SD1 */ | ||
102 | MX25_PAD_SD1_CMD__SD1_CMD, | ||
103 | MX25_PAD_SD1_CLK__SD1_CLK, | ||
104 | MX25_PAD_SD1_DATA0__SD1_DATA0, | ||
105 | MX25_PAD_SD1_DATA1__SD1_DATA1, | ||
106 | MX25_PAD_SD1_DATA2__SD1_DATA2, | ||
107 | MX25_PAD_SD1_DATA3__SD1_DATA3, | ||
108 | MX25_PAD_A14__GPIO_2_0, /* WriteProtect */ | ||
109 | MX25_PAD_A15__GPIO_2_1, /* CardDetect */ | ||
110 | |||
111 | /* I2C1 */ | ||
112 | MX25_PAD_I2C1_CLK__I2C1_CLK, | ||
113 | MX25_PAD_I2C1_DAT__I2C1_DAT, | ||
114 | |||
115 | /* CAN1 */ | ||
116 | MX25_PAD_GPIO_A__CAN1_TX, | ||
117 | MX25_PAD_GPIO_B__CAN1_RX, | ||
118 | MX25_PAD_D14__GPIO_4_6, /* CAN_PWDN */ | ||
119 | }; | ||
120 | |||
121 | static const struct fec_platform_data mx25_fec_pdata __initconst = { | ||
122 | .phy = PHY_INTERFACE_MODE_RMII, | ||
123 | }; | ||
124 | |||
125 | #define FEC_ENABLE_GPIO IMX_GPIO_NR(2, 3) | ||
126 | #define FEC_RESET_B_GPIO IMX_GPIO_NR(4, 8) | ||
127 | |||
128 | static void __init mx25pdk_fec_reset(void) | ||
129 | { | ||
130 | gpio_request(FEC_ENABLE_GPIO, "FEC PHY enable"); | ||
131 | gpio_request(FEC_RESET_B_GPIO, "FEC PHY reset"); | ||
132 | |||
133 | gpio_direction_output(FEC_ENABLE_GPIO, 0); /* drop PHY power */ | ||
134 | gpio_direction_output(FEC_RESET_B_GPIO, 0); /* assert reset */ | ||
135 | udelay(2); | ||
136 | |||
137 | /* turn on PHY power and lift reset */ | ||
138 | gpio_set_value(FEC_ENABLE_GPIO, 1); | ||
139 | gpio_set_value(FEC_RESET_B_GPIO, 1); | ||
140 | } | ||
141 | |||
142 | static const struct mxc_nand_platform_data | ||
143 | mx25pdk_nand_board_info __initconst = { | ||
144 | .width = 1, | ||
145 | .hw_ecc = 1, | ||
146 | .flash_bbt = 1, | ||
147 | }; | ||
148 | |||
149 | static struct imx_fb_videomode mx25pdk_modes[] = { | ||
150 | { | ||
151 | .mode = { | ||
152 | .name = "CRT-VGA", | ||
153 | .refresh = 60, | ||
154 | .xres = 640, | ||
155 | .yres = 480, | ||
156 | .pixclock = 39683, | ||
157 | .left_margin = 45, | ||
158 | .right_margin = 114, | ||
159 | .upper_margin = 33, | ||
160 | .lower_margin = 11, | ||
161 | .hsync_len = 1, | ||
162 | .vsync_len = 1, | ||
163 | }, | ||
164 | .bpp = 16, | ||
165 | .pcr = 0xFA208B80, | ||
166 | }, | ||
167 | }; | ||
168 | |||
169 | static const struct imx_fb_platform_data mx25pdk_fb_pdata __initconst = { | ||
170 | .mode = mx25pdk_modes, | ||
171 | .num_modes = ARRAY_SIZE(mx25pdk_modes), | ||
172 | .pwmr = 0x00A903FF, | ||
173 | .lscr1 = 0x00120300, | ||
174 | .dmacr = 0x00020010, | ||
175 | }; | ||
176 | |||
177 | static const uint32_t mx25pdk_keymap[] = { | ||
178 | KEY(0, 0, KEY_UP), | ||
179 | KEY(0, 1, KEY_DOWN), | ||
180 | KEY(0, 2, KEY_VOLUMEDOWN), | ||
181 | KEY(0, 3, KEY_HOME), | ||
182 | KEY(1, 0, KEY_RIGHT), | ||
183 | KEY(1, 1, KEY_LEFT), | ||
184 | KEY(1, 2, KEY_ENTER), | ||
185 | KEY(1, 3, KEY_VOLUMEUP), | ||
186 | KEY(2, 0, KEY_F6), | ||
187 | KEY(2, 1, KEY_F8), | ||
188 | KEY(2, 2, KEY_F9), | ||
189 | KEY(2, 3, KEY_F10), | ||
190 | KEY(3, 0, KEY_F1), | ||
191 | KEY(3, 1, KEY_F2), | ||
192 | KEY(3, 2, KEY_F3), | ||
193 | KEY(3, 3, KEY_POWER), | ||
194 | }; | ||
195 | |||
196 | static const struct matrix_keymap_data mx25pdk_keymap_data __initconst = { | ||
197 | .keymap = mx25pdk_keymap, | ||
198 | .keymap_size = ARRAY_SIZE(mx25pdk_keymap), | ||
199 | }; | ||
200 | |||
201 | static int mx25pdk_usbh2_init(struct platform_device *pdev) | ||
202 | { | ||
203 | return mx25_initialize_usb_hw(pdev->id, MXC_EHCI_INTERNAL_PHY); | ||
204 | } | ||
205 | |||
206 | static const struct mxc_usbh_platform_data usbh2_pdata __initconst = { | ||
207 | .init = mx25pdk_usbh2_init, | ||
208 | .portsc = MXC_EHCI_MODE_SERIAL, | ||
209 | }; | ||
210 | |||
211 | static const struct fsl_usb2_platform_data otg_device_pdata __initconst = { | ||
212 | .operating_mode = FSL_USB2_DR_DEVICE, | ||
213 | .phy_mode = FSL_USB2_PHY_UTMI, | ||
214 | }; | ||
215 | |||
216 | static const struct imxi2c_platform_data mx25_3ds_i2c0_data __initconst = { | ||
217 | .bitrate = 100000, | ||
218 | }; | ||
219 | |||
220 | #define SD1_GPIO_WP IMX_GPIO_NR(2, 0) | ||
221 | #define SD1_GPIO_CD IMX_GPIO_NR(2, 1) | ||
222 | |||
223 | static const struct esdhc_platform_data mx25pdk_esdhc_pdata __initconst = { | ||
224 | .wp_gpio = SD1_GPIO_WP, | ||
225 | .cd_gpio = SD1_GPIO_CD, | ||
226 | .wp_type = ESDHC_WP_GPIO, | ||
227 | .cd_type = ESDHC_CD_GPIO, | ||
228 | }; | ||
229 | |||
230 | static void __init mx25pdk_init(void) | ||
231 | { | ||
232 | imx25_soc_init(); | ||
233 | |||
234 | mxc_iomux_v3_setup_multiple_pads(mx25pdk_pads, | ||
235 | ARRAY_SIZE(mx25pdk_pads)); | ||
236 | |||
237 | imx25_add_imx_uart0(&uart_pdata); | ||
238 | imx25_add_fsl_usb2_udc(&otg_device_pdata); | ||
239 | imx25_add_mxc_ehci_hs(&usbh2_pdata); | ||
240 | imx25_add_mxc_nand(&mx25pdk_nand_board_info); | ||
241 | imx25_add_imxdi_rtc(); | ||
242 | imx25_add_imx_fb(&mx25pdk_fb_pdata); | ||
243 | imx25_add_imx2_wdt(); | ||
244 | |||
245 | mx25pdk_fec_reset(); | ||
246 | imx25_add_fec(&mx25_fec_pdata); | ||
247 | imx25_add_imx_keypad(&mx25pdk_keymap_data); | ||
248 | |||
249 | imx25_add_sdhci_esdhc_imx(0, &mx25pdk_esdhc_pdata); | ||
250 | imx25_add_imx_i2c0(&mx25_3ds_i2c0_data); | ||
251 | |||
252 | gpio_request_one(MX25PDK_CAN_PWDN, GPIOF_OUT_INIT_LOW, "can-pwdn"); | ||
253 | imx25_add_flexcan0(); | ||
254 | } | ||
255 | |||
256 | static void __init mx25pdk_timer_init(void) | ||
257 | { | ||
258 | mx25_clocks_init(); | ||
259 | } | ||
260 | |||
261 | MACHINE_START(MX25_3DS, "Freescale MX25PDK (3DS)") | ||
262 | /* Maintainer: Freescale Semiconductor, Inc. */ | ||
263 | .atag_offset = 0x100, | ||
264 | .map_io = mx25_map_io, | ||
265 | .init_early = imx25_init_early, | ||
266 | .init_irq = mx25_init_irq, | ||
267 | .init_time = mx25pdk_timer_init, | ||
268 | .init_machine = mx25pdk_init, | ||
269 | .restart = mxc_restart, | ||
270 | MACHINE_END | ||
diff --git a/arch/arm/mach-imx/mach-mx35_3ds.c b/arch/arm/mach-imx/mach-mx35_3ds.c index 72cd77d21f63..7e315f00648d 100644 --- a/arch/arm/mach-imx/mach-mx35_3ds.c +++ b/arch/arm/mach-imx/mach-mx35_3ds.c | |||
@@ -166,7 +166,7 @@ static struct platform_device *devices[] __initdata = { | |||
166 | &mx35pdk_flash, | 166 | &mx35pdk_flash, |
167 | }; | 167 | }; |
168 | 168 | ||
169 | static iomux_v3_cfg_t mx35pdk_pads[] = { | 169 | static const iomux_v3_cfg_t mx35pdk_pads[] __initconst = { |
170 | /* UART1 */ | 170 | /* UART1 */ |
171 | MX35_PAD_CTS1__UART1_CTS, | 171 | MX35_PAD_CTS1__UART1_CTS, |
172 | MX35_PAD_RTS1__UART1_RTS, | 172 | MX35_PAD_RTS1__UART1_RTS, |
diff --git a/arch/arm/mach-imx/mach-pcm043.c b/arch/arm/mach-imx/mach-pcm043.c index b623bcaca76c..e447e59c0604 100644 --- a/arch/arm/mach-imx/mach-pcm043.c +++ b/arch/arm/mach-imx/mach-pcm043.c | |||
@@ -129,7 +129,7 @@ static struct platform_device *devices[] __initdata = { | |||
129 | &pcm043_flash, | 129 | &pcm043_flash, |
130 | }; | 130 | }; |
131 | 131 | ||
132 | static iomux_v3_cfg_t pcm043_pads[] = { | 132 | static const iomux_v3_cfg_t pcm043_pads[] __initconst = { |
133 | /* UART1 */ | 133 | /* UART1 */ |
134 | MX35_PAD_CTS1__UART1_CTS, | 134 | MX35_PAD_CTS1__UART1_CTS, |
135 | MX35_PAD_RTS1__UART1_RTS, | 135 | MX35_PAD_RTS1__UART1_RTS, |
diff --git a/arch/arm/mach-imx/mach-vpr200.c b/arch/arm/mach-imx/mach-vpr200.c index 97836e94451c..27a8f7e3ec08 100644 --- a/arch/arm/mach-imx/mach-vpr200.c +++ b/arch/arm/mach-imx/mach-vpr200.c | |||
@@ -161,7 +161,7 @@ static struct i2c_board_info vpr200_i2c_devices[] = { | |||
161 | } | 161 | } |
162 | }; | 162 | }; |
163 | 163 | ||
164 | static iomux_v3_cfg_t vpr200_pads[] = { | 164 | static const iomux_v3_cfg_t vpr200_pads[] __initconst = { |
165 | /* UART1 */ | 165 | /* UART1 */ |
166 | MX35_PAD_TXD1__UART1_TXD_MUX, | 166 | MX35_PAD_TXD1__UART1_TXD_MUX, |
167 | MX35_PAD_RXD1__UART1_RXD_MUX, | 167 | MX35_PAD_RXD1__UART1_RXD_MUX, |
diff --git a/arch/arm/mach-imx/mm-imx25.c b/arch/arm/mach-imx/mm-imx25.c deleted file mode 100644 index 5211f62c624e..000000000000 --- a/arch/arm/mach-imx/mm-imx25.c +++ /dev/null | |||
@@ -1,89 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999,2000 Arm Limited | ||
3 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
4 | * Copyright (C) 2002 Shane Nay (shane@minirl.com) | ||
5 | * Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved. | ||
6 | * - add MX31 specific definitions | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | */ | ||
18 | |||
19 | #include <linux/mm.h> | ||
20 | #include <linux/init.h> | ||
21 | #include <linux/err.h> | ||
22 | #include <linux/pinctrl/machine.h> | ||
23 | |||
24 | #include <asm/pgtable.h> | ||
25 | #include <asm/mach/map.h> | ||
26 | |||
27 | #include "common.h" | ||
28 | #include "devices/devices-common.h" | ||
29 | #include "hardware.h" | ||
30 | #include "iomux-v3.h" | ||
31 | #include "mx25.h" | ||
32 | |||
33 | /* | ||
34 | * This table defines static virtual address mappings for I/O regions. | ||
35 | * These are the mappings common across all MX25 boards. | ||
36 | */ | ||
37 | static struct map_desc mx25_io_desc[] __initdata = { | ||
38 | imx_map_entry(MX25, AVIC, MT_DEVICE_NONSHARED), | ||
39 | imx_map_entry(MX25, AIPS1, MT_DEVICE_NONSHARED), | ||
40 | imx_map_entry(MX25, AIPS2, MT_DEVICE_NONSHARED), | ||
41 | }; | ||
42 | |||
43 | /* | ||
44 | * This function initializes the memory map. It is called during the | ||
45 | * system startup to create static physical to virtual memory mappings | ||
46 | * for the IO modules. | ||
47 | */ | ||
48 | void __init mx25_map_io(void) | ||
49 | { | ||
50 | iotable_init(mx25_io_desc, ARRAY_SIZE(mx25_io_desc)); | ||
51 | } | ||
52 | |||
53 | void __init imx25_init_early(void) | ||
54 | { | ||
55 | mxc_set_cpu_type(MXC_CPU_MX25); | ||
56 | mxc_iomux_v3_init(MX25_IO_ADDRESS(MX25_IOMUXC_BASE_ADDR)); | ||
57 | } | ||
58 | |||
59 | void __init mx25_init_irq(void) | ||
60 | { | ||
61 | mxc_init_irq(MX25_IO_ADDRESS(MX25_AVIC_BASE_ADDR)); | ||
62 | } | ||
63 | |||
64 | static struct sdma_platform_data imx25_sdma_pdata __initdata = { | ||
65 | .fw_name = "sdma-imx25.bin", | ||
66 | }; | ||
67 | |||
68 | static const struct resource imx25_audmux_res[] __initconst = { | ||
69 | DEFINE_RES_MEM(MX25_AUDMUX_BASE_ADDR, SZ_16K), | ||
70 | }; | ||
71 | |||
72 | void __init imx25_soc_init(void) | ||
73 | { | ||
74 | mxc_arch_reset_init(MX25_IO_ADDRESS(MX25_WDOG_BASE_ADDR)); | ||
75 | mxc_device_init(); | ||
76 | |||
77 | /* i.mx25 has the i.mx35 type gpio */ | ||
78 | mxc_register_gpio("imx35-gpio", 0, MX25_GPIO1_BASE_ADDR, SZ_16K, MX25_INT_GPIO1, 0); | ||
79 | mxc_register_gpio("imx35-gpio", 1, MX25_GPIO2_BASE_ADDR, SZ_16K, MX25_INT_GPIO2, 0); | ||
80 | mxc_register_gpio("imx35-gpio", 2, MX25_GPIO3_BASE_ADDR, SZ_16K, MX25_INT_GPIO3, 0); | ||
81 | mxc_register_gpio("imx35-gpio", 3, MX25_GPIO4_BASE_ADDR, SZ_16K, MX25_INT_GPIO4, 0); | ||
82 | |||
83 | pinctrl_provide_dummies(); | ||
84 | /* i.mx25 has the i.mx35 type sdma */ | ||
85 | imx_add_imx_sdma("imx35-sdma", MX25_SDMA_BASE_ADDR, MX25_INT_SDMA, &imx25_sdma_pdata); | ||
86 | /* i.mx25 has the i.mx31 type audmux */ | ||
87 | platform_device_register_simple("imx31-audmux", 0, imx25_audmux_res, | ||
88 | ARRAY_SIZE(imx25_audmux_res)); | ||
89 | } | ||
diff --git a/arch/arm/mach-imx/mx25.h b/arch/arm/mach-imx/mx25.h deleted file mode 100644 index ec466400a200..000000000000 --- a/arch/arm/mach-imx/mx25.h +++ /dev/null | |||
@@ -1,117 +0,0 @@ | |||
1 | #ifndef __MACH_MX25_H__ | ||
2 | #define __MACH_MX25_H__ | ||
3 | |||
4 | #define MX25_AIPS1_BASE_ADDR 0x43f00000 | ||
5 | #define MX25_AIPS1_SIZE SZ_1M | ||
6 | #define MX25_AIPS2_BASE_ADDR 0x53f00000 | ||
7 | #define MX25_AIPS2_SIZE SZ_1M | ||
8 | #define MX25_AVIC_BASE_ADDR 0x68000000 | ||
9 | #define MX25_AVIC_SIZE SZ_1M | ||
10 | |||
11 | #define MX25_I2C1_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x80000) | ||
12 | #define MX25_I2C3_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x84000) | ||
13 | #define MX25_CAN1_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x88000) | ||
14 | #define MX25_CAN2_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x8c000) | ||
15 | #define MX25_I2C2_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0x98000) | ||
16 | #define MX25_CSPI1_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0xa4000) | ||
17 | #define MX25_IOMUXC_BASE_ADDR (MX25_AIPS1_BASE_ADDR + 0xac000) | ||
18 | |||
19 | #define MX25_CRM_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0x80000) | ||
20 | #define MX25_GPT1_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0x90000) | ||
21 | #define MX25_GPIO4_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0x9c000) | ||
22 | #define MX25_PWM2_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xa0000) | ||
23 | #define MX25_GPIO3_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xa4000) | ||
24 | #define MX25_PWM3_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xa8000) | ||
25 | #define MX25_PWM4_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xc8000) | ||
26 | #define MX25_GPIO1_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xcc000) | ||
27 | #define MX25_GPIO2_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xd0000) | ||
28 | #define MX25_WDOG_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xdc000) | ||
29 | #define MX25_PWM1_BASE_ADDR (MX25_AIPS2_BASE_ADDR + 0xe0000) | ||
30 | |||
31 | #define MX25_UART1_BASE_ADDR 0x43f90000 | ||
32 | #define MX25_UART2_BASE_ADDR 0x43f94000 | ||
33 | #define MX25_AUDMUX_BASE_ADDR 0x43fb0000 | ||
34 | #define MX25_UART3_BASE_ADDR 0x5000c000 | ||
35 | #define MX25_UART4_BASE_ADDR 0x50008000 | ||
36 | #define MX25_UART5_BASE_ADDR 0x5002c000 | ||
37 | |||
38 | #define MX25_CSPI3_BASE_ADDR 0x50004000 | ||
39 | #define MX25_CSPI2_BASE_ADDR 0x50010000 | ||
40 | #define MX25_FEC_BASE_ADDR 0x50038000 | ||
41 | #define MX25_SSI2_BASE_ADDR 0x50014000 | ||
42 | #define MX25_SSI1_BASE_ADDR 0x50034000 | ||
43 | #define MX25_NFC_BASE_ADDR 0xbb000000 | ||
44 | #define MX25_IIM_BASE_ADDR 0x53ff0000 | ||
45 | #define MX25_DRYICE_BASE_ADDR 0x53ffc000 | ||
46 | #define MX25_ESDHC1_BASE_ADDR 0x53fb4000 | ||
47 | #define MX25_ESDHC2_BASE_ADDR 0x53fb8000 | ||
48 | #define MX25_LCDC_BASE_ADDR 0x53fbc000 | ||
49 | #define MX25_KPP_BASE_ADDR 0x43fa8000 | ||
50 | #define MX25_SDMA_BASE_ADDR 0x53fd4000 | ||
51 | #define MX25_USB_BASE_ADDR 0x53ff4000 | ||
52 | #define MX25_USB_OTG_BASE_ADDR (MX25_USB_BASE_ADDR + 0x0000) | ||
53 | /* | ||
54 | * The reference manual (IMX25RM, Rev. 1, 06/2009) specifies an offset of 0x200 | ||
55 | * for the host controller. Early documentation drafts specified 0x400 and | ||
56 | * Freescale internal sources confirm only the latter value to work. | ||
57 | */ | ||
58 | #define MX25_USB_HS_BASE_ADDR (MX25_USB_BASE_ADDR + 0x0400) | ||
59 | #define MX25_CSI_BASE_ADDR 0x53ff8000 | ||
60 | |||
61 | #define MX25_IO_P2V(x) IMX_IO_P2V(x) | ||
62 | #define MX25_IO_ADDRESS(x) IOMEM(MX25_IO_P2V(x)) | ||
63 | |||
64 | /* | ||
65 | * Interrupt numbers | ||
66 | */ | ||
67 | #include <asm/irq.h> | ||
68 | #define MX25_INT_CSPI3 (NR_IRQS_LEGACY + 0) | ||
69 | #define MX25_INT_I2C1 (NR_IRQS_LEGACY + 3) | ||
70 | #define MX25_INT_I2C2 (NR_IRQS_LEGACY + 4) | ||
71 | #define MX25_INT_UART4 (NR_IRQS_LEGACY + 5) | ||
72 | #define MX25_INT_ESDHC2 (NR_IRQS_LEGACY + 8) | ||
73 | #define MX25_INT_ESDHC1 (NR_IRQS_LEGACY + 9) | ||
74 | #define MX25_INT_I2C3 (NR_IRQS_LEGACY + 10) | ||
75 | #define MX25_INT_SSI2 (NR_IRQS_LEGACY + 11) | ||
76 | #define MX25_INT_SSI1 (NR_IRQS_LEGACY + 12) | ||
77 | #define MX25_INT_CSPI2 (NR_IRQS_LEGACY + 13) | ||
78 | #define MX25_INT_CSPI1 (NR_IRQS_LEGACY + 14) | ||
79 | #define MX25_INT_GPIO3 (NR_IRQS_LEGACY + 16) | ||
80 | #define MX25_INT_CSI (NR_IRQS_LEGACY + 17) | ||
81 | #define MX25_INT_UART3 (NR_IRQS_LEGACY + 18) | ||
82 | #define MX25_INT_GPIO4 (NR_IRQS_LEGACY + 23) | ||
83 | #define MX25_INT_KPP (NR_IRQS_LEGACY + 24) | ||
84 | #define MX25_INT_DRYICE (NR_IRQS_LEGACY + 25) | ||
85 | #define MX25_INT_PWM1 (NR_IRQS_LEGACY + 26) | ||
86 | #define MX25_INT_UART2 (NR_IRQS_LEGACY + 32) | ||
87 | #define MX25_INT_NFC (NR_IRQS_LEGACY + 33) | ||
88 | #define MX25_INT_SDMA (NR_IRQS_LEGACY + 34) | ||
89 | #define MX25_INT_USB_HS (NR_IRQS_LEGACY + 35) | ||
90 | #define MX25_INT_PWM2 (NR_IRQS_LEGACY + 36) | ||
91 | #define MX25_INT_USB_OTG (NR_IRQS_LEGACY + 37) | ||
92 | #define MX25_INT_LCDC (NR_IRQS_LEGACY + 39) | ||
93 | #define MX25_INT_UART5 (NR_IRQS_LEGACY + 40) | ||
94 | #define MX25_INT_PWM3 (NR_IRQS_LEGACY + 41) | ||
95 | #define MX25_INT_PWM4 (NR_IRQS_LEGACY + 42) | ||
96 | #define MX25_INT_CAN1 (NR_IRQS_LEGACY + 43) | ||
97 | #define MX25_INT_CAN2 (NR_IRQS_LEGACY + 44) | ||
98 | #define MX25_INT_UART1 (NR_IRQS_LEGACY + 45) | ||
99 | #define MX25_INT_GPIO2 (NR_IRQS_LEGACY + 51) | ||
100 | #define MX25_INT_GPIO1 (NR_IRQS_LEGACY + 52) | ||
101 | #define MX25_INT_GPT1 (NR_IRQS_LEGACY + 54) | ||
102 | #define MX25_INT_FEC (NR_IRQS_LEGACY + 57) | ||
103 | |||
104 | #define MX25_DMA_REQ_SSI2_RX1 22 | ||
105 | #define MX25_DMA_REQ_SSI2_TX1 23 | ||
106 | #define MX25_DMA_REQ_SSI2_RX0 24 | ||
107 | #define MX25_DMA_REQ_SSI2_TX0 25 | ||
108 | #define MX25_DMA_REQ_SSI1_RX1 26 | ||
109 | #define MX25_DMA_REQ_SSI1_TX1 27 | ||
110 | #define MX25_DMA_REQ_SSI1_RX0 28 | ||
111 | #define MX25_DMA_REQ_SSI1_TX0 29 | ||
112 | |||
113 | #ifndef __ASSEMBLY__ | ||
114 | extern int mx25_revision(void); | ||
115 | #endif | ||
116 | |||
117 | #endif /* ifndef __MACH_MX25_H__ */ | ||
diff --git a/arch/arm/mach-imx/pm-imx6.c b/arch/arm/mach-imx/pm-imx6.c index 46fd695203c7..6a7c6fc780cc 100644 --- a/arch/arm/mach-imx/pm-imx6.c +++ b/arch/arm/mach-imx/pm-imx6.c | |||
@@ -310,10 +310,12 @@ int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode) | |||
310 | * Low-Power mode. | 310 | * Low-Power mode. |
311 | * 3) Software should mask IRQ #32 right after CCM Low-Power mode | 311 | * 3) Software should mask IRQ #32 right after CCM Low-Power mode |
312 | * is set (set bits 0-1 of CCM_CLPCR). | 312 | * is set (set bits 0-1 of CCM_CLPCR). |
313 | * | ||
314 | * Note that IRQ #32 is GIC SPI #0. | ||
313 | */ | 315 | */ |
314 | imx_gpc_hwirq_unmask(32); | 316 | imx_gpc_hwirq_unmask(0); |
315 | writel_relaxed(val, ccm_base + CLPCR); | 317 | writel_relaxed(val, ccm_base + CLPCR); |
316 | imx_gpc_hwirq_mask(32); | 318 | imx_gpc_hwirq_mask(0); |
317 | 319 | ||
318 | return 0; | 320 | return 0; |
319 | } | 321 | } |
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 34b4c0044961..dd94567c3628 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -71,13 +71,7 @@ static unsigned int mpui7xx_sleep_save[MPUI7XX_SLEEP_SAVE_SIZE]; | |||
71 | static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE]; | 71 | static unsigned int mpui1510_sleep_save[MPUI1510_SLEEP_SAVE_SIZE]; |
72 | static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE]; | 72 | static unsigned int mpui1610_sleep_save[MPUI1610_SLEEP_SAVE_SIZE]; |
73 | 73 | ||
74 | #ifndef CONFIG_OMAP_32K_TIMER | 74 | static unsigned short enable_dyn_sleep; |
75 | |||
76 | static unsigned short enable_dyn_sleep = 0; | ||
77 | |||
78 | #else | ||
79 | |||
80 | static unsigned short enable_dyn_sleep = 1; | ||
81 | 75 | ||
82 | static ssize_t idle_show(struct kobject *kobj, struct kobj_attribute *attr, | 76 | static ssize_t idle_show(struct kobject *kobj, struct kobj_attribute *attr, |
83 | char *buf) | 77 | char *buf) |
@@ -90,8 +84,9 @@ static ssize_t idle_store(struct kobject *kobj, struct kobj_attribute *attr, | |||
90 | { | 84 | { |
91 | unsigned short value; | 85 | unsigned short value; |
92 | if (sscanf(buf, "%hu", &value) != 1 || | 86 | if (sscanf(buf, "%hu", &value) != 1 || |
93 | (value != 0 && value != 1)) { | 87 | (value != 0 && value != 1) || |
94 | printk(KERN_ERR "idle_sleep_store: Invalid value\n"); | 88 | (value != 0 && !IS_ENABLED(CONFIG_OMAP_32K_TIMER))) { |
89 | pr_err("idle_sleep_store: Invalid value\n"); | ||
95 | return -EINVAL; | 90 | return -EINVAL; |
96 | } | 91 | } |
97 | enable_dyn_sleep = value; | 92 | enable_dyn_sleep = value; |
@@ -101,7 +96,6 @@ static ssize_t idle_store(struct kobject *kobj, struct kobj_attribute *attr, | |||
101 | static struct kobj_attribute sleep_while_idle_attr = | 96 | static struct kobj_attribute sleep_while_idle_attr = |
102 | __ATTR(sleep_while_idle, 0644, idle_show, idle_store); | 97 | __ATTR(sleep_while_idle, 0644, idle_show, idle_store); |
103 | 98 | ||
104 | #endif | ||
105 | 99 | ||
106 | static void (*omap_sram_suspend)(unsigned long r0, unsigned long r1) = NULL; | 100 | static void (*omap_sram_suspend)(unsigned long r0, unsigned long r1) = NULL; |
107 | 101 | ||
@@ -115,16 +109,11 @@ void omap1_pm_idle(void) | |||
115 | { | 109 | { |
116 | extern __u32 arm_idlect1_mask; | 110 | extern __u32 arm_idlect1_mask; |
117 | __u32 use_idlect1 = arm_idlect1_mask; | 111 | __u32 use_idlect1 = arm_idlect1_mask; |
118 | int do_sleep = 0; | ||
119 | 112 | ||
120 | local_fiq_disable(); | 113 | local_fiq_disable(); |
121 | 114 | ||
122 | #if defined(CONFIG_OMAP_MPU_TIMER) && !defined(CONFIG_OMAP_DM_TIMER) | 115 | #if defined(CONFIG_OMAP_MPU_TIMER) && !defined(CONFIG_OMAP_DM_TIMER) |
123 | #warning Enable 32kHz OS timer in order to allow sleep states in idle | ||
124 | use_idlect1 = use_idlect1 & ~(1 << 9); | 116 | use_idlect1 = use_idlect1 & ~(1 << 9); |
125 | #else | ||
126 | if (enable_dyn_sleep) | ||
127 | do_sleep = 1; | ||
128 | #endif | 117 | #endif |
129 | 118 | ||
130 | #ifdef CONFIG_OMAP_DM_TIMER | 119 | #ifdef CONFIG_OMAP_DM_TIMER |
@@ -134,10 +123,12 @@ void omap1_pm_idle(void) | |||
134 | if (omap_dma_running()) | 123 | if (omap_dma_running()) |
135 | use_idlect1 &= ~(1 << 6); | 124 | use_idlect1 &= ~(1 << 6); |
136 | 125 | ||
137 | /* We should be able to remove the do_sleep variable and multiple | 126 | /* |
127 | * We should be able to remove the do_sleep variable and multiple | ||
138 | * tests above as soon as drivers, timer and DMA code have been fixed. | 128 | * tests above as soon as drivers, timer and DMA code have been fixed. |
139 | * Even the sleep block count should become obsolete. */ | 129 | * Even the sleep block count should become obsolete. |
140 | if ((use_idlect1 != ~0) || !do_sleep) { | 130 | */ |
131 | if ((use_idlect1 != ~0) || !enable_dyn_sleep) { | ||
141 | 132 | ||
142 | __u32 saved_idlect1 = omap_readl(ARM_IDLECT1); | 133 | __u32 saved_idlect1 = omap_readl(ARM_IDLECT1); |
143 | if (cpu_is_omap15xx()) | 134 | if (cpu_is_omap15xx()) |
@@ -635,15 +626,25 @@ static const struct platform_suspend_ops omap_pm_ops = { | |||
635 | 626 | ||
636 | static int __init omap_pm_init(void) | 627 | static int __init omap_pm_init(void) |
637 | { | 628 | { |
638 | 629 | int error = 0; | |
639 | #ifdef CONFIG_OMAP_32K_TIMER | ||
640 | int error; | ||
641 | #endif | ||
642 | 630 | ||
643 | if (!cpu_class_is_omap1()) | 631 | if (!cpu_class_is_omap1()) |
644 | return -ENODEV; | 632 | return -ENODEV; |
645 | 633 | ||
646 | printk("Power Management for TI OMAP.\n"); | 634 | pr_info("Power Management for TI OMAP.\n"); |
635 | |||
636 | if (!IS_ENABLED(CONFIG_OMAP_32K_TIMER)) | ||
637 | pr_info("OMAP1 PM: sleep states in idle disabled due to no 32KiHz timer\n"); | ||
638 | |||
639 | if (!IS_ENABLED(CONFIG_OMAP_DM_TIMER)) | ||
640 | pr_info("OMAP1 PM: sleep states in idle disabled due to no DMTIMER support\n"); | ||
641 | |||
642 | if (IS_ENABLED(CONFIG_OMAP_32K_TIMER) && | ||
643 | IS_ENABLED(CONFIG_OMAP_DM_TIMER)) { | ||
644 | /* OMAP16xx only */ | ||
645 | pr_info("OMAP1 PM: sleep states in idle enabled\n"); | ||
646 | enable_dyn_sleep = 1; | ||
647 | } | ||
647 | 648 | ||
648 | /* | 649 | /* |
649 | * We copy the assembler sleep/wakeup routines to SRAM. | 650 | * We copy the assembler sleep/wakeup routines to SRAM. |
@@ -693,17 +694,15 @@ static int __init omap_pm_init(void) | |||
693 | omap_pm_init_debugfs(); | 694 | omap_pm_init_debugfs(); |
694 | #endif | 695 | #endif |
695 | 696 | ||
696 | #ifdef CONFIG_OMAP_32K_TIMER | ||
697 | error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr); | 697 | error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr); |
698 | if (error) | 698 | if (error) |
699 | printk(KERN_ERR "sysfs_create_file failed: %d\n", error); | 699 | printk(KERN_ERR "sysfs_create_file failed: %d\n", error); |
700 | #endif | ||
701 | 700 | ||
702 | if (cpu_is_omap16xx()) { | 701 | if (cpu_is_omap16xx()) { |
703 | /* configure LOW_PWR pin */ | 702 | /* configure LOW_PWR pin */ |
704 | omap_cfg_reg(T20_1610_LOW_PWR); | 703 | omap_cfg_reg(T20_1610_LOW_PWR); |
705 | } | 704 | } |
706 | 705 | ||
707 | return 0; | 706 | return error; |
708 | } | 707 | } |
709 | __initcall(omap_pm_init); | 708 | __initcall(omap_pm_init); |
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index 02f5f3faac1f..f92f389890bd 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig | |||
@@ -69,6 +69,7 @@ config SOC_DRA7XX | |||
69 | select ARM_GIC | 69 | select ARM_GIC |
70 | select HAVE_ARM_ARCH_TIMER | 70 | select HAVE_ARM_ARCH_TIMER |
71 | select IRQ_CROSSBAR | 71 | select IRQ_CROSSBAR |
72 | select ARM_ERRATA_798181 if SMP | ||
72 | 73 | ||
73 | config ARCH_OMAP2PLUS | 74 | config ARCH_OMAP2PLUS |
74 | bool | 75 | bool |
@@ -279,27 +280,6 @@ config OMAP3_SDRC_AC_TIMING | |||
279 | wish to say no. Selecting yes without understanding what is | 280 | wish to say no. Selecting yes without understanding what is |
280 | going on could result in system crashes; | 281 | going on could result in system crashes; |
281 | 282 | ||
282 | config OMAP4_ERRATA_I688 | ||
283 | bool "OMAP4 errata: Async Bridge Corruption" | ||
284 | depends on (ARCH_OMAP4 || SOC_OMAP5) && !ARCH_MULTIPLATFORM | ||
285 | select ARCH_HAS_BARRIERS | ||
286 | help | ||
287 | If a data is stalled inside asynchronous bridge because of back | ||
288 | pressure, it may be accepted multiple times, creating pointer | ||
289 | misalignment that will corrupt next transfers on that data path | ||
290 | until next reset of the system (No recovery procedure once the | ||
291 | issue is hit, the path remains consistently broken). Async bridge | ||
292 | can be found on path between MPU to EMIF and MPU to L3 interconnect. | ||
293 | This situation can happen only when the idle is initiated by a | ||
294 | Master Request Disconnection (which is trigged by software when | ||
295 | executing WFI on CPU). | ||
296 | The work-around for this errata needs all the initiators connected | ||
297 | through async bridge must ensure that data path is properly drained | ||
298 | before issuing WFI. This condition will be met if one Strongly ordered | ||
299 | access is performed to the target right before executing the WFI. | ||
300 | In MPU case, L3 T2ASYNC FIFO and DDR T2ASYNC FIFO needs to be drained. | ||
301 | IO barrier ensure that there is no synchronisation loss on initiators | ||
302 | operating on both interconnect port simultaneously. | ||
303 | endmenu | 283 | endmenu |
304 | 284 | ||
305 | endif | 285 | endif |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index 6124db5c37ae..a699d7169307 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -23,6 +23,9 @@ | |||
23 | #include <linux/clk-provider.h> | 23 | #include <linux/clk-provider.h> |
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/bitops.h> | 25 | #include <linux/bitops.h> |
26 | #include <linux/regmap.h> | ||
27 | #include <linux/of_address.h> | ||
28 | #include <linux/bootmem.h> | ||
26 | #include <asm/cpu.h> | 29 | #include <asm/cpu.h> |
27 | 30 | ||
28 | #include <trace/events/power.h> | 31 | #include <trace/events/power.h> |
@@ -72,30 +75,110 @@ struct ti_clk_features ti_clk_features; | |||
72 | static bool clkdm_control = true; | 75 | static bool clkdm_control = true; |
73 | 76 | ||
74 | static LIST_HEAD(clk_hw_omap_clocks); | 77 | static LIST_HEAD(clk_hw_omap_clocks); |
75 | void __iomem *clk_memmaps[CLK_MAX_MEMMAPS]; | 78 | |
79 | struct clk_iomap { | ||
80 | struct regmap *regmap; | ||
81 | void __iomem *mem; | ||
82 | }; | ||
83 | |||
84 | static struct clk_iomap *clk_memmaps[CLK_MAX_MEMMAPS]; | ||
85 | |||
86 | static void clk_memmap_writel(u32 val, void __iomem *reg) | ||
87 | { | ||
88 | struct clk_omap_reg *r = (struct clk_omap_reg *)® | ||
89 | struct clk_iomap *io = clk_memmaps[r->index]; | ||
90 | |||
91 | if (io->regmap) | ||
92 | regmap_write(io->regmap, r->offset, val); | ||
93 | else | ||
94 | writel_relaxed(val, io->mem + r->offset); | ||
95 | } | ||
96 | |||
97 | static u32 clk_memmap_readl(void __iomem *reg) | ||
98 | { | ||
99 | u32 val; | ||
100 | struct clk_omap_reg *r = (struct clk_omap_reg *)® | ||
101 | struct clk_iomap *io = clk_memmaps[r->index]; | ||
102 | |||
103 | if (io->regmap) | ||
104 | regmap_read(io->regmap, r->offset, &val); | ||
105 | else | ||
106 | val = readl_relaxed(io->mem + r->offset); | ||
107 | |||
108 | return val; | ||
109 | } | ||
76 | 110 | ||
77 | void omap2_clk_writel(u32 val, struct clk_hw_omap *clk, void __iomem *reg) | 111 | void omap2_clk_writel(u32 val, struct clk_hw_omap *clk, void __iomem *reg) |
78 | { | 112 | { |
79 | if (clk->flags & MEMMAP_ADDRESSING) { | 113 | if (WARN_ON_ONCE(!(clk->flags & MEMMAP_ADDRESSING))) |
80 | struct clk_omap_reg *r = (struct clk_omap_reg *)® | ||
81 | writel_relaxed(val, clk_memmaps[r->index] + r->offset); | ||
82 | } else { | ||
83 | writel_relaxed(val, reg); | 114 | writel_relaxed(val, reg); |
84 | } | 115 | else |
116 | clk_memmap_writel(val, reg); | ||
85 | } | 117 | } |
86 | 118 | ||
87 | u32 omap2_clk_readl(struct clk_hw_omap *clk, void __iomem *reg) | 119 | u32 omap2_clk_readl(struct clk_hw_omap *clk, void __iomem *reg) |
88 | { | 120 | { |
89 | u32 val; | 121 | if (WARN_ON_ONCE(!(clk->flags & MEMMAP_ADDRESSING))) |
122 | return readl_relaxed(reg); | ||
123 | else | ||
124 | return clk_memmap_readl(reg); | ||
125 | } | ||
90 | 126 | ||
91 | if (clk->flags & MEMMAP_ADDRESSING) { | 127 | static struct ti_clk_ll_ops omap_clk_ll_ops = { |
92 | struct clk_omap_reg *r = (struct clk_omap_reg *)® | 128 | .clk_readl = clk_memmap_readl, |
93 | val = readl_relaxed(clk_memmaps[r->index] + r->offset); | 129 | .clk_writel = clk_memmap_writel, |
94 | } else { | 130 | }; |
95 | val = readl_relaxed(reg); | ||
96 | } | ||
97 | 131 | ||
98 | return val; | 132 | /** |
133 | * omap2_clk_provider_init - initialize a clock provider | ||
134 | * @match_table: DT device table to match for devices to init | ||
135 | * @np: device node pointer for the this clock provider | ||
136 | * @index: index for the clock provider | ||
137 | + @syscon: syscon regmap pointer | ||
138 | * @mem: iomem pointer for the clock provider memory area, only used if | ||
139 | * syscon is not provided | ||
140 | * | ||
141 | * Initializes a clock provider module (CM/PRM etc.), registering | ||
142 | * the memory mapping at specified index and initializing the | ||
143 | * low level driver infrastructure. Returns 0 in success. | ||
144 | */ | ||
145 | int __init omap2_clk_provider_init(struct device_node *np, int index, | ||
146 | struct regmap *syscon, void __iomem *mem) | ||
147 | { | ||
148 | struct clk_iomap *io; | ||
149 | |||
150 | ti_clk_ll_ops = &omap_clk_ll_ops; | ||
151 | |||
152 | io = kzalloc(sizeof(*io), GFP_KERNEL); | ||
153 | |||
154 | io->regmap = syscon; | ||
155 | io->mem = mem; | ||
156 | |||
157 | clk_memmaps[index] = io; | ||
158 | |||
159 | ti_dt_clk_init_provider(np, index); | ||
160 | |||
161 | return 0; | ||
162 | } | ||
163 | |||
164 | /** | ||
165 | * omap2_clk_legacy_provider_init - initialize a legacy clock provider | ||
166 | * @index: index for the clock provider | ||
167 | * @mem: iomem pointer for the clock provider memory area | ||
168 | * | ||
169 | * Initializes a legacy clock provider memory mapping. | ||
170 | */ | ||
171 | void __init omap2_clk_legacy_provider_init(int index, void __iomem *mem) | ||
172 | { | ||
173 | struct clk_iomap *io; | ||
174 | |||
175 | ti_clk_ll_ops = &omap_clk_ll_ops; | ||
176 | |||
177 | io = memblock_virt_alloc(sizeof(*io), 0); | ||
178 | |||
179 | io->mem = mem; | ||
180 | |||
181 | clk_memmaps[index] = io; | ||
99 | } | 182 | } |
100 | 183 | ||
101 | /* | 184 | /* |
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h index a56742f96000..652ed0ab86ec 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h | |||
@@ -271,10 +271,14 @@ extern const struct clksel_rate div_1_3_rates[]; | |||
271 | extern const struct clksel_rate div_1_4_rates[]; | 271 | extern const struct clksel_rate div_1_4_rates[]; |
272 | extern const struct clksel_rate div31_1to31_rates[]; | 272 | extern const struct clksel_rate div31_1to31_rates[]; |
273 | 273 | ||
274 | extern void __iomem *clk_memmaps[]; | ||
275 | |||
276 | extern int omap2_clkops_enable_clkdm(struct clk_hw *hw); | 274 | extern int omap2_clkops_enable_clkdm(struct clk_hw *hw); |
277 | extern void omap2_clkops_disable_clkdm(struct clk_hw *hw); | 275 | extern void omap2_clkops_disable_clkdm(struct clk_hw *hw); |
278 | 276 | ||
277 | struct regmap; | ||
278 | |||
279 | int __init omap2_clk_provider_init(struct device_node *np, int index, | ||
280 | struct regmap *syscon, void __iomem *mem); | ||
281 | void __init omap2_clk_legacy_provider_init(int index, void __iomem *mem); | ||
282 | |||
279 | void __init ti_clk_init_features(void); | 283 | void __init ti_clk_init_features(void); |
280 | #endif | 284 | #endif |
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h index 6222e87a79b6..1fe3e6b833d2 100644 --- a/arch/arm/mach-omap2/cm.h +++ b/arch/arm/mach-omap2/cm.h | |||
@@ -70,6 +70,8 @@ int omap_cm_module_enable(u8 mode, u8 part, u16 inst, u16 clkctrl_offs); | |||
70 | int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs); | 70 | int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs); |
71 | extern int cm_register(struct cm_ll_data *cld); | 71 | extern int cm_register(struct cm_ll_data *cld); |
72 | extern int cm_unregister(struct cm_ll_data *cld); | 72 | extern int cm_unregister(struct cm_ll_data *cld); |
73 | int omap_cm_init(void); | ||
74 | int omap2_cm_base_init(void); | ||
73 | 75 | ||
74 | # endif | 76 | # endif |
75 | 77 | ||
diff --git a/arch/arm/mach-omap2/cm2xxx.c b/arch/arm/mach-omap2/cm2xxx.c index ef62ac9dcd05..3e5fd3587eb1 100644 --- a/arch/arm/mach-omap2/cm2xxx.c +++ b/arch/arm/mach-omap2/cm2xxx.c | |||
@@ -393,7 +393,7 @@ static struct cm_ll_data omap2xxx_cm_ll_data = { | |||
393 | .wait_module_ready = &omap2xxx_cm_wait_module_ready, | 393 | .wait_module_ready = &omap2xxx_cm_wait_module_ready, |
394 | }; | 394 | }; |
395 | 395 | ||
396 | int __init omap2xxx_cm_init(void) | 396 | int __init omap2xxx_cm_init(const struct omap_prcm_init_data *data) |
397 | { | 397 | { |
398 | return cm_register(&omap2xxx_cm_ll_data); | 398 | return cm_register(&omap2xxx_cm_ll_data); |
399 | } | 399 | } |
diff --git a/arch/arm/mach-omap2/cm2xxx.h b/arch/arm/mach-omap2/cm2xxx.h index 83b6c597b0e1..7b8c79c0ce27 100644 --- a/arch/arm/mach-omap2/cm2xxx.h +++ b/arch/arm/mach-omap2/cm2xxx.h | |||
@@ -63,7 +63,7 @@ extern u32 omap2xxx_cm_get_core_pll_config(void); | |||
63 | extern void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core, | 63 | extern void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core, |
64 | u32 mdm); | 64 | u32 mdm); |
65 | 65 | ||
66 | extern int __init omap2xxx_cm_init(void); | 66 | int __init omap2xxx_cm_init(const struct omap_prcm_init_data *data); |
67 | 67 | ||
68 | #endif | 68 | #endif |
69 | 69 | ||
diff --git a/arch/arm/mach-omap2/cm33xx.c b/arch/arm/mach-omap2/cm33xx.c index cc5aac784278..7b181f929525 100644 --- a/arch/arm/mach-omap2/cm33xx.c +++ b/arch/arm/mach-omap2/cm33xx.c | |||
@@ -352,7 +352,7 @@ static struct cm_ll_data am33xx_cm_ll_data = { | |||
352 | .module_disable = &am33xx_cm_module_disable, | 352 | .module_disable = &am33xx_cm_module_disable, |
353 | }; | 353 | }; |
354 | 354 | ||
355 | int __init am33xx_cm_init(void) | 355 | int __init am33xx_cm_init(const struct omap_prcm_init_data *data) |
356 | { | 356 | { |
357 | return cm_register(&am33xx_cm_ll_data); | 357 | return cm_register(&am33xx_cm_ll_data); |
358 | } | 358 | } |
diff --git a/arch/arm/mach-omap2/cm33xx.h b/arch/arm/mach-omap2/cm33xx.h index 046b4b2bc9d9..a91f7d282455 100644 --- a/arch/arm/mach-omap2/cm33xx.h +++ b/arch/arm/mach-omap2/cm33xx.h | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | #include "cm.h" | 20 | #include "cm.h" |
21 | #include "cm-regbits-33xx.h" | 21 | #include "cm-regbits-33xx.h" |
22 | #include "prcm-common.h" | ||
22 | 23 | ||
23 | /* CM base address */ | 24 | /* CM base address */ |
24 | #define AM33XX_CM_BASE 0x44e00000 | 25 | #define AM33XX_CM_BASE 0x44e00000 |
@@ -374,6 +375,6 @@ | |||
374 | 375 | ||
375 | 376 | ||
376 | #ifndef __ASSEMBLER__ | 377 | #ifndef __ASSEMBLER__ |
377 | int am33xx_cm_init(void); | 378 | int am33xx_cm_init(const struct omap_prcm_init_data *data); |
378 | #endif /* ASSEMBLER */ | 379 | #endif /* ASSEMBLER */ |
379 | #endif | 380 | #endif |
diff --git a/arch/arm/mach-omap2/cm3xxx.c b/arch/arm/mach-omap2/cm3xxx.c index ebead8f035f9..187fa4386718 100644 --- a/arch/arm/mach-omap2/cm3xxx.c +++ b/arch/arm/mach-omap2/cm3xxx.c | |||
@@ -671,8 +671,9 @@ static struct cm_ll_data omap3xxx_cm_ll_data = { | |||
671 | .wait_module_ready = &omap3xxx_cm_wait_module_ready, | 671 | .wait_module_ready = &omap3xxx_cm_wait_module_ready, |
672 | }; | 672 | }; |
673 | 673 | ||
674 | int __init omap3xxx_cm_init(void) | 674 | int __init omap3xxx_cm_init(const struct omap_prcm_init_data *data) |
675 | { | 675 | { |
676 | omap2_clk_legacy_provider_init(TI_CLKM_CM, cm_base + OMAP3430_IVA2_MOD); | ||
676 | return cm_register(&omap3xxx_cm_ll_data); | 677 | return cm_register(&omap3xxx_cm_ll_data); |
677 | } | 678 | } |
678 | 679 | ||
diff --git a/arch/arm/mach-omap2/cm3xxx.h b/arch/arm/mach-omap2/cm3xxx.h index 734a8581c0c4..bc444e2080a1 100644 --- a/arch/arm/mach-omap2/cm3xxx.h +++ b/arch/arm/mach-omap2/cm3xxx.h | |||
@@ -72,7 +72,7 @@ extern void omap3_cm_save_context(void); | |||
72 | extern void omap3_cm_restore_context(void); | 72 | extern void omap3_cm_restore_context(void); |
73 | extern void omap3_cm_save_scratchpad_contents(u32 *ptr); | 73 | extern void omap3_cm_save_scratchpad_contents(u32 *ptr); |
74 | 74 | ||
75 | extern int __init omap3xxx_cm_init(void); | 75 | int __init omap3xxx_cm_init(const struct omap_prcm_init_data *data); |
76 | 76 | ||
77 | #endif | 77 | #endif |
78 | 78 | ||
diff --git a/arch/arm/mach-omap2/cm44xx.h b/arch/arm/mach-omap2/cm44xx.h index 728d06a4af19..309a4c913448 100644 --- a/arch/arm/mach-omap2/cm44xx.h +++ b/arch/arm/mach-omap2/cm44xx.h | |||
@@ -23,7 +23,6 @@ | |||
23 | #define OMAP4_CM_CLKSTCTRL 0x0000 | 23 | #define OMAP4_CM_CLKSTCTRL 0x0000 |
24 | #define OMAP4_CM_STATICDEP 0x0004 | 24 | #define OMAP4_CM_STATICDEP 0x0004 |
25 | 25 | ||
26 | void omap_cm_base_init(void); | 26 | int omap4_cm_init(const struct omap_prcm_init_data *data); |
27 | int omap4_cm_init(void); | ||
28 | 27 | ||
29 | #endif | 28 | #endif |
diff --git a/arch/arm/mach-omap2/cm_common.c b/arch/arm/mach-omap2/cm_common.c index 8fe02fcedc48..23e8bcec34e3 100644 --- a/arch/arm/mach-omap2/cm_common.c +++ b/arch/arm/mach-omap2/cm_common.c | |||
@@ -15,10 +15,14 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
17 | #include <linux/bug.h> | 17 | #include <linux/bug.h> |
18 | #include <linux/of.h> | ||
19 | #include <linux/of_address.h> | ||
18 | 20 | ||
19 | #include "cm2xxx.h" | 21 | #include "cm2xxx.h" |
20 | #include "cm3xxx.h" | 22 | #include "cm3xxx.h" |
23 | #include "cm33xx.h" | ||
21 | #include "cm44xx.h" | 24 | #include "cm44xx.h" |
25 | #include "clock.h" | ||
22 | 26 | ||
23 | /* | 27 | /* |
24 | * cm_ll_data: function pointers to SoC-specific implementations of | 28 | * cm_ll_data: function pointers to SoC-specific implementations of |
@@ -33,6 +37,9 @@ void __iomem *cm_base; | |||
33 | /* cm2_base: base virtual address of the CM2 IP block (OMAP44xx only) */ | 37 | /* cm2_base: base virtual address of the CM2 IP block (OMAP44xx only) */ |
34 | void __iomem *cm2_base; | 38 | void __iomem *cm2_base; |
35 | 39 | ||
40 | #define CM_NO_CLOCKS 0x1 | ||
41 | #define CM_SINGLE_INSTANCE 0x2 | ||
42 | |||
36 | /** | 43 | /** |
37 | * omap2_set_globals_cm - set the CM/CM2 base addresses (for early use) | 44 | * omap2_set_globals_cm - set the CM/CM2 base addresses (for early use) |
38 | * @cm: CM base virtual address | 45 | * @cm: CM base virtual address |
@@ -212,3 +219,152 @@ int cm_unregister(struct cm_ll_data *cld) | |||
212 | 219 | ||
213 | return 0; | 220 | return 0; |
214 | } | 221 | } |
222 | |||
223 | #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) || \ | ||
224 | defined(CONFIG_SOC_DRA7XX) | ||
225 | static struct omap_prcm_init_data cm_data __initdata = { | ||
226 | .index = TI_CLKM_CM, | ||
227 | .init = omap4_cm_init, | ||
228 | }; | ||
229 | |||
230 | static struct omap_prcm_init_data cm2_data __initdata = { | ||
231 | .index = TI_CLKM_CM2, | ||
232 | .init = omap4_cm_init, | ||
233 | }; | ||
234 | #endif | ||
235 | |||
236 | #ifdef CONFIG_ARCH_OMAP2 | ||
237 | static struct omap_prcm_init_data omap2_prcm_data __initdata = { | ||
238 | .index = TI_CLKM_CM, | ||
239 | .init = omap2xxx_cm_init, | ||
240 | .flags = CM_NO_CLOCKS | CM_SINGLE_INSTANCE, | ||
241 | }; | ||
242 | #endif | ||
243 | |||
244 | #ifdef CONFIG_ARCH_OMAP3 | ||
245 | static struct omap_prcm_init_data omap3_cm_data __initdata = { | ||
246 | .index = TI_CLKM_CM, | ||
247 | .init = omap3xxx_cm_init, | ||
248 | .flags = CM_SINGLE_INSTANCE, | ||
249 | |||
250 | /* | ||
251 | * IVA2 offset is a negative value, must offset the cm_base address | ||
252 | * by this to get it to positive side on the iomap | ||
253 | */ | ||
254 | .offset = -OMAP3430_IVA2_MOD, | ||
255 | }; | ||
256 | #endif | ||
257 | |||
258 | #if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_TI81XX) | ||
259 | static struct omap_prcm_init_data am3_prcm_data __initdata = { | ||
260 | .index = TI_CLKM_CM, | ||
261 | .flags = CM_NO_CLOCKS | CM_SINGLE_INSTANCE, | ||
262 | .init = am33xx_cm_init, | ||
263 | }; | ||
264 | #endif | ||
265 | |||
266 | #ifdef CONFIG_SOC_AM43XX | ||
267 | static struct omap_prcm_init_data am4_prcm_data __initdata = { | ||
268 | .index = TI_CLKM_CM, | ||
269 | .flags = CM_NO_CLOCKS | CM_SINGLE_INSTANCE, | ||
270 | .init = omap4_cm_init, | ||
271 | }; | ||
272 | #endif | ||
273 | |||
274 | static const struct of_device_id omap_cm_dt_match_table[] __initconst = { | ||
275 | #ifdef CONFIG_ARCH_OMAP2 | ||
276 | { .compatible = "ti,omap2-prcm", .data = &omap2_prcm_data }, | ||
277 | #endif | ||
278 | #ifdef CONFIG_ARCH_OMAP3 | ||
279 | { .compatible = "ti,omap3-cm", .data = &omap3_cm_data }, | ||
280 | #endif | ||
281 | #ifdef CONFIG_ARCH_OMAP4 | ||
282 | { .compatible = "ti,omap4-cm1", .data = &cm_data }, | ||
283 | { .compatible = "ti,omap4-cm2", .data = &cm2_data }, | ||
284 | #endif | ||
285 | #ifdef CONFIG_SOC_OMAP5 | ||
286 | { .compatible = "ti,omap5-cm-core-aon", .data = &cm_data }, | ||
287 | { .compatible = "ti,omap5-cm-core", .data = &cm2_data }, | ||
288 | #endif | ||
289 | #ifdef CONFIG_SOC_DRA7XX | ||
290 | { .compatible = "ti,dra7-cm-core-aon", .data = &cm_data }, | ||
291 | { .compatible = "ti,dra7-cm-core", .data = &cm2_data }, | ||
292 | #endif | ||
293 | #ifdef CONFIG_SOC_AM33XX | ||
294 | { .compatible = "ti,am3-prcm", .data = &am3_prcm_data }, | ||
295 | #endif | ||
296 | #ifdef CONFIG_SOC_AM43XX | ||
297 | { .compatible = "ti,am4-prcm", .data = &am4_prcm_data }, | ||
298 | #endif | ||
299 | #ifdef CONFIG_SOC_TI81XX | ||
300 | { .compatible = "ti,dm814-prcm", .data = &am3_prcm_data }, | ||
301 | { .compatible = "ti,dm816-prcm", .data = &am3_prcm_data }, | ||
302 | #endif | ||
303 | { } | ||
304 | }; | ||
305 | |||
306 | /** | ||
307 | * omap2_cm_base_init - initialize iomappings for the CM drivers | ||
308 | * | ||
309 | * Detects and initializes the iomappings for the CM driver, based | ||
310 | * on the DT data. Returns 0 in success, negative error value | ||
311 | * otherwise. | ||
312 | */ | ||
313 | int __init omap2_cm_base_init(void) | ||
314 | { | ||
315 | struct device_node *np; | ||
316 | const struct of_device_id *match; | ||
317 | struct omap_prcm_init_data *data; | ||
318 | void __iomem *mem; | ||
319 | |||
320 | for_each_matching_node_and_match(np, omap_cm_dt_match_table, &match) { | ||
321 | data = (struct omap_prcm_init_data *)match->data; | ||
322 | |||
323 | mem = of_iomap(np, 0); | ||
324 | if (!mem) | ||
325 | return -ENOMEM; | ||
326 | |||
327 | if (data->index == TI_CLKM_CM) | ||
328 | cm_base = mem + data->offset; | ||
329 | |||
330 | if (data->index == TI_CLKM_CM2) | ||
331 | cm2_base = mem + data->offset; | ||
332 | |||
333 | data->mem = mem; | ||
334 | |||
335 | data->np = np; | ||
336 | |||
337 | if (data->init && (data->flags & CM_SINGLE_INSTANCE || | ||
338 | (cm_base && cm2_base))) | ||
339 | data->init(data); | ||
340 | } | ||
341 | |||
342 | return 0; | ||
343 | } | ||
344 | |||
345 | /** | ||
346 | * omap_cm_init - low level init for the CM drivers | ||
347 | * | ||
348 | * Initializes the low level clock infrastructure for CM drivers. | ||
349 | * Returns 0 in success, negative error value in failure. | ||
350 | */ | ||
351 | int __init omap_cm_init(void) | ||
352 | { | ||
353 | struct device_node *np; | ||
354 | const struct of_device_id *match; | ||
355 | const struct omap_prcm_init_data *data; | ||
356 | int ret; | ||
357 | |||
358 | for_each_matching_node_and_match(np, omap_cm_dt_match_table, &match) { | ||
359 | data = match->data; | ||
360 | |||
361 | if (data->flags & CM_NO_CLOCKS) | ||
362 | continue; | ||
363 | |||
364 | ret = omap2_clk_provider_init(np, data->index, NULL, data->mem); | ||
365 | if (ret) | ||
366 | return ret; | ||
367 | } | ||
368 | |||
369 | return 0; | ||
370 | } | ||
diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c index 95a8cff66aff..2c0e07ed6b99 100644 --- a/arch/arm/mach-omap2/cminst44xx.c +++ b/arch/arm/mach-omap2/cminst44xx.c | |||
@@ -63,7 +63,7 @@ static void __iomem *_cm_bases[OMAP4_MAX_PRCM_PARTITIONS]; | |||
63 | * Populates the base addresses of the _cm_bases | 63 | * Populates the base addresses of the _cm_bases |
64 | * array used for read/write of cm module registers. | 64 | * array used for read/write of cm module registers. |
65 | */ | 65 | */ |
66 | void omap_cm_base_init(void) | 66 | static void omap_cm_base_init(void) |
67 | { | 67 | { |
68 | _cm_bases[OMAP4430_PRM_PARTITION] = prm_base; | 68 | _cm_bases[OMAP4430_PRM_PARTITION] = prm_base; |
69 | _cm_bases[OMAP4430_CM1_PARTITION] = cm_base; | 69 | _cm_bases[OMAP4430_CM1_PARTITION] = cm_base; |
@@ -514,8 +514,10 @@ static struct cm_ll_data omap4xxx_cm_ll_data = { | |||
514 | .module_disable = &omap4_cminst_module_disable, | 514 | .module_disable = &omap4_cminst_module_disable, |
515 | }; | 515 | }; |
516 | 516 | ||
517 | int __init omap4_cm_init(void) | 517 | int __init omap4_cm_init(const struct omap_prcm_init_data *data) |
518 | { | 518 | { |
519 | omap_cm_base_init(); | ||
520 | |||
519 | return cm_register(&omap4xxx_cm_ll_data); | 521 | return cm_register(&omap4xxx_cm_ll_data); |
520 | } | 522 | } |
521 | 523 | ||
diff --git a/arch/arm/mach-omap2/common.c b/arch/arm/mach-omap2/common.c index 484cdadfb187..eae6a0e87c90 100644 --- a/arch/arm/mach-omap2/common.c +++ b/arch/arm/mach-omap2/common.c | |||
@@ -30,5 +30,4 @@ int __weak omap_secure_ram_reserve_memblock(void) | |||
30 | void __init omap_reserve(void) | 30 | void __init omap_reserve(void) |
31 | { | 31 | { |
32 | omap_secure_ram_reserve_memblock(); | 32 | omap_secure_ram_reserve_memblock(); |
33 | omap_barrier_reserve_memblock(); | ||
34 | } | 33 | } |
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h index 46e24581d624..cf3cf22ecd42 100644 --- a/arch/arm/mach-omap2/common.h +++ b/arch/arm/mach-omap2/common.h | |||
@@ -200,9 +200,6 @@ void __init omap4_map_io(void); | |||
200 | void __init omap5_map_io(void); | 200 | void __init omap5_map_io(void); |
201 | void __init ti81xx_map_io(void); | 201 | void __init ti81xx_map_io(void); |
202 | 202 | ||
203 | /* omap_barriers_init() is OMAP4 only */ | ||
204 | void omap_barriers_init(void); | ||
205 | |||
206 | /** | 203 | /** |
207 | * omap_test_timeout - busy-loop, testing a condition | 204 | * omap_test_timeout - busy-loop, testing a condition |
208 | * @cond: condition to test until it evaluates to true | 205 | * @cond: condition to test until it evaluates to true |
diff --git a/arch/arm/mach-omap2/control.c b/arch/arm/mach-omap2/control.c index da041b4ab29c..af95a624fe71 100644 --- a/arch/arm/mach-omap2/control.c +++ b/arch/arm/mach-omap2/control.c | |||
@@ -14,6 +14,9 @@ | |||
14 | 14 | ||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | #include <linux/of_address.h> | ||
18 | #include <linux/regmap.h> | ||
19 | #include <linux/mfd/syscon.h> | ||
17 | 20 | ||
18 | #include "soc.h" | 21 | #include "soc.h" |
19 | #include "iomap.h" | 22 | #include "iomap.h" |
@@ -25,13 +28,15 @@ | |||
25 | #include "sdrc.h" | 28 | #include "sdrc.h" |
26 | #include "pm.h" | 29 | #include "pm.h" |
27 | #include "control.h" | 30 | #include "control.h" |
31 | #include "clock.h" | ||
28 | 32 | ||
29 | /* Used by omap3_ctrl_save_padconf() */ | 33 | /* Used by omap3_ctrl_save_padconf() */ |
30 | #define START_PADCONF_SAVE 0x2 | 34 | #define START_PADCONF_SAVE 0x2 |
31 | #define PADCONF_SAVE_DONE 0x1 | 35 | #define PADCONF_SAVE_DONE 0x1 |
32 | 36 | ||
33 | static void __iomem *omap2_ctrl_base; | 37 | static void __iomem *omap2_ctrl_base; |
34 | static void __iomem *omap4_ctrl_pad_base; | 38 | static s16 omap2_ctrl_offset; |
39 | static struct regmap *omap2_ctrl_syscon; | ||
35 | 40 | ||
36 | #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM) | 41 | #if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM) |
37 | struct omap3_scratchpad { | 42 | struct omap3_scratchpad { |
@@ -133,66 +138,79 @@ struct omap3_control_regs { | |||
133 | static struct omap3_control_regs control_context; | 138 | static struct omap3_control_regs control_context; |
134 | #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */ | 139 | #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */ |
135 | 140 | ||
136 | #define OMAP_CTRL_REGADDR(reg) (omap2_ctrl_base + (reg)) | 141 | void __init omap2_set_globals_control(void __iomem *ctrl) |
137 | #define OMAP4_CTRL_PAD_REGADDR(reg) (omap4_ctrl_pad_base + (reg)) | ||
138 | |||
139 | void __init omap2_set_globals_control(void __iomem *ctrl, | ||
140 | void __iomem *ctrl_pad) | ||
141 | { | 142 | { |
142 | omap2_ctrl_base = ctrl; | 143 | omap2_ctrl_base = ctrl; |
143 | omap4_ctrl_pad_base = ctrl_pad; | ||
144 | } | ||
145 | |||
146 | void __iomem *omap_ctrl_base_get(void) | ||
147 | { | ||
148 | return omap2_ctrl_base; | ||
149 | } | 144 | } |
150 | 145 | ||
151 | u8 omap_ctrl_readb(u16 offset) | 146 | u8 omap_ctrl_readb(u16 offset) |
152 | { | 147 | { |
153 | return readb_relaxed(OMAP_CTRL_REGADDR(offset)); | 148 | u32 val; |
149 | u8 byte_offset = offset & 0x3; | ||
150 | |||
151 | val = omap_ctrl_readl(offset); | ||
152 | |||
153 | return (val >> (byte_offset * 8)) & 0xff; | ||
154 | } | 154 | } |
155 | 155 | ||
156 | u16 omap_ctrl_readw(u16 offset) | 156 | u16 omap_ctrl_readw(u16 offset) |
157 | { | 157 | { |
158 | return readw_relaxed(OMAP_CTRL_REGADDR(offset)); | 158 | u32 val; |
159 | u16 byte_offset = offset & 0x2; | ||
160 | |||
161 | val = omap_ctrl_readl(offset); | ||
162 | |||
163 | return (val >> (byte_offset * 8)) & 0xffff; | ||
159 | } | 164 | } |
160 | 165 | ||
161 | u32 omap_ctrl_readl(u16 offset) | 166 | u32 omap_ctrl_readl(u16 offset) |
162 | { | 167 | { |
163 | return readl_relaxed(OMAP_CTRL_REGADDR(offset)); | 168 | u32 val; |
169 | |||
170 | offset &= 0xfffc; | ||
171 | if (!omap2_ctrl_syscon) | ||
172 | val = readl_relaxed(omap2_ctrl_base + offset); | ||
173 | else | ||
174 | regmap_read(omap2_ctrl_syscon, omap2_ctrl_offset + offset, | ||
175 | &val); | ||
176 | |||
177 | return val; | ||
164 | } | 178 | } |
165 | 179 | ||
166 | void omap_ctrl_writeb(u8 val, u16 offset) | 180 | void omap_ctrl_writeb(u8 val, u16 offset) |
167 | { | 181 | { |
168 | writeb_relaxed(val, OMAP_CTRL_REGADDR(offset)); | 182 | u32 tmp; |
183 | u8 byte_offset = offset & 0x3; | ||
184 | |||
185 | tmp = omap_ctrl_readl(offset); | ||
186 | |||
187 | tmp &= 0xffffffff ^ (0xff << (byte_offset * 8)); | ||
188 | tmp |= val << (byte_offset * 8); | ||
189 | |||
190 | omap_ctrl_writel(tmp, offset); | ||
169 | } | 191 | } |
170 | 192 | ||
171 | void omap_ctrl_writew(u16 val, u16 offset) | 193 | void omap_ctrl_writew(u16 val, u16 offset) |
172 | { | 194 | { |
173 | writew_relaxed(val, OMAP_CTRL_REGADDR(offset)); | 195 | u32 tmp; |
174 | } | 196 | u8 byte_offset = offset & 0x2; |
175 | 197 | ||
176 | void omap_ctrl_writel(u32 val, u16 offset) | 198 | tmp = omap_ctrl_readl(offset); |
177 | { | ||
178 | writel_relaxed(val, OMAP_CTRL_REGADDR(offset)); | ||
179 | } | ||
180 | 199 | ||
181 | /* | 200 | tmp &= 0xffffffff ^ (0xffff << (byte_offset * 8)); |
182 | * On OMAP4 control pad are not addressable from control | 201 | tmp |= val << (byte_offset * 8); |
183 | * core base. So the common omap_ctrl_read/write APIs breaks | ||
184 | * Hence export separate APIs to manage the omap4 pad control | ||
185 | * registers. This APIs will work only for OMAP4 | ||
186 | */ | ||
187 | 202 | ||
188 | u32 omap4_ctrl_pad_readl(u16 offset) | 203 | omap_ctrl_writel(tmp, offset); |
189 | { | ||
190 | return readl_relaxed(OMAP4_CTRL_PAD_REGADDR(offset)); | ||
191 | } | 204 | } |
192 | 205 | ||
193 | void omap4_ctrl_pad_writel(u32 val, u16 offset) | 206 | void omap_ctrl_writel(u32 val, u16 offset) |
194 | { | 207 | { |
195 | writel_relaxed(val, OMAP4_CTRL_PAD_REGADDR(offset)); | 208 | offset &= 0xfffc; |
209 | if (!omap2_ctrl_syscon) | ||
210 | writel_relaxed(val, omap2_ctrl_base + offset); | ||
211 | else | ||
212 | regmap_write(omap2_ctrl_syscon, omap2_ctrl_offset + offset, | ||
213 | val); | ||
196 | } | 214 | } |
197 | 215 | ||
198 | #ifdef CONFIG_ARCH_OMAP3 | 216 | #ifdef CONFIG_ARCH_OMAP3 |
@@ -611,3 +629,120 @@ void __init omap3_ctrl_init(void) | |||
611 | omap3_ctrl_setup_d2d_padconf(); | 629 | omap3_ctrl_setup_d2d_padconf(); |
612 | } | 630 | } |
613 | #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */ | 631 | #endif /* CONFIG_ARCH_OMAP3 && CONFIG_PM */ |
632 | |||
633 | struct control_init_data { | ||
634 | int index; | ||
635 | s16 offset; | ||
636 | }; | ||
637 | |||
638 | static struct control_init_data ctrl_data = { | ||
639 | .index = TI_CLKM_CTRL, | ||
640 | }; | ||
641 | |||
642 | static const struct control_init_data omap2_ctrl_data = { | ||
643 | .index = TI_CLKM_CTRL, | ||
644 | .offset = -OMAP2_CONTROL_GENERAL, | ||
645 | }; | ||
646 | |||
647 | static const struct of_device_id omap_scrm_dt_match_table[] = { | ||
648 | { .compatible = "ti,am3-scm", .data = &ctrl_data }, | ||
649 | { .compatible = "ti,am4-scm", .data = &ctrl_data }, | ||
650 | { .compatible = "ti,omap2-scm", .data = &omap2_ctrl_data }, | ||
651 | { .compatible = "ti,omap3-scm", .data = &omap2_ctrl_data }, | ||
652 | { .compatible = "ti,dm816-scrm", .data = &ctrl_data }, | ||
653 | { .compatible = "ti,omap4-scm-core", .data = &ctrl_data }, | ||
654 | { .compatible = "ti,omap5-scm-core", .data = &ctrl_data }, | ||
655 | { .compatible = "ti,dra7-scm-core", .data = &ctrl_data }, | ||
656 | { } | ||
657 | }; | ||
658 | |||
659 | /** | ||
660 | * omap2_control_base_init - initialize iomappings for the control driver | ||
661 | * | ||
662 | * Detects and initializes the iomappings for the control driver, based | ||
663 | * on the DT data. Returns 0 in success, negative error value | ||
664 | * otherwise. | ||
665 | */ | ||
666 | int __init omap2_control_base_init(void) | ||
667 | { | ||
668 | struct device_node *np; | ||
669 | const struct of_device_id *match; | ||
670 | struct control_init_data *data; | ||
671 | |||
672 | for_each_matching_node_and_match(np, omap_scrm_dt_match_table, &match) { | ||
673 | data = (struct control_init_data *)match->data; | ||
674 | |||
675 | omap2_ctrl_base = of_iomap(np, 0); | ||
676 | if (!omap2_ctrl_base) | ||
677 | return -ENOMEM; | ||
678 | |||
679 | omap2_ctrl_offset = data->offset; | ||
680 | } | ||
681 | |||
682 | return 0; | ||
683 | } | ||
684 | |||
685 | /** | ||
686 | * omap_control_init - low level init for the control driver | ||
687 | * | ||
688 | * Initializes the low level clock infrastructure for control driver. | ||
689 | * Returns 0 in success, negative error value in failure. | ||
690 | */ | ||
691 | int __init omap_control_init(void) | ||
692 | { | ||
693 | struct device_node *np, *scm_conf; | ||
694 | const struct of_device_id *match; | ||
695 | const struct omap_prcm_init_data *data; | ||
696 | int ret; | ||
697 | struct regmap *syscon; | ||
698 | |||
699 | for_each_matching_node_and_match(np, omap_scrm_dt_match_table, &match) { | ||
700 | data = match->data; | ||
701 | |||
702 | /* | ||
703 | * Check if we have scm_conf node, if yes, use this to | ||
704 | * access clock registers. | ||
705 | */ | ||
706 | scm_conf = of_get_child_by_name(np, "scm_conf"); | ||
707 | |||
708 | if (scm_conf) { | ||
709 | syscon = syscon_node_to_regmap(scm_conf); | ||
710 | |||
711 | if (IS_ERR(syscon)) | ||
712 | return PTR_ERR(syscon); | ||
713 | |||
714 | omap2_ctrl_syscon = syscon; | ||
715 | |||
716 | if (of_get_child_by_name(scm_conf, "clocks")) { | ||
717 | ret = omap2_clk_provider_init(scm_conf, | ||
718 | data->index, | ||
719 | syscon, NULL); | ||
720 | if (ret) | ||
721 | return ret; | ||
722 | } | ||
723 | |||
724 | iounmap(omap2_ctrl_base); | ||
725 | omap2_ctrl_base = NULL; | ||
726 | } else { | ||
727 | /* No scm_conf found, direct access */ | ||
728 | ret = omap2_clk_provider_init(np, data->index, NULL, | ||
729 | omap2_ctrl_base); | ||
730 | if (ret) | ||
731 | return ret; | ||
732 | } | ||
733 | } | ||
734 | |||
735 | return 0; | ||
736 | } | ||
737 | |||
738 | /** | ||
739 | * omap3_control_legacy_iomap_init - legacy iomap init for clock providers | ||
740 | * | ||
741 | * Legacy iomap init for clock provider. Needed only by legacy boot mode, | ||
742 | * where the base addresses are not parsed from DT, but still required | ||
743 | * by the clock driver to be setup properly. | ||
744 | */ | ||
745 | void __init omap3_control_legacy_iomap_init(void) | ||
746 | { | ||
747 | omap2_clk_legacy_provider_init(TI_CLKM_SCRM, omap2_ctrl_base); | ||
748 | } | ||
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h index b8a487181210..80d2b7d8e36e 100644 --- a/arch/arm/mach-omap2/control.h +++ b/arch/arm/mach-omap2/control.h | |||
@@ -440,15 +440,12 @@ | |||
440 | 440 | ||
441 | #ifndef __ASSEMBLY__ | 441 | #ifndef __ASSEMBLY__ |
442 | #ifdef CONFIG_ARCH_OMAP2PLUS | 442 | #ifdef CONFIG_ARCH_OMAP2PLUS |
443 | extern void __iomem *omap_ctrl_base_get(void); | ||
444 | extern u8 omap_ctrl_readb(u16 offset); | 443 | extern u8 omap_ctrl_readb(u16 offset); |
445 | extern u16 omap_ctrl_readw(u16 offset); | 444 | extern u16 omap_ctrl_readw(u16 offset); |
446 | extern u32 omap_ctrl_readl(u16 offset); | 445 | extern u32 omap_ctrl_readl(u16 offset); |
447 | extern u32 omap4_ctrl_pad_readl(u16 offset); | ||
448 | extern void omap_ctrl_writeb(u8 val, u16 offset); | 446 | extern void omap_ctrl_writeb(u8 val, u16 offset); |
449 | extern void omap_ctrl_writew(u16 val, u16 offset); | 447 | extern void omap_ctrl_writew(u16 val, u16 offset); |
450 | extern void omap_ctrl_writel(u32 val, u16 offset); | 448 | extern void omap_ctrl_writel(u32 val, u16 offset); |
451 | extern void omap4_ctrl_pad_writel(u32 val, u16 offset); | ||
452 | 449 | ||
453 | extern void omap3_save_scratchpad_contents(void); | 450 | extern void omap3_save_scratchpad_contents(void); |
454 | extern void omap3_clear_scratchpad_contents(void); | 451 | extern void omap3_clear_scratchpad_contents(void); |
@@ -464,10 +461,11 @@ extern void omap_ctrl_write_dsp_boot_mode(u8 bootmode); | |||
464 | extern void omap3630_ctrl_disable_rta(void); | 461 | extern void omap3630_ctrl_disable_rta(void); |
465 | extern int omap3_ctrl_save_padconf(void); | 462 | extern int omap3_ctrl_save_padconf(void); |
466 | void omap3_ctrl_init(void); | 463 | void omap3_ctrl_init(void); |
467 | extern void omap2_set_globals_control(void __iomem *ctrl, | 464 | int omap2_control_base_init(void); |
468 | void __iomem *ctrl_pad); | 465 | int omap_control_init(void); |
466 | void omap2_set_globals_control(void __iomem *ctrl); | ||
467 | void __init omap3_control_legacy_iomap_init(void); | ||
469 | #else | 468 | #else |
470 | #define omap_ctrl_base_get() 0 | ||
471 | #define omap_ctrl_readb(x) 0 | 469 | #define omap_ctrl_readb(x) 0 |
472 | #define omap_ctrl_readw(x) 0 | 470 | #define omap_ctrl_readw(x) 0 |
473 | #define omap_ctrl_readl(x) 0 | 471 | #define omap_ctrl_readl(x) 0 |
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index 7a050f9c37ff..f492ae147c6a 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c | |||
@@ -26,6 +26,8 @@ | |||
26 | #include <linux/of.h> | 26 | #include <linux/of.h> |
27 | #include <linux/of_platform.h> | 27 | #include <linux/of_platform.h> |
28 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
29 | #include <linux/mfd/syscon.h> | ||
30 | #include <linux/regmap.h> | ||
29 | 31 | ||
30 | #include <video/omapdss.h> | 32 | #include <video/omapdss.h> |
31 | #include "omap_hwmod.h" | 33 | #include "omap_hwmod.h" |
@@ -104,6 +106,10 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initconst = { | |||
104 | { "dss_hdmi", "omapdss_hdmi", -1 }, | 106 | { "dss_hdmi", "omapdss_hdmi", -1 }, |
105 | }; | 107 | }; |
106 | 108 | ||
109 | #define OMAP4_DSIPHY_SYSCON_OFFSET 0x78 | ||
110 | |||
111 | static struct regmap *omap4_dsi_mux_syscon; | ||
112 | |||
107 | static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes) | 113 | static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes) |
108 | { | 114 | { |
109 | u32 enable_mask, enable_shift; | 115 | u32 enable_mask, enable_shift; |
@@ -124,7 +130,7 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes) | |||
124 | return -ENODEV; | 130 | return -ENODEV; |
125 | } | 131 | } |
126 | 132 | ||
127 | reg = omap4_ctrl_pad_readl(OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY); | 133 | regmap_read(omap4_dsi_mux_syscon, OMAP4_DSIPHY_SYSCON_OFFSET, ®); |
128 | 134 | ||
129 | reg &= ~enable_mask; | 135 | reg &= ~enable_mask; |
130 | reg &= ~pipd_mask; | 136 | reg &= ~pipd_mask; |
@@ -132,7 +138,7 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes) | |||
132 | reg |= (lanes << enable_shift) & enable_mask; | 138 | reg |= (lanes << enable_shift) & enable_mask; |
133 | reg |= (lanes << pipd_shift) & pipd_mask; | 139 | reg |= (lanes << pipd_shift) & pipd_mask; |
134 | 140 | ||
135 | omap4_ctrl_pad_writel(reg, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY); | 141 | regmap_write(omap4_dsi_mux_syscon, OMAP4_DSIPHY_SYSCON_OFFSET, reg); |
136 | 142 | ||
137 | return 0; | 143 | return 0; |
138 | } | 144 | } |
@@ -665,5 +671,10 @@ int __init omapdss_init_of(void) | |||
665 | return r; | 671 | return r; |
666 | } | 672 | } |
667 | 673 | ||
674 | /* add DSI info for omap4 */ | ||
675 | node = of_find_node_by_name(NULL, "omap4_padconf_global"); | ||
676 | if (node) | ||
677 | omap4_dsi_mux_syscon = syscon_node_to_regmap(node); | ||
678 | |||
668 | return 0; | 679 | return 0; |
669 | } | 680 | } |
diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 2a2f4d56e4c8..f8121dbc9d48 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c | |||
@@ -52,7 +52,10 @@ EXPORT_SYMBOL(omap_rev); | |||
52 | 52 | ||
53 | int omap_type(void) | 53 | int omap_type(void) |
54 | { | 54 | { |
55 | u32 val = 0; | 55 | static u32 val = OMAP2_DEVICETYPE_MASK; |
56 | |||
57 | if (val < OMAP2_DEVICETYPE_MASK) | ||
58 | return val; | ||
56 | 59 | ||
57 | if (cpu_is_omap24xx()) { | 60 | if (cpu_is_omap24xx()) { |
58 | val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); | 61 | val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index c4871c55bd8b..820dde8b5b04 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -306,7 +306,6 @@ void __init am33xx_map_io(void) | |||
306 | void __init omap4_map_io(void) | 306 | void __init omap4_map_io(void) |
307 | { | 307 | { |
308 | iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc)); | 308 | iotable_init(omap44xx_io_desc, ARRAY_SIZE(omap44xx_io_desc)); |
309 | omap_barriers_init(); | ||
310 | } | 309 | } |
311 | #endif | 310 | #endif |
312 | 311 | ||
@@ -314,7 +313,6 @@ void __init omap4_map_io(void) | |||
314 | void __init omap5_map_io(void) | 313 | void __init omap5_map_io(void) |
315 | { | 314 | { |
316 | iotable_init(omap54xx_io_desc, ARRAY_SIZE(omap54xx_io_desc)); | 315 | iotable_init(omap54xx_io_desc, ARRAY_SIZE(omap54xx_io_desc)); |
317 | omap_barriers_init(); | ||
318 | } | 316 | } |
319 | #endif | 317 | #endif |
320 | /* | 318 | /* |
@@ -384,13 +382,9 @@ void __init omap2420_init_early(void) | |||
384 | omap2_set_globals_tap(OMAP242X_CLASS, OMAP2_L4_IO_ADDRESS(0x48014000)); | 382 | omap2_set_globals_tap(OMAP242X_CLASS, OMAP2_L4_IO_ADDRESS(0x48014000)); |
385 | omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP2420_SDRC_BASE), | 383 | omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP2420_SDRC_BASE), |
386 | OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE)); | 384 | OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE)); |
387 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(OMAP242X_CTRL_BASE), | 385 | omap2_control_base_init(); |
388 | NULL); | ||
389 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP2420_PRM_BASE)); | ||
390 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP2420_CM_BASE), NULL); | ||
391 | omap2xxx_check_revision(); | 386 | omap2xxx_check_revision(); |
392 | omap2xxx_prm_init(); | 387 | omap2_prcm_base_init(); |
393 | omap2xxx_cm_init(); | ||
394 | omap2xxx_voltagedomains_init(); | 388 | omap2xxx_voltagedomains_init(); |
395 | omap242x_powerdomains_init(); | 389 | omap242x_powerdomains_init(); |
396 | omap242x_clockdomains_init(); | 390 | omap242x_clockdomains_init(); |
@@ -414,13 +408,9 @@ void __init omap2430_init_early(void) | |||
414 | omap2_set_globals_tap(OMAP243X_CLASS, OMAP2_L4_IO_ADDRESS(0x4900a000)); | 408 | omap2_set_globals_tap(OMAP243X_CLASS, OMAP2_L4_IO_ADDRESS(0x4900a000)); |
415 | omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP243X_SDRC_BASE), | 409 | omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP243X_SDRC_BASE), |
416 | OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE)); | 410 | OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE)); |
417 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(OMAP243X_CTRL_BASE), | 411 | omap2_control_base_init(); |
418 | NULL); | ||
419 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP2430_PRM_BASE)); | ||
420 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP2430_CM_BASE), NULL); | ||
421 | omap2xxx_check_revision(); | 412 | omap2xxx_check_revision(); |
422 | omap2xxx_prm_init(); | 413 | omap2_prcm_base_init(); |
423 | omap2xxx_cm_init(); | ||
424 | omap2xxx_voltagedomains_init(); | 414 | omap2xxx_voltagedomains_init(); |
425 | omap243x_powerdomains_init(); | 415 | omap243x_powerdomains_init(); |
426 | omap243x_clockdomains_init(); | 416 | omap243x_clockdomains_init(); |
@@ -448,21 +438,30 @@ void __init omap3_init_early(void) | |||
448 | omap2_set_globals_tap(OMAP343X_CLASS, OMAP2_L4_IO_ADDRESS(0x4830A000)); | 438 | omap2_set_globals_tap(OMAP343X_CLASS, OMAP2_L4_IO_ADDRESS(0x4830A000)); |
449 | omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP343X_SDRC_BASE), | 439 | omap2_set_globals_sdrc(OMAP2_L3_IO_ADDRESS(OMAP343X_SDRC_BASE), |
450 | OMAP2_L3_IO_ADDRESS(OMAP343X_SMS_BASE)); | 440 | OMAP2_L3_IO_ADDRESS(OMAP343X_SMS_BASE)); |
451 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE), | 441 | /* XXX: remove these once OMAP3 is DT only */ |
452 | NULL); | 442 | if (!of_have_populated_dt()) { |
453 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE)); | 443 | omap2_set_globals_control( |
454 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP3430_CM_BASE), NULL); | 444 | OMAP2_L4_IO_ADDRESS(OMAP343X_CTRL_BASE)); |
445 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP3430_PRM_BASE)); | ||
446 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP3430_CM_BASE), | ||
447 | NULL); | ||
448 | } | ||
449 | omap2_control_base_init(); | ||
455 | omap3xxx_check_revision(); | 450 | omap3xxx_check_revision(); |
456 | omap3xxx_check_features(); | 451 | omap3xxx_check_features(); |
457 | omap3xxx_prm_init(); | 452 | omap2_prcm_base_init(); |
458 | omap3xxx_cm_init(); | 453 | /* XXX: remove these once OMAP3 is DT only */ |
454 | if (!of_have_populated_dt()) { | ||
455 | omap3xxx_prm_init(NULL); | ||
456 | omap3xxx_cm_init(NULL); | ||
457 | } | ||
459 | omap3xxx_voltagedomains_init(); | 458 | omap3xxx_voltagedomains_init(); |
460 | omap3xxx_powerdomains_init(); | 459 | omap3xxx_powerdomains_init(); |
461 | omap3xxx_clockdomains_init(); | 460 | omap3xxx_clockdomains_init(); |
462 | omap3xxx_hwmod_init(); | 461 | omap3xxx_hwmod_init(); |
463 | omap_hwmod_init_postsetup(); | 462 | omap_hwmod_init_postsetup(); |
464 | if (!of_have_populated_dt()) { | 463 | if (!of_have_populated_dt()) { |
465 | omap3_prcm_legacy_iomaps_init(); | 464 | omap3_control_legacy_iomap_init(); |
466 | if (soc_is_am35xx()) | 465 | if (soc_is_am35xx()) |
467 | omap_clk_soc_init = am35xx_clk_legacy_init; | 466 | omap_clk_soc_init = am35xx_clk_legacy_init; |
468 | else if (cpu_is_omap3630()) | 467 | else if (cpu_is_omap3630()) |
@@ -549,14 +548,10 @@ void __init ti814x_init_early(void) | |||
549 | { | 548 | { |
550 | omap2_set_globals_tap(TI814X_CLASS, | 549 | omap2_set_globals_tap(TI814X_CLASS, |
551 | OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE)); | 550 | OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE)); |
552 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(TI81XX_CTRL_BASE), | 551 | omap2_control_base_init(); |
553 | NULL); | ||
554 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE)); | ||
555 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE), NULL); | ||
556 | omap3xxx_check_revision(); | 552 | omap3xxx_check_revision(); |
557 | ti81xx_check_features(); | 553 | ti81xx_check_features(); |
558 | am33xx_prm_init(); | 554 | omap2_prcm_base_init(); |
559 | am33xx_cm_init(); | ||
560 | omap3xxx_voltagedomains_init(); | 555 | omap3xxx_voltagedomains_init(); |
561 | omap3xxx_powerdomains_init(); | 556 | omap3xxx_powerdomains_init(); |
562 | ti81xx_clockdomains_init(); | 557 | ti81xx_clockdomains_init(); |
@@ -570,14 +565,10 @@ void __init ti816x_init_early(void) | |||
570 | { | 565 | { |
571 | omap2_set_globals_tap(TI816X_CLASS, | 566 | omap2_set_globals_tap(TI816X_CLASS, |
572 | OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE)); | 567 | OMAP2_L4_IO_ADDRESS(TI81XX_TAP_BASE)); |
573 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(TI81XX_CTRL_BASE), | 568 | omap2_control_base_init(); |
574 | NULL); | ||
575 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE)); | ||
576 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(TI81XX_PRCM_BASE), NULL); | ||
577 | omap3xxx_check_revision(); | 569 | omap3xxx_check_revision(); |
578 | ti81xx_check_features(); | 570 | ti81xx_check_features(); |
579 | am33xx_prm_init(); | 571 | omap2_prcm_base_init(); |
580 | am33xx_cm_init(); | ||
581 | omap3xxx_voltagedomains_init(); | 572 | omap3xxx_voltagedomains_init(); |
582 | omap3xxx_powerdomains_init(); | 573 | omap3xxx_powerdomains_init(); |
583 | ti81xx_clockdomains_init(); | 574 | ti81xx_clockdomains_init(); |
@@ -593,14 +584,10 @@ void __init am33xx_init_early(void) | |||
593 | { | 584 | { |
594 | omap2_set_globals_tap(AM335X_CLASS, | 585 | omap2_set_globals_tap(AM335X_CLASS, |
595 | AM33XX_L4_WK_IO_ADDRESS(AM33XX_TAP_BASE)); | 586 | AM33XX_L4_WK_IO_ADDRESS(AM33XX_TAP_BASE)); |
596 | omap2_set_globals_control(AM33XX_L4_WK_IO_ADDRESS(AM33XX_CTRL_BASE), | 587 | omap2_control_base_init(); |
597 | NULL); | ||
598 | omap2_set_globals_prm(AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE)); | ||
599 | omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM33XX_PRCM_BASE), NULL); | ||
600 | omap3xxx_check_revision(); | 588 | omap3xxx_check_revision(); |
601 | am33xx_check_features(); | 589 | am33xx_check_features(); |
602 | am33xx_prm_init(); | 590 | omap2_prcm_base_init(); |
603 | am33xx_cm_init(); | ||
604 | am33xx_powerdomains_init(); | 591 | am33xx_powerdomains_init(); |
605 | am33xx_clockdomains_init(); | 592 | am33xx_clockdomains_init(); |
606 | am33xx_hwmod_init(); | 593 | am33xx_hwmod_init(); |
@@ -619,16 +606,10 @@ void __init am43xx_init_early(void) | |||
619 | { | 606 | { |
620 | omap2_set_globals_tap(AM335X_CLASS, | 607 | omap2_set_globals_tap(AM335X_CLASS, |
621 | AM33XX_L4_WK_IO_ADDRESS(AM33XX_TAP_BASE)); | 608 | AM33XX_L4_WK_IO_ADDRESS(AM33XX_TAP_BASE)); |
622 | omap2_set_globals_control(AM33XX_L4_WK_IO_ADDRESS(AM33XX_CTRL_BASE), | 609 | omap2_control_base_init(); |
623 | NULL); | ||
624 | omap2_set_globals_prm(AM33XX_L4_WK_IO_ADDRESS(AM43XX_PRCM_BASE)); | ||
625 | omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM43XX_PRCM_BASE), NULL); | ||
626 | omap_prm_base_init(); | ||
627 | omap_cm_base_init(); | ||
628 | omap3xxx_check_revision(); | 610 | omap3xxx_check_revision(); |
629 | am33xx_check_features(); | 611 | am33xx_check_features(); |
630 | omap44xx_prm_init(); | 612 | omap2_prcm_base_init(); |
631 | omap4_cm_init(); | ||
632 | am43xx_powerdomains_init(); | 613 | am43xx_powerdomains_init(); |
633 | am43xx_clockdomains_init(); | 614 | am43xx_clockdomains_init(); |
634 | am43xx_hwmod_init(); | 615 | am43xx_hwmod_init(); |
@@ -648,19 +629,12 @@ void __init omap4430_init_early(void) | |||
648 | { | 629 | { |
649 | omap2_set_globals_tap(OMAP443X_CLASS, | 630 | omap2_set_globals_tap(OMAP443X_CLASS, |
650 | OMAP2_L4_IO_ADDRESS(OMAP443X_SCM_BASE)); | 631 | OMAP2_L4_IO_ADDRESS(OMAP443X_SCM_BASE)); |
651 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(OMAP443X_SCM_BASE), | ||
652 | OMAP2_L4_IO_ADDRESS(OMAP443X_CTRL_BASE)); | ||
653 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP4430_PRM_BASE)); | ||
654 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP4430_CM_BASE), | ||
655 | OMAP2_L4_IO_ADDRESS(OMAP4430_CM2_BASE)); | ||
656 | omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP4430_PRCM_MPU_BASE)); | 632 | omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP4430_PRCM_MPU_BASE)); |
657 | omap_prm_base_init(); | 633 | omap2_control_base_init(); |
658 | omap_cm_base_init(); | ||
659 | omap4xxx_check_revision(); | 634 | omap4xxx_check_revision(); |
660 | omap4xxx_check_features(); | 635 | omap4xxx_check_features(); |
661 | omap4_cm_init(); | 636 | omap2_prcm_base_init(); |
662 | omap4_pm_init_early(); | 637 | omap4_pm_init_early(); |
663 | omap44xx_prm_init(); | ||
664 | omap44xx_voltagedomains_init(); | 638 | omap44xx_voltagedomains_init(); |
665 | omap44xx_powerdomains_init(); | 639 | omap44xx_powerdomains_init(); |
666 | omap44xx_clockdomains_init(); | 640 | omap44xx_clockdomains_init(); |
@@ -683,18 +657,11 @@ void __init omap5_init_early(void) | |||
683 | { | 657 | { |
684 | omap2_set_globals_tap(OMAP54XX_CLASS, | 658 | omap2_set_globals_tap(OMAP54XX_CLASS, |
685 | OMAP2_L4_IO_ADDRESS(OMAP54XX_SCM_BASE)); | 659 | OMAP2_L4_IO_ADDRESS(OMAP54XX_SCM_BASE)); |
686 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(OMAP54XX_SCM_BASE), | ||
687 | OMAP2_L4_IO_ADDRESS(OMAP54XX_CTRL_BASE)); | ||
688 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRM_BASE)); | ||
689 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(OMAP54XX_CM_CORE_AON_BASE), | ||
690 | OMAP2_L4_IO_ADDRESS(OMAP54XX_CM_CORE_BASE)); | ||
691 | omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE)); | 660 | omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE)); |
661 | omap2_control_base_init(); | ||
692 | omap4_pm_init_early(); | 662 | omap4_pm_init_early(); |
693 | omap_prm_base_init(); | 663 | omap2_prcm_base_init(); |
694 | omap_cm_base_init(); | ||
695 | omap44xx_prm_init(); | ||
696 | omap5xxx_check_revision(); | 664 | omap5xxx_check_revision(); |
697 | omap4_cm_init(); | ||
698 | omap54xx_voltagedomains_init(); | 665 | omap54xx_voltagedomains_init(); |
699 | omap54xx_powerdomains_init(); | 666 | omap54xx_powerdomains_init(); |
700 | omap54xx_clockdomains_init(); | 667 | omap54xx_clockdomains_init(); |
@@ -715,18 +682,11 @@ void __init omap5_init_late(void) | |||
715 | void __init dra7xx_init_early(void) | 682 | void __init dra7xx_init_early(void) |
716 | { | 683 | { |
717 | omap2_set_globals_tap(-1, OMAP2_L4_IO_ADDRESS(DRA7XX_TAP_BASE)); | 684 | omap2_set_globals_tap(-1, OMAP2_L4_IO_ADDRESS(DRA7XX_TAP_BASE)); |
718 | omap2_set_globals_control(OMAP2_L4_IO_ADDRESS(OMAP54XX_SCM_BASE), | ||
719 | OMAP2_L4_IO_ADDRESS(DRA7XX_CTRL_BASE)); | ||
720 | omap2_set_globals_prm(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRM_BASE)); | ||
721 | omap2_set_globals_cm(OMAP2_L4_IO_ADDRESS(DRA7XX_CM_CORE_AON_BASE), | ||
722 | OMAP2_L4_IO_ADDRESS(OMAP54XX_CM_CORE_BASE)); | ||
723 | omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE)); | 685 | omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE)); |
686 | omap2_control_base_init(); | ||
724 | omap4_pm_init_early(); | 687 | omap4_pm_init_early(); |
725 | omap_prm_base_init(); | 688 | omap2_prcm_base_init(); |
726 | omap_cm_base_init(); | ||
727 | omap44xx_prm_init(); | ||
728 | dra7xxx_check_revision(); | 689 | dra7xxx_check_revision(); |
729 | omap4_cm_init(); | ||
730 | dra7xx_powerdomains_init(); | 690 | dra7xx_powerdomains_init(); |
731 | dra7xx_clockdomains_init(); | 691 | dra7xx_clockdomains_init(); |
732 | dra7xx_hwmod_init(); | 692 | dra7xx_hwmod_init(); |
@@ -764,7 +724,11 @@ int __init omap_clk_init(void) | |||
764 | ti_clk_init_features(); | 724 | ti_clk_init_features(); |
765 | 725 | ||
766 | if (of_have_populated_dt()) { | 726 | if (of_have_populated_dt()) { |
767 | ret = of_prcm_init(); | 727 | ret = omap_control_init(); |
728 | if (ret) | ||
729 | return ret; | ||
730 | |||
731 | ret = omap_prcm_init(); | ||
768 | if (ret) | 732 | if (ret) |
769 | return ret; | 733 | return ret; |
770 | 734 | ||
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 78064b0d4db5..176eef6ef338 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -1053,7 +1053,7 @@ static void __init omap_mux_init_list(struct omap_mux_partition *partition, | |||
1053 | struct omap_mux *entry; | 1053 | struct omap_mux *entry; |
1054 | 1054 | ||
1055 | #ifdef CONFIG_OMAP_MUX | 1055 | #ifdef CONFIG_OMAP_MUX |
1056 | if (!superset->muxnames || !superset->muxnames[0]) { | 1056 | if (!superset->muxnames[0]) { |
1057 | superset++; | 1057 | superset++; |
1058 | continue; | 1058 | continue; |
1059 | } | 1059 | } |
diff --git a/arch/arm/mach-omap2/omap-secure.h b/arch/arm/mach-omap2/omap-secure.h index dec2b05d184b..af2851fbcdf0 100644 --- a/arch/arm/mach-omap2/omap-secure.h +++ b/arch/arm/mach-omap2/omap-secure.h | |||
@@ -70,13 +70,6 @@ extern u32 rx51_secure_dispatcher(u32 idx, u32 process, u32 flag, u32 nargs, | |||
70 | extern u32 rx51_secure_update_aux_cr(u32 set_bits, u32 clear_bits); | 70 | extern u32 rx51_secure_update_aux_cr(u32 set_bits, u32 clear_bits); |
71 | extern u32 rx51_secure_rng_call(u32 ptr, u32 count, u32 flag); | 71 | extern u32 rx51_secure_rng_call(u32 ptr, u32 count, u32 flag); |
72 | 72 | ||
73 | #ifdef CONFIG_OMAP4_ERRATA_I688 | ||
74 | extern int omap_barrier_reserve_memblock(void); | ||
75 | #else | ||
76 | static inline void omap_barrier_reserve_memblock(void) | ||
77 | { } | ||
78 | #endif | ||
79 | |||
80 | #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER | 73 | #ifdef CONFIG_SOC_HAS_REALTIME_COUNTER |
81 | void set_cntfreq(void); | 74 | void set_cntfreq(void); |
82 | #else | 75 | #else |
diff --git a/arch/arm/mach-omap2/omap4-common.c b/arch/arm/mach-omap2/omap4-common.c index cee0fe1ee6ff..afaac9e25764 100644 --- a/arch/arm/mach-omap2/omap4-common.c +++ b/arch/arm/mach-omap2/omap4-common.c | |||
@@ -52,75 +52,6 @@ static void __iomem *twd_base; | |||
52 | 52 | ||
53 | #define IRQ_LOCALTIMER 29 | 53 | #define IRQ_LOCALTIMER 29 |
54 | 54 | ||
55 | #ifdef CONFIG_OMAP4_ERRATA_I688 | ||
56 | /* Used to implement memory barrier on DRAM path */ | ||
57 | #define OMAP4_DRAM_BARRIER_VA 0xfe600000 | ||
58 | |||
59 | void __iomem *dram_sync, *sram_sync; | ||
60 | |||
61 | static phys_addr_t paddr; | ||
62 | static u32 size; | ||
63 | |||
64 | void omap_bus_sync(void) | ||
65 | { | ||
66 | if (dram_sync && sram_sync) { | ||
67 | writel_relaxed(readl_relaxed(dram_sync), dram_sync); | ||
68 | writel_relaxed(readl_relaxed(sram_sync), sram_sync); | ||
69 | isb(); | ||
70 | } | ||
71 | } | ||
72 | EXPORT_SYMBOL(omap_bus_sync); | ||
73 | |||
74 | static int __init omap4_sram_init(void) | ||
75 | { | ||
76 | struct device_node *np; | ||
77 | struct gen_pool *sram_pool; | ||
78 | |||
79 | np = of_find_compatible_node(NULL, NULL, "ti,omap4-mpu"); | ||
80 | if (!np) | ||
81 | pr_warn("%s:Unable to allocate sram needed to handle errata I688\n", | ||
82 | __func__); | ||
83 | sram_pool = of_get_named_gen_pool(np, "sram", 0); | ||
84 | if (!sram_pool) | ||
85 | pr_warn("%s:Unable to get sram pool needed to handle errata I688\n", | ||
86 | __func__); | ||
87 | else | ||
88 | sram_sync = (void *)gen_pool_alloc(sram_pool, PAGE_SIZE); | ||
89 | |||
90 | return 0; | ||
91 | } | ||
92 | omap_arch_initcall(omap4_sram_init); | ||
93 | |||
94 | /* Steal one page physical memory for barrier implementation */ | ||
95 | int __init omap_barrier_reserve_memblock(void) | ||
96 | { | ||
97 | |||
98 | size = ALIGN(PAGE_SIZE, SZ_1M); | ||
99 | paddr = arm_memblock_steal(size, SZ_1M); | ||
100 | |||
101 | return 0; | ||
102 | } | ||
103 | |||
104 | void __init omap_barriers_init(void) | ||
105 | { | ||
106 | struct map_desc dram_io_desc[1]; | ||
107 | |||
108 | dram_io_desc[0].virtual = OMAP4_DRAM_BARRIER_VA; | ||
109 | dram_io_desc[0].pfn = __phys_to_pfn(paddr); | ||
110 | dram_io_desc[0].length = size; | ||
111 | dram_io_desc[0].type = MT_MEMORY_RW_SO; | ||
112 | iotable_init(dram_io_desc, ARRAY_SIZE(dram_io_desc)); | ||
113 | dram_sync = (void __iomem *) dram_io_desc[0].virtual; | ||
114 | |||
115 | pr_info("OMAP4: Map 0x%08llx to 0x%08lx for dram barrier\n", | ||
116 | (long long) paddr, dram_io_desc[0].virtual); | ||
117 | |||
118 | } | ||
119 | #else | ||
120 | void __init omap_barriers_init(void) | ||
121 | {} | ||
122 | #endif | ||
123 | |||
124 | void gic_dist_disable(void) | 55 | void gic_dist_disable(void) |
125 | { | 56 | { |
126 | if (gic_dist_base_addr) | 57 | if (gic_dist_base_addr) |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index fe01c5a03aa2..b1aad7e1426c 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -75,9 +75,9 @@ static int omap2_enter_full_retention(void) | |||
75 | 75 | ||
76 | /* Clear old wake-up events */ | 76 | /* Clear old wake-up events */ |
77 | /* REVISIT: These write to reserved bits? */ | 77 | /* REVISIT: These write to reserved bits? */ |
78 | omap2xxx_prm_clear_mod_irqs(CORE_MOD, PM_WKST1, ~0); | 78 | omap_prm_clear_mod_irqs(CORE_MOD, PM_WKST1, ~0); |
79 | omap2xxx_prm_clear_mod_irqs(CORE_MOD, OMAP24XX_PM_WKST2, ~0); | 79 | omap_prm_clear_mod_irqs(CORE_MOD, OMAP24XX_PM_WKST2, ~0); |
80 | omap2xxx_prm_clear_mod_irqs(WKUP_MOD, PM_WKST, ~0); | 80 | omap_prm_clear_mod_irqs(WKUP_MOD, PM_WKST, ~0); |
81 | 81 | ||
82 | pwrdm_set_next_pwrst(core_pwrdm, PWRDM_POWER_RET); | 82 | pwrdm_set_next_pwrst(core_pwrdm, PWRDM_POWER_RET); |
83 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_RET); | 83 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_RET); |
@@ -104,18 +104,16 @@ no_sleep: | |||
104 | clk_enable(osc_ck); | 104 | clk_enable(osc_ck); |
105 | 105 | ||
106 | /* clear CORE wake-up events */ | 106 | /* clear CORE wake-up events */ |
107 | omap2xxx_prm_clear_mod_irqs(CORE_MOD, PM_WKST1, ~0); | 107 | omap_prm_clear_mod_irqs(CORE_MOD, PM_WKST1, ~0); |
108 | omap2xxx_prm_clear_mod_irqs(CORE_MOD, OMAP24XX_PM_WKST2, ~0); | 108 | omap_prm_clear_mod_irqs(CORE_MOD, OMAP24XX_PM_WKST2, ~0); |
109 | 109 | ||
110 | /* wakeup domain events - bit 1: GPT1, bit5 GPIO */ | 110 | /* wakeup domain events - bit 1: GPT1, bit5 GPIO */ |
111 | omap2xxx_prm_clear_mod_irqs(WKUP_MOD, PM_WKST, 0x4 | 0x1); | 111 | omap_prm_clear_mod_irqs(WKUP_MOD, PM_WKST, 0x4 | 0x1); |
112 | 112 | ||
113 | /* MPU domain wake events */ | 113 | /* MPU domain wake events */ |
114 | omap2xxx_prm_clear_mod_irqs(OCP_MOD, OMAP2_PRCM_IRQSTATUS_MPU_OFFSET, | 114 | omap_prm_clear_mod_irqs(OCP_MOD, OMAP2_PRCM_IRQSTATUS_MPU_OFFSET, 0x1); |
115 | 0x1); | ||
116 | 115 | ||
117 | omap2xxx_prm_clear_mod_irqs(OCP_MOD, OMAP2_PRCM_IRQSTATUS_MPU_OFFSET, | 116 | omap_prm_clear_mod_irqs(OCP_MOD, OMAP2_PRCM_IRQSTATUS_MPU_OFFSET, 0x20); |
118 | 0x20); | ||
119 | 117 | ||
120 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON); | 118 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON); |
121 | pwrdm_set_next_pwrst(core_pwrdm, PWRDM_POWER_ON); | 119 | pwrdm_set_next_pwrst(core_pwrdm, PWRDM_POWER_ON); |
@@ -143,9 +141,9 @@ static void omap2_enter_mpu_retention(void) | |||
143 | * it is in retention mode. */ | 141 | * it is in retention mode. */ |
144 | if (omap2_allow_mpu_retention()) { | 142 | if (omap2_allow_mpu_retention()) { |
145 | /* REVISIT: These write to reserved bits? */ | 143 | /* REVISIT: These write to reserved bits? */ |
146 | omap2xxx_prm_clear_mod_irqs(CORE_MOD, PM_WKST1, ~0); | 144 | omap_prm_clear_mod_irqs(CORE_MOD, PM_WKST1, ~0); |
147 | omap2xxx_prm_clear_mod_irqs(CORE_MOD, OMAP24XX_PM_WKST2, ~0); | 145 | omap_prm_clear_mod_irqs(CORE_MOD, OMAP24XX_PM_WKST2, ~0); |
148 | omap2xxx_prm_clear_mod_irqs(WKUP_MOD, PM_WKST, ~0); | 146 | omap_prm_clear_mod_irqs(WKUP_MOD, PM_WKST, ~0); |
149 | 147 | ||
150 | /* Try to enter MPU retention */ | 148 | /* Try to enter MPU retention */ |
151 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_RET); | 149 | pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_RET); |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 88721df6001d..87b98bf92366 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -137,9 +137,8 @@ static irqreturn_t _prcm_int_handle_io(int irq, void *unused) | |||
137 | { | 137 | { |
138 | int c; | 138 | int c; |
139 | 139 | ||
140 | c = omap3xxx_prm_clear_mod_irqs(WKUP_MOD, 1, | 140 | c = omap_prm_clear_mod_irqs(WKUP_MOD, 1, OMAP3430_ST_IO_MASK | |
141 | ~(OMAP3430_ST_IO_MASK | | 141 | OMAP3430_ST_IO_CHAIN_MASK); |
142 | OMAP3430_ST_IO_CHAIN_MASK)); | ||
143 | 142 | ||
144 | return c ? IRQ_HANDLED : IRQ_NONE; | 143 | return c ? IRQ_HANDLED : IRQ_NONE; |
145 | } | 144 | } |
@@ -153,14 +152,13 @@ static irqreturn_t _prcm_int_handle_wakeup(int irq, void *unused) | |||
153 | * these are handled in a separate handler to avoid acking | 152 | * these are handled in a separate handler to avoid acking |
154 | * IO events before parsing in mux code | 153 | * IO events before parsing in mux code |
155 | */ | 154 | */ |
156 | c = omap3xxx_prm_clear_mod_irqs(WKUP_MOD, 1, | 155 | c = omap_prm_clear_mod_irqs(WKUP_MOD, 1, ~(OMAP3430_ST_IO_MASK | |
157 | OMAP3430_ST_IO_MASK | | 156 | OMAP3430_ST_IO_CHAIN_MASK)); |
158 | OMAP3430_ST_IO_CHAIN_MASK); | 157 | c += omap_prm_clear_mod_irqs(CORE_MOD, 1, ~0); |
159 | c += omap3xxx_prm_clear_mod_irqs(CORE_MOD, 1, 0); | 158 | c += omap_prm_clear_mod_irqs(OMAP3430_PER_MOD, 1, ~0); |
160 | c += omap3xxx_prm_clear_mod_irqs(OMAP3430_PER_MOD, 1, 0); | ||
161 | if (omap_rev() > OMAP3430_REV_ES1_0) { | 159 | if (omap_rev() > OMAP3430_REV_ES1_0) { |
162 | c += omap3xxx_prm_clear_mod_irqs(CORE_MOD, 3, 0); | 160 | c += omap_prm_clear_mod_irqs(CORE_MOD, 3, ~0); |
163 | c += omap3xxx_prm_clear_mod_irqs(OMAP3430ES2_USBHOST_MOD, 1, 0); | 161 | c += omap_prm_clear_mod_irqs(OMAP3430ES2_USBHOST_MOD, 1, ~0); |
164 | } | 162 | } |
165 | 163 | ||
166 | return c ? IRQ_HANDLED : IRQ_NONE; | 164 | return c ? IRQ_HANDLED : IRQ_NONE; |
diff --git a/arch/arm/mach-omap2/prcm-common.h b/arch/arm/mach-omap2/prcm-common.h index 6163d66102a3..6ae0b3a1781e 100644 --- a/arch/arm/mach-omap2/prcm-common.h +++ b/arch/arm/mach-omap2/prcm-common.h | |||
@@ -518,6 +518,26 @@ struct omap_prcm_irq_setup { | |||
518 | .priority = _priority \ | 518 | .priority = _priority \ |
519 | } | 519 | } |
520 | 520 | ||
521 | /** | ||
522 | * struct omap_prcm_init_data - PRCM driver init data | ||
523 | * @index: clock memory mapping index to be used | ||
524 | * @mem: IO mem pointer for this module | ||
525 | * @offset: module base address offset from the IO base | ||
526 | * @flags: PRCM module init flags | ||
527 | * @device_inst_offset: device instance offset within the module address space | ||
528 | * @init: low level PRCM init function for this module | ||
529 | * @np: device node for this PRCM module | ||
530 | */ | ||
531 | struct omap_prcm_init_data { | ||
532 | int index; | ||
533 | void __iomem *mem; | ||
534 | s16 offset; | ||
535 | u16 flags; | ||
536 | s32 device_inst_offset; | ||
537 | int (*init)(const struct omap_prcm_init_data *data); | ||
538 | struct device_node *np; | ||
539 | }; | ||
540 | |||
521 | extern void omap_prcm_irq_cleanup(void); | 541 | extern void omap_prcm_irq_cleanup(void); |
522 | extern int omap_prcm_register_chain_handler( | 542 | extern int omap_prcm_register_chain_handler( |
523 | struct omap_prcm_irq_setup *irq_setup); | 543 | struct omap_prcm_irq_setup *irq_setup); |
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h index b9061a6a2db8..233bc84fbc0e 100644 --- a/arch/arm/mach-omap2/prm.h +++ b/arch/arm/mach-omap2/prm.h | |||
@@ -19,8 +19,9 @@ | |||
19 | extern void __iomem *prm_base; | 19 | extern void __iomem *prm_base; |
20 | extern u16 prm_features; | 20 | extern u16 prm_features; |
21 | extern void omap2_set_globals_prm(void __iomem *prm); | 21 | extern void omap2_set_globals_prm(void __iomem *prm); |
22 | int of_prcm_init(void); | 22 | int omap_prcm_init(void); |
23 | void omap3_prcm_legacy_iomaps_init(void); | 23 | int omap2_prm_base_init(void); |
24 | int omap2_prcm_base_init(void); | ||
24 | # endif | 25 | # endif |
25 | 26 | ||
26 | /* | 27 | /* |
@@ -28,9 +29,11 @@ void omap3_prcm_legacy_iomaps_init(void); | |||
28 | * | 29 | * |
29 | * PRM_HAS_IO_WAKEUP: has IO wakeup capability | 30 | * PRM_HAS_IO_WAKEUP: has IO wakeup capability |
30 | * PRM_HAS_VOLTAGE: has voltage domains | 31 | * PRM_HAS_VOLTAGE: has voltage domains |
32 | * PRM_IRQ_DEFAULT: use default irq number for PRM irq | ||
31 | */ | 33 | */ |
32 | #define PRM_HAS_IO_WAKEUP (1 << 0) | 34 | #define PRM_HAS_IO_WAKEUP BIT(0) |
33 | #define PRM_HAS_VOLTAGE (1 << 1) | 35 | #define PRM_HAS_VOLTAGE BIT(1) |
36 | #define PRM_IRQ_DEFAULT BIT(2) | ||
34 | 37 | ||
35 | /* | 38 | /* |
36 | * MAX_MODULE_SOFTRESET_WAIT: Maximum microseconds to wait for OMAP | 39 | * MAX_MODULE_SOFTRESET_WAIT: Maximum microseconds to wait for OMAP |
@@ -146,6 +149,9 @@ struct prm_ll_data { | |||
146 | int (*is_hardreset_asserted)(u8 shift, u8 part, s16 prm_mod, | 149 | int (*is_hardreset_asserted)(u8 shift, u8 part, s16 prm_mod, |
147 | u16 offset); | 150 | u16 offset); |
148 | void (*reset_system)(void); | 151 | void (*reset_system)(void); |
152 | int (*clear_mod_irqs)(s16 module, u8 regs, u32 wkst_mask); | ||
153 | u32 (*vp_check_txdone)(u8 vp_id); | ||
154 | void (*vp_clear_txdone)(u8 vp_id); | ||
149 | }; | 155 | }; |
150 | 156 | ||
151 | extern int prm_register(struct prm_ll_data *pld); | 157 | extern int prm_register(struct prm_ll_data *pld); |
@@ -161,6 +167,19 @@ extern void prm_clear_context_loss_flags_old(u8 part, s16 inst, u16 idx); | |||
161 | void omap_prm_reset_system(void); | 167 | void omap_prm_reset_system(void); |
162 | 168 | ||
163 | void omap_prm_reconfigure_io_chain(void); | 169 | void omap_prm_reconfigure_io_chain(void); |
170 | int omap_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask); | ||
171 | |||
172 | /* | ||
173 | * Voltage Processor (VP) identifiers | ||
174 | */ | ||
175 | #define OMAP3_VP_VDD_MPU_ID 0 | ||
176 | #define OMAP3_VP_VDD_CORE_ID 1 | ||
177 | #define OMAP4_VP_VDD_CORE_ID 0 | ||
178 | #define OMAP4_VP_VDD_IVA_ID 1 | ||
179 | #define OMAP4_VP_VDD_MPU_ID 2 | ||
180 | |||
181 | u32 omap_prm_vp_check_txdone(u8 vp_id); | ||
182 | void omap_prm_vp_clear_txdone(u8 vp_id); | ||
164 | 183 | ||
165 | #endif | 184 | #endif |
166 | 185 | ||
diff --git a/arch/arm/mach-omap2/prm2xxx.c b/arch/arm/mach-omap2/prm2xxx.c index af0f15278fc2..752018ce129c 100644 --- a/arch/arm/mach-omap2/prm2xxx.c +++ b/arch/arm/mach-omap2/prm2xxx.c | |||
@@ -123,13 +123,14 @@ static void omap2xxx_prm_dpll_reset(void) | |||
123 | * Clears wakeup status bits for a given module, so that the device can | 123 | * Clears wakeup status bits for a given module, so that the device can |
124 | * re-enter idle. | 124 | * re-enter idle. |
125 | */ | 125 | */ |
126 | void omap2xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask) | 126 | static int omap2xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask) |
127 | { | 127 | { |
128 | u32 wkst; | 128 | u32 wkst; |
129 | 129 | ||
130 | wkst = omap2_prm_read_mod_reg(module, regs); | 130 | wkst = omap2_prm_read_mod_reg(module, regs); |
131 | wkst &= wkst_mask; | 131 | wkst &= wkst_mask; |
132 | omap2_prm_write_mod_reg(wkst, module, regs); | 132 | omap2_prm_write_mod_reg(wkst, module, regs); |
133 | return 0; | ||
133 | } | 134 | } |
134 | 135 | ||
135 | int omap2xxx_clkdm_sleep(struct clockdomain *clkdm) | 136 | int omap2xxx_clkdm_sleep(struct clockdomain *clkdm) |
@@ -216,9 +217,10 @@ static struct prm_ll_data omap2xxx_prm_ll_data = { | |||
216 | .deassert_hardreset = &omap2_prm_deassert_hardreset, | 217 | .deassert_hardreset = &omap2_prm_deassert_hardreset, |
217 | .is_hardreset_asserted = &omap2_prm_is_hardreset_asserted, | 218 | .is_hardreset_asserted = &omap2_prm_is_hardreset_asserted, |
218 | .reset_system = &omap2xxx_prm_dpll_reset, | 219 | .reset_system = &omap2xxx_prm_dpll_reset, |
220 | .clear_mod_irqs = &omap2xxx_prm_clear_mod_irqs, | ||
219 | }; | 221 | }; |
220 | 222 | ||
221 | int __init omap2xxx_prm_init(void) | 223 | int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data) |
222 | { | 224 | { |
223 | return prm_register(&omap2xxx_prm_ll_data); | 225 | return prm_register(&omap2xxx_prm_ll_data); |
224 | } | 226 | } |
diff --git a/arch/arm/mach-omap2/prm2xxx.h b/arch/arm/mach-omap2/prm2xxx.h index 1d51643062f7..9008a9e55a1a 100644 --- a/arch/arm/mach-omap2/prm2xxx.h +++ b/arch/arm/mach-omap2/prm2xxx.h | |||
@@ -124,9 +124,7 @@ | |||
124 | extern int omap2xxx_clkdm_sleep(struct clockdomain *clkdm); | 124 | extern int omap2xxx_clkdm_sleep(struct clockdomain *clkdm); |
125 | extern int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm); | 125 | extern int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm); |
126 | 126 | ||
127 | void omap2xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask); | 127 | int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data); |
128 | |||
129 | extern int __init omap2xxx_prm_init(void); | ||
130 | 128 | ||
131 | #endif | 129 | #endif |
132 | 130 | ||
diff --git a/arch/arm/mach-omap2/prm33xx.c b/arch/arm/mach-omap2/prm33xx.c index 02f628601b09..dcb5001d77da 100644 --- a/arch/arm/mach-omap2/prm33xx.c +++ b/arch/arm/mach-omap2/prm33xx.c | |||
@@ -378,7 +378,7 @@ static struct prm_ll_data am33xx_prm_ll_data = { | |||
378 | .reset_system = am33xx_prm_global_warm_sw_reset, | 378 | .reset_system = am33xx_prm_global_warm_sw_reset, |
379 | }; | 379 | }; |
380 | 380 | ||
381 | int __init am33xx_prm_init(void) | 381 | int __init am33xx_prm_init(const struct omap_prcm_init_data *data) |
382 | { | 382 | { |
383 | return prm_register(&am33xx_prm_ll_data); | 383 | return prm_register(&am33xx_prm_ll_data); |
384 | } | 384 | } |
diff --git a/arch/arm/mach-omap2/prm33xx.h b/arch/arm/mach-omap2/prm33xx.h index 98ac41f271da..2bc4ec52ba78 100644 --- a/arch/arm/mach-omap2/prm33xx.h +++ b/arch/arm/mach-omap2/prm33xx.h | |||
@@ -118,7 +118,7 @@ | |||
118 | #define AM33XX_PM_CEFUSE_PWRSTST AM33XX_PRM_REGADDR(AM33XX_PRM_CEFUSE_MOD, 0x0004) | 118 | #define AM33XX_PM_CEFUSE_PWRSTST AM33XX_PRM_REGADDR(AM33XX_PRM_CEFUSE_MOD, 0x0004) |
119 | 119 | ||
120 | #ifndef __ASSEMBLER__ | 120 | #ifndef __ASSEMBLER__ |
121 | int am33xx_prm_init(void); | 121 | int am33xx_prm_init(const struct omap_prcm_init_data *data); |
122 | 122 | ||
123 | #endif /* ASSEMBLER */ | 123 | #endif /* ASSEMBLER */ |
124 | #endif | 124 | #endif |
diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c index 5713bbdf83bc..62680aad2126 100644 --- a/arch/arm/mach-omap2/prm3xxx.c +++ b/arch/arm/mach-omap2/prm3xxx.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "prm-regbits-34xx.h" | 29 | #include "prm-regbits-34xx.h" |
30 | #include "cm3xxx.h" | 30 | #include "cm3xxx.h" |
31 | #include "cm-regbits-34xx.h" | 31 | #include "cm-regbits-34xx.h" |
32 | #include "clock.h" | ||
32 | 33 | ||
33 | static void omap3xxx_prm_read_pending_irqs(unsigned long *events); | 34 | static void omap3xxx_prm_read_pending_irqs(unsigned long *events); |
34 | static void omap3xxx_prm_ocp_barrier(void); | 35 | static void omap3xxx_prm_ocp_barrier(void); |
@@ -96,7 +97,7 @@ static struct omap3_vp omap3_vp[] = { | |||
96 | 97 | ||
97 | #define MAX_VP_ID ARRAY_SIZE(omap3_vp); | 98 | #define MAX_VP_ID ARRAY_SIZE(omap3_vp); |
98 | 99 | ||
99 | u32 omap3_prm_vp_check_txdone(u8 vp_id) | 100 | static u32 omap3_prm_vp_check_txdone(u8 vp_id) |
100 | { | 101 | { |
101 | struct omap3_vp *vp = &omap3_vp[vp_id]; | 102 | struct omap3_vp *vp = &omap3_vp[vp_id]; |
102 | u32 irqstatus; | 103 | u32 irqstatus; |
@@ -106,7 +107,7 @@ u32 omap3_prm_vp_check_txdone(u8 vp_id) | |||
106 | return irqstatus & vp->tranxdone_status; | 107 | return irqstatus & vp->tranxdone_status; |
107 | } | 108 | } |
108 | 109 | ||
109 | void omap3_prm_vp_clear_txdone(u8 vp_id) | 110 | static void omap3_prm_vp_clear_txdone(u8 vp_id) |
110 | { | 111 | { |
111 | struct omap3_vp *vp = &omap3_vp[vp_id]; | 112 | struct omap3_vp *vp = &omap3_vp[vp_id]; |
112 | 113 | ||
@@ -217,7 +218,7 @@ static void omap3xxx_prm_restore_irqen(u32 *saved_mask) | |||
217 | * omap3xxx_prm_clear_mod_irqs - clear wake-up events from PRCM interrupt | 218 | * omap3xxx_prm_clear_mod_irqs - clear wake-up events from PRCM interrupt |
218 | * @module: PRM module to clear wakeups from | 219 | * @module: PRM module to clear wakeups from |
219 | * @regs: register set to clear, 1 or 3 | 220 | * @regs: register set to clear, 1 or 3 |
220 | * @ignore_bits: wakeup status bits to ignore | 221 | * @wkst_mask: wkst bits to clear |
221 | * | 222 | * |
222 | * The purpose of this function is to clear any wake-up events latched | 223 | * The purpose of this function is to clear any wake-up events latched |
223 | * in the PRCM PM_WKST_x registers. It is possible that a wake-up event | 224 | * in the PRCM PM_WKST_x registers. It is possible that a wake-up event |
@@ -226,7 +227,7 @@ static void omap3xxx_prm_restore_irqen(u32 *saved_mask) | |||
226 | * that any peripheral wake-up events occurring while attempting to | 227 | * that any peripheral wake-up events occurring while attempting to |
227 | * clear the PM_WKST_x are detected and cleared. | 228 | * clear the PM_WKST_x are detected and cleared. |
228 | */ | 229 | */ |
229 | int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits) | 230 | static int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask) |
230 | { | 231 | { |
231 | u32 wkst, fclk, iclk, clken; | 232 | u32 wkst, fclk, iclk, clken; |
232 | u16 wkst_off = (regs == 3) ? OMAP3430ES2_PM_WKST3 : PM_WKST1; | 233 | u16 wkst_off = (regs == 3) ? OMAP3430ES2_PM_WKST3 : PM_WKST1; |
@@ -238,7 +239,7 @@ int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits) | |||
238 | 239 | ||
239 | wkst = omap2_prm_read_mod_reg(module, wkst_off); | 240 | wkst = omap2_prm_read_mod_reg(module, wkst_off); |
240 | wkst &= omap2_prm_read_mod_reg(module, grpsel_off); | 241 | wkst &= omap2_prm_read_mod_reg(module, grpsel_off); |
241 | wkst &= ~ignore_bits; | 242 | wkst &= wkst_mask; |
242 | if (wkst) { | 243 | if (wkst) { |
243 | iclk = omap2_cm_read_mod_reg(module, iclk_off); | 244 | iclk = omap2_cm_read_mod_reg(module, iclk_off); |
244 | fclk = omap2_cm_read_mod_reg(module, fclk_off); | 245 | fclk = omap2_cm_read_mod_reg(module, fclk_off); |
@@ -254,7 +255,7 @@ int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits) | |||
254 | omap2_cm_set_mod_reg_bits(clken, module, fclk_off); | 255 | omap2_cm_set_mod_reg_bits(clken, module, fclk_off); |
255 | omap2_prm_write_mod_reg(wkst, module, wkst_off); | 256 | omap2_prm_write_mod_reg(wkst, module, wkst_off); |
256 | wkst = omap2_prm_read_mod_reg(module, wkst_off); | 257 | wkst = omap2_prm_read_mod_reg(module, wkst_off); |
257 | wkst &= ~ignore_bits; | 258 | wkst &= wkst_mask; |
258 | c++; | 259 | c++; |
259 | } | 260 | } |
260 | omap2_cm_write_mod_reg(iclk, module, iclk_off); | 261 | omap2_cm_write_mod_reg(iclk, module, iclk_off); |
@@ -664,10 +665,15 @@ static struct prm_ll_data omap3xxx_prm_ll_data = { | |||
664 | .deassert_hardreset = &omap2_prm_deassert_hardreset, | 665 | .deassert_hardreset = &omap2_prm_deassert_hardreset, |
665 | .is_hardreset_asserted = &omap2_prm_is_hardreset_asserted, | 666 | .is_hardreset_asserted = &omap2_prm_is_hardreset_asserted, |
666 | .reset_system = &omap3xxx_prm_dpll3_reset, | 667 | .reset_system = &omap3xxx_prm_dpll3_reset, |
668 | .clear_mod_irqs = &omap3xxx_prm_clear_mod_irqs, | ||
669 | .vp_check_txdone = &omap3_prm_vp_check_txdone, | ||
670 | .vp_clear_txdone = &omap3_prm_vp_clear_txdone, | ||
667 | }; | 671 | }; |
668 | 672 | ||
669 | int __init omap3xxx_prm_init(void) | 673 | int __init omap3xxx_prm_init(const struct omap_prcm_init_data *data) |
670 | { | 674 | { |
675 | omap2_clk_legacy_provider_init(TI_CLKM_PRM, | ||
676 | prm_base + OMAP3430_IVA2_MOD); | ||
671 | if (omap3_has_io_wakeup()) | 677 | if (omap3_has_io_wakeup()) |
672 | prm_features |= PRM_HAS_IO_WAKEUP; | 678 | prm_features |= PRM_HAS_IO_WAKEUP; |
673 | 679 | ||
diff --git a/arch/arm/mach-omap2/prm3xxx.h b/arch/arm/mach-omap2/prm3xxx.h index ed8a3d8b739a..5f095eec339c 100644 --- a/arch/arm/mach-omap2/prm3xxx.h +++ b/arch/arm/mach-omap2/prm3xxx.h | |||
@@ -132,10 +132,6 @@ | |||
132 | 132 | ||
133 | #ifndef __ASSEMBLER__ | 133 | #ifndef __ASSEMBLER__ |
134 | 134 | ||
135 | /* OMAP3-specific VP functions */ | ||
136 | u32 omap3_prm_vp_check_txdone(u8 vp_id); | ||
137 | void omap3_prm_vp_clear_txdone(u8 vp_id); | ||
138 | |||
139 | /* | 135 | /* |
140 | * OMAP3 access functions for voltage controller (VC) and | 136 | * OMAP3 access functions for voltage controller (VC) and |
141 | * voltage proccessor (VP) in the PRM. | 137 | * voltage proccessor (VP) in the PRM. |
@@ -144,8 +140,7 @@ extern u32 omap3_prm_vcvp_read(u8 offset); | |||
144 | extern void omap3_prm_vcvp_write(u32 val, u8 offset); | 140 | extern void omap3_prm_vcvp_write(u32 val, u8 offset); |
145 | extern u32 omap3_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset); | 141 | extern u32 omap3_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset); |
146 | 142 | ||
147 | extern int __init omap3xxx_prm_init(void); | 143 | int __init omap3xxx_prm_init(const struct omap_prcm_init_data *data); |
148 | int omap3xxx_prm_clear_mod_irqs(s16 module, u8 regs, u32 ignore_bits); | ||
149 | void omap3xxx_prm_iva_idle(void); | 144 | void omap3xxx_prm_iva_idle(void); |
150 | void omap3_prm_reset_modem(void); | 145 | void omap3_prm_reset_modem(void); |
151 | int omap3xxx_prm_clear_global_cold_reset(void); | 146 | int omap3xxx_prm_clear_global_cold_reset(void); |
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c index a08a617a6c11..c35ad0bedf81 100644 --- a/arch/arm/mach-omap2/prm44xx.c +++ b/arch/arm/mach-omap2/prm44xx.c | |||
@@ -138,7 +138,7 @@ static struct omap4_vp omap4_vp[] = { | |||
138 | }, | 138 | }, |
139 | }; | 139 | }; |
140 | 140 | ||
141 | u32 omap4_prm_vp_check_txdone(u8 vp_id) | 141 | static u32 omap4_prm_vp_check_txdone(u8 vp_id) |
142 | { | 142 | { |
143 | struct omap4_vp *vp = &omap4_vp[vp_id]; | 143 | struct omap4_vp *vp = &omap4_vp[vp_id]; |
144 | u32 irqstatus; | 144 | u32 irqstatus; |
@@ -149,7 +149,7 @@ u32 omap4_prm_vp_check_txdone(u8 vp_id) | |||
149 | return irqstatus & vp->tranxdone_status; | 149 | return irqstatus & vp->tranxdone_status; |
150 | } | 150 | } |
151 | 151 | ||
152 | void omap4_prm_vp_clear_txdone(u8 vp_id) | 152 | static void omap4_prm_vp_clear_txdone(u8 vp_id) |
153 | { | 153 | { |
154 | struct omap4_vp *vp = &omap4_vp[vp_id]; | 154 | struct omap4_vp *vp = &omap4_vp[vp_id]; |
155 | 155 | ||
@@ -699,29 +699,31 @@ static struct prm_ll_data omap44xx_prm_ll_data = { | |||
699 | .deassert_hardreset = omap4_prminst_deassert_hardreset, | 699 | .deassert_hardreset = omap4_prminst_deassert_hardreset, |
700 | .is_hardreset_asserted = omap4_prminst_is_hardreset_asserted, | 700 | .is_hardreset_asserted = omap4_prminst_is_hardreset_asserted, |
701 | .reset_system = omap4_prminst_global_warm_sw_reset, | 701 | .reset_system = omap4_prminst_global_warm_sw_reset, |
702 | .vp_check_txdone = omap4_prm_vp_check_txdone, | ||
703 | .vp_clear_txdone = omap4_prm_vp_clear_txdone, | ||
702 | }; | 704 | }; |
703 | 705 | ||
704 | int __init omap44xx_prm_init(void) | 706 | static const struct omap_prcm_init_data *prm_init_data; |
707 | |||
708 | int __init omap44xx_prm_init(const struct omap_prcm_init_data *data) | ||
705 | { | 709 | { |
706 | if (cpu_is_omap44xx() || soc_is_omap54xx() || soc_is_dra7xx()) | 710 | omap_prm_base_init(); |
711 | |||
712 | prm_init_data = data; | ||
713 | |||
714 | if (data->flags & PRM_HAS_IO_WAKEUP) | ||
707 | prm_features |= PRM_HAS_IO_WAKEUP; | 715 | prm_features |= PRM_HAS_IO_WAKEUP; |
708 | 716 | ||
709 | if (!soc_is_dra7xx()) | 717 | if (data->flags & PRM_HAS_VOLTAGE) |
710 | prm_features |= PRM_HAS_VOLTAGE; | 718 | prm_features |= PRM_HAS_VOLTAGE; |
711 | 719 | ||
720 | omap4_prminst_set_prm_dev_inst(data->device_inst_offset); | ||
721 | |||
712 | return prm_register(&omap44xx_prm_ll_data); | 722 | return prm_register(&omap44xx_prm_ll_data); |
713 | } | 723 | } |
714 | 724 | ||
715 | static const struct of_device_id omap_prm_dt_match_table[] = { | ||
716 | { .compatible = "ti,omap4-prm" }, | ||
717 | { .compatible = "ti,omap5-prm" }, | ||
718 | { .compatible = "ti,dra7-prm" }, | ||
719 | { } | ||
720 | }; | ||
721 | |||
722 | static int omap44xx_prm_late_init(void) | 725 | static int omap44xx_prm_late_init(void) |
723 | { | 726 | { |
724 | struct device_node *np; | ||
725 | int irq_num; | 727 | int irq_num; |
726 | 728 | ||
727 | if (!(prm_features & PRM_HAS_IO_WAKEUP)) | 729 | if (!(prm_features & PRM_HAS_IO_WAKEUP)) |
@@ -731,31 +733,23 @@ static int omap44xx_prm_late_init(void) | |||
731 | if (!of_have_populated_dt()) | 733 | if (!of_have_populated_dt()) |
732 | return 0; | 734 | return 0; |
733 | 735 | ||
734 | np = of_find_matching_node(NULL, omap_prm_dt_match_table); | 736 | irq_num = of_irq_get(prm_init_data->np, 0); |
735 | 737 | /* | |
736 | if (!np) { | 738 | * Already have OMAP4 IRQ num. For all other platforms, we need |
737 | /* Default loaded up with OMAP4 values */ | 739 | * IRQ numbers from DT |
738 | if (!cpu_is_omap44xx()) | 740 | */ |
739 | return 0; | 741 | if (irq_num < 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) { |
740 | } else { | 742 | if (irq_num == -EPROBE_DEFER) |
741 | irq_num = of_irq_get(np, 0); | 743 | return irq_num; |
742 | /* | 744 | |
743 | * Already have OMAP4 IRQ num. For all other platforms, we need | 745 | /* Have nothing to do */ |
744 | * IRQ numbers from DT | 746 | return 0; |
745 | */ | 747 | } |
746 | if (irq_num < 0 && !cpu_is_omap44xx()) { | 748 | |
747 | if (irq_num == -EPROBE_DEFER) | 749 | /* Once OMAP4 DT is filled as well */ |
748 | return irq_num; | 750 | if (irq_num >= 0) { |
749 | 751 | omap4_prcm_irq_setup.irq = irq_num; | |
750 | /* Have nothing to do */ | 752 | omap4_prcm_irq_setup.xlate_irq = NULL; |
751 | return 0; | ||
752 | } | ||
753 | |||
754 | /* Once OMAP4 DT is filled as well */ | ||
755 | if (irq_num >= 0) { | ||
756 | omap4_prcm_irq_setup.irq = irq_num; | ||
757 | omap4_prcm_irq_setup.xlate_irq = NULL; | ||
758 | } | ||
759 | } | 753 | } |
760 | 754 | ||
761 | omap44xx_prm_enable_io_wakeup(); | 755 | omap44xx_prm_enable_io_wakeup(); |
diff --git a/arch/arm/mach-omap2/prm44xx.h b/arch/arm/mach-omap2/prm44xx.h index 7db2422faa16..efd6035d0871 100644 --- a/arch/arm/mach-omap2/prm44xx.h +++ b/arch/arm/mach-omap2/prm44xx.h | |||
@@ -26,7 +26,6 @@ | |||
26 | #define __ARCH_ARM_MACH_OMAP2_PRM44XX_H | 26 | #define __ARCH_ARM_MACH_OMAP2_PRM44XX_H |
27 | 27 | ||
28 | #include "prm44xx_54xx.h" | 28 | #include "prm44xx_54xx.h" |
29 | #include "prcm-common.h" | ||
30 | #include "prm.h" | 29 | #include "prm.h" |
31 | 30 | ||
32 | #define OMAP4430_PRM_BASE 0x4a306000 | 31 | #define OMAP4430_PRM_BASE 0x4a306000 |
diff --git a/arch/arm/mach-omap2/prm44xx_54xx.h b/arch/arm/mach-omap2/prm44xx_54xx.h index 714329565b90..3f139ebc8398 100644 --- a/arch/arm/mach-omap2/prm44xx_54xx.h +++ b/arch/arm/mach-omap2/prm44xx_54xx.h | |||
@@ -23,13 +23,11 @@ | |||
23 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM44XX_54XX_H | 23 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM44XX_54XX_H |
24 | #define __ARCH_ARM_MACH_OMAP2_PRM44XX_54XX_H | 24 | #define __ARCH_ARM_MACH_OMAP2_PRM44XX_54XX_H |
25 | 25 | ||
26 | #include "prcm-common.h" | ||
27 | |||
26 | /* Function prototypes */ | 28 | /* Function prototypes */ |
27 | #ifndef __ASSEMBLER__ | 29 | #ifndef __ASSEMBLER__ |
28 | 30 | ||
29 | /* OMAP4/OMAP5-specific VP functions */ | ||
30 | u32 omap4_prm_vp_check_txdone(u8 vp_id); | ||
31 | void omap4_prm_vp_clear_txdone(u8 vp_id); | ||
32 | |||
33 | /* | 31 | /* |
34 | * OMAP4/OMAP5 access functions for voltage controller (VC) and | 32 | * OMAP4/OMAP5 access functions for voltage controller (VC) and |
35 | * voltage proccessor (VP) in the PRM. | 33 | * voltage proccessor (VP) in the PRM. |
@@ -38,7 +36,7 @@ extern u32 omap4_prm_vcvp_read(u8 offset); | |||
38 | extern void omap4_prm_vcvp_write(u32 val, u8 offset); | 36 | extern void omap4_prm_vcvp_write(u32 val, u8 offset); |
39 | extern u32 omap4_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset); | 37 | extern u32 omap4_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset); |
40 | 38 | ||
41 | extern int __init omap44xx_prm_init(void); | 39 | int __init omap44xx_prm_init(const struct omap_prcm_init_data *data); |
42 | 40 | ||
43 | #endif | 41 | #endif |
44 | 42 | ||
diff --git a/arch/arm/mach-omap2/prm54xx.h b/arch/arm/mach-omap2/prm54xx.h index e4411010309c..1eb22ff087dc 100644 --- a/arch/arm/mach-omap2/prm54xx.h +++ b/arch/arm/mach-omap2/prm54xx.h | |||
@@ -22,7 +22,6 @@ | |||
22 | #define __ARCH_ARM_MACH_OMAP2_PRM54XX_H | 22 | #define __ARCH_ARM_MACH_OMAP2_PRM54XX_H |
23 | 23 | ||
24 | #include "prm44xx_54xx.h" | 24 | #include "prm44xx_54xx.h" |
25 | #include "prcm-common.h" | ||
26 | #include "prm.h" | 25 | #include "prm.h" |
27 | 26 | ||
28 | #define OMAP54XX_PRM_BASE 0x4ae06000 | 27 | #define OMAP54XX_PRM_BASE 0x4ae06000 |
diff --git a/arch/arm/mach-omap2/prm7xx.h b/arch/arm/mach-omap2/prm7xx.h index 4bb50fbf29be..cc1e6a2b97f6 100644 --- a/arch/arm/mach-omap2/prm7xx.h +++ b/arch/arm/mach-omap2/prm7xx.h | |||
@@ -22,8 +22,8 @@ | |||
22 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM7XX_H | 22 | #ifndef __ARCH_ARM_MACH_OMAP2_PRM7XX_H |
23 | #define __ARCH_ARM_MACH_OMAP2_PRM7XX_H | 23 | #define __ARCH_ARM_MACH_OMAP2_PRM7XX_H |
24 | 24 | ||
25 | #include "prm44xx_54xx.h" | ||
26 | #include "prcm-common.h" | 25 | #include "prcm-common.h" |
26 | #include "prm44xx_54xx.h" | ||
27 | #include "prm.h" | 27 | #include "prm.h" |
28 | 28 | ||
29 | #define DRA7XX_PRM_BASE 0x4ae06000 | 29 | #define DRA7XX_PRM_BASE 0x4ae06000 |
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c index bfaa7ba595cc..7add7994dbfc 100644 --- a/arch/arm/mach-omap2/prm_common.c +++ b/arch/arm/mach-omap2/prm_common.c | |||
@@ -32,7 +32,11 @@ | |||
32 | #include "prm2xxx_3xxx.h" | 32 | #include "prm2xxx_3xxx.h" |
33 | #include "prm2xxx.h" | 33 | #include "prm2xxx.h" |
34 | #include "prm3xxx.h" | 34 | #include "prm3xxx.h" |
35 | #include "prm33xx.h" | ||
35 | #include "prm44xx.h" | 36 | #include "prm44xx.h" |
37 | #include "prm54xx.h" | ||
38 | #include "prm7xx.h" | ||
39 | #include "prcm43xx.h" | ||
36 | #include "common.h" | 40 | #include "common.h" |
37 | #include "clock.h" | 41 | #include "clock.h" |
38 | #include "cm.h" | 42 | #include "cm.h" |
@@ -534,6 +538,61 @@ void omap_prm_reset_system(void) | |||
534 | } | 538 | } |
535 | 539 | ||
536 | /** | 540 | /** |
541 | * omap_prm_clear_mod_irqs - clear wake-up events from PRCM interrupt | ||
542 | * @module: PRM module to clear wakeups from | ||
543 | * @regs: register to clear | ||
544 | * @wkst_mask: wkst bits to clear | ||
545 | * | ||
546 | * Clears any wakeup events for the module and register set defined. | ||
547 | * Uses SoC specific implementation to do the actual wakeup status | ||
548 | * clearing. | ||
549 | */ | ||
550 | int omap_prm_clear_mod_irqs(s16 module, u8 regs, u32 wkst_mask) | ||
551 | { | ||
552 | if (!prm_ll_data->clear_mod_irqs) { | ||
553 | WARN_ONCE(1, "prm: %s: no mapping function defined\n", | ||
554 | __func__); | ||
555 | return -EINVAL; | ||
556 | } | ||
557 | |||
558 | return prm_ll_data->clear_mod_irqs(module, regs, wkst_mask); | ||
559 | } | ||
560 | |||
561 | /** | ||
562 | * omap_prm_vp_check_txdone - check voltage processor TX done status | ||
563 | * | ||
564 | * Checks if voltage processor transmission has been completed. | ||
565 | * Returns non-zero if a transmission has completed, 0 otherwise. | ||
566 | */ | ||
567 | u32 omap_prm_vp_check_txdone(u8 vp_id) | ||
568 | { | ||
569 | if (!prm_ll_data->vp_check_txdone) { | ||
570 | WARN_ONCE(1, "prm: %s: no mapping function defined\n", | ||
571 | __func__); | ||
572 | return 0; | ||
573 | } | ||
574 | |||
575 | return prm_ll_data->vp_check_txdone(vp_id); | ||
576 | } | ||
577 | |||
578 | /** | ||
579 | * omap_prm_vp_clear_txdone - clears voltage processor TX done status | ||
580 | * | ||
581 | * Clears the status bit for completed voltage processor transmission | ||
582 | * returned by prm_vp_check_txdone. | ||
583 | */ | ||
584 | void omap_prm_vp_clear_txdone(u8 vp_id) | ||
585 | { | ||
586 | if (!prm_ll_data->vp_clear_txdone) { | ||
587 | WARN_ONCE(1, "prm: %s: no mapping function defined\n", | ||
588 | __func__); | ||
589 | return; | ||
590 | } | ||
591 | |||
592 | prm_ll_data->vp_clear_txdone(vp_id); | ||
593 | } | ||
594 | |||
595 | /** | ||
537 | * prm_register - register per-SoC low-level data with the PRM | 596 | * prm_register - register per-SoC low-level data with the PRM |
538 | * @pld: low-level per-SoC OMAP PRM data & function pointers to register | 597 | * @pld: low-level per-SoC OMAP PRM data & function pointers to register |
539 | * | 598 | * |
@@ -578,78 +637,175 @@ int prm_unregister(struct prm_ll_data *pld) | |||
578 | return 0; | 637 | return 0; |
579 | } | 638 | } |
580 | 639 | ||
581 | static const struct of_device_id omap_prcm_dt_match_table[] = { | 640 | #ifdef CONFIG_ARCH_OMAP2 |
582 | { .compatible = "ti,am3-prcm" }, | 641 | static struct omap_prcm_init_data omap2_prm_data __initdata = { |
583 | { .compatible = "ti,am3-scrm" }, | 642 | .index = TI_CLKM_PRM, |
584 | { .compatible = "ti,am4-prcm" }, | 643 | .init = omap2xxx_prm_init, |
585 | { .compatible = "ti,am4-scrm" }, | ||
586 | { .compatible = "ti,dm814-prcm" }, | ||
587 | { .compatible = "ti,dm814-scrm" }, | ||
588 | { .compatible = "ti,dm816-prcm" }, | ||
589 | { .compatible = "ti,dm816-scrm" }, | ||
590 | { .compatible = "ti,omap2-prcm" }, | ||
591 | { .compatible = "ti,omap2-scrm" }, | ||
592 | { .compatible = "ti,omap3-prm" }, | ||
593 | { .compatible = "ti,omap3-cm" }, | ||
594 | { .compatible = "ti,omap3-scrm" }, | ||
595 | { .compatible = "ti,omap4-cm1" }, | ||
596 | { .compatible = "ti,omap4-prm" }, | ||
597 | { .compatible = "ti,omap4-cm2" }, | ||
598 | { .compatible = "ti,omap4-scrm" }, | ||
599 | { .compatible = "ti,omap5-prm" }, | ||
600 | { .compatible = "ti,omap5-cm-core-aon" }, | ||
601 | { .compatible = "ti,omap5-scrm" }, | ||
602 | { .compatible = "ti,omap5-cm-core" }, | ||
603 | { .compatible = "ti,dra7-prm" }, | ||
604 | { .compatible = "ti,dra7-cm-core-aon" }, | ||
605 | { .compatible = "ti,dra7-cm-core" }, | ||
606 | { } | ||
607 | }; | 644 | }; |
645 | #endif | ||
646 | |||
647 | #ifdef CONFIG_ARCH_OMAP3 | ||
648 | static struct omap_prcm_init_data omap3_prm_data __initdata = { | ||
649 | .index = TI_CLKM_PRM, | ||
650 | .init = omap3xxx_prm_init, | ||
608 | 651 | ||
609 | static struct clk_hw_omap memmap_dummy_ck = { | 652 | /* |
610 | .flags = MEMMAP_ADDRESSING, | 653 | * IVA2 offset is a negative value, must offset the prm_base |
654 | * address by this to get it to positive | ||
655 | */ | ||
656 | .offset = -OMAP3430_IVA2_MOD, | ||
611 | }; | 657 | }; |
658 | #endif | ||
612 | 659 | ||
613 | static u32 prm_clk_readl(void __iomem *reg) | 660 | #if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_TI81XX) |
614 | { | 661 | static struct omap_prcm_init_data am3_prm_data __initdata = { |
615 | return omap2_clk_readl(&memmap_dummy_ck, reg); | 662 | .index = TI_CLKM_PRM, |
616 | } | 663 | .init = am33xx_prm_init, |
664 | }; | ||
665 | #endif | ||
666 | |||
667 | #ifdef CONFIG_ARCH_OMAP4 | ||
668 | static struct omap_prcm_init_data omap4_prm_data __initdata = { | ||
669 | .index = TI_CLKM_PRM, | ||
670 | .init = omap44xx_prm_init, | ||
671 | .device_inst_offset = OMAP4430_PRM_DEVICE_INST, | ||
672 | .flags = PRM_HAS_IO_WAKEUP | PRM_HAS_VOLTAGE | PRM_IRQ_DEFAULT, | ||
673 | }; | ||
674 | #endif | ||
675 | |||
676 | #ifdef CONFIG_SOC_OMAP5 | ||
677 | static struct omap_prcm_init_data omap5_prm_data __initdata = { | ||
678 | .index = TI_CLKM_PRM, | ||
679 | .init = omap44xx_prm_init, | ||
680 | .device_inst_offset = OMAP54XX_PRM_DEVICE_INST, | ||
681 | .flags = PRM_HAS_IO_WAKEUP | PRM_HAS_VOLTAGE, | ||
682 | }; | ||
683 | #endif | ||
684 | |||
685 | #ifdef CONFIG_SOC_DRA7XX | ||
686 | static struct omap_prcm_init_data dra7_prm_data __initdata = { | ||
687 | .index = TI_CLKM_PRM, | ||
688 | .init = omap44xx_prm_init, | ||
689 | .device_inst_offset = DRA7XX_PRM_DEVICE_INST, | ||
690 | .flags = PRM_HAS_IO_WAKEUP, | ||
691 | }; | ||
692 | #endif | ||
617 | 693 | ||
618 | static void prm_clk_writel(u32 val, void __iomem *reg) | 694 | #ifdef CONFIG_SOC_AM43XX |
619 | { | 695 | static struct omap_prcm_init_data am4_prm_data __initdata = { |
620 | omap2_clk_writel(val, &memmap_dummy_ck, reg); | 696 | .index = TI_CLKM_PRM, |
621 | } | 697 | .init = omap44xx_prm_init, |
698 | .device_inst_offset = AM43XX_PRM_DEVICE_INST, | ||
699 | }; | ||
700 | #endif | ||
622 | 701 | ||
623 | static struct ti_clk_ll_ops omap_clk_ll_ops = { | 702 | #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5) |
624 | .clk_readl = prm_clk_readl, | 703 | static struct omap_prcm_init_data scrm_data __initdata = { |
625 | .clk_writel = prm_clk_writel, | 704 | .index = TI_CLKM_SCRM, |
705 | }; | ||
706 | #endif | ||
707 | |||
708 | static const struct of_device_id omap_prcm_dt_match_table[] __initconst = { | ||
709 | #ifdef CONFIG_SOC_AM33XX | ||
710 | { .compatible = "ti,am3-prcm", .data = &am3_prm_data }, | ||
711 | #endif | ||
712 | #ifdef CONFIG_SOC_AM43XX | ||
713 | { .compatible = "ti,am4-prcm", .data = &am4_prm_data }, | ||
714 | #endif | ||
715 | #ifdef CONFIG_SOC_TI81XX | ||
716 | { .compatible = "ti,dm814-prcm", .data = &am3_prm_data }, | ||
717 | { .compatible = "ti,dm816-prcm", .data = &am3_prm_data }, | ||
718 | #endif | ||
719 | #ifdef CONFIG_ARCH_OMAP2 | ||
720 | { .compatible = "ti,omap2-prcm", .data = &omap2_prm_data }, | ||
721 | #endif | ||
722 | #ifdef CONFIG_ARCH_OMAP3 | ||
723 | { .compatible = "ti,omap3-prm", .data = &omap3_prm_data }, | ||
724 | #endif | ||
725 | #ifdef CONFIG_ARCH_OMAP4 | ||
726 | { .compatible = "ti,omap4-prm", .data = &omap4_prm_data }, | ||
727 | { .compatible = "ti,omap4-scrm", .data = &scrm_data }, | ||
728 | #endif | ||
729 | #ifdef CONFIG_SOC_OMAP5 | ||
730 | { .compatible = "ti,omap5-prm", .data = &omap5_prm_data }, | ||
731 | { .compatible = "ti,omap5-scrm", .data = &scrm_data }, | ||
732 | #endif | ||
733 | #ifdef CONFIG_SOC_DRA7XX | ||
734 | { .compatible = "ti,dra7-prm", .data = &dra7_prm_data }, | ||
735 | #endif | ||
736 | { } | ||
626 | }; | 737 | }; |
627 | 738 | ||
628 | int __init of_prcm_init(void) | 739 | /** |
740 | * omap2_prm_base_init - initialize iomappings for the PRM driver | ||
741 | * | ||
742 | * Detects and initializes the iomappings for the PRM driver, based | ||
743 | * on the DT data. Returns 0 in success, negative error value | ||
744 | * otherwise. | ||
745 | */ | ||
746 | int __init omap2_prm_base_init(void) | ||
629 | { | 747 | { |
630 | struct device_node *np; | 748 | struct device_node *np; |
749 | const struct of_device_id *match; | ||
750 | struct omap_prcm_init_data *data; | ||
631 | void __iomem *mem; | 751 | void __iomem *mem; |
632 | int memmap_index = 0; | ||
633 | 752 | ||
634 | ti_clk_ll_ops = &omap_clk_ll_ops; | 753 | for_each_matching_node_and_match(np, omap_prcm_dt_match_table, &match) { |
754 | data = (struct omap_prcm_init_data *)match->data; | ||
635 | 755 | ||
636 | for_each_matching_node(np, omap_prcm_dt_match_table) { | ||
637 | mem = of_iomap(np, 0); | 756 | mem = of_iomap(np, 0); |
638 | clk_memmaps[memmap_index] = mem; | 757 | if (!mem) |
639 | ti_dt_clk_init_provider(np, memmap_index); | 758 | return -ENOMEM; |
640 | memmap_index++; | 759 | |
760 | if (data->index == TI_CLKM_PRM) | ||
761 | prm_base = mem + data->offset; | ||
762 | |||
763 | data->mem = mem; | ||
764 | |||
765 | data->np = np; | ||
766 | |||
767 | if (data->init) | ||
768 | data->init(data); | ||
641 | } | 769 | } |
642 | 770 | ||
643 | return 0; | 771 | return 0; |
644 | } | 772 | } |
645 | 773 | ||
646 | void __init omap3_prcm_legacy_iomaps_init(void) | 774 | int __init omap2_prcm_base_init(void) |
647 | { | 775 | { |
648 | ti_clk_ll_ops = &omap_clk_ll_ops; | 776 | int ret; |
649 | 777 | ||
650 | clk_memmaps[TI_CLKM_CM] = cm_base + OMAP3430_IVA2_MOD; | 778 | ret = omap2_prm_base_init(); |
651 | clk_memmaps[TI_CLKM_PRM] = prm_base + OMAP3430_IVA2_MOD; | 779 | if (ret) |
652 | clk_memmaps[TI_CLKM_SCRM] = omap_ctrl_base_get(); | 780 | return ret; |
781 | |||
782 | return omap2_cm_base_init(); | ||
783 | } | ||
784 | |||
785 | /** | ||
786 | * omap_prcm_init - low level init for the PRCM drivers | ||
787 | * | ||
788 | * Initializes the low level clock infrastructure for PRCM drivers. | ||
789 | * Returns 0 in success, negative error value in failure. | ||
790 | */ | ||
791 | int __init omap_prcm_init(void) | ||
792 | { | ||
793 | struct device_node *np; | ||
794 | const struct of_device_id *match; | ||
795 | const struct omap_prcm_init_data *data; | ||
796 | int ret; | ||
797 | |||
798 | for_each_matching_node_and_match(np, omap_prcm_dt_match_table, &match) { | ||
799 | data = match->data; | ||
800 | |||
801 | ret = omap2_clk_provider_init(np, data->index, NULL, data->mem); | ||
802 | if (ret) | ||
803 | return ret; | ||
804 | } | ||
805 | |||
806 | omap_cm_init(); | ||
807 | |||
808 | return 0; | ||
653 | } | 809 | } |
654 | 810 | ||
655 | static int __init prm_late_init(void) | 811 | static int __init prm_late_init(void) |
diff --git a/arch/arm/mach-omap2/prminst44xx.c b/arch/arm/mach-omap2/prminst44xx.c index 8adf7b1a1dce..c4859c4d3646 100644 --- a/arch/arm/mach-omap2/prminst44xx.c +++ b/arch/arm/mach-omap2/prminst44xx.c | |||
@@ -47,22 +47,14 @@ void omap_prm_base_init(void) | |||
47 | 47 | ||
48 | s32 omap4_prmst_get_prm_dev_inst(void) | 48 | s32 omap4_prmst_get_prm_dev_inst(void) |
49 | { | 49 | { |
50 | if (prm_dev_inst != PRM_INSTANCE_UNKNOWN) | ||
51 | return prm_dev_inst; | ||
52 | |||
53 | /* This cannot be done way early at boot.. as things are not setup */ | ||
54 | if (cpu_is_omap44xx()) | ||
55 | prm_dev_inst = OMAP4430_PRM_DEVICE_INST; | ||
56 | else if (soc_is_omap54xx()) | ||
57 | prm_dev_inst = OMAP54XX_PRM_DEVICE_INST; | ||
58 | else if (soc_is_dra7xx()) | ||
59 | prm_dev_inst = DRA7XX_PRM_DEVICE_INST; | ||
60 | else if (soc_is_am43xx()) | ||
61 | prm_dev_inst = AM43XX_PRM_DEVICE_INST; | ||
62 | |||
63 | return prm_dev_inst; | 50 | return prm_dev_inst; |
64 | } | 51 | } |
65 | 52 | ||
53 | void omap4_prminst_set_prm_dev_inst(s32 dev_inst) | ||
54 | { | ||
55 | prm_dev_inst = dev_inst; | ||
56 | } | ||
57 | |||
66 | /* Read a register in a PRM instance */ | 58 | /* Read a register in a PRM instance */ |
67 | u32 omap4_prminst_read_inst_reg(u8 part, s16 inst, u16 idx) | 59 | u32 omap4_prminst_read_inst_reg(u8 part, s16 inst, u16 idx) |
68 | { | 60 | { |
diff --git a/arch/arm/mach-omap2/prminst44xx.h b/arch/arm/mach-omap2/prminst44xx.h index fb1c9d7a2f9d..0c03d0731d7f 100644 --- a/arch/arm/mach-omap2/prminst44xx.h +++ b/arch/arm/mach-omap2/prminst44xx.h | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #define PRM_INSTANCE_UNKNOWN -1 | 15 | #define PRM_INSTANCE_UNKNOWN -1 |
16 | extern s32 omap4_prmst_get_prm_dev_inst(void); | 16 | extern s32 omap4_prmst_get_prm_dev_inst(void); |
17 | void omap4_prminst_set_prm_dev_inst(s32 dev_inst); | ||
17 | 18 | ||
18 | /* | 19 | /* |
19 | * In an ideal world, we would not export these low-level functions, | 20 | * In an ideal world, we would not export these low-level functions, |
diff --git a/arch/arm/mach-omap2/sleep44xx.S b/arch/arm/mach-omap2/sleep44xx.S index b84a0122d823..ad1bb9431e94 100644 --- a/arch/arm/mach-omap2/sleep44xx.S +++ b/arch/arm/mach-omap2/sleep44xx.S | |||
@@ -333,11 +333,9 @@ ENDPROC(omap4_cpu_resume) | |||
333 | 333 | ||
334 | #endif /* defined(CONFIG_SMP) && defined(CONFIG_PM) */ | 334 | #endif /* defined(CONFIG_SMP) && defined(CONFIG_PM) */ |
335 | 335 | ||
336 | #ifndef CONFIG_OMAP4_ERRATA_I688 | ||
337 | ENTRY(omap_bus_sync) | 336 | ENTRY(omap_bus_sync) |
338 | ret lr | 337 | ret lr |
339 | ENDPROC(omap_bus_sync) | 338 | ENDPROC(omap_bus_sync) |
340 | #endif | ||
341 | 339 | ||
342 | ENTRY(omap_do_wfi) | 340 | ENTRY(omap_do_wfi) |
343 | stmfd sp!, {lr} | 341 | stmfd sp!, {lr} |
diff --git a/arch/arm/mach-omap2/vp.h b/arch/arm/mach-omap2/vp.h index 0fdf7080e4a6..7e0829682bd0 100644 --- a/arch/arm/mach-omap2/vp.h +++ b/arch/arm/mach-omap2/vp.h | |||
@@ -21,15 +21,6 @@ | |||
21 | 21 | ||
22 | struct voltagedomain; | 22 | struct voltagedomain; |
23 | 23 | ||
24 | /* | ||
25 | * Voltage Processor (VP) identifiers | ||
26 | */ | ||
27 | #define OMAP3_VP_VDD_MPU_ID 0 | ||
28 | #define OMAP3_VP_VDD_CORE_ID 1 | ||
29 | #define OMAP4_VP_VDD_CORE_ID 0 | ||
30 | #define OMAP4_VP_VDD_IVA_ID 1 | ||
31 | #define OMAP4_VP_VDD_MPU_ID 2 | ||
32 | |||
33 | /* XXX document */ | 24 | /* XXX document */ |
34 | #define VP_IDLE_TIMEOUT 200 | 25 | #define VP_IDLE_TIMEOUT 200 |
35 | #define VP_TRANXDONE_TIMEOUT 300 | 26 | #define VP_TRANXDONE_TIMEOUT 300 |
diff --git a/arch/arm/mach-omap2/vp3xxx_data.c b/arch/arm/mach-omap2/vp3xxx_data.c index 1914e026245e..b0590fe6ab01 100644 --- a/arch/arm/mach-omap2/vp3xxx_data.c +++ b/arch/arm/mach-omap2/vp3xxx_data.c | |||
@@ -28,8 +28,8 @@ | |||
28 | #include "prm2xxx_3xxx.h" | 28 | #include "prm2xxx_3xxx.h" |
29 | 29 | ||
30 | static const struct omap_vp_ops omap3_vp_ops = { | 30 | static const struct omap_vp_ops omap3_vp_ops = { |
31 | .check_txdone = omap3_prm_vp_check_txdone, | 31 | .check_txdone = omap_prm_vp_check_txdone, |
32 | .clear_txdone = omap3_prm_vp_clear_txdone, | 32 | .clear_txdone = omap_prm_vp_clear_txdone, |
33 | }; | 33 | }; |
34 | 34 | ||
35 | /* | 35 | /* |
diff --git a/arch/arm/mach-omap2/vp44xx_data.c b/arch/arm/mach-omap2/vp44xx_data.c index e62f6b018beb..2448bb9a8716 100644 --- a/arch/arm/mach-omap2/vp44xx_data.c +++ b/arch/arm/mach-omap2/vp44xx_data.c | |||
@@ -28,8 +28,8 @@ | |||
28 | #include "vp.h" | 28 | #include "vp.h" |
29 | 29 | ||
30 | static const struct omap_vp_ops omap4_vp_ops = { | 30 | static const struct omap_vp_ops omap4_vp_ops = { |
31 | .check_txdone = omap4_prm_vp_check_txdone, | 31 | .check_txdone = omap_prm_vp_check_txdone, |
32 | .clear_txdone = omap4_prm_vp_clear_txdone, | 32 | .clear_txdone = omap_prm_vp_clear_txdone, |
33 | }; | 33 | }; |
34 | 34 | ||
35 | /* | 35 | /* |
diff --git a/arch/arm64/boot/dts/arm/foundation-v8.dts b/arch/arm64/boot/dts/arm/foundation-v8.dts index 27f32962e55c..4eac8dcea423 100644 --- a/arch/arm64/boot/dts/arm/foundation-v8.dts +++ b/arch/arm64/boot/dts/arm/foundation-v8.dts | |||
@@ -34,6 +34,7 @@ | |||
34 | reg = <0x0 0x0>; | 34 | reg = <0x0 0x0>; |
35 | enable-method = "spin-table"; | 35 | enable-method = "spin-table"; |
36 | cpu-release-addr = <0x0 0x8000fff8>; | 36 | cpu-release-addr = <0x0 0x8000fff8>; |
37 | next-level-cache = <&L2_0>; | ||
37 | }; | 38 | }; |
38 | cpu@1 { | 39 | cpu@1 { |
39 | device_type = "cpu"; | 40 | device_type = "cpu"; |
@@ -41,6 +42,7 @@ | |||
41 | reg = <0x0 0x1>; | 42 | reg = <0x0 0x1>; |
42 | enable-method = "spin-table"; | 43 | enable-method = "spin-table"; |
43 | cpu-release-addr = <0x0 0x8000fff8>; | 44 | cpu-release-addr = <0x0 0x8000fff8>; |
45 | next-level-cache = <&L2_0>; | ||
44 | }; | 46 | }; |
45 | cpu@2 { | 47 | cpu@2 { |
46 | device_type = "cpu"; | 48 | device_type = "cpu"; |
@@ -48,6 +50,7 @@ | |||
48 | reg = <0x0 0x2>; | 50 | reg = <0x0 0x2>; |
49 | enable-method = "spin-table"; | 51 | enable-method = "spin-table"; |
50 | cpu-release-addr = <0x0 0x8000fff8>; | 52 | cpu-release-addr = <0x0 0x8000fff8>; |
53 | next-level-cache = <&L2_0>; | ||
51 | }; | 54 | }; |
52 | cpu@3 { | 55 | cpu@3 { |
53 | device_type = "cpu"; | 56 | device_type = "cpu"; |
@@ -55,6 +58,11 @@ | |||
55 | reg = <0x0 0x3>; | 58 | reg = <0x0 0x3>; |
56 | enable-method = "spin-table"; | 59 | enable-method = "spin-table"; |
57 | cpu-release-addr = <0x0 0x8000fff8>; | 60 | cpu-release-addr = <0x0 0x8000fff8>; |
61 | next-level-cache = <&L2_0>; | ||
62 | }; | ||
63 | |||
64 | L2_0: l2-cache0 { | ||
65 | compatible = "cache"; | ||
58 | }; | 66 | }; |
59 | }; | 67 | }; |
60 | 68 | ||
diff --git a/arch/arm64/boot/dts/arm/juno.dts b/arch/arm64/boot/dts/arm/juno.dts index d429129ecb3d..133ee59de2d7 100644 --- a/arch/arm64/boot/dts/arm/juno.dts +++ b/arch/arm64/boot/dts/arm/juno.dts | |||
@@ -39,6 +39,7 @@ | |||
39 | reg = <0x0 0x0>; | 39 | reg = <0x0 0x0>; |
40 | device_type = "cpu"; | 40 | device_type = "cpu"; |
41 | enable-method = "psci"; | 41 | enable-method = "psci"; |
42 | next-level-cache = <&A57_L2>; | ||
42 | }; | 43 | }; |
43 | 44 | ||
44 | A57_1: cpu@1 { | 45 | A57_1: cpu@1 { |
@@ -46,6 +47,7 @@ | |||
46 | reg = <0x0 0x1>; | 47 | reg = <0x0 0x1>; |
47 | device_type = "cpu"; | 48 | device_type = "cpu"; |
48 | enable-method = "psci"; | 49 | enable-method = "psci"; |
50 | next-level-cache = <&A57_L2>; | ||
49 | }; | 51 | }; |
50 | 52 | ||
51 | A53_0: cpu@100 { | 53 | A53_0: cpu@100 { |
@@ -53,6 +55,7 @@ | |||
53 | reg = <0x0 0x100>; | 55 | reg = <0x0 0x100>; |
54 | device_type = "cpu"; | 56 | device_type = "cpu"; |
55 | enable-method = "psci"; | 57 | enable-method = "psci"; |
58 | next-level-cache = <&A53_L2>; | ||
56 | }; | 59 | }; |
57 | 60 | ||
58 | A53_1: cpu@101 { | 61 | A53_1: cpu@101 { |
@@ -60,6 +63,7 @@ | |||
60 | reg = <0x0 0x101>; | 63 | reg = <0x0 0x101>; |
61 | device_type = "cpu"; | 64 | device_type = "cpu"; |
62 | enable-method = "psci"; | 65 | enable-method = "psci"; |
66 | next-level-cache = <&A53_L2>; | ||
63 | }; | 67 | }; |
64 | 68 | ||
65 | A53_2: cpu@102 { | 69 | A53_2: cpu@102 { |
@@ -67,6 +71,7 @@ | |||
67 | reg = <0x0 0x102>; | 71 | reg = <0x0 0x102>; |
68 | device_type = "cpu"; | 72 | device_type = "cpu"; |
69 | enable-method = "psci"; | 73 | enable-method = "psci"; |
74 | next-level-cache = <&A53_L2>; | ||
70 | }; | 75 | }; |
71 | 76 | ||
72 | A53_3: cpu@103 { | 77 | A53_3: cpu@103 { |
@@ -74,6 +79,15 @@ | |||
74 | reg = <0x0 0x103>; | 79 | reg = <0x0 0x103>; |
75 | device_type = "cpu"; | 80 | device_type = "cpu"; |
76 | enable-method = "psci"; | 81 | enable-method = "psci"; |
82 | next-level-cache = <&A53_L2>; | ||
83 | }; | ||
84 | |||
85 | A57_L2: l2-cache0 { | ||
86 | compatible = "cache"; | ||
87 | }; | ||
88 | |||
89 | A53_L2: l2-cache1 { | ||
90 | compatible = "cache"; | ||
77 | }; | 91 | }; |
78 | }; | 92 | }; |
79 | 93 | ||
diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts index efc59b3baf63..20addabbd127 100644 --- a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts +++ b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts | |||
@@ -37,6 +37,7 @@ | |||
37 | reg = <0x0 0x0>; | 37 | reg = <0x0 0x0>; |
38 | enable-method = "spin-table"; | 38 | enable-method = "spin-table"; |
39 | cpu-release-addr = <0x0 0x8000fff8>; | 39 | cpu-release-addr = <0x0 0x8000fff8>; |
40 | next-level-cache = <&L2_0>; | ||
40 | }; | 41 | }; |
41 | cpu@1 { | 42 | cpu@1 { |
42 | device_type = "cpu"; | 43 | device_type = "cpu"; |
@@ -44,6 +45,7 @@ | |||
44 | reg = <0x0 0x1>; | 45 | reg = <0x0 0x1>; |
45 | enable-method = "spin-table"; | 46 | enable-method = "spin-table"; |
46 | cpu-release-addr = <0x0 0x8000fff8>; | 47 | cpu-release-addr = <0x0 0x8000fff8>; |
48 | next-level-cache = <&L2_0>; | ||
47 | }; | 49 | }; |
48 | cpu@2 { | 50 | cpu@2 { |
49 | device_type = "cpu"; | 51 | device_type = "cpu"; |
@@ -51,6 +53,7 @@ | |||
51 | reg = <0x0 0x2>; | 53 | reg = <0x0 0x2>; |
52 | enable-method = "spin-table"; | 54 | enable-method = "spin-table"; |
53 | cpu-release-addr = <0x0 0x8000fff8>; | 55 | cpu-release-addr = <0x0 0x8000fff8>; |
56 | next-level-cache = <&L2_0>; | ||
54 | }; | 57 | }; |
55 | cpu@3 { | 58 | cpu@3 { |
56 | device_type = "cpu"; | 59 | device_type = "cpu"; |
@@ -58,6 +61,11 @@ | |||
58 | reg = <0x0 0x3>; | 61 | reg = <0x0 0x3>; |
59 | enable-method = "spin-table"; | 62 | enable-method = "spin-table"; |
60 | cpu-release-addr = <0x0 0x8000fff8>; | 63 | cpu-release-addr = <0x0 0x8000fff8>; |
64 | next-level-cache = <&L2_0>; | ||
65 | }; | ||
66 | |||
67 | L2_0: l2-cache0 { | ||
68 | compatible = "cache"; | ||
61 | }; | 69 | }; |
62 | }; | 70 | }; |
63 | 71 | ||
diff --git a/arch/arm64/crypto/Makefile b/arch/arm64/crypto/Makefile index 5720608c50b1..abb79b3cfcfe 100644 --- a/arch/arm64/crypto/Makefile +++ b/arch/arm64/crypto/Makefile | |||
@@ -29,7 +29,7 @@ aes-ce-blk-y := aes-glue-ce.o aes-ce.o | |||
29 | obj-$(CONFIG_CRYPTO_AES_ARM64_NEON_BLK) += aes-neon-blk.o | 29 | obj-$(CONFIG_CRYPTO_AES_ARM64_NEON_BLK) += aes-neon-blk.o |
30 | aes-neon-blk-y := aes-glue-neon.o aes-neon.o | 30 | aes-neon-blk-y := aes-glue-neon.o aes-neon.o |
31 | 31 | ||
32 | AFLAGS_aes-ce.o := -DINTERLEAVE=2 -DINTERLEAVE_INLINE | 32 | AFLAGS_aes-ce.o := -DINTERLEAVE=4 |
33 | AFLAGS_aes-neon.o := -DINTERLEAVE=4 | 33 | AFLAGS_aes-neon.o := -DINTERLEAVE=4 |
34 | 34 | ||
35 | CFLAGS_aes-glue-ce.o := -DUSE_V8_CRYPTO_EXTENSIONS | 35 | CFLAGS_aes-glue-ce.o := -DUSE_V8_CRYPTO_EXTENSIONS |
diff --git a/arch/arm64/include/asm/assembler.h b/arch/arm64/include/asm/assembler.h index 5901480bfdca..750bac4e637e 100644 --- a/arch/arm64/include/asm/assembler.h +++ b/arch/arm64/include/asm/assembler.h | |||
@@ -20,6 +20,9 @@ | |||
20 | #error "Only include this from assembly code" | 20 | #error "Only include this from assembly code" |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | #ifndef __ASM_ASSEMBLER_H | ||
24 | #define __ASM_ASSEMBLER_H | ||
25 | |||
23 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
24 | #include <asm/thread_info.h> | 27 | #include <asm/thread_info.h> |
25 | 28 | ||
@@ -155,3 +158,5 @@ lr .req x30 // link register | |||
155 | #endif | 158 | #endif |
156 | orr \rd, \lbits, \hbits, lsl #32 | 159 | orr \rd, \lbits, \hbits, lsl #32 |
157 | .endm | 160 | .endm |
161 | |||
162 | #endif /* __ASM_ASSEMBLER_H */ | ||
diff --git a/arch/arm64/include/asm/cpuidle.h b/arch/arm64/include/asm/cpuidle.h index 0710654631e7..c60643f14cda 100644 --- a/arch/arm64/include/asm/cpuidle.h +++ b/arch/arm64/include/asm/cpuidle.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_CPUIDLE_H | 1 | #ifndef __ASM_CPUIDLE_H |
2 | #define __ASM_CPUIDLE_H | 2 | #define __ASM_CPUIDLE_H |
3 | 3 | ||
4 | #include <asm/proc-fns.h> | ||
5 | |||
4 | #ifdef CONFIG_CPU_IDLE | 6 | #ifdef CONFIG_CPU_IDLE |
5 | extern int cpu_init_idle(unsigned int cpu); | 7 | extern int cpu_init_idle(unsigned int cpu); |
6 | extern int cpu_suspend(unsigned long arg); | 8 | extern int cpu_suspend(unsigned long arg); |
diff --git a/arch/arm64/include/asm/insn.h b/arch/arm64/include/asm/insn.h index e2ff32a93b5c..d2f49423c5dc 100644 --- a/arch/arm64/include/asm/insn.h +++ b/arch/arm64/include/asm/insn.h | |||
@@ -264,8 +264,10 @@ __AARCH64_INSN_FUNCS(ands, 0x7F200000, 0x6A000000) | |||
264 | __AARCH64_INSN_FUNCS(bics, 0x7F200000, 0x6A200000) | 264 | __AARCH64_INSN_FUNCS(bics, 0x7F200000, 0x6A200000) |
265 | __AARCH64_INSN_FUNCS(b, 0xFC000000, 0x14000000) | 265 | __AARCH64_INSN_FUNCS(b, 0xFC000000, 0x14000000) |
266 | __AARCH64_INSN_FUNCS(bl, 0xFC000000, 0x94000000) | 266 | __AARCH64_INSN_FUNCS(bl, 0xFC000000, 0x94000000) |
267 | __AARCH64_INSN_FUNCS(cbz, 0xFE000000, 0x34000000) | 267 | __AARCH64_INSN_FUNCS(cbz, 0x7F000000, 0x34000000) |
268 | __AARCH64_INSN_FUNCS(cbnz, 0xFE000000, 0x35000000) | 268 | __AARCH64_INSN_FUNCS(cbnz, 0x7F000000, 0x35000000) |
269 | __AARCH64_INSN_FUNCS(tbz, 0x7F000000, 0x36000000) | ||
270 | __AARCH64_INSN_FUNCS(tbnz, 0x7F000000, 0x37000000) | ||
269 | __AARCH64_INSN_FUNCS(bcond, 0xFF000010, 0x54000000) | 271 | __AARCH64_INSN_FUNCS(bcond, 0xFF000010, 0x54000000) |
270 | __AARCH64_INSN_FUNCS(svc, 0xFFE0001F, 0xD4000001) | 272 | __AARCH64_INSN_FUNCS(svc, 0xFFE0001F, 0xD4000001) |
271 | __AARCH64_INSN_FUNCS(hvc, 0xFFE0001F, 0xD4000002) | 273 | __AARCH64_INSN_FUNCS(hvc, 0xFFE0001F, 0xD4000002) |
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 16449c535e50..800ec0e87ed9 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h | |||
@@ -460,7 +460,7 @@ static inline pud_t *pud_offset(pgd_t *pgd, unsigned long addr) | |||
460 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 460 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
461 | { | 461 | { |
462 | const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY | | 462 | const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY | |
463 | PTE_PROT_NONE | PTE_VALID | PTE_WRITE; | 463 | PTE_PROT_NONE | PTE_WRITE | PTE_TYPE_MASK; |
464 | pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); | 464 | pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); |
465 | return pte; | 465 | return pte; |
466 | } | 466 | } |
diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h index f9be30ea1cbd..20e9591a60cf 100644 --- a/arch/arm64/include/asm/processor.h +++ b/arch/arm64/include/asm/processor.h | |||
@@ -45,7 +45,8 @@ | |||
45 | #define STACK_TOP STACK_TOP_MAX | 45 | #define STACK_TOP STACK_TOP_MAX |
46 | #endif /* CONFIG_COMPAT */ | 46 | #endif /* CONFIG_COMPAT */ |
47 | 47 | ||
48 | #define ARCH_LOW_ADDRESS_LIMIT PHYS_MASK | 48 | extern phys_addr_t arm64_dma_phys_limit; |
49 | #define ARCH_LOW_ADDRESS_LIMIT (arm64_dma_phys_limit - 1) | ||
49 | #endif /* __KERNEL__ */ | 50 | #endif /* __KERNEL__ */ |
50 | 51 | ||
51 | struct debug_info { | 52 | struct debug_info { |
diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h index 73f0ce570fb3..4abe9b945f77 100644 --- a/arch/arm64/include/asm/tlbflush.h +++ b/arch/arm64/include/asm/tlbflush.h | |||
@@ -24,11 +24,6 @@ | |||
24 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
25 | #include <asm/cputype.h> | 25 | #include <asm/cputype.h> |
26 | 26 | ||
27 | extern void __cpu_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *); | ||
28 | extern void __cpu_flush_kern_tlb_range(unsigned long, unsigned long); | ||
29 | |||
30 | extern struct cpu_tlb_fns cpu_tlb; | ||
31 | |||
32 | /* | 27 | /* |
33 | * TLB Management | 28 | * TLB Management |
34 | * ============== | 29 | * ============== |
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index bef04afd6031..5ee07eee80c2 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile | |||
@@ -15,8 +15,9 @@ CFLAGS_REMOVE_return_address.o = -pg | |||
15 | arm64-obj-y := cputable.o debug-monitors.o entry.o irq.o fpsimd.o \ | 15 | arm64-obj-y := cputable.o debug-monitors.o entry.o irq.o fpsimd.o \ |
16 | entry-fpsimd.o process.o ptrace.o setup.o signal.o \ | 16 | entry-fpsimd.o process.o ptrace.o setup.o signal.o \ |
17 | sys.o stacktrace.o time.o traps.o io.o vdso.o \ | 17 | sys.o stacktrace.o time.o traps.o io.o vdso.o \ |
18 | hyp-stub.o psci.o cpu_ops.o insn.o return_address.o \ | 18 | hyp-stub.o psci.o psci-call.o cpu_ops.o insn.o \ |
19 | cpuinfo.o cpu_errata.o alternative.o cacheinfo.o | 19 | return_address.o cpuinfo.o cpu_errata.o \ |
20 | alternative.o cacheinfo.o | ||
20 | 21 | ||
21 | arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \ | 22 | arm64-obj-$(CONFIG_COMPAT) += sys32.o kuser32.o signal32.o \ |
22 | sys_compat.o entry32.o \ | 23 | sys_compat.o entry32.o \ |
diff --git a/arch/arm64/kernel/ftrace.c b/arch/arm64/kernel/ftrace.c index cf8556ae09d0..c851be795080 100644 --- a/arch/arm64/kernel/ftrace.c +++ b/arch/arm64/kernel/ftrace.c | |||
@@ -156,7 +156,7 @@ static int ftrace_modify_graph_caller(bool enable) | |||
156 | 156 | ||
157 | branch = aarch64_insn_gen_branch_imm(pc, | 157 | branch = aarch64_insn_gen_branch_imm(pc, |
158 | (unsigned long)ftrace_graph_caller, | 158 | (unsigned long)ftrace_graph_caller, |
159 | AARCH64_INSN_BRANCH_LINK); | 159 | AARCH64_INSN_BRANCH_NOLINK); |
160 | nop = aarch64_insn_gen_nop(); | 160 | nop = aarch64_insn_gen_nop(); |
161 | 161 | ||
162 | if (enable) | 162 | if (enable) |
diff --git a/arch/arm64/kernel/insn.c b/arch/arm64/kernel/insn.c index 27d4864577e5..c8eca88f12e6 100644 --- a/arch/arm64/kernel/insn.c +++ b/arch/arm64/kernel/insn.c | |||
@@ -87,8 +87,10 @@ static void __kprobes *patch_map(void *addr, int fixmap) | |||
87 | 87 | ||
88 | if (module && IS_ENABLED(CONFIG_DEBUG_SET_MODULE_RONX)) | 88 | if (module && IS_ENABLED(CONFIG_DEBUG_SET_MODULE_RONX)) |
89 | page = vmalloc_to_page(addr); | 89 | page = vmalloc_to_page(addr); |
90 | else | 90 | else if (!module && IS_ENABLED(CONFIG_DEBUG_RODATA)) |
91 | page = virt_to_page(addr); | 91 | page = virt_to_page(addr); |
92 | else | ||
93 | return addr; | ||
92 | 94 | ||
93 | BUG_ON(!page); | 95 | BUG_ON(!page); |
94 | set_fixmap(fixmap, page_to_phys(page)); | 96 | set_fixmap(fixmap, page_to_phys(page)); |
diff --git a/arch/arm64/kernel/psci-call.S b/arch/arm64/kernel/psci-call.S new file mode 100644 index 000000000000..cf83e61cd3b5 --- /dev/null +++ b/arch/arm64/kernel/psci-call.S | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * This program is free software; you can redistribute it and/or modify | ||
3 | * it under the terms of the GNU General Public License version 2 as | ||
4 | * published by the Free Software Foundation. | ||
5 | * | ||
6 | * This program is distributed in the hope that it will be useful, | ||
7 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
8 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
9 | * GNU General Public License for more details. | ||
10 | * | ||
11 | * Copyright (C) 2015 ARM Limited | ||
12 | * | ||
13 | * Author: Will Deacon <will.deacon@arm.com> | ||
14 | */ | ||
15 | |||
16 | #include <linux/linkage.h> | ||
17 | |||
18 | /* int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1, u64 arg2) */ | ||
19 | ENTRY(__invoke_psci_fn_hvc) | ||
20 | hvc #0 | ||
21 | ret | ||
22 | ENDPROC(__invoke_psci_fn_hvc) | ||
23 | |||
24 | /* int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1, u64 arg2) */ | ||
25 | ENTRY(__invoke_psci_fn_smc) | ||
26 | smc #0 | ||
27 | ret | ||
28 | ENDPROC(__invoke_psci_fn_smc) | ||
diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c index 3425f311c49e..9b8a70ae64a1 100644 --- a/arch/arm64/kernel/psci.c +++ b/arch/arm64/kernel/psci.c | |||
@@ -57,6 +57,9 @@ static struct psci_operations psci_ops; | |||
57 | static int (*invoke_psci_fn)(u64, u64, u64, u64); | 57 | static int (*invoke_psci_fn)(u64, u64, u64, u64); |
58 | typedef int (*psci_initcall_t)(const struct device_node *); | 58 | typedef int (*psci_initcall_t)(const struct device_node *); |
59 | 59 | ||
60 | asmlinkage int __invoke_psci_fn_hvc(u64, u64, u64, u64); | ||
61 | asmlinkage int __invoke_psci_fn_smc(u64, u64, u64, u64); | ||
62 | |||
60 | enum psci_function { | 63 | enum psci_function { |
61 | PSCI_FN_CPU_SUSPEND, | 64 | PSCI_FN_CPU_SUSPEND, |
62 | PSCI_FN_CPU_ON, | 65 | PSCI_FN_CPU_ON, |
@@ -109,40 +112,6 @@ static void psci_power_state_unpack(u32 power_state, | |||
109 | PSCI_0_2_POWER_STATE_AFFL_SHIFT; | 112 | PSCI_0_2_POWER_STATE_AFFL_SHIFT; |
110 | } | 113 | } |
111 | 114 | ||
112 | /* | ||
113 | * The following two functions are invoked via the invoke_psci_fn pointer | ||
114 | * and will not be inlined, allowing us to piggyback on the AAPCS. | ||
115 | */ | ||
116 | static noinline int __invoke_psci_fn_hvc(u64 function_id, u64 arg0, u64 arg1, | ||
117 | u64 arg2) | ||
118 | { | ||
119 | asm volatile( | ||
120 | __asmeq("%0", "x0") | ||
121 | __asmeq("%1", "x1") | ||
122 | __asmeq("%2", "x2") | ||
123 | __asmeq("%3", "x3") | ||
124 | "hvc #0\n" | ||
125 | : "+r" (function_id) | ||
126 | : "r" (arg0), "r" (arg1), "r" (arg2)); | ||
127 | |||
128 | return function_id; | ||
129 | } | ||
130 | |||
131 | static noinline int __invoke_psci_fn_smc(u64 function_id, u64 arg0, u64 arg1, | ||
132 | u64 arg2) | ||
133 | { | ||
134 | asm volatile( | ||
135 | __asmeq("%0", "x0") | ||
136 | __asmeq("%1", "x1") | ||
137 | __asmeq("%2", "x2") | ||
138 | __asmeq("%3", "x3") | ||
139 | "smc #0\n" | ||
140 | : "+r" (function_id) | ||
141 | : "r" (arg0), "r" (arg1), "r" (arg2)); | ||
142 | |||
143 | return function_id; | ||
144 | } | ||
145 | |||
146 | static int psci_get_version(void) | 115 | static int psci_get_version(void) |
147 | { | 116 | { |
148 | int err; | 117 | int err; |
diff --git a/arch/arm64/kernel/signal32.c b/arch/arm64/kernel/signal32.c index c20a300e2213..d26fcd4cd6e6 100644 --- a/arch/arm64/kernel/signal32.c +++ b/arch/arm64/kernel/signal32.c | |||
@@ -154,8 +154,7 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) | |||
154 | case __SI_TIMER: | 154 | case __SI_TIMER: |
155 | err |= __put_user(from->si_tid, &to->si_tid); | 155 | err |= __put_user(from->si_tid, &to->si_tid); |
156 | err |= __put_user(from->si_overrun, &to->si_overrun); | 156 | err |= __put_user(from->si_overrun, &to->si_overrun); |
157 | err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr, | 157 | err |= __put_user(from->si_int, &to->si_int); |
158 | &to->si_ptr); | ||
159 | break; | 158 | break; |
160 | case __SI_POLL: | 159 | case __SI_POLL: |
161 | err |= __put_user(from->si_band, &to->si_band); | 160 | err |= __put_user(from->si_band, &to->si_band); |
@@ -184,7 +183,7 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) | |||
184 | case __SI_MESGQ: /* But this is */ | 183 | case __SI_MESGQ: /* But this is */ |
185 | err |= __put_user(from->si_pid, &to->si_pid); | 184 | err |= __put_user(from->si_pid, &to->si_pid); |
186 | err |= __put_user(from->si_uid, &to->si_uid); | 185 | err |= __put_user(from->si_uid, &to->si_uid); |
187 | err |= __put_user((compat_uptr_t)(unsigned long)from->si_ptr, &to->si_ptr); | 186 | err |= __put_user(from->si_int, &to->si_int); |
188 | break; | 187 | break; |
189 | case __SI_SYS: | 188 | case __SI_SYS: |
190 | err |= __put_user((compat_uptr_t)(unsigned long) | 189 | err |= __put_user((compat_uptr_t)(unsigned long) |
diff --git a/arch/arm64/kernel/vdso/gettimeofday.S b/arch/arm64/kernel/vdso/gettimeofday.S index fe652ffd34c2..efa79e8d4196 100644 --- a/arch/arm64/kernel/vdso/gettimeofday.S +++ b/arch/arm64/kernel/vdso/gettimeofday.S | |||
@@ -174,8 +174,6 @@ ENDPROC(__kernel_clock_gettime) | |||
174 | /* int __kernel_clock_getres(clockid_t clock_id, struct timespec *res); */ | 174 | /* int __kernel_clock_getres(clockid_t clock_id, struct timespec *res); */ |
175 | ENTRY(__kernel_clock_getres) | 175 | ENTRY(__kernel_clock_getres) |
176 | .cfi_startproc | 176 | .cfi_startproc |
177 | cbz w1, 3f | ||
178 | |||
179 | cmp w0, #CLOCK_REALTIME | 177 | cmp w0, #CLOCK_REALTIME |
180 | ccmp w0, #CLOCK_MONOTONIC, #0x4, ne | 178 | ccmp w0, #CLOCK_MONOTONIC, #0x4, ne |
181 | b.ne 1f | 179 | b.ne 1f |
@@ -188,6 +186,7 @@ ENTRY(__kernel_clock_getres) | |||
188 | b.ne 4f | 186 | b.ne 4f |
189 | ldr x2, 6f | 187 | ldr x2, 6f |
190 | 2: | 188 | 2: |
189 | cbz w1, 3f | ||
191 | stp xzr, x2, [x1] | 190 | stp xzr, x2, [x1] |
192 | 191 | ||
193 | 3: /* res == NULL. */ | 192 | 3: /* res == NULL. */ |
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index 0a24b9b8c698..58e0c2bdde04 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c | |||
@@ -348,8 +348,6 @@ static struct dma_map_ops swiotlb_dma_ops = { | |||
348 | .mapping_error = swiotlb_dma_mapping_error, | 348 | .mapping_error = swiotlb_dma_mapping_error, |
349 | }; | 349 | }; |
350 | 350 | ||
351 | extern int swiotlb_late_init_with_default_size(size_t default_size); | ||
352 | |||
353 | static int __init atomic_pool_init(void) | 351 | static int __init atomic_pool_init(void) |
354 | { | 352 | { |
355 | pgprot_t prot = __pgprot(PROT_NORMAL_NC); | 353 | pgprot_t prot = __pgprot(PROT_NORMAL_NC); |
@@ -411,21 +409,13 @@ out: | |||
411 | return -ENOMEM; | 409 | return -ENOMEM; |
412 | } | 410 | } |
413 | 411 | ||
414 | static int __init swiotlb_late_init(void) | 412 | static int __init arm64_dma_init(void) |
415 | { | 413 | { |
416 | size_t swiotlb_size = min(SZ_64M, MAX_ORDER_NR_PAGES << PAGE_SHIFT); | 414 | int ret; |
417 | 415 | ||
418 | dma_ops = &swiotlb_dma_ops; | 416 | dma_ops = &swiotlb_dma_ops; |
419 | 417 | ||
420 | return swiotlb_late_init_with_default_size(swiotlb_size); | 418 | ret = atomic_pool_init(); |
421 | } | ||
422 | |||
423 | static int __init arm64_dma_init(void) | ||
424 | { | ||
425 | int ret = 0; | ||
426 | |||
427 | ret |= swiotlb_late_init(); | ||
428 | ret |= atomic_pool_init(); | ||
429 | 419 | ||
430 | return ret; | 420 | return ret; |
431 | } | 421 | } |
diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 71145f952070..ae85da6307bb 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/dma-mapping.h> | 33 | #include <linux/dma-mapping.h> |
34 | #include <linux/dma-contiguous.h> | 34 | #include <linux/dma-contiguous.h> |
35 | #include <linux/efi.h> | 35 | #include <linux/efi.h> |
36 | #include <linux/swiotlb.h> | ||
36 | 37 | ||
37 | #include <asm/fixmap.h> | 38 | #include <asm/fixmap.h> |
38 | #include <asm/memory.h> | 39 | #include <asm/memory.h> |
@@ -45,6 +46,7 @@ | |||
45 | #include "mm.h" | 46 | #include "mm.h" |
46 | 47 | ||
47 | phys_addr_t memstart_addr __read_mostly = 0; | 48 | phys_addr_t memstart_addr __read_mostly = 0; |
49 | phys_addr_t arm64_dma_phys_limit __read_mostly; | ||
48 | 50 | ||
49 | #ifdef CONFIG_BLK_DEV_INITRD | 51 | #ifdef CONFIG_BLK_DEV_INITRD |
50 | static int __init early_initrd(char *p) | 52 | static int __init early_initrd(char *p) |
@@ -85,7 +87,7 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) | |||
85 | 87 | ||
86 | /* 4GB maximum for 32-bit only capable devices */ | 88 | /* 4GB maximum for 32-bit only capable devices */ |
87 | if (IS_ENABLED(CONFIG_ZONE_DMA)) { | 89 | if (IS_ENABLED(CONFIG_ZONE_DMA)) { |
88 | max_dma = PFN_DOWN(max_zone_dma_phys()); | 90 | max_dma = PFN_DOWN(arm64_dma_phys_limit); |
89 | zone_size[ZONE_DMA] = max_dma - min; | 91 | zone_size[ZONE_DMA] = max_dma - min; |
90 | } | 92 | } |
91 | zone_size[ZONE_NORMAL] = max - max_dma; | 93 | zone_size[ZONE_NORMAL] = max - max_dma; |
@@ -156,8 +158,6 @@ early_param("mem", early_mem); | |||
156 | 158 | ||
157 | void __init arm64_memblock_init(void) | 159 | void __init arm64_memblock_init(void) |
158 | { | 160 | { |
159 | phys_addr_t dma_phys_limit = 0; | ||
160 | |||
161 | memblock_enforce_memory_limit(memory_limit); | 161 | memblock_enforce_memory_limit(memory_limit); |
162 | 162 | ||
163 | /* | 163 | /* |
@@ -174,8 +174,10 @@ void __init arm64_memblock_init(void) | |||
174 | 174 | ||
175 | /* 4GB maximum for 32-bit only capable devices */ | 175 | /* 4GB maximum for 32-bit only capable devices */ |
176 | if (IS_ENABLED(CONFIG_ZONE_DMA)) | 176 | if (IS_ENABLED(CONFIG_ZONE_DMA)) |
177 | dma_phys_limit = max_zone_dma_phys(); | 177 | arm64_dma_phys_limit = max_zone_dma_phys(); |
178 | dma_contiguous_reserve(dma_phys_limit); | 178 | else |
179 | arm64_dma_phys_limit = PHYS_MASK + 1; | ||
180 | dma_contiguous_reserve(arm64_dma_phys_limit); | ||
179 | 181 | ||
180 | memblock_allow_resize(); | 182 | memblock_allow_resize(); |
181 | memblock_dump_all(); | 183 | memblock_dump_all(); |
@@ -276,6 +278,8 @@ static void __init free_unused_memmap(void) | |||
276 | */ | 278 | */ |
277 | void __init mem_init(void) | 279 | void __init mem_init(void) |
278 | { | 280 | { |
281 | swiotlb_init(1); | ||
282 | |||
279 | set_max_mapnr(pfn_to_page(max_pfn) - mem_map); | 283 | set_max_mapnr(pfn_to_page(max_pfn) - mem_map); |
280 | 284 | ||
281 | #ifndef CONFIG_SPARSEMEM_VMEMMAP | 285 | #ifndef CONFIG_SPARSEMEM_VMEMMAP |
diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h index 93bcf2abd1a1..07d7a7ef8bd5 100644 --- a/arch/frv/include/asm/pgtable.h +++ b/arch/frv/include/asm/pgtable.h | |||
@@ -123,12 +123,14 @@ extern unsigned long empty_zero_page; | |||
123 | #define PGDIR_MASK (~(PGDIR_SIZE - 1)) | 123 | #define PGDIR_MASK (~(PGDIR_SIZE - 1)) |
124 | #define PTRS_PER_PGD 64 | 124 | #define PTRS_PER_PGD 64 |
125 | 125 | ||
126 | #define __PAGETABLE_PUD_FOLDED | ||
126 | #define PUD_SHIFT 26 | 127 | #define PUD_SHIFT 26 |
127 | #define PTRS_PER_PUD 1 | 128 | #define PTRS_PER_PUD 1 |
128 | #define PUD_SIZE (1UL << PUD_SHIFT) | 129 | #define PUD_SIZE (1UL << PUD_SHIFT) |
129 | #define PUD_MASK (~(PUD_SIZE - 1)) | 130 | #define PUD_MASK (~(PUD_SIZE - 1)) |
130 | #define PUE_SIZE 256 | 131 | #define PUE_SIZE 256 |
131 | 132 | ||
133 | #define __PAGETABLE_PMD_FOLDED | ||
132 | #define PMD_SHIFT 26 | 134 | #define PMD_SHIFT 26 |
133 | #define PMD_SIZE (1UL << PMD_SHIFT) | 135 | #define PMD_SIZE (1UL << PMD_SHIFT) |
134 | #define PMD_MASK (~(PMD_SIZE - 1)) | 136 | #define PMD_MASK (~(PMD_SIZE - 1)) |
diff --git a/arch/m32r/include/asm/pgtable-2level.h b/arch/m32r/include/asm/pgtable-2level.h index 8fd8ee70266a..421e6ba3a173 100644 --- a/arch/m32r/include/asm/pgtable-2level.h +++ b/arch/m32r/include/asm/pgtable-2level.h | |||
@@ -13,6 +13,7 @@ | |||
13 | * the M32R is two-level, so we don't really have any | 13 | * the M32R is two-level, so we don't really have any |
14 | * PMD directory physically. | 14 | * PMD directory physically. |
15 | */ | 15 | */ |
16 | #define __PAGETABLE_PMD_FOLDED | ||
16 | #define PMD_SHIFT 22 | 17 | #define PMD_SHIFT 22 |
17 | #define PTRS_PER_PMD 1 | 18 | #define PTRS_PER_PMD 1 |
18 | 19 | ||
diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h index 28a145bfbb71..35ed4a9981ae 100644 --- a/arch/m68k/include/asm/pgtable_mm.h +++ b/arch/m68k/include/asm/pgtable_mm.h | |||
@@ -54,10 +54,12 @@ | |||
54 | */ | 54 | */ |
55 | #ifdef CONFIG_SUN3 | 55 | #ifdef CONFIG_SUN3 |
56 | #define PTRS_PER_PTE 16 | 56 | #define PTRS_PER_PTE 16 |
57 | #define __PAGETABLE_PMD_FOLDED | ||
57 | #define PTRS_PER_PMD 1 | 58 | #define PTRS_PER_PMD 1 |
58 | #define PTRS_PER_PGD 2048 | 59 | #define PTRS_PER_PGD 2048 |
59 | #elif defined(CONFIG_COLDFIRE) | 60 | #elif defined(CONFIG_COLDFIRE) |
60 | #define PTRS_PER_PTE 512 | 61 | #define PTRS_PER_PTE 512 |
62 | #define __PAGETABLE_PMD_FOLDED | ||
61 | #define PTRS_PER_PMD 1 | 63 | #define PTRS_PER_PMD 1 |
62 | #define PTRS_PER_PGD 1024 | 64 | #define PTRS_PER_PGD 1024 |
63 | #else | 65 | #else |
diff --git a/arch/metag/include/asm/processor.h b/arch/metag/include/asm/processor.h index 881071c07942..13272fd5a5ba 100644 --- a/arch/metag/include/asm/processor.h +++ b/arch/metag/include/asm/processor.h | |||
@@ -149,8 +149,8 @@ extern void exit_thread(void); | |||
149 | 149 | ||
150 | unsigned long get_wchan(struct task_struct *p); | 150 | unsigned long get_wchan(struct task_struct *p); |
151 | 151 | ||
152 | #define KSTK_EIP(tsk) ((tsk)->thread.kernel_context->CurrPC) | 152 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->ctx.CurrPC) |
153 | #define KSTK_ESP(tsk) ((tsk)->thread.kernel_context->AX[0].U0) | 153 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->ctx.AX[0].U0) |
154 | 154 | ||
155 | #define user_stack_pointer(regs) ((regs)->ctx.AX[0].U0) | 155 | #define user_stack_pointer(regs) ((regs)->ctx.AX[0].U0) |
156 | 156 | ||
diff --git a/arch/mn10300/include/asm/pgtable.h b/arch/mn10300/include/asm/pgtable.h index afab728ab65e..96d3f9deb59c 100644 --- a/arch/mn10300/include/asm/pgtable.h +++ b/arch/mn10300/include/asm/pgtable.h | |||
@@ -56,7 +56,9 @@ extern void paging_init(void); | |||
56 | #define PGDIR_SHIFT 22 | 56 | #define PGDIR_SHIFT 22 |
57 | #define PTRS_PER_PGD 1024 | 57 | #define PTRS_PER_PGD 1024 |
58 | #define PTRS_PER_PUD 1 /* we don't really have any PUD physically */ | 58 | #define PTRS_PER_PUD 1 /* we don't really have any PUD physically */ |
59 | #define __PAGETABLE_PUD_FOLDED | ||
59 | #define PTRS_PER_PMD 1 /* we don't really have any PMD physically */ | 60 | #define PTRS_PER_PMD 1 /* we don't really have any PMD physically */ |
61 | #define __PAGETABLE_PMD_FOLDED | ||
60 | #define PTRS_PER_PTE 1024 | 62 | #define PTRS_PER_PTE 1024 |
61 | 63 | ||
62 | #define PGD_SIZE PAGE_SIZE | 64 | #define PGD_SIZE PAGE_SIZE |
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index 8c966b2270aa..15207b9362bf 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h | |||
@@ -96,6 +96,7 @@ extern void purge_tlb_entries(struct mm_struct *, unsigned long); | |||
96 | #if PT_NLEVELS == 3 | 96 | #if PT_NLEVELS == 3 |
97 | #define BITS_PER_PMD (PAGE_SHIFT + PMD_ORDER - BITS_PER_PMD_ENTRY) | 97 | #define BITS_PER_PMD (PAGE_SHIFT + PMD_ORDER - BITS_PER_PMD_ENTRY) |
98 | #else | 98 | #else |
99 | #define __PAGETABLE_PMD_FOLDED | ||
99 | #define BITS_PER_PMD 0 | 100 | #define BITS_PER_PMD 0 |
100 | #endif | 101 | #endif |
101 | #define PTRS_PER_PMD (1UL << BITS_PER_PMD) | 102 | #define PTRS_PER_PMD (1UL << BITS_PER_PMD) |
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index fbb5ee3ae57c..e08ec38f8c6e 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -91,7 +91,9 @@ extern unsigned long zero_page_mask; | |||
91 | */ | 91 | */ |
92 | #define PTRS_PER_PTE 256 | 92 | #define PTRS_PER_PTE 256 |
93 | #ifndef CONFIG_64BIT | 93 | #ifndef CONFIG_64BIT |
94 | #define __PAGETABLE_PUD_FOLDED | ||
94 | #define PTRS_PER_PMD 1 | 95 | #define PTRS_PER_PMD 1 |
96 | #define __PAGETABLE_PMD_FOLDED | ||
95 | #define PTRS_PER_PUD 1 | 97 | #define PTRS_PER_PUD 1 |
96 | #else /* CONFIG_64BIT */ | 98 | #else /* CONFIG_64BIT */ |
97 | #define PTRS_PER_PMD 2048 | 99 | #define PTRS_PER_PMD 2048 |
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c index b5c8ff5e9dfc..2346c95c6ab1 100644 --- a/arch/x86/kernel/cpu/common.c +++ b/arch/x86/kernel/cpu/common.c | |||
@@ -1396,6 +1396,12 @@ void cpu_init(void) | |||
1396 | 1396 | ||
1397 | wait_for_master_cpu(cpu); | 1397 | wait_for_master_cpu(cpu); |
1398 | 1398 | ||
1399 | /* | ||
1400 | * Initialize the CR4 shadow before doing anything that could | ||
1401 | * try to read it. | ||
1402 | */ | ||
1403 | cr4_init_shadow(); | ||
1404 | |||
1399 | show_ucode_info_early(); | 1405 | show_ucode_info_early(); |
1400 | 1406 | ||
1401 | printk(KERN_INFO "Initializing CPU#%d\n", cpu); | 1407 | printk(KERN_INFO "Initializing CPU#%d\n", cpu); |
diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 94d7dcb12145..50163fa9034f 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c | |||
@@ -565,8 +565,8 @@ static const struct _tlb_table intel_tlb_table[] = { | |||
565 | { 0xb2, TLB_INST_4K, 64, " TLB_INST 4KByte pages, 4-way set associative" }, | 565 | { 0xb2, TLB_INST_4K, 64, " TLB_INST 4KByte pages, 4-way set associative" }, |
566 | { 0xb3, TLB_DATA_4K, 128, " TLB_DATA 4 KByte pages, 4-way set associative" }, | 566 | { 0xb3, TLB_DATA_4K, 128, " TLB_DATA 4 KByte pages, 4-way set associative" }, |
567 | { 0xb4, TLB_DATA_4K, 256, " TLB_DATA 4 KByte pages, 4-way associative" }, | 567 | { 0xb4, TLB_DATA_4K, 256, " TLB_DATA 4 KByte pages, 4-way associative" }, |
568 | { 0xb5, TLB_INST_4K, 64, " TLB_INST 4 KByte pages, 8-way set ssociative" }, | 568 | { 0xb5, TLB_INST_4K, 64, " TLB_INST 4 KByte pages, 8-way set associative" }, |
569 | { 0xb6, TLB_INST_4K, 128, " TLB_INST 4 KByte pages, 8-way set ssociative" }, | 569 | { 0xb6, TLB_INST_4K, 128, " TLB_INST 4 KByte pages, 8-way set associative" }, |
570 | { 0xba, TLB_DATA_4K, 64, " TLB_DATA 4 KByte pages, 4-way associative" }, | 570 | { 0xba, TLB_DATA_4K, 64, " TLB_DATA 4 KByte pages, 4-way associative" }, |
571 | { 0xc0, TLB_DATA_4K_4M, 8, " TLB_DATA 4 KByte and 4 MByte pages, 4-way associative" }, | 571 | { 0xc0, TLB_DATA_4K_4M, 8, " TLB_DATA 4 KByte and 4 MByte pages, 4-way associative" }, |
572 | { 0xc1, STLB_4K_2M, 1024, " STLB 4 KByte and 2 MByte pages, 8-way associative" }, | 572 | { 0xc1, STLB_4K_2M, 1024, " STLB 4 KByte and 2 MByte pages, 8-way associative" }, |
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 000d4199b03e..31e2d5bf3e38 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S | |||
@@ -982,6 +982,9 @@ ENTRY(xen_hypervisor_callback) | |||
982 | ENTRY(xen_do_upcall) | 982 | ENTRY(xen_do_upcall) |
983 | 1: mov %esp, %eax | 983 | 1: mov %esp, %eax |
984 | call xen_evtchn_do_upcall | 984 | call xen_evtchn_do_upcall |
985 | #ifndef CONFIG_PREEMPT | ||
986 | call xen_maybe_preempt_hcall | ||
987 | #endif | ||
985 | jmp ret_from_intr | 988 | jmp ret_from_intr |
986 | CFI_ENDPROC | 989 | CFI_ENDPROC |
987 | ENDPROC(xen_hypervisor_callback) | 990 | ENDPROC(xen_hypervisor_callback) |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index db13655c3a2a..10074ad9ebf8 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -1208,6 +1208,9 @@ ENTRY(xen_do_hypervisor_callback) # do_hypervisor_callback(struct *pt_regs) | |||
1208 | popq %rsp | 1208 | popq %rsp |
1209 | CFI_DEF_CFA_REGISTER rsp | 1209 | CFI_DEF_CFA_REGISTER rsp |
1210 | decl PER_CPU_VAR(irq_count) | 1210 | decl PER_CPU_VAR(irq_count) |
1211 | #ifndef CONFIG_PREEMPT | ||
1212 | call xen_maybe_preempt_hcall | ||
1213 | #endif | ||
1211 | jmp error_exit | 1214 | jmp error_exit |
1212 | CFI_ENDPROC | 1215 | CFI_ENDPROC |
1213 | END(xen_do_hypervisor_callback) | 1216 | END(xen_do_hypervisor_callback) |
diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c index 6a1146ea4d4d..4e3d5a9621fe 100644 --- a/arch/x86/kernel/kprobes/core.c +++ b/arch/x86/kernel/kprobes/core.c | |||
@@ -223,27 +223,48 @@ static unsigned long | |||
223 | __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr) | 223 | __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr) |
224 | { | 224 | { |
225 | struct kprobe *kp; | 225 | struct kprobe *kp; |
226 | unsigned long faddr; | ||
226 | 227 | ||
227 | kp = get_kprobe((void *)addr); | 228 | kp = get_kprobe((void *)addr); |
228 | /* There is no probe, return original address */ | 229 | faddr = ftrace_location(addr); |
229 | if (!kp) | 230 | /* |
231 | * Addresses inside the ftrace location are refused by | ||
232 | * arch_check_ftrace_location(). Something went terribly wrong | ||
233 | * if such an address is checked here. | ||
234 | */ | ||
235 | if (WARN_ON(faddr && faddr != addr)) | ||
236 | return 0UL; | ||
237 | /* | ||
238 | * Use the current code if it is not modified by Kprobe | ||
239 | * and it cannot be modified by ftrace. | ||
240 | */ | ||
241 | if (!kp && !faddr) | ||
230 | return addr; | 242 | return addr; |
231 | 243 | ||
232 | /* | 244 | /* |
233 | * Basically, kp->ainsn.insn has an original instruction. | 245 | * Basically, kp->ainsn.insn has an original instruction. |
234 | * However, RIP-relative instruction can not do single-stepping | 246 | * However, RIP-relative instruction can not do single-stepping |
235 | * at different place, __copy_instruction() tweaks the displacement of | 247 | * at different place, __copy_instruction() tweaks the displacement of |
236 | * that instruction. In that case, we can't recover the instruction | 248 | * that instruction. In that case, we can't recover the instruction |
237 | * from the kp->ainsn.insn. | 249 | * from the kp->ainsn.insn. |
238 | * | 250 | * |
239 | * On the other hand, kp->opcode has a copy of the first byte of | 251 | * On the other hand, in case on normal Kprobe, kp->opcode has a copy |
240 | * the probed instruction, which is overwritten by int3. And | 252 | * of the first byte of the probed instruction, which is overwritten |
241 | * the instruction at kp->addr is not modified by kprobes except | 253 | * by int3. And the instruction at kp->addr is not modified by kprobes |
242 | * for the first byte, we can recover the original instruction | 254 | * except for the first byte, we can recover the original instruction |
243 | * from it and kp->opcode. | 255 | * from it and kp->opcode. |
256 | * | ||
257 | * In case of Kprobes using ftrace, we do not have a copy of | ||
258 | * the original instruction. In fact, the ftrace location might | ||
259 | * be modified at anytime and even could be in an inconsistent state. | ||
260 | * Fortunately, we know that the original code is the ideal 5-byte | ||
261 | * long NOP. | ||
244 | */ | 262 | */ |
245 | memcpy(buf, kp->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); | 263 | memcpy(buf, (void *)addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); |
246 | buf[0] = kp->opcode; | 264 | if (faddr) |
265 | memcpy(buf, ideal_nops[NOP_ATOMIC5], 5); | ||
266 | else | ||
267 | buf[0] = kp->opcode; | ||
247 | return (unsigned long)buf; | 268 | return (unsigned long)buf; |
248 | } | 269 | } |
249 | 270 | ||
@@ -251,6 +272,7 @@ __recover_probed_insn(kprobe_opcode_t *buf, unsigned long addr) | |||
251 | * Recover the probed instruction at addr for further analysis. | 272 | * Recover the probed instruction at addr for further analysis. |
252 | * Caller must lock kprobes by kprobe_mutex, or disable preemption | 273 | * Caller must lock kprobes by kprobe_mutex, or disable preemption |
253 | * for preventing to release referencing kprobes. | 274 | * for preventing to release referencing kprobes. |
275 | * Returns zero if the instruction can not get recovered. | ||
254 | */ | 276 | */ |
255 | unsigned long recover_probed_instruction(kprobe_opcode_t *buf, unsigned long addr) | 277 | unsigned long recover_probed_instruction(kprobe_opcode_t *buf, unsigned long addr) |
256 | { | 278 | { |
@@ -285,6 +307,8 @@ static int can_probe(unsigned long paddr) | |||
285 | * normally used, we just go through if there is no kprobe. | 307 | * normally used, we just go through if there is no kprobe. |
286 | */ | 308 | */ |
287 | __addr = recover_probed_instruction(buf, addr); | 309 | __addr = recover_probed_instruction(buf, addr); |
310 | if (!__addr) | ||
311 | return 0; | ||
288 | kernel_insn_init(&insn, (void *)__addr, MAX_INSN_SIZE); | 312 | kernel_insn_init(&insn, (void *)__addr, MAX_INSN_SIZE); |
289 | insn_get_length(&insn); | 313 | insn_get_length(&insn); |
290 | 314 | ||
@@ -333,6 +357,8 @@ int __copy_instruction(u8 *dest, u8 *src) | |||
333 | unsigned long recovered_insn = | 357 | unsigned long recovered_insn = |
334 | recover_probed_instruction(buf, (unsigned long)src); | 358 | recover_probed_instruction(buf, (unsigned long)src); |
335 | 359 | ||
360 | if (!recovered_insn) | ||
361 | return 0; | ||
336 | kernel_insn_init(&insn, (void *)recovered_insn, MAX_INSN_SIZE); | 362 | kernel_insn_init(&insn, (void *)recovered_insn, MAX_INSN_SIZE); |
337 | insn_get_length(&insn); | 363 | insn_get_length(&insn); |
338 | /* Another subsystem puts a breakpoint, failed to recover */ | 364 | /* Another subsystem puts a breakpoint, failed to recover */ |
diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c index 0dd8d089c315..7b3b9d15c47a 100644 --- a/arch/x86/kernel/kprobes/opt.c +++ b/arch/x86/kernel/kprobes/opt.c | |||
@@ -259,6 +259,8 @@ static int can_optimize(unsigned long paddr) | |||
259 | */ | 259 | */ |
260 | return 0; | 260 | return 0; |
261 | recovered_insn = recover_probed_instruction(buf, addr); | 261 | recovered_insn = recover_probed_instruction(buf, addr); |
262 | if (!recovered_insn) | ||
263 | return 0; | ||
262 | kernel_insn_init(&insn, (void *)recovered_insn, MAX_INSN_SIZE); | 264 | kernel_insn_init(&insn, (void *)recovered_insn, MAX_INSN_SIZE); |
263 | insn_get_length(&insn); | 265 | insn_get_length(&insn); |
264 | /* Another subsystem puts a breakpoint */ | 266 | /* Another subsystem puts a breakpoint */ |
diff --git a/arch/x86/lguest/Kconfig b/arch/x86/lguest/Kconfig index 4a0890f815c4..08f41caada45 100644 --- a/arch/x86/lguest/Kconfig +++ b/arch/x86/lguest/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config LGUEST_GUEST | 1 | config LGUEST_GUEST |
2 | bool "Lguest guest support" | 2 | bool "Lguest guest support" |
3 | depends on X86_32 && PARAVIRT | 3 | depends on X86_32 && PARAVIRT && PCI |
4 | select TTY | 4 | select TTY |
5 | select VIRTUALIZATION | 5 | select VIRTUALIZATION |
6 | select VIRTIO | 6 | select VIRTIO |
@@ -8,7 +8,7 @@ config LGUEST_GUEST | |||
8 | help | 8 | help |
9 | Lguest is a tiny in-kernel hypervisor. Selecting this will | 9 | Lguest is a tiny in-kernel hypervisor. Selecting this will |
10 | allow your kernel to boot under lguest. This option will increase | 10 | allow your kernel to boot under lguest. This option will increase |
11 | your kernel size by about 6k. If in doubt, say N. | 11 | your kernel size by about 10k. If in doubt, say N. |
12 | 12 | ||
13 | If you say Y here, make sure you say Y (or M) to the virtio block | 13 | If you say Y here, make sure you say Y (or M) to the virtio block |
14 | and net drivers which lguest needs. | 14 | and net drivers which lguest needs. |
diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c index 1bbedc4b0f88..3005f0c89f2e 100644 --- a/arch/x86/platform/intel-mid/intel-mid.c +++ b/arch/x86/platform/intel-mid/intel-mid.c | |||
@@ -130,7 +130,7 @@ static void intel_mid_arch_setup(void) | |||
130 | intel_mid_ops = get_intel_mid_ops[__intel_mid_cpu_chip](); | 130 | intel_mid_ops = get_intel_mid_ops[__intel_mid_cpu_chip](); |
131 | else { | 131 | else { |
132 | intel_mid_ops = get_intel_mid_ops[INTEL_MID_CPU_CHIP_PENWELL](); | 132 | intel_mid_ops = get_intel_mid_ops[INTEL_MID_CPU_CHIP_PENWELL](); |
133 | pr_info("ARCH: Uknown SoC, assuming PENWELL!\n"); | 133 | pr_info("ARCH: Unknown SoC, assuming PENWELL!\n"); |
134 | } | 134 | } |
135 | 135 | ||
136 | out: | 136 | out: |
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index bd8b8459c3d0..5240f563076d 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
@@ -1070,6 +1070,23 @@ static inline void xen_write_cr8(unsigned long val) | |||
1070 | BUG_ON(val); | 1070 | BUG_ON(val); |
1071 | } | 1071 | } |
1072 | #endif | 1072 | #endif |
1073 | |||
1074 | static u64 xen_read_msr_safe(unsigned int msr, int *err) | ||
1075 | { | ||
1076 | u64 val; | ||
1077 | |||
1078 | val = native_read_msr_safe(msr, err); | ||
1079 | switch (msr) { | ||
1080 | case MSR_IA32_APICBASE: | ||
1081 | #ifdef CONFIG_X86_X2APIC | ||
1082 | if (!(cpuid_ecx(1) & (1 << (X86_FEATURE_X2APIC & 31)))) | ||
1083 | #endif | ||
1084 | val &= ~X2APIC_ENABLE; | ||
1085 | break; | ||
1086 | } | ||
1087 | return val; | ||
1088 | } | ||
1089 | |||
1073 | static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) | 1090 | static int xen_write_msr_safe(unsigned int msr, unsigned low, unsigned high) |
1074 | { | 1091 | { |
1075 | int ret; | 1092 | int ret; |
@@ -1240,7 +1257,7 @@ static const struct pv_cpu_ops xen_cpu_ops __initconst = { | |||
1240 | 1257 | ||
1241 | .wbinvd = native_wbinvd, | 1258 | .wbinvd = native_wbinvd, |
1242 | 1259 | ||
1243 | .read_msr = native_read_msr_safe, | 1260 | .read_msr = xen_read_msr_safe, |
1244 | .write_msr = xen_write_msr_safe, | 1261 | .write_msr = xen_write_msr_safe, |
1245 | 1262 | ||
1246 | .read_tsc = native_read_tsc, | 1263 | .read_tsc = native_read_tsc, |
@@ -1741,6 +1758,7 @@ asmlinkage __visible void __init xen_start_kernel(void) | |||
1741 | #ifdef CONFIG_X86_32 | 1758 | #ifdef CONFIG_X86_32 |
1742 | i386_start_kernel(); | 1759 | i386_start_kernel(); |
1743 | #else | 1760 | #else |
1761 | cr4_init_shadow(); /* 32b kernel does this in i386_start_kernel() */ | ||
1744 | x86_64_start_reservations((char *)__pa_symbol(&boot_params)); | 1762 | x86_64_start_reservations((char *)__pa_symbol(&boot_params)); |
1745 | #endif | 1763 | #endif |
1746 | } | 1764 | } |