aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/arm/omap/l3-noc.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/omap/timer.txt17
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/sysreg.txt7
-rw-r--r--Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt49
-rw-r--r--Documentation/devicetree/bindings/fb/mxsfb.txt36
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-omap.txt8
-rw-r--r--Documentation/devicetree/bindings/gpu/samsung-g2d.txt20
-rw-r--r--Documentation/devicetree/bindings/i2c/i2c-mxs.txt12
-rw-r--r--Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt60
-rw-r--r--Documentation/devicetree/bindings/mmc/mxs-mmc.txt12
-rw-r--r--Documentation/devicetree/bindings/mtd/gpmi-nand.txt17
-rw-r--r--Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt4
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt7
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt8
-rw-r--r--Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt8
-rw-r--r--Documentation/devicetree/bindings/spi/mxs-spi.txt12
-rw-r--r--Documentation/devicetree/bindings/spi/spi-davinci.txt51
-rw-r--r--Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt16
-rw-r--r--Documentation/devicetree/bindings/usb/exynos-usb.txt10
-rw-r--r--Documentation/devicetree/bindings/usb/omap-usb.txt1
-rw-r--r--Documentation/devicetree/bindings/video/samsung-fimd.txt65
-rw-r--r--arch/arm/boot/dts/Makefile5
-rw-r--r--arch/arm/boot/dts/am335x-bone.dts10
-rw-r--r--arch/arm/boot/dts/am335x-evm.dts18
-rw-r--r--arch/arm/boot/dts/am335x-evmsk.dts18
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi40
-rw-r--r--arch/arm/boot/dts/am3517-evm.dts2
-rw-r--r--arch/arm/boot/dts/am3517_mt_ventoux.dts2
-rw-r--r--arch/arm/boot/dts/armada-370-db.dts134
-rw-r--r--arch/arm/boot/dts/armada-370-mirabox.dts176
-rw-r--r--arch/arm/boot/dts/armada-370-rd.dts96
-rw-r--r--arch/arm/boot/dts/armada-370-xp.dtsi336
-rw-r--r--arch/arm/boot/dts/armada-370.dtsi330
-rw-r--r--arch/arm/boot/dts/armada-xp-db.dts202
-rw-r--r--arch/arm/boot/dts/armada-xp-gp.dts222
-rw-r--r--arch/arm/boot/dts/armada-xp-mv78230.dtsi284
-rw-r--r--arch/arm/boot/dts/armada-xp-mv78260.dtsi342
-rw-r--r--arch/arm/boot/dts/armada-xp-mv78460.dtsi484
-rw-r--r--arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts262
-rw-r--r--arch/arm/boot/dts/armada-xp.dtsi202
-rw-r--r--arch/arm/boot/dts/cros5250-common.dtsi54
-rw-r--r--arch/arm/boot/dts/da850-evm.dts40
-rw-r--r--arch/arm/boot/dts/da850.dtsi94
-rw-r--r--arch/arm/boot/dts/exynos4.dtsi32
-rw-r--r--arch/arm/boot/dts/exynos4210-origen.dts4
-rw-r--r--arch/arm/boot/dts/exynos4210-smdkv310.dts57
-rw-r--r--arch/arm/boot/dts/exynos4210.dtsi7
-rw-r--r--arch/arm/boot/dts/exynos4412-origen.dts21
-rw-r--r--arch/arm/boot/dts/exynos4412-smdk4412.dts8
-rw-r--r--arch/arm/boot/dts/exynos4412.dtsi8
-rw-r--r--arch/arm/boot/dts/exynos4x12.dtsi7
-rw-r--r--arch/arm/boot/dts/exynos5250-arndale.dts343
-rw-r--r--arch/arm/boot/dts/exynos5250-pinctrl.dtsi783
-rw-r--r--arch/arm/boot/dts/exynos5250-smdk5250.dts49
-rw-r--r--arch/arm/boot/dts/exynos5250-snow.dts149
-rw-r--r--arch/arm/boot/dts/exynos5250.dtsi348
-rw-r--r--arch/arm/boot/dts/exynos5440-sd5v1.dts39
-rw-r--r--arch/arm/boot/dts/exynos5440-ssdk5440.dts6
-rw-r--r--arch/arm/boot/dts/exynos5440.dtsi55
-rw-r--r--arch/arm/boot/dts/imx23-evk.dts36
-rw-r--r--arch/arm/boot/dts/imx23-olinuxino.dts1
-rw-r--r--arch/arm/boot/dts/imx23.dtsi42
-rw-r--r--arch/arm/boot/dts/imx28-apf28dev.dts25
-rw-r--r--arch/arm/boot/dts/imx28-apx4devkit.dts25
-rw-r--r--arch/arm/boot/dts/imx28-cfa10049.dts50
-rw-r--r--arch/arm/boot/dts/imx28-evk.dts36
-rw-r--r--arch/arm/boot/dts/imx28-m28evk.dts27
-rw-r--r--arch/arm/boot/dts/imx28.dtsi62
-rw-r--r--arch/arm/boot/dts/imx6qdl.dtsi8
-rw-r--r--arch/arm/boot/dts/omap2.dtsi39
-rw-r--r--arch/arm/boot/dts/omap2420-h4.dts46
-rw-r--r--arch/arm/boot/dts/omap2420.dtsi67
-rw-r--r--arch/arm/boot/dts/omap2430.dtsi87
-rw-r--r--arch/arm/boot/dts/omap3-beagle-xm.dts26
-rw-r--r--arch/arm/boot/dts/omap3-beagle.dts8
-rw-r--r--arch/arm/boot/dts/omap3-devkit8000.dts169
-rw-r--r--arch/arm/boot/dts/omap3-evm.dts14
-rw-r--r--arch/arm/boot/dts/omap3-igep.dtsi122
-rw-r--r--arch/arm/boot/dts/omap3-igep0020.dts56
-rw-r--r--arch/arm/boot/dts/omap3-igep0030.dts44
-rw-r--r--arch/arm/boot/dts/omap3-overo.dtsi31
-rw-r--r--arch/arm/boot/dts/omap3.dtsi142
-rw-r--r--arch/arm/boot/dts/omap3430-sdp.dts190
-rw-r--r--arch/arm/boot/dts/omap34xx.dtsi28
-rw-r--r--arch/arm/boot/dts/omap36xx.dtsi13
-rw-r--r--arch/arm/boot/dts/omap4-panda-a4.dts5
-rw-r--r--arch/arm/boot/dts/omap4-panda-common.dtsi251
-rw-r--r--arch/arm/boot/dts/omap4-panda-es.dts5
-rw-r--r--arch/arm/boot/dts/omap4-panda.dts201
-rw-r--r--arch/arm/boot/dts/omap4-sdp.dts74
-rw-r--r--arch/arm/boot/dts/omap4-var-som.dts2
-rw-r--r--arch/arm/boot/dts/omap4.dtsi135
-rw-r--r--arch/arm/boot/dts/omap443x.dtsi27
-rw-r--r--arch/arm/boot/dts/omap4460.dtsi32
-rw-r--r--arch/arm/boot/dts/omap5-evm.dts110
-rw-r--r--arch/arm/boot/dts/omap5.dtsi245
-rw-r--r--arch/arm/boot/dts/tegra114-dalmore.dts891
-rw-r--r--arch/arm/boot/dts/tegra114.dtsi240
-rw-r--r--arch/arm/boot/dts/tegra20-colibri-512.dtsi12
-rw-r--r--arch/arm/boot/dts/tegra20-harmony.dts20
-rw-r--r--arch/arm/boot/dts/tegra20-medcom-wide.dts7
-rw-r--r--arch/arm/boot/dts/tegra20-paz00.dts10
-rw-r--r--arch/arm/boot/dts/tegra20-plutux.dts3
-rw-r--r--arch/arm/boot/dts/tegra20-seaboard.dts11
-rw-r--r--arch/arm/boot/dts/tegra20-tamonten.dtsi6
-rw-r--r--arch/arm/boot/dts/tegra20-tec.dts3
-rw-r--r--arch/arm/boot/dts/tegra20-trimslice.dts23
-rw-r--r--arch/arm/boot/dts/tegra20-ventana.dts22
-rw-r--r--arch/arm/boot/dts/tegra20-whistler.dts13
-rw-r--r--arch/arm/boot/dts/tegra20.dtsi53
-rw-r--r--arch/arm/boot/dts/tegra30-beaver.dts8
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu-a02.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu-a04.dts1
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu.dtsi11
-rw-r--r--arch/arm/boot/dts/tegra30.dtsi1
-rw-r--r--arch/arm/boot/dts/twl4030.dtsi18
-rw-r--r--arch/arm/boot/dts/twl6030.dtsi12
-rw-r--r--arch/arm/mach-davinci/da8xx-dt.c6
-rw-r--r--arch/arm/mach-exynos/common.c53
-rw-r--r--arch/arm/mach-exynos/include/mach/map.h1
-rw-r--r--arch/arm/mach-mxs/mach-mxs.c170
-rw-r--r--arch/arm/mach-omap2/board-generic.c1
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c48
-rw-r--r--arch/arm/mach-omap2/pmu.c14
-rw-r--r--arch/arm/mach-omap2/timer.c7
-rw-r--r--arch/arm/plat-omap/dmtimer.c241
-rw-r--r--arch/arm/plat-omap/include/plat/dmtimer.h1
-rw-r--r--drivers/dma/mxs-dma.c109
-rw-r--r--drivers/i2c/busses/i2c-mxs.c40
-rw-r--r--drivers/mmc/host/mxs-mmc.c48
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-nand.c51
-rw-r--r--drivers/mtd/nand/gpmi-nand/gpmi-nand.h3
-rw-r--r--drivers/net/ethernet/freescale/fec.h1
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c18
-rw-r--r--drivers/spi/spi-davinci.c4
-rw-r--r--drivers/spi/spi-mxs.c60
-rw-r--r--drivers/tty/serial/mxs-auart.c52
-rw-r--r--drivers/video/Kconfig2
-rw-r--r--drivers/video/mxsfb.c260
-rw-r--r--include/linux/mxsfb.h52
-rw-r--r--include/linux/spi/mxs-spi.h4
143 files changed, 7751 insertions, 3048 deletions
diff --git a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
index 6888a5efc860..c0105de55cbd 100644
--- a/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
+++ b/Documentation/devicetree/bindings/arm/omap/l3-noc.txt
@@ -6,6 +6,7 @@ provided by Arteris.
6Required properties: 6Required properties:
7- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family 7- compatible : Should be "ti,omap3-l3-smx" for OMAP3 family
8 Should be "ti,omap4-l3-noc" for OMAP4 family 8 Should be "ti,omap4-l3-noc" for OMAP4 family
9- reg: Contains L3 register address range for each noc domain.
9- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain. 10- ti,hwmods: "l3_main_1", ... One hwmod for each noc domain.
10 11
11Examples: 12Examples:
diff --git a/Documentation/devicetree/bindings/arm/omap/timer.txt b/Documentation/devicetree/bindings/arm/omap/timer.txt
index 8732d4d41f8b..d02e27c764ec 100644
--- a/Documentation/devicetree/bindings/arm/omap/timer.txt
+++ b/Documentation/devicetree/bindings/arm/omap/timer.txt
@@ -1,7 +1,20 @@
1OMAP Timer bindings 1OMAP Timer bindings
2 2
3Required properties: 3Required properties:
4- compatible: Must be "ti,omap2-timer" for OMAP2+ controllers. 4- compatible: Should be set to one of the below. Please note that
5 OMAP44xx devices have timer instances that are 100%
6 register compatible with OMAP3xxx devices as well as
7 newer timers that are not 100% register compatible.
8 So for OMAP44xx devices timer instances may use
9 different compatible strings.
10
11 ti,omap2420-timer (applicable to OMAP24xx devices)
12 ti,omap3430-timer (applicable to OMAP3xxx/44xx devices)
13 ti,omap4430-timer (applicable to OMAP44xx devices)
14 ti,omap5430-timer (applicable to OMAP543x devices)
15 ti,am335x-timer (applicable to AM335x devices)
16 ti,am335x-timer-1ms (applicable to AM335x devices)
17
5- reg: Contains timer register address range (base address and 18- reg: Contains timer register address range (base address and
6 length). 19 length).
7- interrupts: Contains the interrupt information for the timer. The 20- interrupts: Contains the interrupt information for the timer. The
@@ -22,7 +35,7 @@ Optional properties:
22Example: 35Example:
23 36
24timer12: timer@48304000 { 37timer12: timer@48304000 {
25 compatible = "ti,omap2-timer"; 38 compatible = "ti,omap3430-timer";
26 reg = <0x48304000 0x400>; 39 reg = <0x48304000 0x400>;
27 interrupts = <95>; 40 interrupts = <95>;
28 ti,hwmods = "timer12" 41 ti,hwmods = "timer12"
diff --git a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
new file mode 100644
index 000000000000..5039c0a12f55
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
@@ -0,0 +1,7 @@
1SAMSUNG S5P/Exynos SoC series System Registers (SYSREG)
2
3Properties:
4 - name : should be 'sysreg';
5 - compatible : should contain "samsung,<chip name>-sysreg", "syscon";
6 For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon";
7 - reg : offset and length of the register set.
diff --git a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
index ded0398d3bdc..a4873e5e3e36 100644
--- a/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
+++ b/Documentation/devicetree/bindings/dma/fsl-mxs-dma.txt
@@ -3,17 +3,58 @@
3Required properties: 3Required properties:
4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx" 4- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx"
5- reg : Should contain registers location and length 5- reg : Should contain registers location and length
6- interrupts : Should contain the interrupt numbers of DMA channels.
7 If a channel is empty/reserved, 0 should be filled in place.
8- #dma-cells : Must be <1>. The number cell specifies the channel ID.
9- dma-channels : Number of channels supported by the DMA controller
10
11Optional properties:
12- interrupt-names : Name of DMA channel interrupts
6 13
7Supported chips: 14Supported chips:
8imx23, imx28. 15imx23, imx28.
9 16
10Examples: 17Examples:
11dma-apbh@80004000 { 18
19dma_apbh: dma-apbh@80004000 {
12 compatible = "fsl,imx28-dma-apbh"; 20 compatible = "fsl,imx28-dma-apbh";
13 reg = <0x80004000 2000>; 21 reg = <0x80004000 0x2000>;
22 interrupts = <82 83 84 85
23 88 88 88 88
24 88 88 88 88
25 87 86 0 0>;
26 interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
27 "gpmi0", "gmpi1", "gpmi2", "gmpi3",
28 "gpmi4", "gmpi5", "gpmi6", "gmpi7",
29 "hsadc", "lcdif", "empty", "empty";
30 #dma-cells = <1>;
31 dma-channels = <16>;
14}; 32};
15 33
16dma-apbx@80024000 { 34dma_apbx: dma-apbx@80024000 {
17 compatible = "fsl,imx28-dma-apbx"; 35 compatible = "fsl,imx28-dma-apbx";
18 reg = <0x80024000 2000>; 36 reg = <0x80024000 0x2000>;
37 interrupts = <78 79 66 0
38 80 81 68 69
39 70 71 72 73
40 74 75 76 77>;
41 interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
42 "saif0", "saif1", "i2c0", "i2c1",
43 "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
44 "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
45 #dma-cells = <1>;
46 dma-channels = <16>;
47};
48
49DMA clients connected to the MXS DMA controller must use the format
50described in the dma.txt file.
51
52Examples:
53
54auart0: serial@8006a000 {
55 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
56 reg = <0x8006a000 0x2000>;
57 interrupts = <112>;
58 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
59 dma-names = "rx", "tx";
19}; 60};
diff --git a/Documentation/devicetree/bindings/fb/mxsfb.txt b/Documentation/devicetree/bindings/fb/mxsfb.txt
index b41e5e52a676..96ec5179c8a0 100644
--- a/Documentation/devicetree/bindings/fb/mxsfb.txt
+++ b/Documentation/devicetree/bindings/fb/mxsfb.txt
@@ -5,9 +5,16 @@ Required properties:
5 imx23 and imx28. 5 imx23 and imx28.
6- reg: Address and length of the register set for lcdif 6- reg: Address and length of the register set for lcdif
7- interrupts: Should contain lcdif interrupts 7- interrupts: Should contain lcdif interrupts
8- display : phandle to display node (see below for details)
8 9
9Optional properties: 10* display node
10- panel-enable-gpios : Should specify the gpio for panel enable 11
12Required properties:
13- bits-per-pixel : <16> for RGB565, <32> for RGB888/666.
14- bus-width : number of data lines. Could be <8>, <16>, <18> or <24>.
15
16Required sub-node:
17- display-timings : Refer to binding doc display-timing.txt for details.
11 18
12Examples: 19Examples:
13 20
@@ -15,5 +22,28 @@ lcdif@80030000 {
15 compatible = "fsl,imx28-lcdif"; 22 compatible = "fsl,imx28-lcdif";
16 reg = <0x80030000 2000>; 23 reg = <0x80030000 2000>;
17 interrupts = <38 86>; 24 interrupts = <38 86>;
18 panel-enable-gpios = <&gpio3 30 0>; 25
26 display: display {
27 bits-per-pixel = <32>;
28 bus-width = <24>;
29
30 display-timings {
31 native-mode = <&timing0>;
32 timing0: timing0 {
33 clock-frequency = <33500000>;
34 hactive = <800>;
35 vactive = <480>;
36 hfront-porch = <164>;
37 hback-porch = <89>;
38 hsync-len = <10>;
39 vback-porch = <23>;
40 vfront-porch = <10>;
41 vsync-len = <10>;
42 hsync-active = <0>;
43 vsync-active = <0>;
44 de-active = <1>;
45 pixelclk-active = <0>;
46 };
47 };
48 };
19}; 49};
diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
index 1b524c0c79fe..8d950522e7fa 100644
--- a/Documentation/devicetree/bindings/gpio/gpio-omap.txt
+++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
@@ -5,12 +5,12 @@ Required properties:
5 - "ti,omap2-gpio" for OMAP2 controllers 5 - "ti,omap2-gpio" for OMAP2 controllers
6 - "ti,omap3-gpio" for OMAP3 controllers 6 - "ti,omap3-gpio" for OMAP3 controllers
7 - "ti,omap4-gpio" for OMAP4 controllers 7 - "ti,omap4-gpio" for OMAP4 controllers
8- gpio-controller : Marks the device node as a GPIO controller.
8- #gpio-cells : Should be two. 9- #gpio-cells : Should be two.
9 - first cell is the pin number 10 - first cell is the pin number
10 - second cell is used to specify optional parameters (unused) 11 - second cell is used to specify optional parameters (unused)
11- gpio-controller : Marks the device node as a GPIO controller. 12- interrupt-controller: Mark the device node as an interrupt controller.
12- #interrupt-cells : Should be 2. 13- #interrupt-cells : Should be 2.
13- interrupt-controller: Mark the device node as an interrupt controller
14 The first cell is the GPIO number. 14 The first cell is the GPIO number.
15 The second cell is used to specify flags: 15 The second cell is used to specify flags:
16 bits[3:0] trigger type and level flags: 16 bits[3:0] trigger type and level flags:
@@ -32,8 +32,8 @@ Example:
32gpio4: gpio4 { 32gpio4: gpio4 {
33 compatible = "ti,omap4-gpio"; 33 compatible = "ti,omap4-gpio";
34 ti,hwmods = "gpio4"; 34 ti,hwmods = "gpio4";
35 #gpio-cells = <2>;
36 gpio-controller; 35 gpio-controller;
37 #interrupt-cells = <2>; 36 #gpio-cells = <2>;
38 interrupt-controller; 37 interrupt-controller;
38 #interrupt-cells = <2>;
39}; 39};
diff --git a/Documentation/devicetree/bindings/gpu/samsung-g2d.txt b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
new file mode 100644
index 000000000000..2b14a940eb75
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpu/samsung-g2d.txt
@@ -0,0 +1,20 @@
1* Samsung 2D Graphics Accelerator
2
3Required properties:
4 - compatible : value should be one among the following:
5 (a) "samsung,s5pv210-g2d" for G2D IP present in S5PV210 & Exynos4210 SoC
6 (b) "samsung,exynos4212-g2d" for G2D IP present in Exynos4x12 SoCs
7 (c) "samsung,exynos5250-g2d" for G2D IP present in Exynos5250 SoC
8
9 - reg : Physical base address of the IP registers and length of memory
10 mapped region.
11
12 - interrupts : G2D interrupt number to the CPU.
13
14Example:
15 g2d@12800000 {
16 compatible = "samsung,s5pv210-g2d";
17 reg = <0x12800000 0x1000>;
18 interrupts = <0 89 0>;
19 status = "disabled";
20 };
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mxs.txt b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
index 7a3fe9e5f4cb..4e1c8ac01eba 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
+++ b/Documentation/devicetree/bindings/i2c/i2c-mxs.txt
@@ -3,10 +3,13 @@
3Required properties: 3Required properties:
4- compatible: Should be "fsl,<chip>-i2c" 4- compatible: Should be "fsl,<chip>-i2c"
5- reg: Should contain registers location and length 5- reg: Should contain registers location and length
6- interrupts: Should contain ERROR and DMA interrupts 6- interrupts: Should contain ERROR interrupt number
7- clock-frequency: Desired I2C bus clock frequency in Hz. 7- clock-frequency: Desired I2C bus clock frequency in Hz.
8 Only 100000Hz and 400000Hz modes are supported. 8 Only 100000Hz and 400000Hz modes are supported.
9- fsl,i2c-dma-channel: APBX DMA channel for the I2C 9- dmas: DMA specifier, consisting of a phandle to DMA controller node
10 and I2C DMA channel ID.
11 Refer to dma.txt and fsl-mxs-dma.txt for details.
12- dma-names: Must be "rx-tx".
10 13
11Examples: 14Examples:
12 15
@@ -15,7 +18,8 @@ i2c0: i2c@80058000 {
15 #size-cells = <0>; 18 #size-cells = <0>;
16 compatible = "fsl,imx28-i2c"; 19 compatible = "fsl,imx28-i2c";
17 reg = <0x80058000 2000>; 20 reg = <0x80058000 2000>;
18 interrupts = <111 68>; 21 interrupts = <111>;
19 clock-frequency = <100000>; 22 clock-frequency = <100000>;
20 fsl,i2c-dma-channel = <6>; 23 dmas = <&dma_apbx 6>;
24 dma-names = "rx-tx";
21}; 25};
diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
new file mode 100644
index 000000000000..ef77cc7a0e46
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.txt
@@ -0,0 +1,60 @@
1NVIDIA Tegra20/Tegra30/Tegra114 I2C controller driver.
2
3Required properties:
4- compatible : should be:
5 "nvidia,tegra114-i2c"
6 "nvidia,tegra30-i2c"
7 "nvidia,tegra20-i2c"
8 "nvidia,tegra20-i2c-dvc"
9 Details of compatible are as follows:
10 nvidia,tegra20-i2c-dvc: Tegra20 has specific I2C controller called as DVC I2C
11 controller. This only support master mode of I2C communication. Register
12 interface/offset and interrupts handling are different than generic I2C
13 controller. Driver of DVC I2C controller is only compatible with
14 "nvidia,tegra20-i2c-dvc".
15 nvidia,tegra20-i2c: Tegra20 has 4 generic I2C controller. This can support
16 master and slave mode of I2C communication. The i2c-tegra driver only
17 support master mode of I2C communication. Driver of I2C controller is
18 only compatible with "nvidia,tegra20-i2c".
19 nvidia,tegra30-i2c: Tegra30 has 5 generic I2C controller. This controller is
20 very much similar to Tegra20 I2C controller with additional feature:
21 Continue Transfer Support. This feature helps to implement M_NO_START
22 as per I2C core API transfer flags. Driver of I2C controller is
23 compatible with "nvidia,tegra30-i2c" to enable the continue transfer
24 support. This is also compatible with "nvidia,tegra20-i2c" without
25 continue transfer support.
26 nvidia,tegra114-i2c: Tegra114 has 5 generic I2C controller. This controller is
27 very much similar to Tegra30 I2C controller with some hardware
28 modification:
29 - Tegra30/Tegra20 I2C controller has 2 clock source called div-clk and
30 fast-clk. Tegra114 has only one clock source called as div-clk and
31 hence clock mechanism is changed in I2C controller.
32 - Tegra30/Tegra20 I2C controller has enabled per packet transfer by
33 default and there is no way to disable it. Tegra114 has this
34 interrupt disable by default and SW need to enable explicitly.
35 Due to above changes, Tegra114 I2C driver makes incompatible with
36 previous hardware driver. Hence, tegra114 I2C controller is compatible
37 with "nvidia,tegra114-i2c".
38- reg: Should contain I2C controller registers physical address and length.
39- interrupts: Should contain I2C controller interrupts.
40- address-cells: Address cells for I2C device address.
41- size-cells: Size of the I2C device address.
42- clocks: Clock ID as per
43 Documentation/devicetree/bindings/clock/tegra<chip-id>.txt
44 for I2C controller.
45- clock-names: Name of the clock:
46 Tegra20/Tegra30 I2C controller: "div-clk and "fast-clk".
47 Tegra114 I2C controller: "div-clk".
48
49Example:
50
51 i2c@7000c000 {
52 compatible = "nvidia,tegra20-i2c";
53 reg = <0x7000c000 0x100>;
54 interrupts = <0 38 0x04>;
55 #address-cells = <1>;
56 #size-cells = <0>;
57 clocks = <&tegra_car 12>, <&tegra_car 124>;
58 clock-names = "div-clk", "fast-clk";
59 status = "disabled";
60 };
diff --git a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
index 54949f6faede..515addc20070 100644
--- a/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
+++ b/Documentation/devicetree/bindings/mmc/mxs-mmc.txt
@@ -9,15 +9,19 @@ and the properties used by the mxsmmc driver.
9Required properties: 9Required properties:
10- compatible: Should be "fsl,<chip>-mmc". The supported chips include 10- compatible: Should be "fsl,<chip>-mmc". The supported chips include
11 imx23 and imx28. 11 imx23 and imx28.
12- interrupts: Should contain ERROR and DMA interrupts 12- interrupts: Should contain ERROR interrupt number
13- fsl,ssp-dma-channel: APBH DMA channel for the SSP 13- dmas: DMA specifier, consisting of a phandle to DMA controller node
14 and SSP DMA channel ID.
15 Refer to dma.txt and fsl-mxs-dma.txt for details.
16- dma-names: Must be "rx-tx".
14 17
15Examples: 18Examples:
16 19
17ssp0: ssp@80010000 { 20ssp0: ssp@80010000 {
18 compatible = "fsl,imx28-mmc"; 21 compatible = "fsl,imx28-mmc";
19 reg = <0x80010000 2000>; 22 reg = <0x80010000 2000>;
20 interrupts = <96 82>; 23 interrupts = <96>;
21 fsl,ssp-dma-channel = <0>; 24 dmas = <&dma_apbh 0>;
25 dma-names = "rx-tx";
22 bus-width = <8>; 26 bus-width = <8>;
23}; 27};
diff --git a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
index 3fb3f9015365..551b2a179d01 100644
--- a/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
+++ b/Documentation/devicetree/bindings/mtd/gpmi-nand.txt
@@ -7,10 +7,12 @@ Required properties:
7 - compatible : should be "fsl,<chip>-gpmi-nand" 7 - compatible : should be "fsl,<chip>-gpmi-nand"
8 - reg : should contain registers location and length for gpmi and bch. 8 - reg : should contain registers location and length for gpmi and bch.
9 - reg-names: Should contain the reg names "gpmi-nand" and "bch" 9 - reg-names: Should contain the reg names "gpmi-nand" and "bch"
10 - interrupts : The first is the DMA interrupt number for GPMI. 10 - interrupts : BCH interrupt number.
11 The second is the BCH interrupt number. 11 - interrupt-names : Should be "bch".
12 - interrupt-names : The interrupt names "gpmi-dma", "bch"; 12 - dmas: DMA specifier, consisting of a phandle to DMA controller node
13 - fsl,gpmi-dma-channel : Should contain the dma channel it uses. 13 and GPMI DMA channel ID.
14 Refer to dma.txt and fsl-mxs-dma.txt for details.
15 - dma-names: Must be "rx-tx".
14 16
15Optional properties: 17Optional properties:
16 - nand-on-flash-bbt: boolean to enable on flash bbt option if not 18 - nand-on-flash-bbt: boolean to enable on flash bbt option if not
@@ -27,9 +29,10 @@ gpmi-nand@8000c000 {
27 #size-cells = <1>; 29 #size-cells = <1>;
28 reg = <0x8000c000 2000>, <0x8000a000 2000>; 30 reg = <0x8000c000 2000>, <0x8000a000 2000>;
29 reg-names = "gpmi-nand", "bch"; 31 reg-names = "gpmi-nand", "bch";
30 interrupts = <88>, <41>; 32 interrupts = <41>;
31 interrupt-names = "gpmi-dma", "bch"; 33 interrupt-names = "bch";
32 fsl,gpmi-dma-channel = <4>; 34 dmas = <&dma_apbh 4>;
35 dma-names = "rx-tx";
33 36
34 partition@0 { 37 partition@0 {
35 ... 38 ...
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
index f7e8e8f4d9a3..3077370c89af 100644
--- a/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
@@ -70,6 +70,10 @@ Optional subnode-properties:
70 0: Disable the internal pull-up 70 0: Disable the internal pull-up
71 1: Enable the internal pull-up 71 1: Enable the internal pull-up
72 72
73Note that when enabling the pull-up, the internal pad keeper gets disabled.
74Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
75will only disable the internal pad keeper.
76
73Examples: 77Examples:
74 78
75pinctrl@80018000 { 79pinctrl@80018000 {
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
index b77a97c9101e..05ffecb57103 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-alc5632.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-alc5632" 4- compatible : "nvidia,tegra-audio-alc5632"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
7 Each entry is a pair of strings, the first being the connection's sink, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -56,4 +61,7 @@ sound {
56 61
57 nvidia,i2s-controller = <&tegra_i2s1>; 62 nvidia,i2s-controller = <&tegra_i2s1>;
58 nvidia,audio-codec = <&alc5632>; 63 nvidia,audio-codec = <&alc5632>;
64
65 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
66 clock-names = "pll_a", "pll_a_out0", "mclk";
59}; 67};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
index 04b14cfb1f16..ef1fe7358279 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-trimslice.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex for TrimSlice
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-trimslice" 4- compatible : "nvidia,tegra-audio-trimslice"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller 10- nvidia,i2s-controller : The phandle of the Tegra I2S1 controller
6- nvidia,audio-codec : The phandle of the WM8903 audio codec 11- nvidia,audio-codec : The phandle of the WM8903 audio codec
7 12
@@ -11,4 +16,6 @@ sound {
11 compatible = "nvidia,tegra-audio-trimslice"; 16 compatible = "nvidia,tegra-audio-trimslice";
12 nvidia,i2s-controller = <&tegra_i2s1>; 17 nvidia,i2s-controller = <&tegra_i2s1>;
13 nvidia,audio-codec = <&codec>; 18 nvidia,audio-codec = <&codec>;
19 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
20 clock-names = "pll_a", "pll_a_out0", "mclk";
14}; 21};
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
index c4dd39ce6165..d14510613a7f 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8753.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-wm8753" 4- compatible : "nvidia,tegra-audio-wm8753"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
7 Each entry is a pair of strings, the first being the connection's sink, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -50,5 +55,8 @@ sound {
50 55
51 nvidia,i2s-controller = <&i2s1>; 56 nvidia,i2s-controller = <&i2s1>;
52 nvidia,audio-codec = <&wm8753>; 57 nvidia,audio-codec = <&wm8753>;
58
59 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
60 clock-names = "pll_a", "pll_a_out0", "mclk";
53}; 61};
54 62
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
index d5b0da8bf1d8..3bf722deb722 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm8903.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-wm8903" 4- compatible : "nvidia,tegra-audio-wm8903"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
7 Each entry is a pair of strings, the first being the connection's sink, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -67,5 +72,8 @@ sound {
67 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 72 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
68 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */ 73 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */
69 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 74 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */
75
76 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
77 clock-names = "pll_a", "pll_a_out0", "mclk";
70}; 78};
71 79
diff --git a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
index be35d34e8b26..ad589b163639 100644
--- a/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
+++ b/Documentation/devicetree/bindings/sound/nvidia,tegra-audio-wm9712.txt
@@ -2,6 +2,11 @@ NVIDIA Tegra audio complex
2 2
3Required properties: 3Required properties:
4- compatible : "nvidia,tegra-audio-wm9712" 4- compatible : "nvidia,tegra-audio-wm9712"
5- clocks : Must contain an entry for each entry in clock-names.
6- clock-names : Must include the following entries:
7 "pll_a" (The Tegra clock of that name),
8 "pll_a_out0" (The Tegra clock of that name),
9 "mclk" (The Tegra cdev1/extern1 clock, which feeds the CODEC's mclk)
5- nvidia,model : The user-visible name of this sound complex. 10- nvidia,model : The user-visible name of this sound complex.
6- nvidia,audio-routing : A list of the connections between audio components. 11- nvidia,audio-routing : A list of the connections between audio components.
7 Each entry is a pair of strings, the first being the connection's sink, 12 Each entry is a pair of strings, the first being the connection's sink,
@@ -48,4 +53,7 @@ sound {
48 "Mic", "MIC1"; 53 "Mic", "MIC1";
49 54
50 nvidia,ac97-controller = <&ac97>; 55 nvidia,ac97-controller = <&ac97>;
56
57 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 93>;
58 clock-names = "pll_a", "pll_a_out0", "mclk";
51}; 59};
diff --git a/Documentation/devicetree/bindings/spi/mxs-spi.txt b/Documentation/devicetree/bindings/spi/mxs-spi.txt
index e2e13957c2a4..3499b73293c2 100644
--- a/Documentation/devicetree/bindings/spi/mxs-spi.txt
+++ b/Documentation/devicetree/bindings/spi/mxs-spi.txt
@@ -3,8 +3,11 @@
3Required properties: 3Required properties:
4- compatible: Should be "fsl,<soc>-spi", where soc is "imx23" or "imx28" 4- compatible: Should be "fsl,<soc>-spi", where soc is "imx23" or "imx28"
5- reg: Offset and length of the register set for the device 5- reg: Offset and length of the register set for the device
6- interrupts: Should contain SSP interrupts (error irq first, dma irq second) 6- interrupts: Should contain SSP ERROR interrupt
7- fsl,ssp-dma-channel: APBX DMA channel for the SSP 7- dmas: DMA specifier, consisting of a phandle to DMA controller node
8 and SSP DMA channel ID.
9 Refer to dma.txt and fsl-mxs-dma.txt for details.
10- dma-names: Must be "rx-tx".
8 11
9Optional properties: 12Optional properties:
10- clock-frequency : Input clock frequency to the SPI block in Hz. 13- clock-frequency : Input clock frequency to the SPI block in Hz.
@@ -17,6 +20,7 @@ ssp0: ssp@80010000 {
17 #size-cells = <0>; 20 #size-cells = <0>;
18 compatible = "fsl,imx28-spi"; 21 compatible = "fsl,imx28-spi";
19 reg = <0x80010000 0x2000>; 22 reg = <0x80010000 0x2000>;
20 interrupts = <96 82>; 23 interrupts = <96>;
21 fsl,ssp-dma-channel = <0>; 24 dmas = <&dma_apbh 0>;
25 dma-names = "rx-tx";
22}; 26};
diff --git a/Documentation/devicetree/bindings/spi/spi-davinci.txt b/Documentation/devicetree/bindings/spi/spi-davinci.txt
new file mode 100644
index 000000000000..6d0ac8d0ad9b
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/spi-davinci.txt
@@ -0,0 +1,51 @@
1Davinci SPI controller device bindings
2
3Required properties:
4- #address-cells: number of cells required to define a chip select
5 address on the SPI bus. Should be set to 1.
6- #size-cells: should be zero.
7- compatible:
8 - "ti,dm6441-spi" for SPI used similar to that on DM644x SoC family
9 - "ti,da830-spi" for SPI used similar to that on DA8xx SoC family
10- reg: Offset and length of SPI controller register space
11- num-cs: Number of chip selects
12- ti,davinci-spi-intr-line: interrupt line used to connect the SPI
13 IP to the interrupt controller within the SoC. Possible values
14 are 0 and 1. Manual says one of the two possible interrupt
15 lines can be tied to the interrupt controller. Set this
16 based on a specifc SoC configuration.
17- interrupts: interrupt number mapped to CPU.
18- clocks: spi clk phandle
19
20Example of a NOR flash slave device (n25q032) connected to DaVinci
21SPI controller device over the SPI bus.
22
23spi0:spi@20BF0000 {
24 #address-cells = <1>;
25 #size-cells = <0>;
26 compatible = "ti,dm6446-spi";
27 reg = <0x20BF0000 0x1000>;
28 num-cs = <4>;
29 ti,davinci-spi-intr-line = <0>;
30 interrupts = <338>;
31 clocks = <&clkspi>;
32
33 flash: n25q032@0 {
34 #address-cells = <1>;
35 #size-cells = <1>;
36 compatible = "st,m25p32";
37 spi-max-frequency = <25000000>;
38 reg = <0>;
39
40 partition@0 {
41 label = "u-boot-spl";
42 reg = <0x0 0x80000>;
43 read-only;
44 };
45
46 partition@1 {
47 label = "test";
48 reg = <0x80000 0x380000>;
49 };
50 };
51};
diff --git a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
index 273a8d5b3300..2c00ec64628e 100644
--- a/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
+++ b/Documentation/devicetree/bindings/tty/serial/fsl-mxs-auart.txt
@@ -5,20 +5,18 @@ Required properties:
5 imx23 and imx28. 5 imx23 and imx28.
6- reg : Address and length of the register set for the device 6- reg : Address and length of the register set for the device
7- interrupts : Should contain the auart interrupt numbers 7- interrupts : Should contain the auart interrupt numbers
8 8- dmas: DMA specifier, consisting of a phandle to DMA controller node
9Optional properties: 9 and AUART DMA channel ID.
10- fsl,auart-dma-channel : The DMA channels, the first is for RX, the other 10 Refer to dma.txt and fsl-mxs-dma.txt for details.
11 is for TX. If you add this property, it also means that you 11- dma-names: "rx" for RX channel, "tx" for TX channel.
12 will enable the DMA support for the auart.
13 Note: due to the hardware bug in imx23(see errata : 2836),
14 only the imx28 can enable the DMA support for the auart.
15 12
16Example: 13Example:
17auart0: serial@8006a000 { 14auart0: serial@8006a000 {
18 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 15 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
19 reg = <0x8006a000 0x2000>; 16 reg = <0x8006a000 0x2000>;
20 interrupts = <112 70 71>; 17 interrupts = <112>;
21 fsl,auart-dma-channel = <8 9>; 18 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
19 dma-names = "rx", "tx";
22}; 20};
23 21
24Note: Each auart port should have an alias correctly numbered in "aliases" 22Note: Each auart port should have an alias correctly numbered in "aliases"
diff --git a/Documentation/devicetree/bindings/usb/exynos-usb.txt b/Documentation/devicetree/bindings/usb/exynos-usb.txt
index f66fcddba46f..b3abde736017 100644
--- a/Documentation/devicetree/bindings/usb/exynos-usb.txt
+++ b/Documentation/devicetree/bindings/usb/exynos-usb.txt
@@ -10,6 +10,8 @@ Required properties:
10 - reg: physical base address of the controller and length of memory mapped 10 - reg: physical base address of the controller and length of memory mapped
11 region. 11 region.
12 - interrupts: interrupt number to the cpu. 12 - interrupts: interrupt number to the cpu.
13 - clocks: from common clock binding: handle to usb clock.
14 - clock-names: from common clock binding: Shall be "usbhost".
13 15
14Optional properties: 16Optional properties:
15 - samsung,vbus-gpio: if present, specifies the GPIO that 17 - samsung,vbus-gpio: if present, specifies the GPIO that
@@ -22,6 +24,9 @@ Example:
22 reg = <0x12110000 0x100>; 24 reg = <0x12110000 0x100>;
23 interrupts = <0 71 0>; 25 interrupts = <0 71 0>;
24 samsung,vbus-gpio = <&gpx2 6 1 3 3>; 26 samsung,vbus-gpio = <&gpx2 6 1 3 3>;
27
28 clocks = <&clock 285>;
29 clock-names = "usbhost";
25 }; 30 };
26 31
27OHCI 32OHCI
@@ -31,10 +36,15 @@ Required properties:
31 - reg: physical base address of the controller and length of memory mapped 36 - reg: physical base address of the controller and length of memory mapped
32 region. 37 region.
33 - interrupts: interrupt number to the cpu. 38 - interrupts: interrupt number to the cpu.
39 - clocks: from common clock binding: handle to usb clock.
40 - clock-names: from common clock binding: Shall be "usbhost".
34 41
35Example: 42Example:
36 usb@12120000 { 43 usb@12120000 {
37 compatible = "samsung,exynos4210-ohci"; 44 compatible = "samsung,exynos4210-ohci";
38 reg = <0x12120000 0x100>; 45 reg = <0x12120000 0x100>;
39 interrupts = <0 71 0>; 46 interrupts = <0 71 0>;
47
48 clocks = <&clock 285>;
49 clock-names = "usbhost";
40 }; 50 };
diff --git a/Documentation/devicetree/bindings/usb/omap-usb.txt b/Documentation/devicetree/bindings/usb/omap-usb.txt
index 662f0f1d2315..d4769f343d6c 100644
--- a/Documentation/devicetree/bindings/usb/omap-usb.txt
+++ b/Documentation/devicetree/bindings/usb/omap-usb.txt
@@ -18,6 +18,7 @@ OMAP MUSB GLUE
18 represents PERIPHERAL. 18 represents PERIPHERAL.
19 - power : Should be "50". This signifies the controller can supply upto 19 - power : Should be "50". This signifies the controller can supply upto
20 100mA when operating in host mode. 20 100mA when operating in host mode.
21 - usb-phy : the phandle for the PHY device
21 22
22Optional properties: 23Optional properties:
23 - ctrl-module : phandle of the control module this glue uses to write to 24 - ctrl-module : phandle of the control module this glue uses to write to
diff --git a/Documentation/devicetree/bindings/video/samsung-fimd.txt b/Documentation/devicetree/bindings/video/samsung-fimd.txt
new file mode 100644
index 000000000000..778838a0336a
--- /dev/null
+++ b/Documentation/devicetree/bindings/video/samsung-fimd.txt
@@ -0,0 +1,65 @@
1Device-Tree bindings for Samsung SoC display controller (FIMD)
2
3FIMD (Fully Interactive Mobile Display) is the Display Controller for the
4Samsung series of SoCs which transfers the image data from a video memory
5buffer to an external LCD interface.
6
7Required properties:
8- compatible: value should be one of the following
9 "samsung,s3c2443-fimd"; /* for S3C24XX SoCs */
10 "samsung,s3c6400-fimd"; /* for S3C64XX SoCs */
11 "samsung,s5p6440-fimd"; /* for S5P64X0 SoCs */
12 "samsung,s5pc100-fimd"; /* for S5PC100 SoC */
13 "samsung,s5pv210-fimd"; /* for S5PV210 SoC */
14 "samsung,exynos4210-fimd"; /* for Exynos4 SoCs */
15 "samsung,exynos5250-fimd"; /* for Exynos5 SoCs */
16
17- reg: physical base address and length of the FIMD registers set.
18
19- interrupt-parent: should be the phandle of the fimd controller's
20 parent interrupt controller.
21
22- interrupts: should contain a list of all FIMD IP block interrupts in the
23 order: FIFO Level, VSYNC, LCD_SYSTEM. The interrupt specifier
24 format depends on the interrupt controller used.
25
26- interrupt-names: should contain the interrupt names: "fifo", "vsync",
27 "lcd_sys", in the same order as they were listed in the interrupts
28 property.
29
30- pinctrl-0: pin control group to be used for this controller.
31
32- pinctrl-names: must contain a "default" entry.
33
34- clocks: must include clock specifiers corresponding to entries in the
35 clock-names property.
36
37- clock-names: list of clock names sorted in the same order as the clocks
38 property. Must contain "sclk_fimd" and "fimd".
39
40Optional Properties:
41- samsung,power-domain: a phandle to FIMD power domain node.
42
43Example:
44
45SoC specific DT entry:
46
47 fimd@11c00000 {
48 compatible = "samsung,exynos4210-fimd";
49 interrupt-parent = <&combiner>;
50 reg = <0x11c00000 0x20000>;
51 interrupt-names = "fifo", "vsync", "lcd_sys";
52 interrupts = <11 0>, <11 1>, <11 2>;
53 clocks = <&clock 140>, <&clock 283>;
54 clock-names = "sclk_fimd", "fimd";
55 samsung,power-domain = <&pd_lcd0>;
56 status = "disabled";
57 };
58
59Board specific DT entry:
60
61 fimd@11c00000 {
62 pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
63 pinctrl-names = "default";
64 status = "okay";
65 };
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 2ab88e91e65f..e6611eaa2885 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -53,6 +53,7 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
53 exynos4412-smdk4412.dtb \ 53 exynos4412-smdk4412.dtb \
54 exynos4412-origen.dtb \ 54 exynos4412-origen.dtb \
55 exynos5250-arndale.dtb \ 55 exynos5250-arndale.dtb \
56 exynos5440-sd5v1.dtb \
56 exynos5250-smdk5250.dtb \ 57 exynos5250-smdk5250.dtb \
57 exynos5250-snow.dtb \ 58 exynos5250-snow.dtb \
58 exynos5440-ssdk5440.dtb 59 exynos5440-ssdk5440.dtb
@@ -134,10 +135,14 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
134 imx28-tx28.dtb 135 imx28-tx28.dtb
135dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb 136dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb
136dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \ 137dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
138 omap3430-sdp.dtb \
137 omap3-beagle.dtb \ 139 omap3-beagle.dtb \
140 omap3-devkit8000.dtb \
138 omap3-beagle-xm.dtb \ 141 omap3-beagle-xm.dtb \
139 omap3-evm.dtb \ 142 omap3-evm.dtb \
140 omap3-tobi.dtb \ 143 omap3-tobi.dtb \
144 omap3-igep0020.dtb \
145 omap3-igep0030.dtb \
141 omap4-panda.dtb \ 146 omap4-panda.dtb \
142 omap4-panda-a4.dtb \ 147 omap4-panda-a4.dtb \
143 omap4-panda-es.dtb \ 148 omap4-panda-es.dtb \
diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
index 11b240c5d323..5302f79c05b7 100644
--- a/arch/arm/boot/dts/am335x-bone.dts
+++ b/arch/arm/boot/dts/am335x-bone.dts
@@ -43,7 +43,7 @@
43 status = "okay"; 43 status = "okay";
44 }; 44 };
45 45
46 i2c1: i2c@44e0b000 { 46 i2c0: i2c@44e0b000 {
47 status = "okay"; 47 status = "okay";
48 clock-frequency = <400000>; 48 clock-frequency = <400000>;
49 49
@@ -59,27 +59,27 @@
59 59
60 led@2 { 60 led@2 {
61 label = "beaglebone:green:heartbeat"; 61 label = "beaglebone:green:heartbeat";
62 gpios = <&gpio2 21 0>; 62 gpios = <&gpio1 21 0>;
63 linux,default-trigger = "heartbeat"; 63 linux,default-trigger = "heartbeat";
64 default-state = "off"; 64 default-state = "off";
65 }; 65 };
66 66
67 led@3 { 67 led@3 {
68 label = "beaglebone:green:mmc0"; 68 label = "beaglebone:green:mmc0";
69 gpios = <&gpio2 22 0>; 69 gpios = <&gpio1 22 0>;
70 linux,default-trigger = "mmc0"; 70 linux,default-trigger = "mmc0";
71 default-state = "off"; 71 default-state = "off";
72 }; 72 };
73 73
74 led@4 { 74 led@4 {
75 label = "beaglebone:green:usr2"; 75 label = "beaglebone:green:usr2";
76 gpios = <&gpio2 23 0>; 76 gpios = <&gpio1 23 0>;
77 default-state = "off"; 77 default-state = "off";
78 }; 78 };
79 79
80 led@5 { 80 led@5 {
81 label = "beaglebone:green:usr3"; 81 label = "beaglebone:green:usr3";
82 gpios = <&gpio2 24 0>; 82 gpios = <&gpio1 24 0>;
83 default-state = "off"; 83 default-state = "off";
84 }; 84 };
85 }; 85 };
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index d6496440fcea..0423298a26fe 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -51,7 +51,7 @@
51 status = "okay"; 51 status = "okay";
52 }; 52 };
53 53
54 i2c1: i2c@44e0b000 { 54 i2c0: i2c@44e0b000 {
55 status = "okay"; 55 status = "okay";
56 clock-frequency = <400000>; 56 clock-frequency = <400000>;
57 57
@@ -60,7 +60,7 @@
60 }; 60 };
61 }; 61 };
62 62
63 i2c2: i2c@4802a000 { 63 i2c1: i2c@4802a000 {
64 status = "okay"; 64 status = "okay";
65 clock-frequency = <100000>; 65 clock-frequency = <100000>;
66 66
@@ -123,12 +123,12 @@
123 debounce-delay-ms = <5>; 123 debounce-delay-ms = <5>;
124 col-scan-delay-us = <2>; 124 col-scan-delay-us = <2>;
125 125
126 row-gpios = <&gpio2 25 0 /* Bank1, pin25 */ 126 row-gpios = <&gpio1 25 0 /* Bank1, pin25 */
127 &gpio2 26 0 /* Bank1, pin26 */ 127 &gpio1 26 0 /* Bank1, pin26 */
128 &gpio2 27 0>; /* Bank1, pin27 */ 128 &gpio1 27 0>; /* Bank1, pin27 */
129 129
130 col-gpios = <&gpio2 21 0 /* Bank1, pin21 */ 130 col-gpios = <&gpio1 21 0 /* Bank1, pin21 */
131 &gpio2 22 0>; /* Bank1, pin22 */ 131 &gpio1 22 0>; /* Bank1, pin22 */
132 132
133 linux,keymap = <0x0000008b /* MENU */ 133 linux,keymap = <0x0000008b /* MENU */
134 0x0100009e /* BACK */ 134 0x0100009e /* BACK */
@@ -147,14 +147,14 @@
147 switch@9 { 147 switch@9 {
148 label = "volume-up"; 148 label = "volume-up";
149 linux,code = <115>; 149 linux,code = <115>;
150 gpios = <&gpio1 2 1>; 150 gpios = <&gpio0 2 1>;
151 gpio-key,wakeup; 151 gpio-key,wakeup;
152 }; 152 };
153 153
154 switch@10 { 154 switch@10 {
155 label = "volume-down"; 155 label = "volume-down";
156 linux,code = <114>; 156 linux,code = <114>;
157 gpios = <&gpio1 3 1>; 157 gpios = <&gpio0 3 1>;
158 gpio-key,wakeup; 158 gpio-key,wakeup;
159 }; 159 };
160 }; 160 };
diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts
index f5a6162a4ff2..f67c360844f4 100644
--- a/arch/arm/boot/dts/am335x-evmsk.dts
+++ b/arch/arm/boot/dts/am335x-evmsk.dts
@@ -58,7 +58,7 @@
58 status = "okay"; 58 status = "okay";
59 }; 59 };
60 60
61 i2c1: i2c@44e0b000 { 61 i2c0: i2c@44e0b000 {
62 status = "okay"; 62 status = "okay";
63 clock-frequency = <400000>; 63 clock-frequency = <400000>;
64 64
@@ -115,26 +115,26 @@
115 115
116 led@1 { 116 led@1 {
117 label = "evmsk:green:usr0"; 117 label = "evmsk:green:usr0";
118 gpios = <&gpio2 4 0>; 118 gpios = <&gpio1 4 0>;
119 default-state = "off"; 119 default-state = "off";
120 }; 120 };
121 121
122 led@2 { 122 led@2 {
123 label = "evmsk:green:usr1"; 123 label = "evmsk:green:usr1";
124 gpios = <&gpio2 5 0>; 124 gpios = <&gpio1 5 0>;
125 default-state = "off"; 125 default-state = "off";
126 }; 126 };
127 127
128 led@3 { 128 led@3 {
129 label = "evmsk:green:mmc0"; 129 label = "evmsk:green:mmc0";
130 gpios = <&gpio2 6 0>; 130 gpios = <&gpio1 6 0>;
131 linux,default-trigger = "mmc0"; 131 linux,default-trigger = "mmc0";
132 default-state = "off"; 132 default-state = "off";
133 }; 133 };
134 134
135 led@4 { 135 led@4 {
136 label = "evmsk:green:heartbeat"; 136 label = "evmsk:green:heartbeat";
137 gpios = <&gpio2 7 0>; 137 gpios = <&gpio1 7 0>;
138 linux,default-trigger = "heartbeat"; 138 linux,default-trigger = "heartbeat";
139 default-state = "off"; 139 default-state = "off";
140 }; 140 };
@@ -148,26 +148,26 @@
148 switch@1 { 148 switch@1 {
149 label = "button0"; 149 label = "button0";
150 linux,code = <0x100>; 150 linux,code = <0x100>;
151 gpios = <&gpio3 3 0>; 151 gpios = <&gpio2 3 0>;
152 }; 152 };
153 153
154 switch@2 { 154 switch@2 {
155 label = "button1"; 155 label = "button1";
156 linux,code = <0x101>; 156 linux,code = <0x101>;
157 gpios = <&gpio3 2 0>; 157 gpios = <&gpio2 2 0>;
158 }; 158 };
159 159
160 switch@3 { 160 switch@3 {
161 label = "button2"; 161 label = "button2";
162 linux,code = <0x102>; 162 linux,code = <0x102>;
163 gpios = <&gpio1 30 0>; 163 gpios = <&gpio0 30 0>;
164 gpio-key,wakeup; 164 gpio-key,wakeup;
165 }; 165 };
166 166
167 switch@4 { 167 switch@4 {
168 label = "button3"; 168 label = "button3";
169 linux,code = <0x103>; 169 linux,code = <0x103>;
170 gpios = <&gpio3 5 0>; 170 gpios = <&gpio2 5 0>;
171 }; 171 };
172 }; 172 };
173}; 173};
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 91fe4f148f80..d1101103aa51 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -21,6 +21,8 @@
21 serial3 = &uart4; 21 serial3 = &uart4;
22 serial4 = &uart5; 22 serial4 = &uart5;
23 serial5 = &uart6; 23 serial5 = &uart6;
24 d_can0 = &dcan0;
25 d_can1 = &dcan1;
24 }; 26 };
25 27
26 cpus { 28 cpus {
@@ -87,7 +89,7 @@
87 reg = <0x48200000 0x1000>; 89 reg = <0x48200000 0x1000>;
88 }; 90 };
89 91
90 gpio1: gpio@44e07000 { 92 gpio0: gpio@44e07000 {
91 compatible = "ti,omap4-gpio"; 93 compatible = "ti,omap4-gpio";
92 ti,hwmods = "gpio1"; 94 ti,hwmods = "gpio1";
93 gpio-controller; 95 gpio-controller;
@@ -98,7 +100,7 @@
98 interrupts = <96>; 100 interrupts = <96>;
99 }; 101 };
100 102
101 gpio2: gpio@4804c000 { 103 gpio1: gpio@4804c000 {
102 compatible = "ti,omap4-gpio"; 104 compatible = "ti,omap4-gpio";
103 ti,hwmods = "gpio2"; 105 ti,hwmods = "gpio2";
104 gpio-controller; 106 gpio-controller;
@@ -109,7 +111,7 @@
109 interrupts = <98>; 111 interrupts = <98>;
110 }; 112 };
111 113
112 gpio3: gpio@481ac000 { 114 gpio2: gpio@481ac000 {
113 compatible = "ti,omap4-gpio"; 115 compatible = "ti,omap4-gpio";
114 ti,hwmods = "gpio3"; 116 ti,hwmods = "gpio3";
115 gpio-controller; 117 gpio-controller;
@@ -120,7 +122,7 @@
120 interrupts = <32>; 122 interrupts = <32>;
121 }; 123 };
122 124
123 gpio4: gpio@481ae000 { 125 gpio3: gpio@481ae000 {
124 compatible = "ti,omap4-gpio"; 126 compatible = "ti,omap4-gpio";
125 ti,hwmods = "gpio4"; 127 ti,hwmods = "gpio4";
126 gpio-controller; 128 gpio-controller;
@@ -185,7 +187,7 @@
185 status = "disabled"; 187 status = "disabled";
186 }; 188 };
187 189
188 i2c1: i2c@44e0b000 { 190 i2c0: i2c@44e0b000 {
189 compatible = "ti,omap4-i2c"; 191 compatible = "ti,omap4-i2c";
190 #address-cells = <1>; 192 #address-cells = <1>;
191 #size-cells = <0>; 193 #size-cells = <0>;
@@ -195,7 +197,7 @@
195 status = "disabled"; 197 status = "disabled";
196 }; 198 };
197 199
198 i2c2: i2c@4802a000 { 200 i2c1: i2c@4802a000 {
199 compatible = "ti,omap4-i2c"; 201 compatible = "ti,omap4-i2c";
200 #address-cells = <1>; 202 #address-cells = <1>;
201 #size-cells = <0>; 203 #size-cells = <0>;
@@ -205,7 +207,7 @@
205 status = "disabled"; 207 status = "disabled";
206 }; 208 };
207 209
208 i2c3: i2c@4819c000 { 210 i2c2: i2c@4819c000 {
209 compatible = "ti,omap4-i2c"; 211 compatible = "ti,omap4-i2c";
210 #address-cells = <1>; 212 #address-cells = <1>;
211 #size-cells = <0>; 213 #size-cells = <0>;
@@ -225,7 +227,8 @@
225 dcan0: d_can@481cc000 { 227 dcan0: d_can@481cc000 {
226 compatible = "bosch,d_can"; 228 compatible = "bosch,d_can";
227 ti,hwmods = "d_can0"; 229 ti,hwmods = "d_can0";
228 reg = <0x481cc000 0x2000>; 230 reg = <0x481cc000 0x2000
231 0x44e10644 0x4>;
229 interrupts = <52>; 232 interrupts = <52>;
230 status = "disabled"; 233 status = "disabled";
231 }; 234 };
@@ -233,13 +236,14 @@
233 dcan1: d_can@481d0000 { 236 dcan1: d_can@481d0000 {
234 compatible = "bosch,d_can"; 237 compatible = "bosch,d_can";
235 ti,hwmods = "d_can1"; 238 ti,hwmods = "d_can1";
236 reg = <0x481d0000 0x2000>; 239 reg = <0x481d0000 0x2000
240 0x44e10644 0x4>;
237 interrupts = <55>; 241 interrupts = <55>;
238 status = "disabled"; 242 status = "disabled";
239 }; 243 };
240 244
241 timer1: timer@44e31000 { 245 timer1: timer@44e31000 {
242 compatible = "ti,omap2-timer"; 246 compatible = "ti,am335x-timer-1ms";
243 reg = <0x44e31000 0x400>; 247 reg = <0x44e31000 0x400>;
244 interrupts = <67>; 248 interrupts = <67>;
245 ti,hwmods = "timer1"; 249 ti,hwmods = "timer1";
@@ -247,21 +251,21 @@
247 }; 251 };
248 252
249 timer2: timer@48040000 { 253 timer2: timer@48040000 {
250 compatible = "ti,omap2-timer"; 254 compatible = "ti,am335x-timer";
251 reg = <0x48040000 0x400>; 255 reg = <0x48040000 0x400>;
252 interrupts = <68>; 256 interrupts = <68>;
253 ti,hwmods = "timer2"; 257 ti,hwmods = "timer2";
254 }; 258 };
255 259
256 timer3: timer@48042000 { 260 timer3: timer@48042000 {
257 compatible = "ti,omap2-timer"; 261 compatible = "ti,am335x-timer";
258 reg = <0x48042000 0x400>; 262 reg = <0x48042000 0x400>;
259 interrupts = <69>; 263 interrupts = <69>;
260 ti,hwmods = "timer3"; 264 ti,hwmods = "timer3";
261 }; 265 };
262 266
263 timer4: timer@48044000 { 267 timer4: timer@48044000 {
264 compatible = "ti,omap2-timer"; 268 compatible = "ti,am335x-timer";
265 reg = <0x48044000 0x400>; 269 reg = <0x48044000 0x400>;
266 interrupts = <92>; 270 interrupts = <92>;
267 ti,hwmods = "timer4"; 271 ti,hwmods = "timer4";
@@ -269,7 +273,7 @@
269 }; 273 };
270 274
271 timer5: timer@48046000 { 275 timer5: timer@48046000 {
272 compatible = "ti,omap2-timer"; 276 compatible = "ti,am335x-timer";
273 reg = <0x48046000 0x400>; 277 reg = <0x48046000 0x400>;
274 interrupts = <93>; 278 interrupts = <93>;
275 ti,hwmods = "timer5"; 279 ti,hwmods = "timer5";
@@ -277,7 +281,7 @@
277 }; 281 };
278 282
279 timer6: timer@48048000 { 283 timer6: timer@48048000 {
280 compatible = "ti,omap2-timer"; 284 compatible = "ti,am335x-timer";
281 reg = <0x48048000 0x400>; 285 reg = <0x48048000 0x400>;
282 interrupts = <94>; 286 interrupts = <94>;
283 ti,hwmods = "timer6"; 287 ti,hwmods = "timer6";
@@ -285,7 +289,7 @@
285 }; 289 };
286 290
287 timer7: timer@4804a000 { 291 timer7: timer@4804a000 {
288 compatible = "ti,omap2-timer"; 292 compatible = "ti,am335x-timer";
289 reg = <0x4804a000 0x400>; 293 reg = <0x4804a000 0x400>;
290 interrupts = <95>; 294 interrupts = <95>;
291 ti,hwmods = "timer7"; 295 ti,hwmods = "timer7";
@@ -305,7 +309,7 @@
305 #address-cells = <1>; 309 #address-cells = <1>;
306 #size-cells = <0>; 310 #size-cells = <0>;
307 reg = <0x48030000 0x400>; 311 reg = <0x48030000 0x400>;
308 interrupt = <65>; 312 interrupts = <65>;
309 ti,spi-num-cs = <2>; 313 ti,spi-num-cs = <2>;
310 ti,hwmods = "spi0"; 314 ti,hwmods = "spi0";
311 status = "disabled"; 315 status = "disabled";
@@ -316,7 +320,7 @@
316 #address-cells = <1>; 320 #address-cells = <1>;
317 #size-cells = <0>; 321 #size-cells = <0>;
318 reg = <0x481a0000 0x400>; 322 reg = <0x481a0000 0x400>;
319 interrupt = <125>; 323 interrupts = <125>;
320 ti,spi-num-cs = <2>; 324 ti,spi-num-cs = <2>;
321 ti,hwmods = "spi1"; 325 ti,hwmods = "spi1";
322 status = "disabled"; 326 status = "disabled";
diff --git a/arch/arm/boot/dts/am3517-evm.dts b/arch/arm/boot/dts/am3517-evm.dts
index 474f760ecadf..e9b5bdae4908 100644
--- a/arch/arm/boot/dts/am3517-evm.dts
+++ b/arch/arm/boot/dts/am3517-evm.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TI AM3517 EVM (AM3517/05)"; 13 model = "TI AM3517 EVM (AM3517/05)";
diff --git a/arch/arm/boot/dts/am3517_mt_ventoux.dts b/arch/arm/boot/dts/am3517_mt_ventoux.dts
index 5eb26d7d9b4e..556868388a23 100644
--- a/arch/arm/boot/dts/am3517_mt_ventoux.dts
+++ b/arch/arm/boot/dts/am3517_mt_ventoux.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TeeJet Mt.Ventoux"; 13 model = "TeeJet Mt.Ventoux";
diff --git a/arch/arm/boot/dts/armada-370-db.dts b/arch/arm/boot/dts/armada-370-db.dts
index 6403acdbb75f..2353b1f13704 100644
--- a/arch/arm/boot/dts/armada-370-db.dts
+++ b/arch/arm/boot/dts/armada-370-db.dts
@@ -30,85 +30,87 @@
30 }; 30 };
31 31
32 soc { 32 soc {
33 serial@d0012000 { 33 internal-regs {
34 clock-frequency = <200000000>; 34 serial@12000 {
35 status = "okay"; 35 clock-frequency = <200000000>;
36 }; 36 status = "okay";
37 sata@d00a0000 {
38 nr-ports = <2>;
39 status = "okay";
40 };
41
42 mdio {
43 phy0: ethernet-phy@0 {
44 reg = <0>;
45 }; 37 };
46 38 sata@a0000 {
47 phy1: ethernet-phy@1 { 39 nr-ports = <2>;
48 reg = <1>; 40 status = "okay";
49 }; 41 };
50 };
51 42
52 ethernet@d0070000 { 43 mdio {
53 status = "okay"; 44 phy0: ethernet-phy@0 {
54 phy = <&phy0>; 45 reg = <0>;
55 phy-mode = "rgmii-id"; 46 };
56 };
57 ethernet@d0074000 {
58 status = "okay";
59 phy = <&phy1>;
60 phy-mode = "rgmii-id";
61 };
62 47
63 mvsdio@d00d4000 { 48 phy1: ethernet-phy@1 {
64 pinctrl-0 = <&sdio_pins1>; 49 reg = <1>;
65 pinctrl-names = "default"; 50 };
66 /* 51 };
67 * This device is disabled by default, because
68 * using the SD card connector requires
69 * changing the default CON40 connector
70 * "DB-88F6710_MPP_2xRGMII_DEVICE_Jumper" to a
71 * different connector
72 * "DB-88F6710_MPP_RGMII_SD_Jumper".
73 */
74 status = "disabled";
75 /* No CD or WP GPIOs */
76 };
77 52
78 usb@d0050000 { 53 ethernet@70000 {
79 status = "okay"; 54 status = "okay";
80 }; 55 phy = <&phy0>;
56 phy-mode = "rgmii-id";
57 };
58 ethernet@74000 {
59 status = "okay";
60 phy = <&phy1>;
61 phy-mode = "rgmii-id";
62 };
81 63
82 usb@d0051000 { 64 mvsdio@d4000 {
83 status = "okay"; 65 pinctrl-0 = <&sdio_pins1>;
84 }; 66 pinctrl-names = "default";
67 /*
68 * This device is disabled by default, because
69 * using the SD card connector requires
70 * changing the default CON40 connector
71 * "DB-88F6710_MPP_2xRGMII_DEVICE_Jumper" to a
72 * different connector
73 * "DB-88F6710_MPP_RGMII_SD_Jumper".
74 */
75 status = "disabled";
76 /* No CD or WP GPIOs */
77 };
85 78
86 spi0: spi@d0010600 { 79 usb@50000 {
87 status = "okay"; 80 status = "okay";
81 };
88 82
89 spi-flash@0 { 83 usb@51000 {
90 #address-cells = <1>; 84 status = "okay";
91 #size-cells = <1>;
92 compatible = "mx25l25635e";
93 reg = <0>; /* Chip select 0 */
94 spi-max-frequency = <50000000>;
95 }; 85 };
96 };
97 86
98 pcie-controller { 87 spi0: spi@10600 {
99 status = "okay";
100 /*
101 * The two PCIe units are accessible through
102 * both standard PCIe slots and mini-PCIe
103 * slots on the board.
104 */
105 pcie@1,0 {
106 /* Port 0, Lane 0 */
107 status = "okay"; 88 status = "okay";
89
90 spi-flash@0 {
91 #address-cells = <1>;
92 #size-cells = <1>;
93 compatible = "mx25l25635e";
94 reg = <0>; /* Chip select 0 */
95 spi-max-frequency = <50000000>;
96 };
108 }; 97 };
109 pcie@2,0 { 98
110 /* Port 1, Lane 0 */ 99 pcie-controller {
111 status = "okay"; 100 status = "okay";
101 /*
102 * The two PCIe units are accessible through
103 * both standard PCIe slots and mini-PCIe
104 * slots on the board.
105 */
106 pcie@1,0 {
107 /* Port 0, Lane 0 */
108 status = "okay";
109 };
110 pcie@2,0 {
111 /* Port 1, Lane 0 */
112 status = "okay";
113 };
112 }; 114 };
113 }; 115 };
114 }; 116 };
diff --git a/arch/arm/boot/dts/armada-370-mirabox.dts b/arch/arm/boot/dts/armada-370-mirabox.dts
index 58ee79372206..14e36e19d515 100644
--- a/arch/arm/boot/dts/armada-370-mirabox.dts
+++ b/arch/arm/boot/dts/armada-370-mirabox.dts
@@ -25,113 +25,115 @@
25 }; 25 };
26 26
27 soc { 27 soc {
28 serial@d0012000 { 28 internal-regs {
29 clock-frequency = <200000000>; 29 serial@12000 {
30 status = "okay"; 30 clock-frequency = <200000000>;
31 }; 31 status = "okay";
32 timer@d0020300 {
33 clock-frequency = <600000000>;
34 status = "okay";
35 };
36
37 pinctrl {
38 pwr_led_pin: pwr-led-pin {
39 marvell,pins = "mpp63";
40 marvell,function = "gpo";
41 }; 32 };
42 33 timer@20300 {
43 stat_led_pins: stat-led-pins { 34 clock-frequency = <600000000>;
44 marvell,pins = "mpp64", "mpp65"; 35 status = "okay";
45 marvell,function = "gpio";
46 }; 36 };
47 };
48 37
49 gpio_leds { 38 pinctrl {
50 compatible = "gpio-leds"; 39 pwr_led_pin: pwr-led-pin {
51 pinctrl-names = "default"; 40 marvell,pins = "mpp63";
52 pinctrl-0 = <&pwr_led_pin &stat_led_pins>; 41 marvell,function = "gpo";
42 };
53 43
54 green_pwr_led { 44 stat_led_pins: stat-led-pins {
55 label = "mirabox:green:pwr"; 45 marvell,pins = "mpp64", "mpp65";
56 gpios = <&gpio1 31 1>; 46 marvell,function = "gpio";
57 linux,default-trigger = "heartbeat"; 47 };
58 }; 48 };
59 49
60 blue_stat_led { 50 gpio_leds {
61 label = "mirabox:blue:stat"; 51 compatible = "gpio-leds";
62 gpios = <&gpio2 0 1>; 52 pinctrl-names = "default";
63 linux,default-trigger = "cpu0"; 53 pinctrl-0 = <&pwr_led_pin &stat_led_pins>;
54
55 green_pwr_led {
56 label = "mirabox:green:pwr";
57 gpios = <&gpio1 31 1>;
58 linux,default-trigger = "heartbeat";
59 };
60
61 blue_stat_led {
62 label = "mirabox:blue:stat";
63 gpios = <&gpio2 0 1>;
64 linux,default-trigger = "cpu0";
65 };
66
67 green_stat_led {
68 label = "mirabox:green:stat";
69 gpios = <&gpio2 1 1>;
70 default-state = "off";
71 };
64 }; 72 };
65 73
66 green_stat_led { 74 mdio {
67 label = "mirabox:green:stat"; 75 phy0: ethernet-phy@0 {
68 gpios = <&gpio2 1 1>; 76 reg = <0>;
69 default-state = "off"; 77 };
70 };
71 };
72 78
73 mdio { 79 phy1: ethernet-phy@1 {
74 phy0: ethernet-phy@0 { 80 reg = <1>;
75 reg = <0>; 81 };
76 }; 82 };
77 83 ethernet@70000 {
78 phy1: ethernet-phy@1 { 84 status = "okay";
79 reg = <1>; 85 phy = <&phy0>;
86 phy-mode = "rgmii-id";
87 };
88 ethernet@74000 {
89 status = "okay";
90 phy = <&phy1>;
91 phy-mode = "rgmii-id";
80 }; 92 };
81 };
82 ethernet@d0070000 {
83 status = "okay";
84 phy = <&phy0>;
85 phy-mode = "rgmii-id";
86 };
87 ethernet@d0074000 {
88 status = "okay";
89 phy = <&phy1>;
90 phy-mode = "rgmii-id";
91 };
92
93 mvsdio@d00d4000 {
94 pinctrl-0 = <&sdio_pins3>;
95 pinctrl-names = "default";
96 status = "okay";
97 /*
98 * No CD or WP GPIOs: SDIO interface used for
99 * Wifi/Bluetooth chip
100 */
101 };
102
103 usb@d0050000 {
104 status = "okay";
105 };
106 93
107 usb@d0051000 { 94 mvsdio@d4000 {
108 status = "okay"; 95 pinctrl-0 = <&sdio_pins3>;
109 }; 96 pinctrl-names = "default";
97 status = "okay";
98 /*
99 * No CD or WP GPIOs: SDIO interface used for
100 * Wifi/Bluetooth chip
101 */
102 };
110 103
111 i2c@d0011000 { 104 usb@50000 {
112 status = "okay"; 105 status = "okay";
113 clock-frequency = <100000>;
114 pca9505: pca9505@25 {
115 compatible = "nxp,pca9505";
116 gpio-controller;
117 #gpio-cells = <2>;
118 reg = <0x25>;
119 }; 106 };
120 };
121 107
122 pcie-controller { 108 usb@51000 {
123 status = "okay"; 109 status = "okay";
110 };
124 111
125 /* Internal mini-PCIe connector */ 112 i2c@11000 {
126 pcie@1,0 {
127 /* Port 0, Lane 0 */
128 status = "okay"; 113 status = "okay";
114 clock-frequency = <100000>;
115 pca9505: pca9505@25 {
116 compatible = "nxp,pca9505";
117 gpio-controller;
118 #gpio-cells = <2>;
119 reg = <0x25>;
120 };
129 }; 121 };
130 122
131 /* Connected on the PCB to a USB 3.0 XHCI controller */ 123 pcie-controller {
132 pcie@2,0 {
133 /* Port 1, Lane 0 */
134 status = "okay"; 124 status = "okay";
125
126 /* Internal mini-PCIe connector */
127 pcie@1,0 {
128 /* Port 0, Lane 0 */
129 status = "okay";
130 };
131
132 /* Connected on the PCB to a USB 3.0 XHCI controller */
133 pcie@2,0 {
134 /* Port 1, Lane 0 */
135 status = "okay";
136 };
135 }; 137 };
136 }; 138 };
137 }; 139 };
diff --git a/arch/arm/boot/dts/armada-370-rd.dts b/arch/arm/boot/dts/armada-370-rd.dts
index 516dec31b469..130f8390a7e4 100644
--- a/arch/arm/boot/dts/armada-370-rd.dts
+++ b/arch/arm/boot/dts/armada-370-rd.dts
@@ -28,60 +28,62 @@
28 }; 28 };
29 29
30 soc { 30 soc {
31 serial@d0012000 { 31 internal-regs {
32 clock-frequency = <200000000>; 32 serial@12000 {
33 status = "okay"; 33 clock-frequency = <200000000>;
34 }; 34 status = "okay";
35 sata@d00a0000 {
36 nr-ports = <2>;
37 status = "okay";
38 };
39
40 mdio {
41 phy0: ethernet-phy@0 {
42 reg = <0>;
43 }; 35 };
36 sata@a0000 {
37 nr-ports = <2>;
38 status = "okay";
39 };
40
41 mdio {
42 phy0: ethernet-phy@0 {
43 reg = <0>;
44 };
44 45
45 phy1: ethernet-phy@1 { 46 phy1: ethernet-phy@1 {
46 reg = <1>; 47 reg = <1>;
48 };
47 }; 49 };
48 };
49 50
50 ethernet@d0070000 { 51 ethernet@70000 {
51 status = "okay"; 52 status = "okay";
52 phy = <&phy0>; 53 phy = <&phy0>;
53 phy-mode = "sgmii"; 54 phy-mode = "sgmii";
54 }; 55 };
55 ethernet@d0074000 { 56 ethernet@74000 {
56 status = "okay"; 57 status = "okay";
57 phy = <&phy1>; 58 phy = <&phy1>;
58 phy-mode = "rgmii-id"; 59 phy-mode = "rgmii-id";
59 }; 60 };
60 61
61 mvsdio@d00d4000 { 62 mvsdio@d4000 {
62 pinctrl-0 = <&sdio_pins1>; 63 pinctrl-0 = <&sdio_pins1>;
63 pinctrl-names = "default"; 64 pinctrl-names = "default";
64 status = "okay"; 65 status = "okay";
65 /* No CD or WP GPIOs */ 66 /* No CD or WP GPIOs */
66 }; 67 };
67 68
68 usb@d0050000 { 69 usb@50000 {
69 status = "okay"; 70 status = "okay";
70 }; 71 };
71 72
72 usb@d0051000 { 73 usb@51000 {
73 status = "okay"; 74 status = "okay";
74 }; 75 };
75 };
76 76
77 gpio-keys { 77 gpio-keys {
78 compatible = "gpio-keys"; 78 compatible = "gpio-keys";
79 #address-cells = <1>; 79 #address-cells = <1>;
80 #size-cells = <0>; 80 #size-cells = <0>;
81 button@1 { 81 button@1 {
82 label = "Software Button"; 82 label = "Software Button";
83 linux,code = <116>; 83 linux,code = <116>;
84 gpios = <&gpio0 6 1>; 84 gpios = <&gpio0 6 1>;
85 };
86 };
85 }; 87 };
86 }; 88 };
87}; 89 };
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi
index 9693f796bcfe..272bbc65fab0 100644
--- a/arch/arm/boot/dts/armada-370-xp.dtsi
+++ b/arch/arm/boot/dts/armada-370-xp.dtsi
@@ -16,7 +16,7 @@
16 * 370 and Armada XP SoC. 16 * 370 and Armada XP SoC.
17 */ 17 */
18 18
19/include/ "skeleton.dtsi" 19/include/ "skeleton64.dtsi"
20 20
21/ { 21/ {
22 model = "Marvell Armada 370 and XP SoC"; 22 model = "Marvell Armada 370 and XP SoC";
@@ -28,199 +28,203 @@
28 }; 28 };
29 }; 29 };
30 30
31 mpic: interrupt-controller@d0020000 {
32 compatible = "marvell,mpic";
33 #interrupt-cells = <1>;
34 #size-cells = <1>;
35 interrupt-controller;
36 };
37
38 coherency-fabric@d0020200 {
39 compatible = "marvell,coherency-fabric";
40 reg = <0xd0020200 0xb0>,
41 <0xd0021810 0x1c>;
42 };
43
44 soc { 31 soc {
45 #address-cells = <1>; 32 #address-cells = <1>;
46 #size-cells = <1>; 33 #size-cells = <1>;
47 compatible = "simple-bus"; 34 compatible = "simple-bus";
48 interrupt-parent = <&mpic>; 35 interrupt-parent = <&mpic>;
49 ranges; 36 ranges = <0 0 0xd0000000 0x100000>;
37
38 internal-regs {
39 compatible = "simple-bus";
40 #address-cells = <1>;
41 #size-cells = <1>;
42 ranges;
43
44 mpic: interrupt-controller@20000 {
45 compatible = "marvell,mpic";
46 #interrupt-cells = <1>;
47 #size-cells = <1>;
48 interrupt-controller;
49 };
50
51 coherency-fabric@20200 {
52 compatible = "marvell,coherency-fabric";
53 reg = <0x20200 0xb0>, <0x21810 0x1c>;
54 };
50 55
51 serial@d0012000 { 56 serial@12000 {
52 compatible = "snps,dw-apb-uart"; 57 compatible = "snps,dw-apb-uart";
53 reg = <0xd0012000 0x100>; 58 reg = <0x12000 0x100>;
54 reg-shift = <2>; 59 reg-shift = <2>;
55 interrupts = <41>; 60 interrupts = <41>;
56 reg-io-width = <1>; 61 reg-io-width = <1>;
57 status = "disabled"; 62 status = "disabled";
58 }; 63 };
59 serial@d0012100 { 64 serial@12100 {
60 compatible = "snps,dw-apb-uart"; 65 compatible = "snps,dw-apb-uart";
61 reg = <0xd0012100 0x100>; 66 reg = <0x12100 0x100>;
62 reg-shift = <2>; 67 reg-shift = <2>;
63 interrupts = <42>; 68 interrupts = <42>;
64 reg-io-width = <1>; 69 reg-io-width = <1>;
65 status = "disabled"; 70 status = "disabled";
66 }; 71 };
67 72
68 timer@d0020300 { 73 timer@20300 {
69 compatible = "marvell,armada-370-xp-timer"; 74 compatible = "marvell,armada-370-xp-timer";
70 reg = <0xd0020300 0x30>, 75 reg = <0x20300 0x30>, <0x21040 0x30>;
71 <0xd0021040 0x30>; 76 interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
72 interrupts = <37>, <38>, <39>, <40>, <5>, <6>; 77 clocks = <&coreclk 2>;
73 clocks = <&coreclk 2>; 78 };
74 }; 79
75 80 sata@a0000 {
76 sata@d00a0000 { 81 compatible = "marvell,orion-sata";
77 compatible = "marvell,orion-sata"; 82 reg = <0xa0000 0x2400>;
78 reg = <0xd00a0000 0x2400>; 83 interrupts = <55>;
79 interrupts = <55>; 84 clocks = <&gateclk 15>, <&gateclk 30>;
80 clocks = <&gateclk 15>, <&gateclk 30>; 85 clock-names = "0", "1";
81 clock-names = "0", "1"; 86 status = "disabled";
82 status = "disabled"; 87 };
83 };
84 88
85 mdio { 89 mdio {
86 #address-cells = <1>; 90 #address-cells = <1>;
87 #size-cells = <0>; 91 #size-cells = <0>;
88 compatible = "marvell,orion-mdio"; 92 compatible = "marvell,orion-mdio";
89 reg = <0xd0072004 0x4>; 93 reg = <0x72004 0x4>;
90 }; 94 };
91 95
92 ethernet@d0070000 { 96 ethernet@70000 {
93 compatible = "marvell,armada-370-neta"; 97 compatible = "marvell,armada-370-neta";
94 reg = <0xd0070000 0x2500>; 98 reg = <0x70000 0x2500>;
95 interrupts = <8>; 99 interrupts = <8>;
96 clocks = <&gateclk 4>; 100 clocks = <&gateclk 4>;
97 status = "disabled"; 101 status = "disabled";
98 }; 102 };
99 103
100 ethernet@d0074000 { 104 ethernet@74000 {
101 compatible = "marvell,armada-370-neta"; 105 compatible = "marvell,armada-370-neta";
102 reg = <0xd0074000 0x2500>; 106 reg = <0x74000 0x2500>;
103 interrupts = <10>; 107 interrupts = <10>;
104 clocks = <&gateclk 3>; 108 clocks = <&gateclk 3>;
105 status = "disabled"; 109 status = "disabled";
106 }; 110 };
107 111
108 i2c0: i2c@d0011000 { 112 i2c0: i2c@11000 {
109 compatible = "marvell,mv64xxx-i2c"; 113 compatible = "marvell,mv64xxx-i2c";
110 reg = <0xd0011000 0x20>; 114 reg = <0x11000 0x20>;
111 #address-cells = <1>; 115 #address-cells = <1>;
112 #size-cells = <0>; 116 #size-cells = <0>;
113 interrupts = <31>; 117 interrupts = <31>;
114 timeout-ms = <1000>; 118 timeout-ms = <1000>;
115 clocks = <&coreclk 0>; 119 clocks = <&coreclk 0>;
116 status = "disabled"; 120 status = "disabled";
117 }; 121 };
118 122
119 i2c1: i2c@d0011100 { 123 i2c1: i2c@11100 {
120 compatible = "marvell,mv64xxx-i2c"; 124 compatible = "marvell,mv64xxx-i2c";
121 reg = <0xd0011100 0x20>; 125 reg = <0x11100 0x20>;
122 #address-cells = <1>; 126 #address-cells = <1>;
123 #size-cells = <0>; 127 #size-cells = <0>;
124 interrupts = <32>; 128 interrupts = <32>;
125 timeout-ms = <1000>; 129 timeout-ms = <1000>;
126 clocks = <&coreclk 0>; 130 clocks = <&coreclk 0>;
127 status = "disabled"; 131 status = "disabled";
128 }; 132 };
129 133
130 rtc@10300 { 134 rtc@10300 {
131 compatible = "marvell,orion-rtc"; 135 compatible = "marvell,orion-rtc";
132 reg = <0xd0010300 0x20>; 136 reg = <0x10300 0x20>;
133 interrupts = <50>; 137 interrupts = <50>;
134 }; 138 };
135 139
136 mvsdio@d00d4000 { 140 mvsdio@d4000 {
137 compatible = "marvell,orion-sdio"; 141 compatible = "marvell,orion-sdio";
138 reg = <0xd00d4000 0x200>; 142 reg = <0xd4000 0x200>;
139 interrupts = <54>; 143 interrupts = <54>;
140 clocks = <&gateclk 17>; 144 clocks = <&gateclk 17>;
141 status = "disabled"; 145 status = "disabled";
142 }; 146 };
143
144 usb@d0050000 {
145 compatible = "marvell,orion-ehci";
146 reg = <0xd0050000 0x500>;
147 interrupts = <45>;
148 status = "disabled";
149 };
150
151 usb@d0051000 {
152 compatible = "marvell,orion-ehci";
153 reg = <0xd0051000 0x500>;
154 interrupts = <46>;
155 status = "disabled";
156 };
157
158 spi0: spi@d0010600 {
159 compatible = "marvell,orion-spi";
160 reg = <0xd0010600 0x28>;
161 #address-cells = <1>;
162 #size-cells = <0>;
163 cell-index = <0>;
164 interrupts = <30>;
165 clocks = <&coreclk 0>;
166 status = "disabled";
167 };
168
169 spi1: spi@d0010680 {
170 compatible = "marvell,orion-spi";
171 reg = <0xd0010680 0x28>;
172 #address-cells = <1>;
173 #size-cells = <0>;
174 cell-index = <1>;
175 interrupts = <92>;
176 clocks = <&coreclk 0>;
177 status = "disabled";
178 };
179
180 devbus-bootcs@d0010400 {
181 compatible = "marvell,mvebu-devbus";
182 reg = <0xd0010400 0x8>;
183 #address-cells = <1>;
184 #size-cells = <1>;
185 clocks = <&coreclk 0>;
186 status = "disabled";
187 };
188
189 devbus-cs0@d0010408 {
190 compatible = "marvell,mvebu-devbus";
191 reg = <0xd0010408 0x8>;
192 #address-cells = <1>;
193 #size-cells = <1>;
194 clocks = <&coreclk 0>;
195 status = "disabled";
196 };
197
198 devbus-cs1@d0010410 {
199 compatible = "marvell,mvebu-devbus";
200 reg = <0xd0010410 0x8>;
201 #address-cells = <1>;
202 #size-cells = <1>;
203 clocks = <&coreclk 0>;
204 status = "disabled";
205 };
206 147
207 devbus-cs2@d0010418 { 148 usb@50000 {
208 compatible = "marvell,mvebu-devbus"; 149 compatible = "marvell,orion-ehci";
209 reg = <0xd0010418 0x8>; 150 reg = <0x50000 0x500>;
210 #address-cells = <1>; 151 interrupts = <45>;
211 #size-cells = <1>; 152 status = "disabled";
212 clocks = <&coreclk 0>; 153 };
213 status = "disabled";
214 };
215 154
216 devbus-cs3@d0010420 { 155 usb@51000 {
217 compatible = "marvell,mvebu-devbus"; 156 compatible = "marvell,orion-ehci";
218 reg = <0xd0010420 0x8>; 157 reg = <0x51000 0x500>;
219 #address-cells = <1>; 158 interrupts = <46>;
220 #size-cells = <1>; 159 status = "disabled";
221 clocks = <&coreclk 0>; 160 };
222 status = "disabled"; 161
162 spi0: spi@10600 {
163 compatible = "marvell,orion-spi";
164 reg = <0x10600 0x28>;
165 #address-cells = <1>;
166 #size-cells = <0>;
167 cell-index = <0>;
168 interrupts = <30>;
169 clocks = <&coreclk 0>;
170 status = "disabled";
171 };
172
173 spi1: spi@10680 {
174 compatible = "marvell,orion-spi";
175 reg = <0x10680 0x28>;
176 #address-cells = <1>;
177 #size-cells = <0>;
178 cell-index = <1>;
179 interrupts = <92>;
180 clocks = <&coreclk 0>;
181 status = "disabled";
182 };
183
184 devbus-bootcs@10400 {
185 compatible = "marvell,mvebu-devbus";
186 reg = <0x10400 0x8>;
187 #address-cells = <1>;
188 #size-cells = <1>;
189 clocks = <&coreclk 0>;
190 status = "disabled";
191 };
192
193 devbus-cs0@10408 {
194 compatible = "marvell,mvebu-devbus";
195 reg = <0x10408 0x8>;
196 #address-cells = <1>;
197 #size-cells = <1>;
198 clocks = <&coreclk 0>;
199 status = "disabled";
200 };
201
202 devbus-cs1@10410 {
203 compatible = "marvell,mvebu-devbus";
204 reg = <0x10410 0x8>;
205 #address-cells = <1>;
206 #size-cells = <1>;
207 clocks = <&coreclk 0>;
208 status = "disabled";
209 };
210
211 devbus-cs2@10418 {
212 compatible = "marvell,mvebu-devbus";
213 reg = <0x10418 0x8>;
214 #address-cells = <1>;
215 #size-cells = <1>;
216 clocks = <&coreclk 0>;
217 status = "disabled";
218 };
219
220 devbus-cs3@10420 {
221 compatible = "marvell,mvebu-devbus";
222 reg = <0x10420 0x8>;
223 #address-cells = <1>;
224 #size-cells = <1>;
225 clocks = <&coreclk 0>;
226 status = "disabled";
227 };
223 }; 228 };
224 }; 229 };
225}; 230 };
226
diff --git a/arch/arm/boot/dts/armada-370.dtsi b/arch/arm/boot/dts/armada-370.dtsi
index 18f6eb47cc50..b2c1b5af9749 100644
--- a/arch/arm/boot/dts/armada-370.dtsi
+++ b/arch/arm/boot/dts/armada-370.dtsi
@@ -16,16 +16,11 @@
16 */ 16 */
17 17
18/include/ "armada-370-xp.dtsi" 18/include/ "armada-370-xp.dtsi"
19/include/ "skeleton.dtsi"
19 20
20/ { 21/ {
21 model = "Marvell Armada 370 family SoC"; 22 model = "Marvell Armada 370 family SoC";
22 compatible = "marvell,armada370", "marvell,armada-370-xp"; 23 compatible = "marvell,armada370", "marvell,armada-370-xp";
23 L2: l2-cache {
24 compatible = "marvell,aurora-outer-cache";
25 reg = <0xd0008000 0x1000>;
26 cache-id-part = <0x100>;
27 wt-override;
28 };
29 24
30 aliases { 25 aliases {
31 gpio0 = &gpio0; 26 gpio0 = &gpio0;
@@ -33,188 +28,197 @@
33 gpio2 = &gpio2; 28 gpio2 = &gpio2;
34 }; 29 };
35 30
36 mpic: interrupt-controller@d0020000 {
37 reg = <0xd0020a00 0x1d0>,
38 <0xd0021870 0x58>;
39 };
40
41 soc { 31 soc {
42 system-controller@d0018200 { 32 ranges = <0 0xd0000000 0x100000>;
33 internal-regs {
34 system-controller@18200 {
43 compatible = "marvell,armada-370-xp-system-controller"; 35 compatible = "marvell,armada-370-xp-system-controller";
44 reg = <0xd0018200 0x100>; 36 reg = <0x18200 0x100>;
45 };
46
47 pinctrl {
48 compatible = "marvell,mv88f6710-pinctrl";
49 reg = <0xd0018000 0x38>;
50
51 sdio_pins1: sdio-pins1 {
52 marvell,pins = "mpp9", "mpp11", "mpp12",
53 "mpp13", "mpp14", "mpp15";
54 marvell,function = "sd0";
55 }; 37 };
56 38
57 sdio_pins2: sdio-pins2 { 39 L2: l2-cache {
58 marvell,pins = "mpp47", "mpp48", "mpp49", 40 compatible = "marvell,aurora-outer-cache";
59 "mpp50", "mpp51", "mpp52"; 41 reg = <0xd0008000 0x1000>;
60 marvell,function = "sd0"; 42 cache-id-part = <0x100>;
43 wt-override;
61 }; 44 };
62 45
63 sdio_pins3: sdio-pins3 { 46 mpic: interrupt-controller@20000 {
64 marvell,pins = "mpp48", "mpp49", "mpp50", 47 reg = <0x20a00 0x1d0>, <0x21870 0x58>;
65 "mpp51", "mpp52", "mpp53";
66 marvell,function = "sd0";
67 }; 48 };
68 };
69
70 gpio0: gpio@d0018100 {
71 compatible = "marvell,orion-gpio";
72 reg = <0xd0018100 0x40>;
73 ngpios = <32>;
74 gpio-controller;
75 #gpio-cells = <2>;
76 interrupt-controller;
77 #interrupts-cells = <2>;
78 interrupts = <82>, <83>, <84>, <85>;
79 };
80
81 gpio1: gpio@d0018140 {
82 compatible = "marvell,orion-gpio";
83 reg = <0xd0018140 0x40>;
84 ngpios = <32>;
85 gpio-controller;
86 #gpio-cells = <2>;
87 interrupt-controller;
88 #interrupts-cells = <2>;
89 interrupts = <87>, <88>, <89>, <90>;
90 };
91
92 gpio2: gpio@d0018180 {
93 compatible = "marvell,orion-gpio";
94 reg = <0xd0018180 0x40>;
95 ngpios = <2>;
96 gpio-controller;
97 #gpio-cells = <2>;
98 interrupt-controller;
99 #interrupts-cells = <2>;
100 interrupts = <91>;
101 };
102 49
103 coreclk: mvebu-sar@d0018230 { 50 pinctrl {
104 compatible = "marvell,armada-370-core-clock"; 51 compatible = "marvell,mv88f6710-pinctrl";
105 reg = <0xd0018230 0x08>; 52 reg = <0x18000 0x38>;
106 #clock-cells = <1>; 53
107 }; 54 sdio_pins1: sdio-pins1 {
108 55 marvell,pins = "mpp9", "mpp11", "mpp12",
109 gateclk: clock-gating-control@d0018220 { 56 "mpp13", "mpp14", "mpp15";
110 compatible = "marvell,armada-370-gating-clock"; 57 marvell,function = "sd0";
111 reg = <0xd0018220 0x4>; 58 };
112 clocks = <&coreclk 0>; 59
113 #clock-cells = <1>; 60 sdio_pins2: sdio-pins2 {
114 }; 61 marvell,pins = "mpp47", "mpp48", "mpp49",
115 62 "mpp50", "mpp51", "mpp52";
116 xor@d0060800 { 63 marvell,function = "sd0";
117 compatible = "marvell,orion-xor"; 64 };
118 reg = <0xd0060800 0x100 65
119 0xd0060A00 0x100>; 66 sdio_pins3: sdio-pins3 {
120 status = "okay"; 67 marvell,pins = "mpp48", "mpp49", "mpp50",
121 68 "mpp51", "mpp52", "mpp53";
122 xor00 { 69 marvell,function = "sd0";
123 interrupts = <51>; 70 };
124 dmacap,memcpy;
125 dmacap,xor;
126 }; 71 };
127 xor01 {
128 interrupts = <52>;
129 dmacap,memcpy;
130 dmacap,xor;
131 dmacap,memset;
132 };
133 };
134
135 xor@d0060900 {
136 compatible = "marvell,orion-xor";
137 reg = <0xd0060900 0x100
138 0xd0060b00 0x100>;
139 status = "okay";
140 72
141 xor10 { 73 gpio0: gpio@18100 {
142 interrupts = <94>; 74 compatible = "marvell,orion-gpio";
143 dmacap,memcpy; 75 reg = <0x18100 0x40>;
144 dmacap,xor; 76 ngpios = <32>;
77 gpio-controller;
78 #gpio-cells = <2>;
79 interrupt-controller;
80 #interrupts-cells = <2>;
81 interrupts = <82>, <83>, <84>, <85>;
145 }; 82 };
146 xor11 {
147 interrupts = <95>;
148 dmacap,memcpy;
149 dmacap,xor;
150 dmacap,memset;
151 };
152 };
153 83
154 usb@d0050000 { 84 gpio1: gpio@18140 {
155 clocks = <&coreclk 0>; 85 compatible = "marvell,orion-gpio";
156 }; 86 reg = <0x18140 0x40>;
157 87 ngpios = <32>;
158 usb@d0051000 { 88 gpio-controller;
159 clocks = <&coreclk 0>; 89 #gpio-cells = <2>;
160 }; 90 interrupt-controller;
91 #interrupts-cells = <2>;
92 interrupts = <87>, <88>, <89>, <90>;
93 };
161 94
162 thermal@d0018300 { 95 gpio2: gpio@18180 {
163 compatible = "marvell,armada370-thermal"; 96 compatible = "marvell,orion-gpio";
164 reg = <0xd0018300 0x4 97 reg = <0x18180 0x40>;
165 0xd0018304 0x4>; 98 ngpios = <2>;
166 status = "okay"; 99 gpio-controller;
167 }; 100 #gpio-cells = <2>;
101 interrupt-controller;
102 #interrupts-cells = <2>;
103 interrupts = <91>;
104 };
168 105
169 pcie-controller { 106 coreclk: mvebu-sar@18230 {
170 compatible = "marvell,armada-370-pcie"; 107 compatible = "marvell,armada-370-core-clock";
171 status = "disabled"; 108 reg = <0x18230 0x08>;
172 device_type = "pci"; 109 #clock-cells = <1>;
110 };
173 111
174 #address-cells = <3>; 112 gateclk: clock-gating-control@18220 {
175 #size-cells = <2>; 113 compatible = "marvell,armada-370-gating-clock";
114 reg = <0x18220 0x4>;
115 clocks = <&coreclk 0>;
116 #clock-cells = <1>;
117 };
176 118
177 bus-range = <0x00 0xff>; 119 xor@60800 {
120 compatible = "marvell,orion-xor";
121 reg = <0x60800 0x100
122 0x60A00 0x100>;
123 status = "okay";
124
125 xor00 {
126 interrupts = <51>;
127 dmacap,memcpy;
128 dmacap,xor;
129 };
130 xor01 {
131 interrupts = <52>;
132 dmacap,memcpy;
133 dmacap,xor;
134 dmacap,memset;
135 };
136 };
178 137
179 reg = <0xd0040000 0x2000>, <0xd0080000 0x2000>; 138 xor@60900 {
139 compatible = "marvell,orion-xor";
140 reg = <0x60900 0x100
141 0x60b00 0x100>;
142 status = "okay";
143
144 xor10 {
145 interrupts = <94>;
146 dmacap,memcpy;
147 dmacap,xor;
148 };
149 xor11 {
150 interrupts = <95>;
151 dmacap,memcpy;
152 dmacap,xor;
153 dmacap,memset;
154 };
155 };
180 156
181 reg-names = "pcie0.0", "pcie1.0"; 157 usb@50000 {
158 clocks = <&coreclk 0>;
159 };
182 160
183 ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 161 usb@51000 {
184 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ 162 clocks = <&coreclk 0>;
185 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 163 };
186 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
187 164
188 pcie@1,0 { 165 thermal@18300 {
189 device_type = "pci"; 166 compatible = "marvell,armada370-thermal";
190 assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 167 reg = <0x18300 0x4
191 reg = <0x0800 0 0 0 0>; 168 0x18304 0x4>;
192 #address-cells = <3>; 169 status = "okay";
193 #size-cells = <2>;
194 #interrupt-cells = <1>;
195 ranges;
196 interrupt-map-mask = <0 0 0 0>;
197 interrupt-map = <0 0 0 0 &mpic 58>;
198 marvell,pcie-port = <0>;
199 marvell,pcie-lane = <0>;
200 clocks = <&gateclk 5>;
201 status = "disabled";
202 }; 170 };
203 171
204 pcie@2,0 { 172 pcie-controller {
173 compatible = "marvell,armada-370-pcie";
174 status = "disabled";
205 device_type = "pci"; 175 device_type = "pci";
206 assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>; 176
207 reg = <0x1000 0 0 0 0>;
208 #address-cells = <3>; 177 #address-cells = <3>;
209 #size-cells = <2>; 178 #size-cells = <2>;
210 #interrupt-cells = <1>; 179
211 ranges; 180 bus-range = <0x00 0xff>;
212 interrupt-map-mask = <0 0 0 0>; 181
213 interrupt-map = <0 0 0 0 &mpic 62>; 182 reg = <0x40000 0x2000>, <0x80000 0x2000>;
214 marvell,pcie-port = <1>; 183
215 marvell,pcie-lane = <0>; 184 reg-names = "pcie0.0", "pcie1.0";
216 clocks = <&gateclk 9>; 185
217 status = "disabled"; 186 ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */
187 0x82000000 0 0x80000 0x80000 0 0x00002000 /* Port 1.0 registers */
188 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
189 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
190
191 pcie@1,0 {
192 device_type = "pci";
193 assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
194 reg = <0x0800 0 0 0 0>;
195 #address-cells = <3>;
196 #size-cells = <2>;
197 #interrupt-cells = <1>;
198 ranges;
199 interrupt-map-mask = <0 0 0 0>;
200 interrupt-map = <0 0 0 0 &mpic 58>;
201 marvell,pcie-port = <0>;
202 marvell,pcie-lane = <0>;
203 clocks = <&gateclk 5>;
204 status = "disabled";
205 };
206
207 pcie@2,0 {
208 device_type = "pci";
209 assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
210 reg = <0x1000 0 0 0 0>;
211 #address-cells = <3>;
212 #size-cells = <2>;
213 #interrupt-cells = <1>;
214 ranges;
215 interrupt-map-mask = <0 0 0 0>;
216 interrupt-map = <0 0 0 0 &mpic 62>;
217 marvell,pcie-port = <1>;
218 marvell,pcie-lane = <0>;
219 clocks = <&gateclk 9>;
220 status = "disabled";
221 };
218 }; 222 };
219 }; 223 };
220 }; 224 };
diff --git a/arch/arm/boot/dts/armada-xp-db.dts b/arch/arm/boot/dts/armada-xp-db.dts
index 54cc5bb705fb..d6cc8bf8272e 100644
--- a/arch/arm/boot/dts/armada-xp-db.dts
+++ b/arch/arm/boot/dts/armada-xp-db.dts
@@ -26,132 +26,134 @@
26 26
27 memory { 27 memory {
28 device_type = "memory"; 28 device_type = "memory";
29 reg = <0x00000000 0x80000000>; /* 2 GB */ 29 reg = <0 0x00000000 0 0x80000000>; /* 2 GB */
30 }; 30 };
31 31
32 soc { 32 soc {
33 serial@d0012000 { 33 internal-regs {
34 clock-frequency = <250000000>; 34 serial@12000 {
35 status = "okay"; 35 clock-frequency = <250000000>;
36 }; 36 status = "okay";
37 serial@d0012100 {
38 clock-frequency = <250000000>;
39 status = "okay";
40 };
41 serial@d0012200 {
42 clock-frequency = <250000000>;
43 status = "okay";
44 };
45 serial@d0012300 {
46 clock-frequency = <250000000>;
47 status = "okay";
48 };
49
50 sata@d00a0000 {
51 nr-ports = <2>;
52 status = "okay";
53 };
54
55 mdio {
56 phy0: ethernet-phy@0 {
57 reg = <0>;
58 }; 37 };
59 38 serial@12100 {
60 phy1: ethernet-phy@1 { 39 clock-frequency = <250000000>;
61 reg = <1>; 40 status = "okay";
62 }; 41 };
63 42 serial@12200 {
64 phy2: ethernet-phy@2 { 43 clock-frequency = <250000000>;
65 reg = <25>; 44 status = "okay";
66 }; 45 };
67 46 serial@12300 {
68 phy3: ethernet-phy@3 { 47 clock-frequency = <250000000>;
69 reg = <27>; 48 status = "okay";
70 }; 49 };
71 };
72
73 ethernet@d0070000 {
74 status = "okay";
75 phy = <&phy0>;
76 phy-mode = "rgmii-id";
77 };
78 ethernet@d0074000 {
79 status = "okay";
80 phy = <&phy1>;
81 phy-mode = "rgmii-id";
82 };
83 ethernet@d0030000 {
84 status = "okay";
85 phy = <&phy2>;
86 phy-mode = "sgmii";
87 };
88 ethernet@d0034000 {
89 status = "okay";
90 phy = <&phy3>;
91 phy-mode = "sgmii";
92 };
93
94 mvsdio@d00d4000 {
95 pinctrl-0 = <&sdio_pins>;
96 pinctrl-names = "default";
97 status = "okay";
98 /* No CD or WP GPIOs */
99 };
100 50
101 usb@d0050000 { 51 sata@a0000 {
102 status = "okay"; 52 nr-ports = <2>;
103 }; 53 status = "okay";
54 };
104 55
105 usb@d0051000 { 56 mdio {
106 status = "okay"; 57 phy0: ethernet-phy@0 {
107 }; 58 reg = <0>;
59 };
108 60
109 usb@d0052000 { 61 phy1: ethernet-phy@1 {
110 status = "okay"; 62 reg = <1>;
111 }; 63 };
112 64
113 spi0: spi@d0010600 { 65 phy2: ethernet-phy@2 {
114 status = "okay"; 66 reg = <25>;
67 };
115 68
116 spi-flash@0 { 69 phy3: ethernet-phy@3 {
117 #address-cells = <1>; 70 reg = <27>;
118 #size-cells = <1>; 71 };
119 compatible = "m25p64";
120 reg = <0>; /* Chip select 0 */
121 spi-max-frequency = <20000000>;
122 }; 72 };
123 };
124 73
125 pcie-controller { 74 ethernet@70000 {
126 status = "okay"; 75 status = "okay";
76 phy = <&phy0>;
77 phy-mode = "rgmii-id";
78 };
79 ethernet@74000 {
80 status = "okay";
81 phy = <&phy1>;
82 phy-mode = "rgmii-id";
83 };
84 ethernet@30000 {
85 status = "okay";
86 phy = <&phy2>;
87 phy-mode = "sgmii";
88 };
89 ethernet@34000 {
90 status = "okay";
91 phy = <&phy3>;
92 phy-mode = "sgmii";
93 };
127 94
128 /* 95 mvsdio@d4000 {
129 * All 6 slots are physically present as 96 pinctrl-0 = <&sdio_pins>;
130 * standard PCIe slots on the board. 97 pinctrl-names = "default";
131 */
132 pcie@1,0 {
133 /* Port 0, Lane 0 */
134 status = "okay"; 98 status = "okay";
99 /* No CD or WP GPIOs */
135 }; 100 };
136 pcie@2,0 { 101
137 /* Port 0, Lane 1 */ 102 usb@50000 {
138 status = "okay"; 103 status = "okay";
139 }; 104 };
140 pcie@3,0 { 105
141 /* Port 0, Lane 2 */ 106 usb@51000 {
142 status = "okay"; 107 status = "okay";
143 }; 108 };
144 pcie@4,0 { 109
145 /* Port 0, Lane 3 */ 110 usb@52000 {
146 status = "okay"; 111 status = "okay";
147 }; 112 };
148 pcie@9,0 { 113
149 /* Port 2, Lane 0 */ 114 spi0: spi@10600 {
150 status = "okay"; 115 status = "okay";
116
117 spi-flash@0 {
118 #address-cells = <1>;
119 #size-cells = <1>;
120 compatible = "m25p64";
121 reg = <0>; /* Chip select 0 */
122 spi-max-frequency = <20000000>;
123 };
151 }; 124 };
152 pcie@10,0 { 125
153 /* Port 3, Lane 0 */ 126 pcie-controller {
154 status = "okay"; 127 status = "okay";
128
129 /*
130 * All 6 slots are physically present as
131 * standard PCIe slots on the board.
132 */
133 pcie@1,0 {
134 /* Port 0, Lane 0 */
135 status = "okay";
136 };
137 pcie@2,0 {
138 /* Port 0, Lane 1 */
139 status = "okay";
140 };
141 pcie@3,0 {
142 /* Port 0, Lane 2 */
143 status = "okay";
144 };
145 pcie@4,0 {
146 /* Port 0, Lane 3 */
147 status = "okay";
148 };
149 pcie@9,0 {
150 /* Port 2, Lane 0 */
151 status = "okay";
152 };
153 pcie@10,0 {
154 /* Port 3, Lane 0 */
155 status = "okay";
156 };
155 }; 157 };
156 }; 158 };
157 }; 159 };
diff --git a/arch/arm/boot/dts/armada-xp-gp.dts b/arch/arm/boot/dts/armada-xp-gp.dts
index 04f28a712b98..26ad06fc147e 100644
--- a/arch/arm/boot/dts/armada-xp-gp.dts
+++ b/arch/arm/boot/dts/armada-xp-gp.dts
@@ -26,137 +26,141 @@
26 26
27 memory { 27 memory {
28 device_type = "memory"; 28 device_type = "memory";
29
30 /* 29 /*
31 * 4 GB of plug-in RAM modules by default but only 3GB 30 * 8 GB of plug-in RAM modules by default.The amount
32 * are visible, the amount of memory available can be 31 * of memory available can be changed by the
33 * changed by the bootloader according the size of the 32 * bootloader according the size of the module
34 * module actually plugged 33 * actually plugged. Only 7GB are usable because
34 * addresses from 0xC0000000 to 0xffffffff are used by
35 * the internal registers of the SoC.
35 */ 36 */
36 reg = <0x00000000 0xC0000000>; 37 reg = <0x00000000 0x00000000 0x00000000 0xC0000000>,
38 <0x00000001 0x00000000 0x00000001 0x00000000>;
37 }; 39 };
38 40
39 soc { 41 soc {
40 serial@d0012000 { 42 internal-regs {
41 clock-frequency = <250000000>; 43 serial@12000 {
42 status = "okay"; 44 clock-frequency = <250000000>;
43 }; 45 status = "okay";
44 serial@d0012100 {
45 clock-frequency = <250000000>;
46 status = "okay";
47 };
48 serial@d0012200 {
49 clock-frequency = <250000000>;
50 status = "okay";
51 };
52 serial@d0012300 {
53 clock-frequency = <250000000>;
54 status = "okay";
55 };
56
57 sata@d00a0000 {
58 nr-ports = <2>;
59 status = "okay";
60 };
61
62 mdio {
63 phy0: ethernet-phy@0 {
64 reg = <16>;
65 }; 46 };
66 47 serial@12100 {
67 phy1: ethernet-phy@1 { 48 clock-frequency = <250000000>;
68 reg = <17>; 49 status = "okay";
69 }; 50 };
70 51 serial@12200 {
71 phy2: ethernet-phy@2 { 52 clock-frequency = <250000000>;
72 reg = <18>; 53 status = "okay";
54 };
55 serial@12300 {
56 clock-frequency = <250000000>;
57 status = "okay";
73 }; 58 };
74 59
75 phy3: ethernet-phy@3 { 60 sata@a0000 {
76 reg = <19>; 61 nr-ports = <2>;
62 status = "okay";
77 }; 63 };
78 };
79 64
80 ethernet@d0070000 { 65 mdio {
81 status = "okay"; 66 phy0: ethernet-phy@0 {
82 phy = <&phy0>; 67 reg = <16>;
83 phy-mode = "rgmii-id"; 68 };
84 };
85 ethernet@d0074000 {
86 status = "okay";
87 phy = <&phy1>;
88 phy-mode = "rgmii-id";
89 };
90 ethernet@d0030000 {
91 status = "okay";
92 phy = <&phy2>;
93 phy-mode = "rgmii-id";
94 };
95 ethernet@d0034000 {
96 status = "okay";
97 phy = <&phy3>;
98 phy-mode = "rgmii-id";
99 };
100 69
101 spi0: spi@d0010600 { 70 phy1: ethernet-phy@1 {
102 status = "okay"; 71 reg = <17>;
72 };
103 73
104 spi-flash@0 { 74 phy2: ethernet-phy@2 {
105 #address-cells = <1>; 75 reg = <18>;
106 #size-cells = <1>; 76 };
107 compatible = "n25q128a13";
108 reg = <0>; /* Chip select 0 */
109 spi-max-frequency = <108000000>;
110 };
111 };
112 77
113 devbus-bootcs@d0010400 { 78 phy3: ethernet-phy@3 {
114 status = "okay"; 79 reg = <19>;
115 ranges = <0 0xf0000000 0x1000000>; /* @addr 0xf000000, size 0x1000000 */ 80 };
116
117 /* Device Bus parameters are required */
118
119 /* Read parameters */
120 devbus,bus-width = <8>;
121 devbus,turn-off-ps = <60000>;
122 devbus,badr-skew-ps = <0>;
123 devbus,acc-first-ps = <124000>;
124 devbus,acc-next-ps = <248000>;
125 devbus,rd-setup-ps = <0>;
126 devbus,rd-hold-ps = <0>;
127
128 /* Write parameters */
129 devbus,sync-enable = <0>;
130 devbus,wr-high-ps = <60000>;
131 devbus,wr-low-ps = <60000>;
132 devbus,ale-wr-ps = <60000>;
133
134 /* NOR 16 MiB */
135 nor@0 {
136 compatible = "cfi-flash";
137 reg = <0 0x1000000>;
138 bank-width = <2>;
139 }; 81 };
140 };
141 82
142 pcie-controller { 83 ethernet@70000 {
143 status = "okay"; 84 status = "okay";
85 phy = <&phy0>;
86 phy-mode = "rgmii-id";
87 };
88 ethernet@74000 {
89 status = "okay";
90 phy = <&phy1>;
91 phy-mode = "rgmii-id";
92 };
93 ethernet@30000 {
94 status = "okay";
95 phy = <&phy2>;
96 phy-mode = "rgmii-id";
97 };
98 ethernet@34000 {
99 status = "okay";
100 phy = <&phy3>;
101 phy-mode = "rgmii-id";
102 };
144 103
145 /* 104 spi0: spi@10600 {
146 * The 3 slots are physically present as
147 * standard PCIe slots on the board.
148 */
149 pcie@1,0 {
150 /* Port 0, Lane 0 */
151 status = "okay"; 105 status = "okay";
106
107 spi-flash@0 {
108 #address-cells = <1>;
109 #size-cells = <1>;
110 compatible = "n25q128a13";
111 reg = <0>; /* Chip select 0 */
112 spi-max-frequency = <108000000>;
113 };
152 }; 114 };
153 pcie@9,0 { 115
154 /* Port 2, Lane 0 */ 116 devbus-bootcs@10400 {
155 status = "okay"; 117 status = "okay";
118 ranges = <0 0xf0000000 0x1000000>; /* @addr 0xf000000, size 0x1000000 */
119
120 /* Device Bus parameters are required */
121
122 /* Read parameters */
123 devbus,bus-width = <8>;
124 devbus,turn-off-ps = <60000>;
125 devbus,badr-skew-ps = <0>;
126 devbus,acc-first-ps = <124000>;
127 devbus,acc-next-ps = <248000>;
128 devbus,rd-setup-ps = <0>;
129 devbus,rd-hold-ps = <0>;
130
131 /* Write parameters */
132 devbus,sync-enable = <0>;
133 devbus,wr-high-ps = <60000>;
134 devbus,wr-low-ps = <60000>;
135 devbus,ale-wr-ps = <60000>;
136
137 /* NOR 16 MiB */
138 nor@0 {
139 compatible = "cfi-flash";
140 reg = <0 0x1000000>;
141 bank-width = <2>;
142 };
156 }; 143 };
157 pcie@10,0 { 144
158 /* Port 3, Lane 0 */ 145 pcie-controller {
159 status = "okay"; 146 status = "okay";
147
148 /*
149 * The 3 slots are physically present as
150 * standard PCIe slots on the board.
151 */
152 pcie@1,0 {
153 /* Port 0, Lane 0 */
154 status = "okay";
155 };
156 pcie@9,0 {
157 /* Port 2, Lane 0 */
158 status = "okay";
159 };
160 pcie@10,0 {
161 /* Port 3, Lane 0 */
162 status = "okay";
163 };
160 }; 164 };
161 }; 165 };
162 }; 166 };
diff --git a/arch/arm/boot/dts/armada-xp-mv78230.dtsi b/arch/arm/boot/dts/armada-xp-mv78230.dtsi
index c2c78459a4d4..f8eaa383e07f 100644
--- a/arch/arm/boot/dts/armada-xp-mv78230.dtsi
+++ b/arch/arm/boot/dts/armada-xp-mv78230.dtsi
@@ -25,159 +25,161 @@
25 }; 25 };
26 26
27 cpus { 27 cpus {
28 #address-cells = <1>; 28 #address-cells = <1>;
29 #size-cells = <0>; 29 #size-cells = <0>;
30 30
31 cpu@0 { 31 cpu@0 {
32 device_type = "cpu"; 32 device_type = "cpu";
33 compatible = "marvell,sheeva-v7"; 33 compatible = "marvell,sheeva-v7";
34 reg = <0>; 34 reg = <0>;
35 clocks = <&cpuclk 0>; 35 clocks = <&cpuclk 0>;
36 };
37
38 cpu@1 {
39 device_type = "cpu";
40 compatible = "marvell,sheeva-v7";
41 reg = <1>;
42 clocks = <&cpuclk 1>;
43 };
44 };
45
46 soc {
47 pinctrl {
48 compatible = "marvell,mv78230-pinctrl";
49 reg = <0xd0018000 0x38>;
50
51 sdio_pins: sdio-pins {
52 marvell,pins = "mpp30", "mpp31", "mpp32",
53 "mpp33", "mpp34", "mpp35";
54 marvell,function = "sd0";
55 };
56 };
57
58 gpio0: gpio@d0018100 {
59 compatible = "marvell,orion-gpio";
60 reg = <0xd0018100 0x40>;
61 ngpios = <32>;
62 gpio-controller;
63 #gpio-cells = <2>;
64 interrupt-controller;
65 #interrupts-cells = <2>;
66 interrupts = <82>, <83>, <84>, <85>;
67 }; 36 };
68 37
69 gpio1: gpio@d0018140 { 38 cpu@1 {
70 compatible = "marvell,orion-gpio"; 39 device_type = "cpu";
71 reg = <0xd0018140 0x40>; 40 compatible = "marvell,sheeva-v7";
72 ngpios = <17>; 41 reg = <1>;
73 gpio-controller; 42 clocks = <&cpuclk 1>;
74 #gpio-cells = <2>;
75 interrupt-controller;
76 #interrupts-cells = <2>;
77 interrupts = <87>, <88>, <89>;
78 }; 43 };
44 };
79 45
80 /* 46 soc {
81 * MV78230 has 2 PCIe units Gen2.0: One unit can be 47 internal-regs {
82 * configured as x4 or quad x1 lanes. One unit is 48 pinctrl {
83 * x4/x1. 49 compatible = "marvell,mv78230-pinctrl";
84 */ 50 reg = <0x18000 0x38>;
85 pcie-controller { 51
86 compatible = "marvell,armada-xp-pcie"; 52 sdio_pins: sdio-pins {
87 status = "disabled"; 53 marvell,pins = "mpp30", "mpp31", "mpp32",
88 device_type = "pci"; 54 "mpp33", "mpp34", "mpp35";
89 55 marvell,function = "sd0";
90 #address-cells = <3>; 56 };
91 #size-cells = <2>;
92
93 bus-range = <0x00 0xff>;
94
95 ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */
96 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */
97 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */
98 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */
99 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */
100 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
101 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
102
103 pcie@1,0 {
104 device_type = "pci";
105 assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>;
106 reg = <0x0800 0 0 0 0>;
107 #address-cells = <3>;
108 #size-cells = <2>;
109 #interrupt-cells = <1>;
110 ranges;
111 interrupt-map-mask = <0 0 0 0>;
112 interrupt-map = <0 0 0 0 &mpic 58>;
113 marvell,pcie-port = <0>;
114 marvell,pcie-lane = <0>;
115 clocks = <&gateclk 5>;
116 status = "disabled";
117 }; 57 };
118 58
119 pcie@2,0 { 59 gpio0: gpio@18100 {
120 device_type = "pci"; 60 compatible = "marvell,orion-gpio";
121 assigned-addresses = <0x82000800 0 0xd0044000 0 0x2000>; 61 reg = <0x18100 0x40>;
122 reg = <0x1000 0 0 0 0>; 62 ngpios = <32>;
123 #address-cells = <3>; 63 gpio-controller;
124 #size-cells = <2>; 64 #gpio-cells = <2>;
125 #interrupt-cells = <1>; 65 interrupt-controller;
126 ranges; 66 #interrupts-cells = <2>;
127 interrupt-map-mask = <0 0 0 0>; 67 interrupts = <82>, <83>, <84>, <85>;
128 interrupt-map = <0 0 0 0 &mpic 59>;
129 marvell,pcie-port = <0>;
130 marvell,pcie-lane = <1>;
131 clocks = <&gateclk 6>;
132 status = "disabled";
133 }; 68 };
134 69
135 pcie@3,0 { 70 gpio1: gpio@18140 {
136 device_type = "pci"; 71 compatible = "marvell,orion-gpio";
137 assigned-addresses = <0x82000800 0 0xd0048000 0 0x2000>; 72 reg = <0x18140 0x40>;
138 reg = <0x1800 0 0 0 0>; 73 ngpios = <17>;
139 #address-cells = <3>; 74 gpio-controller;
140 #size-cells = <2>; 75 #gpio-cells = <2>;
141 #interrupt-cells = <1>; 76 interrupt-controller;
142 ranges; 77 #interrupts-cells = <2>;
143 interrupt-map-mask = <0 0 0 0>; 78 interrupts = <87>, <88>, <89>;
144 interrupt-map = <0 0 0 0 &mpic 60>;
145 marvell,pcie-port = <0>;
146 marvell,pcie-lane = <2>;
147 clocks = <&gateclk 7>;
148 status = "disabled";
149 }; 79 };
150 80
151 pcie@4,0 { 81 /*
152 device_type = "pci"; 82 * MV78230 has 2 PCIe units Gen2.0: One unit can be
153 assigned-addresses = <0x82000800 0 0xd004c000 0 0x2000>; 83 * configured as x4 or quad x1 lanes. One unit is
154 reg = <0x2000 0 0 0 0>; 84 * x4/x1.
155 #address-cells = <3>; 85 */
156 #size-cells = <2>; 86 pcie-controller {
157 #interrupt-cells = <1>; 87 compatible = "marvell,armada-xp-pcie";
158 ranges;
159 interrupt-map-mask = <0 0 0 0>;
160 interrupt-map = <0 0 0 0 &mpic 61>;
161 marvell,pcie-port = <0>;
162 marvell,pcie-lane = <3>;
163 clocks = <&gateclk 8>;
164 status = "disabled"; 88 status = "disabled";
165 };
166
167 pcie@9,0 {
168 device_type = "pci"; 89 device_type = "pci";
169 assigned-addresses = <0x82000800 0 0xd0042000 0 0x2000>; 90
170 reg = <0x4800 0 0 0 0>; 91#address-cells = <3>;
171 #address-cells = <3>; 92#size-cells = <2>;
172 #size-cells = <2>; 93
173 #interrupt-cells = <1>; 94 bus-range = <0x00 0xff>;
174 ranges; 95
175 interrupt-map-mask = <0 0 0 0>; 96 ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */
176 interrupt-map = <0 0 0 0 &mpic 99>; 97 0x82000000 0 0x42000 0x42000 0 0x00002000 /* Port 2.0 registers */
177 marvell,pcie-port = <2>; 98 0x82000000 0 0x44000 0x44000 0 0x00002000 /* Port 0.1 registers */
178 marvell,pcie-lane = <0>; 99 0x82000000 0 0x48000 0x48000 0 0x00002000 /* Port 0.2 registers */
179 clocks = <&gateclk 26>; 100 0x82000000 0 0x4c000 0x4c000 0 0x00002000 /* Port 0.3 registers */
180 status = "disabled"; 101 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
102 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
103
104 pcie@1,0 {
105 device_type = "pci";
106 assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
107 reg = <0x0800 0 0 0 0>;
108 #address-cells = <3>;
109 #size-cells = <2>;
110 #interrupt-cells = <1>;
111 ranges;
112 interrupt-map-mask = <0 0 0 0>;
113 interrupt-map = <0 0 0 0 &mpic 58>;
114 marvell,pcie-port = <0>;
115 marvell,pcie-lane = <0>;
116 clocks = <&gateclk 5>;
117 status = "disabled";
118 };
119
120 pcie@2,0 {
121 device_type = "pci";
122 assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
123 reg = <0x1000 0 0 0 0>;
124 #address-cells = <3>;
125 #size-cells = <2>;
126 #interrupt-cells = <1>;
127 ranges;
128 interrupt-map-mask = <0 0 0 0>;
129 interrupt-map = <0 0 0 0 &mpic 59>;
130 marvell,pcie-port = <0>;
131 marvell,pcie-lane = <1>;
132 clocks = <&gateclk 6>;
133 status = "disabled";
134 };
135
136 pcie@3,0 {
137 device_type = "pci";
138 assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
139 reg = <0x1800 0 0 0 0>;
140 #address-cells = <3>;
141 #size-cells = <2>;
142 #interrupt-cells = <1>;
143 ranges;
144 interrupt-map-mask = <0 0 0 0>;
145 interrupt-map = <0 0 0 0 &mpic 60>;
146 marvell,pcie-port = <0>;
147 marvell,pcie-lane = <2>;
148 clocks = <&gateclk 7>;
149 status = "disabled";
150 };
151
152 pcie@4,0 {
153 device_type = "pci";
154 assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>;
155 reg = <0x2000 0 0 0 0>;
156 #address-cells = <3>;
157 #size-cells = <2>;
158 #interrupt-cells = <1>;
159 ranges;
160 interrupt-map-mask = <0 0 0 0>;
161 interrupt-map = <0 0 0 0 &mpic 61>;
162 marvell,pcie-port = <0>;
163 marvell,pcie-lane = <3>;
164 clocks = <&gateclk 8>;
165 status = "disabled";
166 };
167
168 pcie@9,0 {
169 device_type = "pci";
170 assigned-addresses = <0x82000800 0 0x42000 0 0x2000>;
171 reg = <0x4800 0 0 0 0>;
172 #address-cells = <3>;
173 #size-cells = <2>;
174 #interrupt-cells = <1>;
175 ranges;
176 interrupt-map-mask = <0 0 0 0>;
177 interrupt-map = <0 0 0 0 &mpic 99>;
178 marvell,pcie-port = <2>;
179 marvell,pcie-lane = <0>;
180 clocks = <&gateclk 26>;
181 status = "disabled";
182 };
181 }; 183 };
182 }; 184 };
183 }; 185 };
diff --git a/arch/arm/boot/dts/armada-xp-mv78260.dtsi b/arch/arm/boot/dts/armada-xp-mv78260.dtsi
index 885bf229eef7..f4029f015aff 100644
--- a/arch/arm/boot/dts/armada-xp-mv78260.dtsi
+++ b/arch/arm/boot/dts/armada-xp-mv78260.dtsi
@@ -26,196 +26,198 @@
26 }; 26 };
27 27
28 cpus { 28 cpus {
29 #address-cells = <1>; 29 #address-cells = <1>;
30 #size-cells = <0>; 30 #size-cells = <0>;
31 31
32 cpu@0 { 32 cpu@0 {
33 device_type = "cpu"; 33 device_type = "cpu";
34 compatible = "marvell,sheeva-v7"; 34 compatible = "marvell,sheeva-v7";
35 reg = <0>; 35 reg = <0>;
36 clocks = <&cpuclk 0>; 36 clocks = <&cpuclk 0>;
37 }; 37 };
38 38
39 cpu@1 { 39 cpu@1 {
40 device_type = "cpu"; 40 device_type = "cpu";
41 compatible = "marvell,sheeva-v7"; 41 compatible = "marvell,sheeva-v7";
42 reg = <1>; 42 reg = <1>;
43 clocks = <&cpuclk 1>; 43 clocks = <&cpuclk 1>;
44 }; 44 };
45 }; 45 };
46 46
47 soc { 47 soc {
48 pinctrl { 48 internal-regs {
49 compatible = "marvell,mv78260-pinctrl"; 49 pinctrl {
50 reg = <0xd0018000 0x38>; 50 compatible = "marvell,mv78260-pinctrl";
51 51 reg = <0x18000 0x38>;
52 sdio_pins: sdio-pins { 52
53 marvell,pins = "mpp30", "mpp31", "mpp32", 53 sdio_pins: sdio-pins {
54 "mpp33", "mpp34", "mpp35"; 54 marvell,pins = "mpp30", "mpp31", "mpp32",
55 marvell,function = "sd0"; 55 "mpp33", "mpp34", "mpp35";
56 marvell,function = "sd0";
57 };
56 }; 58 };
57 };
58 59
59 gpio0: gpio@d0018100 { 60 gpio0: gpio@18100 {
60 compatible = "marvell,orion-gpio"; 61 compatible = "marvell,orion-gpio";
61 reg = <0xd0018100 0x40>; 62 reg = <0x18100 0x40>;
62 ngpios = <32>; 63 ngpios = <32>;
63 gpio-controller; 64 gpio-controller;
64 #gpio-cells = <2>; 65 #gpio-cells = <2>;
65 interrupt-controller; 66 interrupt-controller;
66 #interrupts-cells = <2>; 67 #interrupts-cells = <2>;
67 interrupts = <82>, <83>, <84>, <85>; 68 interrupts = <82>, <83>, <84>, <85>;
68 }; 69 };
69 70
70 gpio1: gpio@d0018140 { 71 gpio1: gpio@18140 {
71 compatible = "marvell,orion-gpio"; 72 compatible = "marvell,orion-gpio";
72 reg = <0xd0018140 0x40>; 73 reg = <0x18140 0x40>;
73 ngpios = <32>; 74 ngpios = <32>;
74 gpio-controller; 75 gpio-controller;
75 #gpio-cells = <2>; 76 #gpio-cells = <2>;
76 interrupt-controller; 77 interrupt-controller;
77 #interrupts-cells = <2>; 78 #interrupts-cells = <2>;
78 interrupts = <87>, <88>, <89>, <90>; 79 interrupts = <87>, <88>, <89>, <90>;
79 }; 80 };
80 81
81 gpio2: gpio@d0018180 { 82 gpio2: gpio@18180 {
82 compatible = "marvell,orion-gpio"; 83 compatible = "marvell,orion-gpio";
83 reg = <0xd0018180 0x40>; 84 reg = <0x18180 0x40>;
84 ngpios = <3>; 85 ngpios = <3>;
85 gpio-controller; 86 gpio-controller;
86 #gpio-cells = <2>; 87 #gpio-cells = <2>;
87 interrupt-controller; 88 interrupt-controller;
88 #interrupts-cells = <2>; 89 #interrupts-cells = <2>;
89 interrupts = <91>; 90 interrupts = <91>;
90 }; 91 };
91 92
92 ethernet@d0034000 { 93 ethernet@34000 {
93 compatible = "marvell,armada-370-neta"; 94 compatible = "marvell,armada-370-neta";
94 reg = <0xd0034000 0x2500>; 95 reg = <0x34000 0x2500>;
95 interrupts = <14>; 96 interrupts = <14>;
96 clocks = <&gateclk 1>; 97 clocks = <&gateclk 1>;
97 status = "disabled"; 98 status = "disabled";
98 };
99
100 /*
101 * MV78260 has 3 PCIe units Gen2.0: Two units can be
102 * configured as x4 or quad x1 lanes. One unit is
103 * x4/x1.
104 */
105 pcie-controller {
106 compatible = "marvell,armada-xp-pcie";
107 status = "disabled";
108 device_type = "pci";
109
110 #address-cells = <3>;
111 #size-cells = <2>;
112
113 bus-range = <0x00 0xff>;
114
115 ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */
116 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */
117 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */
118 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */
119 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */
120 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */
121 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */
122 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
123 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
124
125 pcie@1,0 {
126 device_type = "pci";
127 assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>;
128 reg = <0x0800 0 0 0 0>;
129 #address-cells = <3>;
130 #size-cells = <2>;
131 #interrupt-cells = <1>;
132 ranges;
133 interrupt-map-mask = <0 0 0 0>;
134 interrupt-map = <0 0 0 0 &mpic 58>;
135 marvell,pcie-port = <0>;
136 marvell,pcie-lane = <0>;
137 clocks = <&gateclk 5>;
138 status = "disabled";
139 };
140
141 pcie@2,0 {
142 device_type = "pci";
143 assigned-addresses = <0x82000800 0 0xd0044000 0 0x2000>;
144 reg = <0x1000 0 0 0 0>;
145 #address-cells = <3>;
146 #size-cells = <2>;
147 #interrupt-cells = <1>;
148 ranges;
149 interrupt-map-mask = <0 0 0 0>;
150 interrupt-map = <0 0 0 0 &mpic 59>;
151 marvell,pcie-port = <0>;
152 marvell,pcie-lane = <1>;
153 clocks = <&gateclk 6>;
154 status = "disabled";
155 }; 99 };
156 100
157 pcie@3,0 { 101 /*
158 device_type = "pci"; 102 * MV78260 has 3 PCIe units Gen2.0: Two units can be
159 assigned-addresses = <0x82000800 0 0xd0048000 0 0x2000>; 103 * configured as x4 or quad x1 lanes. One unit is
160 reg = <0x1800 0 0 0 0>; 104 * x4/x1.
161 #address-cells = <3>; 105 */
162 #size-cells = <2>; 106 pcie-controller {
163 #interrupt-cells = <1>; 107 compatible = "marvell,armada-xp-pcie";
164 ranges;
165 interrupt-map-mask = <0 0 0 0>;
166 interrupt-map = <0 0 0 0 &mpic 60>;
167 marvell,pcie-port = <0>;
168 marvell,pcie-lane = <2>;
169 clocks = <&gateclk 7>;
170 status = "disabled"; 108 status = "disabled";
171 };
172
173 pcie@4,0 {
174 device_type = "pci"; 109 device_type = "pci";
175 assigned-addresses = <0x82000800 0 0xd004c000 0 0x2000>;
176 reg = <0x2000 0 0 0 0>;
177 #address-cells = <3>;
178 #size-cells = <2>;
179 #interrupt-cells = <1>;
180 ranges;
181 interrupt-map-mask = <0 0 0 0>;
182 interrupt-map = <0 0 0 0 &mpic 61>;
183 marvell,pcie-port = <0>;
184 marvell,pcie-lane = <3>;
185 clocks = <&gateclk 8>;
186 status = "disabled";
187 };
188 110
189 pcie@9,0 {
190 device_type = "pci";
191 assigned-addresses = <0x82000800 0 0xd0042000 0 0x2000>;
192 reg = <0x4800 0 0 0 0>;
193 #address-cells = <3>; 111 #address-cells = <3>;
194 #size-cells = <2>; 112 #size-cells = <2>;
195 #interrupt-cells = <1>;
196 ranges;
197 interrupt-map-mask = <0 0 0 0>;
198 interrupt-map = <0 0 0 0 &mpic 99>;
199 marvell,pcie-port = <2>;
200 marvell,pcie-lane = <0>;
201 clocks = <&gateclk 26>;
202 status = "disabled";
203 };
204 113
205 pcie@10,0 { 114 bus-range = <0x00 0xff>;
206 device_type = "pci"; 115
207 assigned-addresses = <0x82000800 0 0xd0082000 0 0x2000>; 116 ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */
208 reg = <0x5000 0 0 0 0>; 117 0x82000000 0 0x42000 0x42000 0 0x00002000 /* Port 2.0 registers */
209 #address-cells = <3>; 118 0x82000000 0 0x44000 0x44000 0 0x00002000 /* Port 0.1 registers */
210 #size-cells = <2>; 119 0x82000000 0 0x48000 0x48000 0 0x00002000 /* Port 0.2 registers */
211 #interrupt-cells = <1>; 120 0x82000000 0 0x4c000 0x4c000 0 0x00002000 /* Port 0.3 registers */
212 ranges; 121 0x82000000 0 0x80000 0x80000 0 0x00002000 /* Port 1.0 registers */
213 interrupt-map-mask = <0 0 0 0>; 122 0x82000000 0 0x82000 0x82000 0 0x00002000 /* Port 3.0 registers */
214 interrupt-map = <0 0 0 0 &mpic 103>; 123 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
215 marvell,pcie-port = <3>; 124 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
216 marvell,pcie-lane = <0>; 125
217 clocks = <&gateclk 27>; 126 pcie@1,0 {
218 status = "disabled"; 127 device_type = "pci";
128 assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
129 reg = <0x0800 0 0 0 0>;
130 #address-cells = <3>;
131 #size-cells = <2>;
132 #interrupt-cells = <1>;
133 ranges;
134 interrupt-map-mask = <0 0 0 0>;
135 interrupt-map = <0 0 0 0 &mpic 58>;
136 marvell,pcie-port = <0>;
137 marvell,pcie-lane = <0>;
138 clocks = <&gateclk 5>;
139 status = "disabled";
140 };
141
142 pcie@2,0 {
143 device_type = "pci";
144 assigned-addresses = <0x82000800 0 0x44000 0 0x2000>;
145 reg = <0x1000 0 0 0 0>;
146 #address-cells = <3>;
147 #size-cells = <2>;
148 #interrupt-cells = <1>;
149 ranges;
150 interrupt-map-mask = <0 0 0 0>;
151 interrupt-map = <0 0 0 0 &mpic 59>;
152 marvell,pcie-port = <0>;
153 marvell,pcie-lane = <1>;
154 clocks = <&gateclk 6>;
155 status = "disabled";
156 };
157
158 pcie@3,0 {
159 device_type = "pci";
160 assigned-addresses = <0x82000800 0 0x48000 0 0x2000>;
161 reg = <0x1800 0 0 0 0>;
162 #address-cells = <3>;
163 #size-cells = <2>;
164 #interrupt-cells = <1>;
165 ranges;
166 interrupt-map-mask = <0 0 0 0>;
167 interrupt-map = <0 0 0 0 &mpic 60>;
168 marvell,pcie-port = <0>;
169 marvell,pcie-lane = <2>;
170 clocks = <&gateclk 7>;
171 status = "disabled";
172 };
173
174 pcie@4,0 {
175 device_type = "pci";
176 assigned-addresses = <0x82000800 0 0x4c000 0 0x2000>;
177 reg = <0x2000 0 0 0 0>;
178 #address-cells = <3>;
179 #size-cells = <2>;
180 #interrupt-cells = <1>;
181 ranges;
182 interrupt-map-mask = <0 0 0 0>;
183 interrupt-map = <0 0 0 0 &mpic 61>;
184 marvell,pcie-port = <0>;
185 marvell,pcie-lane = <3>;
186 clocks = <&gateclk 8>;
187 status = "disabled";
188 };
189
190 pcie@9,0 {
191 device_type = "pci";
192 assigned-addresses = <0x82000800 0 0x42000 0 0x2000>;
193 reg = <0x4800 0 0 0 0>;
194 #address-cells = <3>;
195 #size-cells = <2>;
196 #interrupt-cells = <1>;
197 ranges;
198 interrupt-map-mask = <0 0 0 0>;
199 interrupt-map = <0 0 0 0 &mpic 99>;
200 marvell,pcie-port = <2>;
201 marvell,pcie-lane = <0>;
202 clocks = <&gateclk 26>;
203 status = "disabled";
204 };
205
206 pcie@10,0 {
207 device_type = "pci";
208 assigned-addresses = <0x82000800 0 0x82000 0 0x2000>;
209 reg = <0x5000 0 0 0 0>;
210 #address-cells = <3>;
211 #size-cells = <2>;
212 #interrupt-cells = <1>;
213 ranges;
214 interrupt-map-mask = <0 0 0 0>;
215 interrupt-map = <0 0 0 0 &mpic 103>;
216 marvell,pcie-port = <3>;
217 marvell,pcie-lane = <0>;
218 clocks = <&gateclk 27>;
219 status = "disabled";
220 };
219 }; 221 };
220 }; 222 };
221 }; 223 };
diff --git a/arch/arm/boot/dts/armada-xp-mv78460.dtsi b/arch/arm/boot/dts/armada-xp-mv78460.dtsi
index 23a5ac4490a8..6ab56bd35de9 100644
--- a/arch/arm/boot/dts/armada-xp-mv78460.dtsi
+++ b/arch/arm/boot/dts/armada-xp-mv78460.dtsi
@@ -27,277 +27,279 @@
27 27
28 28
29 cpus { 29 cpus {
30 #address-cells = <1>; 30 #address-cells = <1>;
31 #size-cells = <0>; 31 #size-cells = <0>;
32 32
33 cpu@0 { 33 cpu@0 {
34 device_type = "cpu"; 34 device_type = "cpu";
35 compatible = "marvell,sheeva-v7"; 35 compatible = "marvell,sheeva-v7";
36 reg = <0>; 36 reg = <0>;
37 clocks = <&cpuclk 0>; 37 clocks = <&cpuclk 0>;
38 }; 38 };
39 39
40 cpu@1 { 40 cpu@1 {
41 device_type = "cpu"; 41 device_type = "cpu";
42 compatible = "marvell,sheeva-v7"; 42 compatible = "marvell,sheeva-v7";
43 reg = <1>; 43 reg = <1>;
44 clocks = <&cpuclk 1>; 44 clocks = <&cpuclk 1>;
45 }; 45 };
46 46
47 cpu@2 { 47 cpu@2 {
48 device_type = "cpu"; 48 device_type = "cpu";
49 compatible = "marvell,sheeva-v7"; 49 compatible = "marvell,sheeva-v7";
50 reg = <2>; 50 reg = <2>;
51 clocks = <&cpuclk 2>; 51 clocks = <&cpuclk 2>;
52 }; 52 };
53 53
54 cpu@3 { 54 cpu@3 {
55 device_type = "cpu"; 55 device_type = "cpu";
56 compatible = "marvell,sheeva-v7"; 56 compatible = "marvell,sheeva-v7";
57 reg = <3>; 57 reg = <3>;
58 clocks = <&cpuclk 3>; 58 clocks = <&cpuclk 3>;
59 }; 59 };
60 }; 60 };
61 61
62 soc { 62 soc {
63 pinctrl { 63 internal-regs {
64 compatible = "marvell,mv78460-pinctrl"; 64 pinctrl {
65 reg = <0xd0018000 0x38>; 65 compatible = "marvell,mv78460-pinctrl";
66 reg = <0x18000 0x38>;
66 67
67 sdio_pins: sdio-pins { 68 sdio_pins: sdio-pins {
68 marvell,pins = "mpp30", "mpp31", "mpp32", 69 marvell,pins = "mpp30", "mpp31", "mpp32",
69 "mpp33", "mpp34", "mpp35"; 70 "mpp33", "mpp34", "mpp35";
70 marvell,function = "sd0"; 71 marvell,function = "sd0";
72 };
71 }; 73 };
72 };
73 74
74 gpio0: gpio@d0018100 { 75 gpio0: gpio@18100 {
75 compatible = "marvell,orion-gpio"; 76 compatible = "marvell,orion-gpio";
76 reg = <0xd0018100 0x40>; 77 reg = <0x18100 0x40>;
77 ngpios = <32>; 78 ngpios = <32>;
78 gpio-controller; 79 gpio-controller;
79 #gpio-cells = <2>; 80 #gpio-cells = <2>;
80 interrupt-controller; 81 interrupt-controller;
81 #interrupts-cells = <2>; 82 #interrupts-cells = <2>;
82 interrupts = <82>, <83>, <84>, <85>; 83 interrupts = <82>, <83>, <84>, <85>;
83 }; 84 };
84 85
85 gpio1: gpio@d0018140 { 86 gpio1: gpio@18140 {
86 compatible = "marvell,orion-gpio"; 87 compatible = "marvell,orion-gpio";
87 reg = <0xd0018140 0x40>; 88 reg = <0x18140 0x40>;
88 ngpios = <32>; 89 ngpios = <32>;
89 gpio-controller; 90 gpio-controller;
90 #gpio-cells = <2>; 91 #gpio-cells = <2>;
91 interrupt-controller; 92 interrupt-controller;
92 #interrupts-cells = <2>; 93 #interrupts-cells = <2>;
93 interrupts = <87>, <88>, <89>, <90>; 94 interrupts = <87>, <88>, <89>, <90>;
94 }; 95 };
95 96
96 gpio2: gpio@d0018180 { 97 gpio2: gpio@18180 {
97 compatible = "marvell,orion-gpio"; 98 compatible = "marvell,orion-gpio";
98 reg = <0xd0018180 0x40>; 99 reg = <0x18180 0x40>;
99 ngpios = <3>; 100 ngpios = <3>;
100 gpio-controller; 101 gpio-controller;
101 #gpio-cells = <2>; 102 #gpio-cells = <2>;
102 interrupt-controller; 103 interrupt-controller;
103 #interrupts-cells = <2>; 104 #interrupts-cells = <2>;
104 interrupts = <91>; 105 interrupts = <91>;
105 }; 106 };
106 107
107 ethernet@d0034000 { 108 ethernet@34000 {
108 compatible = "marvell,armada-370-neta"; 109 compatible = "marvell,armada-370-neta";
109 reg = <0xd0034000 0x2500>; 110 reg = <0x34000 0x2500>;
110 interrupts = <14>; 111 interrupts = <14>;
111 clocks = <&gateclk 1>; 112 clocks = <&gateclk 1>;
112 status = "disabled"; 113 status = "disabled";
113 }; 114 };
114 115
115 /* 116 /*
116 * MV78460 has 4 PCIe units Gen2.0: Two units can be 117 * MV78460 has 4 PCIe units Gen2.0: Two units can be
117 * configured as x4 or quad x1 lanes. Two units are 118 * configured as x4 or quad x1 lanes. Two units are
118 * x4/x1. 119 * x4/x1.
119 */ 120 */
120 pcie-controller { 121 pcie-controller {
121 compatible = "marvell,armada-xp-pcie"; 122 compatible = "marvell,armada-xp-pcie";
122 status = "disabled"; 123 status = "disabled";
123 device_type = "pci"; 124 device_type = "pci";
124 125
125 #address-cells = <3>; 126 #address-cells = <3>;
126 #size-cells = <2>; 127 #size-cells = <2>;
127 128
128 bus-range = <0x00 0xff>; 129 bus-range = <0x00 0xff>;
129 130
130 ranges = <0x82000000 0 0xd0040000 0xd0040000 0 0x00002000 /* Port 0.0 registers */ 131 ranges = <0x82000000 0 0x40000 0x40000 0 0x00002000 /* Port 0.0 registers */
131 0x82000000 0 0xd0042000 0xd0042000 0 0x00002000 /* Port 2.0 registers */ 132 0x82000000 0 0x42000 0x42000 0 0x00002000 /* Port 2.0 registers */
132 0x82000000 0 0xd0044000 0xd0044000 0 0x00002000 /* Port 0.1 registers */ 133 0x82000000 0 0x44000 0x44000 0 0x00002000 /* Port 0.1 registers */
133 0x82000000 0 0xd0048000 0xd0048000 0 0x00002000 /* Port 0.2 registers */ 134 0x82000000 0 0x48000 0x48000 0 0x00002000 /* Port 0.2 registers */
134 0x82000000 0 0xd004c000 0xd004c000 0 0x00002000 /* Port 0.3 registers */ 135 0x82000000 0 0x4c000 0x4c000 0 0x00002000 /* Port 0.3 registers */
135 0x82000000 0 0xd0080000 0xd0080000 0 0x00002000 /* Port 1.0 registers */ 136 0x82000000 0 0x80000 0x80000 0 0x00002000 /* Port 1.0 registers */
136 0x82000000 0 0xd0082000 0xd0082000 0 0x00002000 /* Port 3.0 registers */ 137 0x82000000 0 0x82000 0x82000 0 0x00002000 /* Port 3.0 registers */
137 0x82000000 0 0xd0084000 0xd0084000 0 0x00002000 /* Port 1.1 registers */ 138 0x82000000 0 0x84000 0x84000 0 0x00002000 /* Port 1.1 registers */
138 0x82000000 0 0xd0088000 0xd0088000 0 0x00002000 /* Port 1.2 registers */ 139 0x82000000 0 0x88000 0x88000 0 0x00002000 /* Port 1.2 registers */
139 0x82000000 0 0xd008c000 0xd008c000 0 0x00002000 /* Port 1.3 registers */ 140 0x82000000 0 0x8c000 0x8c000 0 0x00002000 /* Port 1.3 registers */
140 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */ 141 0x82000000 0 0xe0000000 0xe0000000 0 0x08000000 /* non-prefetchable memory */
141 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */ 142 0x81000000 0 0 0xe8000000 0 0x00100000>; /* downstream I/O */
142 143
143 pcie@1,0 { 144 pcie@1,0 {
144 device_type = "pci"; 145 device_type = "pci";
145 assigned-addresses = <0x82000800 0 0xd0040000 0 0x2000>; 146 assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
146 reg = <0x0800 0 0 0 0>; 147 reg = <0x0800 0 0 0 0>;
147 #address-cells = <3>; 148 #address-cells = <3>;
148 #size-cells = <2>; 149 #size-cells = <2>;
149 #interrupt-cells = <1>; 150 #interrupt-cells = <1>;
150 ranges; 151 ranges;
151 interrupt-map-mask = <0 0 0 0>; 152 interrupt-map-mask = <0 0 0 0>;
152 interrupt-map = <0 0 0 0 &mpic 58>; 153 interrupt-map = <0 0 0 0 &mpic 58>;
153 marvell,pcie-port = <0>; 154 marvell,pcie-port = <0>;
154 marvell,pcie-lane = <0>; 155 marvell,pcie-lane = <0>;
155 clocks = <&gateclk 5>; 156 clocks = <&gateclk 5>;
156 status = "disabled"; 157 status = "disabled";
157 }; 158 };
158 159
159 pcie@2,0 { 160 pcie@2,0 {
160 device_type = "pci"; 161 device_type = "pci";
161 assigned-addresses = <0x82001000 0 0xd0044000 0 0x2000>; 162 assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
162 reg = <0x1000 0 0 0 0>; 163 reg = <0x1000 0 0 0 0>;
163 #address-cells = <3>; 164 #address-cells = <3>;
164 #size-cells = <2>; 165 #size-cells = <2>;
165 #interrupt-cells = <1>; 166 #interrupt-cells = <1>;
166 ranges; 167 ranges;
167 interrupt-map-mask = <0 0 0 0>; 168 interrupt-map-mask = <0 0 0 0>;
168 interrupt-map = <0 0 0 0 &mpic 59>; 169 interrupt-map = <0 0 0 0 &mpic 59>;
169 marvell,pcie-port = <0>; 170 marvell,pcie-port = <0>;
170 marvell,pcie-lane = <1>; 171 marvell,pcie-lane = <1>;
171 clocks = <&gateclk 6>; 172 clocks = <&gateclk 6>;
172 status = "disabled"; 173 status = "disabled";
173 }; 174 };
174 175
175 pcie@3,0 { 176 pcie@3,0 {
176 device_type = "pci"; 177 device_type = "pci";
177 assigned-addresses = <0x82001800 0 0xd0048000 0 0x2000>; 178 assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
178 reg = <0x1800 0 0 0 0>; 179 reg = <0x1800 0 0 0 0>;
179 #address-cells = <3>; 180 #address-cells = <3>;
180 #size-cells = <2>; 181 #size-cells = <2>;
181 #interrupt-cells = <1>; 182 #interrupt-cells = <1>;
182 ranges; 183 ranges;
183 interrupt-map-mask = <0 0 0 0>; 184 interrupt-map-mask = <0 0 0 0>;
184 interrupt-map = <0 0 0 0 &mpic 60>; 185 interrupt-map = <0 0 0 0 &mpic 60>;
185 marvell,pcie-port = <0>; 186 marvell,pcie-port = <0>;
186 marvell,pcie-lane = <2>; 187 marvell,pcie-lane = <2>;
187 clocks = <&gateclk 7>; 188 clocks = <&gateclk 7>;
188 status = "disabled"; 189 status = "disabled";
189 }; 190 };
190 191
191 pcie@4,0 { 192 pcie@4,0 {
192 device_type = "pci"; 193 device_type = "pci";
193 assigned-addresses = <0x82002000 0 0xd004c000 0 0x2000>; 194 assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
194 reg = <0x2000 0 0 0 0>; 195 reg = <0x2000 0 0 0 0>;
195 #address-cells = <3>; 196 #address-cells = <3>;
196 #size-cells = <2>; 197 #size-cells = <2>;
197 #interrupt-cells = <1>; 198 #interrupt-cells = <1>;
198 ranges; 199 ranges;
199 interrupt-map-mask = <0 0 0 0>; 200 interrupt-map-mask = <0 0 0 0>;
200 interrupt-map = <0 0 0 0 &mpic 61>; 201 interrupt-map = <0 0 0 0 &mpic 61>;
201 marvell,pcie-port = <0>; 202 marvell,pcie-port = <0>;
202 marvell,pcie-lane = <3>; 203 marvell,pcie-lane = <3>;
203 clocks = <&gateclk 8>; 204 clocks = <&gateclk 8>;
204 status = "disabled"; 205 status = "disabled";
205 }; 206 };
206 207
207 pcie@5,0 { 208 pcie@5,0 {
208 device_type = "pci"; 209 device_type = "pci";
209 assigned-addresses = <0x82002800 0 0xd0080000 0 0x2000>; 210 assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
210 reg = <0x2800 0 0 0 0>; 211 reg = <0x2800 0 0 0 0>;
211 #address-cells = <3>; 212 #address-cells = <3>;
212 #size-cells = <2>; 213 #size-cells = <2>;
213 #interrupt-cells = <1>; 214 #interrupt-cells = <1>;
214 ranges; 215 ranges;
215 interrupt-map-mask = <0 0 0 0>; 216 interrupt-map-mask = <0 0 0 0>;
216 interrupt-map = <0 0 0 0 &mpic 62>; 217 interrupt-map = <0 0 0 0 &mpic 62>;
217 marvell,pcie-port = <1>; 218 marvell,pcie-port = <1>;
218 marvell,pcie-lane = <0>; 219 marvell,pcie-lane = <0>;
219 clocks = <&gateclk 9>; 220 clocks = <&gateclk 9>;
220 status = "disabled"; 221 status = "disabled";
221 }; 222 };
222 223
223 pcie@6,0 { 224 pcie@6,0 {
224 device_type = "pci"; 225 device_type = "pci";
225 assigned-addresses = <0x82003000 0 0xd0084000 0 0x2000>; 226 assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
226 reg = <0x3000 0 0 0 0>; 227 reg = <0x3000 0 0 0 0>;
227 #address-cells = <3>; 228 #address-cells = <3>;
228 #size-cells = <2>; 229 #size-cells = <2>;
229 #interrupt-cells = <1>; 230 #interrupt-cells = <1>;
230 ranges; 231 ranges;
231 interrupt-map-mask = <0 0 0 0>; 232 interrupt-map-mask = <0 0 0 0>;
232 interrupt-map = <0 0 0 0 &mpic 63>; 233 interrupt-map = <0 0 0 0 &mpic 63>;
233 marvell,pcie-port = <1>; 234 marvell,pcie-port = <1>;
234 marvell,pcie-lane = <1>; 235 marvell,pcie-lane = <1>;
235 clocks = <&gateclk 10>; 236 clocks = <&gateclk 10>;
236 status = "disabled"; 237 status = "disabled";
237 }; 238 };
238 239
239 pcie@7,0 { 240 pcie@7,0 {
240 device_type = "pci"; 241 device_type = "pci";
241 assigned-addresses = <0x82003800 0 0xd0088000 0 0x2000>; 242 assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
242 reg = <0x3800 0 0 0 0>; 243 reg = <0x3800 0 0 0 0>;
243 #address-cells = <3>; 244 #address-cells = <3>;
244 #size-cells = <2>; 245 #size-cells = <2>;
245 #interrupt-cells = <1>; 246 #interrupt-cells = <1>;
246 ranges; 247 ranges;
247 interrupt-map-mask = <0 0 0 0>; 248 interrupt-map-mask = <0 0 0 0>;
248 interrupt-map = <0 0 0 0 &mpic 64>; 249 interrupt-map = <0 0 0 0 &mpic 64>;
249 marvell,pcie-port = <1>; 250 marvell,pcie-port = <1>;
250 marvell,pcie-lane = <2>; 251 marvell,pcie-lane = <2>;
251 clocks = <&gateclk 11>; 252 clocks = <&gateclk 11>;
252 status = "disabled"; 253 status = "disabled";
253 }; 254 };
254 255
255 pcie@8,0 { 256 pcie@8,0 {
256 device_type = "pci"; 257 device_type = "pci";
257 assigned-addresses = <0x82004000 0 0xd008c000 0 0x2000>; 258 assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
258 reg = <0x4000 0 0 0 0>; 259 reg = <0x4000 0 0 0 0>;
259 #address-cells = <3>; 260 #address-cells = <3>;
260 #size-cells = <2>; 261 #size-cells = <2>;
261 #interrupt-cells = <1>; 262 #interrupt-cells = <1>;
262 ranges; 263 ranges;
263 interrupt-map-mask = <0 0 0 0>; 264 interrupt-map-mask = <0 0 0 0>;
264 interrupt-map = <0 0 0 0 &mpic 65>; 265 interrupt-map = <0 0 0 0 &mpic 65>;
265 marvell,pcie-port = <1>; 266 marvell,pcie-port = <1>;
266 marvell,pcie-lane = <3>; 267 marvell,pcie-lane = <3>;
267 clocks = <&gateclk 12>; 268 clocks = <&gateclk 12>;
268 status = "disabled"; 269 status = "disabled";
269 }; 270 };
270 pcie@9,0 { 271 pcie@9,0 {
271 device_type = "pci"; 272 device_type = "pci";
272 assigned-addresses = <0x82004800 0 0xd0042000 0 0x2000>; 273 assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
273 reg = <0x4800 0 0 0 0>; 274 reg = <0x4800 0 0 0 0>;
274 #address-cells = <3>; 275 #address-cells = <3>;
275 #size-cells = <2>; 276 #size-cells = <2>;
276 #interrupt-cells = <1>; 277 #interrupt-cells = <1>;
277 ranges; 278 ranges;
278 interrupt-map-mask = <0 0 0 0>; 279 interrupt-map-mask = <0 0 0 0>;
279 interrupt-map = <0 0 0 0 &mpic 99>; 280 interrupt-map = <0 0 0 0 &mpic 99>;
280 marvell,pcie-port = <2>; 281 marvell,pcie-port = <2>;
281 marvell,pcie-lane = <0>; 282 marvell,pcie-lane = <0>;
282 clocks = <&gateclk 26>; 283 clocks = <&gateclk 26>;
283 status = "disabled"; 284 status = "disabled";
284 }; 285 };
285 286
286 pcie@10,0 { 287 pcie@10,0 {
287 device_type = "pci"; 288 device_type = "pci";
288 assigned-addresses = <0x82005000 0 0xd0082000 0 0x2000>; 289 assigned-addresses = <0x82005000 0 0x82000 0 0x2000>;
289 reg = <0x5000 0 0 0 0>; 290 reg = <0x5000 0 0 0 0>;
290 #address-cells = <3>; 291 #address-cells = <3>;
291 #size-cells = <2>; 292 #size-cells = <2>;
292 #interrupt-cells = <1>; 293 #interrupt-cells = <1>;
293 ranges; 294 ranges;
294 interrupt-map-mask = <0 0 0 0>; 295 interrupt-map-mask = <0 0 0 0>;
295 interrupt-map = <0 0 0 0 &mpic 103>; 296 interrupt-map = <0 0 0 0 &mpic 103>;
296 marvell,pcie-port = <3>; 297 marvell,pcie-port = <3>;
297 marvell,pcie-lane = <0>; 298 marvell,pcie-lane = <0>;
298 clocks = <&gateclk 27>; 299 clocks = <&gateclk 27>;
299 status = "disabled"; 300 status = "disabled";
301 };
300 }; 302 };
301 }; 303 };
302 }; 304 };
303 }; 305};
diff --git a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
index 9d04f04d4e39..f14d36c46159 100644
--- a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
+++ b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
@@ -23,158 +23,160 @@
23 23
24 memory { 24 memory {
25 device_type = "memory"; 25 device_type = "memory";
26 reg = <0x00000000 0xC0000000>; /* 3 GB */ 26 reg = <0 0x00000000 0 0xC0000000>; /* 3 GB */
27 }; 27 };
28 28
29 soc { 29 soc {
30 serial@d0012000 { 30 internal-regs {
31 clock-frequency = <250000000>; 31 serial@12000 {
32 status = "okay"; 32 clock-frequency = <250000000>;
33 }; 33 status = "okay";
34 serial@d0012100 {
35 clock-frequency = <250000000>;
36 status = "okay";
37 };
38 pinctrl {
39 led_pins: led-pins-0 {
40 marvell,pins = "mpp49", "mpp51", "mpp53";
41 marvell,function = "gpio";
42 }; 34 };
43 }; 35 serial@12100 {
44 leds { 36 clock-frequency = <250000000>;
45 compatible = "gpio-leds"; 37 status = "okay";
46 pinctrl-names = "default";
47 pinctrl-0 = <&led_pins>;
48
49 red_led {
50 label = "red_led";
51 gpios = <&gpio1 17 1>;
52 default-state = "off";
53 }; 38 };
54 39 pinctrl {
55 yellow_led { 40 led_pins: led-pins-0 {
56 label = "yellow_led"; 41 marvell,pins = "mpp49", "mpp51", "mpp53";
57 gpios = <&gpio1 19 1>; 42 marvell,function = "gpio";
58 default-state = "off"; 43 };
59 }; 44 };
60 45 leds {
61 green_led { 46 compatible = "gpio-leds";
62 label = "green_led"; 47 pinctrl-names = "default";
63 gpios = <&gpio1 21 1>; 48 pinctrl-0 = <&led_pins>;
64 default-state = "off"; 49
65 linux,default-trigger = "heartbeat"; 50 red_led {
51 label = "red_led";
52 gpios = <&gpio1 17 1>;
53 default-state = "off";
54 };
55
56 yellow_led {
57 label = "yellow_led";
58 gpios = <&gpio1 19 1>;
59 default-state = "off";
60 };
61
62 green_led {
63 label = "green_led";
64 gpios = <&gpio1 21 1>;
65 default-state = "off";
66 linux,default-trigger = "heartbeat";
67 };
66 }; 68 };
67 };
68 69
69 gpio_keys { 70 gpio_keys {
70 compatible = "gpio-keys"; 71 compatible = "gpio-keys";
71 #address-cells = <1>; 72 #address-cells = <1>;
72 #size-cells = <0>; 73 #size-cells = <0>;
73 74
74 button@1 { 75 button@1 {
75 label = "Init Button"; 76 label = "Init Button";
76 linux,code = <116>; 77 linux,code = <116>;
77 gpios = <&gpio1 28 0>; 78 gpios = <&gpio1 28 0>;
79 };
78 }; 80 };
79 };
80 81
81 mdio { 82 mdio {
82 phy0: ethernet-phy@0 { 83 phy0: ethernet-phy@0 {
83 reg = <0>; 84 reg = <0>;
84 }; 85 };
85 86
86 phy1: ethernet-phy@1 { 87 phy1: ethernet-phy@1 {
87 reg = <1>; 88 reg = <1>;
88 }; 89 };
89 90
90 phy2: ethernet-phy@2 { 91 phy2: ethernet-phy@2 {
91 reg = <2>; 92 reg = <2>;
92 }; 93 };
93 94
94 phy3: ethernet-phy@3 { 95 phy3: ethernet-phy@3 {
95 reg = <3>; 96 reg = <3>;
97 };
96 }; 98 };
97 };
98 99
99 ethernet@d0070000 { 100 ethernet@70000 {
100 status = "okay"; 101 status = "okay";
101 phy = <&phy0>; 102 phy = <&phy0>;
102 phy-mode = "sgmii"; 103 phy-mode = "sgmii";
103 }; 104 };
104 ethernet@d0074000 { 105 ethernet@74000 {
105 status = "okay"; 106 status = "okay";
106 phy = <&phy1>; 107 phy = <&phy1>;
107 phy-mode = "sgmii"; 108 phy-mode = "sgmii";
108 }; 109 };
109 ethernet@d0030000 { 110 ethernet@30000 {
110 status = "okay"; 111 status = "okay";
111 phy = <&phy2>; 112 phy = <&phy2>;
112 phy-mode = "sgmii"; 113 phy-mode = "sgmii";
113 }; 114 };
114 ethernet@d0034000 { 115 ethernet@34000 {
115 status = "okay"; 116 status = "okay";
116 phy = <&phy3>; 117 phy = <&phy3>;
117 phy-mode = "sgmii"; 118 phy-mode = "sgmii";
118 }; 119 };
119 i2c@d0011000 { 120 i2c@11000 {
120 status = "okay"; 121 status = "okay";
121 clock-frequency = <400000>; 122 clock-frequency = <400000>;
122 }; 123 };
123 i2c@d0011100 { 124 i2c@11100 {
124 status = "okay"; 125 status = "okay";
125 clock-frequency = <400000>; 126 clock-frequency = <400000>;
126 127
127 s35390a: s35390a@30 { 128 s35390a: s35390a@30 {
128 compatible = "s35390a"; 129 compatible = "s35390a";
129 reg = <0x30>; 130 reg = <0x30>;
131 };
132 };
133 sata@a0000 {
134 nr-ports = <2>;
135 status = "okay";
136 };
137 usb@50000 {
138 status = "okay";
139 };
140 usb@51000 {
141 status = "okay";
130 }; 142 };
131 };
132 sata@d00a0000 {
133 nr-ports = <2>;
134 status = "okay";
135 };
136 usb@d0050000 {
137 status = "okay";
138 };
139 usb@d0051000 {
140 status = "okay";
141 };
142 143
143 devbus-bootcs@d0010400 { 144 devbus-bootcs@10400 {
144 status = "okay"; 145 status = "okay";
145 ranges = <0 0xf0000000 0x8000000>; /* @addr 0xf000000, size 0x8000000 */ 146 ranges = <0 0xf0000000 0x8000000>; /* @addr 0xf000000, size 0x8000000 */
146 147
147 /* Device Bus parameters are required */ 148 /* Device Bus parameters are required */
148 149
149 /* Read parameters */ 150 /* Read parameters */
150 devbus,bus-width = <8>; 151 devbus,bus-width = <8>;
151 devbus,turn-off-ps = <60000>; 152 devbus,turn-off-ps = <60000>;
152 devbus,badr-skew-ps = <0>; 153 devbus,badr-skew-ps = <0>;
153 devbus,acc-first-ps = <124000>; 154 devbus,acc-first-ps = <124000>;
154 devbus,acc-next-ps = <248000>; 155 devbus,acc-next-ps = <248000>;
155 devbus,rd-setup-ps = <0>; 156 devbus,rd-setup-ps = <0>;
156 devbus,rd-hold-ps = <0>; 157 devbus,rd-hold-ps = <0>;
157 158
158 /* Write parameters */ 159 /* Write parameters */
159 devbus,sync-enable = <0>; 160 devbus,sync-enable = <0>;
160 devbus,wr-high-ps = <60000>; 161 devbus,wr-high-ps = <60000>;
161 devbus,wr-low-ps = <60000>; 162 devbus,wr-low-ps = <60000>;
162 devbus,ale-wr-ps = <60000>; 163 devbus,ale-wr-ps = <60000>;
163 164
164 /* NOR 128 MiB */ 165 /* NOR 128 MiB */
165 nor@0 { 166 nor@0 {
166 compatible = "cfi-flash"; 167 compatible = "cfi-flash";
167 reg = <0 0x8000000>; 168 reg = <0 0x8000000>;
168 bank-width = <2>; 169 bank-width = <2>;
170 };
169 }; 171 };
170 };
171 172
172 pcie-controller { 173 pcie-controller {
173 status = "okay";
174 /* Internal mini-PCIe connector */
175 pcie@1,0 {
176 /* Port 0, Lane 0 */
177 status = "okay"; 174 status = "okay";
175 /* Internal mini-PCIe connector */
176 pcie@1,0 {
177 /* Port 0, Lane 0 */
178 status = "okay";
179 };
178 }; 180 };
179 }; 181 };
180 }; 182 };
diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi
index 29dfeb6d4a26..bacab11c10dc 100644
--- a/arch/arm/boot/dts/armada-xp.dtsi
+++ b/arch/arm/boot/dts/armada-xp.dtsi
@@ -22,140 +22,140 @@
22 model = "Marvell Armada XP family SoC"; 22 model = "Marvell Armada XP family SoC";
23 compatible = "marvell,armadaxp", "marvell,armada-370-xp"; 23 compatible = "marvell,armadaxp", "marvell,armada-370-xp";
24 24
25 L2: l2-cache { 25 soc {
26 compatible = "marvell,aurora-system-cache"; 26 internal-regs {
27 reg = <0xd0008000 0x1000>; 27 L2: l2-cache {
28 cache-id-part = <0x100>; 28 compatible = "marvell,aurora-system-cache";
29 wt-override; 29 reg = <0x08000 0x1000>;
30 }; 30 cache-id-part = <0x100>;
31 wt-override;
32 };
31 33
32 mpic: interrupt-controller@d0020000 { 34 mpic: interrupt-controller@20000 {
33 reg = <0xd0020a00 0x2d0>, 35 reg = <0x20a00 0x2d0>, <0x21070 0x58>;
34 <0xd0021070 0x58>; 36 };
35 };
36 37
37 armada-370-xp-pmsu@d0022000 { 38 armada-370-xp-pmsu@22000 {
38 compatible = "marvell,armada-370-xp-pmsu"; 39 compatible = "marvell,armada-370-xp-pmsu";
39 reg = <0xd0022100 0x430>, 40 reg = <0x22100 0x430>, <0x20800 0x20>;
40 <0xd0020800 0x20>; 41 };
41 };
42 42
43 soc { 43 serial@12200 {
44 serial@d0012200 {
45 compatible = "snps,dw-apb-uart"; 44 compatible = "snps,dw-apb-uart";
46 reg = <0xd0012200 0x100>; 45 reg = <0x12200 0x100>;
47 reg-shift = <2>; 46 reg-shift = <2>;
48 interrupts = <43>; 47 interrupts = <43>;
49 reg-io-width = <1>; 48 reg-io-width = <1>;
50 status = "disabled"; 49 status = "disabled";
51 }; 50 };
52 serial@d0012300 { 51 serial@12300 {
53 compatible = "snps,dw-apb-uart"; 52 compatible = "snps,dw-apb-uart";
54 reg = <0xd0012300 0x100>; 53 reg = <0x12300 0x100>;
55 reg-shift = <2>; 54 reg-shift = <2>;
56 interrupts = <44>; 55 interrupts = <44>;
57 reg-io-width = <1>; 56 reg-io-width = <1>;
58 status = "disabled"; 57 status = "disabled";
59 }; 58 };
60 59
61 timer@d0020300 { 60 timer@20300 {
62 marvell,timer-25Mhz; 61 marvell,timer-25Mhz;
63 }; 62 };
64 63
65 coreclk: mvebu-sar@d0018230 { 64 coreclk: mvebu-sar@18230 {
66 compatible = "marvell,armada-xp-core-clock"; 65 compatible = "marvell,armada-xp-core-clock";
67 reg = <0xd0018230 0x08>; 66 reg = <0x18230 0x08>;
68 #clock-cells = <1>; 67 #clock-cells = <1>;
69 }; 68 };
70 69
71 cpuclk: clock-complex@d0018700 { 70 cpuclk: clock-complex@18700 {
72 #clock-cells = <1>; 71 #clock-cells = <1>;
73 compatible = "marvell,armada-xp-cpu-clock"; 72 compatible = "marvell,armada-xp-cpu-clock";
74 reg = <0xd0018700 0xA0>; 73 reg = <0x18700 0xA0>;
75 clocks = <&coreclk 1>; 74 clocks = <&coreclk 1>;
76 }; 75 };
77 76
78 gateclk: clock-gating-control@d0018220 { 77 gateclk: clock-gating-control@18220 {
79 compatible = "marvell,armada-xp-gating-clock"; 78 compatible = "marvell,armada-xp-gating-clock";
80 reg = <0xd0018220 0x4>; 79 reg = <0x18220 0x4>;
81 clocks = <&coreclk 0>; 80 clocks = <&coreclk 0>;
82 #clock-cells = <1>; 81 #clock-cells = <1>;
83 }; 82 };
84 83
85 system-controller@d0018200 { 84 system-controller@18200 {
86 compatible = "marvell,armada-370-xp-system-controller"; 85 compatible = "marvell,armada-370-xp-system-controller";
87 reg = <0xd0018200 0x500>; 86 reg = <0x18200 0x500>;
88 }; 87 };
89 88
90 ethernet@d0030000 { 89 ethernet@30000 {
91 compatible = "marvell,armada-370-neta"; 90 compatible = "marvell,armada-370-neta";
92 reg = <0xd0030000 0x2500>; 91 reg = <0x30000 0x2500>;
93 interrupts = <12>; 92 interrupts = <12>;
94 clocks = <&gateclk 2>; 93 clocks = <&gateclk 2>;
95 status = "disabled"; 94 status = "disabled";
96 };
97
98 xor@d0060900 {
99 compatible = "marvell,orion-xor";
100 reg = <0xd0060900 0x100
101 0xd0060b00 0x100>;
102 clocks = <&gateclk 22>;
103 status = "okay";
104
105 xor10 {
106 interrupts = <51>;
107 dmacap,memcpy;
108 dmacap,xor;
109 };
110 xor11 {
111 interrupts = <52>;
112 dmacap,memcpy;
113 dmacap,xor;
114 dmacap,memset;
115 }; 95 };
116 };
117 96
118 xor@d00f0900 { 97 xor@60900 {
119 compatible = "marvell,orion-xor"; 98 compatible = "marvell,orion-xor";
120 reg = <0xd00F0900 0x100 99 reg = <0x60900 0x100
121 0xd00F0B00 0x100>; 100 0x60b00 0x100>;
122 clocks = <&gateclk 28>; 101 clocks = <&gateclk 22>;
123 status = "okay"; 102 status = "okay";
124 103
125 xor00 { 104 xor10 {
126 interrupts = <94>; 105 interrupts = <51>;
127 dmacap,memcpy; 106 dmacap,memcpy;
128 dmacap,xor; 107 dmacap,xor;
108 };
109 xor11 {
110 interrupts = <52>;
111 dmacap,memcpy;
112 dmacap,xor;
113 dmacap,memset;
114 };
129 }; 115 };
130 xor01 { 116
131 interrupts = <95>; 117 xor@f0900 {
132 dmacap,memcpy; 118 compatible = "marvell,orion-xor";
133 dmacap,xor; 119 reg = <0xF0900 0x100
134 dmacap,memset; 120 0xF0B00 0x100>;
121 clocks = <&gateclk 28>;
122 status = "okay";
123
124 xor00 {
125 interrupts = <94>;
126 dmacap,memcpy;
127 dmacap,xor;
128 };
129 xor01 {
130 interrupts = <95>;
131 dmacap,memcpy;
132 dmacap,xor;
133 dmacap,memset;
134 };
135 }; 135 };
136 };
137 136
138 usb@d0050000 { 137 usb@50000 {
139 clocks = <&gateclk 18>; 138 clocks = <&gateclk 18>;
140 }; 139 };
141 140
142 usb@d0051000 { 141 usb@51000 {
143 clocks = <&gateclk 19>; 142 clocks = <&gateclk 19>;
144 }; 143 };
145 144
146 usb@d0052000 { 145 usb@52000 {
147 compatible = "marvell,orion-ehci"; 146 compatible = "marvell,orion-ehci";
148 reg = <0xd0052000 0x500>; 147 reg = <0x52000 0x500>;
149 interrupts = <47>; 148 interrupts = <47>;
150 clocks = <&gateclk 20>; 149 clocks = <&gateclk 20>;
151 status = "disabled"; 150 status = "disabled";
152 }; 151 };
153 152
154 thermal@d00182b0 { 153 thermal@182b0 {
155 compatible = "marvell,armadaxp-thermal"; 154 compatible = "marvell,armadaxp-thermal";
156 reg = <0xd00182b0 0x4 155 reg = <0x182b0 0x4
157 0xd00184d0 0x4>; 156 0x184d0 0x4>;
158 status = "okay"; 157 status = "okay";
158 };
159 }; 159 };
160 }; 160 };
161}; 161};
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/cros5250-common.dtsi
index 62eceb4f0d3f..0a61bbb9102f 100644
--- a/arch/arm/boot/dts/cros5250-common.dtsi
+++ b/arch/arm/boot/dts/cros5250-common.dtsi
@@ -19,11 +19,19 @@
19 chosen { 19 chosen {
20 }; 20 };
21 21
22 pinctrl@11400000 {
23 /*
24 * Disabled pullups since external part has its own pullups and
25 * double-pulling gets us out of spec in some cases.
26 */
27 i2c2_bus: i2c2-bus {
28 samsung,pin-pud = <0>;
29 };
30 };
31
22 i2c@12C60000 { 32 i2c@12C60000 {
23 samsung,i2c-sda-delay = <100>; 33 samsung,i2c-sda-delay = <100>;
24 samsung,i2c-max-bus-freq = <378000>; 34 samsung,i2c-max-bus-freq = <378000>;
25 gpios = <&gpb3 0 2 3 0>,
26 <&gpb3 1 2 3 0>;
27 35
28 max77686@09 { 36 max77686@09 {
29 compatible = "maxim,max77686"; 37 compatible = "maxim,max77686";
@@ -167,21 +175,12 @@
167 i2c@12C70000 { 175 i2c@12C70000 {
168 samsung,i2c-sda-delay = <100>; 176 samsung,i2c-sda-delay = <100>;
169 samsung,i2c-max-bus-freq = <378000>; 177 samsung,i2c-max-bus-freq = <378000>;
170 gpios = <&gpb3 2 2 3 0>,
171 <&gpb3 3 2 3 0>;
172 }; 178 };
173 179
174 i2c@12C80000 { 180 i2c@12C80000 {
175 samsung,i2c-sda-delay = <100>; 181 samsung,i2c-sda-delay = <100>;
176 samsung,i2c-max-bus-freq = <66000>; 182 samsung,i2c-max-bus-freq = <66000>;
177 183
178 /*
179 * Disabled pullups since external part has its own pullups and
180 * double-pulling gets us out of spec in some cases.
181 */
182 gpios = <&gpa0 6 3 0 0>,
183 <&gpa0 7 3 0 0>;
184
185 hdmiddc@50 { 184 hdmiddc@50 {
186 compatible = "samsung,exynos5-hdmiddc"; 185 compatible = "samsung,exynos5-hdmiddc";
187 reg = <0x50>; 186 reg = <0x50>;
@@ -191,19 +190,16 @@
191 i2c@12C90000 { 190 i2c@12C90000 {
192 samsung,i2c-sda-delay = <100>; 191 samsung,i2c-sda-delay = <100>;
193 samsung,i2c-max-bus-freq = <66000>; 192 samsung,i2c-max-bus-freq = <66000>;
194 gpios = <&gpa1 2 3 3 0>,
195 <&gpa1 3 3 3 0>;
196 }; 193 };
197 194
198 i2c@12CA0000 { 195 i2c@12CA0000 {
199 status = "disabled"; 196 samsung,i2c-sda-delay = <100>;
197 samsung,i2c-max-bus-freq = <66000>;
200 }; 198 };
201 199
202 i2c@12CB0000 { 200 i2c@12CB0000 {
203 samsung,i2c-sda-delay = <100>; 201 samsung,i2c-sda-delay = <100>;
204 samsung,i2c-max-bus-freq = <66000>; 202 samsung,i2c-max-bus-freq = <66000>;
205 gpios = <&gpa2 2 3 3 0>,
206 <&gpa2 3 3 3 0>;
207 }; 203 };
208 204
209 i2c@12CC0000 { 205 i2c@12CC0000 {
@@ -213,8 +209,6 @@
213 i2c@12CD0000 { 209 i2c@12CD0000 {
214 samsung,i2c-sda-delay = <100>; 210 samsung,i2c-sda-delay = <100>;
215 samsung,i2c-max-bus-freq = <66000>; 211 samsung,i2c-max-bus-freq = <66000>;
216 gpios = <&gpb2 2 3 3 0>,
217 <&gpb2 3 3 3 0>;
218 }; 212 };
219 213
220 i2c@12CE0000 { 214 i2c@12CE0000 {
@@ -236,15 +230,12 @@
236 samsung,dw-mshc-ciu-div = <3>; 230 samsung,dw-mshc-ciu-div = <3>;
237 samsung,dw-mshc-sdr-timing = <2 3>; 231 samsung,dw-mshc-sdr-timing = <2 3>;
238 samsung,dw-mshc-ddr-timing = <1 2>; 232 samsung,dw-mshc-ddr-timing = <1 2>;
233 pinctrl-names = "default";
234 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_cd &sd0_bus4 &sd0_bus8>;
239 235
240 slot@0 { 236 slot@0 {
241 reg = <0>; 237 reg = <0>;
242 bus-width = <8>; 238 bus-width = <8>;
243 gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
244 <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
245 <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>,
246 <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
247 <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>;
248 }; 239 };
249 }; 240 };
250 241
@@ -260,15 +251,13 @@
260 samsung,dw-mshc-ciu-div = <3>; 251 samsung,dw-mshc-ciu-div = <3>;
261 samsung,dw-mshc-sdr-timing = <2 3>; 252 samsung,dw-mshc-sdr-timing = <2 3>;
262 samsung,dw-mshc-ddr-timing = <1 2>; 253 samsung,dw-mshc-ddr-timing = <1 2>;
254 pinctrl-names = "default";
255 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
263 256
264 slot@0 { 257 slot@0 {
265 reg = <0>; 258 reg = <0>;
266 bus-width = <4>; 259 bus-width = <4>;
267 samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>; 260 wp-gpios = <&gpc2 1 0>;
268 wp-gpios = <&gpc2 1 0 0 3>;
269 gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>,
270 <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>,
271 <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>;
272 }; 261 };
273 }; 262 };
274 263
@@ -281,11 +270,11 @@
281 samsung,dw-mshc-ciu-div = <3>; 270 samsung,dw-mshc-ciu-div = <3>;
282 samsung,dw-mshc-sdr-timing = <2 3>; 271 samsung,dw-mshc-sdr-timing = <2 3>;
283 samsung,dw-mshc-ddr-timing = <1 2>; 272 samsung,dw-mshc-ddr-timing = <1 2>;
273 /* See board-specific dts files for pin setup */
284 274
285 slot@0 { 275 slot@0 {
286 reg = <0>; 276 reg = <0>;
287 bus-width = <4>; 277 bus-width = <4>;
288 /* See board-specific dts files for GPIOs */
289 }; 278 };
290 }; 279 };
291 280
@@ -294,9 +283,6 @@
294 }; 283 };
295 284
296 spi_1: spi@12d30000 { 285 spi_1: spi@12d30000 {
297 gpios = <&gpa2 4 2 3 0>,
298 <&gpa2 6 2 3 0>,
299 <&gpa2 7 2 3 0>;
300 samsung,spi-src-clk = <0>; 286 samsung,spi-src-clk = <0>;
301 num-cs = <1>; 287 num-cs = <1>;
302 }; 288 };
@@ -306,7 +292,7 @@
306 }; 292 };
307 293
308 hdmi { 294 hdmi {
309 hpd-gpio = <&gpx3 7 0xf 1 3>; 295 hpd-gpio = <&gpx3 7 0>;
310 }; 296 };
311 297
312 gpio-keys { 298 gpio-keys {
@@ -314,7 +300,7 @@
314 300
315 power { 301 power {
316 label = "Power"; 302 label = "Power";
317 gpios = <&gpx1 3 0 0x10000 0>; 303 gpios = <&gpx1 3 1>;
318 linux,code = <116>; /* KEY_POWER */ 304 linux,code = <116>; /* KEY_POWER */
319 gpio-key,wakeup; 305 gpio-key,wakeup;
320 }; 306 };
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index c5834a6c5bf4..c914357c0d89 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -50,6 +50,46 @@
50 pinctrl-names = "default"; 50 pinctrl-names = "default";
51 pinctrl-0 = <&mmc0_pins>; 51 pinctrl-0 = <&mmc0_pins>;
52 }; 52 };
53 spi1: spi@1f0e000 {
54 status = "okay";
55 pinctrl-names = "default";
56 pinctrl-0 = <&spi1_pins &spi1_cs0_pin>;
57 flash: m25p80@0 {
58 #address-cells = <1>;
59 #size-cells = <1>;
60 compatible = "m25p64";
61 spi-max-frequency = <30000000>;
62 reg = <0>;
63 partition@0 {
64 label = "U-Boot-SPL";
65 reg = <0x00000000 0x00010000>;
66 read-only;
67 };
68 partition@1 {
69 label = "U-Boot";
70 reg = <0x00010000 0x00080000>;
71 read-only;
72 };
73 partition@2 {
74 label = "U-Boot-Env";
75 reg = <0x00090000 0x00010000>;
76 read-only;
77 };
78 partition@3 {
79 label = "Kernel";
80 reg = <0x000a0000 0x00280000>;
81 };
82 partition@4 {
83 label = "Filesystem";
84 reg = <0x00320000 0x00400000>;
85 };
86 partition@5 {
87 label = "MAC-Address";
88 reg = <0x007f0000 0x00010000>;
89 read-only;
90 };
91 };
92 };
53 }; 93 };
54 nand_cs3@62000000 { 94 nand_cs3@62000000 {
55 status = "okay"; 95 status = "okay";
diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index 3ade343f13cc..2c88313d2c7a 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -71,6 +71,60 @@
71 0x28 0x00222222 0x00ffffff 71 0x28 0x00222222 0x00ffffff
72 >; 72 >;
73 }; 73 };
74 ehrpwm0a_pins: pinmux_ehrpwm0a_pins {
75 pinctrl-single,bits = <
76 /* EPWM0A */
77 0xc 0x00000002 0x0000000f
78 >;
79 };
80 ehrpwm0b_pins: pinmux_ehrpwm0b_pins {
81 pinctrl-single,bits = <
82 /* EPWM0B */
83 0xc 0x00000020 0x000000f0
84 >;
85 };
86 ehrpwm1a_pins: pinmux_ehrpwm1a_pins {
87 pinctrl-single,bits = <
88 /* EPWM1A */
89 0x14 0x00000002 0x0000000f
90 >;
91 };
92 ehrpwm1b_pins: pinmux_ehrpwm1b_pins {
93 pinctrl-single,bits = <
94 /* EPWM1B */
95 0x14 0x00000020 0x000000f0
96 >;
97 };
98 ecap0_pins: pinmux_ecap0_pins {
99 pinctrl-single,bits = <
100 /* ECAP0_APWM0 */
101 0x8 0x20000000 0xf0000000
102 >;
103 };
104 ecap1_pins: pinmux_ecap1_pins {
105 pinctrl-single,bits = <
106 /* ECAP1_APWM1 */
107 0x4 0x40000000 0xf0000000
108 >;
109 };
110 ecap2_pins: pinmux_ecap2_pins {
111 pinctrl-single,bits = <
112 /* ECAP2_APWM2 */
113 0x4 0x00000004 0x0000000f
114 >;
115 };
116 spi1_pins: pinmux_spi_pins {
117 pinctrl-single,bits = <
118 /* SIMO, SOMI, CLK */
119 0x14 0x00110100 0x00ff0f00
120 >;
121 };
122 spi1_cs0_pin: pinmux_spi1_cs0 {
123 pinctrl-single,bits = <
124 /* CS0 */
125 0x14 0x00000010 0x000000f0
126 >;
127 };
74 }; 128 };
75 serial0: serial@1c42000 { 129 serial0: serial@1c42000 {
76 compatible = "ns16550a"; 130 compatible = "ns16550a";
@@ -122,6 +176,46 @@
122 interrupts = <16>; 176 interrupts = <16>;
123 status = "disabled"; 177 status = "disabled";
124 }; 178 };
179 ehrpwm0: ehrpwm@01f00000 {
180 compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm";
181 #pwm-cells = <3>;
182 reg = <0x300000 0x2000>;
183 status = "disabled";
184 };
185 ehrpwm1: ehrpwm@01f02000 {
186 compatible = "ti,da850-ehrpwm", "ti,am33xx-ehrpwm";
187 #pwm-cells = <3>;
188 reg = <0x302000 0x2000>;
189 status = "disabled";
190 };
191 ecap0: ecap@01f06000 {
192 compatible = "ti,da850-ecap", "ti,am33xx-ecap";
193 #pwm-cells = <3>;
194 reg = <0x306000 0x80>;
195 status = "disabled";
196 };
197 ecap1: ecap@01f07000 {
198 compatible = "ti,da850-ecap", "ti,am33xx-ecap";
199 #pwm-cells = <3>;
200 reg = <0x307000 0x80>;
201 status = "disabled";
202 };
203 ecap2: ecap@01f08000 {
204 compatible = "ti,da850-ecap", "ti,am33xx-ecap";
205 #pwm-cells = <3>;
206 reg = <0x308000 0x80>;
207 status = "disabled";
208 };
209 spi1: spi@1f0e000 {
210 #address-cells = <1>;
211 #size-cells = <0>;
212 compatible = "ti,da830-spi";
213 reg = <0x30e000 0x1000>;
214 num-cs = <4>;
215 ti,davinci-spi-intr-line = <1>;
216 interrupts = <56>;
217 status = "disabled";
218 };
125 }; 219 };
126 nand_cs3@62000000 { 220 nand_cs3@62000000 {
127 compatible = "ti,davinci-nand"; 221 compatible = "ti,davinci-nand";
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index 9ac47d51c407..7cfbbd3b7732 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -38,6 +38,11 @@
38 i2c7 = &i2c_7; 38 i2c7 = &i2c_7;
39 }; 39 };
40 40
41 chipid@10000000 {
42 compatible = "samsung,exynos4210-chipid";
43 reg = <0x10000000 0x100>;
44 };
45
41 pd_mfc: mfc-power-domain@10023C40 { 46 pd_mfc: mfc-power-domain@10023C40 {
42 compatible = "samsung,exynos4210-pd"; 47 compatible = "samsung,exynos4210-pd";
43 reg = <0x10023C40 0x20>; 48 reg = <0x10023C40 0x20>;
@@ -82,6 +87,11 @@
82 reg = <0x10440000 0x1000>; 87 reg = <0x10440000 0x1000>;
83 }; 88 };
84 89
90 sys_reg: sysreg {
91 compatible = "samsung,exynos4-sysreg", "syscon";
92 reg = <0x10010000 0x400>;
93 };
94
85 watchdog@10060000 { 95 watchdog@10060000 {
86 compatible = "samsung,s3c2410-wdt"; 96 compatible = "samsung,s3c2410-wdt";
87 reg = <0x10060000 0x100>; 97 reg = <0x10060000 0x100>;
@@ -197,6 +207,8 @@
197 interrupts = <0 58 0>; 207 interrupts = <0 58 0>;
198 clocks = <&clock 317>; 208 clocks = <&clock 317>;
199 clock-names = "i2c"; 209 clock-names = "i2c";
210 pinctrl-names = "default";
211 pinctrl-0 = <&i2c0_bus>;
200 status = "disabled"; 212 status = "disabled";
201 }; 213 };
202 214
@@ -208,6 +220,8 @@
208 interrupts = <0 59 0>; 220 interrupts = <0 59 0>;
209 clocks = <&clock 318>; 221 clocks = <&clock 318>;
210 clock-names = "i2c"; 222 clock-names = "i2c";
223 pinctrl-names = "default";
224 pinctrl-0 = <&i2c1_bus>;
211 status = "disabled"; 225 status = "disabled";
212 }; 226 };
213 227
@@ -287,6 +301,8 @@
287 #size-cells = <0>; 301 #size-cells = <0>;
288 clocks = <&clock 327>, <&clock 159>; 302 clocks = <&clock 327>, <&clock 159>;
289 clock-names = "spi", "spi_busclk0"; 303 clock-names = "spi", "spi_busclk0";
304 pinctrl-names = "default";
305 pinctrl-0 = <&spi0_bus>;
290 status = "disabled"; 306 status = "disabled";
291 }; 307 };
292 308
@@ -300,6 +316,8 @@
300 #size-cells = <0>; 316 #size-cells = <0>;
301 clocks = <&clock 328>, <&clock 160>; 317 clocks = <&clock 328>, <&clock 160>;
302 clock-names = "spi", "spi_busclk0"; 318 clock-names = "spi", "spi_busclk0";
319 pinctrl-names = "default";
320 pinctrl-0 = <&spi1_bus>;
303 status = "disabled"; 321 status = "disabled";
304 }; 322 };
305 323
@@ -313,6 +331,8 @@
313 #size-cells = <0>; 331 #size-cells = <0>;
314 clocks = <&clock 329>, <&clock 161>; 332 clocks = <&clock 329>, <&clock 161>;
315 clock-names = "spi", "spi_busclk0"; 333 clock-names = "spi", "spi_busclk0";
334 pinctrl-names = "default";
335 pinctrl-0 = <&spi2_bus>;
316 status = "disabled"; 336 status = "disabled";
317 }; 337 };
318 338
@@ -356,4 +376,16 @@
356 #dma-requests = <1>; 376 #dma-requests = <1>;
357 }; 377 };
358 }; 378 };
379
380 fimd: fimd@11c00000 {
381 compatible = "samsung,exynos4210-fimd";
382 interrupt-parent = <&combiner>;
383 reg = <0x11c00000 0x20000>;
384 interrupt-names = "fifo", "vsync", "lcd_sys";
385 interrupts = <11 0>, <11 1>, <11 2>;
386 clocks = <&clock 140>, <&clock 283>;
387 clock-names = "sclk_fimd", "fimd";
388 samsung,power-domain = <&pd_lcd0>;
389 status = "disabled";
390 };
359}; 391};
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
index 1b30bc8e2654..524b90846df5 100644
--- a/arch/arm/boot/dts/exynos4210-origen.dts
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -57,6 +57,10 @@
57 status = "okay"; 57 status = "okay";
58 }; 58 };
59 59
60 g2d@12800000 {
61 status = "okay";
62 };
63
60 codec@13400000 { 64 codec@13400000 {
61 samsung,mfc-r = <0x43000000 0x800000>; 65 samsung,mfc-r = <0x43000000 0x800000>;
62 samsung,mfc-l = <0x51000000 0x800000>; 66 samsung,mfc-l = <0x51000000 0x800000>;
diff --git a/arch/arm/boot/dts/exynos4210-smdkv310.dts b/arch/arm/boot/dts/exynos4210-smdkv310.dts
index f52c86e2d424..91332b72acf5 100644
--- a/arch/arm/boot/dts/exynos4210-smdkv310.dts
+++ b/arch/arm/boot/dts/exynos4210-smdkv310.dts
@@ -30,16 +30,13 @@
30 }; 30 };
31 31
32 sdhci@12530000 { 32 sdhci@12530000 {
33 samsung,sdhci-bus-width = <4>; 33 bus-width = <4>;
34 linux,mmc_cap_4_bit_data; 34 pinctrl-names = "default";
35 samsung,sdhci-cd-internal; 35 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
36 gpio-cd = <&gpk2 2 2 3 3>; 36 status = "okay";
37 gpios = <&gpk2 0 2 0 3>, 37 };
38 <&gpk2 1 2 0 3>, 38
39 <&gpk2 3 2 3 3>, 39 g2d@12800000 {
40 <&gpk2 4 2 3 3>,
41 <&gpk2 5 2 3 3>,
42 <&gpk2 6 2 3 3>;
43 status = "okay"; 40 status = "okay";
44 }; 41 };
45 42
@@ -65,25 +62,32 @@
65 status = "okay"; 62 status = "okay";
66 }; 63 };
67 64
65 pinctrl@11000000 {
66 keypad_rows: keypad-rows {
67 samsung,pins = "gpx2-0", "gpx2-1";
68 samsung,pin-function = <3>;
69 samsung,pin-pud = <3>;
70 samsung,pin-drv = <0>;
71 };
72
73 keypad_cols: keypad-cols {
74 samsung,pins = "gpx1-0", "gpx1-1", "gpx1-2", "gpx1-3",
75 "gpx1-4", "gpx1-5", "gpx1-6", "gpx1-7";
76 samsung,pin-function = <3>;
77 samsung,pin-pud = <0>;
78 samsung,pin-drv = <0>;
79 };
80 };
81
68 keypad@100A0000 { 82 keypad@100A0000 {
69 samsung,keypad-num-rows = <2>; 83 samsung,keypad-num-rows = <2>;
70 samsung,keypad-num-columns = <8>; 84 samsung,keypad-num-columns = <8>;
71 linux,keypad-no-autorepeat; 85 linux,keypad-no-autorepeat;
72 linux,keypad-wakeup; 86 linux,keypad-wakeup;
87 pinctrl-names = "default";
88 pinctrl-0 = <&keypad_rows &keypad_cols>;
73 status = "okay"; 89 status = "okay";
74 90
75 row-gpios = <&gpx2 0 3 3 0>,
76 <&gpx2 1 3 3 0>;
77
78 col-gpios = <&gpx1 0 3 0 0>,
79 <&gpx1 1 3 0 0>,
80 <&gpx1 2 3 0 0>,
81 <&gpx1 3 3 0 0>,
82 <&gpx1 4 3 0 0>,
83 <&gpx1 5 3 0 0>,
84 <&gpx1 6 3 0 0>,
85 <&gpx1 7 3 0 0>;
86
87 key_1 { 91 key_1 {
88 keypad,row = <0>; 92 keypad,row = <0>;
89 keypad,column = <3>; 93 keypad,column = <3>;
@@ -149,9 +153,7 @@
149 #address-cells = <1>; 153 #address-cells = <1>;
150 #size-cells = <0>; 154 #size-cells = <0>;
151 samsung,i2c-sda-delay = <100>; 155 samsung,i2c-sda-delay = <100>;
152 samsung,i2c-max-bus-freq = <20000>; 156 samsung,i2c-max-bus-freq = <100000>;
153 gpios = <&gpd1 0 2 3 0>,
154 <&gpd1 1 2 3 0>;
155 status = "okay"; 157 status = "okay";
156 158
157 eeprom@50 { 159 eeprom@50 {
@@ -166,9 +168,6 @@
166 }; 168 };
167 169
168 spi_2: spi@13940000 { 170 spi_2: spi@13940000 {
169 gpios = <&gpc1 1 5 3 0>,
170 <&gpc1 3 5 3 0>,
171 <&gpc1 4 5 3 0>;
172 status = "okay"; 171 status = "okay";
173 172
174 w25x80@0 { 173 w25x80@0 {
@@ -179,7 +178,7 @@
179 spi-max-frequency = <1000000>; 178 spi-max-frequency = <1000000>;
180 179
181 controller-data { 180 controller-data {
182 cs-gpio = <&gpc1 2 1 0 3>; 181 cs-gpio = <&gpc1 2 0>;
183 samsung,spi-feedback-delay = <0>; 182 samsung,spi-feedback-delay = <0>;
184 }; 183 };
185 184
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi
index 15143bdbafb8..66e6b03bf35e 100644
--- a/arch/arm/boot/dts/exynos4210.dtsi
+++ b/arch/arm/boot/dts/exynos4210.dtsi
@@ -112,4 +112,11 @@
112 reg = <0x100C0000 0x100>; 112 reg = <0x100C0000 0x100>;
113 interrupts = <2 4>; 113 interrupts = <2 4>;
114 }; 114 };
115
116 g2d@12800000 {
117 compatible = "samsung,s5pv210-g2d";
118 reg = <0x12800000 0x1000>;
119 interrupts = <0 89 0>;
120 status = "disabled";
121 };
115}; 122};
diff --git a/arch/arm/boot/dts/exynos4412-origen.dts b/arch/arm/boot/dts/exynos4412-origen.dts
index 1fecf7666dc0..1c21bad32ca9 100644
--- a/arch/arm/boot/dts/exynos4412-origen.dts
+++ b/arch/arm/boot/dts/exynos4412-origen.dts
@@ -72,6 +72,27 @@
72 status = "okay"; 72 status = "okay";
73 }; 73 };
74 74
75 fimd@11c00000 {
76 pinctrl-0 = <&lcd_clk &lcd_data24 &pwm1_out>;
77 pinctrl-names = "default";
78 status = "okay";
79 };
80
81 display-timings {
82 native-mode = <&timing0>;
83 timing0: timing {
84 clock-frequency = <50000>;
85 hactive = <1024>;
86 vactive = <600>;
87 hfront-porch = <64>;
88 hback-porch = <16>;
89 hsync-len = <48>;
90 vback-porch = <64>;
91 vfront-porch = <16>;
92 vsync-len = <3>;
93 };
94 };
95
75 serial@13800000 { 96 serial@13800000 {
76 status = "okay"; 97 status = "okay";
77 }; 98 };
diff --git a/arch/arm/boot/dts/exynos4412-smdk4412.dts b/arch/arm/boot/dts/exynos4412-smdk4412.dts
index 874beeaef99d..dd564310d4a5 100644
--- a/arch/arm/boot/dts/exynos4412-smdk4412.dts
+++ b/arch/arm/boot/dts/exynos4412-smdk4412.dts
@@ -27,6 +27,14 @@
27 bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc"; 27 bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC1,115200 init=/linuxrc";
28 }; 28 };
29 29
30 g2d@10800000 {
31 status = "okay";
32 };
33
34 g2d@10800000 {
35 status = "okay";
36 };
37
30 sdhci@12530000 { 38 sdhci@12530000 {
31 bus-width = <4>; 39 bus-width = <4>;
32 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>; 40 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4 &sd2_cd>;
diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi
index d75c047e80a9..7f428272fee6 100644
--- a/arch/arm/boot/dts/exynos4412.dtsi
+++ b/arch/arm/boot/dts/exynos4412.dtsi
@@ -51,4 +51,12 @@
51 <0x7 0 &gic 1 12 0>; 51 <0x7 0 &gic 1 12 0>;
52 }; 52 };
53 }; 53 };
54
55 mshc@12550000 {
56 compatible = "samsung,exynos4412-dw-mshc";
57 reg = <0x12550000 0x1000>;
58 interrupts = <0 77 0>;
59 #address-cells = <1>;
60 #size-cells = <0>;
61 };
54}; 62};
diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi
index 7496b8d633ea..e3380a7a285c 100644
--- a/arch/arm/boot/dts/exynos4x12.dtsi
+++ b/arch/arm/boot/dts/exynos4x12.dtsi
@@ -72,4 +72,11 @@
72 reg = <0x106E0000 0x1000>; 72 reg = <0x106E0000 0x1000>;
73 interrupts = <0 72 0>; 73 interrupts = <0 72 0>;
74 }; 74 };
75
76 g2d@10800000 {
77 compatible = "samsung,exynos4212-g2d";
78 reg = <0x10800000 0x1000>;
79 interrupts = <0 89 0>;
80 status = "disabled";
81 };
75}; 82};
diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index 5de019cb0e58..02cfc76d002f 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -24,8 +24,266 @@
24 bootargs = "console=ttySAC2,115200"; 24 bootargs = "console=ttySAC2,115200";
25 }; 25 };
26 26
27 codec@11000000 {
28 samsung,mfc-r = <0x43000000 0x800000>;
29 samsung,mfc-l = <0x51000000 0x800000>;
30 };
31
27 i2c@12C60000 { 32 i2c@12C60000 {
28 status = "disabled"; 33 samsung,i2c-sda-delay = <100>;
34 samsung,i2c-max-bus-freq = <20000>;
35 samsung,i2c-slave-addr = <0x66>;
36
37 s5m8767_pmic@66 {
38 compatible = "samsung,s5m8767-pmic";
39 reg = <0x66>;
40
41 s5m8767,pmic-buck2-dvs-voltage = <1300000>;
42 s5m8767,pmic-buck3-dvs-voltage = <1100000>;
43 s5m8767,pmic-buck4-dvs-voltage = <1200000>;
44 s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 0>,
45 <&gpd1 1 0>,
46 <&gpd1 2 0>;
47 s5m8767,pmic-buck-ds-gpios = <&gpx2 3 0>,
48 <&gpx2 4 0>,
49 <&gpx2 5 0>;
50 regulators {
51 ldo1_reg: LDO1 {
52 regulator-name = "VDD_ALIVE_1.0V";
53 regulator-min-microvolt = <1100000>;
54 regulator-max-microvolt = <1100000>;
55 regulator-always-on;
56 regulator-boot-on;
57 op_mode = <1>;
58 };
59
60 ldo2_reg: LDO2 {
61 regulator-name = "VDD_28IO_DP_1.35V";
62 regulator-min-microvolt = <1200000>;
63 regulator-max-microvolt = <1200000>;
64 regulator-always-on;
65 regulator-boot-on;
66 op_mode = <1>;
67 };
68
69 ldo3_reg: LDO3 {
70 regulator-name = "VDD_COMMON1_1.8V";
71 regulator-min-microvolt = <1800000>;
72 regulator-max-microvolt = <1800000>;
73 regulator-always-on;
74 regulator-boot-on;
75 op_mode = <1>;
76 };
77
78 ldo4_reg: LDO4 {
79 regulator-name = "VDD_IOPERI_1.8V";
80 regulator-min-microvolt = <1800000>;
81 regulator-max-microvolt = <1800000>;
82 op_mode = <1>;
83 };
84
85 ldo5_reg: LDO5 {
86 regulator-name = "VDD_EXT_1.8V";
87 regulator-min-microvolt = <1800000>;
88 regulator-max-microvolt = <1800000>;
89 regulator-always-on;
90 regulator-boot-on;
91 op_mode = <1>;
92 };
93
94 ldo6_reg: LDO6 {
95 regulator-name = "VDD_MPLL_1.1V";
96 regulator-min-microvolt = <1100000>;
97 regulator-max-microvolt = <1100000>;
98 regulator-always-on;
99 regulator-boot-on;
100 op_mode = <1>;
101 };
102
103 ldo7_reg: LDO7 {
104 regulator-name = "VDD_XPLL_1.1V";
105 regulator-min-microvolt = <1100000>;
106 regulator-max-microvolt = <1100000>;
107 regulator-always-on;
108 regulator-boot-on;
109 op_mode = <1>;
110 };
111
112 ldo8_reg: LDO8 {
113 regulator-name = "VDD_COMMON2_1.0V";
114 regulator-min-microvolt = <1000000>;
115 regulator-max-microvolt = <1000000>;
116 regulator-always-on;
117 regulator-boot-on;
118 op_mode = <1>;
119 };
120
121 ldo9_reg: LDO9 {
122 regulator-name = "VDD_33ON_3.0V";
123 regulator-min-microvolt = <3000000>;
124 regulator-max-microvolt = <3000000>;
125 op_mode = <1>;
126 };
127
128 ldo10_reg: LDO10 {
129 regulator-name = "VDD_COMMON3_1.8V";
130 regulator-min-microvolt = <1800000>;
131 regulator-max-microvolt = <1800000>;
132 regulator-always-on;
133 regulator-boot-on;
134 op_mode = <1>;
135 };
136
137 ldo11_reg: LDO11 {
138 regulator-name = "VDD_ABB2_1.8V";
139 regulator-min-microvolt = <1800000>;
140 regulator-max-microvolt = <1800000>;
141 regulator-always-on;
142 regulator-boot-on;
143 op_mode = <1>;
144 };
145
146 ldo12_reg: LDO12 {
147 regulator-name = "VDD_USB_3.0V";
148 regulator-min-microvolt = <3000000>;
149 regulator-max-microvolt = <3000000>;
150 regulator-always-on;
151 regulator-boot-on;
152 op_mode = <1>;
153 };
154
155 ldo13_reg: LDO13 {
156 regulator-name = "VDDQ_C2C_W_1.8V";
157 regulator-min-microvolt = <1800000>;
158 regulator-max-microvolt = <1800000>;
159 regulator-always-on;
160 regulator-boot-on;
161 op_mode = <1>;
162 };
163
164 ldo14_reg: LDO14 {
165 regulator-name = "VDD18_ABB0_3_1.8V";
166 regulator-min-microvolt = <1800000>;
167 regulator-max-microvolt = <1800000>;
168 regulator-always-on;
169 regulator-boot-on;
170 op_mode = <1>;
171 };
172
173 ldo15_reg: LDO15 {
174 regulator-name = "VDD10_COMMON4_1.0V";
175 regulator-min-microvolt = <1000000>;
176 regulator-max-microvolt = <1000000>;
177 regulator-always-on;
178 regulator-boot-on;
179 op_mode = <1>;
180 };
181
182 ldo16_reg: LDO16 {
183 regulator-name = "VDD18_HSIC_1.8V";
184 regulator-min-microvolt = <1800000>;
185 regulator-max-microvolt = <1800000>;
186 regulator-always-on;
187 regulator-boot-on;
188 op_mode = <1>;
189 };
190
191 ldo17_reg: LDO17 {
192 regulator-name = "VDDQ_MMC2_3_2.8V";
193 regulator-min-microvolt = <2800000>;
194 regulator-max-microvolt = <2800000>;
195 regulator-always-on;
196 regulator-boot-on;
197 op_mode = <1>;
198 };
199
200 ldo18_reg: LDO18 {
201 regulator-name = "VDD_33ON_2.8V";
202 regulator-min-microvolt = <2800000>;
203 regulator-max-microvolt = <2800000>;
204 op_mode = <1>;
205 };
206
207 ldo22_reg: LDO22 {
208 regulator-name = "EXT_33_OFF";
209 regulator-min-microvolt = <3300000>;
210 regulator-max-microvolt = <3300000>;
211 op_mode = <1>;
212 };
213
214 ldo23_reg: LDO23 {
215 regulator-name = "EXT_28_OFF";
216 regulator-min-microvolt = <2800000>;
217 regulator-max-microvolt = <2800000>;
218 op_mode = <1>;
219 };
220
221 ldo25_reg: LDO25 {
222 regulator-name = "PVDD_LDO25";
223 regulator-min-microvolt = <1200000>;
224 regulator-max-microvolt = <1200000>;
225 op_mode = <1>;
226 };
227
228 ldo26_reg: LDO26 {
229 regulator-name = "EXT_18_OFF";
230 regulator-min-microvolt = <1800000>;
231 regulator-max-microvolt = <1800000>;
232 op_mode = <1>;
233 };
234
235 buck1_reg: BUCK1 {
236 regulator-name = "vdd_mif";
237 regulator-min-microvolt = <950000>;
238 regulator-max-microvolt = <1200000>;
239 regulator-always-on;
240 regulator-boot-on;
241 op_mode = <1>;
242 };
243
244 buck2_reg: BUCK2 {
245 regulator-name = "vdd_arm";
246 regulator-min-microvolt = <925000>;
247 regulator-max-microvolt = <1300000>;
248 regulator-always-on;
249 regulator-boot-on;
250 op_mode = <1>;
251 };
252
253 buck3_reg: BUCK3 {
254 regulator-name = "vdd_int";
255 regulator-min-microvolt = <900000>;
256 regulator-max-microvolt = <1200000>;
257 regulator-always-on;
258 regulator-boot-on;
259 op_mode = <1>;
260 };
261
262 buck4_reg: BUCK4 {
263 regulator-name = "vdd_g3d";
264 regulator-min-microvolt = <1000000>;
265 regulator-max-microvolt = <1000000>;
266 regulator-boot-on;
267 op_mode = <1>;
268 };
269
270 buck5_reg: BUCK5 {
271 regulator-name = "VDD_MEM_1.35V";
272 regulator-min-microvolt = <750000>;
273 regulator-max-microvolt = <1355000>;
274 regulator-always-on;
275 regulator-boot-on;
276 op_mode = <1>;
277 };
278
279 buck9_reg: BUCK9 {
280 regulator-name = "VDD_33_OFF_EXT1";
281 regulator-min-microvolt = <750000>;
282 regulator-max-microvolt = <3000000>;
283 op_mode = <1>;
284 };
285 };
286 };
29 }; 287 };
30 288
31 i2c@12C70000 { 289 i2c@12C70000 {
@@ -69,15 +327,13 @@
69 samsung,dw-mshc-ciu-div = <3>; 327 samsung,dw-mshc-ciu-div = <3>;
70 samsung,dw-mshc-sdr-timing = <2 3>; 328 samsung,dw-mshc-sdr-timing = <2 3>;
71 samsung,dw-mshc-ddr-timing = <1 2>; 329 samsung,dw-mshc-ddr-timing = <1 2>;
330 vmmc-supply = <&mmc_reg>;
331 pinctrl-names = "default";
332 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
72 333
73 slot@0 { 334 slot@0 {
74 reg = <0>; 335 reg = <0>;
75 bus-width = <8>; 336 bus-width = <8>;
76 gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
77 <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
78 <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>,
79 <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
80 <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>;
81 }; 337 };
82 }; 338 };
83 339
@@ -93,14 +349,14 @@
93 samsung,dw-mshc-ciu-div = <3>; 349 samsung,dw-mshc-ciu-div = <3>;
94 samsung,dw-mshc-sdr-timing = <2 3>; 350 samsung,dw-mshc-sdr-timing = <2 3>;
95 samsung,dw-mshc-ddr-timing = <1 2>; 351 samsung,dw-mshc-ddr-timing = <1 2>;
352 vmmc-supply = <&mmc_reg>;
353 pinctrl-names = "default";
354 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
96 355
97 slot@0 { 356 slot@0 {
98 reg = <0>; 357 reg = <0>;
99 bus-width = <4>; 358 bus-width = <4>;
100 samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>; 359 disable-wp;
101 gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>,
102 <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>,
103 <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>;
104 }; 360 };
105 }; 361 };
106 362
@@ -120,6 +376,73 @@
120 status = "disabled"; 376 status = "disabled";
121 }; 377 };
122 378
379 gpio_keys {
380 compatible = "gpio-keys";
381
382 menu {
383 label = "SW-TACT2";
384 gpios = <&gpx1 4 1>;
385 linux,code = <139>;
386 gpio-key,wakeup;
387 };
388
389 home {
390 label = "SW-TACT3";
391 gpios = <&gpx1 5 1>;
392 linux,code = <102>;
393 gpio-key,wakeup;
394 };
395
396 up {
397 label = "SW-TACT4";
398 gpios = <&gpx1 6 1>;
399 linux,code = <103>;
400 gpio-key,wakeup;
401 };
402
403 down {
404 label = "SW-TACT5";
405 gpios = <&gpx1 7 1>;
406 linux,code = <108>;
407 gpio-key,wakeup;
408 };
409
410 back {
411 label = "SW-TACT6";
412 gpios = <&gpx2 0 1>;
413 linux,code = <158>;
414 gpio-key,wakeup;
415 };
416
417 wakeup {
418 label = "SW-TACT7";
419 gpios = <&gpx2 1 1>;
420 linux,code = <143>;
421 gpio-key,wakeup;
422 };
423 };
424
425 hdmi {
426 hpd-gpio = <&gpx3 7 2>;
427 vdd_osc-supply = <&ldo10_reg>;
428 vdd_pll-supply = <&ldo8_reg>;
429 vdd-supply = <&ldo8_reg>;
430 };
431
432 mmc_reg: voltage-regulator {
433 compatible = "regulator-fixed";
434 regulator-name = "VDD_33ON_2.8V";
435 regulator-min-microvolt = <2800000>;
436 regulator-max-microvolt = <2800000>;
437 gpio = <&gpx1 1 1>;
438 enable-active-high;
439 };
440
441 reg_hdmi_en: fixedregulator@0 {
442 compatible = "regulator-fixed";
443 regulator-name = "hdmi-en";
444 };
445
123 fixed-rate-clocks { 446 fixed-rate-clocks {
124 xxti { 447 xxti {
125 compatible = "samsung,clock-xxti"; 448 compatible = "samsung,clock-xxti";
diff --git a/arch/arm/boot/dts/exynos5250-pinctrl.dtsi b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
new file mode 100644
index 000000000000..d1650fb34c0a
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5250-pinctrl.dtsi
@@ -0,0 +1,783 @@
1/*
2 * Samsung's Exynos5250 SoC pin-mux and pin-config device tree source
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com
6 *
7 * Samsung's Exynos5250 SoC pin-mux and pin-config optiosn are listed as device
8 * tree nodes are listed in this file.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13*/
14
15/ {
16 pinctrl@11400000 {
17 gpa0: gpa0 {
18 gpio-controller;
19 #gpio-cells = <2>;
20
21 interrupt-controller;
22 #interrupt-cells = <2>;
23 };
24
25 gpa1: gpa1 {
26 gpio-controller;
27 #gpio-cells = <2>;
28
29 interrupt-controller;
30 #interrupt-cells = <2>;
31 };
32
33 gpa2: gpa2 {
34 gpio-controller;
35 #gpio-cells = <2>;
36
37 interrupt-controller;
38 #interrupt-cells = <2>;
39 };
40
41 gpb0: gpb0 {
42 gpio-controller;
43 #gpio-cells = <2>;
44
45 interrupt-controller;
46 #interrupt-cells = <2>;
47 };
48
49 gpb1: gpb1 {
50 gpio-controller;
51 #gpio-cells = <2>;
52
53 interrupt-controller;
54 #interrupt-cells = <2>;
55 };
56
57 gpb2: gpb2 {
58 gpio-controller;
59 #gpio-cells = <2>;
60
61 interrupt-controller;
62 #interrupt-cells = <2>;
63 };
64
65 gpb3: gpb3 {
66 gpio-controller;
67 #gpio-cells = <2>;
68
69 interrupt-controller;
70 #interrupt-cells = <2>;
71 };
72
73 gpc0: gpc0 {
74 gpio-controller;
75 #gpio-cells = <2>;
76
77 interrupt-controller;
78 #interrupt-cells = <2>;
79 };
80
81 gpc1: gpc1 {
82 gpio-controller;
83 #gpio-cells = <2>;
84
85 interrupt-controller;
86 #interrupt-cells = <2>;
87 };
88
89 gpc2: gpc2 {
90 gpio-controller;
91 #gpio-cells = <2>;
92
93 interrupt-controller;
94 #interrupt-cells = <2>;
95 };
96
97 gpc3: gpc3 {
98 gpio-controller;
99 #gpio-cells = <2>;
100
101 interrupt-controller;
102 #interrupt-cells = <2>;
103 };
104
105 gpd0: gpd0 {
106 gpio-controller;
107 #gpio-cells = <2>;
108
109 interrupt-controller;
110 #interrupt-cells = <2>;
111 };
112
113 gpd1: gpd1 {
114 gpio-controller;
115 #gpio-cells = <2>;
116
117 interrupt-controller;
118 #interrupt-cells = <2>;
119 };
120
121 gpy0: gpy0 {
122 gpio-controller;
123 #gpio-cells = <2>;
124 };
125
126 gpy1: gpy1 {
127 gpio-controller;
128 #gpio-cells = <2>;
129 };
130
131 gpy2: gpy2 {
132 gpio-controller;
133 #gpio-cells = <2>;
134 };
135
136 gpy3: gpy3 {
137 gpio-controller;
138 #gpio-cells = <2>;
139 };
140
141 gpy4: gpy4 {
142 gpio-controller;
143 #gpio-cells = <2>;
144 };
145
146 gpy5: gpy5 {
147 gpio-controller;
148 #gpio-cells = <2>;
149 };
150
151 gpy6: gpy6 {
152 gpio-controller;
153 #gpio-cells = <2>;
154 };
155
156 gpc4: gpc4 {
157 gpio-controller;
158 #gpio-cells = <2>;
159
160 interrupt-controller;
161 #interrupt-cells = <2>;
162 };
163
164 gpx0: gpx0 {
165 gpio-controller;
166 #gpio-cells = <2>;
167
168 interrupt-controller;
169 interrupt-parent = <&combiner>;
170 #interrupt-cells = <2>;
171 interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
172 <26 0>, <26 1>, <27 0>, <27 1>;
173 };
174
175 gpx1: gpx1 {
176 gpio-controller;
177 #gpio-cells = <2>;
178
179 interrupt-controller;
180 interrupt-parent = <&combiner>;
181 #interrupt-cells = <2>;
182 interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
183 <30 0>, <30 1>, <31 0>, <31 1>;
184 };
185
186 gpx2: gpx2 {
187 gpio-controller;
188 #gpio-cells = <2>;
189
190 interrupt-controller;
191 #interrupt-cells = <2>;
192 };
193
194 gpx3: gpx3 {
195 gpio-controller;
196 #gpio-cells = <2>;
197
198 interrupt-controller;
199 #interrupt-cells = <2>;
200 };
201
202 uart0_data: uart0-data {
203 samsung,pins = "gpa0-0", "gpa0-1";
204 samsung,pin-function = <2>;
205 samsung,pin-pud = <0>;
206 samsung,pin-drv = <0>;
207 };
208
209 uart0_fctl: uart0-fctl {
210 samsung,pins = "gpa0-2", "gpa0-3";
211 samsung,pin-function = <2>;
212 samsung,pin-pud = <0>;
213 samaung,pin-drv = <0>;
214 };
215
216 i2c2_bus: i2c2-bus {
217 samsung,pins = "gpa0-6", "gpa0-7";
218 samsung,pin-function = <3>;
219 samsung,pin-pud = <3>;
220 samaung,pin-drv = <0>;
221 };
222
223 i2c2_hs_bus: i2c2-hs-bus {
224 samsung,pins = "gpa0-6", "gpa0-7";
225 samsung,pin-function = <4>;
226 samsung,pin-pud = <3>;
227 samaung,pin-drv = <0>;
228 };
229
230 uart2_data: uart2-data {
231 samsung,pins = "gpa1-0", "gpa1-1";
232 samsung,pin-function = <2>;
233 samsung,pin-pud = <0>;
234 samsung,pin-drv = <0>;
235 };
236
237 uart2_fctl: uart2-fctl {
238 samsung,pins = "gpa1-2", "gpa1-3";
239 samsung,pin-function = <2>;
240 samsung,pin-pud = <0>;
241 samaung,pin-drv = <0>;
242 };
243
244 i2c3_bus: i2c3-bus {
245 samsung,pins = "gpa1-2", "gpa1-3";
246 samsung,pin-function = <3>;
247 samsung,pin-pud = <3>;
248 samaung,pin-drv = <0>;
249 };
250
251 i2c3_hs_bus: i2c3-hs-bus {
252 samsung,pins = "gpa1-2", "gpa1-3";
253 samsung,pin-function = <4>;
254 samsung,pin-pud = <3>;
255 samaung,pin-drv = <0>;
256 };
257
258 uart3_data: uart3-data {
259 samsung,pins = "gpa1-4", "gpa1-4";
260 samsung,pin-function = <2>;
261 samsung,pin-pud = <0>;
262 samsung,pin-drv = <0>;
263 };
264
265 spi0_bus: spi0-bus {
266 samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3";
267 samsung,pin-function = <2>;
268 samsung,pin-pud = <3>;
269 samsung,pin-drv = <0>;
270 };
271
272 i2c4_bus: i2c4-bus {
273 samsung,pins = "gpa2-0", "gpa2-1";
274 samsung,pin-function = <3>;
275 samsung,pin-pud = <3>;
276 samaung,pin-drv = <0>;
277 };
278
279 i2c5_bus: i2c5-bus {
280 samsung,pins = "gpa2-2", "gpa2-3";
281 samsung,pin-function = <3>;
282 samsung,pin-pud = <3>;
283 samaung,pin-drv = <0>;
284 };
285
286 spi1_bus: spi1-bus {
287 samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
288 samsung,pin-function = <2>;
289 samsung,pin-pud = <3>;
290 samsung,pin-drv = <0>;
291 };
292
293 i2s1_bus: i2s1-bus {
294 samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
295 "gpb0-4";
296 samsung,pin-function = <2>;
297 samsung,pin-pud = <0>;
298 samsung,pin-drv = <0>;
299 };
300
301 pcm1_bus: pcm1-bus {
302 samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
303 "gpb0-4";
304 samsung,pin-function = <3>;
305 samsung,pin-pud = <0>;
306 samsung,pin-drv = <0>;
307 };
308
309 ac97_bus: ac97-bus {
310 samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
311 "gpb0-4";
312 samsung,pin-function = <4>;
313 samsung,pin-pud = <0>;
314 samsung,pin-drv = <0>;
315 };
316
317 i2s2_bus: i2s2-bus {
318 samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
319 "gpb1-4";
320 samsung,pin-function = <2>;
321 samsung,pin-pud = <0>;
322 samsung,pin-drv = <0>;
323 };
324
325 pcm2_bus: pcm2-bus {
326 samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
327 "gpb1-4";
328 samsung,pin-function = <3>;
329 samsung,pin-pud = <0>;
330 samsung,pin-drv = <0>;
331 };
332
333 spdif_bus: spdif-bus {
334 samsung,pins = "gpb1-0", "gpb1-1";
335 samsung,pin-function = <4>;
336 samsung,pin-pud = <0>;
337 samsung,pin-drv = <0>;
338 };
339
340 spi2_bus: spi2-bus {
341 samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
342 samsung,pin-function = <5>;
343 samsung,pin-pud = <3>;
344 samsung,pin-drv = <0>;
345 };
346
347 i2c6_bus: i2c6-bus {
348 samsung,pins = "gpb1-3", "gpb1-4";
349 samsung,pin-function = <4>;
350 samsung,pin-pud = <3>;
351 samsung,pin-drv = <0>;
352 };
353
354 i2c7_bus: i2c7-bus {
355 samsung,pins = "gpb2-2", "gpb2-3";
356 samsung,pin-function = <3>;
357 samsung,pin-pud = <3>;
358 samsung,pin-drv = <0>;
359 };
360
361 i2c0_bus: i2c0-bus {
362 samsung,pins = "gpb3-0", "gpb3-1";
363 samsung,pin-function = <2>;
364 samsung,pin-pud = <3>;
365 samsung,pin-drv = <0>;
366 };
367
368 i2c1_bus: i2c1-bus {
369 samsung,pins = "gpb3-2", "gpb3-3";
370 samsung,pin-function = <2>;
371 samsung,pin-pud = <3>;
372 samsung,pin-drv = <0>;
373 };
374
375 i2c0_hs_bus: i2c0-hs-bus {
376 samsung,pins = "gpb3-0", "gpb3-1";
377 samsung,pin-function = <4>;
378 samsung,pin-pud = <3>;
379 samaung,pin-drv = <0>;
380 };
381
382 i2c1_hs_bus: i2c1-hs-bus {
383 samsung,pins = "gpb3-2", "gpb3-3";
384 samsung,pin-function = <4>;
385 samsung,pin-pud = <3>;
386 samaung,pin-drv = <0>;
387 };
388
389 sd0_clk: sd0-clk {
390 samsung,pins = "gpc0-0";
391 samsung,pin-function = <2>;
392 samsung,pin-pud = <0>;
393 samsung,pin-drv = <3>;
394 };
395
396 sd0_cmd: sd0-cmd {
397 samsung,pins = "gpc0-1";
398 samsung,pin-function = <2>;
399 samsung,pin-pud = <0>;
400 samsung,pin-drv = <3>;
401 };
402
403 sd0_cd: sd0-cd {
404 samsung,pins = "gpc0-2";
405 samsung,pin-function = <2>;
406 samsung,pin-pud = <3>;
407 samsung,pin-drv = <3>;
408 };
409
410 sd0_bus1: sd0-bus-width1 {
411 samsung,pins = "gpc0-3";
412 samsung,pin-function = <2>;
413 samsung,pin-pud = <3>;
414 samsung,pin-drv = <3>;
415 };
416
417 sd0_bus4: sd0-bus-width4 {
418 samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6";
419 samsung,pin-function = <2>;
420 samsung,pin-pud = <3>;
421 samsung,pin-drv = <3>;
422 };
423
424 sd0_bus8: sd0-bus-width8 {
425 samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3";
426 samsung,pin-function = <2>;
427 samsung,pin-pud = <3>;
428 samsung,pin-drv = <3>;
429 };
430
431 sd1_clk: sd1-clk {
432 samsung,pins = "gpc2-0";
433 samsung,pin-function = <2>;
434 samsung,pin-pud = <0>;
435 samsung,pin-drv = <3>;
436 };
437
438 sd1_cmd: sd1-cmd {
439 samsung,pins = "gpc2-1";
440 samsung,pin-function = <2>;
441 samsung,pin-pud = <0>;
442 samsung,pin-drv = <3>;
443 };
444
445 sd1_cd: sd1-cd {
446 samsung,pins = "gpc2-2";
447 samsung,pin-function = <2>;
448 samsung,pin-pud = <3>;
449 samsung,pin-drv = <3>;
450 };
451
452 sd1_bus1: sd1-bus-width1 {
453 samsung,pins = "gpc2-3";
454 samsung,pin-function = <2>;
455 samsung,pin-pud = <3>;
456 samsung,pin-drv = <3>;
457 };
458
459 sd1_bus4: sd1-bus-width4 {
460 samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6";
461 samsung,pin-function = <2>;
462 samsung,pin-pud = <3>;
463 samsung,pin-drv = <3>;
464 };
465
466 sd2_clk: sd2-clk {
467 samsung,pins = "gpc3-0";
468 samsung,pin-function = <2>;
469 samsung,pin-pud = <0>;
470 samsung,pin-drv = <3>;
471 };
472
473 sd2_cmd: sd2-cmd {
474 samsung,pins = "gpc3-1";
475 samsung,pin-function = <2>;
476 samsung,pin-pud = <0>;
477 samsung,pin-drv = <3>;
478 };
479
480 sd2_cd: sd2-cd {
481 samsung,pins = "gpc3-2";
482 samsung,pin-function = <2>;
483 samsung,pin-pud = <3>;
484 samsung,pin-drv = <3>;
485 };
486
487 sd2_bus1: sd2-bus-width1 {
488 samsung,pins = "gpc3-3";
489 samsung,pin-function = <2>;
490 samsung,pin-pud = <3>;
491 samsung,pin-drv = <3>;
492 };
493
494 sd2_bus4: sd2-bus-width4 {
495 samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6";
496 samsung,pin-function = <2>;
497 samsung,pin-pud = <3>;
498 samsung,pin-drv = <3>;
499 };
500
501 sd2_bus8: sd2-bus-width8 {
502 samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
503 samsung,pin-function = <3>;
504 samsung,pin-pud = <3>;
505 samsung,pin-drv = <3>;
506 };
507
508 sd3_clk: sd3-clk {
509 samsung,pins = "gpc4-0";
510 samsung,pin-function = <2>;
511 samsung,pin-pud = <0>;
512 samsung,pin-drv = <3>;
513 };
514
515 sd3_cmd: sd3-cmd {
516 samsung,pins = "gpc4-1";
517 samsung,pin-function = <2>;
518 samsung,pin-pud = <0>;
519 samsung,pin-drv = <3>;
520 };
521
522 sd3_cd: sd3-cd {
523 samsung,pins = "gpc4-2";
524 samsung,pin-function = <2>;
525 samsung,pin-pud = <3>;
526 samsung,pin-drv = <3>;
527 };
528
529 sd3_bus1: sd3-bus-width1 {
530 samsung,pins = "gpc4-3";
531 samsung,pin-function = <2>;
532 samsung,pin-pud = <3>;
533 samsung,pin-drv = <3>;
534 };
535
536 sd3_bus4: sd3-bus-width4 {
537 samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
538 samsung,pin-function = <2>;
539 samsung,pin-pud = <3>;
540 samsung,pin-drv = <3>;
541 };
542
543 uart1_data: uart1-data {
544 samsung,pins = "gpd0-0", "gpd0-1";
545 samsung,pin-function = <2>;
546 samsung,pin-pud = <0>;
547 samsung,pin-drv = <0>;
548 };
549
550 uart1_fctl: uart1-fctl {
551 samsung,pins = "gpd0-2", "gpd0-3";
552 samsung,pin-function = <2>;
553 samsung,pin-pud = <0>;
554 samaung,pin-drv = <0>;
555 };
556 };
557
558 pinctrl@13400000 {
559 gpe0: gpe0 {
560 gpio-controller;
561 #gpio-cells = <2>;
562
563 interrupt-controller;
564 #interrupt-cells = <2>;
565 };
566
567 gpe1: gpe1 {
568 gpio-controller;
569 #gpio-cells = <2>;
570
571 interrupt-controller;
572 #interrupt-cells = <2>;
573 };
574
575 gpf0: gpf0 {
576 gpio-controller;
577 #gpio-cells = <2>;
578
579 interrupt-controller;
580 #interrupt-cells = <2>;
581 };
582
583 gpf1: gpf1 {
584 gpio-controller;
585 #gpio-cells = <2>;
586
587 interrupt-controller;
588 #interrupt-cells = <2>;
589 };
590
591 gpg0: gpg0 {
592 gpio-controller;
593 #gpio-cells = <2>;
594
595 interrupt-controller;
596 #interrupt-cells = <2>;
597 };
598
599 gpg1: gpg1 {
600 gpio-controller;
601 #gpio-cells = <2>;
602
603 interrupt-controller;
604 #interrupt-cells = <2>;
605 };
606
607 gpg2: gpg2 {
608 gpio-controller;
609 #gpio-cells = <2>;
610
611 interrupt-controller;
612 #interrupt-cells = <2>;
613 };
614
615 gph0: gph0 {
616 gpio-controller;
617 #gpio-cells = <2>;
618
619 interrupt-controller;
620 #interrupt-cells = <2>;
621 };
622
623 gph1: gph1 {
624 gpio-controller;
625 #gpio-cells = <2>;
626
627 interrupt-controller;
628 #interrupt-cells = <2>;
629 };
630
631 cam_gpio_a: cam-gpio-a {
632 samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
633 "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
634 "gpe1-0", "gpe1-1";
635 samsung,pin-function = <2>;
636 samsung,pin-pud = <0>;
637 samsung,pin-drv = <0>;
638 };
639
640 cam_gpio_b: cam-gpio-b {
641 samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
642 "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
643 samsung,pin-function = <3>;
644 samsung,pin-pud = <0>;
645 samaung,pin-drv = <0>;
646 };
647
648 cam_i2c2_bus: cam-i2c2-bus {
649 samsung,pins = "gpe0-6", "gpe1-0";
650 samsung,pin-function = <4>;
651 samsung,pin-pud = <3>;
652 samaung,pin-drv = <0>;
653 };
654
655 cam_spi1_bus: cam-spi1-bus {
656 samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
657 samsung,pin-function = <4>;
658 samsung,pin-pud = <0>;
659 samaung,pin-drv = <0>;
660 };
661
662 cam_i2c1_bus: cam-i2c1-bus {
663 samsung,pins = "gpf0-2", "gpf0-3";
664 samsung,pin-function = <2>;
665 samsung,pin-pud = <3>;
666 samaung,pin-drv = <0>;
667 };
668
669 cam_i2c0_bus: cam-i2c0-bus {
670 samsung,pins = "gpf0-0", "gpf0-1";
671 samsung,pin-function = <2>;
672 samsung,pin-pud = <3>;
673 samaung,pin-drv = <0>;
674 };
675
676 cam_spi0_bus: cam-spi0-bus {
677 samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
678 samsung,pin-function = <2>;
679 samsung,pin-pud = <0>;
680 samaung,pin-drv = <0>;
681 };
682
683 cam_bayrgb_bus: cam-bayrgb-bus {
684 samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
685 "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
686 "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
687 "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
688 "gpg2-0", "gpg2-1";
689 samsung,pin-function = <2>;
690 samsung,pin-pud = <0>;
691 samaung,pin-drv = <0>;
692 };
693
694 cam_port_a: cam-port-a {
695 samsung,pins = "gph0-0", "gph0-1", "gph0-2", "gph0-3",
696 "gph1-0", "gph1-1", "gph1-2", "gph1-3",
697 "gph1-4", "gph1-5", "gph1-6", "gph1-7";
698 samsung,pin-function = <2>;
699 samsung,pin-pud = <0>;
700 samaung,pin-drv = <0>;
701 };
702 };
703
704 pinctrl@10d10000 {
705 gpv0: gpv0 {
706 gpio-controller;
707 #gpio-cells = <2>;
708
709 interrupt-controller;
710 #interrupt-cells = <2>;
711 };
712
713 gpv1: gpv1 {
714 gpio-controller;
715 #gpio-cells = <2>;
716
717 interrupt-controller;
718 #interrupt-cells = <2>;
719 };
720
721 gpv2: gpv2 {
722 gpio-controller;
723 #gpio-cells = <2>;
724
725 interrupt-controller;
726 #interrupt-cells = <2>;
727 };
728
729 gpv3: gpv3 {
730 gpio-controller;
731 #gpio-cells = <2>;
732
733 interrupt-controller;
734 #interrupt-cells = <2>;
735 };
736
737 gpv4: gpv4 {
738 gpio-controller;
739 #gpio-cells = <2>;
740
741 interrupt-controller;
742 #interrupt-cells = <2>;
743 };
744
745 c2c_rxd: c2c-rxd {
746 samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3",
747 "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7",
748 "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3",
749 "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7";
750 samsung,pin-function = <2>;
751 samsung,pin-pud = <0>;
752 samaung,pin-drv = <0>;
753 };
754
755 c2c_txd: c2c-txd {
756 samsung,pins = "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3",
757 "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7",
758 "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3",
759 "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7";
760 samsung,pin-function = <2>;
761 samsung,pin-pud = <0>;
762 samaung,pin-drv = <0>;
763 };
764 };
765
766 pinctrl@03680000 {
767 gpz: gpz {
768 gpio-controller;
769 #gpio-cells = <2>;
770
771 interrupt-controller;
772 #interrupt-cells = <2>;
773 };
774
775 i2s0_bus: i2s0-bus {
776 samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
777 "gpz-4", "gpz-5", "gpz-6";
778 samsung,pin-function = <2>;
779 samsung,pin-pud = <0>;
780 samsung,pin-drv = <0>;
781 };
782 };
783};
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
index 872ae1f93c75..26d856ba50a1 100644
--- a/arch/arm/boot/dts/exynos5250-smdk5250.dts
+++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
@@ -30,8 +30,6 @@
30 i2c@12C60000 { 30 i2c@12C60000 {
31 samsung,i2c-sda-delay = <100>; 31 samsung,i2c-sda-delay = <100>;
32 samsung,i2c-max-bus-freq = <20000>; 32 samsung,i2c-max-bus-freq = <20000>;
33 gpios = <&gpb3 0 2 3 0>,
34 <&gpb3 1 2 3 0>;
35 33
36 eeprom@50 { 34 eeprom@50 {
37 compatible = "samsung,s524ad0xd1"; 35 compatible = "samsung,s524ad0xd1";
@@ -42,8 +40,6 @@
42 i2c@12C70000 { 40 i2c@12C70000 {
43 samsung,i2c-sda-delay = <100>; 41 samsung,i2c-sda-delay = <100>;
44 samsung,i2c-max-bus-freq = <20000>; 42 samsung,i2c-max-bus-freq = <20000>;
45 gpios = <&gpb3 2 2 3 0>,
46 <&gpb3 3 2 3 0>;
47 43
48 eeprom@51 { 44 eeprom@51 {
49 compatible = "samsung,s524ad0xd1"; 45 compatible = "samsung,s524ad0xd1";
@@ -74,8 +70,6 @@
74 i2c@12C80000 { 70 i2c@12C80000 {
75 samsung,i2c-sda-delay = <100>; 71 samsung,i2c-sda-delay = <100>;
76 samsung,i2c-max-bus-freq = <66000>; 72 samsung,i2c-max-bus-freq = <66000>;
77 gpios = <&gpa0 6 3 3 0>,
78 <&gpa0 7 3 3 0>;
79 73
80 hdmiddc@50 { 74 hdmiddc@50 {
81 compatible = "samsung,exynos5-hdmiddc"; 75 compatible = "samsung,exynos5-hdmiddc";
@@ -122,15 +116,12 @@
122 samsung,dw-mshc-ciu-div = <3>; 116 samsung,dw-mshc-ciu-div = <3>;
123 samsung,dw-mshc-sdr-timing = <2 3>; 117 samsung,dw-mshc-sdr-timing = <2 3>;
124 samsung,dw-mshc-ddr-timing = <1 2>; 118 samsung,dw-mshc-ddr-timing = <1 2>;
119 pinctrl-names = "default";
120 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
125 121
126 slot@0 { 122 slot@0 {
127 reg = <0>; 123 reg = <0>;
128 bus-width = <8>; 124 bus-width = <8>;
129 gpios = <&gpc0 0 2 0 3>, <&gpc0 1 2 0 3>,
130 <&gpc1 0 2 3 3>, <&gpc1 1 2 3 3>,
131 <&gpc1 2 2 3 3>, <&gpc1 3 2 3 3>,
132 <&gpc0 3 2 3 3>, <&gpc0 4 2 3 3>,
133 <&gpc0 5 2 3 3>, <&gpc0 6 2 3 3>;
134 }; 125 };
135 }; 126 };
136 127
@@ -146,17 +137,13 @@
146 samsung,dw-mshc-ciu-div = <3>; 137 samsung,dw-mshc-ciu-div = <3>;
147 samsung,dw-mshc-sdr-timing = <2 3>; 138 samsung,dw-mshc-sdr-timing = <2 3>;
148 samsung,dw-mshc-ddr-timing = <1 2>; 139 samsung,dw-mshc-ddr-timing = <1 2>;
140 pinctrl-names = "default";
141 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
149 142
150 slot@0 { 143 slot@0 {
151 reg = <0>; 144 reg = <0>;
152 bus-width = <4>; 145 bus-width = <4>;
153 samsung,cd-pinmux-gpio = <&gpc3 2 2 3 3>;
154 disable-wp; 146 disable-wp;
155 gpios = <&gpc3 0 2 0 3>, <&gpc3 1 2 0 3>,
156 <&gpc3 3 2 3 3>, <&gpc3 4 2 3 3>,
157 <&gpc3 5 2 3 3>, <&gpc3 6 2 3 3>,
158 <&gpc4 3 3 3 3>, <&gpc4 3 3 3 3>,
159 <&gpc4 5 3 3 3>, <&gpc4 6 3 3 3>;
160 }; 147 };
161 }; 148 };
162 149
@@ -169,10 +156,6 @@
169 }; 156 };
170 157
171 spi_1: spi@12d30000 { 158 spi_1: spi@12d30000 {
172 gpios = <&gpa2 4 2 3 0>,
173 <&gpa2 6 2 3 0>,
174 <&gpa2 7 2 3 0>;
175
176 w25q80bw@0 { 159 w25q80bw@0 {
177 #address-cells = <1>; 160 #address-cells = <1>;
178 #size-cells = <1>; 161 #size-cells = <1>;
@@ -181,7 +164,7 @@
181 spi-max-frequency = <1000000>; 164 spi-max-frequency = <1000000>;
182 165
183 controller-data { 166 controller-data {
184 cs-gpio = <&gpa2 5 1 0 3>; 167 cs-gpio = <&gpa2 5 0>;
185 samsung,spi-feedback-delay = <0>; 168 samsung,spi-feedback-delay = <0>;
186 }; 169 };
187 170
@@ -203,7 +186,7 @@
203 }; 186 };
204 187
205 hdmi { 188 hdmi {
206 hpd-gpio = <&gpx3 7 0xf 1 3>; 189 hpd-gpio = <&gpx3 7 0>;
207 }; 190 };
208 191
209 codec@11000000 { 192 codec@11000000 {
@@ -212,9 +195,7 @@
212 }; 195 };
213 196
214 i2s0: i2s@03830000 { 197 i2s0: i2s@03830000 {
215 gpios = <&gpz 0 2 0 0>, <&gpz 1 2 0 0>, <&gpz 2 2 0 0>, 198 status = "okay";
216 <&gpz 3 2 0 0>, <&gpz 4 2 0 0>, <&gpz 5 2 0 0>,
217 <&gpz 6 2 0 0>;
218 }; 199 };
219 200
220 i2s1: i2s@12D60000 { 201 i2s1: i2s@12D60000 {
@@ -245,6 +226,22 @@
245 samsung,lane-count = <4>; 226 samsung,lane-count = <4>;
246 }; 227 };
247 228
229 display-timings {
230 native-mode = <&timing0>;
231 timing0: timing@0 {
232 /* 1280x800 */
233 clock-frequency = <50000>;
234 hactive = <1280>;
235 vactive = <800>;
236 hfront-porch = <4>;
237 hback-porch = <4>;
238 hsync-len = <4>;
239 vback-porch = <4>;
240 vfront-porch = <4>;
241 vsync-len = <4>;
242 };
243 };
244
248 fixed-rate-clocks { 245 fixed-rate-clocks {
249 xxti { 246 xxti {
250 compatible = "samsung,clock-xxti"; 247 compatible = "samsung,clock-xxti";
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts
index babd9f9b1bf9..bf4744bab445 100644
--- a/arch/arm/boot/dts/exynos5250-snow.dts
+++ b/arch/arm/boot/dts/exynos5250-snow.dts
@@ -16,12 +16,31 @@
16 model = "Google Snow"; 16 model = "Google Snow";
17 compatible = "google,snow", "samsung,exynos5250"; 17 compatible = "google,snow", "samsung,exynos5250";
18 18
19 aliases {
20 i2c104 = &i2c_104;
21 };
22
23 pinctrl@11400000 {
24 sd3_clk: sd3-clk {
25 samsung,pin-drv = <0>;
26 };
27
28 sd3_cmd: sd3-cmd {
29 samsung,pin-pud = <3>;
30 samsung,pin-drv = <0>;
31 };
32
33 sd3_bus4: sd3-bus-width4 {
34 samsung,pin-drv = <0>;
35 };
36 };
37
19 gpio-keys { 38 gpio-keys {
20 compatible = "gpio-keys"; 39 compatible = "gpio-keys";
21 40
22 lid-switch { 41 lid-switch {
23 label = "Lid"; 42 label = "Lid";
24 gpios = <&gpx3 5 0 0x10000 0>; 43 gpios = <&gpx3 5 1>;
25 linux,input-type = <5>; /* EV_SW */ 44 linux,input-type = <5>; /* EV_SW */
26 linux,code = <0>; /* SW_LID */ 45 linux,code = <0>; /* SW_LID */
27 debounce-interval = <1>; 46 debounce-interval = <1>;
@@ -29,15 +48,137 @@
29 }; 48 };
30 }; 49 };
31 50
51 i2c-arbitrator {
52 compatible = "i2c-arb-gpio-challenge";
53 #address-cells = <1>;
54 #size-cells = <0>;
55
56 i2c-parent = <&{/i2c@12CA0000}>;
57
58 our-claim-gpio = <&gpf0 3 1>;
59 their-claim-gpios = <&gpe0 4 1>;
60 slew-delay-us = <10>;
61 wait-retry-us = <3000>;
62 wait-free-us = <50000>;
63
64 /* Use ID 104 as a hint that we're on physical bus 4 */
65 i2c_104: i2c@0 {
66 reg = <0>;
67 #address-cells = <1>;
68 #size-cells = <0>;
69
70 battery: sbs-battery@b {
71 compatible = "sbs,sbs-battery";
72 reg = <0xb>;
73 sbs,poll-retry-count = <1>;
74 };
75
76 ec: embedded-controller {
77 compatible = "google,cros-ec-i2c";
78 reg = <0x1e>;
79 interrupts = <6 0>;
80 interrupt-parent = <&gpx1>;
81 wakeup-source;
82
83 keyboard-controller {
84 compatible = "google,cros-ec-keyb";
85 keypad,num-rows = <8>;
86 keypad,num-columns = <13>;
87 google,needs-ghost-filter;
88 linux,keymap = <0x0001003a /* CAPSLK */
89 0x0002003b /* F1 */
90 0x00030030 /* B */
91 0x00040044 /* F10 */
92 0x00060031 /* N */
93 0x0008000d /* = */
94 0x000a0064 /* R_ALT */
95
96 0x01010001 /* ESC */
97 0x0102003e /* F4 */
98 0x01030022 /* G */
99 0x01040041 /* F7 */
100 0x01060023 /* H */
101 0x01080028 /* ' */
102 0x01090043 /* F9 */
103 0x010b000e /* BKSPACE */
104
105 0x0200001d /* L_CTRL */
106 0x0201000f /* TAB */
107 0x0202003d /* F3 */
108 0x02030014 /* T */
109 0x02040040 /* F6 */
110 0x0205001b /* ] */
111 0x02060015 /* Y */
112 0x02070056 /* 102ND */
113 0x0208001a /* [ */
114 0x02090042 /* F8 */
115
116 0x03010029 /* GRAVE */
117 0x0302003c /* F2 */
118 0x03030006 /* 5 */
119 0x0304003f /* F5 */
120 0x03060007 /* 6 */
121 0x0308000c /* - */
122 0x030b002b /* \ */
123
124 0x04000061 /* R_CTRL */
125 0x0401001e /* A */
126 0x04020020 /* D */
127 0x04030021 /* F */
128 0x0404001f /* S */
129 0x04050025 /* K */
130 0x04060024 /* J */
131 0x04080027 /* ; */
132 0x04090026 /* L */
133 0x040b001c /* ENTER */
134
135 0x0501002c /* Z */
136 0x0502002e /* C */
137 0x0503002f /* V */
138 0x0504002d /* X */
139 0x05050033 /* , */
140 0x05060032 /* M */
141 0x0507002a /* L_SHIFT */
142 0x05080035 /* / */
143 0x05090034 /* . */
144 0x050B0039 /* SPACE */
145
146 0x06010002 /* 1 */
147 0x06020004 /* 3 */
148 0x06030005 /* 4 */
149 0x06040003 /* 2 */
150 0x06050009 /* 8 */
151 0x06060008 /* 7 */
152 0x0608000b /* 0 */
153 0x0609000a /* 9 */
154 0x060a0038 /* L_ALT */
155 0x060b006c /* DOWN */
156 0x060c006a /* RIGHT */
157
158 0x07010010 /* Q */
159 0x07020012 /* E */
160 0x07030013 /* R */
161 0x07040011 /* W */
162 0x07050017 /* I */
163 0x07060016 /* U */
164 0x07070036 /* R_SHIFT */
165 0x07080019 /* P */
166 0x07090018 /* O */
167 0x070b0067 /* UP */
168 0x070c0069>; /* LEFT */
169 };
170 };
171 };
172 };
173
32 /* 174 /*
33 * On Snow we've got SIP WiFi and so can keep drive strengths low to 175 * On Snow we've got SIP WiFi and so can keep drive strengths low to
34 * reduce EMI. 176 * reduce EMI.
35 */ 177 */
36 dwmmc3@12230000 { 178 dwmmc3@12230000 {
37 slot@0 { 179 slot@0 {
38 gpios = <&gpc4 0 2 0 0>, <&gpc4 1 2 3 0>, 180 pinctrl-names = "default";
39 <&gpc4 3 2 3 0>, <&gpc4 4 2 3 0>, 181 pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
40 <&gpc4 5 2 3 0>, <&gpc4 6 2 3 0>;
41 }; 182 };
42 }; 183 };
43 184
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
index 28758e5dd15c..98dfc3ea5c0b 100644
--- a/arch/arm/boot/dts/exynos5250.dtsi
+++ b/arch/arm/boot/dts/exynos5250.dtsi
@@ -18,6 +18,7 @@
18*/ 18*/
19 19
20/include/ "skeleton.dtsi" 20/include/ "skeleton.dtsi"
21/include/ "exynos5250-pinctrl.dtsi"
21 22
22/ { 23/ {
23 compatible = "samsung,exynos5250"; 24 compatible = "samsung,exynos5250";
@@ -44,6 +45,15 @@
44 i2c6 = &i2c_6; 45 i2c6 = &i2c_6;
45 i2c7 = &i2c_7; 46 i2c7 = &i2c_7;
46 i2c8 = &i2c_8; 47 i2c8 = &i2c_8;
48 pinctrl0 = &pinctrl_0;
49 pinctrl1 = &pinctrl_1;
50 pinctrl2 = &pinctrl_2;
51 pinctrl3 = &pinctrl_3;
52 };
53
54 chipid@10000000 {
55 compatible = "samsung,exynos4210-chipid";
56 reg = <0x10000000 0x100>;
47 }; 57 };
48 58
49 pd_gsc: gsc-power-domain@0x10044000 { 59 pd_gsc: gsc-power-domain@0x10044000 {
@@ -63,10 +73,22 @@
63 }; 73 };
64 74
65 gic:interrupt-controller@10481000 { 75 gic:interrupt-controller@10481000 {
66 compatible = "arm,cortex-a9-gic"; 76 compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
67 #interrupt-cells = <3>; 77 #interrupt-cells = <3>;
68 interrupt-controller; 78 interrupt-controller;
69 reg = <0x10481000 0x1000>, <0x10482000 0x2000>; 79 reg = <0x10481000 0x1000>,
80 <0x10482000 0x1000>,
81 <0x10484000 0x2000>,
82 <0x10486000 0x2000>;
83 interrupts = <1 9 0xf04>;
84 };
85
86 timer {
87 compatible = "arm,armv7-timer";
88 interrupts = <1 13 0xf08>,
89 <1 14 0xf08>,
90 <1 11 0xf08>,
91 <1 10 0xf08>;
70 }; 92 };
71 93
72 combiner:interrupt-controller@10440000 { 94 combiner:interrupt-controller@10440000 {
@@ -115,6 +137,36 @@
115 interrupts = <1 2>, <22 4>; 137 interrupts = <1 2>, <22 4>;
116 }; 138 };
117 139
140 pinctrl_0: pinctrl@11400000 {
141 compatible = "samsung,exynos5250-pinctrl";
142 reg = <0x11400000 0x1000>;
143 interrupts = <0 46 0>;
144
145 wakup_eint: wakeup-interrupt-controller {
146 compatible = "samsung,exynos4210-wakeup-eint";
147 interrupt-parent = <&gic>;
148 interrupts = <0 32 0>;
149 };
150 };
151
152 pinctrl_1: pinctrl@13400000 {
153 compatible = "samsung,exynos5250-pinctrl";
154 reg = <0x13400000 0x1000>;
155 interrupts = <0 45 0>;
156 };
157
158 pinctrl_2: pinctrl@10d10000 {
159 compatible = "samsung,exynos5250-pinctrl";
160 reg = <0x10d10000 0x1000>;
161 interrupts = <0 50 0>;
162 };
163
164 pinctrl_3: pinctrl@03680000 {
165 compatible = "samsung,exynos5250-pinctrl";
166 reg = <0x0368000 0x1000>;
167 interrupts = <0 47 0>;
168 };
169
118 watchdog { 170 watchdog {
119 compatible = "samsung,s3c2410-wdt"; 171 compatible = "samsung,s3c2410-wdt";
120 reg = <0x101D0000 0x100>; 172 reg = <0x101D0000 0x100>;
@@ -200,6 +252,8 @@
200 #size-cells = <0>; 252 #size-cells = <0>;
201 clocks = <&clock 294>; 253 clocks = <&clock 294>;
202 clock-names = "i2c"; 254 clock-names = "i2c";
255 pinctrl-names = "default";
256 pinctrl-0 = <&i2c0_bus>;
203 }; 257 };
204 258
205 i2c_1: i2c@12C70000 { 259 i2c_1: i2c@12C70000 {
@@ -210,6 +264,8 @@
210 #size-cells = <0>; 264 #size-cells = <0>;
211 clocks = <&clock 295>; 265 clocks = <&clock 295>;
212 clock-names = "i2c"; 266 clock-names = "i2c";
267 pinctrl-names = "default";
268 pinctrl-0 = <&i2c1_bus>;
213 }; 269 };
214 270
215 i2c_2: i2c@12C80000 { 271 i2c_2: i2c@12C80000 {
@@ -220,6 +276,8 @@
220 #size-cells = <0>; 276 #size-cells = <0>;
221 clocks = <&clock 296>; 277 clocks = <&clock 296>;
222 clock-names = "i2c"; 278 clock-names = "i2c";
279 pinctrl-names = "default";
280 pinctrl-0 = <&i2c2_bus>;
223 }; 281 };
224 282
225 i2c_3: i2c@12C90000 { 283 i2c_3: i2c@12C90000 {
@@ -230,6 +288,8 @@
230 #size-cells = <0>; 288 #size-cells = <0>;
231 clocks = <&clock 297>; 289 clocks = <&clock 297>;
232 clock-names = "i2c"; 290 clock-names = "i2c";
291 pinctrl-names = "default";
292 pinctrl-0 = <&i2c3_bus>;
233 }; 293 };
234 294
235 i2c_4: i2c@12CA0000 { 295 i2c_4: i2c@12CA0000 {
@@ -240,6 +300,8 @@
240 #size-cells = <0>; 300 #size-cells = <0>;
241 clocks = <&clock 298>; 301 clocks = <&clock 298>;
242 clock-names = "i2c"; 302 clock-names = "i2c";
303 pinctrl-names = "default";
304 pinctrl-0 = <&i2c4_bus>;
243 }; 305 };
244 306
245 i2c_5: i2c@12CB0000 { 307 i2c_5: i2c@12CB0000 {
@@ -250,6 +312,8 @@
250 #size-cells = <0>; 312 #size-cells = <0>;
251 clocks = <&clock 299>; 313 clocks = <&clock 299>;
252 clock-names = "i2c"; 314 clock-names = "i2c";
315 pinctrl-names = "default";
316 pinctrl-0 = <&i2c5_bus>;
253 }; 317 };
254 318
255 i2c_6: i2c@12CC0000 { 319 i2c_6: i2c@12CC0000 {
@@ -260,6 +324,8 @@
260 #size-cells = <0>; 324 #size-cells = <0>;
261 clocks = <&clock 300>; 325 clocks = <&clock 300>;
262 clock-names = "i2c"; 326 clock-names = "i2c";
327 pinctrl-names = "default";
328 pinctrl-0 = <&i2c6_bus>;
263 }; 329 };
264 330
265 i2c_7: i2c@12CD0000 { 331 i2c_7: i2c@12CD0000 {
@@ -270,6 +336,8 @@
270 #size-cells = <0>; 336 #size-cells = <0>;
271 clocks = <&clock 301>; 337 clocks = <&clock 301>;
272 clock-names = "i2c"; 338 clock-names = "i2c";
339 pinctrl-names = "default";
340 pinctrl-0 = <&i2c7_bus>;
273 }; 341 };
274 342
275 i2c_8: i2c@12CE0000 { 343 i2c_8: i2c@12CE0000 {
@@ -302,6 +370,8 @@
302 #size-cells = <0>; 370 #size-cells = <0>;
303 clocks = <&clock 304>, <&clock 154>; 371 clocks = <&clock 304>, <&clock 154>;
304 clock-names = "spi", "spi_busclk0"; 372 clock-names = "spi", "spi_busclk0";
373 pinctrl-names = "default";
374 pinctrl-0 = <&spi0_bus>;
305 }; 375 };
306 376
307 spi_1: spi@12d30000 { 377 spi_1: spi@12d30000 {
@@ -315,6 +385,8 @@
315 #size-cells = <0>; 385 #size-cells = <0>;
316 clocks = <&clock 305>, <&clock 155>; 386 clocks = <&clock 305>, <&clock 155>;
317 clock-names = "spi", "spi_busclk0"; 387 clock-names = "spi", "spi_busclk0";
388 pinctrl-names = "default";
389 pinctrl-0 = <&spi1_bus>;
318 }; 390 };
319 391
320 spi_2: spi@12d40000 { 392 spi_2: spi@12d40000 {
@@ -328,6 +400,8 @@
328 #size-cells = <0>; 400 #size-cells = <0>;
329 clocks = <&clock 306>, <&clock 156>; 401 clocks = <&clock 306>, <&clock 156>;
330 clock-names = "spi", "spi_busclk0"; 402 clock-names = "spi", "spi_busclk0";
403 pinctrl-names = "default";
404 pinctrl-0 = <&spi2_bus>;
331 }; 405 };
332 406
333 dwmmc_0: dwmmc0@12200000 { 407 dwmmc_0: dwmmc0@12200000 {
@@ -381,6 +455,8 @@
381 samsung,supports-rstclr; 455 samsung,supports-rstclr;
382 samsung,supports-secdai; 456 samsung,supports-secdai;
383 samsung,idma-addr = <0x03000000>; 457 samsung,idma-addr = <0x03000000>;
458 pinctrl-names = "default";
459 pinctrl-0 = <&i2s0_bus>;
384 }; 460 };
385 461
386 i2s1: i2s@12D60000 { 462 i2s1: i2s@12D60000 {
@@ -389,6 +465,8 @@
389 dmas = <&pdma1 12 465 dmas = <&pdma1 12
390 &pdma1 11>; 466 &pdma1 11>;
391 dma-names = "tx", "rx"; 467 dma-names = "tx", "rx";
468 pinctrl-names = "default";
469 pinctrl-0 = <&i2s1_bus>;
392 }; 470 };
393 471
394 i2s2: i2s@12D70000 { 472 i2s2: i2s@12D70000 {
@@ -397,18 +475,26 @@
397 dmas = <&pdma0 12 475 dmas = <&pdma0 12
398 &pdma0 11>; 476 &pdma0 11>;
399 dma-names = "tx", "rx"; 477 dma-names = "tx", "rx";
478 pinctrl-names = "default";
479 pinctrl-0 = <&i2s2_bus>;
400 }; 480 };
401 481
402 usb@12110000 { 482 usb@12110000 {
403 compatible = "samsung,exynos4210-ehci"; 483 compatible = "samsung,exynos4210-ehci";
404 reg = <0x12110000 0x100>; 484 reg = <0x12110000 0x100>;
405 interrupts = <0 71 0>; 485 interrupts = <0 71 0>;
486
487 clocks = <&clock 285>;
488 clock-names = "usbhost";
406 }; 489 };
407 490
408 usb@12120000 { 491 usb@12120000 {
409 compatible = "samsung,exynos4210-ohci"; 492 compatible = "samsung,exynos4210-ohci";
410 reg = <0x12120000 0x100>; 493 reg = <0x12120000 0x100>;
411 interrupts = <0 71 0>; 494 interrupts = <0 71 0>;
495
496 clocks = <&clock 285>;
497 clock-names = "usbhost";
412 }; 498 };
413 499
414 amba { 500 amba {
@@ -463,254 +549,6 @@
463 }; 549 };
464 }; 550 };
465 551
466 gpio-controllers {
467 #address-cells = <1>;
468 #size-cells = <1>;
469 gpio-controller;
470 ranges;
471
472 gpa0: gpio-controller@11400000 {
473 compatible = "samsung,exynos4-gpio";
474 reg = <0x11400000 0x20>;
475 #gpio-cells = <4>;
476 };
477
478 gpa1: gpio-controller@11400020 {
479 compatible = "samsung,exynos4-gpio";
480 reg = <0x11400020 0x20>;
481 #gpio-cells = <4>;
482 };
483
484 gpa2: gpio-controller@11400040 {
485 compatible = "samsung,exynos4-gpio";
486 reg = <0x11400040 0x20>;
487 #gpio-cells = <4>;
488 };
489
490 gpb0: gpio-controller@11400060 {
491 compatible = "samsung,exynos4-gpio";
492 reg = <0x11400060 0x20>;
493 #gpio-cells = <4>;
494 };
495
496 gpb1: gpio-controller@11400080 {
497 compatible = "samsung,exynos4-gpio";
498 reg = <0x11400080 0x20>;
499 #gpio-cells = <4>;
500 };
501
502 gpb2: gpio-controller@114000A0 {
503 compatible = "samsung,exynos4-gpio";
504 reg = <0x114000A0 0x20>;
505 #gpio-cells = <4>;
506 };
507
508 gpb3: gpio-controller@114000C0 {
509 compatible = "samsung,exynos4-gpio";
510 reg = <0x114000C0 0x20>;
511 #gpio-cells = <4>;
512 };
513
514 gpc0: gpio-controller@114000E0 {
515 compatible = "samsung,exynos4-gpio";
516 reg = <0x114000E0 0x20>;
517 #gpio-cells = <4>;
518 };
519
520 gpc1: gpio-controller@11400100 {
521 compatible = "samsung,exynos4-gpio";
522 reg = <0x11400100 0x20>;
523 #gpio-cells = <4>;
524 };
525
526 gpc2: gpio-controller@11400120 {
527 compatible = "samsung,exynos4-gpio";
528 reg = <0x11400120 0x20>;
529 #gpio-cells = <4>;
530 };
531
532 gpc3: gpio-controller@11400140 {
533 compatible = "samsung,exynos4-gpio";
534 reg = <0x11400140 0x20>;
535 #gpio-cells = <4>;
536 };
537
538 gpc4: gpio-controller@114002E0 {
539 compatible = "samsung,exynos4-gpio";
540 reg = <0x114002E0 0x20>;
541 #gpio-cells = <4>;
542 };
543
544 gpd0: gpio-controller@11400160 {
545 compatible = "samsung,exynos4-gpio";
546 reg = <0x11400160 0x20>;
547 #gpio-cells = <4>;
548 };
549
550 gpd1: gpio-controller@11400180 {
551 compatible = "samsung,exynos4-gpio";
552 reg = <0x11400180 0x20>;
553 #gpio-cells = <4>;
554 };
555
556 gpy0: gpio-controller@114001A0 {
557 compatible = "samsung,exynos4-gpio";
558 reg = <0x114001A0 0x20>;
559 #gpio-cells = <4>;
560 };
561
562 gpy1: gpio-controller@114001C0 {
563 compatible = "samsung,exynos4-gpio";
564 reg = <0x114001C0 0x20>;
565 #gpio-cells = <4>;
566 };
567
568 gpy2: gpio-controller@114001E0 {
569 compatible = "samsung,exynos4-gpio";
570 reg = <0x114001E0 0x20>;
571 #gpio-cells = <4>;
572 };
573
574 gpy3: gpio-controller@11400200 {
575 compatible = "samsung,exynos4-gpio";
576 reg = <0x11400200 0x20>;
577 #gpio-cells = <4>;
578 };
579
580 gpy4: gpio-controller@11400220 {
581 compatible = "samsung,exynos4-gpio";
582 reg = <0x11400220 0x20>;
583 #gpio-cells = <4>;
584 };
585
586 gpy5: gpio-controller@11400240 {
587 compatible = "samsung,exynos4-gpio";
588 reg = <0x11400240 0x20>;
589 #gpio-cells = <4>;
590 };
591
592 gpy6: gpio-controller@11400260 {
593 compatible = "samsung,exynos4-gpio";
594 reg = <0x11400260 0x20>;
595 #gpio-cells = <4>;
596 };
597
598 gpx0: gpio-controller@11400C00 {
599 compatible = "samsung,exynos4-gpio";
600 reg = <0x11400C00 0x20>;
601 #gpio-cells = <4>;
602 };
603
604 gpx1: gpio-controller@11400C20 {
605 compatible = "samsung,exynos4-gpio";
606 reg = <0x11400C20 0x20>;
607 #gpio-cells = <4>;
608 };
609
610 gpx2: gpio-controller@11400C40 {
611 compatible = "samsung,exynos4-gpio";
612 reg = <0x11400C40 0x20>;
613 #gpio-cells = <4>;
614 };
615
616 gpx3: gpio-controller@11400C60 {
617 compatible = "samsung,exynos4-gpio";
618 reg = <0x11400C60 0x20>;
619 #gpio-cells = <4>;
620 };
621
622 gpe0: gpio-controller@13400000 {
623 compatible = "samsung,exynos4-gpio";
624 reg = <0x13400000 0x20>;
625 #gpio-cells = <4>;
626 };
627
628 gpe1: gpio-controller@13400020 {
629 compatible = "samsung,exynos4-gpio";
630 reg = <0x13400020 0x20>;
631 #gpio-cells = <4>;
632 };
633
634 gpf0: gpio-controller@13400040 {
635 compatible = "samsung,exynos4-gpio";
636 reg = <0x13400040 0x20>;
637 #gpio-cells = <4>;
638 };
639
640 gpf1: gpio-controller@13400060 {
641 compatible = "samsung,exynos4-gpio";
642 reg = <0x13400060 0x20>;
643 #gpio-cells = <4>;
644 };
645
646 gpg0: gpio-controller@13400080 {
647 compatible = "samsung,exynos4-gpio";
648 reg = <0x13400080 0x20>;
649 #gpio-cells = <4>;
650 };
651
652 gpg1: gpio-controller@134000A0 {
653 compatible = "samsung,exynos4-gpio";
654 reg = <0x134000A0 0x20>;
655 #gpio-cells = <4>;
656 };
657
658 gpg2: gpio-controller@134000C0 {
659 compatible = "samsung,exynos4-gpio";
660 reg = <0x134000C0 0x20>;
661 #gpio-cells = <4>;
662 };
663
664 gph0: gpio-controller@134000E0 {
665 compatible = "samsung,exynos4-gpio";
666 reg = <0x134000E0 0x20>;
667 #gpio-cells = <4>;
668 };
669
670 gph1: gpio-controller@13400100 {
671 compatible = "samsung,exynos4-gpio";
672 reg = <0x13400100 0x20>;
673 #gpio-cells = <4>;
674 };
675
676 gpv0: gpio-controller@10D10000 {
677 compatible = "samsung,exynos4-gpio";
678 reg = <0x10D10000 0x20>;
679 #gpio-cells = <4>;
680 };
681
682 gpv1: gpio-controller@10D10020 {
683 compatible = "samsung,exynos4-gpio";
684 reg = <0x10D10020 0x20>;
685 #gpio-cells = <4>;
686 };
687
688 gpv2: gpio-controller@10D10040 {
689 compatible = "samsung,exynos4-gpio";
690 reg = <0x10D10060 0x20>;
691 #gpio-cells = <4>;
692 };
693
694 gpv3: gpio-controller@10D10060 {
695 compatible = "samsung,exynos4-gpio";
696 reg = <0x10D10080 0x20>;
697 #gpio-cells = <4>;
698 };
699
700 gpv4: gpio-controller@10D10080 {
701 compatible = "samsung,exynos4-gpio";
702 reg = <0x10D100C0 0x20>;
703 #gpio-cells = <4>;
704 };
705
706 gpz: gpio-controller@03860000 {
707 compatible = "samsung,exynos4-gpio";
708 reg = <0x03860000 0x20>;
709 #gpio-cells = <4>;
710 };
711 };
712
713
714 gsc_0: gsc@0x13e00000 { 552 gsc_0: gsc@0x13e00000 {
715 compatible = "samsung,exynos5-gsc"; 553 compatible = "samsung,exynos5-gsc";
716 reg = <0x13e00000 0x1000>; 554 reg = <0x13e00000 0x1000>;
@@ -776,4 +614,14 @@
776 samsung,enable-mask = <1>; 614 samsung,enable-mask = <1>;
777 }; 615 };
778 }; 616 };
617
618 fimd {
619 compatible = "samsung,exynos5250-fimd";
620 interrupt-parent = <&combiner>;
621 reg = <0x14400000 0x40000>;
622 interrupt-names = "fifo", "vsync", "lcd_sys";
623 interrupts = <18 4>, <18 5>, <18 6>;
624 clocks = <&clock 133>, <&clock 339>;
625 clock-names = "sclk_fimd", "fimd";
626 };
779}; 627};
diff --git a/arch/arm/boot/dts/exynos5440-sd5v1.dts b/arch/arm/boot/dts/exynos5440-sd5v1.dts
new file mode 100644
index 000000000000..ef747b52b674
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5440-sd5v1.dts
@@ -0,0 +1,39 @@
1/*
2 * SAMSUNG SD5v1 board device tree source
3 *
4 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10*/
11
12/dts-v1/;
13/include/ "exynos5440.dtsi"
14
15/ {
16 model = "SAMSUNG SD5v1 board based on EXYNOS5440";
17 compatible = "samsung,sd5v1", "samsung,exynos5440";
18
19 chosen {
20 bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel early_printk no_console_suspend mem=2048M@0x80000000 console=ttySAC0,115200";
21 };
22
23 fixed-rate-clocks {
24 xtal {
25 compatible = "samsung,clock-xtal";
26 clock-frequency = <50000000>;
27 };
28 };
29
30 gmac: ethernet@00230000 {
31 fixed_phy;
32 phy_addr = <1>;
33 };
34
35 spi {
36 status = "disabled";
37 };
38
39};
diff --git a/arch/arm/boot/dts/exynos5440-ssdk5440.dts b/arch/arm/boot/dts/exynos5440-ssdk5440.dts
index a21eb4cbe893..d55042beb5c5 100644
--- a/arch/arm/boot/dts/exynos5440-ssdk5440.dts
+++ b/arch/arm/boot/dts/exynos5440-ssdk5440.dts
@@ -16,12 +16,8 @@
16 model = "SAMSUNG SSDK5440 board based on EXYNOS5440"; 16 model = "SAMSUNG SSDK5440 board based on EXYNOS5440";
17 compatible = "samsung,ssdk5440", "samsung,exynos5440"; 17 compatible = "samsung,ssdk5440", "samsung,exynos5440";
18 18
19 memory {
20 reg = <0x80000000 0x80000000>;
21 };
22
23 chosen { 19 chosen {
24 bootargs = "root=/dev/ram0 rw ramdisk=8192 initrd=0x81000000,8M console=ttySAC0,115200 init=/linuxrc"; 20 bootargs = "root=/dev/sda2 rw rootwait ignore_loglevel early_printk no_console_suspend mem=2048M@0x80000000 console=ttySAC0,115200";
25 }; 21 };
26 22
27 spi { 23 spi {
diff --git a/arch/arm/boot/dts/exynos5440.dtsi b/arch/arm/boot/dts/exynos5440.dtsi
index 48cc96aa0b5f..f6b1c8973845 100644
--- a/arch/arm/boot/dts/exynos5440.dtsi
+++ b/arch/arm/boot/dts/exynos5440.dtsi
@@ -26,7 +26,11 @@
26 compatible = "arm,cortex-a15-gic"; 26 compatible = "arm,cortex-a15-gic";
27 #interrupt-cells = <3>; 27 #interrupt-cells = <3>;
28 interrupt-controller; 28 interrupt-controller;
29 reg = <0x2E1000 0x1000>, <0x2E2000 0x1000>; 29 reg = <0x2E1000 0x1000>,
30 <0x2E2000 0x1000>,
31 <0x2E4000 0x2000>,
32 <0x2E6000 0x2000>;
33 interrupts = <1 9 0xf04>;
30 }; 34 };
31 35
32 cpus { 36 cpus {
@@ -51,6 +55,14 @@
51 }; 55 };
52 }; 56 };
53 57
58 arm-pmu {
59 compatible = "arm,cortex-a15-pmu", "arm,cortex-a9-pmu";
60 interrupts = <0 52 4>,
61 <0 53 4>,
62 <0 54 4>,
63 <0 55 4>;
64 };
65
54 timer { 66 timer {
55 compatible = "arm,cortex-a15-timer", 67 compatible = "arm,cortex-a15-timer",
56 "arm,armv7-timer"; 68 "arm,armv7-timer";
@@ -61,6 +73,18 @@
61 clock-frequency = <50000000>; 73 clock-frequency = <50000000>;
62 }; 74 };
63 75
76 cpufreq@160000 {
77 compatible = "samsung,exynos5440-cpufreq";
78 reg = <0x160000 0x1000>;
79 interrupts = <0 57 0>;
80 operating-points = <
81 /* KHz uV */
82 1200000 1025000
83 1000000 975000
84 800000 925000
85 >;
86 };
87
64 serial@B0000 { 88 serial@B0000 {
65 compatible = "samsung,exynos4210-uart"; 89 compatible = "samsung,exynos4210-uart";
66 reg = <0xB0000 0x1000>; 90 reg = <0xB0000 0x1000>;
@@ -92,6 +116,8 @@
92 pinctrl { 116 pinctrl {
93 compatible = "samsung,exynos5440-pinctrl"; 117 compatible = "samsung,exynos5440-pinctrl";
94 reg = <0xE0000 0x1000>; 118 reg = <0xE0000 0x1000>;
119 interrupts = <0 37 0>, <0 38 0>, <0 39 0>, <0 40 0>,
120 <0 41 0>, <0 42 0>, <0 43 0>, <0 44 0>;
95 interrupt-controller; 121 interrupt-controller;
96 #interrupt-cells = <2>; 122 #interrupt-cells = <2>;
97 #gpio-cells = <2>; 123 #gpio-cells = <2>;
@@ -141,6 +167,17 @@
141 clock-names = "watchdog"; 167 clock-names = "watchdog";
142 }; 168 };
143 169
170 gmac: ethernet@00230000 {
171 compatible = "snps,dwmac-3.70a";
172 reg = <0x00230000 0x8000>;
173 interrupt-parent = <&gic>;
174 interrupts = <0 31 4>;
175 interrupt-names = "macirq";
176 phy-mode = "sgmii";
177 clocks = <&clock 25>;
178 clock-names = "stmmaceth";
179 };
180
144 amba { 181 amba {
145 #address-cells = <1>; 182 #address-cells = <1>;
146 #size-cells = <1>; 183 #size-cells = <1>;
@@ -148,22 +185,22 @@
148 interrupt-parent = <&gic>; 185 interrupt-parent = <&gic>;
149 ranges; 186 ranges;
150 187
151 pdma0: pdma@121A0000 { 188 pdma0: pdma@00121000 {
152 compatible = "arm,pl330", "arm,primecell"; 189 compatible = "arm,pl330", "arm,primecell";
153 reg = <0x120000 0x1000>; 190 reg = <0x121000 0x1000>;
154 interrupts = <0 34 0>; 191 interrupts = <0 46 0>;
155 clocks = <&clock 21>; 192 clocks = <&clock 8>;
156 clock-names = "apb_pclk"; 193 clock-names = "apb_pclk";
157 #dma-cells = <1>; 194 #dma-cells = <1>;
158 #dma-channels = <8>; 195 #dma-channels = <8>;
159 #dma-requests = <32>; 196 #dma-requests = <32>;
160 }; 197 };
161 198
162 pdma1: pdma@121B0000 { 199 pdma1: pdma@00120000 {
163 compatible = "arm,pl330", "arm,primecell"; 200 compatible = "arm,pl330", "arm,primecell";
164 reg = <0x121000 0x1000>; 201 reg = <0x120000 0x1000>;
165 interrupts = <0 35 0>; 202 interrupts = <0 47 0>;
166 clocks = <&clock 21>; 203 clocks = <&clock 8>;
167 clock-names = "apb_pclk"; 204 clock-names = "apb_pclk";
168 #dma-cells = <1>; 205 #dma-cells = <1>;
169 #dma-channels = <8>; 206 #dma-channels = <8>;
diff --git a/arch/arm/boot/dts/imx23-evk.dts b/arch/arm/boot/dts/imx23-evk.dts
index 035c13f9d3c0..da0588a04131 100644
--- a/arch/arm/boot/dts/imx23-evk.dts
+++ b/arch/arm/boot/dts/imx23-evk.dts
@@ -59,8 +59,33 @@
59 lcdif@80030000 { 59 lcdif@80030000 {
60 pinctrl-names = "default"; 60 pinctrl-names = "default";
61 pinctrl-0 = <&lcdif_24bit_pins_a>; 61 pinctrl-0 = <&lcdif_24bit_pins_a>;
62 panel-enable-gpios = <&gpio1 18 0>; 62 lcd-supply = <&reg_lcd_3v3>;
63 display = <&display>;
63 status = "okay"; 64 status = "okay";
65
66 display: display {
67 bits-per-pixel = <32>;
68 bus-width = <24>;
69
70 display-timings {
71 native-mode = <&timing0>;
72 timing0: timing0 {
73 clock-frequency = <9200000>;
74 hactive = <480>;
75 vactive = <272>;
76 hback-porch = <15>;
77 hfront-porch = <8>;
78 vback-porch = <12>;
79 vfront-porch = <4>;
80 hsync-len = <1>;
81 vsync-len = <1>;
82 hsync-active = <0>;
83 vsync-active = <0>;
84 de-active = <1>;
85 pixelclk-active = <0>;
86 };
87 };
88 };
64 }; 89 };
65 }; 90 };
66 91
@@ -95,6 +120,15 @@
95 regulator-max-microvolt = <3300000>; 120 regulator-max-microvolt = <3300000>;
96 gpio = <&gpio1 29 0>; 121 gpio = <&gpio1 29 0>;
97 }; 122 };
123
124 reg_lcd_3v3: lcd-3v3 {
125 compatible = "regulator-fixed";
126 regulator-name = "lcd-3v3";
127 regulator-min-microvolt = <3300000>;
128 regulator-max-microvolt = <3300000>;
129 gpio = <&gpio1 18 0>;
130 enable-active-high;
131 };
98 }; 132 };
99 133
100 backlight { 134 backlight {
diff --git a/arch/arm/boot/dts/imx23-olinuxino.dts b/arch/arm/boot/dts/imx23-olinuxino.dts
index e7484e4ea659..d107c4af321f 100644
--- a/arch/arm/boot/dts/imx23-olinuxino.dts
+++ b/arch/arm/boot/dts/imx23-olinuxino.dts
@@ -29,6 +29,7 @@
29 pinctrl-names = "default"; 29 pinctrl-names = "default";
30 pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>; 30 pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_pins_fixup>;
31 bus-width = <4>; 31 bus-width = <4>;
32 broken-cd;
32 status = "okay"; 33 status = "okay";
33 }; 34 };
34 35
diff --git a/arch/arm/boot/dts/imx23.dtsi b/arch/arm/boot/dts/imx23.dtsi
index ad2d79324cd3..73fd7d0887b5 100644
--- a/arch/arm/boot/dts/imx23.dtsi
+++ b/arch/arm/boot/dts/imx23.dtsi
@@ -49,9 +49,15 @@
49 reg = <0x80000000 0x2000>; 49 reg = <0x80000000 0x2000>;
50 }; 50 };
51 51
52 dma-apbh@80004000 { 52 dma_apbh: dma-apbh@80004000 {
53 compatible = "fsl,imx23-dma-apbh"; 53 compatible = "fsl,imx23-dma-apbh";
54 reg = <0x80004000 0x2000>; 54 reg = <0x80004000 0x2000>;
55 interrupts = <0 14 20 0
56 13 13 13 13>;
57 interrupt-names = "empty", "ssp0", "ssp1", "empty",
58 "gpmi0", "gpmi1", "gpmi2", "gpmi3";
59 #dma-cells = <1>;
60 dma-channels = <8>;
55 clocks = <&clks 15>; 61 clocks = <&clks 15>;
56 }; 62 };
57 63
@@ -70,6 +76,8 @@
70 interrupt-names = "gpmi-dma", "bch"; 76 interrupt-names = "gpmi-dma", "bch";
71 clocks = <&clks 34>; 77 clocks = <&clks 34>;
72 clock-names = "gpmi_io"; 78 clock-names = "gpmi_io";
79 dmas = <&dma_apbh 4>;
80 dma-names = "rx-tx";
73 fsl,gpmi-dma-channel = <4>; 81 fsl,gpmi-dma-channel = <4>;
74 status = "disabled"; 82 status = "disabled";
75 }; 83 };
@@ -78,6 +86,8 @@
78 reg = <0x80010000 0x2000>; 86 reg = <0x80010000 0x2000>;
79 interrupts = <15 14>; 87 interrupts = <15 14>;
80 clocks = <&clks 33>; 88 clocks = <&clks 33>;
89 dmas = <&dma_apbh 1>;
90 dma-names = "rx-tx";
81 fsl,ssp-dma-channel = <1>; 91 fsl,ssp-dma-channel = <1>;
82 status = "disabled"; 92 status = "disabled";
83 }; 93 };
@@ -305,9 +315,19 @@
305 status = "disabled"; 315 status = "disabled";
306 }; 316 };
307 317
308 dma-apbx@80024000 { 318 dma_apbx: dma-apbx@80024000 {
309 compatible = "fsl,imx23-dma-apbx"; 319 compatible = "fsl,imx23-dma-apbx";
310 reg = <0x80024000 0x2000>; 320 reg = <0x80024000 0x2000>;
321 interrupts = <7 5 9 26
322 19 0 25 23
323 60 58 9 0
324 0 0 0 0>;
325 interrupt-names = "audio-adc", "audio-dac", "spdif-tx", "i2c",
326 "saif0", "empty", "auart0-rx", "auart0-tx",
327 "auart1-rx", "auart1-tx", "saif1", "empty",
328 "empty", "empty", "empty", "empty";
329 #dma-cells = <1>;
330 dma-channels = <16>;
311 clocks = <&clks 16>; 331 clocks = <&clks 16>;
312 }; 332 };
313 333
@@ -344,6 +364,8 @@
344 reg = <0x80034000 0x2000>; 364 reg = <0x80034000 0x2000>;
345 interrupts = <2 20>; 365 interrupts = <2 20>;
346 clocks = <&clks 33>; 366 clocks = <&clks 33>;
367 dmas = <&dma_apbh 2>;
368 dma-names = "rx-tx";
347 fsl,ssp-dma-channel = <2>; 369 fsl,ssp-dma-channel = <2>;
348 status = "disabled"; 370 status = "disabled";
349 }; 371 };
@@ -369,6 +391,8 @@
369 391
370 saif0: saif@80042000 { 392 saif0: saif@80042000 {
371 reg = <0x80042000 0x2000>; 393 reg = <0x80042000 0x2000>;
394 dmas = <&dma_apbx 4>;
395 dma-names = "rx-tx";
372 status = "disabled"; 396 status = "disabled";
373 }; 397 };
374 398
@@ -379,16 +403,22 @@
379 403
380 saif1: saif@80046000 { 404 saif1: saif@80046000 {
381 reg = <0x80046000 0x2000>; 405 reg = <0x80046000 0x2000>;
406 dmas = <&dma_apbx 10>;
407 dma-names = "rx-tx";
382 status = "disabled"; 408 status = "disabled";
383 }; 409 };
384 410
385 audio-out@80048000 { 411 audio-out@80048000 {
386 reg = <0x80048000 0x2000>; 412 reg = <0x80048000 0x2000>;
413 dmas = <&dma_apbx 1>;
414 dma-names = "tx";
387 status = "disabled"; 415 status = "disabled";
388 }; 416 };
389 417
390 audio-in@8004c000 { 418 audio-in@8004c000 {
391 reg = <0x8004c000 0x2000>; 419 reg = <0x8004c000 0x2000>;
420 dmas = <&dma_apbx 0>;
421 dma-names = "rx";
392 status = "disabled"; 422 status = "disabled";
393 }; 423 };
394 424
@@ -401,11 +431,15 @@
401 431
402 spdif@80054000 { 432 spdif@80054000 {
403 reg = <0x80054000 2000>; 433 reg = <0x80054000 2000>;
434 dmas = <&dma_apbx 2>;
435 dma-names = "tx";
404 status = "disabled"; 436 status = "disabled";
405 }; 437 };
406 438
407 i2c@80058000 { 439 i2c@80058000 {
408 reg = <0x80058000 0x2000>; 440 reg = <0x80058000 0x2000>;
441 dmas = <&dma_apbx 3>;
442 dma-names = "rx-tx";
409 status = "disabled"; 443 status = "disabled";
410 }; 444 };
411 445
@@ -436,6 +470,8 @@
436 reg = <0x8006c000 0x2000>; 470 reg = <0x8006c000 0x2000>;
437 interrupts = <24 25 23>; 471 interrupts = <24 25 23>;
438 clocks = <&clks 32>; 472 clocks = <&clks 32>;
473 dmas = <&dma_apbx 6>, <&dma_apbx 7>;
474 dma-names = "rx", "tx";
439 status = "disabled"; 475 status = "disabled";
440 }; 476 };
441 477
@@ -444,6 +480,8 @@
444 reg = <0x8006e000 0x2000>; 480 reg = <0x8006e000 0x2000>;
445 interrupts = <59 60 58>; 481 interrupts = <59 60 58>;
446 clocks = <&clks 32>; 482 clocks = <&clks 32>;
483 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
484 dma-names = "rx", "tx";
447 status = "disabled"; 485 status = "disabled";
448 }; 486 };
449 487
diff --git a/arch/arm/boot/dts/imx28-apf28dev.dts b/arch/arm/boot/dts/imx28-apf28dev.dts
index 6d8865bfb4b7..3d905d16cbec 100644
--- a/arch/arm/boot/dts/imx28-apf28dev.dts
+++ b/arch/arm/boot/dts/imx28-apf28dev.dts
@@ -72,7 +72,32 @@
72 pinctrl-names = "default"; 72 pinctrl-names = "default";
73 pinctrl-0 = <&lcdif_16bit_pins_a 73 pinctrl-0 = <&lcdif_16bit_pins_a
74 &lcdif_pins_apf28dev>; 74 &lcdif_pins_apf28dev>;
75 display = <&display>;
75 status = "okay"; 76 status = "okay";
77
78 display: display {
79 bits-per-pixel = <16>;
80 bus-width = <16>;
81
82 display-timings {
83 native-mode = <&timing0>;
84 timing0: timing0 {
85 clock-frequency = <33000033>;
86 hactive = <800>;
87 vactive = <480>;
88 hback-porch = <96>;
89 hfront-porch = <96>;
90 vback-porch = <20>;
91 vfront-porch = <21>;
92 hsync-len = <64>;
93 vsync-len = <4>;
94 hsync-active = <1>;
95 vsync-active = <1>;
96 de-active = <1>;
97 pixelclk-active = <0>;
98 };
99 };
100 };
76 }; 101 };
77 }; 102 };
78 103
diff --git a/arch/arm/boot/dts/imx28-apx4devkit.dts b/arch/arm/boot/dts/imx28-apx4devkit.dts
index 5171667a7763..43bf3c796cba 100644
--- a/arch/arm/boot/dts/imx28-apx4devkit.dts
+++ b/arch/arm/boot/dts/imx28-apx4devkit.dts
@@ -94,7 +94,32 @@
94 pinctrl-names = "default"; 94 pinctrl-names = "default";
95 pinctrl-0 = <&lcdif_24bit_pins_a 95 pinctrl-0 = <&lcdif_24bit_pins_a
96 &lcdif_pins_apx4>; 96 &lcdif_pins_apx4>;
97 display = <&display>;
97 status = "okay"; 98 status = "okay";
99
100 display: display {
101 bits-per-pixel = <32>;
102 bus-width = <24>;
103
104 display-timings {
105 native-mode = <&timing0>;
106 timing0: timing0 {
107 clock-frequency = <30000000>;
108 hactive = <800>;
109 vactive = <480>;
110 hback-porch = <88>;
111 hfront-porch = <40>;
112 vback-porch = <32>;
113 vfront-porch = <13>;
114 hsync-len = <48>;
115 vsync-len = <3>;
116 hsync-active = <1>;
117 vsync-active = <1>;
118 de-active = <1>;
119 pixelclk-active = <0>;
120 };
121 };
122 };
98 }; 123 };
99 }; 124 };
100 125
diff --git a/arch/arm/boot/dts/imx28-cfa10049.dts b/arch/arm/boot/dts/imx28-cfa10049.dts
index a0d3e9f1738e..063e62059890 100644
--- a/arch/arm/boot/dts/imx28-cfa10049.dts
+++ b/arch/arm/boot/dts/imx28-cfa10049.dts
@@ -30,7 +30,6 @@
30 reg = <0>; 30 reg = <0>;
31 fsl,pinmux-ids = < 31 fsl,pinmux-ids = <
32 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */ 32 0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */
33 0x1153 /* MX28_PAD_LCD_D22__GPIO_1_21 */
34 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */ 33 0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */
35 0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */ 34 0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */
36 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */ 35 0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */
@@ -120,13 +119,48 @@
120 fsl,voltage = <1>; 119 fsl,voltage = <1>;
121 fsl,pull-up = <0>; 120 fsl,pull-up = <0>;
122 }; 121 };
122
123 w1_gpio_pins: w1-gpio@0 {
124 reg = <0>;
125 fsl,pinmux-ids = <
126 0x1153 /* MX28_PAD_LCD_D21__GPIO_1_21 */
127 >;
128 fsl,drive-strength = <1>;
129 fsl,voltage = <1>;
130 fsl,pull-up = <0>; /* 0 will enable the keeper */
131 };
123 }; 132 };
124 133
125 lcdif@80030000 { 134 lcdif@80030000 {
126 pinctrl-names = "default"; 135 pinctrl-names = "default";
127 pinctrl-0 = <&lcdif_18bit_pins_cfa10049 136 pinctrl-0 = <&lcdif_18bit_pins_cfa10049
128 &lcdif_pins_cfa10049>; 137 &lcdif_pins_cfa10049>;
138 display = <&display>;
129 status = "okay"; 139 status = "okay";
140
141 display: display {
142 bits-per-pixel = <32>;
143 bus-width = <18>;
144
145 display-timings {
146 native-mode = <&timing0>;
147 timing0: timing0 {
148 clock-frequency = <9216000>;
149 hactive = <320>;
150 vactive = <480>;
151 hback-porch = <2>;
152 hfront-porch = <2>;
153 vback-porch = <2>;
154 vfront-porch = <2>;
155 hsync-len = <15>;
156 vsync-len = <15>;
157 hsync-active = <0>;
158 vsync-active = <0>;
159 de-active = <1>;
160 pixelclk-active = <1>;
161 };
162 };
163 };
130 }; 164 };
131 }; 165 };
132 166
@@ -183,6 +217,11 @@
183 usbphy1: usbphy@8007e000 { 217 usbphy1: usbphy@8007e000 {
184 status = "okay"; 218 status = "okay";
185 }; 219 };
220
221 lradc@80050000 {
222 status = "okay";
223 fsl,lradc-touchscreen-wires = <4>;
224 };
186 }; 225 };
187 }; 226 };
188 227
@@ -304,5 +343,14 @@
304 pwms = <&pwm 3 5000000>; 343 pwms = <&pwm 3 5000000>;
305 brightness-levels = <0 4 8 16 32 64 128 255>; 344 brightness-levels = <0 4 8 16 32 64 128 255>;
306 default-brightness-level = <6>; 345 default-brightness-level = <6>;
346
347 };
348
349 onewire@0 {
350 compatible = "w1-gpio";
351 pinctrl-names = "default";
352 pinctrl-0 = <&w1_gpio_pins>;
353 status = "okay";
354 gpios = <&gpio1 21 0>;
307 }; 355 };
308}; 356};
diff --git a/arch/arm/boot/dts/imx28-evk.dts b/arch/arm/boot/dts/imx28-evk.dts
index 2da316e04409..3637bf3b1d59 100644
--- a/arch/arm/boot/dts/imx28-evk.dts
+++ b/arch/arm/boot/dts/imx28-evk.dts
@@ -123,8 +123,33 @@
123 pinctrl-names = "default"; 123 pinctrl-names = "default";
124 pinctrl-0 = <&lcdif_24bit_pins_a 124 pinctrl-0 = <&lcdif_24bit_pins_a
125 &lcdif_pins_evk>; 125 &lcdif_pins_evk>;
126 panel-enable-gpios = <&gpio3 30 0>; 126 lcd-supply = <&reg_lcd_3v3>;
127 display = <&display>;
127 status = "okay"; 128 status = "okay";
129
130 display: display {
131 bits-per-pixel = <32>;
132 bus-width = <24>;
133
134 display-timings {
135 native-mode = <&timing0>;
136 timing0: timing0 {
137 clock-frequency = <33500000>;
138 hactive = <800>;
139 vactive = <480>;
140 hback-porch = <89>;
141 hfront-porch = <164>;
142 vback-porch = <23>;
143 vfront-porch = <10>;
144 hsync-len = <10>;
145 vsync-len = <10>;
146 hsync-active = <0>;
147 vsync-active = <0>;
148 de-active = <1>;
149 pixelclk-active = <0>;
150 };
151 };
152 };
128 }; 153 };
129 154
130 can0: can@80032000 { 155 can0: can@80032000 {
@@ -285,6 +310,15 @@
285 gpio = <&gpio3 8 0>; 310 gpio = <&gpio3 8 0>;
286 enable-active-high; 311 enable-active-high;
287 }; 312 };
313
314 reg_lcd_3v3: lcd-3v3 {
315 compatible = "regulator-fixed";
316 regulator-name = "lcd-3v3";
317 regulator-min-microvolt = <3300000>;
318 regulator-max-microvolt = <3300000>;
319 gpio = <&gpio3 30 0>;
320 enable-active-high;
321 };
288 }; 322 };
289 323
290 sound { 324 sound {
diff --git a/arch/arm/boot/dts/imx28-m28evk.dts b/arch/arm/boot/dts/imx28-m28evk.dts
index fd36e1cca104..5aa44e05c9f5 100644
--- a/arch/arm/boot/dts/imx28-m28evk.dts
+++ b/arch/arm/boot/dts/imx28-m28evk.dts
@@ -119,7 +119,32 @@
119 pinctrl-names = "default"; 119 pinctrl-names = "default";
120 pinctrl-0 = <&lcdif_24bit_pins_a 120 pinctrl-0 = <&lcdif_24bit_pins_a
121 &lcdif_pins_m28>; 121 &lcdif_pins_m28>;
122 display = <&display>;
122 status = "okay"; 123 status = "okay";
124
125 display: display {
126 bits-per-pixel = <16>;
127 bus-width = <18>;
128
129 display-timings {
130 native-mode = <&timing0>;
131 timing0: timing0 {
132 clock-frequency = <33260000>;
133 hactive = <800>;
134 vactive = <480>;
135 hback-porch = <0>;
136 hfront-porch = <256>;
137 vback-porch = <0>;
138 vfront-porch = <45>;
139 hsync-len = <1>;
140 vsync-len = <1>;
141 hsync-active = <0>;
142 vsync-active = <0>;
143 de-active = <1>;
144 pixelclk-active = <1>;
145 };
146 };
147 };
123 }; 148 };
124 149
125 can0: can@80032000 { 150 can0: can@80032000 {
@@ -220,6 +245,8 @@
220 phy-mode = "rmii"; 245 phy-mode = "rmii";
221 pinctrl-names = "default"; 246 pinctrl-names = "default";
222 pinctrl-0 = <&mac0_pins_a>; 247 pinctrl-0 = <&mac0_pins_a>;
248 clocks = <&clks 57>, <&clks 57>;
249 clock-names = "ipg", "ahb";
223 status = "okay"; 250 status = "okay";
224 }; 251 };
225 252
diff --git a/arch/arm/boot/dts/imx28.dtsi b/arch/arm/boot/dts/imx28.dtsi
index 64af2381c1b0..600f7cb51f3e 100644
--- a/arch/arm/boot/dts/imx28.dtsi
+++ b/arch/arm/boot/dts/imx28.dtsi
@@ -61,12 +61,24 @@
61 hsadc@80002000 { 61 hsadc@80002000 {
62 reg = <0x80002000 0x2000>; 62 reg = <0x80002000 0x2000>;
63 interrupts = <13 87>; 63 interrupts = <13 87>;
64 dmas = <&dma_apbh 12>;
65 dma-names = "rx";
64 status = "disabled"; 66 status = "disabled";
65 }; 67 };
66 68
67 dma-apbh@80004000 { 69 dma_apbh: dma-apbh@80004000 {
68 compatible = "fsl,imx28-dma-apbh"; 70 compatible = "fsl,imx28-dma-apbh";
69 reg = <0x80004000 0x2000>; 71 reg = <0x80004000 0x2000>;
72 interrupts = <82 83 84 85
73 88 88 88 88
74 88 88 88 88
75 87 86 0 0>;
76 interrupt-names = "ssp0", "ssp1", "ssp2", "ssp3",
77 "gpmi0", "gmpi1", "gpmi2", "gmpi3",
78 "gpmi4", "gmpi5", "gpmi6", "gmpi7",
79 "hsadc", "lcdif", "empty", "empty";
80 #dma-cells = <1>;
81 dma-channels = <16>;
70 clocks = <&clks 25>; 82 clocks = <&clks 25>;
71 }; 83 };
72 84
@@ -86,6 +98,8 @@
86 interrupt-names = "gpmi-dma", "bch"; 98 interrupt-names = "gpmi-dma", "bch";
87 clocks = <&clks 50>; 99 clocks = <&clks 50>;
88 clock-names = "gpmi_io"; 100 clock-names = "gpmi_io";
101 dmas = <&dma_apbh 4>;
102 dma-names = "rx-tx";
89 fsl,gpmi-dma-channel = <4>; 103 fsl,gpmi-dma-channel = <4>;
90 status = "disabled"; 104 status = "disabled";
91 }; 105 };
@@ -96,6 +110,8 @@
96 reg = <0x80010000 0x2000>; 110 reg = <0x80010000 0x2000>;
97 interrupts = <96 82>; 111 interrupts = <96 82>;
98 clocks = <&clks 46>; 112 clocks = <&clks 46>;
113 dmas = <&dma_apbh 0>;
114 dma-names = "rx-tx";
99 fsl,ssp-dma-channel = <0>; 115 fsl,ssp-dma-channel = <0>;
100 status = "disabled"; 116 status = "disabled";
101 }; 117 };
@@ -106,6 +122,8 @@
106 reg = <0x80012000 0x2000>; 122 reg = <0x80012000 0x2000>;
107 interrupts = <97 83>; 123 interrupts = <97 83>;
108 clocks = <&clks 47>; 124 clocks = <&clks 47>;
125 dmas = <&dma_apbh 1>;
126 dma-names = "rx-tx";
109 fsl,ssp-dma-channel = <1>; 127 fsl,ssp-dma-channel = <1>;
110 status = "disabled"; 128 status = "disabled";
111 }; 129 };
@@ -116,6 +134,8 @@
116 reg = <0x80014000 0x2000>; 134 reg = <0x80014000 0x2000>;
117 interrupts = <98 84>; 135 interrupts = <98 84>;
118 clocks = <&clks 48>; 136 clocks = <&clks 48>;
137 dmas = <&dma_apbh 2>;
138 dma-names = "rx-tx";
119 fsl,ssp-dma-channel = <2>; 139 fsl,ssp-dma-channel = <2>;
120 status = "disabled"; 140 status = "disabled";
121 }; 141 };
@@ -126,6 +146,8 @@
126 reg = <0x80016000 0x2000>; 146 reg = <0x80016000 0x2000>;
127 interrupts = <99 85>; 147 interrupts = <99 85>;
128 clocks = <&clks 49>; 148 clocks = <&clks 49>;
149 dmas = <&dma_apbh 3>;
150 dma-names = "rx-tx";
129 fsl,ssp-dma-channel = <3>; 151 fsl,ssp-dma-channel = <3>;
130 status = "disabled"; 152 status = "disabled";
131 }; 153 };
@@ -658,9 +680,19 @@
658 status = "disabled"; 680 status = "disabled";
659 }; 681 };
660 682
661 dma-apbx@80024000 { 683 dma_apbx: dma-apbx@80024000 {
662 compatible = "fsl,imx28-dma-apbx"; 684 compatible = "fsl,imx28-dma-apbx";
663 reg = <0x80024000 0x2000>; 685 reg = <0x80024000 0x2000>;
686 interrupts = <78 79 66 0
687 80 81 68 69
688 70 71 72 73
689 74 75 76 77>;
690 interrupt-names = "auart4-rx", "aurat4-tx", "spdif-tx", "empty",
691 "saif0", "saif1", "i2c0", "i2c1",
692 "auart0-rx", "auart0-tx", "auart1-rx", "auart1-tx",
693 "auart2-rx", "auart2-tx", "auart3-rx", "auart3-tx";
694 #dma-cells = <1>;
695 dma-channels = <16>;
664 clocks = <&clks 26>; 696 clocks = <&clks 26>;
665 }; 697 };
666 698
@@ -692,6 +724,8 @@
692 reg = <0x80030000 0x2000>; 724 reg = <0x80030000 0x2000>;
693 interrupts = <38 86>; 725 interrupts = <38 86>;
694 clocks = <&clks 55>; 726 clocks = <&clks 55>;
727 dmas = <&dma_apbh 13>;
728 dma-names = "rx";
695 status = "disabled"; 729 status = "disabled";
696 }; 730 };
697 731
@@ -767,6 +801,8 @@
767 reg = <0x80042000 0x2000>; 801 reg = <0x80042000 0x2000>;
768 interrupts = <59 80>; 802 interrupts = <59 80>;
769 clocks = <&clks 53>; 803 clocks = <&clks 53>;
804 dmas = <&dma_apbx 4>;
805 dma-names = "rx-tx";
770 fsl,saif-dma-channel = <4>; 806 fsl,saif-dma-channel = <4>;
771 status = "disabled"; 807 status = "disabled";
772 }; 808 };
@@ -781,6 +817,8 @@
781 reg = <0x80046000 0x2000>; 817 reg = <0x80046000 0x2000>;
782 interrupts = <58 81>; 818 interrupts = <58 81>;
783 clocks = <&clks 54>; 819 clocks = <&clks 54>;
820 dmas = <&dma_apbx 5>;
821 dma-names = "rx-tx";
784 fsl,saif-dma-channel = <5>; 822 fsl,saif-dma-channel = <5>;
785 status = "disabled"; 823 status = "disabled";
786 }; 824 };
@@ -796,6 +834,8 @@
796 spdif@80054000 { 834 spdif@80054000 {
797 reg = <0x80054000 0x2000>; 835 reg = <0x80054000 0x2000>;
798 interrupts = <45 66>; 836 interrupts = <45 66>;
837 dmas = <&dma_apbx 2>;
838 dma-names = "tx";
799 status = "disabled"; 839 status = "disabled";
800 }; 840 };
801 841
@@ -812,6 +852,8 @@
812 reg = <0x80058000 0x2000>; 852 reg = <0x80058000 0x2000>;
813 interrupts = <111 68>; 853 interrupts = <111 68>;
814 clock-frequency = <100000>; 854 clock-frequency = <100000>;
855 dmas = <&dma_apbx 6>;
856 dma-names = "rx-tx";
815 fsl,i2c-dma-channel = <6>; 857 fsl,i2c-dma-channel = <6>;
816 status = "disabled"; 858 status = "disabled";
817 }; 859 };
@@ -823,6 +865,8 @@
823 reg = <0x8005a000 0x2000>; 865 reg = <0x8005a000 0x2000>;
824 interrupts = <110 69>; 866 interrupts = <110 69>;
825 clock-frequency = <100000>; 867 clock-frequency = <100000>;
868 dmas = <&dma_apbx 7>;
869 dma-names = "rx-tx";
826 fsl,i2c-dma-channel = <7>; 870 fsl,i2c-dma-channel = <7>;
827 status = "disabled"; 871 status = "disabled";
828 }; 872 };
@@ -847,6 +891,8 @@
847 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 891 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
848 reg = <0x8006a000 0x2000>; 892 reg = <0x8006a000 0x2000>;
849 interrupts = <112 70 71>; 893 interrupts = <112 70 71>;
894 dmas = <&dma_apbx 8>, <&dma_apbx 9>;
895 dma-names = "rx", "tx";
850 fsl,auart-dma-channel = <8 9>; 896 fsl,auart-dma-channel = <8 9>;
851 clocks = <&clks 45>; 897 clocks = <&clks 45>;
852 status = "disabled"; 898 status = "disabled";
@@ -856,6 +902,8 @@
856 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 902 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
857 reg = <0x8006c000 0x2000>; 903 reg = <0x8006c000 0x2000>;
858 interrupts = <113 72 73>; 904 interrupts = <113 72 73>;
905 dmas = <&dma_apbx 10>, <&dma_apbx 11>;
906 dma-names = "rx", "tx";
859 clocks = <&clks 45>; 907 clocks = <&clks 45>;
860 status = "disabled"; 908 status = "disabled";
861 }; 909 };
@@ -864,6 +912,8 @@
864 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 912 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
865 reg = <0x8006e000 0x2000>; 913 reg = <0x8006e000 0x2000>;
866 interrupts = <114 74 75>; 914 interrupts = <114 74 75>;
915 dmas = <&dma_apbx 12>, <&dma_apbx 13>;
916 dma-names = "rx", "tx";
867 clocks = <&clks 45>; 917 clocks = <&clks 45>;
868 status = "disabled"; 918 status = "disabled";
869 }; 919 };
@@ -872,6 +922,8 @@
872 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 922 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
873 reg = <0x80070000 0x2000>; 923 reg = <0x80070000 0x2000>;
874 interrupts = <115 76 77>; 924 interrupts = <115 76 77>;
925 dmas = <&dma_apbx 14>, <&dma_apbx 15>;
926 dma-names = "rx", "tx";
875 clocks = <&clks 45>; 927 clocks = <&clks 45>;
876 status = "disabled"; 928 status = "disabled";
877 }; 929 };
@@ -880,6 +932,8 @@
880 compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 932 compatible = "fsl,imx28-auart", "fsl,imx23-auart";
881 reg = <0x80072000 0x2000>; 933 reg = <0x80072000 0x2000>;
882 interrupts = <116 78 79>; 934 interrupts = <116 78 79>;
935 dmas = <&dma_apbx 0>, <&dma_apbx 1>;
936 dma-names = "rx", "tx";
883 clocks = <&clks 45>; 937 clocks = <&clks 45>;
884 status = "disabled"; 938 status = "disabled";
885 }; 939 };
@@ -943,8 +997,8 @@
943 compatible = "fsl,imx28-fec"; 997 compatible = "fsl,imx28-fec";
944 reg = <0x800f0000 0x4000>; 998 reg = <0x800f0000 0x4000>;
945 interrupts = <101>; 999 interrupts = <101>;
946 clocks = <&clks 57>, <&clks 57>; 1000 clocks = <&clks 57>, <&clks 57>, <&clks 64>;
947 clock-names = "ipg", "ahb"; 1001 clock-names = "ipg", "ahb", "enet_out";
948 status = "disabled"; 1002 status = "disabled";
949 }; 1003 };
950 1004
diff --git a/arch/arm/boot/dts/imx6qdl.dtsi b/arch/arm/boot/dts/imx6qdl.dtsi
index 3cca7d39529d..9e8296e4c343 100644
--- a/arch/arm/boot/dts/imx6qdl.dtsi
+++ b/arch/arm/boot/dts/imx6qdl.dtsi
@@ -65,9 +65,13 @@
65 interrupt-parent = <&intc>; 65 interrupt-parent = <&intc>;
66 ranges; 66 ranges;
67 67
68 dma-apbh@00110000 { 68 dma_apbh: dma-apbh@00110000 {
69 compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh"; 69 compatible = "fsl,imx6q-dma-apbh", "fsl,imx28-dma-apbh";
70 reg = <0x00110000 0x2000>; 70 reg = <0x00110000 0x2000>;
71 interrupts = <0 13 0x04>, <0 13 0x04>, <0 13 0x04>, <0 13 0x04>;
72 interrupt-names = "gpmi0", "gpmi1", "gpmi2", "gpmi3";
73 #dma-cells = <1>;
74 dma-channels = <4>;
71 clocks = <&clks 106>; 75 clocks = <&clks 106>;
72 }; 76 };
73 77
@@ -83,6 +87,8 @@
83 <&clks 150>, <&clks 149>; 87 <&clks 150>, <&clks 149>;
84 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch", 88 clock-names = "gpmi_io", "gpmi_apb", "gpmi_bch",
85 "gpmi_bch_apb", "per1_bch"; 89 "gpmi_bch_apb", "per1_bch";
90 dmas = <&dma_apbh 0>;
91 dma-names = "rx-tx";
86 fsl,gpmi-dma-channel = <0>; 92 fsl,gpmi-dma-channel = <0>;
87 status = "disabled"; 93 status = "disabled";
88 }; 94 };
diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi
index 761c4b69b25b..37aa7487d4d8 100644
--- a/arch/arm/boot/dts/omap2.dtsi
+++ b/arch/arm/boot/dts/omap2.dtsi
@@ -26,6 +26,11 @@
26 }; 26 };
27 }; 27 };
28 28
29 pmu {
30 compatible = "arm,arm1136-pmu";
31 interrupts = <3>;
32 };
33
29 soc { 34 soc {
30 compatible = "ti,omap-infra"; 35 compatible = "ti,omap-infra";
31 mpu { 36 mpu {
@@ -49,6 +54,18 @@
49 reg = <0x480FE000 0x1000>; 54 reg = <0x480FE000 0x1000>;
50 }; 55 };
51 56
57 sdma: dma-controller@48056000 {
58 compatible = "ti,omap2430-sdma", "ti,omap2420-sdma";
59 reg = <0x48056000 0x1000>;
60 interrupts = <12>,
61 <13>,
62 <14>,
63 <15>;
64 #dma-cells = <1>;
65 #dma-channels = <32>;
66 #dma-requests = <64>;
67 };
68
52 uart1: serial@4806a000 { 69 uart1: serial@4806a000 {
53 compatible = "ti,omap2-uart"; 70 compatible = "ti,omap2-uart";
54 ti,hwmods = "uart1"; 71 ti,hwmods = "uart1";
@@ -68,28 +85,28 @@
68 }; 85 };
69 86
70 timer2: timer@4802a000 { 87 timer2: timer@4802a000 {
71 compatible = "ti,omap2-timer"; 88 compatible = "ti,omap2420-timer";
72 reg = <0x4802a000 0x400>; 89 reg = <0x4802a000 0x400>;
73 interrupts = <38>; 90 interrupts = <38>;
74 ti,hwmods = "timer2"; 91 ti,hwmods = "timer2";
75 }; 92 };
76 93
77 timer3: timer@48078000 { 94 timer3: timer@48078000 {
78 compatible = "ti,omap2-timer"; 95 compatible = "ti,omap2420-timer";
79 reg = <0x48078000 0x400>; 96 reg = <0x48078000 0x400>;
80 interrupts = <39>; 97 interrupts = <39>;
81 ti,hwmods = "timer3"; 98 ti,hwmods = "timer3";
82 }; 99 };
83 100
84 timer4: timer@4807a000 { 101 timer4: timer@4807a000 {
85 compatible = "ti,omap2-timer"; 102 compatible = "ti,omap2420-timer";
86 reg = <0x4807a000 0x400>; 103 reg = <0x4807a000 0x400>;
87 interrupts = <40>; 104 interrupts = <40>;
88 ti,hwmods = "timer4"; 105 ti,hwmods = "timer4";
89 }; 106 };
90 107
91 timer5: timer@4807c000 { 108 timer5: timer@4807c000 {
92 compatible = "ti,omap2-timer"; 109 compatible = "ti,omap2420-timer";
93 reg = <0x4807c000 0x400>; 110 reg = <0x4807c000 0x400>;
94 interrupts = <41>; 111 interrupts = <41>;
95 ti,hwmods = "timer5"; 112 ti,hwmods = "timer5";
@@ -97,7 +114,7 @@
97 }; 114 };
98 115
99 timer6: timer@4807e000 { 116 timer6: timer@4807e000 {
100 compatible = "ti,omap2-timer"; 117 compatible = "ti,omap2420-timer";
101 reg = <0x4807e000 0x400>; 118 reg = <0x4807e000 0x400>;
102 interrupts = <42>; 119 interrupts = <42>;
103 ti,hwmods = "timer6"; 120 ti,hwmods = "timer6";
@@ -105,7 +122,7 @@
105 }; 122 };
106 123
107 timer7: timer@48080000 { 124 timer7: timer@48080000 {
108 compatible = "ti,omap2-timer"; 125 compatible = "ti,omap2420-timer";
109 reg = <0x48080000 0x400>; 126 reg = <0x48080000 0x400>;
110 interrupts = <43>; 127 interrupts = <43>;
111 ti,hwmods = "timer7"; 128 ti,hwmods = "timer7";
@@ -113,7 +130,7 @@
113 }; 130 };
114 131
115 timer8: timer@48082000 { 132 timer8: timer@48082000 {
116 compatible = "ti,omap2-timer"; 133 compatible = "ti,omap2420-timer";
117 reg = <0x48082000 0x400>; 134 reg = <0x48082000 0x400>;
118 interrupts = <44>; 135 interrupts = <44>;
119 ti,hwmods = "timer8"; 136 ti,hwmods = "timer8";
@@ -121,7 +138,7 @@
121 }; 138 };
122 139
123 timer9: timer@48084000 { 140 timer9: timer@48084000 {
124 compatible = "ti,omap2-timer"; 141 compatible = "ti,omap2420-timer";
125 reg = <0x48084000 0x400>; 142 reg = <0x48084000 0x400>;
126 interrupts = <45>; 143 interrupts = <45>;
127 ti,hwmods = "timer9"; 144 ti,hwmods = "timer9";
@@ -129,7 +146,7 @@
129 }; 146 };
130 147
131 timer10: timer@48086000 { 148 timer10: timer@48086000 {
132 compatible = "ti,omap2-timer"; 149 compatible = "ti,omap2420-timer";
133 reg = <0x48086000 0x400>; 150 reg = <0x48086000 0x400>;
134 interrupts = <46>; 151 interrupts = <46>;
135 ti,hwmods = "timer10"; 152 ti,hwmods = "timer10";
@@ -137,7 +154,7 @@
137 }; 154 };
138 155
139 timer11: timer@48088000 { 156 timer11: timer@48088000 {
140 compatible = "ti,omap2-timer"; 157 compatible = "ti,omap2420-timer";
141 reg = <0x48088000 0x400>; 158 reg = <0x48088000 0x400>;
142 interrupts = <47>; 159 interrupts = <47>;
143 ti,hwmods = "timer11"; 160 ti,hwmods = "timer11";
@@ -145,7 +162,7 @@
145 }; 162 };
146 163
147 timer12: timer@4808a000 { 164 timer12: timer@4808a000 {
148 compatible = "ti,omap2-timer"; 165 compatible = "ti,omap2420-timer";
149 reg = <0x4808a000 0x400>; 166 reg = <0x4808a000 0x400>;
150 interrupts = <48>; 167 interrupts = <48>;
151 ti,hwmods = "timer12"; 168 ti,hwmods = "timer12";
diff --git a/arch/arm/boot/dts/omap2420-h4.dts b/arch/arm/boot/dts/omap2420-h4.dts
index 9b0d07746cba..68282ee13e26 100644
--- a/arch/arm/boot/dts/omap2420-h4.dts
+++ b/arch/arm/boot/dts/omap2420-h4.dts
@@ -18,3 +18,49 @@
18 reg = <0x80000000 0x4000000>; /* 64 MB */ 18 reg = <0x80000000 0x4000000>; /* 64 MB */
19 }; 19 };
20}; 20};
21
22&gpmc {
23 ranges = <0 0 0x08000000 0x04000000>;
24
25 nor@0,0 {
26 compatible = "cfi-flash";
27 linux,mtd-name= "intel,ge28f256l18b85";
28 #address-cells = <1>;
29 #size-cells = <1>;
30 reg = <0 0 0x04000000>;
31 bank-width = <2>;
32
33 gpmc,mux-add-data = <2>;
34 gpmc,cs-on-ns = <10>;
35 gpmc,cs-rd-off-ns = <160>;
36 gpmc,cs-wr-off-ns = <160>;
37 gpmc,adv-on-ns = <20>;
38 gpmc,adv-rd-off-ns = <50>;
39 gpmc,adv-wr-off-ns = <50>;
40 gpmc,oe-on-ns = <60>;
41 gpmc,oe-off-ns = <120>;
42 gpmc,we-on-ns = <60>;
43 gpmc,we-off-ns = <120>;
44 gpmc,rd-cycle-ns = <170>;
45 gpmc,wr-cycle-ns = <170>;
46 gpmc,access-ns = <150>;
47 gpmc,page-burst-access-ns = <10>;
48
49 partition@0 {
50 label = "bootloader";
51 reg = <0 0x20000>;
52 };
53 partition@0x20000 {
54 label = "params";
55 reg = <0x20000 0x20000>;
56 };
57 partition@0x40000 {
58 label = "kernel";
59 reg = <0x40000 0x200000>;
60 };
61 partition@0x240000 {
62 label = "file-system";
63 reg = <0x240000 0x3dc0000>;
64 };
65 };
66};
diff --git a/arch/arm/boot/dts/omap2420.dtsi b/arch/arm/boot/dts/omap2420.dtsi
index af6560908905..da5b285b73be 100644
--- a/arch/arm/boot/dts/omap2420.dtsi
+++ b/arch/arm/boot/dts/omap2420.dtsi
@@ -29,6 +29,65 @@
29 pinctrl-single,function-mask = <0x3f>; 29 pinctrl-single,function-mask = <0x3f>;
30 }; 30 };
31 31
32 gpio1: gpio@48018000 {
33 compatible = "ti,omap2-gpio";
34 reg = <0x48018000 0x200>;
35 interrupts = <29>;
36 ti,hwmods = "gpio1";
37 ti,gpio-always-on;
38 #gpio-cells = <2>;
39 gpio-controller;
40 #interrupt-cells = <2>;
41 interrupt-controller;
42 };
43
44 gpio2: gpio@4801a000 {
45 compatible = "ti,omap2-gpio";
46 reg = <0x4801a000 0x200>;
47 interrupts = <30>;
48 ti,hwmods = "gpio2";
49 ti,gpio-always-on;
50 #gpio-cells = <2>;
51 gpio-controller;
52 #interrupt-cells = <2>;
53 interrupt-controller;
54 };
55
56 gpio3: gpio@4801c000 {
57 compatible = "ti,omap2-gpio";
58 reg = <0x4801c000 0x200>;
59 interrupts = <31>;
60 ti,hwmods = "gpio3";
61 ti,gpio-always-on;
62 #gpio-cells = <2>;
63 gpio-controller;
64 #interrupt-cells = <2>;
65 interrupt-controller;
66 };
67
68 gpio4: gpio@4801e000 {
69 compatible = "ti,omap2-gpio";
70 reg = <0x4801e000 0x200>;
71 interrupts = <32>;
72 ti,hwmods = "gpio4";
73 ti,gpio-always-on;
74 #gpio-cells = <2>;
75 gpio-controller;
76 #interrupt-cells = <2>;
77 interrupt-controller;
78 };
79
80 gpmc: gpmc@6800a000 {
81 compatible = "ti,omap2420-gpmc";
82 reg = <0x6800a000 0x1000>;
83 #address-cells = <2>;
84 #size-cells = <1>;
85 interrupts = <20>;
86 gpmc,num-cs = <8>;
87 gpmc,num-waitpins = <4>;
88 ti,hwmods = "gpmc";
89 };
90
32 mcbsp1: mcbsp@48074000 { 91 mcbsp1: mcbsp@48074000 {
33 compatible = "ti,omap2420-mcbsp"; 92 compatible = "ti,omap2420-mcbsp";
34 reg = <0x48074000 0xff>; 93 reg = <0x48074000 0xff>;
@@ -37,6 +96,9 @@
37 <60>; /* RX interrupt */ 96 <60>; /* RX interrupt */
38 interrupt-names = "tx", "rx"; 97 interrupt-names = "tx", "rx";
39 ti,hwmods = "mcbsp1"; 98 ti,hwmods = "mcbsp1";
99 dmas = <&sdma 31>,
100 <&sdma 32>;
101 dma-names = "tx", "rx";
40 }; 102 };
41 103
42 mcbsp2: mcbsp@48076000 { 104 mcbsp2: mcbsp@48076000 {
@@ -47,10 +109,13 @@
47 <63>; /* RX interrupt */ 109 <63>; /* RX interrupt */
48 interrupt-names = "tx", "rx"; 110 interrupt-names = "tx", "rx";
49 ti,hwmods = "mcbsp2"; 111 ti,hwmods = "mcbsp2";
112 dmas = <&sdma 33>,
113 <&sdma 34>;
114 dma-names = "tx", "rx";
50 }; 115 };
51 116
52 timer1: timer@48028000 { 117 timer1: timer@48028000 {
53 compatible = "ti,omap2-timer"; 118 compatible = "ti,omap2420-timer";
54 reg = <0x48028000 0x400>; 119 reg = <0x48028000 0x400>;
55 interrupts = <37>; 120 interrupts = <37>;
56 ti,hwmods = "timer1"; 121 ti,hwmods = "timer1";
diff --git a/arch/arm/boot/dts/omap2430.dtsi b/arch/arm/boot/dts/omap2430.dtsi
index c3924457c9b6..054bc4439568 100644
--- a/arch/arm/boot/dts/omap2430.dtsi
+++ b/arch/arm/boot/dts/omap2430.dtsi
@@ -29,6 +29,76 @@
29 pinctrl-single,function-mask = <0x3f>; 29 pinctrl-single,function-mask = <0x3f>;
30 }; 30 };
31 31
32 gpio1: gpio@4900c000 {
33 compatible = "ti,omap2-gpio";
34 reg = <0x4900c000 0x200>;
35 interrupts = <29>;
36 ti,hwmods = "gpio1";
37 ti,gpio-always-on;
38 #gpio-cells = <2>;
39 gpio-controller;
40 #interrupt-cells = <2>;
41 interrupt-controller;
42 };
43
44 gpio2: gpio@4900e000 {
45 compatible = "ti,omap2-gpio";
46 reg = <0x4900e000 0x200>;
47 interrupts = <30>;
48 ti,hwmods = "gpio2";
49 ti,gpio-always-on;
50 #gpio-cells = <2>;
51 gpio-controller;
52 #interrupt-cells = <2>;
53 interrupt-controller;
54 };
55
56 gpio3: gpio@49010000 {
57 compatible = "ti,omap2-gpio";
58 reg = <0x49010000 0x200>;
59 interrupts = <31>;
60 ti,hwmods = "gpio3";
61 ti,gpio-always-on;
62 #gpio-cells = <2>;
63 gpio-controller;
64 #interrupt-cells = <2>;
65 interrupt-controller;
66 };
67
68 gpio4: gpio@49012000 {
69 compatible = "ti,omap2-gpio";
70 reg = <0x49012000 0x200>;
71 interrupts = <32>;
72 ti,hwmods = "gpio4";
73 ti,gpio-always-on;
74 #gpio-cells = <2>;
75 gpio-controller;
76 #interrupt-cells = <2>;
77 interrupt-controller;
78 };
79
80 gpio5: gpio@480b6000 {
81 compatible = "ti,omap2-gpio";
82 reg = <0x480b6000 0x200>;
83 interrupts = <33>;
84 ti,hwmods = "gpio5";
85 #gpio-cells = <2>;
86 gpio-controller;
87 #interrupt-cells = <2>;
88 interrupt-controller;
89 };
90
91 gpmc: gpmc@6e000000 {
92 compatible = "ti,omap2430-gpmc";
93 reg = <0x6e000000 0x1000>;
94 #address-cells = <2>;
95 #size-cells = <1>;
96 interrupts = <20>;
97 gpmc,num-cs = <8>;
98 gpmc,num-waitpins = <4>;
99 ti,hwmods = "gpmc";
100 };
101
32 mcbsp1: mcbsp@48074000 { 102 mcbsp1: mcbsp@48074000 {
33 compatible = "ti,omap2430-mcbsp"; 103 compatible = "ti,omap2430-mcbsp";
34 reg = <0x48074000 0xff>; 104 reg = <0x48074000 0xff>;
@@ -40,6 +110,9 @@
40 interrupt-names = "common", "tx", "rx", "rx_overflow"; 110 interrupt-names = "common", "tx", "rx", "rx_overflow";
41 ti,buffer-size = <128>; 111 ti,buffer-size = <128>;
42 ti,hwmods = "mcbsp1"; 112 ti,hwmods = "mcbsp1";
113 dmas = <&sdma 31>,
114 <&sdma 32>;
115 dma-names = "tx", "rx";
43 }; 116 };
44 117
45 mcbsp2: mcbsp@48076000 { 118 mcbsp2: mcbsp@48076000 {
@@ -52,6 +125,9 @@
52 interrupt-names = "common", "tx", "rx"; 125 interrupt-names = "common", "tx", "rx";
53 ti,buffer-size = <128>; 126 ti,buffer-size = <128>;
54 ti,hwmods = "mcbsp2"; 127 ti,hwmods = "mcbsp2";
128 dmas = <&sdma 33>,
129 <&sdma 34>;
130 dma-names = "tx", "rx";
55 }; 131 };
56 132
57 mcbsp3: mcbsp@4808c000 { 133 mcbsp3: mcbsp@4808c000 {
@@ -64,6 +140,9 @@
64 interrupt-names = "common", "tx", "rx"; 140 interrupt-names = "common", "tx", "rx";
65 ti,buffer-size = <128>; 141 ti,buffer-size = <128>;
66 ti,hwmods = "mcbsp3"; 142 ti,hwmods = "mcbsp3";
143 dmas = <&sdma 17>,
144 <&sdma 18>;
145 dma-names = "tx", "rx";
67 }; 146 };
68 147
69 mcbsp4: mcbsp@4808e000 { 148 mcbsp4: mcbsp@4808e000 {
@@ -76,6 +155,9 @@
76 interrupt-names = "common", "tx", "rx"; 155 interrupt-names = "common", "tx", "rx";
77 ti,buffer-size = <128>; 156 ti,buffer-size = <128>;
78 ti,hwmods = "mcbsp4"; 157 ti,hwmods = "mcbsp4";
158 dmas = <&sdma 19>,
159 <&sdma 20>;
160 dma-names = "tx", "rx";
79 }; 161 };
80 162
81 mcbsp5: mcbsp@48096000 { 163 mcbsp5: mcbsp@48096000 {
@@ -88,10 +170,13 @@
88 interrupt-names = "common", "tx", "rx"; 170 interrupt-names = "common", "tx", "rx";
89 ti,buffer-size = <128>; 171 ti,buffer-size = <128>;
90 ti,hwmods = "mcbsp5"; 172 ti,hwmods = "mcbsp5";
173 dmas = <&sdma 21>,
174 <&sdma 22>;
175 dma-names = "tx", "rx";
91 }; 176 };
92 177
93 timer1: timer@49018000 { 178 timer1: timer@49018000 {
94 compatible = "ti,omap2-timer"; 179 compatible = "ti,omap2420-timer";
95 reg = <0x49018000 0x400>; 180 reg = <0x49018000 0x400>;
96 interrupts = <37>; 181 interrupts = <37>;
97 ti,hwmods = "timer1"; 182 ti,hwmods = "timer1";
diff --git a/arch/arm/boot/dts/omap3-beagle-xm.dts b/arch/arm/boot/dts/omap3-beagle-xm.dts
index 3705a81c1fc2..5a31964ae339 100644
--- a/arch/arm/boot/dts/omap3-beagle-xm.dts
+++ b/arch/arm/boot/dts/omap3-beagle-xm.dts
@@ -13,6 +13,12 @@
13 model = "TI OMAP3 BeagleBoard xM"; 13 model = "TI OMAP3 BeagleBoard xM";
14 compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3"; 14 compatible = "ti,omap3-beagle-xm, ti,omap3-beagle", "ti,omap3";
15 15
16 cpus {
17 cpu@0 {
18 cpu0-supply = <&vcc>;
19 };
20 };
21
16 memory { 22 memory {
17 device_type = "memory"; 23 device_type = "memory";
18 reg = <0x80000000 0x20000000>; /* 512 MB */ 24 reg = <0x80000000 0x20000000>; /* 512 MB */
@@ -20,10 +26,6 @@
20 26
21 leds { 27 leds {
22 compatible = "gpio-leds"; 28 compatible = "gpio-leds";
23 pmu_stat {
24 label = "beagleboard::pmu_stat";
25 gpios = <&twl_gpio 19 0>; /* LEDB */
26 };
27 29
28 heartbeat { 30 heartbeat {
29 label = "beagleboard::usr0"; 31 label = "beagleboard::usr0";
@@ -38,6 +40,16 @@
38 }; 40 };
39 }; 41 };
40 42
43 pwmleds {
44 compatible = "pwm-leds";
45
46 pmu_stat {
47 label = "beagleboard::pmu_stat";
48 pwms = <&twl_pwmled 1 7812500>;
49 max-brightness = <127>;
50 };
51 };
52
41 sound { 53 sound {
42 compatible = "ti,omap-twl4030"; 54 compatible = "ti,omap-twl4030";
43 ti,model = "omap3beagle"; 55 ti,model = "omap3beagle";
@@ -107,3 +119,9 @@
107 */ 119 */
108 ti,pulldowns = <0x03a1c4>; 120 ti,pulldowns = <0x03a1c4>;
109}; 121};
122
123&usb_otg_hs {
124 interface-type = <0>;
125 mode = <3>;
126 power = <50>;
127};
diff --git a/arch/arm/boot/dts/omap3-beagle.dts b/arch/arm/boot/dts/omap3-beagle.dts
index 02d23f15fd86..6eec69997607 100644
--- a/arch/arm/boot/dts/omap3-beagle.dts
+++ b/arch/arm/boot/dts/omap3-beagle.dts
@@ -7,12 +7,18 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TI OMAP3 BeagleBoard"; 13 model = "TI OMAP3 BeagleBoard";
14 compatible = "ti,omap3-beagle", "ti,omap3"; 14 compatible = "ti,omap3-beagle", "ti,omap3";
15 15
16 cpus {
17 cpu@0 {
18 cpu0-supply = <&vcc>;
19 };
20 };
21
16 memory { 22 memory {
17 device_type = "memory"; 23 device_type = "memory";
18 reg = <0x80000000 0x10000000>; /* 256 MB */ 24 reg = <0x80000000 0x10000000>; /* 256 MB */
diff --git a/arch/arm/boot/dts/omap3-devkit8000.dts b/arch/arm/boot/dts/omap3-devkit8000.dts
new file mode 100644
index 000000000000..8a5cdcc6debd
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-devkit8000.dts
@@ -0,0 +1,169 @@
1/*
2 * Author: Anil Kumar <anilk4.v@gmail.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/dts-v1/;
9
10/include/ "omap34xx.dtsi"
11/ {
12 model = "TimLL OMAP3 Devkit8000";
13 compatible = "timll,omap3-devkit8000", "ti,omap3";
14
15 memory {
16 device_type = "memory";
17 reg = <0x80000000 0x10000000>; /* 256 MB */
18 };
19
20 leds {
21 compatible = "gpio-leds";
22
23 heartbeat {
24 label = "devkit8000::led1";
25 gpios = <&gpio6 26 0>; /* 186 -> LED1 */
26 default-state = "on";
27 linux,default-trigger = "heartbeat";
28 };
29
30 mmc {
31 label = "devkit8000::led2";
32 gpios = <&gpio6 3 0>; /* 163 -> LED2 */
33 default-state = "on";
34 linux,default-trigger = "none";
35 };
36
37 usr {
38 label = "devkit8000::led3";
39 gpios = <&gpio6 4 0>; /* 164 -> LED3 */
40 default-state = "on";
41 linux,default-trigger = "usr";
42 };
43
44 };
45
46 sound {
47 compatible = "ti,omap-twl4030";
48 ti,model = "devkit8000";
49
50 ti,mcbsp = <&mcbsp2>;
51 ti,codec = <&twl_audio>;
52 ti,audio-routing =
53 "Ext Spk", "PREDRIVEL",
54 "Ext Spk", "PREDRIVER",
55 "MAINMIC", "Main Mic",
56 "Main Mic", "Mic Bias 1";
57 };
58};
59
60&i2c1 {
61 clock-frequency = <2600000>;
62
63 twl: twl@48 {
64 reg = <0x48>;
65 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
66
67 twl_audio: audio {
68 compatible = "ti,twl4030-audio";
69 codec {
70 };
71 };
72 };
73};
74
75&i2c2 {
76 status = "disabled";
77};
78
79&i2c3 {
80 status = "disabled";
81};
82
83/include/ "twl4030.dtsi"
84
85&mmc1 {
86 vmmc-supply = <&vmmc1>;
87 vmmc_aux-supply = <&vsim>;
88 bus-width = <8>;
89};
90
91&mmc2 {
92 status = "disabled";
93};
94
95&mmc3 {
96 status = "disabled";
97};
98
99&wdt2 {
100 status = "disabled";
101};
102
103&mcbsp1 {
104 status = "disabled";
105};
106
107&mcbsp3 {
108 status = "disabled";
109};
110
111&mcbsp4 {
112 status = "disabled";
113};
114
115&mcbsp5 {
116 status = "disabled";
117};
118
119&gpmc {
120 ranges = <0 0 0x30000000 0x04>; /* CS0: NAND */
121
122 nand@0,0 {
123 reg = <0 0 0>; /* CS0, offset 0 */
124 nand-bus-width = <16>;
125
126 gpmc,sync-clk = <0>;
127 gpmc,cs-on = <0>;
128 gpmc,cs-rd-off = <44>;
129 gpmc,cs-wr-off = <44>;
130 gpmc,adv-on = <6>;
131 gpmc,adv-rd-off = <34>;
132 gpmc,adv-wr-off = <44>;
133 gpmc,we-off = <40>;
134 gpmc,oe-off = <54>;
135 gpmc,access = <64>;
136 gpmc,rd-cycle = <82>;
137 gpmc,wr-cycle = <82>;
138 gpmc,wr-access = <40>;
139 gpmc,wr-data-mux-bus = <0>;
140
141 #address-cells = <1>;
142 #size-cells = <1>;
143
144 x-loader@0 {
145 label = "X-Loader";
146 reg = <0 0x80000>;
147 };
148
149 bootloaders@80000 {
150 label = "U-Boot";
151 reg = <0x80000 0x1e0000>;
152 };
153
154 bootloaders_env@260000 {
155 label = "U-Boot Env";
156 reg = <0x260000 0x20000>;
157 };
158
159 kernel@280000 {
160 label = "Kernel";
161 reg = <0x280000 0x400000>;
162 };
163
164 filesystem@680000 {
165 label = "File System";
166 reg = <0x680000 0xf980000>;
167 };
168 };
169};
diff --git a/arch/arm/boot/dts/omap3-evm.dts b/arch/arm/boot/dts/omap3-evm.dts
index e8ba1c247a39..05f51e10ddd6 100644
--- a/arch/arm/boot/dts/omap3-evm.dts
+++ b/arch/arm/boot/dts/omap3-evm.dts
@@ -7,12 +7,18 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap3.dtsi" 10/include/ "omap34xx.dtsi"
11 11
12/ { 12/ {
13 model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)"; 13 model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
14 compatible = "ti,omap3-evm", "ti,omap3"; 14 compatible = "ti,omap3-evm", "ti,omap3";
15 15
16 cpus {
17 cpu@0 {
18 cpu0-supply = <&vcc>;
19 };
20 };
21
16 memory { 22 memory {
17 device_type = "memory"; 23 device_type = "memory";
18 reg = <0x80000000 0x10000000>; /* 256 MB */ 24 reg = <0x80000000 0x10000000>; /* 256 MB */
@@ -59,3 +65,9 @@
59&twl_gpio { 65&twl_gpio {
60 ti,use-leds; 66 ti,use-leds;
61}; 67};
68
69&usb_otg_hs {
70 interface-type = <0>;
71 mode = <3>;
72 power = <50>;
73};
diff --git a/arch/arm/boot/dts/omap3-igep.dtsi b/arch/arm/boot/dts/omap3-igep.dtsi
new file mode 100644
index 000000000000..f8fe3b748c3e
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-igep.dtsi
@@ -0,0 +1,122 @@
1/*
2 * Device Tree Source for IGEP Technology devices
3 *
4 * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
5 * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11/dts-v1/;
12
13/include/ "omap34xx.dtsi"
14
15/ {
16 memory {
17 device_type = "memory";
18 reg = <0x80000000 0x20000000>; /* 512 MB */
19 };
20
21 sound {
22 compatible = "ti,omap-twl4030";
23 ti,model = "igep2";
24 ti,mcbsp = <&mcbsp2>;
25 ti,codec = <&twl_audio>;
26 };
27};
28
29&omap3_pmx_core {
30 uart1_pins: pinmux_uart1_pins {
31 pinctrl-single,pins = <
32 0x152 0x100 /* uart1_rx.uart1_rx INPUT | MODE0 */
33 0x14c 0 /* uart1_tx.uart1_tx OUTPUT | MODE0 */
34 >;
35 };
36
37 uart2_pins: pinmux_uart2_pins {
38 pinctrl-single,pins = <
39 0x14a 0x100 /* uart2_rx.uart2_rx INPUT | MODE0 */
40 0x148 0 /* uart2_tx.uart2_tx OUTPUT | MODE0 */
41 >;
42 };
43
44 uart3_pins: pinmux_uart3_pins {
45 pinctrl-single,pins = <
46 0x16e 0x100 /* uart3_rx.uart3_rx INPUT | MODE0 */
47 0x170 0 /* uart3_tx.uart3_tx OUTPUT | MODE0 */
48 >;
49 };
50
51 mmc1_pins: pinmux_mmc1_pins {
52 pinctrl-single,pins = <
53 0x114 0x0118 /* sdmmc1_clk.sdmmc1_clk INPUT PULLUP | MODE 0 */
54 0x116 0x0118 /* sdmmc1_cmd.sdmmc1_cmd INPUT PULLUP | MODE 0 */
55 0x118 0x0118 /* sdmmc1_dat0.sdmmc1_dat0 INPUT PULLUP | MODE 0 */
56 0x11a 0x0118 /* sdmmc1_dat1.sdmmc1_dat1 INPUT PULLUP | MODE 0 */
57 0x11c 0x0118 /* sdmmc1_dat2.sdmmc1_dat2 INPUT PULLUP | MODE 0 */
58 0x11e 0x0118 /* sdmmc1_dat3.sdmmc1_dat3 INPUT PULLUP | MODE 0 */
59 0x120 0x0100 /* sdmmc1_dat4.sdmmc1_dat4 INPUT | MODE 0 */
60 0x122 0x0100 /* sdmmc1_dat5.sdmmc1_dat5 INPUT | MODE 0 */
61 0x124 0x0100 /* sdmmc1_dat6.sdmmc1_dat6 INPUT | MODE 0 */
62 0x126 0x0100 /* sdmmc1_dat7.sdmmc1_dat7 INPUT | MODE 0 */
63 >;
64 };
65};
66
67&i2c1 {
68 clock-frequency = <2600000>;
69
70 twl: twl@48 {
71 reg = <0x48>;
72 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
73 interrupt-parent = <&intc>;
74
75 twl_audio: audio {
76 compatible = "ti,twl4030-audio";
77 codec {
78 };
79 };
80 };
81};
82
83/include/ "twl4030.dtsi"
84
85&i2c2 {
86 clock-frequency = <400000>;
87};
88
89&mmc1 {
90 pinctrl-names = "default";
91 pinctrl-0 = <&mmc1_pins>;
92 vmmc-supply = <&vmmc1>;
93 vmmc_aux-supply = <&vsim>;
94 bus-width = <8>;
95};
96
97&mmc2 {
98 status = "disabled";
99};
100
101&mmc3 {
102 status = "disabled";
103};
104
105&uart1 {
106 pinctrl-names = "default";
107 pinctrl-0 = <&uart1_pins>;
108};
109
110&uart2 {
111 pinctrl-names = "default";
112 pinctrl-0 = <&uart2_pins>;
113};
114
115&uart3 {
116 pinctrl-names = "default";
117 pinctrl-0 = <&uart3_pins>;
118};
119
120&twl_gpio {
121 ti,use-leds;
122};
diff --git a/arch/arm/boot/dts/omap3-igep0020.dts b/arch/arm/boot/dts/omap3-igep0020.dts
new file mode 100644
index 000000000000..e2b98490cc9a
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-igep0020.dts
@@ -0,0 +1,56 @@
1/*
2 * Device Tree Source for IGEPv2 board
3 *
4 * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
5 * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/include/ "omap3-igep.dtsi"
13
14/ {
15 model = "IGEPv2";
16 compatible = "isee,omap3-igep0020", "ti,omap3";
17
18 leds {
19 compatible = "gpio-leds";
20 boot {
21 label = "omap3:green:boot";
22 gpios = <&gpio1 26 0>;
23 default-state = "on";
24 };
25
26 user0 {
27 label = "omap3:red:user0";
28 gpios = <&gpio1 27 0>;
29 default-state = "off";
30 };
31
32 user1 {
33 label = "omap3:red:user1";
34 gpios = <&gpio1 28 0>;
35 default-state = "off";
36 };
37
38 user2 {
39 label = "omap3:green:user1";
40 gpios = <&twl_gpio 19 1>;
41 };
42 };
43};
44
45&i2c3 {
46 clock-frequency = <100000>;
47
48 /*
49 * Display monitor features are burnt in the EEPROM
50 * as EDID data.
51 */
52 eeprom@50 {
53 compatible = "ti,eeprom";
54 reg = <0x50>;
55 };
56};
diff --git a/arch/arm/boot/dts/omap3-igep0030.dts b/arch/arm/boot/dts/omap3-igep0030.dts
new file mode 100644
index 000000000000..9dc48d262ffb
--- /dev/null
+++ b/arch/arm/boot/dts/omap3-igep0030.dts
@@ -0,0 +1,44 @@
1/*
2 * Device Tree Source for IGEP COM Module
3 *
4 * Copyright (C) 2012 Javier Martinez Canillas <javier@collabora.co.uk>
5 * Copyright (C) 2012 Enric Balletbo i Serra <eballetbo@gmail.com>
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/include/ "omap3-igep.dtsi"
13
14/ {
15 model = "IGEP COM Module";
16 compatible = "isee,omap3-igep0030", "ti,omap3";
17
18 leds {
19 compatible = "gpio-leds";
20 boot {
21 label = "omap3:green:boot";
22 gpios = <&twl_gpio 13 1>;
23 default-state = "on";
24 };
25
26 user0 {
27 label = "omap3:red:user0";
28 gpios = <&twl_gpio 18 1>; /* LEDA */
29 default-state = "off";
30 };
31
32 user1 {
33 label = "omap3:green:user1";
34 gpios = <&twl_gpio 19 1>; /* LEDB */
35 default-state = "off";
36 };
37
38 user2 {
39 label = "omap3:red:user1";
40 gpios = <&gpio1 16 1>;
41 default-state = "off";
42 };
43 };
44};
diff --git a/arch/arm/boot/dts/omap3-overo.dtsi b/arch/arm/boot/dts/omap3-overo.dtsi
index 89808ce01673..d4a7280d18b7 100644
--- a/arch/arm/boot/dts/omap3-overo.dtsi
+++ b/arch/arm/boot/dts/omap3-overo.dtsi
@@ -11,17 +11,26 @@
11 */ 11 */
12/dts-v1/; 12/dts-v1/;
13 13
14/include/ "omap3.dtsi" 14/include/ "omap34xx.dtsi"
15 15
16/ { 16/ {
17 leds { 17 pwmleds {
18 compatible = "gpio-leds"; 18 compatible = "pwm-leds";
19
19 overo { 20 overo {
20 label = "overo:blue:COM"; 21 label = "overo:blue:COM";
21 gpios = <&twl_gpio 19 0>; 22 pwms = <&twl_pwmled 1 7812500>;
22 linux,default-trigger = "mmc0"; 23 max-brightness = <127>;
23 }; 24 };
24 }; 25 };
26
27 sound {
28 compatible = "ti,omap-twl4030";
29 ti,model = "overo";
30
31 ti,mcbsp = <&mcbsp2>;
32 ti,codec = <&twl_audio>;
33 };
25}; 34};
26 35
27&i2c1 { 36&i2c1 {
@@ -31,6 +40,12 @@
31 reg = <0x48>; 40 reg = <0x48>;
32 interrupts = <7>; /* SYS_NIRQ cascaded to intc */ 41 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
33 interrupt-parent = <&intc>; 42 interrupt-parent = <&intc>;
43
44 twl_audio: audio {
45 compatible = "ti,twl4030-audio";
46 codec {
47 };
48 };
34 }; 49 };
35}; 50};
36 51
@@ -55,3 +70,9 @@
55&twl_gpio { 70&twl_gpio {
56 ti,use-leds; 71 ti,use-leds;
57}; 72};
73
74&usb_otg_hs {
75 interface-type = <0>;
76 mode = <3>;
77 power = <50>;
78};
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
index a14f74bbce7c..4ad03d9dbf0c 100644
--- a/arch/arm/boot/dts/omap3.dtsi
+++ b/arch/arm/boot/dts/omap3.dtsi
@@ -26,8 +26,14 @@
26 }; 26 };
27 }; 27 };
28 28
29 pmu {
30 compatible = "arm,cortex-a8-pmu";
31 interrupts = <3>;
32 ti,hwmods = "debugss";
33 };
34
29 /* 35 /*
30 * The soc node represents the soc top level view. It is uses for IPs 36 * The soc node represents the soc top level view. It is used for IPs
31 * that are not memory mapped in the MPU view or for the MPU itself. 37 * that are not memory mapped in the MPU view or for the MPU itself.
32 */ 38 */
33 soc { 39 soc {
@@ -75,76 +81,101 @@
75 reg = <0x48200000 0x1000>; 81 reg = <0x48200000 0x1000>;
76 }; 82 };
77 83
84 sdma: dma-controller@48056000 {
85 compatible = "ti,omap3630-sdma", "ti,omap3430-sdma";
86 reg = <0x48056000 0x1000>;
87 interrupts = <12>,
88 <13>,
89 <14>,
90 <15>;
91 #dma-cells = <1>;
92 #dma-channels = <32>;
93 #dma-requests = <96>;
94 };
95
78 omap3_pmx_core: pinmux@48002030 { 96 omap3_pmx_core: pinmux@48002030 {
79 compatible = "ti,omap3-padconf", "pinctrl-single"; 97 compatible = "ti,omap3-padconf", "pinctrl-single";
80 reg = <0x48002030 0x05cc>; 98 reg = <0x48002030 0x05cc>;
81 #address-cells = <1>; 99 #address-cells = <1>;
82 #size-cells = <0>; 100 #size-cells = <0>;
83 pinctrl-single,register-width = <16>; 101 pinctrl-single,register-width = <16>;
84 pinctrl-single,function-mask = <0x7fff>; 102 pinctrl-single,function-mask = <0x7f1f>;
85 }; 103 };
86 104
87 omap3_pmx_wkup: pinmux@0x48002a58 { 105 omap3_pmx_wkup: pinmux@0x48002a00 {
88 compatible = "ti,omap3-padconf", "pinctrl-single"; 106 compatible = "ti,omap3-padconf", "pinctrl-single";
89 reg = <0x48002a58 0x5c>; 107 reg = <0x48002a00 0x5c>;
90 #address-cells = <1>; 108 #address-cells = <1>;
91 #size-cells = <0>; 109 #size-cells = <0>;
92 pinctrl-single,register-width = <16>; 110 pinctrl-single,register-width = <16>;
93 pinctrl-single,function-mask = <0x7fff>; 111 pinctrl-single,function-mask = <0x7f1f>;
94 }; 112 };
95 113
96 gpio1: gpio@48310000 { 114 gpio1: gpio@48310000 {
97 compatible = "ti,omap3-gpio"; 115 compatible = "ti,omap3-gpio";
116 reg = <0x48310000 0x200>;
117 interrupts = <29>;
98 ti,hwmods = "gpio1"; 118 ti,hwmods = "gpio1";
119 ti,gpio-always-on;
99 gpio-controller; 120 gpio-controller;
100 #gpio-cells = <2>; 121 #gpio-cells = <2>;
101 interrupt-controller; 122 interrupt-controller;
102 #interrupt-cells = <1>; 123 #interrupt-cells = <2>;
103 }; 124 };
104 125
105 gpio2: gpio@49050000 { 126 gpio2: gpio@49050000 {
106 compatible = "ti,omap3-gpio"; 127 compatible = "ti,omap3-gpio";
128 reg = <0x49050000 0x200>;
129 interrupts = <30>;
107 ti,hwmods = "gpio2"; 130 ti,hwmods = "gpio2";
108 gpio-controller; 131 gpio-controller;
109 #gpio-cells = <2>; 132 #gpio-cells = <2>;
110 interrupt-controller; 133 interrupt-controller;
111 #interrupt-cells = <1>; 134 #interrupt-cells = <2>;
112 }; 135 };
113 136
114 gpio3: gpio@49052000 { 137 gpio3: gpio@49052000 {
115 compatible = "ti,omap3-gpio"; 138 compatible = "ti,omap3-gpio";
139 reg = <0x49052000 0x200>;
140 interrupts = <31>;
116 ti,hwmods = "gpio3"; 141 ti,hwmods = "gpio3";
117 gpio-controller; 142 gpio-controller;
118 #gpio-cells = <2>; 143 #gpio-cells = <2>;
119 interrupt-controller; 144 interrupt-controller;
120 #interrupt-cells = <1>; 145 #interrupt-cells = <2>;
121 }; 146 };
122 147
123 gpio4: gpio@49054000 { 148 gpio4: gpio@49054000 {
124 compatible = "ti,omap3-gpio"; 149 compatible = "ti,omap3-gpio";
150 reg = <0x49054000 0x200>;
151 interrupts = <32>;
125 ti,hwmods = "gpio4"; 152 ti,hwmods = "gpio4";
126 gpio-controller; 153 gpio-controller;
127 #gpio-cells = <2>; 154 #gpio-cells = <2>;
128 interrupt-controller; 155 interrupt-controller;
129 #interrupt-cells = <1>; 156 #interrupt-cells = <2>;
130 }; 157 };
131 158
132 gpio5: gpio@49056000 { 159 gpio5: gpio@49056000 {
133 compatible = "ti,omap3-gpio"; 160 compatible = "ti,omap3-gpio";
161 reg = <0x49056000 0x200>;
162 interrupts = <33>;
134 ti,hwmods = "gpio5"; 163 ti,hwmods = "gpio5";
135 gpio-controller; 164 gpio-controller;
136 #gpio-cells = <2>; 165 #gpio-cells = <2>;
137 interrupt-controller; 166 interrupt-controller;
138 #interrupt-cells = <1>; 167 #interrupt-cells = <2>;
139 }; 168 };
140 169
141 gpio6: gpio@49058000 { 170 gpio6: gpio@49058000 {
142 compatible = "ti,omap3-gpio"; 171 compatible = "ti,omap3-gpio";
172 reg = <0x49058000 0x200>;
173 interrupts = <34>;
143 ti,hwmods = "gpio6"; 174 ti,hwmods = "gpio6";
144 gpio-controller; 175 gpio-controller;
145 #gpio-cells = <2>; 176 #gpio-cells = <2>;
146 interrupt-controller; 177 interrupt-controller;
147 #interrupt-cells = <1>; 178 #interrupt-cells = <2>;
148 }; 179 };
149 180
150 uart1: serial@4806a000 { 181 uart1: serial@4806a000 {
@@ -192,6 +223,16 @@
192 #size-cells = <0>; 223 #size-cells = <0>;
193 ti,hwmods = "mcspi1"; 224 ti,hwmods = "mcspi1";
194 ti,spi-num-cs = <4>; 225 ti,spi-num-cs = <4>;
226 dmas = <&sdma 35>,
227 <&sdma 36>,
228 <&sdma 37>,
229 <&sdma 38>,
230 <&sdma 39>,
231 <&sdma 40>,
232 <&sdma 41>,
233 <&sdma 42>;
234 dma-names = "tx0", "rx0", "tx1", "rx1",
235 "tx2", "rx2", "tx3", "rx3";
195 }; 236 };
196 237
197 mcspi2: spi@4809a000 { 238 mcspi2: spi@4809a000 {
@@ -200,6 +241,11 @@
200 #size-cells = <0>; 241 #size-cells = <0>;
201 ti,hwmods = "mcspi2"; 242 ti,hwmods = "mcspi2";
202 ti,spi-num-cs = <2>; 243 ti,spi-num-cs = <2>;
244 dmas = <&sdma 43>,
245 <&sdma 44>,
246 <&sdma 45>,
247 <&sdma 46>;
248 dma-names = "tx0", "rx0", "tx1", "rx1";
203 }; 249 };
204 250
205 mcspi3: spi@480b8000 { 251 mcspi3: spi@480b8000 {
@@ -208,6 +254,11 @@
208 #size-cells = <0>; 254 #size-cells = <0>;
209 ti,hwmods = "mcspi3"; 255 ti,hwmods = "mcspi3";
210 ti,spi-num-cs = <2>; 256 ti,spi-num-cs = <2>;
257 dmas = <&sdma 15>,
258 <&sdma 16>,
259 <&sdma 23>,
260 <&sdma 24>;
261 dma-names = "tx0", "rx0", "tx1", "rx1";
211 }; 262 };
212 263
213 mcspi4: spi@480ba000 { 264 mcspi4: spi@480ba000 {
@@ -216,22 +267,30 @@
216 #size-cells = <0>; 267 #size-cells = <0>;
217 ti,hwmods = "mcspi4"; 268 ti,hwmods = "mcspi4";
218 ti,spi-num-cs = <1>; 269 ti,spi-num-cs = <1>;
270 dmas = <&sdma 70>, <&sdma 71>;
271 dma-names = "tx0", "rx0";
219 }; 272 };
220 273
221 mmc1: mmc@4809c000 { 274 mmc1: mmc@4809c000 {
222 compatible = "ti,omap3-hsmmc"; 275 compatible = "ti,omap3-hsmmc";
223 ti,hwmods = "mmc1"; 276 ti,hwmods = "mmc1";
224 ti,dual-volt; 277 ti,dual-volt;
278 dmas = <&sdma 61>, <&sdma 62>;
279 dma-names = "tx", "rx";
225 }; 280 };
226 281
227 mmc2: mmc@480b4000 { 282 mmc2: mmc@480b4000 {
228 compatible = "ti,omap3-hsmmc"; 283 compatible = "ti,omap3-hsmmc";
229 ti,hwmods = "mmc2"; 284 ti,hwmods = "mmc2";
285 dmas = <&sdma 47>, <&sdma 48>;
286 dma-names = "tx", "rx";
230 }; 287 };
231 288
232 mmc3: mmc@480ad000 { 289 mmc3: mmc@480ad000 {
233 compatible = "ti,omap3-hsmmc"; 290 compatible = "ti,omap3-hsmmc";
234 ti,hwmods = "mmc3"; 291 ti,hwmods = "mmc3";
292 dmas = <&sdma 77>, <&sdma 78>;
293 dma-names = "tx", "rx";
235 }; 294 };
236 295
237 wdt2: wdt@48314000 { 296 wdt2: wdt@48314000 {
@@ -249,6 +308,9 @@
249 interrupt-names = "common", "tx", "rx"; 308 interrupt-names = "common", "tx", "rx";
250 ti,buffer-size = <128>; 309 ti,buffer-size = <128>;
251 ti,hwmods = "mcbsp1"; 310 ti,hwmods = "mcbsp1";
311 dmas = <&sdma 31>,
312 <&sdma 32>;
313 dma-names = "tx", "rx";
252 }; 314 };
253 315
254 mcbsp2: mcbsp@49022000 { 316 mcbsp2: mcbsp@49022000 {
@@ -263,6 +325,9 @@
263 interrupt-names = "common", "tx", "rx", "sidetone"; 325 interrupt-names = "common", "tx", "rx", "sidetone";
264 ti,buffer-size = <1280>; 326 ti,buffer-size = <1280>;
265 ti,hwmods = "mcbsp2", "mcbsp2_sidetone"; 327 ti,hwmods = "mcbsp2", "mcbsp2_sidetone";
328 dmas = <&sdma 33>,
329 <&sdma 34>;
330 dma-names = "tx", "rx";
266 }; 331 };
267 332
268 mcbsp3: mcbsp@49024000 { 333 mcbsp3: mcbsp@49024000 {
@@ -277,6 +342,9 @@
277 interrupt-names = "common", "tx", "rx", "sidetone"; 342 interrupt-names = "common", "tx", "rx", "sidetone";
278 ti,buffer-size = <128>; 343 ti,buffer-size = <128>;
279 ti,hwmods = "mcbsp3", "mcbsp3_sidetone"; 344 ti,hwmods = "mcbsp3", "mcbsp3_sidetone";
345 dmas = <&sdma 17>,
346 <&sdma 18>;
347 dma-names = "tx", "rx";
280 }; 348 };
281 349
282 mcbsp4: mcbsp@49026000 { 350 mcbsp4: mcbsp@49026000 {
@@ -289,6 +357,9 @@
289 interrupt-names = "common", "tx", "rx"; 357 interrupt-names = "common", "tx", "rx";
290 ti,buffer-size = <128>; 358 ti,buffer-size = <128>;
291 ti,hwmods = "mcbsp4"; 359 ti,hwmods = "mcbsp4";
360 dmas = <&sdma 19>,
361 <&sdma 20>;
362 dma-names = "tx", "rx";
292 }; 363 };
293 364
294 mcbsp5: mcbsp@48096000 { 365 mcbsp5: mcbsp@48096000 {
@@ -301,10 +372,13 @@
301 interrupt-names = "common", "tx", "rx"; 372 interrupt-names = "common", "tx", "rx";
302 ti,buffer-size = <128>; 373 ti,buffer-size = <128>;
303 ti,hwmods = "mcbsp5"; 374 ti,hwmods = "mcbsp5";
375 dmas = <&sdma 21>,
376 <&sdma 22>;
377 dma-names = "tx", "rx";
304 }; 378 };
305 379
306 timer1: timer@48318000 { 380 timer1: timer@48318000 {
307 compatible = "ti,omap2-timer"; 381 compatible = "ti,omap3430-timer";
308 reg = <0x48318000 0x400>; 382 reg = <0x48318000 0x400>;
309 interrupts = <37>; 383 interrupts = <37>;
310 ti,hwmods = "timer1"; 384 ti,hwmods = "timer1";
@@ -312,28 +386,28 @@
312 }; 386 };
313 387
314 timer2: timer@49032000 { 388 timer2: timer@49032000 {
315 compatible = "ti,omap2-timer"; 389 compatible = "ti,omap3430-timer";
316 reg = <0x49032000 0x400>; 390 reg = <0x49032000 0x400>;
317 interrupts = <38>; 391 interrupts = <38>;
318 ti,hwmods = "timer2"; 392 ti,hwmods = "timer2";
319 }; 393 };
320 394
321 timer3: timer@49034000 { 395 timer3: timer@49034000 {
322 compatible = "ti,omap2-timer"; 396 compatible = "ti,omap3430-timer";
323 reg = <0x49034000 0x400>; 397 reg = <0x49034000 0x400>;
324 interrupts = <39>; 398 interrupts = <39>;
325 ti,hwmods = "timer3"; 399 ti,hwmods = "timer3";
326 }; 400 };
327 401
328 timer4: timer@49036000 { 402 timer4: timer@49036000 {
329 compatible = "ti,omap2-timer"; 403 compatible = "ti,omap3430-timer";
330 reg = <0x49036000 0x400>; 404 reg = <0x49036000 0x400>;
331 interrupts = <40>; 405 interrupts = <40>;
332 ti,hwmods = "timer4"; 406 ti,hwmods = "timer4";
333 }; 407 };
334 408
335 timer5: timer@49038000 { 409 timer5: timer@49038000 {
336 compatible = "ti,omap2-timer"; 410 compatible = "ti,omap3430-timer";
337 reg = <0x49038000 0x400>; 411 reg = <0x49038000 0x400>;
338 interrupts = <41>; 412 interrupts = <41>;
339 ti,hwmods = "timer5"; 413 ti,hwmods = "timer5";
@@ -341,7 +415,7 @@
341 }; 415 };
342 416
343 timer6: timer@4903a000 { 417 timer6: timer@4903a000 {
344 compatible = "ti,omap2-timer"; 418 compatible = "ti,omap3430-timer";
345 reg = <0x4903a000 0x400>; 419 reg = <0x4903a000 0x400>;
346 interrupts = <42>; 420 interrupts = <42>;
347 ti,hwmods = "timer6"; 421 ti,hwmods = "timer6";
@@ -349,7 +423,7 @@
349 }; 423 };
350 424
351 timer7: timer@4903c000 { 425 timer7: timer@4903c000 {
352 compatible = "ti,omap2-timer"; 426 compatible = "ti,omap3430-timer";
353 reg = <0x4903c000 0x400>; 427 reg = <0x4903c000 0x400>;
354 interrupts = <43>; 428 interrupts = <43>;
355 ti,hwmods = "timer7"; 429 ti,hwmods = "timer7";
@@ -357,7 +431,7 @@
357 }; 431 };
358 432
359 timer8: timer@4903e000 { 433 timer8: timer@4903e000 {
360 compatible = "ti,omap2-timer"; 434 compatible = "ti,omap3430-timer";
361 reg = <0x4903e000 0x400>; 435 reg = <0x4903e000 0x400>;
362 interrupts = <44>; 436 interrupts = <44>;
363 ti,hwmods = "timer8"; 437 ti,hwmods = "timer8";
@@ -366,7 +440,7 @@
366 }; 440 };
367 441
368 timer9: timer@49040000 { 442 timer9: timer@49040000 {
369 compatible = "ti,omap2-timer"; 443 compatible = "ti,omap3430-timer";
370 reg = <0x49040000 0x400>; 444 reg = <0x49040000 0x400>;
371 interrupts = <45>; 445 interrupts = <45>;
372 ti,hwmods = "timer9"; 446 ti,hwmods = "timer9";
@@ -374,7 +448,7 @@
374 }; 448 };
375 449
376 timer10: timer@48086000 { 450 timer10: timer@48086000 {
377 compatible = "ti,omap2-timer"; 451 compatible = "ti,omap3430-timer";
378 reg = <0x48086000 0x400>; 452 reg = <0x48086000 0x400>;
379 interrupts = <46>; 453 interrupts = <46>;
380 ti,hwmods = "timer10"; 454 ti,hwmods = "timer10";
@@ -382,7 +456,7 @@
382 }; 456 };
383 457
384 timer11: timer@48088000 { 458 timer11: timer@48088000 {
385 compatible = "ti,omap2-timer"; 459 compatible = "ti,omap3430-timer";
386 reg = <0x48088000 0x400>; 460 reg = <0x48088000 0x400>;
387 interrupts = <47>; 461 interrupts = <47>;
388 ti,hwmods = "timer11"; 462 ti,hwmods = "timer11";
@@ -390,7 +464,7 @@
390 }; 464 };
391 465
392 timer12: timer@48304000 { 466 timer12: timer@48304000 {
393 compatible = "ti,omap2-timer"; 467 compatible = "ti,omap3430-timer";
394 reg = <0x48304000 0x400>; 468 reg = <0x48304000 0x400>;
395 interrupts = <95>; 469 interrupts = <95>;
396 ti,hwmods = "timer12"; 470 ti,hwmods = "timer12";
@@ -428,5 +502,27 @@
428 }; 502 };
429 }; 503 };
430 504
505 gpmc: gpmc@6e000000 {
506 compatible = "ti,omap3430-gpmc";
507 ti,hwmods = "gpmc";
508 reg = <0x6e000000 0x02d0>;
509 interrupts = <20>;
510 gpmc,num-cs = <8>;
511 gpmc,num-waitpins = <4>;
512 #address-cells = <2>;
513 #size-cells = <1>;
514 };
515
516 usb_otg_hs: usb_otg_hs@480ab000 {
517 compatible = "ti,omap3-musb";
518 reg = <0x480ab000 0x1000>;
519 interrupts = <0 92 0x4>, <0 93 0x4>;
520 interrupt-names = "mc", "dma";
521 ti,hwmods = "usb_otg_hs";
522 usb-phy = <&usb2_phy>;
523 multipoint = <1>;
524 num-eps = <16>;
525 ram-bits = <12>;
526 };
431 }; 527 };
432}; 528};
diff --git a/arch/arm/boot/dts/omap3430-sdp.dts b/arch/arm/boot/dts/omap3430-sdp.dts
new file mode 100644
index 000000000000..144ae43453c4
--- /dev/null
+++ b/arch/arm/boot/dts/omap3430-sdp.dts
@@ -0,0 +1,190 @@
1/*
2 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/dts-v1/;
9
10/include/ "omap34xx.dtsi"
11
12/ {
13 model = "TI OMAP3430 SDP";
14 compatible = "ti,omap3430-sdp", "ti,omap3";
15
16 memory {
17 device_type = "memory";
18 reg = <0x80000000 0x10000000>; /* 256 MB */
19 };
20};
21
22&i2c1 {
23 clock-frequency = <2600000>;
24
25 twl: twl@48 {
26 reg = <0x48>;
27 interrupts = <7>; /* SYS_NIRQ cascaded to intc */
28 };
29};
30
31/include/ "twl4030.dtsi"
32
33&mmc1 {
34 vmmc-supply = <&vmmc1>;
35 vmmc_aux-supply = <&vsim>;
36 bus-width = <8>;
37};
38
39&mmc2 {
40 status = "disabled";
41};
42
43&mmc3 {
44 status = "disabled";
45};
46
47&gpmc {
48 ranges = <0 0 0x10000000 0x08000000>,
49 <1 0 0x28000000 0x08000000>,
50 <2 0 0x20000000 0x10000000>;
51
52 nor@0,0 {
53 compatible = "cfi-flash";
54 linux,mtd-name= "intel,pf48f6000m0y1be";
55 #address-cells = <1>;
56 #size-cells = <1>;
57 reg = <0 0 0x08000000>;
58 bank-width = <2>;
59
60 gpmc,mux-add-data = <2>;
61 gpmc,cs-on-ns = <0>;
62 gpmc,cs-rd-off-ns = <186>;
63 gpmc,cs-wr-off-ns = <186>;
64 gpmc,adv-on-ns = <12>;
65 gpmc,adv-rd-off-ns = <48>;
66 gpmc,adv-wr-off-ns = <48>;
67 gpmc,oe-on-ns = <54>;
68 gpmc,oe-off-ns = <168>;
69 gpmc,we-on-ns = <54>;
70 gpmc,we-off-ns = <168>;
71 gpmc,rd-cycle-ns = <186>;
72 gpmc,wr-cycle-ns = <186>;
73 gpmc,access-ns = <114>;
74 gpmc,page-burst-access-ns = <6>;
75 gpmc,bus-turnaround-ns = <12>;
76 gpmc,cycle2cycle-delay-ns = <18>;
77 gpmc,wr-data-mux-bus-ns = <90>;
78 gpmc,wr-access-ns = <186>;
79 gpmc,cycle2cycle-samecsen;
80 gpmc,cycle2cycle-diffcsen;
81
82 partition@0 {
83 label = "bootloader-nor";
84 reg = <0 0x40000>;
85 };
86 partition@0x40000 {
87 label = "params-nor";
88 reg = <0x40000 0x40000>;
89 };
90 partition@0x80000 {
91 label = "kernel-nor";
92 reg = <0x80000 0x200000>;
93 };
94 partition@0x280000 {
95 label = "filesystem-nor";
96 reg = <0x240000 0x7d80000>;
97 };
98 };
99
100 nand@1,0 {
101 linux,mtd-name= "micron,mt29f1g08abb";
102 #address-cells = <1>;
103 #size-cells = <1>;
104 reg = <1 0 0x08000000>;
105 nand-bus-width = <8>;
106
107 ti,nand-ecc-opt = "sw";
108 gpmc,device-nand;
109 gpmc,cs-on-ns = <0>;
110 gpmc,cs-rd-off-ns = <36>;
111 gpmc,cs-wr-off-ns = <36>;
112 gpmc,adv-on-ns = <6>;
113 gpmc,adv-rd-off-ns = <24>;
114 gpmc,adv-wr-off-ns = <36>;
115 gpmc,oe-on-ns = <6>;
116 gpmc,oe-off-ns = <48>;
117 gpmc,we-on-ns = <6>;
118 gpmc,we-off-ns = <30>;
119 gpmc,rd-cycle-ns = <72>;
120 gpmc,wr-cycle-ns = <72>;
121 gpmc,access-ns = <54>;
122 gpmc,wr-access-ns = <30>;
123
124 partition@0 {
125 label = "xloader-nand";
126 reg = <0 0x80000>;
127 };
128 partition@0x80000 {
129 label = "bootloader-nand";
130 reg = <0x80000 0x140000>;
131 };
132 partition@0x1c0000 {
133 label = "params-nand";
134 reg = <0x1c0000 0xc0000>;
135 };
136 partition@0x280000 {
137 label = "kernel-nand";
138 reg = <0x280000 0x500000>;
139 };
140 partition@0x780000 {
141 label = "filesystem-nand";
142 reg = <0x780000 0x7880000>;
143 };
144 };
145
146 onenand@2,0 {
147 linux,mtd-name= "samsung,kfm2g16q2m-deb8";
148 #address-cells = <1>;
149 #size-cells = <1>;
150 reg = <2 0 0x10000000>;
151
152 gpmc,device-width = <2>;
153 gpmc,mux-add-data = <2>;
154 gpmc,cs-on-ns = <0>;
155 gpmc,cs-rd-off-ns = <84>;
156 gpmc,cs-wr-off-ns = <72>;
157 gpmc,adv-on-ns = <0>;
158 gpmc,adv-rd-off-ns = <18>;
159 gpmc,adv-wr-off-ns = <18>;
160 gpmc,oe-on-ns = <30>;
161 gpmc,oe-off-ns = <84>;
162 gpmc,we-on-ns = <0>;
163 gpmc,we-off-ns = <42>;
164 gpmc,rd-cycle-ns = <108>;
165 gpmc,wr-cycle-ns = <96>;
166 gpmc,access-ns = <78>;
167 gpmc,wr-data-mux-bus-ns = <30>;
168
169 partition@0 {
170 label = "xloader-onenand";
171 reg = <0 0x80000>;
172 };
173 partition@0x80000 {
174 label = "bootloader-onenand";
175 reg = <0x80000 0x40000>;
176 };
177 partition@0xc0000 {
178 label = "params-onenand";
179 reg = <0xc0000 0x20000>;
180 };
181 partition@0xe0000 {
182 label = "kernel-onenand";
183 reg = <0xe0000 0x200000>;
184 };
185 partition@0x2e0000 {
186 label = "filesystem-onenand";
187 reg = <0x2e0000 0xfd20000>;
188 };
189 };
190};
diff --git a/arch/arm/boot/dts/omap34xx.dtsi b/arch/arm/boot/dts/omap34xx.dtsi
new file mode 100644
index 000000000000..75ed4ae2e631
--- /dev/null
+++ b/arch/arm/boot/dts/omap34xx.dtsi
@@ -0,0 +1,28 @@
1/*
2 * Device Tree Source for OMAP34xx/OMAP35xx SoC
3 *
4 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/include/ "omap3.dtsi"
12
13/ {
14 cpus {
15 cpu@0 {
16 /* OMAP343x/OMAP35xx variants OPP1-5 */
17 operating-points = <
18 /* kHz uV */
19 125000 975000
20 250000 1075000
21 500000 1200000
22 550000 1270000
23 600000 1350000
24 >;
25 clock-latency = <300000>; /* From legacy driver */
26 };
27 };
28};
diff --git a/arch/arm/boot/dts/omap36xx.dtsi b/arch/arm/boot/dts/omap36xx.dtsi
index 96bf0287cb9f..b89233e43b0f 100644
--- a/arch/arm/boot/dts/omap36xx.dtsi
+++ b/arch/arm/boot/dts/omap36xx.dtsi
@@ -15,6 +15,19 @@
15 serial3 = &uart4; 15 serial3 = &uart4;
16 }; 16 };
17 17
18 cpus {
19 /* OMAP3630/OMAP37xx 'standard device' variants OPP50 to OPP130 */
20 cpu@0 {
21 operating-points = <
22 /* kHz uV */
23 300000 975000
24 600000 1075000
25 800000 1200000
26 >;
27 clock-latency = <300000>; /* From legacy driver */
28 };
29 };
30
18 ocp { 31 ocp {
19 uart4: serial@49042000 { 32 uart4: serial@49042000 {
20 compatible = "ti,omap3-uart"; 33 compatible = "ti,omap3-uart";
diff --git a/arch/arm/boot/dts/omap4-panda-a4.dts b/arch/arm/boot/dts/omap4-panda-a4.dts
index 75466d2abfb5..e30cdf0f5ac1 100644
--- a/arch/arm/boot/dts/omap4-panda-a4.dts
+++ b/arch/arm/boot/dts/omap4-panda-a4.dts
@@ -5,7 +5,10 @@
5 * it under the terms of the GNU General Public License version 2 as 5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8/include/ "omap4-panda.dts" 8/dts-v1/;
9
10/include/ "omap443x.dtsi"
11/include/ "omap4-panda-common.dtsi"
9 12
10/* Pandaboard Rev A4+ have external pullups on SCL & SDA */ 13/* Pandaboard Rev A4+ have external pullups on SCL & SDA */
11&dss_hdmi_pins { 14&dss_hdmi_pins {
diff --git a/arch/arm/boot/dts/omap4-panda-common.dtsi b/arch/arm/boot/dts/omap4-panda-common.dtsi
new file mode 100644
index 000000000000..03bd60deb52b
--- /dev/null
+++ b/arch/arm/boot/dts/omap4-panda-common.dtsi
@@ -0,0 +1,251 @@
1/*
2 * Copyright (C) 2011-2013 Texas Instruments Incorporated - http://www.ti.com/
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8/include/ "elpida_ecb240abacn.dtsi"
9
10/ {
11 model = "TI OMAP4 PandaBoard";
12 compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
13
14 memory {
15 device_type = "memory";
16 reg = <0x80000000 0x40000000>; /* 1 GB */
17 };
18
19 leds {
20 compatible = "gpio-leds";
21 heartbeat {
22 label = "pandaboard::status1";
23 gpios = <&gpio1 7 0>;
24 linux,default-trigger = "heartbeat";
25 };
26
27 mmc {
28 label = "pandaboard::status2";
29 gpios = <&gpio1 8 0>;
30 linux,default-trigger = "mmc0";
31 };
32 };
33
34 sound: sound {
35 compatible = "ti,abe-twl6040";
36 ti,model = "PandaBoard";
37
38 ti,mclk-freq = <38400000>;
39
40 ti,mcpdm = <&mcpdm>;
41
42 ti,twl6040 = <&twl6040>;
43
44 /* Audio routing */
45 ti,audio-routing =
46 "Headset Stereophone", "HSOL",
47 "Headset Stereophone", "HSOR",
48 "Ext Spk", "HFL",
49 "Ext Spk", "HFR",
50 "Line Out", "AUXL",
51 "Line Out", "AUXR",
52 "HSMIC", "Headset Mic",
53 "Headset Mic", "Headset Mic Bias",
54 "AFML", "Line In",
55 "AFMR", "Line In";
56 };
57};
58
59&omap4_pmx_core {
60 pinctrl-names = "default";
61 pinctrl-0 = <
62 &twl6040_pins
63 &mcpdm_pins
64 &mcbsp1_pins
65 &dss_hdmi_pins
66 &tpd12s015_pins
67 >;
68
69 twl6040_pins: pinmux_twl6040_pins {
70 pinctrl-single,pins = <
71 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
72 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
73 >;
74 };
75
76 mcpdm_pins: pinmux_mcpdm_pins {
77 pinctrl-single,pins = <
78 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
79 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
80 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
81 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
82 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
83 >;
84 };
85
86 mcbsp1_pins: pinmux_mcbsp1_pins {
87 pinctrl-single,pins = <
88 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
89 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
90 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
91 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
92 >;
93 };
94
95 dss_hdmi_pins: pinmux_dss_hdmi_pins {
96 pinctrl-single,pins = <
97 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
98 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
99 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
100 >;
101 };
102
103 tpd12s015_pins: pinmux_tpd12s015_pins {
104 pinctrl-single,pins = <
105 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */
106 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
107 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
108 >;
109 };
110
111 i2c1_pins: pinmux_i2c1_pins {
112 pinctrl-single,pins = <
113 0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
114 0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
115 >;
116 };
117
118 i2c2_pins: pinmux_i2c2_pins {
119 pinctrl-single,pins = <
120 0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */
121 0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */
122 >;
123 };
124
125 i2c3_pins: pinmux_i2c3_pins {
126 pinctrl-single,pins = <
127 0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */
128 0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */
129 >;
130 };
131
132 i2c4_pins: pinmux_i2c4_pins {
133 pinctrl-single,pins = <
134 0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */
135 0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */
136 >;
137 };
138};
139
140&i2c1 {
141 pinctrl-names = "default";
142 pinctrl-0 = <&i2c1_pins>;
143
144 clock-frequency = <400000>;
145
146 twl: twl@48 {
147 reg = <0x48>;
148 /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
149 interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
150 interrupt-parent = <&gic>;
151 };
152
153 twl6040: twl@4b {
154 compatible = "ti,twl6040";
155 reg = <0x4b>;
156 /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
157 interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
158 interrupt-parent = <&gic>;
159 ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */
160
161 vio-supply = <&v1v8>;
162 v2v1-supply = <&v2v1>;
163 enable-active-high;
164 };
165};
166
167/include/ "twl6030.dtsi"
168
169&i2c2 {
170 pinctrl-names = "default";
171 pinctrl-0 = <&i2c2_pins>;
172
173 clock-frequency = <400000>;
174};
175
176&i2c3 {
177 pinctrl-names = "default";
178 pinctrl-0 = <&i2c3_pins>;
179
180 clock-frequency = <100000>;
181
182 /*
183 * Display monitor features are burnt in their EEPROM as EDID data.
184 * The EEPROM is connected as I2C slave device.
185 */
186 eeprom@50 {
187 compatible = "ti,eeprom";
188 reg = <0x50>;
189 };
190};
191
192&i2c4 {
193 pinctrl-names = "default";
194 pinctrl-0 = <&i2c4_pins>;
195
196 clock-frequency = <400000>;
197};
198
199&mmc1 {
200 vmmc-supply = <&vmmc>;
201 bus-width = <8>;
202};
203
204&mmc2 {
205 status = "disabled";
206};
207
208&mmc3 {
209 status = "disabled";
210};
211
212&mmc4 {
213 status = "disabled";
214};
215
216&mmc5 {
217 ti,non-removable;
218 bus-width = <4>;
219};
220
221&emif1 {
222 cs1-used;
223 device-handle = <&elpida_ECB240ABACN>;
224};
225
226&emif2 {
227 cs1-used;
228 device-handle = <&elpida_ECB240ABACN>;
229};
230
231&mcbsp2 {
232 status = "disabled";
233};
234
235&mcbsp3 {
236 status = "disabled";
237};
238
239&dmic {
240 status = "disabled";
241};
242
243&twl_usb_comparator {
244 usb-supply = <&vusb>;
245};
246
247&usb_otg_hs {
248 interface-type = <1>;
249 mode = <3>;
250 power = <50>;
251};
diff --git a/arch/arm/boot/dts/omap4-panda-es.dts b/arch/arm/boot/dts/omap4-panda-es.dts
index 73bc1a67e444..f1d8c217ce12 100644
--- a/arch/arm/boot/dts/omap4-panda-es.dts
+++ b/arch/arm/boot/dts/omap4-panda-es.dts
@@ -5,7 +5,10 @@
5 * it under the terms of the GNU General Public License version 2 as 5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8/include/ "omap4-panda.dts" 8/dts-v1/;
9
10/include/ "omap4460.dtsi"
11/include/ "omap4-panda-common.dtsi"
9 12
10/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */ 13/* Audio routing is differnet between PandaBoard4430 and PandaBoardES */
11&sound { 14&sound {
diff --git a/arch/arm/boot/dts/omap4-panda.dts b/arch/arm/boot/dts/omap4-panda.dts
index 4122efe31cfd..f8b221f0168e 100644
--- a/arch/arm/boot/dts/omap4-panda.dts
+++ b/arch/arm/boot/dts/omap4-panda.dts
@@ -7,202 +7,5 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap4.dtsi" 10/include/ "omap443x.dtsi"
11/include/ "elpida_ecb240abacn.dtsi" 11/include/ "omap4-panda-common.dtsi"
12
13/ {
14 model = "TI OMAP4 PandaBoard";
15 compatible = "ti,omap4-panda", "ti,omap4430", "ti,omap4";
16
17 memory {
18 device_type = "memory";
19 reg = <0x80000000 0x40000000>; /* 1 GB */
20 };
21
22 leds {
23 compatible = "gpio-leds";
24 heartbeat {
25 label = "pandaboard::status1";
26 gpios = <&gpio1 7 0>;
27 linux,default-trigger = "heartbeat";
28 };
29
30 mmc {
31 label = "pandaboard::status2";
32 gpios = <&gpio1 8 0>;
33 linux,default-trigger = "mmc0";
34 };
35 };
36
37 sound: sound {
38 compatible = "ti,abe-twl6040";
39 ti,model = "PandaBoard";
40
41 ti,mclk-freq = <38400000>;
42
43 ti,mcpdm = <&mcpdm>;
44
45 ti,twl6040 = <&twl6040>;
46
47 /* Audio routing */
48 ti,audio-routing =
49 "Headset Stereophone", "HSOL",
50 "Headset Stereophone", "HSOR",
51 "Ext Spk", "HFL",
52 "Ext Spk", "HFR",
53 "Line Out", "AUXL",
54 "Line Out", "AUXR",
55 "HSMIC", "Headset Mic",
56 "Headset Mic", "Headset Mic Bias",
57 "AFML", "Line In",
58 "AFMR", "Line In";
59 };
60};
61
62&omap4_pmx_core {
63 pinctrl-names = "default";
64 pinctrl-0 = <
65 &twl6040_pins
66 &mcpdm_pins
67 &mcbsp1_pins
68 &dss_hdmi_pins
69 &tpd12s015_pins
70 >;
71
72 twl6040_pins: pinmux_twl6040_pins {
73 pinctrl-single,pins = <
74 0xe0 0x3 /* hdq_sio.gpio_127 OUTPUT | MODE3 */
75 0x160 0x100 /* sys_nirq2.sys_nirq2 INPUT | MODE0 */
76 >;
77 };
78
79 mcpdm_pins: pinmux_mcpdm_pins {
80 pinctrl-single,pins = <
81 0xc6 0x108 /* abe_pdm_ul_data.abe_pdm_ul_data INPUT PULLDOWN | MODE0 */
82 0xc8 0x108 /* abe_pdm_dl_data.abe_pdm_dl_data INPUT PULLDOWN | MODE0 */
83 0xca 0x118 /* abe_pdm_frame.abe_pdm_frame INPUT PULLUP | MODE0 */
84 0xcc 0x108 /* abe_pdm_lb_clk.abe_pdm_lb_clk INPUT PULLDOWN | MODE0 */
85 0xce 0x108 /* abe_clks.abe_clks INPUT PULLDOWN | MODE0 */
86 >;
87 };
88
89 mcbsp1_pins: pinmux_mcbsp1_pins {
90 pinctrl-single,pins = <
91 0xbe 0x100 /* abe_mcbsp1_clkx.abe_mcbsp1_clkx INPUT | MODE0 */
92 0xc0 0x108 /* abe_mcbsp1_dr.abe_mcbsp1_dr INPUT PULLDOWN | MODE0 */
93 0xc2 0x8 /* abe_mcbsp1_dx.abe_mcbsp1_dx OUTPUT PULLDOWN | MODE0 */
94 0xc4 0x100 /* abe_mcbsp1_fsx.abe_mcbsp1_fsx INPUT | MODE0 */
95 >;
96 };
97
98 dss_hdmi_pins: pinmux_dss_hdmi_pins {
99 pinctrl-single,pins = <
100 0x5a 0x118 /* hdmi_cec.hdmi_cec INPUT PULLUP | MODE 0 */
101 0x5c 0x118 /* hdmi_scl.hdmi_scl INPUT PULLUP | MODE 0 */
102 0x5e 0x118 /* hdmi_sda.hdmi_sda INPUT PULLUP | MODE 0 */
103 >;
104 };
105
106 tpd12s015_pins: pinmux_tpd12s015_pins {
107 pinctrl-single,pins = <
108 0x22 0x3 /* gpmc_a17.gpio_41 OUTPUT | MODE3 */
109 0x48 0x3 /* gpmc_nbe1.gpio_60 OUTPUT | MODE3 */
110 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
111 >;
112 };
113};
114
115&i2c1 {
116 clock-frequency = <400000>;
117
118 twl: twl@48 {
119 reg = <0x48>;
120 /* SPI = 0, IRQ# = 7, 4 = active high level-sensitive */
121 interrupts = <0 7 4>; /* IRQ_SYS_1N cascaded to gic */
122 interrupt-parent = <&gic>;
123 };
124
125 twl6040: twl@4b {
126 compatible = "ti,twl6040";
127 reg = <0x4b>;
128 /* SPI = 0, IRQ# = 119, 4 = active high level-sensitive */
129 interrupts = <0 119 4>; /* IRQ_SYS_2N cascaded to gic */
130 interrupt-parent = <&gic>;
131 ti,audpwron-gpio = <&gpio4 31 0>; /* gpio line 127 */
132
133 vio-supply = <&v1v8>;
134 v2v1-supply = <&v2v1>;
135 enable-active-high;
136 };
137};
138
139/include/ "twl6030.dtsi"
140
141&i2c2 {
142 clock-frequency = <400000>;
143};
144
145&i2c3 {
146 clock-frequency = <100000>;
147
148 /*
149 * Display monitor features are burnt in their EEPROM as EDID data.
150 * The EEPROM is connected as I2C slave device.
151 */
152 eeprom@50 {
153 compatible = "ti,eeprom";
154 reg = <0x50>;
155 };
156};
157
158&i2c4 {
159 clock-frequency = <400000>;
160};
161
162&mmc1 {
163 vmmc-supply = <&vmmc>;
164 bus-width = <8>;
165};
166
167&mmc2 {
168 status = "disabled";
169};
170
171&mmc3 {
172 status = "disabled";
173};
174
175&mmc4 {
176 status = "disabled";
177};
178
179&mmc5 {
180 ti,non-removable;
181 bus-width = <4>;
182};
183
184&emif1 {
185 cs1-used;
186 device-handle = <&elpida_ECB240ABACN>;
187};
188
189&emif2 {
190 cs1-used;
191 device-handle = <&elpida_ECB240ABACN>;
192};
193
194&mcbsp2 {
195 status = "disabled";
196};
197
198&mcbsp3 {
199 status = "disabled";
200};
201
202&dmic {
203 status = "disabled";
204};
205
206&twl_usb_comparator {
207 usb-supply = <&vusb>;
208};
diff --git a/arch/arm/boot/dts/omap4-sdp.dts b/arch/arm/boot/dts/omap4-sdp.dts
index 43e5258a9372..c387bdc1b1d1 100644
--- a/arch/arm/boot/dts/omap4-sdp.dts
+++ b/arch/arm/boot/dts/omap4-sdp.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap4.dtsi" 10/include/ "omap443x.dtsi"
11/include/ "elpida_ecb240abacn.dtsi" 11/include/ "elpida_ecb240abacn.dtsi"
12 12
13/ { 13/ {
@@ -80,6 +80,32 @@
80 }; 80 };
81 }; 81 };
82 82
83 pwmleds {
84 compatible = "pwm-leds";
85 kpad {
86 label = "omap4::keypad";
87 pwms = <&twl_pwm 0 7812500>;
88 max-brightness = <127>;
89 };
90
91 charging {
92 label = "omap4:green:chrg";
93 pwms = <&twl_pwmled 0 7812500>;
94 max-brightness = <255>;
95 };
96 };
97
98 backlight {
99 compatible = "pwm-backlight";
100 pwms = <&twl_pwm 1 7812500>;
101 brightness-levels = <
102 0 10 20 30 40
103 50 60 70 80 90
104 100 110 120 127
105 >;
106 default-brightness-level = <13>;
107 };
108
83 sound { 109 sound {
84 compatible = "ti,abe-twl6040"; 110 compatible = "ti,abe-twl6040";
85 ti,model = "SDP4430"; 111 ti,model = "SDP4430";
@@ -212,9 +238,40 @@
212 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */ 238 0x58 0x10b /* hdmi_hpd.gpio_63 INPUT PULLDOWN | MODE3 */
213 >; 239 >;
214 }; 240 };
241
242 i2c1_pins: pinmux_i2c1_pins {
243 pinctrl-single,pins = <
244 0xe2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
245 0xe4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
246 >;
247 };
248
249 i2c2_pins: pinmux_i2c2_pins {
250 pinctrl-single,pins = <
251 0xe6 0x118 /* i2c2_scl PULLUP | INPUTENABLE | MODE0 */
252 0xe8 0x118 /* i2c2_sda PULLUP | INPUTENABLE | MODE0 */
253 >;
254 };
255
256 i2c3_pins: pinmux_i2c3_pins {
257 pinctrl-single,pins = <
258 0xea 0x118 /* i2c3_scl PULLUP | INPUTENABLE | MODE0 */
259 0xec 0x118 /* i2c3_sda PULLUP | INPUTENABLE | MODE0 */
260 >;
261 };
262
263 i2c4_pins: pinmux_i2c4_pins {
264 pinctrl-single,pins = <
265 0xee 0x118 /* i2c4_scl PULLUP | INPUTENABLE | MODE0 */
266 0xf0 0x118 /* i2c4_sda PULLUP | INPUTENABLE | MODE0 */
267 >;
268 };
215}; 269};
216 270
217&i2c1 { 271&i2c1 {
272 pinctrl-names = "default";
273 pinctrl-0 = <&i2c1_pins>;
274
218 clock-frequency = <400000>; 275 clock-frequency = <400000>;
219 276
220 twl: twl@48 { 277 twl: twl@48 {
@@ -253,10 +310,16 @@
253/include/ "twl6030.dtsi" 310/include/ "twl6030.dtsi"
254 311
255&i2c2 { 312&i2c2 {
313 pinctrl-names = "default";
314 pinctrl-0 = <&i2c2_pins>;
315
256 clock-frequency = <400000>; 316 clock-frequency = <400000>;
257}; 317};
258 318
259&i2c3 { 319&i2c3 {
320 pinctrl-names = "default";
321 pinctrl-0 = <&i2c3_pins>;
322
260 clock-frequency = <400000>; 323 clock-frequency = <400000>;
261 324
262 /* 325 /*
@@ -279,6 +342,9 @@
279}; 342};
280 343
281&i2c4 { 344&i2c4 {
345 pinctrl-names = "default";
346 pinctrl-0 = <&i2c4_pins>;
347
282 clock-frequency = <400000>; 348 clock-frequency = <400000>;
283 349
284 /* 350 /*
@@ -428,3 +494,9 @@
428&twl_usb_comparator { 494&twl_usb_comparator {
429 usb-supply = <&vusb>; 495 usb-supply = <&vusb>;
430}; 496};
497
498&usb_otg_hs {
499 interface-type = <1>;
500 mode = <3>;
501 power = <50>;
502};
diff --git a/arch/arm/boot/dts/omap4-var-som.dts b/arch/arm/boot/dts/omap4-var-som.dts
index 6601e6af6092..222a413c2c51 100644
--- a/arch/arm/boot/dts/omap4-var-som.dts
+++ b/arch/arm/boot/dts/omap4-var-som.dts
@@ -7,7 +7,7 @@
7 */ 7 */
8/dts-v1/; 8/dts-v1/;
9 9
10/include/ "omap4.dtsi" 10/include/ "omap443x.dtsi"
11 11
12/ { 12/ {
13 model = "Variscite OMAP4 SOM"; 13 model = "Variscite OMAP4 SOM";
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index b7db1a2b6ca7..2a5642882c8a 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -94,6 +94,11 @@
94 #size-cells = <1>; 94 #size-cells = <1>;
95 ranges; 95 ranges;
96 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 96 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
97 reg = <0x44000000 0x1000>,
98 <0x44800000 0x2000>,
99 <0x45000000 0x1000>;
100 interrupts = <0 9 0x4>,
101 <0 10 0x4>;
97 102
98 counter32k: counter@4a304000 { 103 counter32k: counter@4a304000 {
99 compatible = "ti,omap-counter32k"; 104 compatible = "ti,omap-counter32k";
@@ -118,15 +123,28 @@
118 pinctrl-single,function-mask = <0x7fff>; 123 pinctrl-single,function-mask = <0x7fff>;
119 }; 124 };
120 125
126 sdma: dma-controller@4a056000 {
127 compatible = "ti,omap4430-sdma";
128 reg = <0x4a056000 0x1000>;
129 interrupts = <0 12 0x4>,
130 <0 13 0x4>,
131 <0 14 0x4>,
132 <0 15 0x4>;
133 #dma-cells = <1>;
134 #dma-channels = <32>;
135 #dma-requests = <127>;
136 };
137
121 gpio1: gpio@4a310000 { 138 gpio1: gpio@4a310000 {
122 compatible = "ti,omap4-gpio"; 139 compatible = "ti,omap4-gpio";
123 reg = <0x4a310000 0x200>; 140 reg = <0x4a310000 0x200>;
124 interrupts = <0 29 0x4>; 141 interrupts = <0 29 0x4>;
125 ti,hwmods = "gpio1"; 142 ti,hwmods = "gpio1";
143 ti,gpio-always-on;
126 gpio-controller; 144 gpio-controller;
127 #gpio-cells = <2>; 145 #gpio-cells = <2>;
128 interrupt-controller; 146 interrupt-controller;
129 #interrupt-cells = <1>; 147 #interrupt-cells = <2>;
130 }; 148 };
131 149
132 gpio2: gpio@48055000 { 150 gpio2: gpio@48055000 {
@@ -137,7 +155,7 @@
137 gpio-controller; 155 gpio-controller;
138 #gpio-cells = <2>; 156 #gpio-cells = <2>;
139 interrupt-controller; 157 interrupt-controller;
140 #interrupt-cells = <1>; 158 #interrupt-cells = <2>;
141 }; 159 };
142 160
143 gpio3: gpio@48057000 { 161 gpio3: gpio@48057000 {
@@ -148,7 +166,7 @@
148 gpio-controller; 166 gpio-controller;
149 #gpio-cells = <2>; 167 #gpio-cells = <2>;
150 interrupt-controller; 168 interrupt-controller;
151 #interrupt-cells = <1>; 169 #interrupt-cells = <2>;
152 }; 170 };
153 171
154 gpio4: gpio@48059000 { 172 gpio4: gpio@48059000 {
@@ -159,7 +177,7 @@
159 gpio-controller; 177 gpio-controller;
160 #gpio-cells = <2>; 178 #gpio-cells = <2>;
161 interrupt-controller; 179 interrupt-controller;
162 #interrupt-cells = <1>; 180 #interrupt-cells = <2>;
163 }; 181 };
164 182
165 gpio5: gpio@4805b000 { 183 gpio5: gpio@4805b000 {
@@ -170,7 +188,7 @@
170 gpio-controller; 188 gpio-controller;
171 #gpio-cells = <2>; 189 #gpio-cells = <2>;
172 interrupt-controller; 190 interrupt-controller;
173 #interrupt-cells = <1>; 191 #interrupt-cells = <2>;
174 }; 192 };
175 193
176 gpio6: gpio@4805d000 { 194 gpio6: gpio@4805d000 {
@@ -181,7 +199,18 @@
181 gpio-controller; 199 gpio-controller;
182 #gpio-cells = <2>; 200 #gpio-cells = <2>;
183 interrupt-controller; 201 interrupt-controller;
184 #interrupt-cells = <1>; 202 #interrupt-cells = <2>;
203 };
204
205 gpmc: gpmc@50000000 {
206 compatible = "ti,omap4430-gpmc";
207 reg = <0x50000000 0x1000>;
208 #address-cells = <2>;
209 #size-cells = <1>;
210 interrupts = <0 20 0x4>;
211 gpmc,num-cs = <8>;
212 gpmc,num-waitpins = <4>;
213 ti,hwmods = "gpmc";
185 }; 214 };
186 215
187 uart1: serial@4806a000 { 216 uart1: serial@4806a000 {
@@ -260,6 +289,16 @@
260 #size-cells = <0>; 289 #size-cells = <0>;
261 ti,hwmods = "mcspi1"; 290 ti,hwmods = "mcspi1";
262 ti,spi-num-cs = <4>; 291 ti,spi-num-cs = <4>;
292 dmas = <&sdma 35>,
293 <&sdma 36>,
294 <&sdma 37>,
295 <&sdma 38>,
296 <&sdma 39>,
297 <&sdma 40>,
298 <&sdma 41>,
299 <&sdma 42>;
300 dma-names = "tx0", "rx0", "tx1", "rx1",
301 "tx2", "rx2", "tx3", "rx3";
263 }; 302 };
264 303
265 mcspi2: spi@4809a000 { 304 mcspi2: spi@4809a000 {
@@ -270,6 +309,11 @@
270 #size-cells = <0>; 309 #size-cells = <0>;
271 ti,hwmods = "mcspi2"; 310 ti,hwmods = "mcspi2";
272 ti,spi-num-cs = <2>; 311 ti,spi-num-cs = <2>;
312 dmas = <&sdma 43>,
313 <&sdma 44>,
314 <&sdma 45>,
315 <&sdma 46>;
316 dma-names = "tx0", "rx0", "tx1", "rx1";
273 }; 317 };
274 318
275 mcspi3: spi@480b8000 { 319 mcspi3: spi@480b8000 {
@@ -280,6 +324,8 @@
280 #size-cells = <0>; 324 #size-cells = <0>;
281 ti,hwmods = "mcspi3"; 325 ti,hwmods = "mcspi3";
282 ti,spi-num-cs = <2>; 326 ti,spi-num-cs = <2>;
327 dmas = <&sdma 15>, <&sdma 16>;
328 dma-names = "tx0", "rx0";
283 }; 329 };
284 330
285 mcspi4: spi@480ba000 { 331 mcspi4: spi@480ba000 {
@@ -290,6 +336,8 @@
290 #size-cells = <0>; 336 #size-cells = <0>;
291 ti,hwmods = "mcspi4"; 337 ti,hwmods = "mcspi4";
292 ti,spi-num-cs = <1>; 338 ti,spi-num-cs = <1>;
339 dmas = <&sdma 70>, <&sdma 71>;
340 dma-names = "tx0", "rx0";
293 }; 341 };
294 342
295 mmc1: mmc@4809c000 { 343 mmc1: mmc@4809c000 {
@@ -299,6 +347,8 @@
299 ti,hwmods = "mmc1"; 347 ti,hwmods = "mmc1";
300 ti,dual-volt; 348 ti,dual-volt;
301 ti,needs-special-reset; 349 ti,needs-special-reset;
350 dmas = <&sdma 61>, <&sdma 62>;
351 dma-names = "tx", "rx";
302 }; 352 };
303 353
304 mmc2: mmc@480b4000 { 354 mmc2: mmc@480b4000 {
@@ -307,6 +357,8 @@
307 interrupts = <0 86 0x4>; 357 interrupts = <0 86 0x4>;
308 ti,hwmods = "mmc2"; 358 ti,hwmods = "mmc2";
309 ti,needs-special-reset; 359 ti,needs-special-reset;
360 dmas = <&sdma 47>, <&sdma 48>;
361 dma-names = "tx", "rx";
310 }; 362 };
311 363
312 mmc3: mmc@480ad000 { 364 mmc3: mmc@480ad000 {
@@ -315,6 +367,8 @@
315 interrupts = <0 94 0x4>; 367 interrupts = <0 94 0x4>;
316 ti,hwmods = "mmc3"; 368 ti,hwmods = "mmc3";
317 ti,needs-special-reset; 369 ti,needs-special-reset;
370 dmas = <&sdma 77>, <&sdma 78>;
371 dma-names = "tx", "rx";
318 }; 372 };
319 373
320 mmc4: mmc@480d1000 { 374 mmc4: mmc@480d1000 {
@@ -323,6 +377,8 @@
323 interrupts = <0 96 0x4>; 377 interrupts = <0 96 0x4>;
324 ti,hwmods = "mmc4"; 378 ti,hwmods = "mmc4";
325 ti,needs-special-reset; 379 ti,needs-special-reset;
380 dmas = <&sdma 57>, <&sdma 58>;
381 dma-names = "tx", "rx";
326 }; 382 };
327 383
328 mmc5: mmc@480d5000 { 384 mmc5: mmc@480d5000 {
@@ -331,6 +387,8 @@
331 interrupts = <0 59 0x4>; 387 interrupts = <0 59 0x4>;
332 ti,hwmods = "mmc5"; 388 ti,hwmods = "mmc5";
333 ti,needs-special-reset; 389 ti,needs-special-reset;
390 dmas = <&sdma 59>, <&sdma 60>;
391 dma-names = "tx", "rx";
334 }; 392 };
335 393
336 wdt2: wdt@4a314000 { 394 wdt2: wdt@4a314000 {
@@ -347,6 +405,9 @@
347 reg-names = "mpu", "dma"; 405 reg-names = "mpu", "dma";
348 interrupts = <0 112 0x4>; 406 interrupts = <0 112 0x4>;
349 ti,hwmods = "mcpdm"; 407 ti,hwmods = "mcpdm";
408 dmas = <&sdma 65>,
409 <&sdma 66>;
410 dma-names = "up_link", "dn_link";
350 }; 411 };
351 412
352 dmic: dmic@4012e000 { 413 dmic: dmic@4012e000 {
@@ -356,6 +417,8 @@
356 reg-names = "mpu", "dma"; 417 reg-names = "mpu", "dma";
357 interrupts = <0 114 0x4>; 418 interrupts = <0 114 0x4>;
358 ti,hwmods = "dmic"; 419 ti,hwmods = "dmic";
420 dmas = <&sdma 67>;
421 dma-names = "up_link";
359 }; 422 };
360 423
361 mcbsp1: mcbsp@40122000 { 424 mcbsp1: mcbsp@40122000 {
@@ -367,6 +430,9 @@
367 interrupt-names = "common"; 430 interrupt-names = "common";
368 ti,buffer-size = <128>; 431 ti,buffer-size = <128>;
369 ti,hwmods = "mcbsp1"; 432 ti,hwmods = "mcbsp1";
433 dmas = <&sdma 33>,
434 <&sdma 34>;
435 dma-names = "tx", "rx";
370 }; 436 };
371 437
372 mcbsp2: mcbsp@40124000 { 438 mcbsp2: mcbsp@40124000 {
@@ -378,6 +444,9 @@
378 interrupt-names = "common"; 444 interrupt-names = "common";
379 ti,buffer-size = <128>; 445 ti,buffer-size = <128>;
380 ti,hwmods = "mcbsp2"; 446 ti,hwmods = "mcbsp2";
447 dmas = <&sdma 17>,
448 <&sdma 18>;
449 dma-names = "tx", "rx";
381 }; 450 };
382 451
383 mcbsp3: mcbsp@40126000 { 452 mcbsp3: mcbsp@40126000 {
@@ -389,6 +458,9 @@
389 interrupt-names = "common"; 458 interrupt-names = "common";
390 ti,buffer-size = <128>; 459 ti,buffer-size = <128>;
391 ti,hwmods = "mcbsp3"; 460 ti,hwmods = "mcbsp3";
461 dmas = <&sdma 19>,
462 <&sdma 20>;
463 dma-names = "tx", "rx";
392 }; 464 };
393 465
394 mcbsp4: mcbsp@48096000 { 466 mcbsp4: mcbsp@48096000 {
@@ -399,6 +471,9 @@
399 interrupt-names = "common"; 471 interrupt-names = "common";
400 ti,buffer-size = <128>; 472 ti,buffer-size = <128>;
401 ti,hwmods = "mcbsp4"; 473 ti,hwmods = "mcbsp4";
474 dmas = <&sdma 31>,
475 <&sdma 32>;
476 dma-names = "tx", "rx";
402 }; 477 };
403 478
404 keypad: keypad@4a31c000 { 479 keypad: keypad@4a31c000 {
@@ -438,10 +513,15 @@
438 #size-cells = <1>; 513 #size-cells = <1>;
439 ranges; 514 ranges;
440 ti,hwmods = "ocp2scp_usb_phy"; 515 ti,hwmods = "ocp2scp_usb_phy";
516 usb2_phy: usb2phy@4a0ad080 {
517 compatible = "ti,omap-usb2";
518 reg = <0x4a0ad080 0x58>;
519 ctrl-module = <&omap_control_usb>;
520 };
441 }; 521 };
442 522
443 timer1: timer@4a318000 { 523 timer1: timer@4a318000 {
444 compatible = "ti,omap2-timer"; 524 compatible = "ti,omap3430-timer";
445 reg = <0x4a318000 0x80>; 525 reg = <0x4a318000 0x80>;
446 interrupts = <0 37 0x4>; 526 interrupts = <0 37 0x4>;
447 ti,hwmods = "timer1"; 527 ti,hwmods = "timer1";
@@ -449,28 +529,28 @@
449 }; 529 };
450 530
451 timer2: timer@48032000 { 531 timer2: timer@48032000 {
452 compatible = "ti,omap2-timer"; 532 compatible = "ti,omap3430-timer";
453 reg = <0x48032000 0x80>; 533 reg = <0x48032000 0x80>;
454 interrupts = <0 38 0x4>; 534 interrupts = <0 38 0x4>;
455 ti,hwmods = "timer2"; 535 ti,hwmods = "timer2";
456 }; 536 };
457 537
458 timer3: timer@48034000 { 538 timer3: timer@48034000 {
459 compatible = "ti,omap2-timer"; 539 compatible = "ti,omap4430-timer";
460 reg = <0x48034000 0x80>; 540 reg = <0x48034000 0x80>;
461 interrupts = <0 39 0x4>; 541 interrupts = <0 39 0x4>;
462 ti,hwmods = "timer3"; 542 ti,hwmods = "timer3";
463 }; 543 };
464 544
465 timer4: timer@48036000 { 545 timer4: timer@48036000 {
466 compatible = "ti,omap2-timer"; 546 compatible = "ti,omap4430-timer";
467 reg = <0x48036000 0x80>; 547 reg = <0x48036000 0x80>;
468 interrupts = <0 40 0x4>; 548 interrupts = <0 40 0x4>;
469 ti,hwmods = "timer4"; 549 ti,hwmods = "timer4";
470 }; 550 };
471 551
472 timer5: timer@40138000 { 552 timer5: timer@40138000 {
473 compatible = "ti,omap2-timer"; 553 compatible = "ti,omap4430-timer";
474 reg = <0x40138000 0x80>, 554 reg = <0x40138000 0x80>,
475 <0x49038000 0x80>; 555 <0x49038000 0x80>;
476 interrupts = <0 41 0x4>; 556 interrupts = <0 41 0x4>;
@@ -479,7 +559,7 @@
479 }; 559 };
480 560
481 timer6: timer@4013a000 { 561 timer6: timer@4013a000 {
482 compatible = "ti,omap2-timer"; 562 compatible = "ti,omap4430-timer";
483 reg = <0x4013a000 0x80>, 563 reg = <0x4013a000 0x80>,
484 <0x4903a000 0x80>; 564 <0x4903a000 0x80>;
485 interrupts = <0 42 0x4>; 565 interrupts = <0 42 0x4>;
@@ -488,7 +568,7 @@
488 }; 568 };
489 569
490 timer7: timer@4013c000 { 570 timer7: timer@4013c000 {
491 compatible = "ti,omap2-timer"; 571 compatible = "ti,omap4430-timer";
492 reg = <0x4013c000 0x80>, 572 reg = <0x4013c000 0x80>,
493 <0x4903c000 0x80>; 573 <0x4903c000 0x80>;
494 interrupts = <0 43 0x4>; 574 interrupts = <0 43 0x4>;
@@ -497,7 +577,7 @@
497 }; 577 };
498 578
499 timer8: timer@4013e000 { 579 timer8: timer@4013e000 {
500 compatible = "ti,omap2-timer"; 580 compatible = "ti,omap4430-timer";
501 reg = <0x4013e000 0x80>, 581 reg = <0x4013e000 0x80>,
502 <0x4903e000 0x80>; 582 <0x4903e000 0x80>;
503 interrupts = <0 44 0x4>; 583 interrupts = <0 44 0x4>;
@@ -507,7 +587,7 @@
507 }; 587 };
508 588
509 timer9: timer@4803e000 { 589 timer9: timer@4803e000 {
510 compatible = "ti,omap2-timer"; 590 compatible = "ti,omap4430-timer";
511 reg = <0x4803e000 0x80>; 591 reg = <0x4803e000 0x80>;
512 interrupts = <0 45 0x4>; 592 interrupts = <0 45 0x4>;
513 ti,hwmods = "timer9"; 593 ti,hwmods = "timer9";
@@ -515,7 +595,7 @@
515 }; 595 };
516 596
517 timer10: timer@48086000 { 597 timer10: timer@48086000 {
518 compatible = "ti,omap2-timer"; 598 compatible = "ti,omap3430-timer";
519 reg = <0x48086000 0x80>; 599 reg = <0x48086000 0x80>;
520 interrupts = <0 46 0x4>; 600 interrupts = <0 46 0x4>;
521 ti,hwmods = "timer10"; 601 ti,hwmods = "timer10";
@@ -523,7 +603,7 @@
523 }; 603 };
524 604
525 timer11: timer@48088000 { 605 timer11: timer@48088000 {
526 compatible = "ti,omap2-timer"; 606 compatible = "ti,omap4430-timer";
527 reg = <0x48088000 0x80>; 607 reg = <0x48088000 0x80>;
528 interrupts = <0 47 0x4>; 608 interrupts = <0 47 0x4>;
529 ti,hwmods = "timer11"; 609 ti,hwmods = "timer11";
@@ -559,5 +639,26 @@
559 interrupts = <0 77 0x4>; 639 interrupts = <0 77 0x4>;
560 }; 640 };
561 }; 641 };
642
643 omap_control_usb: omap-control-usb@4a002300 {
644 compatible = "ti,omap-control-usb";
645 reg = <0x4a002300 0x4>,
646 <0x4a00233c 0x4>;
647 reg-names = "control_dev_conf", "otghs_control";
648 ti,type = <1>;
649 };
650
651 usb_otg_hs: usb_otg_hs@4a0ab000 {
652 compatible = "ti,omap4-musb";
653 reg = <0x4a0ab000 0x7ff>;
654 interrupts = <0 92 0x4>, <0 93 0x4>;
655 interrupt-names = "mc", "dma";
656 ti,hwmods = "usb_otg_hs";
657 usb-phy = <&usb2_phy>;
658 multipoint = <1>;
659 num-eps = <16>;
660 ram-bits = <12>;
661 ti,has-mailbox;
662 };
562 }; 663 };
563}; 664};
diff --git a/arch/arm/boot/dts/omap443x.dtsi b/arch/arm/boot/dts/omap443x.dtsi
new file mode 100644
index 000000000000..cccf39af4925
--- /dev/null
+++ b/arch/arm/boot/dts/omap443x.dtsi
@@ -0,0 +1,27 @@
1/*
2 * Device Tree Source for OMAP443x SoC
3 *
4 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11/include/ "omap4.dtsi"
12
13/ {
14 cpus {
15 cpu@0 {
16 /* OMAP443x variants OPP50-OPPNT */
17 operating-points = <
18 /* kHz uV */
19 300000 1025000
20 600000 1200000
21 800000 1313000
22 1008000 1375000
23 >;
24 clock-latency = <300000>; /* From legacy driver */
25 };
26 };
27};
diff --git a/arch/arm/boot/dts/omap4460.dtsi b/arch/arm/boot/dts/omap4460.dtsi
new file mode 100644
index 000000000000..7c2c23cc17ef
--- /dev/null
+++ b/arch/arm/boot/dts/omap4460.dtsi
@@ -0,0 +1,32 @@
1/*
2 * Device Tree Source for OMAP4460 SoC
3 *
4 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10/include/ "omap4.dtsi"
11
12/ {
13 cpus {
14 /* OMAP446x 'standard device' variants OPP50 to OPPTurbo */
15 cpu@0 {
16 operating-points = <
17 /* kHz uV */
18 350000 975000
19 700000 1075000
20 920000 1200000
21 >;
22 clock-latency = <300000>; /* From legacy driver */
23 };
24 };
25
26 pmu {
27 compatible = "arm,cortex-a9-pmu";
28 interrupts = <0 54 0x4>,
29 <0 55 0x4>;
30 ti,hwmods = "debugss";
31 };
32};
diff --git a/arch/arm/boot/dts/omap5-evm.dts b/arch/arm/boot/dts/omap5-evm.dts
index 8722c15bbba2..982acd19477d 100644
--- a/arch/arm/boot/dts/omap5-evm.dts
+++ b/arch/arm/boot/dts/omap5-evm.dts
@@ -16,7 +16,7 @@
16 16
17 memory { 17 memory {
18 device_type = "memory"; 18 device_type = "memory";
19 reg = <0x80000000 0x80000000>; /* 2 GB */ 19 reg = <0x80000000 0x7F000000>; /* 2032 MB */
20 }; 20 };
21 21
22 vmmcsd_fixed: fixedregulator-mmcsd { 22 vmmcsd_fixed: fixedregulator-mmcsd {
@@ -80,6 +80,68 @@
80 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */ 80 0x15a 0x100 /* abemcbsp2_clkx.abemcbsp2_clkx INPUT | MODE0 */
81 >; 81 >;
82 }; 82 };
83
84 i2c1_pins: pinmux_i2c1_pins {
85 pinctrl-single,pins = <
86 0x1b2 0x118 /* i2c1_scl PULLUP | INPUTENABLE | MODE0 */
87 0x1b4 0x118 /* i2c1_sda PULLUP | INPUTENABLE | MODE0 */
88 >;
89 };
90
91 i2c2_pins: pinmux_i2c2_pins {
92 pinctrl-single,pins = <
93 0x178 0x100 /* i2c2_scl INPUTENABLE | MODE0 */
94 0x17a 0x100 /* i2c2_sda INPUTENABLE | MODE0 */
95 >;
96 };
97
98 i2c3_pins: pinmux_i2c3_pins {
99 pinctrl-single,pins = <
100 0x13a 0x100 /* i2c3_scl INPUTENABLE | MODE0 */
101 0x13c 0x100 /* i2c3_sda INPUTENABLE | MODE0 */
102 >;
103 };
104
105 i2c4_pins: pinmux_i2c4_pins {
106 pinctrl-single,pins = <
107 0xb8 0x100 /* i2c4_scl INPUTENABLE | MODE0 */
108 0xba 0x100 /* i2c4_sda INPUTENABLE | MODE0 */
109 >;
110 };
111
112 i2c5_pins: pinmux_i2c5_pins {
113 pinctrl-single,pins = <
114 0x184 0x100 /* i2c5_scl INPUTENABLE | MODE0 */
115 0x186 0x100 /* i2c5_sda INPUTENABLE | MODE0 */
116 >;
117 };
118
119 mcspi2_pins: pinmux_mcspi2_pins {
120 pinctrl-single,pins = <
121 0xbc 0x100 /* MCSPI2_CLK INPUTENABLE | MODE0 */
122 0xbe 0x100 /* MCSPI2_SIMO INPUTENABLE | MODE0 */
123 0xc0 0x118 /* MCSPI2_SOMI PULLUP | INPUTENABLE | MODE0*/
124 0xc2 0x0 /* MCSPI2_CS MODE0*/
125 >;
126 };
127
128 mcspi3_pins: pinmux_mcspi3_pins {
129 pinctrl-single,pins = <
130 0x78 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */
131 0x7a 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */
132 0x7c 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */
133 0x7e 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */
134 >;
135 };
136
137 mcspi4_pins: pinmux_mcspi4_pins {
138 pinctrl-single,pins = <
139 0x164 0x101 /* MCSPI2_CLK INPUTENABLE | MODE1 */
140 0x168 0x101 /* MCSPI2_SIMO INPUTENABLE | MODE1 */
141 0x16a 0x101 /* MCSPI2_SOMI INPUTENABLE | MODE1 */
142 0x16c 0x101 /* MCSPI2_CS INPUTENABLE | MODE1 */
143 >;
144 };
83}; 145};
84 146
85&mmc1 { 147&mmc1 {
@@ -106,7 +168,17 @@
106 status = "disabled"; 168 status = "disabled";
107}; 169};
108 170
171&i2c1 {
172 pinctrl-names = "default";
173 pinctrl-0 = <&i2c1_pins>;
174
175 clock-frequency = <400000>;
176};
177
109&i2c2 { 178&i2c2 {
179 pinctrl-names = "default";
180 pinctrl-0 = <&i2c2_pins>;
181
110 clock-frequency = <400000>; 182 clock-frequency = <400000>;
111 183
112 /* Pressure Sensor */ 184 /* Pressure Sensor */
@@ -116,7 +188,17 @@
116 }; 188 };
117}; 189};
118 190
191&i2c3 {
192 pinctrl-names = "default";
193 pinctrl-0 = <&i2c3_pins>;
194
195 clock-frequency = <400000>;
196};
197
119&i2c4 { 198&i2c4 {
199 pinctrl-names = "default";
200 pinctrl-0 = <&i2c4_pins>;
201
120 clock-frequency = <400000>; 202 clock-frequency = <400000>;
121 203
122 /* Temperature Sensor */ 204 /* Temperature Sensor */
@@ -126,6 +208,13 @@
126 }; 208 };
127}; 209};
128 210
211&i2c5 {
212 pinctrl-names = "default";
213 pinctrl-0 = <&i2c5_pins>;
214
215 clock-frequency = <400000>;
216};
217
129&keypad { 218&keypad {
130 keypad,num-rows = <8>; 219 keypad,num-rows = <8>;
131 keypad,num-columns = <8>; 220 keypad,num-columns = <8>;
@@ -151,3 +240,22 @@
151 cs1-used; 240 cs1-used;
152 device-handle = <&samsung_K3PE0E000B>; 241 device-handle = <&samsung_K3PE0E000B>;
153}; 242};
243
244&mcspi1 {
245
246};
247
248&mcspi2 {
249 pinctrl-names = "default";
250 pinctrl-0 = <&mcspi2_pins>;
251};
252
253&mcspi3 {
254 pinctrl-names = "default";
255 pinctrl-0 = <&mcspi3_pins>;
256};
257
258&mcspi4 {
259 pinctrl-names = "default";
260 pinctrl-0 = <&mcspi4_pins>;
261};
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index 790bb2a4b343..3dd7ff825828 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -18,6 +18,9 @@
18/include/ "skeleton.dtsi" 18/include/ "skeleton.dtsi"
19 19
20/ { 20/ {
21 #address-cells = <1>;
22 #size-cells = <1>;
23
21 compatible = "ti,omap5"; 24 compatible = "ti,omap5";
22 interrupt-parent = <&gic>; 25 interrupt-parent = <&gic>;
23 26
@@ -33,24 +36,32 @@
33 cpus { 36 cpus {
34 cpu@0 { 37 cpu@0 {
35 compatible = "arm,cortex-a15"; 38 compatible = "arm,cortex-a15";
36 timer {
37 compatible = "arm,armv7-timer";
38 /* 14th PPI IRQ, active low level-sensitive */
39 interrupts = <1 14 0x308>;
40 clock-frequency = <6144000>;
41 };
42 }; 39 };
43 cpu@1 { 40 cpu@1 {
44 compatible = "arm,cortex-a15"; 41 compatible = "arm,cortex-a15";
45 timer {
46 compatible = "arm,armv7-timer";
47 /* 14th PPI IRQ, active low level-sensitive */
48 interrupts = <1 14 0x308>;
49 clock-frequency = <6144000>;
50 };
51 }; 42 };
52 }; 43 };
53 44
45 timer {
46 compatible = "arm,armv7-timer";
47 /* PPI secure/nonsecure IRQ, active low level-sensitive */
48 interrupts = <1 13 0x308>,
49 <1 14 0x308>,
50 <1 11 0x308>,
51 <1 10 0x308>;
52 clock-frequency = <6144000>;
53 };
54
55 gic: interrupt-controller@48211000 {
56 compatible = "arm,cortex-a15-gic";
57 interrupt-controller;
58 #interrupt-cells = <3>;
59 reg = <0x48211000 0x1000>,
60 <0x48212000 0x1000>,
61 <0x48214000 0x2000>,
62 <0x48216000 0x2000>;
63 };
64
54 /* 65 /*
55 * The soc node represents the soc top level view. It is uses for IPs 66 * The soc node represents the soc top level view. It is uses for IPs
56 * that are not memory mapped in the MPU view or for the MPU itself. 67 * that are not memory mapped in the MPU view or for the MPU itself.
@@ -76,6 +87,11 @@
76 #size-cells = <1>; 87 #size-cells = <1>;
77 ranges; 88 ranges;
78 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3"; 89 ti,hwmods = "l3_main_1", "l3_main_2", "l3_main_3";
90 reg = <0x44000000 0x2000>,
91 <0x44800000 0x3000>,
92 <0x45000000 0x4000>;
93 interrupts = <0 9 0x4>,
94 <0 10 0x4>;
79 95
80 counter32k: counter@4ae04000 { 96 counter32k: counter@4ae04000 {
81 compatible = "ti,omap-counter32k"; 97 compatible = "ti,omap-counter32k";
@@ -100,12 +116,16 @@
100 pinctrl-single,function-mask = <0x7fff>; 116 pinctrl-single,function-mask = <0x7fff>;
101 }; 117 };
102 118
103 gic: interrupt-controller@48211000 { 119 sdma: dma-controller@4a056000 {
104 compatible = "arm,cortex-a15-gic"; 120 compatible = "ti,omap4430-sdma";
105 interrupt-controller; 121 reg = <0x4a056000 0x1000>;
106 #interrupt-cells = <3>; 122 interrupts = <0 12 0x4>,
107 reg = <0x48211000 0x1000>, 123 <0 13 0x4>,
108 <0x48212000 0x1000>; 124 <0 14 0x4>,
125 <0 15 0x4>;
126 #dma-cells = <1>;
127 #dma-channels = <32>;
128 #dma-requests = <127>;
109 }; 129 };
110 130
111 gpio1: gpio@4ae10000 { 131 gpio1: gpio@4ae10000 {
@@ -113,10 +133,11 @@
113 reg = <0x4ae10000 0x200>; 133 reg = <0x4ae10000 0x200>;
114 interrupts = <0 29 0x4>; 134 interrupts = <0 29 0x4>;
115 ti,hwmods = "gpio1"; 135 ti,hwmods = "gpio1";
136 ti,gpio-always-on;
116 gpio-controller; 137 gpio-controller;
117 #gpio-cells = <2>; 138 #gpio-cells = <2>;
118 interrupt-controller; 139 interrupt-controller;
119 #interrupt-cells = <1>; 140 #interrupt-cells = <2>;
120 }; 141 };
121 142
122 gpio2: gpio@48055000 { 143 gpio2: gpio@48055000 {
@@ -127,7 +148,7 @@
127 gpio-controller; 148 gpio-controller;
128 #gpio-cells = <2>; 149 #gpio-cells = <2>;
129 interrupt-controller; 150 interrupt-controller;
130 #interrupt-cells = <1>; 151 #interrupt-cells = <2>;
131 }; 152 };
132 153
133 gpio3: gpio@48057000 { 154 gpio3: gpio@48057000 {
@@ -138,7 +159,7 @@
138 gpio-controller; 159 gpio-controller;
139 #gpio-cells = <2>; 160 #gpio-cells = <2>;
140 interrupt-controller; 161 interrupt-controller;
141 #interrupt-cells = <1>; 162 #interrupt-cells = <2>;
142 }; 163 };
143 164
144 gpio4: gpio@48059000 { 165 gpio4: gpio@48059000 {
@@ -149,7 +170,7 @@
149 gpio-controller; 170 gpio-controller;
150 #gpio-cells = <2>; 171 #gpio-cells = <2>;
151 interrupt-controller; 172 interrupt-controller;
152 #interrupt-cells = <1>; 173 #interrupt-cells = <2>;
153 }; 174 };
154 175
155 gpio5: gpio@4805b000 { 176 gpio5: gpio@4805b000 {
@@ -160,7 +181,7 @@
160 gpio-controller; 181 gpio-controller;
161 #gpio-cells = <2>; 182 #gpio-cells = <2>;
162 interrupt-controller; 183 interrupt-controller;
163 #interrupt-cells = <1>; 184 #interrupt-cells = <2>;
164 }; 185 };
165 186
166 gpio6: gpio@4805d000 { 187 gpio6: gpio@4805d000 {
@@ -171,7 +192,7 @@
171 gpio-controller; 192 gpio-controller;
172 #gpio-cells = <2>; 193 #gpio-cells = <2>;
173 interrupt-controller; 194 interrupt-controller;
174 #interrupt-cells = <1>; 195 #interrupt-cells = <2>;
175 }; 196 };
176 197
177 gpio7: gpio@48051000 { 198 gpio7: gpio@48051000 {
@@ -182,7 +203,7 @@
182 gpio-controller; 203 gpio-controller;
183 #gpio-cells = <2>; 204 #gpio-cells = <2>;
184 interrupt-controller; 205 interrupt-controller;
185 #interrupt-cells = <1>; 206 #interrupt-cells = <2>;
186 }; 207 };
187 208
188 gpio8: gpio@48053000 { 209 gpio8: gpio@48053000 {
@@ -193,7 +214,18 @@
193 gpio-controller; 214 gpio-controller;
194 #gpio-cells = <2>; 215 #gpio-cells = <2>;
195 interrupt-controller; 216 interrupt-controller;
196 #interrupt-cells = <1>; 217 #interrupt-cells = <2>;
218 };
219
220 gpmc: gpmc@50000000 {
221 compatible = "ti,omap4430-gpmc";
222 reg = <0x50000000 0x1000>;
223 #address-cells = <2>;
224 #size-cells = <1>;
225 interrupts = <0 20 0x4>;
226 gpmc,num-cs = <8>;
227 gpmc,num-waitpins = <4>;
228 ti,hwmods = "gpmc";
197 }; 229 };
198 230
199 i2c1: i2c@48070000 { 231 i2c1: i2c@48070000 {
@@ -241,6 +273,65 @@
241 ti,hwmods = "i2c5"; 273 ti,hwmods = "i2c5";
242 }; 274 };
243 275
276 mcspi1: spi@48098000 {
277 compatible = "ti,omap4-mcspi";
278 reg = <0x48098000 0x200>;
279 interrupts = <0 65 0x4>;
280 #address-cells = <1>;
281 #size-cells = <0>;
282 ti,hwmods = "mcspi1";
283 ti,spi-num-cs = <4>;
284 dmas = <&sdma 35>,
285 <&sdma 36>,
286 <&sdma 37>,
287 <&sdma 38>,
288 <&sdma 39>,
289 <&sdma 40>,
290 <&sdma 41>,
291 <&sdma 42>;
292 dma-names = "tx0", "rx0", "tx1", "rx1",
293 "tx2", "rx2", "tx3", "rx3";
294 };
295
296 mcspi2: spi@4809a000 {
297 compatible = "ti,omap4-mcspi";
298 reg = <0x4809a000 0x200>;
299 interrupts = <0 66 0x4>;
300 #address-cells = <1>;
301 #size-cells = <0>;
302 ti,hwmods = "mcspi2";
303 ti,spi-num-cs = <2>;
304 dmas = <&sdma 43>,
305 <&sdma 44>,
306 <&sdma 45>,
307 <&sdma 46>;
308 dma-names = "tx0", "rx0", "tx1", "rx1";
309 };
310
311 mcspi3: spi@480b8000 {
312 compatible = "ti,omap4-mcspi";
313 reg = <0x480b8000 0x200>;
314 interrupts = <0 91 0x4>;
315 #address-cells = <1>;
316 #size-cells = <0>;
317 ti,hwmods = "mcspi3";
318 ti,spi-num-cs = <2>;
319 dmas = <&sdma 15>, <&sdma 16>;
320 dma-names = "tx0", "rx0";
321 };
322
323 mcspi4: spi@480ba000 {
324 compatible = "ti,omap4-mcspi";
325 reg = <0x480ba000 0x200>;
326 interrupts = <0 48 0x4>;
327 #address-cells = <1>;
328 #size-cells = <0>;
329 ti,hwmods = "mcspi4";
330 ti,spi-num-cs = <1>;
331 dmas = <&sdma 70>, <&sdma 71>;
332 dma-names = "tx0", "rx0";
333 };
334
244 uart1: serial@4806a000 { 335 uart1: serial@4806a000 {
245 compatible = "ti,omap4-uart"; 336 compatible = "ti,omap4-uart";
246 reg = <0x4806a000 0x100>; 337 reg = <0x4806a000 0x100>;
@@ -296,6 +387,8 @@
296 ti,hwmods = "mmc1"; 387 ti,hwmods = "mmc1";
297 ti,dual-volt; 388 ti,dual-volt;
298 ti,needs-special-reset; 389 ti,needs-special-reset;
390 dmas = <&sdma 61>, <&sdma 62>;
391 dma-names = "tx", "rx";
299 }; 392 };
300 393
301 mmc2: mmc@480b4000 { 394 mmc2: mmc@480b4000 {
@@ -304,6 +397,8 @@
304 interrupts = <0 86 0x4>; 397 interrupts = <0 86 0x4>;
305 ti,hwmods = "mmc2"; 398 ti,hwmods = "mmc2";
306 ti,needs-special-reset; 399 ti,needs-special-reset;
400 dmas = <&sdma 47>, <&sdma 48>;
401 dma-names = "tx", "rx";
307 }; 402 };
308 403
309 mmc3: mmc@480ad000 { 404 mmc3: mmc@480ad000 {
@@ -312,6 +407,8 @@
312 interrupts = <0 94 0x4>; 407 interrupts = <0 94 0x4>;
313 ti,hwmods = "mmc3"; 408 ti,hwmods = "mmc3";
314 ti,needs-special-reset; 409 ti,needs-special-reset;
410 dmas = <&sdma 77>, <&sdma 78>;
411 dma-names = "tx", "rx";
315 }; 412 };
316 413
317 mmc4: mmc@480d1000 { 414 mmc4: mmc@480d1000 {
@@ -320,6 +417,8 @@
320 interrupts = <0 96 0x4>; 417 interrupts = <0 96 0x4>;
321 ti,hwmods = "mmc4"; 418 ti,hwmods = "mmc4";
322 ti,needs-special-reset; 419 ti,needs-special-reset;
420 dmas = <&sdma 57>, <&sdma 58>;
421 dma-names = "tx", "rx";
323 }; 422 };
324 423
325 mmc5: mmc@480d5000 { 424 mmc5: mmc@480d5000 {
@@ -328,10 +427,13 @@
328 interrupts = <0 59 0x4>; 427 interrupts = <0 59 0x4>;
329 ti,hwmods = "mmc5"; 428 ti,hwmods = "mmc5";
330 ti,needs-special-reset; 429 ti,needs-special-reset;
430 dmas = <&sdma 59>, <&sdma 60>;
431 dma-names = "tx", "rx";
331 }; 432 };
332 433
333 keypad: keypad@4ae1c000 { 434 keypad: keypad@4ae1c000 {
334 compatible = "ti,omap4-keypad"; 435 compatible = "ti,omap4-keypad";
436 reg = <0x4ae1c000 0x400>;
335 ti,hwmods = "kbd"; 437 ti,hwmods = "kbd";
336 }; 438 };
337 439
@@ -342,6 +444,9 @@
342 reg-names = "mpu", "dma"; 444 reg-names = "mpu", "dma";
343 interrupts = <0 112 0x4>; 445 interrupts = <0 112 0x4>;
344 ti,hwmods = "mcpdm"; 446 ti,hwmods = "mcpdm";
447 dmas = <&sdma 65>,
448 <&sdma 66>;
449 dma-names = "up_link", "dn_link";
345 }; 450 };
346 451
347 dmic: dmic@4012e000 { 452 dmic: dmic@4012e000 {
@@ -351,6 +456,8 @@
351 reg-names = "mpu", "dma"; 456 reg-names = "mpu", "dma";
352 interrupts = <0 114 0x4>; 457 interrupts = <0 114 0x4>;
353 ti,hwmods = "dmic"; 458 ti,hwmods = "dmic";
459 dmas = <&sdma 67>;
460 dma-names = "up_link";
354 }; 461 };
355 462
356 mcbsp1: mcbsp@40122000 { 463 mcbsp1: mcbsp@40122000 {
@@ -362,6 +469,9 @@
362 interrupt-names = "common"; 469 interrupt-names = "common";
363 ti,buffer-size = <128>; 470 ti,buffer-size = <128>;
364 ti,hwmods = "mcbsp1"; 471 ti,hwmods = "mcbsp1";
472 dmas = <&sdma 33>,
473 <&sdma 34>;
474 dma-names = "tx", "rx";
365 }; 475 };
366 476
367 mcbsp2: mcbsp@40124000 { 477 mcbsp2: mcbsp@40124000 {
@@ -373,6 +483,9 @@
373 interrupt-names = "common"; 483 interrupt-names = "common";
374 ti,buffer-size = <128>; 484 ti,buffer-size = <128>;
375 ti,hwmods = "mcbsp2"; 485 ti,hwmods = "mcbsp2";
486 dmas = <&sdma 17>,
487 <&sdma 18>;
488 dma-names = "tx", "rx";
376 }; 489 };
377 490
378 mcbsp3: mcbsp@40126000 { 491 mcbsp3: mcbsp@40126000 {
@@ -384,10 +497,13 @@
384 interrupt-names = "common"; 497 interrupt-names = "common";
385 ti,buffer-size = <128>; 498 ti,buffer-size = <128>;
386 ti,hwmods = "mcbsp3"; 499 ti,hwmods = "mcbsp3";
500 dmas = <&sdma 19>,
501 <&sdma 20>;
502 dma-names = "tx", "rx";
387 }; 503 };
388 504
389 timer1: timer@4ae18000 { 505 timer1: timer@4ae18000 {
390 compatible = "ti,omap2-timer"; 506 compatible = "ti,omap5430-timer";
391 reg = <0x4ae18000 0x80>; 507 reg = <0x4ae18000 0x80>;
392 interrupts = <0 37 0x4>; 508 interrupts = <0 37 0x4>;
393 ti,hwmods = "timer1"; 509 ti,hwmods = "timer1";
@@ -395,28 +511,28 @@
395 }; 511 };
396 512
397 timer2: timer@48032000 { 513 timer2: timer@48032000 {
398 compatible = "ti,omap2-timer"; 514 compatible = "ti,omap5430-timer";
399 reg = <0x48032000 0x80>; 515 reg = <0x48032000 0x80>;
400 interrupts = <0 38 0x4>; 516 interrupts = <0 38 0x4>;
401 ti,hwmods = "timer2"; 517 ti,hwmods = "timer2";
402 }; 518 };
403 519
404 timer3: timer@48034000 { 520 timer3: timer@48034000 {
405 compatible = "ti,omap2-timer"; 521 compatible = "ti,omap5430-timer";
406 reg = <0x48034000 0x80>; 522 reg = <0x48034000 0x80>;
407 interrupts = <0 39 0x4>; 523 interrupts = <0 39 0x4>;
408 ti,hwmods = "timer3"; 524 ti,hwmods = "timer3";
409 }; 525 };
410 526
411 timer4: timer@48036000 { 527 timer4: timer@48036000 {
412 compatible = "ti,omap2-timer"; 528 compatible = "ti,omap5430-timer";
413 reg = <0x48036000 0x80>; 529 reg = <0x48036000 0x80>;
414 interrupts = <0 40 0x4>; 530 interrupts = <0 40 0x4>;
415 ti,hwmods = "timer4"; 531 ti,hwmods = "timer4";
416 }; 532 };
417 533
418 timer5: timer@40138000 { 534 timer5: timer@40138000 {
419 compatible = "ti,omap2-timer"; 535 compatible = "ti,omap5430-timer";
420 reg = <0x40138000 0x80>, 536 reg = <0x40138000 0x80>,
421 <0x49038000 0x80>; 537 <0x49038000 0x80>;
422 interrupts = <0 41 0x4>; 538 interrupts = <0 41 0x4>;
@@ -425,7 +541,7 @@
425 }; 541 };
426 542
427 timer6: timer@4013a000 { 543 timer6: timer@4013a000 {
428 compatible = "ti,omap2-timer"; 544 compatible = "ti,omap5430-timer";
429 reg = <0x4013a000 0x80>, 545 reg = <0x4013a000 0x80>,
430 <0x4903a000 0x80>; 546 <0x4903a000 0x80>;
431 interrupts = <0 42 0x4>; 547 interrupts = <0 42 0x4>;
@@ -435,7 +551,7 @@
435 }; 551 };
436 552
437 timer7: timer@4013c000 { 553 timer7: timer@4013c000 {
438 compatible = "ti,omap2-timer"; 554 compatible = "ti,omap5430-timer";
439 reg = <0x4013c000 0x80>, 555 reg = <0x4013c000 0x80>,
440 <0x4903c000 0x80>; 556 <0x4903c000 0x80>;
441 interrupts = <0 43 0x4>; 557 interrupts = <0 43 0x4>;
@@ -444,7 +560,7 @@
444 }; 560 };
445 561
446 timer8: timer@4013e000 { 562 timer8: timer@4013e000 {
447 compatible = "ti,omap2-timer"; 563 compatible = "ti,omap5430-timer";
448 reg = <0x4013e000 0x80>, 564 reg = <0x4013e000 0x80>,
449 <0x4903e000 0x80>; 565 <0x4903e000 0x80>;
450 interrupts = <0 44 0x4>; 566 interrupts = <0 44 0x4>;
@@ -454,27 +570,34 @@
454 }; 570 };
455 571
456 timer9: timer@4803e000 { 572 timer9: timer@4803e000 {
457 compatible = "ti,omap2-timer"; 573 compatible = "ti,omap5430-timer";
458 reg = <0x4803e000 0x80>; 574 reg = <0x4803e000 0x80>;
459 interrupts = <0 45 0x4>; 575 interrupts = <0 45 0x4>;
460 ti,hwmods = "timer9"; 576 ti,hwmods = "timer9";
461 }; 577 };
462 578
463 timer10: timer@48086000 { 579 timer10: timer@48086000 {
464 compatible = "ti,omap2-timer"; 580 compatible = "ti,omap5430-timer";
465 reg = <0x48086000 0x80>; 581 reg = <0x48086000 0x80>;
466 interrupts = <0 46 0x4>; 582 interrupts = <0 46 0x4>;
467 ti,hwmods = "timer10"; 583 ti,hwmods = "timer10";
468 }; 584 };
469 585
470 timer11: timer@48088000 { 586 timer11: timer@48088000 {
471 compatible = "ti,omap2-timer"; 587 compatible = "ti,omap5430-timer";
472 reg = <0x48088000 0x80>; 588 reg = <0x48088000 0x80>;
473 interrupts = <0 47 0x4>; 589 interrupts = <0 47 0x4>;
474 ti,hwmods = "timer11"; 590 ti,hwmods = "timer11";
475 ti,timer-pwm; 591 ti,timer-pwm;
476 }; 592 };
477 593
594 wdt2: wdt@4ae14000 {
595 compatible = "ti,omap5-wdt", "ti,omap3-wdt";
596 reg = <0x4ae14000 0x80>;
597 interrupts = <0 80 0x4>;
598 ti,hwmods = "wd_timer2";
599 };
600
478 emif1: emif@0x4c000000 { 601 emif1: emif@0x4c000000 {
479 compatible = "ti,emif-4d5"; 602 compatible = "ti,emif-4d5";
480 ti,hwmods = "emif1"; 603 ti,hwmods = "emif1";
@@ -496,5 +619,53 @@
496 hw-caps-ll-interface; 619 hw-caps-ll-interface;
497 hw-caps-temp-alert; 620 hw-caps-temp-alert;
498 }; 621 };
622
623 omap_control_usb: omap-control-usb@4a002300 {
624 compatible = "ti,omap-control-usb";
625 reg = <0x4a002300 0x4>,
626 <0x4a002370 0x4>;
627 reg-names = "control_dev_conf", "phy_power_usb";
628 ti,type = <2>;
629 };
630
631 omap_dwc3@4a020000 {
632 compatible = "ti,dwc3";
633 ti,hwmods = "usb_otg_ss";
634 reg = <0x4a020000 0x1000>;
635 interrupts = <0 93 4>;
636 #address-cells = <1>;
637 #size-cells = <1>;
638 utmi-mode = <2>;
639 ranges;
640 dwc3@4a030000 {
641 compatible = "synopsys,dwc3";
642 reg = <0x4a030000 0x1000>;
643 interrupts = <0 92 4>;
644 usb-phy = <&usb2_phy>, <&usb3_phy>;
645 tx-fifo-resize;
646 };
647 };
648
649 ocp2scp {
650 compatible = "ti,omap-ocp2scp";
651 #address-cells = <1>;
652 #size-cells = <1>;
653 ranges;
654 ti,hwmods = "ocp2scp1";
655 usb2_phy: usb2phy@4a084000 {
656 compatible = "ti,omap-usb2";
657 reg = <0x4a084000 0x7c>;
658 ctrl-module = <&omap_control_usb>;
659 };
660
661 usb3_phy: usb3phy@4a084400 {
662 compatible = "ti,omap-usb3";
663 reg = <0x4a084400 0x80>,
664 <0x4a084800 0x64>,
665 <0x4a084c00 0x40>;
666 reg-names = "phy_rx", "phy_tx", "pll_ctrl";
667 ctrl-module = <&omap_control_usb>;
668 };
669 };
499 }; 670 };
500}; 671};
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
index 616990dc92db..72c1f27af7f3 100644
--- a/arch/arm/boot/dts/tegra114-dalmore.dts
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
@@ -10,14 +10,835 @@
10 reg = <0x80000000 0x40000000>; 10 reg = <0x80000000 0x40000000>;
11 }; 11 };
12 12
13 pinmux {
14 pinctrl-names = "default";
15 pinctrl-0 = <&state_default>;
16
17 state_default: pinmux {
18 clk1_out_pw4 {
19 nvidia,pins = "clk1_out_pw4";
20 nvidia,function = "extperiph1";
21 nvidia,pull = <0>;
22 nvidia,tristate = <0>;
23 nvidia,enable-input = <0>;
24 };
25 dap1_din_pn1 {
26 nvidia,pins = "dap1_din_pn1";
27 nvidia,function = "i2s0";
28 nvidia,pull = <0>;
29 nvidia,tristate = <1>;
30 nvidia,enable-input = <1>;
31 };
32 dap1_dout_pn2 {
33 nvidia,pins = "dap1_dout_pn2",
34 "dap1_fs_pn0",
35 "dap1_sclk_pn3";
36 nvidia,function = "i2s0";
37 nvidia,pull = <0>;
38 nvidia,tristate = <0>;
39 nvidia,enable-input = <1>;
40 };
41 dap2_din_pa4 {
42 nvidia,pins = "dap2_din_pa4";
43 nvidia,function = "i2s1";
44 nvidia,pull = <0>;
45 nvidia,tristate = <1>;
46 nvidia,enable-input = <1>;
47 };
48 dap2_dout_pa5 {
49 nvidia,pins = "dap2_dout_pa5",
50 "dap2_fs_pa2",
51 "dap2_sclk_pa3";
52 nvidia,function = "i2s1";
53 nvidia,pull = <0>;
54 nvidia,tristate = <0>;
55 nvidia,enable-input = <1>;
56 };
57 dap4_din_pp5 {
58 nvidia,pins = "dap4_din_pp5",
59 "dap4_dout_pp6",
60 "dap4_fs_pp4",
61 "dap4_sclk_pp7";
62 nvidia,function = "i2s3";
63 nvidia,pull = <0>;
64 nvidia,tristate = <0>;
65 nvidia,enable-input = <1>;
66 };
67 dvfs_pwm_px0 {
68 nvidia,pins = "dvfs_pwm_px0",
69 "dvfs_clk_px2";
70 nvidia,function = "cldvfs";
71 nvidia,pull = <0>;
72 nvidia,tristate = <0>;
73 nvidia,enable-input = <0>;
74 };
75 ulpi_clk_py0 {
76 nvidia,pins = "ulpi_clk_py0",
77 "ulpi_data0_po1",
78 "ulpi_data1_po2",
79 "ulpi_data2_po3",
80 "ulpi_data3_po4",
81 "ulpi_data4_po5",
82 "ulpi_data5_po6",
83 "ulpi_data6_po7",
84 "ulpi_data7_po0";
85 nvidia,function = "ulpi";
86 nvidia,pull = <0>;
87 nvidia,tristate = <0>;
88 nvidia,enable-input = <1>;
89 };
90 ulpi_dir_py1 {
91 nvidia,pins = "ulpi_dir_py1",
92 "ulpi_nxt_py2";
93 nvidia,function = "ulpi";
94 nvidia,pull = <0>;
95 nvidia,tristate = <1>;
96 nvidia,enable-input = <1>;
97 };
98 ulpi_stp_py3 {
99 nvidia,pins = "ulpi_stp_py3";
100 nvidia,function = "ulpi";
101 nvidia,pull = <0>;
102 nvidia,tristate = <0>;
103 nvidia,enable-input = <0>;
104 };
105 cam_i2c_scl_pbb1 {
106 nvidia,pins = "cam_i2c_scl_pbb1",
107 "cam_i2c_sda_pbb2";
108 nvidia,function = "i2c3";
109 nvidia,pull = <0>;
110 nvidia,tristate = <0>;
111 nvidia,enable-input = <1>;
112 nvidia,lock = <0>;
113 nvidia,open-drain = <0>;
114 };
115 cam_mclk_pcc0 {
116 nvidia,pins = "cam_mclk_pcc0",
117 "pbb0";
118 nvidia,function = "vi_alt3";
119 nvidia,pull = <0>;
120 nvidia,tristate = <0>;
121 nvidia,enable-input = <0>;
122 nvidia,lock = <0>;
123 };
124 gen2_i2c_scl_pt5 {
125 nvidia,pins = "gen2_i2c_scl_pt5",
126 "gen2_i2c_sda_pt6";
127 nvidia,function = "i2c2";
128 nvidia,pull = <0>;
129 nvidia,tristate = <0>;
130 nvidia,enable-input = <1>;
131 nvidia,lock = <0>;
132 nvidia,open-drain = <0>;
133 };
134 gmi_a16_pj7 {
135 nvidia,pins = "gmi_a16_pj7";
136 nvidia,function = "uartd";
137 nvidia,pull = <0>;
138 nvidia,tristate = <0>;
139 nvidia,enable-input = <0>;
140 };
141 gmi_a17_pb0 {
142 nvidia,pins = "gmi_a17_pb0",
143 "gmi_a18_pb1";
144 nvidia,function = "uartd";
145 nvidia,pull = <0>;
146 nvidia,tristate = <1>;
147 nvidia,enable-input = <1>;
148 };
149 gmi_a19_pk7 {
150 nvidia,pins = "gmi_a19_pk7";
151 nvidia,function = "uartd";
152 nvidia,pull = <0>;
153 nvidia,tristate = <0>;
154 nvidia,enable-input = <0>;
155 };
156 gmi_ad5_pg5 {
157 nvidia,pins = "gmi_ad5_pg5",
158 "gmi_cs6_n_pi3",
159 "gmi_wr_n_pi0";
160 nvidia,function = "spi4";
161 nvidia,pull = <0>;
162 nvidia,tristate = <0>;
163 nvidia,enable-input = <1>;
164 };
165 gmi_ad6_pg6 {
166 nvidia,pins = "gmi_ad6_pg6",
167 "gmi_ad7_pg7";
168 nvidia,function = "spi4";
169 nvidia,pull = <2>;
170 nvidia,tristate = <0>;
171 nvidia,enable-input = <1>;
172 };
173 gmi_ad12_ph4 {
174 nvidia,pins = "gmi_ad12_ph4";
175 nvidia,function = "rsvd4";
176 nvidia,pull = <0>;
177 nvidia,tristate = <0>;
178 nvidia,enable-input = <0>;
179 };
180 gmi_ad9_ph1 {
181 nvidia,pins = "gmi_ad9_ph1";
182 nvidia,function = "pwm1";
183 nvidia,pull = <0>;
184 nvidia,tristate = <0>;
185 nvidia,enable-input = <0>;
186 };
187 gmi_cs1_n_pj2 {
188 nvidia,pins = "gmi_cs1_n_pj2",
189 "gmi_oe_n_pi1";
190 nvidia,function = "soc";
191 nvidia,pull = <0>;
192 nvidia,tristate = <1>;
193 nvidia,enable-input = <1>;
194 };
195 clk2_out_pw5 {
196 nvidia,pins = "clk2_out_pw5";
197 nvidia,function = "extperiph2";
198 nvidia,pull = <0>;
199 nvidia,tristate = <0>;
200 nvidia,enable-input = <0>;
201 };
202 sdmmc1_clk_pz0 {
203 nvidia,pins = "sdmmc1_clk_pz0";
204 nvidia,function = "sdmmc1";
205 nvidia,pull = <0>;
206 nvidia,tristate = <0>;
207 nvidia,enable-input = <1>;
208 };
209 sdmmc1_cmd_pz1 {
210 nvidia,pins = "sdmmc1_cmd_pz1",
211 "sdmmc1_dat0_py7",
212 "sdmmc1_dat1_py6",
213 "sdmmc1_dat2_py5",
214 "sdmmc1_dat3_py4";
215 nvidia,function = "sdmmc1";
216 nvidia,pull = <2>;
217 nvidia,tristate = <0>;
218 nvidia,enable-input = <1>;
219 };
220 sdmmc1_wp_n_pv3 {
221 nvidia,pins = "sdmmc1_wp_n_pv3";
222 nvidia,function = "spi4";
223 nvidia,pull = <2>;
224 nvidia,tristate = <0>;
225 nvidia,enable-input = <0>;
226 };
227 sdmmc3_clk_pa6 {
228 nvidia,pins = "sdmmc3_clk_pa6";
229 nvidia,function = "sdmmc3";
230 nvidia,pull = <0>;
231 nvidia,tristate = <0>;
232 nvidia,enable-input = <1>;
233 };
234 sdmmc3_cmd_pa7 {
235 nvidia,pins = "sdmmc3_cmd_pa7",
236 "sdmmc3_dat0_pb7",
237 "sdmmc3_dat1_pb6",
238 "sdmmc3_dat2_pb5",
239 "sdmmc3_dat3_pb4",
240 "kb_col4_pq4",
241 "sdmmc3_clk_lb_out_pee4",
242 "sdmmc3_clk_lb_in_pee5";
243 nvidia,function = "sdmmc3";
244 nvidia,pull = <2>;
245 nvidia,tristate = <0>;
246 nvidia,enable-input = <1>;
247 };
248 sdmmc4_clk_pcc4 {
249 nvidia,pins = "sdmmc4_clk_pcc4";
250 nvidia,function = "sdmmc4";
251 nvidia,pull = <0>;
252 nvidia,tristate = <0>;
253 nvidia,enable-input = <1>;
254 };
255 sdmmc4_cmd_pt7 {
256 nvidia,pins = "sdmmc4_cmd_pt7",
257 "sdmmc4_dat0_paa0",
258 "sdmmc4_dat1_paa1",
259 "sdmmc4_dat2_paa2",
260 "sdmmc4_dat3_paa3",
261 "sdmmc4_dat4_paa4",
262 "sdmmc4_dat5_paa5",
263 "sdmmc4_dat6_paa6",
264 "sdmmc4_dat7_paa7";
265 nvidia,function = "sdmmc4";
266 nvidia,pull = <2>;
267 nvidia,tristate = <0>;
268 nvidia,enable-input = <1>;
269 };
270 clk_32k_out_pa0 {
271 nvidia,pins = "clk_32k_out_pa0";
272 nvidia,function = "blink";
273 nvidia,pull = <0>;
274 nvidia,tristate = <0>;
275 nvidia,enable-input = <0>;
276 };
277 kb_col0_pq0 {
278 nvidia,pins = "kb_col0_pq0",
279 "kb_col1_pq1",
280 "kb_col2_pq2",
281 "kb_row0_pr0",
282 "kb_row1_pr1",
283 "kb_row2_pr2";
284 nvidia,function = "kbc";
285 nvidia,pull = <2>;
286 nvidia,tristate = <0>;
287 nvidia,enable-input = <1>;
288 };
289 dap3_din_pp1 {
290 nvidia,pins = "dap3_din_pp1",
291 "dap3_sclk_pp3";
292 nvidia,function = "displayb";
293 nvidia,pull = <0>;
294 nvidia,tristate = <1>;
295 nvidia,enable-input = <0>;
296 };
297 pv0 {
298 nvidia,pins = "pv0";
299 nvidia,function = "rsvd4";
300 nvidia,pull = <0>;
301 nvidia,tristate = <1>;
302 nvidia,enable-input = <0>;
303 };
304 kb_row7_pr7 {
305 nvidia,pins = "kb_row7_pr7";
306 nvidia,function = "rsvd2";
307 nvidia,pull = <2>;
308 nvidia,tristate = <0>;
309 nvidia,enable-input = <1>;
310 };
311 kb_row10_ps2 {
312 nvidia,pins = "kb_row10_ps2";
313 nvidia,function = "uarta";
314 nvidia,pull = <0>;
315 nvidia,tristate = <1>;
316 nvidia,enable-input = <1>;
317 };
318 kb_row9_ps1 {
319 nvidia,pins = "kb_row9_ps1";
320 nvidia,function = "uarta";
321 nvidia,pull = <0>;
322 nvidia,tristate = <0>;
323 nvidia,enable-input = <0>;
324 };
325 pwr_i2c_scl_pz6 {
326 nvidia,pins = "pwr_i2c_scl_pz6",
327 "pwr_i2c_sda_pz7";
328 nvidia,function = "i2cpwr";
329 nvidia,pull = <0>;
330 nvidia,tristate = <0>;
331 nvidia,enable-input = <1>;
332 nvidia,lock = <0>;
333 nvidia,open-drain = <0>;
334 };
335 sys_clk_req_pz5 {
336 nvidia,pins = "sys_clk_req_pz5";
337 nvidia,function = "sysclk";
338 nvidia,pull = <0>;
339 nvidia,tristate = <0>;
340 nvidia,enable-input = <0>;
341 };
342 core_pwr_req {
343 nvidia,pins = "core_pwr_req";
344 nvidia,function = "pwron";
345 nvidia,pull = <0>;
346 nvidia,tristate = <0>;
347 nvidia,enable-input = <0>;
348 };
349 cpu_pwr_req {
350 nvidia,pins = "cpu_pwr_req";
351 nvidia,function = "cpu";
352 nvidia,pull = <0>;
353 nvidia,tristate = <0>;
354 nvidia,enable-input = <0>;
355 };
356 pwr_int_n {
357 nvidia,pins = "pwr_int_n";
358 nvidia,function = "pmi";
359 nvidia,pull = <0>;
360 nvidia,tristate = <1>;
361 nvidia,enable-input = <1>;
362 };
363 reset_out_n {
364 nvidia,pins = "reset_out_n";
365 nvidia,function = "reset_out_n";
366 nvidia,pull = <0>;
367 nvidia,tristate = <0>;
368 nvidia,enable-input = <0>;
369 };
370 clk3_out_pee0 {
371 nvidia,pins = "clk3_out_pee0";
372 nvidia,function = "extperiph3";
373 nvidia,pull = <0>;
374 nvidia,tristate = <0>;
375 nvidia,enable-input = <0>;
376 };
377 gen1_i2c_scl_pc4 {
378 nvidia,pins = "gen1_i2c_scl_pc4",
379 "gen1_i2c_sda_pc5";
380 nvidia,function = "i2c1";
381 nvidia,pull = <0>;
382 nvidia,tristate = <0>;
383 nvidia,enable-input = <1>;
384 nvidia,lock = <0>;
385 nvidia,open-drain = <0>;
386 };
387 uart2_cts_n_pj5 {
388 nvidia,pins = "uart2_cts_n_pj5";
389 nvidia,function = "uartb";
390 nvidia,pull = <0>;
391 nvidia,tristate = <1>;
392 nvidia,enable-input = <1>;
393 };
394 uart2_rts_n_pj6 {
395 nvidia,pins = "uart2_rts_n_pj6";
396 nvidia,function = "uartb";
397 nvidia,pull = <0>;
398 nvidia,tristate = <0>;
399 nvidia,enable-input = <0>;
400 };
401 uart2_rxd_pc3 {
402 nvidia,pins = "uart2_rxd_pc3";
403 nvidia,function = "irda";
404 nvidia,pull = <0>;
405 nvidia,tristate = <1>;
406 nvidia,enable-input = <1>;
407 };
408 uart2_txd_pc2 {
409 nvidia,pins = "uart2_txd_pc2";
410 nvidia,function = "irda";
411 nvidia,pull = <0>;
412 nvidia,tristate = <0>;
413 nvidia,enable-input = <0>;
414 };
415 uart3_cts_n_pa1 {
416 nvidia,pins = "uart3_cts_n_pa1",
417 "uart3_rxd_pw7";
418 nvidia,function = "uartc";
419 nvidia,pull = <0>;
420 nvidia,tristate = <1>;
421 nvidia,enable-input = <1>;
422 };
423 uart3_rts_n_pc0 {
424 nvidia,pins = "uart3_rts_n_pc0",
425 "uart3_txd_pw6";
426 nvidia,function = "uartc";
427 nvidia,pull = <0>;
428 nvidia,tristate = <0>;
429 nvidia,enable-input = <0>;
430 };
431 owr {
432 nvidia,pins = "owr";
433 nvidia,function = "owr";
434 nvidia,pull = <0>;
435 nvidia,tristate = <0>;
436 nvidia,enable-input = <1>;
437 };
438 hdmi_cec_pee3 {
439 nvidia,pins = "hdmi_cec_pee3";
440 nvidia,function = "cec";
441 nvidia,pull = <0>;
442 nvidia,tristate = <0>;
443 nvidia,enable-input = <1>;
444 nvidia,lock = <0>;
445 nvidia,open-drain = <0>;
446 };
447 ddc_scl_pv4 {
448 nvidia,pins = "ddc_scl_pv4",
449 "ddc_sda_pv5";
450 nvidia,function = "i2c4";
451 nvidia,pull = <0>;
452 nvidia,tristate = <0>;
453 nvidia,enable-input = <1>;
454 nvidia,lock = <0>;
455 nvidia,rcv-sel = <1>;
456 };
457 spdif_in_pk6 {
458 nvidia,pins = "spdif_in_pk6";
459 nvidia,function = "usb";
460 nvidia,pull = <2>;
461 nvidia,tristate = <0>;
462 nvidia,enable-input = <1>;
463 nvidia,lock = <0>;
464 };
465 usb_vbus_en0_pn4 {
466 nvidia,pins = "usb_vbus_en0_pn4";
467 nvidia,function = "usb";
468 nvidia,pull = <2>;
469 nvidia,tristate = <0>;
470 nvidia,enable-input = <1>;
471 nvidia,lock = <0>;
472 nvidia,open-drain = <1>;
473 };
474 gpio_x6_aud_px6 {
475 nvidia,pins = "gpio_x6_aud_px6";
476 nvidia,function = "spi6";
477 nvidia,pull = <2>;
478 nvidia,tristate = <1>;
479 nvidia,enable-input = <1>;
480 };
481 gpio_x4_aud_px4 {
482 nvidia,pins = "gpio_x4_aud_px4",
483 "gpio_x7_aud_px7";
484 nvidia,function = "rsvd1";
485 nvidia,pull = <1>;
486 nvidia,tristate = <0>;
487 nvidia,enable-input = <0>;
488 };
489 gpio_x5_aud_px5 {
490 nvidia,pins = "gpio_x5_aud_px5";
491 nvidia,function = "rsvd1";
492 nvidia,pull = <2>;
493 nvidia,tristate = <0>;
494 nvidia,enable-input = <1>;
495 };
496 gpio_w2_aud_pw2 {
497 nvidia,pins = "gpio_w2_aud_pw2";
498 nvidia,function = "rsvd2";
499 nvidia,pull = <2>;
500 nvidia,tristate = <0>;
501 nvidia,enable-input = <1>;
502 };
503 gpio_w3_aud_pw3 {
504 nvidia,pins = "gpio_w3_aud_pw3";
505 nvidia,function = "spi6";
506 nvidia,pull = <2>;
507 nvidia,tristate = <0>;
508 nvidia,enable-input = <1>;
509 };
510 gpio_x1_aud_px1 {
511 nvidia,pins = "gpio_x1_aud_px1";
512 nvidia,function = "rsvd4";
513 nvidia,pull = <1>;
514 nvidia,tristate = <0>;
515 nvidia,enable-input = <1>;
516 };
517 gpio_x3_aud_px3 {
518 nvidia,pins = "gpio_x3_aud_px3";
519 nvidia,function = "rsvd4";
520 nvidia,pull = <2>;
521 nvidia,tristate = <0>;
522 nvidia,enable-input = <1>;
523 };
524 dap3_fs_pp0 {
525 nvidia,pins = "dap3_fs_pp0";
526 nvidia,function = "i2s2";
527 nvidia,pull = <1>;
528 nvidia,tristate = <0>;
529 nvidia,enable-input = <0>;
530 };
531 dap3_dout_pp2 {
532 nvidia,pins = "dap3_dout_pp2";
533 nvidia,function = "i2s2";
534 nvidia,pull = <1>;
535 nvidia,tristate = <0>;
536 nvidia,enable-input = <0>;
537 };
538 pv1 {
539 nvidia,pins = "pv1";
540 nvidia,function = "rsvd1";
541 nvidia,pull = <0>;
542 nvidia,tristate = <0>;
543 nvidia,enable-input = <1>;
544 };
545 pbb3 {
546 nvidia,pins = "pbb3",
547 "pbb5",
548 "pbb6",
549 "pbb7";
550 nvidia,function = "rsvd4";
551 nvidia,pull = <1>;
552 nvidia,tristate = <0>;
553 nvidia,enable-input = <0>;
554 };
555 pcc1 {
556 nvidia,pins = "pcc1",
557 "pcc2";
558 nvidia,function = "rsvd4";
559 nvidia,pull = <1>;
560 nvidia,tristate = <0>;
561 nvidia,enable-input = <1>;
562 };
563 gmi_ad0_pg0 {
564 nvidia,pins = "gmi_ad0_pg0",
565 "gmi_ad1_pg1";
566 nvidia,function = "gmi";
567 nvidia,pull = <0>;
568 nvidia,tristate = <0>;
569 nvidia,enable-input = <0>;
570 };
571 gmi_ad10_ph2 {
572 nvidia,pins = "gmi_ad10_ph2",
573 "gmi_ad11_ph3",
574 "gmi_ad13_ph5",
575 "gmi_ad8_ph0",
576 "gmi_clk_pk1";
577 nvidia,function = "gmi";
578 nvidia,pull = <1>;
579 nvidia,tristate = <0>;
580 nvidia,enable-input = <0>;
581 };
582 gmi_ad2_pg2 {
583 nvidia,pins = "gmi_ad2_pg2",
584 "gmi_ad3_pg3";
585 nvidia,function = "gmi";
586 nvidia,pull = <0>;
587 nvidia,tristate = <0>;
588 nvidia,enable-input = <1>;
589 };
590 gmi_adv_n_pk0 {
591 nvidia,pins = "gmi_adv_n_pk0",
592 "gmi_cs0_n_pj0",
593 "gmi_cs2_n_pk3",
594 "gmi_cs4_n_pk2",
595 "gmi_cs7_n_pi6",
596 "gmi_dqs_p_pj3",
597 "gmi_iordy_pi5",
598 "gmi_wp_n_pc7";
599 nvidia,function = "gmi";
600 nvidia,pull = <2>;
601 nvidia,tristate = <0>;
602 nvidia,enable-input = <1>;
603 };
604 gmi_cs3_n_pk4 {
605 nvidia,pins = "gmi_cs3_n_pk4";
606 nvidia,function = "gmi";
607 nvidia,pull = <2>;
608 nvidia,tristate = <0>;
609 nvidia,enable-input = <0>;
610 };
611 clk2_req_pcc5 {
612 nvidia,pins = "clk2_req_pcc5";
613 nvidia,function = "rsvd4";
614 nvidia,pull = <0>;
615 nvidia,tristate = <0>;
616 nvidia,enable-input = <0>;
617 };
618 kb_col3_pq3 {
619 nvidia,pins = "kb_col3_pq3",
620 "kb_col6_pq6",
621 "kb_col7_pq7";
622 nvidia,function = "kbc";
623 nvidia,pull = <2>;
624 nvidia,tristate = <0>;
625 nvidia,enable-input = <0>;
626 };
627 kb_col5_pq5 {
628 nvidia,pins = "kb_col5_pq5";
629 nvidia,function = "kbc";
630 nvidia,pull = <2>;
631 nvidia,tristate = <0>;
632 nvidia,enable-input = <1>;
633 };
634 kb_row3_pr3 {
635 nvidia,pins = "kb_row3_pr3",
636 "kb_row4_pr4",
637 "kb_row6_pr6",
638 "kb_row8_ps0";
639 nvidia,function = "kbc";
640 nvidia,pull = <1>;
641 nvidia,tristate = <0>;
642 nvidia,enable-input = <1>;
643 };
644 clk3_req_pee1 {
645 nvidia,pins = "clk3_req_pee1";
646 nvidia,function = "rsvd4";
647 nvidia,pull = <0>;
648 nvidia,tristate = <0>;
649 nvidia,enable-input = <0>;
650 };
651 pu4 {
652 nvidia,pins = "pu4";
653 nvidia,function = "displayb";
654 nvidia,pull = <0>;
655 nvidia,tristate = <0>;
656 nvidia,enable-input = <0>;
657 };
658 pu5 {
659 nvidia,pins = "pu5",
660 "pu6";
661 nvidia,function = "displayb";
662 nvidia,pull = <0>;
663 nvidia,tristate = <0>;
664 nvidia,enable-input = <1>;
665 };
666 hdmi_int_pn7 {
667 nvidia,pins = "hdmi_int_pn7";
668 nvidia,function = "rsvd1";
669 nvidia,pull = <1>;
670 nvidia,tristate = <0>;
671 nvidia,enable-input = <1>;
672 };
673 clk1_req_pee2 {
674 nvidia,pins = "clk1_req_pee2",
675 "usb_vbus_en1_pn5";
676 nvidia,function = "rsvd4";
677 nvidia,pull = <1>;
678 nvidia,tristate = <1>;
679 nvidia,enable-input = <0>;
680 };
681
682 drive_sdio1 {
683 nvidia,pins = "drive_sdio1";
684 nvidia,high-speed-mode = <1>;
685 nvidia,schmitt = <0>;
686 nvidia,low-power-mode = <3>;
687 nvidia,pull-down-strength = <36>;
688 nvidia,pull-up-strength = <20>;
689 nvidia,slew-rate-rising = <2>;
690 nvidia,slew-rate-falling = <2>;
691 };
692 drive_sdio3 {
693 nvidia,pins = "drive_sdio3";
694 nvidia,high-speed-mode = <1>;
695 nvidia,schmitt = <0>;
696 nvidia,low-power-mode = <3>;
697 nvidia,pull-down-strength = <22>;
698 nvidia,pull-up-strength = <36>;
699 nvidia,slew-rate-rising = <0>;
700 nvidia,slew-rate-falling = <0>;
701 };
702 drive_gma {
703 nvidia,pins = "drive_gma";
704 nvidia,high-speed-mode = <1>;
705 nvidia,schmitt = <0>;
706 nvidia,low-power-mode = <3>;
707 nvidia,pull-down-strength = <2>;
708 nvidia,pull-up-strength = <1>;
709 nvidia,slew-rate-rising = <0>;
710 nvidia,slew-rate-falling = <0>;
711 nvidia,drive-type = <1>;
712 };
713 };
714 };
715
13 serial@70006300 { 716 serial@70006300 {
14 status = "okay"; 717 status = "okay";
15 }; 718 };
16 719
720 i2c@7000c000 {
721 status = "okay";
722 clock-frequency = <100000>;
723
724 battery: smart-battery {
725 compatible = "ti,bq20z45", "sbs,sbs-battery";
726 reg = <0xb>;
727 battery-name = "battery";
728 sbs,i2c-retry-count = <2>;
729 sbs,poll-retry-count = <100>;
730 };
731 };
732
733 i2c@7000d000 {
734 status = "okay";
735 clock-frequency = <400000>;
736
737 tps51632 {
738 compatible = "ti,tps51632";
739 reg = <0x43>;
740 regulator-name = "vdd-cpu";
741 regulator-min-microvolt = <500000>;
742 regulator-max-microvolt = <1520000>;
743 regulator-boot-on;
744 regulator-always-on;
745 };
746
747 tps65090 {
748 compatible = "ti,tps65090";
749 reg = <0x48>;
750 interrupt-parent = <&gpio>;
751 interrupts = <72 0x04>; /* gpio PJ0 */
752
753 vsys1-supply = <&vdd_ac_bat_reg>;
754 vsys2-supply = <&vdd_ac_bat_reg>;
755 vsys3-supply = <&vdd_ac_bat_reg>;
756 infet1-supply = <&vdd_ac_bat_reg>;
757 infet2-supply = <&vdd_ac_bat_reg>;
758 infet3-supply = <&tps65090_dcdc2_reg>;
759 infet4-supply = <&tps65090_dcdc2_reg>;
760 infet5-supply = <&tps65090_dcdc2_reg>;
761 infet6-supply = <&tps65090_dcdc2_reg>;
762 infet7-supply = <&tps65090_dcdc2_reg>;
763 vsys-l1-supply = <&vdd_ac_bat_reg>;
764 vsys-l2-supply = <&vdd_ac_bat_reg>;
765
766 regulators {
767 tps65090_dcdc1_reg: dcdc1 {
768 regulator-name = "vdd-sys-5v0";
769 regulator-always-on;
770 regulator-boot-on;
771 };
772
773 tps65090_dcdc2_reg: dcdc2 {
774 regulator-name = "vdd-sys-3v3";
775 regulator-always-on;
776 regulator-boot-on;
777 };
778
779 dcdc3 {
780 regulator-name = "vdd-ao";
781 regulator-always-on;
782 regulator-boot-on;
783 };
784
785 fet1 {
786 regulator-name = "vdd-lcd-bl";
787 };
788
789 fet3 {
790 regulator-name = "vdd-modem-3v3";
791 };
792
793 fet4 {
794 regulator-name = "avdd-lcd";
795 };
796
797 fet5 {
798 regulator-name = "vdd-lvds";
799 };
800
801 fet6 {
802 regulator-name = "vdd-sd-slot";
803 regulator-always-on;
804 regulator-boot-on;
805 };
806
807 fet7 {
808 regulator-name = "vdd-com-3v3";
809 };
810
811 ldo1 {
812 regulator-name = "vdd-sby-5v0";
813 regulator-always-on;
814 regulator-boot-on;
815 };
816
817 ldo2 {
818 regulator-name = "vdd-sby-3v3";
819 regulator-always-on;
820 regulator-boot-on;
821 };
822 };
823 };
824 };
825
17 pmc { 826 pmc {
18 nvidia,invert-interrupt; 827 nvidia,invert-interrupt;
19 }; 828 };
20 829
830 sdhci@78000400 {
831 cd-gpios = <&gpio 170 1>; /* gpio PV2 */
832 bus-width = <4>;
833 status = "okay";
834 };
835
836 sdhci@78000600 {
837 bus-width = <8>;
838 status = "okay";
839 non-removable;
840 };
841
21 clocks { 842 clocks {
22 compatible = "simple-bus"; 843 compatible = "simple-bus";
23 #address-cells = <1>; 844 #address-cells = <1>;
@@ -30,4 +851,74 @@
30 clock-frequency = <32768>; 851 clock-frequency = <32768>;
31 }; 852 };
32 }; 853 };
854
855 regulators {
856 compatible = "simple-bus";
857 #address-cells = <1>;
858 #size-cells = <0>;
859
860 vdd_ac_bat_reg: regulator@0 {
861 compatible = "regulator-fixed";
862 reg = <0>;
863 regulator-name = "vdd_ac_bat";
864 regulator-min-microvolt = <5000000>;
865 regulator-max-microvolt = <5000000>;
866 regulator-always-on;
867 };
868
869 dvdd_ts_reg: regulator@1 {
870 compatible = "regulator-fixed";
871 reg = <1>;
872 regulator-name = "dvdd_ts";
873 regulator-min-microvolt = <1800000>;
874 regulator-max-microvolt = <1800000>;
875 enable-active-high;
876 gpio = <&gpio 61 0>; /* GPIO PH5 */
877 };
878
879 lcd_bl_en_reg: regulator@2 {
880 compatible = "regulator-fixed";
881 reg = <2>;
882 regulator-name = "lcd_bl_en";
883 regulator-min-microvolt = <5000000>;
884 regulator-max-microvolt = <5000000>;
885 enable-active-high;
886 gpio = <&gpio 58 0>; /* GPIO PH2 */
887 };
888
889 usb1_vbus_reg: regulator@3 {
890 compatible = "regulator-fixed";
891 reg = <3>;
892 regulator-name = "usb1_vbus";
893 regulator-min-microvolt = <5000000>;
894 regulator-max-microvolt = <5000000>;
895 enable-active-high;
896 gpio = <&gpio 108 0>; /* GPIO PN4 */
897 gpio-open-drain;
898 vin-supply = <&tps65090_dcdc1_reg>;
899 };
900
901 usb3_vbus_reg: regulator@4 {
902 compatible = "regulator-fixed";
903 reg = <4>;
904 regulator-name = "usb2_vbus";
905 regulator-min-microvolt = <5000000>;
906 regulator-max-microvolt = <5000000>;
907 enable-active-high;
908 gpio = <&gpio 86 0>; /* GPIO PK6 */
909 gpio-open-drain;
910 vin-supply = <&tps65090_dcdc1_reg>;
911 };
912
913 vdd_hdmi_reg: regulator@5 {
914 compatible = "regulator-fixed";
915 reg = <5>;
916 regulator-name = "vdd_hdmi_5v0";
917 regulator-min-microvolt = <5000000>;
918 regulator-max-microvolt = <5000000>;
919 enable-active-high;
920 gpio = <&gpio 81 0>; /* GPIO PK1 */
921 vin-supply = <&tps65090_dcdc1_reg>;
922 };
923 };
33}; 924};
diff --git a/arch/arm/boot/dts/tegra114.dtsi b/arch/arm/boot/dts/tegra114.dtsi
index c1110a9b2a91..629415ffd8dc 100644
--- a/arch/arm/boot/dts/tegra114.dtsi
+++ b/arch/arm/boot/dts/tegra114.dtsi
@@ -4,6 +4,13 @@
4 compatible = "nvidia,tegra114"; 4 compatible = "nvidia,tegra114";
5 interrupt-parent = <&gic>; 5 interrupt-parent = <&gic>;
6 6
7 aliases {
8 serial0 = &uarta;
9 serial1 = &uartb;
10 serial2 = &uartc;
11 serial3 = &uartd;
12 };
13
7 gic: interrupt-controller { 14 gic: interrupt-controller {
8 compatible = "arm,cortex-a15-gic"; 15 compatible = "arm,cortex-a15-gic";
9 #interrupt-cells = <3>; 16 #interrupt-cells = <3>;
@@ -33,6 +40,44 @@
33 #clock-cells = <1>; 40 #clock-cells = <1>;
34 }; 41 };
35 42
43 apbdma: dma {
44 compatible = "nvidia,tegra114-apbdma";
45 reg = <0x6000a000 0x1400>;
46 interrupts = <0 104 0x04
47 0 105 0x04
48 0 106 0x04
49 0 107 0x04
50 0 108 0x04
51 0 109 0x04
52 0 110 0x04
53 0 111 0x04
54 0 112 0x04
55 0 113 0x04
56 0 114 0x04
57 0 115 0x04
58 0 116 0x04
59 0 117 0x04
60 0 118 0x04
61 0 119 0x04
62 0 128 0x04
63 0 129 0x04
64 0 130 0x04
65 0 131 0x04
66 0 132 0x04
67 0 133 0x04
68 0 134 0x04
69 0 135 0x04
70 0 136 0x04
71 0 137 0x04
72 0 138 0x04
73 0 139 0x04
74 0 140 0x04
75 0 141 0x04
76 0 142 0x04
77 0 143 0x04>;
78 clocks = <&tegra_car 34>;
79 };
80
36 ahb: ahb { 81 ahb: ahb {
37 compatible = "nvidia,tegra114-ahb", "nvidia,tegra30-ahb"; 82 compatible = "nvidia,tegra114-ahb", "nvidia,tegra30-ahb";
38 reg = <0x6000c004 0x14c>; 83 reg = <0x6000c004 0x14c>;
@@ -61,42 +106,189 @@
61 0x70003000 0x40c>; /* Mux registers */ 106 0x70003000 0x40c>; /* Mux registers */
62 }; 107 };
63 108
64 serial@70006000 { 109 /*
110 * There are two serial driver i.e. 8250 based simple serial
111 * driver and APB DMA based serial driver for higher baudrate
112 * and performace. To enable the 8250 based driver, the compatible
113 * is "nvidia,tegra114-uart", "nvidia,tegra20-uart" and to enable
114 * the APB DMA based serial driver, the comptible is
115 * "nvidia,tegra114-hsuart", "nvidia,tegra30-hsuart".
116 */
117 uarta: serial@70006000 {
65 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 118 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
66 reg = <0x70006000 0x40>; 119 reg = <0x70006000 0x40>;
67 reg-shift = <2>; 120 reg-shift = <2>;
68 interrupts = <0 36 0x04>; 121 interrupts = <0 36 0x04>;
122 nvidia,dma-request-selector = <&apbdma 8>;
69 status = "disabled"; 123 status = "disabled";
70 clocks = <&tegra_car 6>; 124 clocks = <&tegra_car 6>;
71 }; 125 };
72 126
73 serial@70006040 { 127 uartb: serial@70006040 {
74 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 128 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
75 reg = <0x70006040 0x40>; 129 reg = <0x70006040 0x40>;
76 reg-shift = <2>; 130 reg-shift = <2>;
77 interrupts = <0 37 0x04>; 131 interrupts = <0 37 0x04>;
132 nvidia,dma-request-selector = <&apbdma 9>;
78 status = "disabled"; 133 status = "disabled";
79 clocks = <&tegra_car 192>; 134 clocks = <&tegra_car 192>;
80 }; 135 };
81 136
82 serial@70006200 { 137 uartc: serial@70006200 {
83 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 138 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
84 reg = <0x70006200 0x100>; 139 reg = <0x70006200 0x100>;
85 reg-shift = <2>; 140 reg-shift = <2>;
86 interrupts = <0 46 0x04>; 141 interrupts = <0 46 0x04>;
142 nvidia,dma-request-selector = <&apbdma 10>;
87 status = "disabled"; 143 status = "disabled";
88 clocks = <&tegra_car 55>; 144 clocks = <&tegra_car 55>;
89 }; 145 };
90 146
91 serial@70006300 { 147 uartd: serial@70006300 {
92 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart"; 148 compatible = "nvidia,tegra114-uart", "nvidia,tegra20-uart";
93 reg = <0x70006300 0x100>; 149 reg = <0x70006300 0x100>;
94 reg-shift = <2>; 150 reg-shift = <2>;
95 interrupts = <0 90 0x04>; 151 interrupts = <0 90 0x04>;
152 nvidia,dma-request-selector = <&apbdma 19>;
96 status = "disabled"; 153 status = "disabled";
97 clocks = <&tegra_car 65>; 154 clocks = <&tegra_car 65>;
98 }; 155 };
99 156
157 pwm: pwm {
158 compatible = "nvidia,tegra114-pwm", "nvidia,tegra20-pwm";
159 reg = <0x7000a000 0x100>;
160 #pwm-cells = <2>;
161 clocks = <&tegra_car 17>;
162 status = "disabled";
163 };
164
165 i2c@7000c000 {
166 compatible = "nvidia,tegra114-i2c";
167 reg = <0x7000c000 0x100>;
168 interrupts = <0 38 0x04>;
169 #address-cells = <1>;
170 #size-cells = <0>;
171 clocks = <&tegra_car 12>;
172 clock-names = "div-clk";
173 status = "disabled";
174 };
175
176 i2c@7000c400 {
177 compatible = "nvidia,tegra114-i2c";
178 reg = <0x7000c400 0x100>;
179 interrupts = <0 84 0x04>;
180 #address-cells = <1>;
181 #size-cells = <0>;
182 clocks = <&tegra_car 54>;
183 clock-names = "div-clk";
184 status = "disabled";
185 };
186
187 i2c@7000c500 {
188 compatible = "nvidia,tegra114-i2c";
189 reg = <0x7000c500 0x100>;
190 interrupts = <0 92 0x04>;
191 #address-cells = <1>;
192 #size-cells = <0>;
193 clocks = <&tegra_car 67>;
194 clock-names = "div-clk";
195 status = "disabled";
196 };
197
198 i2c@7000c700 {
199 compatible = "nvidia,tegra114-i2c";
200 reg = <0x7000c700 0x100>;
201 interrupts = <0 120 0x04>;
202 #address-cells = <1>;
203 #size-cells = <0>;
204 clocks = <&tegra_car 103>;
205 clock-names = "div-clk";
206 status = "disabled";
207 };
208
209 i2c@7000d000 {
210 compatible = "nvidia,tegra114-i2c";
211 reg = <0x7000d000 0x100>;
212 interrupts = <0 53 0x04>;
213 #address-cells = <1>;
214 #size-cells = <0>;
215 clocks = <&tegra_car 47>;
216 clock-names = "div-clk";
217 status = "disabled";
218 };
219
220 spi@7000d400 {
221 compatible = "nvidia,tegra114-spi";
222 reg = <0x7000d400 0x200>;
223 interrupts = <0 59 0x04>;
224 nvidia,dma-request-selector = <&apbdma 15>;
225 #address-cells = <1>;
226 #size-cells = <0>;
227 clocks = <&tegra_car 41>;
228 clock-names = "spi";
229 status = "disabled";
230 };
231
232 spi@7000d600 {
233 compatible = "nvidia,tegra114-spi";
234 reg = <0x7000d600 0x200>;
235 interrupts = <0 82 0x04>;
236 nvidia,dma-request-selector = <&apbdma 16>;
237 #address-cells = <1>;
238 #size-cells = <0>;
239 clocks = <&tegra_car 44>;
240 clock-names = "spi";
241 status = "disabled";
242 };
243
244 spi@7000d800 {
245 compatible = "nvidia,tegra114-spi";
246 reg = <0x7000d800 0x200>;
247 interrupts = <0 83 0x04>;
248 nvidia,dma-request-selector = <&apbdma 17>;
249 #address-cells = <1>;
250 #size-cells = <0>;
251 clocks = <&tegra_car 46>;
252 clock-names = "spi";
253 status = "disabled";
254 };
255
256 spi@7000da00 {
257 compatible = "nvidia,tegra114-spi";
258 reg = <0x7000da00 0x200>;
259 interrupts = <0 93 0x04>;
260 nvidia,dma-request-selector = <&apbdma 18>;
261 #address-cells = <1>;
262 #size-cells = <0>;
263 clocks = <&tegra_car 68>;
264 clock-names = "spi";
265 status = "disabled";
266 };
267
268 spi@7000dc00 {
269 compatible = "nvidia,tegra114-spi";
270 reg = <0x7000dc00 0x200>;
271 interrupts = <0 94 0x04>;
272 nvidia,dma-request-selector = <&apbdma 27>;
273 #address-cells = <1>;
274 #size-cells = <0>;
275 clocks = <&tegra_car 104>;
276 clock-names = "spi";
277 status = "disabled";
278 };
279
280 spi@7000de00 {
281 compatible = "nvidia,tegra114-spi";
282 reg = <0x7000de00 0x200>;
283 interrupts = <0 79 0x04>;
284 nvidia,dma-request-selector = <&apbdma 28>;
285 #address-cells = <1>;
286 #size-cells = <0>;
287 clocks = <&tegra_car 105>;
288 clock-names = "spi";
289 status = "disabled";
290 };
291
100 rtc { 292 rtc {
101 compatible = "nvidia,tegra114-rtc", "nvidia,tegra20-rtc"; 293 compatible = "nvidia,tegra114-rtc", "nvidia,tegra20-rtc";
102 reg = <0x7000e000 0x100>; 294 reg = <0x7000e000 0x100>;
@@ -104,6 +296,14 @@
104 clocks = <&tegra_car 4>; 296 clocks = <&tegra_car 4>;
105 }; 297 };
106 298
299 kbc {
300 compatible = "nvidia,tegra114-kbc";
301 reg = <0x7000e200 0x100>;
302 interrupts = <0 85 0x04>;
303 clocks = <&tegra_car 36>;
304 status = "disabled";
305 };
306
107 pmc { 307 pmc {
108 compatible = "nvidia,tegra114-pmc"; 308 compatible = "nvidia,tegra114-pmc";
109 reg = <0x7000e400 0x400>; 309 reg = <0x7000e400 0x400>;
@@ -122,6 +322,38 @@
122 nvidia,ahb = <&ahb>; 322 nvidia,ahb = <&ahb>;
123 }; 323 };
124 324
325 sdhci@78000000 {
326 compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci";
327 reg = <0x78000000 0x200>;
328 interrupts = <0 14 0x04>;
329 clocks = <&tegra_car 14>;
330 status = "disable";
331 };
332
333 sdhci@78000200 {
334 compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci";
335 reg = <0x78000200 0x200>;
336 interrupts = <0 15 0x04>;
337 clocks = <&tegra_car 9>;
338 status = "disable";
339 };
340
341 sdhci@78000400 {
342 compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci";
343 reg = <0x78000400 0x200>;
344 interrupts = <0 19 0x04>;
345 clocks = <&tegra_car 69>;
346 status = "disable";
347 };
348
349 sdhci@78000600 {
350 compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci";
351 reg = <0x78000600 0x200>;
352 interrupts = <0 31 0x04>;
353 clocks = <&tegra_car 15>;
354 status = "disable";
355 };
356
125 cpus { 357 cpus {
126 #address-cells = <1>; 358 #address-cells = <1>;
127 #size-cells = <0>; 359 #size-cells = <0>;
diff --git a/arch/arm/boot/dts/tegra20-colibri-512.dtsi b/arch/arm/boot/dts/tegra20-colibri-512.dtsi
index 4e3afdef28a8..a573b94b7c93 100644
--- a/arch/arm/boot/dts/tegra20-colibri-512.dtsi
+++ b/arch/arm/boot/dts/tegra20-colibri-512.dtsi
@@ -361,6 +361,15 @@
361 }; 361 };
362 }; 362 };
363 363
364 pmc {
365 nvidia,suspend-mode = <2>;
366 nvidia,cpu-pwr-good-time = <5000>;
367 nvidia,cpu-pwr-off-time = <5000>;
368 nvidia,core-pwr-good-time = <3845 3845>;
369 nvidia,core-pwr-off-time = <3875>;
370 nvidia,sys-clock-req-active-high;
371 };
372
364 memory-controller@7000f400 { 373 memory-controller@7000f400 {
365 emc-table@83250 { 374 emc-table@83250 {
366 reg = <83250>; 375 reg = <83250>;
@@ -473,6 +482,9 @@
473 "Mic", "MIC1"; 482 "Mic", "MIC1";
474 483
475 nvidia,ac97-controller = <&ac97>; 484 nvidia,ac97-controller = <&ac97>;
485
486 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
487 clock-names = "pll_a", "pll_a_out0", "mclk";
476 }; 488 };
477 489
478 regulators { 490 regulators {
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts
index ae9d5a20834e..e7d5de4e00b9 100644
--- a/arch/arm/boot/dts/tegra20-harmony.dts
+++ b/arch/arm/boot/dts/tegra20-harmony.dts
@@ -416,6 +416,12 @@
416 416
417 pmc { 417 pmc {
418 nvidia,invert-interrupt; 418 nvidia,invert-interrupt;
419 nvidia,suspend-mode = <2>;
420 nvidia,cpu-pwr-good-time = <5000>;
421 nvidia,cpu-pwr-off-time = <5000>;
422 nvidia,core-pwr-good-time = <3845 3845>;
423 nvidia,core-pwr-off-time = <3875>;
424 nvidia,sys-clock-req-active-high;
419 }; 425 };
420 426
421 usb@c5000000 { 427 usb@c5000000 {
@@ -464,6 +470,17 @@
464 }; 470 };
465 }; 471 };
466 472
473 gpio-keys {
474 compatible = "gpio-keys";
475
476 power {
477 label = "Power";
478 gpios = <&gpio 170 1>; /* gpio PV2, active low */
479 linux,code = <116>; /* KEY_POWER */
480 gpio-key,wakeup;
481 };
482 };
483
467 kbc { 484 kbc {
468 status = "okay"; 485 status = "okay";
469 nvidia,debounce-delay-ms = <2>; 486 nvidia,debounce-delay-ms = <2>;
@@ -669,5 +686,8 @@
669 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 686 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
670 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */ 687 nvidia,int-mic-en-gpios = <&gpio 184 0>; /*gpio PX0 */
671 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 688 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */
689
690 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
691 clock-names = "pll_a", "pll_a_out0", "mclk";
672 }; 692 };
673}; 693};
diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts
index a2d6d6541f83..ace23437da89 100644
--- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
+++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
@@ -6,6 +6,10 @@
6 model = "Avionic Design Medcom-Wide board"; 6 model = "Avionic Design Medcom-Wide board";
7 compatible = "ad,medcom-wide", "ad,tamonten", "nvidia,tegra20"; 7 compatible = "ad,medcom-wide", "ad,tamonten", "nvidia,tegra20";
8 8
9 pwm {
10 status = "okay";
11 };
12
9 i2c@7000c000 { 13 i2c@7000c000 {
10 wm8903: wm8903@1a { 14 wm8903: wm8903@1a {
11 compatible = "wlf,wm8903"; 15 compatible = "wlf,wm8903";
@@ -54,5 +58,8 @@
54 58
55 nvidia,spkr-en-gpios = <&wm8903 2 0>; 59 nvidia,spkr-en-gpios = <&wm8903 2 0>;
56 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 60 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
61
62 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
63 clock-names = "pll_a", "pll_a_out0", "mclk";
57 }; 64 };
58}; 65};
diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
index fd60940e4063..e3e0c9977df4 100644
--- a/arch/arm/boot/dts/tegra20-paz00.dts
+++ b/arch/arm/boot/dts/tegra20-paz00.dts
@@ -415,6 +415,12 @@
415 415
416 pmc { 416 pmc {
417 nvidia,invert-interrupt; 417 nvidia,invert-interrupt;
418 nvidia,suspend-mode = <2>;
419 nvidia,cpu-pwr-good-time = <2000>;
420 nvidia,cpu-pwr-off-time = <0>;
421 nvidia,core-pwr-good-time = <3845 3845>;
422 nvidia,core-pwr-off-time = <0>;
423 nvidia,sys-clock-req-active-high;
418 }; 424 };
419 425
420 usb@c5000000 { 426 usb@c5000000 {
@@ -445,6 +451,7 @@
445 sdhci@c8000600 { 451 sdhci@c8000600 {
446 status = "okay"; 452 status = "okay";
447 bus-width = <8>; 453 bus-width = <8>;
454 non-removable;
448 }; 455 };
449 456
450 clocks { 457 clocks {
@@ -514,5 +521,8 @@
514 nvidia,audio-codec = <&alc5632>; 521 nvidia,audio-codec = <&alc5632>;
515 nvidia,i2s-controller = <&tegra_i2s1>; 522 nvidia,i2s-controller = <&tegra_i2s1>;
516 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 523 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
524
525 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
526 clock-names = "pll_a", "pll_a_out0", "mclk";
517 }; 527 };
518}; 528};
diff --git a/arch/arm/boot/dts/tegra20-plutux.dts b/arch/arm/boot/dts/tegra20-plutux.dts
index 289480026fbf..1a17cc30bb9d 100644
--- a/arch/arm/boot/dts/tegra20-plutux.dts
+++ b/arch/arm/boot/dts/tegra20-plutux.dts
@@ -52,5 +52,8 @@
52 52
53 nvidia,spkr-en-gpios = <&wm8903 2 0>; 53 nvidia,spkr-en-gpios = <&wm8903 2 0>;
54 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 54 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
55
56 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
57 clock-names = "pll_a", "pll_a_out0", "mclk";
55 }; 58 };
56}; 59};
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
index 4ee700a33ca5..cee4c34010fe 100644
--- a/arch/arm/boot/dts/tegra20-seaboard.dts
+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
@@ -517,6 +517,12 @@
517 517
518 pmc { 518 pmc {
519 nvidia,invert-interrupt; 519 nvidia,invert-interrupt;
520 nvidia,suspend-mode = <2>;
521 nvidia,cpu-pwr-good-time = <5000>;
522 nvidia,cpu-pwr-off-time = <5000>;
523 nvidia,core-pwr-good-time = <3845 3845>;
524 nvidia,core-pwr-off-time = <3875>;
525 nvidia,sys-clock-req-active-high;
520 }; 526 };
521 527
522 memory-controller@7000f400 { 528 memory-controller@7000f400 {
@@ -580,6 +586,7 @@
580 status = "okay"; 586 status = "okay";
581 power-gpios = <&gpio 86 0>; /* gpio PK6 */ 587 power-gpios = <&gpio 86 0>; /* gpio PK6 */
582 bus-width = <4>; 588 bus-width = <4>;
589 keep-power-in-suspend;
583 }; 590 };
584 591
585 sdhci@c8000400 { 592 sdhci@c8000400 {
@@ -593,6 +600,7 @@
593 sdhci@c8000600 { 600 sdhci@c8000600 {
594 status = "okay"; 601 status = "okay";
595 bus-width = <8>; 602 bus-width = <8>;
603 non-removable;
596 }; 604 };
597 605
598 clocks { 606 clocks {
@@ -821,5 +829,8 @@
821 829
822 nvidia,spkr-en-gpios = <&wm8903 2 0>; 830 nvidia,spkr-en-gpios = <&wm8903 2 0>;
823 nvidia,hp-det-gpios = <&gpio 185 0>; /* gpio PX1 */ 831 nvidia,hp-det-gpios = <&gpio 185 0>; /* gpio PX1 */
832
833 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
834 clock-names = "pll_a", "pll_a_out0", "mclk";
824 }; 835 };
825}; 836};
diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi
index c19025725918..50b3ec16b93a 100644
--- a/arch/arm/boot/dts/tegra20-tamonten.dtsi
+++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi
@@ -458,6 +458,12 @@
458 458
459 pmc { 459 pmc {
460 nvidia,invert-interrupt; 460 nvidia,invert-interrupt;
461 nvidia,suspend-mode = <2>;
462 nvidia,cpu-pwr-good-time = <5000>;
463 nvidia,cpu-pwr-off-time = <5000>;
464 nvidia,core-pwr-good-time = <3845 3845>;
465 nvidia,core-pwr-off-time = <3875>;
466 nvidia,sys-clock-req-active-high;
461 }; 467 };
462 468
463 usb@c5008000 { 469 usb@c5008000 {
diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts
index 402b21004bef..742f0b38d21d 100644
--- a/arch/arm/boot/dts/tegra20-tec.dts
+++ b/arch/arm/boot/dts/tegra20-tec.dts
@@ -52,5 +52,8 @@
52 52
53 nvidia,spkr-en-gpios = <&wm8903 2 0>; 53 nvidia,spkr-en-gpios = <&wm8903 2 0>;
54 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 54 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
55
56 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
57 clock-names = "pll_a", "pll_a_out0", "mclk";
55 }; 58 };
56}; 59};
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
index a9f3f06580f5..9cc78a15d739 100644
--- a/arch/arm/boot/dts/tegra20-trimslice.dts
+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
@@ -300,6 +300,15 @@
300 }; 300 };
301 }; 301 };
302 302
303 pmc {
304 nvidia,suspend-mode = <2>;
305 nvidia,cpu-pwr-good-time = <5000>;
306 nvidia,cpu-pwr-off-time = <5000>;
307 nvidia,core-pwr-good-time = <3845 3845>;
308 nvidia,core-pwr-off-time = <3875>;
309 nvidia,sys-clock-req-active-high;
310 };
311
303 usb@c5000000 { 312 usb@c5000000 {
304 status = "okay"; 313 status = "okay";
305 nvidia,vbus-gpio = <&gpio 170 0>; /* gpio PV2 */ 314 nvidia,vbus-gpio = <&gpio 170 0>; /* gpio PV2 */
@@ -343,6 +352,17 @@
343 }; 352 };
344 }; 353 };
345 354
355 gpio-keys {
356 compatible = "gpio-keys";
357
358 power {
359 label = "Power";
360 gpios = <&gpio 190 1>; /* gpio PX6, active low */
361 linux,code = <116>; /* KEY_POWER */
362 gpio-key,wakeup;
363 };
364 };
365
346 poweroff { 366 poweroff {
347 compatible = "gpio-poweroff"; 367 compatible = "gpio-poweroff";
348 gpios = <&gpio 191 1>; /* gpio PX7, active low */ 368 gpios = <&gpio 191 1>; /* gpio PX7, active low */
@@ -376,5 +396,8 @@
376 compatible = "nvidia,tegra-audio-trimslice"; 396 compatible = "nvidia,tegra-audio-trimslice";
377 nvidia,i2s-controller = <&tegra_i2s1>; 397 nvidia,i2s-controller = <&tegra_i2s1>;
378 nvidia,audio-codec = <&codec>; 398 nvidia,audio-codec = <&codec>;
399
400 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
401 clock-names = "pll_a", "pll_a_out0", "mclk";
379 }; 402 };
380}; 403};
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts
index f544806e9618..dd38f1f03834 100644
--- a/arch/arm/boot/dts/tegra20-ventana.dts
+++ b/arch/arm/boot/dts/tegra20-ventana.dts
@@ -493,6 +493,12 @@
493 493
494 pmc { 494 pmc {
495 nvidia,invert-interrupt; 495 nvidia,invert-interrupt;
496 nvidia,suspend-mode = <2>;
497 nvidia,cpu-pwr-good-time = <2000>;
498 nvidia,cpu-pwr-off-time = <100>;
499 nvidia,core-pwr-good-time = <3845 3845>;
500 nvidia,core-pwr-off-time = <458>;
501 nvidia,sys-clock-req-active-high;
496 }; 502 };
497 503
498 usb@c5000000 { 504 usb@c5000000 {
@@ -516,6 +522,7 @@
516 status = "okay"; 522 status = "okay";
517 power-gpios = <&gpio 86 0>; /* gpio PK6 */ 523 power-gpios = <&gpio 86 0>; /* gpio PK6 */
518 bus-width = <4>; 524 bus-width = <4>;
525 keep-power-in-suspend;
519 }; 526 };
520 527
521 sdhci@c8000400 { 528 sdhci@c8000400 {
@@ -529,6 +536,7 @@
529 sdhci@c8000600 { 536 sdhci@c8000600 {
530 status = "okay"; 537 status = "okay";
531 bus-width = <8>; 538 bus-width = <8>;
539 non-removable;
532 }; 540 };
533 541
534 clocks { 542 clocks {
@@ -544,6 +552,17 @@
544 }; 552 };
545 }; 553 };
546 554
555 gpio-keys {
556 compatible = "gpio-keys";
557
558 power {
559 label = "Power";
560 gpios = <&gpio 170 1>; /* gpio PV2, active low */
561 linux,code = <116>; /* KEY_POWER */
562 gpio-key,wakeup;
563 };
564 };
565
547 regulators { 566 regulators {
548 compatible = "simple-bus"; 567 compatible = "simple-bus";
549 #address-cells = <1>; 568 #address-cells = <1>;
@@ -620,5 +639,8 @@
620 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 639 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
621 nvidia,int-mic-en-gpios = <&gpio 184 0>; /* gpio PX0 */ 640 nvidia,int-mic-en-gpios = <&gpio 184 0>; /* gpio PX0 */
622 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */ 641 nvidia,ext-mic-en-gpios = <&gpio 185 0>; /* gpio PX1 */
642
643 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
644 clock-names = "pll_a", "pll_a_out0", "mclk";
623 }; 645 };
624}; 646};
diff --git a/arch/arm/boot/dts/tegra20-whistler.dts b/arch/arm/boot/dts/tegra20-whistler.dts
index 258cf945f515..d2567f83aaff 100644
--- a/arch/arm/boot/dts/tegra20-whistler.dts
+++ b/arch/arm/boot/dts/tegra20-whistler.dts
@@ -496,6 +496,14 @@
496 496
497 pmc { 497 pmc {
498 nvidia,invert-interrupt; 498 nvidia,invert-interrupt;
499 nvidia,suspend-mode = <2>;
500 nvidia,cpu-pwr-good-time = <2000>;
501 nvidia,cpu-pwr-off-time = <1000>;
502 nvidia,core-pwr-good-time = <0 3845>;
503 nvidia,core-pwr-off-time = <93727>;
504 nvidia,core-power-req-active-high;
505 nvidia,sys-clock-req-active-high;
506 nvidia,combined-power-req;
499 }; 507 };
500 508
501 usb@c5000000 { 509 usb@c5000000 {
@@ -518,6 +526,7 @@
518 sdhci@c8000600 { 526 sdhci@c8000600 {
519 status = "okay"; 527 status = "okay";
520 bus-width = <8>; 528 bus-width = <8>;
529 non-removable;
521 }; 530 };
522 531
523 clocks { 532 clocks {
@@ -539,6 +548,7 @@
539 nvidia,repeat-delay-ms = <160>; 548 nvidia,repeat-delay-ms = <160>;
540 nvidia,kbc-row-pins = <0 1 2>; 549 nvidia,kbc-row-pins = <0 1 2>;
541 nvidia,kbc-col-pins = <16 17>; 550 nvidia,kbc-col-pins = <16 17>;
551 nvidia,wakeup-source;
542 linux,keymap = <0x00000074 /* KEY_POWER */ 552 linux,keymap = <0x00000074 /* KEY_POWER */
543 0x01000066 /* KEY_HOME */ 553 0x01000066 /* KEY_HOME */
544 0x0101009E /* KEY_BACK */ 554 0x0101009E /* KEY_BACK */
@@ -573,5 +583,8 @@
573 583
574 nvidia,i2s-controller = <&tegra_i2s1>; 584 nvidia,i2s-controller = <&tegra_i2s1>;
575 nvidia,audio-codec = <&codec>; 585 nvidia,audio-codec = <&codec>;
586
587 clocks = <&tegra_car 112>, <&tegra_car 113>, <&tegra_car 94>;
588 clock-names = "pll_a", "pll_a_out0", "mclk";
576 }; 589 };
577}; 590};
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index fc7febc2b386..56a91106041b 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -209,7 +209,7 @@
209 compatible = "nvidia,tegra20-das"; 209 compatible = "nvidia,tegra20-das";
210 reg = <0x70000c00 0x80>; 210 reg = <0x70000c00 0x80>;
211 }; 211 };
212 212
213 tegra_ac97: ac97 { 213 tegra_ac97: ac97 {
214 compatible = "nvidia,tegra20-ac97"; 214 compatible = "nvidia,tegra20-ac97";
215 reg = <0x70002000 0x200>; 215 reg = <0x70002000 0x200>;
@@ -299,6 +299,7 @@
299 reg = <0x7000a000 0x100>; 299 reg = <0x7000a000 0x100>;
300 #pwm-cells = <2>; 300 #pwm-cells = <2>;
301 clocks = <&tegra_car 17>; 301 clocks = <&tegra_car 17>;
302 status = "disabled";
302 }; 303 };
303 304
304 rtc { 305 rtc {
@@ -442,31 +443,6 @@
442 #size-cells = <0>; 443 #size-cells = <0>;
443 }; 444 };
444 445
445 phy1: usb-phy@c5000400 {
446 compatible = "nvidia,tegra20-usb-phy";
447 reg = <0xc5000400 0x3c00>;
448 phy_type = "utmi";
449 nvidia,has-legacy-mode;
450 clocks = <&tegra_car 22>, <&tegra_car 127>;
451 clock-names = "phy", "pll_u";
452 };
453
454 phy2: usb-phy@c5004400 {
455 compatible = "nvidia,tegra20-usb-phy";
456 reg = <0xc5004400 0x3c00>;
457 phy_type = "ulpi";
458 clocks = <&tegra_car 94>, <&tegra_car 127>;
459 clock-names = "phy", "pll_u";
460 };
461
462 phy3: usb-phy@c5008400 {
463 compatible = "nvidia,tegra20-usb-phy";
464 reg = <0xc5008400 0x3C00>;
465 phy_type = "utmi";
466 clocks = <&tegra_car 22>, <&tegra_car 127>;
467 clock-names = "phy", "pll_u";
468 };
469
470 usb@c5000000 { 446 usb@c5000000 {
471 compatible = "nvidia,tegra20-ehci", "usb-ehci"; 447 compatible = "nvidia,tegra20-ehci", "usb-ehci";
472 reg = <0xc5000000 0x4000>; 448 reg = <0xc5000000 0x4000>;
@@ -479,6 +455,15 @@
479 status = "disabled"; 455 status = "disabled";
480 }; 456 };
481 457
458 phy1: usb-phy@c5000400 {
459 compatible = "nvidia,tegra20-usb-phy";
460 reg = <0xc5000400 0x3c00>;
461 phy_type = "utmi";
462 nvidia,has-legacy-mode;
463 clocks = <&tegra_car 22>, <&tegra_car 127>;
464 clock-names = "phy", "pll_u";
465 };
466
482 usb@c5004000 { 467 usb@c5004000 {
483 compatible = "nvidia,tegra20-ehci", "usb-ehci"; 468 compatible = "nvidia,tegra20-ehci", "usb-ehci";
484 reg = <0xc5004000 0x4000>; 469 reg = <0xc5004000 0x4000>;
@@ -489,6 +474,14 @@
489 status = "disabled"; 474 status = "disabled";
490 }; 475 };
491 476
477 phy2: usb-phy@c5004400 {
478 compatible = "nvidia,tegra20-usb-phy";
479 reg = <0xc5004400 0x3c00>;
480 phy_type = "ulpi";
481 clocks = <&tegra_car 93>, <&tegra_car 127>;
482 clock-names = "phy", "pll_u";
483 };
484
492 usb@c5008000 { 485 usb@c5008000 {
493 compatible = "nvidia,tegra20-ehci", "usb-ehci"; 486 compatible = "nvidia,tegra20-ehci", "usb-ehci";
494 reg = <0xc5008000 0x4000>; 487 reg = <0xc5008000 0x4000>;
@@ -499,6 +492,14 @@
499 status = "disabled"; 492 status = "disabled";
500 }; 493 };
501 494
495 phy3: usb-phy@c5008400 {
496 compatible = "nvidia,tegra20-usb-phy";
497 reg = <0xc5008400 0x3c00>;
498 phy_type = "utmi";
499 clocks = <&tegra_car 22>, <&tegra_car 127>;
500 clock-names = "phy", "pll_u";
501 };
502
502 sdhci@c8000000 { 503 sdhci@c8000000 {
503 compatible = "nvidia,tegra20-sdhci"; 504 compatible = "nvidia,tegra20-sdhci";
504 reg = <0xc8000000 0x200>; 505 reg = <0xc8000000 0x200>;
diff --git a/arch/arm/boot/dts/tegra30-beaver.dts b/arch/arm/boot/dts/tegra30-beaver.dts
index 6248b2445b32..b732f7c13a66 100644
--- a/arch/arm/boot/dts/tegra30-beaver.dts
+++ b/arch/arm/boot/dts/tegra30-beaver.dts
@@ -253,6 +253,13 @@
253 pmc { 253 pmc {
254 status = "okay"; 254 status = "okay";
255 nvidia,invert-interrupt; 255 nvidia,invert-interrupt;
256 nvidia,suspend-mode = <2>;
257 nvidia,cpu-pwr-good-time = <2000>;
258 nvidia,cpu-pwr-off-time = <200>;
259 nvidia,core-pwr-good-time = <3845 3845>;
260 nvidia,core-pwr-off-time = <0>;
261 nvidia,core-power-req-active-high;
262 nvidia,sys-clock-req-active-high;
256 }; 263 };
257 264
258 sdhci@78000000 { 265 sdhci@78000000 {
@@ -266,6 +273,7 @@
266 sdhci@78000600 { 273 sdhci@78000600 {
267 status = "okay"; 274 status = "okay";
268 bus-width = <8>; 275 bus-width = <8>;
276 non-removable;
269 }; 277 };
270 278
271 clocks { 279 clocks {
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a02.dts b/arch/arm/boot/dts/tegra30-cardhu-a02.dts
index adc88aa50eb6..e392bd2dab9b 100644
--- a/arch/arm/boot/dts/tegra30-cardhu-a02.dts
+++ b/arch/arm/boot/dts/tegra30-cardhu-a02.dts
@@ -88,6 +88,7 @@
88 status = "okay"; 88 status = "okay";
89 power-gpios = <&gpio 28 0>; /* gpio PD4 */ 89 power-gpios = <&gpio 28 0>; /* gpio PD4 */
90 bus-width = <4>; 90 bus-width = <4>;
91 keep-power-in-suspend;
91 }; 92 };
92}; 93};
93 94
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a04.dts b/arch/arm/boot/dts/tegra30-cardhu-a04.dts
index 08163e145d57..d0db6c7e774f 100644
--- a/arch/arm/boot/dts/tegra30-cardhu-a04.dts
+++ b/arch/arm/boot/dts/tegra30-cardhu-a04.dts
@@ -100,5 +100,6 @@
100 status = "okay"; 100 status = "okay";
101 power-gpios = <&gpio 27 0>; /* gpio PD3 */ 101 power-gpios = <&gpio 27 0>; /* gpio PD3 */
102 bus-width = <4>; 102 bus-width = <4>;
103 keep-power-in-suspend;
103 }; 104 };
104}; 105};
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
index 65bf2b63174e..01b4c26fad96 100644
--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
@@ -307,6 +307,13 @@
307 pmc { 307 pmc {
308 status = "okay"; 308 status = "okay";
309 nvidia,invert-interrupt; 309 nvidia,invert-interrupt;
310 nvidia,suspend-mode = <2>;
311 nvidia,cpu-pwr-good-time = <2000>;
312 nvidia,cpu-pwr-off-time = <200>;
313 nvidia,core-pwr-good-time = <3845 3845>;
314 nvidia,core-pwr-off-time = <0>;
315 nvidia,core-power-req-active-high;
316 nvidia,sys-clock-req-active-high;
310 }; 317 };
311 318
312 sdhci@78000000 { 319 sdhci@78000000 {
@@ -320,6 +327,7 @@
320 sdhci@78000600 { 327 sdhci@78000600 {
321 status = "okay"; 328 status = "okay";
322 bus-width = <8>; 329 bus-width = <8>;
330 non-removable;
323 }; 331 };
324 332
325 clocks { 333 clocks {
@@ -509,5 +517,8 @@
509 517
510 nvidia,spkr-en-gpios = <&wm8903 2 0>; 518 nvidia,spkr-en-gpios = <&wm8903 2 0>;
511 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */ 519 nvidia,hp-det-gpios = <&gpio 178 0>; /* gpio PW2 */
520
521 clocks = <&tegra_car 184>, <&tegra_car 185>, <&tegra_car 120>;
522 clock-names = "pll_a", "pll_a_out0", "mclk";
512 }; 523 };
513}; 524};
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index 9fe7a92b4c85..15ded605142a 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -286,6 +286,7 @@
286 reg = <0x7000a000 0x100>; 286 reg = <0x7000a000 0x100>;
287 #pwm-cells = <2>; 287 #pwm-cells = <2>;
288 clocks = <&tegra_car 17>; 288 clocks = <&tegra_car 17>;
289 status = "disabled";
289 }; 290 };
290 291
291 rtc { 292 rtc {
diff --git a/arch/arm/boot/dts/twl4030.dtsi b/arch/arm/boot/dts/twl4030.dtsi
index ed0bc9546837..b3034da00a37 100644
--- a/arch/arm/boot/dts/twl4030.dtsi
+++ b/arch/arm/boot/dts/twl4030.dtsi
@@ -23,6 +23,12 @@
23 compatible = "ti,twl4030-wdt"; 23 compatible = "ti,twl4030-wdt";
24 }; 24 };
25 25
26 vcc: regulator-vdd1 {
27 compatible = "ti,twl4030-vdd1";
28 regulator-min-microvolt = <600000>;
29 regulator-max-microvolt = <1450000>;
30 };
31
26 vdac: regulator-vdac { 32 vdac: regulator-vdac {
27 compatible = "ti,twl4030-vdac"; 33 compatible = "ti,twl4030-vdac";
28 regulator-min-microvolt = <1800000>; 34 regulator-min-microvolt = <1800000>;
@@ -67,7 +73,7 @@
67 #interrupt-cells = <1>; 73 #interrupt-cells = <1>;
68 }; 74 };
69 75
70 twl4030-usb { 76 usb2_phy: twl4030-usb {
71 compatible = "ti,twl4030-usb"; 77 compatible = "ti,twl4030-usb";
72 interrupts = <10>, <4>; 78 interrupts = <10>, <4>;
73 usb1v5-supply = <&vusb1v5>; 79 usb1v5-supply = <&vusb1v5>;
@@ -75,4 +81,14 @@
75 usb3v1-supply = <&vusb3v1>; 81 usb3v1-supply = <&vusb3v1>;
76 usb_mode = <1>; 82 usb_mode = <1>;
77 }; 83 };
84
85 twl_pwm: pwm {
86 compatible = "ti,twl4030-pwm";
87 #pwm-cells = <2>;
88 };
89
90 twl_pwmled: pwmled {
91 compatible = "ti,twl4030-pwmled";
92 #pwm-cells = <2>;
93 };
78}; 94};
diff --git a/arch/arm/boot/dts/twl6030.dtsi b/arch/arm/boot/dts/twl6030.dtsi
index 9996cfc5ee80..2e3bd3172b23 100644
--- a/arch/arm/boot/dts/twl6030.dtsi
+++ b/arch/arm/boot/dts/twl6030.dtsi
@@ -91,4 +91,16 @@
91 compatible = "ti,twl6030-usb"; 91 compatible = "ti,twl6030-usb";
92 interrupts = <4>, <10>; 92 interrupts = <4>, <10>;
93 }; 93 };
94
95 twl_pwm: pwm {
96 /* provides two PWMs (id 0, 1 for PWM1 and PWM2) */
97 compatible = "ti,twl6030-pwm";
98 #pwm-cells = <2>;
99 };
100
101 twl_pwmled: pwmled {
102 /* provides one PWM (id 0 for Charging indicator LED) */
103 compatible = "ti,twl6030-pwmled";
104 #pwm-cells = <2>;
105 };
94}; 106};
diff --git a/arch/arm/mach-davinci/da8xx-dt.c b/arch/arm/mach-davinci/da8xx-dt.c
index b1c0a5958275..961aea8bbad5 100644
--- a/arch/arm/mach-davinci/da8xx-dt.c
+++ b/arch/arm/mach-davinci/da8xx-dt.c
@@ -41,6 +41,12 @@ static struct of_dev_auxdata da850_auxdata_lookup[] __initdata = {
41 OF_DEV_AUXDATA("ti,davinci-i2c", 0x01c22000, "i2c_davinci.1", NULL), 41 OF_DEV_AUXDATA("ti,davinci-i2c", 0x01c22000, "i2c_davinci.1", NULL),
42 OF_DEV_AUXDATA("ti,davinci-wdt", 0x01c21000, "watchdog", NULL), 42 OF_DEV_AUXDATA("ti,davinci-wdt", 0x01c21000, "watchdog", NULL),
43 OF_DEV_AUXDATA("ti,da830-mmc", 0x01c40000, "da830-mmc.0", NULL), 43 OF_DEV_AUXDATA("ti,da830-mmc", 0x01c40000, "da830-mmc.0", NULL),
44 OF_DEV_AUXDATA("ti,da850-ehrpwm", 0x01f00000, "ehrpwm", NULL),
45 OF_DEV_AUXDATA("ti,da850-ehrpwm", 0x01f02000, "ehrpwm", NULL),
46 OF_DEV_AUXDATA("ti,da850-ecap", 0x01f06000, "ecap", NULL),
47 OF_DEV_AUXDATA("ti,da850-ecap", 0x01f07000, "ecap", NULL),
48 OF_DEV_AUXDATA("ti,da850-ecap", 0x01f08000, "ecap", NULL),
49 OF_DEV_AUXDATA("ti,da830-spi", 0x01f0e000, "spi_davinci.1", NULL),
44 {} 50 {}
45}; 51};
46 52
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index 46089fe24705..d126f26dbbf1 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -120,17 +120,6 @@ static struct map_desc exynos_iodesc[] __initdata = {
120 }, 120 },
121}; 121};
122 122
123#ifdef CONFIG_ARCH_EXYNOS5
124static struct map_desc exynos5440_iodesc[] __initdata = {
125 {
126 .virtual = (unsigned long)S5P_VA_CHIPID,
127 .pfn = __phys_to_pfn(EXYNOS5440_PA_CHIPID),
128 .length = SZ_4K,
129 .type = MT_DEVICE,
130 },
131};
132#endif
133
134static struct map_desc exynos4_iodesc[] __initdata = { 123static struct map_desc exynos4_iodesc[] __initdata = {
135 { 124 {
136 .virtual = (unsigned long)S3C_VA_SYS, 125 .virtual = (unsigned long)S3C_VA_SYS,
@@ -348,6 +337,31 @@ void __init exynos_init_late(void)
348 exynos_pm_late_initcall(); 337 exynos_pm_late_initcall();
349} 338}
350 339
340#ifdef CONFIG_OF
341int __init exynos_fdt_map_chipid(unsigned long node, const char *uname,
342 int depth, void *data)
343{
344 struct map_desc iodesc;
345 __be32 *reg;
346 unsigned long len;
347
348 if (!of_flat_dt_is_compatible(node, "samsung,exynos4210-chipid") &&
349 !of_flat_dt_is_compatible(node, "samsung,exynos5440-clock"))
350 return 0;
351
352 reg = of_get_flat_dt_prop(node, "reg", &len);
353 if (reg == NULL || len != (sizeof(unsigned long) * 2))
354 return 0;
355
356 iodesc.pfn = __phys_to_pfn(be32_to_cpu(reg[0]));
357 iodesc.length = be32_to_cpu(reg[1]) - 1;
358 iodesc.virtual = (unsigned long)S5P_VA_CHIPID;
359 iodesc.type = MT_DEVICE;
360 iotable_init(&iodesc, 1);
361 return 1;
362}
363#endif
364
351/* 365/*
352 * exynos_map_io 366 * exynos_map_io
353 * 367 *
@@ -356,19 +370,12 @@ void __init exynos_init_late(void)
356 370
357void __init exynos_init_io(struct map_desc *mach_desc, int size) 371void __init exynos_init_io(struct map_desc *mach_desc, int size)
358{ 372{
359 struct map_desc *iodesc = exynos_iodesc; 373#ifdef CONFIG_OF
360 int iodesc_sz = ARRAY_SIZE(exynos_iodesc); 374 if (initial_boot_params)
361#if defined(CONFIG_OF) && defined(CONFIG_ARCH_EXYNOS5) 375 of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
362 unsigned long root = of_get_flat_dt_root(); 376 else
363
364 /* initialize the io descriptors we need for initialization */
365 if (of_flat_dt_is_compatible(root, "samsung,exynos5440")) {
366 iodesc = exynos5440_iodesc;
367 iodesc_sz = ARRAY_SIZE(exynos5440_iodesc);
368 }
369#endif 377#endif
370 378 iotable_init(exynos_iodesc, ARRAY_SIZE(exynos_iodesc));
371 iotable_init(iodesc, iodesc_sz);
372 379
373 if (mach_desc) 380 if (mach_desc)
374 iotable_init(mach_desc, size); 381 iotable_init(mach_desc, size);
diff --git a/arch/arm/mach-exynos/include/mach/map.h b/arch/arm/mach-exynos/include/mach/map.h
index 99e0a79f3b1f..92b29bb583cb 100644
--- a/arch/arm/mach-exynos/include/mach/map.h
+++ b/arch/arm/mach-exynos/include/mach/map.h
@@ -56,7 +56,6 @@
56#define EXYNOS4_PA_ONENAND_DMA 0x0C600000 56#define EXYNOS4_PA_ONENAND_DMA 0x0C600000
57 57
58#define EXYNOS_PA_CHIPID 0x10000000 58#define EXYNOS_PA_CHIPID 0x10000000
59#define EXYNOS5440_PA_CHIPID 0x00160000
60 59
61#define EXYNOS4_PA_SYSCON 0x10010000 60#define EXYNOS4_PA_SYSCON 0x10010000
62#define EXYNOS5_PA_SYSCON 0x10050100 61#define EXYNOS5_PA_SYSCON 0x10050100
diff --git a/arch/arm/mach-mxs/mach-mxs.c b/arch/arm/mach-mxs/mach-mxs.c
index b5c1bdd3dcdf..5b62b6489d4b 100644
--- a/arch/arm/mach-mxs/mach-mxs.c
+++ b/arch/arm/mach-mxs/mach-mxs.c
@@ -22,7 +22,6 @@
22#include <linux/irqchip.h> 22#include <linux/irqchip.h>
23#include <linux/irqchip/mxs.h> 23#include <linux/irqchip/mxs.h>
24#include <linux/micrel_phy.h> 24#include <linux/micrel_phy.h>
25#include <linux/mxsfb.h>
26#include <linux/of_address.h> 25#include <linux/of_address.h>
27#include <linux/of_platform.h> 26#include <linux/of_platform.h>
28#include <linux/phy.h> 27#include <linux/phy.h>
@@ -61,106 +60,6 @@ static inline void __mxs_togl(u32 mask, void __iomem *reg)
61 __raw_writel(mask, reg + MXS_TOG_ADDR); 60 __raw_writel(mask, reg + MXS_TOG_ADDR);
62} 61}
63 62
64static struct fb_videomode mx23evk_video_modes[] = {
65 {
66 .name = "Samsung-LMS430HF02",
67 .refresh = 60,
68 .xres = 480,
69 .yres = 272,
70 .pixclock = 108096, /* picosecond (9.2 MHz) */
71 .left_margin = 15,
72 .right_margin = 8,
73 .upper_margin = 12,
74 .lower_margin = 4,
75 .hsync_len = 1,
76 .vsync_len = 1,
77 },
78};
79
80static struct fb_videomode mx28evk_video_modes[] = {
81 {
82 .name = "Seiko-43WVF1G",
83 .refresh = 60,
84 .xres = 800,
85 .yres = 480,
86 .pixclock = 29851, /* picosecond (33.5 MHz) */
87 .left_margin = 89,
88 .right_margin = 164,
89 .upper_margin = 23,
90 .lower_margin = 10,
91 .hsync_len = 10,
92 .vsync_len = 10,
93 },
94};
95
96static struct fb_videomode m28evk_video_modes[] = {
97 {
98 .name = "Ampire AM-800480R2TMQW-T01H",
99 .refresh = 60,
100 .xres = 800,
101 .yres = 480,
102 .pixclock = 30066, /* picosecond (33.26 MHz) */
103 .left_margin = 0,
104 .right_margin = 256,
105 .upper_margin = 0,
106 .lower_margin = 45,
107 .hsync_len = 1,
108 .vsync_len = 1,
109 },
110};
111
112static struct fb_videomode apx4devkit_video_modes[] = {
113 {
114 .name = "HannStar PJ70112A",
115 .refresh = 60,
116 .xres = 800,
117 .yres = 480,
118 .pixclock = 33333, /* picosecond (30.00 MHz) */
119 .left_margin = 88,
120 .right_margin = 40,
121 .upper_margin = 32,
122 .lower_margin = 13,
123 .hsync_len = 48,
124 .vsync_len = 3,
125 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
126 },
127};
128
129static struct fb_videomode apf28dev_video_modes[] = {
130 {
131 .name = "LW700",
132 .refresh = 60,
133 .xres = 800,
134 .yres = 480,
135 .pixclock = 30303, /* picosecond */
136 .left_margin = 96,
137 .right_margin = 96, /* at least 3 & 1 */
138 .upper_margin = 0x14,
139 .lower_margin = 0x15,
140 .hsync_len = 64,
141 .vsync_len = 4,
142 .sync = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
143 },
144};
145
146static struct fb_videomode cfa10049_video_modes[] = {
147 {
148 .name = "Himax HX8357-B",
149 .refresh = 60,
150 .xres = 320,
151 .yres = 480,
152 .pixclock = 108506, /* picosecond (9.216 MHz) */
153 .left_margin = 2,
154 .right_margin = 2,
155 .upper_margin = 2,
156 .lower_margin = 2,
157 .hsync_len = 15,
158 .vsync_len = 15,
159 },
160};
161
162static struct mxsfb_platform_data mxsfb_pdata __initdata;
163
164/* 63/*
165 * MX28EVK_FLEXCAN_SWITCH is shared between both flexcan controllers 64 * MX28EVK_FLEXCAN_SWITCH is shared between both flexcan controllers
166 */ 65 */
@@ -191,8 +90,6 @@ static void mx28evk_flexcan1_switch(int enable)
191static struct flexcan_platform_data flexcan_pdata[2]; 90static struct flexcan_platform_data flexcan_pdata[2];
192 91
193static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = { 92static struct of_dev_auxdata mxs_auxdata_lookup[] __initdata = {
194 OF_DEV_AUXDATA("fsl,imx23-lcdif", 0x80030000, NULL, &mxsfb_pdata),
195 OF_DEV_AUXDATA("fsl,imx28-lcdif", 0x80030000, NULL, &mxsfb_pdata),
196 OF_DEV_AUXDATA("fsl,imx28-flexcan", 0x80032000, NULL, &flexcan_pdata[0]), 93 OF_DEV_AUXDATA("fsl,imx28-flexcan", 0x80032000, NULL, &flexcan_pdata[0]),
197 OF_DEV_AUXDATA("fsl,imx28-flexcan", 0x80034000, NULL, &flexcan_pdata[1]), 94 OF_DEV_AUXDATA("fsl,imx28-flexcan", 0x80034000, NULL, &flexcan_pdata[1]),
198 { /* sentinel */ } 95 { /* sentinel */ }
@@ -342,16 +239,6 @@ static void __init update_fec_mac_prop(enum mac_oui oui)
342 } 239 }
343} 240}
344 241
345static void __init imx23_evk_init(void)
346{
347 mxsfb_pdata.mode_list = mx23evk_video_modes;
348 mxsfb_pdata.mode_count = ARRAY_SIZE(mx23evk_video_modes);
349 mxsfb_pdata.default_bpp = 32;
350 mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
351 mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
352 MXSFB_SYNC_DOTCLK_FAILING_ACT;
353}
354
355static inline void enable_clk_enet_out(void) 242static inline void enable_clk_enet_out(void)
356{ 243{
357 struct clk *clk = clk_get_sys("enet_out", NULL); 244 struct clk *clk = clk_get_sys("enet_out", NULL);
@@ -362,16 +249,8 @@ static inline void enable_clk_enet_out(void)
362 249
363static void __init imx28_evk_init(void) 250static void __init imx28_evk_init(void)
364{ 251{
365 enable_clk_enet_out();
366 update_fec_mac_prop(OUI_FSL); 252 update_fec_mac_prop(OUI_FSL);
367 253
368 mxsfb_pdata.mode_list = mx28evk_video_modes;
369 mxsfb_pdata.mode_count = ARRAY_SIZE(mx28evk_video_modes);
370 mxsfb_pdata.default_bpp = 32;
371 mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
372 mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
373 MXSFB_SYNC_DOTCLK_FAILING_ACT;
374
375 mxs_saif_clkmux_select(MXS_DIGCTL_SAIF_CLKMUX_EXTMSTR0); 254 mxs_saif_clkmux_select(MXS_DIGCTL_SAIF_CLKMUX_EXTMSTR0);
376} 255}
377 256
@@ -384,20 +263,6 @@ static void __init imx28_evk_post_init(void)
384 } 263 }
385} 264}
386 265
387static void __init m28evk_init(void)
388{
389 mxsfb_pdata.mode_list = m28evk_video_modes;
390 mxsfb_pdata.mode_count = ARRAY_SIZE(m28evk_video_modes);
391 mxsfb_pdata.default_bpp = 16;
392 mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
393 mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
394}
395
396static void __init sc_sps1_init(void)
397{
398 enable_clk_enet_out();
399}
400
401static int apx4devkit_phy_fixup(struct phy_device *phy) 266static int apx4devkit_phy_fixup(struct phy_device *phy)
402{ 267{
403 phy->dev_flags |= MICREL_PHY_50MHZ_CLK; 268 phy->dev_flags |= MICREL_PHY_50MHZ_CLK;
@@ -411,13 +276,6 @@ static void __init apx4devkit_init(void)
411 if (IS_BUILTIN(CONFIG_PHYLIB)) 276 if (IS_BUILTIN(CONFIG_PHYLIB))
412 phy_register_fixup_for_uid(PHY_ID_KSZ8051, MICREL_PHY_ID_MASK, 277 phy_register_fixup_for_uid(PHY_ID_KSZ8051, MICREL_PHY_ID_MASK,
413 apx4devkit_phy_fixup); 278 apx4devkit_phy_fixup);
414
415 mxsfb_pdata.mode_list = apx4devkit_video_modes;
416 mxsfb_pdata.mode_count = ARRAY_SIZE(apx4devkit_video_modes);
417 mxsfb_pdata.default_bpp = 32;
418 mxsfb_pdata.ld_intf_width = STMLCDIF_24BIT;
419 mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
420 MXSFB_SYNC_DOTCLK_FAILING_ACT;
421} 279}
422 280
423#define ENET0_MDC__GPIO_4_0 MXS_GPIO_NR(4, 0) 281#define ENET0_MDC__GPIO_4_0 MXS_GPIO_NR(4, 0)
@@ -496,52 +354,24 @@ static void __init tx28_post_init(void)
496 354
497static void __init cfa10049_init(void) 355static void __init cfa10049_init(void)
498{ 356{
499 enable_clk_enet_out();
500 update_fec_mac_prop(OUI_CRYSTALFONTZ); 357 update_fec_mac_prop(OUI_CRYSTALFONTZ);
501
502 mxsfb_pdata.mode_list = cfa10049_video_modes;
503 mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
504 mxsfb_pdata.default_bpp = 32;
505 mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
506 mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
507} 358}
508 359
509static void __init cfa10037_init(void) 360static void __init cfa10037_init(void)
510{ 361{
511 enable_clk_enet_out();
512 update_fec_mac_prop(OUI_CRYSTALFONTZ); 362 update_fec_mac_prop(OUI_CRYSTALFONTZ);
513} 363}
514 364
515static void __init apf28_init(void)
516{
517 enable_clk_enet_out();
518
519 mxsfb_pdata.mode_list = apf28dev_video_modes;
520 mxsfb_pdata.mode_count = ARRAY_SIZE(apf28dev_video_modes);
521 mxsfb_pdata.default_bpp = 16;
522 mxsfb_pdata.ld_intf_width = STMLCDIF_16BIT;
523 mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT |
524 MXSFB_SYNC_DOTCLK_FAILING_ACT;
525}
526
527static void __init mxs_machine_init(void) 365static void __init mxs_machine_init(void)
528{ 366{
529 if (of_machine_is_compatible("fsl,imx28-evk")) 367 if (of_machine_is_compatible("fsl,imx28-evk"))
530 imx28_evk_init(); 368 imx28_evk_init();
531 else if (of_machine_is_compatible("fsl,imx23-evk"))
532 imx23_evk_init();
533 else if (of_machine_is_compatible("denx,m28evk"))
534 m28evk_init();
535 else if (of_machine_is_compatible("bluegiga,apx4devkit")) 369 else if (of_machine_is_compatible("bluegiga,apx4devkit"))
536 apx4devkit_init(); 370 apx4devkit_init();
537 else if (of_machine_is_compatible("crystalfontz,cfa10037")) 371 else if (of_machine_is_compatible("crystalfontz,cfa10037"))
538 cfa10037_init(); 372 cfa10037_init();
539 else if (of_machine_is_compatible("crystalfontz,cfa10049")) 373 else if (of_machine_is_compatible("crystalfontz,cfa10049"))
540 cfa10049_init(); 374 cfa10049_init();
541 else if (of_machine_is_compatible("armadeus,imx28-apf28"))
542 apf28_init();
543 else if (of_machine_is_compatible("schulercontrol,imx28-sps1"))
544 sc_sps1_init();
545 375
546 of_platform_populate(NULL, of_default_bus_match_table, 376 of_platform_populate(NULL, of_default_bus_match_table,
547 mxs_auxdata_lookup, NULL); 377 mxs_auxdata_lookup, NULL);
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 78813b397209..88aa6b1835c3 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -110,6 +110,7 @@ MACHINE_END
110 110
111static const char *omap3_gp_boards_compat[] __initdata = { 111static const char *omap3_gp_boards_compat[] __initdata = {
112 "ti,omap3-beagle", 112 "ti,omap3-beagle",
113 "timll,omap3-devkit8000",
113 NULL, 114 NULL,
114}; 115};
115 116
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 93f213b6a784..d25a95fe9921 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -139,6 +139,8 @@
139#include <linux/slab.h> 139#include <linux/slab.h>
140#include <linux/bootmem.h> 140#include <linux/bootmem.h>
141#include <linux/cpu.h> 141#include <linux/cpu.h>
142#include <linux/of.h>
143#include <linux/of_address.h>
142 144
143#include <asm/system_misc.h> 145#include <asm/system_misc.h>
144 146
@@ -2350,6 +2352,34 @@ static int _shutdown(struct omap_hwmod *oh)
2350} 2352}
2351 2353
2352/** 2354/**
2355 * of_dev_hwmod_lookup - look up needed hwmod from dt blob
2356 * @np: struct device_node *
2357 * @oh: struct omap_hwmod *
2358 *
2359 * Parse the dt blob and find out needed hwmod. Recursive function is
2360 * implemented to take care hierarchical dt blob parsing.
2361 * Return: The device node on success or NULL on failure.
2362 */
2363static struct device_node *of_dev_hwmod_lookup(struct device_node *np,
2364 struct omap_hwmod *oh)
2365{
2366 struct device_node *np0 = NULL, *np1 = NULL;
2367 const char *p;
2368
2369 for_each_child_of_node(np, np0) {
2370 if (of_find_property(np0, "ti,hwmods", NULL)) {
2371 p = of_get_property(np0, "ti,hwmods", NULL);
2372 if (!strcmp(p, oh->name))
2373 return np0;
2374 np1 = of_dev_hwmod_lookup(np0, oh);
2375 if (np1)
2376 return np1;
2377 }
2378 }
2379 return NULL;
2380}
2381
2382/**
2353 * _init_mpu_rt_base - populate the virtual address for a hwmod 2383 * _init_mpu_rt_base - populate the virtual address for a hwmod
2354 * @oh: struct omap_hwmod * to locate the virtual address 2384 * @oh: struct omap_hwmod * to locate the virtual address
2355 * 2385 *
@@ -2361,7 +2391,8 @@ static int _shutdown(struct omap_hwmod *oh)
2361static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data) 2391static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
2362{ 2392{
2363 struct omap_hwmod_addr_space *mem; 2393 struct omap_hwmod_addr_space *mem;
2364 void __iomem *va_start; 2394 void __iomem *va_start = NULL;
2395 struct device_node *np;
2365 2396
2366 if (!oh) 2397 if (!oh)
2367 return; 2398 return;
@@ -2375,10 +2406,18 @@ static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
2375 if (!mem) { 2406 if (!mem) {
2376 pr_debug("omap_hwmod: %s: no MPU register target found\n", 2407 pr_debug("omap_hwmod: %s: no MPU register target found\n",
2377 oh->name); 2408 oh->name);
2378 return; 2409
2410 /* Extract the IO space from device tree blob */
2411 if (!of_have_populated_dt())
2412 return;
2413
2414 np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh);
2415 if (np)
2416 va_start = of_iomap(np, 0);
2417 } else {
2418 va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
2379 } 2419 }
2380 2420
2381 va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
2382 if (!va_start) { 2421 if (!va_start) {
2383 pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name); 2422 pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
2384 return; 2423 return;
@@ -2410,7 +2449,8 @@ static int __init _init(struct omap_hwmod *oh, void *data)
2410 if (oh->_state != _HWMOD_STATE_REGISTERED) 2449 if (oh->_state != _HWMOD_STATE_REGISTERED)
2411 return 0; 2450 return 0;
2412 2451
2413 _init_mpu_rt_base(oh, NULL); 2452 if (oh->class->sysc)
2453 _init_mpu_rt_base(oh, NULL);
2414 2454
2415 r = _init_clocks(oh, NULL); 2455 r = _init_clocks(oh, NULL);
2416 if (r < 0) { 2456 if (r < 0) {
diff --git a/arch/arm/mach-omap2/pmu.c b/arch/arm/mach-omap2/pmu.c
index 9debf822687c..9ace8eae7ee8 100644
--- a/arch/arm/mach-omap2/pmu.c
+++ b/arch/arm/mach-omap2/pmu.c
@@ -11,6 +11,8 @@
11 * the Free Software Foundation; either version 2 of the License, or 11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version. 12 * (at your option) any later version.
13 */ 13 */
14#include <linux/of.h>
15
14#include <asm/pmu.h> 16#include <asm/pmu.h>
15 17
16#include "soc.h" 18#include "soc.h"
@@ -63,6 +65,15 @@ static int __init omap_init_pmu(void)
63 unsigned oh_num; 65 unsigned oh_num;
64 char **oh_names; 66 char **oh_names;
65 67
68 /* XXX Remove this check when the CTI driver is available */
69 if (cpu_is_omap443x()) {
70 pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n");
71 return 0;
72 }
73
74 if (of_have_populated_dt())
75 return 0;
76
66 /* 77 /*
67 * To create an ARM-PMU device the following HWMODs 78 * To create an ARM-PMU device the following HWMODs
68 * are required for the various OMAP2+ devices. 79 * are required for the various OMAP2+ devices.
@@ -75,9 +86,6 @@ static int __init omap_init_pmu(void)
75 if (cpu_is_omap443x()) { 86 if (cpu_is_omap443x()) {
76 oh_num = ARRAY_SIZE(omap4430_pmu_oh_names); 87 oh_num = ARRAY_SIZE(omap4430_pmu_oh_names);
77 oh_names = omap4430_pmu_oh_names; 88 oh_names = omap4430_pmu_oh_names;
78 /* XXX Remove the next two lines when CTI driver available */
79 pr_info("ARM PMU: not yet supported on OMAP4430 due to missing CTI driver\n");
80 return 0;
81 } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) { 89 } else if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
82 oh_num = ARRAY_SIZE(omap3_pmu_oh_names); 90 oh_num = ARRAY_SIZE(omap3_pmu_oh_names);
83 oh_names = omap3_pmu_oh_names; 91 oh_names = omap3_pmu_oh_names;
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
index f12aa6c15da4..02e1d56a3fe5 100644
--- a/arch/arm/mach-omap2/timer.c
+++ b/arch/arm/mach-omap2/timer.c
@@ -133,7 +133,12 @@ static struct property device_disabled = {
133}; 133};
134 134
135static struct of_device_id omap_timer_match[] __initdata = { 135static struct of_device_id omap_timer_match[] __initdata = {
136 { .compatible = "ti,omap2-timer", }, 136 { .compatible = "ti,omap2420-timer", },
137 { .compatible = "ti,omap3430-timer", },
138 { .compatible = "ti,omap4430-timer", },
139 { .compatible = "ti,omap5430-timer", },
140 { .compatible = "ti,am335x-timer", },
141 { .compatible = "ti,am335x-timer-1ms", },
137 { } 142 { }
138}; 143};
139 144
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index e6dbc8dbe6a6..869254cebf84 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -52,6 +52,13 @@ static u32 omap_reserved_systimers;
52static LIST_HEAD(omap_timer_list); 52static LIST_HEAD(omap_timer_list);
53static DEFINE_SPINLOCK(dm_timer_lock); 53static DEFINE_SPINLOCK(dm_timer_lock);
54 54
55enum {
56 REQUEST_ANY = 0,
57 REQUEST_BY_ID,
58 REQUEST_BY_CAP,
59 REQUEST_BY_NODE,
60};
61
55/** 62/**
56 * omap_dm_timer_read_reg - read timer registers in posted and non-posted mode 63 * omap_dm_timer_read_reg - read timer registers in posted and non-posted mode
57 * @timer: timer pointer over which read operation to perform 64 * @timer: timer pointer over which read operation to perform
@@ -177,29 +184,82 @@ int omap_dm_timer_reserve_systimer(int id)
177 return 0; 184 return 0;
178} 185}
179 186
180struct omap_dm_timer *omap_dm_timer_request(void) 187static struct omap_dm_timer *_omap_dm_timer_request(int req_type, void *data)
181{ 188{
182 struct omap_dm_timer *timer = NULL, *t; 189 struct omap_dm_timer *timer = NULL, *t;
190 struct device_node *np = NULL;
183 unsigned long flags; 191 unsigned long flags;
184 int ret = 0; 192 u32 cap = 0;
193 int id = 0;
194
195 switch (req_type) {
196 case REQUEST_BY_ID:
197 id = *(int *)data;
198 break;
199 case REQUEST_BY_CAP:
200 cap = *(u32 *)data;
201 break;
202 case REQUEST_BY_NODE:
203 np = (struct device_node *)data;
204 break;
205 default:
206 /* REQUEST_ANY */
207 break;
208 }
185 209
186 spin_lock_irqsave(&dm_timer_lock, flags); 210 spin_lock_irqsave(&dm_timer_lock, flags);
187 list_for_each_entry(t, &omap_timer_list, node) { 211 list_for_each_entry(t, &omap_timer_list, node) {
188 if (t->reserved) 212 if (t->reserved)
189 continue; 213 continue;
190 214
191 timer = t; 215 switch (req_type) {
192 timer->reserved = 1; 216 case REQUEST_BY_ID:
193 break; 217 if (id == t->pdev->id) {
218 timer = t;
219 timer->reserved = 1;
220 goto found;
221 }
222 break;
223 case REQUEST_BY_CAP:
224 if (cap == (t->capability & cap)) {
225 /*
226 * If timer is not NULL, we have already found
227 * one timer but it was not an exact match
228 * because it had more capabilites that what
229 * was required. Therefore, unreserve the last
230 * timer found and see if this one is a better
231 * match.
232 */
233 if (timer)
234 timer->reserved = 0;
235 timer = t;
236 timer->reserved = 1;
237
238 /* Exit loop early if we find an exact match */
239 if (t->capability == cap)
240 goto found;
241 }
242 break;
243 case REQUEST_BY_NODE:
244 if (np == t->pdev->dev.of_node) {
245 timer = t;
246 timer->reserved = 1;
247 goto found;
248 }
249 break;
250 default:
251 /* REQUEST_ANY */
252 timer = t;
253 timer->reserved = 1;
254 goto found;
255 }
194 } 256 }
257found:
195 spin_unlock_irqrestore(&dm_timer_lock, flags); 258 spin_unlock_irqrestore(&dm_timer_lock, flags);
196 259
197 if (timer) { 260 if (timer && omap_dm_timer_prepare(timer)) {
198 ret = omap_dm_timer_prepare(timer); 261 timer->reserved = 0;
199 if (ret) { 262 timer = NULL;
200 timer->reserved = 0;
201 timer = NULL;
202 }
203 } 263 }
204 264
205 if (!timer) 265 if (!timer)
@@ -207,43 +267,23 @@ struct omap_dm_timer *omap_dm_timer_request(void)
207 267
208 return timer; 268 return timer;
209} 269}
270
271struct omap_dm_timer *omap_dm_timer_request(void)
272{
273 return _omap_dm_timer_request(REQUEST_ANY, NULL);
274}
210EXPORT_SYMBOL_GPL(omap_dm_timer_request); 275EXPORT_SYMBOL_GPL(omap_dm_timer_request);
211 276
212struct omap_dm_timer *omap_dm_timer_request_specific(int id) 277struct omap_dm_timer *omap_dm_timer_request_specific(int id)
213{ 278{
214 struct omap_dm_timer *timer = NULL, *t;
215 unsigned long flags;
216 int ret = 0;
217
218 /* Requesting timer by ID is not supported when device tree is used */ 279 /* Requesting timer by ID is not supported when device tree is used */
219 if (of_have_populated_dt()) { 280 if (of_have_populated_dt()) {
220 pr_warn("%s: Please use omap_dm_timer_request_by_cap()\n", 281 pr_warn("%s: Please use omap_dm_timer_request_by_cap/node()\n",
221 __func__); 282 __func__);
222 return NULL; 283 return NULL;
223 } 284 }
224 285
225 spin_lock_irqsave(&dm_timer_lock, flags); 286 return _omap_dm_timer_request(REQUEST_BY_ID, &id);
226 list_for_each_entry(t, &omap_timer_list, node) {
227 if (t->pdev->id == id && !t->reserved) {
228 timer = t;
229 timer->reserved = 1;
230 break;
231 }
232 }
233 spin_unlock_irqrestore(&dm_timer_lock, flags);
234
235 if (timer) {
236 ret = omap_dm_timer_prepare(timer);
237 if (ret) {
238 timer->reserved = 0;
239 timer = NULL;
240 }
241 }
242
243 if (!timer)
244 pr_debug("%s: timer%d request failed!\n", __func__, id);
245
246 return timer;
247} 287}
248EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific); 288EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
249 289
@@ -258,46 +298,25 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_request_specific);
258 */ 298 */
259struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap) 299struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap)
260{ 300{
261 struct omap_dm_timer *timer = NULL, *t; 301 return _omap_dm_timer_request(REQUEST_BY_CAP, &cap);
262 unsigned long flags; 302}
303EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap);
263 304
264 if (!cap) 305/**
306 * omap_dm_timer_request_by_node - Request a timer by device-tree node
307 * @np: Pointer to device-tree timer node
308 *
309 * Request a timer based upon a device node pointer. Returns pointer to
310 * timer handle on success and a NULL pointer on failure.
311 */
312struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np)
313{
314 if (!np)
265 return NULL; 315 return NULL;
266 316
267 spin_lock_irqsave(&dm_timer_lock, flags); 317 return _omap_dm_timer_request(REQUEST_BY_NODE, np);
268 list_for_each_entry(t, &omap_timer_list, node) {
269 if ((!t->reserved) && ((t->capability & cap) == cap)) {
270 /*
271 * If timer is not NULL, we have already found one timer
272 * but it was not an exact match because it had more
273 * capabilites that what was required. Therefore,
274 * unreserve the last timer found and see if this one
275 * is a better match.
276 */
277 if (timer)
278 timer->reserved = 0;
279
280 timer = t;
281 timer->reserved = 1;
282
283 /* Exit loop early if we find an exact match */
284 if (t->capability == cap)
285 break;
286 }
287 }
288 spin_unlock_irqrestore(&dm_timer_lock, flags);
289
290 if (timer && omap_dm_timer_prepare(timer)) {
291 timer->reserved = 0;
292 timer = NULL;
293 }
294
295 if (!timer)
296 pr_debug("%s: timer request failed!\n", __func__);
297
298 return timer;
299} 318}
300EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_cap); 319EXPORT_SYMBOL_GPL(omap_dm_timer_request_by_node);
301 320
302int omap_dm_timer_free(struct omap_dm_timer *timer) 321int omap_dm_timer_free(struct omap_dm_timer *timer)
303{ 322{
@@ -314,7 +333,21 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_free);
314 333
315void omap_dm_timer_enable(struct omap_dm_timer *timer) 334void omap_dm_timer_enable(struct omap_dm_timer *timer)
316{ 335{
336 int c;
337
317 pm_runtime_get_sync(&timer->pdev->dev); 338 pm_runtime_get_sync(&timer->pdev->dev);
339
340 if (!(timer->capability & OMAP_TIMER_ALWON)) {
341 if (timer->get_context_loss_count) {
342 c = timer->get_context_loss_count(&timer->pdev->dev);
343 if (c != timer->ctx_loss_count) {
344 omap_timer_restore_context(timer);
345 timer->ctx_loss_count = c;
346 }
347 } else {
348 omap_timer_restore_context(timer);
349 }
350 }
318} 351}
319EXPORT_SYMBOL_GPL(omap_dm_timer_enable); 352EXPORT_SYMBOL_GPL(omap_dm_timer_enable);
320 353
@@ -409,13 +442,6 @@ int omap_dm_timer_start(struct omap_dm_timer *timer)
409 442
410 omap_dm_timer_enable(timer); 443 omap_dm_timer_enable(timer);
411 444
412 if (!(timer->capability & OMAP_TIMER_ALWON)) {
413 if (timer->get_context_loss_count &&
414 timer->get_context_loss_count(&timer->pdev->dev) !=
415 timer->ctx_loss_count)
416 omap_timer_restore_context(timer);
417 }
418
419 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); 445 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
420 if (!(l & OMAP_TIMER_CTRL_ST)) { 446 if (!(l & OMAP_TIMER_CTRL_ST)) {
421 l |= OMAP_TIMER_CTRL_ST; 447 l |= OMAP_TIMER_CTRL_ST;
@@ -440,12 +466,6 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
440 466
441 __omap_dm_timer_stop(timer, timer->posted, rate); 467 __omap_dm_timer_stop(timer, timer->posted, rate);
442 468
443 if (!(timer->capability & OMAP_TIMER_ALWON)) {
444 if (timer->get_context_loss_count)
445 timer->ctx_loss_count =
446 timer->get_context_loss_count(&timer->pdev->dev);
447 }
448
449 /* 469 /*
450 * Since the register values are computed and written within 470 * Since the register values are computed and written within
451 * __omap_dm_timer_stop, we need to use read to retrieve the 471 * __omap_dm_timer_stop, we need to use read to retrieve the
@@ -552,13 +572,6 @@ int omap_dm_timer_set_load_start(struct omap_dm_timer *timer, int autoreload,
552 572
553 omap_dm_timer_enable(timer); 573 omap_dm_timer_enable(timer);
554 574
555 if (!(timer->capability & OMAP_TIMER_ALWON)) {
556 if (timer->get_context_loss_count &&
557 timer->get_context_loss_count(&timer->pdev->dev) !=
558 timer->ctx_loss_count)
559 omap_timer_restore_context(timer);
560 }
561
562 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG); 575 l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
563 if (autoreload) { 576 if (autoreload) {
564 l |= OMAP_TIMER_CTRL_AR; 577 l |= OMAP_TIMER_CTRL_AR;
@@ -769,6 +782,8 @@ int omap_dm_timers_active(void)
769} 782}
770EXPORT_SYMBOL_GPL(omap_dm_timers_active); 783EXPORT_SYMBOL_GPL(omap_dm_timers_active);
771 784
785static const struct of_device_id omap_timer_match[];
786
772/** 787/**
773 * omap_dm_timer_probe - probe function called for every registered device 788 * omap_dm_timer_probe - probe function called for every registered device
774 * @pdev: pointer to current timer platform device 789 * @pdev: pointer to current timer platform device
@@ -782,7 +797,11 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
782 struct omap_dm_timer *timer; 797 struct omap_dm_timer *timer;
783 struct resource *mem, *irq; 798 struct resource *mem, *irq;
784 struct device *dev = &pdev->dev; 799 struct device *dev = &pdev->dev;
785 struct dmtimer_platform_data *pdata = pdev->dev.platform_data; 800 const struct of_device_id *match;
801 const struct dmtimer_platform_data *pdata;
802
803 match = of_match_device(of_match_ptr(omap_timer_match), dev);
804 pdata = match ? match->data : dev->platform_data;
786 805
787 if (!pdata && !dev->of_node) { 806 if (!pdata && !dev->of_node) {
788 dev_err(dev, "%s: no platform data.\n", __func__); 807 dev_err(dev, "%s: no platform data.\n", __func__);
@@ -823,12 +842,14 @@ static int omap_dm_timer_probe(struct platform_device *pdev)
823 timer->capability |= OMAP_TIMER_SECURE; 842 timer->capability |= OMAP_TIMER_SECURE;
824 } else { 843 } else {
825 timer->id = pdev->id; 844 timer->id = pdev->id;
826 timer->errata = pdata->timer_errata;
827 timer->capability = pdata->timer_capability; 845 timer->capability = pdata->timer_capability;
828 timer->reserved = omap_dm_timer_reserved_systimer(timer->id); 846 timer->reserved = omap_dm_timer_reserved_systimer(timer->id);
829 timer->get_context_loss_count = pdata->get_context_loss_count; 847 timer->get_context_loss_count = pdata->get_context_loss_count;
830 } 848 }
831 849
850 if (pdata)
851 timer->errata = pdata->timer_errata;
852
832 timer->irq = irq->start; 853 timer->irq = irq->start;
833 timer->pdev = pdev; 854 timer->pdev = pdev;
834 855
@@ -881,8 +902,34 @@ static int omap_dm_timer_remove(struct platform_device *pdev)
881 return ret; 902 return ret;
882} 903}
883 904
905static const struct dmtimer_platform_data omap3plus_pdata = {
906 .timer_errata = OMAP_TIMER_ERRATA_I103_I767,
907};
908
884static const struct of_device_id omap_timer_match[] = { 909static const struct of_device_id omap_timer_match[] = {
885 { .compatible = "ti,omap2-timer", }, 910 {
911 .compatible = "ti,omap2420-timer",
912 },
913 {
914 .compatible = "ti,omap3430-timer",
915 .data = &omap3plus_pdata,
916 },
917 {
918 .compatible = "ti,omap4430-timer",
919 .data = &omap3plus_pdata,
920 },
921 {
922 .compatible = "ti,omap5430-timer",
923 .data = &omap3plus_pdata,
924 },
925 {
926 .compatible = "ti,am335x-timer",
927 .data = &omap3plus_pdata,
928 },
929 {
930 .compatible = "ti,am335x-timer-1ms",
931 .data = &omap3plus_pdata,
932 },
886 {}, 933 {},
887}; 934};
888MODULE_DEVICE_TABLE(of, omap_timer_match); 935MODULE_DEVICE_TABLE(of, omap_timer_match);
diff --git a/arch/arm/plat-omap/include/plat/dmtimer.h b/arch/arm/plat-omap/include/plat/dmtimer.h
index a3fbc48c332e..fb92abb91628 100644
--- a/arch/arm/plat-omap/include/plat/dmtimer.h
+++ b/arch/arm/plat-omap/include/plat/dmtimer.h
@@ -128,6 +128,7 @@ int omap_dm_timer_reserve_systimer(int id);
128struct omap_dm_timer *omap_dm_timer_request(void); 128struct omap_dm_timer *omap_dm_timer_request(void);
129struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id); 129struct omap_dm_timer *omap_dm_timer_request_specific(int timer_id);
130struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap); 130struct omap_dm_timer *omap_dm_timer_request_by_cap(u32 cap);
131struct omap_dm_timer *omap_dm_timer_request_by_node(struct device_node *np);
131int omap_dm_timer_free(struct omap_dm_timer *timer); 132int omap_dm_timer_free(struct omap_dm_timer *timer);
132void omap_dm_timer_enable(struct omap_dm_timer *timer); 133void omap_dm_timer_enable(struct omap_dm_timer *timer);
133void omap_dm_timer_disable(struct omap_dm_timer *timer); 134void omap_dm_timer_disable(struct omap_dm_timer *timer);
diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
index 8f6d30d37c45..b48a79c28845 100644
--- a/drivers/dma/mxs-dma.c
+++ b/drivers/dma/mxs-dma.c
@@ -27,6 +27,7 @@
27#include <linux/stmp_device.h> 27#include <linux/stmp_device.h>
28#include <linux/of.h> 28#include <linux/of.h>
29#include <linux/of_device.h> 29#include <linux/of_device.h>
30#include <linux/of_dma.h>
30 31
31#include <asm/irq.h> 32#include <asm/irq.h>
32 33
@@ -139,6 +140,8 @@ struct mxs_dma_engine {
139 struct dma_device dma_device; 140 struct dma_device dma_device;
140 struct device_dma_parameters dma_parms; 141 struct device_dma_parameters dma_parms;
141 struct mxs_dma_chan mxs_chans[MXS_DMA_CHANNELS]; 142 struct mxs_dma_chan mxs_chans[MXS_DMA_CHANNELS];
143 struct platform_device *pdev;
144 unsigned int nr_channels;
142}; 145};
143 146
144struct mxs_dma_type { 147struct mxs_dma_type {
@@ -350,10 +353,8 @@ static int mxs_dma_alloc_chan_resources(struct dma_chan *chan)
350 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma; 353 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
351 int ret; 354 int ret;
352 355
353 if (!data) 356 if (data)
354 return -EINVAL; 357 mxs_chan->chan_irq = data->chan_irq;
355
356 mxs_chan->chan_irq = data->chan_irq;
357 358
358 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev, 359 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev,
359 CCW_BLOCK_SIZE, &mxs_chan->ccw_phys, 360 CCW_BLOCK_SIZE, &mxs_chan->ccw_phys,
@@ -665,8 +666,55 @@ err_out:
665 return ret; 666 return ret;
666} 667}
667 668
669struct mxs_dma_filter_param {
670 struct device_node *of_node;
671 unsigned int chan_id;
672};
673
674static bool mxs_dma_filter_fn(struct dma_chan *chan, void *fn_param)
675{
676 struct mxs_dma_filter_param *param = fn_param;
677 struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
678 struct mxs_dma_engine *mxs_dma = mxs_chan->mxs_dma;
679 int chan_irq;
680
681 if (mxs_dma->dma_device.dev->of_node != param->of_node)
682 return false;
683
684 if (chan->chan_id != param->chan_id)
685 return false;
686
687 chan_irq = platform_get_irq(mxs_dma->pdev, param->chan_id);
688 if (chan_irq < 0)
689 return false;
690
691 mxs_chan->chan_irq = chan_irq;
692
693 return true;
694}
695
696struct dma_chan *mxs_dma_xlate(struct of_phandle_args *dma_spec,
697 struct of_dma *ofdma)
698{
699 struct mxs_dma_engine *mxs_dma = ofdma->of_dma_data;
700 dma_cap_mask_t mask = mxs_dma->dma_device.cap_mask;
701 struct mxs_dma_filter_param param;
702
703 if (dma_spec->args_count != 1)
704 return NULL;
705
706 param.of_node = ofdma->of_node;
707 param.chan_id = dma_spec->args[0];
708
709 if (param.chan_id >= mxs_dma->nr_channels)
710 return NULL;
711
712 return dma_request_channel(mask, mxs_dma_filter_fn, &param);
713}
714
668static int __init mxs_dma_probe(struct platform_device *pdev) 715static int __init mxs_dma_probe(struct platform_device *pdev)
669{ 716{
717 struct device_node *np = pdev->dev.of_node;
670 const struct platform_device_id *id_entry; 718 const struct platform_device_id *id_entry;
671 const struct of_device_id *of_id; 719 const struct of_device_id *of_id;
672 const struct mxs_dma_type *dma_type; 720 const struct mxs_dma_type *dma_type;
@@ -674,10 +722,16 @@ static int __init mxs_dma_probe(struct platform_device *pdev)
674 struct resource *iores; 722 struct resource *iores;
675 int ret, i; 723 int ret, i;
676 724
677 mxs_dma = kzalloc(sizeof(*mxs_dma), GFP_KERNEL); 725 mxs_dma = devm_kzalloc(&pdev->dev, sizeof(*mxs_dma), GFP_KERNEL);
678 if (!mxs_dma) 726 if (!mxs_dma)
679 return -ENOMEM; 727 return -ENOMEM;
680 728
729 ret = of_property_read_u32(np, "dma-channels", &mxs_dma->nr_channels);
730 if (ret) {
731 dev_err(&pdev->dev, "failed to read dma-channels\n");
732 return ret;
733 }
734
681 of_id = of_match_device(mxs_dma_dt_ids, &pdev->dev); 735 of_id = of_match_device(mxs_dma_dt_ids, &pdev->dev);
682 if (of_id) 736 if (of_id)
683 id_entry = of_id->data; 737 id_entry = of_id->data;
@@ -689,24 +743,13 @@ static int __init mxs_dma_probe(struct platform_device *pdev)
689 mxs_dma->dev_id = dma_type->id; 743 mxs_dma->dev_id = dma_type->id;
690 744
691 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); 745 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
746 mxs_dma->base = devm_ioremap_resource(&pdev->dev, iores);
747 if (IS_ERR(mxs_dma->base))
748 return PTR_ERR(mxs_dma->base);
692 749
693 if (!request_mem_region(iores->start, resource_size(iores), 750 mxs_dma->clk = devm_clk_get(&pdev->dev, NULL);
694 pdev->name)) { 751 if (IS_ERR(mxs_dma->clk))
695 ret = -EBUSY; 752 return PTR_ERR(mxs_dma->clk);
696 goto err_request_region;
697 }
698
699 mxs_dma->base = ioremap(iores->start, resource_size(iores));
700 if (!mxs_dma->base) {
701 ret = -ENOMEM;
702 goto err_ioremap;
703 }
704
705 mxs_dma->clk = clk_get(&pdev->dev, NULL);
706 if (IS_ERR(mxs_dma->clk)) {
707 ret = PTR_ERR(mxs_dma->clk);
708 goto err_clk;
709 }
710 753
711 dma_cap_set(DMA_SLAVE, mxs_dma->dma_device.cap_mask); 754 dma_cap_set(DMA_SLAVE, mxs_dma->dma_device.cap_mask);
712 dma_cap_set(DMA_CYCLIC, mxs_dma->dma_device.cap_mask); 755 dma_cap_set(DMA_CYCLIC, mxs_dma->dma_device.cap_mask);
@@ -732,8 +775,9 @@ static int __init mxs_dma_probe(struct platform_device *pdev)
732 775
733 ret = mxs_dma_init(mxs_dma); 776 ret = mxs_dma_init(mxs_dma);
734 if (ret) 777 if (ret)
735 goto err_init; 778 return ret;
736 779
780 mxs_dma->pdev = pdev;
737 mxs_dma->dma_device.dev = &pdev->dev; 781 mxs_dma->dma_device.dev = &pdev->dev;
738 782
739 /* mxs_dma gets 65535 bytes maximum sg size */ 783 /* mxs_dma gets 65535 bytes maximum sg size */
@@ -751,22 +795,19 @@ static int __init mxs_dma_probe(struct platform_device *pdev)
751 ret = dma_async_device_register(&mxs_dma->dma_device); 795 ret = dma_async_device_register(&mxs_dma->dma_device);
752 if (ret) { 796 if (ret) {
753 dev_err(mxs_dma->dma_device.dev, "unable to register\n"); 797 dev_err(mxs_dma->dma_device.dev, "unable to register\n");
754 goto err_init; 798 return ret;
799 }
800
801 ret = of_dma_controller_register(np, mxs_dma_xlate, mxs_dma);
802 if (ret) {
803 dev_err(mxs_dma->dma_device.dev,
804 "failed to register controller\n");
805 dma_async_device_unregister(&mxs_dma->dma_device);
755 } 806 }
756 807
757 dev_info(mxs_dma->dma_device.dev, "initialized\n"); 808 dev_info(mxs_dma->dma_device.dev, "initialized\n");
758 809
759 return 0; 810 return 0;
760
761err_init:
762 clk_put(mxs_dma->clk);
763err_clk:
764 iounmap(mxs_dma->base);
765err_ioremap:
766 release_mem_region(iores->start, resource_size(iores));
767err_request_region:
768 kfree(mxs_dma);
769 return ret;
770} 811}
771 812
772static struct platform_driver mxs_dma_driver = { 813static struct platform_driver mxs_dma_driver = {
diff --git a/drivers/i2c/busses/i2c-mxs.c b/drivers/i2c/busses/i2c-mxs.c
index c67d89fc6254..2039f230482d 100644
--- a/drivers/i2c/busses/i2c-mxs.c
+++ b/drivers/i2c/busses/i2c-mxs.c
@@ -31,7 +31,6 @@
31#include <linux/of_i2c.h> 31#include <linux/of_i2c.h>
32#include <linux/dma-mapping.h> 32#include <linux/dma-mapping.h>
33#include <linux/dmaengine.h> 33#include <linux/dmaengine.h>
34#include <linux/fsl/mxs-dma.h>
35 34
36#define DRIVER_NAME "mxs-i2c" 35#define DRIVER_NAME "mxs-i2c"
37 36
@@ -118,9 +117,7 @@ struct mxs_i2c_dev {
118 uint32_t timing1; 117 uint32_t timing1;
119 118
120 /* DMA support components */ 119 /* DMA support components */
121 int dma_channel;
122 struct dma_chan *dmach; 120 struct dma_chan *dmach;
123 struct mxs_dma_data dma_data;
124 uint32_t pio_data[2]; 121 uint32_t pio_data[2];
125 uint32_t addr_data; 122 uint32_t addr_data;
126 struct scatterlist sg_io[2]; 123 struct scatterlist sg_io[2];
@@ -581,21 +578,6 @@ static const struct i2c_algorithm mxs_i2c_algo = {
581 .functionality = mxs_i2c_func, 578 .functionality = mxs_i2c_func,
582}; 579};
583 580
584static bool mxs_i2c_dma_filter(struct dma_chan *chan, void *param)
585{
586 struct mxs_i2c_dev *i2c = param;
587
588 if (!mxs_dma_is_apbx(chan))
589 return false;
590
591 if (chan->chan_id != i2c->dma_channel)
592 return false;
593
594 chan->private = &i2c->dma_data;
595
596 return true;
597}
598
599static void mxs_i2c_derive_timing(struct mxs_i2c_dev *i2c, int speed) 581static void mxs_i2c_derive_timing(struct mxs_i2c_dev *i2c, int speed)
600{ 582{
601 /* The I2C block clock run at 24MHz */ 583 /* The I2C block clock run at 24MHz */
@@ -640,17 +622,6 @@ static int mxs_i2c_get_ofdata(struct mxs_i2c_dev *i2c)
640 struct device_node *node = dev->of_node; 622 struct device_node *node = dev->of_node;
641 int ret; 623 int ret;
642 624
643 /*
644 * TODO: This is a temporary solution and should be changed
645 * to use generic DMA binding later when the helpers get in.
646 */
647 ret = of_property_read_u32(node, "fsl,i2c-dma-channel",
648 &i2c->dma_channel);
649 if (ret) {
650 dev_err(dev, "Failed to get DMA channel!\n");
651 return -ENODEV;
652 }
653
654 ret = of_property_read_u32(node, "clock-frequency", &speed); 625 ret = of_property_read_u32(node, "clock-frequency", &speed);
655 if (ret) { 626 if (ret) {
656 dev_warn(dev, "No I2C speed selected, using 100kHz\n"); 627 dev_warn(dev, "No I2C speed selected, using 100kHz\n");
@@ -670,8 +641,7 @@ static int mxs_i2c_probe(struct platform_device *pdev)
670 struct pinctrl *pinctrl; 641 struct pinctrl *pinctrl;
671 struct resource *res; 642 struct resource *res;
672 resource_size_t res_size; 643 resource_size_t res_size;
673 int err, irq, dmairq; 644 int err, irq;
674 dma_cap_mask_t mask;
675 645
676 pinctrl = devm_pinctrl_get_select_default(dev); 646 pinctrl = devm_pinctrl_get_select_default(dev);
677 if (IS_ERR(pinctrl)) 647 if (IS_ERR(pinctrl))
@@ -683,9 +653,8 @@ static int mxs_i2c_probe(struct platform_device *pdev)
683 653
684 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 654 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
685 irq = platform_get_irq(pdev, 0); 655 irq = platform_get_irq(pdev, 0);
686 dmairq = platform_get_irq(pdev, 1);
687 656
688 if (!res || irq < 0 || dmairq < 0) 657 if (!res || irq < 0)
689 return -ENOENT; 658 return -ENOENT;
690 659
691 res_size = resource_size(res); 660 res_size = resource_size(res);
@@ -711,10 +680,7 @@ static int mxs_i2c_probe(struct platform_device *pdev)
711 } 680 }
712 681
713 /* Setup the DMA */ 682 /* Setup the DMA */
714 dma_cap_zero(mask); 683 i2c->dmach = dma_request_slave_channel(dev, "rx-tx");
715 dma_cap_set(DMA_SLAVE, mask);
716 i2c->dma_data.chan_irq = dmairq;
717 i2c->dmach = dma_request_channel(mask, mxs_i2c_dma_filter, i2c);
718 if (!i2c->dmach) { 684 if (!i2c->dmach) {
719 dev_err(dev, "Failed to request dma\n"); 685 dev_err(dev, "Failed to request dma\n");
720 return -ENODEV; 686 return -ENODEV;
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 146a53bfab71..4278a1787d08 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -552,22 +552,6 @@ static const struct mmc_host_ops mxs_mmc_ops = {
552 .enable_sdio_irq = mxs_mmc_enable_sdio_irq, 552 .enable_sdio_irq = mxs_mmc_enable_sdio_irq,
553}; 553};
554 554
555static bool mxs_mmc_dma_filter(struct dma_chan *chan, void *param)
556{
557 struct mxs_mmc_host *host = param;
558 struct mxs_ssp *ssp = &host->ssp;
559
560 if (!mxs_dma_is_apbh(chan))
561 return false;
562
563 if (chan->chan_id != ssp->dma_channel)
564 return false;
565
566 chan->private = &ssp->dma_data;
567
568 return true;
569}
570
571static struct platform_device_id mxs_ssp_ids[] = { 555static struct platform_device_id mxs_ssp_ids[] = {
572 { 556 {
573 .name = "imx23-mmc", 557 .name = "imx23-mmc",
@@ -595,20 +579,17 @@ static int mxs_mmc_probe(struct platform_device *pdev)
595 struct device_node *np = pdev->dev.of_node; 579 struct device_node *np = pdev->dev.of_node;
596 struct mxs_mmc_host *host; 580 struct mxs_mmc_host *host;
597 struct mmc_host *mmc; 581 struct mmc_host *mmc;
598 struct resource *iores, *dmares; 582 struct resource *iores;
599 struct pinctrl *pinctrl; 583 struct pinctrl *pinctrl;
600 int ret = 0, irq_err, irq_dma; 584 int ret = 0, irq_err;
601 dma_cap_mask_t mask;
602 struct regulator *reg_vmmc; 585 struct regulator *reg_vmmc;
603 enum of_gpio_flags flags; 586 enum of_gpio_flags flags;
604 struct mxs_ssp *ssp; 587 struct mxs_ssp *ssp;
605 u32 bus_width = 0; 588 u32 bus_width = 0;
606 589
607 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); 590 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
608 dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0);
609 irq_err = platform_get_irq(pdev, 0); 591 irq_err = platform_get_irq(pdev, 0);
610 irq_dma = platform_get_irq(pdev, 1); 592 if (!iores || irq_err < 0)
611 if (!iores || irq_err < 0 || irq_dma < 0)
612 return -EINVAL; 593 return -EINVAL;
613 594
614 mmc = mmc_alloc_host(sizeof(struct mxs_mmc_host), &pdev->dev); 595 mmc = mmc_alloc_host(sizeof(struct mxs_mmc_host), &pdev->dev);
@@ -624,23 +605,7 @@ static int mxs_mmc_probe(struct platform_device *pdev)
624 goto out_mmc_free; 605 goto out_mmc_free;
625 } 606 }
626 607
627 if (np) { 608 ssp->devid = (enum mxs_ssp_id) of_id->data;
628 ssp->devid = (enum mxs_ssp_id) of_id->data;
629 /*
630 * TODO: This is a temporary solution and should be changed
631 * to use generic DMA binding later when the helpers get in.
632 */
633 ret = of_property_read_u32(np, "fsl,ssp-dma-channel",
634 &ssp->dma_channel);
635 if (ret) {
636 dev_err(mmc_dev(host->mmc),
637 "failed to get dma channel\n");
638 goto out_mmc_free;
639 }
640 } else {
641 ssp->devid = pdev->id_entry->driver_data;
642 ssp->dma_channel = dmares->start;
643 }
644 609
645 host->mmc = mmc; 610 host->mmc = mmc;
646 host->sdio_irq_en = 0; 611 host->sdio_irq_en = 0;
@@ -670,10 +635,7 @@ static int mxs_mmc_probe(struct platform_device *pdev)
670 635
671 mxs_mmc_reset(host); 636 mxs_mmc_reset(host);
672 637
673 dma_cap_zero(mask); 638 ssp->dmach = dma_request_slave_channel(&pdev->dev, "rx-tx");
674 dma_cap_set(DMA_SLAVE, mask);
675 ssp->dma_data.chan_irq = irq_dma;
676 ssp->dmach = dma_request_channel(mask, mxs_mmc_dma_filter, host);
677 if (!ssp->dmach) { 639 if (!ssp->dmach) {
678 dev_err(mmc_dev(host->mmc), 640 dev_err(mmc_dev(host->mmc),
679 "%s: failed to request dma\n", __func__); 641 "%s: failed to request dma\n", __func__);
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
index 717881a3d1b8..25ecfa1822a8 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c
@@ -36,7 +36,6 @@
36#define GPMI_NAND_GPMI_REGS_ADDR_RES_NAME "gpmi-nand" 36#define GPMI_NAND_GPMI_REGS_ADDR_RES_NAME "gpmi-nand"
37#define GPMI_NAND_BCH_REGS_ADDR_RES_NAME "bch" 37#define GPMI_NAND_BCH_REGS_ADDR_RES_NAME "bch"
38#define GPMI_NAND_BCH_INTERRUPT_RES_NAME "bch" 38#define GPMI_NAND_BCH_INTERRUPT_RES_NAME "bch"
39#define GPMI_NAND_DMA_INTERRUPT_RES_NAME "gpmi-dma"
40 39
41/* add our owner bbt descriptor */ 40/* add our owner bbt descriptor */
42static uint8_t scan_ff_pattern[] = { 0xff }; 41static uint8_t scan_ff_pattern[] = { 0xff };
@@ -420,28 +419,6 @@ static void release_bch_irq(struct gpmi_nand_data *this)
420 free_irq(i, this); 419 free_irq(i, this);
421} 420}
422 421
423static bool gpmi_dma_filter(struct dma_chan *chan, void *param)
424{
425 struct gpmi_nand_data *this = param;
426 int dma_channel = (int)this->private;
427
428 if (!mxs_dma_is_apbh(chan))
429 return false;
430 /*
431 * only catch the GPMI dma channels :
432 * for mx23 : MX23_DMA_GPMI0 ~ MX23_DMA_GPMI3
433 * (These four channels share the same IRQ!)
434 *
435 * for mx28 : MX28_DMA_GPMI0 ~ MX28_DMA_GPMI7
436 * (These eight channels share the same IRQ!)
437 */
438 if (dma_channel == chan->chan_id) {
439 chan->private = &this->dma_data;
440 return true;
441 }
442 return false;
443}
444
445static void release_dma_channels(struct gpmi_nand_data *this) 422static void release_dma_channels(struct gpmi_nand_data *this)
446{ 423{
447 unsigned int i; 424 unsigned int i;
@@ -455,36 +432,10 @@ static void release_dma_channels(struct gpmi_nand_data *this)
455static int acquire_dma_channels(struct gpmi_nand_data *this) 432static int acquire_dma_channels(struct gpmi_nand_data *this)
456{ 433{
457 struct platform_device *pdev = this->pdev; 434 struct platform_device *pdev = this->pdev;
458 struct resource *r_dma;
459 struct device_node *dn;
460 u32 dma_channel;
461 int ret;
462 struct dma_chan *dma_chan; 435 struct dma_chan *dma_chan;
463 dma_cap_mask_t mask;
464
465 /* dma channel, we only use the first one. */
466 dn = pdev->dev.of_node;
467 ret = of_property_read_u32(dn, "fsl,gpmi-dma-channel", &dma_channel);
468 if (ret) {
469 pr_err("unable to get DMA channel from dt.\n");
470 goto acquire_err;
471 }
472 this->private = (void *)dma_channel;
473
474 /* gpmi dma interrupt */
475 r_dma = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
476 GPMI_NAND_DMA_INTERRUPT_RES_NAME);
477 if (!r_dma) {
478 pr_err("Can't get resource for DMA\n");
479 goto acquire_err;
480 }
481 this->dma_data.chan_irq = r_dma->start;
482 436
483 /* request dma channel */ 437 /* request dma channel */
484 dma_cap_zero(mask); 438 dma_chan = dma_request_slave_channel(&pdev->dev, "rx-tx");
485 dma_cap_set(DMA_SLAVE, mask);
486
487 dma_chan = dma_request_channel(mask, gpmi_dma_filter, this);
488 if (!dma_chan) { 439 if (!dma_chan) {
489 pr_err("Failed to request DMA channel.\n"); 440 pr_err("Failed to request DMA channel.\n");
490 goto acquire_err; 441 goto acquire_err;
diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
index 072947731277..a7685e3a8748 100644
--- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
+++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.h
@@ -20,7 +20,7 @@
20#include <linux/mtd/nand.h> 20#include <linux/mtd/nand.h>
21#include <linux/platform_device.h> 21#include <linux/platform_device.h>
22#include <linux/dma-mapping.h> 22#include <linux/dma-mapping.h>
23#include <linux/fsl/mxs-dma.h> 23#include <linux/dmaengine.h>
24 24
25#define GPMI_CLK_MAX 5 /* MX6Q needs five clocks */ 25#define GPMI_CLK_MAX 5 /* MX6Q needs five clocks */
26struct resources { 26struct resources {
@@ -180,7 +180,6 @@ struct gpmi_nand_data {
180 /* DMA channels */ 180 /* DMA channels */
181#define DMA_CHANS 8 181#define DMA_CHANS 8
182 struct dma_chan *dma_chans[DMA_CHANS]; 182 struct dma_chan *dma_chans[DMA_CHANS];
183 struct mxs_dma_data dma_data;
184 enum dma_ops_type last_dma_type; 183 enum dma_ops_type last_dma_type;
185 enum dma_ops_type dma_type; 184 enum dma_ops_type dma_type;
186 struct completion dma_done; 185 struct completion dma_done;
diff --git a/drivers/net/ethernet/freescale/fec.h b/drivers/net/ethernet/freescale/fec.h
index d44f65bac1d4..ceb4d43c132d 100644
--- a/drivers/net/ethernet/freescale/fec.h
+++ b/drivers/net/ethernet/freescale/fec.h
@@ -214,6 +214,7 @@ struct fec_enet_private {
214 214
215 struct clk *clk_ipg; 215 struct clk *clk_ipg;
216 struct clk *clk_ahb; 216 struct clk *clk_ahb;
217 struct clk *clk_enet_out;
217 struct clk *clk_ptp; 218 struct clk *clk_ptp;
218 219
219 /* The saved address of a sent-in-place packet/buffer, for skfree(). */ 220 /* The saved address of a sent-in-place packet/buffer, for skfree(). */
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index b9748f14ea78..e25bf832e6b3 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1883,18 +1883,23 @@ fec_probe(struct platform_device *pdev)
1883 goto failed_clk; 1883 goto failed_clk;
1884 } 1884 }
1885 1885
1886 /* enet_out is optional, depends on board */
1887 fep->clk_enet_out = devm_clk_get(&pdev->dev, "enet_out");
1888 if (IS_ERR(fep->clk_enet_out))
1889 fep->clk_enet_out = NULL;
1890
1886 fep->clk_ptp = devm_clk_get(&pdev->dev, "ptp"); 1891 fep->clk_ptp = devm_clk_get(&pdev->dev, "ptp");
1887 fep->bufdesc_ex = 1892 fep->bufdesc_ex =
1888 pdev->id_entry->driver_data & FEC_QUIRK_HAS_BUFDESC_EX; 1893 pdev->id_entry->driver_data & FEC_QUIRK_HAS_BUFDESC_EX;
1889 if (IS_ERR(fep->clk_ptp)) { 1894 if (IS_ERR(fep->clk_ptp)) {
1890 ret = PTR_ERR(fep->clk_ptp); 1895 fep->clk_ptp = NULL;
1891 fep->bufdesc_ex = 0; 1896 fep->bufdesc_ex = 0;
1892 } 1897 }
1893 1898
1894 clk_prepare_enable(fep->clk_ahb); 1899 clk_prepare_enable(fep->clk_ahb);
1895 clk_prepare_enable(fep->clk_ipg); 1900 clk_prepare_enable(fep->clk_ipg);
1896 if (!IS_ERR(fep->clk_ptp)) 1901 clk_prepare_enable(fep->clk_enet_out);
1897 clk_prepare_enable(fep->clk_ptp); 1902 clk_prepare_enable(fep->clk_ptp);
1898 1903
1899 reg_phy = devm_regulator_get(&pdev->dev, "phy"); 1904 reg_phy = devm_regulator_get(&pdev->dev, "phy");
1900 if (!IS_ERR(reg_phy)) { 1905 if (!IS_ERR(reg_phy)) {
@@ -1962,8 +1967,8 @@ failed_irq:
1962failed_regulator: 1967failed_regulator:
1963 clk_disable_unprepare(fep->clk_ahb); 1968 clk_disable_unprepare(fep->clk_ahb);
1964 clk_disable_unprepare(fep->clk_ipg); 1969 clk_disable_unprepare(fep->clk_ipg);
1965 if (!IS_ERR(fep->clk_ptp)) 1970 clk_disable_unprepare(fep->clk_enet_out);
1966 clk_disable_unprepare(fep->clk_ptp); 1971 clk_disable_unprepare(fep->clk_ptp);
1967failed_pin: 1972failed_pin:
1968failed_clk: 1973failed_clk:
1969failed_ioremap: 1974failed_ioremap:
@@ -1985,6 +1990,7 @@ fec_drv_remove(struct platform_device *pdev)
1985 clk_disable_unprepare(fep->clk_ptp); 1990 clk_disable_unprepare(fep->clk_ptp);
1986 if (fep->ptp_clock) 1991 if (fep->ptp_clock)
1987 ptp_clock_unregister(fep->ptp_clock); 1992 ptp_clock_unregister(fep->ptp_clock);
1993 clk_disable_unprepare(fep->clk_enet_out);
1988 clk_disable_unprepare(fep->clk_ahb); 1994 clk_disable_unprepare(fep->clk_ahb);
1989 clk_disable_unprepare(fep->clk_ipg); 1995 clk_disable_unprepare(fep->clk_ipg);
1990 for (i = 0; i < FEC_IRQ_NUM; i++) { 1996 for (i = 0; i < FEC_IRQ_NUM; i++) {
@@ -2010,6 +2016,7 @@ fec_suspend(struct device *dev)
2010 fec_stop(ndev); 2016 fec_stop(ndev);
2011 netif_device_detach(ndev); 2017 netif_device_detach(ndev);
2012 } 2018 }
2019 clk_disable_unprepare(fep->clk_enet_out);
2013 clk_disable_unprepare(fep->clk_ahb); 2020 clk_disable_unprepare(fep->clk_ahb);
2014 clk_disable_unprepare(fep->clk_ipg); 2021 clk_disable_unprepare(fep->clk_ipg);
2015 2022
@@ -2022,6 +2029,7 @@ fec_resume(struct device *dev)
2022 struct net_device *ndev = dev_get_drvdata(dev); 2029 struct net_device *ndev = dev_get_drvdata(dev);
2023 struct fec_enet_private *fep = netdev_priv(ndev); 2030 struct fec_enet_private *fep = netdev_priv(ndev);
2024 2031
2032 clk_prepare_enable(fep->clk_enet_out);
2025 clk_prepare_enable(fep->clk_ahb); 2033 clk_prepare_enable(fep->clk_ahb);
2026 clk_prepare_enable(fep->clk_ipg); 2034 clk_prepare_enable(fep->clk_ipg);
2027 if (netif_running(ndev)) { 2035 if (netif_running(ndev)) {
diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c
index 8234d2259722..2e8f24a1fb95 100644
--- a/drivers/spi/spi-davinci.c
+++ b/drivers/spi/spi-davinci.c
@@ -776,10 +776,10 @@ rx_dma_failed:
776#if defined(CONFIG_OF) 776#if defined(CONFIG_OF)
777static const struct of_device_id davinci_spi_of_match[] = { 777static const struct of_device_id davinci_spi_of_match[] = {
778 { 778 {
779 .compatible = "ti,dm644x-spi", 779 .compatible = "ti,dm6441-spi",
780 }, 780 },
781 { 781 {
782 .compatible = "ti,da8xx-spi", 782 .compatible = "ti,da830-spi",
783 .data = (void *)SPI_VERSION_2, 783 .data = (void *)SPI_VERSION_2,
784 }, 784 },
785 { }, 785 { },
diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c
index a1d5778e2bbb..84982768cd10 100644
--- a/drivers/spi/spi-mxs.c
+++ b/drivers/spi/spi-mxs.c
@@ -490,21 +490,6 @@ static int mxs_spi_transfer_one(struct spi_master *master,
490 return status; 490 return status;
491} 491}
492 492
493static bool mxs_ssp_dma_filter(struct dma_chan *chan, void *param)
494{
495 struct mxs_ssp *ssp = param;
496
497 if (!mxs_dma_is_apbh(chan))
498 return false;
499
500 if (chan->chan_id != ssp->dma_channel)
501 return false;
502
503 chan->private = &ssp->dma_data;
504
505 return true;
506}
507
508static const struct of_device_id mxs_spi_dt_ids[] = { 493static const struct of_device_id mxs_spi_dt_ids[] = {
509 { .compatible = "fsl,imx23-spi", .data = (void *) IMX23_SSP, }, 494 { .compatible = "fsl,imx23-spi", .data = (void *) IMX23_SSP, },
510 { .compatible = "fsl,imx28-spi", .data = (void *) IMX28_SSP, }, 495 { .compatible = "fsl,imx28-spi", .data = (void *) IMX28_SSP, },
@@ -520,13 +505,12 @@ static int mxs_spi_probe(struct platform_device *pdev)
520 struct spi_master *master; 505 struct spi_master *master;
521 struct mxs_spi *spi; 506 struct mxs_spi *spi;
522 struct mxs_ssp *ssp; 507 struct mxs_ssp *ssp;
523 struct resource *iores, *dmares; 508 struct resource *iores;
524 struct pinctrl *pinctrl; 509 struct pinctrl *pinctrl;
525 struct clk *clk; 510 struct clk *clk;
526 void __iomem *base; 511 void __iomem *base;
527 int devid, dma_channel, clk_freq; 512 int devid, clk_freq;
528 int ret = 0, irq_err, irq_dma; 513 int ret = 0, irq_err;
529 dma_cap_mask_t mask;
530 514
531 /* 515 /*
532 * Default clock speed for the SPI core. 160MHz seems to 516 * Default clock speed for the SPI core. 160MHz seems to
@@ -537,8 +521,7 @@ static int mxs_spi_probe(struct platform_device *pdev)
537 521
538 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0); 522 iores = platform_get_resource(pdev, IORESOURCE_MEM, 0);
539 irq_err = platform_get_irq(pdev, 0); 523 irq_err = platform_get_irq(pdev, 0);
540 irq_dma = platform_get_irq(pdev, 1); 524 if (!iores || irq_err < 0)
541 if (!iores || irq_err < 0 || irq_dma < 0)
542 return -EINVAL; 525 return -EINVAL;
543 526
544 base = devm_ioremap_resource(&pdev->dev, iores); 527 base = devm_ioremap_resource(&pdev->dev, iores);
@@ -553,32 +536,11 @@ static int mxs_spi_probe(struct platform_device *pdev)
553 if (IS_ERR(clk)) 536 if (IS_ERR(clk))
554 return PTR_ERR(clk); 537 return PTR_ERR(clk);
555 538
556 if (np) { 539 devid = (enum mxs_ssp_id) of_id->data;
557 devid = (enum mxs_ssp_id) of_id->data; 540 ret = of_property_read_u32(np, "clock-frequency",
558 /* 541 &clk_freq);
559 * TODO: This is a temporary solution and should be changed 542 if (ret)
560 * to use generic DMA binding later when the helpers get in.
561 */
562 ret = of_property_read_u32(np, "fsl,ssp-dma-channel",
563 &dma_channel);
564 if (ret) {
565 dev_err(&pdev->dev,
566 "Failed to get DMA channel\n");
567 return -EINVAL;
568 }
569
570 ret = of_property_read_u32(np, "clock-frequency",
571 &clk_freq);
572 if (ret)
573 clk_freq = clk_freq_default;
574 } else {
575 dmares = platform_get_resource(pdev, IORESOURCE_DMA, 0);
576 if (!dmares)
577 return -EINVAL;
578 devid = pdev->id_entry->driver_data;
579 dma_channel = dmares->start;
580 clk_freq = clk_freq_default; 543 clk_freq = clk_freq_default;
581 }
582 544
583 master = spi_alloc_master(&pdev->dev, sizeof(*spi)); 545 master = spi_alloc_master(&pdev->dev, sizeof(*spi));
584 if (!master) 546 if (!master)
@@ -597,7 +559,6 @@ static int mxs_spi_probe(struct platform_device *pdev)
597 ssp->clk = clk; 559 ssp->clk = clk;
598 ssp->base = base; 560 ssp->base = base;
599 ssp->devid = devid; 561 ssp->devid = devid;
600 ssp->dma_channel = dma_channel;
601 562
602 init_completion(&spi->c); 563 init_completion(&spi->c);
603 564
@@ -606,10 +567,7 @@ static int mxs_spi_probe(struct platform_device *pdev)
606 if (ret) 567 if (ret)
607 goto out_master_free; 568 goto out_master_free;
608 569
609 dma_cap_zero(mask); 570 ssp->dmach = dma_request_slave_channel(&pdev->dev, "rx-tx");
610 dma_cap_set(DMA_SLAVE, mask);
611 ssp->dma_data.chan_irq = irq_dma;
612 ssp->dmach = dma_request_channel(mask, mxs_ssp_dma_filter, ssp);
613 if (!ssp->dmach) { 571 if (!ssp->dmach) {
614 dev_err(ssp->dev, "Failed to request DMA\n"); 572 dev_err(ssp->dev, "Failed to request DMA\n");
615 ret = -ENODEV; 573 ret = -ENODEV;
diff --git a/drivers/tty/serial/mxs-auart.c b/drivers/tty/serial/mxs-auart.c
index 62e7d3b015a1..4f5f161896a1 100644
--- a/drivers/tty/serial/mxs-auart.c
+++ b/drivers/tty/serial/mxs-auart.c
@@ -35,7 +35,7 @@
35#include <linux/pinctrl/consumer.h> 35#include <linux/pinctrl/consumer.h>
36#include <linux/of_device.h> 36#include <linux/of_device.h>
37#include <linux/dma-mapping.h> 37#include <linux/dma-mapping.h>
38#include <linux/fsl/mxs-dma.h> 38#include <linux/dmaengine.h>
39 39
40#include <asm/cacheflush.h> 40#include <asm/cacheflush.h>
41 41
@@ -148,11 +148,6 @@ struct mxs_auart_port {
148 struct device *dev; 148 struct device *dev;
149 149
150 /* for DMA */ 150 /* for DMA */
151 struct mxs_dma_data dma_data;
152 int dma_channel_rx, dma_channel_tx;
153 int dma_irq_rx, dma_irq_tx;
154 int dma_channel;
155
156 struct scatterlist tx_sgl; 151 struct scatterlist tx_sgl;
157 struct dma_chan *tx_dma_chan; 152 struct dma_chan *tx_dma_chan;
158 void *tx_dma_buf; 153 void *tx_dma_buf;
@@ -440,20 +435,6 @@ static u32 mxs_auart_get_mctrl(struct uart_port *u)
440 return mctrl; 435 return mctrl;
441} 436}
442 437
443static bool mxs_auart_dma_filter(struct dma_chan *chan, void *param)
444{
445 struct mxs_auart_port *s = param;
446
447 if (!mxs_dma_is_apbx(chan))
448 return false;
449
450 if (s->dma_channel == chan->chan_id) {
451 chan->private = &s->dma_data;
452 return true;
453 }
454 return false;
455}
456
457static int mxs_auart_dma_prep_rx(struct mxs_auart_port *s); 438static int mxs_auart_dma_prep_rx(struct mxs_auart_port *s);
458static void dma_rx_callback(void *arg) 439static void dma_rx_callback(void *arg)
459{ 440{
@@ -545,21 +526,11 @@ static void mxs_auart_dma_exit(struct mxs_auart_port *s)
545 526
546static int mxs_auart_dma_init(struct mxs_auart_port *s) 527static int mxs_auart_dma_init(struct mxs_auart_port *s)
547{ 528{
548 dma_cap_mask_t mask;
549
550 if (auart_dma_enabled(s)) 529 if (auart_dma_enabled(s))
551 return 0; 530 return 0;
552 531
553 /* We do not get the right DMA channels. */
554 if (s->dma_channel_rx == -1 || s->dma_channel_tx == -1)
555 return -EINVAL;
556
557 /* init for RX */ 532 /* init for RX */
558 dma_cap_zero(mask); 533 s->rx_dma_chan = dma_request_slave_channel(s->dev, "rx");
559 dma_cap_set(DMA_SLAVE, mask);
560 s->dma_channel = s->dma_channel_rx;
561 s->dma_data.chan_irq = s->dma_irq_rx;
562 s->rx_dma_chan = dma_request_channel(mask, mxs_auart_dma_filter, s);
563 if (!s->rx_dma_chan) 534 if (!s->rx_dma_chan)
564 goto err_out; 535 goto err_out;
565 s->rx_dma_buf = kzalloc(UART_XMIT_SIZE, GFP_KERNEL | GFP_DMA); 536 s->rx_dma_buf = kzalloc(UART_XMIT_SIZE, GFP_KERNEL | GFP_DMA);
@@ -567,9 +538,7 @@ static int mxs_auart_dma_init(struct mxs_auart_port *s)
567 goto err_out; 538 goto err_out;
568 539
569 /* init for TX */ 540 /* init for TX */
570 s->dma_channel = s->dma_channel_tx; 541 s->tx_dma_chan = dma_request_slave_channel(s->dev, "tx");
571 s->dma_data.chan_irq = s->dma_irq_tx;
572 s->tx_dma_chan = dma_request_channel(mask, mxs_auart_dma_filter, s);
573 if (!s->tx_dma_chan) 542 if (!s->tx_dma_chan)
574 goto err_out; 543 goto err_out;
575 s->tx_dma_buf = kzalloc(UART_XMIT_SIZE, GFP_KERNEL | GFP_DMA); 544 s->tx_dma_buf = kzalloc(UART_XMIT_SIZE, GFP_KERNEL | GFP_DMA);
@@ -1020,7 +989,6 @@ static int serial_mxs_probe_dt(struct mxs_auart_port *s,
1020 struct platform_device *pdev) 989 struct platform_device *pdev)
1021{ 990{
1022 struct device_node *np = pdev->dev.of_node; 991 struct device_node *np = pdev->dev.of_node;
1023 u32 dma_channel[2];
1024 int ret; 992 int ret;
1025 993
1026 if (!np) 994 if (!np)
@@ -1034,20 +1002,8 @@ static int serial_mxs_probe_dt(struct mxs_auart_port *s,
1034 } 1002 }
1035 s->port.line = ret; 1003 s->port.line = ret;
1036 1004
1037 s->dma_irq_rx = platform_get_irq(pdev, 1); 1005 s->flags |= MXS_AUART_DMA_CONFIG;
1038 s->dma_irq_tx = platform_get_irq(pdev, 2);
1039 1006
1040 ret = of_property_read_u32_array(np, "fsl,auart-dma-channel",
1041 dma_channel, 2);
1042 if (ret == 0) {
1043 s->dma_channel_rx = dma_channel[0];
1044 s->dma_channel_tx = dma_channel[1];
1045
1046 s->flags |= MXS_AUART_DMA_CONFIG;
1047 } else {
1048 s->dma_channel_rx = -1;
1049 s->dma_channel_tx = -1;
1050 }
1051 return 0; 1007 return 0;
1052} 1008}
1053 1009
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig
index ab5ba3d49e14..c04ccdf60eaa 100644
--- a/drivers/video/Kconfig
+++ b/drivers/video/Kconfig
@@ -2428,6 +2428,8 @@ config FB_MXS
2428 select FB_CFB_FILLRECT 2428 select FB_CFB_FILLRECT
2429 select FB_CFB_COPYAREA 2429 select FB_CFB_COPYAREA
2430 select FB_CFB_IMAGEBLIT 2430 select FB_CFB_IMAGEBLIT
2431 select FB_MODE_HELPERS
2432 select OF_VIDEOMODE
2431 help 2433 help
2432 Framebuffer support for the MXS SoC. 2434 Framebuffer support for the MXS SoC.
2433 2435
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index 45169cbaba6e..1b2c26d1658c 100644
--- a/drivers/video/mxsfb.c
+++ b/drivers/video/mxsfb.c
@@ -42,13 +42,15 @@
42#include <linux/module.h> 42#include <linux/module.h>
43#include <linux/kernel.h> 43#include <linux/kernel.h>
44#include <linux/of_device.h> 44#include <linux/of_device.h>
45#include <linux/of_gpio.h> 45#include <video/of_display_timing.h>
46#include <linux/platform_device.h> 46#include <linux/platform_device.h>
47#include <linux/clk.h> 47#include <linux/clk.h>
48#include <linux/dma-mapping.h> 48#include <linux/dma-mapping.h>
49#include <linux/io.h> 49#include <linux/io.h>
50#include <linux/pinctrl/consumer.h> 50#include <linux/pinctrl/consumer.h>
51#include <linux/mxsfb.h> 51#include <linux/fb.h>
52#include <linux/regulator/consumer.h>
53#include <video/videomode.h>
52 54
53#define REG_SET 4 55#define REG_SET 4
54#define REG_CLR 8 56#define REG_CLR 8
@@ -107,7 +109,7 @@
107#define VDCTRL0_ENABLE_PRESENT (1 << 28) 109#define VDCTRL0_ENABLE_PRESENT (1 << 28)
108#define VDCTRL0_VSYNC_ACT_HIGH (1 << 27) 110#define VDCTRL0_VSYNC_ACT_HIGH (1 << 27)
109#define VDCTRL0_HSYNC_ACT_HIGH (1 << 26) 111#define VDCTRL0_HSYNC_ACT_HIGH (1 << 26)
110#define VDCTRL0_DOTCLK_ACT_FAILING (1 << 25) 112#define VDCTRL0_DOTCLK_ACT_FALLING (1 << 25)
111#define VDCTRL0_ENABLE_ACT_HIGH (1 << 24) 113#define VDCTRL0_ENABLE_ACT_HIGH (1 << 24)
112#define VDCTRL0_VSYNC_PERIOD_UNIT (1 << 21) 114#define VDCTRL0_VSYNC_PERIOD_UNIT (1 << 21)
113#define VDCTRL0_VSYNC_PULSE_WIDTH_UNIT (1 << 20) 115#define VDCTRL0_VSYNC_PULSE_WIDTH_UNIT (1 << 20)
@@ -142,6 +144,14 @@
142#define BLUE 2 144#define BLUE 2
143#define TRANSP 3 145#define TRANSP 3
144 146
147#define STMLCDIF_8BIT 1 /** pixel data bus to the display is of 8 bit width */
148#define STMLCDIF_16BIT 0 /** pixel data bus to the display is of 16 bit width */
149#define STMLCDIF_18BIT 2 /** pixel data bus to the display is of 18 bit width */
150#define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */
151
152#define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT (1 << 6)
153#define MXSFB_SYNC_DOTCLK_FALLING_ACT (1 << 7) /* negtive edge sampling */
154
145enum mxsfb_devtype { 155enum mxsfb_devtype {
146 MXSFB_V3, 156 MXSFB_V3,
147 MXSFB_V4, 157 MXSFB_V4,
@@ -168,8 +178,8 @@ struct mxsfb_info {
168 unsigned ld_intf_width; 178 unsigned ld_intf_width;
169 unsigned dotclk_delay; 179 unsigned dotclk_delay;
170 const struct mxsfb_devdata *devdata; 180 const struct mxsfb_devdata *devdata;
171 int mapped;
172 u32 sync; 181 u32 sync;
182 struct regulator *reg_lcd;
173}; 183};
174 184
175#define mxsfb_is_v3(host) (host->devdata->ipversion == 3) 185#define mxsfb_is_v3(host) (host->devdata->ipversion == 3)
@@ -329,9 +339,19 @@ static void mxsfb_enable_controller(struct fb_info *fb_info)
329{ 339{
330 struct mxsfb_info *host = to_imxfb_host(fb_info); 340 struct mxsfb_info *host = to_imxfb_host(fb_info);
331 u32 reg; 341 u32 reg;
342 int ret;
332 343
333 dev_dbg(&host->pdev->dev, "%s\n", __func__); 344 dev_dbg(&host->pdev->dev, "%s\n", __func__);
334 345
346 if (host->reg_lcd) {
347 ret = regulator_enable(host->reg_lcd);
348 if (ret) {
349 dev_err(&host->pdev->dev,
350 "lcd regulator enable failed: %d\n", ret);
351 return;
352 }
353 }
354
335 clk_prepare_enable(host->clk); 355 clk_prepare_enable(host->clk);
336 clk_set_rate(host->clk, PICOS2KHZ(fb_info->var.pixclock) * 1000U); 356 clk_set_rate(host->clk, PICOS2KHZ(fb_info->var.pixclock) * 1000U);
337 357
@@ -353,6 +373,7 @@ static void mxsfb_disable_controller(struct fb_info *fb_info)
353 struct mxsfb_info *host = to_imxfb_host(fb_info); 373 struct mxsfb_info *host = to_imxfb_host(fb_info);
354 unsigned loop; 374 unsigned loop;
355 u32 reg; 375 u32 reg;
376 int ret;
356 377
357 dev_dbg(&host->pdev->dev, "%s\n", __func__); 378 dev_dbg(&host->pdev->dev, "%s\n", __func__);
358 379
@@ -376,6 +397,13 @@ static void mxsfb_disable_controller(struct fb_info *fb_info)
376 clk_disable_unprepare(host->clk); 397 clk_disable_unprepare(host->clk);
377 398
378 host->enabled = 0; 399 host->enabled = 0;
400
401 if (host->reg_lcd) {
402 ret = regulator_disable(host->reg_lcd);
403 if (ret)
404 dev_err(&host->pdev->dev,
405 "lcd regulator disable failed: %d\n", ret);
406 }
379} 407}
380 408
381static int mxsfb_set_par(struct fb_info *fb_info) 409static int mxsfb_set_par(struct fb_info *fb_info)
@@ -459,8 +487,8 @@ static int mxsfb_set_par(struct fb_info *fb_info)
459 vdctrl0 |= VDCTRL0_VSYNC_ACT_HIGH; 487 vdctrl0 |= VDCTRL0_VSYNC_ACT_HIGH;
460 if (host->sync & MXSFB_SYNC_DATA_ENABLE_HIGH_ACT) 488 if (host->sync & MXSFB_SYNC_DATA_ENABLE_HIGH_ACT)
461 vdctrl0 |= VDCTRL0_ENABLE_ACT_HIGH; 489 vdctrl0 |= VDCTRL0_ENABLE_ACT_HIGH;
462 if (host->sync & MXSFB_SYNC_DOTCLK_FAILING_ACT) 490 if (host->sync & MXSFB_SYNC_DOTCLK_FALLING_ACT)
463 vdctrl0 |= VDCTRL0_DOTCLK_ACT_FAILING; 491 vdctrl0 |= VDCTRL0_DOTCLK_ACT_FALLING;
464 492
465 writel(vdctrl0, host->base + LCDC_VDCTRL0); 493 writel(vdctrl0, host->base + LCDC_VDCTRL0);
466 494
@@ -679,14 +707,105 @@ static int mxsfb_restore_mode(struct mxsfb_info *host)
679 return 0; 707 return 0;
680} 708}
681 709
710static int mxsfb_init_fbinfo_dt(struct mxsfb_info *host)
711{
712 struct fb_info *fb_info = &host->fb_info;
713 struct fb_var_screeninfo *var = &fb_info->var;
714 struct device *dev = &host->pdev->dev;
715 struct device_node *np = host->pdev->dev.of_node;
716 struct device_node *display_np;
717 struct device_node *timings_np;
718 struct display_timings *timings;
719 u32 width;
720 int i;
721 int ret = 0;
722
723 display_np = of_parse_phandle(np, "display", 0);
724 if (!display_np) {
725 dev_err(dev, "failed to find display phandle\n");
726 return -ENOENT;
727 }
728
729 ret = of_property_read_u32(display_np, "bus-width", &width);
730 if (ret < 0) {
731 dev_err(dev, "failed to get property bus-width\n");
732 goto put_display_node;
733 }
734
735 switch (width) {
736 case 8:
737 host->ld_intf_width = STMLCDIF_8BIT;
738 break;
739 case 16:
740 host->ld_intf_width = STMLCDIF_16BIT;
741 break;
742 case 18:
743 host->ld_intf_width = STMLCDIF_18BIT;
744 break;
745 case 24:
746 host->ld_intf_width = STMLCDIF_24BIT;
747 break;
748 default:
749 dev_err(dev, "invalid bus-width value\n");
750 ret = -EINVAL;
751 goto put_display_node;
752 }
753
754 ret = of_property_read_u32(display_np, "bits-per-pixel",
755 &var->bits_per_pixel);
756 if (ret < 0) {
757 dev_err(dev, "failed to get property bits-per-pixel\n");
758 goto put_display_node;
759 }
760
761 timings = of_get_display_timings(display_np);
762 if (!timings) {
763 dev_err(dev, "failed to get display timings\n");
764 ret = -ENOENT;
765 goto put_display_node;
766 }
767
768 timings_np = of_find_node_by_name(display_np,
769 "display-timings");
770 if (!timings_np) {
771 dev_err(dev, "failed to find display-timings node\n");
772 ret = -ENOENT;
773 goto put_display_node;
774 }
775
776 for (i = 0; i < of_get_child_count(timings_np); i++) {
777 struct videomode vm;
778 struct fb_videomode fb_vm;
779
780 ret = videomode_from_timing(timings, &vm, i);
781 if (ret < 0)
782 goto put_timings_node;
783 ret = fb_videomode_from_videomode(&vm, &fb_vm);
784 if (ret < 0)
785 goto put_timings_node;
786
787 if (vm.data_flags & DISPLAY_FLAGS_DE_HIGH)
788 host->sync |= MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
789 if (vm.data_flags & DISPLAY_FLAGS_PIXDATA_NEGEDGE)
790 host->sync |= MXSFB_SYNC_DOTCLK_FALLING_ACT;
791 fb_add_videomode(&fb_vm, &fb_info->modelist);
792 }
793
794put_timings_node:
795 of_node_put(timings_np);
796put_display_node:
797 of_node_put(display_np);
798 return ret;
799}
800
682static int mxsfb_init_fbinfo(struct mxsfb_info *host) 801static int mxsfb_init_fbinfo(struct mxsfb_info *host)
683{ 802{
684 struct fb_info *fb_info = &host->fb_info; 803 struct fb_info *fb_info = &host->fb_info;
685 struct fb_var_screeninfo *var = &fb_info->var; 804 struct fb_var_screeninfo *var = &fb_info->var;
686 struct mxsfb_platform_data *pdata = host->pdev->dev.platform_data;
687 dma_addr_t fb_phys; 805 dma_addr_t fb_phys;
688 void *fb_virt; 806 void *fb_virt;
689 unsigned fb_size = pdata->fb_size; 807 unsigned fb_size;
808 int ret;
690 809
691 fb_info->fbops = &mxsfb_ops; 810 fb_info->fbops = &mxsfb_ops;
692 fb_info->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST; 811 fb_info->flags = FBINFO_FLAG_DEFAULT | FBINFO_READS_FAST;
@@ -696,40 +815,22 @@ static int mxsfb_init_fbinfo(struct mxsfb_info *host)
696 fb_info->fix.visual = FB_VISUAL_TRUECOLOR, 815 fb_info->fix.visual = FB_VISUAL_TRUECOLOR,
697 fb_info->fix.accel = FB_ACCEL_NONE; 816 fb_info->fix.accel = FB_ACCEL_NONE;
698 817
699 var->bits_per_pixel = pdata->default_bpp ? pdata->default_bpp : 16; 818 ret = mxsfb_init_fbinfo_dt(host);
819 if (ret)
820 return ret;
821
700 var->nonstd = 0; 822 var->nonstd = 0;
701 var->activate = FB_ACTIVATE_NOW; 823 var->activate = FB_ACTIVATE_NOW;
702 var->accel_flags = 0; 824 var->accel_flags = 0;
703 var->vmode = FB_VMODE_NONINTERLACED; 825 var->vmode = FB_VMODE_NONINTERLACED;
704 826
705 host->dotclk_delay = pdata->dotclk_delay;
706 host->ld_intf_width = pdata->ld_intf_width;
707
708 /* Memory allocation for framebuffer */ 827 /* Memory allocation for framebuffer */
709 if (pdata->fb_phys) { 828 fb_size = SZ_2M;
710 if (!fb_size) 829 fb_virt = alloc_pages_exact(fb_size, GFP_DMA);
711 return -EINVAL; 830 if (!fb_virt)
712 831 return -ENOMEM;
713 fb_phys = pdata->fb_phys;
714
715 if (!request_mem_region(fb_phys, fb_size, host->pdev->name))
716 return -ENOMEM;
717 832
718 fb_virt = ioremap(fb_phys, fb_size); 833 fb_phys = virt_to_phys(fb_virt);
719 if (!fb_virt) {
720 release_mem_region(fb_phys, fb_size);
721 return -ENOMEM;
722 }
723 host->mapped = 1;
724 } else {
725 if (!fb_size)
726 fb_size = SZ_2M; /* default */
727 fb_virt = alloc_pages_exact(fb_size, GFP_DMA);
728 if (!fb_virt)
729 return -ENOMEM;
730
731 fb_phys = virt_to_phys(fb_virt);
732 }
733 834
734 fb_info->fix.smem_start = fb_phys; 835 fb_info->fix.smem_start = fb_phys;
735 fb_info->screen_base = fb_virt; 836 fb_info->screen_base = fb_virt;
@@ -745,13 +846,7 @@ static void mxsfb_free_videomem(struct mxsfb_info *host)
745{ 846{
746 struct fb_info *fb_info = &host->fb_info; 847 struct fb_info *fb_info = &host->fb_info;
747 848
748 if (host->mapped) { 849 free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len);
749 iounmap(fb_info->screen_base);
750 release_mem_region(fb_info->fix.smem_start,
751 fb_info->screen_size);
752 } else {
753 free_pages_exact(fb_info->screen_base, fb_info->fix.smem_len);
754 }
755} 850}
756 851
757static struct platform_device_id mxsfb_devtype[] = { 852static struct platform_device_id mxsfb_devtype[] = {
@@ -778,47 +873,35 @@ static int mxsfb_probe(struct platform_device *pdev)
778{ 873{
779 const struct of_device_id *of_id = 874 const struct of_device_id *of_id =
780 of_match_device(mxsfb_dt_ids, &pdev->dev); 875 of_match_device(mxsfb_dt_ids, &pdev->dev);
781 struct mxsfb_platform_data *pdata = pdev->dev.platform_data;
782 struct resource *res; 876 struct resource *res;
783 struct mxsfb_info *host; 877 struct mxsfb_info *host;
784 struct fb_info *fb_info; 878 struct fb_info *fb_info;
785 struct fb_modelist *modelist; 879 struct fb_modelist *modelist;
786 struct pinctrl *pinctrl; 880 struct pinctrl *pinctrl;
787 int panel_enable; 881 int ret;
788 enum of_gpio_flags flags;
789 int i, ret;
790 882
791 if (of_id) 883 if (of_id)
792 pdev->id_entry = of_id->data; 884 pdev->id_entry = of_id->data;
793 885
794 if (!pdata) {
795 dev_err(&pdev->dev, "No platformdata. Giving up\n");
796 return -ENODEV;
797 }
798
799 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 886 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
800 if (!res) { 887 if (!res) {
801 dev_err(&pdev->dev, "Cannot get memory IO resource\n"); 888 dev_err(&pdev->dev, "Cannot get memory IO resource\n");
802 return -ENODEV; 889 return -ENODEV;
803 } 890 }
804 891
805 if (!request_mem_region(res->start, resource_size(res), pdev->name))
806 return -EBUSY;
807
808 fb_info = framebuffer_alloc(sizeof(struct mxsfb_info), &pdev->dev); 892 fb_info = framebuffer_alloc(sizeof(struct mxsfb_info), &pdev->dev);
809 if (!fb_info) { 893 if (!fb_info) {
810 dev_err(&pdev->dev, "Failed to allocate fbdev\n"); 894 dev_err(&pdev->dev, "Failed to allocate fbdev\n");
811 ret = -ENOMEM; 895 return -ENOMEM;
812 goto error_alloc_info;
813 } 896 }
814 897
815 host = to_imxfb_host(fb_info); 898 host = to_imxfb_host(fb_info);
816 899
817 host->base = ioremap(res->start, resource_size(res)); 900 host->base = devm_ioremap_resource(&pdev->dev, res);
818 if (!host->base) { 901 if (IS_ERR(host->base)) {
819 dev_err(&pdev->dev, "ioremap failed\n"); 902 dev_err(&pdev->dev, "ioremap failed\n");
820 ret = -ENOMEM; 903 ret = PTR_ERR(host->base);
821 goto error_ioremap; 904 goto fb_release;
822 } 905 }
823 906
824 host->pdev = pdev; 907 host->pdev = pdev;
@@ -829,47 +912,31 @@ static int mxsfb_probe(struct platform_device *pdev)
829 pinctrl = devm_pinctrl_get_select_default(&pdev->dev); 912 pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
830 if (IS_ERR(pinctrl)) { 913 if (IS_ERR(pinctrl)) {
831 ret = PTR_ERR(pinctrl); 914 ret = PTR_ERR(pinctrl);
832 goto error_getpin; 915 goto fb_release;
833 } 916 }
834 917
835 host->clk = clk_get(&host->pdev->dev, NULL); 918 host->clk = devm_clk_get(&host->pdev->dev, NULL);
836 if (IS_ERR(host->clk)) { 919 if (IS_ERR(host->clk)) {
837 ret = PTR_ERR(host->clk); 920 ret = PTR_ERR(host->clk);
838 goto error_getclock; 921 goto fb_release;
839 } 922 }
840 923
841 panel_enable = of_get_named_gpio_flags(pdev->dev.of_node, 924 host->reg_lcd = devm_regulator_get(&pdev->dev, "lcd");
842 "panel-enable-gpios", 0, &flags); 925 if (IS_ERR(host->reg_lcd))
843 if (gpio_is_valid(panel_enable)) { 926 host->reg_lcd = NULL;
844 unsigned long f = GPIOF_OUT_INIT_HIGH;
845 if (flags == OF_GPIO_ACTIVE_LOW)
846 f = GPIOF_OUT_INIT_LOW;
847 ret = devm_gpio_request_one(&pdev->dev, panel_enable,
848 f, "panel-enable");
849 if (ret) {
850 dev_err(&pdev->dev,
851 "failed to request gpio %d: %d\n",
852 panel_enable, ret);
853 goto error_panel_enable;
854 }
855 }
856 927
857 fb_info->pseudo_palette = kmalloc(sizeof(u32) * 16, GFP_KERNEL); 928 fb_info->pseudo_palette = devm_kzalloc(&pdev->dev, sizeof(u32) * 16,
929 GFP_KERNEL);
858 if (!fb_info->pseudo_palette) { 930 if (!fb_info->pseudo_palette) {
859 ret = -ENOMEM; 931 ret = -ENOMEM;
860 goto error_pseudo_pallette; 932 goto fb_release;
861 } 933 }
862 934
863 INIT_LIST_HEAD(&fb_info->modelist); 935 INIT_LIST_HEAD(&fb_info->modelist);
864 936
865 host->sync = pdata->sync;
866
867 ret = mxsfb_init_fbinfo(host); 937 ret = mxsfb_init_fbinfo(host);
868 if (ret != 0) 938 if (ret != 0)
869 goto error_init_fb; 939 goto fb_release;
870
871 for (i = 0; i < pdata->mode_count; i++)
872 fb_add_videomode(&pdata->mode_list[i], &fb_info->modelist);
873 940
874 modelist = list_first_entry(&fb_info->modelist, 941 modelist = list_first_entry(&fb_info->modelist,
875 struct fb_modelist, list); 942 struct fb_modelist, list);
@@ -883,7 +950,7 @@ static int mxsfb_probe(struct platform_device *pdev)
883 ret = register_framebuffer(fb_info); 950 ret = register_framebuffer(fb_info);
884 if (ret != 0) { 951 if (ret != 0) {
885 dev_err(&pdev->dev,"Failed to register framebuffer\n"); 952 dev_err(&pdev->dev,"Failed to register framebuffer\n");
886 goto error_register; 953 goto fb_destroy;
887 } 954 }
888 955
889 if (!host->enabled) { 956 if (!host->enabled) {
@@ -896,22 +963,12 @@ static int mxsfb_probe(struct platform_device *pdev)
896 963
897 return 0; 964 return 0;
898 965
899error_register: 966fb_destroy:
900 if (host->enabled) 967 if (host->enabled)
901 clk_disable_unprepare(host->clk); 968 clk_disable_unprepare(host->clk);
902 fb_destroy_modelist(&fb_info->modelist); 969 fb_destroy_modelist(&fb_info->modelist);
903error_init_fb: 970fb_release:
904 kfree(fb_info->pseudo_palette);
905error_pseudo_pallette:
906error_panel_enable:
907 clk_put(host->clk);
908error_getclock:
909error_getpin:
910 iounmap(host->base);
911error_ioremap:
912 framebuffer_release(fb_info); 971 framebuffer_release(fb_info);
913error_alloc_info:
914 release_mem_region(res->start, resource_size(res));
915 972
916 return ret; 973 return ret;
917} 974}
@@ -920,19 +977,14 @@ static int mxsfb_remove(struct platform_device *pdev)
920{ 977{
921 struct fb_info *fb_info = platform_get_drvdata(pdev); 978 struct fb_info *fb_info = platform_get_drvdata(pdev);
922 struct mxsfb_info *host = to_imxfb_host(fb_info); 979 struct mxsfb_info *host = to_imxfb_host(fb_info);
923 struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
924 980
925 if (host->enabled) 981 if (host->enabled)
926 mxsfb_disable_controller(fb_info); 982 mxsfb_disable_controller(fb_info);
927 983
928 unregister_framebuffer(fb_info); 984 unregister_framebuffer(fb_info);
929 kfree(fb_info->pseudo_palette);
930 mxsfb_free_videomem(host); 985 mxsfb_free_videomem(host);
931 iounmap(host->base);
932 clk_put(host->clk);
933 986
934 framebuffer_release(fb_info); 987 framebuffer_release(fb_info);
935 release_mem_region(res->start, resource_size(res));
936 988
937 platform_set_drvdata(pdev, NULL); 989 platform_set_drvdata(pdev, NULL);
938 990
diff --git a/include/linux/mxsfb.h b/include/linux/mxsfb.h
deleted file mode 100644
index f80af8674342..000000000000
--- a/include/linux/mxsfb.h
+++ /dev/null
@@ -1,52 +0,0 @@
1/*
2 * This program is free software; you can redistribute it and/or
3 * modify it under the terms of the GNU General Public License
4 * as published by the Free Software Foundation; either version 2
5 * of the License, or (at your option) any later version.
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 * You should have received a copy of the GNU General Public License
12 * along with this program; if not, write to the Free Software
13 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
14 * MA 02110-1301, USA.
15 */
16
17#ifndef __LINUX_MXSFB_H
18#define __LINUX_MXSFB_H
19
20#include <linux/fb.h>
21
22#define STMLCDIF_8BIT 1 /** pixel data bus to the display is of 8 bit width */
23#define STMLCDIF_16BIT 0 /** pixel data bus to the display is of 16 bit width */
24#define STMLCDIF_18BIT 2 /** pixel data bus to the display is of 18 bit width */
25#define STMLCDIF_24BIT 3 /** pixel data bus to the display is of 24 bit width */
26
27#define MXSFB_SYNC_DATA_ENABLE_HIGH_ACT (1 << 6)
28#define MXSFB_SYNC_DOTCLK_FAILING_ACT (1 << 7) /* failing/negtive edge sampling */
29
30struct mxsfb_platform_data {
31 struct fb_videomode *mode_list;
32 unsigned mode_count;
33
34 unsigned default_bpp;
35
36 unsigned dotclk_delay; /* refer manual HW_LCDIF_VDCTRL4 register */
37 unsigned ld_intf_width; /* refer STMLCDIF_* macros */
38
39 unsigned fb_size; /* Size of the video memory. If zero a
40 * default will be used
41 */
42 unsigned long fb_phys; /* physical address for the video memory. If
43 * zero the framebuffer memory will be dynamically
44 * allocated. If specified,fb_size must also be specified.
45 * fb_phys must be unused by Linux.
46 */
47 u32 sync; /* sync mask, contains MXSFB specifics not
48 * carried in fb_info->var.sync
49 */
50};
51
52#endif /* __LINUX_MXSFB_H */
diff --git a/include/linux/spi/mxs-spi.h b/include/linux/spi/mxs-spi.h
index 61ae1306db23..4835486f58e5 100644
--- a/include/linux/spi/mxs-spi.h
+++ b/include/linux/spi/mxs-spi.h
@@ -24,7 +24,7 @@
24#ifndef __LINUX_SPI_MXS_SPI_H__ 24#ifndef __LINUX_SPI_MXS_SPI_H__
25#define __LINUX_SPI_MXS_SPI_H__ 25#define __LINUX_SPI_MXS_SPI_H__
26 26
27#include <linux/fsl/mxs-dma.h> 27#include <linux/dmaengine.h>
28 28
29#define ssp_is_old(host) ((host)->devid == IMX23_SSP) 29#define ssp_is_old(host) ((host)->devid == IMX23_SSP)
30 30
@@ -137,9 +137,7 @@ struct mxs_ssp {
137 unsigned int clk_rate; 137 unsigned int clk_rate;
138 enum mxs_ssp_id devid; 138 enum mxs_ssp_id devid;
139 139
140 int dma_channel;
141 struct dma_chan *dmach; 140 struct dma_chan *dmach;
142 struct mxs_dma_data dma_data;
143 unsigned int dma_dir; 141 unsigned int dma_dir;
144 enum dma_transfer_direction slave_dirn; 142 enum dma_transfer_direction slave_dirn;
145 u32 ssp_pio_words[SSP_PIO_NUM]; 143 u32 ssp_pio_words[SSP_PIO_NUM];