aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/arm/arm-boards8
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-aic.txt1
-rw-r--r--Documentation/devicetree/bindings/arm/atmel-at91.txt3
-rw-r--r--Documentation/devicetree/bindings/arm/moxart.txt12
-rw-r--r--Documentation/devicetree/bindings/arm/samsung/sysreg.txt7
-rw-r--r--Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt28
-rw-r--r--Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt51
-rw-r--r--Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt32
-rw-r--r--Documentation/devicetree/bindings/dma/ste-dma40.txt3
-rw-r--r--Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt2
-rw-r--r--Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt54
-rw-r--r--Documentation/devicetree/bindings/usb/keystone-phy.txt20
-rw-r--r--Documentation/devicetree/bindings/usb/keystone-usb.txt42
-rw-r--r--arch/arm/boot/dts/Makefile10
-rw-r--r--arch/arm/boot/dts/animeo_ip.dts31
-rw-r--r--arch/arm/boot/dts/armada-370-mirabox.dts25
-rw-r--r--arch/arm/boot/dts/armada-370-netgear-rn102.dts125
-rw-r--r--arch/arm/boot/dts/armada-370-netgear-rn104.dts131
-rw-r--r--arch/arm/boot/dts/armada-370-rd.dts21
-rw-r--r--arch/arm/boot/dts/armada-370-xp.dtsi167
-rw-r--r--arch/arm/boot/dts/armada-370.dtsi74
-rw-r--r--arch/arm/boot/dts/armada-xp-gp.dts8
-rw-r--r--arch/arm/boot/dts/armada-xp-netgear-rn2120.dts327
-rw-r--r--arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts3
-rw-r--r--arch/arm/boot/dts/armada-xp.dtsi100
-rw-r--r--arch/arm/boot/dts/at91-cosino.dtsi122
-rw-r--r--arch/arm/boot/dts/at91-cosino_mega2560.dts84
-rw-r--r--arch/arm/boot/dts/at91rm9200.dtsi4
-rw-r--r--arch/arm/boot/dts/at91rm9200ek.dts57
-rw-r--r--arch/arm/boot/dts/at91sam9263.dtsi46
-rw-r--r--arch/arm/boot/dts/at91sam9263ek.dts30
-rw-r--r--arch/arm/boot/dts/at91sam9g45.dtsi76
-rw-r--r--arch/arm/boot/dts/at91sam9m10g45ek.dts54
-rw-r--r--arch/arm/boot/dts/at91sam9n12.dtsi9
-rw-r--r--arch/arm/boot/dts/at91sam9x5.dtsi9
-rw-r--r--arch/arm/boot/dts/atlas6.dtsi26
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b.dts9
-rw-r--r--arch/arm/boot/dts/bcm2835.dtsi6
-rw-r--r--arch/arm/boot/dts/da850-evm.dts3
-rw-r--r--arch/arm/boot/dts/da850.dtsi14
-rw-r--r--arch/arm/boot/dts/dove-cubox.dts2
-rw-r--r--arch/arm/boot/dts/dove.dtsi500
-rw-r--r--arch/arm/boot/dts/emev2-kzm9d.dts42
-rw-r--r--arch/arm/boot/dts/emev2.dtsi116
-rw-r--r--arch/arm/boot/dts/exynos4.dtsi6
-rw-r--r--arch/arm/boot/dts/exynos4210.dtsi23
-rw-r--r--arch/arm/boot/dts/exynos4212.dtsi24
-rw-r--r--arch/arm/boot/dts/exynos4412-tiny4412.dts93
-rw-r--r--arch/arm/boot/dts/exynos4412.dtsi28
-rw-r--r--arch/arm/boot/dts/exynos4x12.dtsi20
-rw-r--r--arch/arm/boot/dts/exynos5.dtsi25
-rw-r--r--arch/arm/boot/dts/exynos5250-arndale.dts62
-rw-r--r--arch/arm/boot/dts/exynos5250-cros-common.dtsi (renamed from arch/arm/boot/dts/cros5250-common.dtsi)34
-rw-r--r--arch/arm/boot/dts/exynos5250-smdk5250.dts62
-rw-r--r--arch/arm/boot/dts/exynos5250-snow.dts13
-rw-r--r--arch/arm/boot/dts/exynos5250.dtsi58
-rw-r--r--arch/arm/boot/dts/exynos5420-arndale-octa.dts66
-rw-r--r--arch/arm/boot/dts/exynos5420-smdk5420.dts33
-rw-r--r--arch/arm/boot/dts/exynos5420.dtsi346
-rw-r--r--arch/arm/boot/dts/exynos5440.dtsi2
-rw-r--r--arch/arm/boot/dts/integrator.dtsi5
-rw-r--r--arch/arm/boot/dts/k2hk-evm.dts63
-rw-r--r--arch/arm/boot/dts/keystone-clocks.dtsi36
-rw-r--r--arch/arm/boot/dts/keystone.dtsi (renamed from arch/arm/boot/dts/keystone.dts)35
-rw-r--r--arch/arm/boot/dts/kirkwood-6192.dtsi107
-rw-r--r--arch/arm/boot/dts/kirkwood-6281.dtsi4
-rw-r--r--arch/arm/boot/dts/kirkwood-6282.dtsi39
-rw-r--r--arch/arm/boot/dts/kirkwood-cloudbox.dts10
-rw-r--r--arch/arm/boot/dts/kirkwood-db.dtsi4
-rw-r--r--arch/arm/boot/dts/kirkwood-dns320.dts12
-rw-r--r--arch/arm/boot/dts/kirkwood-dns325.dts12
-rw-r--r--arch/arm/boot/dts/kirkwood-dnskw.dtsi18
-rw-r--r--arch/arm/boot/dts/kirkwood-dockstar.dts6
-rw-r--r--arch/arm/boot/dts/kirkwood-dreamplug.dts6
-rw-r--r--arch/arm/boot/dts/kirkwood-goflexnet.dts24
-rw-r--r--arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts12
-rw-r--r--arch/arm/boot/dts/kirkwood-ib62x0.dts18
-rw-r--r--arch/arm/boot/dts/kirkwood-iconnect.dts28
-rw-r--r--arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts22
-rw-r--r--arch/arm/boot/dts/kirkwood-km_kirkwood.dts4
-rw-r--r--arch/arm/boot/dts/kirkwood-laplug.dts175
-rw-r--r--arch/arm/boot/dts/kirkwood-lsxl.dtsi30
-rw-r--r--arch/arm/boot/dts/kirkwood-mplcec4.dts14
-rw-r--r--arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts14
-rw-r--r--arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts111
-rw-r--r--arch/arm/boot/dts/kirkwood-netgear_readynas_nv+_v2.dts268
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2-common.dtsi8
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2lite.dts4
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2max.dts10
-rw-r--r--arch/arm/boot/dts/kirkwood-ns2mini.dts10
-rw-r--r--arch/arm/boot/dts/kirkwood-nsa310-common.dtsi4
-rw-r--r--arch/arm/boot/dts/kirkwood-nsa310.dts32
-rw-r--r--arch/arm/boot/dts/kirkwood-nsa310a.dts30
-rw-r--r--arch/arm/boot/dts/kirkwood-openblocks_a6.dts10
-rw-r--r--arch/arm/boot/dts/kirkwood-openblocks_a7.dts10
-rw-r--r--arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi2
-rw-r--r--arch/arm/boot/dts/kirkwood-sheevaplug-esata.dts8
-rw-r--r--arch/arm/boot/dts/kirkwood-sheevaplug.dts8
-rw-r--r--arch/arm/boot/dts/kirkwood-topkick.dts10
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219-6281.dts8
-rw-r--r--arch/arm/boot/dts/kirkwood-ts219-6282.dts8
-rw-r--r--arch/arm/boot/dts/kirkwood.dtsi160
-rw-r--r--arch/arm/boot/dts/moxart-uc7112lx.dts109
-rw-r--r--arch/arm/boot/dts/moxart.dtsi154
-rw-r--r--arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts2
-rw-r--r--arch/arm/boot/dts/orion5x.dtsi106
-rw-r--r--arch/arm/boot/dts/prima2.dtsi41
-rw-r--r--arch/arm/boot/dts/pxa27x.dtsi24
-rw-r--r--arch/arm/boot/dts/qcom-msm8974.dtsi64
-rw-r--r--arch/arm/boot/dts/r7s72100-genmai.dts2
-rw-r--r--arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts15
-rw-r--r--arch/arm/boot/dts/r8a73a4-ape6evm.dts10
-rw-r--r--arch/arm/boot/dts/r8a73a4.dtsi184
-rw-r--r--arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts90
-rw-r--r--arch/arm/boot/dts/r8a7740-armadillo800eva.dts2
-rw-r--r--arch/arm/boot/dts/r8a7740.dtsi144
-rw-r--r--arch/arm/boot/dts/r8a7778-bockw-reference.dts57
-rw-r--r--arch/arm/boot/dts/r8a7778-bockw.dts2
-rw-r--r--arch/arm/boot/dts/r8a7778.dtsi172
-rw-r--r--arch/arm/boot/dts/r8a7779-marzen-reference.dts36
-rw-r--r--arch/arm/boot/dts/r8a7779-marzen.dts2
-rw-r--r--arch/arm/boot/dts/r8a7779.dtsi114
-rw-r--r--arch/arm/boot/dts/r8a7790-lager-reference.dts45
-rw-r--r--arch/arm/boot/dts/r8a7790-lager.dts64
-rw-r--r--arch/arm/boot/dts/r8a7790.dtsi413
-rw-r--r--arch/arm/boot/dts/r8a7791-koelsch-reference.dts115
-rw-r--r--arch/arm/boot/dts/r8a7791-koelsch.dts35
-rw-r--r--arch/arm/boot/dts/r8a7791.dtsi467
-rw-r--r--arch/arm/boot/dts/sama5d3.dtsi44
-rw-r--r--arch/arm/boot/dts/sama5d36.dtsi20
-rw-r--r--arch/arm/boot/dts/sama5d36ek.dts53
-rw-r--r--arch/arm/boot/dts/sama5d3_uart.dtsi5
-rw-r--r--arch/arm/boot/dts/sama5d3xdm.dtsi1
-rw-r--r--arch/arm/boot/dts/sh7372-mackerel.dts2
-rw-r--r--arch/arm/boot/dts/sh73a0-kzm9g-reference.dts103
-rw-r--r--arch/arm/boot/dts/sh73a0-kzm9g.dts2
-rw-r--r--arch/arm/boot/dts/sh73a0.dtsi168
-rw-r--r--arch/arm/boot/dts/socfpga.dtsi4
-rw-r--r--arch/arm/boot/dts/st-pincfg.h2
-rw-r--r--arch/arm/boot/dts/ste-dbx5x0.dtsi32
-rw-r--r--arch/arm/boot/dts/ste-href-family-pinctrl.dtsi745
-rw-r--r--arch/arm/boot/dts/ste-href-stuib.dtsi41
-rw-r--r--arch/arm/boot/dts/ste-href-tvk1281618.dtsi90
-rw-r--r--arch/arm/boot/dts/ste-href.dtsi80
-rw-r--r--arch/arm/boot/dts/ste-hrefprev60.dtsi78
-rw-r--r--arch/arm/boot/dts/ste-hrefv60plus.dtsi251
-rw-r--r--arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi80
-rw-r--r--arch/arm/boot/dts/ste-nomadik-s8815.dts4
-rw-r--r--arch/arm/boot/dts/ste-nomadik-stn8815.dtsi4
-rw-r--r--arch/arm/boot/dts/ste-snowball.dts231
-rw-r--r--arch/arm/boot/dts/stih415-pinctrl.dtsi36
-rw-r--r--arch/arm/boot/dts/stih415.dtsi53
-rw-r--r--arch/arm/boot/dts/stih416-pinctrl.dtsi35
-rw-r--r--arch/arm/boot/dts/stih416.dtsi53
-rw-r--r--arch/arm/boot/dts/stih41x-b2000.dtsi9
-rw-r--r--arch/arm/boot/dts/stih41x-b2020.dtsi22
-rw-r--r--arch/arm/boot/dts/sun4i-a10-a1000.dts4
-rw-r--r--arch/arm/boot/dts/sun4i-a10-cubieboard.dts9
-rw-r--r--arch/arm/boot/dts/sun4i-a10-hackberry.dts4
-rw-r--r--arch/arm/boot/dts/sun4i-a10-mini-xplus.dts4
-rw-r--r--arch/arm/boot/dts/sun4i-a10.dtsi164
-rw-r--r--arch/arm/boot/dts/sun5i-a10s.dtsi132
-rw-r--r--arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts68
-rw-r--r--arch/arm/boot/dts/sun5i-a13-olinuxino.dts4
-rw-r--r--arch/arm/boot/dts/sun5i-a13.dtsi128
-rw-r--r--arch/arm/boot/dts/sun6i-a31.dtsi34
-rw-r--r--arch/arm/boot/dts/sun7i-a20-cubietruck.dts18
-rw-r--r--arch/arm/boot/dts/sun7i-a20.dtsi222
-rw-r--r--arch/arm/boot/dts/tegra114-dalmore.dts630
-rw-r--r--arch/arm/boot/dts/tegra114.dtsi138
-rw-r--r--arch/arm/boot/dts/tegra124-venice2.dts1064
-rw-r--r--arch/arm/boot/dts/tegra124.dtsi418
-rw-r--r--arch/arm/boot/dts/tegra20-colibri-512.dtsi205
-rw-r--r--arch/arm/boot/dts/tegra20-harmony.dts316
-rw-r--r--arch/arm/boot/dts/tegra20-iris-512.dts30
-rw-r--r--arch/arm/boot/dts/tegra20-medcom-wide.dts2
-rw-r--r--arch/arm/boot/dts/tegra20-paz00.dts50
-rw-r--r--arch/arm/boot/dts/tegra20-plutux.dts4
-rw-r--r--arch/arm/boot/dts/tegra20-seaboard.dts353
-rw-r--r--arch/arm/boot/dts/tegra20-tamonten.dtsi47
-rw-r--r--arch/arm/boot/dts/tegra20-tec.dts6
-rw-r--r--arch/arm/boot/dts/tegra20-trimslice.dts54
-rw-r--r--arch/arm/boot/dts/tegra20-ventana.dts62
-rw-r--r--arch/arm/boot/dts/tegra20-whistler.dts84
-rw-r--r--arch/arm/boot/dts/tegra20.dtsi55
-rw-r--r--arch/arm/boot/dts/tegra30-beaver.dts126
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu-a02.dts14
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu-a04.dts14
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu.dtsi104
-rw-r--r--arch/arm/boot/dts/tegra30.dtsi72
-rw-r--r--arch/arm/boot/dts/zynq-7000.dtsi39
-rw-r--r--arch/arm/boot/dts/zynq-zc702.dts5
-rw-r--r--arch/arm/boot/dts/zynq-zc706.dts5
-rw-r--r--arch/arm/boot/dts/zynq-zed.dts5
-rw-r--r--arch/arm/mach-integrator/integrator_ap.c60
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c14
-rw-r--r--arch/arm/mach-nomadik/cpu-8815.c32
-rw-r--r--arch/arm/mach-shmobile/board-bockw-reference.c12
-rw-r--r--arch/arm/mach-shmobile/board-marzen.c2
-rw-r--r--arch/arm/mach-shmobile/clock-r8a73a4.c10
-rw-r--r--arch/arm/mach-shmobile/clock-r8a7740.c8
-rw-r--r--arch/arm/mach-shmobile/clock-r8a7778.c8
-rw-r--r--arch/arm/mach-shmobile/clock-r8a7779.c8
-rw-r--r--arch/arm/mach-shmobile/clock-r8a7790.c12
-rw-r--r--arch/arm/mach-shmobile/clock-sh73a0.c8
-rw-r--r--arch/arm/mach-ux500/Makefile6
-rw-r--r--arch/arm/mach-ux500/board-mop500-audio.c3
-rw-r--r--arch/arm/mach-ux500/board-mop500-pins.c804
-rw-r--r--arch/arm/mach-ux500/board-mop500-regulators.c14
-rw-r--r--arch/arm/mach-ux500/board-mop500-regulators.h1
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c2
-rw-r--r--arch/arm/mach-ux500/board-mop500.c78
-rw-r--r--arch/arm/mach-ux500/board-mop500.h1
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c26
-rw-r--r--arch/arm/mach-ux500/cpu.c23
-rw-r--r--arch/arm/mach-ux500/devices-db8500.c28
-rw-r--r--arch/arm/mach-ux500/devices-db8500.h19
-rw-r--r--arch/arm/mach-ux500/devices.c26
-rw-r--r--arch/arm/mach-ux500/devices.h15
-rw-r--r--arch/arm/mach-ux500/setup.h6
-rw-r--r--arch/arm/mach-ux500/timer.c76
-rw-r--r--drivers/clk/Makefile1
-rw-r--r--drivers/clk/shmobile/Makefile7
-rw-r--r--drivers/clk/shmobile/clk-div6.c185
-rw-r--r--drivers/clk/shmobile/clk-mstp.c229
-rw-r--r--drivers/clk/shmobile/clk-rcar-gen2.c298
-rw-r--r--drivers/clocksource/exynos_mct.c4
-rw-r--r--drivers/clocksource/nomadik-mtu.c23
-rw-r--r--drivers/dma/ste_dma40.c4
-rw-r--r--drivers/pinctrl/pinctrl-nomadik.c296
-rw-r--r--drivers/pinctrl/pinctrl-nomadik.h14
-rw-r--r--include/dt-bindings/clock/r8a7790-clock.h7
-rw-r--r--include/dt-bindings/clock/r8a7791-clock.h6
-rw-r--r--include/dt-bindings/gpio/tegra-gpio.h1
-rw-r--r--include/dt-bindings/pinctrl/pinctrl-tegra.h45
-rw-r--r--include/linux/clk/shmobile.h19
-rw-r--r--include/linux/platform_data/clocksource-nomadik-mtu.h9
-rw-r--r--include/linux/platform_data/pinctrl-nomadik.h242
238 files changed, 12679 insertions, 4211 deletions
diff --git a/Documentation/devicetree/bindings/arm/arm-boards b/Documentation/devicetree/bindings/arm/arm-boards
index 5fac246a9530..3509707f9320 100644
--- a/Documentation/devicetree/bindings/arm/arm-boards
+++ b/Documentation/devicetree/bindings/arm/arm-boards
@@ -14,6 +14,9 @@ Required nodes:
14- core-module: the root node to the Integrator platforms must have 14- core-module: the root node to the Integrator platforms must have
15 a core-module with regs and the compatible string 15 a core-module with regs and the compatible string
16 "arm,core-module-integrator" 16 "arm,core-module-integrator"
17- external-bus-interface: the root node to the Integrator platforms
18 must have an external bus interface with regs and the
19 compatible-string "arm,external-bus-interface"
17 20
18 Required properties for the core module: 21 Required properties for the core module:
19 - regs: the location and size of the core module registers, one 22 - regs: the location and size of the core module registers, one
@@ -48,6 +51,11 @@ Required nodes:
48 reg = <0x10000000 0x200>; 51 reg = <0x10000000 0x200>;
49 }; 52 };
50 53
54 ebi@12000000 {
55 compatible = "arm,external-bus-interface";
56 reg = <0x12000000 0x100>;
57 };
58
51 syscon { 59 syscon {
52 compatible = "arm,integrator-ap-syscon"; 60 compatible = "arm,integrator-ap-syscon";
53 reg = <0x11000000 0x100>; 61 reg = <0x11000000 0x100>;
diff --git a/Documentation/devicetree/bindings/arm/atmel-aic.txt b/Documentation/devicetree/bindings/arm/atmel-aic.txt
index ad031211b5b8..2742e9cfd6b1 100644
--- a/Documentation/devicetree/bindings/arm/atmel-aic.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-aic.txt
@@ -2,6 +2,7 @@
2 2
3Required properties: 3Required properties:
4- compatible: Should be "atmel,<chip>-aic" 4- compatible: Should be "atmel,<chip>-aic"
5 <chip> can be "at91rm9200" or "sama5d3"
5- interrupt-controller: Identifies the node as an interrupt controller. 6- interrupt-controller: Identifies the node as an interrupt controller.
6- interrupt-parent: For single AIC system, it is an empty property. 7- interrupt-parent: For single AIC system, it is an empty property.
7- #interrupt-cells: The number of cells to define the interrupts. It should be 3. 8- #interrupt-cells: The number of cells to define the interrupts. It should be 3.
diff --git a/Documentation/devicetree/bindings/arm/atmel-at91.txt b/Documentation/devicetree/bindings/arm/atmel-at91.txt
index 78530e621a1e..16f60b41c147 100644
--- a/Documentation/devicetree/bindings/arm/atmel-at91.txt
+++ b/Documentation/devicetree/bindings/arm/atmel-at91.txt
@@ -58,7 +58,8 @@ Example:
58 }; 58 };
59 59
60RAMC SDRAM/DDR Controller required properties: 60RAMC SDRAM/DDR Controller required properties:
61- compatible: Should be "atmel,at91sam9260-sdramc", 61- compatible: Should be "atmel,at91rm9200-sdramc",
62 "atmel,at91sam9260-sdramc",
62 "atmel,at91sam9g45-ddramc", 63 "atmel,at91sam9g45-ddramc",
63- reg: Should contain registers location and length 64- reg: Should contain registers location and length
64 For at91sam9263 and at91sam9g45 you must specify 2 entries. 65 For at91sam9263 and at91sam9g45 you must specify 2 entries.
diff --git a/Documentation/devicetree/bindings/arm/moxart.txt b/Documentation/devicetree/bindings/arm/moxart.txt
new file mode 100644
index 000000000000..11087edb0658
--- /dev/null
+++ b/Documentation/devicetree/bindings/arm/moxart.txt
@@ -0,0 +1,12 @@
1MOXA ART device tree bindings
2
3Boards with the MOXA ART SoC shall have the following properties:
4
5Required root node property:
6
7compatible = "moxa,moxart";
8
9Boards:
10
11- UC-7112-LX: embedded computer
12 compatible = "moxa,moxart-uc-7112-lx", "moxa,moxart"
diff --git a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
index 5039c0a12f55..0ab3251a6ec2 100644
--- a/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
+++ b/Documentation/devicetree/bindings/arm/samsung/sysreg.txt
@@ -1,7 +1,12 @@
1SAMSUNG S5P/Exynos SoC series System Registers (SYSREG) 1SAMSUNG S5P/Exynos SoC series System Registers (SYSREG)
2 2
3Properties: 3Properties:
4 - name : should be 'sysreg';
5 - compatible : should contain "samsung,<chip name>-sysreg", "syscon"; 4 - compatible : should contain "samsung,<chip name>-sysreg", "syscon";
6 For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon"; 5 For Exynos4 SoC series it should be "samsung,exynos4-sysreg", "syscon";
7 - reg : offset and length of the register set. 6 - reg : offset and length of the register set.
7
8Example:
9 syscon@10010000 {
10 compatible = "samsung,exynos4-sysreg", "syscon";
11 reg = <0x10010000 0x400>;
12 };
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt
new file mode 100644
index 000000000000..952e373178d2
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/renesas,cpg-div6-clocks.txt
@@ -0,0 +1,28 @@
1* Renesas CPG DIV6 Clock
2
3The CPG DIV6 clocks are variable factor clocks provided by the Clock Pulse
4Generator (CPG). They clock input is divided by a configurable factor from 1
5to 64.
6
7Required Properties:
8
9 - compatible: Must be one of the following
10 - "renesas,r8a7790-div6-clock" for R8A7790 (R-Car H2) DIV6 clocks
11 - "renesas,r8a7791-div6-clock" for R8A7791 (R-Car M2) DIV6 clocks
12 - "renesas,cpg-div6-clock" for generic DIV6 clocks
13 - reg: Base address and length of the memory resource used by the DIV6 clock
14 - clocks: Reference to the parent clock
15 - #clock-cells: Must be 0
16 - clock-output-names: The name of the clock as a free-form string
17
18
19Example
20-------
21
22 sd2_clk: sd2_clk@e6150078 {
23 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
24 reg = <0 0xe6150078 0 4>;
25 clocks = <&pll1_div2_clk>;
26 #clock-cells = <0>;
27 clock-output-names = "sd2";
28 };
diff --git a/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt
new file mode 100644
index 000000000000..a6a352c2771e
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/renesas,cpg-mstp-clocks.txt
@@ -0,0 +1,51 @@
1* Renesas CPG Module Stop (MSTP) Clocks
2
3The CPG can gate SoC device clocks. The gates are organized in groups of up to
432 gates.
5
6This device tree binding describes a single 32 gate clocks group per node.
7Clocks are referenced by user nodes by the MSTP node phandle and the clock
8index in the group, from 0 to 31.
9
10Required Properties:
11
12 - compatible: Must be one of the following
13 - "renesas,r8a7790-mstp-clocks" for R8A7790 (R-Car H2) MSTP gate clocks
14 - "renesas,r8a7791-mstp-clocks" for R8A7791 (R-Car M2) MSTP gate clocks
15 - "renesas,cpg-mstp-clock" for generic MSTP gate clocks
16 - reg: Base address and length of the I/O mapped registers used by the MSTP
17 clocks. The first register is the clock control register and is mandatory.
18 The second register is the clock status register and is optional when not
19 implemented in hardware.
20 - clocks: Reference to the parent clocks, one per output clock. The parents
21 must appear in the same order as the output clocks.
22 - #clock-cells: Must be 1
23 - clock-output-names: The name of the clocks as free-form strings
24 - renesas,indices: Indices of the gate clocks into the group (0 to 31)
25
26The clocks, clock-output-names and renesas,indices properties contain one
27entry per gate clock. The MSTP groups are sparsely populated. Unimplemented
28gate clocks must not be declared.
29
30
31Example
32-------
33
34 #include <dt-bindings/clock/r8a7790-clock.h>
35
36 mstp3_clks: mstp3_clks@e615013c {
37 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
38 reg = <0 0xe615013c 0 4>, <0 0xe6150048 0 4>;
39 clocks = <&cp_clk>, <&mmc1_clk>, <&sd3_clk>, <&sd2_clk>,
40 <&cpg_clocks R8A7790_CLK_SD1>, <&cpg_clocks R8A7790_CLK_SD0>,
41 <&mmc0_clk>;
42 #clock-cells = <1>;
43 clock-output-names =
44 "tpu0", "mmcif1", "sdhi3", "sdhi2",
45 "sdhi1", "sdhi0", "mmcif0";
46 renesas,clock-indices = <
47 R8A7790_CLK_TPU0 R8A7790_CLK_MMCIF1 R8A7790_CLK_SDHI3
48 R8A7790_CLK_SDHI2 R8A7790_CLK_SDHI1 R8A7790_CLK_SDHI0
49 R8A7790_CLK_MMCIF0
50 >;
51 };
diff --git a/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt
new file mode 100644
index 000000000000..7b41c2fe54db
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/renesas,rcar-gen2-cpg-clocks.txt
@@ -0,0 +1,32 @@
1* Renesas R-Car Gen2 Clock Pulse Generator (CPG)
2
3The CPG generates core clocks for the R-Car Gen2 SoCs. It includes three PLLs
4and several fixed ratio dividers.
5
6Required Properties:
7
8 - compatible: Must be one of
9 - "renesas,r8a7790-cpg-clocks" for the r8a7790 CPG
10 - "renesas,r8a7791-cpg-clocks" for the r8a7791 CPG
11 - "renesas,rcar-gen2-cpg-clocks" for the generic R-Car Gen2 CPG
12
13 - reg: Base address and length of the memory resource used by the CPG
14
15 - clocks: Reference to the parent clock
16 - #clock-cells: Must be 1
17 - clock-output-names: The names of the clocks. Supported clocks are "main",
18 "pll0", "pll1", "pll3", "lb", "qspi", "sdh", "sd0", "sd1" and "z"
19
20
21Example
22-------
23
24 cpg_clocks: cpg_clocks@e6150000 {
25 compatible = "renesas,r8a7790-cpg-clocks",
26 "renesas,rcar-gen2-cpg-clocks";
27 reg = <0 0xe6150000 0 0x1000>;
28 clocks = <&extal_clk>;
29 #clock-cells = <1>;
30 clock-output-names = "main", "pll0, "pll1", "pll3",
31 "lb", "qspi", "sdh", "sd0", "sd1", "z";
32 };
diff --git a/Documentation/devicetree/bindings/dma/ste-dma40.txt b/Documentation/devicetree/bindings/dma/ste-dma40.txt
index a8c21c256baa..1f5729f10621 100644
--- a/Documentation/devicetree/bindings/dma/ste-dma40.txt
+++ b/Documentation/devicetree/bindings/dma/ste-dma40.txt
@@ -50,6 +50,9 @@ Each dmas request consists of 4 cells:
50 0x00000008: Use fixed channel: 50 0x00000008: Use fixed channel:
51 Use automatic channel selection when unset 51 Use automatic channel selection when unset
52 Use DMA request line number when set 52 Use DMA request line number when set
53 0x00000010: Set channel as high priority:
54 Normal priority when unset
55 High priority when set
53 56
54Example: 57Example:
55 58
diff --git a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
index c67b975c8906..532b1d440abc 100644
--- a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
@@ -16,6 +16,8 @@ Required Properties:
16 specific extensions. 16 specific extensions.
17 - "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250 17 - "samsung,exynos5250-dw-mshc": for controllers with Samsung Exynos5250
18 specific extensions. 18 specific extensions.
19 - "samsung,exynos5420-dw-mshc": for controllers with Samsung Exynos5420
20 specific extensions.
19 21
20* samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface 22* samsung,dw-mshc-ciu-div: Specifies the divider value for the card interface
21 unit (ciu) clock. This property is applicable only for Exynos5 SoC's and 23 unit (ciu) clock. This property is applicable only for Exynos5 SoC's and
diff --git a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt
index b5a86d20ee36..167d5dab9f64 100644
--- a/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt
+++ b/Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.txt
@@ -31,38 +31,58 @@ Required properties:
31 7: .. 31 7: ..
32 i: Local Timer Interrupt n 32 i: Local Timer Interrupt n
33 33
34Example 1: In this example, the system uses only the first global timer 34 For MCT block that uses a per-processor interrupt for local timers, such
35 interrupt generated by MCT and the remaining three global timer 35 as ones compatible with "samsung,exynos4412-mct", only one local timer
36 interrupts are unused. Two local timer interrupts have been 36 interrupt might be specified, meaning that all local timers use the same
37 specified. 37 per processor interrupt.
38
39Example 1: In this example, the IP contains two local timers, using separate
40 interrupts, so two local timer interrupts have been specified,
41 in addition to four global timer interrupts.
38 42
39 mct@10050000 { 43 mct@10050000 {
40 compatible = "samsung,exynos4210-mct"; 44 compatible = "samsung,exynos4210-mct";
41 reg = <0x10050000 0x800>; 45 reg = <0x10050000 0x800>;
42 interrupts = <0 57 0>, <0 0 0>, <0 0 0>, <0 0 0>, 46 interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>,
43 <0 42 0>, <0 48 0>; 47 <0 42 0>, <0 48 0>;
44 }; 48 };
45 49
46Example 2: In this example, the MCT global and local timer interrupts are 50Example 2: In this example, the timer interrupts are connected to two separate
47 connected to two separate interrupt controllers. Hence, an 51 interrupt controllers. Hence, an interrupt-map is created to map
48 interrupt-map is created to map the interrupts to the respective 52 the interrupts to the respective interrupt controllers.
49 interrupt controllers.
50 53
51 mct@101C0000 { 54 mct@101C0000 {
52 compatible = "samsung,exynos4210-mct"; 55 compatible = "samsung,exynos4210-mct";
53 reg = <0x101C0000 0x800>; 56 reg = <0x101C0000 0x800>;
54 interrupt-controller;
55 #interrups-cells = <2>;
56 interrupt-parent = <&mct_map>; 57 interrupt-parent = <&mct_map>;
57 interrupts = <0 0>, <1 0>, <2 0>, <3 0>, 58 interrupts = <0>, <1>, <2>, <3>, <4>, <5>;
58 <4 0>, <5 0>;
59 59
60 mct_map: mct-map { 60 mct_map: mct-map {
61 #interrupt-cells = <2>; 61 #interrupt-cells = <1>;
62 #address-cells = <0>; 62 #address-cells = <0>;
63 #size-cells = <0>; 63 #size-cells = <0>;
64 interrupt-map = <0x0 0 &combiner 23 3>, 64 interrupt-map = <0 &gic 0 57 0>,
65 <0x4 0 &gic 0 120 0>, 65 <1 &gic 0 69 0>,
66 <0x5 0 &gic 0 121 0>; 66 <2 &combiner 12 6>,
67 <3 &combiner 12 7>,
68 <4 &gic 0 42 0>,
69 <5 &gic 0 48 0>;
67 }; 70 };
68 }; 71 };
72
73Example 3: In this example, the IP contains four local timers, but using
74 a per-processor interrupt to handle them. Either all the local
75 timer interrupts can be specified, with the same interrupt specifier
76 value or just the first one.
77
78 mct@10050000 {
79 compatible = "samsung,exynos4412-mct";
80 reg = <0x10050000 0x800>;
81
82 /* Both ways are possible in this case. Either: */
83 interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>,
84 <0 42 0>;
85 /* or: */
86 interrupts = <0 57 0>, <0 69 0>, <0 70 0>, <0 71 0>,
87 <0 42 0>, <0 42 0>, <0 42 0>, <0 42 0>;
88 };
diff --git a/Documentation/devicetree/bindings/usb/keystone-phy.txt b/Documentation/devicetree/bindings/usb/keystone-phy.txt
new file mode 100644
index 000000000000..f37b3a86341d
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/keystone-phy.txt
@@ -0,0 +1,20 @@
1TI Keystone USB PHY
2
3Required properties:
4 - compatible: should be "ti,keystone-usbphy".
5 - #address-cells, #size-cells : should be '1' if the device has sub-nodes
6 with 'reg' property.
7 - reg : Address and length of the usb phy control register set.
8
9The main purpose of this PHY driver is to enable the USB PHY reference clock
10gate on the Keystone SOC for both the USB2 and USB3 PHY. Otherwise it is just
11an NOP PHY driver. Hence this node is referenced as both the usb2 and usb3
12phy node in the USB Glue layer driver node.
13
14usb_phy: usb_phy@2620738 {
15 compatible = "ti,keystone-usbphy";
16 #address-cells = <1>;
17 #size-cells = <1>;
18 reg = <0x2620738 32>;
19 status = "disabled";
20};
diff --git a/Documentation/devicetree/bindings/usb/keystone-usb.txt b/Documentation/devicetree/bindings/usb/keystone-usb.txt
new file mode 100644
index 000000000000..60527d335b58
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/keystone-usb.txt
@@ -0,0 +1,42 @@
1TI Keystone Soc USB Controller
2
3DWC3 GLUE
4
5Required properties:
6 - compatible: should be "ti,keystone-dwc3".
7 - #address-cells, #size-cells : should be '1' if the device has sub-nodes
8 with 'reg' property.
9 - reg : Address and length of the register set for the USB subsystem on
10 the SOC.
11 - interrupts : The irq number of this device that is used to interrupt the
12 MPU.
13 - ranges: allows valid 1:1 translation between child's address space and
14 parent's address space.
15 - clocks: Clock IDs array as required by the controller.
16 - clock-names: names of clocks correseponding to IDs in the clock property.
17
18Sub-nodes:
19The dwc3 core should be added as subnode to Keystone DWC3 glue.
20- dwc3 :
21 The binding details of dwc3 can be found in:
22 Documentation/devicetree/bindings/usb/dwc3.txt
23
24Example:
25 usb: usb@2680000 {
26 compatible = "ti,keystone-dwc3";
27 #address-cells = <1>;
28 #size-cells = <1>;
29 reg = <0x2680000 0x10000>;
30 clocks = <&clkusb>;
31 clock-names = "usb";
32 interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
33 ranges;
34 status = "disabled";
35
36 dwc3@2690000 {
37 compatible = "synopsys,dwc3";
38 reg = <0x2690000 0x70000>;
39 interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
40 usb-phy = <&usb_phy>, <&usb_phy>;
41 };
42 };
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 91896a3f703a..faa38bcc7001 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -31,6 +31,7 @@ dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb
31dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb 31dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb
32# sam9x5 32# sam9x5
33dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb 33dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb
34dtb-$(CONFIG_ARCH_AT91) += at91-cosino_mega2560.dtb
34dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb 35dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb
35dtb-$(CONFIG_ARCH_AT91) += at91sam9g25ek.dtb 36dtb-$(CONFIG_ARCH_AT91) += at91sam9g25ek.dtb
36dtb-$(CONFIG_ARCH_AT91) += at91sam9g35ek.dtb 37dtb-$(CONFIG_ARCH_AT91) += at91sam9g35ek.dtb
@@ -41,6 +42,8 @@ dtb-$(CONFIG_ARCH_AT91) += sama5d31ek.dtb
41dtb-$(CONFIG_ARCH_AT91) += sama5d33ek.dtb 42dtb-$(CONFIG_ARCH_AT91) += sama5d33ek.dtb
42dtb-$(CONFIG_ARCH_AT91) += sama5d34ek.dtb 43dtb-$(CONFIG_ARCH_AT91) += sama5d34ek.dtb
43dtb-$(CONFIG_ARCH_AT91) += sama5d35ek.dtb 44dtb-$(CONFIG_ARCH_AT91) += sama5d35ek.dtb
45dtb-$(CONFIG_ARCH_AT91) += sama5d36ek.dtb
46
44dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb 47dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
45dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb 48dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
46dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm11351-brt.dtb \ 49dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm11351-brt.dtb \
@@ -64,10 +67,12 @@ dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
64 exynos4412-odroidx.dtb \ 67 exynos4412-odroidx.dtb \
65 exynos4412-origen.dtb \ 68 exynos4412-origen.dtb \
66 exynos4412-smdk4412.dtb \ 69 exynos4412-smdk4412.dtb \
70 exynos4412-tiny4412.dtb \
67 exynos4412-trats2.dtb \ 71 exynos4412-trats2.dtb \
68 exynos5250-arndale.dtb \ 72 exynos5250-arndale.dtb \
69 exynos5250-smdk5250.dtb \ 73 exynos5250-smdk5250.dtb \
70 exynos5250-snow.dtb \ 74 exynos5250-snow.dtb \
75 exynos5420-arndale-octa.dtb \
71 exynos5420-smdk5420.dtb \ 76 exynos5420-smdk5420.dtb \
72 exynos5440-sd5v1.dtb \ 77 exynos5440-sd5v1.dtb \
73 exynos5440-ssdk5440.dtb 78 exynos5440-ssdk5440.dtb
@@ -91,11 +96,13 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
91 kirkwood-iomega_ix2_200.dtb \ 96 kirkwood-iomega_ix2_200.dtb \
92 kirkwood-is2.dtb \ 97 kirkwood-is2.dtb \
93 kirkwood-km_kirkwood.dtb \ 98 kirkwood-km_kirkwood.dtb \
99 kirkwood-laplug.dtb \
94 kirkwood-lschlv2.dtb \ 100 kirkwood-lschlv2.dtb \
95 kirkwood-lsxhl.dtb \ 101 kirkwood-lsxhl.dtb \
96 kirkwood-mplcec4.dtb \ 102 kirkwood-mplcec4.dtb \
97 kirkwood-mv88f6281gtw-ge.dtb \ 103 kirkwood-mv88f6281gtw-ge.dtb \
98 kirkwood-netgear_readynas_duo_v2.dtb \ 104 kirkwood-netgear_readynas_duo_v2.dtb \
105 kirkwood-netgear_readynas_nv+_v2.dtb \
99 kirkwood-ns2.dtb \ 106 kirkwood-ns2.dtb \
100 kirkwood-ns2lite.dtb \ 107 kirkwood-ns2lite.dtb \
101 kirkwood-ns2max.dtb \ 108 kirkwood-ns2max.dtb \
@@ -110,6 +117,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += kirkwood-cloudbox.dtb \
110 kirkwood-ts219-6281.dtb \ 117 kirkwood-ts219-6281.dtb \
111 kirkwood-ts219-6282.dtb 118 kirkwood-ts219-6282.dtb
112dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb 119dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb
120dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb
113dtb-$(CONFIG_ARCH_MSM) += qcom-msm8660-surf.dtb \ 121dtb-$(CONFIG_ARCH_MSM) += qcom-msm8660-surf.dtb \
114 qcom-msm8960-cdp.dtb 122 qcom-msm8960-cdp.dtb
115dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \ 123dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
@@ -120,6 +128,7 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
120 armada-xp-axpwifiap.dtb \ 128 armada-xp-axpwifiap.dtb \
121 armada-xp-db.dtb \ 129 armada-xp-db.dtb \
122 armada-xp-gp.dtb \ 130 armada-xp-gp.dtb \
131 armada-xp-netgear-rn2120.dtb \
123 armada-xp-matrix.dtb \ 132 armada-xp-matrix.dtb \
124 armada-xp-openblocks-ax3-4.dtb 133 armada-xp-openblocks-ax3-4.dtb
125dtb-$(CONFIG_ARCH_MXC) += \ 134dtb-$(CONFIG_ARCH_MXC) += \
@@ -261,6 +270,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \
261 sun4i-a10-hackberry.dtb \ 270 sun4i-a10-hackberry.dtb \
262 sun5i-a10s-olinuxino-micro.dtb \ 271 sun5i-a10s-olinuxino-micro.dtb \
263 sun5i-a13-olinuxino.dtb \ 272 sun5i-a13-olinuxino.dtb \
273 sun5i-a13-olinuxino-micro.dtb \
264 sun6i-a31-colombus.dtb \ 274 sun6i-a31-colombus.dtb \
265 sun7i-a20-cubieboard2.dtb \ 275 sun7i-a20-cubieboard2.dtb \
266 sun7i-a20-cubietruck.dtb \ 276 sun7i-a20-cubietruck.dtb \
diff --git a/arch/arm/boot/dts/animeo_ip.dts b/arch/arm/boot/dts/animeo_ip.dts
index 3a1de9eb5111..3c4f6d983cbd 100644
--- a/arch/arm/boot/dts/animeo_ip.dts
+++ b/arch/arm/boot/dts/animeo_ip.dts
@@ -90,34 +90,19 @@
90 nand-on-flash-bbt; 90 nand-on-flash-bbt;
91 status = "okay"; 91 status = "okay";
92 92
93 at91bootstrap@0 { 93 barebox@0 {
94 label = "at91bootstrap";
95 reg = <0x0 0x8000>;
96 };
97
98 barebox@8000 {
99 label = "barebox"; 94 label = "barebox";
100 reg = <0x8000 0x40000>; 95 reg = <0x0 0x58000>;
101 };
102
103 bareboxenv@48000 {
104 label = "bareboxenv";
105 reg = <0x48000 0x8000>;
106 };
107
108 user_block@0x50000 {
109 label = "user_block";
110 reg = <0x50000 0xb0000>;
111 }; 96 };
112 97
113 kernel@100000 { 98 u_boot_env@58000 {
114 label = "kernel"; 99 label = "u_boot_env";
115 reg = <0x100000 0x1b0000>; 100 reg = <0x58000 0x8000>;
116 }; 101 };
117 102
118 root@2b0000 { 103 ubi@60000 {
119 label = "root"; 104 label = "ubi";
120 reg = <0x2b0000 0x1D50000>; 105 reg = <0x60000 0x1FA0000>;
121 }; 106 };
122 }; 107 };
123 108
diff --git a/arch/arm/boot/dts/armada-370-mirabox.dts b/arch/arm/boot/dts/armada-370-mirabox.dts
index 2471d9da767b..944e8785b308 100644
--- a/arch/arm/boot/dts/armada-370-mirabox.dts
+++ b/arch/arm/boot/dts/armada-370-mirabox.dts
@@ -74,13 +74,13 @@
74 green_pwr_led { 74 green_pwr_led {
75 label = "mirabox:green:pwr"; 75 label = "mirabox:green:pwr";
76 gpios = <&gpio1 31 1>; 76 gpios = <&gpio1 31 1>;
77 linux,default-trigger = "heartbeat"; 77 default-state = "keep";
78 }; 78 };
79 79
80 blue_stat_led { 80 blue_stat_led {
81 label = "mirabox:blue:stat"; 81 label = "mirabox:blue:stat";
82 gpios = <&gpio2 0 1>; 82 gpios = <&gpio2 0 1>;
83 linux,default-trigger = "cpu0"; 83 default-state = "off";
84 }; 84 };
85 85
86 green_stat_led { 86 green_stat_led {
@@ -139,6 +139,27 @@
139 reg = <0x25>; 139 reg = <0x25>;
140 }; 140 };
141 }; 141 };
142
143 nand@d0000 {
144 status = "okay";
145 num-cs = <1>;
146 marvell,nand-keep-config;
147 marvell,nand-enable-arbiter;
148 nand-on-flash-bbt;
149
150 partition@0 {
151 label = "U-Boot";
152 reg = <0 0x400000>;
153 };
154 partition@400000 {
155 label = "Linux";
156 reg = <0x400000 0x400000>;
157 };
158 partition@800000 {
159 label = "Filesystem";
160 reg = <0x800000 0x3f800000>;
161 };
162 };
142 }; 163 };
143 }; 164 };
144}; 165};
diff --git a/arch/arm/boot/dts/armada-370-netgear-rn102.dts b/arch/arm/boot/dts/armada-370-netgear-rn102.dts
index 8ac2ac1f69cc..651aeb5ef439 100644
--- a/arch/arm/boot/dts/armada-370-netgear-rn102.dts
+++ b/arch/arm/boot/dts/armada-370-netgear-rn102.dts
@@ -11,6 +11,8 @@
11 11
12/dts-v1/; 12/dts-v1/;
13 13
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/gpio/gpio.h>
14#include "armada-370.dtsi" 16#include "armada-370.dtsi"
15 17
16/ { 18/ {
@@ -62,6 +64,7 @@
62 marvell,pins = "mpp57"; 64 marvell,pins = "mpp57";
63 marvell,function = "gpio"; 65 marvell,function = "gpio";
64 }; 66 };
67
65 sata1_led_pin: sata1-led-pin { 68 sata1_led_pin: sata1-led-pin {
66 marvell,pins = "mpp15"; 69 marvell,pins = "mpp15";
67 marvell,function = "gpio"; 70 marvell,function = "gpio";
@@ -77,6 +80,21 @@
77 marvell,function = "gpio"; 80 marvell,function = "gpio";
78 }; 81 };
79 82
83 backup_button_pin: backup-button-pin {
84 marvell,pins = "mpp58";
85 marvell,function = "gpio";
86 };
87
88 power_button_pin: power-button-pin {
89 marvell,pins = "mpp62";
90 marvell,function = "gpio";
91 };
92
93 reset_button_pin: reset-button-pin {
94 marvell,pins = "mpp6";
95 marvell,function = "gpio";
96 };
97
80 poweroff: poweroff { 98 poweroff: poweroff {
81 marvell,pins = "mpp8"; 99 marvell,pins = "mpp8";
82 marvell,function = "gpio"; 100 marvell,function = "gpio";
@@ -84,7 +102,7 @@
84 }; 102 };
85 103
86 mdio { 104 mdio {
87 phy0: ethernet-phy@0 { 105 phy0: ethernet-phy@0 { /* Marvell 88E1318 */
88 reg = <0>; 106 reg = <0>;
89 }; 107 };
90 }; 108 };
@@ -104,6 +122,11 @@
104 clock-frequency = <100000>; 122 clock-frequency = <100000>;
105 status = "okay"; 123 status = "okay";
106 124
125 isl12057: isl12057@68 {
126 compatible = "isl,isl12057";
127 reg = <0x68>;
128 };
129
107 g762: g762@3e { 130 g762: g762@3e {
108 compatible = "gmt,g762"; 131 compatible = "gmt,g762";
109 reg = <0x3e>; 132 reg = <0x3e>;
@@ -113,82 +136,116 @@
113 pwm_polarity = <0>; 136 pwm_polarity = <0>;
114 }; 137 };
115 }; 138 };
139
140 nand@d0000 {
141 status = "okay";
142 num-cs = <1>;
143 marvell,nand-keep-config;
144 marvell,nand-enable-arbiter;
145 nand-on-flash-bbt;
146
147 partition@0 {
148 label = "u-boot";
149 reg = <0x0000000 0x180000>; /* 1.5MB */
150 read-only;
151 };
152
153 partition@180000 {
154 label = "u-boot-env";
155 reg = <0x180000 0x20000>; /* 128KB */
156 read-only;
157 };
158
159 partition@200000 {
160 label = "uImage";
161 reg = <0x0200000 0x600000>; /* 6MB */
162 };
163
164 partition@800000 {
165 label = "minirootfs";
166 reg = <0x0800000 0x400000>; /* 4MB */
167 };
168
169 /* Last MB is for the BBT, i.e. not writable */
170 partition@c00000 {
171 label = "ubifs";
172 reg = <0x0c00000 0x7400000>; /* 116MB */
173 };
174 };
116 }; 175 };
117 }; 176 };
118 177
119 clocks { 178 clocks {
120 #address-cells = <1>; 179 g762_clk: g762-oscillator {
121 #size-cells = <0>;
122
123 g762_clk: fixedclk {
124 compatible = "fixed-clock"; 180 compatible = "fixed-clock";
125 #clock-cells = <0>; 181 #clock-cells = <0>;
126 clock-frequency = <8192>; 182 clock-frequency = <8192>;
127 }; 183 };
128 }; 184 };
129 185
130 gpio_leds { 186 gpio-leds {
131 compatible = "gpio-leds"; 187 compatible = "gpio-leds";
132 pinctrl-0 = < &power_led_pin 188 pinctrl-0 = <&power_led_pin
133 &sata1_led_pin 189 &sata1_led_pin
134 &sata2_led_pin 190 &sata2_led_pin
135 &backup_led_pin >; 191 &backup_led_pin>;
136 pinctrl-names = "default"; 192 pinctrl-names = "default";
137 193
138 blue_power_led { 194 blue-power-led {
139 label = "rn102:blue:pwr"; 195 label = "rn102:blue:pwr";
140 gpios = <&gpio1 25 1>; /* GPIO 57 Active Low */ 196 gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
141 linux,default-trigger = "heartbeat"; 197 default-state = "keep";
142 }; 198 };
143 199
144 green_sata1_led { 200 green-sata1-led {
145 label = "rn102:green:sata1"; 201 label = "rn102:green:sata1";
146 gpios = <&gpio0 15 1>; /* GPIO 15 Active Low */ 202 gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
147 default-state = "on"; 203 default-state = "on";
148 }; 204 };
149 205
150 green_sata2_led { 206 green-sata2-led {
151 label = "rn102:green:sata2"; 207 label = "rn102:green:sata2";
152 gpios = <&gpio0 14 1>; /* GPIO 14 Active Low */ 208 gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
153 default-state = "on"; 209 default-state = "on";
154 }; 210 };
155 211
156 green_backup_led { 212 green-backup-led {
157 label = "rn102:green:backup"; 213 label = "rn102:green:backup";
158 gpios = <&gpio1 24 1>; /* GPIO 56 Active Low */ 214 gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
159 default-state = "on"; 215 default-state = "on";
160 }; 216 };
161 }; 217 };
162 218
163 gpio_keys { 219 gpio-keys {
164 compatible = "gpio-keys"; 220 compatible = "gpio-keys";
165 #address-cells = <1>; 221 pinctrl-0 = <&power_button_pin
166 #size-cells = <0>; 222 &reset_button_pin
223 &backup_button_pin>;
224 pinctrl-names = "default";
167 225
168 button@1 { 226 power-button {
169 label = "Power Button"; 227 label = "Power Button";
170 linux,code = <116>; /* KEY_POWER */ 228 linux,code = <KEY_POWER>;
171 gpios = <&gpio1 30 0>; 229 gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
172 }; 230 };
173 231
174 button@2 { 232 reset-button {
175 label = "Reset Button"; 233 label = "Reset Button";
176 linux,code = <0x198>; /* KEY_RESTART */ 234 linux,code = <KEY_RESTART>;
177 gpios = <&gpio0 6 1>; 235 gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
178 }; 236 };
179 237
180 button@3 { 238 backup-button {
181 label = "Backup Button"; 239 label = "Backup Button";
182 linux,code = <133>; /* KEY_COPY */ 240 linux,code = <KEY_COPY>;
183 gpios = <&gpio1 26 1>; 241 gpios = <&gpio1 26 GPIO_ACTIVE_LOW>;
184 }; 242 };
185 }; 243 };
186 244
187 gpio_poweroff { 245 gpio-poweroff {
188 compatible = "gpio-poweroff"; 246 compatible = "gpio-poweroff";
189 pinctrl-0 = <&poweroff>; 247 pinctrl-0 = <&poweroff>;
190 pinctrl-names = "default"; 248 pinctrl-names = "default";
191 gpios = <&gpio0 8 1>; 249 gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
192 }; 250 };
193
194}; 251};
diff --git a/arch/arm/boot/dts/armada-370-netgear-rn104.dts b/arch/arm/boot/dts/armada-370-netgear-rn104.dts
index b0b32f5fbeb4..4e27587667bf 100644
--- a/arch/arm/boot/dts/armada-370-netgear-rn104.dts
+++ b/arch/arm/boot/dts/armada-370-netgear-rn104.dts
@@ -11,6 +11,8 @@
11 11
12/dts-v1/; 12/dts-v1/;
13 13
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/gpio/gpio.h>
14#include "armada-370.dtsi" 16#include "armada-370.dtsi"
15 17
16/ { 18/ {
@@ -58,12 +60,12 @@
58 marvell,function = "gpio"; 60 marvell,function = "gpio";
59 }; 61 };
60 62
61 backup_key_pin: backup-key-pin { 63 backup_button_pin: backup-button-pin {
62 marvell,pins = "mpp52"; 64 marvell,pins = "mpp52";
63 marvell,function = "gpio"; 65 marvell,function = "gpio";
64 }; 66 };
65 67
66 power_key_pin: power-key-pin { 68 power_button_pin: power-button-pin {
67 marvell,pins = "mpp62"; 69 marvell,pins = "mpp62";
68 marvell,function = "gpio"; 70 marvell,function = "gpio";
69 }; 71 };
@@ -78,18 +80,18 @@
78 marvell,function = "gpio"; 80 marvell,function = "gpio";
79 }; 81 };
80 82
81 reset_key_pin: reset-key-pin { 83 reset_button_pin: reset-button-pin {
82 marvell,pins = "mpp65"; 84 marvell,pins = "mpp65";
83 marvell,function = "gpio"; 85 marvell,function = "gpio";
84 }; 86 };
85 }; 87 };
86 88
87 mdio { 89 mdio {
88 phy0: ethernet-phy@0 { 90 phy0: ethernet-phy@0 { /* Marvell 88E1318 */
89 reg = <0>; 91 reg = <0>;
90 }; 92 };
91 93
92 phy1: ethernet-phy@1 { 94 phy1: ethernet-phy@1 { /* Marvell 88E1318 */
93 reg = <1>; 95 reg = <1>;
94 }; 96 };
95 }; 97 };
@@ -115,6 +117,11 @@
115 clock-frequency = <100000>; 117 clock-frequency = <100000>;
116 status = "okay"; 118 status = "okay";
117 119
120 isl12057: isl12057@68 {
121 compatible = "isl,isl12057";
122 reg = <0x68>;
123 };
124
118 g762: g762@3e { 125 g762: g762@3e {
119 compatible = "gmt,g762"; 126 compatible = "gmt,g762";
120 reg = <0x3e>; 127 reg = <0x3e>;
@@ -123,71 +130,133 @@
123 fan_startv = <1>; 130 fan_startv = <1>;
124 pwm_polarity = <0>; 131 pwm_polarity = <0>;
125 }; 132 };
133
134 pca9554: pca9554@23 {
135 compatible = "nxp,pca9554";
136 gpio-controller;
137 #gpio-cells = <2>;
138 reg = <0x23>;
139 };
140 };
141
142 nand@d0000 {
143 status = "okay";
144 num-cs = <1>;
145 marvell,nand-keep-config;
146 marvell,nand-enable-arbiter;
147 nand-on-flash-bbt;
148
149 partition@0 {
150 label = "u-boot";
151 reg = <0x0000000 0x180000>; /* 1.5MB */
152 read-only;
153 };
154
155 partition@180000 {
156 label = "u-boot-env";
157 reg = <0x180000 0x20000>; /* 128KB */
158 read-only;
159 };
160
161 partition@200000 {
162 label = "uImage";
163 reg = <0x0200000 0x600000>; /* 6MB */
164 };
165
166 partition@800000 {
167 label = "minirootfs";
168 reg = <0x0800000 0x400000>; /* 4MB */
169 };
170
171 /* Last MB is for the BBT, i.e. not writable */
172 partition@c00000 {
173 label = "ubifs";
174 reg = <0x0c00000 0x7400000>; /* 116MB */
175 };
126 }; 176 };
127 }; 177 };
128 }; 178 };
129 179
130 clocks { 180 clocks {
131 #address-cells = <1>; 181 g762_clk: g762-oscillator {
132 #size-cells = <0>;
133
134 g762_clk: fixedclk {
135 compatible = "fixed-clock"; 182 compatible = "fixed-clock";
136 #clock-cells = <0>; 183 #clock-cells = <0>;
137 clock-frequency = <8192>; 184 clock-frequency = <8192>;
138 }; 185 };
139 }; 186 };
140 187
141 gpio_leds { 188 gpio-leds {
142 compatible = "gpio-leds"; 189 compatible = "gpio-leds";
143 pinctrl-0 = <&backup_led_pin &power_led_pin>; 190 pinctrl-0 = <&backup_led_pin &power_led_pin>;
144 pinctrl-names = "default"; 191 pinctrl-names = "default";
145 192
146 blue_backup_led { 193 blue-backup-led {
147 label = "rn104:blue:backup"; 194 label = "rn104:blue:backup";
148 gpios = <&gpio1 31 0>; /* GPIO 63 Active High */ 195 gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
149 default-state = "off"; 196 default-state = "off";
150 }; 197 };
151 198
152 blue_power_led { 199 blue-power-led {
153 label = "rn104:blue:pwr"; 200 label = "rn104:blue:pwr";
154 gpios = <&gpio2 0 1>; /* GPIO 64 Active Low */ 201 gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
155 linux,default-trigger = "keep"; 202 linux,default-trigger = "keep";
156 }; 203 };
204
205 blue-sata1-led {
206 label = "rn104:blue:sata1";
207 gpios = <&pca9554 0 GPIO_ACTIVE_LOW>;
208 default-state = "off";
209 };
210
211 blue-sata2-led {
212 label = "rn104:blue:sata2";
213 gpios = <&pca9554 1 GPIO_ACTIVE_LOW>;
214 default-state = "off";
215 };
216
217 blue-sata3-led {
218 label = "rn104:blue:sata3";
219 gpios = <&pca9554 2 GPIO_ACTIVE_LOW>;
220 default-state = "off";
221 };
222
223 blue-sata4-led {
224 label = "rn104:blue:sata4";
225 gpios = <&pca9554 3 GPIO_ACTIVE_LOW>;
226 default-state = "off";
227 };
157 }; 228 };
158 229
159 gpio_keys { 230 gpio-keys {
160 compatible = "gpio-keys"; 231 compatible = "gpio-keys";
161 #address-cells = <1>; 232 pinctrl-0 = <&backup_button_pin
162 #size-cells = <0>; 233 &power_button_pin
163 pinctrl-0 = <&backup_key_pin 234 &reset_button_pin>;
164 &power_key_pin
165 &reset_key_pin>;
166 pinctrl-names = "default"; 235 pinctrl-names = "default";
167 236
168 button@1 { 237 backup-button {
169 label = "Backup Button"; 238 label = "Backup Button";
170 linux,code = <133>; /* KEY_COPY */ 239 linux,code = <KEY_COPY>;
171 gpios = <&gpio1 20 1>; 240 gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
172 }; 241 };
173 242
174 button@2 { 243 power-button {
175 label = "Power Button"; 244 label = "Power Button";
176 linux,code = <116>; /* KEY_POWER */ 245 linux,code = <KEY_POWER>;
177 gpios = <&gpio1 30 0>; 246 gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
178 }; 247 };
179 248
180 button@3 { 249 reset-button {
181 label = "Reset Button"; 250 label = "Reset Button";
182 linux,code = <0x198>; /* KEY_RESTART */ 251 linux,code = <KEY_RESTART>;
183 gpios = <&gpio2 1 1>; 252 gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
184 }; 253 };
185 }; 254 };
186 255
187 gpio_poweroff { 256 gpio-poweroff {
188 compatible = "gpio-poweroff"; 257 compatible = "gpio-poweroff";
189 pinctrl-0 = <&poweroff>; 258 pinctrl-0 = <&poweroff>;
190 pinctrl-names = "default"; 259 pinctrl-names = "default";
191 gpios = <&gpio1 28 1>; 260 gpios = <&gpio1 28 GPIO_ACTIVE_LOW>;
192 }; 261 };
193}; 262};
diff --git a/arch/arm/boot/dts/armada-370-rd.dts b/arch/arm/boot/dts/armada-370-rd.dts
index f81810a59629..abbb807459d2 100644
--- a/arch/arm/boot/dts/armada-370-rd.dts
+++ b/arch/arm/boot/dts/armada-370-rd.dts
@@ -104,6 +104,27 @@
104 gpios = <&gpio0 6 1>; 104 gpios = <&gpio0 6 1>;
105 }; 105 };
106 }; 106 };
107
108 nand@d0000 {
109 status = "okay";
110 num-cs = <1>;
111 marvell,nand-keep-config;
112 marvell,nand-enable-arbiter;
113 nand-on-flash-bbt;
114
115 partition@0 {
116 label = "U-Boot";
117 reg = <0 0x800000>;
118 };
119 partition@800000 {
120 label = "Linux";
121 reg = <0x800000 0x800000>;
122 };
123 partition@1000000 {
124 label = "Filesystem";
125 reg = <0x1000000 0x3f000000>;
126 };
127 };
107 }; 128 };
108 }; 129 };
109 }; 130 };
diff --git a/arch/arm/boot/dts/armada-370-xp.dtsi b/arch/arm/boot/dts/armada-370-xp.dtsi
index 80ffacd128f8..74b5964430ac 100644
--- a/arch/arm/boot/dts/armada-370-xp.dtsi
+++ b/arch/arm/boot/dts/armada-370-xp.dtsi
@@ -103,22 +103,52 @@
103 #size-cells = <1>; 103 #size-cells = <1>;
104 ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>; 104 ranges = <0 MBUS_ID(0xf0, 0x01) 0 0x100000>;
105 105
106 mbusc: mbus-controller@20000 { 106 rtc@10300 {
107 compatible = "marvell,mbus-controller"; 107 compatible = "marvell,orion-rtc";
108 reg = <0x20000 0x100>, <0x20180 0x20>; 108 reg = <0x10300 0x20>;
109 interrupts = <50>;
109 }; 110 };
110 111
111 mpic: interrupt-controller@20000 { 112 spi0: spi@10600 {
112 compatible = "marvell,mpic"; 113 compatible = "marvell,orion-spi";
113 #interrupt-cells = <1>; 114 reg = <0x10600 0x28>;
114 #size-cells = <1>; 115 #address-cells = <1>;
115 interrupt-controller; 116 #size-cells = <0>;
116 msi-controller; 117 cell-index = <0>;
118 interrupts = <30>;
119 clocks = <&coreclk 0>;
120 status = "disabled";
117 }; 121 };
118 122
119 coherency-fabric@20200 { 123 spi1: spi@10680 {
120 compatible = "marvell,coherency-fabric"; 124 compatible = "marvell,orion-spi";
121 reg = <0x20200 0xb0>, <0x21010 0x1c>; 125 reg = <0x10680 0x28>;
126 #address-cells = <1>;
127 #size-cells = <0>;
128 cell-index = <1>;
129 interrupts = <92>;
130 clocks = <&coreclk 0>;
131 status = "disabled";
132 };
133
134 i2c0: i2c@11000 {
135 compatible = "marvell,mv64xxx-i2c";
136 #address-cells = <1>;
137 #size-cells = <0>;
138 interrupts = <31>;
139 timeout-ms = <1000>;
140 clocks = <&coreclk 0>;
141 status = "disabled";
142 };
143
144 i2c1: i2c@11100 {
145 compatible = "marvell,mv64xxx-i2c";
146 #address-cells = <1>;
147 #size-cells = <0>;
148 interrupts = <32>;
149 timeout-ms = <1000>;
150 clocks = <&coreclk 0>;
151 status = "disabled";
122 }; 152 };
123 153
124 serial@12000 { 154 serial@12000 {
@@ -146,25 +176,41 @@
146 clock-output-names = "nand"; 176 clock-output-names = "nand";
147 }; 177 };
148 178
179 mbusc: mbus-controller@20000 {
180 compatible = "marvell,mbus-controller";
181 reg = <0x20000 0x100>, <0x20180 0x20>;
182 };
183
184 mpic: interrupt-controller@20000 {
185 compatible = "marvell,mpic";
186 #interrupt-cells = <1>;
187 #size-cells = <1>;
188 interrupt-controller;
189 msi-controller;
190 };
191
192 coherency-fabric@20200 {
193 compatible = "marvell,coherency-fabric";
194 reg = <0x20200 0xb0>, <0x21010 0x1c>;
195 };
196
149 timer@20300 { 197 timer@20300 {
150 reg = <0x20300 0x30>, <0x21040 0x30>; 198 reg = <0x20300 0x30>, <0x21040 0x30>;
151 interrupts = <37>, <38>, <39>, <40>, <5>, <6>; 199 interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
152 }; 200 };
153 201
154 sata@a0000 { 202 usb@50000 {
155 compatible = "marvell,armada-370-sata"; 203 compatible = "marvell,orion-ehci";
156 reg = <0xa0000 0x5000>; 204 reg = <0x50000 0x500>;
157 interrupts = <55>; 205 interrupts = <45>;
158 clocks = <&gateclk 15>, <&gateclk 30>;
159 clock-names = "0", "1";
160 status = "disabled"; 206 status = "disabled";
161 }; 207 };
162 208
163 mdio { 209 usb@51000 {
164 #address-cells = <1>; 210 compatible = "marvell,orion-ehci";
165 #size-cells = <0>; 211 reg = <0x51000 0x500>;
166 compatible = "marvell,orion-mdio"; 212 interrupts = <46>;
167 reg = <0x72004 0x4>; 213 status = "disabled";
168 }; 214 };
169 215
170 eth0: ethernet@70000 { 216 eth0: ethernet@70000 {
@@ -175,6 +221,13 @@
175 status = "disabled"; 221 status = "disabled";
176 }; 222 };
177 223
224 mdio {
225 #address-cells = <1>;
226 #size-cells = <0>;
227 compatible = "marvell,orion-mdio";
228 reg = <0x72004 0x4>;
229 };
230
178 eth1: ethernet@74000 { 231 eth1: ethernet@74000 {
179 compatible = "marvell,armada-370-neta"; 232 compatible = "marvell,armada-370-neta";
180 reg = <0x74000 0x4000>; 233 reg = <0x74000 0x4000>;
@@ -183,32 +236,25 @@
183 status = "disabled"; 236 status = "disabled";
184 }; 237 };
185 238
186 i2c0: i2c@11000 { 239 sata@a0000 {
187 compatible = "marvell,mv64xxx-i2c"; 240 compatible = "marvell,armada-370-sata";
188 #address-cells = <1>; 241 reg = <0xa0000 0x5000>;
189 #size-cells = <0>; 242 interrupts = <55>;
190 interrupts = <31>; 243 clocks = <&gateclk 15>, <&gateclk 30>;
191 timeout-ms = <1000>; 244 clock-names = "0", "1";
192 clocks = <&coreclk 0>;
193 status = "disabled"; 245 status = "disabled";
194 }; 246 };
195 247
196 i2c1: i2c@11100 { 248 nand@d0000 {
197 compatible = "marvell,mv64xxx-i2c"; 249 compatible = "marvell,armada370-nand";
250 reg = <0xd0000 0x54>;
198 #address-cells = <1>; 251 #address-cells = <1>;
199 #size-cells = <0>; 252 #size-cells = <1>;
200 interrupts = <32>; 253 interrupts = <113>;
201 timeout-ms = <1000>; 254 clocks = <&coredivclk 0>;
202 clocks = <&coreclk 0>;
203 status = "disabled"; 255 status = "disabled";
204 }; 256 };
205 257
206 rtc@10300 {
207 compatible = "marvell,orion-rtc";
208 reg = <0x10300 0x20>;
209 interrupts = <50>;
210 };
211
212 mvsdio@d4000 { 258 mvsdio@d4000 {
213 compatible = "marvell,orion-sdio"; 259 compatible = "marvell,orion-sdio";
214 reg = <0xd4000 0x200>; 260 reg = <0xd4000 0x200>;
@@ -220,43 +266,6 @@
220 cap-mmc-highspeed; 266 cap-mmc-highspeed;
221 status = "disabled"; 267 status = "disabled";
222 }; 268 };
223
224 usb@50000 {
225 compatible = "marvell,orion-ehci";
226 reg = <0x50000 0x500>;
227 interrupts = <45>;
228 status = "disabled";
229 };
230
231 usb@51000 {
232 compatible = "marvell,orion-ehci";
233 reg = <0x51000 0x500>;
234 interrupts = <46>;
235 status = "disabled";
236 };
237
238 spi0: spi@10600 {
239 compatible = "marvell,orion-spi";
240 reg = <0x10600 0x28>;
241 #address-cells = <1>;
242 #size-cells = <0>;
243 cell-index = <0>;
244 interrupts = <30>;
245 clocks = <&coreclk 0>;
246 status = "disabled";
247 };
248
249 spi1: spi@10680 {
250 compatible = "marvell,orion-spi";
251 reg = <0x10680 0x28>;
252 #address-cells = <1>;
253 #size-cells = <0>;
254 cell-index = <1>;
255 interrupts = <92>;
256 clocks = <&coreclk 0>;
257 status = "disabled";
258 };
259
260 }; 269 };
261 }; 270 };
262 271
diff --git a/arch/arm/boot/dts/armada-370.dtsi b/arch/arm/boot/dts/armada-370.dtsi
index 7a4b82e71aaf..0d8530c98cf5 100644
--- a/arch/arm/boot/dts/armada-370.dtsi
+++ b/arch/arm/boot/dts/armada-370.dtsi
@@ -91,11 +91,6 @@
91 }; 91 };
92 92
93 internal-regs { 93 internal-regs {
94 system-controller@18200 {
95 compatible = "marvell,armada-370-xp-system-controller";
96 reg = <0x18200 0x100>;
97 };
98
99 L2: l2-cache { 94 L2: l2-cache {
100 compatible = "marvell,aurora-outer-cache"; 95 compatible = "marvell,aurora-outer-cache";
101 reg = <0x08000 0x1000>; 96 reg = <0x08000 0x1000>;
@@ -103,8 +98,17 @@
103 wt-override; 98 wt-override;
104 }; 99 };
105 100
106 interrupt-controller@20000 { 101 i2c0: i2c@11000 {
107 reg = <0x20a00 0x1d0>, <0x21870 0x58>; 102 reg = <0x11000 0x20>;
103 };
104
105 i2c1: i2c@11100 {
106 reg = <0x11100 0x20>;
107 };
108
109 system-controller@18200 {
110 compatible = "marvell,armada-370-xp-system-controller";
111 reg = <0x18200 0x100>;
108 }; 112 };
109 113
110 pinctrl { 114 pinctrl {
@@ -163,9 +167,11 @@
163 interrupts = <91>; 167 interrupts = <91>;
164 }; 168 };
165 169
166 timer@20300 { 170 gateclk: clock-gating-control@18220 {
167 compatible = "marvell,armada-370-timer"; 171 compatible = "marvell,armada-370-gating-clock";
168 clocks = <&coreclk 2>; 172 reg = <0x18220 0x4>;
173 clocks = <&coreclk 0>;
174 #clock-cells = <1>;
169 }; 175 };
170 176
171 coreclk: mvebu-sar@18230 { 177 coreclk: mvebu-sar@18230 {
@@ -174,11 +180,28 @@
174 #clock-cells = <1>; 180 #clock-cells = <1>;
175 }; 181 };
176 182
177 gateclk: clock-gating-control@18220 { 183 thermal@18300 {
178 compatible = "marvell,armada-370-gating-clock"; 184 compatible = "marvell,armada370-thermal";
179 reg = <0x18220 0x4>; 185 reg = <0x18300 0x4
186 0x18304 0x4>;
187 status = "okay";
188 };
189
190 interrupt-controller@20000 {
191 reg = <0x20a00 0x1d0>, <0x21870 0x58>;
192 };
193
194 timer@20300 {
195 compatible = "marvell,armada-370-timer";
196 clocks = <&coreclk 2>;
197 };
198
199 usb@50000 {
200 clocks = <&coreclk 0>;
201 };
202
203 usb@51000 {
180 clocks = <&coreclk 0>; 204 clocks = <&coreclk 0>;
181 #clock-cells = <1>;
182 }; 205 };
183 206
184 xor@60800 { 207 xor@60800 {
@@ -218,29 +241,6 @@
218 dmacap,memset; 241 dmacap,memset;
219 }; 242 };
220 }; 243 };
221
222 i2c0: i2c@11000 {
223 reg = <0x11000 0x20>;
224 };
225
226 i2c1: i2c@11100 {
227 reg = <0x11100 0x20>;
228 };
229
230 usb@50000 {
231 clocks = <&coreclk 0>;
232 };
233
234 usb@51000 {
235 clocks = <&coreclk 0>;
236 };
237
238 thermal@18300 {
239 compatible = "marvell,armada370-thermal";
240 reg = <0x18300 0x4
241 0x18304 0x4>;
242 status = "okay";
243 };
244 }; 244 };
245 }; 245 };
246}; 246};
diff --git a/arch/arm/boot/dts/armada-xp-gp.dts b/arch/arm/boot/dts/armada-xp-gp.dts
index 2298e4a910e2..274e2ad5f51c 100644
--- a/arch/arm/boot/dts/armada-xp-gp.dts
+++ b/arch/arm/boot/dts/armada-xp-gp.dts
@@ -175,6 +175,14 @@
175 spi-max-frequency = <108000000>; 175 spi-max-frequency = <108000000>;
176 }; 176 };
177 }; 177 };
178
179 nand@d0000 {
180 status = "okay";
181 num-cs = <1>;
182 marvell,nand-keep-config;
183 marvell,nand-enable-arbiter;
184 nand-on-flash-bbt;
185 };
178 }; 186 };
179 }; 187 };
180}; 188};
diff --git a/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts b/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts
new file mode 100644
index 000000000000..ff049ee862eb
--- /dev/null
+++ b/arch/arm/boot/dts/armada-xp-netgear-rn2120.dts
@@ -0,0 +1,327 @@
1/*
2 * Device Tree file for NETGEAR ReadyNAS 2120
3 *
4 * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12/dts-v1/;
13
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/gpio/gpio.h>
16#include "armada-xp-mv78230.dtsi"
17
18/ {
19 model = "NETGEAR ReadyNAS 2120";
20 compatible = "netgear,readynas-2120", "marvell,armadaxp-mv78230", "marvell,armadaxp", "marvell,armada-370-xp";
21
22 chosen {
23 bootargs = "console=ttyS0,115200 earlyprintk";
24 };
25
26 memory {
27 device_type = "memory";
28 reg = <0 0x00000000 0 0x80000000>; /* 2GB */
29 };
30
31 soc {
32 ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
33 MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000>;
34
35 pcie-controller {
36 status = "okay";
37
38 /* Connected to first Marvell 88SE9170 SATA controller */
39 pcie@1,0 {
40 /* Port 0, Lane 0 */
41 status = "okay";
42 };
43
44 /* Connected to second Marvell 88SE9170 SATA controller */
45 pcie@2,0 {
46 /* Port 0, Lane 1 */
47 status = "okay";
48 };
49
50 /* Connected to Fresco Logic FL1009 USB 3.0 controller */
51 pcie@5,0 {
52 /* Port 1, Lane 0 */
53 status = "okay";
54 };
55 };
56
57 internal-regs {
58 pinctrl {
59 poweroff: poweroff {
60 marvell,pins = "mpp42";
61 marvell,function = "gpio";
62 };
63
64 power_button_pin: power-button-pin {
65 marvell,pins = "mpp27";
66 marvell,function = "gpio";
67 };
68
69 reset_button_pin: reset-button-pin {
70 marvell,pins = "mpp41";
71 marvell,function = "gpio";
72 };
73
74 sata1_led_pin: sata1-led-pin {
75 marvell,pins = "mpp31";
76 marvell,function = "gpio";
77 };
78
79 sata2_led_pin: sata2-led-pin {
80 marvell,pins = "mpp40";
81 marvell,function = "gpio";
82 };
83
84 sata3_led_pin: sata3-led-pin {
85 marvell,pins = "mpp44";
86 marvell,function = "gpio";
87 };
88
89 sata4_led_pin: sata4-led-pin {
90 marvell,pins = "mpp47";
91 marvell,function = "gpio";
92 };
93
94 sata1_power_pin: sata1-power-pin {
95 marvell,pins = "mpp24";
96 marvell,function = "gpio";
97 };
98
99 sata2_power_pin: sata2-power-pin {
100 marvell,pins = "mpp25";
101 marvell,function = "gpio";
102 };
103
104 sata3_power_pin: sata3-power-pin {
105 marvell,pins = "mpp26";
106 marvell,function = "gpio";
107 };
108
109 sata4_power_pin: sata4-power-pin {
110 marvell,pins = "mpp28";
111 marvell,function = "gpio";
112 };
113
114 sata1_pres_pin: sata1-pres-pin {
115 marvell,pins = "mpp32";
116 marvell,function = "gpio";
117 };
118
119 sata2_pres_pin: sata2-pres-pin {
120 marvell,pins = "mpp33";
121 marvell,function = "gpio";
122 };
123
124 sata3_pres_pin: sata3-pres-pin {
125 marvell,pins = "mpp34";
126 marvell,function = "gpio";
127 };
128
129 sata4_pres_pin: sata4-pres-pin {
130 marvell,pins = "mpp35";
131 marvell,function = "gpio";
132 };
133
134 err_led_pin: err-led-pin {
135 marvell,pins = "mpp45";
136 marvell,function = "gpio";
137 };
138 };
139
140 serial@12000 {
141 clocks = <&coreclk 0>;
142 status = "okay";
143 };
144
145 mdio {
146 phy0: ethernet-phy@0 { /* Marvell 88E1318 */
147 reg = <0>;
148 };
149
150 phy1: ethernet-phy@1 { /* Marvell 88E1318 */
151 reg = <1>;
152 };
153 };
154
155 ethernet@70000 {
156 status = "okay";
157 phy = <&phy0>;
158 phy-mode = "rgmii-id";
159 };
160
161 ethernet@74000 {
162 status = "okay";
163 phy = <&phy1>;
164 phy-mode = "rgmii-id";
165 };
166
167 /* Front USB 2.0 port */
168 usb@50000 {
169 status = "okay";
170 };
171
172 i2c@11000 {
173 compatible = "marvell,mv64xxx-i2c";
174 clock-frequency = <400000>;
175 status = "okay";
176
177 isl12057: isl12057@68 {
178 compatible = "isl,isl12057";
179 reg = <0x68>;
180 };
181
182 /* Controller for rear fan #1 of 3 (Protechnic
183 * MGT4012XB-O20, 8000RPM) near eSATA port */
184 g762_fan1: g762@3e {
185 compatible = "gmt,g762";
186 reg = <0x3e>;
187 clocks = <&g762_clk>; /* input clock */
188 fan_gear_mode = <0>;
189 fan_startv = <1>;
190 pwm_polarity = <0>;
191 };
192
193 /* Controller for rear (center) fan #2 of 3 */
194 g762_fan2: g762@48 {
195 compatible = "gmt,g762";
196 reg = <0x48>;
197 clocks = <&g762_clk>; /* input clock */
198 fan_gear_mode = <0>;
199 fan_startv = <1>;
200 pwm_polarity = <0>;
201 };
202
203 /* Controller for rear fan #3 of 3 */
204 g762_fan3: g762@49 {
205 compatible = "gmt,g762";
206 reg = <0x49>;
207 clocks = <&g762_clk>; /* input clock */
208 fan_gear_mode = <0>;
209 fan_startv = <1>;
210 pwm_polarity = <0>;
211 };
212
213 /* Temperature sensor */
214 g751: g751@4c {
215 compatible = "gmt,g751";
216 reg = <0x4c>;
217 };
218 };
219
220 nand@d0000 {
221 status = "okay";
222 num-cs = <1>;
223 marvell,nand-keep-config;
224 marvell,nand-enable-arbiter;
225 nand-on-flash-bbt;
226
227 partition@0 {
228 label = "u-boot";
229 reg = <0x0000000 0x180000>; /* 1.5MB */
230 read-only;
231 };
232
233 partition@180000 {
234 label = "u-boot-env";
235 reg = <0x180000 0x20000>; /* 128KB */
236 read-only;
237 };
238
239 partition@200000 {
240 label = "uImage";
241 reg = <0x0200000 0x600000>; /* 6MB */
242 };
243
244 partition@800000 {
245 label = "minirootfs";
246 reg = <0x0800000 0x400000>; /* 4MB */
247 };
248
249 /* Last MB is for the BBT, i.e. not writable */
250 partition@c00000 {
251 label = "ubifs";
252 reg = <0x0c00000 0x7400000>; /* 116MB */
253 };
254 };
255 };
256 };
257
258 clocks {
259 g762_clk: g762-oscillator {
260 compatible = "fixed-clock";
261 #clock-cells = <0>;
262 clock-frequency = <32768>;
263 };
264 };
265
266 gpio-leds {
267 compatible = "gpio-leds";
268 pinctrl-0 = <&sata1_led_pin &sata2_led_pin &err_led_pin
269 &sata3_led_pin &sata4_led_pin>;
270 pinctrl-names = "default";
271
272 red-sata1-led {
273 label = "rn2120:red:sata1";
274 gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
275 default-state = "off";
276 };
277
278 red-sata2-led {
279 label = "rn2120:red:sata2";
280 gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
281 default-state = "off";
282 };
283
284 red-sata3-led {
285 label = "rn2120:red:sata3";
286 gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
287 default-state = "off";
288 };
289
290 red-sata4-led {
291 label = "rn2120:red:sata4";
292 gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
293 default-state = "off";
294 };
295
296 red-err-led {
297 label = "rn2120:red:err";
298 gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
299 default-state = "off";
300 };
301 };
302
303 gpio-keys {
304 compatible = "gpio-keys";
305 pinctrl-0 = <&power_button_pin &reset_button_pin>;
306 pinctrl-names = "default";
307
308 power-button {
309 label = "Power Button";
310 linux,code = <KEY_POWER>;
311 gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
312 };
313
314 reset-button {
315 label = "Reset Button";
316 linux,code = <KEY_RESTART>;
317 gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
318 };
319 };
320
321 gpio-poweroff {
322 compatible = "gpio-poweroff";
323 pinctrl-0 = <&poweroff>;
324 pinctrl-names = "default";
325 gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
326 };
327};
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 5695afcc04bf..99bcf76e6953 100644
--- a/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
+++ b/arch/arm/boot/dts/armada-xp-openblocks-ax3-4.dts
@@ -103,8 +103,7 @@
103 green_led { 103 green_led {
104 label = "green_led"; 104 label = "green_led";
105 gpios = <&gpio1 21 1>; 105 gpios = <&gpio1 21 1>;
106 default-state = "off"; 106 default-state = "keep";
107 linux,default-trigger = "heartbeat";
108 }; 107 };
109 }; 108 };
110 109
diff --git a/arch/arm/boot/dts/armada-xp.dtsi b/arch/arm/boot/dts/armada-xp.dtsi
index 281c6447e872..b8b84a22f0f3 100644
--- a/arch/arm/boot/dts/armada-xp.dtsi
+++ b/arch/arm/boot/dts/armada-xp.dtsi
@@ -42,13 +42,14 @@
42 wt-override; 42 wt-override;
43 }; 43 };
44 44
45 interrupt-controller@20000 { 45 i2c0: i2c@11000 {
46 reg = <0x20a00 0x2d0>, <0x21070 0x58>; 46 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
47 reg = <0x11000 0x100>;
47 }; 48 };
48 49
49 armada-370-xp-pmsu@22000 { 50 i2c1: i2c@11100 {
50 compatible = "marvell,armada-370-xp-pmsu"; 51 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
51 reg = <0x22100 0x430>, <0x20800 0x20>; 52 reg = <0x11100 0x100>;
52 }; 53 };
53 54
54 serial@12200 { 55 serial@12200 {
@@ -68,10 +69,16 @@
68 status = "disabled"; 69 status = "disabled";
69 }; 70 };
70 71
71 timer@20300 { 72 system-controller@18200 {
72 compatible = "marvell,armada-xp-timer"; 73 compatible = "marvell,armada-370-xp-system-controller";
73 clocks = <&coreclk 2>, <&refclk>; 74 reg = <0x18200 0x500>;
74 clock-names = "nbclk", "fixed"; 75 };
76
77 gateclk: clock-gating-control@18220 {
78 compatible = "marvell,armada-xp-gating-clock";
79 reg = <0x18220 0x4>;
80 clocks = <&coreclk 0>;
81 #clock-cells = <1>;
75 }; 82 };
76 83
77 coreclk: mvebu-sar@18230 { 84 coreclk: mvebu-sar@18230 {
@@ -80,6 +87,13 @@
80 #clock-cells = <1>; 87 #clock-cells = <1>;
81 }; 88 };
82 89
90 thermal@182b0 {
91 compatible = "marvell,armadaxp-thermal";
92 reg = <0x182b0 0x4
93 0x184d0 0x4>;
94 status = "okay";
95 };
96
83 cpuclk: clock-complex@18700 { 97 cpuclk: clock-complex@18700 {
84 #clock-cells = <1>; 98 #clock-cells = <1>;
85 compatible = "marvell,armada-xp-cpu-clock"; 99 compatible = "marvell,armada-xp-cpu-clock";
@@ -87,16 +101,19 @@
87 clocks = <&coreclk 1>; 101 clocks = <&coreclk 1>;
88 }; 102 };
89 103
90 gateclk: clock-gating-control@18220 { 104 interrupt-controller@20000 {
91 compatible = "marvell,armada-xp-gating-clock"; 105 reg = <0x20a00 0x2d0>, <0x21070 0x58>;
92 reg = <0x18220 0x4>;
93 clocks = <&coreclk 0>;
94 #clock-cells = <1>;
95 }; 106 };
96 107
97 system-controller@18200 { 108 timer@20300 {
98 compatible = "marvell,armada-370-xp-system-controller"; 109 compatible = "marvell,armada-xp-timer";
99 reg = <0x18200 0x500>; 110 clocks = <&coreclk 2>, <&refclk>;
111 clock-names = "nbclk", "fixed";
112 };
113
114 armada-370-xp-pmsu@22000 {
115 compatible = "marvell,armada-370-xp-pmsu";
116 reg = <0x22100 0x400>, <0x20800 0x20>;
100 }; 117 };
101 118
102 eth2: ethernet@30000 { 119 eth2: ethernet@30000 {
@@ -107,6 +124,22 @@
107 status = "disabled"; 124 status = "disabled";
108 }; 125 };
109 126
127 usb@50000 {
128 clocks = <&gateclk 18>;
129 };
130
131 usb@51000 {
132 clocks = <&gateclk 19>;
133 };
134
135 usb@52000 {
136 compatible = "marvell,orion-ehci";
137 reg = <0x52000 0x500>;
138 interrupts = <47>;
139 clocks = <&gateclk 20>;
140 status = "disabled";
141 };
142
110 xor@60900 { 143 xor@60900 {
111 compatible = "marvell,orion-xor"; 144 compatible = "marvell,orion-xor";
112 reg = <0x60900 0x100 145 reg = <0x60900 0x100
@@ -146,39 +179,6 @@
146 dmacap,memset; 179 dmacap,memset;
147 }; 180 };
148 }; 181 };
149
150 i2c0: i2c@11000 {
151 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
152 reg = <0x11000 0x100>;
153 };
154
155 i2c1: i2c@11100 {
156 compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
157 reg = <0x11100 0x100>;
158 };
159
160 usb@50000 {
161 clocks = <&gateclk 18>;
162 };
163
164 usb@51000 {
165 clocks = <&gateclk 19>;
166 };
167
168 usb@52000 {
169 compatible = "marvell,orion-ehci";
170 reg = <0x52000 0x500>;
171 interrupts = <47>;
172 clocks = <&gateclk 20>;
173 status = "disabled";
174 };
175
176 thermal@182b0 {
177 compatible = "marvell,armadaxp-thermal";
178 reg = <0x182b0 0x4
179 0x184d0 0x4>;
180 status = "okay";
181 };
182 }; 182 };
183 }; 183 };
184 184
diff --git a/arch/arm/boot/dts/at91-cosino.dtsi b/arch/arm/boot/dts/at91-cosino.dtsi
new file mode 100644
index 000000000000..2093c4d7cd6a
--- /dev/null
+++ b/arch/arm/boot/dts/at91-cosino.dtsi
@@ -0,0 +1,122 @@
1/*
2 * at91-cosino.dtsi - Device Tree file for Cosino core module
3 *
4 * Copyright (C) 2013 - Rodolfo Giometti <giometti@linux.it>
5 * HCE Engineering
6 *
7 * Derived from at91sam9x5ek.dtsi by:
8 * Copyright (C) 2012 Atmel,
9 * 2012 Nicolas Ferre <nicolas.ferre@atmel.com>
10 *
11 * Licensed under GPLv2 or later.
12 */
13
14#include "at91sam9g35.dtsi"
15
16/ {
17 model = "HCE Cosino core module";
18 compatible = "hce,cosino", "atmel,at91sam9x5", "atmel,at91sam9";
19
20 chosen {
21 bootargs = "console=ttyS0,115200 root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait";
22 };
23
24 memory {
25 reg = <0x20000000 0x8000000>;
26 };
27
28 clocks {
29 #address-cells = <1>;
30 #size-cells = <1>;
31 ranges;
32
33 main_clock: clock@0 {
34 compatible = "atmel,osc", "fixed-clock";
35 clock-frequency = <12000000>;
36 };
37 };
38
39 ahb {
40 apb {
41 mmc0: mmc@f0008000 {
42 pinctrl-0 = <
43 &pinctrl_board_mmc0
44 &pinctrl_mmc0_slot0_clk_cmd_dat0
45 &pinctrl_mmc0_slot0_dat1_3>;
46 status = "okay";
47 slot@0 {
48 reg = <0>;
49 bus-width = <4>;
50 cd-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
51 };
52 };
53
54 dbgu: serial@fffff200 {
55 status = "okay";
56 };
57
58 usart0: serial@f801c000 {
59 status = "okay";
60 };
61
62 i2c0: i2c@f8010000 {
63 status = "okay";
64 };
65
66 adc0: adc@f804c000 {
67 atmel,adc-clock-rate = <1000000>;
68 atmel,adc-ts-wires = <4>;
69 atmel,adc-ts-pressure-threshold = <10000>;
70 status = "okay";
71 };
72
73 pinctrl@fffff400 {
74 mmc0 {
75 pinctrl_board_mmc0: mmc0-board {
76 atmel,pins =
77 <AT91_PIOD 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PD15 gpio CD pin pull up and deglitch */
78 };
79 };
80 };
81
82 watchdog@fffffe40 {
83 status = "okay";
84 };
85 };
86
87 nand0: nand@40000000 {
88 nand-bus-width = <8>;
89 nand-ecc-mode = "hw";
90 atmel,has-pmecc; /* Enable PMECC */
91 atmel,pmecc-cap = <4>;
92 atmel,pmecc-sector-size = <512>;
93 nand-on-flash-bbt;
94 status = "okay";
95
96 at91bootstrap@0 {
97 label = "at91bootstrap";
98 reg = <0x0 0x40000>;
99 };
100
101 uboot@40000 {
102 label = "u-boot";
103 reg = <0x40000 0x80000>;
104 };
105
106 ubootenv@c0000 {
107 label = "U-Boot Env";
108 reg = <0xc0000 0x140000>;
109 };
110
111 kernel@200000 {
112 label = "kernel";
113 reg = <0x200000 0x600000>;
114 };
115
116 rootfs@800000 {
117 label = "rootfs";
118 reg = <0x800000 0x0f800000>;
119 };
120 };
121 };
122};
diff --git a/arch/arm/boot/dts/at91-cosino_mega2560.dts b/arch/arm/boot/dts/at91-cosino_mega2560.dts
new file mode 100644
index 000000000000..f9415dd11f17
--- /dev/null
+++ b/arch/arm/boot/dts/at91-cosino_mega2560.dts
@@ -0,0 +1,84 @@
1/*
2 * at91-cosino_mega2560.dts - Device Tree file for Cosino board with
3 * Mega 2560 extension
4 *
5 * Copyright (C) 2013 - Rodolfo Giometti <giometti@linux.it>
6 * HCE Engineering
7 *
8 * Derived from at91sam9g35ek.dts by:
9 * Copyright (C) 2012 Atmel,
10 * 2012 Nicolas Ferre <nicolas.ferre@atmel.com>
11 *
12 * Licensed under GPLv2 or later.
13 */
14
15/dts-v1/;
16#include "at91-cosino.dtsi"
17
18/ {
19 model = "HCE Cosino Mega 2560";
20 compatible = "hce,cosino_mega2560", "atmel,at91sam9x5", "atmel,at91sam9";
21
22 ahb {
23 apb {
24 macb0: ethernet@f802c000 {
25 phy-mode = "rmii";
26 status = "okay";
27 };
28
29 adc0: adc@f804c000 {
30 atmel,adc-clock-rate = <1000000>;
31 atmel,adc-ts-wires = <4>;
32 atmel,adc-ts-pressure-threshold = <10000>;
33 status = "okay";
34 };
35
36
37 tsadcc: tsadcc@f804c000 {
38 status = "okay";
39 };
40
41 rtc@fffffeb0 {
42 status = "okay";
43 };
44
45 usart1: serial@f8020000 {
46 status = "okay";
47 };
48
49 usart2: serial@f8024000 {
50 status = "okay";
51 };
52
53 usb2: gadget@f803c000 {
54 atmel,vbus-gpio = <&pioB 16 GPIO_ACTIVE_HIGH>;
55 status = "okay";
56 };
57
58 mmc1: mmc@f000c000 {
59 pinctrl-0 = <
60 &pinctrl_mmc1_slot0_clk_cmd_dat0
61 &pinctrl_mmc1_slot0_dat1_3>;
62 status = "okay";
63 slot@0 {
64 reg = <0>;
65 bus-width = <4>;
66 non-removable;
67 };
68 };
69 };
70
71 usb0: ohci@00600000 {
72 status = "okay";
73 num-ports = <3>;
74 atmel,vbus-gpio = <0 /* &pioD 18 GPIO_ACTIVE_LOW */
75 &pioD 19 GPIO_ACTIVE_LOW
76 &pioD 20 GPIO_ACTIVE_LOW
77 >;
78 };
79
80 usb1: ehci@00700000 {
81 status = "okay";
82 };
83 };
84};
diff --git a/arch/arm/boot/dts/at91rm9200.dtsi b/arch/arm/boot/dts/at91rm9200.dtsi
index f77065506f1e..c61b16fba79b 100644
--- a/arch/arm/boot/dts/at91rm9200.dtsi
+++ b/arch/arm/boot/dts/at91rm9200.dtsi
@@ -191,12 +191,12 @@
191 AT91_PIOA 18 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA18 periph A */ 191 AT91_PIOA 18 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA18 periph A */
192 }; 192 };
193 193
194 pinctrl_uart0_rts: uart0_rts-0 { 194 pinctrl_uart0_cts: uart0_cts-0 {
195 atmel,pins = 195 atmel,pins =
196 <AT91_PIOA 20 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA20 periph A */ 196 <AT91_PIOA 20 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA20 periph A */
197 }; 197 };
198 198
199 pinctrl_uart0_cts: uart0_cts-0 { 199 pinctrl_uart0_rts: uart0_rts-0 {
200 atmel,pins = 200 atmel,pins =
201 <AT91_PIOA 21 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA21 periph A */ 201 <AT91_PIOA 21 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA21 periph A */
202 }; 202 };
diff --git a/arch/arm/boot/dts/at91rm9200ek.dts b/arch/arm/boot/dts/at91rm9200ek.dts
index d2d72c3b44c4..df6b0aa0e4dd 100644
--- a/arch/arm/boot/dts/at91rm9200ek.dts
+++ b/arch/arm/boot/dts/at91rm9200ek.dts
@@ -29,10 +29,22 @@
29 29
30 ahb { 30 ahb {
31 apb { 31 apb {
32 dbgu: serial@fffff200 { 32 usb1: gadget@fffb0000 {
33 atmel,vbus-gpio = <&pioD 4 GPIO_ACTIVE_HIGH>;
34 atmel,pullup-gpio = <&pioD 5 GPIO_ACTIVE_HIGH>;
33 status = "okay"; 35 status = "okay";
34 }; 36 };
35 37
38 macb0: ethernet@fffbc000 {
39 phy-mode = "rmii";
40 status = "okay";
41
42 phy0: ethernet-phy {
43 interrupt-parent = <&pioC>;
44 interrupts = <4 IRQ_TYPE_EDGE_BOTH>;
45 };
46 };
47
36 usart1: serial@fffc4000 { 48 usart1: serial@fffc4000 {
37 pinctrl-0 = 49 pinctrl-0 =
38 <&pinctrl_uart1 50 <&pinctrl_uart1
@@ -44,16 +56,6 @@
44 status = "okay"; 56 status = "okay";
45 }; 57 };
46 58
47 macb0: ethernet@fffbc000 {
48 phy-mode = "rmii";
49 status = "okay";
50 };
51
52 usb1: gadget@fffb0000 {
53 atmel,vbus-gpio = <&pioD 4 GPIO_ACTIVE_HIGH>;
54 status = "okay";
55 };
56
57 spi0: spi@fffe0000 { 59 spi0: spi@fffe0000 {
58 status = "okay"; 60 status = "okay";
59 cs-gpios = <&pioA 3 0>, <0>, <0>, <0>; 61 cs-gpios = <&pioA 3 0>, <0>, <0>, <0>;
@@ -63,12 +65,45 @@
63 reg = <0>; 65 reg = <0>;
64 }; 66 };
65 }; 67 };
68
69 dbgu: serial@fffff200 {
70 status = "okay";
71 };
66 }; 72 };
67 73
68 usb0: ohci@00300000 { 74 usb0: ohci@00300000 {
69 num-ports = <2>; 75 num-ports = <2>;
70 status = "okay"; 76 status = "okay";
71 }; 77 };
78
79 nor_flash@10000000 {
80 compatible = "cfi-flash";
81 reg = <0x10000000 0x800000>;
82 linux,mtd-name = "physmap-flash.0";
83 bank-width = <2>;
84 #address-cells = <1>;
85 #size-cells = <1>;
86
87 barebox@0 {
88 label = "barebox";
89 reg = <0x00000 0x40000>;
90 };
91
92 bareboxenv@40000 {
93 label = "bareboxenv";
94 reg = <0x40000 0x10000>;
95 };
96
97 kernel@50000 {
98 label = "kernel";
99 reg = <0x50000 0x300000>;
100 };
101
102 root@350000 {
103 label = "root";
104 reg = <0x350000 0x4B0000>;
105 };
106 };
72 }; 107 };
73 108
74 leds { 109 leds {
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi
index d5bd65f74602..c8fa9b9f07e3 100644
--- a/arch/arm/boot/dts/at91sam9263.dtsi
+++ b/arch/arm/boot/dts/at91sam9263.dtsi
@@ -30,6 +30,7 @@
30 i2c0 = &i2c0; 30 i2c0 = &i2c0;
31 ssc0 = &ssc0; 31 ssc0 = &ssc0;
32 ssc1 = &ssc1; 32 ssc1 = &ssc1;
33 pwm0 = &pwm0;
33 }; 34 };
34 cpus { 35 cpus {
35 #address-cells = <0>; 36 #address-cells = <0>;
@@ -366,6 +367,34 @@
366 }; 367 };
367 }; 368 };
368 369
370 fb {
371 pinctrl_fb: fb-0 {
372 atmel,pins =
373 <AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC1 periph A */
374 AT91_PIOC 2 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC2 periph A */
375 AT91_PIOC 3 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC3 periph A */
376 AT91_PIOB 9 AT91_PERIPH_B AT91_PINCTRL_NONE /* PB9 periph B */
377 AT91_PIOC 6 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC6 periph A */
378 AT91_PIOC 7 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC7 periph A */
379 AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC8 periph A */
380 AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC9 periph A */
381 AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC10 periph A */
382 AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC11 periph A */
383 AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC14 periph A */
384 AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC15 periph A */
385 AT91_PIOC 16 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC16 periph A */
386 AT91_PIOC 12 AT91_PERIPH_B AT91_PINCTRL_NONE /* PC12 periph B */
387 AT91_PIOC 18 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC18 periph A */
388 AT91_PIOC 19 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC19 periph A */
389 AT91_PIOC 22 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC22 periph A */
390 AT91_PIOC 23 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC23 periph A */
391 AT91_PIOC 24 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC24 periph A */
392 AT91_PIOC 17 AT91_PERIPH_B AT91_PINCTRL_NONE /* PC17 periph B */
393 AT91_PIOC 26 AT91_PERIPH_A AT91_PINCTRL_NONE /* PC26 periph A */
394 AT91_PIOC 27 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PC27 periph A */
395 };
396 };
397
369 pioA: gpio@fffff200 { 398 pioA: gpio@fffff200 {
370 compatible = "atmel,at91rm9200-gpio"; 399 compatible = "atmel,at91rm9200-gpio";
371 reg = <0xfffff200 0x200>; 400 reg = <0xfffff200 0x200>;
@@ -547,6 +576,23 @@
547 pinctrl-0 = <&pinctrl_spi1>; 576 pinctrl-0 = <&pinctrl_spi1>;
548 status = "disabled"; 577 status = "disabled";
549 }; 578 };
579
580 pwm0: pwm@fffb8000 {
581 compatible = "atmel,at91sam9rl-pwm";
582 reg = <0xfffb8000 0x300>;
583 interrupts = <20 IRQ_TYPE_LEVEL_HIGH 4>;
584 #pwm-cells = <3>;
585 status = "disabled";
586 };
587 };
588
589 fb0: fb@0x00700000 {
590 compatible = "atmel,at91sam9263-lcdc";
591 reg = <0x00700000 0x1000>;
592 interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>;
593 pinctrl-names = "default";
594 pinctrl-0 = <&pinctrl_fb>;
595 status = "disabled";
550 }; 596 };
551 597
552 nand0: nand@40000000 { 598 nand0: nand@40000000 {
diff --git a/arch/arm/boot/dts/at91sam9263ek.dts b/arch/arm/boot/dts/at91sam9263ek.dts
index 70f835b55c0b..15009c9f2293 100644
--- a/arch/arm/boot/dts/at91sam9263ek.dts
+++ b/arch/arm/boot/dts/at91sam9263ek.dts
@@ -95,6 +95,36 @@
95 }; 95 };
96 }; 96 };
97 97
98 fb0: fb@0x00700000 {
99 display = <&display0>;
100 status = "okay";
101
102 display0: display {
103 bits-per-pixel = <16>;
104 atmel,lcdcon-backlight;
105 atmel,dmacon = <0x1>;
106 atmel,lcdcon2 = <0x80008002>;
107 atmel,guard-time = <1>;
108
109 display-timings {
110 native-mode = <&timing0>;
111 timing0: timing0 {
112 clock-frequency = <4965000>;
113 hactive = <240>;
114 vactive = <320>;
115 hback-porch = <1>;
116 hfront-porch = <33>;
117 vback-porch = <1>;
118 vfront-porch = <0>;
119 hsync-len = <5>;
120 vsync-len = <1>;
121 hsync-active = <1>;
122 vsync-active = <1>;
123 };
124 };
125 };
126 };
127
98 nand0: nand@40000000 { 128 nand0: nand@40000000 {
99 nand-bus-width = <8>; 129 nand-bus-width = <8>;
100 nand-ecc-mode = "soft"; 130 nand-ecc-mode = "soft";
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi
index c3e514837074..ef0857cb171c 100644
--- a/arch/arm/boot/dts/at91sam9g45.dtsi
+++ b/arch/arm/boot/dts/at91sam9g45.dtsi
@@ -37,6 +37,7 @@
37 i2c1 = &i2c1; 37 i2c1 = &i2c1;
38 ssc0 = &ssc0; 38 ssc0 = &ssc0;
39 ssc1 = &ssc1; 39 ssc1 = &ssc1;
40 pwm0 = &pwm0;
40 }; 41 };
41 cpus { 42 cpus {
42 #address-cells = <0>; 43 #address-cells = <0>;
@@ -143,6 +144,22 @@
143 }; 144 };
144 }; 145 };
145 146
147 i2c0 {
148 pinctrl_i2c0: i2c0-0 {
149 atmel,pins =
150 <AT91_PIOA 21 AT91_PERIPH_A AT91_PINCTRL_NONE /* PA21 periph A TWCK0 */
151 AT91_PIOA 20 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PA20 periph A TWD0 */
152 };
153 };
154
155 i2c1 {
156 pinctrl_i2c1: i2c1-0 {
157 atmel,pins =
158 <AT91_PIOB 11 AT91_PERIPH_A AT91_PINCTRL_NONE /* PB11 periph A TWCK1 */
159 AT91_PIOB 10 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PB10 periph A TWD1 */
160 };
161 };
162
146 usart0 { 163 usart0 {
147 pinctrl_usart0: usart0-0 { 164 pinctrl_usart0: usart0-0 {
148 atmel,pins = 165 atmel,pins =
@@ -425,6 +442,42 @@
425 }; 442 };
426 }; 443 };
427 444
445 fb {
446 pinctrl_fb: fb-0 {
447 atmel,pins =
448 <AT91_PIOE 0 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE0 periph A */
449 AT91_PIOE 2 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE2 periph A */
450 AT91_PIOE 3 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE3 periph A */
451 AT91_PIOE 4 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE4 periph A */
452 AT91_PIOE 5 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE5 periph A */
453 AT91_PIOE 6 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE6 periph A */
454 AT91_PIOE 7 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE7 periph A */
455 AT91_PIOE 8 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE8 periph A */
456 AT91_PIOE 9 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE9 periph A */
457 AT91_PIOE 10 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE10 periph A */
458 AT91_PIOE 11 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE11 periph A */
459 AT91_PIOE 12 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE12 periph A */
460 AT91_PIOE 13 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE13 periph A */
461 AT91_PIOE 14 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE14 periph A */
462 AT91_PIOE 15 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE15 periph A */
463 AT91_PIOE 16 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE16 periph A */
464 AT91_PIOE 17 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE17 periph A */
465 AT91_PIOE 18 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE18 periph A */
466 AT91_PIOE 19 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE19 periph A */
467 AT91_PIOE 20 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE20 periph A */
468 AT91_PIOE 21 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE21 periph A */
469 AT91_PIOE 22 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE22 periph A */
470 AT91_PIOE 23 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE23 periph A */
471 AT91_PIOE 24 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE24 periph A */
472 AT91_PIOE 25 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE25 periph A */
473 AT91_PIOE 26 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE26 periph A */
474 AT91_PIOE 27 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE27 periph A */
475 AT91_PIOE 28 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE28 periph A */
476 AT91_PIOE 29 AT91_PERIPH_A AT91_PINCTRL_NONE /* PE29 periph A */
477 AT91_PIOE 30 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* PE30 periph A */
478 };
479 };
480
428 pioA: gpio@fffff200 { 481 pioA: gpio@fffff200 {
429 compatible = "atmel,at91rm9200-gpio"; 482 compatible = "atmel,at91rm9200-gpio";
430 reg = <0xfffff200 0x200>; 483 reg = <0xfffff200 0x200>;
@@ -542,6 +595,8 @@
542 compatible = "atmel,at91sam9g10-i2c"; 595 compatible = "atmel,at91sam9g10-i2c";
543 reg = <0xfff84000 0x100>; 596 reg = <0xfff84000 0x100>;
544 interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>; 597 interrupts = <12 IRQ_TYPE_LEVEL_HIGH 6>;
598 pinctrl-names = "default";
599 pinctrl-0 = <&pinctrl_i2c0>;
545 #address-cells = <1>; 600 #address-cells = <1>;
546 #size-cells = <0>; 601 #size-cells = <0>;
547 status = "disabled"; 602 status = "disabled";
@@ -551,6 +606,8 @@
551 compatible = "atmel,at91sam9g10-i2c"; 606 compatible = "atmel,at91sam9g10-i2c";
552 reg = <0xfff88000 0x100>; 607 reg = <0xfff88000 0x100>;
553 interrupts = <13 IRQ_TYPE_LEVEL_HIGH 6>; 608 interrupts = <13 IRQ_TYPE_LEVEL_HIGH 6>;
609 pinctrl-names = "default";
610 pinctrl-0 = <&pinctrl_i2c1>;
554 #address-cells = <1>; 611 #address-cells = <1>;
555 #size-cells = <0>; 612 #size-cells = <0>;
556 status = "disabled"; 613 status = "disabled";
@@ -614,10 +671,19 @@
614 }; 671 };
615 }; 672 };
616 673
674 pwm0: pwm@fffb8000 {
675 compatible = "atmel,at91sam9rl-pwm";
676 reg = <0xfffb8000 0x300>;
677 interrupts = <19 IRQ_TYPE_LEVEL_HIGH 4>;
678 #pwm-cells = <3>;
679 status = "disabled";
680 };
681
617 mmc0: mmc@fff80000 { 682 mmc0: mmc@fff80000 {
618 compatible = "atmel,hsmci"; 683 compatible = "atmel,hsmci";
619 reg = <0xfff80000 0x600>; 684 reg = <0xfff80000 0x600>;
620 interrupts = <11 IRQ_TYPE_LEVEL_HIGH 0>; 685 interrupts = <11 IRQ_TYPE_LEVEL_HIGH 0>;
686 pinctrl-names = "default";
621 dmas = <&dma 1 AT91_DMA_CFG_PER_ID(0)>; 687 dmas = <&dma 1 AT91_DMA_CFG_PER_ID(0)>;
622 dma-names = "rxtx"; 688 dma-names = "rxtx";
623 #address-cells = <1>; 689 #address-cells = <1>;
@@ -629,6 +695,7 @@
629 compatible = "atmel,hsmci"; 695 compatible = "atmel,hsmci";
630 reg = <0xfffd0000 0x600>; 696 reg = <0xfffd0000 0x600>;
631 interrupts = <29 IRQ_TYPE_LEVEL_HIGH 0>; 697 interrupts = <29 IRQ_TYPE_LEVEL_HIGH 0>;
698 pinctrl-names = "default";
632 dmas = <&dma 1 AT91_DMA_CFG_PER_ID(13)>; 699 dmas = <&dma 1 AT91_DMA_CFG_PER_ID(13)>;
633 dma-names = "rxtx"; 700 dma-names = "rxtx";
634 #address-cells = <1>; 701 #address-cells = <1>;
@@ -727,6 +794,15 @@
727 }; 794 };
728 }; 795 };
729 796
797 fb0: fb@0x00500000 {
798 compatible = "atmel,at91sam9g45-lcdc";
799 reg = <0x00500000 0x1000>;
800 interrupts = <23 IRQ_TYPE_LEVEL_HIGH 3>;
801 pinctrl-names = "default";
802 pinctrl-0 = <&pinctrl_fb>;
803 status = "disabled";
804 };
805
730 nand0: nand@40000000 { 806 nand0: nand@40000000 {
731 compatible = "atmel,at91rm9200-nand"; 807 compatible = "atmel,at91rm9200-nand";
732 #address-cells = <1>; 808 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/at91sam9m10g45ek.dts b/arch/arm/boot/dts/at91sam9m10g45ek.dts
index a4b00e5c61c0..7ff665a8c708 100644
--- a/arch/arm/boot/dts/at91sam9m10g45ek.dts
+++ b/arch/arm/boot/dts/at91sam9m10g45ek.dts
@@ -105,6 +105,14 @@
105 AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD29 gpio WP pin pull up */ 105 AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD29 gpio WP pin pull up */
106 }; 106 };
107 }; 107 };
108
109 pwm0 {
110 pinctrl_pwm_leds: pwm-led {
111 atmel,pins =
112 <AT91_PIOD 0 AT91_PERIPH_B AT91_PINCTRL_PULL_UP /* PD0 periph B */
113 AT91_PIOD 31 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>; /* PD31 periph B */
114 };
115 };
108 }; 116 };
109 117
110 spi0: spi@fffa4000{ 118 spi0: spi@fffa4000{
@@ -121,6 +129,42 @@
121 atmel,vbus-gpio = <&pioB 19 GPIO_ACTIVE_HIGH>; 129 atmel,vbus-gpio = <&pioB 19 GPIO_ACTIVE_HIGH>;
122 status = "okay"; 130 status = "okay";
123 }; 131 };
132
133 pwm0: pwm@fffb8000 {
134 status = "okay";
135
136 pinctrl-names = "default";
137 pinctrl-0 = <&pinctrl_pwm_leds>;
138 };
139 };
140
141 fb0: fb@0x00500000 {
142 display = <&display0>;
143 status = "okay";
144
145 display0: display {
146 bits-per-pixel = <32>;
147 atmel,lcdcon-backlight;
148 atmel,dmacon = <0x1>;
149 atmel,lcdcon2 = <0x80008002>;
150 atmel,guard-time = <9>;
151 atmel,lcd-wiring-mode = "RGB";
152
153 display-timings {
154 native-mode = <&timing0>;
155 timing0: timing0 {
156 clock-frequency = <9000000>;
157 hactive = <480>;
158 vactive = <272>;
159 hback-porch = <1>;
160 hfront-porch = <1>;
161 vback-porch = <40>;
162 vfront-porch = <1>;
163 hsync-len = <45>;
164 vsync-len = <1>;
165 };
166 };
167 };
124 }; 168 };
125 169
126 nand0: nand@40000000 { 170 nand0: nand@40000000 {
@@ -165,16 +209,22 @@
165 gpios = <&pioD 30 GPIO_ACTIVE_HIGH>; 209 gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
166 linux,default-trigger = "heartbeat"; 210 linux,default-trigger = "heartbeat";
167 }; 211 };
212 };
213
214 pwmleds {
215 compatible = "pwm-leds";
168 216
169 d6 { 217 d6 {
170 label = "d6"; 218 label = "d6";
171 gpios = <&pioD 0 GPIO_ACTIVE_LOW>; 219 pwms = <&pwm0 3 5000 0>;
220 max-brightness = <255>;
172 linux,default-trigger = "nand-disk"; 221 linux,default-trigger = "nand-disk";
173 }; 222 };
174 223
175 d7 { 224 d7 {
176 label = "d7"; 225 label = "d7";
177 gpios = <&pioD 31 GPIO_ACTIVE_LOW>; 226 pwms = <&pwm0 1 5000 0>;
227 max-brightness = <255>;
178 linux,default-trigger = "mmc0"; 228 linux,default-trigger = "mmc0";
179 }; 229 };
180 }; 230 };
diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi
index 6224f9fe2f2b..7248270a3ea6 100644
--- a/arch/arm/boot/dts/at91sam9n12.dtsi
+++ b/arch/arm/boot/dts/at91sam9n12.dtsi
@@ -33,6 +33,7 @@
33 i2c0 = &i2c0; 33 i2c0 = &i2c0;
34 i2c1 = &i2c1; 34 i2c1 = &i2c1;
35 ssc0 = &ssc0; 35 ssc0 = &ssc0;
36 pwm0 = &pwm0;
36 }; 37 };
37 cpus { 38 cpus {
38 #address-cells = <0>; 39 #address-cells = <0>;
@@ -542,6 +543,14 @@
542 reg = <0xfffffe40 0x10>; 543 reg = <0xfffffe40 0x10>;
543 status = "disabled"; 544 status = "disabled";
544 }; 545 };
546
547 pwm0: pwm@f8034000 {
548 compatible = "atmel,at91sam9rl-pwm";
549 reg = <0xf8034000 0x300>;
550 interrupts = <18 IRQ_TYPE_LEVEL_HIGH 4>;
551 #pwm-cells = <3>;
552 status = "disabled";
553 };
545 }; 554 };
546 555
547 nand0: nand@40000000 { 556 nand0: nand@40000000 {
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 40267a116c3c..6e5e9cfc3c49 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -35,6 +35,7 @@
35 i2c1 = &i2c1; 35 i2c1 = &i2c1;
36 i2c2 = &i2c2; 36 i2c2 = &i2c2;
37 ssc0 = &ssc0; 37 ssc0 = &ssc0;
38 pwm0 = &pwm0;
38 }; 39 };
39 cpus { 40 cpus {
40 #address-cells = <0>; 41 #address-cells = <0>;
@@ -762,6 +763,14 @@
762 interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; 763 interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
763 status = "disabled"; 764 status = "disabled";
764 }; 765 };
766
767 pwm0: pwm@f8034000 {
768 compatible = "atmel,at91sam9rl-pwm";
769 reg = <0xf8034000 0x300>;
770 interrupts = <18 IRQ_TYPE_LEVEL_HIGH 4>;
771 #pwm-cells = <3>;
772 status = "disabled";
773 };
765 }; 774 };
766 775
767 nand0: nand@40000000 { 776 nand0: nand@40000000 {
diff --git a/arch/arm/boot/dts/atlas6.dtsi b/arch/arm/boot/dts/atlas6.dtsi
index 978bab4991df..f8674bcc4489 100644
--- a/arch/arm/boot/dts/atlas6.dtsi
+++ b/arch/arm/boot/dts/atlas6.dtsi
@@ -27,6 +27,15 @@
27 timebase-frequency = <0>; 27 timebase-frequency = <0>;
28 bus-frequency = <0>; 28 bus-frequency = <0>;
29 clock-frequency = <0>; 29 clock-frequency = <0>;
30 clocks = <&clks 12>;
31 operating-points = <
32 /* kHz uV */
33 200000 1025000
34 400000 1025000
35 600000 1050000
36 800000 1100000
37 >;
38 clock-latency = <150000>;
30 }; 39 };
31 }; 40 };
32 41
@@ -69,6 +78,7 @@
69 cphifbg@88030000 { 78 cphifbg@88030000 {
70 compatible = "sirf,prima2-cphifbg"; 79 compatible = "sirf,prima2-cphifbg";
71 reg = <0x88030000 0x1000>; 80 reg = <0x88030000 0x1000>;
81 clocks = <&clks 42>;
72 }; 82 };
73 }; 83 };
74 84
@@ -546,6 +556,12 @@
546 sirf,function = "usp1"; 556 sirf,function = "usp1";
547 }; 557 };
548 }; 558 };
559 usp1_uart_nostreamctrl_pins_a: usp1@1 {
560 usp1 {
561 sirf,pins = "usp1_uart_nostreamctrl_grp";
562 sirf,function = "usp1_uart_nostreamctrl";
563 };
564 };
549 usb0_upli_drvbus_pins_a: usb0_upli_drvbus@0 { 565 usb0_upli_drvbus_pins_a: usb0_upli_drvbus@0 {
550 usb0_upli_drvbus { 566 usb0_upli_drvbus {
551 sirf,pins = "usb0_upli_drvbusgrp"; 567 sirf,pins = "usb0_upli_drvbusgrp";
@@ -636,6 +652,7 @@
636 reg = <0x56100000 0x100000>; 652 reg = <0x56100000 0x100000>;
637 interrupts = <38>; 653 interrupts = <38>;
638 status = "disabled"; 654 status = "disabled";
655 bus-width = <4>;
639 clocks = <&clks 36>; 656 clocks = <&clks 36>;
640 }; 657 };
641 658
@@ -645,6 +662,7 @@
645 reg = <0x56200000 0x100000>; 662 reg = <0x56200000 0x100000>;
646 interrupts = <23>; 663 interrupts = <23>;
647 status = "disabled"; 664 status = "disabled";
665 bus-width = <4>;
648 clocks = <&clks 37>; 666 clocks = <&clks 37>;
649 }; 667 };
650 668
@@ -654,6 +672,7 @@
654 reg = <0x56300000 0x100000>; 672 reg = <0x56300000 0x100000>;
655 interrupts = <23>; 673 interrupts = <23>;
656 status = "disabled"; 674 status = "disabled";
675 bus-width = <4>;
657 clocks = <&clks 37>; 676 clocks = <&clks 37>;
658 }; 677 };
659 678
@@ -663,6 +682,7 @@
663 reg = <0x56500000 0x100000>; 682 reg = <0x56500000 0x100000>;
664 interrupts = <39>; 683 interrupts = <39>;
665 status = "disabled"; 684 status = "disabled";
685 bus-width = <4>;
666 clocks = <&clks 38>; 686 clocks = <&clks 38>;
667 }; 687 };
668 688
@@ -697,6 +717,12 @@
697 interrupts = <52 53 54>; 717 interrupts = <52 53 54>;
698 }; 718 };
699 719
720 minigpsrtc@2000 {
721 compatible = "sirf,prima2-minigpsrtc";
722 reg = <0x2000 0x1000>;
723 interrupts = <54>;
724 };
725
700 pwrc@3000 { 726 pwrc@3000 {
701 compatible = "sirf,prima2-pwrc"; 727 compatible = "sirf,prima2-pwrc";
702 reg = <0x3000 0x1000>; 728 reg = <0x3000 0x1000>;
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
index 6e9deb786a7d..2a3b1c1313a0 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
@@ -23,10 +23,15 @@
23 23
24&gpio { 24&gpio {
25 pinctrl-names = "default"; 25 pinctrl-names = "default";
26 pinctrl-0 = <&alt0 &alt3>; 26 pinctrl-0 = <&gpioout &alt0 &alt3>;
27
28 gpioout: gpioout {
29 brcm,pins = <6>;
30 brcm,function = <1>; /* GPIO out */
31 };
27 32
28 alt0: alt0 { 33 alt0: alt0 {
29 brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11 14 15 40 45>; 34 brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>;
30 brcm,function = <4>; /* alt0 */ 35 brcm,function = <4>; /* alt0 */
31 }; 36 };
32 37
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
index aa537ed13f0a..b021c96d3ba1 100644
--- a/arch/arm/boot/dts/bcm2835.dtsi
+++ b/arch/arm/boot/dts/bcm2835.dtsi
@@ -107,6 +107,12 @@
107 clocks = <&clk_mmc>; 107 clocks = <&clk_mmc>;
108 status = "disabled"; 108 status = "disabled";
109 }; 109 };
110
111 usb {
112 compatible = "brcm,bcm2835-usb";
113 reg = <0x7e980000 0x10000>;
114 interrupts = <1 9>;
115 };
110 }; 116 };
111 117
112 clocks { 118 clocks {
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index 588ce58a2959..1e11e5a5f723 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -101,6 +101,9 @@
101 pinctrl-names = "default"; 101 pinctrl-names = "default";
102 pinctrl-0 = <&mii_pins>; 102 pinctrl-0 = <&mii_pins>;
103 }; 103 };
104 gpio: gpio@1e26000 {
105 status = "okay";
106 };
104 }; 107 };
105 nand_cs3@62000000 { 108 nand_cs3@62000000 {
106 status = "okay"; 109 status = "okay";
diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index 8d17346f9702..b695548dbb4e 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -8,6 +8,7 @@
8 * option) any later version. 8 * option) any later version.
9 */ 9 */
10#include "skeleton.dtsi" 10#include "skeleton.dtsi"
11#include <dt-bindings/interrupt-controller/irq.h>
11 12
12/ { 13/ {
13 arm { 14 arm {
@@ -256,6 +257,19 @@
256 36 257 36
257 >; 258 >;
258 }; 259 };
260 gpio: gpio@1e26000 {
261 compatible = "ti,dm6441-gpio";
262 gpio-controller;
263 reg = <0x226000 0x1000>;
264 interrupts = <42 IRQ_TYPE_EDGE_BOTH
265 43 IRQ_TYPE_EDGE_BOTH 44 IRQ_TYPE_EDGE_BOTH
266 45 IRQ_TYPE_EDGE_BOTH 46 IRQ_TYPE_EDGE_BOTH
267 47 IRQ_TYPE_EDGE_BOTH 48 IRQ_TYPE_EDGE_BOTH
268 49 IRQ_TYPE_EDGE_BOTH 50 IRQ_TYPE_EDGE_BOTH>;
269 ti,ngpio = <144>;
270 ti,davinci-gpio-unbanked = <0>;
271 status = "disabled";
272 };
259 }; 273 };
260 nand_cs3@62000000 { 274 nand_cs3@62000000 {
261 compatible = "ti,davinci-nand"; 275 compatible = "ti,davinci-nand";
diff --git a/arch/arm/boot/dts/dove-cubox.dts b/arch/arm/boot/dts/dove-cubox.dts
index 8349a248ecea..7a70f4ca502a 100644
--- a/arch/arm/boot/dts/dove-cubox.dts
+++ b/arch/arm/boot/dts/dove-cubox.dts
@@ -23,7 +23,7 @@
23 power { 23 power {
24 label = "Power"; 24 label = "Power";
25 gpios = <&gpio0 18 1>; 25 gpios = <&gpio0 18 1>;
26 linux,default-trigger = "default-on"; 26 default-state = "keep";
27 }; 27 };
28 }; 28 };
29 29
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi
index 113a8bc7bee7..8de1031233ae 100644
--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -107,51 +107,29 @@
107 0xffffe000 MBUS_ID(0x03, 0x01) 0 0x0000800 /* CESA SRAM 2k */ 107 0xffffe000 MBUS_ID(0x03, 0x01) 0 0x0000800 /* CESA SRAM 2k */
108 0xfffff000 MBUS_ID(0x0d, 0x00) 0 0x0000800>; /* PMU SRAM 2k */ 108 0xfffff000 MBUS_ID(0x0d, 0x00) 0 0x0000800>; /* PMU SRAM 2k */
109 109
110 mbusc: mbus-ctrl@20000 { 110 spi0: spi-ctrl@10600 {
111 compatible = "marvell,mbus-controller"; 111 compatible = "marvell,orion-spi";
112 reg = <0x20000 0x80>, <0x800100 0x8>; 112 #address-cells = <1>;
113 }; 113 #size-cells = <0>;
114 114 cell-index = <0>;
115 timer: timer@20300 { 115 interrupts = <6>;
116 compatible = "marvell,orion-timer"; 116 reg = <0x10600 0x28>;
117 reg = <0x20300 0x20>;
118 interrupt-parent = <&bridge_intc>;
119 interrupts = <1>, <2>;
120 clocks = <&core_clk 0>; 117 clocks = <&core_clk 0>;
118 pinctrl-0 = <&pmx_spi0>;
119 pinctrl-names = "default";
120 status = "disabled";
121 }; 121 };
122 122
123 intc: main-interrupt-ctrl@20200 { 123 i2c0: i2c-ctrl@11000 {
124 compatible = "marvell,orion-intc"; 124 compatible = "marvell,mv64xxx-i2c";
125 interrupt-controller; 125 reg = <0x11000 0x20>;
126 #interrupt-cells = <1>; 126 #address-cells = <1>;
127 reg = <0x20200 0x10>, <0x20210 0x10>; 127 #size-cells = <0>;
128 }; 128 interrupts = <11>;
129 129 clock-frequency = <400000>;
130 bridge_intc: bridge-interrupt-ctrl@20110 { 130 timeout-ms = <1000>;
131 compatible = "marvell,orion-bridge-intc";
132 interrupt-controller;
133 #interrupt-cells = <1>;
134 reg = <0x20110 0x8>;
135 interrupts = <0>;
136 marvell,#interrupts = <5>;
137 };
138
139 core_clk: core-clocks@d0214 {
140 compatible = "marvell,dove-core-clock";
141 reg = <0xd0214 0x4>;
142 #clock-cells = <1>;
143 };
144
145 gate_clk: clock-gating-ctrl@d0038 {
146 compatible = "marvell,dove-gating-clock";
147 reg = <0xd0038 0x4>;
148 clocks = <&core_clk 0>; 131 clocks = <&core_clk 0>;
149 #clock-cells = <1>; 132 status = "disabled";
150 };
151
152 thermal: thermal-diode@d001c {
153 compatible = "marvell,dove-thermal";
154 reg = <0xd001c 0x0c>, <0xd005c 0x08>;
155 }; 133 };
156 134
157 uart0: serial@12000 { 135 uart0: serial@12000 {
@@ -192,34 +170,224 @@
192 status = "disabled"; 170 status = "disabled";
193 }; 171 };
194 172
195 gpio0: gpio-ctrl@d0400 { 173 spi1: spi-ctrl@14600 {
196 compatible = "marvell,orion-gpio"; 174 compatible = "marvell,orion-spi";
197 #gpio-cells = <2>; 175 #address-cells = <1>;
198 gpio-controller; 176 #size-cells = <0>;
199 reg = <0xd0400 0x20>; 177 cell-index = <1>;
200 ngpios = <32>; 178 interrupts = <5>;
179 reg = <0x14600 0x28>;
180 clocks = <&core_clk 0>;
181 status = "disabled";
182 };
183
184 mbusc: mbus-ctrl@20000 {
185 compatible = "marvell,mbus-controller";
186 reg = <0x20000 0x80>, <0x800100 0x8>;
187 };
188
189 bridge_intc: bridge-interrupt-ctrl@20110 {
190 compatible = "marvell,orion-bridge-intc";
201 interrupt-controller; 191 interrupt-controller;
202 #interrupt-cells = <2>; 192 #interrupt-cells = <1>;
203 interrupts = <12>, <13>, <14>, <60>; 193 reg = <0x20110 0x8>;
194 interrupts = <0>;
195 marvell,#interrupts = <5>;
204 }; 196 };
205 197
206 gpio1: gpio-ctrl@d0420 { 198 intc: main-interrupt-ctrl@20200 {
207 compatible = "marvell,orion-gpio"; 199 compatible = "marvell,orion-intc";
208 #gpio-cells = <2>;
209 gpio-controller;
210 reg = <0xd0420 0x20>;
211 ngpios = <32>;
212 interrupt-controller; 200 interrupt-controller;
213 #interrupt-cells = <2>; 201 #interrupt-cells = <1>;
214 interrupts = <61>; 202 reg = <0x20200 0x10>, <0x20210 0x10>;
215 }; 203 };
216 204
217 gpio2: gpio-ctrl@e8400 { 205 timer: timer@20300 {
218 compatible = "marvell,orion-gpio"; 206 compatible = "marvell,orion-timer";
219 #gpio-cells = <2>; 207 reg = <0x20300 0x20>;
220 gpio-controller; 208 interrupt-parent = <&bridge_intc>;
221 reg = <0xe8400 0x0c>; 209 interrupts = <1>, <2>;
222 ngpios = <8>; 210 clocks = <&core_clk 0>;
211 };
212
213 crypto: crypto-engine@30000 {
214 compatible = "marvell,orion-crypto";
215 reg = <0x30000 0x10000>,
216 <0xffffe000 0x800>;
217 reg-names = "regs", "sram";
218 interrupts = <31>;
219 clocks = <&gate_clk 15>;
220 status = "okay";
221 };
222
223 ehci0: usb-host@50000 {
224 compatible = "marvell,orion-ehci";
225 reg = <0x50000 0x1000>;
226 interrupts = <24>;
227 clocks = <&gate_clk 0>;
228 status = "okay";
229 };
230
231 ehci1: usb-host@51000 {
232 compatible = "marvell,orion-ehci";
233 reg = <0x51000 0x1000>;
234 interrupts = <25>;
235 clocks = <&gate_clk 1>;
236 status = "okay";
237 };
238
239 xor0: dma-engine@60800 {
240 compatible = "marvell,orion-xor";
241 reg = <0x60800 0x100
242 0x60a00 0x100>;
243 clocks = <&gate_clk 23>;
244 status = "okay";
245
246 channel0 {
247 interrupts = <39>;
248 dmacap,memcpy;
249 dmacap,xor;
250 };
251
252 channel1 {
253 interrupts = <40>;
254 dmacap,memcpy;
255 dmacap,xor;
256 };
257 };
258
259 xor1: dma-engine@60900 {
260 compatible = "marvell,orion-xor";
261 reg = <0x60900 0x100
262 0x60b00 0x100>;
263 clocks = <&gate_clk 24>;
264 status = "okay";
265
266 channel0 {
267 interrupts = <42>;
268 dmacap,memcpy;
269 dmacap,xor;
270 };
271
272 channel1 {
273 interrupts = <43>;
274 dmacap,memcpy;
275 dmacap,xor;
276 };
277 };
278
279 sdio1: sdio-host@90000 {
280 compatible = "marvell,dove-sdhci";
281 reg = <0x90000 0x100>;
282 interrupts = <36>, <38>;
283 clocks = <&gate_clk 9>;
284 pinctrl-0 = <&pmx_sdio1>;
285 pinctrl-names = "default";
286 status = "disabled";
287 };
288
289 eth: ethernet-ctrl@72000 {
290 compatible = "marvell,orion-eth";
291 #address-cells = <1>;
292 #size-cells = <0>;
293 reg = <0x72000 0x4000>;
294 clocks = <&gate_clk 2>;
295 marvell,tx-checksum-limit = <1600>;
296 status = "disabled";
297
298 ethernet-port@0 {
299 device_type = "network";
300 compatible = "marvell,orion-eth-port";
301 reg = <0>;
302 interrupts = <29>;
303 /* overwrite MAC address in bootloader */
304 local-mac-address = [00 00 00 00 00 00];
305 phy-handle = <&ethphy>;
306 };
307 };
308
309 mdio: mdio-bus@72004 {
310 compatible = "marvell,orion-mdio";
311 #address-cells = <1>;
312 #size-cells = <0>;
313 reg = <0x72004 0x84>;
314 interrupts = <30>;
315 clocks = <&gate_clk 2>;
316 status = "disabled";
317
318 ethphy: ethernet-phy {
319 device_type = "ethernet-phy";
320 /* set phy address in board file */
321 };
322 };
323
324 sdio0: sdio-host@92000 {
325 compatible = "marvell,dove-sdhci";
326 reg = <0x92000 0x100>;
327 interrupts = <35>, <37>;
328 clocks = <&gate_clk 8>;
329 pinctrl-0 = <&pmx_sdio0>;
330 pinctrl-names = "default";
331 status = "disabled";
332 };
333
334 sata0: sata-host@a0000 {
335 compatible = "marvell,orion-sata";
336 reg = <0xa0000 0x2400>;
337 interrupts = <62>;
338 clocks = <&gate_clk 3>;
339 phys = <&sata_phy0>;
340 phy-names = "port0";
341 nr-ports = <1>;
342 status = "disabled";
343 };
344
345 sata_phy0: sata-phy@a2000 {
346 compatible = "marvell,mvebu-sata-phy";
347 reg = <0xa2000 0x0334>;
348 clocks = <&gate_clk 3>;
349 clock-names = "sata";
350 #phy-cells = <0>;
351 status = "ok";
352 };
353
354 audio0: audio-controller@b0000 {
355 compatible = "marvell,dove-audio";
356 reg = <0xb0000 0x2210>;
357 interrupts = <19>, <20>;
358 clocks = <&gate_clk 12>;
359 clock-names = "internal";
360 status = "disabled";
361 };
362
363 audio1: audio-controller@b4000 {
364 compatible = "marvell,dove-audio";
365 reg = <0xb4000 0x2210>;
366 interrupts = <21>, <22>;
367 clocks = <&gate_clk 13>;
368 clock-names = "internal";
369 status = "disabled";
370 };
371
372 thermal: thermal-diode@d001c {
373 compatible = "marvell,dove-thermal";
374 reg = <0xd001c 0x0c>, <0xd005c 0x08>;
375 };
376
377 gate_clk: clock-gating-ctrl@d0038 {
378 compatible = "marvell,dove-gating-clock";
379 reg = <0xd0038 0x4>;
380 clocks = <&core_clk 0>;
381 #clock-cells = <1>;
382 };
383
384 pmu_intc: pmu-interrupt-ctrl@d0050 {
385 compatible = "marvell,dove-pmu-intc";
386 interrupt-controller;
387 #interrupt-cells = <1>;
388 reg = <0xd0050 0x8>;
389 interrupts = <33>;
390 marvell,#interrupts = <7>;
223 }; 391 };
224 392
225 pinctrl: pin-ctrl@d0200 { 393 pinctrl: pin-ctrl@d0200 {
@@ -413,193 +581,47 @@
413 }; 581 };
414 }; 582 };
415 583
416 spi0: spi-ctrl@10600 { 584 core_clk: core-clocks@d0214 {
417 compatible = "marvell,orion-spi"; 585 compatible = "marvell,dove-core-clock";
418 #address-cells = <1>; 586 reg = <0xd0214 0x4>;
419 #size-cells = <0>; 587 #clock-cells = <1>;
420 cell-index = <0>;
421 interrupts = <6>;
422 reg = <0x10600 0x28>;
423 clocks = <&core_clk 0>;
424 pinctrl-0 = <&pmx_spi0>;
425 pinctrl-names = "default";
426 status = "disabled";
427 };
428
429 spi1: spi-ctrl@14600 {
430 compatible = "marvell,orion-spi";
431 #address-cells = <1>;
432 #size-cells = <0>;
433 cell-index = <1>;
434 interrupts = <5>;
435 reg = <0x14600 0x28>;
436 clocks = <&core_clk 0>;
437 status = "disabled";
438 };
439
440 i2c0: i2c-ctrl@11000 {
441 compatible = "marvell,mv64xxx-i2c";
442 reg = <0x11000 0x20>;
443 #address-cells = <1>;
444 #size-cells = <0>;
445 interrupts = <11>;
446 clock-frequency = <400000>;
447 timeout-ms = <1000>;
448 clocks = <&core_clk 0>;
449 status = "disabled";
450 };
451
452 ehci0: usb-host@50000 {
453 compatible = "marvell,orion-ehci";
454 reg = <0x50000 0x1000>;
455 interrupts = <24>;
456 clocks = <&gate_clk 0>;
457 status = "okay";
458 };
459
460 ehci1: usb-host@51000 {
461 compatible = "marvell,orion-ehci";
462 reg = <0x51000 0x1000>;
463 interrupts = <25>;
464 clocks = <&gate_clk 1>;
465 status = "okay";
466 };
467
468 sdio0: sdio-host@92000 {
469 compatible = "marvell,dove-sdhci";
470 reg = <0x92000 0x100>;
471 interrupts = <35>, <37>;
472 clocks = <&gate_clk 8>;
473 pinctrl-0 = <&pmx_sdio0>;
474 pinctrl-names = "default";
475 status = "disabled";
476 }; 588 };
477 589
478 sdio1: sdio-host@90000 { 590 gpio0: gpio-ctrl@d0400 {
479 compatible = "marvell,dove-sdhci"; 591 compatible = "marvell,orion-gpio";
480 reg = <0x90000 0x100>; 592 #gpio-cells = <2>;
481 interrupts = <36>, <38>; 593 gpio-controller;
482 clocks = <&gate_clk 9>; 594 reg = <0xd0400 0x20>;
483 pinctrl-0 = <&pmx_sdio1>; 595 ngpios = <32>;
484 pinctrl-names = "default"; 596 interrupt-controller;
485 status = "disabled"; 597 #interrupt-cells = <2>;
598 interrupts = <12>, <13>, <14>, <60>;
486 }; 599 };
487 600
488 sata0: sata-host@a0000 { 601 gpio1: gpio-ctrl@d0420 {
489 compatible = "marvell,orion-sata"; 602 compatible = "marvell,orion-gpio";
490 reg = <0xa0000 0x2400>; 603 #gpio-cells = <2>;
491 interrupts = <62>; 604 gpio-controller;
492 clocks = <&gate_clk 3>; 605 reg = <0xd0420 0x20>;
493 nr-ports = <1>; 606 ngpios = <32>;
494 status = "disabled"; 607 interrupt-controller;
608 #interrupt-cells = <2>;
609 interrupts = <61>;
495 }; 610 };
496 611
497 rtc: real-time-clock@d8500 { 612 rtc: real-time-clock@d8500 {
498 compatible = "marvell,orion-rtc"; 613 compatible = "marvell,orion-rtc";
499 reg = <0xd8500 0x20>; 614 reg = <0xd8500 0x20>;
615 interrupt-parent = <&pmu_intc>;
616 interrupts = <5>;
500 }; 617 };
501 618
502 crypto: crypto-engine@30000 { 619 gpio2: gpio-ctrl@e8400 {
503 compatible = "marvell,orion-crypto"; 620 compatible = "marvell,orion-gpio";
504 reg = <0x30000 0x10000>, 621 #gpio-cells = <2>;
505 <0xffffe000 0x800>; 622 gpio-controller;
506 reg-names = "regs", "sram"; 623 reg = <0xe8400 0x0c>;
507 interrupts = <31>; 624 ngpios = <8>;
508 clocks = <&gate_clk 15>;
509 status = "okay";
510 };
511
512 xor0: dma-engine@60800 {
513 compatible = "marvell,orion-xor";
514 reg = <0x60800 0x100
515 0x60a00 0x100>;
516 clocks = <&gate_clk 23>;
517 status = "okay";
518
519 channel0 {
520 interrupts = <39>;
521 dmacap,memcpy;
522 dmacap,xor;
523 };
524
525 channel1 {
526 interrupts = <40>;
527 dmacap,memcpy;
528 dmacap,xor;
529 };
530 };
531
532 xor1: dma-engine@60900 {
533 compatible = "marvell,orion-xor";
534 reg = <0x60900 0x100
535 0x60b00 0x100>;
536 clocks = <&gate_clk 24>;
537 status = "okay";
538
539 channel0 {
540 interrupts = <42>;
541 dmacap,memcpy;
542 dmacap,xor;
543 };
544
545 channel1 {
546 interrupts = <43>;
547 dmacap,memcpy;
548 dmacap,xor;
549 };
550 };
551
552 mdio: mdio-bus@72004 {
553 compatible = "marvell,orion-mdio";
554 #address-cells = <1>;
555 #size-cells = <0>;
556 reg = <0x72004 0x84>;
557 interrupts = <30>;
558 clocks = <&gate_clk 2>;
559 status = "disabled";
560
561 ethphy: ethernet-phy {
562 device-type = "ethernet-phy";
563 /* set phy address in board file */
564 };
565 };
566
567 eth: ethernet-ctrl@72000 {
568 compatible = "marvell,orion-eth";
569 #address-cells = <1>;
570 #size-cells = <0>;
571 reg = <0x72000 0x4000>;
572 clocks = <&gate_clk 2>;
573 marvell,tx-checksum-limit = <1600>;
574 status = "disabled";
575
576 ethernet-port@0 {
577 device_type = "network";
578 compatible = "marvell,orion-eth-port";
579 reg = <0>;
580 interrupts = <29>;
581 /* overwrite MAC address in bootloader */
582 local-mac-address = [00 00 00 00 00 00];
583 phy-handle = <&ethphy>;
584 };
585 };
586
587 audio0: audio-controller@b0000 {
588 compatible = "marvell,dove-audio";
589 reg = <0xb0000 0x2210>;
590 interrupts = <19>, <20>;
591 clocks = <&gate_clk 12>;
592 clock-names = "internal";
593 status = "disabled";
594 };
595
596 audio1: audio-controller@b4000 {
597 compatible = "marvell,dove-audio";
598 reg = <0xb4000 0x2210>;
599 interrupts = <21>, <22>;
600 clocks = <&gate_clk 13>;
601 clock-names = "internal";
602 status = "disabled";
603 }; 625 };
604 }; 626 };
605 }; 627 };
diff --git a/arch/arm/boot/dts/emev2-kzm9d.dts b/arch/arm/boot/dts/emev2-kzm9d.dts
index 861aa7d6fc7d..50ccd151091e 100644
--- a/arch/arm/boot/dts/emev2-kzm9d.dts
+++ b/arch/arm/boot/dts/emev2-kzm9d.dts
@@ -9,7 +9,10 @@
9 */ 9 */
10/dts-v1/; 10/dts-v1/;
11 11
12/include/ "emev2.dtsi" 12#include "emev2.dtsi"
13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/input/input.h>
15#include <dt-bindings/interrupt-controller/irq.h>
13 16
14/ { 17/ {
15 model = "EMEV2 KZM9D Board"; 18 model = "EMEV2 KZM9D Board";
@@ -47,11 +50,46 @@
47 reg = <0x20000000 0x10000>; 50 reg = <0x20000000 0x10000>;
48 phy-mode = "mii"; 51 phy-mode = "mii";
49 interrupt-parent = <&gpio0>; 52 interrupt-parent = <&gpio0>;
50 interrupts = <1 1>; /* active high */ 53 interrupts = <1 IRQ_TYPE_EDGE_RISING>;
51 reg-io-width = <4>; 54 reg-io-width = <4>;
52 smsc,irq-active-high; 55 smsc,irq-active-high;
53 smsc,irq-push-pull; 56 smsc,irq-push-pull;
54 vddvario-supply = <&reg_1p8v>; 57 vddvario-supply = <&reg_1p8v>;
55 vdd33a-supply = <&reg_3p3v>; 58 vdd33a-supply = <&reg_3p3v>;
56 }; 59 };
60
61 gpio_keys {
62 compatible = "gpio-keys";
63 #address-cells = <1>;
64 #size-cells = <0>;
65
66 button@1 {
67 debounce_interval = <50>;
68 wakeup = <1>;
69 label = "DSW2-1";
70 linux,code = <KEY_1>;
71 gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
72 };
73 button@2 {
74 debounce_interval = <50>;
75 wakeup = <1>;
76 label = "DSW2-2";
77 linux,code = <KEY_2>;
78 gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
79 };
80 button@3 {
81 debounce_interval = <50>;
82 wakeup = <1>;
83 label = "DSW2-3";
84 linux,code = <KEY_3>;
85 gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
86 };
87 button@4 {
88 debounce_interval = <50>;
89 wakeup = <1>;
90 label = "DSW2-4";
91 linux,code = <KEY_4>;
92 gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
93 };
94 };
57}; 95};
diff --git a/arch/arm/boot/dts/emev2.dtsi b/arch/arm/boot/dts/emev2.dtsi
index 9063a4434d6a..e37985fa10e2 100644
--- a/arch/arm/boot/dts/emev2.dtsi
+++ b/arch/arm/boot/dts/emev2.dtsi
@@ -8,7 +8,8 @@
8 * kind, whether express or implied. 8 * kind, whether express or implied.
9 */ 9 */
10 10
11/include/ "skeleton.dtsi" 11#include "skeleton.dtsi"
12#include <dt-bindings/interrupt-controller/irq.h>
12 13
13/ { 14/ {
14 compatible = "renesas,emev2"; 15 compatible = "renesas,emev2";
@@ -48,44 +49,129 @@
48 49
49 pmu { 50 pmu {
50 compatible = "arm,cortex-a9-pmu"; 51 compatible = "arm,cortex-a9-pmu";
51 interrupts = <0 120 4>, 52 interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>,
52 <0 121 4>; 53 <0 121 IRQ_TYPE_LEVEL_HIGH>;
54 };
55
56 smu@e0110000 {
57 compatible = "renesas,emev2-smu";
58 reg = <0xe0110000 0x10000>;
59 #address-cells = <2>;
60 #size-cells = <0>;
61
62 c32ki: c32ki {
63 compatible = "fixed-clock";
64 clock-frequency = <32768>;
65 #clock-cells = <0>;
66 };
67 pll3_fo: pll3_fo {
68 compatible = "fixed-factor-clock";
69 clocks = <&c32ki>;
70 clock-div = <1>;
71 clock-mult = <7000>;
72 #clock-cells = <0>;
73 };
74 usia_u0_sclkdiv: usia_u0_sclkdiv {
75 compatible = "renesas,emev2-smu-clkdiv";
76 reg = <0x610 0>;
77 clocks = <&pll3_fo>;
78 #clock-cells = <0>;
79 };
80 usib_u1_sclkdiv: usib_u1_sclkdiv {
81 compatible = "renesas,emev2-smu-clkdiv";
82 reg = <0x65c 0>;
83 clocks = <&pll3_fo>;
84 #clock-cells = <0>;
85 };
86 usib_u2_sclkdiv: usib_u2_sclkdiv {
87 compatible = "renesas,emev2-smu-clkdiv";
88 reg = <0x65c 16>;
89 clocks = <&pll3_fo>;
90 #clock-cells = <0>;
91 };
92 usib_u3_sclkdiv: usib_u3_sclkdiv {
93 compatible = "renesas,emev2-smu-clkdiv";
94 reg = <0x660 0>;
95 clocks = <&pll3_fo>;
96 #clock-cells = <0>;
97 };
98 usia_u0_sclk: usia_u0_sclk {
99 compatible = "renesas,emev2-smu-gclk";
100 reg = <0x4a0 1>;
101 clocks = <&usia_u0_sclkdiv>;
102 #clock-cells = <0>;
103 };
104 usib_u1_sclk: usib_u1_sclk {
105 compatible = "renesas,emev2-smu-gclk";
106 reg = <0x4b8 1>;
107 clocks = <&usib_u1_sclkdiv>;
108 #clock-cells = <0>;
109 };
110 usib_u2_sclk: usib_u2_sclk {
111 compatible = "renesas,emev2-smu-gclk";
112 reg = <0x4bc 1>;
113 clocks = <&usib_u2_sclkdiv>;
114 #clock-cells = <0>;
115 };
116 usib_u3_sclk: usib_u3_sclk {
117 compatible = "renesas,emev2-smu-gclk";
118 reg = <0x4c0 1>;
119 clocks = <&usib_u3_sclkdiv>;
120 #clock-cells = <0>;
121 };
122 sti_sclk: sti_sclk {
123 compatible = "renesas,emev2-smu-gclk";
124 reg = <0x528 1>;
125 clocks = <&c32ki>;
126 #clock-cells = <0>;
127 };
53 }; 128 };
54 129
55 sti@e0180000 { 130 sti@e0180000 {
56 compatible = "renesas,em-sti"; 131 compatible = "renesas,em-sti";
57 reg = <0xe0180000 0x54>; 132 reg = <0xe0180000 0x54>;
58 interrupts = <0 125 0>; 133 interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>;
134 clocks = <&sti_sclk>;
135 clock-names = "sclk";
59 }; 136 };
60 137
61 uart@e1020000 { 138 uart@e1020000 {
62 compatible = "renesas,em-uart"; 139 compatible = "renesas,em-uart";
63 reg = <0xe1020000 0x38>; 140 reg = <0xe1020000 0x38>;
64 interrupts = <0 8 0>; 141 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
142 clocks = <&usia_u0_sclk>;
143 clock-names = "sclk";
65 }; 144 };
66 145
67 uart@e1030000 { 146 uart@e1030000 {
68 compatible = "renesas,em-uart"; 147 compatible = "renesas,em-uart";
69 reg = <0xe1030000 0x38>; 148 reg = <0xe1030000 0x38>;
70 interrupts = <0 9 0>; 149 interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
150 clocks = <&usib_u1_sclk>;
151 clock-names = "sclk";
71 }; 152 };
72 153
73 uart@e1040000 { 154 uart@e1040000 {
74 compatible = "renesas,em-uart"; 155 compatible = "renesas,em-uart";
75 reg = <0xe1040000 0x38>; 156 reg = <0xe1040000 0x38>;
76 interrupts = <0 10 0>; 157 interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>;
158 clocks = <&usib_u2_sclk>;
159 clock-names = "sclk";
77 }; 160 };
78 161
79 uart@e1050000 { 162 uart@e1050000 {
80 compatible = "renesas,em-uart"; 163 compatible = "renesas,em-uart";
81 reg = <0xe1050000 0x38>; 164 reg = <0xe1050000 0x38>;
82 interrupts = <0 11 0>; 165 interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
166 clocks = <&usib_u3_sclk>;
167 clock-names = "sclk";
83 }; 168 };
84 169
85 gpio0: gpio@e0050000 { 170 gpio0: gpio@e0050000 {
86 compatible = "renesas,em-gio"; 171 compatible = "renesas,em-gio";
87 reg = <0xe0050000 0x2c>, <0xe0050040 0x20>; 172 reg = <0xe0050000 0x2c>, <0xe0050040 0x20>;
88 interrupts = <0 67 0>, <0 68 0>; 173 interrupts = <0 67 IRQ_TYPE_LEVEL_HIGH>,
174 <0 68 IRQ_TYPE_LEVEL_HIGH>;
89 gpio-controller; 175 gpio-controller;
90 #gpio-cells = <2>; 176 #gpio-cells = <2>;
91 ngpios = <32>; 177 ngpios = <32>;
@@ -95,7 +181,8 @@
95 gpio1: gpio@e0050080 { 181 gpio1: gpio@e0050080 {
96 compatible = "renesas,em-gio"; 182 compatible = "renesas,em-gio";
97 reg = <0xe0050080 0x2c>, <0xe00500c0 0x20>; 183 reg = <0xe0050080 0x2c>, <0xe00500c0 0x20>;
98 interrupts = <0 69 0>, <0 70 0>; 184 interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>,
185 <0 70 IRQ_TYPE_LEVEL_HIGH>;
99 gpio-controller; 186 gpio-controller;
100 #gpio-cells = <2>; 187 #gpio-cells = <2>;
101 ngpios = <32>; 188 ngpios = <32>;
@@ -105,7 +192,8 @@
105 gpio2: gpio@e0050100 { 192 gpio2: gpio@e0050100 {
106 compatible = "renesas,em-gio"; 193 compatible = "renesas,em-gio";
107 reg = <0xe0050100 0x2c>, <0xe0050140 0x20>; 194 reg = <0xe0050100 0x2c>, <0xe0050140 0x20>;
108 interrupts = <0 71 0>, <0 72 0>; 195 interrupts = <0 71 IRQ_TYPE_LEVEL_HIGH>,
196 <0 72 IRQ_TYPE_LEVEL_HIGH>;
109 gpio-controller; 197 gpio-controller;
110 #gpio-cells = <2>; 198 #gpio-cells = <2>;
111 ngpios = <32>; 199 ngpios = <32>;
@@ -115,7 +203,8 @@
115 gpio3: gpio@e0050180 { 203 gpio3: gpio@e0050180 {
116 compatible = "renesas,em-gio"; 204 compatible = "renesas,em-gio";
117 reg = <0xe0050180 0x2c>, <0xe00501c0 0x20>; 205 reg = <0xe0050180 0x2c>, <0xe00501c0 0x20>;
118 interrupts = <0 73 0>, <0 74 0>; 206 interrupts = <0 73 IRQ_TYPE_LEVEL_HIGH>,
207 <0 74 IRQ_TYPE_LEVEL_HIGH>;
119 gpio-controller; 208 gpio-controller;
120 #gpio-cells = <2>; 209 #gpio-cells = <2>;
121 ngpios = <32>; 210 ngpios = <32>;
@@ -125,7 +214,8 @@
125 gpio4: gpio@e0050200 { 214 gpio4: gpio@e0050200 {
126 compatible = "renesas,em-gio"; 215 compatible = "renesas,em-gio";
127 reg = <0xe0050200 0x2c>, <0xe0050240 0x20>; 216 reg = <0xe0050200 0x2c>, <0xe0050240 0x20>;
128 interrupts = <0 75 0>, <0 76 0>; 217 interrupts = <0 75 IRQ_TYPE_LEVEL_HIGH>,
218 <0 76 IRQ_TYPE_LEVEL_HIGH>;
129 gpio-controller; 219 gpio-controller;
130 #gpio-cells = <2>; 220 #gpio-cells = <2>;
131 ngpios = <31>; 221 ngpios = <31>;
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index a73eeb5f258f..08452e183b57 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -85,21 +85,21 @@
85 reg = <0x10023CE0 0x20>; 85 reg = <0x10023CE0 0x20>;
86 }; 86 };
87 87
88 gic:interrupt-controller@10490000 { 88 gic: interrupt-controller@10490000 {
89 compatible = "arm,cortex-a9-gic"; 89 compatible = "arm,cortex-a9-gic";
90 #interrupt-cells = <3>; 90 #interrupt-cells = <3>;
91 interrupt-controller; 91 interrupt-controller;
92 reg = <0x10490000 0x1000>, <0x10480000 0x100>; 92 reg = <0x10490000 0x1000>, <0x10480000 0x100>;
93 }; 93 };
94 94
95 combiner:interrupt-controller@10440000 { 95 combiner: interrupt-controller@10440000 {
96 compatible = "samsung,exynos4210-combiner"; 96 compatible = "samsung,exynos4210-combiner";
97 #interrupt-cells = <2>; 97 #interrupt-cells = <2>;
98 interrupt-controller; 98 interrupt-controller;
99 reg = <0x10440000 0x1000>; 99 reg = <0x10440000 0x1000>;
100 }; 100 };
101 101
102 sys_reg: sysreg { 102 sys_reg: syscon@10010000 {
103 compatible = "samsung,exynos4-sysreg", "syscon"; 103 compatible = "samsung,exynos4-sysreg", "syscon";
104 reg = <0x10010000 0x400>; 104 reg = <0x10010000 0x400>;
105 }; 105 };
diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi
index 057d6829d319..48ecd7a755ab 100644
--- a/arch/arm/boot/dts/exynos4210.dtsi
+++ b/arch/arm/boot/dts/exynos4210.dtsi
@@ -36,11 +36,11 @@
36 reg = <0x10023CA0 0x20>; 36 reg = <0x10023CA0 0x20>;
37 }; 37 };
38 38
39 gic:interrupt-controller@10490000 { 39 gic: interrupt-controller@10490000 {
40 cpu-offset = <0x8000>; 40 cpu-offset = <0x8000>;
41 }; 41 };
42 42
43 combiner:interrupt-controller@10440000 { 43 combiner: interrupt-controller@10440000 {
44 samsung,combiner-nr = <16>; 44 samsung,combiner-nr = <16>;
45 interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, 45 interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
46 <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>, 46 <0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
@@ -51,24 +51,21 @@
51 mct@10050000 { 51 mct@10050000 {
52 compatible = "samsung,exynos4210-mct"; 52 compatible = "samsung,exynos4210-mct";
53 reg = <0x10050000 0x800>; 53 reg = <0x10050000 0x800>;
54 interrupt-controller;
55 #interrups-cells = <2>;
56 interrupt-parent = <&mct_map>; 54 interrupt-parent = <&mct_map>;
57 interrupts = <0 0>, <1 0>, <2 0>, <3 0>, 55 interrupts = <0>, <1>, <2>, <3>, <4>, <5>;
58 <4 0>, <5 0>;
59 clocks = <&clock 3>, <&clock 344>; 56 clocks = <&clock 3>, <&clock 344>;
60 clock-names = "fin_pll", "mct"; 57 clock-names = "fin_pll", "mct";
61 58
62 mct_map: mct-map { 59 mct_map: mct-map {
63 #interrupt-cells = <2>; 60 #interrupt-cells = <1>;
64 #address-cells = <0>; 61 #address-cells = <0>;
65 #size-cells = <0>; 62 #size-cells = <0>;
66 interrupt-map = <0x0 0 &gic 0 57 0>, 63 interrupt-map = <0 &gic 0 57 0>,
67 <0x1 0 &gic 0 69 0>, 64 <1 &gic 0 69 0>,
68 <0x2 0 &combiner 12 6>, 65 <2 &combiner 12 6>,
69 <0x3 0 &combiner 12 7>, 66 <3 &combiner 12 7>,
70 <0x4 0 &gic 0 42 0>, 67 <4 &gic 0 42 0>,
71 <0x5 0 &gic 0 48 0>; 68 <5 &gic 0 48 0>;
72 }; 69 };
73 }; 70 };
74 71
diff --git a/arch/arm/boot/dts/exynos4212.dtsi b/arch/arm/boot/dts/exynos4212.dtsi
index 6f34d7f6ba7e..94a43f9a05e2 100644
--- a/arch/arm/boot/dts/exynos4212.dtsi
+++ b/arch/arm/boot/dts/exynos4212.dtsi
@@ -22,7 +22,7 @@
22/ { 22/ {
23 compatible = "samsung,exynos4212"; 23 compatible = "samsung,exynos4212";
24 24
25 gic:interrupt-controller@10490000 { 25 gic: interrupt-controller@10490000 {
26 cpu-offset = <0x8000>; 26 cpu-offset = <0x8000>;
27 }; 27 };
28 28
@@ -34,26 +34,4 @@
34 <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>, 34 <0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>,
35 <0 107 0>, <0 108 0>; 35 <0 107 0>, <0 108 0>;
36 }; 36 };
37
38 mct@10050000 {
39 compatible = "samsung,exynos4412-mct";
40 reg = <0x10050000 0x800>;
41 interrupt-controller;
42 #interrups-cells = <2>;
43 interrupt-parent = <&mct_map>;
44 interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
45 <4 0>, <5 0>;
46
47 mct_map: mct-map {
48 #interrupt-cells = <2>;
49 #address-cells = <0>;
50 #size-cells = <0>;
51 interrupt-map = <0x0 0 &gic 0 57 0>,
52 <0x1 0 &combiner 12 5>,
53 <0x2 0 &combiner 12 6>,
54 <0x3 0 &combiner 12 7>,
55 <0x4 0 &gic 1 12 0>,
56 <0x5 0 &gic 1 12 0>;
57 };
58 };
59}; 37};
diff --git a/arch/arm/boot/dts/exynos4412-tiny4412.dts b/arch/arm/boot/dts/exynos4412-tiny4412.dts
new file mode 100644
index 000000000000..0a9831256b33
--- /dev/null
+++ b/arch/arm/boot/dts/exynos4412-tiny4412.dts
@@ -0,0 +1,93 @@
1/*
2 * FriendlyARM's Exynos4412 based TINY4412 board device tree source
3 *
4 * Copyright (c) 2013 Alex Ling <kasimling@gmail.com>
5 *
6 * Device tree source file for FriendlyARM's TINY4412 board which is based on
7 * Samsung's Exynos4412 SoC.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12*/
13
14/dts-v1/;
15#include "exynos4412.dtsi"
16
17/ {
18 model = "FriendlyARM TINY4412 board based on Exynos4412";
19 compatible = "friendlyarm,tiny4412", "samsung,exynos4412";
20
21 memory {
22 reg = <0x40000000 0x40000000>;
23 };
24
25 leds {
26 compatible = "gpio-leds";
27
28 led1 {
29 label = "led1";
30 gpios = <&gpm4 0 1>;
31 default-state = "off";
32 linux,default-trigger = "heartbeat";
33 };
34
35 led2 {
36 label = "led2";
37 gpios = <&gpm4 1 1>;
38 default-state = "off";
39 };
40
41 led3 {
42 label = "led3";
43 gpios = <&gpm4 2 1>;
44 default-state = "off";
45 };
46
47 led4 {
48 label = "led4";
49 gpios = <&gpm4 3 1>;
50 default-state = "off";
51 linux,default-trigger = "mmc0";
52 };
53 };
54
55 rtc@10070000 {
56 status = "okay";
57 };
58
59 sdhci@12530000 {
60 bus-width = <4>;
61 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
62 pinctrl-names = "default";
63 status = "okay";
64 };
65
66 serial@13800000 {
67 status = "okay";
68 };
69
70 serial@13810000 {
71 status = "okay";
72 };
73
74 serial@13820000 {
75 status = "okay";
76 };
77
78 serial@13830000 {
79 status = "okay";
80 };
81
82 fixed-rate-clocks {
83 xxti {
84 compatible = "samsung,clock-xxti";
85 clock-frequency = <0>;
86 };
87
88 xusbxti {
89 compatible = "samsung,clock-xusbxti";
90 clock-frequency = <24000000>;
91 };
92 };
93};
diff --git a/arch/arm/boot/dts/exynos4412.dtsi b/arch/arm/boot/dts/exynos4412.dtsi
index 85812bd95a86..87b339c739de 100644
--- a/arch/arm/boot/dts/exynos4412.dtsi
+++ b/arch/arm/boot/dts/exynos4412.dtsi
@@ -22,7 +22,7 @@
22/ { 22/ {
23 compatible = "samsung,exynos4412"; 23 compatible = "samsung,exynos4412";
24 24
25 gic:interrupt-controller@10490000 { 25 gic: interrupt-controller@10490000 {
26 cpu-offset = <0x4000>; 26 cpu-offset = <0x4000>;
27 }; 27 };
28 28
@@ -35,30 +35,4 @@
35 <0 107 0>, <0 108 0>, <0 48 0>, <0 42 0>; 35 <0 107 0>, <0 108 0>, <0 48 0>, <0 42 0>;
36 }; 36 };
37 37
38 mct@10050000 {
39 compatible = "samsung,exynos4412-mct";
40 reg = <0x10050000 0x800>;
41 interrupt-controller;
42 #interrups-cells = <2>;
43 interrupt-parent = <&mct_map>;
44 interrupts = <0 0>, <1 0>, <2 0>, <3 0>,
45 <4 0>, <5 0>, <6 0>, <7 0>;
46 clocks = <&clock 3>, <&clock 344>;
47 clock-names = "fin_pll", "mct";
48
49 mct_map: mct-map {
50 #interrupt-cells = <2>;
51 #address-cells = <0>;
52 #size-cells = <0>;
53 interrupt-map = <0x0 0 &gic 0 57 0>,
54 <0x1 0 &combiner 12 5>,
55 <0x2 0 &combiner 12 6>,
56 <0x3 0 &combiner 12 7>,
57 <0x4 0 &gic 1 12 0>,
58 <0x5 0 &gic 1 12 0>,
59 <0x6 0 &gic 1 12 0>,
60 <0x7 0 &gic 1 12 0>;
61 };
62 };
63
64}; 38};
diff --git a/arch/arm/boot/dts/exynos4x12.dtsi b/arch/arm/boot/dts/exynos4x12.dtsi
index 1917c829e64e..5c412aa14738 100644
--- a/arch/arm/boot/dts/exynos4x12.dtsi
+++ b/arch/arm/boot/dts/exynos4x12.dtsi
@@ -42,6 +42,26 @@
42 #clock-cells = <1>; 42 #clock-cells = <1>;
43 }; 43 };
44 44
45 mct@10050000 {
46 compatible = "samsung,exynos4412-mct";
47 reg = <0x10050000 0x800>;
48 interrupt-parent = <&mct_map>;
49 interrupts = <0>, <1>, <2>, <3>, <4>;
50 clocks = <&clock 3>, <&clock 344>;
51 clock-names = "fin_pll", "mct";
52
53 mct_map: mct-map {
54 #interrupt-cells = <1>;
55 #address-cells = <0>;
56 #size-cells = <0>;
57 interrupt-map = <0 &gic 0 57 0>,
58 <1 &combiner 12 5>,
59 <2 &combiner 12 6>,
60 <3 &combiner 12 7>,
61 <4 &gic 1 12 0>;
62 };
63 };
64
45 pinctrl_0: pinctrl@11400000 { 65 pinctrl_0: pinctrl@11400000 {
46 compatible = "samsung,exynos4x12-pinctrl"; 66 compatible = "samsung,exynos4x12-pinctrl";
47 reg = <0x11400000 0x1000>; 67 reg = <0x11400000 0x1000>;
diff --git a/arch/arm/boot/dts/exynos5.dtsi b/arch/arm/boot/dts/exynos5.dtsi
index 074739d39e2d..258dca441f36 100644
--- a/arch/arm/boot/dts/exynos5.dtsi
+++ b/arch/arm/boot/dts/exynos5.dtsi
@@ -23,7 +23,7 @@
23 reg = <0x10000000 0x100>; 23 reg = <0x10000000 0x100>;
24 }; 24 };
25 25
26 combiner:interrupt-controller@10440000 { 26 combiner: interrupt-controller@10440000 {
27 compatible = "samsung,exynos4210-combiner"; 27 compatible = "samsung,exynos4210-combiner";
28 #interrupt-cells = <2>; 28 #interrupt-cells = <2>;
29 interrupt-controller; 29 interrupt-controller;
@@ -39,7 +39,7 @@
39 <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>; 39 <0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>;
40 }; 40 };
41 41
42 gic:interrupt-controller@10481000 { 42 gic: interrupt-controller@10481000 {
43 compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; 43 compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
44 #interrupt-cells = <3>; 44 #interrupt-cells = <3>;
45 interrupt-controller; 45 interrupt-controller;
@@ -50,27 +50,6 @@
50 interrupts = <1 9 0xf04>; 50 interrupts = <1 9 0xf04>;
51 }; 51 };
52 52
53 dwmmc_0: dwmmc0@12200000 {
54 compatible = "samsung,exynos5250-dw-mshc";
55 interrupts = <0 75 0>;
56 #address-cells = <1>;
57 #size-cells = <0>;
58 };
59
60 dwmmc_1: dwmmc1@12210000 {
61 compatible = "samsung,exynos5250-dw-mshc";
62 interrupts = <0 76 0>;
63 #address-cells = <1>;
64 #size-cells = <0>;
65 };
66
67 dwmmc_2: dwmmc2@12220000 {
68 compatible = "samsung,exynos5250-dw-mshc";
69 interrupts = <0 77 0>;
70 #address-cells = <1>;
71 #size-cells = <0>;
72 };
73
74 serial@12C00000 { 53 serial@12C00000 {
75 compatible = "samsung,exynos4210-uart"; 54 compatible = "samsung,exynos4210-uart";
76 reg = <0x12C00000 0x100>; 55 reg = <0x12C00000 0x100>;
diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index bbfb23f942e1..b42e658876e5 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -34,6 +34,7 @@
34 samsung,i2c-sda-delay = <100>; 34 samsung,i2c-sda-delay = <100>;
35 samsung,i2c-max-bus-freq = <20000>; 35 samsung,i2c-max-bus-freq = <20000>;
36 samsung,i2c-slave-addr = <0x66>; 36 samsung,i2c-slave-addr = <0x66>;
37 status = "okay";
37 38
38 s5m8767_pmic@66 { 39 s5m8767_pmic@66 {
39 compatible = "samsung,s5m8767-pmic"; 40 compatible = "samsung,s5m8767-pmic";
@@ -266,7 +267,7 @@
266 267
267 buck2_reg: BUCK2 { 268 buck2_reg: BUCK2 {
268 regulator-name = "vdd_arm"; 269 regulator-name = "vdd_arm";
269 regulator-min-microvolt = <925000>; 270 regulator-min-microvolt = <912500>;
270 regulator-max-microvolt = <1300000>; 271 regulator-max-microvolt = <1300000>;
271 regulator-always-on; 272 regulator-always-on;
272 regulator-boot-on; 273 regulator-boot-on;
@@ -321,11 +322,9 @@
321 }; 322 };
322 }; 323 };
323 324
324 i2c@12C70000 {
325 status = "disabled";
326 };
327
328 i2c@12C80000 { 325 i2c@12C80000 {
326 status = "okay";
327
329 samsung,i2c-sda-delay = <100>; 328 samsung,i2c-sda-delay = <100>;
330 samsung,i2c-max-bus-freq = <66000>; 329 samsung,i2c-max-bus-freq = <66000>;
331 samsung,i2c-slave-addr = <0x50>; 330 samsung,i2c-slave-addr = <0x50>;
@@ -337,7 +336,10 @@
337 }; 336 };
338 337
339 i2c@12C90000 { 338 i2c@12C90000 {
339 status = "okay";
340
340 wm1811a@1a { 341 wm1811a@1a {
342
341 compatible = "wlf,wm1811"; 343 compatible = "wlf,wm1811";
342 reg = <0x1a>; 344 reg = <0x1a>;
343 345
@@ -355,23 +357,9 @@
355 }; 357 };
356 }; 358 };
357 359
358 i2c@12CA0000 {
359 status = "disabled";
360 };
361
362 i2c@12CB0000 {
363 status = "disabled";
364 };
365
366 i2c@12CC0000 {
367 status = "disabled";
368 };
369
370 i2c@12CD0000 {
371 status = "disabled";
372 };
373
374 i2c@12CE0000 { 360 i2c@12CE0000 {
361 status = "okay";
362
375 samsung,i2c-sda-delay = <100>; 363 samsung,i2c-sda-delay = <100>;
376 samsung,i2c-max-bus-freq = <66000>; 364 samsung,i2c-max-bus-freq = <66000>;
377 samsung,i2c-slave-addr = <0x38>; 365 samsung,i2c-slave-addr = <0x38>;
@@ -382,15 +370,11 @@
382 }; 370 };
383 }; 371 };
384 372
385 i2c@121D0000 { 373 mmc_0: mmc@12200000 {
386 status = "disabled"; 374 status = "okay";
387 };
388
389 dwmmc_0: dwmmc0@12200000 {
390 num-slots = <1>; 375 num-slots = <1>;
391 supports-highspeed; 376 supports-highspeed;
392 broken-cd; 377 broken-cd;
393 fifo-depth = <0x80>;
394 card-detect-delay = <200>; 378 card-detect-delay = <200>;
395 samsung,dw-mshc-ciu-div = <3>; 379 samsung,dw-mshc-ciu-div = <3>;
396 samsung,dw-mshc-sdr-timing = <2 3>; 380 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -405,14 +389,10 @@
405 }; 389 };
406 }; 390 };
407 391
408 dwmmc_1: dwmmc1@12210000 { 392 mmc_2: mmc@12220000 {
409 status = "disabled"; 393 status = "okay";
410 };
411
412 dwmmc_2: dwmmc2@12220000 {
413 num-slots = <1>; 394 num-slots = <1>;
414 supports-highspeed; 395 supports-highspeed;
415 fifo-depth = <0x80>;
416 card-detect-delay = <200>; 396 card-detect-delay = <200>;
417 samsung,dw-mshc-ciu-div = <3>; 397 samsung,dw-mshc-ciu-div = <3>;
418 samsung,dw-mshc-sdr-timing = <2 3>; 398 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -428,26 +408,10 @@
428 }; 408 };
429 }; 409 };
430 410
431 dwmmc_3: dwmmc3@12230000 {
432 status = "disabled";
433 };
434
435 i2s0: i2s@03830000 { 411 i2s0: i2s@03830000 {
436 status = "okay"; 412 status = "okay";
437 }; 413 };
438 414
439 spi_0: spi@12d20000 {
440 status = "disabled";
441 };
442
443 spi_1: spi@12d30000 {
444 status = "disabled";
445 };
446
447 spi_2: spi@12d40000 {
448 status = "disabled";
449 };
450
451 gpio_keys { 415 gpio_keys {
452 compatible = "gpio-keys"; 416 compatible = "gpio-keys";
453 417
diff --git a/arch/arm/boot/dts/cros5250-common.dtsi b/arch/arm/boot/dts/exynos5250-cros-common.dtsi
index 9b186ac06c8b..9a61494f45f5 100644
--- a/arch/arm/boot/dts/cros5250-common.dtsi
+++ b/arch/arm/boot/dts/exynos5250-cros-common.dtsi
@@ -37,6 +37,7 @@
37 }; 37 };
38 38
39 i2c@12C60000 { 39 i2c@12C60000 {
40 status = "okay";
40 samsung,i2c-sda-delay = <100>; 41 samsung,i2c-sda-delay = <100>;
41 samsung,i2c-max-bus-freq = <378000>; 42 samsung,i2c-max-bus-freq = <378000>;
42 43
@@ -185,6 +186,7 @@
185 }; 186 };
186 187
187 i2c@12C70000 { 188 i2c@12C70000 {
189 status = "okay";
188 samsung,i2c-sda-delay = <100>; 190 samsung,i2c-sda-delay = <100>;
189 samsung,i2c-max-bus-freq = <378000>; 191 samsung,i2c-max-bus-freq = <378000>;
190 192
@@ -198,6 +200,7 @@
198 }; 200 };
199 201
200 i2c@12C80000 { 202 i2c@12C80000 {
203 status = "okay";
201 samsung,i2c-sda-delay = <100>; 204 samsung,i2c-sda-delay = <100>;
202 samsung,i2c-max-bus-freq = <66000>; 205 samsung,i2c-max-bus-freq = <66000>;
203 206
@@ -208,30 +211,31 @@
208 }; 211 };
209 212
210 i2c@12C90000 { 213 i2c@12C90000 {
214 status = "okay";
211 samsung,i2c-sda-delay = <100>; 215 samsung,i2c-sda-delay = <100>;
212 samsung,i2c-max-bus-freq = <66000>; 216 samsung,i2c-max-bus-freq = <66000>;
213 }; 217 };
214 218
215 i2c@12CA0000 { 219 i2c@12CA0000 {
220 status = "okay";
216 samsung,i2c-sda-delay = <100>; 221 samsung,i2c-sda-delay = <100>;
217 samsung,i2c-max-bus-freq = <66000>; 222 samsung,i2c-max-bus-freq = <66000>;
218 }; 223 };
219 224
220 i2c@12CB0000 { 225 i2c@12CB0000 {
226 status = "okay";
221 samsung,i2c-sda-delay = <100>; 227 samsung,i2c-sda-delay = <100>;
222 samsung,i2c-max-bus-freq = <66000>; 228 samsung,i2c-max-bus-freq = <66000>;
223 }; 229 };
224 230
225 i2c@12CC0000 {
226 status = "disabled";
227 };
228
229 i2c@12CD0000 { 231 i2c@12CD0000 {
232 status = "okay";
230 samsung,i2c-sda-delay = <100>; 233 samsung,i2c-sda-delay = <100>;
231 samsung,i2c-max-bus-freq = <66000>; 234 samsung,i2c-max-bus-freq = <66000>;
232 }; 235 };
233 236
234 i2c@12CE0000 { 237 i2c@12CE0000 {
238 status = "okay";
235 samsung,i2c-sda-delay = <100>; 239 samsung,i2c-sda-delay = <100>;
236 samsung,i2c-max-bus-freq = <378000>; 240 samsung,i2c-max-bus-freq = <378000>;
237 241
@@ -241,11 +245,10 @@
241 }; 245 };
242 }; 246 };
243 247
244 dwmmc0@12200000 { 248 mmc@12200000 {
245 num-slots = <1>; 249 num-slots = <1>;
246 supports-highspeed; 250 supports-highspeed;
247 broken-cd; 251 broken-cd;
248 fifo-depth = <0x80>;
249 card-detect-delay = <200>; 252 card-detect-delay = <200>;
250 samsung,dw-mshc-ciu-div = <3>; 253 samsung,dw-mshc-ciu-div = <3>;
251 samsung,dw-mshc-sdr-timing = <2 3>; 254 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -259,14 +262,9 @@
259 }; 262 };
260 }; 263 };
261 264
262 dwmmc1@12210000 { 265 mmc@12220000 {
263 status = "disabled";
264 };
265
266 dwmmc2@12220000 {
267 num-slots = <1>; 266 num-slots = <1>;
268 supports-highspeed; 267 supports-highspeed;
269 fifo-depth = <0x80>;
270 card-detect-delay = <200>; 268 card-detect-delay = <200>;
271 samsung,dw-mshc-ciu-div = <3>; 269 samsung,dw-mshc-ciu-div = <3>;
272 samsung,dw-mshc-sdr-timing = <2 3>; 270 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -281,11 +279,10 @@
281 }; 279 };
282 }; 280 };
283 281
284 dwmmc3@12230000 { 282 mmc@12230000 {
285 num-slots = <1>; 283 num-slots = <1>;
286 supports-highspeed; 284 supports-highspeed;
287 broken-cd; 285 broken-cd;
288 fifo-depth = <0x80>;
289 card-detect-delay = <200>; 286 card-detect-delay = <200>;
290 samsung,dw-mshc-ciu-div = <3>; 287 samsung,dw-mshc-ciu-div = <3>;
291 samsung,dw-mshc-sdr-timing = <2 3>; 288 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -298,19 +295,12 @@
298 }; 295 };
299 }; 296 };
300 297
301 spi_0: spi@12d20000 {
302 status = "disabled";
303 };
304
305 spi_1: spi@12d30000 { 298 spi_1: spi@12d30000 {
299 status = "okay";
306 samsung,spi-src-clk = <0>; 300 samsung,spi-src-clk = <0>;
307 num-cs = <1>; 301 num-cs = <1>;
308 }; 302 };
309 303
310 spi_2: spi@12d40000 {
311 status = "disabled";
312 };
313
314 hdmi { 304 hdmi {
315 hpd-gpio = <&gpx3 7 0>; 305 hpd-gpio = <&gpx3 7 0>;
316 }; 306 };
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
index f86d56760a45..3e69837c435c 100644
--- a/arch/arm/boot/dts/exynos5250-smdk5250.dts
+++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
@@ -30,6 +30,7 @@
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 status = "okay";
33 34
34 eeprom@50 { 35 eeprom@50 {
35 compatible = "samsung,s524ad0xd1"; 36 compatible = "samsung,s524ad0xd1";
@@ -37,7 +38,7 @@
37 }; 38 };
38 }; 39 };
39 40
40 vdd:fixed-regulator@0 { 41 vdd: fixed-regulator@0 {
41 compatible = "regulator-fixed"; 42 compatible = "regulator-fixed";
42 regulator-name = "vdd-supply"; 43 regulator-name = "vdd-supply";
43 regulator-min-microvolt = <1800000>; 44 regulator-min-microvolt = <1800000>;
@@ -45,7 +46,7 @@
45 regulator-always-on; 46 regulator-always-on;
46 }; 47 };
47 48
48 dbvdd:fixed-regulator@1 { 49 dbvdd: fixed-regulator@1 {
49 compatible = "regulator-fixed"; 50 compatible = "regulator-fixed";
50 regulator-name = "dbvdd-supply"; 51 regulator-name = "dbvdd-supply";
51 regulator-min-microvolt = <3300000>; 52 regulator-min-microvolt = <3300000>;
@@ -53,7 +54,7 @@
53 regulator-always-on; 54 regulator-always-on;
54 }; 55 };
55 56
56 spkvdd:fixed-regulator@2 { 57 spkvdd: fixed-regulator@2 {
57 compatible = "regulator-fixed"; 58 compatible = "regulator-fixed";
58 regulator-name = "spkvdd-supply"; 59 regulator-name = "spkvdd-supply";
59 regulator-min-microvolt = <5000000>; 60 regulator-min-microvolt = <5000000>;
@@ -64,6 +65,7 @@
64 i2c@12C70000 { 65 i2c@12C70000 {
65 samsung,i2c-sda-delay = <100>; 66 samsung,i2c-sda-delay = <100>;
66 samsung,i2c-max-bus-freq = <20000>; 67 samsung,i2c-max-bus-freq = <20000>;
68 status = "okay";
67 69
68 eeprom@51 { 70 eeprom@51 {
69 compatible = "samsung,s524ad0xd1"; 71 compatible = "samsung,s524ad0xd1";
@@ -77,6 +79,9 @@
77 gpio-controller; 79 gpio-controller;
78 #gpio-cells = <2>; 80 #gpio-cells = <2>;
79 81
82 clocks = <&codec_mclk>;
83 clock-names = "MCLK1";
84
80 AVDD2-supply = <&vdd>; 85 AVDD2-supply = <&vdd>;
81 CPVDD-supply = <&vdd>; 86 CPVDD-supply = <&vdd>;
82 DBVDD-supply = <&dbvdd>; 87 DBVDD-supply = <&dbvdd>;
@@ -89,6 +94,7 @@
89 samsung,i2c-sda-delay = <100>; 94 samsung,i2c-sda-delay = <100>;
90 samsung,i2c-max-bus-freq = <40000>; 95 samsung,i2c-max-bus-freq = <40000>;
91 samsung,i2c-slave-addr = <0x38>; 96 samsung,i2c-slave-addr = <0x38>;
97 status = "okay";
92 98
93 sata-phy { 99 sata-phy {
94 compatible = "samsung,sata-phy"; 100 compatible = "samsung,sata-phy";
@@ -103,6 +109,7 @@
103 i2c@12C80000 { 109 i2c@12C80000 {
104 samsung,i2c-sda-delay = <100>; 110 samsung,i2c-sda-delay = <100>;
105 samsung,i2c-max-bus-freq = <66000>; 111 samsung,i2c-max-bus-freq = <66000>;
112 status = "okay";
106 113
107 hdmiddc@50 { 114 hdmiddc@50 {
108 compatible = "samsung,exynos4210-hdmiddc"; 115 compatible = "samsung,exynos4210-hdmiddc";
@@ -110,29 +117,10 @@
110 }; 117 };
111 }; 118 };
112 119
113 i2c@12C90000 {
114 status = "disabled";
115 };
116
117 i2c@12CA0000 {
118 status = "disabled";
119 };
120
121 i2c@12CB0000 {
122 status = "disabled";
123 };
124
125 i2c@12CC0000 {
126 status = "disabled";
127 };
128
129 i2c@12CD0000 {
130 status = "disabled";
131 };
132
133 i2c@12CE0000 { 120 i2c@12CE0000 {
134 samsung,i2c-sda-delay = <100>; 121 samsung,i2c-sda-delay = <100>;
135 samsung,i2c-max-bus-freq = <66000>; 122 samsung,i2c-max-bus-freq = <66000>;
123 status = "okay";
136 124
137 hdmiphy@38 { 125 hdmiphy@38 {
138 compatible = "samsung,exynos4212-hdmiphy"; 126 compatible = "samsung,exynos4212-hdmiphy";
@@ -140,11 +128,11 @@
140 }; 128 };
141 }; 129 };
142 130
143 dwmmc0@12200000 { 131 mmc@12200000 {
132 status = "okay";
144 num-slots = <1>; 133 num-slots = <1>;
145 supports-highspeed; 134 supports-highspeed;
146 broken-cd; 135 broken-cd;
147 fifo-depth = <0x80>;
148 card-detect-delay = <200>; 136 card-detect-delay = <200>;
149 samsung,dw-mshc-ciu-div = <3>; 137 samsung,dw-mshc-ciu-div = <3>;
150 samsung,dw-mshc-sdr-timing = <2 3>; 138 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -158,14 +146,10 @@
158 }; 146 };
159 }; 147 };
160 148
161 dwmmc1@12210000 { 149 mmc@12220000 {
162 status = "disabled"; 150 status = "okay";
163 };
164
165 dwmmc2@12220000 {
166 num-slots = <1>; 151 num-slots = <1>;
167 supports-highspeed; 152 supports-highspeed;
168 fifo-depth = <0x80>;
169 card-detect-delay = <200>; 153 card-detect-delay = <200>;
170 samsung,dw-mshc-ciu-div = <3>; 154 samsung,dw-mshc-ciu-div = <3>;
171 samsung,dw-mshc-sdr-timing = <2 3>; 155 samsung,dw-mshc-sdr-timing = <2 3>;
@@ -180,15 +164,13 @@
180 }; 164 };
181 }; 165 };
182 166
183 dwmmc3@12230000 {
184 status = "disabled";
185 };
186
187 spi_0: spi@12d20000 { 167 spi_0: spi@12d20000 {
188 status = "disabled"; 168 status = "disabled";
189 }; 169 };
190 170
191 spi_1: spi@12d30000 { 171 spi_1: spi@12d30000 {
172 status = "okay";
173
192 w25q80bw@0 { 174 w25q80bw@0 {
193 #address-cells = <1>; 175 #address-cells = <1>;
194 #size-cells = <1>; 176 #size-cells = <1>;
@@ -214,10 +196,6 @@
214 }; 196 };
215 }; 197 };
216 198
217 spi_2: spi@12d40000 {
218 status = "disabled";
219 };
220
221 hdmi { 199 hdmi {
222 hpd-gpio = <&gpx3 7 0>; 200 hpd-gpio = <&gpx3 7 0>;
223 }; 201 };
@@ -279,5 +257,11 @@
279 compatible = "samsung,clock-xxti"; 257 compatible = "samsung,clock-xxti";
280 clock-frequency = <24000000>; 258 clock-frequency = <24000000>;
281 }; 259 };
260
261 codec_mclk: codec-mclk {
262 compatible = "fixed-clock";
263 #clock-cells = <0>;
264 clock-frequency = <16934000>;
265 };
282 }; 266 };
283}; 267};
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts
index c65f52a6dcea..7e45eea2d78f 100644
--- a/arch/arm/boot/dts/exynos5250-snow.dts
+++ b/arch/arm/boot/dts/exynos5250-snow.dts
@@ -10,7 +10,7 @@
10 10
11/dts-v1/; 11/dts-v1/;
12#include "exynos5250.dtsi" 12#include "exynos5250.dtsi"
13#include "cros5250-common.dtsi" 13#include "exynos5250-cros-common.dtsi"
14 14
15/ { 15/ {
16 model = "Google Snow"; 16 model = "Google Snow";
@@ -172,11 +172,20 @@
172 }; 172 };
173 }; 173 };
174 174
175 mmc@12200000 {
176 status = "okay";
177 };
178
179 mmc@12220000 {
180 status = "okay";
181 };
182
175 /* 183 /*
176 * On Snow we've got SIP WiFi and so can keep drive strengths low to 184 * On Snow we've got SIP WiFi and so can keep drive strengths low to
177 * reduce EMI. 185 * reduce EMI.
178 */ 186 */
179 dwmmc3@12230000 { 187 mmc@12230000 {
188 status = "okay";
180 slot@0 { 189 slot@0 {
181 pinctrl-names = "default"; 190 pinctrl-names = "default";
182 pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>; 191 pinctrl-0 = <&sd3_clk &sd3_cmd &sd3_bus4>;
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
index 6feaa1c454fa..587dd3e36f6c 100644
--- a/arch/arm/boot/dts/exynos5250.dtsi
+++ b/arch/arm/boot/dts/exynos5250.dtsi
@@ -33,10 +33,10 @@
33 gsc1 = &gsc_1; 33 gsc1 = &gsc_1;
34 gsc2 = &gsc_2; 34 gsc2 = &gsc_2;
35 gsc3 = &gsc_3; 35 gsc3 = &gsc_3;
36 mshc0 = &dwmmc_0; 36 mshc0 = &mmc_0;
37 mshc1 = &dwmmc_1; 37 mshc1 = &mmc_1;
38 mshc2 = &dwmmc_2; 38 mshc2 = &mmc_2;
39 mshc3 = &dwmmc_3; 39 mshc3 = &mmc_3;
40 i2c0 = &i2c_0; 40 i2c0 = &i2c_0;
41 i2c1 = &i2c_1; 41 i2c1 = &i2c_1;
42 i2c2 = &i2c_2; 42 i2c2 = &i2c_2;
@@ -244,6 +244,7 @@
244 clock-names = "i2c"; 244 clock-names = "i2c";
245 pinctrl-names = "default"; 245 pinctrl-names = "default";
246 pinctrl-0 = <&i2c0_bus>; 246 pinctrl-0 = <&i2c0_bus>;
247 status = "disabled";
247 }; 248 };
248 249
249 i2c_1: i2c@12C70000 { 250 i2c_1: i2c@12C70000 {
@@ -256,6 +257,7 @@
256 clock-names = "i2c"; 257 clock-names = "i2c";
257 pinctrl-names = "default"; 258 pinctrl-names = "default";
258 pinctrl-0 = <&i2c1_bus>; 259 pinctrl-0 = <&i2c1_bus>;
260 status = "disabled";
259 }; 261 };
260 262
261 i2c_2: i2c@12C80000 { 263 i2c_2: i2c@12C80000 {
@@ -268,6 +270,7 @@
268 clock-names = "i2c"; 270 clock-names = "i2c";
269 pinctrl-names = "default"; 271 pinctrl-names = "default";
270 pinctrl-0 = <&i2c2_bus>; 272 pinctrl-0 = <&i2c2_bus>;
273 status = "disabled";
271 }; 274 };
272 275
273 i2c_3: i2c@12C90000 { 276 i2c_3: i2c@12C90000 {
@@ -280,6 +283,7 @@
280 clock-names = "i2c"; 283 clock-names = "i2c";
281 pinctrl-names = "default"; 284 pinctrl-names = "default";
282 pinctrl-0 = <&i2c3_bus>; 285 pinctrl-0 = <&i2c3_bus>;
286 status = "disabled";
283 }; 287 };
284 288
285 i2c_4: i2c@12CA0000 { 289 i2c_4: i2c@12CA0000 {
@@ -292,6 +296,7 @@
292 clock-names = "i2c"; 296 clock-names = "i2c";
293 pinctrl-names = "default"; 297 pinctrl-names = "default";
294 pinctrl-0 = <&i2c4_bus>; 298 pinctrl-0 = <&i2c4_bus>;
299 status = "disabled";
295 }; 300 };
296 301
297 i2c_5: i2c@12CB0000 { 302 i2c_5: i2c@12CB0000 {
@@ -304,6 +309,7 @@
304 clock-names = "i2c"; 309 clock-names = "i2c";
305 pinctrl-names = "default"; 310 pinctrl-names = "default";
306 pinctrl-0 = <&i2c5_bus>; 311 pinctrl-0 = <&i2c5_bus>;
312 status = "disabled";
307 }; 313 };
308 314
309 i2c_6: i2c@12CC0000 { 315 i2c_6: i2c@12CC0000 {
@@ -316,6 +322,7 @@
316 clock-names = "i2c"; 322 clock-names = "i2c";
317 pinctrl-names = "default"; 323 pinctrl-names = "default";
318 pinctrl-0 = <&i2c6_bus>; 324 pinctrl-0 = <&i2c6_bus>;
325 status = "disabled";
319 }; 326 };
320 327
321 i2c_7: i2c@12CD0000 { 328 i2c_7: i2c@12CD0000 {
@@ -328,6 +335,7 @@
328 clock-names = "i2c"; 335 clock-names = "i2c";
329 pinctrl-names = "default"; 336 pinctrl-names = "default";
330 pinctrl-0 = <&i2c7_bus>; 337 pinctrl-0 = <&i2c7_bus>;
338 status = "disabled";
331 }; 339 };
332 340
333 i2c_8: i2c@12CE0000 { 341 i2c_8: i2c@12CE0000 {
@@ -338,6 +346,7 @@
338 #size-cells = <0>; 346 #size-cells = <0>;
339 clocks = <&clock 302>; 347 clocks = <&clock 302>;
340 clock-names = "i2c"; 348 clock-names = "i2c";
349 status = "disabled";
341 }; 350 };
342 351
343 i2c@121D0000 { 352 i2c@121D0000 {
@@ -347,10 +356,12 @@
347 #size-cells = <0>; 356 #size-cells = <0>;
348 clocks = <&clock 288>; 357 clocks = <&clock 288>;
349 clock-names = "i2c"; 358 clock-names = "i2c";
359 status = "disabled";
350 }; 360 };
351 361
352 spi_0: spi@12d20000 { 362 spi_0: spi@12d20000 {
353 compatible = "samsung,exynos4210-spi"; 363 compatible = "samsung,exynos4210-spi";
364 status = "disabled";
354 reg = <0x12d20000 0x100>; 365 reg = <0x12d20000 0x100>;
355 interrupts = <0 66 0>; 366 interrupts = <0 66 0>;
356 dmas = <&pdma0 5 367 dmas = <&pdma0 5
@@ -366,6 +377,7 @@
366 377
367 spi_1: spi@12d30000 { 378 spi_1: spi@12d30000 {
368 compatible = "samsung,exynos4210-spi"; 379 compatible = "samsung,exynos4210-spi";
380 status = "disabled";
369 reg = <0x12d30000 0x100>; 381 reg = <0x12d30000 0x100>;
370 interrupts = <0 67 0>; 382 interrupts = <0 67 0>;
371 dmas = <&pdma1 5 383 dmas = <&pdma1 5
@@ -381,6 +393,7 @@
381 393
382 spi_2: spi@12d40000 { 394 spi_2: spi@12d40000 {
383 compatible = "samsung,exynos4210-spi"; 395 compatible = "samsung,exynos4210-spi";
396 status = "disabled";
384 reg = <0x12d40000 0x100>; 397 reg = <0x12d40000 0x100>;
385 interrupts = <0 68 0>; 398 interrupts = <0 68 0>;
386 dmas = <&pdma0 7 399 dmas = <&pdma0 7
@@ -394,25 +407,43 @@
394 pinctrl-0 = <&spi2_bus>; 407 pinctrl-0 = <&spi2_bus>;
395 }; 408 };
396 409
397 dwmmc_0: dwmmc0@12200000 { 410 mmc_0: mmc@12200000 {
411 compatible = "samsung,exynos5250-dw-mshc";
412 interrupts = <0 75 0>;
413 #address-cells = <1>;
414 #size-cells = <0>;
398 reg = <0x12200000 0x1000>; 415 reg = <0x12200000 0x1000>;
399 clocks = <&clock 280>, <&clock 139>; 416 clocks = <&clock 280>, <&clock 139>;
400 clock-names = "biu", "ciu"; 417 clock-names = "biu", "ciu";
418 fifo-depth = <0x80>;
419 status = "disabled";
401 }; 420 };
402 421
403 dwmmc_1: dwmmc1@12210000 { 422 mmc_1: mmc@12210000 {
423 compatible = "samsung,exynos5250-dw-mshc";
424 interrupts = <0 76 0>;
425 #address-cells = <1>;
426 #size-cells = <0>;
404 reg = <0x12210000 0x1000>; 427 reg = <0x12210000 0x1000>;
405 clocks = <&clock 281>, <&clock 140>; 428 clocks = <&clock 281>, <&clock 140>;
406 clock-names = "biu", "ciu"; 429 clock-names = "biu", "ciu";
430 fifo-depth = <0x80>;
431 status = "disabled";
407 }; 432 };
408 433
409 dwmmc_2: dwmmc2@12220000 { 434 mmc_2: mmc@12220000 {
435 compatible = "samsung,exynos5250-dw-mshc";
436 interrupts = <0 77 0>;
437 #address-cells = <1>;
438 #size-cells = <0>;
410 reg = <0x12220000 0x1000>; 439 reg = <0x12220000 0x1000>;
411 clocks = <&clock 282>, <&clock 141>; 440 clocks = <&clock 282>, <&clock 141>;
412 clock-names = "biu", "ciu"; 441 clock-names = "biu", "ciu";
442 fifo-depth = <0x80>;
443 status = "disabled";
413 }; 444 };
414 445
415 dwmmc_3: dwmmc3@12230000 { 446 mmc_3: mmc@12230000 {
416 compatible = "samsung,exynos5250-dw-mshc"; 447 compatible = "samsung,exynos5250-dw-mshc";
417 reg = <0x12230000 0x1000>; 448 reg = <0x12230000 0x1000>;
418 interrupts = <0 78 0>; 449 interrupts = <0 78 0>;
@@ -420,6 +451,8 @@
420 #size-cells = <0>; 451 #size-cells = <0>;
421 clocks = <&clock 283>, <&clock 142>; 452 clocks = <&clock 283>, <&clock 142>;
422 clock-names = "biu", "ciu"; 453 clock-names = "biu", "ciu";
454 fifo-depth = <0x80>;
455 status = "disabled";
423 }; 456 };
424 457
425 i2s0: i2s@03830000 { 458 i2s0: i2s@03830000 {
@@ -528,6 +561,15 @@
528 }; 561 };
529 }; 562 };
530 563
564 pwm: pwm@12dd0000 {
565 compatible = "samsung,exynos4210-pwm";
566 reg = <0x12dd0000 0x100>;
567 samsung,pwm-outputs = <0>, <1>, <2>, <3>;
568 #pwm-cells = <3>;
569 clocks = <&clock 311>;
570 clock-names = "timers";
571 };
572
531 amba { 573 amba {
532 #address-cells = <1>; 574 #address-cells = <1>;
533 #size-cells = <1>; 575 #size-cells = <1>;
diff --git a/arch/arm/boot/dts/exynos5420-arndale-octa.dts b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
new file mode 100644
index 000000000000..7340745ff979
--- /dev/null
+++ b/arch/arm/boot/dts/exynos5420-arndale-octa.dts
@@ -0,0 +1,66 @@
1/*
2 * Samsung's Exynos5420 based Arndale Octa 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 "exynos5420.dtsi"
14
15/ {
16 model = "Insignal Arndale Octa evaluation board based on EXYNOS5420";
17 compatible = "insignal,arndale-octa", "samsung,exynos5420";
18
19 memory {
20 reg = <0x20000000 0x80000000>;
21 };
22
23 chosen {
24 bootargs = "console=ttySAC3,115200";
25 };
26
27 fixed-rate-clocks {
28 oscclk {
29 compatible = "samsung,exynos5420-oscclk";
30 clock-frequency = <24000000>;
31 };
32 };
33
34 mmc@12200000 {
35 status = "okay";
36 broken-cd;
37 supports-highspeed;
38 card-detect-delay = <200>;
39 samsung,dw-mshc-ciu-div = <3>;
40 samsung,dw-mshc-sdr-timing = <0 4>;
41 samsung,dw-mshc-ddr-timing = <0 2>;
42 pinctrl-names = "default";
43 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
44
45 slot@0 {
46 reg = <0>;
47 bus-width = <8>;
48 };
49 };
50
51 mmc@12220000 {
52 status = "okay";
53 supports-highspeed;
54 card-detect-delay = <200>;
55 samsung,dw-mshc-ciu-div = <3>;
56 samsung,dw-mshc-sdr-timing = <2 3>;
57 samsung,dw-mshc-ddr-timing = <1 2>;
58 pinctrl-names = "default";
59 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
60
61 slot@0 {
62 reg = <0>;
63 bus-width = <4>;
64 };
65 };
66};
diff --git a/arch/arm/boot/dts/exynos5420-smdk5420.dts b/arch/arm/boot/dts/exynos5420-smdk5420.dts
index 79524c74c603..fb5a1e25c632 100644
--- a/arch/arm/boot/dts/exynos5420-smdk5420.dts
+++ b/arch/arm/boot/dts/exynos5420-smdk5420.dts
@@ -31,6 +31,39 @@
31 }; 31 };
32 }; 32 };
33 33
34 mmc@12200000 {
35 status = "okay";
36 broken-cd;
37 supports-highspeed;
38 card-detect-delay = <200>;
39 samsung,dw-mshc-ciu-div = <3>;
40 samsung,dw-mshc-sdr-timing = <0 4>;
41 samsung,dw-mshc-ddr-timing = <0 2>;
42 pinctrl-names = "default";
43 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus4 &sd0_bus8>;
44
45 slot@0 {
46 reg = <0>;
47 bus-width = <8>;
48 };
49 };
50
51 mmc@12220000 {
52 status = "okay";
53 supports-highspeed;
54 card-detect-delay = <200>;
55 samsung,dw-mshc-ciu-div = <3>;
56 samsung,dw-mshc-sdr-timing = <2 3>;
57 samsung,dw-mshc-ddr-timing = <1 2>;
58 pinctrl-names = "default";
59 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
60
61 slot@0 {
62 reg = <0>;
63 bus-width = <4>;
64 };
65 };
66
34 dp-controller@145B0000 { 67 dp-controller@145B0000 {
35 pinctrl-names = "default"; 68 pinctrl-names = "default";
36 pinctrl-0 = <&dp_hpd>; 69 pinctrl-0 = <&dp_hpd>;
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
index 09aa06cb3d3a..11dd202c54bb 100644
--- a/arch/arm/boot/dts/exynos5420.dtsi
+++ b/arch/arm/boot/dts/exynos5420.dtsi
@@ -22,6 +22,9 @@
22 compatible = "samsung,exynos5420"; 22 compatible = "samsung,exynos5420";
23 23
24 aliases { 24 aliases {
25 mshc0 = &mmc_0;
26 mshc1 = &mmc_1;
27 mshc2 = &mmc_2;
25 pinctrl0 = &pinctrl_0; 28 pinctrl0 = &pinctrl_0;
26 pinctrl1 = &pinctrl_1; 29 pinctrl1 = &pinctrl_1;
27 pinctrl2 = &pinctrl_2; 30 pinctrl2 = &pinctrl_2;
@@ -31,6 +34,18 @@
31 i2c1 = &i2c_1; 34 i2c1 = &i2c_1;
32 i2c2 = &i2c_2; 35 i2c2 = &i2c_2;
33 i2c3 = &i2c_3; 36 i2c3 = &i2c_3;
37 i2c4 = &hsi2c_4;
38 i2c5 = &hsi2c_5;
39 i2c6 = &hsi2c_6;
40 i2c7 = &hsi2c_7;
41 i2c8 = &hsi2c_8;
42 i2c9 = &hsi2c_9;
43 i2c10 = &hsi2c_10;
44 gsc0 = &gsc_0;
45 gsc1 = &gsc_1;
46 spi0 = &spi_0;
47 spi1 = &spi_1;
48 spi2 = &spi_2;
34 }; 49 };
35 50
36 cpus { 51 cpus {
@@ -64,6 +79,34 @@
64 reg = <0x3>; 79 reg = <0x3>;
65 clock-frequency = <1800000000>; 80 clock-frequency = <1800000000>;
66 }; 81 };
82
83 cpu4: cpu@100 {
84 device_type = "cpu";
85 compatible = "arm,cortex-a7";
86 reg = <0x100>;
87 clock-frequency = <1000000000>;
88 };
89
90 cpu5: cpu@101 {
91 device_type = "cpu";
92 compatible = "arm,cortex-a7";
93 reg = <0x101>;
94 clock-frequency = <1000000000>;
95 };
96
97 cpu6: cpu@102 {
98 device_type = "cpu";
99 compatible = "arm,cortex-a7";
100 reg = <0x102>;
101 clock-frequency = <1000000000>;
102 };
103
104 cpu7: cpu@103 {
105 device_type = "cpu";
106 compatible = "arm,cortex-a7";
107 reg = <0x103>;
108 clock-frequency = <1000000000>;
109 };
67 }; 110 };
68 111
69 clock: clock-controller@10010000 { 112 clock: clock-controller@10010000 {
@@ -88,13 +131,50 @@
88 clock-names = "mfc"; 131 clock-names = "mfc";
89 }; 132 };
90 133
134 mmc_0: mmc@12200000 {
135 compatible = "samsung,exynos5420-dw-mshc-smu";
136 interrupts = <0 75 0>;
137 #address-cells = <1>;
138 #size-cells = <0>;
139 reg = <0x12200000 0x2000>;
140 clocks = <&clock 351>, <&clock 132>;
141 clock-names = "biu", "ciu";
142 fifo-depth = <0x40>;
143 status = "disabled";
144 };
145
146 mmc_1: mmc@12210000 {
147 compatible = "samsung,exynos5420-dw-mshc-smu";
148 interrupts = <0 76 0>;
149 #address-cells = <1>;
150 #size-cells = <0>;
151 reg = <0x12210000 0x2000>;
152 clocks = <&clock 352>, <&clock 133>;
153 clock-names = "biu", "ciu";
154 fifo-depth = <0x40>;
155 status = "disabled";
156 };
157
158 mmc_2: mmc@12220000 {
159 compatible = "samsung,exynos5420-dw-mshc";
160 interrupts = <0 77 0>;
161 #address-cells = <1>;
162 #size-cells = <0>;
163 reg = <0x12220000 0x1000>;
164 clocks = <&clock 353>, <&clock 134>;
165 clock-names = "biu", "ciu";
166 fifo-depth = <0x40>;
167 status = "disabled";
168 };
169
91 mct@101C0000 { 170 mct@101C0000 {
92 compatible = "samsung,exynos4210-mct"; 171 compatible = "samsung,exynos4210-mct";
93 reg = <0x101C0000 0x800>; 172 reg = <0x101C0000 0x800>;
94 interrupt-controller; 173 interrupt-controller;
95 #interrups-cells = <1>; 174 #interrups-cells = <1>;
96 interrupt-parent = <&mct_map>; 175 interrupt-parent = <&mct_map>;
97 interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>; 176 interrupts = <0>, <1>, <2>, <3>, <4>, <5>, <6>, <7>,
177 <8>, <9>, <10>, <11>;
98 clocks = <&clock 1>, <&clock 315>; 178 clocks = <&clock 1>, <&clock 315>;
99 clock-names = "fin_pll", "mct"; 179 clock-names = "fin_pll", "mct";
100 180
@@ -109,7 +189,11 @@
109 <4 &gic 0 120 0>, 189 <4 &gic 0 120 0>,
110 <5 &gic 0 121 0>, 190 <5 &gic 0 121 0>,
111 <6 &gic 0 122 0>, 191 <6 &gic 0 122 0>,
112 <7 &gic 0 123 0>; 192 <7 &gic 0 123 0>,
193 <8 &gic 0 128 0>,
194 <9 &gic 0 129 0>,
195 <10 &gic 0 130 0>,
196 <11 &gic 0 131 0>;
113 }; 197 };
114 }; 198 };
115 199
@@ -190,6 +274,106 @@
190 status = "okay"; 274 status = "okay";
191 }; 275 };
192 276
277 amba {
278 #address-cells = <1>;
279 #size-cells = <1>;
280 compatible = "arm,amba-bus";
281 interrupt-parent = <&gic>;
282 ranges;
283
284 pdma0: pdma@121A0000 {
285 compatible = "arm,pl330", "arm,primecell";
286 reg = <0x121A0000 0x1000>;
287 interrupts = <0 34 0>;
288 clocks = <&clock 362>;
289 clock-names = "apb_pclk";
290 #dma-cells = <1>;
291 #dma-channels = <8>;
292 #dma-requests = <32>;
293 };
294
295 pdma1: pdma@121B0000 {
296 compatible = "arm,pl330", "arm,primecell";
297 reg = <0x121B0000 0x1000>;
298 interrupts = <0 35 0>;
299 clocks = <&clock 363>;
300 clock-names = "apb_pclk";
301 #dma-cells = <1>;
302 #dma-channels = <8>;
303 #dma-requests = <32>;
304 };
305
306 mdma0: mdma@10800000 {
307 compatible = "arm,pl330", "arm,primecell";
308 reg = <0x10800000 0x1000>;
309 interrupts = <0 33 0>;
310 clocks = <&clock 473>;
311 clock-names = "apb_pclk";
312 #dma-cells = <1>;
313 #dma-channels = <8>;
314 #dma-requests = <1>;
315 };
316
317 mdma1: mdma@11C10000 {
318 compatible = "arm,pl330", "arm,primecell";
319 reg = <0x11C10000 0x1000>;
320 interrupts = <0 124 0>;
321 clocks = <&clock 442>;
322 clock-names = "apb_pclk";
323 #dma-cells = <1>;
324 #dma-channels = <8>;
325 #dma-requests = <1>;
326 };
327 };
328
329 spi_0: spi@12d20000 {
330 compatible = "samsung,exynos4210-spi";
331 reg = <0x12d20000 0x100>;
332 interrupts = <0 66 0>;
333 dmas = <&pdma0 5
334 &pdma0 4>;
335 dma-names = "tx", "rx";
336 #address-cells = <1>;
337 #size-cells = <0>;
338 pinctrl-names = "default";
339 pinctrl-0 = <&spi0_bus>;
340 clocks = <&clock 271>, <&clock 135>;
341 clock-names = "spi", "spi_busclk0";
342 status = "disabled";
343 };
344
345 spi_1: spi@12d30000 {
346 compatible = "samsung,exynos4210-spi";
347 reg = <0x12d30000 0x100>;
348 interrupts = <0 67 0>;
349 dmas = <&pdma1 5
350 &pdma1 4>;
351 dma-names = "tx", "rx";
352 #address-cells = <1>;
353 #size-cells = <0>;
354 pinctrl-names = "default";
355 pinctrl-0 = <&spi1_bus>;
356 clocks = <&clock 272>, <&clock 136>;
357 clock-names = "spi", "spi_busclk0";
358 status = "disabled";
359 };
360
361 spi_2: spi@12d40000 {
362 compatible = "samsung,exynos4210-spi";
363 reg = <0x12d40000 0x100>;
364 interrupts = <0 68 0>;
365 dmas = <&pdma0 7
366 &pdma0 6>;
367 dma-names = "tx", "rx";
368 #address-cells = <1>;
369 #size-cells = <0>;
370 pinctrl-names = "default";
371 pinctrl-0 = <&spi2_bus>;
372 clocks = <&clock 273>, <&clock 137>;
373 clock-names = "spi", "spi_busclk0";
374 status = "disabled";
375 };
376
193 serial@12C00000 { 377 serial@12C00000 {
194 clocks = <&clock 257>, <&clock 128>; 378 clocks = <&clock 257>, <&clock 128>;
195 clock-names = "uart", "clk_uart_baud0"; 379 clock-names = "uart", "clk_uart_baud0";
@@ -210,6 +394,15 @@
210 clock-names = "uart", "clk_uart_baud0"; 394 clock-names = "uart", "clk_uart_baud0";
211 }; 395 };
212 396
397 pwm: pwm@12dd0000 {
398 compatible = "samsung,exynos4210-pwm";
399 reg = <0x12dd0000 0x100>;
400 samsung,pwm-outputs = <0>, <1>, <2>, <3>;
401 #pwm-cells = <3>;
402 clocks = <&clock 279>;
403 clock-names = "timers";
404 };
405
213 dp_phy: video-phy@10040728 { 406 dp_phy: video-phy@10040728 {
214 compatible = "samsung,exynos5250-dp-video-phy"; 407 compatible = "samsung,exynos5250-dp-video-phy";
215 reg = <0x10040728 4>; 408 reg = <0x10040728 4>;
@@ -292,6 +485,97 @@
292 status = "disabled"; 485 status = "disabled";
293 }; 486 };
294 487
488 hsi2c_4: i2c@12CA0000 {
489 compatible = "samsung,exynos5-hsi2c";
490 reg = <0x12CA0000 0x1000>;
491 interrupts = <0 60 0>;
492 #address-cells = <1>;
493 #size-cells = <0>;
494 pinctrl-names = "default";
495 pinctrl-0 = <&i2c4_hs_bus>;
496 clocks = <&clock 265>;
497 clock-names = "hsi2c";
498 status = "disabled";
499 };
500
501 hsi2c_5: i2c@12CB0000 {
502 compatible = "samsung,exynos5-hsi2c";
503 reg = <0x12CB0000 0x1000>;
504 interrupts = <0 61 0>;
505 #address-cells = <1>;
506 #size-cells = <0>;
507 pinctrl-names = "default";
508 pinctrl-0 = <&i2c5_hs_bus>;
509 clocks = <&clock 266>;
510 clock-names = "hsi2c";
511 status = "disabled";
512 };
513
514 hsi2c_6: i2c@12CC0000 {
515 compatible = "samsung,exynos5-hsi2c";
516 reg = <0x12CC0000 0x1000>;
517 interrupts = <0 62 0>;
518 #address-cells = <1>;
519 #size-cells = <0>;
520 pinctrl-names = "default";
521 pinctrl-0 = <&i2c6_hs_bus>;
522 clocks = <&clock 267>;
523 clock-names = "hsi2c";
524 status = "disabled";
525 };
526
527 hsi2c_7: i2c@12CD0000 {
528 compatible = "samsung,exynos5-hsi2c";
529 reg = <0x12CD0000 0x1000>;
530 interrupts = <0 63 0>;
531 #address-cells = <1>;
532 #size-cells = <0>;
533 pinctrl-names = "default";
534 pinctrl-0 = <&i2c7_hs_bus>;
535 clocks = <&clock 268>;
536 clock-names = "hsi2c";
537 status = "disabled";
538 };
539
540 hsi2c_8: i2c@12E00000 {
541 compatible = "samsung,exynos5-hsi2c";
542 reg = <0x12E00000 0x1000>;
543 interrupts = <0 87 0>;
544 #address-cells = <1>;
545 #size-cells = <0>;
546 pinctrl-names = "default";
547 pinctrl-0 = <&i2c8_hs_bus>;
548 clocks = <&clock 281>;
549 clock-names = "hsi2c";
550 status = "disabled";
551 };
552
553 hsi2c_9: i2c@12E10000 {
554 compatible = "samsung,exynos5-hsi2c";
555 reg = <0x12E10000 0x1000>;
556 interrupts = <0 88 0>;
557 #address-cells = <1>;
558 #size-cells = <0>;
559 pinctrl-names = "default";
560 pinctrl-0 = <&i2c9_hs_bus>;
561 clocks = <&clock 282>;
562 clock-names = "hsi2c";
563 status = "disabled";
564 };
565
566 hsi2c_10: i2c@12E20000 {
567 compatible = "samsung,exynos5-hsi2c";
568 reg = <0x12E20000 0x1000>;
569 interrupts = <0 203 0>;
570 #address-cells = <1>;
571 #size-cells = <0>;
572 pinctrl-names = "default";
573 pinctrl-0 = <&i2c10_hs_bus>;
574 clocks = <&clock 283>;
575 clock-names = "hsi2c";
576 status = "disabled";
577 };
578
295 hdmi@14530000 { 579 hdmi@14530000 {
296 compatible = "samsung,exynos4212-hdmi"; 580 compatible = "samsung,exynos4212-hdmi";
297 reg = <0x14530000 0x70000>; 581 reg = <0x14530000 0x70000>;
@@ -310,4 +594,62 @@
310 clocks = <&clock 431>, <&clock 143>; 594 clocks = <&clock 431>, <&clock 143>;
311 clock-names = "mixer", "sclk_hdmi"; 595 clock-names = "mixer", "sclk_hdmi";
312 }; 596 };
597
598 gsc_0: video-scaler@13e00000 {
599 compatible = "samsung,exynos5-gsc";
600 reg = <0x13e00000 0x1000>;
601 interrupts = <0 85 0>;
602 clocks = <&clock 465>;
603 clock-names = "gscl";
604 samsung,power-domain = <&gsc_pd>;
605 };
606
607 gsc_1: video-scaler@13e10000 {
608 compatible = "samsung,exynos5-gsc";
609 reg = <0x13e10000 0x1000>;
610 interrupts = <0 86 0>;
611 clocks = <&clock 466>;
612 clock-names = "gscl";
613 samsung,power-domain = <&gsc_pd>;
614 };
615
616 tmu_cpu0: tmu@10060000 {
617 compatible = "samsung,exynos5420-tmu";
618 reg = <0x10060000 0x100>;
619 interrupts = <0 65 0>;
620 clocks = <&clock 318>;
621 clock-names = "tmu_apbif";
622 };
623
624 tmu_cpu1: tmu@10064000 {
625 compatible = "samsung,exynos5420-tmu";
626 reg = <0x10064000 0x100>;
627 interrupts = <0 183 0>;
628 clocks = <&clock 318>;
629 clock-names = "tmu_apbif";
630 };
631
632 tmu_cpu2: tmu@10068000 {
633 compatible = "samsung,exynos5420-tmu-ext-triminfo";
634 reg = <0x10068000 0x100>, <0x1006c000 0x4>;
635 interrupts = <0 184 0>;
636 clocks = <&clock 318>, <&clock 318>;
637 clock-names = "tmu_apbif", "tmu_triminfo_apbif";
638 };
639
640 tmu_cpu3: tmu@1006c000 {
641 compatible = "samsung,exynos5420-tmu-ext-triminfo";
642 reg = <0x1006c000 0x100>, <0x100a0000 0x4>;
643 interrupts = <0 185 0>;
644 clocks = <&clock 318>, <&clock 319>;
645 clock-names = "tmu_apbif", "tmu_triminfo_apbif";
646 };
647
648 tmu_gpu: tmu@100a0000 {
649 compatible = "samsung,exynos5420-tmu-ext-triminfo";
650 reg = <0x100a0000 0x100>, <0x10068000 0x4>;
651 interrupts = <0 215 0>;
652 clocks = <&clock 319>, <&clock 318>;
653 clock-names = "tmu_apbif", "tmu_triminfo_apbif";
654 };
313}; 655};
diff --git a/arch/arm/boot/dts/exynos5440.dtsi b/arch/arm/boot/dts/exynos5440.dtsi
index 8da107088ce4..02a0a1226cef 100644
--- a/arch/arm/boot/dts/exynos5440.dtsi
+++ b/arch/arm/boot/dts/exynos5440.dtsi
@@ -29,7 +29,7 @@
29 #clock-cells = <1>; 29 #clock-cells = <1>;
30 }; 30 };
31 31
32 gic:interrupt-controller@2E0000 { 32 gic: interrupt-controller@2E0000 {
33 compatible = "arm,cortex-a15-gic"; 33 compatible = "arm,cortex-a15-gic";
34 #interrupt-cells = <3>; 34 #interrupt-cells = <3>;
35 interrupt-controller; 35 interrupt-controller;
diff --git a/arch/arm/boot/dts/integrator.dtsi b/arch/arm/boot/dts/integrator.dtsi
index 0f06f8687b0b..88e3d477bf16 100644
--- a/arch/arm/boot/dts/integrator.dtsi
+++ b/arch/arm/boot/dts/integrator.dtsi
@@ -10,6 +10,11 @@
10 reg = <0x10000000 0x200>; 10 reg = <0x10000000 0x200>;
11 }; 11 };
12 12
13 ebi@12000000 {
14 compatible = "arm,external-bus-interface";
15 reg = <0x12000000 0x100>;
16 };
17
13 timer@13000000 { 18 timer@13000000 {
14 reg = <0x13000000 0x100>; 19 reg = <0x13000000 0x100>;
15 interrupt-parent = <&pic>; 20 interrupt-parent = <&pic>;
diff --git a/arch/arm/boot/dts/k2hk-evm.dts b/arch/arm/boot/dts/k2hk-evm.dts
new file mode 100644
index 000000000000..eaefdfef65c3
--- /dev/null
+++ b/arch/arm/boot/dts/k2hk-evm.dts
@@ -0,0 +1,63 @@
1/*
2 * Copyright 2013 Texas Instruments, Inc.
3 *
4 * Keystone 2 Kepler/Hawking EVM device tree
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10/dts-v1/;
11
12#include "keystone.dtsi"
13
14/ {
15 compatible = "ti,keystone-evm";
16
17 soc {
18 clock {
19 refclksys: refclksys {
20 #clock-cells = <0>;
21 compatible = "fixed-clock";
22 clock-frequency = <122880000>;
23 clock-output-names = "refclk-sys";
24 };
25
26 refclkpass: refclkpass {
27 #clock-cells = <0>;
28 compatible = "fixed-clock";
29 clock-frequency = <122880000>;
30 clock-output-names = "refclk-pass";
31 };
32
33 refclkarm: refclkarm {
34 #clock-cells = <0>;
35 compatible = "fixed-clock";
36 clock-frequency = <125000000>;
37 clock-output-names = "refclk-arm";
38 };
39
40 refclkddr3a: refclkddr3a {
41 #clock-cells = <0>;
42 compatible = "fixed-clock";
43 clock-frequency = <100000000>;
44 clock-output-names = "refclk-ddr3a";
45 };
46
47 refclkddr3b: refclkddr3b {
48 #clock-cells = <0>;
49 compatible = "fixed-clock";
50 clock-frequency = <100000000>;
51 clock-output-names = "refclk-ddr3b";
52 };
53 };
54 };
55};
56
57&usb_phy {
58 status = "okay";
59};
60
61&usb {
62 status = "okay";
63};
diff --git a/arch/arm/boot/dts/keystone-clocks.dtsi b/arch/arm/boot/dts/keystone-clocks.dtsi
index d6713b113258..2363593e1050 100644
--- a/arch/arm/boot/dts/keystone-clocks.dtsi
+++ b/arch/arm/boot/dts/keystone-clocks.dtsi
@@ -13,17 +13,10 @@ clocks {
13 #size-cells = <1>; 13 #size-cells = <1>;
14 ranges; 14 ranges;
15 15
16 refclkmain: refclkmain {
17 #clock-cells = <0>;
18 compatible = "fixed-clock";
19 clock-frequency = <122880000>;
20 clock-output-names = "refclk-main";
21 };
22
23 mainpllclk: mainpllclk@2310110 { 16 mainpllclk: mainpllclk@2310110 {
24 #clock-cells = <0>; 17 #clock-cells = <0>;
25 compatible = "ti,keystone,main-pll-clock"; 18 compatible = "ti,keystone,main-pll-clock";
26 clocks = <&refclkmain>; 19 clocks = <&refclksys>;
27 reg = <0x02620350 4>, <0x02310110 4>; 20 reg = <0x02620350 4>, <0x02310110 4>;
28 reg-names = "control", "multiplier"; 21 reg-names = "control", "multiplier";
29 fixed-postdiv = <2>; 22 fixed-postdiv = <2>;
@@ -32,47 +25,43 @@ clocks {
32 papllclk: papllclk@2620358 { 25 papllclk: papllclk@2620358 {
33 #clock-cells = <0>; 26 #clock-cells = <0>;
34 compatible = "ti,keystone,pll-clock"; 27 compatible = "ti,keystone,pll-clock";
35 clocks = <&refclkmain>; 28 clocks = <&refclkpass>;
36 clock-output-names = "pa-pll-clk"; 29 clock-output-names = "pa-pll-clk";
37 reg = <0x02620358 4>; 30 reg = <0x02620358 4>;
38 reg-names = "control"; 31 reg-names = "control";
39 fixed-postdiv = <6>;
40 }; 32 };
41 33
42 ddr3allclk: ddr3apllclk@2620360 { 34 ddr3apllclk: ddr3apllclk@2620360 {
43 #clock-cells = <0>; 35 #clock-cells = <0>;
44 compatible = "ti,keystone,pll-clock"; 36 compatible = "ti,keystone,pll-clock";
45 clocks = <&refclkmain>; 37 clocks = <&refclkddr3a>;
46 clock-output-names = "ddr-3a-pll-clk"; 38 clock-output-names = "ddr-3a-pll-clk";
47 reg = <0x02620360 4>; 39 reg = <0x02620360 4>;
48 reg-names = "control"; 40 reg-names = "control";
49 fixed-postdiv = <6>;
50 }; 41 };
51 42
52 ddr3bllclk: ddr3bpllclk@2620368 { 43 ddr3bpllclk: ddr3bpllclk@2620368 {
53 #clock-cells = <0>; 44 #clock-cells = <0>;
54 compatible = "ti,keystone,pll-clock"; 45 compatible = "ti,keystone,pll-clock";
55 clocks = <&refclkmain>; 46 clocks = <&refclkddr3b>;
56 clock-output-names = "ddr-3b-pll-clk"; 47 clock-output-names = "ddr-3b-pll-clk";
57 reg = <0x02620368 4>; 48 reg = <0x02620368 4>;
58 reg-names = "control"; 49 reg-names = "control";
59 fixed-postdiv = <6>;
60 }; 50 };
61 51
62 armpllclk: armpllclk@2620370 { 52 armpllclk: armpllclk@2620370 {
63 #clock-cells = <0>; 53 #clock-cells = <0>;
64 compatible = "ti,keystone,pll-clock"; 54 compatible = "ti,keystone,pll-clock";
65 clocks = <&refclkmain>; 55 clocks = <&refclkarm>;
66 clock-output-names = "arm-pll-clk"; 56 clock-output-names = "arm-pll-clk";
67 reg = <0x02620370 4>; 57 reg = <0x02620370 4>;
68 reg-names = "control"; 58 reg-names = "control";
69 fixed-postdiv = <6>;
70 }; 59 };
71 60
72 mainmuxclk: mainmuxclk@2310108 { 61 mainmuxclk: mainmuxclk@2310108 {
73 #clock-cells = <0>; 62 #clock-cells = <0>;
74 compatible = "ti,keystone,pll-mux-clock"; 63 compatible = "ti,keystone,pll-mux-clock";
75 clocks = <&mainpllclk>, <&refclkmain>; 64 clocks = <&mainpllclk>, <&refclksys>;
76 reg = <0x02310108 4>; 65 reg = <0x02310108 4>;
77 bit-shift = <23>; 66 bit-shift = <23>;
78 bit-mask = <1>; 67 bit-mask = <1>;
@@ -135,6 +124,15 @@ clocks {
135 clock-output-names = "chipclk13"; 124 clock-output-names = "chipclk13";
136 }; 125 };
137 126
127 paclk13: paclk13 {
128 #clock-cells = <0>;
129 compatible = "fixed-factor-clock";
130 clocks = <&papllclk>;
131 clock-div = <3>;
132 clock-mult = <1>;
133 clock-output-names = "paclk13";
134 };
135
138 chipclk14: chipclk14 { 136 chipclk14: chipclk14 {
139 #clock-cells = <0>; 137 #clock-cells = <0>;
140 compatible = "fixed-factor-clock"; 138 compatible = "fixed-factor-clock";
diff --git a/arch/arm/boot/dts/keystone.dts b/arch/arm/boot/dts/keystone.dtsi
index 100bdf52b847..b4202907a27b 100644
--- a/arch/arm/boot/dts/keystone.dts
+++ b/arch/arm/boot/dts/keystone.dtsi
@@ -6,14 +6,12 @@
6 * published by the Free Software Foundation. 6 * published by the Free Software Foundation.
7 */ 7 */
8 8
9/dts-v1/;
10#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
11 10
12#include "skeleton.dtsi" 11#include "skeleton.dtsi"
13 12
14/ { 13/ {
15 model = "Texas Instruments Keystone 2 SoC"; 14 model = "Texas Instruments Keystone 2 SoC";
16 compatible = "ti,keystone-evm";
17 #address-cells = <2>; 15 #address-cells = <2>;
18 #size-cells = <2>; 16 #size-cells = <2>;
19 interrupt-parent = <&gic>; 17 interrupt-parent = <&gic>;
@@ -64,7 +62,11 @@
64 #address-cells = <1>; 62 #address-cells = <1>;
65 interrupt-controller; 63 interrupt-controller;
66 reg = <0x0 0x02561000 0x0 0x1000>, 64 reg = <0x0 0x02561000 0x0 0x1000>,
67 <0x0 0x02562000 0x0 0x2000>; 65 <0x0 0x02562000 0x0 0x2000>,
66 <0x0 0x02564000 0x0 0x1000>,
67 <0x0 0x02566000 0x0 0x2000>;
68 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
69 IRQ_TYPE_LEVEL_HIGH)>;
68 }; 70 };
69 71
70 timer { 72 timer {
@@ -179,5 +181,32 @@
179 interrupts = <GIC_SPI 300 IRQ_TYPE_EDGE_RISING>; 181 interrupts = <GIC_SPI 300 IRQ_TYPE_EDGE_RISING>;
180 clocks = <&clkspi>; 182 clocks = <&clkspi>;
181 }; 183 };
184
185 usb_phy: usb_phy@2620738 {
186 compatible = "ti,keystone-usbphy";
187 #address-cells = <1>;
188 #size-cells = <1>;
189 reg = <0x2620738 32>;
190 status = "disabled";
191 };
192
193 usb: usb@2680000 {
194 compatible = "ti,keystone-dwc3";
195 #address-cells = <1>;
196 #size-cells = <1>;
197 reg = <0x2680000 0x10000>;
198 clocks = <&clkusb>;
199 clock-names = "usb";
200 interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
201 ranges;
202 status = "disabled";
203
204 dwc3@2690000 {
205 compatible = "synopsys,dwc3";
206 reg = <0x2690000 0x70000>;
207 interrupts = <GIC_SPI 393 IRQ_TYPE_EDGE_RISING>;
208 usb-phy = <&usb_phy>, <&usb_phy>;
209 };
210 };
182 }; 211 };
183}; 212};
diff --git a/arch/arm/boot/dts/kirkwood-6192.dtsi b/arch/arm/boot/dts/kirkwood-6192.dtsi
new file mode 100644
index 000000000000..3916937d6818
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-6192.dtsi
@@ -0,0 +1,107 @@
1/ {
2 mbus {
3 pcie-controller {
4 compatible = "marvell,kirkwood-pcie";
5 status = "disabled";
6 device_type = "pci";
7
8 #address-cells = <3>;
9 #size-cells = <2>;
10
11 bus-range = <0x00 0xff>;
12
13 ranges =
14 <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000
15 0x82000000 0x1 0 MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
16 0x81000000 0x1 0 MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO */>;
17
18 pcie@1,0 {
19 device_type = "pci";
20 assigned-addresses = <0x82000800 0 0x00040000 0 0x2000>;
21 reg = <0x0800 0 0 0 0>;
22 #address-cells = <3>;
23 #size-cells = <2>;
24 #interrupt-cells = <1>;
25 ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
26 0x81000000 0 0 0x81000000 0x1 0 1 0>;
27 interrupt-map-mask = <0 0 0 0>;
28 interrupt-map = <0 0 0 0 &intc 9>;
29 marvell,pcie-port = <0>;
30 marvell,pcie-lane = <0>;
31 clocks = <&gate_clk 2>;
32 status = "disabled";
33 };
34 };
35 };
36
37 ocp@f1000000 {
38 pinctrl: pinctrl@10000 {
39 compatible = "marvell,88f6192-pinctrl";
40 reg = <0x10000 0x20>;
41
42 pmx_nand: pmx-nand {
43 marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3",
44 "mpp4", "mpp5", "mpp18",
45 "mpp19";
46 marvell,function = "nand";
47 };
48 pmx_sata0: pmx-sata0 {
49 marvell,pins = "mpp5", "mpp21", "mpp23";
50 marvell,function = "sata0";
51 };
52 pmx_sata1: pmx-sata1 {
53 marvell,pins = "mpp4", "mpp20", "mpp22";
54 marvell,function = "sata1";
55 };
56 pmx_spi: pmx-spi {
57 marvell,pins = "mpp0", "mpp1", "mpp2", "mpp3";
58 marvell,function = "spi";
59 };
60 pmx_twsi0: pmx-twsi0 {
61 marvell,pins = "mpp8", "mpp9";
62 marvell,function = "twsi0";
63 };
64 pmx_uart0: pmx-uart0 {
65 marvell,pins = "mpp10", "mpp11";
66 marvell,function = "uart0";
67 };
68 pmx_uart1: pmx-uart1 {
69 marvell,pins = "mpp13", "mpp14";
70 marvell,function = "uart1";
71 };
72 pmx_sdio: pmx-sdio {
73 marvell,pins = "mpp12", "mpp13", "mpp14",
74 "mpp15", "mpp16", "mpp17";
75 marvell,function = "sdio";
76 };
77 };
78
79 rtc@10300 {
80 compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
81 reg = <0x10300 0x20>;
82 interrupts = <53>;
83 clocks = <&gate_clk 7>;
84 };
85
86 sata@80000 {
87 compatible = "marvell,orion-sata";
88 reg = <0x80000 0x5000>;
89 interrupts = <21>;
90 clocks = <&gate_clk 14>, <&gate_clk 15>;
91 clock-names = "0", "1";
92 status = "disabled";
93 };
94
95 mvsdio@90000 {
96 compatible = "marvell,orion-sdio";
97 reg = <0x90000 0x200>;
98 interrupts = <28>;
99 clocks = <&gate_clk 4>;
100 bus-width = <4>;
101 cap-sdio-irq;
102 cap-sd-highspeed;
103 cap-mmc-highspeed;
104 status = "disabled";
105 };
106 };
107};
diff --git a/arch/arm/boot/dts/kirkwood-6281.dtsi b/arch/arm/boot/dts/kirkwood-6281.dtsi
index 650ef30e1856..416d96e1302f 100644
--- a/arch/arm/boot/dts/kirkwood-6281.dtsi
+++ b/arch/arm/boot/dts/kirkwood-6281.dtsi
@@ -89,6 +89,8 @@
89 interrupts = <21>; 89 interrupts = <21>;
90 clocks = <&gate_clk 14>, <&gate_clk 15>; 90 clocks = <&gate_clk 14>, <&gate_clk 15>;
91 clock-names = "0", "1"; 91 clock-names = "0", "1";
92 phys = <&sata_phy0>, <&sata_phy1>;
93 phy-names = "port0", "port1";
92 status = "disabled"; 94 status = "disabled";
93 }; 95 };
94 96
@@ -97,6 +99,8 @@
97 reg = <0x90000 0x200>; 99 reg = <0x90000 0x200>;
98 interrupts = <28>; 100 interrupts = <28>;
99 clocks = <&gate_clk 4>; 101 clocks = <&gate_clk 4>;
102 pinctrl-0 = <&pmx_sdio>;
103 pinctrl-names = "default";
100 bus-width = <4>; 104 bus-width = <4>;
101 cap-sdio-irq; 105 cap-sdio-irq;
102 cap-sd-highspeed; 106 cap-sd-highspeed;
diff --git a/arch/arm/boot/dts/kirkwood-6282.dtsi b/arch/arm/boot/dts/kirkwood-6282.dtsi
index 3933a331ddc2..2902e0d7971d 100644
--- a/arch/arm/boot/dts/kirkwood-6282.dtsi
+++ b/arch/arm/boot/dts/kirkwood-6282.dtsi
@@ -104,6 +104,12 @@
104 }; 104 };
105 }; 105 };
106 106
107 thermal@10078 {
108 compatible = "marvell,kirkwood-thermal";
109 reg = <0x10078 0x4>;
110 status = "okay";
111 };
112
107 rtc@10300 { 113 rtc@10300 {
108 compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc"; 114 compatible = "marvell,kirkwood-rtc", "marvell,orion-rtc";
109 reg = <0x10300 0x20>; 115 reg = <0x10300 0x20>;
@@ -111,12 +117,25 @@
111 clocks = <&gate_clk 7>; 117 clocks = <&gate_clk 7>;
112 }; 118 };
113 119
120 i2c@11100 {
121 compatible = "marvell,mv64xxx-i2c";
122 reg = <0x11100 0x20>;
123 #address-cells = <1>;
124 #size-cells = <0>;
125 interrupts = <32>;
126 clock-frequency = <100000>;
127 clocks = <&gate_clk 7>;
128 status = "disabled";
129 };
130
114 sata@80000 { 131 sata@80000 {
115 compatible = "marvell,orion-sata"; 132 compatible = "marvell,orion-sata";
116 reg = <0x80000 0x5000>; 133 reg = <0x80000 0x5000>;
117 interrupts = <21>; 134 interrupts = <21>;
118 clocks = <&gate_clk 14>, <&gate_clk 15>; 135 clocks = <&gate_clk 14>, <&gate_clk 15>;
119 clock-names = "0", "1"; 136 clock-names = "0", "1";
137 phys = <&sata_phy0>, <&sata_phy1>;
138 phy-names = "port0", "port1";
120 status = "disabled"; 139 status = "disabled";
121 }; 140 };
122 141
@@ -125,29 +144,13 @@
125 reg = <0x90000 0x200>; 144 reg = <0x90000 0x200>;
126 interrupts = <28>; 145 interrupts = <28>;
127 clocks = <&gate_clk 4>; 146 clocks = <&gate_clk 4>;
147 pinctrl-0 = <&pmx_sdio>;
148 pinctrl-names = "default";
128 bus-width = <4>; 149 bus-width = <4>;
129 cap-sdio-irq; 150 cap-sdio-irq;
130 cap-sd-highspeed; 151 cap-sd-highspeed;
131 cap-mmc-highspeed; 152 cap-mmc-highspeed;
132 status = "disabled"; 153 status = "disabled";
133 }; 154 };
134
135 thermal@10078 {
136 compatible = "marvell,kirkwood-thermal";
137 reg = <0x10078 0x4>;
138 status = "okay";
139 };
140
141 i2c@11100 {
142 compatible = "marvell,mv64xxx-i2c";
143 reg = <0x11100 0x20>;
144 #address-cells = <1>;
145 #size-cells = <0>;
146 interrupts = <32>;
147 clock-frequency = <100000>;
148 clocks = <&gate_clk 7>;
149 status = "disabled";
150 };
151
152 }; 155 };
153}; 156};
diff --git a/arch/arm/boot/dts/kirkwood-cloudbox.dts b/arch/arm/boot/dts/kirkwood-cloudbox.dts
index 142b9cd3b454..bb4df405527c 100644
--- a/arch/arm/boot/dts/kirkwood-cloudbox.dts
+++ b/arch/arm/boot/dts/kirkwood-cloudbox.dts
@@ -66,8 +66,8 @@
66 66
67 button@1 { 67 button@1 {
68 label = "Power push button"; 68 label = "Power push button";
69 linux,code = <116>; 69 linux,code = <KEY_POWER>;
70 gpios = <&gpio0 16 1>; 70 gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
71 }; 71 };
72 }; 72 };
73 73
@@ -76,17 +76,17 @@
76 76
77 red-fail { 77 red-fail {
78 label = "cloudbox:red:fail"; 78 label = "cloudbox:red:fail";
79 gpios = <&gpio0 14 0>; 79 gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
80 }; 80 };
81 blue-sata { 81 blue-sata {
82 label = "cloudbox:blue:sata"; 82 label = "cloudbox:blue:sata";
83 gpios = <&gpio0 15 0>; 83 gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
84 }; 84 };
85 }; 85 };
86 86
87 gpio_poweroff { 87 gpio_poweroff {
88 compatible = "gpio-poweroff"; 88 compatible = "gpio-poweroff";
89 gpios = <&gpio0 17 0>; 89 gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;
90 }; 90 };
91}; 91};
92 92
diff --git a/arch/arm/boot/dts/kirkwood-db.dtsi b/arch/arm/boot/dts/kirkwood-db.dtsi
index 053aa20fb30f..afebc1570318 100644
--- a/arch/arm/boot/dts/kirkwood-db.dtsi
+++ b/arch/arm/boot/dts/kirkwood-db.dtsi
@@ -51,8 +51,8 @@
51 mvsdio@90000 { 51 mvsdio@90000 {
52 pinctrl-0 = <&pmx_sdio_gpios>; 52 pinctrl-0 = <&pmx_sdio_gpios>;
53 pinctrl-names = "default"; 53 pinctrl-names = "default";
54 wp-gpios = <&gpio1 5 0>; 54 wp-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
55 cd-gpios = <&gpio1 6 0>; 55 cd-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
56 status = "okay"; 56 status = "okay";
57 }; 57 };
58 }; 58 };
diff --git a/arch/arm/boot/dts/kirkwood-dns320.dts b/arch/arm/boot/dts/kirkwood-dns320.dts
index e112ca62d978..bf7fe8ab88f4 100644
--- a/arch/arm/boot/dts/kirkwood-dns320.dts
+++ b/arch/arm/boot/dts/kirkwood-dns320.dts
@@ -24,24 +24,24 @@
24 24
25 blue-power { 25 blue-power {
26 label = "dns320:blue:power"; 26 label = "dns320:blue:power";
27 gpios = <&gpio0 26 1>; /* GPIO 26 Active Low */ 27 gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
28 linux,default-trigger = "default-on"; 28 default-state = "keep";
29 }; 29 };
30 blue-usb { 30 blue-usb {
31 label = "dns320:blue:usb"; 31 label = "dns320:blue:usb";
32 gpios = <&gpio1 11 1>; /* GPIO 43 Active Low */ 32 gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
33 }; 33 };
34 orange-l_hdd { 34 orange-l_hdd {
35 label = "dns320:orange:l_hdd"; 35 label = "dns320:orange:l_hdd";
36 gpios = <&gpio0 28 1>; /* GPIO 28 Active Low */ 36 gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
37 }; 37 };
38 orange-r_hdd { 38 orange-r_hdd {
39 label = "dns320:orange:r_hdd"; 39 label = "dns320:orange:r_hdd";
40 gpios = <&gpio0 27 1>; /* GPIO 27 Active Low */ 40 gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
41 }; 41 };
42 orange-usb { 42 orange-usb {
43 label = "dns320:orange:usb"; 43 label = "dns320:orange:usb";
44 gpios = <&gpio1 3 1>; /* GPIO 35 Active Low */ 44 gpios = <&gpio1 3 GPIO_ACTIVE_LOW>; /* GPIO 35 */
45 }; 45 };
46 }; 46 };
47 47
diff --git a/arch/arm/boot/dts/kirkwood-dns325.dts b/arch/arm/boot/dts/kirkwood-dns325.dts
index 5119fb8a8eb6..cb9978c652f2 100644
--- a/arch/arm/boot/dts/kirkwood-dns325.dts
+++ b/arch/arm/boot/dts/kirkwood-dns325.dts
@@ -24,24 +24,24 @@
24 24
25 white-power { 25 white-power {
26 label = "dns325:white:power"; 26 label = "dns325:white:power";
27 gpios = <&gpio0 26 1>; /* GPIO 26 Active Low */ 27 gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
28 linux,default-trigger = "default-on"; 28 default-state = "keep";
29 }; 29 };
30 white-usb { 30 white-usb {
31 label = "dns325:white:usb"; 31 label = "dns325:white:usb";
32 gpios = <&gpio1 11 1>; /* GPIO 43 Active Low */ 32 gpios = <&gpio1 11 GPIO_ACTIVE_LOW>; /* GPIO 43 */
33 }; 33 };
34 red-l_hdd { 34 red-l_hdd {
35 label = "dns325:red:l_hdd"; 35 label = "dns325:red:l_hdd";
36 gpios = <&gpio0 28 1>; /* GPIO 28 Active Low */ 36 gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
37 }; 37 };
38 red-r_hdd { 38 red-r_hdd {
39 label = "dns325:red:r_hdd"; 39 label = "dns325:red:r_hdd";
40 gpios = <&gpio0 27 1>; /* GPIO 27 Active Low */ 40 gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
41 }; 41 };
42 red-usb { 42 red-usb {
43 label = "dns325:red:usb"; 43 label = "dns325:red:usb";
44 gpios = <&gpio0 29 1>; /* GPIO 29 Active Low */ 44 gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
45 }; 45 };
46 }; 46 };
47 47
diff --git a/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
index aefa375a550d..12087566ac6d 100644
--- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi
+++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
@@ -15,18 +15,18 @@
15 15
16 button@1 { 16 button@1 {
17 label = "Power button"; 17 label = "Power button";
18 linux,code = <116>; 18 linux,code = <KEY_POWER>;
19 gpios = <&gpio1 2 1>; 19 gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
20 }; 20 };
21 button@2 { 21 button@2 {
22 label = "USB unmount button"; 22 label = "USB unmount button";
23 linux,code = <161>; 23 linux,code = <KEY_EJECTCD>;
24 gpios = <&gpio1 15 1>; 24 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
25 }; 25 };
26 button@3 { 26 button@3 {
27 label = "Reset button"; 27 label = "Reset button";
28 linux,code = <0x198>; 28 linux,code = <KEY_RESTART>;
29 gpios = <&gpio1 16 1>; 29 gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
30 }; 30 };
31 }; 31 };
32 32
@@ -35,8 +35,8 @@
35 compatible = "gpio-fan"; 35 compatible = "gpio-fan";
36 pinctrl-0 = <&pmx_fan_high_speed &pmx_fan_low_speed>; 36 pinctrl-0 = <&pmx_fan_high_speed &pmx_fan_low_speed>;
37 pinctrl-names = "default"; 37 pinctrl-names = "default";
38 gpios = <&gpio1 14 1 38 gpios = <&gpio1 14 GPIO_ACTIVE_LOW
39 &gpio1 13 1>; 39 &gpio1 13 GPIO_ACTIVE_LOW>;
40 gpio-fan,speed-map = <0 0 40 gpio-fan,speed-map = <0 0
41 3000 1 41 3000 1
42 6000 2>; 42 6000 2>;
@@ -46,7 +46,7 @@
46 compatible = "gpio-poweroff"; 46 compatible = "gpio-poweroff";
47 pinctrl-0 = <&pmx_power_off>; 47 pinctrl-0 = <&pmx_power_off>;
48 pinctrl-names = "default"; 48 pinctrl-names = "default";
49 gpios = <&gpio1 4 0>; 49 gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
50 }; 50 };
51 51
52 ocp@f1000000 { 52 ocp@f1000000 {
diff --git a/arch/arm/boot/dts/kirkwood-dockstar.dts b/arch/arm/boot/dts/kirkwood-dockstar.dts
index 33ff368fbfa5..2a41c75c5c21 100644
--- a/arch/arm/boot/dts/kirkwood-dockstar.dts
+++ b/arch/arm/boot/dts/kirkwood-dockstar.dts
@@ -42,12 +42,12 @@
42 42
43 health { 43 health {
44 label = "status:green:health"; 44 label = "status:green:health";
45 gpios = <&gpio1 14 1>; 45 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
46 linux,default-trigger = "default-on"; 46 default-state = "keep";
47 }; 47 };
48 fault { 48 fault {
49 label = "status:orange:fault"; 49 label = "status:orange:fault";
50 gpios = <&gpio1 15 1>; 50 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
51 }; 51 };
52 }; 52 };
53 regulators { 53 regulators {
diff --git a/arch/arm/boot/dts/kirkwood-dreamplug.dts b/arch/arm/boot/dts/kirkwood-dreamplug.dts
index 6f62af99c9cb..a7558375e06f 100644
--- a/arch/arm/boot/dts/kirkwood-dreamplug.dts
+++ b/arch/arm/boot/dts/kirkwood-dreamplug.dts
@@ -87,15 +87,15 @@
87 87
88 bluetooth { 88 bluetooth {
89 label = "dreamplug:blue:bluetooth"; 89 label = "dreamplug:blue:bluetooth";
90 gpios = <&gpio1 15 1>; 90 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
91 }; 91 };
92 wifi { 92 wifi {
93 label = "dreamplug:green:wifi"; 93 label = "dreamplug:green:wifi";
94 gpios = <&gpio1 16 1>; 94 gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
95 }; 95 };
96 wifi-ap { 96 wifi-ap {
97 label = "dreamplug:green:wifi_ap"; 97 label = "dreamplug:green:wifi_ap";
98 gpios = <&gpio1 17 1>; 98 gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
99 }; 99 };
100 }; 100 };
101}; 101};
diff --git a/arch/arm/boot/dts/kirkwood-goflexnet.dts b/arch/arm/boot/dts/kirkwood-goflexnet.dts
index a43bebb25110..c2e512953570 100644
--- a/arch/arm/boot/dts/kirkwood-goflexnet.dts
+++ b/arch/arm/boot/dts/kirkwood-goflexnet.dts
@@ -85,44 +85,44 @@
85 85
86 health { 86 health {
87 label = "status:green:health"; 87 label = "status:green:health";
88 gpios = <&gpio1 14 1>; 88 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
89 linux,default-trigger = "default-on"; 89 default-state = "keep";
90 }; 90 };
91 fault { 91 fault {
92 label = "status:orange:fault"; 92 label = "status:orange:fault";
93 gpios = <&gpio1 15 1>; 93 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
94 }; 94 };
95 left0 { 95 left0 {
96 label = "status:white:left0"; 96 label = "status:white:left0";
97 gpios = <&gpio1 10 0>; 97 gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
98 }; 98 };
99 left1 { 99 left1 {
100 label = "status:white:left1"; 100 label = "status:white:left1";
101 gpios = <&gpio1 11 0>; 101 gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
102 }; 102 };
103 left2 { 103 left2 {
104 label = "status:white:left2"; 104 label = "status:white:left2";
105 gpios = <&gpio1 12 0>; 105 gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
106 }; 106 };
107 left3 { 107 left3 {
108 label = "status:white:left3"; 108 label = "status:white:left3";
109 gpios = <&gpio1 13 0>; 109 gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
110 }; 110 };
111 right0 { 111 right0 {
112 label = "status:white:right0"; 112 label = "status:white:right0";
113 gpios = <&gpio1 6 0>; 113 gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
114 }; 114 };
115 right1 { 115 right1 {
116 label = "status:white:right1"; 116 label = "status:white:right1";
117 gpios = <&gpio1 7 0>; 117 gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
118 }; 118 };
119 right2 { 119 right2 {
120 label = "status:white:right2"; 120 label = "status:white:right2";
121 gpios = <&gpio1 8 0>; 121 gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
122 }; 122 };
123 right3 { 123 right3 {
124 label = "status:white:right3"; 124 label = "status:white:right3";
125 gpios = <&gpio1 9 0>; 125 gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
126 }; 126 };
127 }; 127 };
128 regulators { 128 regulators {
@@ -141,7 +141,7 @@
141 enable-active-high; 141 enable-active-high;
142 regulator-always-on; 142 regulator-always-on;
143 regulator-boot-on; 143 regulator-boot-on;
144 gpio = <&gpio0 29 0>; 144 gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
145 }; 145 };
146 }; 146 };
147}; 147};
diff --git a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
index d30a91a5047d..0b557d5cb723 100644
--- a/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
+++ b/arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
@@ -45,10 +45,10 @@
45 nr-ports = <1>; 45 nr-ports = <1>;
46 }; 46 };
47 47
48 /* AzureWave AW-GH381 WiFi/BT */
48 mvsdio@90000 { 49 mvsdio@90000 {
49 status = "okay"; 50 status = "okay";
50 /* No CD or WP GPIOs */ 51 non-removable;
51 broken-cd;
52 }; 52 };
53 }; 53 };
54 54
@@ -60,19 +60,19 @@
60 60
61 health-r { 61 health-r {
62 label = "guruplug:red:health"; 62 label = "guruplug:red:health";
63 gpios = <&gpio1 14 1>; 63 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
64 }; 64 };
65 health-g { 65 health-g {
66 label = "guruplug:green:health"; 66 label = "guruplug:green:health";
67 gpios = <&gpio1 15 1>; 67 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
68 }; 68 };
69 wmode-r { 69 wmode-r {
70 label = "guruplug:red:wmode"; 70 label = "guruplug:red:wmode";
71 gpios = <&gpio1 16 1>; 71 gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
72 }; 72 };
73 wmode-g { 73 wmode-g {
74 label = "guruplug:green:wmode"; 74 label = "guruplug:green:wmode";
75 gpios = <&gpio1 17 1>; 75 gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
76 }; 76 };
77 }; 77 };
78}; 78};
diff --git a/arch/arm/boot/dts/kirkwood-ib62x0.dts b/arch/arm/boot/dts/kirkwood-ib62x0.dts
index c5fb02f7ebc3..6ccc78866e6d 100644
--- a/arch/arm/boot/dts/kirkwood-ib62x0.dts
+++ b/arch/arm/boot/dts/kirkwood-ib62x0.dts
@@ -63,13 +63,13 @@
63 63
64 button@1 { 64 button@1 {
65 label = "USB Copy"; 65 label = "USB Copy";
66 linux,code = <133>; 66 linux,code = <KEY_COPY>;
67 gpios = <&gpio0 29 1>; 67 gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
68 }; 68 };
69 button@2 { 69 button@2 {
70 label = "Reset"; 70 label = "Reset";
71 linux,code = <0x198>; 71 linux,code = <KEY_RESTART>;
72 gpios = <&gpio0 28 1>; 72 gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
73 }; 73 };
74 }; 74 };
75 75
@@ -81,16 +81,16 @@
81 81
82 green-os { 82 green-os {
83 label = "ib62x0:green:os"; 83 label = "ib62x0:green:os";
84 gpios = <&gpio0 25 0>; 84 gpios = <&gpio0 25 GPIO_ACTIVE_HIGH>;
85 linux,default-trigger = "default-on"; 85 default-state = "keep";
86 }; 86 };
87 red-os { 87 red-os {
88 label = "ib62x0:red:os"; 88 label = "ib62x0:red:os";
89 gpios = <&gpio0 22 0>; 89 gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
90 }; 90 };
91 usb-copy { 91 usb-copy {
92 label = "ib62x0:red:usb_copy"; 92 label = "ib62x0:red:usb_copy";
93 gpios = <&gpio0 27 0>; 93 gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
94 }; 94 };
95 }; 95 };
96 96
@@ -98,7 +98,7 @@
98 compatible = "gpio-poweroff"; 98 compatible = "gpio-poweroff";
99 pinctrl-0 = <&pmx_power_off>; 99 pinctrl-0 = <&pmx_power_off>;
100 pinctrl-names = "default"; 100 pinctrl-names = "default";
101 gpios = <&gpio0 24 0>; 101 gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
102 }; 102 };
103}; 103};
104 104
diff --git a/arch/arm/boot/dts/kirkwood-iconnect.dts b/arch/arm/boot/dts/kirkwood-iconnect.dts
index 4a62b206f680..f7636291de77 100644
--- a/arch/arm/boot/dts/kirkwood-iconnect.dts
+++ b/arch/arm/boot/dts/kirkwood-iconnect.dts
@@ -94,37 +94,37 @@
94 94
95 led-level { 95 led-level {
96 label = "led_level"; 96 label = "led_level";
97 gpios = <&gpio1 9 0>; 97 gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
98 linux,default-trigger = "default-on"; 98 default-state = "on";
99 }; 99 };
100 power-blue { 100 power-blue {
101 label = "power:blue"; 101 label = "power:blue";
102 gpios = <&gpio1 10 0>; 102 gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
103 linux,default-trigger = "timer"; 103 default-state = "keep";
104 }; 104 };
105 power-red { 105 power-red {
106 label = "power:red"; 106 label = "power:red";
107 gpios = <&gpio1 11 0>; 107 gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
108 }; 108 };
109 usb1 { 109 usb1 {
110 label = "usb1:blue"; 110 label = "usb1:blue";
111 gpios = <&gpio1 12 0>; 111 gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
112 }; 112 };
113 usb2 { 113 usb2 {
114 label = "usb2:blue"; 114 label = "usb2:blue";
115 gpios = <&gpio1 13 0>; 115 gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
116 }; 116 };
117 usb3 { 117 usb3 {
118 label = "usb3:blue"; 118 label = "usb3:blue";
119 gpios = <&gpio1 14 0>; 119 gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
120 }; 120 };
121 usb4 { 121 usb4 {
122 label = "usb4:blue"; 122 label = "usb4:blue";
123 gpios = <&gpio1 15 0>; 123 gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
124 }; 124 };
125 otb { 125 otb {
126 label = "otb:blue"; 126 label = "otb:blue";
127 gpios = <&gpio1 16 0>; 127 gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
128 }; 128 };
129 }; 129 };
130 130
@@ -137,14 +137,14 @@
137 137
138 button@1 { 138 button@1 {
139 label = "OTB Button"; 139 label = "OTB Button";
140 linux,code = <133>; 140 linux,code = <KEY_COPY>;
141 gpios = <&gpio1 3 1>; 141 gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
142 debounce-interval = <100>; 142 debounce-interval = <100>;
143 }; 143 };
144 button@2 { 144 button@2 {
145 label = "Reset"; 145 label = "Reset";
146 linux,code = <0x198>; 146 linux,code = <KEY_RESTART>;
147 gpios = <&gpio0 12 1>; 147 gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
148 debounce-interval = <100>; 148 debounce-interval = <100>;
149 }; 149 };
150 }; 150 };
diff --git a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
index d15395d671ed..589000631b5a 100644
--- a/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
+++ b/arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
@@ -127,20 +127,20 @@
127 127
128 power_led { 128 power_led {
129 label = "status:white:power_led"; 129 label = "status:white:power_led";
130 gpios = <&gpio0 16 0>; 130 gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
131 linux,default-trigger = "default-on"; 131 default-state = "keep";
132 }; 132 };
133 rebuild_led { 133 rebuild_led {
134 label = "status:white:rebuild_led"; 134 label = "status:white:rebuild_led";
135 gpios = <&gpio1 4 0>; 135 gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
136 }; 136 };
137 health_led { 137 health_led {
138 label = "status:red:health_led"; 138 label = "status:red:health_led";
139 gpios = <&gpio1 5 0>; 139 gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
140 }; 140 };
141 backup_led { 141 backup_led {
142 label = "status:blue:backup_led"; 142 label = "status:blue:backup_led";
143 gpios = <&gpio0 15 0>; 143 gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
144 }; 144 };
145 }; 145 };
146 gpio-keys { 146 gpio-keys {
@@ -154,18 +154,18 @@
154 154
155 Power { 155 Power {
156 label = "Power Button"; 156 label = "Power Button";
157 linux,code = <116>; 157 linux,code = <KEY_POWER>;
158 gpios = <&gpio0 14 1>; 158 gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
159 }; 159 };
160 Reset { 160 Reset {
161 label = "Reset Button"; 161 label = "Reset Button";
162 linux,code = <0x198>; 162 linux,code = <KEY_RESTART>;
163 gpios = <&gpio0 12 1>; 163 gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
164 }; 164 };
165 OTB { 165 OTB {
166 label = "OTB Button"; 166 label = "OTB Button";
167 linux,code = <133>; 167 linux,code = <KEY_COPY>;
168 gpios = <&gpio1 3 1>; 168 gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
169 }; 169 };
170 }; 170 };
171}; 171};
diff --git a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
index cd44f37e54b5..5b5808ebc6e0 100644
--- a/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
+++ b/arch/arm/boot/dts/kirkwood-km_kirkwood.dts
@@ -38,8 +38,8 @@
38 38
39 i2c@0 { 39 i2c@0 {
40 compatible = "i2c-gpio"; 40 compatible = "i2c-gpio";
41 gpios = < &gpio0 8 0 /* sda */ 41 gpios = < &gpio0 8 GPIO_ACTIVE_HIGH /* sda */
42 &gpio0 9 0 >; /* scl */ 42 &gpio0 9 GPIO_ACTIVE_HIGH>; /* scl */
43 i2c-gpio,delay-us = <2>; /* ~100 kHz */ 43 i2c-gpio,delay-us = <2>; /* ~100 kHz */
44 }; 44 };
45}; 45};
diff --git a/arch/arm/boot/dts/kirkwood-laplug.dts b/arch/arm/boot/dts/kirkwood-laplug.dts
new file mode 100644
index 000000000000..c9e82eff9bf2
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-laplug.dts
@@ -0,0 +1,175 @@
1/*
2 * Copyright (C) 2013 Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/input.h>
13#include "kirkwood.dtsi"
14#include "kirkwood-6192.dtsi"
15
16/ {
17 model = "LaCie LaPlug";
18 compatible = "lacie,laplug", "marvell,kirkwood-88f6192", "marvell,kirkwood";
19
20 memory {
21 device_type = "memory";
22 reg = <0x00000000 0x8000000>; /* 128 MB */
23 };
24
25 chosen {
26 bootargs = "console=ttyS0,115200n8 earlyprintk";
27 };
28
29 mbus {
30 pcie-controller {
31 status = "okay";
32 pcie@1,0 {
33 status = "okay";
34 };
35 };
36 };
37
38 ocp@f1000000 {
39 serial@12000 {
40 pinctrl-0 = <&pmx_uart0>;
41 pinctrl-names = "default";
42 status = "okay";
43 };
44
45 i2c@11000 {
46 pinctrl-0 = <&pmx_twsi0>;
47 pinctrl-names = "default";
48 status = "okay";
49
50 eeprom@50 {
51 compatible = "at,24c04";
52 pagesize = <16>;
53 reg = <0x50>;
54 };
55 };
56
57 pinctrl: pinctrl@10000 {
58 pmx_usb_power_enable: pmx-usb-power-enable {
59 marvell,pins = "mpp14";
60 marvell,function = "gpio";
61 };
62 };
63 };
64
65 gpio_keys {
66 compatible = "gpio-keys";
67
68 button@1{
69 label = "Power push button";
70 linux,code = <KEY_POWER>;
71 gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
72 };
73 };
74
75 gpio-leds {
76 compatible = "gpio-leds";
77
78 red-fail {
79 label = "laplug_v2:red:power";
80 gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
81 };
82 blue-power {
83 label = "laplug_v2:blue:power";
84 gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
85 linux,default-trigger = "default-on";
86 };
87 };
88
89 gpio_poweroff {
90 compatible = "gpio-poweroff";
91 gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
92 };
93
94 regulators {
95 compatible = "simple-bus";
96 #address-cells = <1>;
97 #size-cells = <0>;
98 pinctrl-0 = <&pmx_usb_power_enable>;
99 pinctrl-names = "default";
100
101 usb_power_back1: regulator@1 {
102 compatible = "regulator-fixed";
103 reg = <1>;
104 regulator-name = "USB Power Back 1";
105 regulator-min-microvolt = <5000000>;
106 regulator-max-microvolt = <5000000>;
107 enable-active-high;
108 regulator-always-on;
109 regulator-boot-on;
110 gpio = <&gpio0 15 GPIO_ACTIVE_HIGH>;
111 };
112
113 usb_power_back2: regulator@2 {
114 compatible = "regulator-fixed";
115 reg = <2>;
116 regulator-name = "USB Power Back 2";
117 regulator-min-microvolt = <5000000>;
118 regulator-max-microvolt = <5000000>;
119 enable-active-high;
120 regulator-always-on;
121 regulator-boot-on;
122 gpio = <&gpio0 28 GPIO_ACTIVE_HIGH>;
123 };
124
125 usb_power_front: regulator@3 {
126 compatible = "regulator-fixed";
127 reg = <3>;
128 regulator-name = "USB Power Front";
129 regulator-min-microvolt = <5000000>;
130 regulator-max-microvolt = <5000000>;
131 enable-active-high;
132 regulator-always-on;
133 regulator-boot-on;
134 gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
135 };
136 };
137};
138
139&nand {
140 /* Total size : 512MB */
141 status = "okay";
142 pinctrl-0 = <&pmx_nand>;
143
144 partition@0 {
145 label = "u-boot";
146 reg = <0x0 0x100000>; /* 1MB */
147 read-only;
148 };
149
150 partition@100000 {
151 label = "uImage";
152 reg = <0x100000 0x1000000>; /* 16MB */
153 };
154
155 partition@1100000 {
156 label = "rootfs";
157 reg = <0x1100000 0x1EF00000>; /* 495MB */
158 };
159};
160
161&mdio {
162 status = "okay";
163
164 ethphy0: ethernet-phy@0 {
165 device_type = "ethernet-phy";
166 reg = <0>;
167 };
168};
169
170&eth0 {
171 status = "okay";
172 ethernet0-port@0 {
173 phy-handle = <&ethphy0>;
174 };
175};
diff --git a/arch/arm/boot/dts/kirkwood-lsxl.dtsi b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
index 4e8f9e42c592..fc1cd3b7b968 100644
--- a/arch/arm/boot/dts/kirkwood-lsxl.dtsi
+++ b/arch/arm/boot/dts/kirkwood-lsxl.dtsi
@@ -108,20 +108,20 @@
108 108
109 button@1 { 109 button@1 {
110 label = "Function Button"; 110 label = "Function Button";
111 linux,code = <357>; 111 linux,code = <KEY_OPTION>;
112 gpios = <&gpio1 9 1>; 112 gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
113 }; 113 };
114 button@2 { 114 button@2 {
115 label = "Power-on Switch"; 115 label = "Power-on Switch";
116 linux,code = <0>; 116 linux,code = <KEY_RESERVED>;
117 linux,input-type = <5>; 117 linux,input-type = <5>;
118 gpios = <&gpio1 10 1>; 118 gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
119 }; 119 };
120 button@3 { 120 button@3 {
121 label = "Power-auto Switch"; 121 label = "Power-auto Switch";
122 linux,code = <1>; 122 linux,code = <KEY_ESC>;
123 linux,input-type = <5>; 123 linux,input-type = <5>;
124 gpios = <&gpio1 11 1>; 124 gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
125 }; 125 };
126 }; 126 };
127 127
@@ -134,28 +134,28 @@
134 134
135 led@1 { 135 led@1 {
136 label = "lsxl:blue:func"; 136 label = "lsxl:blue:func";
137 gpios = <&gpio1 4 1>; 137 gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
138 }; 138 };
139 139
140 led@2 { 140 led@2 {
141 label = "lsxl:red:alarm"; 141 label = "lsxl:red:alarm";
142 gpios = <&gpio1 5 1>; 142 gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
143 }; 143 };
144 144
145 led@3 { 145 led@3 {
146 label = "lsxl:amber:info"; 146 label = "lsxl:amber:info";
147 gpios = <&gpio1 6 1>; 147 gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
148 }; 148 };
149 149
150 led@4 { 150 led@4 {
151 label = "lsxl:blue:power"; 151 label = "lsxl:blue:power";
152 gpios = <&gpio1 7 1>; 152 gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
153 linux,default-trigger = "default-on"; 153 default-state = "keep";
154 }; 154 };
155 155
156 led@5 { 156 led@5 {
157 label = "lsxl:red:func"; 157 label = "lsxl:red:func";
158 gpios = <&gpio1 16 1>; 158 gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
159 }; 159 };
160 }; 160 };
161 161
@@ -163,13 +163,13 @@
163 compatible = "gpio-fan"; 163 compatible = "gpio-fan";
164 pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>; 164 pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
165 pinctrl-names = "default"; 165 pinctrl-names = "default";
166 gpios = <&gpio0 19 1 166 gpios = <&gpio0 19 GPIO_ACTIVE_LOW
167 &gpio0 18 1>; 167 &gpio0 18 GPIO_ACTIVE_LOW>;
168 gpio-fan,speed-map = <0 3 168 gpio-fan,speed-map = <0 3
169 1500 2 169 1500 2
170 3250 1 170 3250 1
171 5000 0>; 171 5000 0>;
172 alarm-gpios = <&gpio1 8 0>; 172 alarm-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
173 }; 173 };
174 174
175 restart_poweroff { 175 restart_poweroff {
diff --git a/arch/arm/boot/dts/kirkwood-mplcec4.dts b/arch/arm/boot/dts/kirkwood-mplcec4.dts
index 6c1ec2786e6e..c20607cd7d7c 100644
--- a/arch/arm/boot/dts/kirkwood-mplcec4.dts
+++ b/arch/arm/boot/dts/kirkwood-mplcec4.dts
@@ -110,7 +110,7 @@
110 pinctrl-0 = <&pmx_sdio &pmx_sdio_cd>; 110 pinctrl-0 = <&pmx_sdio &pmx_sdio_cd>;
111 pinctrl-names = "default"; 111 pinctrl-names = "default";
112 status = "okay"; 112 status = "okay";
113 cd-gpios = <&gpio1 15 1>; 113 cd-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
114 /* No WP GPIO */ 114 /* No WP GPIO */
115 }; 115 };
116 }; 116 };
@@ -126,36 +126,36 @@
126 126
127 health { 127 health {
128 label = "status:green:health"; 128 label = "status:green:health";
129 gpios = <&gpio0 7 1>; 129 gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
130 }; 130 };
131 131
132 user1o { 132 user1o {
133 label = "user1:orange"; 133 label = "user1:orange";
134 gpios = <&gpio1 8 1>; 134 gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
135 default-state = "on"; 135 default-state = "on";
136 }; 136 };
137 137
138 user1g { 138 user1g {
139 label = "user1:green"; 139 label = "user1:green";
140 gpios = <&gpio1 9 1>; 140 gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
141 default-state = "on"; 141 default-state = "on";
142 }; 142 };
143 143
144 user0o { 144 user0o {
145 label = "user0:orange"; 145 label = "user0:orange";
146 gpios = <&gpio1 12 1>; 146 gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
147 default-state = "on"; 147 default-state = "on";
148 }; 148 };
149 149
150 user0g { 150 user0g {
151 label = "user0:green"; 151 label = "user0:green";
152 gpios = <&gpio1 13 1>; 152 gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
153 default-state = "on"; 153 default-state = "on";
154 }; 154 };
155 155
156 misc { 156 misc {
157 label = "status:orange:misc"; 157 label = "status:orange:misc";
158 gpios = <&gpio1 14 1>; 158 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
159 default-state = "on"; 159 default-state = "on";
160 }; 160 };
161 161
diff --git a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
index 6317e1d088b3..dc86429756d7 100644
--- a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
+++ b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
@@ -90,17 +90,17 @@
90 90
91 green-status { 91 green-status {
92 label = "gtw:green:Status"; 92 label = "gtw:green:Status";
93 gpios = <&gpio0 20 0>; 93 gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
94 }; 94 };
95 95
96 red-status { 96 red-status {
97 label = "gtw:red:Status"; 97 label = "gtw:red:Status";
98 gpios = <&gpio0 21 0>; 98 gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
99 }; 99 };
100 100
101 green-usb { 101 green-usb {
102 label = "gtw:green:USB"; 102 label = "gtw:green:USB";
103 gpios = <&gpio0 12 0>; 103 gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
104 }; 104 };
105 }; 105 };
106 106
@@ -113,13 +113,13 @@
113 113
114 button@1 { 114 button@1 {
115 label = "SWR Button"; 115 label = "SWR Button";
116 linux,code = <0x198>; /* KEY_RESTART */ 116 linux,code = <KEY_RESTART>;
117 gpios = <&gpio1 15 1>; 117 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
118 }; 118 };
119 button@2 { 119 button@2 {
120 label = "WPS Button"; 120 label = "WPS Button";
121 linux,code = <0x211>; /* KEY_WPS_BUTTON */ 121 linux,code = <KEY_WPS_BUTTON>;
122 gpios = <&gpio1 14 1>; 122 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
123 }; 123 };
124 }; 124 };
125}; 125};
diff --git a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
index e6a102cf424c..4d2a8db9ab77 100644
--- a/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
+++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
@@ -1,3 +1,14 @@
1/*
2 * Device Tree file for NETGEAR ReadyNAS Duo v2
3 *
4 * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
1/dts-v1/; 12/dts-v1/;
2 13
3#include "kirkwood.dtsi" 14#include "kirkwood.dtsi"
@@ -32,41 +43,50 @@
32 marvell,pins = "mpp47"; 43 marvell,pins = "mpp47";
33 marvell,function = "gpio"; 44 marvell,function = "gpio";
34 }; 45 };
46
35 pmx_button_backup: pmx-button-backup { 47 pmx_button_backup: pmx-button-backup {
36 marvell,pins = "mpp45"; 48 marvell,pins = "mpp45";
37 marvell,function = "gpio"; 49 marvell,function = "gpio";
38 }; 50 };
51
39 pmx_button_reset: pmx-button-reset { 52 pmx_button_reset: pmx-button-reset {
40 marvell,pins = "mpp13"; 53 marvell,pins = "mpp13";
41 marvell,function = "gpio"; 54 marvell,function = "gpio";
42 }; 55 };
56
43 pmx_led_blue_power: pmx-led-blue-power { 57 pmx_led_blue_power: pmx-led-blue-power {
44 marvell,pins = "mpp31"; 58 marvell,pins = "mpp31";
45 marvell,function = "gpio"; 59 marvell,function = "gpio";
46 }; 60 };
61
47 pmx_led_blue_activity: pmx-led-blue-activity { 62 pmx_led_blue_activity: pmx-led-blue-activity {
48 marvell,pins = "mpp38"; 63 marvell,pins = "mpp38";
49 marvell,function = "gpio"; 64 marvell,function = "gpio";
50 }; 65 };
66
51 pmx_led_blue_disk1: pmx-led-blue-disk1 { 67 pmx_led_blue_disk1: pmx-led-blue-disk1 {
52 marvell,pins = "mpp23"; 68 marvell,pins = "mpp23";
53 marvell,function = "gpio"; 69 marvell,function = "gpio";
54 }; 70 };
71
55 pmx_led_blue_disk2: pmx-led-blue-disk2 { 72 pmx_led_blue_disk2: pmx-led-blue-disk2 {
56 marvell,pins = "mpp22"; 73 marvell,pins = "mpp22";
57 marvell,function = "gpio"; 74 marvell,function = "gpio";
58 }; 75 };
76
59 pmx_led_blue_backup: pmx-led-blue-backup { 77 pmx_led_blue_backup: pmx-led-blue-backup {
60 marvell,pins = "mpp29"; 78 marvell,pins = "mpp29";
61 marvell,function = "gpio"; 79 marvell,function = "gpio";
62 }; 80 };
81
82 pmx_poweroff: pmx-poweroff {
83 marvell,pins = "mpp30";
84 marvell,function = "gpio";
85 };
63 }; 86 };
64 87
65 clocks { 88 clocks {
66 #address-cells = <1>; 89 g762_clk: g762-oscillator {
67 #size-cells = <0>;
68
69 g762_clk: fixedclk {
70 compatible = "fixed-clock"; 90 compatible = "fixed-clock";
71 #clock-cells = <0>; 91 #clock-cells = <0>;
72 clock-frequency = <8192>; 92 clock-frequency = <8192>;
@@ -112,69 +132,80 @@
112 132
113 power_led { 133 power_led {
114 label = "status:blue:power_led"; 134 label = "status:blue:power_led";
115 gpios = <&gpio0 31 1>; /* GPIO 31 Active Low */ 135 gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
116 linux,default-trigger = "default-on"; 136 default-state = "keep";
117 }; 137 };
138
118 activity_led { 139 activity_led {
119 label = "status:blue:activity_led"; 140 label = "status:blue:activity_led";
120 gpios = <&gpio1 6 1>; /* GPIO 38 Active Low */ 141 gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
121 }; 142 };
143
122 disk1_led { 144 disk1_led {
123 label = "status:blue:disk1_led"; 145 label = "status:blue:disk1_led";
124 gpios = <&gpio0 23 1>; /* GPIO 23 Active Low */ 146 gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
125 }; 147 };
148
126 disk2_led { 149 disk2_led {
127 label = "status:blue:disk2_led"; 150 label = "status:blue:disk2_led";
128 gpios = <&gpio0 22 1>; /* GPIO 22 Active Low */ 151 gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
129 }; 152 };
153
130 backup_led { 154 backup_led {
131 label = "status:blue:backup_led"; 155 label = "status:blue:backup_led";
132 gpios = <&gpio0 29 1>; /* GPIO 29 Active Low*/ 156 gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
133 }; 157 };
134 }; 158 };
135 159
136 gpio_keys { 160 gpio-keys {
137 compatible = "gpio-keys"; 161 compatible = "gpio-keys";
138 #address-cells = <1>;
139 #size-cells = <0>;
140 pinctrl-0 = <&pmx_button_power &pmx_button_backup 162 pinctrl-0 = <&pmx_button_power &pmx_button_backup
141 &pmx_button_reset>; 163 &pmx_button_reset>;
142 pinctrl-names = "default"; 164 pinctrl-names = "default";
143 165
144 button@1 { 166 power-button {
145 label = "Power Button"; 167 label = "Power Button";
146 linux,code = <116>; /* KEY_POWER */ 168 linux,code = <KEY_POWER>;
147 gpios = <&gpio1 15 1>; 169 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
148 }; 170 };
149 button@2 { 171
172 reset-button {
150 label = "Reset Button"; 173 label = "Reset Button";
151 linux,code = <0x198>; /* KEY_RESTART */ 174 linux,code = <KEY_RESTART>;
152 gpios = <&gpio0 13 1>; 175 gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
153 }; 176 };
154 button@3 { 177
178 backup-button {
155 label = "Backup Button"; 179 label = "Backup Button";
156 linux,code = <133>; /* KEY_COPY */ 180 linux,code = <KEY_COPY>;
157 gpios = <&gpio1 13 1>; 181 gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
158 }; 182 };
159 }; 183 };
160 184
161 regulators { 185 gpio-poweroff {
162 compatible = "simple-bus"; 186 compatible = "gpio-poweroff";
163 #address-cells = <1>; 187 pinctrl-0 = <&pmx_poweroff>;
164 #size-cells = <0>; 188 pinctrl-names = "default";
165 189 gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;
166 usb_power: regulator@1 { 190 };
167 compatible = "regulator-fixed"; 191
168 reg = <1>; 192 regulators {
169 regulator-name = "USB 3.0 Power"; 193 compatible = "simple-bus";
170 regulator-min-microvolt = <5000000>; 194 #address-cells = <1>;
171 regulator-max-microvolt = <5000000>; 195 #size-cells = <0>;
172 enable-active-high; 196
173 regulator-always-on; 197 usb3_regulator: usb3-regulator {
174 regulator-boot-on; 198 compatible = "regulator-fixed";
175 gpio = <&gpio1 14 0>; 199 reg = <1>;
176 }; 200 regulator-name = "USB 3.0 Power";
177 }; 201 regulator-min-microvolt = <5000000>;
202 regulator-max-microvolt = <5000000>;
203 enable-active-high;
204 regulator-always-on;
205 regulator-boot-on;
206 gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
207 };
208 };
178}; 209};
179 210
180&nand { 211&nand {
@@ -210,7 +241,7 @@
210&mdio { 241&mdio {
211 status = "okay"; 242 status = "okay";
212 243
213 ethphy0: ethernet-phy@0 { 244 ethphy0: ethernet-phy@0 { /* Marvell 88E1318 */
214 device_type = "ethernet-phy"; 245 device_type = "ethernet-phy";
215 reg = <0>; 246 reg = <0>;
216 }; 247 };
diff --git a/arch/arm/boot/dts/kirkwood-netgear_readynas_nv+_v2.dts b/arch/arm/boot/dts/kirkwood-netgear_readynas_nv+_v2.dts
new file mode 100644
index 000000000000..7c8a0d9d8d1f
--- /dev/null
+++ b/arch/arm/boot/dts/kirkwood-netgear_readynas_nv+_v2.dts
@@ -0,0 +1,268 @@
1/*
2 * Device Tree file for NETGEAR ReadyNAS NV+ v2
3 *
4 * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11
12/dts-v1/;
13
14#include "kirkwood.dtsi"
15#include "kirkwood-6282.dtsi"
16
17/ {
18 model = "NETGEAR ReadyNAS NV+ v2";
19 compatible = "netgear,readynas-nv+-v2", "netgear,readynas", "marvell,kirkwood-88f6282", "marvell,kirkwood";
20
21 memory { /* 256 MB */
22 device_type = "memory";
23 reg = <0x00000000 0x10000000>;
24 };
25
26 chosen {
27 bootargs = "console=ttyS0,115200n8 earlyprintk";
28 };
29
30 mbus {
31 pcie-controller {
32 status = "okay";
33
34 /* Connected to NEC uPD720200 USB 3.0 controller */
35 pcie@1,0 {
36 /* Port 0, Lane 0 */
37 status = "okay";
38 };
39 };
40 };
41
42 ocp@f1000000 {
43 pinctrl: pinctrl@10000 {
44 pmx_button_power: pmx-button-power {
45 marvell,pins = "mpp47";
46 marvell,function = "gpio";
47 };
48
49 pmx_button_backup: pmx-button-backup {
50 marvell,pins = "mpp45";
51 marvell,function = "gpio";
52 };
53
54 pmx_button_reset: pmx-button-reset {
55 marvell,pins = "mpp13";
56 marvell,function = "gpio";
57 };
58
59 pmx_led_blue_power: pmx-led-blue-power {
60 marvell,pins = "mpp31";
61 marvell,function = "gpio";
62 };
63
64 pmx_led_blue_backup: pmx-led-blue-backup {
65 marvell,pins = "mpp22";
66 marvell,function = "gpio";
67 };
68
69 pmx_led_blue_disk1: pmx-led-blue-disk1 {
70 marvell,pins = "mpp20";
71 marvell,function = "gpio";
72 };
73
74 pmx_led_blue_disk2: pmx-led-blue-disk2 {
75 marvell,pins = "mpp23";
76 marvell,function = "gpio";
77 };
78
79 pmx_led_blue_disk3: pmx-led-blue-disk3 {
80 marvell,pins = "mpp24";
81 marvell,function = "gpio";
82 };
83
84 pmx_led_blue_disk4: pmx-led-blue-disk4 {
85 marvell,pins = "mpp29";
86 marvell,function = "gpio";
87 };
88
89 pmx_poweroff: pmx-poweroff {
90 marvell,pins = "mpp30";
91 marvell,function = "gpio";
92 };
93 };
94
95 clocks {
96 g762_clk: g762-oscillator {
97 compatible = "fixed-clock";
98 #clock-cells = <0>;
99 clock-frequency = <8192>;
100 };
101 };
102
103 i2c@11000 {
104 status = "okay";
105
106 rs5c372a: rs5c372a@32 {
107 compatible = "ricoh,rs5c372a";
108 reg = <0x32>;
109 };
110
111 g762: g762@3e {
112 compatible = "gmt,g762";
113 reg = <0x3e>;
114 clocks = <&g762_clk>; /* input clock */
115 fan_gear_mode = <0>;
116 fan_startv = <1>;
117 pwm_polarity = <0>;
118 };
119 };
120
121 serial@12000 {
122 pinctrl-0 = <&pmx_uart0>;
123 pinctrl-names = "default";
124 status = "okay";
125 };
126
127 sata@80000 { /* Connected to Marvell 88SM4140 SATA port multiplier */
128 status = "okay";
129 nr-ports = <1>;
130 };
131 };
132
133 gpio-leds {
134 compatible = "gpio-leds";
135 pinctrl-0 = < &pmx_led_blue_power &pmx_led_blue_backup
136 &pmx_led_blue_disk1 &pmx_led_blue_disk2
137 &pmx_led_blue_disk3 &pmx_led_blue_disk3 >;
138 pinctrl-names = "default";
139
140 power_led {
141 label = "status:blue:power_led";
142 gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
143 linux,default-trigger = "default-on";
144 };
145
146 backup_led {
147 label = "status:blue:backup_led";
148 gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
149 };
150
151 disk1_led {
152 label = "status:blue:disk1_led";
153 gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
154 };
155
156 disk2_led {
157 label = "status:blue:disk2_led";
158 gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
159 };
160
161 disk3_led {
162 label = "status:blue:disk3_led";
163 gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
164 };
165
166 disk4_led {
167 label = "status:blue:disk4_led";
168 gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
169 };
170 };
171
172 gpio-keys {
173 compatible = "gpio-keys";
174 pinctrl-0 = <&pmx_button_power &pmx_button_backup
175 &pmx_button_reset>;
176 pinctrl-names = "default";
177
178 power-button {
179 label = "Power Button";
180 linux,code = <KEY_POWER>;
181 gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
182 };
183
184 reset-button {
185 label = "Reset Button";
186 linux,code = <KEY_RESTART>;
187 gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
188 };
189
190 backup-button {
191 label = "Backup Button";
192 linux,code = <KEY_COPY>;
193 gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
194 };
195 };
196
197 gpio-poweroff {
198 compatible = "gpio-poweroff";
199 pinctrl-0 = <&pmx_poweroff>;
200 pinctrl-names = "default";
201 gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;
202 };
203
204 regulators {
205 compatible = "simple-bus";
206 #address-cells = <1>;
207 #size-cells = <0>;
208
209 usb3_regulator: usb3-regulator {
210 compatible = "regulator-fixed";
211 reg = <1>;
212 regulator-name = "USB 3.0 Power";
213 regulator-min-microvolt = <5000000>;
214 regulator-max-microvolt = <5000000>;
215 enable-active-high;
216 regulator-always-on;
217 regulator-boot-on;
218 gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
219 };
220 };
221};
222
223&nand {
224 status = "okay";
225
226 partition@0 {
227 label = "u-boot";
228 reg = <0x0000000 0x180000>;
229 read-only;
230 };
231
232 partition@180000 {
233 label = "u-boot-env";
234 reg = <0x180000 0x20000>;
235 };
236
237 partition@200000 {
238 label = "uImage";
239 reg = <0x0200000 0x600000>;
240 };
241
242 partition@800000 {
243 label = "minirootfs";
244 reg = <0x0800000 0x1000000>;
245 };
246
247 partition@1800000 {
248 label = "jffs2";
249 reg = <0x1800000 0x6800000>;
250 };
251};
252
253&mdio {
254 status = "okay";
255
256 ethphy0: ethernet-phy@0 { /* Marvell 88E1318 */
257 device_type = "ethernet-phy";
258 reg = <0>;
259 };
260};
261
262&eth0 {
263 status = "okay";
264
265 ethernet0-port@0 {
266 phy-handle = <&ethphy0>;
267 };
268};
diff --git a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
index 2fcb82e20828..ae1ccbe41029 100644
--- a/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-ns2-common.dtsi
@@ -64,8 +64,8 @@
64 64
65 button@1 { 65 button@1 {
66 label = "Power push button"; 66 label = "Power push button";
67 linux,code = <116>; 67 linux,code = <KEY_POWER>;
68 gpios = <&gpio1 0 0>; 68 gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
69 }; 69 };
70 }; 70 };
71 71
@@ -74,13 +74,13 @@
74 74
75 red-fail { 75 red-fail {
76 label = "ns2:red:fail"; 76 label = "ns2:red:fail";
77 gpios = <&gpio0 12 0>; 77 gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
78 }; 78 };
79 }; 79 };
80 80
81 gpio_poweroff { 81 gpio_poweroff {
82 compatible = "gpio-poweroff"; 82 compatible = "gpio-poweroff";
83 gpios = <&gpio0 31 0>; 83 gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
84 }; 84 };
85 85
86}; 86};
diff --git a/arch/arm/boot/dts/kirkwood-ns2lite.dts b/arch/arm/boot/dts/kirkwood-ns2lite.dts
index 279607093cdb..1f2ca60d8b3d 100644
--- a/arch/arm/boot/dts/kirkwood-ns2lite.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2lite.dts
@@ -25,8 +25,8 @@
25 25
26 blue-sata { 26 blue-sata {
27 label = "ns2:blue:sata"; 27 label = "ns2:blue:sata";
28 gpios = <&gpio0 30 1>; 28 gpios = <&gpio0 30 GPIO_ACTIVE_LOW>;
29 linux,default-trigger = "default-on"; 29 linux,default-trigger = "ide-disk";
30 }; 30 };
31 }; 31 };
32}; 32};
diff --git a/arch/arm/boot/dts/kirkwood-ns2max.dts b/arch/arm/boot/dts/kirkwood-ns2max.dts
index defdc77fb550..72c78d0b1116 100644
--- a/arch/arm/boot/dts/kirkwood-ns2max.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2max.dts
@@ -22,10 +22,10 @@
22 22
23 gpio_fan { 23 gpio_fan {
24 compatible = "gpio-fan"; 24 compatible = "gpio-fan";
25 gpios = <&gpio0 22 1 25 gpios = <&gpio0 22 GPIO_ACTIVE_LOW
26 &gpio0 7 1 26 &gpio0 7 GPIO_ACTIVE_LOW
27 &gpio1 1 1 27 &gpio1 1 GPIO_ACTIVE_LOW
28 &gpio0 23 1>; 28 &gpio0 23 GPIO_ACTIVE_LOW>;
29 gpio-fan,speed-map = 29 gpio-fan,speed-map =
30 < 0 0 30 < 0 0
31 1500 15 31 1500 15
@@ -36,7 +36,7 @@
36 3300 10 36 3300 10
37 4300 9 37 4300 9
38 5500 8>; 38 5500 8>;
39 alarm-gpios = <&gpio0 25 1>; 39 alarm-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
40 }; 40 };
41 41
42 ns2-leds { 42 ns2-leds {
diff --git a/arch/arm/boot/dts/kirkwood-ns2mini.dts b/arch/arm/boot/dts/kirkwood-ns2mini.dts
index adbafdd90991..c441bf62c09f 100644
--- a/arch/arm/boot/dts/kirkwood-ns2mini.dts
+++ b/arch/arm/boot/dts/kirkwood-ns2mini.dts
@@ -23,10 +23,10 @@
23 23
24 gpio_fan { 24 gpio_fan {
25 compatible = "gpio-fan"; 25 compatible = "gpio-fan";
26 gpios = <&gpio0 22 1 26 gpios = <&gpio0 22 GPIO_ACTIVE_LOW
27 &gpio0 7 1 27 &gpio0 7 GPIO_ACTIVE_LOW
28 &gpio1 1 1 28 &gpio1 1 GPIO_ACTIVE_LOW
29 &gpio0 23 1>; 29 &gpio0 23 GPIO_ACTIVE_LOW>;
30 gpio-fan,speed-map = 30 gpio-fan,speed-map =
31 < 0 0 31 < 0 0
32 3000 15 32 3000 15
@@ -37,7 +37,7 @@
37 7140 10 37 7140 10
38 7980 9 38 7980 9
39 9200 8>; 39 9200 8>;
40 alarm-gpios = <&gpio0 25 1>; 40 alarm-gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
41 }; 41 };
42 42
43 ns2-leds { 43 ns2-leds {
diff --git a/arch/arm/boot/dts/kirkwood-nsa310-common.dtsi b/arch/arm/boot/dts/kirkwood-nsa310-common.dtsi
index e3f915defd3d..aa78c2d11fe7 100644
--- a/arch/arm/boot/dts/kirkwood-nsa310-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-nsa310-common.dtsi
@@ -40,7 +40,7 @@
40 compatible = "gpio-poweroff"; 40 compatible = "gpio-poweroff";
41 pinctrl-0 = <&pmx_pwr_off>; 41 pinctrl-0 = <&pmx_pwr_off>;
42 pinctrl-names = "default"; 42 pinctrl-names = "default";
43 gpios = <&gpio1 16 0>; 43 gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
44 }; 44 };
45 45
46 regulators { 46 regulators {
@@ -58,7 +58,7 @@
58 regulator-max-microvolt = <5000000>; 58 regulator-max-microvolt = <5000000>;
59 regulator-always-on; 59 regulator-always-on;
60 regulator-boot-on; 60 regulator-boot-on;
61 gpio = <&gpio0 21 0>; 61 gpio = <&gpio0 21 GPIO_ACTIVE_HIGH>;
62 }; 62 };
63 }; 63 };
64}; 64};
diff --git a/arch/arm/boot/dts/kirkwood-nsa310.dts b/arch/arm/boot/dts/kirkwood-nsa310.dts
index b5418bcaecce..03fa24cf3344 100644
--- a/arch/arm/boot/dts/kirkwood-nsa310.dts
+++ b/arch/arm/boot/dts/kirkwood-nsa310.dts
@@ -119,18 +119,18 @@
119 119
120 button@1 { 120 button@1 {
121 label = "Power Button"; 121 label = "Power Button";
122 linux,code = <116>; 122 linux,code = <KEY_POWER>;
123 gpios = <&gpio1 14 0>; 123 gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
124 }; 124 };
125 button@2 { 125 button@2 {
126 label = "Copy Button"; 126 label = "Copy Button";
127 linux,code = <133>; 127 linux,code = <KEY_COPY>;
128 gpios = <&gpio1 5 1>; 128 gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
129 }; 129 };
130 button@3 { 130 button@3 {
131 label = "Reset Button"; 131 label = "Reset Button";
132 linux,code = <0x198>; 132 linux,code = <KEY_RESTART>;
133 gpios = <&gpio1 4 1>; 133 gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
134 }; 134 };
135 }; 135 };
136 136
@@ -145,43 +145,43 @@
145 145
146 green-sys { 146 green-sys {
147 label = "nsa310:green:sys"; 147 label = "nsa310:green:sys";
148 gpios = <&gpio0 28 0>; 148 gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
149 }; 149 };
150 red-sys { 150 red-sys {
151 label = "nsa310:red:sys"; 151 label = "nsa310:red:sys";
152 gpios = <&gpio0 29 0>; 152 gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
153 }; 153 };
154 green-hdd { 154 green-hdd {
155 label = "nsa310:green:hdd"; 155 label = "nsa310:green:hdd";
156 gpios = <&gpio1 9 0>; 156 gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
157 }; 157 };
158 red-hdd { 158 red-hdd {
159 label = "nsa310:red:hdd"; 159 label = "nsa310:red:hdd";
160 gpios = <&gpio1 10 0>; 160 gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
161 }; 161 };
162 green-esata { 162 green-esata {
163 label = "nsa310:green:esata"; 163 label = "nsa310:green:esata";
164 gpios = <&gpio0 12 0>; 164 gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
165 }; 165 };
166 red-esata { 166 red-esata {
167 label = "nsa310:red:esata"; 167 label = "nsa310:red:esata";
168 gpios = <&gpio0 13 0>; 168 gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
169 }; 169 };
170 green-usb { 170 green-usb {
171 label = "nsa310:green:usb"; 171 label = "nsa310:green:usb";
172 gpios = <&gpio0 15 0>; 172 gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
173 }; 173 };
174 red-usb { 174 red-usb {
175 label = "nsa310:red:usb"; 175 label = "nsa310:red:usb";
176 gpios = <&gpio0 16 0>; 176 gpios = <&gpio0 16 GPIO_ACTIVE_HIGH>;
177 }; 177 };
178 green-copy { 178 green-copy {
179 label = "nsa310:green:copy"; 179 label = "nsa310:green:copy";
180 gpios = <&gpio1 7 0>; 180 gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
181 }; 181 };
182 red-copy { 182 red-copy {
183 label = "nsa310:red:copy"; 183 label = "nsa310:red:copy";
184 gpios = <&gpio1 8 0>; 184 gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
185 }; 185 };
186 }; 186 };
187}; 187};
diff --git a/arch/arm/boot/dts/kirkwood-nsa310a.dts b/arch/arm/boot/dts/kirkwood-nsa310a.dts
index ab0212b0e6f5..a5e779452867 100644
--- a/arch/arm/boot/dts/kirkwood-nsa310a.dts
+++ b/arch/arm/boot/dts/kirkwood-nsa310a.dts
@@ -107,18 +107,18 @@
107 107
108 button@1 { 108 button@1 {
109 label = "Power Button"; 109 label = "Power Button";
110 linux,code = <116>; 110 linux,code = <KEY_POWER>;
111 gpios = <&gpio1 14 0>; 111 gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
112 }; 112 };
113 button@2 { 113 button@2 {
114 label = "Copy Button"; 114 label = "Copy Button";
115 linux,code = <133>; 115 linux,code = <KEY_COPY>;
116 gpios = <&gpio1 5 1>; 116 gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
117 }; 117 };
118 button@3 { 118 button@3 {
119 label = "Reset Button"; 119 label = "Reset Button";
120 linux,code = <0x198>; 120 linux,code = <KEY_RESTART>;
121 gpios = <&gpio1 4 1>; 121 gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
122 }; 122 };
123 }; 123 };
124 124
@@ -127,39 +127,39 @@
127 127
128 green-sys { 128 green-sys {
129 label = "nsa310:green:sys"; 129 label = "nsa310:green:sys";
130 gpios = <&gpio0 28 0>; 130 gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
131 }; 131 };
132 red-sys { 132 red-sys {
133 label = "nsa310:red:sys"; 133 label = "nsa310:red:sys";
134 gpios = <&gpio0 29 0>; 134 gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
135 }; 135 };
136 green-hdd { 136 green-hdd {
137 label = "nsa310:green:hdd"; 137 label = "nsa310:green:hdd";
138 gpios = <&gpio1 9 0>; 138 gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
139 }; 139 };
140 red-hdd { 140 red-hdd {
141 label = "nsa310:red:hdd"; 141 label = "nsa310:red:hdd";
142 gpios = <&gpio1 10 0>; 142 gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
143 }; 143 };
144 green-esata { 144 green-esata {
145 label = "nsa310:green:esata"; 145 label = "nsa310:green:esata";
146 gpios = <&gpio0 12 0>; 146 gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
147 }; 147 };
148 red-esata { 148 red-esata {
149 label = "nsa310:red:esata"; 149 label = "nsa310:red:esata";
150 gpios = <&gpio0 13 0>; 150 gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
151 }; 151 };
152 green-usb { 152 green-usb {
153 label = "nsa310:green:usb"; 153 label = "nsa310:green:usb";
154 gpios = <&gpio0 15 0>; 154 gpios = <&gpio0 15 GPIO_ACTIVE_HIGH>;
155 }; 155 };
156 green-copy { 156 green-copy {
157 label = "nsa310:green:copy"; 157 label = "nsa310:green:copy";
158 gpios = <&gpio1 7 0>; 158 gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
159 }; 159 };
160 red-copy { 160 red-copy {
161 label = "nsa310:red:copy"; 161 label = "nsa310:red:copy";
162 gpios = <&gpio1 8 0>; 162 gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
163 }; 163 };
164 }; 164 };
165}; 165};
diff --git a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
index f0e3d213604c..5c6a4f1b4e93 100644
--- a/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
+++ b/arch/arm/boot/dts/kirkwood-openblocks_a6.dts
@@ -101,17 +101,17 @@
101 101
102 led-red { 102 led-red {
103 label = "obsa6:red:stat"; 103 label = "obsa6:red:stat";
104 gpios = <&gpio1 9 1>; 104 gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
105 }; 105 };
106 106
107 led-green { 107 led-green {
108 label = "obsa6:green:stat"; 108 label = "obsa6:green:stat";
109 gpios = <&gpio1 10 1>; 109 gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
110 }; 110 };
111 111
112 led-yellow { 112 led-yellow {
113 label = "obsa6:yellow:stat"; 113 label = "obsa6:yellow:stat";
114 gpios = <&gpio1 11 1>; 114 gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
115 }; 115 };
116 }; 116 };
117 117
@@ -124,8 +124,8 @@
124 124
125 button@1 { 125 button@1 {
126 label = "Init Button"; 126 label = "Init Button";
127 linux,code = <116>; 127 linux,code = <KEY_POWER>;
128 gpios = <&gpio1 6 0>; 128 gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
129 }; 129 };
130 }; 130 };
131}; 131};
diff --git a/arch/arm/boot/dts/kirkwood-openblocks_a7.dts b/arch/arm/boot/dts/kirkwood-openblocks_a7.dts
index 851fb2a60f20..c054ef61cff5 100644
--- a/arch/arm/boot/dts/kirkwood-openblocks_a7.dts
+++ b/arch/arm/boot/dts/kirkwood-openblocks_a7.dts
@@ -126,17 +126,17 @@
126 126
127 led-red { 127 led-red {
128 label = "obsa7:red:stat"; 128 label = "obsa7:red:stat";
129 gpios = <&gpio1 9 1>; 129 gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
130 }; 130 };
131 131
132 led-green { 132 led-green {
133 label = "obsa7:green:stat"; 133 label = "obsa7:green:stat";
134 gpios = <&gpio1 10 1>; 134 gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
135 }; 135 };
136 136
137 led-yellow { 137 led-yellow {
138 label = "obsa7:yellow:stat"; 138 label = "obsa7:yellow:stat";
139 gpios = <&gpio1 11 1>; 139 gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
140 }; 140 };
141 }; 141 };
142 142
@@ -149,8 +149,8 @@
149 149
150 button@1 { 150 button@1 {
151 label = "Init Button"; 151 label = "Init Button";
152 linux,code = <116>; 152 linux,code = <KEY_POWER>;
153 gpios = <&gpio1 6 0>; 153 gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
154 }; 154 };
155 }; 155 };
156}; 156};
diff --git a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
index 1173d7fb31b2..7b1cd993e891 100644
--- a/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
+++ b/arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
@@ -1,5 +1,5 @@
1/* 1/*
2 * kirkwood-sheevaplug-common.dts - Common parts for Sheevaplugs 2 * kirkwood-sheevaplug-common.dtsi - Common parts for Sheevaplugs
3 * 3 *
4 * Copyright (C) 2013 Simon Baatz <gmbnomis@gmail.com> 4 * Copyright (C) 2013 Simon Baatz <gmbnomis@gmail.com>
5 * 5 *
diff --git a/arch/arm/boot/dts/kirkwood-sheevaplug-esata.dts b/arch/arm/boot/dts/kirkwood-sheevaplug-esata.dts
index eac6a21f3b1f..e2b4ea4f9e10 100644
--- a/arch/arm/boot/dts/kirkwood-sheevaplug-esata.dts
+++ b/arch/arm/boot/dts/kirkwood-sheevaplug-esata.dts
@@ -24,8 +24,8 @@
24 pinctrl-0 = <&pmx_sdio &pmx_sdio_cd &pmx_sdio_wp>; 24 pinctrl-0 = <&pmx_sdio &pmx_sdio_cd &pmx_sdio_wp>;
25 pinctrl-names = "default"; 25 pinctrl-names = "default";
26 status = "okay"; 26 status = "okay";
27 cd-gpios = <&gpio1 12 1>; 27 cd-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
28 wp-gpios = <&gpio1 15 0>; 28 wp-gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
29 }; 29 };
30 }; 30 };
31 31
@@ -36,8 +36,8 @@
36 36
37 health { 37 health {
38 label = "sheevaplug:blue:health"; 38 label = "sheevaplug:blue:health";
39 gpios = <&gpio1 17 1>; 39 gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
40 linux,default-trigger = "default-on"; 40 default-state = "keep";
41 }; 41 };
42 }; 42 };
43}; 43};
diff --git a/arch/arm/boot/dts/kirkwood-sheevaplug.dts b/arch/arm/boot/dts/kirkwood-sheevaplug.dts
index bb61918313db..82f6abf120fd 100644
--- a/arch/arm/boot/dts/kirkwood-sheevaplug.dts
+++ b/arch/arm/boot/dts/kirkwood-sheevaplug.dts
@@ -1,5 +1,5 @@
1/* 1/*
2 * kirkwood-sheevaplug-esata.dts - Device tree file for Sheevaplug 2 * kirkwood-sheevaplug.dts - Device tree file for Sheevaplug
3 * 3 *
4 * Copyright (C) 2013 Simon Baatz <gmbnomis@gmail.com> 4 * Copyright (C) 2013 Simon Baatz <gmbnomis@gmail.com>
5 * 5 *
@@ -31,13 +31,13 @@
31 31
32 health { 32 health {
33 label = "sheevaplug:blue:health"; 33 label = "sheevaplug:blue:health";
34 gpios = <&gpio1 17 1>; 34 gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
35 linux,default-trigger = "default-on"; 35 default-state = "keep";
36 }; 36 };
37 37
38 misc { 38 misc {
39 label = "sheevaplug:red:misc"; 39 label = "sheevaplug:red:misc";
40 gpios = <&gpio1 14 1>; 40 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
41 }; 41 };
42 }; 42 };
43}; 43};
diff --git a/arch/arm/boot/dts/kirkwood-topkick.dts b/arch/arm/boot/dts/kirkwood-topkick.dts
index 320da677b984..40d6adf678ca 100644
--- a/arch/arm/boot/dts/kirkwood-topkick.dts
+++ b/arch/arm/boot/dts/kirkwood-topkick.dts
@@ -131,25 +131,25 @@
131 131
132 disk { 132 disk {
133 label = "topkick:yellow:disk"; 133 label = "topkick:yellow:disk";
134 gpios = <&gpio0 21 1>; 134 gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
135 linux,default-trigger = "ide-disk"; 135 linux,default-trigger = "ide-disk";
136 }; 136 };
137 system2 { 137 system2 {
138 label = "topkick:red:system"; 138 label = "topkick:red:system";
139 gpios = <&gpio1 5 1>; 139 gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
140 }; 140 };
141 system { 141 system {
142 label = "topkick:blue:system"; 142 label = "topkick:blue:system";
143 gpios = <&gpio1 6 1>; 143 gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
144 default-state = "on"; 144 default-state = "on";
145 }; 145 };
146 wifi { 146 wifi {
147 label = "topkick:green:wifi"; 147 label = "topkick:green:wifi";
148 gpios = <&gpio1 7 1>; 148 gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
149 }; 149 };
150 wifi2 { 150 wifi2 {
151 label = "topkick:yellow:wifi"; 151 label = "topkick:yellow:wifi";
152 gpios = <&gpio1 16 1>; 152 gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
153 }; 153 };
154 }; 154 };
155 regulators { 155 regulators {
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6281.dts b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
index f755bc1dc604..c17ae45e19be 100644
--- a/arch/arm/boot/dts/kirkwood-ts219-6281.dts
+++ b/arch/arm/boot/dts/kirkwood-ts219-6281.dts
@@ -41,13 +41,13 @@
41 41
42 button@1 { 42 button@1 {
43 label = "USB Copy"; 43 label = "USB Copy";
44 linux,code = <133>; 44 linux,code = <KEY_COPY>;
45 gpios = <&gpio0 15 1>; 45 gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
46 }; 46 };
47 button@2 { 47 button@2 {
48 label = "Reset"; 48 label = "Reset";
49 linux,code = <0x198>; 49 linux,code = <KEY_RESTART>;
50 gpios = <&gpio0 16 1>; 50 gpios = <&gpio0 16 GPIO_ACTIVE_LOW>;
51 }; 51 };
52 }; 52 };
53}; 53};
diff --git a/arch/arm/boot/dts/kirkwood-ts219-6282.dts b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
index 345562f75891..0713d072758a 100644
--- a/arch/arm/boot/dts/kirkwood-ts219-6282.dts
+++ b/arch/arm/boot/dts/kirkwood-ts219-6282.dts
@@ -51,13 +51,13 @@
51 51
52 button@1 { 52 button@1 {
53 label = "USB Copy"; 53 label = "USB Copy";
54 linux,code = <133>; 54 linux,code = <KEY_COPY>;
55 gpios = <&gpio1 11 1>; 55 gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
56 }; 56 };
57 button@2 { 57 button@2 {
58 label = "Reset"; 58 label = "Reset";
59 linux,code = <0x198>; 59 linux,code = <KEY_RESTART>;
60 gpios = <&gpio1 5 1>; 60 gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
61 }; 61 };
62 }; 62 };
63}; 63};
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 8b73c80f1dad..81e6c409284e 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -1,4 +1,6 @@
1/include/ "skeleton.dtsi" 1/include/ "skeleton.dtsi"
2#include <dt-bindings/input/input.h>
3#include <dt-bindings/gpio/gpio.h>
2 4
3#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 5#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
4 6
@@ -68,39 +70,21 @@
68 #address-cells = <1>; 70 #address-cells = <1>;
69 #size-cells = <1>; 71 #size-cells = <1>;
70 72
71 mbusc: mbus-controller@20000 {
72 compatible = "marvell,mbus-controller";
73 reg = <0x20000 0x80>, <0x1500 0x20>;
74 };
75
76 timer: timer@20300 {
77 compatible = "marvell,orion-timer";
78 reg = <0x20300 0x20>;
79 interrupt-parent = <&bridge_intc>;
80 interrupts = <1>, <2>;
81 clocks = <&core_clk 0>;
82 };
83
84 intc: main-interrupt-ctrl@20200 {
85 compatible = "marvell,orion-intc";
86 interrupt-controller;
87 #interrupt-cells = <1>;
88 reg = <0x20200 0x10>, <0x20210 0x10>;
89 };
90
91 bridge_intc: bridge-interrupt-ctrl@20110 {
92 compatible = "marvell,orion-bridge-intc";
93 interrupt-controller;
94 #interrupt-cells = <1>;
95 reg = <0x20110 0x8>;
96 interrupts = <1>;
97 marvell,#interrupts = <6>;
98 };
99
100 core_clk: core-clocks@10030 { 73 core_clk: core-clocks@10030 {
101 compatible = "marvell,kirkwood-core-clock"; 74 compatible = "marvell,kirkwood-core-clock";
102 reg = <0x10030 0x4>; 75 reg = <0x10030 0x4>;
103 #clock-cells = <1>; 76 #clock-cells = <1>;
77 };
78
79 spi@10600 {
80 compatible = "marvell,orion-spi";
81 #address-cells = <1>;
82 #size-cells = <0>;
83 cell-index = <0>;
84 interrupts = <23>;
85 reg = <0x10600 0x28>;
86 clocks = <&gate_clk 7>;
87 status = "disabled";
104 }; 88 };
105 89
106 gpio0: gpio@10100 { 90 gpio0: gpio@10100 {
@@ -127,6 +111,17 @@
127 clocks = <&gate_clk 7>; 111 clocks = <&gate_clk 7>;
128 }; 112 };
129 113
114 i2c@11000 {
115 compatible = "marvell,mv64xxx-i2c";
116 reg = <0x11000 0x20>;
117 #address-cells = <1>;
118 #size-cells = <0>;
119 interrupts = <29>;
120 clock-frequency = <100000>;
121 clocks = <&gate_clk 7>;
122 status = "disabled";
123 };
124
130 serial@12000 { 125 serial@12000 {
131 compatible = "ns16550a"; 126 compatible = "ns16550a";
132 reg = <0x12000 0x100>; 127 reg = <0x12000 0x100>;
@@ -145,15 +140,18 @@
145 status = "disabled"; 140 status = "disabled";
146 }; 141 };
147 142
148 spi@10600 { 143 mbusc: mbus-controller@20000 {
149 compatible = "marvell,orion-spi"; 144 compatible = "marvell,mbus-controller";
150 #address-cells = <1>; 145 reg = <0x20000 0x80>, <0x1500 0x20>;
151 #size-cells = <0>; 146 };
152 cell-index = <0>; 147
153 interrupts = <23>; 148 bridge_intc: bridge-interrupt-ctrl@20110 {
154 reg = <0x10600 0x28>; 149 compatible = "marvell,orion-bridge-intc";
155 clocks = <&gate_clk 7>; 150 interrupt-controller;
156 status = "disabled"; 151 #interrupt-cells = <1>;
152 reg = <0x20110 0x8>;
153 interrupts = <1>;
154 marvell,#interrupts = <6>;
157 }; 155 };
158 156
159 gate_clk: clock-gating-control@2011c { 157 gate_clk: clock-gating-control@2011c {
@@ -163,6 +161,21 @@
163 #clock-cells = <1>; 161 #clock-cells = <1>;
164 }; 162 };
165 163
164 intc: main-interrupt-ctrl@20200 {
165 compatible = "marvell,orion-intc";
166 interrupt-controller;
167 #interrupt-cells = <1>;
168 reg = <0x20200 0x10>, <0x20210 0x10>;
169 };
170
171 timer: timer@20300 {
172 compatible = "marvell,orion-timer";
173 reg = <0x20300 0x20>;
174 interrupt-parent = <&bridge_intc>;
175 interrupts = <1>, <2>;
176 clocks = <&core_clk 0>;
177 };
178
166 wdt: watchdog-timer@20300 { 179 wdt: watchdog-timer@20300 {
167 compatible = "marvell,orion-wdt"; 180 compatible = "marvell,orion-wdt";
168 reg = <0x20300 0x28>; 181 reg = <0x20300 0x28>;
@@ -172,6 +185,14 @@
172 status = "okay"; 185 status = "okay";
173 }; 186 };
174 187
188 ehci@50000 {
189 compatible = "marvell,orion-ehci";
190 reg = <0x50000 0x1000>;
191 interrupts = <19>;
192 clocks = <&gate_clk 3>;
193 status = "okay";
194 };
195
175 xor@60800 { 196 xor@60800 {
176 compatible = "marvell,orion-xor"; 197 compatible = "marvell,orion-xor";
177 reg = <0x60800 0x100 198 reg = <0x60800 0x100
@@ -212,37 +233,6 @@
212 }; 233 };
213 }; 234 };
214 235
215 ehci@50000 {
216 compatible = "marvell,orion-ehci";
217 reg = <0x50000 0x1000>;
218 interrupts = <19>;
219 clocks = <&gate_clk 3>;
220 status = "okay";
221 };
222
223 i2c@11000 {
224 compatible = "marvell,mv64xxx-i2c";
225 reg = <0x11000 0x20>;
226 #address-cells = <1>;
227 #size-cells = <0>;
228 interrupts = <29>;
229 clock-frequency = <100000>;
230 clocks = <&gate_clk 7>;
231 status = "disabled";
232 };
233
234 mdio: mdio-bus@72004 {
235 compatible = "marvell,orion-mdio";
236 #address-cells = <1>;
237 #size-cells = <0>;
238 reg = <0x72004 0x84>;
239 interrupts = <46>;
240 clocks = <&gate_clk 0>;
241 status = "disabled";
242
243 /* add phy nodes in board file */
244 };
245
246 eth0: ethernet-controller@72000 { 236 eth0: ethernet-controller@72000 {
247 compatible = "marvell,kirkwood-eth"; 237 compatible = "marvell,kirkwood-eth";
248 #address-cells = <1>; 238 #address-cells = <1>;
@@ -263,6 +253,18 @@
263 }; 253 };
264 }; 254 };
265 255
256 mdio: mdio-bus@72004 {
257 compatible = "marvell,orion-mdio";
258 #address-cells = <1>;
259 #size-cells = <0>;
260 reg = <0x72004 0x84>;
261 interrupts = <46>;
262 clocks = <&gate_clk 0>;
263 status = "disabled";
264
265 /* add phy nodes in board file */
266 };
267
266 eth1: ethernet-controller@76000 { 268 eth1: ethernet-controller@76000 {
267 compatible = "marvell,kirkwood-eth"; 269 compatible = "marvell,kirkwood-eth";
268 #address-cells = <1>; 270 #address-cells = <1>;
@@ -282,5 +284,23 @@
282 /* set phy-handle property in board file */ 284 /* set phy-handle property in board file */
283 }; 285 };
284 }; 286 };
287
288 sata_phy0: sata-phy@82000 {
289 compatible = "marvell,mvebu-sata-phy";
290 reg = <0x82000 0x0334>;
291 clocks = <&gate_clk 14>;
292 clock-names = "sata";
293 #phy-cells = <0>;
294 status = "ok";
295 };
296
297 sata_phy1: sata-phy@84000 {
298 compatible = "marvell,mvebu-sata-phy";
299 reg = <0x84000 0x0334>;
300 clocks = <&gate_clk 15>;
301 clock-names = "sata";
302 #phy-cells = <0>;
303 status = "ok";
304 };
285 }; 305 };
286}; 306};
diff --git a/arch/arm/boot/dts/moxart-uc7112lx.dts b/arch/arm/boot/dts/moxart-uc7112lx.dts
new file mode 100644
index 000000000000..90749d55de0d
--- /dev/null
+++ b/arch/arm/boot/dts/moxart-uc7112lx.dts
@@ -0,0 +1,109 @@
1/* moxart-uc7112lx.dts - Device Tree file for MOXA UC-7112-LX
2 *
3 * Copyright (C) 2013 Jonas Jensen <jonas.jensen@gmail.com>
4 *
5 * Licensed under GPLv2 or later.
6 */
7
8/dts-v1/;
9/include/ "moxart.dtsi"
10
11/ {
12 model = "MOXA UC-7112-LX";
13 compatible = "moxa,moxart-uc-7112-lx", "moxa,moxart";
14
15 memory {
16 device_type = "memory";
17 reg = <0x0 0x2000000>;
18 };
19
20 flash@80000000,0 {
21 compatible = "numonyx,js28f128", "cfi-flash";
22 reg = <0x80000000 0x1000000>;
23 bank-width = <2>;
24 #address-cells = <1>;
25 #size-cells = <1>;
26 partition@0 {
27 label = "bootloader";
28 reg = <0x0 0x40000>;
29 };
30 partition@40000 {
31 label = "linux kernel";
32 reg = <0x40000 0x1C0000>;
33 };
34 partition@200000 {
35 label = "root filesystem";
36 reg = <0x200000 0x800000>;
37 };
38 partition@a00000 {
39 label = "user filesystem";
40 reg = <0xa00000 0x600000>;
41 };
42 };
43
44 leds {
45 compatible = "gpio-leds";
46 user-led {
47 label = "ready-led";
48 gpios = <&gpio 27 0x1>;
49 default-state = "on";
50 linux,default-trigger = "default-on";
51 };
52 };
53
54 gpio_keys_polled {
55 compatible = "gpio-keys-polled";
56 #address-cells = <1>;
57 #size-cells = <0>;
58 poll-interval = <500>;
59 button@25 {
60 label = "GPIO Reset";
61 linux,code = <116>;
62 gpios = <&gpio 25 1>;
63 };
64 };
65
66 chosen {
67 bootargs = "console=ttyS0,115200n8 earlyprintk root=/dev/mmcblk0p1 rw rootwait";
68 };
69};
70
71&clk_pll {
72 clocks = <&ref12>;
73};
74
75&sdhci {
76 status = "okay";
77};
78
79&mdio0 {
80 status = "okay";
81
82 ethphy0: ethernet-phy@1 {
83 device_type = "ethernet-phy";
84 compatible = "moxa,moxart-rtl8201cp", "ethernet-phy-ieee802.3-c22";
85 reg = <1>;
86 };
87};
88
89&mdio1 {
90 status = "okay";
91
92 ethphy1: ethernet-phy@1 {
93 device_type = "ethernet-phy";
94 compatible = "moxa,moxart-rtl8201cp", "ethernet-phy-ieee802.3-c22";
95 reg = <1>;
96 };
97};
98
99&mac0 {
100 status = "okay";
101};
102
103&mac1 {
104 status = "okay";
105};
106
107&uart0 {
108 status = "okay";
109};
diff --git a/arch/arm/boot/dts/moxart.dtsi b/arch/arm/boot/dts/moxart.dtsi
new file mode 100644
index 000000000000..da1d8effef97
--- /dev/null
+++ b/arch/arm/boot/dts/moxart.dtsi
@@ -0,0 +1,154 @@
1/* moxart.dtsi - Device Tree Include file for MOXA ART family SoC
2 *
3 * Copyright (C) 2013 Jonas Jensen <jonas.jensen@gmail.com>
4 *
5 * Licensed under GPLv2 or later.
6 */
7
8/include/ "skeleton.dtsi"
9
10/ {
11 compatible = "moxa,moxart";
12 model = "MOXART";
13 interrupt-parent = <&intc>;
14
15 cpus {
16 #address-cells = <1>;
17 #size-cells = <0>;
18
19 cpu@0 {
20 device_type = "cpu";
21 compatible = "faraday,fa526";
22 reg = <0>;
23 };
24 };
25
26 clocks {
27 #address-cells = <1>;
28 #size-cells = <0>;
29
30 ref12: ref12M {
31 compatible = "fixed-clock";
32 #clock-cells = <0>;
33 clock-frequency = <12000000>;
34 };
35 };
36
37 soc {
38 compatible = "simple-bus";
39 #address-cells = <1>;
40 #size-cells = <1>;
41 reg = <0x90000000 0x10000000>;
42 ranges;
43
44 intc: interrupt-controller@98800000 {
45 compatible = "moxa,moxart-ic";
46 reg = <0x98800000 0x38>;
47 interrupt-controller;
48 #interrupt-cells = <2>;
49 interrupt-mask = <0x00080000>;
50 };
51
52 clk_pll: clk_pll@98100000 {
53 compatible = "moxa,moxart-pll-clock";
54 #clock-cells = <0>;
55 reg = <0x98100000 0x34>;
56 };
57
58 clk_apb: clk_apb@98100000 {
59 compatible = "moxa,moxart-apb-clock";
60 #clock-cells = <0>;
61 reg = <0x98100000 0x34>;
62 clocks = <&clk_pll>;
63 };
64
65 timer: timer@98400000 {
66 compatible = "moxa,moxart-timer";
67 reg = <0x98400000 0x42>;
68 interrupts = <19 1>;
69 clocks = <&clk_apb>;
70 };
71
72 gpio: gpio@98700000 {
73 gpio-controller;
74 #gpio-cells = <2>;
75 compatible = "moxa,moxart-gpio";
76 reg = <0x98700000 0xC>;
77 };
78
79 rtc: rtc {
80 compatible = "moxa,moxart-rtc";
81 gpio-rtc-sclk = <&gpio 5 0>;
82 gpio-rtc-data = <&gpio 6 0>;
83 gpio-rtc-reset = <&gpio 7 0>;
84 };
85
86 dma: dma@90500000 {
87 compatible = "moxa,moxart-dma";
88 reg = <0x90500080 0x40>;
89 interrupts = <24 0>;
90 #dma-cells = <1>;
91 };
92
93 watchdog: watchdog@98500000 {
94 compatible = "moxa,moxart-watchdog";
95 reg = <0x98500000 0x10>;
96 clocks = <&clk_apb>;
97 };
98
99 sdhci: sdhci@98e00000 {
100 compatible = "moxa,moxart-sdhci";
101 reg = <0x98e00000 0x5C>;
102 interrupts = <5 0>;
103 clocks = <&clk_apb>;
104 dmas = <&dma 5>,
105 <&dma 5>;
106 dma-names = "tx", "rx";
107 status = "disabled";
108 };
109
110 mdio0: mdio@90900090 {
111 compatible = "moxa,moxart-mdio";
112 reg = <0x90900090 0x8>;
113 #address-cells = <1>;
114 #size-cells = <0>;
115 status = "disabled";
116 };
117
118 mdio1: mdio@92000090 {
119 compatible = "moxa,moxart-mdio";
120 reg = <0x92000090 0x8>;
121 #address-cells = <1>;
122 #size-cells = <0>;
123 status = "disabled";
124 };
125
126 mac0: mac@90900000 {
127 compatible = "moxa,moxart-mac";
128 reg = <0x90900000 0x90>;
129 interrupts = <25 0>;
130 phy-handle = <&ethphy0>;
131 phy-mode = "mii";
132 status = "disabled";
133 };
134
135 mac1: mac@92000000 {
136 compatible = "moxa,moxart-mac";
137 reg = <0x92000000 0x90>;
138 interrupts = <27 0>;
139 phy-handle = <&ethphy1>;
140 phy-mode = "mii";
141 status = "disabled";
142 };
143
144 uart0: uart@98200000 {
145 compatible = "ns16550a";
146 reg = <0x98200000 0x20>;
147 interrupts = <31 8>;
148 reg-shift = <2>;
149 reg-io-width = <4>;
150 clock-frequency = <14745600>;
151 status = "disabled";
152 };
153 };
154};
diff --git a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
index aed83deaa991..fcc5bb63f03a 100644
--- a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
+++ b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
@@ -58,7 +58,7 @@
58 status = "okay"; 58 status = "okay";
59 59
60 ethphy: ethernet-phy { 60 ethphy: ethernet-phy {
61 device-type = "ethernet-phy"; 61 device_type = "ethernet-phy";
62 reg = <8>; 62 reg = <8>;
63 }; 63 };
64}; 64};
diff --git a/arch/arm/boot/dts/orion5x.dtsi b/arch/arm/boot/dts/orion5x.dtsi
index e06c37e91ac6..9f51538cd9ef 100644
--- a/arch/arm/boot/dts/orion5x.dtsi
+++ b/arch/arm/boot/dts/orion5x.dtsi
@@ -42,6 +42,25 @@
42 interrupts = <6>, <7>, <8>, <9>; 42 interrupts = <6>, <7>, <8>, <9>;
43 }; 43 };
44 44
45 spi@10600 {
46 compatible = "marvell,orion-spi";
47 #address-cells = <1>;
48 #size-cells = <0>;
49 cell-index = <0>;
50 reg = <0x10600 0x28>;
51 status = "disabled";
52 };
53
54 i2c@11000 {
55 compatible = "marvell,mv64xxx-i2c";
56 reg = <0x11000 0x20>;
57 #address-cells = <1>;
58 #size-cells = <0>;
59 interrupts = <5>;
60 clock-frequency = <100000>;
61 status = "disabled";
62 };
63
45 serial@12000 { 64 serial@12000 {
46 compatible = "ns16550a"; 65 compatible = "ns16550a";
47 reg = <0x12000 0x100>; 66 reg = <0x12000 0x100>;
@@ -60,15 +79,6 @@
60 status = "disabled"; 79 status = "disabled";
61 }; 80 };
62 81
63 spi@10600 {
64 compatible = "marvell,orion-spi";
65 #address-cells = <1>;
66 #size-cells = <0>;
67 cell-index = <0>;
68 reg = <0x10600 0x28>;
69 status = "disabled";
70 };
71
72 wdt@20300 { 82 wdt@20300 {
73 compatible = "marvell,orion-wdt"; 83 compatible = "marvell,orion-wdt";
74 reg = <0x20300 0x28>; 84 reg = <0x20300 0x28>;
@@ -82,30 +92,6 @@
82 status = "disabled"; 92 status = "disabled";
83 }; 93 };
84 94
85 ehci@a0000 {
86 compatible = "marvell,orion-ehci";
87 reg = <0xa0000 0x1000>;
88 interrupts = <12>;
89 status = "disabled";
90 };
91
92 sata@80000 {
93 compatible = "marvell,orion-sata";
94 reg = <0x80000 0x5000>;
95 interrupts = <29>;
96 status = "disabled";
97 };
98
99 i2c@11000 {
100 compatible = "marvell,mv64xxx-i2c";
101 reg = <0x11000 0x20>;
102 #address-cells = <1>;
103 #size-cells = <0>;
104 interrupts = <5>;
105 clock-frequency = <100000>;
106 status = "disabled";
107 };
108
109 xor@60900 { 95 xor@60900 {
110 compatible = "marvell,orion-xor"; 96 compatible = "marvell,orion-xor";
111 reg = <0x60900 0x100 97 reg = <0x60900 0x100
@@ -125,26 +111,6 @@
125 }; 111 };
126 }; 112 };
127 113
128 crypto@90000 {
129 compatible = "marvell,orion-crypto";
130 reg = <0x90000 0x10000>,
131 <0xf2200000 0x800>;
132 reg-names = "regs", "sram";
133 interrupts = <28>;
134 status = "okay";
135 };
136
137 mdio: mdio-bus@72004 {
138 compatible = "marvell,orion-mdio";
139 #address-cells = <1>;
140 #size-cells = <0>;
141 reg = <0x72004 0x84>;
142 interrupts = <22>;
143 status = "disabled";
144
145 /* add phy nodes in board file */
146 };
147
148 eth: ethernet-controller@72000 { 114 eth: ethernet-controller@72000 {
149 compatible = "marvell,orion-eth"; 115 compatible = "marvell,orion-eth";
150 #address-cells = <1>; 116 #address-cells = <1>;
@@ -162,5 +128,39 @@
162 /* set phy-handle property in board file */ 128 /* set phy-handle property in board file */
163 }; 129 };
164 }; 130 };
131
132 mdio: mdio-bus@72004 {
133 compatible = "marvell,orion-mdio";
134 #address-cells = <1>;
135 #size-cells = <0>;
136 reg = <0x72004 0x84>;
137 interrupts = <22>;
138 status = "disabled";
139
140 /* add phy nodes in board file */
141 };
142
143 sata@80000 {
144 compatible = "marvell,orion-sata";
145 reg = <0x80000 0x5000>;
146 interrupts = <29>;
147 status = "disabled";
148 };
149
150 crypto@90000 {
151 compatible = "marvell,orion-crypto";
152 reg = <0x90000 0x10000>,
153 <0xf2200000 0x800>;
154 reg-names = "regs", "sram";
155 interrupts = <28>;
156 status = "okay";
157 };
158
159 ehci@a0000 {
160 compatible = "marvell,orion-ehci";
161 reg = <0xa0000 0x1000>;
162 interrupts = <12>;
163 status = "disabled";
164 };
165 }; 165 };
166}; 166};
diff --git a/arch/arm/boot/dts/prima2.dtsi b/arch/arm/boot/dts/prima2.dtsi
index daee58944e15..0e219932d7cc 100644
--- a/arch/arm/boot/dts/prima2.dtsi
+++ b/arch/arm/boot/dts/prima2.dtsi
@@ -29,6 +29,15 @@
29 timebase-frequency = <0>; 29 timebase-frequency = <0>;
30 bus-frequency = <0>; 30 bus-frequency = <0>;
31 clock-frequency = <0>; 31 clock-frequency = <0>;
32 clocks = <&clks 12>;
33 operating-points = <
34 /* kHz uV */
35 200000 1025000
36 400000 1025000
37 664000 1050000
38 800000 1100000
39 >;
40 clock-latency = <150000>;
32 }; 41 };
33 }; 42 };
34 43
@@ -80,6 +89,7 @@
80 cphifbg@88030000 { 89 cphifbg@88030000 {
81 compatible = "sirf,prima2-cphifbg"; 90 compatible = "sirf,prima2-cphifbg";
82 reg = <0x88030000 0x1000>; 91 reg = <0x88030000 0x1000>;
92 clocks = <&clks 42>;
83 }; 93 };
84 }; 94 };
85 95
@@ -540,6 +550,18 @@
540 "usp0_uart_nostreamctrl"; 550 "usp0_uart_nostreamctrl";
541 }; 551 };
542 }; 552 };
553 usp0_only_utfs_pins_a: usp0@2 {
554 usp0 {
555 sirf,pins = "usp0_only_utfs_grp";
556 sirf,function = "usp0_only_utfs";
557 };
558 };
559 usp0_only_urfs_pins_a: usp0@3 {
560 usp0 {
561 sirf,pins = "usp0_only_urfs_grp";
562 sirf,function = "usp0_only_urfs";
563 };
564 };
543 usp1_pins_a: usp1@0 { 565 usp1_pins_a: usp1@0 {
544 usp1 { 566 usp1 {
545 sirf,pins = "usp1grp"; 567 sirf,pins = "usp1grp";
@@ -648,6 +670,9 @@
648 compatible = "sirf,prima2-sdhc"; 670 compatible = "sirf,prima2-sdhc";
649 reg = <0x56000000 0x100000>; 671 reg = <0x56000000 0x100000>;
650 interrupts = <38>; 672 interrupts = <38>;
673 status = "disabled";
674 bus-width = <8>;
675 clocks = <&clks 36>;
651 }; 676 };
652 677
653 sd1: sdhci@56100000 { 678 sd1: sdhci@56100000 {
@@ -655,6 +680,9 @@
655 compatible = "sirf,prima2-sdhc"; 680 compatible = "sirf,prima2-sdhc";
656 reg = <0x56100000 0x100000>; 681 reg = <0x56100000 0x100000>;
657 interrupts = <38>; 682 interrupts = <38>;
683 status = "disabled";
684 bus-width = <4>;
685 clocks = <&clks 36>;
658 }; 686 };
659 687
660 sd2: sdhci@56200000 { 688 sd2: sdhci@56200000 {
@@ -662,6 +690,8 @@
662 compatible = "sirf,prima2-sdhc"; 690 compatible = "sirf,prima2-sdhc";
663 reg = <0x56200000 0x100000>; 691 reg = <0x56200000 0x100000>;
664 interrupts = <23>; 692 interrupts = <23>;
693 status = "disabled";
694 clocks = <&clks 37>;
665 }; 695 };
666 696
667 sd3: sdhci@56300000 { 697 sd3: sdhci@56300000 {
@@ -669,6 +699,8 @@
669 compatible = "sirf,prima2-sdhc"; 699 compatible = "sirf,prima2-sdhc";
670 reg = <0x56300000 0x100000>; 700 reg = <0x56300000 0x100000>;
671 interrupts = <23>; 701 interrupts = <23>;
702 status = "disabled";
703 clocks = <&clks 37>;
672 }; 704 };
673 705
674 sd4: sdhci@56400000 { 706 sd4: sdhci@56400000 {
@@ -676,6 +708,8 @@
676 compatible = "sirf,prima2-sdhc"; 708 compatible = "sirf,prima2-sdhc";
677 reg = <0x56400000 0x100000>; 709 reg = <0x56400000 0x100000>;
678 interrupts = <39>; 710 interrupts = <39>;
711 status = "disabled";
712 clocks = <&clks 38>;
679 }; 713 };
680 714
681 sd5: sdhci@56500000 { 715 sd5: sdhci@56500000 {
@@ -683,6 +717,7 @@
683 compatible = "sirf,prima2-sdhc"; 717 compatible = "sirf,prima2-sdhc";
684 reg = <0x56500000 0x100000>; 718 reg = <0x56500000 0x100000>;
685 interrupts = <39>; 719 interrupts = <39>;
720 clocks = <&clks 38>;
686 }; 721 };
687 722
688 pci-copy@57900000 { 723 pci-copy@57900000 {
@@ -716,6 +751,12 @@
716 interrupts = <52 53 54>; 751 interrupts = <52 53 54>;
717 }; 752 };
718 753
754 minigpsrtc@2000 {
755 compatible = "sirf,prima2-minigpsrtc";
756 reg = <0x2000 0x1000>;
757 interrupts = <54>;
758 };
759
719 pwrc@3000 { 760 pwrc@3000 {
720 compatible = "sirf,prima2-pwrc"; 761 compatible = "sirf,prima2-pwrc";
721 reg = <0x3000 0x1000>; 762 reg = <0x3000 0x1000>;
diff --git a/arch/arm/boot/dts/pxa27x.dtsi b/arch/arm/boot/dts/pxa27x.dtsi
index d7c5d721a5c7..a70546945985 100644
--- a/arch/arm/boot/dts/pxa27x.dtsi
+++ b/arch/arm/boot/dts/pxa27x.dtsi
@@ -10,5 +10,29 @@
10 marvell,intc-priority; 10 marvell,intc-priority;
11 marvell,intc-nr-irqs = <34>; 11 marvell,intc-nr-irqs = <34>;
12 }; 12 };
13
14 pwm0: pwm@40b00000 {
15 compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
16 reg = <0x40b00000 0x10>;
17 #pwm-cells = <1>;
18 };
19
20 pwm1: pwm@40b00010 {
21 compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
22 reg = <0x40b00010 0x10>;
23 #pwm-cells = <1>;
24 };
25
26 pwm2: pwm@40c00000 {
27 compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
28 reg = <0x40c00000 0x10>;
29 #pwm-cells = <1>;
30 };
31
32 pwm3: pwm@40c00010 {
33 compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
34 reg = <0x40c00010 0x10>;
35 #pwm-cells = <1>;
36 };
13 }; 37 };
14}; 38};
diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index 2ebb4f09a9b6..6ac94967d2d3 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -29,5 +29,69 @@
29 <1 1 0xf08>; 29 <1 1 0xf08>;
30 clock-frequency = <19200000>; 30 clock-frequency = <19200000>;
31 }; 31 };
32
33 timer@f9020000 {
34 #address-cells = <1>;
35 #size-cells = <1>;
36 ranges;
37 compatible = "arm,armv7-timer-mem";
38 reg = <0xf9020000 0x1000>;
39 clock-frequency = <19200000>;
40
41 frame@f9021000 {
42 frame-number = <0>;
43 interrupts = <0 8 0x4>,
44 <0 7 0x4>;
45 reg = <0xf9021000 0x1000>,
46 <0xf9022000 0x1000>;
47 };
48
49 frame@f9023000 {
50 frame-number = <1>;
51 interrupts = <0 9 0x4>;
52 reg = <0xf9023000 0x1000>;
53 status = "disabled";
54 };
55
56 frame@f9024000 {
57 frame-number = <2>;
58 interrupts = <0 10 0x4>;
59 reg = <0xf9024000 0x1000>;
60 status = "disabled";
61 };
62
63 frame@f9025000 {
64 frame-number = <3>;
65 interrupts = <0 11 0x4>;
66 reg = <0xf9025000 0x1000>;
67 status = "disabled";
68 };
69
70 frame@f9026000 {
71 frame-number = <4>;
72 interrupts = <0 12 0x4>;
73 reg = <0xf9026000 0x1000>;
74 status = "disabled";
75 };
76
77 frame@f9027000 {
78 frame-number = <5>;
79 interrupts = <0 13 0x4>;
80 reg = <0xf9027000 0x1000>;
81 status = "disabled";
82 };
83
84 frame@f9028000 {
85 frame-number = <6>;
86 interrupts = <0 14 0x4>;
87 reg = <0xf9028000 0x1000>;
88 status = "disabled";
89 };
90 };
91
92 restart@fc4ab000 {
93 compatible = "qcom,pshold";
94 reg = <0xfc4ab000 0x4>;
95 };
32 }; 96 };
33}; 97};
diff --git a/arch/arm/boot/dts/r7s72100-genmai.dts b/arch/arm/boot/dts/r7s72100-genmai.dts
index 1fb20f2333cc..b1deaf7e2e06 100644
--- a/arch/arm/boot/dts/r7s72100-genmai.dts
+++ b/arch/arm/boot/dts/r7s72100-genmai.dts
@@ -9,7 +9,7 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "r7s72100.dtsi" 12#include "r7s72100.dtsi"
13 13
14/ { 14/ {
15 model = "Genmai"; 15 model = "Genmai";
diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts b/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
index 9443e93d3cac..70b1fff8f4a3 100644
--- a/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
+++ b/arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
@@ -9,7 +9,7 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "r8a73a4.dtsi" 12#include "r8a73a4.dtsi"
13#include <dt-bindings/gpio/gpio.h> 13#include <dt-bindings/gpio/gpio.h>
14 14
15/ { 15/ {
@@ -25,6 +25,11 @@
25 reg = <0 0x40000000 0 0x40000000>; 25 reg = <0 0x40000000 0 0x40000000>;
26 }; 26 };
27 27
28 memory@200000000 {
29 device_type = "memory";
30 reg = <2 0x00000000 0 0x40000000>;
31 };
32
28 vcc_mmc0: regulator@0 { 33 vcc_mmc0: regulator@0 {
29 compatible = "regulator-fixed"; 34 compatible = "regulator-fixed";
30 regulator-name = "MMC0 Vcc"; 35 regulator-name = "MMC0 Vcc";
@@ -88,22 +93,22 @@
88 pinctrl-0 = <&scifa0_pins>; 93 pinctrl-0 = <&scifa0_pins>;
89 pinctrl-names = "default"; 94 pinctrl-names = "default";
90 95
91 scifa0_pins: scifa0 { 96 scifa0_pins: serial0 {
92 renesas,groups = "scifa0_data"; 97 renesas,groups = "scifa0_data";
93 renesas,function = "scifa0"; 98 renesas,function = "scifa0";
94 }; 99 };
95 100
96 mmc0_pins: mmcif { 101 mmc0_pins: mmc {
97 renesas,groups = "mmc0_data8", "mmc0_ctrl"; 102 renesas,groups = "mmc0_data8", "mmc0_ctrl";
98 renesas,function = "mmc0"; 103 renesas,function = "mmc0";
99 }; 104 };
100 105
101 sdhi0_pins: sdhi0 { 106 sdhi0_pins: sd0 {
102 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd"; 107 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd";
103 renesas,function = "sdhi0"; 108 renesas,function = "sdhi0";
104 }; 109 };
105 110
106 sdhi1_pins: sdhi1 { 111 sdhi1_pins: sd1 {
107 renesas,groups = "sdhi1_data4", "sdhi1_ctrl"; 112 renesas,groups = "sdhi1_data4", "sdhi1_ctrl";
108 renesas,function = "sdhi1"; 113 renesas,function = "sdhi1";
109 }; 114 };
diff --git a/arch/arm/boot/dts/r8a73a4-ape6evm.dts b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
index 91436b58016f..ce085fa444a1 100644
--- a/arch/arm/boot/dts/r8a73a4-ape6evm.dts
+++ b/arch/arm/boot/dts/r8a73a4-ape6evm.dts
@@ -9,7 +9,8 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "r8a73a4.dtsi" 12#include "r8a73a4.dtsi"
13#include <dt-bindings/interrupt-controller/irq.h>
13 14
14/ { 15/ {
15 model = "APE6EVM"; 16 model = "APE6EVM";
@@ -24,6 +25,11 @@
24 reg = <0 0x40000000 0 0x40000000>; 25 reg = <0 0x40000000 0 0x40000000>;
25 }; 26 };
26 27
28 memory@200000000 {
29 device_type = "memory";
30 reg = <2 0x00000000 0 0x40000000>;
31 };
32
27 ape6evm_fixed_3v3: fixedregulator@0 { 33 ape6evm_fixed_3v3: fixedregulator@0 {
28 compatible = "regulator-fixed"; 34 compatible = "regulator-fixed";
29 regulator-name = "3V3"; 35 regulator-name = "3V3";
@@ -40,7 +46,7 @@
40 compatible = "smsc,lan9118", "smsc,lan9115"; 46 compatible = "smsc,lan9118", "smsc,lan9115";
41 reg = <0x08000000 0x1000>; 47 reg = <0x08000000 0x1000>;
42 interrupt-parent = <&irqc1>; 48 interrupt-parent = <&irqc1>;
43 interrupts = <8 0x4>; 49 interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
44 phy-mode = "mii"; 50 phy-mode = "mii";
45 reg-io-width = <4>; 51 reg-io-width = <4>;
46 smsc,irq-active-high; 52 smsc,irq-active-high;
diff --git a/arch/arm/boot/dts/r8a73a4.dtsi b/arch/arm/boot/dts/r8a73a4.dtsi
index 287e047592a0..62d0211bd192 100644
--- a/arch/arm/boot/dts/r8a73a4.dtsi
+++ b/arch/arm/boot/dts/r8a73a4.dtsi
@@ -9,6 +9,9 @@
9 * kind, whether express or implied. 9 * kind, whether express or implied.
10 */ 10 */
11 11
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/interrupt-controller/irq.h>
14
12/ { 15/ {
13 compatible = "renesas,r8a73a4"; 16 compatible = "renesas,r8a73a4";
14 interrupt-parent = <&gic>; 17 interrupt-parent = <&gic>;
@@ -36,15 +39,15 @@
36 <0 0xf1002000 0 0x1000>, 39 <0 0xf1002000 0 0x1000>,
37 <0 0xf1004000 0 0x2000>, 40 <0 0xf1004000 0 0x2000>,
38 <0 0xf1006000 0 0x2000>; 41 <0 0xf1006000 0 0x2000>;
39 interrupts = <1 9 0xf04>; 42 interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
40 }; 43 };
41 44
42 timer { 45 timer {
43 compatible = "arm,armv7-timer"; 46 compatible = "arm,armv7-timer";
44 interrupts = <1 13 0xf08>, 47 interrupts = <1 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
45 <1 14 0xf08>, 48 <1 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
46 <1 11 0xf08>, 49 <1 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
47 <1 10 0xf08>; 50 <1 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
48 }; 51 };
49 52
50 irqc0: interrupt-controller@e61c0000 { 53 irqc0: interrupt-controller@e61c0000 {
@@ -53,14 +56,38 @@
53 interrupt-controller; 56 interrupt-controller;
54 reg = <0 0xe61c0000 0 0x200>; 57 reg = <0 0xe61c0000 0 0x200>;
55 interrupt-parent = <&gic>; 58 interrupt-parent = <&gic>;
56 interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>, 59 interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>,
57 <0 4 4>, <0 5 4>, <0 6 4>, <0 7 4>, 60 <0 1 IRQ_TYPE_LEVEL_HIGH>,
58 <0 8 4>, <0 9 4>, <0 10 4>, <0 11 4>, 61 <0 2 IRQ_TYPE_LEVEL_HIGH>,
59 <0 12 4>, <0 13 4>, <0 14 4>, <0 15 4>, 62 <0 3 IRQ_TYPE_LEVEL_HIGH>,
60 <0 16 4>, <0 17 4>, <0 18 4>, <0 19 4>, 63 <0 4 IRQ_TYPE_LEVEL_HIGH>,
61 <0 20 4>, <0 21 4>, <0 22 4>, <0 23 4>, 64 <0 5 IRQ_TYPE_LEVEL_HIGH>,
62 <0 24 4>, <0 25 4>, <0 26 4>, <0 27 4>, 65 <0 6 IRQ_TYPE_LEVEL_HIGH>,
63 <0 28 4>, <0 29 4>, <0 30 4>, <0 31 4>; 66 <0 7 IRQ_TYPE_LEVEL_HIGH>,
67 <0 8 IRQ_TYPE_LEVEL_HIGH>,
68 <0 9 IRQ_TYPE_LEVEL_HIGH>,
69 <0 10 IRQ_TYPE_LEVEL_HIGH>,
70 <0 11 IRQ_TYPE_LEVEL_HIGH>,
71 <0 12 IRQ_TYPE_LEVEL_HIGH>,
72 <0 13 IRQ_TYPE_LEVEL_HIGH>,
73 <0 14 IRQ_TYPE_LEVEL_HIGH>,
74 <0 15 IRQ_TYPE_LEVEL_HIGH>,
75 <0 16 IRQ_TYPE_LEVEL_HIGH>,
76 <0 17 IRQ_TYPE_LEVEL_HIGH>,
77 <0 18 IRQ_TYPE_LEVEL_HIGH>,
78 <0 19 IRQ_TYPE_LEVEL_HIGH>,
79 <0 20 IRQ_TYPE_LEVEL_HIGH>,
80 <0 21 IRQ_TYPE_LEVEL_HIGH>,
81 <0 22 IRQ_TYPE_LEVEL_HIGH>,
82 <0 23 IRQ_TYPE_LEVEL_HIGH>,
83 <0 24 IRQ_TYPE_LEVEL_HIGH>,
84 <0 25 IRQ_TYPE_LEVEL_HIGH>,
85 <0 26 IRQ_TYPE_LEVEL_HIGH>,
86 <0 27 IRQ_TYPE_LEVEL_HIGH>,
87 <0 28 IRQ_TYPE_LEVEL_HIGH>,
88 <0 29 IRQ_TYPE_LEVEL_HIGH>,
89 <0 30 IRQ_TYPE_LEVEL_HIGH>,
90 <0 31 IRQ_TYPE_LEVEL_HIGH>;
64 }; 91 };
65 92
66 irqc1: interrupt-controller@e61c0200 { 93 irqc1: interrupt-controller@e61c0200 {
@@ -69,13 +96,32 @@
69 interrupt-controller; 96 interrupt-controller;
70 reg = <0 0xe61c0200 0 0x200>; 97 reg = <0 0xe61c0200 0 0x200>;
71 interrupt-parent = <&gic>; 98 interrupt-parent = <&gic>;
72 interrupts = <0 32 4>, <0 33 4>, <0 34 4>, <0 35 4>, 99 interrupts = <0 32 IRQ_TYPE_LEVEL_HIGH>,
73 <0 36 4>, <0 37 4>, <0 38 4>, <0 39 4>, 100 <0 33 IRQ_TYPE_LEVEL_HIGH>,
74 <0 40 4>, <0 41 4>, <0 42 4>, <0 43 4>, 101 <0 34 IRQ_TYPE_LEVEL_HIGH>,
75 <0 44 4>, <0 45 4>, <0 46 4>, <0 47 4>, 102 <0 35 IRQ_TYPE_LEVEL_HIGH>,
76 <0 48 4>, <0 49 4>, <0 50 4>, <0 51 4>, 103 <0 36 IRQ_TYPE_LEVEL_HIGH>,
77 <0 52 4>, <0 53 4>, <0 54 4>, <0 55 4>, 104 <0 37 IRQ_TYPE_LEVEL_HIGH>,
78 <0 56 4>, <0 57 4>; 105 <0 38 IRQ_TYPE_LEVEL_HIGH>,
106 <0 39 IRQ_TYPE_LEVEL_HIGH>,
107 <0 40 IRQ_TYPE_LEVEL_HIGH>,
108 <0 41 IRQ_TYPE_LEVEL_HIGH>,
109 <0 42 IRQ_TYPE_LEVEL_HIGH>,
110 <0 43 IRQ_TYPE_LEVEL_HIGH>,
111 <0 44 IRQ_TYPE_LEVEL_HIGH>,
112 <0 45 IRQ_TYPE_LEVEL_HIGH>,
113 <0 46 IRQ_TYPE_LEVEL_HIGH>,
114 <0 47 IRQ_TYPE_LEVEL_HIGH>,
115 <0 48 IRQ_TYPE_LEVEL_HIGH>,
116 <0 49 IRQ_TYPE_LEVEL_HIGH>,
117 <0 50 IRQ_TYPE_LEVEL_HIGH>,
118 <0 51 IRQ_TYPE_LEVEL_HIGH>,
119 <0 52 IRQ_TYPE_LEVEL_HIGH>,
120 <0 53 IRQ_TYPE_LEVEL_HIGH>,
121 <0 54 IRQ_TYPE_LEVEL_HIGH>,
122 <0 55 IRQ_TYPE_LEVEL_HIGH>,
123 <0 56 IRQ_TYPE_LEVEL_HIGH>,
124 <0 57 IRQ_TYPE_LEVEL_HIGH>;
79 }; 125 };
80 126
81 dmac: dma-multiplexer@0 { 127 dmac: dma-multiplexer@0 {
@@ -91,27 +137,27 @@
91 compatible = "renesas,shdma-r8a73a4"; 137 compatible = "renesas,shdma-r8a73a4";
92 reg = <0 0xe6700020 0 0x89e0>; 138 reg = <0 0xe6700020 0 0x89e0>;
93 interrupt-parent = <&gic>; 139 interrupt-parent = <&gic>;
94 interrupts = <0 220 4 140 interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH
95 0 200 4 141 0 200 IRQ_TYPE_LEVEL_HIGH
96 0 201 4 142 0 201 IRQ_TYPE_LEVEL_HIGH
97 0 202 4 143 0 202 IRQ_TYPE_LEVEL_HIGH
98 0 203 4 144 0 203 IRQ_TYPE_LEVEL_HIGH
99 0 204 4 145 0 204 IRQ_TYPE_LEVEL_HIGH
100 0 205 4 146 0 205 IRQ_TYPE_LEVEL_HIGH
101 0 206 4 147 0 206 IRQ_TYPE_LEVEL_HIGH
102 0 207 4 148 0 207 IRQ_TYPE_LEVEL_HIGH
103 0 208 4 149 0 208 IRQ_TYPE_LEVEL_HIGH
104 0 209 4 150 0 209 IRQ_TYPE_LEVEL_HIGH
105 0 210 4 151 0 210 IRQ_TYPE_LEVEL_HIGH
106 0 211 4 152 0 211 IRQ_TYPE_LEVEL_HIGH
107 0 212 4 153 0 212 IRQ_TYPE_LEVEL_HIGH
108 0 213 4 154 0 213 IRQ_TYPE_LEVEL_HIGH
109 0 214 4 155 0 214 IRQ_TYPE_LEVEL_HIGH
110 0 215 4 156 0 215 IRQ_TYPE_LEVEL_HIGH
111 0 216 4 157 0 216 IRQ_TYPE_LEVEL_HIGH
112 0 217 4 158 0 217 IRQ_TYPE_LEVEL_HIGH
113 0 218 4 159 0 218 IRQ_TYPE_LEVEL_HIGH
114 0 219 4>; 160 0 219 IRQ_TYPE_LEVEL_HIGH>;
115 interrupt-names = "error", 161 interrupt-names = "error",
116 "ch0", "ch1", "ch2", "ch3", 162 "ch0", "ch1", "ch2", "ch3",
117 "ch4", "ch5", "ch6", "ch7", 163 "ch4", "ch5", "ch6", "ch7",
@@ -126,7 +172,7 @@
126 reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>, 172 reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>,
127 <0 0xe61f0200 0 0x38>, <0 0xe61f0300 0 0x38>; 173 <0 0xe61f0200 0 0x38>, <0 0xe61f0300 0 0x38>;
128 interrupt-parent = <&gic>; 174 interrupt-parent = <&gic>;
129 interrupts = <0 69 4>; 175 interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
130 }; 176 };
131 177
132 i2c0: i2c@e6500000 { 178 i2c0: i2c@e6500000 {
@@ -135,7 +181,7 @@
135 compatible = "renesas,rmobile-iic"; 181 compatible = "renesas,rmobile-iic";
136 reg = <0 0xe6500000 0 0x428>; 182 reg = <0 0xe6500000 0 0x428>;
137 interrupt-parent = <&gic>; 183 interrupt-parent = <&gic>;
138 interrupts = <0 174 0x4>; 184 interrupts = <0 174 IRQ_TYPE_LEVEL_HIGH>;
139 status = "disabled"; 185 status = "disabled";
140 }; 186 };
141 187
@@ -145,7 +191,7 @@
145 compatible = "renesas,rmobile-iic"; 191 compatible = "renesas,rmobile-iic";
146 reg = <0 0xe6510000 0 0x428>; 192 reg = <0 0xe6510000 0 0x428>;
147 interrupt-parent = <&gic>; 193 interrupt-parent = <&gic>;
148 interrupts = <0 175 0x4>; 194 interrupts = <0 175 IRQ_TYPE_LEVEL_HIGH>;
149 status = "disabled"; 195 status = "disabled";
150 }; 196 };
151 197
@@ -155,7 +201,7 @@
155 compatible = "renesas,rmobile-iic"; 201 compatible = "renesas,rmobile-iic";
156 reg = <0 0xe6520000 0 0x428>; 202 reg = <0 0xe6520000 0 0x428>;
157 interrupt-parent = <&gic>; 203 interrupt-parent = <&gic>;
158 interrupts = <0 176 0x4>; 204 interrupts = <0 176 IRQ_TYPE_LEVEL_HIGH>;
159 status = "disabled"; 205 status = "disabled";
160 }; 206 };
161 207
@@ -165,7 +211,7 @@
165 compatible = "renesas,rmobile-iic"; 211 compatible = "renesas,rmobile-iic";
166 reg = <0 0xe6530000 0 0x428>; 212 reg = <0 0xe6530000 0 0x428>;
167 interrupt-parent = <&gic>; 213 interrupt-parent = <&gic>;
168 interrupts = <0 177 0x4>; 214 interrupts = <0 177 IRQ_TYPE_LEVEL_HIGH>;
169 status = "disabled"; 215 status = "disabled";
170 }; 216 };
171 217
@@ -175,7 +221,7 @@
175 compatible = "renesas,rmobile-iic"; 221 compatible = "renesas,rmobile-iic";
176 reg = <0 0xe6540000 0 0x428>; 222 reg = <0 0xe6540000 0 0x428>;
177 interrupt-parent = <&gic>; 223 interrupt-parent = <&gic>;
178 interrupts = <0 178 0x4>; 224 interrupts = <0 178 IRQ_TYPE_LEVEL_HIGH>;
179 status = "disabled"; 225 status = "disabled";
180 }; 226 };
181 227
@@ -185,7 +231,7 @@
185 compatible = "renesas,rmobile-iic"; 231 compatible = "renesas,rmobile-iic";
186 reg = <0 0xe60b0000 0 0x428>; 232 reg = <0 0xe60b0000 0 0x428>;
187 interrupt-parent = <&gic>; 233 interrupt-parent = <&gic>;
188 interrupts = <0 179 0x4>; 234 interrupts = <0 179 IRQ_TYPE_LEVEL_HIGH>;
189 status = "disabled"; 235 status = "disabled";
190 }; 236 };
191 237
@@ -195,7 +241,7 @@
195 compatible = "renesas,rmobile-iic"; 241 compatible = "renesas,rmobile-iic";
196 reg = <0 0xe6550000 0 0x428>; 242 reg = <0 0xe6550000 0 0x428>;
197 interrupt-parent = <&gic>; 243 interrupt-parent = <&gic>;
198 interrupts = <0 184 0x4>; 244 interrupts = <0 184 IRQ_TYPE_LEVEL_HIGH>;
199 status = "disabled"; 245 status = "disabled";
200 }; 246 };
201 247
@@ -205,7 +251,7 @@
205 compatible = "renesas,rmobile-iic"; 251 compatible = "renesas,rmobile-iic";
206 reg = <0 0xe6560000 0 0x428>; 252 reg = <0 0xe6560000 0 0x428>;
207 interrupt-parent = <&gic>; 253 interrupt-parent = <&gic>;
208 interrupts = <0 185 0x4>; 254 interrupts = <0 185 IRQ_TYPE_LEVEL_HIGH>;
209 status = "disabled"; 255 status = "disabled";
210 }; 256 };
211 257
@@ -215,24 +261,24 @@
215 compatible = "renesas,rmobile-iic"; 261 compatible = "renesas,rmobile-iic";
216 reg = <0 0xe6570000 0 0x428>; 262 reg = <0 0xe6570000 0 0x428>;
217 interrupt-parent = <&gic>; 263 interrupt-parent = <&gic>;
218 interrupts = <0 173 0x4>; 264 interrupts = <0 173 IRQ_TYPE_LEVEL_HIGH>;
219 status = "disabled"; 265 status = "disabled";
220 }; 266 };
221 267
222 mmcif0: mmcif@ee200000 { 268 mmcif0: mmc@ee200000 {
223 compatible = "renesas,sh-mmcif"; 269 compatible = "renesas,sh-mmcif";
224 reg = <0 0xee200000 0 0x80>; 270 reg = <0 0xee200000 0 0x80>;
225 interrupt-parent = <&gic>; 271 interrupt-parent = <&gic>;
226 interrupts = <0 169 0x4>; 272 interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>;
227 reg-io-width = <4>; 273 reg-io-width = <4>;
228 status = "disabled"; 274 status = "disabled";
229 }; 275 };
230 276
231 mmcif1: mmcif@ee220000 { 277 mmcif1: mmc@ee220000 {
232 compatible = "renesas,sh-mmcif"; 278 compatible = "renesas,sh-mmcif";
233 reg = <0 0xee220000 0 0x80>; 279 reg = <0 0xee220000 0 0x80>;
234 interrupt-parent = <&gic>; 280 interrupt-parent = <&gic>;
235 interrupts = <0 170 0x4>; 281 interrupts = <0 170 IRQ_TYPE_LEVEL_HIGH>;
236 reg-io-width = <4>; 282 reg-io-width = <4>;
237 status = "disabled"; 283 status = "disabled";
238 }; 284 };
@@ -242,31 +288,47 @@
242 reg = <0 0xe6050000 0 0x9000>; 288 reg = <0 0xe6050000 0 0x9000>;
243 gpio-controller; 289 gpio-controller;
244 #gpio-cells = <2>; 290 #gpio-cells = <2>;
291 interrupts-extended =
292 <&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>,
293 <&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>,
294 <&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>,
295 <&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>,
296 <&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>,
297 <&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>,
298 <&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>,
299 <&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>,
300 <&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>,
301 <&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>,
302 <&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>,
303 <&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>,
304 <&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>,
305 <&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>,
306 <&irqc1 24 0>, <&irqc1 25 0>;
245 }; 307 };
246 308
247 sdhi0: sdhi@ee100000 { 309 sdhi0: sd@ee100000 {
248 compatible = "renesas,sdhi-r8a73a4"; 310 compatible = "renesas,sdhi-r8a73a4";
249 reg = <0 0xee100000 0 0x100>; 311 reg = <0 0xee100000 0 0x100>;
250 interrupt-parent = <&gic>; 312 interrupt-parent = <&gic>;
251 interrupts = <0 165 4>; 313 interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>;
252 cap-sd-highspeed; 314 cap-sd-highspeed;
253 status = "disabled"; 315 status = "disabled";
254 }; 316 };
255 317
256 sdhi1: sdhi@ee120000 { 318 sdhi1: sd@ee120000 {
257 compatible = "renesas,sdhi-r8a73a4"; 319 compatible = "renesas,sdhi-r8a73a4";
258 reg = <0 0xee120000 0 0x100>; 320 reg = <0 0xee120000 0 0x100>;
259 interrupt-parent = <&gic>; 321 interrupt-parent = <&gic>;
260 interrupts = <0 166 4>; 322 interrupts = <0 166 IRQ_TYPE_LEVEL_HIGH>;
261 cap-sd-highspeed; 323 cap-sd-highspeed;
262 status = "disabled"; 324 status = "disabled";
263 }; 325 };
264 326
265 sdhi2: sdhi@ee140000 { 327 sdhi2: sd@ee140000 {
266 compatible = "renesas,sdhi-r8a73a4"; 328 compatible = "renesas,sdhi-r8a73a4";
267 reg = <0 0xee140000 0 0x100>; 329 reg = <0 0xee140000 0 0x100>;
268 interrupt-parent = <&gic>; 330 interrupt-parent = <&gic>;
269 interrupts = <0 167 4>; 331 interrupts = <0 167 IRQ_TYPE_LEVEL_HIGH>;
270 cap-sd-highspeed; 332 cap-sd-highspeed;
271 status = "disabled"; 333 status = "disabled";
272 }; 334 };
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
index 1c56c5e56950..95a849bf921f 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
@@ -9,8 +9,9 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "r8a7740.dtsi" 12#include "r8a7740.dtsi"
13#include <dt-bindings/gpio/gpio.h> 13#include <dt-bindings/gpio/gpio.h>
14#include <dt-bindings/interrupt-controller/irq.h>
14#include <dt-bindings/pwm/pwm.h> 15#include <dt-bindings/pwm/pwm.h>
15 16
16/ { 17/ {
@@ -62,6 +63,44 @@
62 enable-active-high; 63 enable-active-high;
63 }; 64 };
64 65
66 reg_5p0v: regulator@3 {
67 compatible = "regulator-fixed";
68 regulator-name = "fixed-5.0V";
69 regulator-min-microvolt = <5000000>;
70 regulator-max-microvolt = <5000000>;
71 regulator-always-on;
72 regulator-boot-on;
73 };
74
75 gpio-keys {
76 compatible = "gpio-keys";
77
78 power-key {
79 gpios = <&pfc 99 GPIO_ACTIVE_LOW>;
80 linux,code = <116>;
81 label = "SW3";
82 gpio-key,wakeup;
83 };
84
85 back-key {
86 gpios = <&pfc 100 GPIO_ACTIVE_LOW>;
87 linux,code = <158>;
88 label = "SW4";
89 };
90
91 menu-key {
92 gpios = <&pfc 97 GPIO_ACTIVE_LOW>;
93 linux,code = <139>;
94 label = "SW5";
95 };
96
97 home-key {
98 gpios = <&pfc 98 GPIO_ACTIVE_LOW>;
99 linux,code = <102>;
100 label = "SW6";
101 };
102 };
103
65 leds { 104 leds {
66 compatible = "gpio-leds"; 105 compatible = "gpio-leds";
67 led1 { 106 led1 {
@@ -85,32 +124,58 @@
85 default-brightness-level = <9>; 124 default-brightness-level = <9>;
86 pinctrl-0 = <&backlight_pins>; 125 pinctrl-0 = <&backlight_pins>;
87 pinctrl-names = "default"; 126 pinctrl-names = "default";
127 power-supply = <&reg_5p0v>;
128 enable-gpios = <&pfc 61 GPIO_ACTIVE_HIGH>;
129 };
130
131 sound {
132 compatible = "simple-audio-card";
133
134 simple-audio-card,format = "i2s";
135
136 simple-audio-card,cpu {
137 sound-dai = <&sh_fsi2 0>;
138 bitclock-inversion;
139 };
140
141 simple-audio-card,codec {
142 sound-dai = <&wm8978>;
143 bitclock-master;
144 frame-master;
145 system-clock-frequency = <12288000>;
146 };
88 }; 147 };
89}; 148};
90 149
91&i2c0 { 150&i2c0 {
92 status = "okay"; 151 status = "okay";
93 touchscreen: st1232@55 { 152 touchscreen@55 {
94 compatible = "sitronix,st1232"; 153 compatible = "sitronix,st1232";
95 reg = <0x55>; 154 reg = <0x55>;
96 interrupt-parent = <&irqpin1>; 155 interrupt-parent = <&irqpin1>;
97 interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */ 156 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
98 pinctrl-0 = <&st1232_pins>; 157 pinctrl-0 = <&st1232_pins>;
99 pinctrl-names = "default"; 158 pinctrl-names = "default";
100 gpios = <&pfc 166 GPIO_ACTIVE_LOW>; 159 gpios = <&pfc 166 GPIO_ACTIVE_LOW>;
101 }; 160 };
161
162 wm8978: wm8978@1a {
163 #sound-dai-cells = <0>;
164 compatible = "wlf,wm8978";
165 reg = <0x1a>;
166 };
102}; 167};
103 168
104&pfc { 169&pfc {
105 pinctrl-0 = <&scifa1_pins>; 170 pinctrl-0 = <&scifa1_pins>;
106 pinctrl-names = "default"; 171 pinctrl-names = "default";
107 172
108 scifa1_pins: scifa1 { 173 scifa1_pins: serial1 {
109 renesas,groups = "scifa1_data"; 174 renesas,groups = "scifa1_data";
110 renesas,function = "scifa1"; 175 renesas,function = "scifa1";
111 }; 176 };
112 177
113 st1232_pins: st1232 { 178 st1232_pins: touchscreen {
114 renesas,groups = "intc_irq10"; 179 renesas,groups = "intc_irq10";
115 renesas,function = "intc"; 180 renesas,function = "intc";
116 }; 181 };
@@ -125,10 +190,16 @@
125 renesas,function = "mmc0"; 190 renesas,function = "mmc0";
126 }; 191 };
127 192
128 sdhi0_pins: sdhi0 { 193 sdhi0_pins: sd0 {
129 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_wp"; 194 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_wp";
130 renesas,function = "sdhi0"; 195 renesas,function = "sdhi0";
131 }; 196 };
197
198 fsia_pins: sounda {
199 renesas,groups = "fsia_sclk_in", "fsia_mclk_out",
200 "fsia_data_in_1", "fsia_data_out_0";
201 renesas,function = "fsia";
202 };
132}; 203};
133 204
134&tpu { 205&tpu {
@@ -155,3 +226,10 @@
155 cd-gpios = <&pfc 167 GPIO_ACTIVE_LOW>; 226 cd-gpios = <&pfc 167 GPIO_ACTIVE_LOW>;
156 status = "okay"; 227 status = "okay";
157}; 228};
229
230&sh_fsi2 {
231 pinctrl-0 = <&fsia_pins>;
232 pinctrl-names = "default";
233
234 status = "okay";
235};
diff --git a/arch/arm/boot/dts/r8a7740-armadillo800eva.dts b/arch/arm/boot/dts/r8a7740-armadillo800eva.dts
index 426cd9c3e1c4..a06a11e1a840 100644
--- a/arch/arm/boot/dts/r8a7740-armadillo800eva.dts
+++ b/arch/arm/boot/dts/r8a7740-armadillo800eva.dts
@@ -9,7 +9,7 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "r8a7740.dtsi" 12#include "r8a7740.dtsi"
13 13
14/ { 14/ {
15 model = "armadillo 800 eva"; 15 model = "armadillo 800 eva";
diff --git a/arch/arm/boot/dts/r8a7740.dtsi b/arch/arm/boot/dts/r8a7740.dtsi
index ae1e230f711d..8280884bfa59 100644
--- a/arch/arm/boot/dts/r8a7740.dtsi
+++ b/arch/arm/boot/dts/r8a7740.dtsi
@@ -10,6 +10,8 @@
10 10
11/include/ "skeleton.dtsi" 11/include/ "skeleton.dtsi"
12 12
13#include <dt-bindings/interrupt-controller/irq.h>
14
13/ { 15/ {
14 compatible = "renesas,r8a7740"; 16 compatible = "renesas,r8a7740";
15 17
@@ -34,12 +36,12 @@
34 36
35 pmu { 37 pmu {
36 compatible = "arm,cortex-a9-pmu"; 38 compatible = "arm,cortex-a9-pmu";
37 interrupts = <0 83 4>; 39 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>;
38 }; 40 };
39 41
40 /* irqpin0: IRQ0 - IRQ7 */ 42 /* irqpin0: IRQ0 - IRQ7 */
41 irqpin0: irqpin@e6900000 { 43 irqpin0: irqpin@e6900000 {
42 compatible = "renesas,intc-irqpin"; 44 compatible = "renesas,intc-irqpin-r8a7740", "renesas,intc-irqpin";
43 #interrupt-cells = <2>; 45 #interrupt-cells = <2>;
44 interrupt-controller; 46 interrupt-controller;
45 reg = <0xe6900000 4>, 47 reg = <0xe6900000 4>,
@@ -48,19 +50,19 @@
48 <0xe6900040 1>, 50 <0xe6900040 1>,
49 <0xe6900060 1>; 51 <0xe6900060 1>;
50 interrupt-parent = <&gic>; 52 interrupt-parent = <&gic>;
51 interrupts = <0 149 0x4 53 interrupts = <0 149 IRQ_TYPE_LEVEL_HIGH
52 0 149 0x4 54 0 149 IRQ_TYPE_LEVEL_HIGH
53 0 149 0x4 55 0 149 IRQ_TYPE_LEVEL_HIGH
54 0 149 0x4 56 0 149 IRQ_TYPE_LEVEL_HIGH
55 0 149 0x4 57 0 149 IRQ_TYPE_LEVEL_HIGH
56 0 149 0x4 58 0 149 IRQ_TYPE_LEVEL_HIGH
57 0 149 0x4 59 0 149 IRQ_TYPE_LEVEL_HIGH
58 0 149 0x4>; 60 0 149 IRQ_TYPE_LEVEL_HIGH>;
59 }; 61 };
60 62
61 /* irqpin1: IRQ8 - IRQ15 */ 63 /* irqpin1: IRQ8 - IRQ15 */
62 irqpin1: irqpin@e6900004 { 64 irqpin1: irqpin@e6900004 {
63 compatible = "renesas,intc-irqpin"; 65 compatible = "renesas,intc-irqpin-r8a7740", "renesas,intc-irqpin";
64 #interrupt-cells = <2>; 66 #interrupt-cells = <2>;
65 interrupt-controller; 67 interrupt-controller;
66 reg = <0xe6900004 4>, 68 reg = <0xe6900004 4>,
@@ -69,19 +71,19 @@
69 <0xe6900044 1>, 71 <0xe6900044 1>,
70 <0xe6900064 1>; 72 <0xe6900064 1>;
71 interrupt-parent = <&gic>; 73 interrupt-parent = <&gic>;
72 interrupts = <0 149 0x4 74 interrupts = <0 149 IRQ_TYPE_LEVEL_HIGH
73 0 149 0x4 75 0 149 IRQ_TYPE_LEVEL_HIGH
74 0 149 0x4 76 0 149 IRQ_TYPE_LEVEL_HIGH
75 0 149 0x4 77 0 149 IRQ_TYPE_LEVEL_HIGH
76 0 149 0x4 78 0 149 IRQ_TYPE_LEVEL_HIGH
77 0 149 0x4 79 0 149 IRQ_TYPE_LEVEL_HIGH
78 0 149 0x4 80 0 149 IRQ_TYPE_LEVEL_HIGH
79 0 149 0x4>; 81 0 149 IRQ_TYPE_LEVEL_HIGH>;
80 }; 82 };
81 83
82 /* irqpin2: IRQ16 - IRQ23 */ 84 /* irqpin2: IRQ16 - IRQ23 */
83 irqpin2: irqpin@e6900008 { 85 irqpin2: irqpin@e6900008 {
84 compatible = "renesas,intc-irqpin"; 86 compatible = "renesas,intc-irqpin-r8a7740", "renesas,intc-irqpin";
85 #interrupt-cells = <2>; 87 #interrupt-cells = <2>;
86 interrupt-controller; 88 interrupt-controller;
87 reg = <0xe6900008 4>, 89 reg = <0xe6900008 4>,
@@ -90,19 +92,19 @@
90 <0xe6900048 1>, 92 <0xe6900048 1>,
91 <0xe6900068 1>; 93 <0xe6900068 1>;
92 interrupt-parent = <&gic>; 94 interrupt-parent = <&gic>;
93 interrupts = <0 149 0x4 95 interrupts = <0 149 IRQ_TYPE_LEVEL_HIGH
94 0 149 0x4 96 0 149 IRQ_TYPE_LEVEL_HIGH
95 0 149 0x4 97 0 149 IRQ_TYPE_LEVEL_HIGH
96 0 149 0x4 98 0 149 IRQ_TYPE_LEVEL_HIGH
97 0 149 0x4 99 0 149 IRQ_TYPE_LEVEL_HIGH
98 0 149 0x4 100 0 149 IRQ_TYPE_LEVEL_HIGH
99 0 149 0x4 101 0 149 IRQ_TYPE_LEVEL_HIGH
100 0 149 0x4>; 102 0 149 IRQ_TYPE_LEVEL_HIGH>;
101 }; 103 };
102 104
103 /* irqpin3: IRQ24 - IRQ31 */ 105 /* irqpin3: IRQ24 - IRQ31 */
104 irqpin3: irqpin@e690000c { 106 irqpin3: irqpin@e690000c {
105 compatible = "renesas,intc-irqpin"; 107 compatible = "renesas,intc-irqpin-r8a7740", "renesas,intc-irqpin";
106 #interrupt-cells = <2>; 108 #interrupt-cells = <2>;
107 interrupt-controller; 109 interrupt-controller;
108 reg = <0xe690000c 4>, 110 reg = <0xe690000c 4>,
@@ -111,14 +113,14 @@
111 <0xe690004c 1>, 113 <0xe690004c 1>,
112 <0xe690006c 1>; 114 <0xe690006c 1>;
113 interrupt-parent = <&gic>; 115 interrupt-parent = <&gic>;
114 interrupts = <0 149 0x4 116 interrupts = <0 149 IRQ_TYPE_LEVEL_HIGH
115 0 149 0x4 117 0 149 IRQ_TYPE_LEVEL_HIGH
116 0 149 0x4 118 0 149 IRQ_TYPE_LEVEL_HIGH
117 0 149 0x4 119 0 149 IRQ_TYPE_LEVEL_HIGH
118 0 149 0x4 120 0 149 IRQ_TYPE_LEVEL_HIGH
119 0 149 0x4 121 0 149 IRQ_TYPE_LEVEL_HIGH
120 0 149 0x4 122 0 149 IRQ_TYPE_LEVEL_HIGH
121 0 149 0x4>; 123 0 149 IRQ_TYPE_LEVEL_HIGH>;
122 }; 124 };
123 125
124 i2c0: i2c@fff20000 { 126 i2c0: i2c@fff20000 {
@@ -127,10 +129,10 @@
127 compatible = "renesas,rmobile-iic"; 129 compatible = "renesas,rmobile-iic";
128 reg = <0xfff20000 0x425>; 130 reg = <0xfff20000 0x425>;
129 interrupt-parent = <&gic>; 131 interrupt-parent = <&gic>;
130 interrupts = <0 201 0x4 132 interrupts = <0 201 IRQ_TYPE_LEVEL_HIGH
131 0 202 0x4 133 0 202 IRQ_TYPE_LEVEL_HIGH
132 0 203 0x4 134 0 203 IRQ_TYPE_LEVEL_HIGH
133 0 204 0x4>; 135 0 204 IRQ_TYPE_LEVEL_HIGH>;
134 status = "disabled"; 136 status = "disabled";
135 }; 137 };
136 138
@@ -140,10 +142,10 @@
140 compatible = "renesas,rmobile-iic"; 142 compatible = "renesas,rmobile-iic";
141 reg = <0xe6c20000 0x425>; 143 reg = <0xe6c20000 0x425>;
142 interrupt-parent = <&gic>; 144 interrupt-parent = <&gic>;
143 interrupts = <0 70 0x4 145 interrupts = <0 70 IRQ_TYPE_LEVEL_HIGH
144 0 71 0x4 146 0 71 IRQ_TYPE_LEVEL_HIGH
145 0 72 0x4 147 0 72 IRQ_TYPE_LEVEL_HIGH
146 0 73 0x4>; 148 0 73 IRQ_TYPE_LEVEL_HIGH>;
147 status = "disabled"; 149 status = "disabled";
148 }; 150 };
149 151
@@ -153,6 +155,15 @@
153 <0xe605800c 0x20>; 155 <0xe605800c 0x20>;
154 gpio-controller; 156 gpio-controller;
155 #gpio-cells = <2>; 157 #gpio-cells = <2>;
158 interrupts-extended =
159 <&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>,
160 <&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>,
161 <&irqpin1 0 0>, <&irqpin1 1 0>, <&irqpin1 2 0>, <&irqpin1 3 0>,
162 <&irqpin1 4 0>, <&irqpin1 5 0>, <&irqpin1 6 0>, <&irqpin1 7 0>,
163 <&irqpin2 0 0>, <&irqpin2 1 0>, <&irqpin2 2 0>, <&irqpin2 3 0>,
164 <&irqpin2 4 0>, <&irqpin2 5 0>, <&irqpin2 6 0>, <&irqpin2 7 0>,
165 <&irqpin3 0 0>, <&irqpin3 1 0>, <&irqpin3 2 0>, <&irqpin3 3 0>,
166 <&irqpin3 4 0>, <&irqpin3 5 0>, <&irqpin3 6 0>, <&irqpin3 7 0>;
156 }; 167 };
157 168
158 tpu: pwm@e6600000 { 169 tpu: pwm@e6600000 {
@@ -162,36 +173,57 @@
162 #pwm-cells = <3>; 173 #pwm-cells = <3>;
163 }; 174 };
164 175
165 mmcif0: mmcif@e6bd0000 { 176 mmcif0: mmc@e6bd0000 {
166 compatible = "renesas,sh-mmcif"; 177 compatible = "renesas,sh-mmcif";
167 reg = <0xe6bd0000 0x100>; 178 reg = <0xe6bd0000 0x100>;
168 interrupt-parent = <&gic>; 179 interrupt-parent = <&gic>;
169 interrupts = <0 56 4 180 interrupts = <0 56 IRQ_TYPE_LEVEL_HIGH
170 0 57 4>; 181 0 57 IRQ_TYPE_LEVEL_HIGH>;
171 status = "disabled"; 182 status = "disabled";
172 }; 183 };
173 184
174 sdhi0: sdhi@e6850000 { 185 sdhi0: sd@e6850000 {
175 compatible = "renesas,sdhi-r8a7740"; 186 compatible = "renesas,sdhi-r8a7740";
176 reg = <0xe6850000 0x100>; 187 reg = <0xe6850000 0x100>;
177 interrupt-parent = <&gic>; 188 interrupt-parent = <&gic>;
178 interrupts = <0 117 4 189 interrupts = <0 117 IRQ_TYPE_LEVEL_HIGH
179 0 118 4 190 0 118 IRQ_TYPE_LEVEL_HIGH
180 0 119 4>; 191 0 119 IRQ_TYPE_LEVEL_HIGH>;
181 cap-sd-highspeed; 192 cap-sd-highspeed;
182 cap-sdio-irq; 193 cap-sdio-irq;
183 status = "disabled"; 194 status = "disabled";
184 }; 195 };
185 196
186 sdhi1: sdhi@e6860000 { 197 sdhi1: sd@e6860000 {
187 compatible = "renesas,sdhi-r8a7740"; 198 compatible = "renesas,sdhi-r8a7740";
188 reg = <0xe6860000 0x100>; 199 reg = <0xe6860000 0x100>;
189 interrupt-parent = <&gic>; 200 interrupt-parent = <&gic>;
190 interrupts = <0 121 4 201 interrupts = <0 121 IRQ_TYPE_LEVEL_HIGH
191 0 122 4 202 0 122 IRQ_TYPE_LEVEL_HIGH
192 0 123 4>; 203 0 123 IRQ_TYPE_LEVEL_HIGH>;
204 cap-sd-highspeed;
205 cap-sdio-irq;
206 status = "disabled";
207 };
208
209 sdhi2: sd@e6870000 {
210 compatible = "renesas,sdhi-r8a7740";
211 reg = <0xe6870000 0x100>;
212 interrupt-parent = <&gic>;
213 interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH
214 0 126 IRQ_TYPE_LEVEL_HIGH
215 0 127 IRQ_TYPE_LEVEL_HIGH>;
193 cap-sd-highspeed; 216 cap-sd-highspeed;
194 cap-sdio-irq; 217 cap-sdio-irq;
195 status = "disabled"; 218 status = "disabled";
196 }; 219 };
220
221 sh_fsi2: sound@fe1f0000 {
222 #sound-dai-cells = <1>;
223 compatible = "renesas,sh_fsi2";
224 reg = <0xfe1f0000 0x400>;
225 interrupt-parent = <&gic>;
226 interrupts = <0 9 0x4>;
227 status = "disabled";
228 };
197}; 229};
diff --git a/arch/arm/boot/dts/r8a7778-bockw-reference.dts b/arch/arm/boot/dts/r8a7778-bockw-reference.dts
index 969e386e852c..bb62c7a906f4 100644
--- a/arch/arm/boot/dts/r8a7778-bockw-reference.dts
+++ b/arch/arm/boot/dts/r8a7778-bockw-reference.dts
@@ -15,7 +15,8 @@
15 */ 15 */
16 16
17/dts-v1/; 17/dts-v1/;
18/include/ "r8a7778.dtsi" 18#include "r8a7778.dtsi"
19#include <dt-bindings/interrupt-controller/irq.h>
19 20
20/ { 21/ {
21 model = "bockw"; 22 model = "bockw";
@@ -45,13 +46,65 @@
45 46
46 phy-mode = "mii"; 47 phy-mode = "mii";
47 interrupt-parent = <&irqpin>; 48 interrupt-parent = <&irqpin>;
48 interrupts = <0 0>; /* IRQ0: hwirq 0 on irqpin */ 49 interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
49 reg-io-width = <4>; 50 reg-io-width = <4>;
50 vddvario-supply = <&fixedregulator3v3>; 51 vddvario-supply = <&fixedregulator3v3>;
51 vdd33a-supply = <&fixedregulator3v3>; 52 vdd33a-supply = <&fixedregulator3v3>;
52 }; 53 };
54
55};
56
57&mmcif {
58 pinctrl-0 = <&mmc_pins>;
59 pinctrl-names = "default";
60
61 vmmc-supply = <&fixedregulator3v3>;
62 bus-width = <8>;
63 broken-cd;
64 status = "okay";
53}; 65};
54 66
55&irqpin { 67&irqpin {
56 status = "okay"; 68 status = "okay";
57}; 69};
70
71&pfc {
72 pinctrl-0 = <&scif0_pins>;
73 pinctrl-names = "default";
74
75 scif0_pins: serial0 {
76 renesas,groups = "scif0_data_a", "scif0_ctrl";
77 renesas,function = "scif0";
78 };
79
80 mmc_pins: mmc {
81 renesas,groups = "mmc_data8", "mmc_ctrl";
82 renesas,function = "mmc";
83 };
84
85 sdhi0_pins: sd0 {
86 renesas,groups = "sdhi0_data4", "sdhi0_ctrl",
87 "sdhi0_cd", "sdhi0_wp";
88 renesas,function = "sdhi0";
89 };
90
91 hspi0_pins: hspi0 {
92 renesas,groups = "hspi0_a";
93 renesas,function = "hspi0";
94 };
95};
96
97&sdhi0 {
98 pinctrl-0 = <&sdhi0_pins>;
99 pinctrl-names = "default";
100
101 vmmc-supply = <&fixedregulator3v3>;
102 bus-width = <4>;
103 status = "okay";
104};
105
106&hspi0 {
107 pinctrl-0 = <&hspi0_pins>;
108 pinctrl-names = "default";
109 status = "okay";
110};
diff --git a/arch/arm/boot/dts/r8a7778-bockw.dts b/arch/arm/boot/dts/r8a7778-bockw.dts
index 12bbebc9c955..46a884d45175 100644
--- a/arch/arm/boot/dts/r8a7778-bockw.dts
+++ b/arch/arm/boot/dts/r8a7778-bockw.dts
@@ -15,7 +15,7 @@
15 */ 15 */
16 16
17/dts-v1/; 17/dts-v1/;
18/include/ "r8a7778.dtsi" 18#include "r8a7778.dtsi"
19 19
20/ { 20/ {
21 model = "bockw"; 21 model = "bockw";
diff --git a/arch/arm/boot/dts/r8a7778.dtsi b/arch/arm/boot/dts/r8a7778.dtsi
index a6308a399e2d..ddb3bd7a8838 100644
--- a/arch/arm/boot/dts/r8a7778.dtsi
+++ b/arch/arm/boot/dts/r8a7778.dtsi
@@ -16,6 +16,8 @@
16 16
17/include/ "skeleton.dtsi" 17/include/ "skeleton.dtsi"
18 18
19#include <dt-bindings/interrupt-controller/irq.h>
20
19/ { 21/ {
20 compatible = "renesas,r8a7778"; 22 compatible = "renesas,r8a7778";
21 23
@@ -25,6 +27,12 @@
25 }; 27 };
26 }; 28 };
27 29
30 aliases {
31 spi0 = &hspi0;
32 spi1 = &hspi1;
33 spi2 = &hspi2;
34 };
35
28 gic: interrupt-controller@fe438000 { 36 gic: interrupt-controller@fe438000 {
29 compatible = "arm,cortex-a9-gic"; 37 compatible = "arm,cortex-a9-gic";
30 #interrupt-cells = <3>; 38 #interrupt-cells = <3>;
@@ -35,7 +43,7 @@
35 43
36 /* irqpin: IRQ0 - IRQ3 */ 44 /* irqpin: IRQ0 - IRQ3 */
37 irqpin: irqpin@fe78001c { 45 irqpin: irqpin@fe78001c {
38 compatible = "renesas,intc-irqpin"; 46 compatible = "renesas,intc-irqpin-r8a7778", "renesas,intc-irqpin";
39 #interrupt-cells = <2>; 47 #interrupt-cells = <2>;
40 interrupt-controller; 48 interrupt-controller;
41 status = "disabled"; /* default off */ 49 status = "disabled"; /* default off */
@@ -45,10 +53,10 @@
45 <0xfe780044 4>, 53 <0xfe780044 4>,
46 <0xfe780064 4>; 54 <0xfe780064 4>;
47 interrupt-parent = <&gic>; 55 interrupt-parent = <&gic>;
48 interrupts = <0 27 0x4 56 interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH
49 0 28 0x4 57 0 28 IRQ_TYPE_LEVEL_HIGH
50 0 29 0x4 58 0 29 IRQ_TYPE_LEVEL_HIGH
51 0 30 0x4>; 59 0 30 IRQ_TYPE_LEVEL_HIGH>;
52 sense-bitfield-width = <2>; 60 sense-bitfield-width = <2>;
53 }; 61 };
54 62
@@ -56,7 +64,7 @@
56 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; 64 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
57 reg = <0xffc40000 0x2c>; 65 reg = <0xffc40000 0x2c>;
58 interrupt-parent = <&gic>; 66 interrupt-parent = <&gic>;
59 interrupts = <0 103 0x4>; 67 interrupts = <0 103 IRQ_TYPE_LEVEL_HIGH>;
60 #gpio-cells = <2>; 68 #gpio-cells = <2>;
61 gpio-controller; 69 gpio-controller;
62 gpio-ranges = <&pfc 0 0 32>; 70 gpio-ranges = <&pfc 0 0 32>;
@@ -68,7 +76,7 @@
68 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; 76 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
69 reg = <0xffc41000 0x2c>; 77 reg = <0xffc41000 0x2c>;
70 interrupt-parent = <&gic>; 78 interrupt-parent = <&gic>;
71 interrupts = <0 103 0x4>; 79 interrupts = <0 103 IRQ_TYPE_LEVEL_HIGH>;
72 #gpio-cells = <2>; 80 #gpio-cells = <2>;
73 gpio-controller; 81 gpio-controller;
74 gpio-ranges = <&pfc 0 32 32>; 82 gpio-ranges = <&pfc 0 32 32>;
@@ -80,7 +88,7 @@
80 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; 88 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
81 reg = <0xffc42000 0x2c>; 89 reg = <0xffc42000 0x2c>;
82 interrupt-parent = <&gic>; 90 interrupt-parent = <&gic>;
83 interrupts = <0 103 0x4>; 91 interrupts = <0 103 IRQ_TYPE_LEVEL_HIGH>;
84 #gpio-cells = <2>; 92 #gpio-cells = <2>;
85 gpio-controller; 93 gpio-controller;
86 gpio-ranges = <&pfc 0 64 32>; 94 gpio-ranges = <&pfc 0 64 32>;
@@ -92,7 +100,7 @@
92 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; 100 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
93 reg = <0xffc43000 0x2c>; 101 reg = <0xffc43000 0x2c>;
94 interrupt-parent = <&gic>; 102 interrupt-parent = <&gic>;
95 interrupts = <0 103 0x4>; 103 interrupts = <0 103 IRQ_TYPE_LEVEL_HIGH>;
96 #gpio-cells = <2>; 104 #gpio-cells = <2>;
97 gpio-controller; 105 gpio-controller;
98 gpio-ranges = <&pfc 0 96 32>; 106 gpio-ranges = <&pfc 0 96 32>;
@@ -104,7 +112,7 @@
104 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; 112 compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
105 reg = <0xffc44000 0x2c>; 113 reg = <0xffc44000 0x2c>;
106 interrupt-parent = <&gic>; 114 interrupt-parent = <&gic>;
107 interrupts = <0 103 0x4>; 115 interrupts = <0 103 IRQ_TYPE_LEVEL_HIGH>;
108 #gpio-cells = <2>; 116 #gpio-cells = <2>;
109 gpio-controller; 117 gpio-controller;
110 gpio-ranges = <&pfc 0 128 27>; 118 gpio-ranges = <&pfc 0 128 27>;
@@ -114,6 +122,148 @@
114 122
115 pfc: pfc@fffc0000 { 123 pfc: pfc@fffc0000 {
116 compatible = "renesas,pfc-r8a7778"; 124 compatible = "renesas,pfc-r8a7778";
117 reg = <0xfffc000 0x118>; 125 reg = <0xfffc0000 0x118>;
126 };
127
128 i2c0: i2c@ffc70000 {
129 #address-cells = <1>;
130 #size-cells = <0>;
131 compatible = "renesas,i2c-r8a7778";
132 reg = <0xffc70000 0x1000>;
133 interrupt-parent = <&gic>;
134 interrupts = <0 67 IRQ_TYPE_LEVEL_HIGH>;
135 status = "disabled";
136 };
137
138 i2c1: i2c@ffc71000 {
139 #address-cells = <1>;
140 #size-cells = <0>;
141 compatible = "renesas,i2c-r8a7778";
142 reg = <0xffc71000 0x1000>;
143 interrupt-parent = <&gic>;
144 interrupts = <0 78 IRQ_TYPE_LEVEL_HIGH>;
145 status = "disabled";
146 };
147
148 i2c2: i2c@ffc72000 {
149 #address-cells = <1>;
150 #size-cells = <0>;
151 compatible = "renesas,i2c-r8a7778";
152 reg = <0xffc72000 0x1000>;
153 interrupt-parent = <&gic>;
154 interrupts = <0 76 IRQ_TYPE_LEVEL_HIGH>;
155 status = "disabled";
156 };
157
158 i2c3: i2c@ffc73000 {
159 #address-cells = <1>;
160 #size-cells = <0>;
161 compatible = "renesas,i2c-r8a7778";
162 reg = <0xffc73000 0x1000>;
163 interrupt-parent = <&gic>;
164 interrupts = <0 77 IRQ_TYPE_LEVEL_HIGH>;
165 status = "disabled";
166 };
167
168 mmcif: mmc@ffe4e000 {
169 compatible = "renesas,sh-mmcif";
170 reg = <0xffe4e000 0x100>;
171 interrupt-parent = <&gic>;
172 interrupts = <0 61 IRQ_TYPE_LEVEL_HIGH>;
173 status = "disabled";
174 };
175
176 sdhi0: sd@ffe4c000 {
177 compatible = "renesas,sdhi-r8a7778";
178 reg = <0xffe4c000 0x100>;
179 interrupt-parent = <&gic>;
180 interrupts = <0 87 IRQ_TYPE_LEVEL_HIGH>;
181 cap-sd-highspeed;
182 cap-sdio-irq;
183 status = "disabled";
184 };
185
186 sdhi1: sd@ffe4d000 {
187 compatible = "renesas,sdhi-r8a7778";
188 reg = <0xffe4d000 0x100>;
189 interrupt-parent = <&gic>;
190 interrupts = <0 88 IRQ_TYPE_LEVEL_HIGH>;
191 cap-sd-highspeed;
192 cap-sdio-irq;
193 status = "disabled";
194 };
195
196 sdhi2: sd@ffe4f000 {
197 compatible = "renesas,sdhi-r8a7778";
198 reg = <0xffe4f000 0x100>;
199 interrupt-parent = <&gic>;
200 interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
201 cap-sd-highspeed;
202 cap-sdio-irq;
203 status = "disabled";
204 };
205
206 i2c0: i2c@ffc70000 {
207 #address-cells = <1>;
208 #size-cells = <0>;
209 compatible = "renesas,i2c-r8a7778";
210 reg = <0xffc70000 0x1000>;
211 interrupt-parent = <&gic>;
212 interrupts = <0 67 IRQ_TYPE_LEVEL_HIGH>;
213 status = "disabled";
214 };
215
216 i2c1: i2c@ffc71000 {
217 #address-cells = <1>;
218 #size-cells = <0>;
219 compatible = "renesas,i2c-r8a7778";
220 reg = <0xffc71000 0x1000>;
221 interrupt-parent = <&gic>;
222 interrupts = <0 78 IRQ_TYPE_LEVEL_HIGH>;
223 status = "disabled";
224 };
225
226 i2c2: i2c@ffc72000 {
227 #address-cells = <1>;
228 #size-cells = <0>;
229 compatible = "renesas,i2c-r8a7778";
230 reg = <0xffc72000 0x1000>;
231 interrupt-parent = <&gic>;
232 interrupts = <0 76 IRQ_TYPE_LEVEL_HIGH>;
233 status = "disabled";
234 };
235
236 i2c3: i2c@ffc73000 {
237 #address-cells = <1>;
238 #size-cells = <0>;
239 compatible = "renesas,i2c-r8a7778";
240 reg = <0xffc73000 0x1000>;
241 interrupt-parent = <&gic>;
242 interrupts = <0 77 IRQ_TYPE_LEVEL_HIGH>;
243 status = "disabled";
244 };
245
246 hspi0: spi@fffc7000 {
247 compatible = "renesas,hspi";
248 reg = <0xfffc7000 0x18>;
249 interrupt-controller = <&gic>;
250 interrupts = <0 63 IRQ_TYPE_LEVEL_HIGH>;
251 status = "disabled";
252 };
253
254 hspi1: spi@fffc8000 {
255 compatible = "renesas,hspi";
256 reg = <0xfffc8000 0x18>;
257 interrupt-controller = <&gic>;
258 interrupts = <0 84 IRQ_TYPE_LEVEL_HIGH>;
259 status = "disabled";
260 };
261
262 hspi2: spi@fffc6000 {
263 compatible = "renesas,hspi";
264 reg = <0xfffc6000 0x18>;
265 interrupt-controller = <&gic>;
266 interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>;
267 status = "disabled";
118 }; 268 };
119}; 269};
diff --git a/arch/arm/boot/dts/r8a7779-marzen-reference.dts b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
index ab4110aa3c3b..76f5eef7d1cc 100644
--- a/arch/arm/boot/dts/r8a7779-marzen-reference.dts
+++ b/arch/arm/boot/dts/r8a7779-marzen-reference.dts
@@ -10,8 +10,9 @@
10 */ 10 */
11 11
12/dts-v1/; 12/dts-v1/;
13/include/ "r8a7779.dtsi" 13#include "r8a7779.dtsi"
14#include <dt-bindings/gpio/gpio.h> 14#include <dt-bindings/gpio/gpio.h>
15#include <dt-bindings/interrupt-controller/irq.h>
15 16
16/ { 17/ {
17 model = "marzen"; 18 model = "marzen";
@@ -43,7 +44,7 @@
43 44
44 phy-mode = "mii"; 45 phy-mode = "mii";
45 interrupt-parent = <&irqpin0>; 46 interrupt-parent = <&irqpin0>;
46 interrupts = <1 0>; /* IRQ1: hwirq 1 on irqpin0 */ 47 interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
47 reg-io-width = <4>; 48 reg-io-width = <4>;
48 vddvario-supply = <&fixedregulator3v3>; 49 vddvario-supply = <&fixedregulator3v3>;
49 vdd33a-supply = <&fixedregulator3v3>; 50 vdd33a-supply = <&fixedregulator3v3>;
@@ -68,7 +69,7 @@
68}; 69};
69 70
70&pfc { 71&pfc {
71 pinctrl-0 = <&scif2_pins &scif4_pins &sdhi0_pins>; 72 pinctrl-0 = <&scif2_pins &scif4_pins>;
72 pinctrl-names = "default"; 73 pinctrl-names = "default";
73 74
74 lan0_pins: lan0 { 75 lan0_pins: lan0 {
@@ -82,19 +83,38 @@
82 }; 83 };
83 }; 84 };
84 85
85 scif2_pins: scif2 { 86 scif2_pins: serial2 {
86 renesas,groups = "scif2_data_c"; 87 renesas,groups = "scif2_data_c";
87 renesas,function = "scif2"; 88 renesas,function = "scif2";
88 }; 89 };
89 90
90 scif4_pins: scif4 { 91 scif4_pins: serial4 {
91 renesas,groups = "scif4_data"; 92 renesas,groups = "scif4_data";
92 renesas,function = "scif4"; 93 renesas,function = "scif4";
93 }; 94 };
94 95
95 sdhi0_pins: sdhi0 { 96 sdhi0_pins: sd0 {
96 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd", 97 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd";
97 "sdhi0_wp";
98 renesas,function = "sdhi0"; 98 renesas,function = "sdhi0";
99 }; 99 };
100
101 hspi0_pins: hspi0 {
102 renesas,groups = "hspi0";
103 renesas,function = "hspi0";
104 };
105};
106
107&sdhi0 {
108 pinctrl-0 = <&sdhi0_pins>;
109 pinctrl-names = "default";
110
111 vmmc-supply = <&fixedregulator3v3>;
112 bus-width = <4>;
113 status = "okay";
114};
115
116&hspi0 {
117 pinctrl-0 = <&hspi0_pins>;
118 pinctrl-names = "default";
119 status = "okay";
100}; 120};
diff --git a/arch/arm/boot/dts/r8a7779-marzen.dts b/arch/arm/boot/dts/r8a7779-marzen.dts
index f3f7f7999736..a7af2c2371f2 100644
--- a/arch/arm/boot/dts/r8a7779-marzen.dts
+++ b/arch/arm/boot/dts/r8a7779-marzen.dts
@@ -10,7 +10,7 @@
10 */ 10 */
11 11
12/dts-v1/; 12/dts-v1/;
13/include/ "r8a7779.dtsi" 13#include "r8a7779.dtsi"
14 14
15/ { 15/ {
16 model = "marzen"; 16 model = "marzen";
diff --git a/arch/arm/boot/dts/r8a7779.dtsi b/arch/arm/boot/dts/r8a7779.dtsi
index 19faeac3fd2e..d0561d4c7c46 100644
--- a/arch/arm/boot/dts/r8a7779.dtsi
+++ b/arch/arm/boot/dts/r8a7779.dtsi
@@ -11,6 +11,8 @@
11 11
12/include/ "skeleton.dtsi" 12/include/ "skeleton.dtsi"
13 13
14#include <dt-bindings/interrupt-controller/irq.h>
15
14/ { 16/ {
15 compatible = "renesas,r8a7779"; 17 compatible = "renesas,r8a7779";
16 18
@@ -40,6 +42,12 @@
40 }; 42 };
41 }; 43 };
42 44
45 aliases {
46 spi0 = &hspi0;
47 spi1 = &hspi1;
48 spi2 = &hspi2;
49 };
50
43 gic: interrupt-controller@f0001000 { 51 gic: interrupt-controller@f0001000 {
44 compatible = "arm,cortex-a9-gic"; 52 compatible = "arm,cortex-a9-gic";
45 #interrupt-cells = <3>; 53 #interrupt-cells = <3>;
@@ -52,7 +60,7 @@
52 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 60 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
53 reg = <0xffc40000 0x2c>; 61 reg = <0xffc40000 0x2c>;
54 interrupt-parent = <&gic>; 62 interrupt-parent = <&gic>;
55 interrupts = <0 141 0x4>; 63 interrupts = <0 141 IRQ_TYPE_LEVEL_HIGH>;
56 #gpio-cells = <2>; 64 #gpio-cells = <2>;
57 gpio-controller; 65 gpio-controller;
58 gpio-ranges = <&pfc 0 0 32>; 66 gpio-ranges = <&pfc 0 0 32>;
@@ -64,7 +72,7 @@
64 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 72 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
65 reg = <0xffc41000 0x2c>; 73 reg = <0xffc41000 0x2c>;
66 interrupt-parent = <&gic>; 74 interrupt-parent = <&gic>;
67 interrupts = <0 142 0x4>; 75 interrupts = <0 142 IRQ_TYPE_LEVEL_HIGH>;
68 #gpio-cells = <2>; 76 #gpio-cells = <2>;
69 gpio-controller; 77 gpio-controller;
70 gpio-ranges = <&pfc 0 32 32>; 78 gpio-ranges = <&pfc 0 32 32>;
@@ -76,7 +84,7 @@
76 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 84 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
77 reg = <0xffc42000 0x2c>; 85 reg = <0xffc42000 0x2c>;
78 interrupt-parent = <&gic>; 86 interrupt-parent = <&gic>;
79 interrupts = <0 143 0x4>; 87 interrupts = <0 143 IRQ_TYPE_LEVEL_HIGH>;
80 #gpio-cells = <2>; 88 #gpio-cells = <2>;
81 gpio-controller; 89 gpio-controller;
82 gpio-ranges = <&pfc 0 64 32>; 90 gpio-ranges = <&pfc 0 64 32>;
@@ -88,7 +96,7 @@
88 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 96 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
89 reg = <0xffc43000 0x2c>; 97 reg = <0xffc43000 0x2c>;
90 interrupt-parent = <&gic>; 98 interrupt-parent = <&gic>;
91 interrupts = <0 144 0x4>; 99 interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>;
92 #gpio-cells = <2>; 100 #gpio-cells = <2>;
93 gpio-controller; 101 gpio-controller;
94 gpio-ranges = <&pfc 0 96 32>; 102 gpio-ranges = <&pfc 0 96 32>;
@@ -100,7 +108,7 @@
100 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 108 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
101 reg = <0xffc44000 0x2c>; 109 reg = <0xffc44000 0x2c>;
102 interrupt-parent = <&gic>; 110 interrupt-parent = <&gic>;
103 interrupts = <0 145 0x4>; 111 interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>;
104 #gpio-cells = <2>; 112 #gpio-cells = <2>;
105 gpio-controller; 113 gpio-controller;
106 gpio-ranges = <&pfc 0 128 32>; 114 gpio-ranges = <&pfc 0 128 32>;
@@ -112,7 +120,7 @@
112 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 120 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
113 reg = <0xffc45000 0x2c>; 121 reg = <0xffc45000 0x2c>;
114 interrupt-parent = <&gic>; 122 interrupt-parent = <&gic>;
115 interrupts = <0 146 0x4>; 123 interrupts = <0 146 IRQ_TYPE_LEVEL_HIGH>;
116 #gpio-cells = <2>; 124 #gpio-cells = <2>;
117 gpio-controller; 125 gpio-controller;
118 gpio-ranges = <&pfc 0 160 32>; 126 gpio-ranges = <&pfc 0 160 32>;
@@ -124,7 +132,7 @@
124 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; 132 compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar";
125 reg = <0xffc46000 0x2c>; 133 reg = <0xffc46000 0x2c>;
126 interrupt-parent = <&gic>; 134 interrupt-parent = <&gic>;
127 interrupts = <0 147 0x4>; 135 interrupts = <0 147 IRQ_TYPE_LEVEL_HIGH>;
128 #gpio-cells = <2>; 136 #gpio-cells = <2>;
129 gpio-controller; 137 gpio-controller;
130 gpio-ranges = <&pfc 0 192 9>; 138 gpio-ranges = <&pfc 0 192 9>;
@@ -133,7 +141,7 @@
133 }; 141 };
134 142
135 irqpin0: irqpin@fe780010 { 143 irqpin0: irqpin@fe780010 {
136 compatible = "renesas,intc-irqpin"; 144 compatible = "renesas,intc-irqpin-r8a7779", "renesas,intc-irqpin";
137 #interrupt-cells = <2>; 145 #interrupt-cells = <2>;
138 status = "disabled"; 146 status = "disabled";
139 interrupt-controller; 147 interrupt-controller;
@@ -143,50 +151,50 @@
143 <0xfe780044 4>, 151 <0xfe780044 4>,
144 <0xfe780064 4>; 152 <0xfe780064 4>;
145 interrupt-parent = <&gic>; 153 interrupt-parent = <&gic>;
146 interrupts = <0 27 0x4 154 interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH
147 0 28 0x4 155 0 28 IRQ_TYPE_LEVEL_HIGH
148 0 29 0x4 156 0 29 IRQ_TYPE_LEVEL_HIGH
149 0 30 0x4>; 157 0 30 IRQ_TYPE_LEVEL_HIGH>;
150 sense-bitfield-width = <2>; 158 sense-bitfield-width = <2>;
151 }; 159 };
152 160
153 i2c0: i2c@ffc70000 { 161 i2c0: i2c@ffc70000 {
154 #address-cells = <1>; 162 #address-cells = <1>;
155 #size-cells = <0>; 163 #size-cells = <0>;
156 compatible = "renesas,rmobile-iic"; 164 compatible = "renesas,i2c-r8a7779";
157 reg = <0xffc70000 0x1000>; 165 reg = <0xffc70000 0x1000>;
158 interrupt-parent = <&gic>; 166 interrupt-parent = <&gic>;
159 interrupts = <0 79 0x4>; 167 interrupts = <0 79 IRQ_TYPE_LEVEL_HIGH>;
160 status = "disabled"; 168 status = "disabled";
161 }; 169 };
162 170
163 i2c1: i2c@ffc71000 { 171 i2c1: i2c@ffc71000 {
164 #address-cells = <1>; 172 #address-cells = <1>;
165 #size-cells = <0>; 173 #size-cells = <0>;
166 compatible = "renesas,rmobile-iic"; 174 compatible = "renesas,i2c-r8a7779";
167 reg = <0xffc71000 0x1000>; 175 reg = <0xffc71000 0x1000>;
168 interrupt-parent = <&gic>; 176 interrupt-parent = <&gic>;
169 interrupts = <0 82 0x4>; 177 interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>;
170 status = "disabled"; 178 status = "disabled";
171 }; 179 };
172 180
173 i2c2: i2c@ffc72000 { 181 i2c2: i2c@ffc72000 {
174 #address-cells = <1>; 182 #address-cells = <1>;
175 #size-cells = <0>; 183 #size-cells = <0>;
176 compatible = "renesas,rmobile-iic"; 184 compatible = "renesas,i2c-r8a7779";
177 reg = <0xffc72000 0x1000>; 185 reg = <0xffc72000 0x1000>;
178 interrupt-parent = <&gic>; 186 interrupt-parent = <&gic>;
179 interrupts = <0 80 0x4>; 187 interrupts = <0 80 IRQ_TYPE_LEVEL_HIGH>;
180 status = "disabled"; 188 status = "disabled";
181 }; 189 };
182 190
183 i2c3: i2c@ffc73000 { 191 i2c3: i2c@ffc73000 {
184 #address-cells = <1>; 192 #address-cells = <1>;
185 #size-cells = <0>; 193 #size-cells = <0>;
186 compatible = "renesas,rmobile-iic"; 194 compatible = "renesas,i2c-r8a7779";
187 reg = <0xffc73000 0x1000>; 195 reg = <0xffc73000 0x1000>;
188 interrupt-parent = <&gic>; 196 interrupt-parent = <&gic>;
189 interrupts = <0 81 0x4>; 197 interrupts = <0 81 IRQ_TYPE_LEVEL_HIGH>;
190 status = "disabled"; 198 status = "disabled";
191 }; 199 };
192 200
@@ -204,6 +212,70 @@
204 compatible = "renesas,rcar-sata"; 212 compatible = "renesas,rcar-sata";
205 reg = <0xfc600000 0x2000>; 213 reg = <0xfc600000 0x2000>;
206 interrupt-parent = <&gic>; 214 interrupt-parent = <&gic>;
207 interrupts = <0 100 0x4>; 215 interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>;
216 };
217
218 sdhi0: sd@ffe4c000 {
219 compatible = "renesas,sdhi-r8a7779";
220 reg = <0xffe4c000 0x100>;
221 interrupt-parent = <&gic>;
222 interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH>;
223 cap-sd-highspeed;
224 cap-sdio-irq;
225 status = "disabled";
226 };
227
228 sdhi1: sd@ffe4d000 {
229 compatible = "renesas,sdhi-r8a7779";
230 reg = <0xffe4d000 0x100>;
231 interrupt-parent = <&gic>;
232 interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
233 cap-sd-highspeed;
234 cap-sdio-irq;
235 status = "disabled";
236 };
237
238 sdhi2: sd@ffe4e000 {
239 compatible = "renesas,sdhi-r8a7779";
240 reg = <0xffe4e000 0x100>;
241 interrupt-parent = <&gic>;
242 interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
243 cap-sd-highspeed;
244 cap-sdio-irq;
245 status = "disabled";
246 };
247
248 sdhi3: sd@ffe4f000 {
249 compatible = "renesas,sdhi-r8a7779";
250 reg = <0xffe4f000 0x100>;
251 interrupt-parent = <&gic>;
252 interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
253 cap-sd-highspeed;
254 cap-sdio-irq;
255 status = "disabled";
256 };
257
258 hspi0: spi@fffc7000 {
259 compatible = "renesas,hspi";
260 reg = <0xfffc7000 0x18>;
261 interrupt-controller = <&gic>;
262 interrupts = <0 73 IRQ_TYPE_LEVEL_HIGH>;
263 status = "disabled";
264 };
265
266 hspi1: spi@fffc8000 {
267 compatible = "renesas,hspi";
268 reg = <0xfffc8000 0x18>;
269 interrupt-controller = <&gic>;
270 interrupts = <0 74 IRQ_TYPE_LEVEL_HIGH>;
271 status = "disabled";
272 };
273
274 hspi2: spi@fffc6000 {
275 compatible = "renesas,hspi";
276 reg = <0xfffc6000 0x18>;
277 interrupt-controller = <&gic>;
278 interrupts = <0 75 IRQ_TYPE_LEVEL_HIGH>;
279 status = "disabled";
208 }; 280 };
209}; 281};
diff --git a/arch/arm/boot/dts/r8a7790-lager-reference.dts b/arch/arm/boot/dts/r8a7790-lager-reference.dts
deleted file mode 100644
index c462ef138922..000000000000
--- a/arch/arm/boot/dts/r8a7790-lager-reference.dts
+++ /dev/null
@@ -1,45 +0,0 @@
1/*
2 * Device Tree Source for the Lager board
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
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/dts-v1/;
12/include/ "r8a7790.dtsi"
13#include <dt-bindings/gpio/gpio.h>
14
15/ {
16 model = "Lager";
17 compatible = "renesas,lager-reference", "renesas,r8a7790";
18
19 chosen {
20 bootargs = "console=ttySC6,115200 ignore_loglevel rw";
21 };
22
23 memory@40000000 {
24 device_type = "memory";
25 reg = <0 0x40000000 0 0x80000000>;
26 };
27
28 lbsc {
29 #address-cells = <1>;
30 #size-cells = <1>;
31 };
32
33 leds {
34 compatible = "gpio-leds";
35 led6 {
36 gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
37 };
38 led7 {
39 gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
40 };
41 led8 {
42 gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
43 };
44 };
45};
diff --git a/arch/arm/boot/dts/r8a7790-lager.dts b/arch/arm/boot/dts/r8a7790-lager.dts
index 203bd089af29..57569cba1528 100644
--- a/arch/arm/boot/dts/r8a7790-lager.dts
+++ b/arch/arm/boot/dts/r8a7790-lager.dts
@@ -9,7 +9,8 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "r8a7790.dtsi" 12#include "r8a7790.dtsi"
13#include <dt-bindings/gpio/gpio.h>
13 14
14/ { 15/ {
15 model = "Lager"; 16 model = "Lager";
@@ -24,8 +25,69 @@
24 reg = <0 0x40000000 0 0x80000000>; 25 reg = <0 0x40000000 0 0x80000000>;
25 }; 26 };
26 27
28 memory@180000000 {
29 device_type = "memory";
30 reg = <1 0x80000000 0 0x80000000>;
31 };
32
27 lbsc { 33 lbsc {
28 #address-cells = <1>; 34 #address-cells = <1>;
29 #size-cells = <1>; 35 #size-cells = <1>;
30 }; 36 };
37
38 leds {
39 compatible = "gpio-leds";
40 led6 {
41 gpios = <&gpio4 22 GPIO_ACTIVE_HIGH>;
42 };
43 led7 {
44 gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>;
45 };
46 led8 {
47 gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
48 };
49 };
50
51 fixedregulator3v3: fixedregulator@0 {
52 compatible = "regulator-fixed";
53 regulator-name = "fixed-3.3V";
54 regulator-min-microvolt = <3300000>;
55 regulator-max-microvolt = <3300000>;
56 regulator-boot-on;
57 regulator-always-on;
58 };
59};
60
61&extal_clk {
62 clock-frequency = <20000000>;
63};
64
65&pfc {
66 pinctrl-0 = <&scif0_pins &scif1_pins>;
67 pinctrl-names = "default";
68
69 scif0_pins: serial0 {
70 renesas,groups = "scif0_data";
71 renesas,function = "scif0";
72 };
73
74 scif1_pins: serial1 {
75 renesas,groups = "scif1_data";
76 renesas,function = "scif1";
77 };
78
79 mmc1_pins: mmc1 {
80 renesas,groups = "mmc1_data8", "mmc1_ctrl";
81 renesas,function = "mmc1";
82 };
83};
84
85&mmcif1 {
86 pinctrl-0 = <&mmc1_pins>;
87 pinctrl-names = "default";
88
89 vmmc-supply = <&fixedregulator3v3>;
90 bus-width = <8>;
91 non-removable;
92 status = "okay";
31}; 93};
diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi
index 9987dd0e9c59..f48487c2a970 100644
--- a/arch/arm/boot/dts/r8a7790.dtsi
+++ b/arch/arm/boot/dts/r8a7790.dtsi
@@ -8,6 +8,10 @@
8 * kind, whether express or implied. 8 * kind, whether express or implied.
9 */ 9 */
10 10
11#include <dt-bindings/clock/r8a7790-clock.h>
12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/interrupt-controller/irq.h>
14
11/ { 15/ {
12 compatible = "renesas,r8a7790"; 16 compatible = "renesas,r8a7790";
13 interrupt-parent = <&gic>; 17 interrupt-parent = <&gic>;
@@ -84,14 +88,14 @@
84 <0 0xf1002000 0 0x1000>, 88 <0 0xf1002000 0 0x1000>,
85 <0 0xf1004000 0 0x2000>, 89 <0 0xf1004000 0 0x2000>,
86 <0 0xf1006000 0 0x2000>; 90 <0 0xf1006000 0 0x2000>;
87 interrupts = <1 9 0xf04>; 91 interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
88 }; 92 };
89 93
90 gpio0: gpio@e6050000 { 94 gpio0: gpio@e6050000 {
91 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; 95 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
92 reg = <0 0xe6050000 0 0x50>; 96 reg = <0 0xe6050000 0 0x50>;
93 interrupt-parent = <&gic>; 97 interrupt-parent = <&gic>;
94 interrupts = <0 4 0x4>; 98 interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
95 #gpio-cells = <2>; 99 #gpio-cells = <2>;
96 gpio-controller; 100 gpio-controller;
97 gpio-ranges = <&pfc 0 0 32>; 101 gpio-ranges = <&pfc 0 0 32>;
@@ -103,7 +107,7 @@
103 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; 107 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
104 reg = <0 0xe6051000 0 0x50>; 108 reg = <0 0xe6051000 0 0x50>;
105 interrupt-parent = <&gic>; 109 interrupt-parent = <&gic>;
106 interrupts = <0 5 0x4>; 110 interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;
107 #gpio-cells = <2>; 111 #gpio-cells = <2>;
108 gpio-controller; 112 gpio-controller;
109 gpio-ranges = <&pfc 0 32 32>; 113 gpio-ranges = <&pfc 0 32 32>;
@@ -115,7 +119,7 @@
115 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; 119 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
116 reg = <0 0xe6052000 0 0x50>; 120 reg = <0 0xe6052000 0 0x50>;
117 interrupt-parent = <&gic>; 121 interrupt-parent = <&gic>;
118 interrupts = <0 6 0x4>; 122 interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
119 #gpio-cells = <2>; 123 #gpio-cells = <2>;
120 gpio-controller; 124 gpio-controller;
121 gpio-ranges = <&pfc 0 64 32>; 125 gpio-ranges = <&pfc 0 64 32>;
@@ -127,7 +131,7 @@
127 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; 131 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
128 reg = <0 0xe6053000 0 0x50>; 132 reg = <0 0xe6053000 0 0x50>;
129 interrupt-parent = <&gic>; 133 interrupt-parent = <&gic>;
130 interrupts = <0 7 0x4>; 134 interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
131 #gpio-cells = <2>; 135 #gpio-cells = <2>;
132 gpio-controller; 136 gpio-controller;
133 gpio-ranges = <&pfc 0 96 32>; 137 gpio-ranges = <&pfc 0 96 32>;
@@ -139,7 +143,7 @@
139 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; 143 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
140 reg = <0 0xe6054000 0 0x50>; 144 reg = <0 0xe6054000 0 0x50>;
141 interrupt-parent = <&gic>; 145 interrupt-parent = <&gic>;
142 interrupts = <0 8 0x4>; 146 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
143 #gpio-cells = <2>; 147 #gpio-cells = <2>;
144 gpio-controller; 148 gpio-controller;
145 gpio-ranges = <&pfc 0 128 32>; 149 gpio-ranges = <&pfc 0 128 32>;
@@ -151,7 +155,7 @@
151 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; 155 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
152 reg = <0 0xe6055000 0 0x50>; 156 reg = <0 0xe6055000 0 0x50>;
153 interrupt-parent = <&gic>; 157 interrupt-parent = <&gic>;
154 interrupts = <0 9 0x4>; 158 interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
155 #gpio-cells = <2>; 159 #gpio-cells = <2>;
156 gpio-controller; 160 gpio-controller;
157 gpio-ranges = <&pfc 0 160 32>; 161 gpio-ranges = <&pfc 0 160 32>;
@@ -159,21 +163,31 @@
159 interrupt-controller; 163 interrupt-controller;
160 }; 164 };
161 165
166 thermal@e61f0000 {
167 compatible = "renesas,thermal-r8a7790", "renesas,rcar-thermal";
168 reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>;
169 interrupt-parent = <&gic>;
170 interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
171 };
172
162 timer { 173 timer {
163 compatible = "arm,armv7-timer"; 174 compatible = "arm,armv7-timer";
164 interrupts = <1 13 0xf08>, 175 interrupts = <1 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
165 <1 14 0xf08>, 176 <1 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
166 <1 11 0xf08>, 177 <1 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
167 <1 10 0xf08>; 178 <1 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
168 }; 179 };
169 180
170 irqc0: interrupt-controller@e61c0000 { 181 irqc0: interrupt-controller@e61c0000 {
171 compatible = "renesas,irqc"; 182 compatible = "renesas,irqc-r8a7790", "renesas,irqc";
172 #interrupt-cells = <2>; 183 #interrupt-cells = <2>;
173 interrupt-controller; 184 interrupt-controller;
174 reg = <0 0xe61c0000 0 0x200>; 185 reg = <0 0xe61c0000 0 0x200>;
175 interrupt-parent = <&gic>; 186 interrupt-parent = <&gic>;
176 interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>; 187 interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>,
188 <0 1 IRQ_TYPE_LEVEL_HIGH>,
189 <0 2 IRQ_TYPE_LEVEL_HIGH>,
190 <0 3 IRQ_TYPE_LEVEL_HIGH>;
177 }; 191 };
178 192
179 i2c0: i2c@e6508000 { 193 i2c0: i2c@e6508000 {
@@ -182,7 +196,8 @@
182 compatible = "renesas,i2c-r8a7790"; 196 compatible = "renesas,i2c-r8a7790";
183 reg = <0 0xe6508000 0 0x40>; 197 reg = <0 0xe6508000 0 0x40>;
184 interrupt-parent = <&gic>; 198 interrupt-parent = <&gic>;
185 interrupts = <0 287 0x4>; 199 interrupts = <0 287 IRQ_TYPE_LEVEL_HIGH>;
200 clocks = <&mstp3_clks R8A7790_CLK_I2C0>;
186 status = "disabled"; 201 status = "disabled";
187 }; 202 };
188 203
@@ -192,7 +207,8 @@
192 compatible = "renesas,i2c-r8a7790"; 207 compatible = "renesas,i2c-r8a7790";
193 reg = <0 0xe6518000 0 0x40>; 208 reg = <0 0xe6518000 0 0x40>;
194 interrupt-parent = <&gic>; 209 interrupt-parent = <&gic>;
195 interrupts = <0 288 0x4>; 210 interrupts = <0 288 IRQ_TYPE_LEVEL_HIGH>;
211 clocks = <&mstp3_clks R8A7790_CLK_I2C1>;
196 status = "disabled"; 212 status = "disabled";
197 }; 213 };
198 214
@@ -202,7 +218,8 @@
202 compatible = "renesas,i2c-r8a7790"; 218 compatible = "renesas,i2c-r8a7790";
203 reg = <0 0xe6530000 0 0x40>; 219 reg = <0 0xe6530000 0 0x40>;
204 interrupt-parent = <&gic>; 220 interrupt-parent = <&gic>;
205 interrupts = <0 286 0x4>; 221 interrupts = <0 286 IRQ_TYPE_LEVEL_HIGH>;
222 clocks = <&mstp3_clks R8A7790_CLK_I2C2>;
206 status = "disabled"; 223 status = "disabled";
207 }; 224 };
208 225
@@ -212,24 +229,27 @@
212 compatible = "renesas,i2c-r8a7790"; 229 compatible = "renesas,i2c-r8a7790";
213 reg = <0 0xe6540000 0 0x40>; 230 reg = <0 0xe6540000 0 0x40>;
214 interrupt-parent = <&gic>; 231 interrupt-parent = <&gic>;
215 interrupts = <0 290 0x4>; 232 interrupts = <0 290 IRQ_TYPE_LEVEL_HIGH>;
233 clocks = <&mstp3_clks R8A7790_CLK_I2C3>;
216 status = "disabled"; 234 status = "disabled";
217 }; 235 };
218 236
219 mmcif0: mmcif@ee200000 { 237 mmcif0: mmcif@ee200000 {
220 compatible = "renesas,sh-mmcif"; 238 compatible = "renesas,mmcif-r8a7790", "renesas,sh-mmcif";
221 reg = <0 0xee200000 0 0x80>; 239 reg = <0 0xee200000 0 0x80>;
222 interrupt-parent = <&gic>; 240 interrupt-parent = <&gic>;
223 interrupts = <0 169 0x4>; 241 interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>;
242 clocks = <&mstp3_clks R8A7790_CLK_MMCIF0>;
224 reg-io-width = <4>; 243 reg-io-width = <4>;
225 status = "disabled"; 244 status = "disabled";
226 }; 245 };
227 246
228 mmcif1: mmcif@ee220000 { 247 mmcif1: mmc@ee220000 {
229 compatible = "renesas,sh-mmcif"; 248 compatible = "renesas,mmcif-r8a7790", "renesas,sh-mmcif";
230 reg = <0 0xee220000 0 0x80>; 249 reg = <0 0xee220000 0 0x80>;
231 interrupt-parent = <&gic>; 250 interrupt-parent = <&gic>;
232 interrupts = <0 170 0x4>; 251 interrupts = <0 170 IRQ_TYPE_LEVEL_HIGH>;
252 clocks = <&mstp3_clks R8A7790_CLK_MMCIF1>;
233 reg-io-width = <4>; 253 reg-io-width = <4>;
234 status = "disabled"; 254 status = "disabled";
235 }; 255 };
@@ -239,39 +259,372 @@
239 reg = <0 0xe6060000 0 0x250>; 259 reg = <0 0xe6060000 0 0x250>;
240 }; 260 };
241 261
242 sdhi0: sdhi@ee100000 { 262 sdhi0: sd@ee100000 {
243 compatible = "renesas,sdhi-r8a7790"; 263 compatible = "renesas,sdhi-r8a7790";
244 reg = <0 0xee100000 0 0x200>; 264 reg = <0 0xee100000 0 0x200>;
245 interrupt-parent = <&gic>; 265 interrupt-parent = <&gic>;
246 interrupts = <0 165 4>; 266 interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>;
267 clocks = <&mstp3_clks R8A7790_CLK_SDHI0>;
247 cap-sd-highspeed; 268 cap-sd-highspeed;
248 status = "disabled"; 269 status = "disabled";
249 }; 270 };
250 271
251 sdhi1: sdhi@ee120000 { 272 sdhi1: sd@ee120000 {
252 compatible = "renesas,sdhi-r8a7790"; 273 compatible = "renesas,sdhi-r8a7790";
253 reg = <0 0xee120000 0 0x200>; 274 reg = <0 0xee120000 0 0x200>;
254 interrupt-parent = <&gic>; 275 interrupt-parent = <&gic>;
255 interrupts = <0 166 4>; 276 interrupts = <0 166 IRQ_TYPE_LEVEL_HIGH>;
277 clocks = <&mstp3_clks R8A7790_CLK_SDHI1>;
256 cap-sd-highspeed; 278 cap-sd-highspeed;
257 status = "disabled"; 279 status = "disabled";
258 }; 280 };
259 281
260 sdhi2: sdhi@ee140000 { 282 sdhi2: sd@ee140000 {
261 compatible = "renesas,sdhi-r8a7790"; 283 compatible = "renesas,sdhi-r8a7790";
262 reg = <0 0xee140000 0 0x100>; 284 reg = <0 0xee140000 0 0x100>;
263 interrupt-parent = <&gic>; 285 interrupt-parent = <&gic>;
264 interrupts = <0 167 4>; 286 interrupts = <0 167 IRQ_TYPE_LEVEL_HIGH>;
287 clocks = <&mstp3_clks R8A7790_CLK_SDHI2>;
265 cap-sd-highspeed; 288 cap-sd-highspeed;
266 status = "disabled"; 289 status = "disabled";
267 }; 290 };
268 291
269 sdhi3: sdhi@ee160000 { 292 sdhi3: sd@ee160000 {
270 compatible = "renesas,sdhi-r8a7790"; 293 compatible = "renesas,sdhi-r8a7790";
271 reg = <0 0xee160000 0 0x100>; 294 reg = <0 0xee160000 0 0x100>;
272 interrupt-parent = <&gic>; 295 interrupt-parent = <&gic>;
273 interrupts = <0 168 4>; 296 interrupts = <0 168 IRQ_TYPE_LEVEL_HIGH>;
297 clocks = <&mstp3_clks R8A7790_CLK_SDHI3>;
274 cap-sd-highspeed; 298 cap-sd-highspeed;
275 status = "disabled"; 299 status = "disabled";
276 }; 300 };
301
302 clocks {
303 #address-cells = <2>;
304 #size-cells = <2>;
305 ranges;
306
307 /* External root clock */
308 extal_clk: extal_clk {
309 compatible = "fixed-clock";
310 #clock-cells = <0>;
311 /* This value must be overriden by the board. */
312 clock-frequency = <0>;
313 clock-output-names = "extal";
314 };
315
316 /* Special CPG clocks */
317 cpg_clocks: cpg_clocks@e6150000 {
318 compatible = "renesas,r8a7790-cpg-clocks",
319 "renesas,rcar-gen2-cpg-clocks";
320 reg = <0 0xe6150000 0 0x1000>;
321 clocks = <&extal_clk>;
322 #clock-cells = <1>;
323 clock-output-names = "main", "pll0", "pll1", "pll3",
324 "lb", "qspi", "sdh", "sd0", "sd1",
325 "z";
326 };
327
328 /* Variable factor clocks */
329 sd2_clk: sd2_clk@e6150078 {
330 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
331 reg = <0 0xe6150078 0 4>;
332 clocks = <&pll1_div2_clk>;
333 #clock-cells = <0>;
334 clock-output-names = "sd2";
335 };
336 sd3_clk: sd3_clk@e615007c {
337 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
338 reg = <0 0xe615007c 0 4>;
339 clocks = <&pll1_div2_clk>;
340 #clock-cells = <0>;
341 clock-output-names = "sd3";
342 };
343 mmc0_clk: mmc0_clk@e6150240 {
344 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
345 reg = <0 0xe6150240 0 4>;
346 clocks = <&pll1_div2_clk>;
347 #clock-cells = <0>;
348 clock-output-names = "mmc0";
349 };
350 mmc1_clk: mmc1_clk@e6150244 {
351 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
352 reg = <0 0xe6150244 0 4>;
353 clocks = <&pll1_div2_clk>;
354 #clock-cells = <0>;
355 clock-output-names = "mmc1";
356 };
357 ssp_clk: ssp_clk@e6150248 {
358 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
359 reg = <0 0xe6150248 0 4>;
360 clocks = <&pll1_div2_clk>;
361 #clock-cells = <0>;
362 clock-output-names = "ssp";
363 };
364 ssprs_clk: ssprs_clk@e615024c {
365 compatible = "renesas,r8a7790-div6-clock", "renesas,cpg-div6-clock";
366 reg = <0 0xe615024c 0 4>;
367 clocks = <&pll1_div2_clk>;
368 #clock-cells = <0>;
369 clock-output-names = "ssprs";
370 };
371
372 /* Fixed factor clocks */
373 pll1_div2_clk: pll1_div2_clk {
374 compatible = "fixed-factor-clock";
375 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
376 #clock-cells = <0>;
377 clock-div = <2>;
378 clock-mult = <1>;
379 clock-output-names = "pll1_div2";
380 };
381 z2_clk: z2_clk {
382 compatible = "fixed-factor-clock";
383 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
384 #clock-cells = <0>;
385 clock-div = <2>;
386 clock-mult = <1>;
387 clock-output-names = "z2";
388 };
389 zg_clk: zg_clk {
390 compatible = "fixed-factor-clock";
391 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
392 #clock-cells = <0>;
393 clock-div = <3>;
394 clock-mult = <1>;
395 clock-output-names = "zg";
396 };
397 zx_clk: zx_clk {
398 compatible = "fixed-factor-clock";
399 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
400 #clock-cells = <0>;
401 clock-div = <3>;
402 clock-mult = <1>;
403 clock-output-names = "zx";
404 };
405 zs_clk: zs_clk {
406 compatible = "fixed-factor-clock";
407 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
408 #clock-cells = <0>;
409 clock-div = <6>;
410 clock-mult = <1>;
411 clock-output-names = "zs";
412 };
413 hp_clk: hp_clk {
414 compatible = "fixed-factor-clock";
415 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
416 #clock-cells = <0>;
417 clock-div = <12>;
418 clock-mult = <1>;
419 clock-output-names = "hp";
420 };
421 i_clk: i_clk {
422 compatible = "fixed-factor-clock";
423 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
424 #clock-cells = <0>;
425 clock-div = <2>;
426 clock-mult = <1>;
427 clock-output-names = "i";
428 };
429 b_clk: b_clk {
430 compatible = "fixed-factor-clock";
431 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
432 #clock-cells = <0>;
433 clock-div = <12>;
434 clock-mult = <1>;
435 clock-output-names = "b";
436 };
437 p_clk: p_clk {
438 compatible = "fixed-factor-clock";
439 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
440 #clock-cells = <0>;
441 clock-div = <24>;
442 clock-mult = <1>;
443 clock-output-names = "p";
444 };
445 cl_clk: cl_clk {
446 compatible = "fixed-factor-clock";
447 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
448 #clock-cells = <0>;
449 clock-div = <48>;
450 clock-mult = <1>;
451 clock-output-names = "cl";
452 };
453 m2_clk: m2_clk {
454 compatible = "fixed-factor-clock";
455 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
456 #clock-cells = <0>;
457 clock-div = <8>;
458 clock-mult = <1>;
459 clock-output-names = "m2";
460 };
461 imp_clk: imp_clk {
462 compatible = "fixed-factor-clock";
463 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
464 #clock-cells = <0>;
465 clock-div = <4>;
466 clock-mult = <1>;
467 clock-output-names = "imp";
468 };
469 rclk_clk: rclk_clk {
470 compatible = "fixed-factor-clock";
471 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
472 #clock-cells = <0>;
473 clock-div = <(48 * 1024)>;
474 clock-mult = <1>;
475 clock-output-names = "rclk";
476 };
477 oscclk_clk: oscclk_clk {
478 compatible = "fixed-factor-clock";
479 clocks = <&cpg_clocks R8A7790_CLK_PLL1>;
480 #clock-cells = <0>;
481 clock-div = <(12 * 1024)>;
482 clock-mult = <1>;
483 clock-output-names = "oscclk";
484 };
485 zb3_clk: zb3_clk {
486 compatible = "fixed-factor-clock";
487 clocks = <&cpg_clocks R8A7790_CLK_PLL3>;
488 #clock-cells = <0>;
489 clock-div = <4>;
490 clock-mult = <1>;
491 clock-output-names = "zb3";
492 };
493 zb3d2_clk: zb3d2_clk {
494 compatible = "fixed-factor-clock";
495 clocks = <&cpg_clocks R8A7790_CLK_PLL3>;
496 #clock-cells = <0>;
497 clock-div = <8>;
498 clock-mult = <1>;
499 clock-output-names = "zb3d2";
500 };
501 ddr_clk: ddr_clk {
502 compatible = "fixed-factor-clock";
503 clocks = <&cpg_clocks R8A7790_CLK_PLL3>;
504 #clock-cells = <0>;
505 clock-div = <8>;
506 clock-mult = <1>;
507 clock-output-names = "ddr";
508 };
509 mp_clk: mp_clk {
510 compatible = "fixed-factor-clock";
511 clocks = <&pll1_div2_clk>;
512 #clock-cells = <0>;
513 clock-div = <15>;
514 clock-mult = <1>;
515 clock-output-names = "mp";
516 };
517 cp_clk: cp_clk {
518 compatible = "fixed-factor-clock";
519 clocks = <&extal_clk>;
520 #clock-cells = <0>;
521 clock-div = <2>;
522 clock-mult = <1>;
523 clock-output-names = "cp";
524 };
525
526 /* Gate clocks */
527 mstp0_clks: mstp0_clks@e6150130 {
528 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
529 reg = <0 0xe6150130 0 4>, <0 0xe6150030 0 4>;
530 clocks = <&mp_clk>;
531 #clock-cells = <1>;
532 renesas,clock-indices = <R8A7790_CLK_MSIOF0>;
533 clock-output-names = "msiof0";
534 };
535 mstp1_clks: mstp1_clks@e6150134 {
536 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
537 reg = <0 0xe6150134 0 4>, <0 0xe6150038 0 4>;
538 clocks = <&p_clk>, <&p_clk>, <&p_clk>, <&rclk_clk>,
539 <&cp_clk>, <&zs_clk>, <&zs_clk>, <&zs_clk>,
540 <&zs_clk>;
541 #clock-cells = <1>;
542 renesas,clock-indices = <
543 R8A7790_CLK_TMU1 R8A7790_CLK_TMU3 R8A7790_CLK_TMU2
544 R8A7790_CLK_CMT0 R8A7790_CLK_TMU0 R8A7790_CLK_VSP1_DU1
545 R8A7790_CLK_VSP1_DU0 R8A7790_CLK_VSP1_RT R8A7790_CLK_VSP1_SY
546 >;
547 clock-output-names =
548 "tmu1", "tmu3", "tmu2", "cmt0", "tmu0", "vsp1-du1",
549 "vsp1-du0", "vsp1-rt", "vsp1-sy";
550 };
551 mstp2_clks: mstp2_clks@e6150138 {
552 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
553 reg = <0 0xe6150138 0 4>, <0 0xe6150040 0 4>;
554 clocks = <&mp_clk>, <&mp_clk>, <&mp_clk>, <&mp_clk>, <&mp_clk>,
555 <&mp_clk>, <&mp_clk>, <&mp_clk>, <&mp_clk>;
556 #clock-cells = <1>;
557 renesas,clock-indices = <
558 R8A7790_CLK_SCIFA2 R8A7790_CLK_SCIFA1 R8A7790_CLK_SCIFA0
559 R8A7790_CLK_MSIOF2 R8A7790_CLK_SCIFB0 R8A7790_CLK_SCIFB1
560 R8A7790_CLK_MSIOF1 R8A7790_CLK_MSIOF3 R8A7790_CLK_SCIFB2
561 >;
562 clock-output-names =
563 "scifa2", "scifa1", "scifa0", "msiof2", "scifb0",
564 "scifb1", "msiof1", "msiof3", "scifb2";
565 };
566 mstp3_clks: mstp3_clks@e615013c {
567 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
568 reg = <0 0xe615013c 0 4>, <0 0xe6150048 0 4>;
569 clocks = <&cp_clk>, <&mmc1_clk>, <&sd3_clk>, <&sd2_clk>,
570 <&cpg_clocks R8A7790_CLK_SD1>, <&cpg_clocks R8A7790_CLK_SD0>,
571 <&mmc0_clk>, <&rclk_clk>;
572 #clock-cells = <1>;
573 renesas,clock-indices = <
574 R8A7790_CLK_TPU0 R8A7790_CLK_MMCIF1 R8A7790_CLK_SDHI3
575 R8A7790_CLK_SDHI2 R8A7790_CLK_SDHI1 R8A7790_CLK_SDHI0
576 R8A7790_CLK_MMCIF0 R8A7790_CLK_CMT1
577 >;
578 clock-output-names =
579 "tpu0", "mmcif1", "sdhi3", "sdhi2",
580 "sdhi1", "sdhi0", "mmcif0", "cmt1";
581 };
582 mstp5_clks: mstp5_clks@e6150144 {
583 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
584 reg = <0 0xe6150144 0 4>, <0 0xe615003c 0 4>;
585 clocks = <&extal_clk>, <&p_clk>;
586 #clock-cells = <1>;
587 renesas,clock-indices = <R8A7790_CLK_THERMAL R8A7790_CLK_PWM>;
588 clock-output-names = "thermal", "pwm";
589 };
590 mstp7_clks: mstp7_clks@e615014c {
591 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
592 reg = <0 0xe615014c 0 4>, <0 0xe61501c4 0 4>;
593 clocks = <&mp_clk>, <&mp_clk>, <&zs_clk>, <&zs_clk>, <&p_clk>,
594 <&p_clk>, <&zx_clk>, <&zx_clk>, <&zx_clk>, <&zx_clk>,
595 <&zx_clk>;
596 #clock-cells = <1>;
597 renesas,clock-indices = <
598 R8A7790_CLK_EHCI R8A7790_CLK_HSUSB R8A7790_CLK_HSCIF1
599 R8A7790_CLK_HSCIF0 R8A7790_CLK_SCIF1 R8A7790_CLK_SCIF0
600 R8A7790_CLK_DU2 R8A7790_CLK_DU1 R8A7790_CLK_DU0
601 R8A7790_CLK_LVDS1 R8A7790_CLK_LVDS0
602 >;
603 clock-output-names =
604 "ehci", "hsusb", "hscif1", "hscif0", "scif1",
605 "scif0", "du2", "du1", "du0", "lvds1", "lvds0";
606 };
607 mstp8_clks: mstp8_clks@e6150990 {
608 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
609 reg = <0 0xe6150990 0 4>, <0 0xe61509a0 0 4>;
610 clocks = <&p_clk>;
611 #clock-cells = <1>;
612 renesas,clock-indices = <R8A7790_CLK_ETHER>;
613 clock-output-names = "ether";
614 };
615 mstp9_clks: mstp9_clks@e6150994 {
616 compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
617 reg = <0 0xe6150994 0 4>, <0 0xe61509a4 0 4>;
618 clocks = <&p_clk>, <&p_clk>, <&cpg_clocks R8A7790_CLK_QSPI>,
619 <&p_clk>, <&p_clk>, <&p_clk>, <&p_clk>;
620 #clock-cells = <1>;
621 renesas,clock-indices = <
622 R8A7790_CLK_RCAN1 R8A7790_CLK_RCAN0 R8A7790_CLK_QSPI_MOD
623 R8A7790_CLK_I2C3 R8A7790_CLK_I2C2 R8A7790_CLK_I2C1
624 R8A7790_CLK_I2C0
625 >;
626 clock-output-names =
627 "rcan1", "rcan0", "qspi_mod", "i2c3", "i2c2", "i2c1", "i2c0";
628 };
629 };
277}; 630};
diff --git a/arch/arm/boot/dts/r8a7791-koelsch-reference.dts b/arch/arm/boot/dts/r8a7791-koelsch-reference.dts
new file mode 100644
index 000000000000..588ca17ea1f0
--- /dev/null
+++ b/arch/arm/boot/dts/r8a7791-koelsch-reference.dts
@@ -0,0 +1,115 @@
1/*
2 * Device Tree Source for the Koelsch board
3 *
4 * Copyright (C) 2013 Renesas Electronics Corporation
5 * Copyright (C) 2013 Renesas Solutions Corp.
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2. This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11
12/dts-v1/;
13#include "r8a7791.dtsi"
14#include <dt-bindings/gpio/gpio.h>
15
16/ {
17 model = "Koelsch";
18 compatible = "renesas,koelsch-reference", "renesas,r8a7791";
19
20 chosen {
21 bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
22 };
23
24 memory@40000000 {
25 device_type = "memory";
26 reg = <0 0x40000000 0 0x80000000>;
27 };
28
29 lbsc {
30 #address-cells = <1>;
31 #size-cells = <1>;
32 };
33
34 gpio-keys {
35 compatible = "gpio-keys";
36
37 key-a {
38 gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
39 linux,code = <30>;
40 label = "SW30";
41 gpio-key,wakeup;
42 debounce-interval = <20>;
43 };
44 key-b {
45 gpios = <&gpio7 1 GPIO_ACTIVE_LOW>;
46 linux,code = <48>;
47 label = "SW31";
48 gpio-key,wakeup;
49 debounce-interval = <20>;
50 };
51 key-c {
52 gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
53 linux,code = <46>;
54 label = "SW32";
55 gpio-key,wakeup;
56 debounce-interval = <20>;
57 };
58 key-d {
59 gpios = <&gpio7 3 GPIO_ACTIVE_LOW>;
60 linux,code = <32>;
61 label = "SW33";
62 gpio-key,wakeup;
63 debounce-interval = <20>;
64 };
65 key-e {
66 gpios = <&gpio7 4 GPIO_ACTIVE_LOW>;
67 linux,code = <18>;
68 label = "SW34";
69 gpio-key,wakeup;
70 debounce-interval = <20>;
71 };
72 key-f {
73 gpios = <&gpio7 5 GPIO_ACTIVE_LOW>;
74 linux,code = <33>;
75 label = "SW35";
76 gpio-key,wakeup;
77 debounce-interval = <20>;
78 };
79 key-g {
80 gpios = <&gpio7 6 GPIO_ACTIVE_LOW>;
81 linux,code = <34>;
82 label = "SW36";
83 gpio-key,wakeup;
84 debounce-interval = <20>;
85 };
86 };
87
88 leds {
89 compatible = "gpio-leds";
90 led6 {
91 gpios = <&gpio2 19 GPIO_ACTIVE_HIGH>;
92 };
93 led7 {
94 gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>;
95 };
96 led8 {
97 gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
98 };
99 };
100};
101
102&pfc {
103 pinctrl-0 = <&scif0_pins &scif1_pins>;
104 pinctrl-names = "default";
105
106 scif0_pins: serial0 {
107 renesas,groups = "scif0_data_d";
108 renesas,function = "scif0";
109 };
110
111 scif1_pins: serial1 {
112 renesas,groups = "scif1_data_d";
113 renesas,function = "scif1";
114 };
115};
diff --git a/arch/arm/boot/dts/r8a7791-koelsch.dts b/arch/arm/boot/dts/r8a7791-koelsch.dts
index 1ce5250ec278..fd556c3483e3 100644
--- a/arch/arm/boot/dts/r8a7791-koelsch.dts
+++ b/arch/arm/boot/dts/r8a7791-koelsch.dts
@@ -10,7 +10,8 @@
10 */ 10 */
11 11
12/dts-v1/; 12/dts-v1/;
13/include/ "r8a7791.dtsi" 13#include "r8a7791.dtsi"
14#include <dt-bindings/gpio/gpio.h>
14 15
15/ { 16/ {
16 model = "Koelsch"; 17 model = "Koelsch";
@@ -29,4 +30,36 @@
29 #address-cells = <1>; 30 #address-cells = <1>;
30 #size-cells = <1>; 31 #size-cells = <1>;
31 }; 32 };
33
34 leds {
35 compatible = "gpio-leds";
36 led6 {
37 gpios = <&gpio2 19 GPIO_ACTIVE_HIGH>;
38 };
39 led7 {
40 gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>;
41 };
42 led8 {
43 gpios = <&gpio2 21 GPIO_ACTIVE_HIGH>;
44 };
45 };
46};
47
48&extal_clk {
49 clock-frequency = <20000000>;
50};
51
52&pfc {
53 pinctrl-0 = <&scif0_pins &scif1_pins>;
54 pinctrl-names = "default";
55
56 scif0_pins: serial0 {
57 renesas,groups = "scif0_data_d";
58 renesas,function = "scif0";
59 };
60
61 scif1_pins: serial1 {
62 renesas,groups = "scif1_data_d";
63 renesas,function = "scif1";
64 };
32}; 65};
diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi
index fea5cfef4691..19c65509a22d 100644
--- a/arch/arm/boot/dts/r8a7791.dtsi
+++ b/arch/arm/boot/dts/r8a7791.dtsi
@@ -9,6 +9,10 @@
9 * kind, whether express or implied. 9 * kind, whether express or implied.
10 */ 10 */
11 11
12#include <dt-bindings/clock/r8a7791-clock.h>
13#include <dt-bindings/interrupt-controller/arm-gic.h>
14#include <dt-bindings/interrupt-controller/irq.h>
15
12/ { 16/ {
13 compatible = "renesas,r8a7791"; 17 compatible = "renesas,r8a7791";
14 interrupt-parent = <&gic>; 18 interrupt-parent = <&gic>;
@@ -43,32 +47,463 @@
43 <0 0xf1002000 0 0x1000>, 47 <0 0xf1002000 0 0x1000>,
44 <0 0xf1004000 0 0x2000>, 48 <0 0xf1004000 0 0x2000>,
45 <0 0xf1006000 0 0x2000>; 49 <0 0xf1006000 0 0x2000>;
46 interrupts = <1 9 0xf04>; 50 interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
51 };
52
53 gpio0: gpio@e6050000 {
54 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
55 reg = <0 0xe6050000 0 0x50>;
56 interrupt-parent = <&gic>;
57 interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
58 #gpio-cells = <2>;
59 gpio-controller;
60 gpio-ranges = <&pfc 0 0 32>;
61 #interrupt-cells = <2>;
62 interrupt-controller;
63 };
64
65 gpio1: gpio@e6051000 {
66 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
67 reg = <0 0xe6051000 0 0x50>;
68 interrupt-parent = <&gic>;
69 interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;
70 #gpio-cells = <2>;
71 gpio-controller;
72 gpio-ranges = <&pfc 0 32 32>;
73 #interrupt-cells = <2>;
74 interrupt-controller;
75 };
76
77 gpio2: gpio@e6052000 {
78 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
79 reg = <0 0xe6052000 0 0x50>;
80 interrupt-parent = <&gic>;
81 interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
82 #gpio-cells = <2>;
83 gpio-controller;
84 gpio-ranges = <&pfc 0 64 32>;
85 #interrupt-cells = <2>;
86 interrupt-controller;
87 };
88
89 gpio3: gpio@e6053000 {
90 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
91 reg = <0 0xe6053000 0 0x50>;
92 interrupt-parent = <&gic>;
93 interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
94 #gpio-cells = <2>;
95 gpio-controller;
96 gpio-ranges = <&pfc 0 96 32>;
97 #interrupt-cells = <2>;
98 interrupt-controller;
99 };
100
101 gpio4: gpio@e6054000 {
102 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
103 reg = <0 0xe6054000 0 0x50>;
104 interrupt-parent = <&gic>;
105 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
106 #gpio-cells = <2>;
107 gpio-controller;
108 gpio-ranges = <&pfc 0 128 32>;
109 #interrupt-cells = <2>;
110 interrupt-controller;
111 };
112
113 gpio5: gpio@e6055000 {
114 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
115 reg = <0 0xe6055000 0 0x50>;
116 interrupt-parent = <&gic>;
117 interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>;
118 #gpio-cells = <2>;
119 gpio-controller;
120 gpio-ranges = <&pfc 0 160 32>;
121 #interrupt-cells = <2>;
122 interrupt-controller;
123 };
124
125 gpio6: gpio@e6055400 {
126 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
127 reg = <0 0xe6055400 0 0x50>;
128 interrupt-parent = <&gic>;
129 interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>;
130 #gpio-cells = <2>;
131 gpio-controller;
132 gpio-ranges = <&pfc 0 192 32>;
133 #interrupt-cells = <2>;
134 interrupt-controller;
135 };
136
137 gpio7: gpio@e6055800 {
138 compatible = "renesas,gpio-r8a7791", "renesas,gpio-rcar";
139 reg = <0 0xe6055800 0 0x50>;
140 interrupt-parent = <&gic>;
141 interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
142 #gpio-cells = <2>;
143 gpio-controller;
144 gpio-ranges = <&pfc 0 224 26>;
145 #interrupt-cells = <2>;
146 interrupt-controller;
147 };
148
149 thermal@e61f0000 {
150 compatible = "renesas,thermal-r8a7791", "renesas,rcar-thermal";
151 reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>;
152 interrupt-parent = <&gic>;
153 interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
47 }; 154 };
48 155
49 timer { 156 timer {
50 compatible = "arm,armv7-timer"; 157 compatible = "arm,armv7-timer";
51 interrupts = <1 13 0xf08>, 158 interrupts = <1 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
52 <1 14 0xf08>, 159 <1 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
53 <1 11 0xf08>, 160 <1 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
54 <1 10 0xf08>; 161 <1 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
55 }; 162 };
56 163
57 irqc0: interrupt-controller@e61c0000 { 164 irqc0: interrupt-controller@e61c0000 {
58 compatible = "renesas,irqc"; 165 compatible = "renesas,irqc-r8a7791", "renesas,irqc";
59 #interrupt-cells = <2>; 166 #interrupt-cells = <2>;
60 interrupt-controller; 167 interrupt-controller;
61 reg = <0 0xe61c0000 0 0x200>; 168 reg = <0 0xe61c0000 0 0x200>;
62 interrupt-parent = <&gic>; 169 interrupt-parent = <&gic>;
63 interrupts = <0 0 4>, 170 interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>,
64 <0 1 4>, 171 <0 1 IRQ_TYPE_LEVEL_HIGH>,
65 <0 2 4>, 172 <0 2 IRQ_TYPE_LEVEL_HIGH>,
66 <0 3 4>, 173 <0 3 IRQ_TYPE_LEVEL_HIGH>,
67 <0 12 4>, 174 <0 12 IRQ_TYPE_LEVEL_HIGH>,
68 <0 13 4>, 175 <0 13 IRQ_TYPE_LEVEL_HIGH>,
69 <0 14 4>, 176 <0 14 IRQ_TYPE_LEVEL_HIGH>,
70 <0 15 4>, 177 <0 15 IRQ_TYPE_LEVEL_HIGH>,
71 <0 16 4>, 178 <0 16 IRQ_TYPE_LEVEL_HIGH>,
72 <0 17 4>; 179 <0 17 IRQ_TYPE_LEVEL_HIGH>;
180 };
181
182 pfc: pfc@e6060000 {
183 compatible = "renesas,pfc-r8a7791";
184 reg = <0 0xe6060000 0 0x250>;
185 #gpio-range-cells = <3>;
186 };
187
188 clocks {
189 #address-cells = <2>;
190 #size-cells = <2>;
191 ranges;
192
193 /* External root clock */
194 extal_clk: extal_clk {
195 compatible = "fixed-clock";
196 #clock-cells = <0>;
197 /* This value must be overriden by the board. */
198 clock-frequency = <0>;
199 clock-output-names = "extal";
200 };
201
202 /* Special CPG clocks */
203 cpg_clocks: cpg_clocks@e6150000 {
204 compatible = "renesas,r8a7791-cpg-clocks",
205 "renesas,rcar-gen2-cpg-clocks";
206 reg = <0 0xe6150000 0 0x1000>;
207 clocks = <&extal_clk>;
208 #clock-cells = <1>;
209 clock-output-names = "main", "pll0", "pll1", "pll3",
210 "lb", "qspi", "sdh", "sd0", "z";
211 };
212
213 /* Variable factor clocks */
214 sd1_clk: sd2_clk@e6150078 {
215 compatible = "renesas,r8a7791-div6-clock", "renesas,cpg-div6-clock";
216 reg = <0 0xe6150078 0 4>;
217 clocks = <&pll1_div2_clk>;
218 #clock-cells = <0>;
219 clock-output-names = "sd1";
220 };
221 sd2_clk: sd3_clk@e615007c {
222 compatible = "renesas,r8a7791-div6-clock", "renesas,cpg-div6-clock";
223 reg = <0 0xe615007c 0 4>;
224 clocks = <&pll1_div2_clk>;
225 #clock-cells = <0>;
226 clock-output-names = "sd2";
227 };
228 mmc0_clk: mmc0_clk@e6150240 {
229 compatible = "renesas,r8a7791-div6-clock", "renesas,cpg-div6-clock";
230 reg = <0 0xe6150240 0 4>;
231 clocks = <&pll1_div2_clk>;
232 #clock-cells = <0>;
233 clock-output-names = "mmc0";
234 };
235 ssp_clk: ssp_clk@e6150248 {
236 compatible = "renesas,r8a7791-div6-clock", "renesas,cpg-div6-clock";
237 reg = <0 0xe6150248 0 4>;
238 clocks = <&pll1_div2_clk>;
239 #clock-cells = <0>;
240 clock-output-names = "ssp";
241 };
242 ssprs_clk: ssprs_clk@e615024c {
243 compatible = "renesas,r8a7791-div6-clock", "renesas,cpg-div6-clock";
244 reg = <0 0xe615024c 0 4>;
245 clocks = <&pll1_div2_clk>;
246 #clock-cells = <0>;
247 clock-output-names = "ssprs";
248 };
249
250 /* Fixed factor clocks */
251 pll1_div2_clk: pll1_div2_clk {
252 compatible = "fixed-factor-clock";
253 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
254 #clock-cells = <0>;
255 clock-div = <2>;
256 clock-mult = <1>;
257 clock-output-names = "pll1_div2";
258 };
259 zg_clk: zg_clk {
260 compatible = "fixed-factor-clock";
261 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
262 #clock-cells = <0>;
263 clock-div = <3>;
264 clock-mult = <1>;
265 clock-output-names = "zg";
266 };
267 zx_clk: zx_clk {
268 compatible = "fixed-factor-clock";
269 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
270 #clock-cells = <0>;
271 clock-div = <3>;
272 clock-mult = <1>;
273 clock-output-names = "zx";
274 };
275 zs_clk: zs_clk {
276 compatible = "fixed-factor-clock";
277 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
278 #clock-cells = <0>;
279 clock-div = <6>;
280 clock-mult = <1>;
281 clock-output-names = "zs";
282 };
283 hp_clk: hp_clk {
284 compatible = "fixed-factor-clock";
285 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
286 #clock-cells = <0>;
287 clock-div = <12>;
288 clock-mult = <1>;
289 clock-output-names = "hp";
290 };
291 i_clk: i_clk {
292 compatible = "fixed-factor-clock";
293 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
294 #clock-cells = <0>;
295 clock-div = <2>;
296 clock-mult = <1>;
297 clock-output-names = "i";
298 };
299 b_clk: b_clk {
300 compatible = "fixed-factor-clock";
301 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
302 #clock-cells = <0>;
303 clock-div = <12>;
304 clock-mult = <1>;
305 clock-output-names = "b";
306 };
307 p_clk: p_clk {
308 compatible = "fixed-factor-clock";
309 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
310 #clock-cells = <0>;
311 clock-div = <24>;
312 clock-mult = <1>;
313 clock-output-names = "p";
314 };
315 cl_clk: cl_clk {
316 compatible = "fixed-factor-clock";
317 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
318 #clock-cells = <0>;
319 clock-div = <48>;
320 clock-mult = <1>;
321 clock-output-names = "cl";
322 };
323 m2_clk: m2_clk {
324 compatible = "fixed-factor-clock";
325 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
326 #clock-cells = <0>;
327 clock-div = <8>;
328 clock-mult = <1>;
329 clock-output-names = "m2";
330 };
331 imp_clk: imp_clk {
332 compatible = "fixed-factor-clock";
333 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
334 #clock-cells = <0>;
335 clock-div = <4>;
336 clock-mult = <1>;
337 clock-output-names = "imp";
338 };
339 rclk_clk: rclk_clk {
340 compatible = "fixed-factor-clock";
341 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
342 #clock-cells = <0>;
343 clock-div = <(48 * 1024)>;
344 clock-mult = <1>;
345 clock-output-names = "rclk";
346 };
347 oscclk_clk: oscclk_clk {
348 compatible = "fixed-factor-clock";
349 clocks = <&cpg_clocks R8A7791_CLK_PLL1>;
350 #clock-cells = <0>;
351 clock-div = <(12 * 1024)>;
352 clock-mult = <1>;
353 clock-output-names = "oscclk";
354 };
355 zb3_clk: zb3_clk {
356 compatible = "fixed-factor-clock";
357 clocks = <&cpg_clocks R8A7791_CLK_PLL3>;
358 #clock-cells = <0>;
359 clock-div = <4>;
360 clock-mult = <1>;
361 clock-output-names = "zb3";
362 };
363 zb3d2_clk: zb3d2_clk {
364 compatible = "fixed-factor-clock";
365 clocks = <&cpg_clocks R8A7791_CLK_PLL3>;
366 #clock-cells = <0>;
367 clock-div = <8>;
368 clock-mult = <1>;
369 clock-output-names = "zb3d2";
370 };
371 ddr_clk: ddr_clk {
372 compatible = "fixed-factor-clock";
373 clocks = <&cpg_clocks R8A7791_CLK_PLL3>;
374 #clock-cells = <0>;
375 clock-div = <8>;
376 clock-mult = <1>;
377 clock-output-names = "ddr";
378 };
379 mp_clk: mp_clk {
380 compatible = "fixed-factor-clock";
381 clocks = <&pll1_div2_clk>;
382 #clock-cells = <0>;
383 clock-div = <15>;
384 clock-mult = <1>;
385 clock-output-names = "mp";
386 };
387 cp_clk: cp_clk {
388 compatible = "fixed-factor-clock";
389 clocks = <&extal_clk>;
390 #clock-cells = <0>;
391 clock-div = <2>;
392 clock-mult = <1>;
393 clock-output-names = "cp";
394 };
395
396 /* Gate clocks */
397 mstp0_clks: mstp0_clks@e6150130 {
398 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
399 reg = <0 0xe6150130 0 4>, <0 0xe6150030 0 4>;
400 clocks = <&mp_clk>;
401 #clock-cells = <1>;
402 renesas,clock-indices = <R8A7791_CLK_MSIOF0>;
403 clock-output-names = "msiof0";
404 };
405 mstp1_clks: mstp1_clks@e6150134 {
406 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
407 reg = <0 0xe6150134 0 4>, <0 0xe6150038 0 4>;
408 clocks = <&p_clk>, <&p_clk>, <&p_clk>, <&rclk_clk>,
409 <&cp_clk>, <&zs_clk>, <&zs_clk>, <&zs_clk>;
410 #clock-cells = <1>;
411 renesas,clock-indices = <
412 R8A7791_CLK_TMU1 R8A7791_CLK_TMU3 R8A7791_CLK_TMU2
413 R8A7791_CLK_CMT0 R8A7791_CLK_TMU0 R8A7791_CLK_VSP1_DU1
414 R8A7791_CLK_VSP1_DU0 R8A7791_CLK_VSP1_SY
415 >;
416 clock-output-names =
417 "tmu1", "tmu3", "tmu2", "cmt0", "tmu0", "vsp1-du1",
418 "vsp1-du0", "vsp1-sy";
419 };
420 mstp2_clks: mstp2_clks@e6150138 {
421 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
422 reg = <0 0xe6150138 0 4>, <0 0xe6150040 0 4>;
423 clocks = <&mp_clk>, <&mp_clk>, <&mp_clk>, <&mp_clk>, <&mp_clk>,
424 <&mp_clk>, <&mp_clk>, <&mp_clk>;
425 #clock-cells = <1>;
426 renesas,clock-indices = <
427 R8A7791_CLK_SCIFA2 R8A7791_CLK_SCIFA1 R8A7791_CLK_SCIFA0
428 R8A7791_CLK_MSIOF2 R8A7791_CLK_SCIFB0 R8A7791_CLK_SCIFB1
429 R8A7791_CLK_MSIOF1 R8A7791_CLK_SCIFB2
430 >;
431 clock-output-names =
432 "scifa2", "scifa1", "scifa0", "misof2", "scifb0",
433 "scifb1", "msiof1", "scifb2";
434 };
435 mstp3_clks: mstp3_clks@e615013c {
436 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
437 reg = <0 0xe615013c 0 4>, <0 0xe6150048 0 4>;
438 clocks = <&cp_clk>, <&sd2_clk>, <&sd1_clk>,
439 <&cpg_clocks R8A7791_CLK_SD0>, <&mmc0_clk>, <&rclk_clk>;
440 #clock-cells = <1>;
441 renesas,clock-indices = <
442 R8A7791_CLK_TPU0 R8A7791_CLK_SDHI2 R8A7791_CLK_SDHI1
443 R8A7791_CLK_SDHI0 R8A7791_CLK_MMCIF0 R8A7791_CLK_CMT1
444 >;
445 clock-output-names =
446 "tpu0", "sdhi2", "sdhi1", "sdhi0", "mmcif0", "cmt1";
447 };
448 mstp5_clks: mstp5_clks@e6150144 {
449 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
450 reg = <0 0xe6150144 0 4>, <0 0xe615003c 0 4>;
451 clocks = <&extal_clk>, <&p_clk>;
452 #clock-cells = <1>;
453 renesas,clock-indices = <R8A7791_CLK_THERMAL R8A7791_CLK_PWM>;
454 clock-output-names = "thermal", "pwm";
455 };
456 mstp7_clks: mstp7_clks@e615014c {
457 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
458 reg = <0 0xe615014c 0 4>, <0 0xe61501c4 0 4>;
459 clocks = <&mp_clk>, <&zs_clk>, <&p_clk>, <&p_clk>, <&zs_clk>,
460 <&zs_clk>, <&p_clk>, <&p_clk>, <&p_clk>, <&p_clk>,
461 <&zx_clk>, <&zx_clk>, <&zx_clk>;
462 #clock-cells = <1>;
463 renesas,clock-indices = <
464 R8A7791_CLK_HSUSB R8A7791_CLK_HSCIF2 R8A7791_CLK_SCIF5
465 R8A7791_CLK_SCIF4 R8A7791_CLK_HSCIF1 R8A7791_CLK_HSCIF0
466 R8A7791_CLK_SCIF3 R8A7791_CLK_SCIF2 R8A7791_CLK_SCIF1
467 R8A7791_CLK_SCIF0 R8A7791_CLK_DU1 R8A7791_CLK_DU0
468 R8A7791_CLK_LVDS0
469 >;
470 clock-output-names =
471 "hsusb", "hscif2", "scif5", "scif4", "hscif1", "hscif0",
472 "scif3", "scif2", "scif1", "scif0", "du1", "du0", "lvds0";
473 };
474 mstp8_clks: mstp8_clks@e6150990 {
475 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
476 reg = <0 0xe6150990 0 4>, <0 0xe61509a0 0 4>;
477 clocks = <&p_clk>;
478 #clock-cells = <1>;
479 renesas,clock-indices = <R8A7791_CLK_ETHER>;
480 clock-output-names = "ether";
481 };
482 mstp9_clks: mstp9_clks@e6150994 {
483 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
484 reg = <0 0xe6150994 0 4>, <0 0xe61509a4 0 4>;
485 clocks = <&p_clk>, <&p_clk>, <&cpg_clocks R8A7791_CLK_QSPI>,
486 <&p_clk>, <&p_clk>, <&p_clk>, <&p_clk>, <&p_clk>,
487 <&p_clk>;
488 #clock-cells = <1>;
489 renesas,clock-indices = <
490 R8A7791_CLK_RCAN1 R8A7791_CLK_RCAN0 R8A7791_CLK_QSPI_MOD
491 R8A7791_CLK_I2C4 R8A7791_CLK_I2C4 R8A7791_CLK_I2C3
492 R8A7791_CLK_I2C2 R8A7791_CLK_I2C1 R8A7791_CLK_I2C0
493 >;
494 clock-output-names =
495 "rcan1", "rcan0", "qspi_mod", "i2c5", "i2c4", "i2c3",
496 "i2c2", "i2c1", "i2c0";
497 };
498 mstp11_clks: mstp11_clks@e615099c {
499 compatible = "renesas,r8a7791-mstp-clocks", "renesas,cpg-mstp-clocks";
500 reg = <0 0xe615099c 0 4>, <0 0xe61509ac 0 4>;
501 clocks = <&mp_clk>, <&mp_clk>, <&mp_clk>;
502 #clock-cells = <1>;
503 renesas,clock-indices = <
504 R8A7791_CLK_SCIFA3 R8A7791_CLK_SCIFA4 R8A7791_CLK_SCIFA5
505 >;
506 clock-output-names = "scifa3", "scifa4", "scifa5";
507 };
73 }; 508 };
74}; 509};
diff --git a/arch/arm/boot/dts/sama5d3.dtsi b/arch/arm/boot/dts/sama5d3.dtsi
index de9feced9935..1105558d188b 100644
--- a/arch/arm/boot/dts/sama5d3.dtsi
+++ b/arch/arm/boot/dts/sama5d3.dtsi
@@ -1,6 +1,6 @@
1/* 1/*
2 * sama5d3.dtsi - Device Tree Include file for SAMA5D3 family SoC 2 * sama5d3.dtsi - Device Tree Include file for SAMA5D3 family SoC
3 * applies to SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35 SoC 3 * applies to SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36 SoC
4 * 4 *
5 * Copyright (C) 2013 Atmel, 5 * Copyright (C) 2013 Atmel,
6 * 2013 Ludovic Desroches <ludovic.desroches@atmel.com> 6 * 2013 Ludovic Desroches <ludovic.desroches@atmel.com>
@@ -37,6 +37,7 @@
37 i2c2 = &i2c2; 37 i2c2 = &i2c2;
38 ssc0 = &ssc0; 38 ssc0 = &ssc0;
39 ssc1 = &ssc1; 39 ssc1 = &ssc1;
40 pwm0 = &pwm0;
40 }; 41 };
41 cpus { 42 cpus {
42 #address-cells = <1>; 43 #address-cells = <1>;
@@ -179,6 +180,15 @@
179 status = "disabled"; 180 status = "disabled";
180 }; 181 };
181 182
183 pwm0: pwm@f002c000 {
184 compatible = "atmel,sama5d3-pwm";
185 reg = <0xf002c000 0x300>;
186 interrupts = <28 IRQ_TYPE_LEVEL_HIGH 4>;
187 #pwm-cells = <3>;
188 clocks = <&pwm_clk>;
189 status = "disabled";
190 };
191
182 isi: isi@f0034000 { 192 isi: isi@f0034000 {
183 compatible = "atmel,at91sam9g45-isi"; 193 compatible = "atmel,at91sam9g45-isi";
184 reg = <0xf0034000 0x4000>; 194 reg = <0xf0034000 0x4000>;
@@ -304,6 +314,8 @@
304 dmas = <&dma1 2 AT91_DMA_CFG_PER_ID(11)>, 314 dmas = <&dma1 2 AT91_DMA_CFG_PER_ID(11)>,
305 <&dma1 2 AT91_DMA_CFG_PER_ID(12)>; 315 <&dma1 2 AT91_DMA_CFG_PER_ID(12)>;
306 dma-names = "tx", "rx"; 316 dma-names = "tx", "rx";
317 pinctrl-names = "default";
318 pinctrl-0 = <&pinctrl_i2c2>;
307 #address-cells = <1>; 319 #address-cells = <1>;
308 #size-cells = <0>; 320 #size-cells = <0>;
309 clocks = <&twi2_clk>; 321 clocks = <&twi2_clk>;
@@ -333,21 +345,35 @@
333 }; 345 };
334 346
335 sha@f8034000 { 347 sha@f8034000 {
336 compatible = "atmel,sam9g46-sha"; 348 compatible = "atmel,at91sam9g46-sha";
337 reg = <0xf8034000 0x100>; 349 reg = <0xf8034000 0x100>;
338 interrupts = <42 IRQ_TYPE_LEVEL_HIGH 0>; 350 interrupts = <42 IRQ_TYPE_LEVEL_HIGH 0>;
351 dmas = <&dma1 2 AT91_DMA_CFG_PER_ID(17)>;
352 dma-names = "tx";
353 clocks = <&sha_clk>;
354 clock-names = "sha_clk";
339 }; 355 };
340 356
341 aes@f8038000 { 357 aes@f8038000 {
342 compatible = "atmel,sam9g46-aes"; 358 compatible = "atmel,at91sam9g46-aes";
343 reg = <0xf8038000 0x100>; 359 reg = <0xf8038000 0x100>;
344 interrupts = <43 4 0>; 360 interrupts = <43 IRQ_TYPE_LEVEL_HIGH 0>;
361 dmas = <&dma1 2 AT91_DMA_CFG_PER_ID(18)>,
362 <&dma1 2 AT91_DMA_CFG_PER_ID(19)>;
363 dma-names = "tx", "rx";
364 clocks = <&aes_clk>;
365 clock-names = "aes_clk";
345 }; 366 };
346 367
347 tdes@f803c000 { 368 tdes@f803c000 {
348 compatible = "atmel,sam9g46-tdes"; 369 compatible = "atmel,at91sam9g46-tdes";
349 reg = <0xf803c000 0x100>; 370 reg = <0xf803c000 0x100>;
350 interrupts = <44 IRQ_TYPE_LEVEL_HIGH 0>; 371 interrupts = <44 IRQ_TYPE_LEVEL_HIGH 0>;
372 dmas = <&dma1 2 AT91_DMA_CFG_PER_ID(20)>,
373 <&dma1 2 AT91_DMA_CFG_PER_ID(21)>;
374 dma-names = "tx", "rx";
375 clocks = <&tdes_clk>;
376 clock-names = "tdes_clk";
351 }; 377 };
352 378
353 dma0: dma-controller@ffffe600 { 379 dma0: dma-controller@ffffe600 {
@@ -486,6 +512,14 @@
486 }; 512 };
487 }; 513 };
488 514
515 i2c2 {
516 pinctrl_i2c2: i2c2-0 {
517 atmel,pins =
518 <AT91_PIOA 18 AT91_PERIPH_B AT91_PINCTRL_NONE /* TWD2 pin, conflicts with LCDDAT18, ISI_D2 */
519 AT91_PIOA 19 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* TWCK2 pin, conflicts with LCDDAT19, ISI_D3 */
520 };
521 };
522
489 isi { 523 isi {
490 pinctrl_isi: isi-0 { 524 pinctrl_isi: isi-0 {
491 atmel,pins = 525 atmel,pins =
diff --git a/arch/arm/boot/dts/sama5d36.dtsi b/arch/arm/boot/dts/sama5d36.dtsi
new file mode 100644
index 000000000000..6c31c26e6cc0
--- /dev/null
+++ b/arch/arm/boot/dts/sama5d36.dtsi
@@ -0,0 +1,20 @@
1/*
2 * sama5d36.dtsi - Device Tree Include file for SAMA5D36 SoC
3 *
4 * Copyright (C) 2013 Atmel,
5 * 2013 Josh Wu <josh.wu@atmel.com>
6 *
7 * Licensed under GPLv2 or later.
8 */
9#include "sama5d3.dtsi"
10#include "sama5d3_can.dtsi"
11#include "sama5d3_emac.dtsi"
12#include "sama5d3_gmac.dtsi"
13#include "sama5d3_lcd.dtsi"
14#include "sama5d3_mci2.dtsi"
15#include "sama5d3_tcb1.dtsi"
16#include "sama5d3_uart.dtsi"
17
18/ {
19 compatible = "atmel,samad36", "atmel,sama5d3", "atmel,sama5";
20};
diff --git a/arch/arm/boot/dts/sama5d36ek.dts b/arch/arm/boot/dts/sama5d36ek.dts
new file mode 100644
index 000000000000..59576c6f9826
--- /dev/null
+++ b/arch/arm/boot/dts/sama5d36ek.dts
@@ -0,0 +1,53 @@
1/*
2 * sama5d36ek.dts - Device Tree file for SAMA5D36-EK board
3 *
4 * Copyright (C) 2013 Atmel,
5 * 2013 Josh Wu <josh.wu@atmel.com>
6 *
7 * Licensed under GPLv2 or later.
8 */
9/dts-v1/;
10#include "sama5d36.dtsi"
11#include "sama5d3xmb.dtsi"
12#include "sama5d3xdm.dtsi"
13
14/ {
15 model = "Atmel SAMA5D36-EK";
16 compatible = "atmel,sama5d36ek", "atmel,sama5d3xmb", "atmel,sama5d3xcm", "atmel,sama5d36", "atmel,sama5d3", "atmel,sama5";
17
18 ahb {
19 apb {
20 spi0: spi@f0004000 {
21 status = "okay";
22 };
23
24 ssc0: ssc@f0008000 {
25 status = "okay";
26 };
27
28 can0: can@f000c000 {
29 status = "okay";
30 };
31
32 i2c0: i2c@f0014000 {
33 status = "okay";
34 };
35
36 i2c1: i2c@f0018000 {
37 status = "okay";
38 };
39
40 macb0: ethernet@f0028000 {
41 status = "okay";
42 };
43
44 macb1: ethernet@f802c000 {
45 status = "okay";
46 };
47 };
48 };
49
50 sound {
51 status = "okay";
52 };
53};
diff --git a/arch/arm/boot/dts/sama5d3_uart.dtsi b/arch/arm/boot/dts/sama5d3_uart.dtsi
index 49d4d76ca6f4..a9fa75e41652 100644
--- a/arch/arm/boot/dts/sama5d3_uart.dtsi
+++ b/arch/arm/boot/dts/sama5d3_uart.dtsi
@@ -12,6 +12,11 @@
12#include <dt-bindings/clk/at91.h> 12#include <dt-bindings/clk/at91.h>
13 13
14/ { 14/ {
15 aliases {
16 serial5 = &uart0;
17 serial6 = &uart1;
18 };
19
15 ahb { 20 ahb {
16 apb { 21 apb {
17 pinctrl@fffff200 { 22 pinctrl@fffff200 {
diff --git a/arch/arm/boot/dts/sama5d3xdm.dtsi b/arch/arm/boot/dts/sama5d3xdm.dtsi
index 1c296d6b2f2a..f9bdde542ced 100644
--- a/arch/arm/boot/dts/sama5d3xdm.dtsi
+++ b/arch/arm/boot/dts/sama5d3xdm.dtsi
@@ -18,6 +18,7 @@
18 interrupts = <31 0x0>; 18 interrupts = <31 0x0>;
19 pinctrl-names = "default"; 19 pinctrl-names = "default";
20 pinctrl-0 = <&pinctrl_qt1070_irq>; 20 pinctrl-0 = <&pinctrl_qt1070_irq>;
21 wakeup-source;
21 }; 22 };
22 }; 23 };
23 24
diff --git a/arch/arm/boot/dts/sh7372-mackerel.dts b/arch/arm/boot/dts/sh7372-mackerel.dts
index 8acf51e0cdae..a759a276c9a9 100644
--- a/arch/arm/boot/dts/sh7372-mackerel.dts
+++ b/arch/arm/boot/dts/sh7372-mackerel.dts
@@ -9,7 +9,7 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "sh7372.dtsi" 12#include "sh7372.dtsi"
13 13
14/ { 14/ {
15 model = "Mackerel (AP4 EVM 2nd)"; 15 model = "Mackerel (AP4 EVM 2nd)";
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
index 8ee06dd81799..eb8886b535e4 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
@@ -12,8 +12,9 @@
12 */ 12 */
13 13
14/dts-v1/; 14/dts-v1/;
15/include/ "sh73a0.dtsi" 15#include "sh73a0.dtsi"
16#include <dt-bindings/gpio/gpio.h> 16#include <dt-bindings/gpio/gpio.h>
17#include <dt-bindings/interrupt-controller/irq.h>
17 18
18/ { 19/ {
19 model = "KZM-A9-GT"; 20 model = "KZM-A9-GT";
@@ -82,7 +83,7 @@
82 reg = <0x10000000 0x100>; 83 reg = <0x10000000 0x100>;
83 phy-mode = "mii"; 84 phy-mode = "mii";
84 interrupt-parent = <&irqpin0>; 85 interrupt-parent = <&irqpin0>;
85 interrupts = <3 0>; /* active low */ 86 interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
86 reg-io-width = <4>; 87 reg-io-width = <4>;
87 smsc,irq-push-pull; 88 smsc,irq-push-pull;
88 smsc,save-mac-address; 89 smsc,save-mac-address;
@@ -105,6 +106,66 @@
105 gpios = <&pfc 23 GPIO_ACTIVE_LOW>; 106 gpios = <&pfc 23 GPIO_ACTIVE_LOW>;
106 }; 107 };
107 }; 108 };
109
110 gpio-keys {
111 compatible = "gpio-keys";
112
113 back-key {
114 gpios = <&pcf8575 8 GPIO_ACTIVE_LOW>;
115 linux,code = <158>;
116 label = "SW3";
117 };
118
119 right-key {
120 gpios = <&pcf8575 9 GPIO_ACTIVE_LOW>;
121 linux,code = <106>;
122 label = "SW2-R";
123 };
124
125 left-key {
126 gpios = <&pcf8575 10 GPIO_ACTIVE_LOW>;
127 linux,code = <105>;
128 label = "SW2-L";
129 };
130
131 enter-key {
132 gpios = <&pcf8575 11 GPIO_ACTIVE_LOW>;
133 linux,code = <28>;
134 label = "SW2-P";
135 };
136
137 up-key {
138 gpios = <&pcf8575 12 GPIO_ACTIVE_LOW>;
139 linux,code = <103>;
140 label = "SW2-U";
141 };
142
143 down-key {
144 gpios = <&pcf8575 13 GPIO_ACTIVE_LOW>;
145 linux,code = <108>;
146 label = "SW2-D";
147 };
148
149 home-key {
150 gpios = <&pcf8575 14 GPIO_ACTIVE_LOW>;
151 linux,code = <102>;
152 label = "SW1";
153 };
154 };
155
156 sound {
157 compatible = "simple-audio-card";
158 simple-audio-card,format = "left_j";
159 simple-audio-card,cpu {
160 sound-dai = <&sh_fsi2 0>;
161 };
162 simple-audio-card,codec {
163 sound-dai = <&ak4648>;
164 bitclock-master;
165 frame-master;
166 system-clock-frequency = <11289600>;
167 };
168 };
108}; 169};
109 170
110&i2c0 { 171&i2c0 {
@@ -179,12 +240,29 @@
179 }; 240 };
180 }; 241 };
181 }; 242 };
243
244 ak4648: ak4648@0x12 {
245 #sound-dai-cells = <0>;
246 compatible = "asahi-kasei,ak4648";
247 reg = <0x12>;
248 };
182}; 249};
183 250
184&i2c3 { 251&i2c3 {
185 pinctrl-0 = <&i2c3_pins>; 252 pinctrl-0 = <&i2c3_pins>;
186 pinctrl-names = "default"; 253 pinctrl-names = "default";
187 status = "okay"; 254 status = "okay";
255
256 pcf8575: gpio@20 {
257 compatible = "nxp,pcf8575";
258 reg = <0x20>;
259 interrupt-parent = <&irqpin2>;
260 interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
261 gpio-controller;
262 #gpio-cells = <2>;
263 interrupt-controller;
264 #interrupt-cells = <2>;
265 };
188}; 266};
189 267
190&mmcif { 268&mmcif {
@@ -205,7 +283,7 @@
205 renesas,function = "i2c3"; 283 renesas,function = "i2c3";
206 }; 284 };
207 285
208 mmcif_pins: mmcif { 286 mmcif_pins: mmc {
209 mux { 287 mux {
210 renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0"; 288 renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0";
211 renesas,function = "mmc0"; 289 renesas,function = "mmc0";
@@ -217,20 +295,26 @@
217 }; 295 };
218 }; 296 };
219 297
220 scifa4_pins: scifa4 { 298 scifa4_pins: serial4 {
221 renesas,groups = "scifa4_data", "scifa4_ctrl"; 299 renesas,groups = "scifa4_data", "scifa4_ctrl";
222 renesas,function = "scifa4"; 300 renesas,function = "scifa4";
223 }; 301 };
224 302
225 sdhi0_pins: sdhi0 { 303 sdhi0_pins: sd0 {
226 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd", "sdhi0_wp"; 304 renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd", "sdhi0_wp";
227 renesas,function = "sdhi0"; 305 renesas,function = "sdhi0";
228 }; 306 };
229 307
230 sdhi2_pins: sdhi2 { 308 sdhi2_pins: sd2 {
231 renesas,groups = "sdhi2_data4", "sdhi2_ctrl"; 309 renesas,groups = "sdhi2_data4", "sdhi2_ctrl";
232 renesas,function = "sdhi2"; 310 renesas,function = "sdhi2";
233 }; 311 };
312
313 fsia_pins: sounda {
314 renesas,groups = "fsia_mclk_in", "fsia_sclk_in",
315 "fsia_data_in", "fsia_data_out";
316 renesas,function = "fsia";
317 };
234}; 318};
235 319
236&sdhi0 { 320&sdhi0 {
@@ -251,3 +335,10 @@
251 broken-cd; 335 broken-cd;
252 status = "okay"; 336 status = "okay";
253}; 337};
338
339&sh_fsi2 {
340 pinctrl-0 = <&fsia_pins>;
341 pinctrl-names = "default";
342
343 status = "okay";
344};
diff --git a/arch/arm/boot/dts/sh73a0-kzm9g.dts b/arch/arm/boot/dts/sh73a0-kzm9g.dts
index 0f1ca7792c46..27c5f426d172 100644
--- a/arch/arm/boot/dts/sh73a0-kzm9g.dts
+++ b/arch/arm/boot/dts/sh73a0-kzm9g.dts
@@ -9,7 +9,7 @@
9 */ 9 */
10 10
11/dts-v1/; 11/dts-v1/;
12/include/ "sh73a0.dtsi" 12#include "sh73a0.dtsi"
13 13
14/ { 14/ {
15 model = "KZM-A9-GT"; 15 model = "KZM-A9-GT";
diff --git a/arch/arm/boot/dts/sh73a0.dtsi b/arch/arm/boot/dts/sh73a0.dtsi
index fcf26889a8a0..b7bd3b9a6753 100644
--- a/arch/arm/boot/dts/sh73a0.dtsi
+++ b/arch/arm/boot/dts/sh73a0.dtsi
@@ -10,6 +10,8 @@
10 10
11/include/ "skeleton.dtsi" 11/include/ "skeleton.dtsi"
12 12
13#include <dt-bindings/interrupt-controller/irq.h>
14
13/ { 15/ {
14 compatible = "renesas,sh73a0"; 16 compatible = "renesas,sh73a0";
15 17
@@ -40,12 +42,12 @@
40 42
41 pmu { 43 pmu {
42 compatible = "arm,cortex-a9-pmu"; 44 compatible = "arm,cortex-a9-pmu";
43 interrupts = <0 55 4>, 45 interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>,
44 <0 56 4>; 46 <0 56 IRQ_TYPE_LEVEL_HIGH>;
45 }; 47 };
46 48
47 irqpin0: irqpin@e6900000 { 49 irqpin0: irqpin@e6900000 {
48 compatible = "renesas,intc-irqpin"; 50 compatible = "renesas,intc-irqpin-sh73a0", "renesas,intc-irqpin";
49 #interrupt-cells = <2>; 51 #interrupt-cells = <2>;
50 interrupt-controller; 52 interrupt-controller;
51 reg = <0xe6900000 4>, 53 reg = <0xe6900000 4>,
@@ -54,18 +56,18 @@
54 <0xe6900040 1>, 56 <0xe6900040 1>,
55 <0xe6900060 1>; 57 <0xe6900060 1>;
56 interrupt-parent = <&gic>; 58 interrupt-parent = <&gic>;
57 interrupts = <0 1 0x4 59 interrupts = <0 1 IRQ_TYPE_LEVEL_HIGH
58 0 2 0x4 60 0 2 IRQ_TYPE_LEVEL_HIGH
59 0 3 0x4 61 0 3 IRQ_TYPE_LEVEL_HIGH
60 0 4 0x4 62 0 4 IRQ_TYPE_LEVEL_HIGH
61 0 5 0x4 63 0 5 IRQ_TYPE_LEVEL_HIGH
62 0 6 0x4 64 0 6 IRQ_TYPE_LEVEL_HIGH
63 0 7 0x4 65 0 7 IRQ_TYPE_LEVEL_HIGH
64 0 8 0x4>; 66 0 8 IRQ_TYPE_LEVEL_HIGH>;
65 }; 67 };
66 68
67 irqpin1: irqpin@e6900004 { 69 irqpin1: irqpin@e6900004 {
68 compatible = "renesas,intc-irqpin"; 70 compatible = "renesas,intc-irqpin-sh73a0", "renesas,intc-irqpin";
69 #interrupt-cells = <2>; 71 #interrupt-cells = <2>;
70 interrupt-controller; 72 interrupt-controller;
71 reg = <0xe6900004 4>, 73 reg = <0xe6900004 4>,
@@ -74,19 +76,19 @@
74 <0xe6900044 1>, 76 <0xe6900044 1>,
75 <0xe6900064 1>; 77 <0xe6900064 1>;
76 interrupt-parent = <&gic>; 78 interrupt-parent = <&gic>;
77 interrupts = <0 9 0x4 79 interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH
78 0 10 0x4 80 0 10 IRQ_TYPE_LEVEL_HIGH
79 0 11 0x4 81 0 11 IRQ_TYPE_LEVEL_HIGH
80 0 12 0x4 82 0 12 IRQ_TYPE_LEVEL_HIGH
81 0 13 0x4 83 0 13 IRQ_TYPE_LEVEL_HIGH
82 0 14 0x4 84 0 14 IRQ_TYPE_LEVEL_HIGH
83 0 15 0x4 85 0 15 IRQ_TYPE_LEVEL_HIGH
84 0 16 0x4>; 86 0 16 IRQ_TYPE_LEVEL_HIGH>;
85 control-parent; 87 control-parent;
86 }; 88 };
87 89
88 irqpin2: irqpin@e6900008 { 90 irqpin2: irqpin@e6900008 {
89 compatible = "renesas,intc-irqpin"; 91 compatible = "renesas,intc-irqpin-sh73a0", "renesas,intc-irqpin";
90 #interrupt-cells = <2>; 92 #interrupt-cells = <2>;
91 interrupt-controller; 93 interrupt-controller;
92 reg = <0xe6900008 4>, 94 reg = <0xe6900008 4>,
@@ -95,18 +97,18 @@
95 <0xe6900048 1>, 97 <0xe6900048 1>,
96 <0xe6900068 1>; 98 <0xe6900068 1>;
97 interrupt-parent = <&gic>; 99 interrupt-parent = <&gic>;
98 interrupts = <0 17 0x4 100 interrupts = <0 17 IRQ_TYPE_LEVEL_HIGH
99 0 18 0x4 101 0 18 IRQ_TYPE_LEVEL_HIGH
100 0 19 0x4 102 0 19 IRQ_TYPE_LEVEL_HIGH
101 0 20 0x4 103 0 20 IRQ_TYPE_LEVEL_HIGH
102 0 21 0x4 104 0 21 IRQ_TYPE_LEVEL_HIGH
103 0 22 0x4 105 0 22 IRQ_TYPE_LEVEL_HIGH
104 0 23 0x4 106 0 23 IRQ_TYPE_LEVEL_HIGH
105 0 24 0x4>; 107 0 24 IRQ_TYPE_LEVEL_HIGH>;
106 }; 108 };
107 109
108 irqpin3: irqpin@e690000c { 110 irqpin3: irqpin@e690000c {
109 compatible = "renesas,intc-irqpin"; 111 compatible = "renesas,intc-irqpin-sh73a0", "renesas,intc-irqpin";
110 #interrupt-cells = <2>; 112 #interrupt-cells = <2>;
111 interrupt-controller; 113 interrupt-controller;
112 reg = <0xe690000c 4>, 114 reg = <0xe690000c 4>,
@@ -115,14 +117,14 @@
115 <0xe690004c 1>, 117 <0xe690004c 1>,
116 <0xe690006c 1>; 118 <0xe690006c 1>;
117 interrupt-parent = <&gic>; 119 interrupt-parent = <&gic>;
118 interrupts = <0 25 0x4 120 interrupts = <0 25 IRQ_TYPE_LEVEL_HIGH
119 0 26 0x4 121 0 26 IRQ_TYPE_LEVEL_HIGH
120 0 27 0x4 122 0 27 IRQ_TYPE_LEVEL_HIGH
121 0 28 0x4 123 0 28 IRQ_TYPE_LEVEL_HIGH
122 0 29 0x4 124 0 29 IRQ_TYPE_LEVEL_HIGH
123 0 30 0x4 125 0 30 IRQ_TYPE_LEVEL_HIGH
124 0 31 0x4 126 0 31 IRQ_TYPE_LEVEL_HIGH
125 0 32 0x4>; 127 0 32 IRQ_TYPE_LEVEL_HIGH>;
126 }; 128 };
127 129
128 i2c0: i2c@e6820000 { 130 i2c0: i2c@e6820000 {
@@ -131,10 +133,10 @@
131 compatible = "renesas,rmobile-iic"; 133 compatible = "renesas,rmobile-iic";
132 reg = <0xe6820000 0x425>; 134 reg = <0xe6820000 0x425>;
133 interrupt-parent = <&gic>; 135 interrupt-parent = <&gic>;
134 interrupts = <0 167 0x4 136 interrupts = <0 167 IRQ_TYPE_LEVEL_HIGH
135 0 168 0x4 137 0 168 IRQ_TYPE_LEVEL_HIGH
136 0 169 0x4 138 0 169 IRQ_TYPE_LEVEL_HIGH
137 0 170 0x4>; 139 0 170 IRQ_TYPE_LEVEL_HIGH>;
138 status = "disabled"; 140 status = "disabled";
139 }; 141 };
140 142
@@ -144,10 +146,10 @@
144 compatible = "renesas,rmobile-iic"; 146 compatible = "renesas,rmobile-iic";
145 reg = <0xe6822000 0x425>; 147 reg = <0xe6822000 0x425>;
146 interrupt-parent = <&gic>; 148 interrupt-parent = <&gic>;
147 interrupts = <0 51 0x4 149 interrupts = <0 51 IRQ_TYPE_LEVEL_HIGH
148 0 52 0x4 150 0 52 IRQ_TYPE_LEVEL_HIGH
149 0 53 0x4 151 0 53 IRQ_TYPE_LEVEL_HIGH
150 0 54 0x4>; 152 0 54 IRQ_TYPE_LEVEL_HIGH>;
151 status = "disabled"; 153 status = "disabled";
152 }; 154 };
153 155
@@ -157,10 +159,10 @@
157 compatible = "renesas,rmobile-iic"; 159 compatible = "renesas,rmobile-iic";
158 reg = <0xe6824000 0x425>; 160 reg = <0xe6824000 0x425>;
159 interrupt-parent = <&gic>; 161 interrupt-parent = <&gic>;
160 interrupts = <0 171 0x4 162 interrupts = <0 171 IRQ_TYPE_LEVEL_HIGH
161 0 172 0x4 163 0 172 IRQ_TYPE_LEVEL_HIGH
162 0 173 0x4 164 0 173 IRQ_TYPE_LEVEL_HIGH
163 0 174 0x4>; 165 0 174 IRQ_TYPE_LEVEL_HIGH>;
164 status = "disabled"; 166 status = "disabled";
165 }; 167 };
166 168
@@ -170,10 +172,10 @@
170 compatible = "renesas,rmobile-iic"; 172 compatible = "renesas,rmobile-iic";
171 reg = <0xe6826000 0x425>; 173 reg = <0xe6826000 0x425>;
172 interrupt-parent = <&gic>; 174 interrupt-parent = <&gic>;
173 interrupts = <0 183 0x4 175 interrupts = <0 183 IRQ_TYPE_LEVEL_HIGH
174 0 184 0x4 176 0 184 IRQ_TYPE_LEVEL_HIGH
175 0 185 0x4 177 0 185 IRQ_TYPE_LEVEL_HIGH
176 0 186 0x4>; 178 0 186 IRQ_TYPE_LEVEL_HIGH>;
177 status = "disabled"; 179 status = "disabled";
178 }; 180 };
179 181
@@ -183,52 +185,52 @@
183 compatible = "renesas,rmobile-iic"; 185 compatible = "renesas,rmobile-iic";
184 reg = <0xe6828000 0x425>; 186 reg = <0xe6828000 0x425>;
185 interrupt-parent = <&gic>; 187 interrupt-parent = <&gic>;
186 interrupts = <0 187 0x4 188 interrupts = <0 187 IRQ_TYPE_LEVEL_HIGH
187 0 188 0x4 189 0 188 IRQ_TYPE_LEVEL_HIGH
188 0 189 0x4 190 0 189 IRQ_TYPE_LEVEL_HIGH
189 0 190 0x4>; 191 0 190 IRQ_TYPE_LEVEL_HIGH>;
190 status = "disabled"; 192 status = "disabled";
191 }; 193 };
192 194
193 mmcif: mmcif@e6bd0000 { 195 mmcif: mmc@e6bd0000 {
194 compatible = "renesas,sh-mmcif"; 196 compatible = "renesas,sh-mmcif";
195 reg = <0xe6bd0000 0x100>; 197 reg = <0xe6bd0000 0x100>;
196 interrupt-parent = <&gic>; 198 interrupt-parent = <&gic>;
197 interrupts = <0 140 0x4 199 interrupts = <0 140 IRQ_TYPE_LEVEL_HIGH
198 0 141 0x4>; 200 0 141 IRQ_TYPE_LEVEL_HIGH>;
199 reg-io-width = <4>; 201 reg-io-width = <4>;
200 status = "disabled"; 202 status = "disabled";
201 }; 203 };
202 204
203 sdhi0: sdhi@ee100000 { 205 sdhi0: sd@ee100000 {
204 compatible = "renesas,sdhi-r8a7740"; 206 compatible = "renesas,sdhi-sh73a0";
205 reg = <0xee100000 0x100>; 207 reg = <0xee100000 0x100>;
206 interrupt-parent = <&gic>; 208 interrupt-parent = <&gic>;
207 interrupts = <0 83 4 209 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH
208 0 84 4 210 0 84 IRQ_TYPE_LEVEL_HIGH
209 0 85 4>; 211 0 85 IRQ_TYPE_LEVEL_HIGH>;
210 cap-sd-highspeed; 212 cap-sd-highspeed;
211 status = "disabled"; 213 status = "disabled";
212 }; 214 };
213 215
214 /* SDHI1 and SDHI2 have no CD pins, no need for CD IRQ */ 216 /* SDHI1 and SDHI2 have no CD pins, no need for CD IRQ */
215 sdhi1: sdhi@ee120000 { 217 sdhi1: sd@ee120000 {
216 compatible = "renesas,sdhi-r8a7740"; 218 compatible = "renesas,sdhi-sh73a0";
217 reg = <0xee120000 0x100>; 219 reg = <0xee120000 0x100>;
218 interrupt-parent = <&gic>; 220 interrupt-parent = <&gic>;
219 interrupts = <0 88 4 221 interrupts = <0 88 IRQ_TYPE_LEVEL_HIGH
220 0 89 4>; 222 0 89 IRQ_TYPE_LEVEL_HIGH>;
221 toshiba,mmc-wrprotect-disable; 223 toshiba,mmc-wrprotect-disable;
222 cap-sd-highspeed; 224 cap-sd-highspeed;
223 status = "disabled"; 225 status = "disabled";
224 }; 226 };
225 227
226 sdhi2: sdhi@ee140000 { 228 sdhi2: sd@ee140000 {
227 compatible = "renesas,sdhi-r8a7740"; 229 compatible = "renesas,sdhi-sh73a0";
228 reg = <0xee140000 0x100>; 230 reg = <0xee140000 0x100>;
229 interrupt-parent = <&gic>; 231 interrupt-parent = <&gic>;
230 interrupts = <0 104 4 232 interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH
231 0 105 4>; 233 0 105 IRQ_TYPE_LEVEL_HIGH>;
232 toshiba,mmc-wrprotect-disable; 234 toshiba,mmc-wrprotect-disable;
233 cap-sd-highspeed; 235 cap-sd-highspeed;
234 status = "disabled"; 236 status = "disabled";
@@ -240,5 +242,23 @@
240 <0xe605801c 0x1c>; 242 <0xe605801c 0x1c>;
241 gpio-controller; 243 gpio-controller;
242 #gpio-cells = <2>; 244 #gpio-cells = <2>;
245 interrupts-extended =
246 <&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>,
247 <&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>,
248 <&irqpin1 0 0>, <&irqpin1 1 0>, <&irqpin1 2 0>, <&irqpin1 3 0>,
249 <&irqpin1 4 0>, <&irqpin1 5 0>, <&irqpin1 6 0>, <&irqpin1 7 0>,
250 <&irqpin2 0 0>, <&irqpin2 1 0>, <&irqpin2 2 0>, <&irqpin2 3 0>,
251 <&irqpin2 4 0>, <&irqpin2 5 0>, <&irqpin2 6 0>, <&irqpin2 7 0>,
252 <&irqpin3 0 0>, <&irqpin3 1 0>, <&irqpin3 2 0>, <&irqpin3 3 0>,
253 <&irqpin3 4 0>, <&irqpin3 5 0>, <&irqpin3 6 0>, <&irqpin3 7 0>;
254 };
255
256 sh_fsi2: sound@ec230000 {
257 #sound-dai-cells = <1>;
258 compatible = "renesas,sh_fsi2";
259 reg = <0xec230000 0x400>;
260 interrupt-parent = <&gic>;
261 interrupts = <0 146 0x4>;
262 status = "disabled";
243 }; 263 };
244}; 264};
diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi
index f936476c2753..537f1a5c07f5 100644
--- a/arch/arm/boot/dts/socfpga.dtsi
+++ b/arch/arm/boot/dts/socfpga.dtsi
@@ -79,6 +79,8 @@
79 #dma-cells = <1>; 79 #dma-cells = <1>;
80 #dma-channels = <8>; 80 #dma-channels = <8>;
81 #dma-requests = <32>; 81 #dma-requests = <32>;
82 clocks = <&l4_main_clk>;
83 clock-names = "apb_pclk";
82 }; 84 };
83 }; 85 };
84 86
@@ -467,6 +469,8 @@
467 interrupts = <0 38 0x04>; 469 interrupts = <0 38 0x04>;
468 cache-unified; 470 cache-unified;
469 cache-level = <2>; 471 cache-level = <2>;
472 arm,tag-latency = <1 1 1>;
473 arm,data-latency = <2 1 1>;
470 }; 474 };
471 475
472 /* Local timer */ 476 /* Local timer */
diff --git a/arch/arm/boot/dts/st-pincfg.h b/arch/arm/boot/dts/st-pincfg.h
index 8c45d85ac13e..4851c387d52d 100644
--- a/arch/arm/boot/dts/st-pincfg.h
+++ b/arch/arm/boot/dts/st-pincfg.h
@@ -15,7 +15,7 @@
15/* Pull Up */ 15/* Pull Up */
16#define PU (1 << 26) 16#define PU (1 << 26)
17/* Open Drain */ 17/* Open Drain */
18#define OD (1 << 26) 18#define OD (1 << 25)
19#define RT (1 << 23) 19#define RT (1 << 23)
20#define INVERTCLK (1 << 22) 20#define INVERTCLK (1 << 22)
21#define CLKNOTDATA (1 << 21) 21#define CLKNOTDATA (1 << 21)
diff --git a/arch/arm/boot/dts/ste-dbx5x0.dtsi b/arch/arm/boot/dts/ste-dbx5x0.dtsi
index 7da99fe497e1..e0853ea02df2 100644
--- a/arch/arm/boot/dts/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/ste-dbx5x0.dtsi
@@ -913,6 +913,10 @@
913 interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>; 913 interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
914 v-ape-supply = <&db8500_vape_reg>; 914 v-ape-supply = <&db8500_vape_reg>;
915 915
916 dmas = <&dma 31 0 0x12>, /* Logical - DevToMem - HighPrio */
917 <&dma 31 0 0x10>; /* Logical - MemToDev - HighPrio */
918 dma-names = "rx", "tx";
919
916 clocks = <&prcc_kclk 1 3>, <&prcc_pclk 1 3>; 920 clocks = <&prcc_kclk 1 3>, <&prcc_pclk 1 3>;
917 clock-names = "msp", "apb_pclk"; 921 clock-names = "msp", "apb_pclk";
918 922
@@ -925,6 +929,9 @@
925 interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>; 929 interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
926 v-ape-supply = <&db8500_vape_reg>; 930 v-ape-supply = <&db8500_vape_reg>;
927 931
932 dmas = <&dma 30 0 0x10>; /* Logical - MemToDev - HighPrio */
933 dma-names = "tx";
934
928 clocks = <&prcc_kclk 1 4>, <&prcc_pclk 1 4>; 935 clocks = <&prcc_kclk 1 4>, <&prcc_pclk 1 4>;
929 clock-names = "msp", "apb_pclk"; 936 clock-names = "msp", "apb_pclk";
930 937
@@ -938,6 +945,11 @@
938 interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>; 945 interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>;
939 v-ape-supply = <&db8500_vape_reg>; 946 v-ape-supply = <&db8500_vape_reg>;
940 947
948 dmas = <&dma 14 0 0x12>, /* Logical - DevToMem - HighPrio */
949 <&dma 14 1 0x19>; /* Physical Chan 1 - MemToDev
950 HighPrio - Fixed */
951 dma-names = "rx", "tx";
952
941 clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>; 953 clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>;
942 clock-names = "msp", "apb_pclk"; 954 clock-names = "msp", "apb_pclk";
943 955
@@ -950,6 +962,9 @@
950 interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>; 962 interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
951 v-ape-supply = <&db8500_vape_reg>; 963 v-ape-supply = <&db8500_vape_reg>;
952 964
965 dmas = <&dma 30 0 0x12>; /* Logical - DevToMem - HighPrio */
966 dma-names = "rx";
967
953 clocks = <&prcc_kclk 1 10>, <&prcc_pclk 1 11>; 968 clocks = <&prcc_kclk 1 10>, <&prcc_pclk 1 11>;
954 clock-names = "msp", "apb_pclk"; 969 clock-names = "msp", "apb_pclk";
955 970
@@ -987,6 +1002,23 @@
987 status = "disabled"; 1002 status = "disabled";
988 }; 1003 };
989 1004
1005 mcde@a0350000 {
1006 compatible = "stericsson,mcde";
1007 reg = <0xa0350000 0x1000>, /* MCDE */
1008 <0xa0351000 0x1000>, /* DSI link 1 */
1009 <0xa0352000 0x1000>, /* DSI link 2 */
1010 <0xa0353000 0x1000>; /* DSI link 3 */
1011 interrupts = <0 48 IRQ_TYPE_LEVEL_HIGH>;
1012 clocks = <&prcmu_clk PRCMU_MCDECLK>, /* Main MCDE clock */
1013 <&prcmu_clk PRCMU_LCDCLK>, /* LCD clock */
1014 <&prcmu_clk PRCMU_PLLDSI>, /* HDMI clock */
1015 <&prcmu_clk PRCMU_DSI0CLK>, /* DSI 0 */
1016 <&prcmu_clk PRCMU_DSI1CLK>, /* DSI 1 */
1017 <&prcmu_clk PRCMU_DSI0ESCCLK>, /* TVout clock 0 */
1018 <&prcmu_clk PRCMU_DSI1ESCCLK>, /* TVout clock 1 */
1019 <&prcmu_clk PRCMU_DSI2ESCCLK>; /* TVout clock 2 */
1020 };
1021
990 cryp@a03cb000 { 1022 cryp@a03cb000 {
991 compatible = "stericsson,ux500-cryp"; 1023 compatible = "stericsson,ux500-cryp";
992 reg = <0xa03cb000 0x1000>; 1024 reg = <0xa03cb000 0x1000>;
diff --git a/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi b/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi
new file mode 100644
index 000000000000..addfcc7c2750
--- /dev/null
+++ b/arch/arm/boot/dts/ste-href-family-pinctrl.dtsi
@@ -0,0 +1,745 @@
1/*
2 * Copyright 2013 Linaro Ltd.
3 *
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
7 *
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
10 */
11
12#include "ste-nomadik-pinctrl.dtsi"
13
14/ {
15 soc {
16 pinctrl {
17 /* Settings for all UART default and sleep states */
18 uart0 {
19 uart0_default_mode: uart0_default {
20 default_mux {
21 ste,function = "u0";
22 ste,pins = "u0_a_1";
23 };
24 default_cfg1 {
25 ste,pins = "GPIO0_AJ5", "GPIO2_AH4"; /* CTS+RXD */
26 ste,config = <&in_pu>;
27 };
28
29 default_cfg2 {
30 ste,pins = "GPIO1_AJ3", "GPIO3_AH3"; /* RTS+TXD */
31 ste,config = <&out_hi>;
32 };
33 };
34
35 uart0_sleep_mode: uart0_sleep {
36 sleep_cfg1 {
37 ste,pins = "GPIO0_AJ5", "GPIO2_AH4"; /* CTS+RXD */
38 ste,config = <&slpm_in_wkup_pdis>;
39 };
40
41 sleep_cfg2 {
42 ste,pins = "GPIO1_AJ3"; /* RTS */
43 ste,config = <&slpm_out_hi_wkup_pdis>;
44 };
45
46 sleep_cfg3 {
47 ste,pins = "GPIO3_AH3"; /* TXD */
48 ste,config = <&slpm_out_wkup_pdis>;
49 };
50 };
51 };
52
53 uart1 {
54 uart1_default_mode: uart1_default {
55 default_mux {
56 ste,function = "u1";
57 ste,pins = "u1rxtx_a_1";
58 };
59 default_cfg1 {
60 ste,pins = "GPIO4_AH6"; /* RXD */
61 ste,config = <&in_pu>;
62 };
63
64 default_cfg2 {
65 ste,pins = "GPIO5_AG6"; /* TXD */
66 ste,config = <&out_hi>;
67 };
68 };
69
70 uart1_sleep_mode: uart1_sleep {
71 sleep_cfg1 {
72 ste,pins = "GPIO4_AH6"; /* RXD */
73 ste,config = <&slpm_in_wkup_pdis>;
74 };
75
76 sleep_cfg2 {
77 ste,pins = "GPIO5_AG6"; /* TXD */
78 ste,config = <&slpm_out_wkup_pdis>;
79 };
80 };
81 };
82
83 uart2 {
84 uart2_default_mode: uart2_default {
85 default_mux {
86 ste,function = "u2";
87 ste,pins = "u2rxtx_c_1";
88 };
89 default_cfg1 {
90 ste,pins = "GPIO29_W2"; /* RXD */
91 ste,config = <&in_pu>;
92 };
93
94 default_cfg2 {
95 ste,pins = "GPIO30_W3"; /* TXD */
96 ste,config = <&out_hi>;
97 };
98 };
99
100 uart2_sleep_mode: uart2_sleep {
101 sleep_cfg1 {
102 ste,pins = "GPIO29_W2"; /* RXD */
103 ste,config = <&in_wkup_pdis>;
104 };
105
106 sleep_cfg2 {
107 ste,pins = "GPIO30_W3"; /* TXD */
108 ste,config = <&out_wkup_pdis>;
109 };
110 };
111 };
112
113 /* Settings for all I2C default and sleep states */
114 i2c0 {
115 i2c0_default_mode: i2c_default {
116 default_mux {
117 ste,function = "i2c0";
118 ste,pins = "i2c0_a_1";
119 };
120 default_cfg1 {
121 ste,pins = "GPIO147_C15", "GPIO148_B16"; /* SDA/SCL */
122 ste,config = <&in_pu>;
123 };
124 };
125
126 i2c0_sleep_mode: i2c_sleep {
127 sleep_cfg1 {
128 ste,pins = "GPIO147_C15", "GPIO148_B16"; /* SDA/SCL */
129 ste,config = <&slpm_in_wkup_pdis>;
130 };
131 };
132 };
133
134 i2c1 {
135 i2c1_default_mode: i2c_default {
136 default_mux {
137 ste,function = "i2c1";
138 ste,pins = "i2c1_b_2";
139 };
140 default_cfg1 {
141 ste,pins = "GPIO16_AD3", "GPIO17_AD4"; /* SDA/SCL */
142 ste,config = <&in_pu>;
143 };
144 };
145
146 i2c1_sleep_mode: i2c_sleep {
147 sleep_cfg1 {
148 ste,pins = "GPIO16_AD3", "GPIO17_AD4"; /* SDA/SCL */
149 ste,config = <&slpm_in_wkup_pdis>;
150 };
151 };
152 };
153
154 i2c2 {
155 i2c2_default_mode: i2c_default {
156 default_mux {
157 ste,function = "i2c2";
158 ste,pins = "i2c2_b_2";
159 };
160 default_cfg1 {
161 ste,pins = "GPIO10_AF5", "GPIO11_AG4"; /* SDA/SCL */
162 ste,config = <&in_pu>;
163 };
164 };
165
166 i2c2_sleep_mode: i2c_sleep {
167 sleep_cfg1 {
168 ste,pins = "GPIO10_AF5", "GPIO11_AG4"; /* SDA/SCL */
169 ste,config = <&slpm_in_wkup_pdis>;
170 };
171 };
172 };
173
174 i2c3 {
175 i2c3_default_mode: i2c_default {
176 default_mux {
177 ste,function = "i2c3";
178 ste,pins = "i2c3_c_2";
179 };
180 default_cfg1 {
181 ste,pins = "GPIO229_AG7", "GPIO230_AF7"; /* SDA/SCL */
182 ste,config = <&in_pu>;
183 };
184 };
185
186 i2c3_sleep_mode: i2c_sleep {
187 sleep_cfg1 {
188 ste,pins = "GPIO229_AG7", "GPIO230_AF7"; /* SDA/SCL */
189 ste,config = <&slpm_in_wkup_pdis>;
190 };
191 };
192 };
193
194 /*
195 * Activating I2C4 will conflict with UART1 about the same pins so do not
196 * enable I2C4 and UART1 at the same time.
197 */
198 i2c4 {
199 i2c4_default_mode: i2c_default {
200 default_mux {
201 ste,function = "i2c4";
202 ste,pins = "i2c4_b_1";
203 };
204 default_cfg1 {
205 ste,pins = "GPIO4_AH6", "GPIO5_AG6"; /* SDA/SCL */
206 ste,config = <&in_pu>;
207 };
208 };
209
210 i2c4_sleep_mode: i2c_sleep {
211 sleep_cfg1 {
212 ste,pins = "GPIO4_AH6", "GPIO5_AG6"; /* SDA/SCL */
213 ste,config = <&slpm_in_wkup_pdis>;
214 };
215 };
216 };
217
218 /* Settings for all SPI default and sleep states */
219 spi2 {
220 spi2_default_mode: spi_default {
221 default_mux {
222 ste,function = "spi2";
223 ste,pins = "spi2_oc1_2";
224 };
225 default_cfg1 {
226 ste,pins = "GPIO216_AG12"; /* FRM */
227 ste,config = <&gpio_out_hi>;
228 };
229 default_cfg2 {
230 ste,pins = "GPIO218_AH11"; /* RXD */
231 ste,config = <&in_pd>;
232 };
233 default_cfg3 {
234 ste,pins =
235 "GPIO215_AH13", /* TXD */
236 "GPIO217_AH12"; /* CLK */
237 ste,config = <&out_lo>;
238 };
239 };
240
241 spi2_idle_mode: spi_idle {
242 /*
243 * The idle mode is basically sleep mode sans wakeups. Also
244 * note that we have muxes the pins off the function here
245 * as we do not state any muxing.
246 */
247 idle_cfg1 {
248 ste,pins = "GPIO218_AH11"; /* RXD */
249 ste,config = <&slpm_in_pdis>;
250 };
251 idle_cfg2 {
252 ste,pins = "GPIO215_AH13"; /* TXD */
253 ste,config = <&slpm_out_lo_pdis>;
254 };
255 idle_cfg3 {
256 ste,pins = "GPIO217_AH12"; /* CLK */
257 ste,config = <&slpm_pdis>;
258 };
259 };
260
261 spi2_sleep_mode: spi_sleep {
262 sleep_cfg1 {
263 ste,pins =
264 "GPIO216_AG12", /* FRM */
265 "GPIO218_AH11"; /* RXD */
266 ste,config = <&slpm_in_wkup_pdis>;
267 };
268 sleep_cfg2 {
269 ste,pins = "GPIO215_AH13"; /* TXD */
270 ste,config = <&slpm_out_lo_wkup_pdis>;
271 };
272 sleep_cfg3 {
273 ste,pins = "GPIO217_AH12"; /* CLK */
274 ste,config = <&slpm_wkup_pdis>;
275 };
276 };
277 };
278
279 /* Settings for all MMC/SD/SDIO default and sleep states */
280 sdi0 {
281 /* This is the external SD card slot, 4 bits wide */
282 sdi0_default_mode: sdi0_default {
283 default_mux {
284 ste,function = "mc0";
285 ste,pins = "mc0_a_1";
286 };
287 default_cfg1 {
288 ste,pins =
289 "GPIO18_AC2", /* CMDDIR */
290 "GPIO19_AC1", /* DAT0DIR */
291 "GPIO20_AB4"; /* DAT2DIR */
292 ste,config = <&out_hi>;
293 };
294 default_cfg2 {
295 ste,pins = "GPIO22_AA3"; /* FBCLK */
296 ste,config = <&in_nopull>;
297 };
298 default_cfg3 {
299 ste,pins = "GPIO23_AA4"; /* CLK */
300 ste,config = <&out_lo>;
301 };
302 default_cfg4 {
303 ste,pins =
304 "GPIO24_AB2", /* CMD */
305 "GPIO25_Y4", /* DAT0 */
306 "GPIO26_Y2", /* DAT1 */
307 "GPIO27_AA2", /* DAT2 */
308 "GPIO28_AA1"; /* DAT3 */
309 ste,config = <&in_pu>;
310 };
311 };
312
313 sdi0_sleep_mode: sdi0_sleep {
314 sleep_cfg1 {
315 ste,pins =
316 "GPIO18_AC2", /* CMDDIR */
317 "GPIO19_AC1", /* DAT0DIR */
318 "GPIO20_AB4"; /* DAT2DIR */
319 ste,config = <&slpm_out_hi_wkup_pdis>;
320 };
321 sleep_cfg2 {
322 ste,pins =
323 "GPIO22_AA3", /* FBCLK */
324 "GPIO24_AB2", /* CMD */
325 "GPIO25_Y4", /* DAT0 */
326 "GPIO26_Y2", /* DAT1 */
327 "GPIO27_AA2", /* DAT2 */
328 "GPIO28_AA1"; /* DAT3 */
329 ste,config = <&slpm_in_wkup_pdis>;
330 };
331 sleep_cfg3 {
332 ste,pins = "GPIO23_AA4"; /* CLK */
333 ste,config = <&slpm_out_lo_wkup_pdis>;
334 };
335 };
336 };
337
338 sdi1 {
339 /* This is the WLAN SDIO 4 bits wide */
340 sdi1_default_mode: sdi1_default {
341 default_mux {
342 ste,function = "mc1";
343 ste,pins = "mc1_a_1";
344 };
345 default_cfg1 {
346 ste,pins = "GPIO208_AH16"; /* CLK */
347 ste,config = <&out_lo>;
348 };
349 default_cfg2 {
350 ste,pins = "GPIO209_AG15"; /* FBCLK */
351 ste,config = <&in_nopull>;
352 };
353 default_cfg3 {
354 ste,pins =
355 "GPIO210_AJ15", /* CMD */
356 "GPIO211_AG14", /* DAT0 */
357 "GPIO212_AF13", /* DAT1 */
358 "GPIO213_AG13", /* DAT2 */
359 "GPIO214_AH15"; /* DAT3 */
360 ste,config = <&in_pu>;
361 };
362 };
363
364 sdi1_sleep_mode: sdi1_sleep {
365 sleep_cfg1 {
366 ste,pins = "GPIO208_AH16"; /* CLK */
367 ste,config = <&slpm_out_lo_wkup_pdis>;
368 };
369 sleep_cfg2 {
370 ste,pins =
371 "GPIO209_AG15", /* FBCLK */
372 "GPIO210_AJ15", /* CMD */
373 "GPIO211_AG14", /* DAT0 */
374 "GPIO212_AF13", /* DAT1 */
375 "GPIO213_AG13", /* DAT2 */
376 "GPIO214_AH15"; /* DAT3 */
377 ste,config = <&slpm_in_wkup_pdis>;
378 };
379 };
380 };
381
382 sdi2 {
383 /* This is the eMMC 8 bits wide, usually PoP eMMC */
384 sdi2_default_mode: sdi2_default {
385 default_mux {
386 ste,function = "mc2";
387 ste,pins = "mc2_a_1";
388 };
389 default_cfg1 {
390 ste,pins = "GPIO128_A5"; /* CLK */
391 ste,config = <&out_lo>;
392 };
393 default_cfg2 {
394 ste,pins = "GPIO130_C8"; /* FBCLK */
395 ste,config = <&in_nopull>;
396 };
397 default_cfg3 {
398 ste,pins =
399 "GPIO129_B4", /* CMD */
400 "GPIO131_A12", /* DAT0 */
401 "GPIO132_C10", /* DAT1 */
402 "GPIO133_B10", /* DAT2 */
403 "GPIO134_B9", /* DAT3 */
404 "GPIO135_A9", /* DAT4 */
405 "GPIO136_C7", /* DAT5 */
406 "GPIO137_A7", /* DAT6 */
407 "GPIO138_C5"; /* DAT7 */
408 ste,config = <&in_pu>;
409 };
410 };
411
412 sdi2_sleep_mode: sdi2_sleep {
413 sleep_cfg1 {
414 ste,pins = "GPIO128_A5"; /* CLK */
415 ste,config = <&out_lo_wkup_pdis>;
416 };
417 sleep_cfg2 {
418 ste,pins =
419 "GPIO130_C8", /* FBCLK */
420 "GPIO129_B4"; /* CMD */
421 ste,config = <&in_wkup_pdis_en>;
422 };
423 sleep_cfg3 {
424 ste,pins =
425 "GPIO131_A12", /* DAT0 */
426 "GPIO132_C10", /* DAT1 */
427 "GPIO133_B10", /* DAT2 */
428 "GPIO134_B9", /* DAT3 */
429 "GPIO135_A9", /* DAT4 */
430 "GPIO136_C7", /* DAT5 */
431 "GPIO137_A7", /* DAT6 */
432 "GPIO138_C5"; /* DAT7 */
433 ste,config = <&in_wkup_pdis>;
434 };
435 };
436 };
437
438 sdi4 {
439 /* This is the eMMC 8 bits wide, usually PCB-mounted eMMC */
440 sdi4_default_mode: sdi4_default {
441 default_mux {
442 ste,function = "mc4";
443 ste,pins = "mc4_a_1";
444 };
445 default_cfg1 {
446 ste,pins = "GPIO203_AE23"; /* CLK */
447 ste,config = <&out_lo>;
448 };
449 default_cfg2 {
450 ste,pins = "GPIO202_AF25"; /* FBCLK */
451 ste,config = <&in_nopull>;
452 };
453 default_cfg3 {
454 ste,pins =
455 "GPIO201_AF24", /* CMD */
456 "GPIO200_AH26", /* DAT0 */
457 "GPIO199_AH23", /* DAT1 */
458 "GPIO198_AG25", /* DAT2 */
459 "GPIO197_AH24", /* DAT3 */
460 "GPIO207_AJ23", /* DAT4 */
461 "GPIO206_AG24", /* DAT5 */
462 "GPIO205_AG23", /* DAT6 */
463 "GPIO204_AF23"; /* DAT7 */
464 ste,config = <&in_pu>;
465 };
466 };
467
468 sdi4_sleep_mode: sdi4_sleep {
469 sleep_cfg1 {
470 ste,pins = "GPIO203_AE23"; /* CLK */
471 ste,config = <&out_lo_wkup_pdis>;
472 };
473 sleep_cfg2 {
474 ste,pins =
475 "GPIO202_AF25", /* FBCLK */
476 "GPIO201_AF24", /* CMD */
477 "GPIO200_AH26", /* DAT0 */
478 "GPIO199_AH23", /* DAT1 */
479 "GPIO198_AG25", /* DAT2 */
480 "GPIO197_AH24", /* DAT3 */
481 "GPIO207_AJ23", /* DAT4 */
482 "GPIO206_AG24", /* DAT5 */
483 "GPIO205_AG23", /* DAT6 */
484 "GPIO204_AF23"; /* DAT7 */
485 ste,config = <&slpm_in_wkup_pdis>;
486 };
487 };
488 };
489
490 /*
491 * Multi-rate serial ports (MSPs) - MSP3 output is internal and
492 * cannot be muxed onto any pins.
493 */
494 msp0 {
495 msp0_default_mode: msp0_default {
496 default_msp0_mux {
497 ste,function = "msp0";
498 ste,pins = "msp0txrx_a_1", "msp0tfstck_a_1";
499 };
500 default_msp0_cfg {
501 ste,pins =
502 "GPIO12_AC4", /* TXD */
503 "GPIO15_AC3", /* RXD */
504 "GPIO13_AF3", /* TFS */
505 "GPIO14_AE3"; /* TCK */
506 ste,config = <&in_nopull>;
507 };
508 };
509 };
510
511 msp1 {
512 msp1_default_mode: msp1_default {
513 default_mux {
514 ste,function = "msp1";
515 ste,pins = "msp1txrx_a_1", "msp1_a_1";
516 };
517 default_cfg1 {
518 ste,pins = "GPIO33_AF2";
519 ste,config = <&out_lo>;
520 };
521 default_cfg2 {
522 ste,pins =
523 "GPIO34_AE1",
524 "GPIO35_AE2",
525 "GPIO36_AG2";
526 ste,config = <&in_nopull>;
527 };
528
529 };
530 };
531
532 msp2 {
533 msp2_default_mode: msp2_default {
534 /* MSP2 usually used for HDMI audio */
535 default_mux {
536 ste,function = "msp2";
537 ste,pins = "msp2_a_1";
538 };
539 default_cfg1 {
540 ste,pins =
541 "GPIO193_AH27", /* TXD */
542 "GPIO194_AF27", /* TCK */
543 "GPIO195_AG28"; /* TFS */
544 ste,config = <&in_pd>;
545 };
546 default_cfg2 {
547 ste,pins = "GPIO196_AG26"; /* RXD */
548 ste,config = <&out_lo>;
549 };
550 };
551 };
552
553
554 musb {
555 musb_default_mode: musb_default {
556 default_mux {
557 ste,function = "usb";
558 ste,pins = "usb_a_1";
559 };
560 default_cfg1 {
561 ste,pins =
562 "GPIO256_AF28", /* NXT */
563 "GPIO258_AD29", /* XCLK */
564 "GPIO259_AC29", /* DIR */
565 "GPIO260_AD28", /* DAT7 */
566 "GPIO261_AD26", /* DAT6 */
567 "GPIO262_AE26", /* DAT5 */
568 "GPIO263_AG29", /* DAT4 */
569 "GPIO264_AE27", /* DAT3 */
570 "GPIO265_AD27", /* DAT2 */
571 "GPIO266_AC28", /* DAT1 */
572 "GPIO267_AC27"; /* DAT0 */
573 ste,config = <&in_nopull>;
574 };
575 default_cfg2 {
576 ste,pins = "GPIO257_AE29"; /* STP */
577 ste,config = <&out_hi>;
578 };
579 };
580
581 musb_sleep_mode: musb_sleep {
582 sleep_cfg1 {
583 ste,pins =
584 "GPIO256_AF28", /* NXT */
585 "GPIO258_AD29", /* XCLK */
586 "GPIO259_AC29"; /* DIR */
587 ste,config = <&slpm_wkup_pdis_en>;
588 };
589 sleep_cfg2 {
590 ste,pins = "GPIO257_AE29"; /* STP */
591 ste,config = <&slpm_out_hi_wkup_pdis>;
592 };
593 sleep_cfg3 {
594 ste,pins =
595 "GPIO260_AD28", /* DAT7 */
596 "GPIO261_AD26", /* DAT6 */
597 "GPIO262_AE26", /* DAT5 */
598 "GPIO263_AG29", /* DAT4 */
599 "GPIO264_AE27", /* DAT3 */
600 "GPIO265_AD27", /* DAT2 */
601 "GPIO266_AC28", /* DAT1 */
602 "GPIO267_AC27"; /* DAT0 */
603 ste,config = <&slpm_in_wkup_pdis_en>;
604 };
605 };
606 };
607
608 mcde {
609 lcd_default_mode: lcd_default {
610 default_mux {
611 /* Mux in VSI0 and all the data lines */
612 ste,function = "lcd";
613 ste,pins =
614 "lcdvsi0_a_1", /* VSI0 for LCD */
615 "lcd_d0_d7_a_1", /* Data lines */
616 "lcd_d8_d11_a_1", /* TV-out */
617 "lcdaclk_b_1", /* Clock line for TV-out */
618 "lcdvsi1_a_1"; /* VSI1 for HDMI */
619 };
620 default_cfg1 {
621 ste,pins =
622 "GPIO68_E1", /* VSI0 */
623 "GPIO69_E2"; /* VSI1 */
624 ste,config = <&in_pu>;
625 };
626 };
627 lcd_sleep_mode: lcd_sleep {
628 sleep_cfg1 {
629 ste,pins = "GPIO69_E2"; /* VSI1 */
630 ste,config = <&slpm_in_wkup_pdis>;
631 };
632 };
633 };
634
635 ske {
636 /* SKE keys on position 2 in an 8x8 matrix */
637 ske_kpa2_default_mode: ske_kpa2_default {
638 default_mux {
639 ste,function = "kp";
640 ste,pins = "kp_a_2";
641 };
642 default_cfg1 {
643 ste,pins =
644 "GPIO153_B17", /* I7 */
645 "GPIO154_C16", /* I6 */
646 "GPIO155_C19", /* I5 */
647 "GPIO156_C17", /* I4 */
648 "GPIO161_D21", /* I3 */
649 "GPIO162_D20", /* I2 */
650 "GPIO163_C20", /* I1 */
651 "GPIO164_B21"; /* I0 */
652 ste,config = <&in_pd>;
653 };
654 default_cfg2 {
655 ste,pins =
656 "GPIO157_A18", /* O7 */
657 "GPIO158_C18", /* O6 */
658 "GPIO159_B19", /* O5 */
659 "GPIO160_B20", /* O4 */
660 "GPIO165_C21", /* O3 */
661 "GPIO166_A22", /* O2 */
662 "GPIO167_B24", /* O1 */
663 "GPIO168_C22"; /* O0 */
664 ste,config = <&out_lo>;
665 };
666 };
667 ske_kpa2_sleep_mode: ske_kpa2_sleep {
668 sleep_cfg1 {
669 ste,pins =
670 "GPIO153_B17", /* I7 */
671 "GPIO154_C16", /* I6 */
672 "GPIO155_C19", /* I5 */
673 "GPIO156_C17", /* I4 */
674 "GPIO161_D21", /* I3 */
675 "GPIO162_D20", /* I2 */
676 "GPIO163_C20", /* I1 */
677 "GPIO164_B21"; /* I0 */
678 ste,config = <&slpm_in_pu_wkup_pdis_en>;
679 };
680 sleep_cfg2 {
681 ste,pins =
682 "GPIO157_A18", /* O7 */
683 "GPIO158_C18", /* O6 */
684 "GPIO159_B19", /* O5 */
685 "GPIO160_B20", /* O4 */
686 "GPIO165_C21", /* O3 */
687 "GPIO166_A22", /* O2 */
688 "GPIO167_B24", /* O1 */
689 "GPIO168_C22"; /* O0 */
690 ste,config = <&slpm_out_lo_pdis>;
691 };
692 };
693 /*
694 * SKE keys on position 1 and "other C1" combi giving
695 * six rows of six keys.
696 */
697 ske_kpaoc1_default_mode: ske_kpaoc1_default {
698 default_mux {
699 ste,function = "kp";
700 ste,pins = "kp_a_1", "kp_oc1_1";
701 };
702 default_cfg1 {
703 ste,pins =
704 "GPIO91_B6", /* KP_O0 */
705 "GPIO90_A3", /* KP_O1 */
706 "GPIO87_B3", /* KP_O2 */
707 "GPIO86_C6", /* KP_O3 */
708 "GPIO96_D8", /* KP_O6 */
709 "GPIO94_D7"; /* KP_O7 */
710 ste,config = <&out_lo>;
711 };
712 default_cfg2 {
713 ste,pins =
714 "GPIO93_B7", /* KP_I0 */
715 "GPIO92_D6", /* KP_I1 */
716 "GPIO89_E6", /* KP_I2 */
717 "GPIO88_C4", /* KP_I3 */
718 "GPIO97_D9", /* KP_I6 */
719 "GPIO95_E8"; /* KP_I7 */
720 ste,config = <&in_pu>;
721 };
722 };
723 };
724
725 wlan {
726 wlan_default_mode: wlan_default {
727 /*
728 * Activate this mode with the WLAN chip.
729 * These are plain GPIO pins used by WLAN
730 */
731 default_cfg1 {
732 ste,pins =
733 "GPIO226_AF8", /* WLAN_PMU_EN */
734 "GPIO85_D5"; /* WLAN_ENA */
735 ste,config = <&gpio_out_lo>;
736 };
737 default_cfg2 {
738 ste,pins = "GPIO4_AH6"; /* WLAN_IRQ on UART1 */
739 ste,config = <&gpio_in_pu>;
740 };
741 };
742 };
743 };
744 };
745};
diff --git a/arch/arm/boot/dts/ste-href-stuib.dtsi b/arch/arm/boot/dts/ste-href-stuib.dtsi
index 76704ec0ffcc..1c3574435ea8 100644
--- a/arch/arm/boot/dts/ste-href-stuib.dtsi
+++ b/arch/arm/boot/dts/ste-href-stuib.dtsi
@@ -12,6 +12,28 @@
12#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/interrupt-controller/irq.h>
13 13
14/ { 14/ {
15 gpio_keys {
16 compatible = "gpio-keys";
17 #address-cells = <1>;
18 #size-cells = <0>;
19 vdd-supply = <&ab8500_ldo_aux1_reg>;
20 pinctrl-names = "default";
21 pinctrl-0 = <&prox_stuib_mode>, <&hall_stuib_mode>;
22
23 button@139 {
24 /* Proximity sensor */
25 gpios = <&gpio6 25 0x4>;
26 linux,code = <11>; /* SW_FRONT_PROXIMITY */
27 label = "SFH7741 Proximity Sensor";
28 };
29 button@145 {
30 /* Hall sensor */
31 gpios = <&gpio4 17 0x4>;
32 linux,code = <0>; /* SW_LID */
33 label = "HED54XXU11 Hall Effect Sensor";
34 };
35 };
36
15 soc { 37 soc {
16 i2c@80004000 { 38 i2c@80004000 {
17 stmpe1601: stmpe1601@40 { 39 stmpe1601: stmpe1601@40 {
@@ -74,5 +96,24 @@
74 rohm,flip-y; 96 rohm,flip-y;
75 }; 97 };
76 }; 98 };
99
100 pinctrl {
101 prox {
102 prox_stuib_mode: prox_stuib {
103 stuib_cfg {
104 ste,pins = "GPIO217_AH12";
105 ste,config = <&gpio_in_pu>;
106 };
107 };
108 };
109 hall {
110 hall_stuib_mode: stuib_tvk {
111 stuib_cfg {
112 ste,pins = "GPIO145_C13";
113 ste,config = <&gpio_in_pu>;
114 };
115 };
116 };
117 };
77 }; 118 };
78}; 119};
diff --git a/arch/arm/boot/dts/ste-href-tvk1281618.dtsi b/arch/arm/boot/dts/ste-href-tvk1281618.dtsi
index 76d3ef13175f..c40565320978 100644
--- a/arch/arm/boot/dts/ste-href-tvk1281618.dtsi
+++ b/arch/arm/boot/dts/ste-href-tvk1281618.dtsi
@@ -14,27 +14,105 @@
14#include <dt-bindings/interrupt-controller/irq.h> 14#include <dt-bindings/interrupt-controller/irq.h>
15 15
16/ { 16/ {
17 gpio_keys {
18 compatible = "gpio-keys";
19 #address-cells = <1>;
20 #size-cells = <0>;
21 vdd-supply = <&ab8500_ldo_aux1_reg>;
22 pinctrl-names = "default";
23 pinctrl-0 = <&prox_tvk_mode>, <&hall_tvk_mode>;
24
25 button@139 {
26 /* Proximity sensor */
27 gpios = <&gpio6 25 0x4>;
28 linux,code = <11>; /* SW_FRONT_PROXIMITY */
29 label = "SFH7741 Proximity Sensor";
30 };
31 button@145 {
32 /* Hall sensor */
33 gpios = <&gpio4 17 0x4>;
34 linux,code = <0>; /* SW_LID */
35 label = "HED54XXU11 Hall Effect Sensor";
36 };
37 };
38
17 soc { 39 soc {
18 /* Add Synaptics touch screen, TC35892 keypad etc here */ 40 /* Add Synaptics touch screen, TC35893 keypad etc here */
19 i2c@80004000 { 41 i2c@80004000 {
20 tc3589x@44 { 42 tc35893@44 {
21 compatible = "tc3589x"; 43 compatible = "toshiba,tc35893";
22 reg = <0x44>; 44 reg = <0x44>;
23 interrupt-parent = <&gpio6>; 45 interrupt-parent = <&gpio6>;
24 interrupts = <26 IRQ_TYPE_EDGE_RISING>; 46 interrupts = <26 IRQ_TYPE_EDGE_RISING>;
47 pinctrl-names = "default";
48 pinctrl-0 = <&tc35893_tvk_mode>;
25 49
26 interrupt-controller; 50 interrupt-controller;
27 #interrupt-cells = <2>; 51 #interrupt-cells = <1>;
28 52
29 tc3589x_gpio { 53 tc3589x_gpio {
30 compatible = "tc3589x-gpio"; 54 compatible = "toshiba,tc3589x-gpio";
31 interrupts = <0 IRQ_TYPE_EDGE_RISING>; 55 interrupts = <0>;
32 56
33 interrupt-controller; 57 interrupt-controller;
34 #interrupt-cells = <2>; 58 #interrupt-cells = <2>;
35 gpio-controller; 59 gpio-controller;
36 #gpio-cells = <2>; 60 #gpio-cells = <2>;
37 }; 61 };
62 tc3589x_keypad {
63 compatible = "toshiba,tc3589x-keypad";
64 interrupts = <6>;
65 debounce-delay-ms = <4>;
66 keypad,num-columns = <8>;
67 keypad,num-rows = <8>;
68 linux,no-autorepeat;
69 linux,wakeup;
70 linux,keymap = <0x0301006b
71 0x04010066
72 0x06040072
73 0x040200d7
74 0x0303006a
75 0x0205000e
76 0x0607008b
77 0x0500001c
78 0x0403000b
79 0x03040034
80 0x05020067
81 0x0305006c
82 0x040500e7
83 0x0005009e
84 0x06020073
85 0x01030039
86 0x07060069
87 0x050500d9>;
88 };
89 };
90 };
91 pinctrl {
92 /* Pull up this GPIO pin */
93 tc35893 {
94 tc35893_tvk_mode: tc35893_tvk {
95 tvk_cfg {
96 ste,pins = "GPIO218_AH11";
97 ste,config = <&gpio_in_pu>;
98 };
99 };
100 };
101 prox {
102 prox_tvk_mode: prox_tvk {
103 tvk_cfg {
104 ste,pins = "GPIO217_AH12";
105 ste,config = <&gpio_in_pu>;
106 };
107 };
108 };
109 hall {
110 hall_tvk_mode: hall_tvk {
111 tvk_cfg {
112 ste,pins = "GPIO145_C13";
113 ste,config = <&gpio_in_pu>;
114 };
115 };
38 }; 116 };
39 }; 117 };
40 }; 118 };
diff --git a/arch/arm/boot/dts/ste-href.dtsi b/arch/arm/boot/dts/ste-href.dtsi
index aa3f02060fdd..0c1e8d871ed1 100644
--- a/arch/arm/boot/dts/ste-href.dtsi
+++ b/arch/arm/boot/dts/ste-href.dtsi
@@ -11,37 +11,57 @@
11 11
12#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/interrupt-controller/irq.h>
13#include "ste-dbx5x0.dtsi" 13#include "ste-dbx5x0.dtsi"
14#include "ste-href-family-pinctrl.dtsi"
14 15
15/ { 16/ {
16 memory { 17 memory {
17 reg = <0x00000000 0x20000000>; 18 reg = <0x00000000 0x20000000>;
18 }; 19 };
19 20
20 gpio_keys { 21 soc {
21 compatible = "gpio-keys"; 22 usb_per5@a03e0000 {
22 #address-cells = <1>; 23 pinctrl-names = "default", "sleep";
23 #size-cells = <0>; 24 pinctrl-0 = <&musb_default_mode>;
24 25 pinctrl-1 = <&musb_sleep_mode>;
25 button@1 {
26 linux,code = <11>;
27 label = "SFH7741 Proximity Sensor";
28 }; 26 };
29 };
30 27
31 soc {
32 uart@80120000 { 28 uart@80120000 {
29 pinctrl-names = "default", "sleep";
30 pinctrl-0 = <&uart0_default_mode>;
31 pinctrl-1 = <&uart0_sleep_mode>;
33 status = "okay"; 32 status = "okay";
34 }; 33 };
35 34
36 uart@80121000 { 35 uart@80121000 {
36 pinctrl-names = "default", "sleep";
37 pinctrl-0 = <&uart1_default_mode>;
38 pinctrl-1 = <&uart1_sleep_mode>;
37 status = "okay"; 39 status = "okay";
38 }; 40 };
39 41
40 uart@80007000 { 42 uart@80007000 {
43 pinctrl-names = "default", "sleep";
44 pinctrl-0 = <&uart2_default_mode>;
45 pinctrl-1 = <&uart2_sleep_mode>;
41 status = "okay"; 46 status = "okay";
42 }; 47 };
43 48
49 i2c@80004000 {
50 pinctrl-names = "default","sleep";
51 pinctrl-0 = <&i2c0_default_mode>;
52 pinctrl-1 = <&i2c0_sleep_mode>;
53 };
54
55 i2c@80122000 {
56 pinctrl-names = "default","sleep";
57 pinctrl-0 = <&i2c1_default_mode>;
58 pinctrl-1 = <&i2c1_sleep_mode>;
59 };
60
44 i2c@80128000 { 61 i2c@80128000 {
62 pinctrl-names = "default","sleep";
63 pinctrl-0 = <&i2c2_default_mode>;
64 pinctrl-1 = <&i2c2_sleep_mode>;
45 lp5521@33 { 65 lp5521@33 {
46 compatible = "national,lp5521"; 66 compatible = "national,lp5521";
47 reg = <0x33>; 67 reg = <0x33>;
@@ -85,6 +105,12 @@
85 }; 105 };
86 }; 106 };
87 107
108 i2c@80110000 {
109 pinctrl-names = "default","sleep";
110 pinctrl-0 = <&i2c3_default_mode>;
111 pinctrl-1 = <&i2c3_sleep_mode>;
112 };
113
88 // External Micro SD slot 114 // External Micro SD slot
89 sdi0_per1@80126000 { 115 sdi0_per1@80126000 {
90 arm,primecell-periphid = <0x10480180>; 116 arm,primecell-periphid = <0x10480180>;
@@ -94,8 +120,9 @@
94 mmc-cap-mmc-highspeed; 120 mmc-cap-mmc-highspeed;
95 vmmc-supply = <&ab8500_ldo_aux3_reg>; 121 vmmc-supply = <&ab8500_ldo_aux3_reg>;
96 vqmmc-supply = <&vmmci>; 122 vqmmc-supply = <&vmmci>;
97 123 pinctrl-names = "default", "sleep";
98 cd-gpios = <&tc3589x_gpio 3 0x4>; 124 pinctrl-0 = <&sdi0_default_mode>;
125 pinctrl-1 = <&sdi0_sleep_mode>;
99 126
100 status = "okay"; 127 status = "okay";
101 }; 128 };
@@ -105,6 +132,9 @@
105 arm,primecell-periphid = <0x10480180>; 132 arm,primecell-periphid = <0x10480180>;
106 max-frequency = <100000000>; 133 max-frequency = <100000000>;
107 bus-width = <4>; 134 bus-width = <4>;
135 pinctrl-names = "default", "sleep";
136 pinctrl-0 = <&sdi1_default_mode>;
137 pinctrl-1 = <&sdi1_sleep_mode>;
108 138
109 status = "okay"; 139 status = "okay";
110 }; 140 };
@@ -115,6 +145,9 @@
115 max-frequency = <100000000>; 145 max-frequency = <100000000>;
116 bus-width = <8>; 146 bus-width = <8>;
117 mmc-cap-mmc-highspeed; 147 mmc-cap-mmc-highspeed;
148 pinctrl-names = "default", "sleep";
149 pinctrl-0 = <&sdi2_default_mode>;
150 pinctrl-1 = <&sdi2_sleep_mode>;
118 151
119 status = "okay"; 152 status = "okay";
120 }; 153 };
@@ -126,6 +159,9 @@
126 bus-width = <8>; 159 bus-width = <8>;
127 mmc-cap-mmc-highspeed; 160 mmc-cap-mmc-highspeed;
128 vmmc-supply = <&ab8500_ldo_aux2_reg>; 161 vmmc-supply = <&ab8500_ldo_aux2_reg>;
162 pinctrl-names = "default", "sleep";
163 pinctrl-0 = <&sdi4_default_mode>;
164 pinctrl-1 = <&sdi4_sleep_mode>;
129 165
130 status = "okay"; 166 status = "okay";
131 }; 167 };
@@ -137,7 +173,21 @@
137 stericsson,audio-codec = <&codec>; 173 stericsson,audio-codec = <&codec>;
138 }; 174 };
139 175
176 msp0: msp@80123000 {
177 pinctrl-names = "default";
178 pinctrl-0 = <&msp0_default_mode>;
179 status = "okay";
180 };
181
140 msp1: msp@80124000 { 182 msp1: msp@80124000 {
183 pinctrl-names = "default";
184 pinctrl-0 = <&msp1_default_mode>;
185 status = "okay";
186 };
187
188 msp2: msp@80117000 {
189 pinctrl-names = "default";
190 pinctrl-0 = <&msp2_default_mode>;
141 status = "okay"; 191 status = "okay";
142 }; 192 };
143 193
@@ -198,5 +248,11 @@
198 }; 248 };
199 }; 249 };
200 }; 250 };
251
252 mcde@a0350000 {
253 pinctrl-names = "default", "sleep";
254 pinctrl-0 = <&lcd_default_mode>;
255 pinctrl-1 = <&lcd_sleep_mode>;
256 };
201 }; 257 };
202}; 258};
diff --git a/arch/arm/boot/dts/ste-hrefprev60.dtsi b/arch/arm/boot/dts/ste-hrefprev60.dtsi
index b2cd7bc2752f..40f0ecdf9303 100644
--- a/arch/arm/boot/dts/ste-hrefprev60.dtsi
+++ b/arch/arm/boot/dts/ste-hrefprev60.dtsi
@@ -28,18 +28,20 @@
28 reg = <0x33>; 28 reg = <0x33>;
29 }; 29 };
30 30
31 tc3589x@42 { 31 tc35892@42 {
32 compatible = "tc3589x"; 32 compatible = "toshiba,tc35892";
33 reg = <0x42>; 33 reg = <0x42>;
34 interrupt-parent = <&gpio6>; 34 interrupt-parent = <&gpio6>;
35 interrupts = <25 IRQ_TYPE_EDGE_RISING>; 35 interrupts = <25 IRQ_TYPE_EDGE_RISING>;
36 pinctrl-names = "default";
37 pinctrl-0 = <&tc35892_hrefprev60_mode>;
36 38
37 interrupt-controller; 39 interrupt-controller;
38 #interrupt-cells = <2>; 40 #interrupt-cells = <1>;
39 41
40 tc3589x_gpio: tc3589x_gpio { 42 tc3589x_gpio: tc3589x_gpio {
41 compatible = "tc3589x-gpio"; 43 compatible = "tc3589x-gpio";
42 interrupts = <0 IRQ_TYPE_EDGE_RISING>; 44 interrupts = <0>;
43 45
44 interrupt-controller; 46 interrupt-controller;
45 #interrupt-cells = <2>; 47 #interrupt-cells = <2>;
@@ -49,11 +51,77 @@
49 }; 51 };
50 }; 52 };
51 53
54 ssp@80002000 {
55 /*
56 * On the first generation boards, this SSP/SPI port was connected
57 * to the AB8500.
58 */
59 pinctrl-names = "default";
60 pinctrl-0 = <&ssp0_hrefprev60_mode>;
61 };
62
63 // External Micro SD slot
64 sdi0_per1@80126000 {
65 cd-gpios = <&tc3589x_gpio 3 0x4>;
66 };
67
52 vmmci: regulator-gpio { 68 vmmci: regulator-gpio {
53 gpios = <&tc3589x_gpio 18 0x4>; 69 gpios = <&tc3589x_gpio 18 0x4>;
54 enable-gpio = <&tc3589x_gpio 17 0x4>; 70 enable-gpio = <&tc3589x_gpio 17 0x4>;
71 };
72
73 pinctrl {
74 /* Set this up using hogs */
75 pinctrl-names = "default";
76 pinctrl-0 = <&ipgpio_hrefprev60_mode>;
55 77
56 status = "okay"; 78 ssp0 {
79 ssp0_hrefprev60_mode: ssp0_hrefprev60_default {
80 hrefprev60_mux {
81 ste,function = "ssp0";
82 ste,pins = "ssp0_a_1";
83 };
84 hrefprev60_cfg1 {
85 ste,pins = "GPIO145_C13"; /* RXD */
86 ste,config = <&in_pd>;
87 };
88
89 };
90 };
91 sdi0 {
92 /* This additional pin needed on early MOP500 and HREFs previous to v60 */
93 sdi0_default_mode: sdi0_default {
94 hrefprev60_mux {
95 ste,function = "mc0";
96 ste,pins = "mc0dat31dir_a_1";
97 };
98 hrefprev60_cfg1 {
99 ste,pins = "GPIO21_AB3"; /* DAT31DIR */
100 ste,config = <&out_hi>;
101 };
102
103 };
104 };
105 tc35892 {
106 tc35892_hrefprev60_mode: tc35892_hrefprev60 {
107 hrefprev60_cfg {
108 ste,pins = "GPIO217_AH12";
109 ste,config = <&gpio_in_pu>;
110 };
111 };
112 };
113 ipgpio {
114 ipgpio_hrefprev60_mode: ipgpio_hrefprev60 {
115 hrefprev60_mux {
116 ste,function = "ipgpio";
117 ste,pins = "ipgpio0_c_1", "ipgpio1_c_1";
118 };
119 hrefprev60_cfg1 {
120 ste,pins = "GPIO6_AF6", "GPIO7_AG5";
121 ste,config = <&in_pu>;
122 };
123 };
124 };
57 }; 125 };
58 }; 126 };
59}; 127};
diff --git a/arch/arm/boot/dts/ste-hrefv60plus.dtsi b/arch/arm/boot/dts/ste-hrefv60plus.dtsi
index aed511b47a9e..3b6d1181939b 100644
--- a/arch/arm/boot/dts/ste-hrefv60plus.dtsi
+++ b/arch/arm/boot/dts/ste-hrefv60plus.dtsi
@@ -16,55 +16,226 @@
16 model = "ST-Ericsson HREF (v60+) platform with Device Tree"; 16 model = "ST-Ericsson HREF (v60+) platform with Device Tree";
17 compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500"; 17 compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
18 18
19 gpio_keys {
20 button@1 {
21 gpios = <&gpio5 25 0x4>;
22 };
23 };
24
25 soc { 19 soc {
26 // External Micro SD slot 20 // External Micro SD slot
27 sdi0_per1@80126000 { 21 sdi0_per1@80126000 {
28 arm,primecell-periphid = <0x10480180>;
29 max-frequency = <100000000>;
30 bus-width = <4>;
31 mmc-cap-sd-highspeed;
32 mmc-cap-mmc-highspeed;
33 vmmc-supply = <&ab8500_ldo_aux3_reg>;
34
35 cd-gpios = <&gpio2 31 0x4>; // 95 22 cd-gpios = <&gpio2 31 0x4>; // 95
36
37 status = "okay";
38 }; 23 };
39 24
40 // WLAN SDIO channel 25 vmmci: regulator-gpio {
41 sdi1_per2@80118000 { 26 gpios = <&gpio0 5 0x4>;
42 arm,primecell-periphid = <0x10480180>; 27 enable-gpio = <&gpio5 9 0x4>;
43 max-frequency = <100000000>;
44 bus-width = <4>;
45
46 status = "okay";
47 };
48
49 // PoP:ed eMMC
50 sdi2_per3@80005000 {
51 arm,primecell-periphid = <0x10480180>;
52 max-frequency = <100000000>;
53 bus-width = <8>;
54 mmc-cap-mmc-highspeed;
55
56 status = "okay";
57 }; 28 };
58 29
59 // On-board eMMC 30 pinctrl {
60 sdi4_per2@80114000 { 31 /*
61 arm,primecell-periphid = <0x10480180>; 32 * Set this up using hogs, as time goes by and as seems fit, these
62 max-frequency = <100000000>; 33 * can be moved over to being controlled by respective device.
63 bus-width = <8>; 34 */
64 mmc-cap-mmc-highspeed; 35 pinctrl-names = "default";
65 vmmc-supply = <&ab8500_ldo_aux2_reg>; 36 pinctrl-0 = <&ipgpio_hrefv60_mode>,
37 <&accel_hrefv60_mode>,
38 <&magneto_hrefv60_mode>,
39 <&etm_hrefv60_mode>,
40 <&nahj_hrefv60_mode>,
41 <&nfc_hrefv60_mode>,
42 <&force_hrefv60_mode>,
43 <&dipro_hrefv60_mode>,
44 <&vaudio_hf_hrefv60_mode>,
45 <&gbf_hrefv60_mode>,
46 <&hdtv_hrefv60_mode>,
47 <&touch_hrefv60_mode>;
66 48
67 status = "okay"; 49 sdi0 {
50 /* SD card detect GPIO pin, extend default state */
51 sdi0_default_mode: sdi0_default {
52 default_hrefv60_cfg1 {
53 ste,pins = "GPIO95_E8";
54 ste,config = <&gpio_in_pu>;
55 };
56 };
57 };
58 ipgpio {
59 /*
60 * XENON Flashgun on image processor GPIO (controlled from image
61 * processor firmware), mux in these image processor GPIO lines 0
62 * (XENON_FLASH_ID), 1 (XENON_READY) and there is an assistant
63 * LED on IP GPIO 4 (XENON_EN2) on altfunction C, that need bias
64 * from GPIO21 so pull up 0, 1 and drive 4 and GPIO21 low as output.
65 */
66 ipgpio_hrefv60_mode: ipgpio_hrefv60 {
67 hrefv60_mux {
68 ste,function = "ipgpio";
69 ste,pins = "ipgpio0_c_1", "ipgpio1_c_1", "ipgpio4_c_1";
70 };
71 hrefv60_cfg1 {
72 ste,pins = "GPIO6_AF6", "GPIO7_AG5";
73 ste,config = <&in_pu>;
74 };
75 hrefv60_cfg2 {
76 ste,pins = "GPIO21_AB3";
77 ste,config = <&gpio_out_lo>;
78 };
79 hrefv60_cfg3 {
80 ste,pins = "GPIO64_F3";
81 ste,config = <&out_lo>;
82 };
83 };
84 };
85 accelerometer {
86 accel_hrefv60_mode: accel_hrefv60 {
87 /* Accelerometer interrupt lines 1 & 2 */
88 hrefv60_cfg1 {
89 ste,pins = "GPIO82_C1", "GPIO83_D3";
90 ste,config = <&gpio_in_pu>;
91 };
92 };
93 };
94 magnetometer {
95 magneto_hrefv60_mode: magneto_hrefv60 {
96 /* Magnetometer uses GPIO 31 and 32, pull these up/down respectively */
97 hrefv60_cfg1 {
98 ste,pins = "GPIO31_V3";
99 ste,config = <&gpio_in_pu>;
100 };
101 hrefv60_cfg2 {
102 ste,pins = "GPIO32_V2";
103 ste,config = <&gpio_in_pd>;
104 };
105 };
106 };
107 etm {
108 /*
109 * Drive D19-D23 for the ETM PTM trace interface low,
110 * (presumably pins are unconnected therefore grounded here,
111 * the "other alt C1" setting enables these pins)
112 */
113 etm_hrefv60_mode: etm_hrefv60 {
114 hrefv60_cfg1 {
115 ste,pins =
116 "GPIO70_G5",
117 "GPIO71_G4",
118 "GPIO72_H4",
119 "GPIO73_H3",
120 "GPIO74_J3";
121 ste,config = <&gpio_out_lo>;
122 };
123 };
124 };
125 nahj {
126 nahj_hrefv60_mode: nahj_hrefv60 {
127 /* NAHJ CTRL on GPIO76 to low, CTRL_INV on GPIO216 to high */
128 hrefv60_cfg1 {
129 ste,pins = "GPIO76_J2";
130 ste,config = <&gpio_out_lo>;
131 };
132 hrefv60_cfg2 {
133 ste,pins = "GPIO216_AG12";
134 ste,config = <&gpio_out_hi>;
135 };
136 };
137 };
138 nfc {
139 nfc_hrefv60_mode: nfc_hrefv60 {
140 /* NFC ENA and RESET to low, pulldown IRQ line */
141 hrefv60_cfg1 {
142 ste,pins =
143 "GPIO77_H1", /* NFC_ENA */
144 "GPIO142_C11"; /* NFC_RESET */
145 ste,config = <&gpio_out_lo>;
146 };
147 hrefv60_cfg2 {
148 ste,pins = "GPIO144_B13"; /* NFC_IRQ */
149 ste,config = <&gpio_in_pd>;
150 };
151 };
152 };
153 force {
154 force_hrefv60_mode: force_hrefv60 {
155 hrefv60_cfg1 {
156 ste,pins = "GPIO91_B6"; /* FORCE_SENSING_INT */
157 ste,config = <&gpio_in_pu>;
158 };
159 hrefv60_cfg2 {
160 ste,pins =
161 "GPIO92_D6", /* FORCE_SENSING_RST */
162 "GPIO97_D9"; /* FORCE_SENSING_WU */
163 ste,config = <&gpio_out_lo>;
164 };
165 };
166 };
167 dipro {
168 dipro_hrefv60_mode: dipro_hrefv60 {
169 hrefv60_cfg1 {
170 ste,pins = "GPIO139_C9"; /* DIPRO_INT */
171 ste,config = <&gpio_in_pu>;
172 };
173 };
174 };
175 vaudio_hf {
176 vaudio_hf_hrefv60_mode: vaudio_hf_hrefv60 {
177 /* Audio Amplifier HF enable GPIO */
178 hrefv60_cfg1 {
179 ste,pins = "GPIO149_B14"; /* VAUDIO_HF_EN, enable MAX8968 */
180 ste,config = <&gpio_out_hi>;
181 };
182 };
183 };
184 gbf {
185 gbf_hrefv60_mode: gbf_hrefv60 {
186 /*
187 * GBF (GPS, Bluetooth, FM-radio) interface,
188 * pull low to reset state
189 */
190 hrefv60_cfg1 {
191 ste,pins = "GPIO171_D23"; /* GBF_ENA_RESET */
192 ste,config = <&gpio_out_lo>;
193 };
194 };
195 };
196 hdtv {
197 hdtv_hrefv60_mode: hdtv_hrefv60 {
198 /* MSP : HDTV INTERFACE GPIO line */
199 hrefv60_cfg1 {
200 ste,pins = "GPIO192_AJ27";
201 ste,config = <&gpio_in_pd>;
202 };
203 };
204 };
205 touch {
206 touch_hrefv60_mode: touch_hrefv60 {
207 /*
208 * Touch screen uses GPIO 143 for RST1, GPIO 146 for RST2 and
209 * GPIO 67 for interrupts. Pull-up the IRQ line and drive both
210 * reset signals low.
211 */
212 hrefv60_cfg1 {
213 ste,pins = "GPIO143_D12", "GPIO146_D13";
214 ste,config = <&gpio_out_lo>;
215 };
216 hrefv60_cfg2 {
217 ste,pins = "GPIO67_G2";
218 ste,config = <&gpio_in_pu>;
219 };
220 };
221 };
222 mcde {
223 lcd_hrefv60_mode: lcd_hrefv60 {
224 /*
225 * Display Interface 1 uses GPIO 65 for RST (reset).
226 * Display Interface 2 uses GPIO 66 for RST (reset).
227 * Drive DISP1 reset high (not reset), driver DISP2 reset low (reset)
228 */
229 hrefv60_cfg1 {
230 ste,pins ="GPIO65_F1";
231 ste,config = <&gpio_out_hi>;
232 };
233 hrefv60_cfg2 {
234 ste,pins ="GPIO66_G3";
235 ste,config = <&gpio_out_lo>;
236 };
237 };
238 };
68 }; 239 };
69 }; 240 };
70}; 241};
diff --git a/arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi b/arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi
index efddee9403c4..e6f22b266420 100644
--- a/arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi
+++ b/arch/arm/boot/dts/ste-nomadik-pinctrl.dtsi
@@ -31,17 +31,57 @@
31 ste,output = <OUTPUT_LOW>; 31 ste,output = <OUTPUT_LOW>;
32 }; 32 };
33 33
34 gpio_in_pu: gpio_input_pull_up {
35 ste,gpio = <GPIOMODE_ENABLED>;
36 ste,input = <INPUT_PULLUP>;
37 };
38
39 gpio_in_pd: gpio_input_pull_down {
40 ste,gpio = <GPIOMODE_ENABLED>;
41 ste,input = <INPUT_PULLDOWN>;
42 };
43
34 gpio_out_lo: gpio_output_low { 44 gpio_out_lo: gpio_output_low {
35 ste,gpio = <GPIOMODE_ENABLED>; 45 ste,gpio = <GPIOMODE_ENABLED>;
36 ste,output = <OUTPUT_LOW>; 46 ste,output = <OUTPUT_LOW>;
37 }; 47 };
38 48
49 gpio_out_hi: gpio_output_high {
50 ste,gpio = <GPIOMODE_ENABLED>;
51 ste,output = <OUTPUT_HIGH>;
52 };
53
54 slpm_pdis: slpm_pdis {
55 ste,sleep = <SLPM_ENABLED>;
56 ste,sleep-wakeup = <SLPM_WAKEUP_DISABLE>;
57 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
58 };
59
60 slpm_wkup_pdis: slpm_wkup_pdis {
61 ste,sleep = <SLPM_ENABLED>;
62 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
63 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
64 };
65
66 slpm_wkup_pdis_en: slpm_wkup_pdis_en {
67 ste,sleep = <SLPM_ENABLED>;
68 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
69 ste,sleep-pull-disable = <SLPM_PDIS_ENABLED>;
70 };
71
39 slpm_in_pu: slpm_in_pu { 72 slpm_in_pu: slpm_in_pu {
40 ste,sleep = <SLPM_ENABLED>; 73 ste,sleep = <SLPM_ENABLED>;
41 ste,sleep-input = <SLPM_INPUT_PULLUP>; 74 ste,sleep-input = <SLPM_INPUT_PULLUP>;
42 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>; 75 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
43 }; 76 };
44 77
78 slpm_in_pdis: slpm_in_pdis {
79 ste,sleep = <SLPM_ENABLED>;
80 ste,sleep-input = <SLPM_DIR_INPUT>;
81 ste,sleep-wakeup = <SLPM_WAKEUP_DISABLE>;
82 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
83 };
84
45 slpm_in_wkup_pdis: slpm_in_wkup_pdis { 85 slpm_in_wkup_pdis: slpm_in_wkup_pdis {
46 ste,sleep = <SLPM_ENABLED>; 86 ste,sleep = <SLPM_ENABLED>;
47 ste,sleep-input = <SLPM_DIR_INPUT>; 87 ste,sleep-input = <SLPM_DIR_INPUT>;
@@ -49,6 +89,20 @@
49 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>; 89 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
50 }; 90 };
51 91
92 slpm_in_wkup_pdis_en: slpm_in_wkup_pdis_en {
93 ste,sleep = <SLPM_ENABLED>;
94 ste,sleep-input = <SLPM_DIR_INPUT>;
95 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
96 ste,sleep-pull-disable = <SLPM_PDIS_ENABLED>;
97 };
98
99 slpm_in_pu_wkup_pdis_en: slpm_in_wkup_pdis_en {
100 ste,sleep = <SLPM_ENABLED>;
101 ste,sleep-input = <SLPM_INPUT_PULLUP>;
102 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
103 ste,sleep-pull-disable = <SLPM_PDIS_ENABLED>;
104 };
105
52 slpm_out_lo: slpm_out_lo { 106 slpm_out_lo: slpm_out_lo {
53 ste,sleep = <SLPM_ENABLED>; 107 ste,sleep = <SLPM_ENABLED>;
54 ste,sleep-output = <SLPM_OUTPUT_LOW>; 108 ste,sleep-output = <SLPM_OUTPUT_LOW>;
@@ -68,6 +122,20 @@
68 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>; 122 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
69 }; 123 };
70 124
125 slpm_out_lo_pdis: slpm_out_lo_pdis {
126 ste,sleep = <SLPM_ENABLED>;
127 ste,sleep-output = <SLPM_OUTPUT_LOW>;
128 ste,sleep-wakeup = <SLPM_WAKEUP_DISABLE>;
129 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
130 };
131
132 slpm_out_lo_wkup_pdis: slpm_out_lo_wkup_pdis {
133 ste,sleep = <SLPM_ENABLED>;
134 ste,sleep-output = <SLPM_OUTPUT_LOW>;
135 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
136 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
137 };
138
71 slpm_out_wkup_pdis: slpm_out_wkup_pdis { 139 slpm_out_wkup_pdis: slpm_out_wkup_pdis {
72 ste,sleep = <SLPM_ENABLED>; 140 ste,sleep = <SLPM_ENABLED>;
73 ste,sleep-output = <SLPM_DIR_OUTPUT>; 141 ste,sleep-output = <SLPM_DIR_OUTPUT>;
@@ -81,6 +149,18 @@
81 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>; 149 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
82 }; 150 };
83 151
152 in_wkup_pdis_en: in_wkup_pdis_en {
153 ste,sleep-input = <SLPM_DIR_INPUT>;
154 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
155 ste,sleep-pull-disable = <SLPM_PDIS_ENABLED>;
156 };
157
158 out_lo_wkup_pdis: out_lo_wkup_pdis {
159 ste,sleep-output = <SLPM_OUTPUT_LOW>;
160 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
161 ste,sleep-pull-disable = <SLPM_PDIS_DISABLED>;
162 };
163
84 out_hi_wkup_pdis: out_hi_wkup_pdis { 164 out_hi_wkup_pdis: out_hi_wkup_pdis {
85 ste,sleep-output = <SLPM_OUTPUT_HIGH>; 165 ste,sleep-output = <SLPM_OUTPUT_HIGH>;
86 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>; 166 ste,sleep-wakeup = <SLPM_WAKEUP_ENABLE>;
diff --git a/arch/arm/boot/dts/ste-nomadik-s8815.dts b/arch/arm/boot/dts/ste-nomadik-s8815.dts
index 16c3888b7b15..f557feb997f4 100644
--- a/arch/arm/boot/dts/ste-nomadik-s8815.dts
+++ b/arch/arm/boot/dts/ste-nomadik-s8815.dts
@@ -67,10 +67,6 @@
67 67
68 /* Custom board node with GPIO pins to active etc */ 68 /* Custom board node with GPIO pins to active etc */
69 usb-s8815 { 69 usb-s8815 {
70 /* The S8815 is using this very GPIO pin for the SMSC91x IRQs */
71 ethernet-gpio {
72 gpios = <&gpio3 8 0x1>;
73 };
74 /* This will bias the MMC/SD card detect line */ 70 /* This will bias the MMC/SD card detect line */
75 mmcsd-gpio { 71 mmcsd-gpio {
76 gpios = <&gpio3 16 0x1>; 72 gpios = <&gpio3 16 0x1>;
diff --git a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
index 79425e3836ce..5acc0449676a 100644
--- a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
+++ b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
@@ -769,14 +769,14 @@
769 #size-cells = <1>; 769 #size-cells = <1>;
770 ranges; 770 ranges;
771 771
772 vica: intc@0x10140000 { 772 vica: intc@10140000 {
773 compatible = "arm,versatile-vic"; 773 compatible = "arm,versatile-vic";
774 interrupt-controller; 774 interrupt-controller;
775 #interrupt-cells = <1>; 775 #interrupt-cells = <1>;
776 reg = <0x10140000 0x20>; 776 reg = <0x10140000 0x20>;
777 }; 777 };
778 778
779 vicb: intc@0x10140020 { 779 vicb: intc@10140020 {
780 compatible = "arm,versatile-vic"; 780 compatible = "arm,versatile-vic";
781 interrupt-controller; 781 interrupt-controller;
782 #interrupt-cells = <1>; 782 #interrupt-cells = <1>;
diff --git a/arch/arm/boot/dts/ste-snowball.dts b/arch/arm/boot/dts/ste-snowball.dts
index f0b39f835914..97d5d21b7db7 100644
--- a/arch/arm/boot/dts/ste-snowball.dts
+++ b/arch/arm/boot/dts/ste-snowball.dts
@@ -11,6 +11,7 @@
11 11
12/dts-v1/; 12/dts-v1/;
13#include "ste-dbx5x0.dtsi" 13#include "ste-dbx5x0.dtsi"
14#include "ste-href-family-pinctrl.dtsi"
14 15
15/ { 16/ {
16 model = "Calao Systems Snowball platform with device tree"; 17 model = "Calao Systems Snowball platform with device tree";
@@ -75,6 +76,8 @@
75 76
76 leds { 77 leds {
77 compatible = "gpio-leds"; 78 compatible = "gpio-leds";
79 pinctrl-names = "default";
80 pinctrl-0 = <&gpioled_snowball_mode>;
78 used-led { 81 used-led {
79 label = "user_led"; 82 label = "user_led";
80 gpios = <&gpio4 14 0x4>; 83 gpios = <&gpio4 14 0x4>;
@@ -84,6 +87,11 @@
84 }; 87 };
85 88
86 soc { 89 soc {
90 usb_per5@a03e0000 {
91 pinctrl-names = "default", "sleep";
92 pinctrl-0 = <&musb_default_mode>;
93 pinctrl-1 = <&musb_sleep_mode>;
94 };
87 95
88 sound { 96 sound {
89 compatible = "stericsson,snd-soc-mop500"; 97 compatible = "stericsson,snd-soc-mop500";
@@ -92,7 +100,21 @@
92 stericsson,audio-codec = <&codec>; 100 stericsson,audio-codec = <&codec>;
93 }; 101 };
94 102
103 msp0: msp@80123000 {
104 pinctrl-names = "default";
105 pinctrl-0 = <&msp0_default_mode>;
106 status = "okay";
107 };
108
95 msp1: msp@80124000 { 109 msp1: msp@80124000 {
110 pinctrl-names = "default";
111 pinctrl-0 = <&msp1_default_mode>;
112 status = "okay";
113 };
114
115 msp2: msp@80117000 {
116 pinctrl-names = "default";
117 pinctrl-0 = <&msp2_default_mode>;
96 status = "okay"; 118 status = "okay";
97 }; 119 };
98 120
@@ -110,6 +132,8 @@
110 interrupt-parent = <&gpio4>; 132 interrupt-parent = <&gpio4>;
111 vdd33a-supply = <&en_3v3_reg>; 133 vdd33a-supply = <&en_3v3_reg>;
112 vddvario-supply = <&db8500_vape_reg>; 134 vddvario-supply = <&db8500_vape_reg>;
135 pinctrl-names = "default";
136 pinctrl-0 = <&eth_snowball_mode>;
113 137
114 reg-shift = <1>; 138 reg-shift = <1>;
115 reg-io-width = <2>; 139 reg-io-width = <2>;
@@ -122,10 +146,8 @@
122 }; 146 };
123 147
124 vmmci: regulator-gpio { 148 vmmci: regulator-gpio {
125 gpios = <&gpio6 25 0x4>; 149 gpios = <&gpio7 4 0x4>;
126 enable-gpio = <&gpio7 4 0x4>; 150 enable-gpio = <&gpio6 25 0x4>;
127
128 status = "okay";
129 }; 151 };
130 152
131 // External Micro SD slot 153 // External Micro SD slot
@@ -136,6 +158,9 @@
136 mmc-cap-mmc-highspeed; 158 mmc-cap-mmc-highspeed;
137 vmmc-supply = <&ab8500_ldo_aux3_reg>; 159 vmmc-supply = <&ab8500_ldo_aux3_reg>;
138 vqmmc-supply = <&vmmci>; 160 vqmmc-supply = <&vmmci>;
161 pinctrl-names = "default", "sleep";
162 pinctrl-0 = <&sdi0_default_mode>;
163 pinctrl-1 = <&sdi0_sleep_mode>;
139 164
140 cd-gpios = <&gpio6 26 0x4>; // 218 165 cd-gpios = <&gpio6 26 0x4>; // 218
141 cd-inverted; 166 cd-inverted;
@@ -143,6 +168,27 @@
143 status = "okay"; 168 status = "okay";
144 }; 169 };
145 170
171 // WLAN SDIO channel
172 sdi1_per2@80118000 {
173 arm,primecell-periphid = <0x10480180>;
174 max-frequency = <100000000>;
175 bus-width = <4>;
176 pinctrl-names = "default", "sleep";
177 pinctrl-0 = <&sdi1_default_mode>;
178 pinctrl-1 = <&sdi1_sleep_mode>;
179
180 status = "okay";
181 };
182
183 // Unused PoP eMMC - register and put it to sleep by default */
184 sdi2_per3@80005000 {
185 arm,primecell-periphid = <0x10480180>;
186 pinctrl-names = "default";
187 pinctrl-0 = <&sdi2_sleep_mode>;
188
189 status = "okay";
190 };
191
146 // On-board eMMC 192 // On-board eMMC
147 sdi4_per2@80114000 { 193 sdi4_per2@80114000 {
148 arm,primecell-periphid = <0x10480180>; 194 arm,primecell-periphid = <0x10480180>;
@@ -150,22 +196,63 @@
150 bus-width = <8>; 196 bus-width = <8>;
151 mmc-cap-mmc-highspeed; 197 mmc-cap-mmc-highspeed;
152 vmmc-supply = <&ab8500_ldo_aux2_reg>; 198 vmmc-supply = <&ab8500_ldo_aux2_reg>;
199 pinctrl-names = "default", "sleep";
200 pinctrl-0 = <&sdi4_default_mode>;
201 pinctrl-1 = <&sdi4_sleep_mode>;
153 202
154 status = "okay"; 203 status = "okay";
155 }; 204 };
156 205
157 uart@80120000 { 206 uart@80120000 {
207 pinctrl-names = "default", "sleep";
208 pinctrl-0 = <&uart0_default_mode>;
209 pinctrl-1 = <&uart0_sleep_mode>;
158 status = "okay"; 210 status = "okay";
159 }; 211 };
160 212
161 uart@80121000 { 213 uart@80121000 {
214 pinctrl-names = "default", "sleep";
215 pinctrl-0 = <&uart1_default_mode>;
216 pinctrl-1 = <&uart1_sleep_mode>;
162 status = "okay"; 217 status = "okay";
163 }; 218 };
164 219
165 uart@80007000 { 220 uart@80007000 {
221 pinctrl-names = "default", "sleep";
222 pinctrl-0 = <&uart2_default_mode>;
223 pinctrl-1 = <&uart2_sleep_mode>;
166 status = "okay"; 224 status = "okay";
167 }; 225 };
168 226
227 i2c@80004000 {
228 pinctrl-names = "default","sleep";
229 pinctrl-0 = <&i2c0_default_mode>;
230 pinctrl-1 = <&i2c0_sleep_mode>;
231 };
232
233 i2c@80122000 {
234 pinctrl-names = "default","sleep";
235 pinctrl-0 = <&i2c1_default_mode>;
236 pinctrl-1 = <&i2c1_sleep_mode>;
237 };
238
239 i2c@80128000 {
240 pinctrl-names = "default","sleep";
241 pinctrl-0 = <&i2c2_default_mode>;
242 pinctrl-1 = <&i2c2_sleep_mode>;
243 };
244
245 i2c@80110000 {
246 pinctrl-names = "default","sleep";
247 pinctrl-0 = <&i2c3_default_mode>;
248 pinctrl-1 = <&i2c3_sleep_mode>;
249 };
250
251 ssp@80002000 {
252 pinctrl-names = "default";
253 pinctrl-0 = <&ssp0_snowball_mode>;
254 };
255
169 cpufreq-cooling { 256 cpufreq-cooling {
170 status = "okay"; 257 status = "okay";
171 }; 258 };
@@ -266,5 +353,141 @@
266 }; 353 };
267 }; 354 };
268 }; 355 };
356
357 pinctrl {
358 /*
359 * Set this up using hogs, as time goes by and as seems fit, these
360 * can be moved over to being controlled by respective device.
361 */
362 pinctrl-names = "default";
363 pinctrl-0 = <&accel_snowball_mode>,
364 <&magneto_snowball_mode>,
365 <&gbf_snowball_mode>,
366 <&wlan_snowball_mode>;
367
368 ethernet {
369 /*
370 * Mux in "SM" which is used for the
371 * SMSC911x Ethernet adapter
372 */
373 eth_snowball_mode: eth_snowball {
374 snowball_mux {
375 ste,function = "sm";
376 ste,pins = "sm_b_1";
377 };
378 /* LAN IRQ pin */
379 snowball_cfg1 {
380 ste,pins = "GPIO140_B11";
381 ste,config = <&in_nopull>;
382 };
383 /* LAN reset pin */
384 snowball_cfg2 {
385 ste,pins = "GPIO141_C12";
386 ste,config = <&gpio_out_hi>;
387 };
388
389 };
390 };
391 sdi0 {
392 sdi0_default_mode: sdi0_default {
393 snowball_mux {
394 ste,function = "mc0";
395 ste,pins = "mc0dat31dir_a_1";
396 };
397 snowball_cfg1 {
398 ste,pins = "GPIO21_AB3"; /* DAT31DIR */
399 ste,config = <&out_hi>;
400 };
401
402 };
403 };
404 ssp0 {
405 ssp0_snowball_mode: ssp0_snowball_default {
406 snowball_mux {
407 ste,function = "ssp0";
408 ste,pins = "ssp0_a_1";
409 };
410 snowball_cfg1 {
411 ste,pins = "GPIO144_B13"; /* FRM */
412 ste,config = <&gpio_out_hi>;
413 };
414 snowball_cfg2 {
415 ste,pins = "GPIO145_C13"; /* RXD */
416 ste,config = <&in_pd>;
417 };
418 snowball_cfg3 {
419 ste,pins =
420 "GPIO146_D13", /* TXD */
421 "GPIO143_D12"; /* CLK */
422 ste,config = <&out_lo>;
423 };
424
425 };
426 };
427 gpio_led {
428 gpioled_snowball_mode: gpioled_default {
429 snowball_cfg1 {
430 ste,pins = "GPIO142_C11";
431 ste,config = <&gpio_out_hi>;
432 };
433
434 };
435 };
436 accelerometer {
437 accel_snowball_mode: accel_snowball {
438 /* Accelerometer lines */
439 snowball_cfg1 {
440 ste,pins =
441 "GPIO163_C20", /* ACCEL_IRQ1 */
442 "GPIO164_B21"; /* ACCEL_IRQ2 */
443 ste,config = <&gpio_in_pu>;
444 };
445 };
446 };
447 magnetometer {
448 magneto_snowball_mode: magneto_snowball {
449 snowball_cfg1 {
450 ste,pins = "GPIO165_C21"; /* MAG_DRDY */
451 ste,config = <&gpio_in_pu>;
452 };
453 };
454 };
455 gbf {
456 gbf_snowball_mode: gbf_snowball {
457 /*
458 * GBF (GPS, Bluetooth, FM-radio) interface,
459 * pull low to reset state
460 */
461 snowball_cfg1 {
462 ste,pins = "GPIO171_D23"; /* GBF_ENA_RESET */
463 ste,config = <&gpio_out_lo>;
464 };
465 };
466 };
467 wlan {
468 wlan_snowball_mode: wlan_snowball {
469 /*
470 * Activate this mode with the WLAN chip.
471 * These are plain GPIO pins used by WLAN
472 */
473 snowball_cfg1 {
474 ste,pins =
475 "GPIO161_D21", /* WLAN_PMU_EN */
476 "GPIO215_AH13"; /* WLAN_ENA */
477 ste,config = <&gpio_out_lo>;
478 };
479 snowball_cfg2 {
480 ste,pins = "GPIO216_AG12"; /* WLAN_IRQ */
481 ste,config = <&gpio_in_pu>;
482 };
483 };
484 };
485 };
486
487 mcde@a0350000 {
488 pinctrl-names = "default", "sleep";
489 pinctrl-0 = <&lcd_default_mode>;
490 pinctrl-1 = <&lcd_sleep_mode>;
491 };
269 }; 492 };
270}; 493};
diff --git a/arch/arm/boot/dts/stih415-pinctrl.dtsi b/arch/arm/boot/dts/stih415-pinctrl.dtsi
index 1d322b24d1e4..e56449d41481 100644
--- a/arch/arm/boot/dts/stih415-pinctrl.dtsi
+++ b/arch/arm/boot/dts/stih415-pinctrl.dtsi
@@ -86,6 +86,24 @@
86 }; 86 };
87 }; 87 };
88 }; 88 };
89
90 sbc_i2c0 {
91 pinctrl_sbc_i2c0_default: sbc_i2c0-default {
92 st,pins {
93 sda = <&PIO4 6 ALT1 BIDIR>;
94 scl = <&PIO4 5 ALT1 BIDIR>;
95 };
96 };
97 };
98
99 sbc_i2c1 {
100 pinctrl_sbc_i2c1_default: sbc_i2c1-default {
101 st,pins {
102 sda = <&PIO3 2 ALT2 BIDIR>;
103 scl = <&PIO3 1 ALT2 BIDIR>;
104 };
105 };
106 };
89 }; 107 };
90 108
91 pin-controller-front { 109 pin-controller-front {
@@ -143,6 +161,24 @@
143 reg = <0x7000 0x100>; 161 reg = <0x7000 0x100>;
144 st,bank-name = "PIO12"; 162 st,bank-name = "PIO12";
145 }; 163 };
164
165 i2c0 {
166 pinctrl_i2c0_default: i2c0-default {
167 st,pins {
168 sda = <&PIO9 3 ALT1 BIDIR>;
169 scl = <&PIO9 2 ALT1 BIDIR>;
170 };
171 };
172 };
173
174 i2c1 {
175 pinctrl_i2c1_default: i2c1-default {
176 st,pins {
177 sda = <&PIO12 1 ALT1 BIDIR>;
178 scl = <&PIO12 0 ALT1 BIDIR>;
179 };
180 };
181 };
146 }; 182 };
147 183
148 pin-controller-rear { 184 pin-controller-rear {
diff --git a/arch/arm/boot/dts/stih415.dtsi b/arch/arm/boot/dts/stih415.dtsi
index 74ab8ded4b49..d9c7dd1d95a4 100644
--- a/arch/arm/boot/dts/stih415.dtsi
+++ b/arch/arm/boot/dts/stih415.dtsi
@@ -9,6 +9,7 @@
9#include "stih41x.dtsi" 9#include "stih41x.dtsi"
10#include "stih415-clock.dtsi" 10#include "stih415-clock.dtsi"
11#include "stih415-pinctrl.dtsi" 11#include "stih415-pinctrl.dtsi"
12#include <dt-bindings/interrupt-controller/arm-gic.h>
12/ { 13/ {
13 14
14 L2: cache-controller { 15 L2: cache-controller {
@@ -83,5 +84,57 @@
83 pinctrl-names = "default"; 84 pinctrl-names = "default";
84 pinctrl-0 = <&pinctrl_sbc_serial1>; 85 pinctrl-0 = <&pinctrl_sbc_serial1>;
85 }; 86 };
87
88 i2c@fed40000 {
89 compatible = "st,comms-ssc4-i2c";
90 reg = <0xfed40000 0x110>;
91 interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
92 clocks = <&CLKS_ICN_REG_0>;
93 clock-names = "ssc";
94 clock-frequency = <400000>;
95 pinctrl-names = "default";
96 pinctrl-0 = <&pinctrl_i2c0_default>;
97
98 status = "disabled";
99 };
100
101 i2c@fed41000 {
102 compatible = "st,comms-ssc4-i2c";
103 reg = <0xfed41000 0x110>;
104 interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
105 clocks = <&CLKS_ICN_REG_0>;
106 clock-names = "ssc";
107 clock-frequency = <400000>;
108 pinctrl-names = "default";
109 pinctrl-0 = <&pinctrl_i2c1_default>;
110
111 status = "disabled";
112 };
113
114 i2c@fe540000 {
115 compatible = "st,comms-ssc4-i2c";
116 reg = <0xfe540000 0x110>;
117 interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
118 clocks = <&CLK_SYSIN>;
119 clock-names = "ssc";
120 clock-frequency = <400000>;
121 pinctrl-names = "default";
122 pinctrl-0 = <&pinctrl_sbc_i2c0_default>;
123
124 status = "disabled";
125 };
126
127 i2c@fe541000 {
128 compatible = "st,comms-ssc4-i2c";
129 reg = <0xfe541000 0x110>;
130 interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
131 clocks = <&CLK_SYSIN>;
132 clock-names = "ssc";
133 clock-frequency = <400000>;
134 pinctrl-names = "default";
135 pinctrl-0 = <&pinctrl_sbc_i2c1_default>;
136
137 status = "disabled";
138 };
86 }; 139 };
87}; 140};
diff --git a/arch/arm/boot/dts/stih416-pinctrl.dtsi b/arch/arm/boot/dts/stih416-pinctrl.dtsi
index 0f246c979262..b29ff4ba542c 100644
--- a/arch/arm/boot/dts/stih416-pinctrl.dtsi
+++ b/arch/arm/boot/dts/stih416-pinctrl.dtsi
@@ -97,6 +97,24 @@
97 }; 97 };
98 }; 98 };
99 }; 99 };
100
101 sbc_i2c0 {
102 pinctrl_sbc_i2c0_default: sbc_i2c0-default {
103 st,pins {
104 sda = <&PIO4 6 ALT1 BIDIR>;
105 scl = <&PIO4 5 ALT1 BIDIR>;
106 };
107 };
108 };
109
110 sbc_i2c1 {
111 pinctrl_sbc_i2c1_default: sbc_i2c1-default {
112 st,pins {
113 sda = <&PIO3 2 ALT2 BIDIR>;
114 scl = <&PIO3 1 ALT2 BIDIR>;
115 };
116 };
117 };
100 }; 118 };
101 119
102 pin-controller-front { 120 pin-controller-front {
@@ -175,6 +193,23 @@
175 }; 193 };
176 }; 194 };
177 195
196 i2c0 {
197 pinctrl_i2c0_default: i2c0-default {
198 st,pins {
199 sda = <&PIO9 3 ALT1 BIDIR>;
200 scl = <&PIO9 2 ALT1 BIDIR>;
201 };
202 };
203 };
204
205 i2c1 {
206 pinctrl_i2c1_default: i2c1-default {
207 st,pins {
208 sda = <&PIO12 1 ALT1 BIDIR>;
209 scl = <&PIO12 0 ALT1 BIDIR>;
210 };
211 };
212 };
178 }; 213 };
179 214
180 pin-controller-rear { 215 pin-controller-rear {
diff --git a/arch/arm/boot/dts/stih416.dtsi b/arch/arm/boot/dts/stih416.dtsi
index 1a0326ea7d07..b7ab47b95816 100644
--- a/arch/arm/boot/dts/stih416.dtsi
+++ b/arch/arm/boot/dts/stih416.dtsi
@@ -9,6 +9,7 @@
9#include "stih41x.dtsi" 9#include "stih41x.dtsi"
10#include "stih416-clock.dtsi" 10#include "stih416-clock.dtsi"
11#include "stih416-pinctrl.dtsi" 11#include "stih416-pinctrl.dtsi"
12#include <dt-bindings/interrupt-controller/arm-gic.h>
12/ { 13/ {
13 L2: cache-controller { 14 L2: cache-controller {
14 compatible = "arm,pl310-cache"; 15 compatible = "arm,pl310-cache";
@@ -92,5 +93,57 @@
92 pinctrl-0 = <&pinctrl_sbc_serial1>; 93 pinctrl-0 = <&pinctrl_sbc_serial1>;
93 clocks = <&CLK_SYSIN>; 94 clocks = <&CLK_SYSIN>;
94 }; 95 };
96
97 i2c@fed40000 {
98 compatible = "st,comms-ssc4-i2c";
99 reg = <0xfed40000 0x110>;
100 interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
101 clocks = <&CLK_S_ICN_REG_0>;
102 clock-names = "ssc";
103 clock-frequency = <400000>;
104 pinctrl-names = "default";
105 pinctrl-0 = <&pinctrl_i2c0_default>;
106
107 status = "disabled";
108 };
109
110 i2c@fed41000 {
111 compatible = "st,comms-ssc4-i2c";
112 reg = <0xfed41000 0x110>;
113 interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
114 clocks = <&CLK_S_ICN_REG_0>;
115 clock-names = "ssc";
116 clock-frequency = <400000>;
117 pinctrl-names = "default";
118 pinctrl-0 = <&pinctrl_i2c1_default>;
119
120 status = "disabled";
121 };
122
123 i2c@fe540000 {
124 compatible = "st,comms-ssc4-i2c";
125 reg = <0xfe540000 0x110>;
126 interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
127 clocks = <&CLK_SYSIN>;
128 clock-names = "ssc";
129 clock-frequency = <400000>;
130 pinctrl-names = "default";
131 pinctrl-0 = <&pinctrl_sbc_i2c0_default>;
132
133 status = "disabled";
134 };
135
136 i2c@fe541000 {
137 compatible = "st,comms-ssc4-i2c";
138 reg = <0xfe541000 0x110>;
139 interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
140 clocks = <&CLK_SYSIN>;
141 clock-names = "ssc";
142 clock-frequency = <400000>;
143 pinctrl-names = "default";
144 pinctrl-0 = <&pinctrl_sbc_i2c1_default>;
145
146 status = "disabled";
147 };
95 }; 148 };
96}; 149};
diff --git a/arch/arm/boot/dts/stih41x-b2000.dtsi b/arch/arm/boot/dts/stih41x-b2000.dtsi
index 8e694d2b8f5b..1e6aa92772f5 100644
--- a/arch/arm/boot/dts/stih41x-b2000.dtsi
+++ b/arch/arm/boot/dts/stih41x-b2000.dtsi
@@ -37,5 +37,14 @@
37 }; 37 };
38 }; 38 };
39 39
40 /* HDMI Tx I2C */
41 i2c@fed41000 {
42 /* HDMI V1.3a supports Standard mode only */
43 clock-frequency = <100000>;
44 i2c-min-scl-pulse-width-us = <0>;
45 i2c-min-sda-pulse-width-us = <5>;
46
47 status = "okay";
48 };
40 }; 49 };
41}; 50};
diff --git a/arch/arm/boot/dts/stih41x-b2020.dtsi b/arch/arm/boot/dts/stih41x-b2020.dtsi
index 133e18143b1b..0ef0a69df8ea 100644
--- a/arch/arm/boot/dts/stih41x-b2020.dtsi
+++ b/arch/arm/boot/dts/stih41x-b2020.dtsi
@@ -38,5 +38,27 @@
38 default-state = "off"; 38 default-state = "off";
39 }; 39 };
40 }; 40 };
41
42 i2c@fed40000 {
43 status = "okay";
44 };
45
46 /* HDMI Tx I2C */
47 i2c@fed41000 {
48 /* HDMI V1.3a supports Standard mode only */
49 clock-frequency = <100000>;
50 i2c-min-scl-pulse-width-us = <0>;
51 i2c-min-sda-pulse-width-us = <5>;
52
53 status = "okay";
54 };
55
56 i2c@fe540000 {
57 status = "okay";
58 };
59
60 i2c@fe541000 {
61 status = "okay";
62 };
41 }; 63 };
42}; 64};
diff --git a/arch/arm/boot/dts/sun4i-a10-a1000.dts b/arch/arm/boot/dts/sun4i-a10-a1000.dts
index eb4d73b6a090..d4b081d6a167 100644
--- a/arch/arm/boot/dts/sun4i-a10-a1000.dts
+++ b/arch/arm/boot/dts/sun4i-a10-a1000.dts
@@ -18,10 +18,6 @@
18 model = "Mele A1000"; 18 model = "Mele A1000";
19 compatible = "mele,a1000", "allwinner,sun4i-a10"; 19 compatible = "mele,a1000", "allwinner,sun4i-a10";
20 20
21 aliases {
22 serial0 = &uart0;
23 };
24
25 soc@01c00000 { 21 soc@01c00000 {
26 emac: ethernet@01c0b000 { 22 emac: ethernet@01c0b000 {
27 pinctrl-names = "default"; 23 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts
index 425a7db898c5..b139ee6bcf99 100644
--- a/arch/arm/boot/dts/sun4i-a10-cubieboard.dts
+++ b/arch/arm/boot/dts/sun4i-a10-cubieboard.dts
@@ -17,15 +17,6 @@
17 model = "Cubietech Cubieboard"; 17 model = "Cubietech Cubieboard";
18 compatible = "cubietech,a10-cubieboard", "allwinner,sun4i-a10"; 18 compatible = "cubietech,a10-cubieboard", "allwinner,sun4i-a10";
19 19
20 aliases {
21 serial0 = &uart0;
22 serial1 = &uart1;
23 };
24
25 chosen {
26 bootargs = "earlyprintk console=ttyS0,115200";
27 };
28
29 soc@01c00000 { 20 soc@01c00000 {
30 emac: ethernet@01c0b000 { 21 emac: ethernet@01c0b000 {
31 pinctrl-names = "default"; 22 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/sun4i-a10-hackberry.dts b/arch/arm/boot/dts/sun4i-a10-hackberry.dts
index b3ae51fa9372..3a1595f67823 100644
--- a/arch/arm/boot/dts/sun4i-a10-hackberry.dts
+++ b/arch/arm/boot/dts/sun4i-a10-hackberry.dts
@@ -18,10 +18,6 @@
18 model = "Miniand Hackberry"; 18 model = "Miniand Hackberry";
19 compatible = "miniand,hackberry", "allwinner,sun4i-a10"; 19 compatible = "miniand,hackberry", "allwinner,sun4i-a10";
20 20
21 chosen {
22 bootargs = "earlyprintk console=ttyS0,115200";
23 };
24
25 soc@01c00000 { 21 soc@01c00000 {
26 emac: ethernet@01c0b000 { 22 emac: ethernet@01c0b000 {
27 pinctrl-names = "default"; 23 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts
index 0c1447c68059..70b3323caf1a 100644
--- a/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts
+++ b/arch/arm/boot/dts/sun4i-a10-mini-xplus.dts
@@ -18,10 +18,6 @@
18 model = "PineRiver Mini X-Plus"; 18 model = "PineRiver Mini X-Plus";
19 compatible = "pineriver,mini-xplus", "allwinner,sun4i-a10"; 19 compatible = "pineriver,mini-xplus", "allwinner,sun4i-a10";
20 20
21 chosen {
22 bootargs = "earlyprintk console=ttyS0,115200";
23 };
24
25 soc@01c00000 { 21 soc@01c00000 {
26 uart0: serial@01c28000 { 22 uart0: serial@01c28000 {
27 pinctrl-names = "default"; 23 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi
index 319cc6b509da..040bb0eba152 100644
--- a/arch/arm/boot/dts/sun4i-a10.dtsi
+++ b/arch/arm/boot/dts/sun4i-a10.dtsi
@@ -15,6 +15,12 @@
15/ { 15/ {
16 interrupt-parent = <&intc>; 16 interrupt-parent = <&intc>;
17 17
18 aliases {
19 ethernet0 = &emac;
20 serial0 = &uart0;
21 serial1 = &uart1;
22 };
23
18 cpus { 24 cpus {
19 #address-cells = <1>; 25 #address-cells = <1>;
20 #size-cells = <0>; 26 #size-cells = <0>;
@@ -66,6 +72,29 @@
66 clocks = <&osc24M>; 72 clocks = <&osc24M>;
67 }; 73 };
68 74
75 pll4: pll4@01c20018 {
76 #clock-cells = <0>;
77 compatible = "allwinner,sun4i-pll1-clk";
78 reg = <0x01c20018 0x4>;
79 clocks = <&osc24M>;
80 };
81
82 pll5: pll5@01c20020 {
83 #clock-cells = <1>;
84 compatible = "allwinner,sun4i-pll5-clk";
85 reg = <0x01c20020 0x4>;
86 clocks = <&osc24M>;
87 clock-output-names = "pll5_ddr", "pll5_other";
88 };
89
90 pll6: pll6@01c20028 {
91 #clock-cells = <1>;
92 compatible = "allwinner,sun4i-pll6-clk";
93 reg = <0x01c20028 0x4>;
94 clocks = <&osc24M>;
95 clock-output-names = "pll6_sata", "pll6_other", "pll6";
96 };
97
69 /* dummy is 200M */ 98 /* dummy is 200M */
70 cpu: cpu@01c20054 { 99 cpu: cpu@01c20054 {
71 #clock-cells = <0>; 100 #clock-cells = <0>;
@@ -131,12 +160,11 @@
131 "apb0_ir1", "apb0_keypad"; 160 "apb0_ir1", "apb0_keypad";
132 }; 161 };
133 162
134 /* dummy is pll62 */
135 apb1_mux: apb1_mux@01c20058 { 163 apb1_mux: apb1_mux@01c20058 {
136 #clock-cells = <0>; 164 #clock-cells = <0>;
137 compatible = "allwinner,sun4i-apb1-mux-clk"; 165 compatible = "allwinner,sun4i-apb1-mux-clk";
138 reg = <0x01c20058 0x4>; 166 reg = <0x01c20058 0x4>;
139 clocks = <&osc24M>, <&dummy>, <&osc32k>; 167 clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
140 }; 168 };
141 169
142 apb1: apb1@01c20058 { 170 apb1: apb1@01c20058 {
@@ -158,6 +186,126 @@
158 "apb1_uart4", "apb1_uart5", "apb1_uart6", 186 "apb1_uart4", "apb1_uart5", "apb1_uart6",
159 "apb1_uart7"; 187 "apb1_uart7";
160 }; 188 };
189
190 nand_clk: clk@01c20080 {
191 #clock-cells = <0>;
192 compatible = "allwinner,sun4i-mod0-clk";
193 reg = <0x01c20080 0x4>;
194 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
195 clock-output-names = "nand";
196 };
197
198 ms_clk: clk@01c20084 {
199 #clock-cells = <0>;
200 compatible = "allwinner,sun4i-mod0-clk";
201 reg = <0x01c20084 0x4>;
202 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
203 clock-output-names = "ms";
204 };
205
206 mmc0_clk: clk@01c20088 {
207 #clock-cells = <0>;
208 compatible = "allwinner,sun4i-mod0-clk";
209 reg = <0x01c20088 0x4>;
210 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
211 clock-output-names = "mmc0";
212 };
213
214 mmc1_clk: clk@01c2008c {
215 #clock-cells = <0>;
216 compatible = "allwinner,sun4i-mod0-clk";
217 reg = <0x01c2008c 0x4>;
218 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
219 clock-output-names = "mmc1";
220 };
221
222 mmc2_clk: clk@01c20090 {
223 #clock-cells = <0>;
224 compatible = "allwinner,sun4i-mod0-clk";
225 reg = <0x01c20090 0x4>;
226 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
227 clock-output-names = "mmc2";
228 };
229
230 mmc3_clk: clk@01c20094 {
231 #clock-cells = <0>;
232 compatible = "allwinner,sun4i-mod0-clk";
233 reg = <0x01c20094 0x4>;
234 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
235 clock-output-names = "mmc3";
236 };
237
238 ts_clk: clk@01c20098 {
239 #clock-cells = <0>;
240 compatible = "allwinner,sun4i-mod0-clk";
241 reg = <0x01c20098 0x4>;
242 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
243 clock-output-names = "ts";
244 };
245
246 ss_clk: clk@01c2009c {
247 #clock-cells = <0>;
248 compatible = "allwinner,sun4i-mod0-clk";
249 reg = <0x01c2009c 0x4>;
250 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
251 clock-output-names = "ss";
252 };
253
254 spi0_clk: clk@01c200a0 {
255 #clock-cells = <0>;
256 compatible = "allwinner,sun4i-mod0-clk";
257 reg = <0x01c200a0 0x4>;
258 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
259 clock-output-names = "spi0";
260 };
261
262 spi1_clk: clk@01c200a4 {
263 #clock-cells = <0>;
264 compatible = "allwinner,sun4i-mod0-clk";
265 reg = <0x01c200a4 0x4>;
266 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
267 clock-output-names = "spi1";
268 };
269
270 spi2_clk: clk@01c200a8 {
271 #clock-cells = <0>;
272 compatible = "allwinner,sun4i-mod0-clk";
273 reg = <0x01c200a8 0x4>;
274 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
275 clock-output-names = "spi2";
276 };
277
278 pata_clk: clk@01c200ac {
279 #clock-cells = <0>;
280 compatible = "allwinner,sun4i-mod0-clk";
281 reg = <0x01c200ac 0x4>;
282 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
283 clock-output-names = "pata";
284 };
285
286 ir0_clk: clk@01c200b0 {
287 #clock-cells = <0>;
288 compatible = "allwinner,sun4i-mod0-clk";
289 reg = <0x01c200b0 0x4>;
290 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
291 clock-output-names = "ir0";
292 };
293
294 ir1_clk: clk@01c200b4 {
295 #clock-cells = <0>;
296 compatible = "allwinner,sun4i-mod0-clk";
297 reg = <0x01c200b4 0x4>;
298 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
299 clock-output-names = "ir1";
300 };
301
302 spi3_clk: clk@01c200d4 {
303 #clock-cells = <0>;
304 compatible = "allwinner,sun4i-mod0-clk";
305 reg = <0x01c200d4 0x4>;
306 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
307 clock-output-names = "spi3";
308 };
161 }; 309 };
162 310
163 soc@01c00000 { 311 soc@01c00000 {
@@ -266,11 +414,23 @@
266 reg = <0x01c20c90 0x10>; 414 reg = <0x01c20c90 0x10>;
267 }; 415 };
268 416
417 rtc: rtc@01c20d00 {
418 compatible = "allwinner,sun4i-rtc";
419 reg = <0x01c20d00 0x20>;
420 interrupts = <24>;
421 };
422
269 sid: eeprom@01c23800 { 423 sid: eeprom@01c23800 {
270 compatible = "allwinner,sun4i-sid"; 424 compatible = "allwinner,sun4i-sid";
271 reg = <0x01c23800 0x10>; 425 reg = <0x01c23800 0x10>;
272 }; 426 };
273 427
428 rtp: rtp@01c25000 {
429 compatible = "allwinner,sun4i-ts";
430 reg = <0x01c25000 0x100>;
431 interrupts = <29>;
432 };
433
274 uart0: serial@01c28000 { 434 uart0: serial@01c28000 {
275 compatible = "snps,dw-apb-uart"; 435 compatible = "snps,dw-apb-uart";
276 reg = <0x01c28000 0x400>; 436 reg = <0x01c28000 0x400>;
diff --git a/arch/arm/boot/dts/sun5i-a10s.dtsi b/arch/arm/boot/dts/sun5i-a10s.dtsi
index e674c94c7206..ea16054857a4 100644
--- a/arch/arm/boot/dts/sun5i-a10s.dtsi
+++ b/arch/arm/boot/dts/sun5i-a10s.dtsi
@@ -16,6 +16,10 @@
16/ { 16/ {
17 interrupt-parent = <&intc>; 17 interrupt-parent = <&intc>;
18 18
19 aliases {
20 ethernet0 = &emac;
21 };
22
19 cpus { 23 cpus {
20 cpu@0 { 24 cpu@0 {
21 compatible = "arm,cortex-a8"; 25 compatible = "arm,cortex-a8";
@@ -63,6 +67,29 @@
63 clocks = <&osc24M>; 67 clocks = <&osc24M>;
64 }; 68 };
65 69
70 pll4: pll4@01c20018 {
71 #clock-cells = <0>;
72 compatible = "allwinner,sun4i-pll1-clk";
73 reg = <0x01c20018 0x4>;
74 clocks = <&osc24M>;
75 };
76
77 pll5: pll5@01c20020 {
78 #clock-cells = <1>;
79 compatible = "allwinner,sun4i-pll5-clk";
80 reg = <0x01c20020 0x4>;
81 clocks = <&osc24M>;
82 clock-output-names = "pll5_ddr", "pll5_other";
83 };
84
85 pll6: pll6@01c20028 {
86 #clock-cells = <1>;
87 compatible = "allwinner,sun4i-pll6-clk";
88 reg = <0x01c20028 0x4>;
89 clocks = <&osc24M>;
90 clock-output-names = "pll6_sata", "pll6_other", "pll6";
91 };
92
66 /* dummy is 200M */ 93 /* dummy is 200M */
67 cpu: cpu@01c20054 { 94 cpu: cpu@01c20054 {
68 #clock-cells = <0>; 95 #clock-cells = <0>;
@@ -123,12 +150,11 @@
123 "apb0_ir", "apb0_keypad"; 150 "apb0_ir", "apb0_keypad";
124 }; 151 };
125 152
126 /* dummy is pll62 */
127 apb1_mux: apb1_mux@01c20058 { 153 apb1_mux: apb1_mux@01c20058 {
128 #clock-cells = <0>; 154 #clock-cells = <0>;
129 compatible = "allwinner,sun4i-apb1-mux-clk"; 155 compatible = "allwinner,sun4i-apb1-mux-clk";
130 reg = <0x01c20058 0x4>; 156 reg = <0x01c20058 0x4>;
131 clocks = <&osc24M>, <&dummy>, <&osc32k>; 157 clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
132 }; 158 };
133 159
134 apb1: apb1@01c20058 { 160 apb1: apb1@01c20058 {
@@ -147,6 +173,102 @@
147 "apb1_i2c2", "apb1_uart0", "apb1_uart1", 173 "apb1_i2c2", "apb1_uart0", "apb1_uart1",
148 "apb1_uart2", "apb1_uart3"; 174 "apb1_uart2", "apb1_uart3";
149 }; 175 };
176
177 nand_clk: clk@01c20080 {
178 #clock-cells = <0>;
179 compatible = "allwinner,sun4i-mod0-clk";
180 reg = <0x01c20080 0x4>;
181 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
182 clock-output-names = "nand";
183 };
184
185 ms_clk: clk@01c20084 {
186 #clock-cells = <0>;
187 compatible = "allwinner,sun4i-mod0-clk";
188 reg = <0x01c20084 0x4>;
189 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
190 clock-output-names = "ms";
191 };
192
193 mmc0_clk: clk@01c20088 {
194 #clock-cells = <0>;
195 compatible = "allwinner,sun4i-mod0-clk";
196 reg = <0x01c20088 0x4>;
197 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
198 clock-output-names = "mmc0";
199 };
200
201 mmc1_clk: clk@01c2008c {
202 #clock-cells = <0>;
203 compatible = "allwinner,sun4i-mod0-clk";
204 reg = <0x01c2008c 0x4>;
205 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
206 clock-output-names = "mmc1";
207 };
208
209 mmc2_clk: clk@01c20090 {
210 #clock-cells = <0>;
211 compatible = "allwinner,sun4i-mod0-clk";
212 reg = <0x01c20090 0x4>;
213 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
214 clock-output-names = "mmc2";
215 };
216
217 ts_clk: clk@01c20098 {
218 #clock-cells = <0>;
219 compatible = "allwinner,sun4i-mod0-clk";
220 reg = <0x01c20098 0x4>;
221 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
222 clock-output-names = "ts";
223 };
224
225 ss_clk: clk@01c2009c {
226 #clock-cells = <0>;
227 compatible = "allwinner,sun4i-mod0-clk";
228 reg = <0x01c2009c 0x4>;
229 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
230 clock-output-names = "ss";
231 };
232
233 spi0_clk: clk@01c200a0 {
234 #clock-cells = <0>;
235 compatible = "allwinner,sun4i-mod0-clk";
236 reg = <0x01c200a0 0x4>;
237 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
238 clock-output-names = "spi0";
239 };
240
241 spi1_clk: clk@01c200a4 {
242 #clock-cells = <0>;
243 compatible = "allwinner,sun4i-mod0-clk";
244 reg = <0x01c200a4 0x4>;
245 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
246 clock-output-names = "spi1";
247 };
248
249 spi2_clk: clk@01c200a8 {
250 #clock-cells = <0>;
251 compatible = "allwinner,sun4i-mod0-clk";
252 reg = <0x01c200a8 0x4>;
253 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
254 clock-output-names = "spi2";
255 };
256
257 ir0_clk: clk@01c200b0 {
258 #clock-cells = <0>;
259 compatible = "allwinner,sun4i-mod0-clk";
260 reg = <0x01c200b0 0x4>;
261 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
262 clock-output-names = "ir0";
263 };
264
265 mbus_clk: clk@01c2015c {
266 #clock-cells = <0>;
267 compatible = "allwinner,sun4i-mod0-clk";
268 reg = <0x01c2015c 0x4>;
269 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
270 clock-output-names = "mbus";
271 };
150 }; 272 };
151 273
152 soc@01c00000 { 274 soc@01c00000 {
@@ -260,6 +382,12 @@
260 reg = <0x01c23800 0x10>; 382 reg = <0x01c23800 0x10>;
261 }; 383 };
262 384
385 rtp: rtp@01c25000 {
386 compatible = "allwinner,sun4i-ts";
387 reg = <0x01c25000 0x100>;
388 interrupts = <29>;
389 };
390
263 uart0: serial@01c28000 { 391 uart0: serial@01c28000 {
264 compatible = "snps,dw-apb-uart"; 392 compatible = "snps,dw-apb-uart";
265 reg = <0x01c28000 0x400>; 393 reg = <0x01c28000 0x400>;
diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts
new file mode 100644
index 000000000000..fe2ce0acdb06
--- /dev/null
+++ b/arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts
@@ -0,0 +1,68 @@
1/*
2 * Copyright 2012 Maxime Ripard
3 * Copyright 2013 Hans de Goede <hdegoede@redhat.com>
4 *
5 * Maxime Ripard <maxime.ripard@free-electrons.com>
6 *
7 * The code contained herein is licensed under the GNU General Public
8 * License. You may obtain a copy of the GNU General Public License
9 * Version 2 or later at the following locations:
10 *
11 * http://www.opensource.org/licenses/gpl-license.html
12 * http://www.gnu.org/copyleft/gpl.html
13 */
14
15/dts-v1/;
16/include/ "sun5i-a13.dtsi"
17
18/ {
19 model = "Olimex A13-Olinuxino Micro";
20 compatible = "olimex,a13-olinuxino-micro", "allwinner,sun5i-a13";
21
22 soc@01c00000 {
23 pinctrl@01c20800 {
24 led_pins_olinuxinom: led_pins@0 {
25 allwinner,pins = "PG9";
26 allwinner,function = "gpio_out";
27 allwinner,drive = <1>;
28 allwinner,pull = <0>;
29 };
30 };
31
32 uart1: serial@01c28400 {
33 pinctrl-names = "default";
34 pinctrl-0 = <&uart1_pins_b>;
35 status = "okay";
36 };
37
38 i2c0: i2c@01c2ac00 {
39 pinctrl-names = "default";
40 pinctrl-0 = <&i2c0_pins_a>;
41 status = "okay";
42 };
43
44 i2c1: i2c@01c2b000 {
45 pinctrl-names = "default";
46 pinctrl-0 = <&i2c1_pins_a>;
47 status = "okay";
48 };
49
50 i2c2: i2c@01c2b400 {
51 pinctrl-names = "default";
52 pinctrl-0 = <&i2c2_pins_a>;
53 status = "okay";
54 };
55 };
56
57 leds {
58 compatible = "gpio-leds";
59 pinctrl-names = "default";
60 pinctrl-0 = <&led_pins_olinuxinom>;
61
62 power {
63 label = "a13-olinuxino-micro:green:power";
64 gpios = <&pio 6 9 0>;
65 default-state = "on";
66 };
67 };
68};
diff --git a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts
index 9e508dcc4245..a4ba5ff010cf 100644
--- a/arch/arm/boot/dts/sun5i-a13-olinuxino.dts
+++ b/arch/arm/boot/dts/sun5i-a13-olinuxino.dts
@@ -18,10 +18,6 @@
18 model = "Olimex A13-Olinuxino"; 18 model = "Olimex A13-Olinuxino";
19 compatible = "olimex,a13-olinuxino", "allwinner,sun5i-a13"; 19 compatible = "olimex,a13-olinuxino", "allwinner,sun5i-a13";
20 20
21 chosen {
22 bootargs = "earlyprintk console=ttyS0,115200";
23 };
24
25 soc@01c00000 { 21 soc@01c00000 {
26 pinctrl@01c20800 { 22 pinctrl@01c20800 {
27 led_pins_olinuxino: led_pins@0 { 23 led_pins_olinuxino: led_pins@0 {
diff --git a/arch/arm/boot/dts/sun5i-a13.dtsi b/arch/arm/boot/dts/sun5i-a13.dtsi
index 1ccd75d37f49..320335abfccd 100644
--- a/arch/arm/boot/dts/sun5i-a13.dtsi
+++ b/arch/arm/boot/dts/sun5i-a13.dtsi
@@ -67,6 +67,29 @@
67 clocks = <&osc24M>; 67 clocks = <&osc24M>;
68 }; 68 };
69 69
70 pll4: pll4@01c20018 {
71 #clock-cells = <0>;
72 compatible = "allwinner,sun4i-pll1-clk";
73 reg = <0x01c20018 0x4>;
74 clocks = <&osc24M>;
75 };
76
77 pll5: pll5@01c20020 {
78 #clock-cells = <1>;
79 compatible = "allwinner,sun4i-pll5-clk";
80 reg = <0x01c20020 0x4>;
81 clocks = <&osc24M>;
82 clock-output-names = "pll5_ddr", "pll5_other";
83 };
84
85 pll6: pll6@01c20028 {
86 #clock-cells = <1>;
87 compatible = "allwinner,sun4i-pll6-clk";
88 reg = <0x01c20028 0x4>;
89 clocks = <&osc24M>;
90 clock-output-names = "pll6_sata", "pll6_other", "pll6";
91 };
92
70 /* dummy is 200M */ 93 /* dummy is 200M */
71 cpu: cpu@01c20054 { 94 cpu: cpu@01c20054 {
72 #clock-cells = <0>; 95 #clock-cells = <0>;
@@ -125,12 +148,11 @@
125 clock-output-names = "apb0_codec", "apb0_pio", "apb0_ir"; 148 clock-output-names = "apb0_codec", "apb0_pio", "apb0_ir";
126 }; 149 };
127 150
128 /* dummy is pll6 */
129 apb1_mux: apb1_mux@01c20058 { 151 apb1_mux: apb1_mux@01c20058 {
130 #clock-cells = <0>; 152 #clock-cells = <0>;
131 compatible = "allwinner,sun4i-apb1-mux-clk"; 153 compatible = "allwinner,sun4i-apb1-mux-clk";
132 reg = <0x01c20058 0x4>; 154 reg = <0x01c20058 0x4>;
133 clocks = <&osc24M>, <&dummy>, <&osc32k>; 155 clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
134 }; 156 };
135 157
136 apb1: apb1@01c20058 { 158 apb1: apb1@01c20058 {
@@ -148,6 +170,102 @@
148 clock-output-names = "apb1_i2c0", "apb1_i2c1", 170 clock-output-names = "apb1_i2c0", "apb1_i2c1",
149 "apb1_i2c2", "apb1_uart1", "apb1_uart3"; 171 "apb1_i2c2", "apb1_uart1", "apb1_uart3";
150 }; 172 };
173
174 nand_clk: clk@01c20080 {
175 #clock-cells = <0>;
176 compatible = "allwinner,sun4i-mod0-clk";
177 reg = <0x01c20080 0x4>;
178 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
179 clock-output-names = "nand";
180 };
181
182 ms_clk: clk@01c20084 {
183 #clock-cells = <0>;
184 compatible = "allwinner,sun4i-mod0-clk";
185 reg = <0x01c20084 0x4>;
186 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
187 clock-output-names = "ms";
188 };
189
190 mmc0_clk: clk@01c20088 {
191 #clock-cells = <0>;
192 compatible = "allwinner,sun4i-mod0-clk";
193 reg = <0x01c20088 0x4>;
194 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
195 clock-output-names = "mmc0";
196 };
197
198 mmc1_clk: clk@01c2008c {
199 #clock-cells = <0>;
200 compatible = "allwinner,sun4i-mod0-clk";
201 reg = <0x01c2008c 0x4>;
202 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
203 clock-output-names = "mmc1";
204 };
205
206 mmc2_clk: clk@01c20090 {
207 #clock-cells = <0>;
208 compatible = "allwinner,sun4i-mod0-clk";
209 reg = <0x01c20090 0x4>;
210 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
211 clock-output-names = "mmc2";
212 };
213
214 ts_clk: clk@01c20098 {
215 #clock-cells = <0>;
216 compatible = "allwinner,sun4i-mod0-clk";
217 reg = <0x01c20098 0x4>;
218 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
219 clock-output-names = "ts";
220 };
221
222 ss_clk: clk@01c2009c {
223 #clock-cells = <0>;
224 compatible = "allwinner,sun4i-mod0-clk";
225 reg = <0x01c2009c 0x4>;
226 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
227 clock-output-names = "ss";
228 };
229
230 spi0_clk: clk@01c200a0 {
231 #clock-cells = <0>;
232 compatible = "allwinner,sun4i-mod0-clk";
233 reg = <0x01c200a0 0x4>;
234 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
235 clock-output-names = "spi0";
236 };
237
238 spi1_clk: clk@01c200a4 {
239 #clock-cells = <0>;
240 compatible = "allwinner,sun4i-mod0-clk";
241 reg = <0x01c200a4 0x4>;
242 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
243 clock-output-names = "spi1";
244 };
245
246 spi2_clk: clk@01c200a8 {
247 #clock-cells = <0>;
248 compatible = "allwinner,sun4i-mod0-clk";
249 reg = <0x01c200a8 0x4>;
250 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
251 clock-output-names = "spi2";
252 };
253
254 ir0_clk: clk@01c200b0 {
255 #clock-cells = <0>;
256 compatible = "allwinner,sun4i-mod0-clk";
257 reg = <0x01c200b0 0x4>;
258 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
259 clock-output-names = "ir0";
260 };
261
262 mbus_clk: clk@01c2015c {
263 #clock-cells = <0>;
264 compatible = "allwinner,sun4i-mod0-clk";
265 reg = <0x01c2015c 0x4>;
266 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
267 clock-output-names = "mbus";
268 };
151 }; 269 };
152 270
153 soc@01c00000 { 271 soc@01c00000 {
@@ -227,6 +345,12 @@
227 reg = <0x01c23800 0x10>; 345 reg = <0x01c23800 0x10>;
228 }; 346 };
229 347
348 rtp: rtp@01c25000 {
349 compatible = "allwinner,sun4i-ts";
350 reg = <0x01c25000 0x100>;
351 interrupts = <29>;
352 };
353
230 uart1: serial@01c28400 { 354 uart1: serial@01c28400 {
231 compatible = "snps,dw-apb-uart"; 355 compatible = "snps,dw-apb-uart";
232 reg = <0x01c28400 0x400>; 356 reg = <0x01c28400 0x400>;
diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index 7f5878c2784a..5256ad9be52c 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -212,6 +212,24 @@
212 }; 212 };
213 }; 213 };
214 214
215 ahb1_rst: reset@01c202c0 {
216 #reset-cells = <1>;
217 compatible = "allwinner,sun6i-a31-ahb1-reset";
218 reg = <0x01c202c0 0xc>;
219 };
220
221 apb1_rst: reset@01c202d0 {
222 #reset-cells = <1>;
223 compatible = "allwinner,sun6i-a31-clock-reset";
224 reg = <0x01c202d0 0x4>;
225 };
226
227 apb2_rst: reset@01c202d8 {
228 #reset-cells = <1>;
229 compatible = "allwinner,sun6i-a31-clock-reset";
230 reg = <0x01c202d8 0x4>;
231 };
232
215 timer@01c20c00 { 233 timer@01c20c00 {
216 compatible = "allwinner,sun4i-timer"; 234 compatible = "allwinner,sun4i-timer";
217 reg = <0x01c20c00 0xa0>; 235 reg = <0x01c20c00 0xa0>;
@@ -235,6 +253,7 @@
235 reg-shift = <2>; 253 reg-shift = <2>;
236 reg-io-width = <4>; 254 reg-io-width = <4>;
237 clocks = <&apb2_gates 16>; 255 clocks = <&apb2_gates 16>;
256 resets = <&apb2_rst 16>;
238 status = "disabled"; 257 status = "disabled";
239 }; 258 };
240 259
@@ -245,6 +264,7 @@
245 reg-shift = <2>; 264 reg-shift = <2>;
246 reg-io-width = <4>; 265 reg-io-width = <4>;
247 clocks = <&apb2_gates 17>; 266 clocks = <&apb2_gates 17>;
267 resets = <&apb2_rst 17>;
248 status = "disabled"; 268 status = "disabled";
249 }; 269 };
250 270
@@ -255,6 +275,7 @@
255 reg-shift = <2>; 275 reg-shift = <2>;
256 reg-io-width = <4>; 276 reg-io-width = <4>;
257 clocks = <&apb2_gates 18>; 277 clocks = <&apb2_gates 18>;
278 resets = <&apb2_rst 18>;
258 status = "disabled"; 279 status = "disabled";
259 }; 280 };
260 281
@@ -265,6 +286,7 @@
265 reg-shift = <2>; 286 reg-shift = <2>;
266 reg-io-width = <4>; 287 reg-io-width = <4>;
267 clocks = <&apb2_gates 19>; 288 clocks = <&apb2_gates 19>;
289 resets = <&apb2_rst 19>;
268 status = "disabled"; 290 status = "disabled";
269 }; 291 };
270 292
@@ -275,6 +297,7 @@
275 reg-shift = <2>; 297 reg-shift = <2>;
276 reg-io-width = <4>; 298 reg-io-width = <4>;
277 clocks = <&apb2_gates 20>; 299 clocks = <&apb2_gates 20>;
300 resets = <&apb2_rst 20>;
278 status = "disabled"; 301 status = "disabled";
279 }; 302 };
280 303
@@ -285,6 +308,7 @@
285 reg-shift = <2>; 308 reg-shift = <2>;
286 reg-io-width = <4>; 309 reg-io-width = <4>;
287 clocks = <&apb2_gates 21>; 310 clocks = <&apb2_gates 21>;
311 resets = <&apb2_rst 21>;
288 status = "disabled"; 312 status = "disabled";
289 }; 313 };
290 314
@@ -298,5 +322,15 @@
298 #interrupt-cells = <3>; 322 #interrupt-cells = <3>;
299 interrupts = <1 9 0xf04>; 323 interrupts = <1 9 0xf04>;
300 }; 324 };
325
326 cpucfg@01f01c00 {
327 compatible = "allwinner,sun6i-a31-cpuconfig";
328 reg = <0x01f01c00 0x300>;
329 };
330
331 prcm@01f01c00 {
332 compatible = "allwinner,sun6i-a31-prcm";
333 reg = <0x01f01400 0x200>;
334 };
301 }; 335 };
302}; 336};
diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
index 8a1009d6c829..f9dcb61a5305 100644
--- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
+++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
@@ -33,6 +33,24 @@
33 pinctrl-0 = <&uart0_pins_a>; 33 pinctrl-0 = <&uart0_pins_a>;
34 status = "okay"; 34 status = "okay";
35 }; 35 };
36
37 i2c0: i2c@01c2ac00 {
38 pinctrl-names = "default";
39 pinctrl-0 = <&i2c0_pins_a>;
40 status = "okay";
41 };
42
43 i2c1: i2c@01c2b000 {
44 pinctrl-names = "default";
45 pinctrl-0 = <&i2c1_pins_a>;
46 status = "okay";
47 };
48
49 i2c2: i2c@01c2b400 {
50 pinctrl-names = "default";
51 pinctrl-0 = <&i2c2_pins_a>;
52 status = "okay";
53 };
36 }; 54 };
37 55
38 leds { 56 leds {
diff --git a/arch/arm/boot/dts/sun7i-a20.dtsi b/arch/arm/boot/dts/sun7i-a20.dtsi
index 0135039eff96..119f066f0d98 100644
--- a/arch/arm/boot/dts/sun7i-a20.dtsi
+++ b/arch/arm/boot/dts/sun7i-a20.dtsi
@@ -16,6 +16,10 @@
16/ { 16/ {
17 interrupt-parent = <&gic>; 17 interrupt-parent = <&gic>;
18 18
19 aliases {
20 ethernet0 = &emac;
21 };
22
19 cpus { 23 cpus {
20 #address-cells = <1>; 24 #address-cells = <1>;
21 #size-cells = <0>; 25 #size-cells = <0>;
@@ -49,10 +53,11 @@
49 clock-frequency = <24000000>; 53 clock-frequency = <24000000>;
50 }; 54 };
51 55
52 osc32k: osc32k { 56 osc32k: clk@0 {
53 #clock-cells = <0>; 57 #clock-cells = <0>;
54 compatible = "fixed-clock"; 58 compatible = "fixed-clock";
55 clock-frequency = <32768>; 59 clock-frequency = <32768>;
60 clock-output-names = "osc32k";
56 }; 61 };
57 62
58 pll1: pll1@01c20000 { 63 pll1: pll1@01c20000 {
@@ -62,23 +67,34 @@
62 clocks = <&osc24M>; 67 clocks = <&osc24M>;
63 }; 68 };
64 69
65 /* 70 pll4: pll4@01c20018 {
66 * This is a dummy clock, to be used as placeholder on
67 * other mux clocks when a specific parent clock is not
68 * yet implemented. It should be dropped when the driver
69 * is complete.
70 */
71 pll6: pll6 {
72 #clock-cells = <0>; 71 #clock-cells = <0>;
73 compatible = "fixed-clock"; 72 compatible = "allwinner,sun4i-pll1-clk";
74 clock-frequency = <0>; 73 reg = <0x01c20018 0x4>;
74 clocks = <&osc24M>;
75 };
76
77 pll5: pll5@01c20020 {
78 #clock-cells = <1>;
79 compatible = "allwinner,sun4i-pll5-clk";
80 reg = <0x01c20020 0x4>;
81 clocks = <&osc24M>;
82 clock-output-names = "pll5_ddr", "pll5_other";
83 };
84
85 pll6: pll6@01c20028 {
86 #clock-cells = <1>;
87 compatible = "allwinner,sun4i-pll6-clk";
88 reg = <0x01c20028 0x4>;
89 clocks = <&osc24M>;
90 clock-output-names = "pll6_sata", "pll6_other", "pll6";
75 }; 91 };
76 92
77 cpu: cpu@01c20054 { 93 cpu: cpu@01c20054 {
78 #clock-cells = <0>; 94 #clock-cells = <0>;
79 compatible = "allwinner,sun4i-cpu-clk"; 95 compatible = "allwinner,sun4i-cpu-clk";
80 reg = <0x01c20054 0x4>; 96 reg = <0x01c20054 0x4>;
81 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6>; 97 clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6 1>;
82 }; 98 };
83 99
84 axi: axi@01c20054 { 100 axi: axi@01c20054 {
@@ -137,7 +153,7 @@
137 #clock-cells = <0>; 153 #clock-cells = <0>;
138 compatible = "allwinner,sun4i-apb1-mux-clk"; 154 compatible = "allwinner,sun4i-apb1-mux-clk";
139 reg = <0x01c20058 0x4>; 155 reg = <0x01c20058 0x4>;
140 clocks = <&osc24M>, <&pll6>, <&osc32k>; 156 clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
141 }; 157 };
142 158
143 apb1: apb1@01c20058 { 159 apb1: apb1@01c20058 {
@@ -159,6 +175,162 @@
159 "apb1_uart2", "apb1_uart3", "apb1_uart4", 175 "apb1_uart2", "apb1_uart3", "apb1_uart4",
160 "apb1_uart5", "apb1_uart6", "apb1_uart7"; 176 "apb1_uart5", "apb1_uart6", "apb1_uart7";
161 }; 177 };
178
179 nand_clk: clk@01c20080 {
180 #clock-cells = <0>;
181 compatible = "allwinner,sun4i-mod0-clk";
182 reg = <0x01c20080 0x4>;
183 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
184 clock-output-names = "nand";
185 };
186
187 ms_clk: clk@01c20084 {
188 #clock-cells = <0>;
189 compatible = "allwinner,sun4i-mod0-clk";
190 reg = <0x01c20084 0x4>;
191 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
192 clock-output-names = "ms";
193 };
194
195 mmc0_clk: clk@01c20088 {
196 #clock-cells = <0>;
197 compatible = "allwinner,sun4i-mod0-clk";
198 reg = <0x01c20088 0x4>;
199 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
200 clock-output-names = "mmc0";
201 };
202
203 mmc1_clk: clk@01c2008c {
204 #clock-cells = <0>;
205 compatible = "allwinner,sun4i-mod0-clk";
206 reg = <0x01c2008c 0x4>;
207 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
208 clock-output-names = "mmc1";
209 };
210
211 mmc2_clk: clk@01c20090 {
212 #clock-cells = <0>;
213 compatible = "allwinner,sun4i-mod0-clk";
214 reg = <0x01c20090 0x4>;
215 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
216 clock-output-names = "mmc2";
217 };
218
219 mmc3_clk: clk@01c20094 {
220 #clock-cells = <0>;
221 compatible = "allwinner,sun4i-mod0-clk";
222 reg = <0x01c20094 0x4>;
223 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
224 clock-output-names = "mmc3";
225 };
226
227 ts_clk: clk@01c20098 {
228 #clock-cells = <0>;
229 compatible = "allwinner,sun4i-mod0-clk";
230 reg = <0x01c20098 0x4>;
231 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
232 clock-output-names = "ts";
233 };
234
235 ss_clk: clk@01c2009c {
236 #clock-cells = <0>;
237 compatible = "allwinner,sun4i-mod0-clk";
238 reg = <0x01c2009c 0x4>;
239 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
240 clock-output-names = "ss";
241 };
242
243 spi0_clk: clk@01c200a0 {
244 #clock-cells = <0>;
245 compatible = "allwinner,sun4i-mod0-clk";
246 reg = <0x01c200a0 0x4>;
247 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
248 clock-output-names = "spi0";
249 };
250
251 spi1_clk: clk@01c200a4 {
252 #clock-cells = <0>;
253 compatible = "allwinner,sun4i-mod0-clk";
254 reg = <0x01c200a4 0x4>;
255 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
256 clock-output-names = "spi1";
257 };
258
259 spi2_clk: clk@01c200a8 {
260 #clock-cells = <0>;
261 compatible = "allwinner,sun4i-mod0-clk";
262 reg = <0x01c200a8 0x4>;
263 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
264 clock-output-names = "spi2";
265 };
266
267 pata_clk: clk@01c200ac {
268 #clock-cells = <0>;
269 compatible = "allwinner,sun4i-mod0-clk";
270 reg = <0x01c200ac 0x4>;
271 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
272 clock-output-names = "pata";
273 };
274
275 ir0_clk: clk@01c200b0 {
276 #clock-cells = <0>;
277 compatible = "allwinner,sun4i-mod0-clk";
278 reg = <0x01c200b0 0x4>;
279 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
280 clock-output-names = "ir0";
281 };
282
283 ir1_clk: clk@01c200b4 {
284 #clock-cells = <0>;
285 compatible = "allwinner,sun4i-mod0-clk";
286 reg = <0x01c200b4 0x4>;
287 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
288 clock-output-names = "ir1";
289 };
290
291 spi3_clk: clk@01c200d4 {
292 #clock-cells = <0>;
293 compatible = "allwinner,sun4i-mod0-clk";
294 reg = <0x01c200d4 0x4>;
295 clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
296 clock-output-names = "spi3";
297 };
298
299 mbus_clk: clk@01c2015c {
300 #clock-cells = <0>;
301 compatible = "allwinner,sun4i-mod0-clk";
302 reg = <0x01c2015c 0x4>;
303 clocks = <&osc24M>, <&pll6 2>, <&pll5 1>;
304 clock-output-names = "mbus";
305 };
306
307 /*
308 * Dummy clock used by output clocks
309 */
310 osc24M_32k: clk@1 {
311 #clock-cells = <0>;
312 compatible = "fixed-factor-clock";
313 clock-div = <750>;
314 clock-mult = <1>;
315 clocks = <&osc24M>;
316 clock-output-names = "osc24M_32k";
317 };
318
319 clk_out_a: clk@01c201f0 {
320 #clock-cells = <0>;
321 compatible = "allwinner,sun7i-a20-out-clk";
322 reg = <0x01c201f0 0x4>;
323 clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
324 clock-output-names = "clk_out_a";
325 };
326
327 clk_out_b: clk@01c201f4 {
328 #clock-cells = <0>;
329 compatible = "allwinner,sun7i-a20-out-clk";
330 reg = <0x01c201f4 0x4>;
331 clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
332 clock-output-names = "clk_out_b";
333 };
162 }; 334 };
163 335
164 soc@01c00000 { 336 soc@01c00000 {
@@ -246,6 +418,20 @@
246 allwinner,drive = <0>; 418 allwinner,drive = <0>;
247 allwinner,pull = <0>; 419 allwinner,pull = <0>;
248 }; 420 };
421
422 clk_out_a_pins_a: clk_out_a@0 {
423 allwinner,pins = "PI12";
424 allwinner,function = "clk_out_a";
425 allwinner,drive = <0>;
426 allwinner,pull = <0>;
427 };
428
429 clk_out_b_pins_a: clk_out_b@0 {
430 allwinner,pins = "PI13";
431 allwinner,function = "clk_out_b";
432 allwinner,drive = <0>;
433 allwinner,pull = <0>;
434 };
249 }; 435 };
250 436
251 timer@01c20c00 { 437 timer@01c20c00 {
@@ -265,11 +451,23 @@
265 reg = <0x01c20c90 0x10>; 451 reg = <0x01c20c90 0x10>;
266 }; 452 };
267 453
454 rtc: rtc@01c20d00 {
455 compatible = "allwinner,sun7i-a20-rtc";
456 reg = <0x01c20d00 0x20>;
457 interrupts = <0 24 1>;
458 };
459
268 sid: eeprom@01c23800 { 460 sid: eeprom@01c23800 {
269 compatible = "allwinner,sun7i-a20-sid"; 461 compatible = "allwinner,sun7i-a20-sid";
270 reg = <0x01c23800 0x200>; 462 reg = <0x01c23800 0x200>;
271 }; 463 };
272 464
465 rtp: rtp@01c25000 {
466 compatible = "allwinner,sun4i-ts";
467 reg = <0x01c25000 0x100>;
468 interrupts = <0 29 4>;
469 };
470
273 uart0: serial@01c28000 { 471 uart0: serial@01c28000 {
274 compatible = "snps,dw-apb-uart"; 472 compatible = "snps,dw-apb-uart";
275 reg = <0x01c28000 0x400>; 473 reg = <0x01c28000 0x400>;
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
index cb5ec23b03a7..73aecfb57ccb 100644
--- a/arch/arm/boot/dts/tegra114-dalmore.dts
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
@@ -7,11 +7,42 @@
7 model = "NVIDIA Tegra114 Dalmore evaluation board"; 7 model = "NVIDIA Tegra114 Dalmore evaluation board";
8 compatible = "nvidia,dalmore", "nvidia,tegra114"; 8 compatible = "nvidia,dalmore", "nvidia,tegra114";
9 9
10 aliases {
11 rtc0 = "/i2c@7000d000/tps65913@58";
12 rtc1 = "/rtc@7000e000";
13 };
14
10 memory { 15 memory {
11 reg = <0x80000000 0x40000000>; 16 reg = <0x80000000 0x40000000>;
12 }; 17 };
13 18
14 pinmux { 19 host1x@50000000 {
20 hdmi@54280000 {
21 status = "okay";
22
23 vdd-supply = <&vdd_hdmi_reg>;
24 pll-supply = <&palmas_smps3_reg>;
25
26 nvidia,ddc-i2c-bus = <&hdmi_ddc>;
27 nvidia,hpd-gpio =
28 <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
29 };
30
31 dsi@54300000 {
32 status = "okay";
33
34 panel@0 {
35 compatible = "panasonic,vvx10f004b00",
36 "simple-panel";
37 reg = <0>;
38
39 power-supply = <&avdd_lcd_reg>;
40 backlight = <&backlight>;
41 };
42 };
43 };
44
45 pinmux@70000868 {
15 pinctrl-names = "default"; 46 pinctrl-names = "default";
16 pinctrl-0 = <&state_default>; 47 pinctrl-0 = <&state_default>;
17 48
@@ -19,41 +50,41 @@
19 clk1_out_pw4 { 50 clk1_out_pw4 {
20 nvidia,pins = "clk1_out_pw4"; 51 nvidia,pins = "clk1_out_pw4";
21 nvidia,function = "extperiph1"; 52 nvidia,function = "extperiph1";
22 nvidia,pull = <0>; 53 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
23 nvidia,tristate = <0>; 54 nvidia,tristate = <TEGRA_PIN_DISABLE>;
24 nvidia,enable-input = <0>; 55 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
25 }; 56 };
26 dap1_din_pn1 { 57 dap1_din_pn1 {
27 nvidia,pins = "dap1_din_pn1"; 58 nvidia,pins = "dap1_din_pn1";
28 nvidia,function = "i2s0"; 59 nvidia,function = "i2s0";
29 nvidia,pull = <0>; 60 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
30 nvidia,tristate = <1>; 61 nvidia,tristate = <TEGRA_PIN_ENABLE>;
31 nvidia,enable-input = <1>; 62 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
32 }; 63 };
33 dap1_dout_pn2 { 64 dap1_dout_pn2 {
34 nvidia,pins = "dap1_dout_pn2", 65 nvidia,pins = "dap1_dout_pn2",
35 "dap1_fs_pn0", 66 "dap1_fs_pn0",
36 "dap1_sclk_pn3"; 67 "dap1_sclk_pn3";
37 nvidia,function = "i2s0"; 68 nvidia,function = "i2s0";
38 nvidia,pull = <0>; 69 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
39 nvidia,tristate = <0>; 70 nvidia,tristate = <TEGRA_PIN_DISABLE>;
40 nvidia,enable-input = <1>; 71 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
41 }; 72 };
42 dap2_din_pa4 { 73 dap2_din_pa4 {
43 nvidia,pins = "dap2_din_pa4"; 74 nvidia,pins = "dap2_din_pa4";
44 nvidia,function = "i2s1"; 75 nvidia,function = "i2s1";
45 nvidia,pull = <0>; 76 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
46 nvidia,tristate = <1>; 77 nvidia,tristate = <TEGRA_PIN_ENABLE>;
47 nvidia,enable-input = <1>; 78 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
48 }; 79 };
49 dap2_dout_pa5 { 80 dap2_dout_pa5 {
50 nvidia,pins = "dap2_dout_pa5", 81 nvidia,pins = "dap2_dout_pa5",
51 "dap2_fs_pa2", 82 "dap2_fs_pa2",
52 "dap2_sclk_pa3"; 83 "dap2_sclk_pa3";
53 nvidia,function = "i2s1"; 84 nvidia,function = "i2s1";
54 nvidia,pull = <0>; 85 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
55 nvidia,tristate = <0>; 86 nvidia,tristate = <TEGRA_PIN_DISABLE>;
56 nvidia,enable-input = <1>; 87 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
57 }; 88 };
58 dap4_din_pp5 { 89 dap4_din_pp5 {
59 nvidia,pins = "dap4_din_pp5", 90 nvidia,pins = "dap4_din_pp5",
@@ -61,17 +92,17 @@
61 "dap4_fs_pp4", 92 "dap4_fs_pp4",
62 "dap4_sclk_pp7"; 93 "dap4_sclk_pp7";
63 nvidia,function = "i2s3"; 94 nvidia,function = "i2s3";
64 nvidia,pull = <0>; 95 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
65 nvidia,tristate = <0>; 96 nvidia,tristate = <TEGRA_PIN_DISABLE>;
66 nvidia,enable-input = <1>; 97 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
67 }; 98 };
68 dvfs_pwm_px0 { 99 dvfs_pwm_px0 {
69 nvidia,pins = "dvfs_pwm_px0", 100 nvidia,pins = "dvfs_pwm_px0",
70 "dvfs_clk_px2"; 101 "dvfs_clk_px2";
71 nvidia,function = "cldvfs"; 102 nvidia,function = "cldvfs";
72 nvidia,pull = <0>; 103 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
73 nvidia,tristate = <0>; 104 nvidia,tristate = <TEGRA_PIN_DISABLE>;
74 nvidia,enable-input = <0>; 105 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
75 }; 106 };
76 ulpi_clk_py0 { 107 ulpi_clk_py0 {
77 nvidia,pins = "ulpi_clk_py0", 108 nvidia,pins = "ulpi_clk_py0",
@@ -84,128 +115,128 @@
84 "ulpi_data6_po7", 115 "ulpi_data6_po7",
85 "ulpi_data7_po0"; 116 "ulpi_data7_po0";
86 nvidia,function = "ulpi"; 117 nvidia,function = "ulpi";
87 nvidia,pull = <0>; 118 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
88 nvidia,tristate = <0>; 119 nvidia,tristate = <TEGRA_PIN_DISABLE>;
89 nvidia,enable-input = <1>; 120 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
90 }; 121 };
91 ulpi_dir_py1 { 122 ulpi_dir_py1 {
92 nvidia,pins = "ulpi_dir_py1", 123 nvidia,pins = "ulpi_dir_py1",
93 "ulpi_nxt_py2"; 124 "ulpi_nxt_py2";
94 nvidia,function = "ulpi"; 125 nvidia,function = "ulpi";
95 nvidia,pull = <0>; 126 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
96 nvidia,tristate = <1>; 127 nvidia,tristate = <TEGRA_PIN_ENABLE>;
97 nvidia,enable-input = <1>; 128 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
98 }; 129 };
99 ulpi_stp_py3 { 130 ulpi_stp_py3 {
100 nvidia,pins = "ulpi_stp_py3"; 131 nvidia,pins = "ulpi_stp_py3";
101 nvidia,function = "ulpi"; 132 nvidia,function = "ulpi";
102 nvidia,pull = <0>; 133 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
103 nvidia,tristate = <0>; 134 nvidia,tristate = <TEGRA_PIN_DISABLE>;
104 nvidia,enable-input = <0>; 135 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
105 }; 136 };
106 cam_i2c_scl_pbb1 { 137 cam_i2c_scl_pbb1 {
107 nvidia,pins = "cam_i2c_scl_pbb1", 138 nvidia,pins = "cam_i2c_scl_pbb1",
108 "cam_i2c_sda_pbb2"; 139 "cam_i2c_sda_pbb2";
109 nvidia,function = "i2c3"; 140 nvidia,function = "i2c3";
110 nvidia,pull = <0>; 141 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
111 nvidia,tristate = <0>; 142 nvidia,tristate = <TEGRA_PIN_DISABLE>;
112 nvidia,enable-input = <1>; 143 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
113 nvidia,lock = <0>; 144 nvidia,lock = <TEGRA_PIN_DISABLE>;
114 nvidia,open-drain = <0>; 145 nvidia,open-drain = <TEGRA_PIN_DISABLE>;
115 }; 146 };
116 cam_mclk_pcc0 { 147 cam_mclk_pcc0 {
117 nvidia,pins = "cam_mclk_pcc0", 148 nvidia,pins = "cam_mclk_pcc0",
118 "pbb0"; 149 "pbb0";
119 nvidia,function = "vi_alt3"; 150 nvidia,function = "vi_alt3";
120 nvidia,pull = <0>; 151 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
121 nvidia,tristate = <0>; 152 nvidia,tristate = <TEGRA_PIN_DISABLE>;
122 nvidia,enable-input = <0>; 153 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
123 nvidia,lock = <0>; 154 nvidia,lock = <TEGRA_PIN_DISABLE>;
124 }; 155 };
125 gen2_i2c_scl_pt5 { 156 gen2_i2c_scl_pt5 {
126 nvidia,pins = "gen2_i2c_scl_pt5", 157 nvidia,pins = "gen2_i2c_scl_pt5",
127 "gen2_i2c_sda_pt6"; 158 "gen2_i2c_sda_pt6";
128 nvidia,function = "i2c2"; 159 nvidia,function = "i2c2";
129 nvidia,pull = <0>; 160 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
130 nvidia,tristate = <0>; 161 nvidia,tristate = <TEGRA_PIN_DISABLE>;
131 nvidia,enable-input = <1>; 162 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
132 nvidia,lock = <0>; 163 nvidia,lock = <TEGRA_PIN_DISABLE>;
133 nvidia,open-drain = <0>; 164 nvidia,open-drain = <TEGRA_PIN_DISABLE>;
134 }; 165 };
135 gmi_a16_pj7 { 166 gmi_a16_pj7 {
136 nvidia,pins = "gmi_a16_pj7"; 167 nvidia,pins = "gmi_a16_pj7";
137 nvidia,function = "uartd"; 168 nvidia,function = "uartd";
138 nvidia,pull = <0>; 169 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
139 nvidia,tristate = <0>; 170 nvidia,tristate = <TEGRA_PIN_DISABLE>;
140 nvidia,enable-input = <0>; 171 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
141 }; 172 };
142 gmi_a17_pb0 { 173 gmi_a17_pb0 {
143 nvidia,pins = "gmi_a17_pb0", 174 nvidia,pins = "gmi_a17_pb0",
144 "gmi_a18_pb1"; 175 "gmi_a18_pb1";
145 nvidia,function = "uartd"; 176 nvidia,function = "uartd";
146 nvidia,pull = <0>; 177 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
147 nvidia,tristate = <1>; 178 nvidia,tristate = <TEGRA_PIN_ENABLE>;
148 nvidia,enable-input = <1>; 179 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
149 }; 180 };
150 gmi_a19_pk7 { 181 gmi_a19_pk7 {
151 nvidia,pins = "gmi_a19_pk7"; 182 nvidia,pins = "gmi_a19_pk7";
152 nvidia,function = "uartd"; 183 nvidia,function = "uartd";
153 nvidia,pull = <0>; 184 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
154 nvidia,tristate = <0>; 185 nvidia,tristate = <TEGRA_PIN_DISABLE>;
155 nvidia,enable-input = <0>; 186 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
156 }; 187 };
157 gmi_ad5_pg5 { 188 gmi_ad5_pg5 {
158 nvidia,pins = "gmi_ad5_pg5", 189 nvidia,pins = "gmi_ad5_pg5",
159 "gmi_cs6_n_pi3", 190 "gmi_cs6_n_pi3",
160 "gmi_wr_n_pi0"; 191 "gmi_wr_n_pi0";
161 nvidia,function = "spi4"; 192 nvidia,function = "spi4";
162 nvidia,pull = <0>; 193 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
163 nvidia,tristate = <0>; 194 nvidia,tristate = <TEGRA_PIN_DISABLE>;
164 nvidia,enable-input = <1>; 195 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
165 }; 196 };
166 gmi_ad6_pg6 { 197 gmi_ad6_pg6 {
167 nvidia,pins = "gmi_ad6_pg6", 198 nvidia,pins = "gmi_ad6_pg6",
168 "gmi_ad7_pg7"; 199 "gmi_ad7_pg7";
169 nvidia,function = "spi4"; 200 nvidia,function = "spi4";
170 nvidia,pull = <2>; 201 nvidia,pull = <TEGRA_PIN_PULL_UP>;
171 nvidia,tristate = <0>; 202 nvidia,tristate = <TEGRA_PIN_DISABLE>;
172 nvidia,enable-input = <1>; 203 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
173 }; 204 };
174 gmi_ad12_ph4 { 205 gmi_ad12_ph4 {
175 nvidia,pins = "gmi_ad12_ph4"; 206 nvidia,pins = "gmi_ad12_ph4";
176 nvidia,function = "rsvd4"; 207 nvidia,function = "rsvd4";
177 nvidia,pull = <0>; 208 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
178 nvidia,tristate = <0>; 209 nvidia,tristate = <TEGRA_PIN_DISABLE>;
179 nvidia,enable-input = <0>; 210 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
180 }; 211 };
181 gmi_ad9_ph1 { 212 gmi_ad9_ph1 {
182 nvidia,pins = "gmi_ad9_ph1"; 213 nvidia,pins = "gmi_ad9_ph1";
183 nvidia,function = "pwm1"; 214 nvidia,function = "pwm1";
184 nvidia,pull = <0>; 215 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
185 nvidia,tristate = <0>; 216 nvidia,tristate = <TEGRA_PIN_DISABLE>;
186 nvidia,enable-input = <0>; 217 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
187 }; 218 };
188 gmi_cs1_n_pj2 { 219 gmi_cs1_n_pj2 {
189 nvidia,pins = "gmi_cs1_n_pj2", 220 nvidia,pins = "gmi_cs1_n_pj2",
190 "gmi_oe_n_pi1"; 221 "gmi_oe_n_pi1";
191 nvidia,function = "soc"; 222 nvidia,function = "soc";
192 nvidia,pull = <0>; 223 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
193 nvidia,tristate = <1>; 224 nvidia,tristate = <TEGRA_PIN_ENABLE>;
194 nvidia,enable-input = <1>; 225 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
195 }; 226 };
196 clk2_out_pw5 { 227 clk2_out_pw5 {
197 nvidia,pins = "clk2_out_pw5"; 228 nvidia,pins = "clk2_out_pw5";
198 nvidia,function = "extperiph2"; 229 nvidia,function = "extperiph2";
199 nvidia,pull = <0>; 230 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
200 nvidia,tristate = <0>; 231 nvidia,tristate = <TEGRA_PIN_DISABLE>;
201 nvidia,enable-input = <0>; 232 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
202 }; 233 };
203 sdmmc1_clk_pz0 { 234 sdmmc1_clk_pz0 {
204 nvidia,pins = "sdmmc1_clk_pz0"; 235 nvidia,pins = "sdmmc1_clk_pz0";
205 nvidia,function = "sdmmc1"; 236 nvidia,function = "sdmmc1";
206 nvidia,pull = <0>; 237 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
207 nvidia,tristate = <0>; 238 nvidia,tristate = <TEGRA_PIN_DISABLE>;
208 nvidia,enable-input = <1>; 239 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
209 }; 240 };
210 sdmmc1_cmd_pz1 { 241 sdmmc1_cmd_pz1 {
211 nvidia,pins = "sdmmc1_cmd_pz1", 242 nvidia,pins = "sdmmc1_cmd_pz1",
@@ -214,23 +245,23 @@
214 "sdmmc1_dat2_py5", 245 "sdmmc1_dat2_py5",
215 "sdmmc1_dat3_py4"; 246 "sdmmc1_dat3_py4";
216 nvidia,function = "sdmmc1"; 247 nvidia,function = "sdmmc1";
217 nvidia,pull = <2>; 248 nvidia,pull = <TEGRA_PIN_PULL_UP>;
218 nvidia,tristate = <0>; 249 nvidia,tristate = <TEGRA_PIN_DISABLE>;
219 nvidia,enable-input = <1>; 250 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
220 }; 251 };
221 sdmmc1_wp_n_pv3 { 252 sdmmc1_wp_n_pv3 {
222 nvidia,pins = "sdmmc1_wp_n_pv3"; 253 nvidia,pins = "sdmmc1_wp_n_pv3";
223 nvidia,function = "spi4"; 254 nvidia,function = "spi4";
224 nvidia,pull = <2>; 255 nvidia,pull = <TEGRA_PIN_PULL_UP>;
225 nvidia,tristate = <0>; 256 nvidia,tristate = <TEGRA_PIN_DISABLE>;
226 nvidia,enable-input = <0>; 257 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
227 }; 258 };
228 sdmmc3_clk_pa6 { 259 sdmmc3_clk_pa6 {
229 nvidia,pins = "sdmmc3_clk_pa6"; 260 nvidia,pins = "sdmmc3_clk_pa6";
230 nvidia,function = "sdmmc3"; 261 nvidia,function = "sdmmc3";
231 nvidia,pull = <0>; 262 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
232 nvidia,tristate = <0>; 263 nvidia,tristate = <TEGRA_PIN_DISABLE>;
233 nvidia,enable-input = <1>; 264 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
234 }; 265 };
235 sdmmc3_cmd_pa7 { 266 sdmmc3_cmd_pa7 {
236 nvidia,pins = "sdmmc3_cmd_pa7", 267 nvidia,pins = "sdmmc3_cmd_pa7",
@@ -242,16 +273,16 @@
242 "sdmmc3_clk_lb_out_pee4", 273 "sdmmc3_clk_lb_out_pee4",
243 "sdmmc3_clk_lb_in_pee5"; 274 "sdmmc3_clk_lb_in_pee5";
244 nvidia,function = "sdmmc3"; 275 nvidia,function = "sdmmc3";
245 nvidia,pull = <2>; 276 nvidia,pull = <TEGRA_PIN_PULL_UP>;
246 nvidia,tristate = <0>; 277 nvidia,tristate = <TEGRA_PIN_DISABLE>;
247 nvidia,enable-input = <1>; 278 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
248 }; 279 };
249 sdmmc4_clk_pcc4 { 280 sdmmc4_clk_pcc4 {
250 nvidia,pins = "sdmmc4_clk_pcc4"; 281 nvidia,pins = "sdmmc4_clk_pcc4";
251 nvidia,function = "sdmmc4"; 282 nvidia,function = "sdmmc4";
252 nvidia,pull = <0>; 283 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
253 nvidia,tristate = <0>; 284 nvidia,tristate = <TEGRA_PIN_DISABLE>;
254 nvidia,enable-input = <1>; 285 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
255 }; 286 };
256 sdmmc4_cmd_pt7 { 287 sdmmc4_cmd_pt7 {
257 nvidia,pins = "sdmmc4_cmd_pt7", 288 nvidia,pins = "sdmmc4_cmd_pt7",
@@ -264,16 +295,16 @@
264 "sdmmc4_dat6_paa6", 295 "sdmmc4_dat6_paa6",
265 "sdmmc4_dat7_paa7"; 296 "sdmmc4_dat7_paa7";
266 nvidia,function = "sdmmc4"; 297 nvidia,function = "sdmmc4";
267 nvidia,pull = <2>; 298 nvidia,pull = <TEGRA_PIN_PULL_UP>;
268 nvidia,tristate = <0>; 299 nvidia,tristate = <TEGRA_PIN_DISABLE>;
269 nvidia,enable-input = <1>; 300 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
270 }; 301 };
271 clk_32k_out_pa0 { 302 clk_32k_out_pa0 {
272 nvidia,pins = "clk_32k_out_pa0"; 303 nvidia,pins = "clk_32k_out_pa0";
273 nvidia,function = "blink"; 304 nvidia,function = "blink";
274 nvidia,pull = <0>; 305 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
275 nvidia,tristate = <0>; 306 nvidia,tristate = <TEGRA_PIN_DISABLE>;
276 nvidia,enable-input = <0>; 307 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
277 }; 308 };
278 kb_col0_pq0 { 309 kb_col0_pq0 {
279 nvidia,pins = "kb_col0_pq0", 310 nvidia,pins = "kb_col0_pq0",
@@ -283,265 +314,265 @@
283 "kb_row1_pr1", 314 "kb_row1_pr1",
284 "kb_row2_pr2"; 315 "kb_row2_pr2";
285 nvidia,function = "kbc"; 316 nvidia,function = "kbc";
286 nvidia,pull = <2>; 317 nvidia,pull = <TEGRA_PIN_PULL_UP>;
287 nvidia,tristate = <0>; 318 nvidia,tristate = <TEGRA_PIN_DISABLE>;
288 nvidia,enable-input = <1>; 319 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
289 }; 320 };
290 dap3_din_pp1 { 321 dap3_din_pp1 {
291 nvidia,pins = "dap3_din_pp1", 322 nvidia,pins = "dap3_din_pp1",
292 "dap3_sclk_pp3"; 323 "dap3_sclk_pp3";
293 nvidia,function = "displayb"; 324 nvidia,function = "displayb";
294 nvidia,pull = <0>; 325 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
295 nvidia,tristate = <1>; 326 nvidia,tristate = <TEGRA_PIN_ENABLE>;
296 nvidia,enable-input = <0>; 327 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
297 }; 328 };
298 pv0 { 329 pv0 {
299 nvidia,pins = "pv0"; 330 nvidia,pins = "pv0";
300 nvidia,function = "rsvd4"; 331 nvidia,function = "rsvd4";
301 nvidia,pull = <0>; 332 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
302 nvidia,tristate = <1>; 333 nvidia,tristate = <TEGRA_PIN_ENABLE>;
303 nvidia,enable-input = <0>; 334 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
304 }; 335 };
305 kb_row7_pr7 { 336 kb_row7_pr7 {
306 nvidia,pins = "kb_row7_pr7"; 337 nvidia,pins = "kb_row7_pr7";
307 nvidia,function = "rsvd2"; 338 nvidia,function = "rsvd2";
308 nvidia,pull = <2>; 339 nvidia,pull = <TEGRA_PIN_PULL_UP>;
309 nvidia,tristate = <0>; 340 nvidia,tristate = <TEGRA_PIN_DISABLE>;
310 nvidia,enable-input = <1>; 341 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
311 }; 342 };
312 kb_row10_ps2 { 343 kb_row10_ps2 {
313 nvidia,pins = "kb_row10_ps2"; 344 nvidia,pins = "kb_row10_ps2";
314 nvidia,function = "uarta"; 345 nvidia,function = "uarta";
315 nvidia,pull = <0>; 346 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
316 nvidia,tristate = <1>; 347 nvidia,tristate = <TEGRA_PIN_ENABLE>;
317 nvidia,enable-input = <1>; 348 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
318 }; 349 };
319 kb_row9_ps1 { 350 kb_row9_ps1 {
320 nvidia,pins = "kb_row9_ps1"; 351 nvidia,pins = "kb_row9_ps1";
321 nvidia,function = "uarta"; 352 nvidia,function = "uarta";
322 nvidia,pull = <0>; 353 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
323 nvidia,tristate = <0>; 354 nvidia,tristate = <TEGRA_PIN_DISABLE>;
324 nvidia,enable-input = <0>; 355 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
325 }; 356 };
326 pwr_i2c_scl_pz6 { 357 pwr_i2c_scl_pz6 {
327 nvidia,pins = "pwr_i2c_scl_pz6", 358 nvidia,pins = "pwr_i2c_scl_pz6",
328 "pwr_i2c_sda_pz7"; 359 "pwr_i2c_sda_pz7";
329 nvidia,function = "i2cpwr"; 360 nvidia,function = "i2cpwr";
330 nvidia,pull = <0>; 361 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
331 nvidia,tristate = <0>; 362 nvidia,tristate = <TEGRA_PIN_DISABLE>;
332 nvidia,enable-input = <1>; 363 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
333 nvidia,lock = <0>; 364 nvidia,lock = <TEGRA_PIN_DISABLE>;
334 nvidia,open-drain = <0>; 365 nvidia,open-drain = <TEGRA_PIN_DISABLE>;
335 }; 366 };
336 sys_clk_req_pz5 { 367 sys_clk_req_pz5 {
337 nvidia,pins = "sys_clk_req_pz5"; 368 nvidia,pins = "sys_clk_req_pz5";
338 nvidia,function = "sysclk"; 369 nvidia,function = "sysclk";
339 nvidia,pull = <0>; 370 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
340 nvidia,tristate = <0>; 371 nvidia,tristate = <TEGRA_PIN_DISABLE>;
341 nvidia,enable-input = <0>; 372 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
342 }; 373 };
343 core_pwr_req { 374 core_pwr_req {
344 nvidia,pins = "core_pwr_req"; 375 nvidia,pins = "core_pwr_req";
345 nvidia,function = "pwron"; 376 nvidia,function = "pwron";
346 nvidia,pull = <0>; 377 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
347 nvidia,tristate = <0>; 378 nvidia,tristate = <TEGRA_PIN_DISABLE>;
348 nvidia,enable-input = <0>; 379 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
349 }; 380 };
350 cpu_pwr_req { 381 cpu_pwr_req {
351 nvidia,pins = "cpu_pwr_req"; 382 nvidia,pins = "cpu_pwr_req";
352 nvidia,function = "cpu"; 383 nvidia,function = "cpu";
353 nvidia,pull = <0>; 384 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
354 nvidia,tristate = <0>; 385 nvidia,tristate = <TEGRA_PIN_DISABLE>;
355 nvidia,enable-input = <0>; 386 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
356 }; 387 };
357 pwr_int_n { 388 pwr_int_n {
358 nvidia,pins = "pwr_int_n"; 389 nvidia,pins = "pwr_int_n";
359 nvidia,function = "pmi"; 390 nvidia,function = "pmi";
360 nvidia,pull = <0>; 391 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
361 nvidia,tristate = <1>; 392 nvidia,tristate = <TEGRA_PIN_ENABLE>;
362 nvidia,enable-input = <1>; 393 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
363 }; 394 };
364 reset_out_n { 395 reset_out_n {
365 nvidia,pins = "reset_out_n"; 396 nvidia,pins = "reset_out_n";
366 nvidia,function = "reset_out_n"; 397 nvidia,function = "reset_out_n";
367 nvidia,pull = <0>; 398 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
368 nvidia,tristate = <0>; 399 nvidia,tristate = <TEGRA_PIN_DISABLE>;
369 nvidia,enable-input = <0>; 400 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
370 }; 401 };
371 clk3_out_pee0 { 402 clk3_out_pee0 {
372 nvidia,pins = "clk3_out_pee0"; 403 nvidia,pins = "clk3_out_pee0";
373 nvidia,function = "extperiph3"; 404 nvidia,function = "extperiph3";
374 nvidia,pull = <0>; 405 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
375 nvidia,tristate = <0>; 406 nvidia,tristate = <TEGRA_PIN_DISABLE>;
376 nvidia,enable-input = <0>; 407 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
377 }; 408 };
378 gen1_i2c_scl_pc4 { 409 gen1_i2c_scl_pc4 {
379 nvidia,pins = "gen1_i2c_scl_pc4", 410 nvidia,pins = "gen1_i2c_scl_pc4",
380 "gen1_i2c_sda_pc5"; 411 "gen1_i2c_sda_pc5";
381 nvidia,function = "i2c1"; 412 nvidia,function = "i2c1";
382 nvidia,pull = <0>; 413 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
383 nvidia,tristate = <0>; 414 nvidia,tristate = <TEGRA_PIN_DISABLE>;
384 nvidia,enable-input = <1>; 415 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
385 nvidia,lock = <0>; 416 nvidia,lock = <TEGRA_PIN_DISABLE>;
386 nvidia,open-drain = <0>; 417 nvidia,open-drain = <TEGRA_PIN_DISABLE>;
387 }; 418 };
388 uart2_cts_n_pj5 { 419 uart2_cts_n_pj5 {
389 nvidia,pins = "uart2_cts_n_pj5"; 420 nvidia,pins = "uart2_cts_n_pj5";
390 nvidia,function = "uartb"; 421 nvidia,function = "uartb";
391 nvidia,pull = <0>; 422 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
392 nvidia,tristate = <1>; 423 nvidia,tristate = <TEGRA_PIN_ENABLE>;
393 nvidia,enable-input = <1>; 424 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
394 }; 425 };
395 uart2_rts_n_pj6 { 426 uart2_rts_n_pj6 {
396 nvidia,pins = "uart2_rts_n_pj6"; 427 nvidia,pins = "uart2_rts_n_pj6";
397 nvidia,function = "uartb"; 428 nvidia,function = "uartb";
398 nvidia,pull = <0>; 429 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
399 nvidia,tristate = <0>; 430 nvidia,tristate = <TEGRA_PIN_DISABLE>;
400 nvidia,enable-input = <0>; 431 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
401 }; 432 };
402 uart2_rxd_pc3 { 433 uart2_rxd_pc3 {
403 nvidia,pins = "uart2_rxd_pc3"; 434 nvidia,pins = "uart2_rxd_pc3";
404 nvidia,function = "irda"; 435 nvidia,function = "irda";
405 nvidia,pull = <0>; 436 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
406 nvidia,tristate = <1>; 437 nvidia,tristate = <TEGRA_PIN_ENABLE>;
407 nvidia,enable-input = <1>; 438 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
408 }; 439 };
409 uart2_txd_pc2 { 440 uart2_txd_pc2 {
410 nvidia,pins = "uart2_txd_pc2"; 441 nvidia,pins = "uart2_txd_pc2";
411 nvidia,function = "irda"; 442 nvidia,function = "irda";
412 nvidia,pull = <0>; 443 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
413 nvidia,tristate = <0>; 444 nvidia,tristate = <TEGRA_PIN_DISABLE>;
414 nvidia,enable-input = <0>; 445 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
415 }; 446 };
416 uart3_cts_n_pa1 { 447 uart3_cts_n_pa1 {
417 nvidia,pins = "uart3_cts_n_pa1", 448 nvidia,pins = "uart3_cts_n_pa1",
418 "uart3_rxd_pw7"; 449 "uart3_rxd_pw7";
419 nvidia,function = "uartc"; 450 nvidia,function = "uartc";
420 nvidia,pull = <0>; 451 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
421 nvidia,tristate = <1>; 452 nvidia,tristate = <TEGRA_PIN_ENABLE>;
422 nvidia,enable-input = <1>; 453 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
423 }; 454 };
424 uart3_rts_n_pc0 { 455 uart3_rts_n_pc0 {
425 nvidia,pins = "uart3_rts_n_pc0", 456 nvidia,pins = "uart3_rts_n_pc0",
426 "uart3_txd_pw6"; 457 "uart3_txd_pw6";
427 nvidia,function = "uartc"; 458 nvidia,function = "uartc";
428 nvidia,pull = <0>; 459 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
429 nvidia,tristate = <0>; 460 nvidia,tristate = <TEGRA_PIN_DISABLE>;
430 nvidia,enable-input = <0>; 461 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
431 }; 462 };
432 owr { 463 owr {
433 nvidia,pins = "owr"; 464 nvidia,pins = "owr";
434 nvidia,function = "owr"; 465 nvidia,function = "owr";
435 nvidia,pull = <0>; 466 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
436 nvidia,tristate = <0>; 467 nvidia,tristate = <TEGRA_PIN_DISABLE>;
437 nvidia,enable-input = <1>; 468 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
438 }; 469 };
439 hdmi_cec_pee3 { 470 hdmi_cec_pee3 {
440 nvidia,pins = "hdmi_cec_pee3"; 471 nvidia,pins = "hdmi_cec_pee3";
441 nvidia,function = "cec"; 472 nvidia,function = "cec";
442 nvidia,pull = <0>; 473 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
443 nvidia,tristate = <0>; 474 nvidia,tristate = <TEGRA_PIN_DISABLE>;
444 nvidia,enable-input = <1>; 475 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
445 nvidia,lock = <0>; 476 nvidia,lock = <TEGRA_PIN_DISABLE>;
446 nvidia,open-drain = <0>; 477 nvidia,open-drain = <TEGRA_PIN_DISABLE>;
447 }; 478 };
448 ddc_scl_pv4 { 479 ddc_scl_pv4 {
449 nvidia,pins = "ddc_scl_pv4", 480 nvidia,pins = "ddc_scl_pv4",
450 "ddc_sda_pv5"; 481 "ddc_sda_pv5";
451 nvidia,function = "i2c4"; 482 nvidia,function = "i2c4";
452 nvidia,pull = <0>; 483 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
453 nvidia,tristate = <0>; 484 nvidia,tristate = <TEGRA_PIN_DISABLE>;
454 nvidia,enable-input = <1>; 485 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
455 nvidia,lock = <0>; 486 nvidia,lock = <TEGRA_PIN_DISABLE>;
456 nvidia,rcv-sel = <1>; 487 nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
457 }; 488 };
458 spdif_in_pk6 { 489 spdif_in_pk6 {
459 nvidia,pins = "spdif_in_pk6"; 490 nvidia,pins = "spdif_in_pk6";
460 nvidia,function = "usb"; 491 nvidia,function = "usb";
461 nvidia,pull = <2>; 492 nvidia,pull = <TEGRA_PIN_PULL_UP>;
462 nvidia,tristate = <0>; 493 nvidia,tristate = <TEGRA_PIN_DISABLE>;
463 nvidia,enable-input = <1>; 494 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
464 nvidia,lock = <0>; 495 nvidia,lock = <TEGRA_PIN_DISABLE>;
465 }; 496 };
466 usb_vbus_en0_pn4 { 497 usb_vbus_en0_pn4 {
467 nvidia,pins = "usb_vbus_en0_pn4"; 498 nvidia,pins = "usb_vbus_en0_pn4";
468 nvidia,function = "usb"; 499 nvidia,function = "usb";
469 nvidia,pull = <2>; 500 nvidia,pull = <TEGRA_PIN_PULL_UP>;
470 nvidia,tristate = <0>; 501 nvidia,tristate = <TEGRA_PIN_DISABLE>;
471 nvidia,enable-input = <1>; 502 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
472 nvidia,lock = <0>; 503 nvidia,lock = <TEGRA_PIN_DISABLE>;
473 nvidia,open-drain = <1>; 504 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
474 }; 505 };
475 gpio_x6_aud_px6 { 506 gpio_x6_aud_px6 {
476 nvidia,pins = "gpio_x6_aud_px6"; 507 nvidia,pins = "gpio_x6_aud_px6";
477 nvidia,function = "spi6"; 508 nvidia,function = "spi6";
478 nvidia,pull = <2>; 509 nvidia,pull = <TEGRA_PIN_PULL_UP>;
479 nvidia,tristate = <1>; 510 nvidia,tristate = <TEGRA_PIN_ENABLE>;
480 nvidia,enable-input = <1>; 511 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
481 }; 512 };
482 gpio_x4_aud_px4 { 513 gpio_x4_aud_px4 {
483 nvidia,pins = "gpio_x4_aud_px4", 514 nvidia,pins = "gpio_x4_aud_px4",
484 "gpio_x7_aud_px7"; 515 "gpio_x7_aud_px7";
485 nvidia,function = "rsvd1"; 516 nvidia,function = "rsvd1";
486 nvidia,pull = <1>; 517 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
487 nvidia,tristate = <0>; 518 nvidia,tristate = <TEGRA_PIN_DISABLE>;
488 nvidia,enable-input = <0>; 519 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
489 }; 520 };
490 gpio_x5_aud_px5 { 521 gpio_x5_aud_px5 {
491 nvidia,pins = "gpio_x5_aud_px5"; 522 nvidia,pins = "gpio_x5_aud_px5";
492 nvidia,function = "rsvd1"; 523 nvidia,function = "rsvd1";
493 nvidia,pull = <2>; 524 nvidia,pull = <TEGRA_PIN_PULL_UP>;
494 nvidia,tristate = <0>; 525 nvidia,tristate = <TEGRA_PIN_DISABLE>;
495 nvidia,enable-input = <1>; 526 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
496 }; 527 };
497 gpio_w2_aud_pw2 { 528 gpio_w2_aud_pw2 {
498 nvidia,pins = "gpio_w2_aud_pw2"; 529 nvidia,pins = "gpio_w2_aud_pw2";
499 nvidia,function = "rsvd2"; 530 nvidia,function = "rsvd2";
500 nvidia,pull = <2>; 531 nvidia,pull = <TEGRA_PIN_PULL_UP>;
501 nvidia,tristate = <0>; 532 nvidia,tristate = <TEGRA_PIN_DISABLE>;
502 nvidia,enable-input = <1>; 533 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
503 }; 534 };
504 gpio_w3_aud_pw3 { 535 gpio_w3_aud_pw3 {
505 nvidia,pins = "gpio_w3_aud_pw3"; 536 nvidia,pins = "gpio_w3_aud_pw3";
506 nvidia,function = "spi6"; 537 nvidia,function = "spi6";
507 nvidia,pull = <2>; 538 nvidia,pull = <TEGRA_PIN_PULL_UP>;
508 nvidia,tristate = <0>; 539 nvidia,tristate = <TEGRA_PIN_DISABLE>;
509 nvidia,enable-input = <1>; 540 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
510 }; 541 };
511 gpio_x1_aud_px1 { 542 gpio_x1_aud_px1 {
512 nvidia,pins = "gpio_x1_aud_px1"; 543 nvidia,pins = "gpio_x1_aud_px1";
513 nvidia,function = "rsvd4"; 544 nvidia,function = "rsvd4";
514 nvidia,pull = <1>; 545 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
515 nvidia,tristate = <0>; 546 nvidia,tristate = <TEGRA_PIN_DISABLE>;
516 nvidia,enable-input = <1>; 547 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
517 }; 548 };
518 gpio_x3_aud_px3 { 549 gpio_x3_aud_px3 {
519 nvidia,pins = "gpio_x3_aud_px3"; 550 nvidia,pins = "gpio_x3_aud_px3";
520 nvidia,function = "rsvd4"; 551 nvidia,function = "rsvd4";
521 nvidia,pull = <2>; 552 nvidia,pull = <TEGRA_PIN_PULL_UP>;
522 nvidia,tristate = <0>; 553 nvidia,tristate = <TEGRA_PIN_DISABLE>;
523 nvidia,enable-input = <1>; 554 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
524 }; 555 };
525 dap3_fs_pp0 { 556 dap3_fs_pp0 {
526 nvidia,pins = "dap3_fs_pp0"; 557 nvidia,pins = "dap3_fs_pp0";
527 nvidia,function = "i2s2"; 558 nvidia,function = "i2s2";
528 nvidia,pull = <1>; 559 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
529 nvidia,tristate = <0>; 560 nvidia,tristate = <TEGRA_PIN_DISABLE>;
530 nvidia,enable-input = <0>; 561 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
531 }; 562 };
532 dap3_dout_pp2 { 563 dap3_dout_pp2 {
533 nvidia,pins = "dap3_dout_pp2"; 564 nvidia,pins = "dap3_dout_pp2";
534 nvidia,function = "i2s2"; 565 nvidia,function = "i2s2";
535 nvidia,pull = <1>; 566 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
536 nvidia,tristate = <0>; 567 nvidia,tristate = <TEGRA_PIN_DISABLE>;
537 nvidia,enable-input = <0>; 568 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
538 }; 569 };
539 pv1 { 570 pv1 {
540 nvidia,pins = "pv1"; 571 nvidia,pins = "pv1";
541 nvidia,function = "rsvd1"; 572 nvidia,function = "rsvd1";
542 nvidia,pull = <0>; 573 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
543 nvidia,tristate = <0>; 574 nvidia,tristate = <TEGRA_PIN_DISABLE>;
544 nvidia,enable-input = <1>; 575 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
545 }; 576 };
546 pbb3 { 577 pbb3 {
547 nvidia,pins = "pbb3", 578 nvidia,pins = "pbb3",
@@ -549,25 +580,25 @@
549 "pbb6", 580 "pbb6",
550 "pbb7"; 581 "pbb7";
551 nvidia,function = "rsvd4"; 582 nvidia,function = "rsvd4";
552 nvidia,pull = <1>; 583 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
553 nvidia,tristate = <0>; 584 nvidia,tristate = <TEGRA_PIN_DISABLE>;
554 nvidia,enable-input = <0>; 585 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
555 }; 586 };
556 pcc1 { 587 pcc1 {
557 nvidia,pins = "pcc1", 588 nvidia,pins = "pcc1",
558 "pcc2"; 589 "pcc2";
559 nvidia,function = "rsvd4"; 590 nvidia,function = "rsvd4";
560 nvidia,pull = <1>; 591 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
561 nvidia,tristate = <0>; 592 nvidia,tristate = <TEGRA_PIN_DISABLE>;
562 nvidia,enable-input = <1>; 593 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
563 }; 594 };
564 gmi_ad0_pg0 { 595 gmi_ad0_pg0 {
565 nvidia,pins = "gmi_ad0_pg0", 596 nvidia,pins = "gmi_ad0_pg0",
566 "gmi_ad1_pg1"; 597 "gmi_ad1_pg1";
567 nvidia,function = "gmi"; 598 nvidia,function = "gmi";
568 nvidia,pull = <0>; 599 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
569 nvidia,tristate = <0>; 600 nvidia,tristate = <TEGRA_PIN_DISABLE>;
570 nvidia,enable-input = <0>; 601 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
571 }; 602 };
572 gmi_ad10_ph2 { 603 gmi_ad10_ph2 {
573 nvidia,pins = "gmi_ad10_ph2", 604 nvidia,pins = "gmi_ad10_ph2",
@@ -576,17 +607,17 @@
576 "gmi_ad8_ph0", 607 "gmi_ad8_ph0",
577 "gmi_clk_pk1"; 608 "gmi_clk_pk1";
578 nvidia,function = "gmi"; 609 nvidia,function = "gmi";
579 nvidia,pull = <1>; 610 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
580 nvidia,tristate = <0>; 611 nvidia,tristate = <TEGRA_PIN_DISABLE>;
581 nvidia,enable-input = <0>; 612 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
582 }; 613 };
583 gmi_ad2_pg2 { 614 gmi_ad2_pg2 {
584 nvidia,pins = "gmi_ad2_pg2", 615 nvidia,pins = "gmi_ad2_pg2",
585 "gmi_ad3_pg3"; 616 "gmi_ad3_pg3";
586 nvidia,function = "gmi"; 617 nvidia,function = "gmi";
587 nvidia,pull = <0>; 618 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
588 nvidia,tristate = <0>; 619 nvidia,tristate = <TEGRA_PIN_DISABLE>;
589 nvidia,enable-input = <1>; 620 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
590 }; 621 };
591 gmi_adv_n_pk0 { 622 gmi_adv_n_pk0 {
592 nvidia,pins = "gmi_adv_n_pk0", 623 nvidia,pins = "gmi_adv_n_pk0",
@@ -598,39 +629,39 @@
598 "gmi_iordy_pi5", 629 "gmi_iordy_pi5",
599 "gmi_wp_n_pc7"; 630 "gmi_wp_n_pc7";
600 nvidia,function = "gmi"; 631 nvidia,function = "gmi";
601 nvidia,pull = <2>; 632 nvidia,pull = <TEGRA_PIN_PULL_UP>;
602 nvidia,tristate = <0>; 633 nvidia,tristate = <TEGRA_PIN_DISABLE>;
603 nvidia,enable-input = <1>; 634 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
604 }; 635 };
605 gmi_cs3_n_pk4 { 636 gmi_cs3_n_pk4 {
606 nvidia,pins = "gmi_cs3_n_pk4"; 637 nvidia,pins = "gmi_cs3_n_pk4";
607 nvidia,function = "gmi"; 638 nvidia,function = "gmi";
608 nvidia,pull = <2>; 639 nvidia,pull = <TEGRA_PIN_PULL_UP>;
609 nvidia,tristate = <0>; 640 nvidia,tristate = <TEGRA_PIN_DISABLE>;
610 nvidia,enable-input = <0>; 641 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
611 }; 642 };
612 clk2_req_pcc5 { 643 clk2_req_pcc5 {
613 nvidia,pins = "clk2_req_pcc5"; 644 nvidia,pins = "clk2_req_pcc5";
614 nvidia,function = "rsvd4"; 645 nvidia,function = "rsvd4";
615 nvidia,pull = <0>; 646 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
616 nvidia,tristate = <0>; 647 nvidia,tristate = <TEGRA_PIN_DISABLE>;
617 nvidia,enable-input = <0>; 648 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
618 }; 649 };
619 kb_col3_pq3 { 650 kb_col3_pq3 {
620 nvidia,pins = "kb_col3_pq3", 651 nvidia,pins = "kb_col3_pq3",
621 "kb_col6_pq6", 652 "kb_col6_pq6",
622 "kb_col7_pq7"; 653 "kb_col7_pq7";
623 nvidia,function = "kbc"; 654 nvidia,function = "kbc";
624 nvidia,pull = <2>; 655 nvidia,pull = <TEGRA_PIN_PULL_UP>;
625 nvidia,tristate = <0>; 656 nvidia,tristate = <TEGRA_PIN_DISABLE>;
626 nvidia,enable-input = <0>; 657 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
627 }; 658 };
628 kb_col5_pq5 { 659 kb_col5_pq5 {
629 nvidia,pins = "kb_col5_pq5"; 660 nvidia,pins = "kb_col5_pq5";
630 nvidia,function = "kbc"; 661 nvidia,function = "kbc";
631 nvidia,pull = <2>; 662 nvidia,pull = <TEGRA_PIN_PULL_UP>;
632 nvidia,tristate = <0>; 663 nvidia,tristate = <TEGRA_PIN_DISABLE>;
633 nvidia,enable-input = <1>; 664 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
634 }; 665 };
635 kb_row3_pr3 { 666 kb_row3_pr3 {
636 nvidia,pins = "kb_row3_pr3", 667 nvidia,pins = "kb_row3_pr3",
@@ -638,77 +669,77 @@
638 "kb_row6_pr6", 669 "kb_row6_pr6",
639 "kb_row8_ps0"; 670 "kb_row8_ps0";
640 nvidia,function = "kbc"; 671 nvidia,function = "kbc";
641 nvidia,pull = <1>; 672 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
642 nvidia,tristate = <0>; 673 nvidia,tristate = <TEGRA_PIN_DISABLE>;
643 nvidia,enable-input = <1>; 674 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
644 }; 675 };
645 clk3_req_pee1 { 676 clk3_req_pee1 {
646 nvidia,pins = "clk3_req_pee1"; 677 nvidia,pins = "clk3_req_pee1";
647 nvidia,function = "rsvd4"; 678 nvidia,function = "rsvd4";
648 nvidia,pull = <0>; 679 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
649 nvidia,tristate = <0>; 680 nvidia,tristate = <TEGRA_PIN_DISABLE>;
650 nvidia,enable-input = <0>; 681 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
651 }; 682 };
652 pu4 { 683 pu4 {
653 nvidia,pins = "pu4"; 684 nvidia,pins = "pu4";
654 nvidia,function = "displayb"; 685 nvidia,function = "displayb";
655 nvidia,pull = <0>; 686 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
656 nvidia,tristate = <0>; 687 nvidia,tristate = <TEGRA_PIN_DISABLE>;
657 nvidia,enable-input = <0>; 688 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
658 }; 689 };
659 pu5 { 690 pu5 {
660 nvidia,pins = "pu5", 691 nvidia,pins = "pu5",
661 "pu6"; 692 "pu6";
662 nvidia,function = "displayb"; 693 nvidia,function = "displayb";
663 nvidia,pull = <0>; 694 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
664 nvidia,tristate = <0>; 695 nvidia,tristate = <TEGRA_PIN_DISABLE>;
665 nvidia,enable-input = <1>; 696 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
666 }; 697 };
667 hdmi_int_pn7 { 698 hdmi_int_pn7 {
668 nvidia,pins = "hdmi_int_pn7"; 699 nvidia,pins = "hdmi_int_pn7";
669 nvidia,function = "rsvd1"; 700 nvidia,function = "rsvd1";
670 nvidia,pull = <1>; 701 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
671 nvidia,tristate = <0>; 702 nvidia,tristate = <TEGRA_PIN_DISABLE>;
672 nvidia,enable-input = <1>; 703 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
673 }; 704 };
674 clk1_req_pee2 { 705 clk1_req_pee2 {
675 nvidia,pins = "clk1_req_pee2", 706 nvidia,pins = "clk1_req_pee2",
676 "usb_vbus_en1_pn5"; 707 "usb_vbus_en1_pn5";
677 nvidia,function = "rsvd4"; 708 nvidia,function = "rsvd4";
678 nvidia,pull = <1>; 709 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
679 nvidia,tristate = <1>; 710 nvidia,tristate = <TEGRA_PIN_ENABLE>;
680 nvidia,enable-input = <0>; 711 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
681 }; 712 };
682 713
683 drive_sdio1 { 714 drive_sdio1 {
684 nvidia,pins = "drive_sdio1"; 715 nvidia,pins = "drive_sdio1";
685 nvidia,high-speed-mode = <1>; 716 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
686 nvidia,schmitt = <0>; 717 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
687 nvidia,low-power-mode = <3>; 718 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
688 nvidia,pull-down-strength = <36>; 719 nvidia,pull-down-strength = <36>;
689 nvidia,pull-up-strength = <20>; 720 nvidia,pull-up-strength = <20>;
690 nvidia,slew-rate-rising = <2>; 721 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOW>;
691 nvidia,slew-rate-falling = <2>; 722 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOW>;
692 }; 723 };
693 drive_sdio3 { 724 drive_sdio3 {
694 nvidia,pins = "drive_sdio3"; 725 nvidia,pins = "drive_sdio3";
695 nvidia,high-speed-mode = <1>; 726 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
696 nvidia,schmitt = <0>; 727 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
697 nvidia,low-power-mode = <3>; 728 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
698 nvidia,pull-down-strength = <22>; 729 nvidia,pull-down-strength = <22>;
699 nvidia,pull-up-strength = <36>; 730 nvidia,pull-up-strength = <36>;
700 nvidia,slew-rate-rising = <0>; 731 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
701 nvidia,slew-rate-falling = <0>; 732 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
702 }; 733 };
703 drive_gma { 734 drive_gma {
704 nvidia,pins = "drive_gma"; 735 nvidia,pins = "drive_gma";
705 nvidia,high-speed-mode = <1>; 736 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
706 nvidia,schmitt = <0>; 737 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
707 nvidia,low-power-mode = <3>; 738 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
708 nvidia,pull-down-strength = <2>; 739 nvidia,pull-down-strength = <2>;
709 nvidia,pull-up-strength = <1>; 740 nvidia,pull-up-strength = <1>;
710 nvidia,slew-rate-rising = <0>; 741 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
711 nvidia,slew-rate-falling = <0>; 742 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
712 nvidia,drive-type = <1>; 743 nvidia,drive-type = <1>;
713 }; 744 };
714 }; 745 };
@@ -718,11 +749,15 @@
718 status = "okay"; 749 status = "okay";
719 }; 750 };
720 751
752 pwm@7000a000 {
753 status = "okay";
754 };
755
721 i2c@7000c000 { 756 i2c@7000c000 {
722 status = "okay"; 757 status = "okay";
723 clock-frequency = <100000>; 758 clock-frequency = <100000>;
724 759
725 battery: smart-battery { 760 battery: smart-battery@b {
726 compatible = "ti,bq20z45", "sbs,sbs-battery"; 761 compatible = "ti,bq20z45", "sbs,sbs-battery";
727 reg = <0xb>; 762 reg = <0xb>;
728 battery-name = "battery"; 763 battery-name = "battery";
@@ -731,7 +766,7 @@
731 power-supplies = <&charger>; 766 power-supplies = <&charger>;
732 }; 767 };
733 768
734 rt5640: rt5640 { 769 rt5640: rt5640@1c {
735 compatible = "realtek,rt5640"; 770 compatible = "realtek,rt5640";
736 reg = <0x1c>; 771 reg = <0x1c>;
737 interrupt-parent = <&gpio>; 772 interrupt-parent = <&gpio>;
@@ -749,11 +784,15 @@
749 }; 784 };
750 }; 785 };
751 786
787 hdmi_ddc: i2c@7000c700 {
788 status = "okay";
789 };
790
752 i2c@7000d000 { 791 i2c@7000d000 {
753 status = "okay"; 792 status = "okay";
754 clock-frequency = <400000>; 793 clock-frequency = <400000>;
755 794
756 tps51632 { 795 tps51632@43 {
757 compatible = "ti,tps51632"; 796 compatible = "ti,tps51632";
758 reg = <0x43>; 797 reg = <0x43>;
759 regulator-name = "vdd-cpu"; 798 regulator-name = "vdd-cpu";
@@ -763,7 +802,7 @@
763 regulator-always-on; 802 regulator-always-on;
764 }; 803 };
765 804
766 tps65090 { 805 tps65090@48 {
767 compatible = "ti,tps65090"; 806 compatible = "ti,tps65090";
768 reg = <0x48>; 807 reg = <0x48>;
769 interrupt-parent = <&gpio>; 808 interrupt-parent = <&gpio>;
@@ -806,7 +845,7 @@
806 regulator-boot-on; 845 regulator-boot-on;
807 }; 846 };
808 847
809 fet1 { 848 vdd_bl_reg: fet1 {
810 regulator-name = "vdd-lcd-bl"; 849 regulator-name = "vdd-lcd-bl";
811 }; 850 };
812 851
@@ -814,7 +853,7 @@
814 regulator-name = "vdd-modem-3v3"; 853 regulator-name = "vdd-modem-3v3";
815 }; 854 };
816 855
817 fet4 { 856 avdd_lcd_reg: fet4 {
818 regulator-name = "avdd-lcd"; 857 regulator-name = "avdd-lcd";
819 }; 858 };
820 859
@@ -846,7 +885,7 @@
846 }; 885 };
847 }; 886 };
848 887
849 palmas: tps65913 { 888 palmas: tps65913@58 {
850 compatible = "ti,palmas"; 889 compatible = "ti,palmas";
851 reg = <0x58>; 890 reg = <0x58>;
852 interrupts = <0 86 IRQ_TYPE_LEVEL_LOW>; 891 interrupts = <0 86 IRQ_TYPE_LEVEL_LOW>;
@@ -1046,7 +1085,7 @@
1046 }; 1085 };
1047 }; 1086 };
1048 1087
1049 pmc { 1088 pmc@7000e400 {
1050 nvidia,invert-interrupt; 1089 nvidia,invert-interrupt;
1051 nvidia,suspend-mode = <1>; 1090 nvidia,suspend-mode = <1>;
1052 nvidia,cpu-pwr-good-time = <500>; 1091 nvidia,cpu-pwr-good-time = <500>;
@@ -1057,7 +1096,7 @@
1057 nvidia,sys-clock-req-active-high; 1096 nvidia,sys-clock-req-active-high;
1058 }; 1097 };
1059 1098
1060 ahub { 1099 ahub@70080000 {
1061 i2s@70080400 { 1100 i2s@70080400 {
1062 status = "okay"; 1101 status = "okay";
1063 }; 1102 };
@@ -1084,12 +1123,23 @@
1084 vbus-supply = <&usb3_vbus_reg>; 1123 vbus-supply = <&usb3_vbus_reg>;
1085 }; 1124 };
1086 1125
1126 backlight: backlight {
1127 compatible = "pwm-backlight";
1128
1129 enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
1130 power-supply = <&vdd_bl_reg>;
1131 pwms = <&pwm 1 1000000>;
1132
1133 brightness-levels = <0 4 8 16 32 64 128 255>;
1134 default-brightness-level = <6>;
1135 };
1136
1087 clocks { 1137 clocks {
1088 compatible = "simple-bus"; 1138 compatible = "simple-bus";
1089 #address-cells = <1>; 1139 #address-cells = <1>;
1090 #size-cells = <0>; 1140 #size-cells = <0>;
1091 1141
1092 clk32k_in: clock { 1142 clk32k_in: clock@0 {
1093 compatible = "fixed-clock"; 1143 compatible = "fixed-clock";
1094 reg=<0>; 1144 reg=<0>;
1095 #clock-cells = <0>; 1145 #clock-cells = <0>;
@@ -1150,16 +1200,6 @@
1150 gpio = <&gpio TEGRA_GPIO(H, 5) GPIO_ACTIVE_HIGH>; 1200 gpio = <&gpio TEGRA_GPIO(H, 5) GPIO_ACTIVE_HIGH>;
1151 }; 1201 };
1152 1202
1153 lcd_bl_en_reg: regulator@2 {
1154 compatible = "regulator-fixed";
1155 reg = <2>;
1156 regulator-name = "lcd_bl_en";
1157 regulator-min-microvolt = <5000000>;
1158 regulator-max-microvolt = <5000000>;
1159 enable-active-high;
1160 gpio = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
1161 };
1162
1163 usb1_vbus_reg: regulator@3 { 1203 usb1_vbus_reg: regulator@3 {
1164 compatible = "regulator-fixed"; 1204 compatible = "regulator-fixed";
1165 reg = <3>; 1205 reg = <3>;
diff --git a/arch/arm/boot/dts/tegra114.dtsi b/arch/arm/boot/dts/tegra114.dtsi
index 731249fbe206..389e987ec281 100644
--- a/arch/arm/boot/dts/tegra114.dtsi
+++ b/arch/arm/boot/dts/tegra114.dtsi
@@ -1,5 +1,6 @@
1#include <dt-bindings/clock/tegra114-car.h> 1#include <dt-bindings/clock/tegra114-car.h>
2#include <dt-bindings/gpio/tegra-gpio.h> 2#include <dt-bindings/gpio/tegra-gpio.h>
3#include <dt-bindings/pinctrl/pinctrl-tegra.h>
3#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
4 5
5#include "skeleton.dtsi" 6#include "skeleton.dtsi"
@@ -15,7 +16,113 @@
15 serial3 = &uartd; 16 serial3 = &uartd;
16 }; 17 };
17 18
18 gic: interrupt-controller { 19 host1x@50000000 {
20 compatible = "nvidia,tegra114-host1x", "simple-bus";
21 reg = <0x50000000 0x00028000>;
22 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */
23 <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* general */
24 clocks = <&tegra_car TEGRA114_CLK_HOST1X>;
25 resets = <&tegra_car 28>;
26 reset-names = "host1x";
27
28 #address-cells = <1>;
29 #size-cells = <1>;
30
31 ranges = <0x54000000 0x54000000 0x01000000>;
32
33 gr2d@54140000 {
34 compatible = "nvidia,tegra114-gr2d", "nvidia,tegra20-gr2d";
35 reg = <0x54140000 0x00040000>;
36 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
37 clocks = <&tegra_car TEGRA114_CLK_GR2D>;
38 resets = <&tegra_car 21>;
39 reset-names = "2d";
40 };
41
42 gr3d@54180000 {
43 compatible = "nvidia,tegra114-gr3d", "nvidia,tegra20-gr3d";
44 reg = <0x54180000 0x00040000>;
45 clocks = <&tegra_car TEGRA114_CLK_GR3D>;
46 resets = <&tegra_car 24>;
47 reset-names = "3d";
48 };
49
50 dc@54200000 {
51 compatible = "nvidia,tegra114-dc", "nvidia,tegra20-dc";
52 reg = <0x54200000 0x00040000>;
53 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
54 clocks = <&tegra_car TEGRA114_CLK_DISP1>,
55 <&tegra_car TEGRA114_CLK_PLL_P>;
56 clock-names = "dc", "parent";
57 resets = <&tegra_car 27>;
58 reset-names = "dc";
59
60 rgb {
61 status = "disabled";
62 };
63 };
64
65 dc@54240000 {
66 compatible = "nvidia,tegra114-dc", "nvidia,tegra20-dc";
67 reg = <0x54240000 0x00040000>;
68 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
69 clocks = <&tegra_car TEGRA114_CLK_DISP2>,
70 <&tegra_car TEGRA114_CLK_PLL_P>;
71 clock-names = "dc", "parent";
72 resets = <&tegra_car 26>;
73 reset-names = "dc";
74
75 rgb {
76 status = "disabled";
77 };
78 };
79
80 hdmi@54280000 {
81 compatible = "nvidia,tegra114-hdmi";
82 reg = <0x54280000 0x00040000>;
83 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
84 clocks = <&tegra_car TEGRA114_CLK_HDMI>,
85 <&tegra_car TEGRA114_CLK_PLL_D2_OUT0>;
86 clock-names = "hdmi", "parent";
87 resets = <&tegra_car 51>;
88 reset-names = "hdmi";
89 status = "disabled";
90 };
91
92 dsi@54300000 {
93 compatible = "nvidia,tegra114-dsi";
94 reg = <0x54300000 0x00040000>;
95 clocks = <&tegra_car TEGRA114_CLK_DSIA>,
96 <&tegra_car TEGRA114_CLK_DSIALP>,
97 <&tegra_car TEGRA114_CLK_PLL_D_OUT0>;
98 clock-names = "dsi", "lp", "parent";
99 resets = <&tegra_car 48>;
100 reset-names = "dsi";
101 nvidia,mipi-calibrate = <&mipi 0x060>; /* DSIA & DSIB pads */
102 status = "disabled";
103
104 #address-cells = <1>;
105 #size-cells = <0>;
106 };
107
108 dsi@54400000 {
109 compatible = "nvidia,tegra114-dsi";
110 reg = <0x54400000 0x00040000>;
111 clocks = <&tegra_car TEGRA114_CLK_DSIB>,
112 <&tegra_car TEGRA114_CLK_DSIBLP>,
113 <&tegra_car TEGRA114_CLK_PLL_D2_OUT0>;
114 clock-names = "dsi", "lp", "parent";
115 resets = <&tegra_car 82>;
116 reset-names = "dsi";
117 nvidia,mipi-calibrate = <&mipi 0x180>; /* DSIC & DSID pads */
118 status = "disabled";
119
120 #address-cells = <1>;
121 #size-cells = <0>;
122 };
123 };
124
125 gic: interrupt-controller@50041000 {
19 compatible = "arm,cortex-a15-gic"; 126 compatible = "arm,cortex-a15-gic";
20 #interrupt-cells = <3>; 127 #interrupt-cells = <3>;
21 interrupt-controller; 128 interrupt-controller;
@@ -39,14 +146,14 @@
39 clocks = <&tegra_car TEGRA114_CLK_TIMER>; 146 clocks = <&tegra_car TEGRA114_CLK_TIMER>;
40 }; 147 };
41 148
42 tegra_car: clock { 149 tegra_car: clock@60006000 {
43 compatible = "nvidia,tegra114-car"; 150 compatible = "nvidia,tegra114-car";
44 reg = <0x60006000 0x1000>; 151 reg = <0x60006000 0x1000>;
45 #clock-cells = <1>; 152 #clock-cells = <1>;
46 #reset-cells = <1>; 153 #reset-cells = <1>;
47 }; 154 };
48 155
49 apbdma: dma { 156 apbdma: dma@6000a000 {
50 compatible = "nvidia,tegra114-apbdma"; 157 compatible = "nvidia,tegra114-apbdma";
51 reg = <0x6000a000 0x1400>; 158 reg = <0x6000a000 0x1400>;
52 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, 159 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
@@ -87,12 +194,12 @@
87 #dma-cells = <1>; 194 #dma-cells = <1>;
88 }; 195 };
89 196
90 ahb: ahb { 197 ahb: ahb@6000c004 {
91 compatible = "nvidia,tegra114-ahb", "nvidia,tegra30-ahb"; 198 compatible = "nvidia,tegra114-ahb", "nvidia,tegra30-ahb";
92 reg = <0x6000c004 0x14c>; 199 reg = <0x6000c004 0x14c>;
93 }; 200 };
94 201
95 gpio: gpio { 202 gpio: gpio@6000d000 {
96 compatible = "nvidia,tegra114-gpio", "nvidia,tegra30-gpio"; 203 compatible = "nvidia,tegra114-gpio", "nvidia,tegra30-gpio";
97 reg = <0x6000d000 0x1000>; 204 reg = <0x6000d000 0x1000>;
98 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>, 205 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
@@ -109,7 +216,7 @@
109 interrupt-controller; 216 interrupt-controller;
110 }; 217 };
111 218
112 pinmux: pinmux { 219 pinmux: pinmux@70000868 {
113 compatible = "nvidia,tegra114-pinmux"; 220 compatible = "nvidia,tegra114-pinmux";
114 reg = <0x70000868 0x148 /* Pad control registers */ 221 reg = <0x70000868 0x148 /* Pad control registers */
115 0x70003000 0x40c>; /* Mux registers */ 222 0x70003000 0x40c>; /* Mux registers */
@@ -175,7 +282,7 @@
175 status = "disabled"; 282 status = "disabled";
176 }; 283 };
177 284
178 pwm: pwm { 285 pwm: pwm@7000a000 {
179 compatible = "nvidia,tegra114-pwm", "nvidia,tegra20-pwm"; 286 compatible = "nvidia,tegra114-pwm", "nvidia,tegra20-pwm";
180 reg = <0x7000a000 0x100>; 287 reg = <0x7000a000 0x100>;
181 #pwm-cells = <2>; 288 #pwm-cells = <2>;
@@ -350,14 +457,14 @@
350 status = "disabled"; 457 status = "disabled";
351 }; 458 };
352 459
353 rtc { 460 rtc@7000e000 {
354 compatible = "nvidia,tegra114-rtc", "nvidia,tegra20-rtc"; 461 compatible = "nvidia,tegra114-rtc", "nvidia,tegra20-rtc";
355 reg = <0x7000e000 0x100>; 462 reg = <0x7000e000 0x100>;
356 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 463 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
357 clocks = <&tegra_car TEGRA114_CLK_RTC>; 464 clocks = <&tegra_car TEGRA114_CLK_RTC>;
358 }; 465 };
359 466
360 kbc { 467 kbc@7000e200 {
361 compatible = "nvidia,tegra114-kbc"; 468 compatible = "nvidia,tegra114-kbc";
362 reg = <0x7000e200 0x100>; 469 reg = <0x7000e200 0x100>;
363 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 470 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
@@ -367,14 +474,14 @@
367 status = "disabled"; 474 status = "disabled";
368 }; 475 };
369 476
370 pmc { 477 pmc@7000e400 {
371 compatible = "nvidia,tegra114-pmc"; 478 compatible = "nvidia,tegra114-pmc";
372 reg = <0x7000e400 0x400>; 479 reg = <0x7000e400 0x400>;
373 clocks = <&tegra_car TEGRA114_CLK_PCLK>, <&clk32k_in>; 480 clocks = <&tegra_car TEGRA114_CLK_PCLK>, <&clk32k_in>;
374 clock-names = "pclk", "clk32k_in"; 481 clock-names = "pclk", "clk32k_in";
375 }; 482 };
376 483
377 iommu { 484 iommu@70019010 {
378 compatible = "nvidia,tegra114-smmu", "nvidia,tegra30-smmu"; 485 compatible = "nvidia,tegra114-smmu", "nvidia,tegra30-smmu";
379 reg = <0x70019010 0x02c 486 reg = <0x70019010 0x02c
380 0x700191f0 0x010 487 0x700191f0 0x010
@@ -385,7 +492,7 @@
385 nvidia,ahb = <&ahb>; 492 nvidia,ahb = <&ahb>;
386 }; 493 };
387 494
388 ahub { 495 ahub@70080000 {
389 compatible = "nvidia,tegra114-ahub"; 496 compatible = "nvidia,tegra114-ahub";
390 reg = <0x70080000 0x200>, 497 reg = <0x70080000 0x200>,
391 <0x70080200 0x100>, 498 <0x70080200 0x100>,
@@ -479,6 +586,13 @@
479 }; 586 };
480 }; 587 };
481 588
589 mipi: mipi@700e3000 {
590 compatible = "nvidia,tegra114-mipi";
591 reg = <0x700e3000 0x100>;
592 clocks = <&tegra_car TEGRA114_CLK_MIPI_CAL>;
593 #nvidia,mipi-calibrate-cells = <1>;
594 };
595
482 sdhci@78000000 { 596 sdhci@78000000 {
483 compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci"; 597 compatible = "nvidia,tegra114-sdhci", "nvidia,tegra30-sdhci";
484 reg = <0x78000000 0x200>; 598 reg = <0x78000000 0x200>;
diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
index 431d67a2b413..c6dcef513e5d 100644
--- a/arch/arm/boot/dts/tegra124-venice2.dts
+++ b/arch/arm/boot/dts/tegra124-venice2.dts
@@ -1,19 +1,917 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra124.dtsi" 4#include "tegra124.dtsi"
4 5
5/ { 6/ {
6 model = "NVIDIA Tegra124 Venice2"; 7 model = "NVIDIA Tegra124 Venice2";
7 compatible = "nvidia,venice2", "nvidia,tegra124"; 8 compatible = "nvidia,venice2", "nvidia,tegra124";
8 9
10 aliases {
11 rtc0 = "/i2c@7000d000/as3722@40";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x80000000 0x80000000>; 16 reg = <0x80000000 0x80000000>;
11 }; 17 };
12 18
19 pinmux: pinmux@70000868 {
20 pinctrl-names = "default";
21 pinctrl-0 = <&pinmux_default>;
22
23 pinmux_default: common {
24 dap_mclk1_pw4 {
25 nvidia,pins = "dap_mclk1_pw4";
26 nvidia,function = "extperiph1";
27 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
28 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
29 nvidia,tristate = <TEGRA_PIN_DISABLE>;
30 };
31 dap1_din_pn1 {
32 nvidia,pins = "dap1_din_pn1";
33 nvidia,function = "i2s0";
34 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
35 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
36 nvidia,tristate = <TEGRA_PIN_ENABLE>;
37 };
38 dap1_dout_pn2 {
39 nvidia,pins = "dap1_dout_pn2",
40 "dap1_fs_pn0",
41 "dap1_sclk_pn3";
42 nvidia,function = "i2s0";
43 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
44 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
45 nvidia,tristate = <TEGRA_PIN_ENABLE>;
46 };
47 dap2_din_pa4 {
48 nvidia,pins = "dap2_din_pa4";
49 nvidia,function = "i2s1";
50 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
51 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
52 nvidia,tristate = <TEGRA_PIN_DISABLE>;
53 };
54 dap2_dout_pa5 {
55 nvidia,pins = "dap2_dout_pa5",
56 "dap2_fs_pa2",
57 "dap2_sclk_pa3";
58 nvidia,function = "i2s1";
59 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
60 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
61 nvidia,tristate = <TEGRA_PIN_DISABLE>;
62 };
63 dvfs_pwm_px0 {
64 nvidia,pins = "dvfs_pwm_px0",
65 "dvfs_clk_px2";
66 nvidia,function = "cldvfs";
67 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
68 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
69 nvidia,tristate = <TEGRA_PIN_DISABLE>;
70 };
71 ulpi_clk_py0 {
72 nvidia,pins = "ulpi_clk_py0",
73 "ulpi_nxt_py2",
74 "ulpi_stp_py3";
75 nvidia,function = "spi1";
76 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
77 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
78 nvidia,tristate = <TEGRA_PIN_DISABLE>;
79 };
80 ulpi_dir_py1 {
81 nvidia,pins = "ulpi_dir_py1";
82 nvidia,function = "spi1";
83 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
84 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
85 nvidia,tristate = <TEGRA_PIN_DISABLE>;
86 };
87 cam_i2c_scl_pbb1 {
88 nvidia,pins = "cam_i2c_scl_pbb1",
89 "cam_i2c_sda_pbb2";
90 nvidia,function = "i2c3";
91 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
92 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
93 nvidia,tristate = <TEGRA_PIN_DISABLE>;
94 nvidia,lock = <TEGRA_PIN_DISABLE>;
95 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
96 };
97 gen2_i2c_scl_pt5 {
98 nvidia,pins = "gen2_i2c_scl_pt5",
99 "gen2_i2c_sda_pt6";
100 nvidia,function = "i2c2";
101 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
102 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
103 nvidia,tristate = <TEGRA_PIN_DISABLE>;
104 nvidia,lock = <TEGRA_PIN_DISABLE>;
105 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
106 };
107 pg4 {
108 nvidia,pins = "pg4",
109 "pg5",
110 "pg6",
111 "pi3";
112 nvidia,function = "spi4";
113 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
114 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
115 nvidia,tristate = <TEGRA_PIN_DISABLE>;
116 };
117 pg7 {
118 nvidia,pins = "pg7";
119 nvidia,function = "spi4";
120 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
121 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
122 nvidia,tristate = <TEGRA_PIN_DISABLE>;
123 };
124 ph1 {
125 nvidia,pins = "ph1";
126 nvidia,function = "pwm1";
127 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
128 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
129 nvidia,tristate = <TEGRA_PIN_DISABLE>;
130 };
131 pk0 {
132 nvidia,pins = "pk0",
133 "kb_row15_ps7",
134 "clk_32k_out_pa0";
135 nvidia,function = "soc";
136 nvidia,pull = <TEGRA_PIN_PULL_UP>;
137 nvidia,tristate = <TEGRA_PIN_DISABLE>;
138 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
139 };
140 sdmmc1_clk_pz0 {
141 nvidia,pins = "sdmmc1_clk_pz0",
142 "sdmmc1_cmd_pz1",
143 "sdmmc1_dat0_py7",
144 "sdmmc1_dat1_py6",
145 "sdmmc1_dat2_py5",
146 "sdmmc1_dat3_py4";
147 nvidia,function = "sdmmc1";
148 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
149 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
150 nvidia,tristate = <TEGRA_PIN_DISABLE>;
151 };
152 sdmmc1_cmd_pz1 {
153 nvidia,pins = "sdmmc1_cmd_pz1",
154 "sdmmc1_dat0_py7",
155 "sdmmc1_dat1_py6",
156 "sdmmc1_dat2_py5",
157 "sdmmc1_dat3_py4";
158 nvidia,function = "sdmmc1";
159 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
160 nvidia,pull = <TEGRA_PIN_PULL_UP>;
161 nvidia,tristate = <TEGRA_PIN_DISABLE>;
162 };
163 sdmmc3_clk_pa6 {
164 nvidia,pins = "sdmmc3_clk_pa6";
165 nvidia,function = "sdmmc3";
166 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
167 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
168 nvidia,tristate = <TEGRA_PIN_DISABLE>;
169 };
170 sdmmc3_cmd_pa7 {
171 nvidia,pins = "sdmmc3_cmd_pa7",
172 "sdmmc3_dat0_pb7",
173 "sdmmc3_dat1_pb6",
174 "sdmmc3_dat2_pb5",
175 "sdmmc3_dat3_pb4",
176 "sdmmc3_clk_lb_out_pee4",
177 "sdmmc3_clk_lb_in_pee5";
178 nvidia,function = "sdmmc3";
179 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
180 nvidia,pull = <TEGRA_PIN_PULL_UP>;
181 nvidia,tristate = <TEGRA_PIN_DISABLE>;
182 };
183 sdmmc4_clk_pcc4 {
184 nvidia,pins = "sdmmc4_clk_pcc4";
185 nvidia,function = "sdmmc4";
186 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
187 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
188 nvidia,tristate = <TEGRA_PIN_DISABLE>;
189 };
190 sdmmc4_cmd_pt7 {
191 nvidia,pins = "sdmmc4_cmd_pt7",
192 "sdmmc4_dat0_paa0",
193 "sdmmc4_dat1_paa1",
194 "sdmmc4_dat2_paa2",
195 "sdmmc4_dat3_paa3",
196 "sdmmc4_dat4_paa4",
197 "sdmmc4_dat5_paa5",
198 "sdmmc4_dat6_paa6",
199 "sdmmc4_dat7_paa7";
200 nvidia,function = "sdmmc4";
201 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
202 nvidia,pull = <TEGRA_PIN_PULL_UP>;
203 nvidia,tristate = <TEGRA_PIN_DISABLE>;
204 };
205 pwr_i2c_scl_pz6 {
206 nvidia,pins = "pwr_i2c_scl_pz6",
207 "pwr_i2c_sda_pz7";
208 nvidia,function = "i2cpwr";
209 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
210 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
211 nvidia,tristate = <TEGRA_PIN_DISABLE>;
212 nvidia,lock = <TEGRA_PIN_DISABLE>;
213 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
214 };
215 jtag_rtck {
216 nvidia,pins = "jtag_rtck";
217 nvidia,function = "rtck";
218 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
219 nvidia,pull = <TEGRA_PIN_PULL_UP>;
220 nvidia,tristate = <TEGRA_PIN_DISABLE>;
221 };
222 clk_32k_in {
223 nvidia,pins = "clk_32k_in";
224 nvidia,function = "clk";
225 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
226 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
227 nvidia,tristate = <TEGRA_PIN_DISABLE>;
228 };
229 core_pwr_req {
230 nvidia,pins = "core_pwr_req";
231 nvidia,function = "pwron";
232 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
233 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
234 nvidia,tristate = <TEGRA_PIN_DISABLE>;
235 };
236 cpu_pwr_req {
237 nvidia,pins = "cpu_pwr_req";
238 nvidia,function = "cpu";
239 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
240 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
241 nvidia,tristate = <TEGRA_PIN_DISABLE>;
242 };
243 pwr_int_n {
244 nvidia,pins = "pwr_int_n";
245 nvidia,function = "pmi";
246 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
247 nvidia,pull = <TEGRA_PIN_PULL_UP>;
248 nvidia,tristate = <TEGRA_PIN_DISABLE>;
249 };
250 reset_out_n {
251 nvidia,pins = "reset_out_n";
252 nvidia,function = "reset_out_n";
253 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
254 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
255 nvidia,tristate = <TEGRA_PIN_DISABLE>;
256 };
257 clk3_out_pee0 {
258 nvidia,pins = "clk3_out_pee0";
259 nvidia,function = "extperiph3";
260 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
261 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
262 nvidia,tristate = <TEGRA_PIN_DISABLE>;
263 };
264 dap4_din_pp5 {
265 nvidia,pins = "dap4_din_pp5";
266 nvidia,function = "i2s3";
267 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
268 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
269 nvidia,tristate = <TEGRA_PIN_ENABLE>;
270 };
271 dap4_dout_pp6 {
272 nvidia,pins = "dap4_dout_pp6",
273 "dap4_fs_pp4",
274 "dap4_sclk_pp7";
275 nvidia,function = "i2s3";
276 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
277 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
278 nvidia,tristate = <TEGRA_PIN_ENABLE>;
279 };
280 gen1_i2c_sda_pc5 {
281 nvidia,pins = "gen1_i2c_sda_pc5",
282 "gen1_i2c_scl_pc4";
283 nvidia,function = "i2c1";
284 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
285 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
286 nvidia,tristate = <TEGRA_PIN_DISABLE>;
287 nvidia,lock = <TEGRA_PIN_DISABLE>;
288 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
289 };
290 uart2_cts_n_pj5 {
291 nvidia,pins = "uart2_cts_n_pj5";
292 nvidia,function = "uartb";
293 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
294 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
295 nvidia,tristate = <TEGRA_PIN_DISABLE>;
296 };
297 uart2_rts_n_pj6 {
298 nvidia,pins = "uart2_rts_n_pj6";
299 nvidia,function = "uartb";
300 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
301 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
302 nvidia,tristate = <TEGRA_PIN_DISABLE>;
303 };
304 uart2_rxd_pc3 {
305 nvidia,pins = "uart2_rxd_pc3";
306 nvidia,function = "irda";
307 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
308 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
309 nvidia,tristate = <TEGRA_PIN_DISABLE>;
310 };
311 uart2_txd_pc2 {
312 nvidia,pins = "uart2_txd_pc2";
313 nvidia,function = "irda";
314 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
315 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
316 nvidia,tristate = <TEGRA_PIN_DISABLE>;
317 };
318 uart3_cts_n_pa1 {
319 nvidia,pins = "uart3_cts_n_pa1",
320 "uart3_rxd_pw7";
321 nvidia,function = "uartc";
322 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
323 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
324 nvidia,tristate = <TEGRA_PIN_DISABLE>;
325 };
326 uart3_rts_n_pc0 {
327 nvidia,pins = "uart3_rts_n_pc0",
328 "uart3_txd_pw6";
329 nvidia,function = "uartc";
330 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
331 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
332 nvidia,tristate = <TEGRA_PIN_DISABLE>;
333 };
334 hdmi_cec_pee3 {
335 nvidia,pins = "hdmi_cec_pee3";
336 nvidia,function = "cec";
337 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
338 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
339 nvidia,tristate = <TEGRA_PIN_DISABLE>;
340 nvidia,lock = <TEGRA_PIN_DISABLE>;
341 nvidia,open-drain = <TEGRA_PIN_DISABLE>;
342 };
343 hdmi_int_pn7 {
344 nvidia,pins = "hdmi_int_pn7";
345 nvidia,function = "rsvd1";
346 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
347 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
348 nvidia,tristate = <TEGRA_PIN_DISABLE>;
349 };
350 ddc_scl_pv4 {
351 nvidia,pins = "ddc_scl_pv4",
352 "ddc_sda_pv5";
353 nvidia,function = "i2c4";
354 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
355 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
356 nvidia,tristate = <TEGRA_PIN_DISABLE>;
357 nvidia,lock = <TEGRA_PIN_DISABLE>;
358 nvidia,rcv-sel = <TEGRA_PIN_ENABLE>;
359 };
360 pj7 {
361 nvidia,pins = "pj7",
362 "pk7";
363 nvidia,function = "uartd";
364 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
365 nvidia,tristate = <TEGRA_PIN_DISABLE>;
366 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
367 };
368 pb0 {
369 nvidia,pins = "pb0",
370 "pb1";
371 nvidia,function = "uartd";
372 nvidia,pull = <TEGRA_PIN_PULL_UP>;
373 nvidia,tristate = <TEGRA_PIN_DISABLE>;
374 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
375 };
376 ph0 {
377 nvidia,pins = "ph0";
378 nvidia,function = "pwm0";
379 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
380 nvidia,tristate = <TEGRA_PIN_DISABLE>;
381 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
382 };
383 kb_row10_ps2 {
384 nvidia,pins = "kb_row10_ps2";
385 nvidia,function = "uarta";
386 nvidia,pull = <TEGRA_PIN_PULL_UP>;
387 nvidia,tristate = <TEGRA_PIN_DISABLE>;
388 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
389 };
390 kb_row9_ps1 {
391 nvidia,pins = "kb_row9_ps1";
392 nvidia,function = "uarta";
393 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
394 nvidia,tristate = <TEGRA_PIN_DISABLE>;
395 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
396 };
397 kb_row6_pr6 {
398 nvidia,pins = "kb_row6_pr6";
399 nvidia,function = "displaya_alt";
400 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
401 nvidia,tristate = <TEGRA_PIN_DISABLE>;
402 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
403 };
404 usb_vbus_en0_pn4 {
405 nvidia,pins = "usb_vbus_en0_pn4";
406 nvidia,function = "usb";
407 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
408 nvidia,pull = <TEGRA_PIN_PULL_UP>;
409 nvidia,tristate = <TEGRA_PIN_DISABLE>;
410 nvidia,lock = <TEGRA_PIN_DISABLE>;
411 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
412 };
413 usb_vbus_en1_pn5 {
414 nvidia,pins = "usb_vbus_en1_pn5";
415 nvidia,function = "usb";
416 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
417 nvidia,pull = <TEGRA_PIN_PULL_UP>;
418 nvidia,tristate = <TEGRA_PIN_DISABLE>;
419 nvidia,lock = <TEGRA_PIN_DISABLE>;
420 nvidia,open-drain = <TEGRA_PIN_ENABLE>;
421 };
422 drive_sdio1 {
423 nvidia,pins = "drive_sdio1";
424 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
425 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
426 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
427 nvidia,pull-down-strength = <32>;
428 nvidia,pull-up-strength = <42>;
429 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
430 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
431 };
432 drive_sdio3 {
433 nvidia,pins = "drive_sdio3";
434 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
435 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
436 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
437 nvidia,pull-down-strength = <20>;
438 nvidia,pull-up-strength = <36>;
439 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
440 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
441 };
442 drive_gma {
443 nvidia,pins = "drive_gma";
444 nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>;
445 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
446 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
447 nvidia,pull-down-strength = <1>;
448 nvidia,pull-up-strength = <2>;
449 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
450 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
451 nvidia,drive-type = <1>;
452 };
453 als_irq_l {
454 nvidia,pins = "gpio_x3_aud_px3";
455 nvidia,function = "gmi";
456 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
457 nvidia,tristate = <TEGRA_PIN_ENABLE>;
458 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
459 };
460 codec_irq_l {
461 nvidia,pins = "ph4";
462 nvidia,function = "gmi";
463 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
464 nvidia,tristate = <TEGRA_PIN_DISABLE>;
465 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
466 };
467 lcd_bl_en {
468 nvidia,pins = "ph2";
469 nvidia,function = "gmi";
470 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
471 nvidia,tristate = <TEGRA_PIN_DISABLE>;
472 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
473 };
474 touch_irq_l {
475 nvidia,pins = "gpio_w3_aud_pw3";
476 nvidia,function = "spi6";
477 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
478 nvidia,tristate = <TEGRA_PIN_ENABLE>;
479 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
480 };
481 tpm_davint_l {
482 nvidia,pins = "ph6";
483 nvidia,function = "gmi";
484 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
485 nvidia,tristate = <TEGRA_PIN_ENABLE>;
486 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
487 };
488 ts_irq_l {
489 nvidia,pins = "pk2";
490 nvidia,function = "gmi";
491 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
492 nvidia,tristate = <TEGRA_PIN_ENABLE>;
493 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
494 };
495 ts_reset_l {
496 nvidia,pins = "pk4";
497 nvidia,function = "gmi";
498 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
499 nvidia,tristate = <TEGRA_PIN_DISABLE>;
500 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
501 };
502 ts_shdn_l {
503 nvidia,pins = "pk1";
504 nvidia,function = "gmi";
505 nvidia,pull = <TEGRA_PIN_PULL_UP>;
506 nvidia,tristate = <TEGRA_PIN_DISABLE>;
507 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
508 };
509 ph7 {
510 nvidia,pins = "ph7";
511 nvidia,function = "gmi";
512 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
513 nvidia,tristate = <TEGRA_PIN_DISABLE>;
514 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
515 };
516 kb_col0_ap {
517 nvidia,pins = "kb_col0_pq0";
518 nvidia,function = "rsvd4";
519 nvidia,pull = <TEGRA_PIN_PULL_UP>;
520 nvidia,tristate = <TEGRA_PIN_DISABLE>;
521 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
522 };
523 lid_open {
524 nvidia,pins = "kb_row4_pr4";
525 nvidia,function = "rsvd3";
526 nvidia,pull = <TEGRA_PIN_PULL_UP>;
527 nvidia,tristate = <TEGRA_PIN_DISABLE>;
528 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
529 };
530 en_vdd_sd {
531 nvidia,pins = "kb_row0_pr0";
532 nvidia,function = "rsvd4";
533 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
534 nvidia,tristate = <TEGRA_PIN_DISABLE>;
535 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
536 };
537 ac_ok {
538 nvidia,pins = "pj0";
539 nvidia,function = "gmi";
540 nvidia,pull = <TEGRA_PIN_PULL_UP>;
541 nvidia,tristate = <TEGRA_PIN_ENABLE>;
542 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
543 };
544 sensor_irq_l {
545 nvidia,pins = "pi6";
546 nvidia,function = "gmi";
547 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
548 nvidia,tristate = <TEGRA_PIN_DISABLE>;
549 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
550 };
551 wifi_en {
552 nvidia,pins = "gpio_x7_aud_px7";
553 nvidia,function = "rsvd4";
554 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
555 nvidia,tristate = <TEGRA_PIN_DISABLE>;
556 nvidia,enable-input = <TEGRA_PIN_DISABLE>;
557 };
558 wifi_rst_l {
559 nvidia,pins = "clk2_req_pcc5";
560 nvidia,function = "dap";
561 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
562 nvidia,tristate = <TEGRA_PIN_DISABLE>;
563 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
564 };
565 hp_det_l {
566 nvidia,pins = "ulpi_data1_po2";
567 nvidia,function = "spi3";
568 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
569 nvidia,tristate = <TEGRA_PIN_DISABLE>;
570 nvidia,enable-input = <TEGRA_PIN_ENABLE>;
571 };
572 };
573 };
574
13 serial@70006000 { 575 serial@70006000 {
14 status = "okay"; 576 status = "okay";
15 }; 577 };
16 578
579 pwm: pwm@7000a000 {
580 status = "okay";
581 };
582
583 i2c@7000c000 {
584 status = "okay";
585 clock-frequency = <100000>;
586
587 acodec: audio-codec@10 {
588 compatible = "maxim,max98090";
589 reg = <0x10>;
590 interrupt-parent = <&gpio>;
591 interrupts = <TEGRA_GPIO(H, 4) GPIO_ACTIVE_HIGH>;
592 };
593 };
594
595 i2c@7000c400 {
596 status = "okay";
597 clock-frequency = <100000>;
598 };
599
600 i2c@7000c500 {
601 status = "okay";
602 clock-frequency = <100000>;
603 };
604
605 i2c@7000c700 {
606 status = "okay";
607 clock-frequency = <100000>;
608 };
609
610 i2c@7000d000 {
611 status = "okay";
612 clock-frequency = <400000>;
613
614 as3722: as3722@40 {
615 compatible = "ams,as3722";
616 reg = <0x40>;
617 interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
618
619 #interrupt-cells = <2>;
620 interrupt-controller;
621
622 gpio-controller;
623 #gpio-cells = <2>;
624
625 pinctrl-names = "default";
626 pinctrl-0 = <&as3722_default>;
627
628 as3722_default: pinmux {
629 gpio0 {
630 pins = "gpio0";
631 function = "gpio";
632 bias-pull-down;
633 };
634
635 gpio1_2_4_7 {
636 pins = "gpio1", "gpio2", "gpio4", "gpio7";
637 function = "gpio";
638 bias-pull-up;
639 };
640
641 gpio3_6 {
642 pins = "gpio3", "gpio6";
643 bias-high-impedance;
644 };
645
646 gpio5 {
647 pins = "gpio5";
648 function = "clk32k-out";
649 };
650 };
651
652 regulators {
653 vsup-sd2-supply = <&vdd_ac_bat_reg>;
654 vsup-sd3-supply = <&vdd_ac_bat_reg>;
655 vsup-sd4-supply = <&vdd_ac_bat_reg>;
656 vsup-sd5-supply = <&vdd_ac_bat_reg>;
657 vin-ldo0-supply = <&as3722_sd2>;
658 vin-ldo1-6-supply = <&vdd_ac_bat_reg>;
659 vin-ldo2-5-7-supply = <&as3722_sd5>;
660 vin-ldo3-4-supply = <&vdd_ac_bat_reg>;
661 vin-ldo9-10-supply = <&vdd_ac_bat_reg>;
662 vin-ldo11-supply = <&vdd_ac_bat_reg>;
663
664 sd0 {
665 regulator-name = "vdd-cpu";
666 regulator-min-microvolt = <700000>;
667 regulator-max-microvolt = <1400000>;
668 regulator-min-microamp = <3500000>;
669 regulator-max-microamp = <3500000>;
670 regulator-always-on;
671 regulator-boot-on;
672 ams,external-control = <2>;
673 };
674
675 sd1 {
676 regulator-name = "vdd-core";
677 regulator-min-microvolt = <700000>;
678 regulator-max-microvolt = <1350000>;
679 regulator-min-microamp = <2500000>;
680 regulator-max-microamp = <2500000>;
681 regulator-always-on;
682 regulator-boot-on;
683 ams,external-control = <1>;
684 };
685
686 as3722_sd2: sd2 {
687 regulator-name = "vddio-ddr";
688 regulator-min-microvolt = <1350000>;
689 regulator-max-microvolt = <1350000>;
690 regulator-always-on;
691 regulator-boot-on;
692 };
693
694 sd3 {
695 regulator-name = "vddio-ddr-2phase";
696 regulator-min-microvolt = <1350000>;
697 regulator-max-microvolt = <1350000>;
698 regulator-always-on;
699 regulator-boot-on;
700 };
701
702 sd4 {
703 regulator-name = "avdd-pex-sata";
704 regulator-min-microvolt = <1050000>;
705 regulator-max-microvolt = <1050000>;
706 regulator-boot-on;
707 regulator-always-on;
708 };
709
710 as3722_sd5: sd5 {
711 regulator-name = "vddio-sys";
712 regulator-min-microvolt = <1800000>;
713 regulator-max-microvolt = <1800000>;
714 regulator-boot-on;
715 regulator-always-on;
716 };
717
718 sd6 {
719 regulator-name = "vdd-gpu";
720 regulator-min-microvolt = <650000>;
721 regulator-max-microvolt = <1200000>;
722 regulator-min-microamp = <3500000>;
723 regulator-max-microamp = <3500000>;
724 regulator-boot-on;
725 regulator-always-on;
726 };
727
728 ldo0 {
729 regulator-name = "avdd_pll";
730 regulator-min-microvolt = <1050000>;
731 regulator-max-microvolt = <1050000>;
732 regulator-boot-on;
733 regulator-always-on;
734 ams,external-control = <1>;
735 };
736
737 ldo1 {
738 regulator-name = "run-cam-1.8";
739 regulator-min-microvolt = <1800000>;
740 regulator-max-microvolt = <1800000>;
741 };
742
743 ldo2 {
744 regulator-name = "gen-avdd,vddio-hsic";
745 regulator-min-microvolt = <1200000>;
746 regulator-max-microvolt = <1200000>;
747 regulator-boot-on;
748 regulator-always-on;
749 };
750
751 ldo3 {
752 regulator-name = "vdd-rtc";
753 regulator-min-microvolt = <1000000>;
754 regulator-max-microvolt = <1000000>;
755 regulator-boot-on;
756 regulator-always-on;
757 ams,enable-tracking;
758 };
759
760 ldo4 {
761 regulator-name = "vdd-cam";
762 regulator-min-microvolt = <2800000>;
763 regulator-max-microvolt = <2800000>;
764 regulator-boot-on;
765 regulator-always-on;
766 };
767
768 ldo5 {
769 regulator-name = "vdd-cam-front";
770 regulator-min-microvolt = <1200000>;
771 regulator-max-microvolt = <1200000>;
772 };
773
774 ldo6 {
775 regulator-name = "vddio-sdmmc3";
776 regulator-min-microvolt = <1800000>;
777 regulator-max-microvolt = <3300000>;
778 regulator-boot-on;
779 regulator-always-on;
780 };
781
782 ldo7 {
783 regulator-name = "vdd-cam-rear";
784 regulator-min-microvolt = <1050000>;
785 regulator-max-microvolt = <1050000>;
786 };
787
788 ldo9 {
789 regulator-name = "vdd-touch";
790 regulator-min-microvolt = <2800000>;
791 regulator-max-microvolt = <2800000>;
792 };
793
794 ldo10 {
795 regulator-name = "vdd-cam-af";
796 regulator-min-microvolt = <2800000>;
797 regulator-max-microvolt = <2800000>;
798 };
799
800 ldo11 {
801 regulator-name = "vpp-fuse";
802 regulator-min-microvolt = <1800000>;
803 regulator-max-microvolt = <1800000>;
804 };
805 };
806 };
807 };
808
809 spi@7000d400 {
810 status = "okay";
811
812 cros-ec@0 {
813 compatible = "google,cros-ec-spi";
814 spi-max-frequency = <4000000>;
815 interrupt-parent = <&gpio>;
816 interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_LEVEL_LOW>;
817 reg = <0>;
818
819 google,cros-ec-spi-msg-delay = <2000>;
820
821 cros-ec-keyb {
822 compatible = "google,cros-ec-keyb";
823 keypad,num-rows = <8>;
824 keypad,num-columns = <13>;
825 google,needs-ghost-filter;
826
827 linux,keymap = <
828 MATRIX_KEY(0x00, 0x01, KEY_LEFTMETA)
829 MATRIX_KEY(0x00, 0x02, KEY_F1)
830 MATRIX_KEY(0x00, 0x03, KEY_B)
831 MATRIX_KEY(0x00, 0x04, KEY_F10)
832 MATRIX_KEY(0x00, 0x06, KEY_N)
833 MATRIX_KEY(0x00, 0x08, KEY_EQUAL)
834 MATRIX_KEY(0x00, 0x0a, KEY_RIGHTALT)
835
836 MATRIX_KEY(0x01, 0x01, KEY_ESC)
837 MATRIX_KEY(0x01, 0x02, KEY_F4)
838 MATRIX_KEY(0x01, 0x03, KEY_G)
839 MATRIX_KEY(0x01, 0x04, KEY_F7)
840 MATRIX_KEY(0x01, 0x06, KEY_H)
841 MATRIX_KEY(0x01, 0x08, KEY_APOSTROPHE)
842 MATRIX_KEY(0x01, 0x09, KEY_F9)
843 MATRIX_KEY(0x01, 0x0b, KEY_BACKSPACE)
844
845 MATRIX_KEY(0x02, 0x00, KEY_LEFTCTRL)
846 MATRIX_KEY(0x02, 0x01, KEY_TAB)
847 MATRIX_KEY(0x02, 0x02, KEY_F3)
848 MATRIX_KEY(0x02, 0x03, KEY_T)
849 MATRIX_KEY(0x02, 0x04, KEY_F6)
850 MATRIX_KEY(0x02, 0x05, KEY_RIGHTBRACE)
851 MATRIX_KEY(0x02, 0x06, KEY_Y)
852 MATRIX_KEY(0x02, 0x07, KEY_102ND)
853 MATRIX_KEY(0x02, 0x08, KEY_LEFTBRACE)
854 MATRIX_KEY(0x02, 0x09, KEY_F8)
855
856 MATRIX_KEY(0x03, 0x01, KEY_GRAVE)
857 MATRIX_KEY(0x03, 0x02, KEY_F2)
858 MATRIX_KEY(0x03, 0x03, KEY_5)
859 MATRIX_KEY(0x03, 0x04, KEY_F5)
860 MATRIX_KEY(0x03, 0x06, KEY_6)
861 MATRIX_KEY(0x03, 0x08, KEY_MINUS)
862 MATRIX_KEY(0x03, 0x0b, KEY_BACKSLASH)
863
864 MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
865 MATRIX_KEY(0x04, 0x01, KEY_A)
866 MATRIX_KEY(0x04, 0x02, KEY_D)
867 MATRIX_KEY(0x04, 0x03, KEY_F)
868 MATRIX_KEY(0x04, 0x04, KEY_S)
869 MATRIX_KEY(0x04, 0x05, KEY_K)
870 MATRIX_KEY(0x04, 0x06, KEY_J)
871 MATRIX_KEY(0x04, 0x08, KEY_SEMICOLON)
872 MATRIX_KEY(0x04, 0x09, KEY_L)
873 MATRIX_KEY(0x04, 0x0a, KEY_BACKSLASH)
874 MATRIX_KEY(0x04, 0x0b, KEY_ENTER)
875
876 MATRIX_KEY(0x05, 0x01, KEY_Z)
877 MATRIX_KEY(0x05, 0x02, KEY_C)
878 MATRIX_KEY(0x05, 0x03, KEY_V)
879 MATRIX_KEY(0x05, 0x04, KEY_X)
880 MATRIX_KEY(0x05, 0x05, KEY_COMMA)
881 MATRIX_KEY(0x05, 0x06, KEY_M)
882 MATRIX_KEY(0x05, 0x07, KEY_LEFTSHIFT)
883 MATRIX_KEY(0x05, 0x08, KEY_SLASH)
884 MATRIX_KEY(0x05, 0x09, KEY_DOT)
885 MATRIX_KEY(0x05, 0x0b, KEY_SPACE)
886
887 MATRIX_KEY(0x06, 0x01, KEY_1)
888 MATRIX_KEY(0x06, 0x02, KEY_3)
889 MATRIX_KEY(0x06, 0x03, KEY_4)
890 MATRIX_KEY(0x06, 0x04, KEY_2)
891 MATRIX_KEY(0x06, 0x05, KEY_8)
892 MATRIX_KEY(0x06, 0x06, KEY_7)
893 MATRIX_KEY(0x06, 0x08, KEY_0)
894 MATRIX_KEY(0x06, 0x09, KEY_9)
895 MATRIX_KEY(0x06, 0x0a, KEY_LEFTALT)
896 MATRIX_KEY(0x06, 0x0b, KEY_DOWN)
897 MATRIX_KEY(0x06, 0x0c, KEY_RIGHT)
898
899 MATRIX_KEY(0x07, 0x01, KEY_Q)
900 MATRIX_KEY(0x07, 0x02, KEY_E)
901 MATRIX_KEY(0x07, 0x03, KEY_R)
902 MATRIX_KEY(0x07, 0x04, KEY_W)
903 MATRIX_KEY(0x07, 0x05, KEY_I)
904 MATRIX_KEY(0x07, 0x06, KEY_U)
905 MATRIX_KEY(0x07, 0x07, KEY_RIGHTSHIFT)
906 MATRIX_KEY(0x07, 0x08, KEY_P)
907 MATRIX_KEY(0x07, 0x09, KEY_O)
908 MATRIX_KEY(0x07, 0x0b, KEY_UP)
909 MATRIX_KEY(0x07, 0x0c, KEY_LEFT)
910 >;
911 };
912 };
913 };
914
17 pmc@7000e400 { 915 pmc@7000e400 {
18 nvidia,invert-interrupt; 916 nvidia,invert-interrupt;
19 nvidia,suspend-mode = <1>; 917 nvidia,suspend-mode = <1>;
@@ -24,4 +922,170 @@
24 nvidia,core-power-req-active-high; 922 nvidia,core-power-req-active-high;
25 nvidia,sys-clock-req-active-high; 923 nvidia,sys-clock-req-active-high;
26 }; 924 };
925
926 sdhci@700b0400 {
927 cd-gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_HIGH>;
928 power-gpios = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
929 status = "okay";
930 bus-width = <4>;
931 };
932
933 sdhci@700b0600 {
934 status = "okay";
935 bus-width = <8>;
936 };
937
938 ahub@70300000 {
939 i2s@70301100 {
940 status = "okay";
941 };
942 };
943
944 clocks {
945 compatible = "simple-bus";
946 #address-cells = <1>;
947 #size-cells = <0>;
948
949 clk32k_in: clock@0 {
950 compatible = "fixed-clock";
951 reg=<0>;
952 #clock-cells = <0>;
953 clock-frequency = <32768>;
954 };
955 };
956
957 gpio-keys {
958 compatible = "gpio-keys";
959
960 power {
961 label = "Power";
962 gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
963 linux,code = <KEY_POWER>;
964 debounce-interval = <10>;
965 gpio-key,wakeup;
966 };
967 };
968
969 regulators {
970 compatible = "simple-bus";
971 #address-cells = <1>;
972 #size-cells = <0>;
973
974 vdd_ac_bat_reg: regulator@0 {
975 compatible = "regulator-fixed";
976 reg = <0>;
977 regulator-name = "vdd_ac_bat";
978 regulator-min-microvolt = <5000000>;
979 regulator-max-microvolt = <5000000>;
980 regulator-always-on;
981 };
982
983 vdd_3v3_reg: regulator@1 {
984 compatible = "regulator-fixed";
985 reg = <1>;
986 regulator-name = "vdd_3v3";
987 regulator-min-microvolt = <3300000>;
988 regulator-max-microvolt = <3300000>;
989 regulator-always-on;
990 regulator-boot-on;
991 enable-active-high;
992 gpio = <&as3722 1 GPIO_ACTIVE_HIGH>;
993 };
994
995 vdd_3v3_modem_reg: regulator@2 {
996 compatible = "regulator-fixed";
997 reg = <2>;
998 regulator-name = "vdd-modem-3v3";
999 regulator-min-microvolt = <3300000>;
1000 regulator-max-microvolt = <3300000>;
1001 enable-active-high;
1002 gpio = <&as3722 2 GPIO_ACTIVE_HIGH>;
1003 };
1004
1005 vdd_hdmi_5v0_reg: regulator@3 {
1006 compatible = "regulator-fixed";
1007 reg = <3>;
1008 regulator-name = "vdd-hdmi-5v0";
1009 regulator-min-microvolt = <5000000>;
1010 regulator-max-microvolt = <5000000>;
1011 enable-active-high;
1012 gpio = <&gpio TEGRA_GPIO(K, 6) GPIO_ACTIVE_HIGH>;
1013 };
1014
1015 vdd_bl_reg: regulator@4 {
1016 compatible = "regulator-fixed";
1017 reg = <4>;
1018 regulator-name = "vdd-bl";
1019 regulator-min-microvolt = <3300000>;
1020 regulator-max-microvolt = <3300000>;
1021 gpio = <&gpio TEGRA_GPIO(P, 2) GPIO_ACTIVE_LOW>;
1022 };
1023
1024 vdd_ts_sw_5v0: regulator@5 {
1025 compatible = "regulator-fixed";
1026 reg = <5>;
1027 regulator-name = "vdd_ts_sw";
1028 regulator-min-microvolt = <5000000>;
1029 regulator-max-microvolt = <5000000>;
1030 enable-active-high;
1031 regulator-boot-on;
1032 gpio = <&gpio TEGRA_GPIO(K, 1) GPIO_ACTIVE_LOW>;
1033 };
1034
1035 usb1_vbus_reg: regulator@6 {
1036 compatible = "regulator-fixed";
1037 reg = <6>;
1038 regulator-name = "usb1_vbus";
1039 regulator-min-microvolt = <5000000>;
1040 regulator-max-microvolt = <5000000>;
1041 regulator-boot-on;
1042 enable-active-high;
1043 gpio = <&gpio TEGRA_GPIO(N, 4) GPIO_ACTIVE_HIGH>;
1044 gpio-open-drain;
1045 };
1046
1047 usb3_vbus_reg: regulator@7 {
1048 compatible = "regulator-fixed";
1049 reg = <7>;
1050 regulator-name = "usb3_vbus";
1051 regulator-min-microvolt = <5000000>;
1052 regulator-max-microvolt = <5000000>;
1053 regulator-boot-on;
1054 enable-active-high;
1055 gpio = <&gpio TEGRA_GPIO(N, 5) GPIO_ACTIVE_HIGH>;
1056 gpio-open-drain;
1057 };
1058
1059 panel_3v3_reg: regulator@8 {
1060 compatible = "regulator-fixed";
1061 reg = <8>;
1062 regulator-name = "panel_3v3";
1063 regulator-min-microvolt = <3300000>;
1064 regulator-max-microvolt = <3300000>;
1065 enable-active-high;
1066 gpio = <&as3722 4 GPIO_ACTIVE_HIGH>;
1067 };
1068 };
1069
1070 sound {
1071 compatible = "nvidia,tegra-audio-max98090-venice2",
1072 "nvidia,tegra-audio-max98090";
1073 nvidia,model = "NVIDIA Tegra Venice2";
1074
1075 nvidia,audio-routing =
1076 "Headphones", "HPR",
1077 "Headphones", "HPL",
1078 "Speakers", "SPKR",
1079 "Speakers", "SPKL",
1080 "Mic Jack", "MICBIAS",
1081 "IN34", "Mic Jack";
1082
1083 nvidia,i2s-controller = <&tegra_i2s1>;
1084 nvidia,audio-codec = <&acodec>;
1085
1086 clocks = <&tegra_car TEGRA124_CLK_PLL_A>,
1087 <&tegra_car TEGRA124_CLK_PLL_A_OUT0>,
1088 <&tegra_car TEGRA124_CLK_EXTERN1>;
1089 clock-names = "pll_a", "pll_a_out0", "mclk";
1090 };
27}; 1091};
diff --git a/arch/arm/boot/dts/tegra124.dtsi b/arch/arm/boot/dts/tegra124.dtsi
index b7413004ee77..ec0698a8354a 100644
--- a/arch/arm/boot/dts/tegra124.dtsi
+++ b/arch/arm/boot/dts/tegra124.dtsi
@@ -1,4 +1,6 @@
1#include <dt-bindings/clock/tegra124-car.h>
1#include <dt-bindings/gpio/tegra-gpio.h> 2#include <dt-bindings/gpio/tegra-gpio.h>
3#include <dt-bindings/pinctrl/pinctrl-tegra.h>
2#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
3 5
4#include "skeleton.dtsi" 6#include "skeleton.dtsi"
@@ -28,6 +30,14 @@
28 <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>, 30 <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
29 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, 31 <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
30 <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 32 <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
33 clocks = <&tegra_car TEGRA124_CLK_TIMER>;
34 };
35
36 tegra_car: clock@60006000 {
37 compatible = "nvidia,tegra124-car";
38 reg = <0x60006000 0x1000>;
39 #clock-cells = <1>;
40 #reset-cells = <1>;
31 }; 41 };
32 42
33 gpio: gpio@6000d000 { 43 gpio: gpio@6000d000 {
@@ -47,6 +57,53 @@
47 interrupt-controller; 57 interrupt-controller;
48 }; 58 };
49 59
60 apbdma: dma@60020000 {
61 compatible = "nvidia,tegra124-apbdma", "nvidia,tegra148-apbdma";
62 reg = <0x60020000 0x1400>;
63 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
64 <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
65 <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
66 <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
67 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
68 <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
69 <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
70 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
71 <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
72 <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
73 <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
74 <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
75 <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
76 <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
77 <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
78 <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>,
79 <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
83 <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>,
84 <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
85 <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
86 <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>,
87 <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
88 <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
89 <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
90 <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>,
91 <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
92 <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
93 <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
94 <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
95 clocks = <&tegra_car TEGRA124_CLK_APBDMA>;
96 resets = <&tegra_car 34>;
97 reset-names = "dma";
98 #dma-cells = <1>;
99 };
100
101 pinmux: pinmux@70000868 {
102 compatible = "nvidia,tegra124-pinmux";
103 reg = <0x70000868 0x164>, /* Pad control registers */
104 <0x70003000 0x434>; /* Mux registers */
105 };
106
50 /* 107 /*
51 * There are two serial driver i.e. 8250 based simple serial 108 * There are two serial driver i.e. 8250 based simple serial
52 * driver and APB DMA based serial driver for higher baudrate 109 * driver and APB DMA based serial driver for higher baudrate
@@ -60,6 +117,11 @@
60 reg = <0x70006000 0x40>; 117 reg = <0x70006000 0x40>;
61 reg-shift = <2>; 118 reg-shift = <2>;
62 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>; 119 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
120 clocks = <&tegra_car TEGRA124_CLK_UARTA>;
121 resets = <&tegra_car 6>;
122 reset-names = "serial";
123 dmas = <&apbdma 8>, <&apbdma 8>;
124 dma-names = "rx", "tx";
63 status = "disabled"; 125 status = "disabled";
64 }; 126 };
65 127
@@ -68,6 +130,11 @@
68 reg = <0x70006040 0x40>; 130 reg = <0x70006040 0x40>;
69 reg-shift = <2>; 131 reg-shift = <2>;
70 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 132 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
133 clocks = <&tegra_car TEGRA124_CLK_UARTB>;
134 resets = <&tegra_car 7>;
135 reset-names = "serial";
136 dmas = <&apbdma 9>, <&apbdma 9>;
137 dma-names = "rx", "tx";
71 status = "disabled"; 138 status = "disabled";
72 }; 139 };
73 140
@@ -76,6 +143,11 @@
76 reg = <0x70006200 0x40>; 143 reg = <0x70006200 0x40>;
77 reg-shift = <2>; 144 reg-shift = <2>;
78 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 145 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
146 clocks = <&tegra_car TEGRA124_CLK_UARTC>;
147 resets = <&tegra_car 55>;
148 reset-names = "serial";
149 dmas = <&apbdma 10>, <&apbdma 10>;
150 dma-names = "rx", "tx";
79 status = "disabled"; 151 status = "disabled";
80 }; 152 };
81 153
@@ -84,6 +156,11 @@
84 reg = <0x70006300 0x40>; 156 reg = <0x70006300 0x40>;
85 reg-shift = <2>; 157 reg-shift = <2>;
86 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>; 158 interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
159 clocks = <&tegra_car TEGRA124_CLK_UARTD>;
160 resets = <&tegra_car 65>;
161 reset-names = "serial";
162 dmas = <&apbdma 19>, <&apbdma 19>;
163 dma-names = "rx", "tx";
87 status = "disabled"; 164 status = "disabled";
88 }; 165 };
89 166
@@ -92,6 +169,201 @@
92 reg = <0x70006400 0x40>; 169 reg = <0x70006400 0x40>;
93 reg-shift = <2>; 170 reg-shift = <2>;
94 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 171 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
172 clocks = <&tegra_car TEGRA124_CLK_UARTE>;
173 resets = <&tegra_car 66>;
174 reset-names = "serial";
175 dmas = <&apbdma 20>, <&apbdma 20>;
176 dma-names = "rx", "tx";
177 status = "disabled";
178 };
179
180 pwm@7000a000 {
181 compatible = "nvidia,tegra124-pwm", "nvidia,tegra20-pwm";
182 reg = <0x7000a000 0x100>;
183 #pwm-cells = <2>;
184 clocks = <&tegra_car TEGRA124_CLK_PWM>;
185 resets = <&tegra_car 17>;
186 reset-names = "pwm";
187 status = "disabled";
188 };
189
190 i2c@7000c000 {
191 compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
192 reg = <0x7000c000 0x100>;
193 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
194 #address-cells = <1>;
195 #size-cells = <0>;
196 clocks = <&tegra_car TEGRA124_CLK_I2C1>;
197 clock-names = "div-clk";
198 resets = <&tegra_car 12>;
199 reset-names = "i2c";
200 dmas = <&apbdma 21>, <&apbdma 21>;
201 dma-names = "rx", "tx";
202 status = "disabled";
203 };
204
205 i2c@7000c400 {
206 compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
207 reg = <0x7000c400 0x100>;
208 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
209 #address-cells = <1>;
210 #size-cells = <0>;
211 clocks = <&tegra_car TEGRA124_CLK_I2C2>;
212 clock-names = "div-clk";
213 resets = <&tegra_car 54>;
214 reset-names = "i2c";
215 dmas = <&apbdma 22>, <&apbdma 22>;
216 dma-names = "rx", "tx";
217 status = "disabled";
218 };
219
220 i2c@7000c500 {
221 compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
222 reg = <0x7000c500 0x100>;
223 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
224 #address-cells = <1>;
225 #size-cells = <0>;
226 clocks = <&tegra_car TEGRA124_CLK_I2C3>;
227 clock-names = "div-clk";
228 resets = <&tegra_car 67>;
229 reset-names = "i2c";
230 dmas = <&apbdma 23>, <&apbdma 23>;
231 dma-names = "rx", "tx";
232 status = "disabled";
233 };
234
235 i2c@7000c700 {
236 compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
237 reg = <0x7000c700 0x100>;
238 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
239 #address-cells = <1>;
240 #size-cells = <0>;
241 clocks = <&tegra_car TEGRA124_CLK_I2C4>;
242 clock-names = "div-clk";
243 resets = <&tegra_car 103>;
244 reset-names = "i2c";
245 dmas = <&apbdma 26>, <&apbdma 26>;
246 dma-names = "rx", "tx";
247 status = "disabled";
248 };
249
250 i2c@7000d000 {
251 compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
252 reg = <0x7000d000 0x100>;
253 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
254 #address-cells = <1>;
255 #size-cells = <0>;
256 clocks = <&tegra_car TEGRA124_CLK_I2C5>;
257 clock-names = "div-clk";
258 resets = <&tegra_car 47>;
259 reset-names = "i2c";
260 dmas = <&apbdma 24>, <&apbdma 24>;
261 dma-names = "rx", "tx";
262 status = "disabled";
263 };
264
265 i2c@7000d100 {
266 compatible = "nvidia,tegra124-i2c", "nvidia,tegra114-i2c";
267 reg = <0x7000d100 0x100>;
268 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
269 #address-cells = <1>;
270 #size-cells = <0>;
271 clocks = <&tegra_car TEGRA124_CLK_I2C6>;
272 clock-names = "div-clk";
273 resets = <&tegra_car 166>;
274 reset-names = "i2c";
275 dmas = <&apbdma 30>, <&apbdma 30>;
276 dma-names = "rx", "tx";
277 status = "disabled";
278 };
279
280 spi@7000d400 {
281 compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
282 reg = <0x7000d400 0x200>;
283 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
284 #address-cells = <1>;
285 #size-cells = <0>;
286 clocks = <&tegra_car TEGRA124_CLK_SBC1>;
287 clock-names = "spi";
288 resets = <&tegra_car 41>;
289 reset-names = "spi";
290 dmas = <&apbdma 15>, <&apbdma 15>;
291 dma-names = "rx", "tx";
292 status = "disabled";
293 };
294
295 spi@7000d600 {
296 compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
297 reg = <0x7000d600 0x200>;
298 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
299 #address-cells = <1>;
300 #size-cells = <0>;
301 clocks = <&tegra_car TEGRA124_CLK_SBC2>;
302 clock-names = "spi";
303 resets = <&tegra_car 44>;
304 reset-names = "spi";
305 dmas = <&apbdma 16>, <&apbdma 16>;
306 dma-names = "rx", "tx";
307 status = "disabled";
308 };
309
310 spi@7000d800 {
311 compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
312 reg = <0x7000d800 0x200>;
313 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
314 #address-cells = <1>;
315 #size-cells = <0>;
316 clocks = <&tegra_car TEGRA124_CLK_SBC3>;
317 clock-names = "spi";
318 resets = <&tegra_car 46>;
319 reset-names = "spi";
320 dmas = <&apbdma 17>, <&apbdma 17>;
321 dma-names = "rx", "tx";
322 status = "disabled";
323 };
324
325 spi@7000da00 {
326 compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
327 reg = <0x7000da00 0x200>;
328 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
329 #address-cells = <1>;
330 #size-cells = <0>;
331 clocks = <&tegra_car TEGRA124_CLK_SBC4>;
332 clock-names = "spi";
333 resets = <&tegra_car 68>;
334 reset-names = "spi";
335 dmas = <&apbdma 18>, <&apbdma 18>;
336 dma-names = "rx", "tx";
337 status = "disabled";
338 };
339
340 spi@7000dc00 {
341 compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
342 reg = <0x7000dc00 0x200>;
343 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
344 #address-cells = <1>;
345 #size-cells = <0>;
346 clocks = <&tegra_car TEGRA124_CLK_SBC5>;
347 clock-names = "spi";
348 resets = <&tegra_car 104>;
349 reset-names = "spi";
350 dmas = <&apbdma 27>, <&apbdma 27>;
351 dma-names = "rx", "tx";
352 status = "disabled";
353 };
354
355 spi@7000de00 {
356 compatible = "nvidia,tegra124-spi", "nvidia,tegra114-spi";
357 reg = <0x7000de00 0x200>;
358 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
359 #address-cells = <1>;
360 #size-cells = <0>;
361 clocks = <&tegra_car TEGRA124_CLK_SBC6>;
362 clock-names = "spi";
363 resets = <&tegra_car 105>;
364 reset-names = "spi";
365 dmas = <&apbdma 28>, <&apbdma 28>;
366 dma-names = "rx", "tx";
95 status = "disabled"; 367 status = "disabled";
96 }; 368 };
97 369
@@ -99,11 +371,157 @@
99 compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc"; 371 compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc";
100 reg = <0x7000e000 0x100>; 372 reg = <0x7000e000 0x100>;
101 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 373 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
374 clocks = <&tegra_car TEGRA124_CLK_RTC>;
102 }; 375 };
103 376
104 pmc@7000e400 { 377 pmc@7000e400 {
105 compatible = "nvidia,tegra124-pmc"; 378 compatible = "nvidia,tegra124-pmc";
106 reg = <0x7000e400 0x400>; 379 reg = <0x7000e400 0x400>;
380 clocks = <&tegra_car TEGRA124_CLK_PCLK>, <&clk32k_in>;
381 clock-names = "pclk", "clk32k_in";
382 };
383
384 sdhci@700b0000 {
385 compatible = "nvidia,tegra124-sdhci";
386 reg = <0x700b0000 0x200>;
387 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
388 clocks = <&tegra_car TEGRA124_CLK_SDMMC1>;
389 resets = <&tegra_car 14>;
390 reset-names = "sdhci";
391 status = "disable";
392 };
393
394 sdhci@700b0200 {
395 compatible = "nvidia,tegra124-sdhci";
396 reg = <0x700b0200 0x200>;
397 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
398 clocks = <&tegra_car TEGRA124_CLK_SDMMC2>;
399 resets = <&tegra_car 9>;
400 reset-names = "sdhci";
401 status = "disable";
402 };
403
404 sdhci@700b0400 {
405 compatible = "nvidia,tegra124-sdhci";
406 reg = <0x700b0400 0x200>;
407 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
408 clocks = <&tegra_car TEGRA124_CLK_SDMMC3>;
409 resets = <&tegra_car 69>;
410 reset-names = "sdhci";
411 status = "disable";
412 };
413
414 sdhci@700b0600 {
415 compatible = "nvidia,tegra124-sdhci";
416 reg = <0x700b0600 0x200>;
417 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
418 clocks = <&tegra_car TEGRA124_CLK_SDMMC4>;
419 resets = <&tegra_car 15>;
420 reset-names = "sdhci";
421 status = "disable";
422 };
423
424 ahub@70300000 {
425 compatible = "nvidia,tegra124-ahub";
426 reg = <0x70300000 0x200>,
427 <0x70300800 0x800>,
428 <0x70300200 0x600>;
429 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
430 clocks = <&tegra_car TEGRA124_CLK_D_AUDIO>,
431 <&tegra_car TEGRA124_CLK_APBIF>;
432 clock-names = "d_audio", "apbif";
433 resets = <&tegra_car 106>, /* d_audio */
434 <&tegra_car 107>, /* apbif */
435 <&tegra_car 30>, /* i2s0 */
436 <&tegra_car 11>, /* i2s1 */
437 <&tegra_car 18>, /* i2s2 */
438 <&tegra_car 101>, /* i2s3 */
439 <&tegra_car 102>, /* i2s4 */
440 <&tegra_car 108>, /* dam0 */
441 <&tegra_car 109>, /* dam1 */
442 <&tegra_car 110>, /* dam2 */
443 <&tegra_car 10>, /* spdif */
444 <&tegra_car 153>, /* amx */
445 <&tegra_car 185>, /* amx1 */
446 <&tegra_car 154>, /* adx */
447 <&tegra_car 180>, /* adx1 */
448 <&tegra_car 186>, /* afc0 */
449 <&tegra_car 187>, /* afc1 */
450 <&tegra_car 188>, /* afc2 */
451 <&tegra_car 189>, /* afc3 */
452 <&tegra_car 190>, /* afc4 */
453 <&tegra_car 191>; /* afc5 */
454 reset-names = "d_audio", "apbif", "i2s0", "i2s1", "i2s2",
455 "i2s3", "i2s4", "dam0", "dam1", "dam2",
456 "spdif", "amx", "amx1", "adx", "adx1",
457 "afc0", "afc1", "afc2", "afc3", "afc4", "afc5";
458 dmas = <&apbdma 1>, <&apbdma 1>,
459 <&apbdma 2>, <&apbdma 2>,
460 <&apbdma 3>, <&apbdma 3>,
461 <&apbdma 4>, <&apbdma 4>,
462 <&apbdma 6>, <&apbdma 6>,
463 <&apbdma 7>, <&apbdma 7>,
464 <&apbdma 12>, <&apbdma 12>,
465 <&apbdma 13>, <&apbdma 13>,
466 <&apbdma 14>, <&apbdma 14>,
467 <&apbdma 29>, <&apbdma 29>;
468 dma-names = "rx0", "tx0", "rx1", "tx1", "rx2", "tx2",
469 "rx3", "tx3", "rx4", "tx4", "rx5", "tx5",
470 "rx6", "tx6", "rx7", "tx7", "rx8", "tx8",
471 "rx9", "tx9";
472 ranges;
473 #address-cells = <1>;
474 #size-cells = <1>;
475
476 tegra_i2s0: i2s@70301000 {
477 compatible = "nvidia,tegra124-i2s";
478 reg = <0x70301000 0x100>;
479 nvidia,ahub-cif-ids = <4 4>;
480 clocks = <&tegra_car TEGRA124_CLK_I2S0>;
481 resets = <&tegra_car 30>;
482 reset-names = "i2s";
483 status = "disabled";
484 };
485
486 tegra_i2s1: i2s@70301100 {
487 compatible = "nvidia,tegra124-i2s";
488 reg = <0x70301100 0x100>;
489 nvidia,ahub-cif-ids = <5 5>;
490 clocks = <&tegra_car TEGRA124_CLK_I2S1>;
491 resets = <&tegra_car 11>;
492 reset-names = "i2s";
493 status = "disabled";
494 };
495
496 tegra_i2s2: i2s@70301200 {
497 compatible = "nvidia,tegra124-i2s";
498 reg = <0x70301200 0x100>;
499 nvidia,ahub-cif-ids = <6 6>;
500 clocks = <&tegra_car TEGRA124_CLK_I2S2>;
501 resets = <&tegra_car 18>;
502 reset-names = "i2s";
503 status = "disabled";
504 };
505
506 tegra_i2s3: i2s@70301300 {
507 compatible = "nvidia,tegra124-i2s";
508 reg = <0x70301300 0x100>;
509 nvidia,ahub-cif-ids = <7 7>;
510 clocks = <&tegra_car TEGRA124_CLK_I2S3>;
511 resets = <&tegra_car 101>;
512 reset-names = "i2s";
513 status = "disabled";
514 };
515
516 tegra_i2s4: i2s@70301400 {
517 compatible = "nvidia,tegra124-i2s";
518 reg = <0x70301400 0x100>;
519 nvidia,ahub-cif-ids = <8 8>;
520 clocks = <&tegra_car TEGRA124_CLK_I2S4>;
521 resets = <&tegra_car 102>;
522 reset-names = "i2s";
523 status = "disabled";
524 };
107 }; 525 };
108 526
109 cpus { 527 cpus {
diff --git a/arch/arm/boot/dts/tegra20-colibri-512.dtsi b/arch/arm/boot/dts/tegra20-colibri-512.dtsi
index cbe89ff10686..8e0066ad9628 100644
--- a/arch/arm/boot/dts/tegra20-colibri-512.dtsi
+++ b/arch/arm/boot/dts/tegra20-colibri-512.dtsi
@@ -4,12 +4,17 @@
4 model = "Toradex Colibri T20 512MB"; 4 model = "Toradex Colibri T20 512MB";
5 compatible = "toradex,colibri_t20-512", "nvidia,tegra20"; 5 compatible = "toradex,colibri_t20-512", "nvidia,tegra20";
6 6
7 aliases {
8 rtc0 = "/i2c@7000d000/tps6586x@34";
9 rtc1 = "/rtc@7000e000";
10 };
11
7 memory { 12 memory {
8 reg = <0x00000000 0x20000000>; 13 reg = <0x00000000 0x20000000>;
9 }; 14 };
10 15
11 host1x { 16 host1x@50000000 {
12 hdmi { 17 hdmi@54280000 {
13 vdd-supply = <&hdmi_vdd_reg>; 18 vdd-supply = <&hdmi_vdd_reg>;
14 pll-supply = <&hdmi_pll_reg>; 19 pll-supply = <&hdmi_pll_reg>;
15 20
@@ -19,7 +24,7 @@
19 }; 24 };
20 }; 25 };
21 26
22 pinmux { 27 pinmux@70000014 {
23 pinctrl-names = "default"; 28 pinctrl-names = "default";
24 pinctrl-0 = <&state_default>; 29 pinctrl-0 = <&state_default>;
25 30
@@ -27,20 +32,20 @@
27 audio_refclk { 32 audio_refclk {
28 nvidia,pins = "cdev1"; 33 nvidia,pins = "cdev1";
29 nvidia,function = "plla_out"; 34 nvidia,function = "plla_out";
30 nvidia,pull = <0>; 35 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
31 nvidia,tristate = <0>; 36 nvidia,tristate = <TEGRA_PIN_DISABLE>;
32 }; 37 };
33 crt { 38 crt {
34 nvidia,pins = "crtp"; 39 nvidia,pins = "crtp";
35 nvidia,function = "crt"; 40 nvidia,function = "crt";
36 nvidia,pull = <0>; 41 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
37 nvidia,tristate = <1>; 42 nvidia,tristate = <TEGRA_PIN_ENABLE>;
38 }; 43 };
39 dap3 { 44 dap3 {
40 nvidia,pins = "dap3"; 45 nvidia,pins = "dap3";
41 nvidia,function = "dap3"; 46 nvidia,function = "dap3";
42 nvidia,pull = <0>; 47 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
43 nvidia,tristate = <0>; 48 nvidia,tristate = <TEGRA_PIN_DISABLE>;
44 }; 49 };
45 displaya { 50 displaya {
46 nvidia,pins = "ld0", "ld1", "ld2", "ld3", 51 nvidia,pins = "ld0", "ld1", "ld2", "ld3",
@@ -50,155 +55,163 @@
50 "lhs", "lpw0", "lpw2", "lsc0", 55 "lhs", "lpw0", "lpw2", "lsc0",
51 "lsc1", "lsck", "lsda", "lspi", "lvs"; 56 "lsc1", "lsck", "lsda", "lspi", "lvs";
52 nvidia,function = "displaya"; 57 nvidia,function = "displaya";
53 nvidia,tristate = <1>; 58 nvidia,tristate = <TEGRA_PIN_ENABLE>;
54 }; 59 };
55 gpio_dte { 60 gpio_dte {
56 nvidia,pins = "dte"; 61 nvidia,pins = "dte";
57 nvidia,function = "rsvd1"; 62 nvidia,function = "rsvd1";
58 nvidia,pull = <0>; 63 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
59 nvidia,tristate = <0>; 64 nvidia,tristate = <TEGRA_PIN_DISABLE>;
60 }; 65 };
61 gpio_gmi { 66 gpio_gmi {
62 nvidia,pins = "ata", "atc", "atd", "ate", 67 nvidia,pins = "ata", "atc", "atd", "ate",
63 "dap1", "dap2", "dap4", "gpu", "irrx", 68 "dap1", "dap2", "dap4", "gpu", "irrx",
64 "irtx", "spia", "spib", "spic"; 69 "irtx", "spia", "spib", "spic";
65 nvidia,function = "gmi"; 70 nvidia,function = "gmi";
66 nvidia,pull = <0>; 71 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
67 nvidia,tristate = <0>; 72 nvidia,tristate = <TEGRA_PIN_DISABLE>;
68 }; 73 };
69 gpio_pta { 74 gpio_pta {
70 nvidia,pins = "pta"; 75 nvidia,pins = "pta";
71 nvidia,function = "rsvd4"; 76 nvidia,function = "rsvd4";
72 nvidia,pull = <0>; 77 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
73 nvidia,tristate = <0>; 78 nvidia,tristate = <TEGRA_PIN_DISABLE>;
74 }; 79 };
75 gpio_uac { 80 gpio_uac {
76 nvidia,pins = "uac"; 81 nvidia,pins = "uac";
77 nvidia,function = "rsvd2"; 82 nvidia,function = "rsvd2";
78 nvidia,pull = <0>; 83 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
79 nvidia,tristate = <0>; 84 nvidia,tristate = <TEGRA_PIN_DISABLE>;
80 }; 85 };
81 hdint { 86 hdint {
82 nvidia,pins = "hdint"; 87 nvidia,pins = "hdint";
83 nvidia,function = "hdmi"; 88 nvidia,function = "hdmi";
84 nvidia,tristate = <1>; 89 nvidia,tristate = <TEGRA_PIN_ENABLE>;
85 }; 90 };
86 i2c1 { 91 i2c1 {
87 nvidia,pins = "rm"; 92 nvidia,pins = "rm";
88 nvidia,function = "i2c1"; 93 nvidia,function = "i2c1";
89 nvidia,pull = <0>; 94 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
90 nvidia,tristate = <1>; 95 nvidia,tristate = <TEGRA_PIN_ENABLE>;
91 }; 96 };
92 i2c3 { 97 i2c3 {
93 nvidia,pins = "dtf"; 98 nvidia,pins = "dtf";
94 nvidia,function = "i2c3"; 99 nvidia,function = "i2c3";
95 nvidia,pull = <0>; 100 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
96 nvidia,tristate = <1>; 101 nvidia,tristate = <TEGRA_PIN_ENABLE>;
97 }; 102 };
98 i2cddc { 103 i2cddc {
99 nvidia,pins = "ddc"; 104 nvidia,pins = "ddc";
100 nvidia,function = "i2c2"; 105 nvidia,function = "i2c2";
101 nvidia,pull = <2>; 106 nvidia,pull = <TEGRA_PIN_PULL_UP>;
102 nvidia,tristate = <1>; 107 nvidia,tristate = <TEGRA_PIN_ENABLE>;
103 }; 108 };
104 i2cp { 109 i2cp {
105 nvidia,pins = "i2cp"; 110 nvidia,pins = "i2cp";
106 nvidia,function = "i2cp"; 111 nvidia,function = "i2cp";
107 nvidia,pull = <0>; 112 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
108 nvidia,tristate = <0>; 113 nvidia,tristate = <TEGRA_PIN_DISABLE>;
109 }; 114 };
110 irda { 115 irda {
111 nvidia,pins = "uad"; 116 nvidia,pins = "uad";
112 nvidia,function = "irda"; 117 nvidia,function = "irda";
113 nvidia,pull = <0>; 118 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
114 nvidia,tristate = <1>; 119 nvidia,tristate = <TEGRA_PIN_ENABLE>;
115 }; 120 };
116 nand { 121 nand {
117 nvidia,pins = "kbca", "kbcc", "kbcd", 122 nvidia,pins = "kbca", "kbcc", "kbcd",
118 "kbce", "kbcf"; 123 "kbce", "kbcf";
119 nvidia,function = "nand"; 124 nvidia,function = "nand";
120 nvidia,pull = <0>; 125 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
121 nvidia,tristate = <0>; 126 nvidia,tristate = <TEGRA_PIN_DISABLE>;
122 }; 127 };
123 owc { 128 owc {
124 nvidia,pins = "owc"; 129 nvidia,pins = "owc";
125 nvidia,function = "owr"; 130 nvidia,function = "owr";
126 nvidia,pull = <0>; 131 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
127 nvidia,tristate = <1>; 132 nvidia,tristate = <TEGRA_PIN_ENABLE>;
128 }; 133 };
129 pmc { 134 pmc {
130 nvidia,pins = "pmc"; 135 nvidia,pins = "pmc";
131 nvidia,function = "pwr_on"; 136 nvidia,function = "pwr_on";
132 nvidia,tristate = <0>; 137 nvidia,tristate = <TEGRA_PIN_DISABLE>;
133 }; 138 };
134 pwm { 139 pwm {
135 nvidia,pins = "sdb", "sdc", "sdd"; 140 nvidia,pins = "sdb", "sdc", "sdd";
136 nvidia,function = "pwm"; 141 nvidia,function = "pwm";
137 nvidia,tristate = <1>; 142 nvidia,tristate = <TEGRA_PIN_ENABLE>;
138 }; 143 };
139 sdio4 { 144 sdio4 {
140 nvidia,pins = "atb", "gma", "gme"; 145 nvidia,pins = "atb", "gma", "gme";
141 nvidia,function = "sdio4"; 146 nvidia,function = "sdio4";
142 nvidia,pull = <0>; 147 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
143 nvidia,tristate = <1>; 148 nvidia,tristate = <TEGRA_PIN_ENABLE>;
144 }; 149 };
145 spi1 { 150 spi1 {
146 nvidia,pins = "spid", "spie", "spif"; 151 nvidia,pins = "spid", "spie", "spif";
147 nvidia,function = "spi1"; 152 nvidia,function = "spi1";
148 nvidia,pull = <0>; 153 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
149 nvidia,tristate = <1>; 154 nvidia,tristate = <TEGRA_PIN_ENABLE>;
150 }; 155 };
151 spi4 { 156 spi4 {
152 nvidia,pins = "slxa", "slxc", "slxd", "slxk"; 157 nvidia,pins = "slxa", "slxc", "slxd", "slxk";
153 nvidia,function = "spi4"; 158 nvidia,function = "spi4";
154 nvidia,pull = <0>; 159 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
155 nvidia,tristate = <1>; 160 nvidia,tristate = <TEGRA_PIN_ENABLE>;
156 }; 161 };
157 uarta { 162 uarta {
158 nvidia,pins = "sdio1"; 163 nvidia,pins = "sdio1";
159 nvidia,function = "uarta"; 164 nvidia,function = "uarta";
160 nvidia,pull = <0>; 165 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
161 nvidia,tristate = <1>; 166 nvidia,tristate = <TEGRA_PIN_ENABLE>;
162 }; 167 };
163 uartd { 168 uartd {
164 nvidia,pins = "gmc"; 169 nvidia,pins = "gmc";
165 nvidia,function = "uartd"; 170 nvidia,function = "uartd";
166 nvidia,pull = <0>; 171 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
167 nvidia,tristate = <1>; 172 nvidia,tristate = <TEGRA_PIN_ENABLE>;
168 }; 173 };
169 ulpi { 174 ulpi {
170 nvidia,pins = "uaa", "uab", "uda"; 175 nvidia,pins = "uaa", "uab", "uda";
171 nvidia,function = "ulpi"; 176 nvidia,function = "ulpi";
172 nvidia,pull = <0>; 177 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
173 nvidia,tristate = <0>; 178 nvidia,tristate = <TEGRA_PIN_DISABLE>;
174 }; 179 };
175 ulpi_refclk { 180 ulpi_refclk {
176 nvidia,pins = "cdev2"; 181 nvidia,pins = "cdev2";
177 nvidia,function = "pllp_out4"; 182 nvidia,function = "pllp_out4";
178 nvidia,pull = <0>; 183 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
179 nvidia,tristate = <0>; 184 nvidia,tristate = <TEGRA_PIN_DISABLE>;
180 }; 185 };
181 usb_gpio { 186 usb_gpio {
182 nvidia,pins = "spig", "spih"; 187 nvidia,pins = "spig", "spih";
183 nvidia,function = "spi2_alt"; 188 nvidia,function = "spi2_alt";
184 nvidia,pull = <0>; 189 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
185 nvidia,tristate = <0>; 190 nvidia,tristate = <TEGRA_PIN_DISABLE>;
186 }; 191 };
187 vi { 192 vi {
188 nvidia,pins = "dta", "dtb", "dtc", "dtd"; 193 nvidia,pins = "dta", "dtb", "dtc", "dtd";
189 nvidia,function = "vi"; 194 nvidia,function = "vi";
190 nvidia,pull = <0>; 195 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
191 nvidia,tristate = <1>; 196 nvidia,tristate = <TEGRA_PIN_ENABLE>;
192 }; 197 };
193 vi_sc { 198 vi_sc {
194 nvidia,pins = "csus"; 199 nvidia,pins = "csus";
195 nvidia,function = "vi_sensor_clk"; 200 nvidia,function = "vi_sensor_clk";
196 nvidia,pull = <0>; 201 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
197 nvidia,tristate = <1>; 202 nvidia,tristate = <TEGRA_PIN_ENABLE>;
198 }; 203 };
199 }; 204 };
200 }; 205 };
201 206
207 ac97: ac97@70002000 {
208 status = "okay";
209 nvidia,codec-reset-gpio = <&gpio TEGRA_GPIO(V, 0)
210 GPIO_ACTIVE_HIGH>;
211 nvidia,codec-sync-gpio = <&gpio TEGRA_GPIO(P, 0)
212 GPIO_ACTIVE_HIGH>;
213 };
214
202 i2c@7000c000 { 215 i2c@7000c000 {
203 clock-frequency = <400000>; 216 clock-frequency = <400000>;
204 }; 217 };
@@ -225,15 +238,15 @@
225 #gpio-cells = <2>; 238 #gpio-cells = <2>;
226 gpio-controller; 239 gpio-controller;
227 240
228 sys-supply = <&vdd_5v0_reg>; 241 sys-supply = <&vdd_3v3_reg>;
229 vin-sm0-supply = <&sys_reg>; 242 vin-sm0-supply = <&sys_reg>;
230 vin-sm1-supply = <&sys_reg>; 243 vin-sm1-supply = <&sys_reg>;
231 vin-sm2-supply = <&sys_reg>; 244 vin-sm2-supply = <&sys_reg>;
232 vinldo01-supply = <&sm2_reg>; 245 vinldo01-supply = <&sm2_reg>;
233 vinldo23-supply = <&sm2_reg>; 246 vinldo23-supply = <&vdd_3v3_reg>;
234 vinldo4-supply = <&sm2_reg>; 247 vinldo4-supply = <&vdd_3v3_reg>;
235 vinldo678-supply = <&sm2_reg>; 248 vinldo678-supply = <&vdd_3v3_reg>;
236 vinldo9-supply = <&sm2_reg>; 249 vinldo9-supply = <&vdd_3v3_reg>;
237 250
238 regulators { 251 regulators {
239 #address-cells = <1>; 252 #address-cells = <1>;
@@ -250,8 +263,8 @@
250 reg = <1>; 263 reg = <1>;
251 regulator-compatible = "sm0"; 264 regulator-compatible = "sm0";
252 regulator-name = "vdd_sm0,vdd_core"; 265 regulator-name = "vdd_sm0,vdd_core";
253 regulator-min-microvolt = <1275000>; 266 regulator-min-microvolt = <1200000>;
254 regulator-max-microvolt = <1275000>; 267 regulator-max-microvolt = <1200000>;
255 regulator-always-on; 268 regulator-always-on;
256 }; 269 };
257 270
@@ -259,8 +272,8 @@
259 reg = <2>; 272 reg = <2>;
260 regulator-compatible = "sm1"; 273 regulator-compatible = "sm1";
261 regulator-name = "vdd_sm1,vdd_cpu"; 274 regulator-name = "vdd_sm1,vdd_cpu";
262 regulator-min-microvolt = <1100000>; 275 regulator-min-microvolt = <1000000>;
263 regulator-max-microvolt = <1100000>; 276 regulator-max-microvolt = <1000000>;
264 regulator-always-on; 277 regulator-always-on;
265 }; 278 };
266 279
@@ -316,8 +329,8 @@
316 reg = <10>; 329 reg = <10>;
317 regulator-compatible = "ldo6"; 330 regulator-compatible = "ldo6";
318 regulator-name = "vdd_ldo6,avdd_vdac,vddio_vi,vddio_cam"; 331 regulator-name = "vdd_ldo6,avdd_vdac,vddio_vi,vddio_cam";
319 regulator-min-microvolt = <1800000>; 332 regulator-min-microvolt = <2850000>;
320 regulator-max-microvolt = <1800000>; 333 regulator-max-microvolt = <2850000>;
321 }; 334 };
322 335
323 hdmi_vdd_reg: regulator@11 { 336 hdmi_vdd_reg: regulator@11 {
@@ -362,7 +375,7 @@
362 }; 375 };
363 }; 376 };
364 377
365 pmc { 378 pmc@7000e400 {
366 nvidia,suspend-mode = <1>; 379 nvidia,suspend-mode = <1>;
367 nvidia,cpu-pwr-good-time = <5000>; 380 nvidia,cpu-pwr-good-time = <5000>;
368 nvidia,cpu-pwr-off-time = <5000>; 381 nvidia,cpu-pwr-off-time = <5000>;
@@ -442,14 +455,6 @@
442 }; 455 };
443 }; 456 };
444 457
445 ac97: ac97 {
446 status = "okay";
447 nvidia,codec-reset-gpio = <&gpio TEGRA_GPIO(V, 0)
448 GPIO_ACTIVE_HIGH>;
449 nvidia,codec-sync-gpio = <&gpio TEGRA_GPIO(P, 0)
450 GPIO_ACTIVE_HIGH>;
451 };
452
453 usb@c5004000 { 458 usb@c5004000 {
454 status = "okay"; 459 status = "okay";
455 nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1) 460 nvidia,phy-reset-gpio = <&gpio TEGRA_GPIO(V, 1)
@@ -471,7 +476,7 @@
471 #address-cells = <1>; 476 #address-cells = <1>;
472 #size-cells = <0>; 477 #size-cells = <0>;
473 478
474 clk32k_in: clock { 479 clk32k_in: clock@0 {
475 compatible = "fixed-clock"; 480 compatible = "fixed-clock";
476 reg=<0>; 481 reg=<0>;
477 #clock-cells = <0>; 482 #clock-cells = <0>;
@@ -479,37 +484,17 @@
479 }; 484 };
480 }; 485 };
481 486
482 sound {
483 compatible = "nvidia,tegra-audio-wm9712-colibri_t20",
484 "nvidia,tegra-audio-wm9712";
485 nvidia,model = "Colibri T20 AC97 Audio";
486
487 nvidia,audio-routing =
488 "Headphone", "HPOUTL",
489 "Headphone", "HPOUTR",
490 "LineIn", "LINEINL",
491 "LineIn", "LINEINR",
492 "Mic", "MIC1";
493
494 nvidia,ac97-controller = <&ac97>;
495
496 clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
497 <&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
498 <&tegra_car TEGRA20_CLK_CDEV1>;
499 clock-names = "pll_a", "pll_a_out0", "mclk";
500 };
501
502 regulators { 487 regulators {
503 compatible = "simple-bus"; 488 compatible = "simple-bus";
504 #address-cells = <1>; 489 #address-cells = <1>;
505 #size-cells = <0>; 490 #size-cells = <0>;
506 491
507 vdd_5v0_reg: regulator@100 { 492 vdd_3v3_reg: regulator@100 {
508 compatible = "regulator-fixed"; 493 compatible = "regulator-fixed";
509 reg = <100>; 494 reg = <100>;
510 regulator-name = "vdd_5v0"; 495 regulator-name = "vdd_3v3";
511 regulator-min-microvolt = <5000000>; 496 regulator-min-microvolt = <3300000>;
512 regulator-max-microvolt = <5000000>; 497 regulator-max-microvolt = <3300000>;
513 regulator-always-on; 498 regulator-always-on;
514 }; 499 };
515 500
@@ -525,4 +510,24 @@
525 gpio = <&gpio TEGRA_GPIO(BB, 1) GPIO_ACTIVE_HIGH>; 510 gpio = <&gpio TEGRA_GPIO(BB, 1) GPIO_ACTIVE_HIGH>;
526 }; 511 };
527 }; 512 };
513
514 sound {
515 compatible = "nvidia,tegra-audio-wm9712-colibri_t20",
516 "nvidia,tegra-audio-wm9712";
517 nvidia,model = "Colibri T20 AC97 Audio";
518
519 nvidia,audio-routing =
520 "Headphone", "HPOUTL",
521 "Headphone", "HPOUTR",
522 "LineIn", "LINEINL",
523 "LineIn", "LINEINR",
524 "Mic", "MIC1";
525
526 nvidia,ac97-controller = <&ac97>;
527
528 clocks = <&tegra_car TEGRA20_CLK_PLL_A>,
529 <&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
530 <&tegra_car TEGRA20_CLK_CDEV1>;
531 clock-names = "pll_a", "pll_a_out0", "mclk";
532 };
528}; 533};
diff --git a/arch/arm/boot/dts/tegra20-harmony.dts b/arch/arm/boot/dts/tegra20-harmony.dts
index e156ab30e763..3fb1f50f6d46 100644
--- a/arch/arm/boot/dts/tegra20-harmony.dts
+++ b/arch/arm/boot/dts/tegra20-harmony.dts
@@ -1,17 +1,31 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra20.dtsi" 4#include "tegra20.dtsi"
4 5
5/ { 6/ {
6 model = "NVIDIA Tegra20 Harmony evaluation board"; 7 model = "NVIDIA Tegra20 Harmony evaluation board";
7 compatible = "nvidia,harmony", "nvidia,tegra20"; 8 compatible = "nvidia,harmony", "nvidia,tegra20";
8 9
10 aliases {
11 rtc0 = "/i2c@7000d000/tps6586x@34";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x00000000 0x40000000>; 16 reg = <0x00000000 0x40000000>;
11 }; 17 };
12 18
13 host1x { 19 host1x@50000000 {
14 hdmi { 20 dc@54200000 {
21 rgb {
22 status = "okay";
23
24 nvidia,panel = <&panel>;
25 };
26 };
27
28 hdmi@54280000 {
15 status = "okay"; 29 status = "okay";
16 30
17 vdd-supply = <&hdmi_vdd_reg>; 31 vdd-supply = <&hdmi_vdd_reg>;
@@ -23,7 +37,7 @@
23 }; 37 };
24 }; 38 };
25 39
26 pinmux { 40 pinmux@70000014 {
27 pinctrl-names = "default"; 41 pinctrl-names = "default";
28 pinctrl-0 = <&state_default>; 42 pinctrl-0 = <&state_default>;
29 43
@@ -184,50 +198,50 @@
184 "gmb", "gmc", "gmd", "gme", "gpu7", 198 "gmb", "gmc", "gmd", "gme", "gpu7",
185 "gpv", "i2cp", "pta", "rm", "slxa", 199 "gpv", "i2cp", "pta", "rm", "slxa",
186 "slxk", "spia", "spib", "uac"; 200 "slxk", "spia", "spib", "uac";
187 nvidia,pull = <0>; 201 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
188 nvidia,tristate = <0>; 202 nvidia,tristate = <TEGRA_PIN_DISABLE>;
189 }; 203 };
190 conf_ck32 { 204 conf_ck32 {
191 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", 205 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
192 "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; 206 "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
193 nvidia,pull = <0>; 207 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
194 }; 208 };
195 conf_csus { 209 conf_csus {
196 nvidia,pins = "csus", "spid", "spif"; 210 nvidia,pins = "csus", "spid", "spif";
197 nvidia,pull = <1>; 211 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
198 nvidia,tristate = <1>; 212 nvidia,tristate = <TEGRA_PIN_ENABLE>;
199 }; 213 };
200 conf_crtp { 214 conf_crtp {
201 nvidia,pins = "crtp", "dap2", "dap3", "dap4", 215 nvidia,pins = "crtp", "dap2", "dap3", "dap4",
202 "dtc", "dte", "dtf", "gpu", "sdio1", 216 "dtc", "dte", "dtf", "gpu", "sdio1",
203 "slxc", "slxd", "spdi", "spdo", "spig", 217 "slxc", "slxd", "spdi", "spdo", "spig",
204 "uda"; 218 "uda";
205 nvidia,pull = <0>; 219 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
206 nvidia,tristate = <1>; 220 nvidia,tristate = <TEGRA_PIN_ENABLE>;
207 }; 221 };
208 conf_ddc { 222 conf_ddc {
209 nvidia,pins = "ddc", "dta", "dtd", "kbca", 223 nvidia,pins = "ddc", "dta", "dtd", "kbca",
210 "kbcb", "kbcc", "kbcd", "kbce", "kbcf", 224 "kbcb", "kbcc", "kbcd", "kbce", "kbcf",
211 "sdc"; 225 "sdc";
212 nvidia,pull = <2>; 226 nvidia,pull = <TEGRA_PIN_PULL_UP>;
213 nvidia,tristate = <0>; 227 nvidia,tristate = <TEGRA_PIN_DISABLE>;
214 }; 228 };
215 conf_hdint { 229 conf_hdint {
216 nvidia,pins = "hdint", "lcsn", "ldc", "lm1", 230 nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
217 "lpw1", "lsc1", "lsck", "lsda", "lsdi", 231 "lpw1", "lsc1", "lsck", "lsda", "lsdi",
218 "lvp0", "owc", "sdb"; 232 "lvp0", "owc", "sdb";
219 nvidia,tristate = <1>; 233 nvidia,tristate = <TEGRA_PIN_ENABLE>;
220 }; 234 };
221 conf_irrx { 235 conf_irrx {
222 nvidia,pins = "irrx", "irtx", "sdd", "spic", 236 nvidia,pins = "irrx", "irtx", "sdd", "spic",
223 "spie", "spih", "uaa", "uab", "uad", 237 "spie", "spih", "uaa", "uab", "uad",
224 "uca", "ucb"; 238 "uca", "ucb";
225 nvidia,pull = <2>; 239 nvidia,pull = <TEGRA_PIN_PULL_UP>;
226 nvidia,tristate = <1>; 240 nvidia,tristate = <TEGRA_PIN_ENABLE>;
227 }; 241 };
228 conf_lc { 242 conf_lc {
229 nvidia,pins = "lc", "ls"; 243 nvidia,pins = "lc", "ls";
230 nvidia,pull = <2>; 244 nvidia,pull = <TEGRA_PIN_PULL_UP>;
231 }; 245 };
232 conf_ld0 { 246 conf_ld0 {
233 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4", 247 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
@@ -237,12 +251,12 @@
237 "lhp1", "lhp2", "lhs", "lm0", "lpp", 251 "lhp1", "lhp2", "lhs", "lm0", "lpp",
238 "lpw0", "lpw2", "lsc0", "lspi", "lvp1", 252 "lpw0", "lpw2", "lsc0", "lspi", "lvp1",
239 "lvs", "pmc"; 253 "lvs", "pmc";
240 nvidia,tristate = <0>; 254 nvidia,tristate = <TEGRA_PIN_DISABLE>;
241 }; 255 };
242 conf_ld17_0 { 256 conf_ld17_0 {
243 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 257 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
244 "ld23_22"; 258 "ld23_22";
245 nvidia,pull = <1>; 259 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
246 }; 260 };
247 }; 261 };
248 }; 262 };
@@ -255,6 +269,10 @@
255 status = "okay"; 269 status = "okay";
256 }; 270 };
257 271
272 pwm: pwm@7000a000 {
273 status = "okay";
274 };
275
258 i2c@7000c000 { 276 i2c@7000c000 {
259 status = "okay"; 277 status = "okay";
260 clock-frequency = <400000>; 278 clock-frequency = <400000>;
@@ -415,7 +433,124 @@
415 }; 433 };
416 }; 434 };
417 435
418 pmc { 436 kbc@7000e200 {
437 status = "okay";
438 nvidia,debounce-delay-ms = <2>;
439 nvidia,repeat-delay-ms = <160>;
440 nvidia,kbc-row-pins = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>;
441 nvidia,kbc-col-pins = <16 17 18 19 20 21 22 23>;
442 linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_W)
443 MATRIX_KEY(0x00, 0x03, KEY_S)
444 MATRIX_KEY(0x00, 0x04, KEY_A)
445 MATRIX_KEY(0x00, 0x05, KEY_Z)
446 MATRIX_KEY(0x00, 0x07, KEY_FN)
447 MATRIX_KEY(0x01, 0x07, KEY_MENU)
448 MATRIX_KEY(0x02, 0x06, KEY_LEFTALT)
449 MATRIX_KEY(0x02, 0x07, KEY_RIGHTALT)
450 MATRIX_KEY(0x03, 0x00, KEY_5)
451 MATRIX_KEY(0x03, 0x01, KEY_4)
452 MATRIX_KEY(0x03, 0x02, KEY_R)
453 MATRIX_KEY(0x03, 0x03, KEY_E)
454 MATRIX_KEY(0x03, 0x04, KEY_F)
455 MATRIX_KEY(0x03, 0x05, KEY_D)
456 MATRIX_KEY(0x03, 0x06, KEY_X)
457 MATRIX_KEY(0x04, 0x00, KEY_7)
458 MATRIX_KEY(0x04, 0x01, KEY_6)
459 MATRIX_KEY(0x04, 0x02, KEY_T)
460 MATRIX_KEY(0x04, 0x03, KEY_H)
461 MATRIX_KEY(0x04, 0x04, KEY_G)
462 MATRIX_KEY(0x04, 0x05, KEY_V)
463 MATRIX_KEY(0x04, 0x06, KEY_C)
464 MATRIX_KEY(0x04, 0x07, KEY_SPACE)
465 MATRIX_KEY(0x05, 0x00, KEY_9)
466 MATRIX_KEY(0x05, 0x01, KEY_8)
467 MATRIX_KEY(0x05, 0x02, KEY_U)
468 MATRIX_KEY(0x05, 0x03, KEY_Y)
469 MATRIX_KEY(0x05, 0x04, KEY_J)
470 MATRIX_KEY(0x05, 0x05, KEY_N)
471 MATRIX_KEY(0x05, 0x06, KEY_B)
472 MATRIX_KEY(0x05, 0x07, KEY_BACKSLASH)
473 MATRIX_KEY(0x06, 0x00, KEY_MINUS)
474 MATRIX_KEY(0x06, 0x01, KEY_0)
475 MATRIX_KEY(0x06, 0x02, KEY_O)
476 MATRIX_KEY(0x06, 0x03, KEY_I)
477 MATRIX_KEY(0x06, 0x04, KEY_L)
478 MATRIX_KEY(0x06, 0x05, KEY_K)
479 MATRIX_KEY(0x06, 0x06, KEY_COMMA)
480 MATRIX_KEY(0x06, 0x07, KEY_M)
481 MATRIX_KEY(0x07, 0x01, KEY_EQUAL)
482 MATRIX_KEY(0x07, 0x02, KEY_RIGHTBRACE)
483 MATRIX_KEY(0x07, 0x03, KEY_ENTER)
484 MATRIX_KEY(0x07, 0x07, KEY_MENU)
485 MATRIX_KEY(0x08, 0x04, KEY_LEFTSHIFT)
486 MATRIX_KEY(0x08, 0x05, KEY_RIGHTSHIFT)
487 MATRIX_KEY(0x09, 0x05, KEY_LEFTCTRL)
488 MATRIX_KEY(0x09, 0x07, KEY_RIGHTCTRL)
489 MATRIX_KEY(0x0B, 0x00, KEY_LEFTBRACE)
490 MATRIX_KEY(0x0B, 0x01, KEY_P)
491 MATRIX_KEY(0x0B, 0x02, KEY_APOSTROPHE)
492 MATRIX_KEY(0x0B, 0x03, KEY_SEMICOLON)
493 MATRIX_KEY(0x0B, 0x04, KEY_SLASH)
494 MATRIX_KEY(0x0B, 0x05, KEY_DOT)
495 MATRIX_KEY(0x0C, 0x00, KEY_F10)
496 MATRIX_KEY(0x0C, 0x01, KEY_F9)
497 MATRIX_KEY(0x0C, 0x02, KEY_BACKSPACE)
498 MATRIX_KEY(0x0C, 0x03, KEY_3)
499 MATRIX_KEY(0x0C, 0x04, KEY_2)
500 MATRIX_KEY(0x0C, 0x05, KEY_UP)
501 MATRIX_KEY(0x0C, 0x06, KEY_PRINT)
502 MATRIX_KEY(0x0C, 0x07, KEY_PAUSE)
503 MATRIX_KEY(0x0D, 0x00, KEY_INSERT)
504 MATRIX_KEY(0x0D, 0x01, KEY_DELETE)
505 MATRIX_KEY(0x0D, 0x03, KEY_PAGEUP )
506 MATRIX_KEY(0x0D, 0x04, KEY_PAGEDOWN)
507 MATRIX_KEY(0x0D, 0x05, KEY_RIGHT)
508 MATRIX_KEY(0x0D, 0x06, KEY_DOWN)
509 MATRIX_KEY(0x0D, 0x07, KEY_LEFT)
510 MATRIX_KEY(0x0E, 0x00, KEY_F11)
511 MATRIX_KEY(0x0E, 0x01, KEY_F12)
512 MATRIX_KEY(0x0E, 0x02, KEY_F8)
513 MATRIX_KEY(0x0E, 0x03, KEY_Q)
514 MATRIX_KEY(0x0E, 0x04, KEY_F4)
515 MATRIX_KEY(0x0E, 0x05, KEY_F3)
516 MATRIX_KEY(0x0E, 0x06, KEY_1)
517 MATRIX_KEY(0x0E, 0x07, KEY_F7)
518 MATRIX_KEY(0x0F, 0x00, KEY_ESC)
519 MATRIX_KEY(0x0F, 0x01, KEY_GRAVE)
520 MATRIX_KEY(0x0F, 0x02, KEY_F5)
521 MATRIX_KEY(0x0F, 0x03, KEY_TAB)
522 MATRIX_KEY(0x0F, 0x04, KEY_F1)
523 MATRIX_KEY(0x0F, 0x05, KEY_F2)
524 MATRIX_KEY(0x0F, 0x06, KEY_CAPSLOCK)
525 MATRIX_KEY(0x0F, 0x07, KEY_F6)
526 MATRIX_KEY(0x14, 0x00, KEY_KP7)
527 MATRIX_KEY(0x15, 0x00, KEY_KP9)
528 MATRIX_KEY(0x15, 0x01, KEY_KP8)
529 MATRIX_KEY(0x15, 0x02, KEY_KP4)
530 MATRIX_KEY(0x15, 0x04, KEY_KP1)
531 MATRIX_KEY(0x16, 0x01, KEY_KPSLASH)
532 MATRIX_KEY(0x16, 0x02, KEY_KP6)
533 MATRIX_KEY(0x16, 0x03, KEY_KP5)
534 MATRIX_KEY(0x16, 0x04, KEY_KP3)
535 MATRIX_KEY(0x16, 0x05, KEY_KP2)
536 MATRIX_KEY(0x16, 0x07, KEY_KP0)
537 MATRIX_KEY(0x1B, 0x01, KEY_KPASTERISK)
538 MATRIX_KEY(0x1B, 0x03, KEY_KPMINUS)
539 MATRIX_KEY(0x1B, 0x04, KEY_KPPLUS)
540 MATRIX_KEY(0x1B, 0x05, KEY_KPDOT)
541 MATRIX_KEY(0x1C, 0x05, KEY_VOLUMEUP)
542 MATRIX_KEY(0x1D, 0x03, KEY_HOME)
543 MATRIX_KEY(0x1D, 0x04, KEY_END)
544 MATRIX_KEY(0x1D, 0x05, KEY_BRIGHTNESSUP)
545 MATRIX_KEY(0x1D, 0x06, KEY_VOLUMEDOWN)
546 MATRIX_KEY(0x1D, 0x07, KEY_BRIGHTNESSDOWN)
547 MATRIX_KEY(0x1E, 0x00, KEY_NUMLOCK)
548 MATRIX_KEY(0x1E, 0x01, KEY_SCROLLLOCK)
549 MATRIX_KEY(0x1E, 0x02, KEY_MUTE)
550 MATRIX_KEY(0x1F, 0x04, KEY_QUESTION)>;
551 };
552
553 pmc@7000e400 {
419 nvidia,invert-interrupt; 554 nvidia,invert-interrupt;
420 nvidia,suspend-mode = <1>; 555 nvidia,suspend-mode = <1>;
421 nvidia,cpu-pwr-good-time = <5000>; 556 nvidia,cpu-pwr-good-time = <5000>;
@@ -425,7 +560,7 @@
425 nvidia,sys-clock-req-active-high; 560 nvidia,sys-clock-req-active-high;
426 }; 561 };
427 562
428 pcie-controller { 563 pcie-controller@80003000 {
429 pex-clk-supply = <&pci_clk_reg>; 564 pex-clk-supply = <&pci_clk_reg>;
430 vdd-supply = <&pci_vdd_reg>; 565 vdd-supply = <&pci_vdd_reg>;
431 status = "okay"; 566 status = "okay";
@@ -483,12 +618,23 @@
483 bus-width = <8>; 618 bus-width = <8>;
484 }; 619 };
485 620
621 backlight: backlight {
622 compatible = "pwm-backlight";
623
624 enable-gpios = <&gpio TEGRA_GPIO(B, 5) GPIO_ACTIVE_HIGH>;
625 power-supply = <&vdd_bl_reg>;
626 pwms = <&pwm 0 5000000>;
627
628 brightness-levels = <0 4 8 16 32 64 128 255>;
629 default-brightness-level = <6>;
630 };
631
486 clocks { 632 clocks {
487 compatible = "simple-bus"; 633 compatible = "simple-bus";
488 #address-cells = <1>; 634 #address-cells = <1>;
489 #size-cells = <0>; 635 #size-cells = <0>;
490 636
491 clk32k_in: clock { 637 clk32k_in: clock@0 {
492 compatible = "fixed-clock"; 638 compatible = "fixed-clock";
493 reg=<0>; 639 reg=<0>;
494 #clock-cells = <0>; 640 #clock-cells = <0>;
@@ -502,126 +648,18 @@
502 power { 648 power {
503 label = "Power"; 649 label = "Power";
504 gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>; 650 gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
505 linux,code = <116>; /* KEY_POWER */ 651 linux,code = <KEY_POWER>;
506 gpio-key,wakeup; 652 gpio-key,wakeup;
507 }; 653 };
508 }; 654 };
509 655
510 kbc { 656 panel: panel {
511 status = "okay"; 657 compatible = "auo,b101aw03", "simple-panel";
512 nvidia,debounce-delay-ms = <2>; 658
513 nvidia,repeat-delay-ms = <160>; 659 power-supply = <&vdd_pnl_reg>;
514 nvidia,kbc-row-pins = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>; 660 enable-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_HIGH>;
515 nvidia,kbc-col-pins = <16 17 18 19 20 21 22 23>; 661
516 linux,keymap = <0x00020011 /* KEY_W */ 662 backlight = <&backlight>;
517 0x0003001F /* KEY_S */
518 0x0004001E /* KEY_A */
519 0x0005002C /* KEY_Z */
520 0x000701D0 /* KEY_FN */
521 0x0107008B /* KEY_MENU */
522 0x02060038 /* KEY_LEFTALT */
523 0x02070064 /* KEY_RIGHTALT */
524 0x03000006 /* KEY_5 */
525 0x03010005 /* KEY_4 */
526 0x03020013 /* KEY_R */
527 0x03030012 /* KEY_E */
528 0x03040021 /* KEY_F */
529 0x03050020 /* KEY_D */
530 0x0306002D /* KEY_X */
531 0x04000008 /* KEY_7 */
532 0x04010007 /* KEY_6 */
533 0x04020014 /* KEY_T */
534 0x04030023 /* KEY_H */
535 0x04040022 /* KEY_G */
536 0x0405002F /* KEY_V */
537 0x0406002E /* KEY_C */
538 0x04070039 /* KEY_SPACE */
539 0x0500000A /* KEY_9 */
540 0x05010009 /* KEY_8 */
541 0x05020016 /* KEY_U */
542 0x05030015 /* KEY_Y */
543 0x05040024 /* KEY_J */
544 0x05050031 /* KEY_N */
545 0x05060030 /* KEY_B */
546 0x0507002B /* KEY_BACKSLASH */
547 0x0600000C /* KEY_MINUS */
548 0x0601000B /* KEY_0 */
549 0x06020018 /* KEY_O */
550 0x06030017 /* KEY_I */
551 0x06040026 /* KEY_L */
552 0x06050025 /* KEY_K */
553 0x06060033 /* KEY_COMMA */
554 0x06070032 /* KEY_M */
555 0x0701000D /* KEY_EQUAL */
556 0x0702001B /* KEY_RIGHTBRACE */
557 0x0703001C /* KEY_ENTER */
558 0x0707008B /* KEY_MENU */
559 0x0804002A /* KEY_LEFTSHIFT */
560 0x08050036 /* KEY_RIGHTSHIFT */
561 0x0905001D /* KEY_LEFTCTRL */
562 0x09070061 /* KEY_RIGHTCTRL */
563 0x0B00001A /* KEY_LEFTBRACE */
564 0x0B010019 /* KEY_P */
565 0x0B020028 /* KEY_APOSTROPHE */
566 0x0B030027 /* KEY_SEMICOLON */
567 0x0B040035 /* KEY_SLASH */
568 0x0B050034 /* KEY_DOT */
569 0x0C000044 /* KEY_F10 */
570 0x0C010043 /* KEY_F9 */
571 0x0C02000E /* KEY_BACKSPACE */
572 0x0C030004 /* KEY_3 */
573 0x0C040003 /* KEY_2 */
574 0x0C050067 /* KEY_UP */
575 0x0C0600D2 /* KEY_PRINT */
576 0x0C070077 /* KEY_PAUSE */
577 0x0D00006E /* KEY_INSERT */
578 0x0D01006F /* KEY_DELETE */
579 0x0D030068 /* KEY_PAGEUP */
580 0x0D04006D /* KEY_PAGEDOWN */
581 0x0D05006A /* KEY_RIGHT */
582 0x0D06006C /* KEY_DOWN */
583 0x0D070069 /* KEY_LEFT */
584 0x0E000057 /* KEY_F11 */
585 0x0E010058 /* KEY_F12 */
586 0x0E020042 /* KEY_F8 */
587 0x0E030010 /* KEY_Q */
588 0x0E04003E /* KEY_F4 */
589 0x0E05003D /* KEY_F3 */
590 0x0E060002 /* KEY_1 */
591 0x0E070041 /* KEY_F7 */
592 0x0F000001 /* KEY_ESC */
593 0x0F010029 /* KEY_GRAVE */
594 0x0F02003F /* KEY_F5 */
595 0x0F03000F /* KEY_TAB */
596 0x0F04003B /* KEY_F1 */
597 0x0F05003C /* KEY_F2 */
598 0x0F06003A /* KEY_CAPSLOCK */
599 0x0F070040 /* KEY_F6 */
600 0x14000047 /* KEY_KP7 */
601 0x15000049 /* KEY_KP9 */
602 0x15010048 /* KEY_KP8 */
603 0x1502004B /* KEY_KP4 */
604 0x1504004F /* KEY_KP1 */
605 0x1601004E /* KEY_KPSLASH */
606 0x1602004D /* KEY_KP6 */
607 0x1603004C /* KEY_KP5 */
608 0x16040051 /* KEY_KP3 */
609 0x16050050 /* KEY_KP2 */
610 0x16070052 /* KEY_KP0 */
611 0x1B010037 /* KEY_KPASTERISK */
612 0x1B03004A /* KEY_KPMINUS */
613 0x1B04004E /* KEY_KPPLUS */
614 0x1B050053 /* KEY_KPDOT */
615 0x1C050073 /* KEY_VOLUMEUP */
616 0x1D030066 /* KEY_HOME */
617 0x1D04006B /* KEY_END */
618 0x1D0500E1 /* KEY_BRIGHTNESSUP */
619 0x1D060072 /* KEY_VOLUMEDOWN */
620 0x1D0700E0 /* KEY_BRIGHTNESSDOWN */
621 0x1E000045 /* KEY_NUMLOCK */
622 0x1E010046 /* KEY_SCROLLLOCK */
623 0x1E020071 /* KEY_MUTE */
624 0x1F0400D6>; /* KEY_QUESTION */
625 }; 663 };
626 664
627 regulators { 665 regulators {
@@ -667,7 +705,7 @@
667 enable-active-high; 705 enable-active-high;
668 }; 706 };
669 707
670 regulator@4 { 708 vdd_pnl_reg: regulator@4 {
671 compatible = "regulator-fixed"; 709 compatible = "regulator-fixed";
672 reg = <4>; 710 reg = <4>;
673 regulator-name = "vdd_pnl"; 711 regulator-name = "vdd_pnl";
@@ -677,7 +715,7 @@
677 enable-active-high; 715 enable-active-high;
678 }; 716 };
679 717
680 regulator@5 { 718 vdd_bl_reg: regulator@5 {
681 compatible = "regulator-fixed"; 719 compatible = "regulator-fixed";
682 reg = <5>; 720 reg = <5>;
683 regulator-name = "vdd_bl"; 721 regulator-name = "vdd_bl";
diff --git a/arch/arm/boot/dts/tegra20-iris-512.dts b/arch/arm/boot/dts/tegra20-iris-512.dts
index f2222bd74eab..8cfb83f42e1f 100644
--- a/arch/arm/boot/dts/tegra20-iris-512.dts
+++ b/arch/arm/boot/dts/tegra20-iris-512.dts
@@ -6,61 +6,61 @@
6 model = "Toradex Colibri T20 512MB on Iris"; 6 model = "Toradex Colibri T20 512MB on Iris";
7 compatible = "toradex,iris", "toradex,colibri_t20-512", "nvidia,tegra20"; 7 compatible = "toradex,iris", "toradex,colibri_t20-512", "nvidia,tegra20";
8 8
9 host1x { 9 host1x@50000000 {
10 hdmi { 10 hdmi@54280000 {
11 status = "okay"; 11 status = "okay";
12 }; 12 };
13 }; 13 };
14 14
15 pinmux { 15 pinmux@70000014 {
16 state_default: pinmux { 16 state_default: pinmux {
17 hdint { 17 hdint {
18 nvidia,tristate = <0>; 18 nvidia,tristate = <TEGRA_PIN_DISABLE>;
19 }; 19 };
20 20
21 i2cddc { 21 i2cddc {
22 nvidia,tristate = <0>; 22 nvidia,tristate = <TEGRA_PIN_DISABLE>;
23 }; 23 };
24 24
25 sdio4 { 25 sdio4 {
26 nvidia,tristate = <0>; 26 nvidia,tristate = <TEGRA_PIN_DISABLE>;
27 }; 27 };
28 28
29 uarta { 29 uarta {
30 nvidia,tristate = <0>; 30 nvidia,tristate = <TEGRA_PIN_DISABLE>;
31 }; 31 };
32 32
33 uartd { 33 uartd {
34 nvidia,tristate = <0>; 34 nvidia,tristate = <TEGRA_PIN_DISABLE>;
35 }; 35 };
36 }; 36 };
37 }; 37 };
38 38
39 usb@c5000000 { 39 serial@70006000 {
40 status = "okay"; 40 status = "okay";
41 }; 41 };
42 42
43 usb-phy@c5000000 { 43 serial@70006300 {
44 status = "okay"; 44 status = "okay";
45 }; 45 };
46 46
47 usb@c5008000 { 47 i2c_ddc: i2c@7000c400 {
48 status = "okay"; 48 status = "okay";
49 }; 49 };
50 50
51 usb-phy@c5008000 { 51 usb@c5000000 {
52 status = "okay"; 52 status = "okay";
53 }; 53 };
54 54
55 serial@70006000 { 55 usb-phy@c5000000 {
56 status = "okay"; 56 status = "okay";
57 }; 57 };
58 58
59 serial@70006300 { 59 usb@c5008000 {
60 status = "okay"; 60 status = "okay";
61 }; 61 };
62 62
63 i2c_ddc: i2c@7000c400 { 63 usb-phy@c5008000 {
64 status = "okay"; 64 status = "okay";
65 }; 65 };
66 66
diff --git a/arch/arm/boot/dts/tegra20-medcom-wide.dts b/arch/arm/boot/dts/tegra20-medcom-wide.dts
index 7580578903cf..6d3a4cbc36cc 100644
--- a/arch/arm/boot/dts/tegra20-medcom-wide.dts
+++ b/arch/arm/boot/dts/tegra20-medcom-wide.dts
@@ -6,7 +6,7 @@
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 { 9 pwm@7000a000 {
10 status = "okay"; 10 status = "okay";
11 }; 11 };
12 12
diff --git a/arch/arm/boot/dts/tegra20-paz00.dts b/arch/arm/boot/dts/tegra20-paz00.dts
index e57fb3aefc2a..c7cd8e6802d7 100644
--- a/arch/arm/boot/dts/tegra20-paz00.dts
+++ b/arch/arm/boot/dts/tegra20-paz00.dts
@@ -1,17 +1,23 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra20.dtsi" 4#include "tegra20.dtsi"
4 5
5/ { 6/ {
6 model = "Toshiba AC100 / Dynabook AZ"; 7 model = "Toshiba AC100 / Dynabook AZ";
7 compatible = "compal,paz00", "nvidia,tegra20"; 8 compatible = "compal,paz00", "nvidia,tegra20";
8 9
10 aliases {
11 rtc0 = "/i2c@7000d000/tps6586x@34";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x00000000 0x20000000>; 16 reg = <0x00000000 0x20000000>;
11 }; 17 };
12 18
13 host1x { 19 host1x@50000000 {
14 hdmi { 20 hdmi@54280000 {
15 status = "okay"; 21 status = "okay";
16 22
17 vdd-supply = <&hdmi_vdd_reg>; 23 vdd-supply = <&hdmi_vdd_reg>;
@@ -23,7 +29,7 @@
23 }; 29 };
24 }; 30 };
25 31
26 pinmux { 32 pinmux@70000014 {
27 pinctrl-names = "default"; 33 pinctrl-names = "default";
28 pinctrl-0 = <&state_default>; 34 pinctrl-0 = <&state_default>;
29 35
@@ -177,39 +183,39 @@
177 "gpu", "gpu7", "gpv", "i2cp", "pta", 183 "gpu", "gpu7", "gpv", "i2cp", "pta",
178 "rm", "sdio1", "slxk", "spdo", "uac", 184 "rm", "sdio1", "slxk", "spdo", "uac",
179 "uda"; 185 "uda";
180 nvidia,pull = <0>; 186 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
181 nvidia,tristate = <0>; 187 nvidia,tristate = <TEGRA_PIN_DISABLE>;
182 }; 188 };
183 conf_ck32 { 189 conf_ck32 {
184 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", 190 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
185 "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; 191 "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
186 nvidia,pull = <0>; 192 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
187 }; 193 };
188 conf_crtp { 194 conf_crtp {
189 nvidia,pins = "crtp", "dap3", "dap4", "dtb", 195 nvidia,pins = "crtp", "dap3", "dap4", "dtb",
190 "dtc", "dte", "slxa", "slxc", "slxd", 196 "dtc", "dte", "slxa", "slxc", "slxd",
191 "spdi"; 197 "spdi";
192 nvidia,pull = <0>; 198 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
193 nvidia,tristate = <1>; 199 nvidia,tristate = <TEGRA_PIN_ENABLE>;
194 }; 200 };
195 conf_csus { 201 conf_csus {
196 nvidia,pins = "csus", "spia", "spib", "spid", 202 nvidia,pins = "csus", "spia", "spib", "spid",
197 "spif"; 203 "spif";
198 nvidia,pull = <1>; 204 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
199 nvidia,tristate = <1>; 205 nvidia,tristate = <TEGRA_PIN_ENABLE>;
200 }; 206 };
201 conf_ddc { 207 conf_ddc {
202 nvidia,pins = "ddc", "irrx", "irtx", "kbca", 208 nvidia,pins = "ddc", "irrx", "irtx", "kbca",
203 "kbcb", "kbcc", "kbcd", "kbce", "kbcf", 209 "kbcb", "kbcc", "kbcd", "kbce", "kbcf",
204 "spic", "spig", "uaa", "uab"; 210 "spic", "spig", "uaa", "uab";
205 nvidia,pull = <2>; 211 nvidia,pull = <TEGRA_PIN_PULL_UP>;
206 nvidia,tristate = <0>; 212 nvidia,tristate = <TEGRA_PIN_DISABLE>;
207 }; 213 };
208 conf_dta { 214 conf_dta {
209 nvidia,pins = "dta", "dtd", "owc", "sdc", "sdd", 215 nvidia,pins = "dta", "dtd", "owc", "sdc", "sdd",
210 "spie", "spih", "uad", "uca", "ucb"; 216 "spie", "spih", "uad", "uca", "ucb";
211 nvidia,pull = <2>; 217 nvidia,pull = <TEGRA_PIN_PULL_UP>;
212 nvidia,tristate = <1>; 218 nvidia,tristate = <TEGRA_PIN_ENABLE>;
213 }; 219 };
214 conf_hdint { 220 conf_hdint {
215 nvidia,pins = "hdint", "ld0", "ld1", "ld2", 221 nvidia,pins = "hdint", "ld0", "ld1", "ld2",
@@ -218,23 +224,23 @@
218 "ld13", "ld14", "ld15", "ld16", "ld17", 224 "ld13", "ld14", "ld15", "ld16", "ld17",
219 "ldc", "ldi", "lhs", "lsc0", "lspi", 225 "ldc", "ldi", "lhs", "lsc0", "lspi",
220 "lvs", "pmc"; 226 "lvs", "pmc";
221 nvidia,tristate = <0>; 227 nvidia,tristate = <TEGRA_PIN_DISABLE>;
222 }; 228 };
223 conf_lc { 229 conf_lc {
224 nvidia,pins = "lc", "ls"; 230 nvidia,pins = "lc", "ls";
225 nvidia,pull = <2>; 231 nvidia,pull = <TEGRA_PIN_PULL_UP>;
226 }; 232 };
227 conf_lcsn { 233 conf_lcsn {
228 nvidia,pins = "lcsn", "lhp0", "lhp1", "lhp2", 234 nvidia,pins = "lcsn", "lhp0", "lhp1", "lhp2",
229 "lm0", "lm1", "lpp", "lpw0", "lpw1", 235 "lm0", "lm1", "lpp", "lpw0", "lpw1",
230 "lpw2", "lsc1", "lsck", "lsda", "lsdi", 236 "lpw2", "lsc1", "lsck", "lsda", "lsdi",
231 "lvp0", "lvp1", "sdb"; 237 "lvp0", "lvp1", "sdb";
232 nvidia,tristate = <1>; 238 nvidia,tristate = <TEGRA_PIN_ENABLE>;
233 }; 239 };
234 conf_ld17_0 { 240 conf_ld17_0 {
235 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 241 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
236 "ld23_22"; 242 "ld23_22";
237 nvidia,pull = <1>; 243 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
238 }; 244 };
239 }; 245 };
240 }; 246 };
@@ -268,7 +274,7 @@
268 clock-frequency = <100000>; 274 clock-frequency = <100000>;
269 }; 275 };
270 276
271 nvec { 277 nvec@7000c500 {
272 compatible = "nvidia,nvec"; 278 compatible = "nvidia,nvec";
273 reg = <0x7000c500 0x100>; 279 reg = <0x7000c500 0x100>;
274 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>; 280 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
@@ -417,7 +423,7 @@
417 }; 423 };
418 }; 424 };
419 425
420 pmc { 426 pmc@7000e400 {
421 nvidia,invert-interrupt; 427 nvidia,invert-interrupt;
422 nvidia,suspend-mode = <1>; 428 nvidia,suspend-mode = <1>;
423 nvidia,cpu-pwr-good-time = <2000>; 429 nvidia,cpu-pwr-good-time = <2000>;
@@ -474,7 +480,7 @@
474 #address-cells = <1>; 480 #address-cells = <1>;
475 #size-cells = <0>; 481 #size-cells = <0>;
476 482
477 clk32k_in: clock { 483 clk32k_in: clock@0 {
478 compatible = "fixed-clock"; 484 compatible = "fixed-clock";
479 reg=<0>; 485 reg=<0>;
480 #clock-cells = <0>; 486 #clock-cells = <0>;
@@ -488,7 +494,7 @@
488 power { 494 power {
489 label = "Power"; 495 label = "Power";
490 gpios = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_LOW>; 496 gpios = <&gpio TEGRA_GPIO(J, 7) GPIO_ACTIVE_LOW>;
491 linux,code = <116>; /* KEY_POWER */ 497 linux,code = <KEY_POWER>;
492 gpio-key,wakeup; 498 gpio-key,wakeup;
493 }; 499 };
494 }; 500 };
diff --git a/arch/arm/boot/dts/tegra20-plutux.dts b/arch/arm/boot/dts/tegra20-plutux.dts
index d7a358a6a647..29051a2ae0ae 100644
--- a/arch/arm/boot/dts/tegra20-plutux.dts
+++ b/arch/arm/boot/dts/tegra20-plutux.dts
@@ -6,8 +6,8 @@
6 model = "Avionic Design Plutux board"; 6 model = "Avionic Design Plutux board";
7 compatible = "ad,plutux", "ad,tamonten", "nvidia,tegra20"; 7 compatible = "ad,plutux", "ad,tamonten", "nvidia,tegra20";
8 8
9 host1x { 9 host1x@50000000 {
10 hdmi { 10 hdmi@54280000 {
11 status = "okay"; 11 status = "okay";
12 }; 12 };
13 }; 13 };
diff --git a/arch/arm/boot/dts/tegra20-seaboard.dts b/arch/arm/boot/dts/tegra20-seaboard.dts
index 315aae26c3cd..a11b6e7b4759 100644
--- a/arch/arm/boot/dts/tegra20-seaboard.dts
+++ b/arch/arm/boot/dts/tegra20-seaboard.dts
@@ -1,17 +1,23 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra20.dtsi" 4#include "tegra20.dtsi"
4 5
5/ { 6/ {
6 model = "NVIDIA Seaboard"; 7 model = "NVIDIA Seaboard";
7 compatible = "nvidia,seaboard", "nvidia,tegra20"; 8 compatible = "nvidia,seaboard", "nvidia,tegra20";
8 9
10 aliases {
11 rtc0 = "/i2c@7000d000/tps6586x@34";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x00000000 0x40000000>; 16 reg = <0x00000000 0x40000000>;
11 }; 17 };
12 18
13 host1x { 19 host1x@50000000 {
14 hdmi { 20 hdmi@54280000 {
15 status = "okay"; 21 status = "okay";
16 22
17 vdd-supply = <&hdmi_vdd_reg>; 23 vdd-supply = <&hdmi_vdd_reg>;
@@ -23,7 +29,7 @@
23 }; 29 };
24 }; 30 };
25 31
26 pinmux { 32 pinmux@70000014 {
27 pinctrl-names = "default"; 33 pinctrl-names = "default";
28 pinctrl-0 = <&state_default>; 34 pinctrl-0 = <&state_default>;
29 35
@@ -189,53 +195,53 @@
189 "irtx", "pta", "rm", "sdc", "sdd", 195 "irtx", "pta", "rm", "sdc", "sdd",
190 "slxd", "slxk", "spdi", "spdo", "uac", 196 "slxd", "slxk", "spdi", "spdo", "uac",
191 "uad", "uca", "ucb", "uda"; 197 "uad", "uca", "ucb", "uda";
192 nvidia,pull = <0>; 198 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
193 nvidia,tristate = <0>; 199 nvidia,tristate = <TEGRA_PIN_DISABLE>;
194 }; 200 };
195 conf_ate { 201 conf_ate {
196 nvidia,pins = "ate", "csus", "dap3", 202 nvidia,pins = "ate", "csus", "dap3",
197 "gpv", "owc", "slxc", "spib", "spid", 203 "gpv", "owc", "slxc", "spib", "spid",
198 "spie"; 204 "spie";
199 nvidia,pull = <0>; 205 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
200 nvidia,tristate = <1>; 206 nvidia,tristate = <TEGRA_PIN_ENABLE>;
201 }; 207 };
202 conf_ck32 { 208 conf_ck32 {
203 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", 209 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
204 "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; 210 "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
205 nvidia,pull = <0>; 211 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
206 }; 212 };
207 conf_crtp { 213 conf_crtp {
208 nvidia,pins = "crtp", "gmb", "slxa", "spia", 214 nvidia,pins = "crtp", "gmb", "slxa", "spia",
209 "spig", "spih"; 215 "spig", "spih";
210 nvidia,pull = <2>; 216 nvidia,pull = <TEGRA_PIN_PULL_UP>;
211 nvidia,tristate = <1>; 217 nvidia,tristate = <TEGRA_PIN_ENABLE>;
212 }; 218 };
213 conf_dta { 219 conf_dta {
214 nvidia,pins = "dta", "dtb", "dtc", "dtd"; 220 nvidia,pins = "dta", "dtb", "dtc", "dtd";
215 nvidia,pull = <1>; 221 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
216 nvidia,tristate = <0>; 222 nvidia,tristate = <TEGRA_PIN_DISABLE>;
217 }; 223 };
218 conf_dte { 224 conf_dte {
219 nvidia,pins = "dte", "spif"; 225 nvidia,pins = "dte", "spif";
220 nvidia,pull = <1>; 226 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
221 nvidia,tristate = <1>; 227 nvidia,tristate = <TEGRA_PIN_ENABLE>;
222 }; 228 };
223 conf_hdint { 229 conf_hdint {
224 nvidia,pins = "hdint", "lcsn", "ldc", "lm1", 230 nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
225 "lpw1", "lsc1", "lsck", "lsda", "lsdi", 231 "lpw1", "lsc1", "lsck", "lsda", "lsdi",
226 "lvp0"; 232 "lvp0";
227 nvidia,tristate = <1>; 233 nvidia,tristate = <TEGRA_PIN_ENABLE>;
228 }; 234 };
229 conf_kbca { 235 conf_kbca {
230 nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd", 236 nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
231 "kbce", "kbcf", "sdio1", "spic", "uaa", 237 "kbce", "kbcf", "sdio1", "spic", "uaa",
232 "uab"; 238 "uab";
233 nvidia,pull = <2>; 239 nvidia,pull = <TEGRA_PIN_PULL_UP>;
234 nvidia,tristate = <0>; 240 nvidia,tristate = <TEGRA_PIN_DISABLE>;
235 }; 241 };
236 conf_lc { 242 conf_lc {
237 nvidia,pins = "lc", "ls"; 243 nvidia,pins = "lc", "ls";
238 nvidia,pull = <2>; 244 nvidia,pull = <TEGRA_PIN_PULL_UP>;
239 }; 245 };
240 conf_ld0 { 246 conf_ld0 {
241 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4", 247 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
@@ -245,22 +251,22 @@
245 "lhp1", "lhp2", "lhs", "lm0", "lpp", 251 "lhp1", "lhp2", "lhs", "lm0", "lpp",
246 "lpw0", "lpw2", "lsc0", "lspi", "lvp1", 252 "lpw0", "lpw2", "lsc0", "lspi", "lvp1",
247 "lvs", "pmc", "sdb"; 253 "lvs", "pmc", "sdb";
248 nvidia,tristate = <0>; 254 nvidia,tristate = <TEGRA_PIN_DISABLE>;
249 }; 255 };
250 conf_ld17_0 { 256 conf_ld17_0 {
251 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 257 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
252 "ld23_22"; 258 "ld23_22";
253 nvidia,pull = <1>; 259 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
254 }; 260 };
255 drive_sdio1 { 261 drive_sdio1 {
256 nvidia,pins = "drive_sdio1"; 262 nvidia,pins = "drive_sdio1";
257 nvidia,high-speed-mode = <0>; 263 nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
258 nvidia,schmitt = <0>; 264 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
259 nvidia,low-power-mode = <3>; 265 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
260 nvidia,pull-down-strength = <31>; 266 nvidia,pull-down-strength = <31>;
261 nvidia,pull-up-strength = <31>; 267 nvidia,pull-up-strength = <31>;
262 nvidia,slew-rate-rising = <3>; 268 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
263 nvidia,slew-rate-falling = <3>; 269 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
264 }; 270 };
265 }; 271 };
266 272
@@ -386,6 +392,13 @@
386 status = "okay"; 392 status = "okay";
387 clock-frequency = <400000>; 393 clock-frequency = <400000>;
388 394
395 magnetometer@c {
396 compatible = "ak,ak8975";
397 reg = <0xc>;
398 interrupt-parent = <&gpio>;
399 interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_LEVEL_HIGH>;
400 };
401
389 pmic: tps6586x@34 { 402 pmic: tps6586x@34 {
390 compatible = "ti,tps6586x"; 403 compatible = "ti,tps6586x";
391 reg = <0x34>; 404 reg = <0x34>;
@@ -507,16 +520,149 @@
507 compatible = "onnn,nct1008"; 520 compatible = "onnn,nct1008";
508 reg = <0x4c>; 521 reg = <0x4c>;
509 }; 522 };
523 };
510 524
511 magnetometer@c { 525 kbc@7000e200 {
512 compatible = "ak,ak8975"; 526 status = "okay";
513 reg = <0xc>; 527 nvidia,debounce-delay-ms = <32>;
514 interrupt-parent = <&gpio>; 528 nvidia,repeat-delay-ms = <160>;
515 interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_LEVEL_HIGH>; 529 nvidia,ghost-filter;
516 }; 530 nvidia,kbc-row-pins = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>;
531 nvidia,kbc-col-pins = <16 17 18 19 20 21 22 23>;
532 linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_W)
533 MATRIX_KEY(0x00, 0x03, KEY_S)
534 MATRIX_KEY(0x00, 0x04, KEY_A)
535 MATRIX_KEY(0x00, 0x05, KEY_Z)
536 MATRIX_KEY(0x00, 0x07, KEY_FN)
537
538 MATRIX_KEY(0x01, 0x07, KEY_LEFTMETA)
539 MATRIX_KEY(0x02, 0x06, KEY_RIGHTALT)
540 MATRIX_KEY(0x02, 0x07, KEY_LEFTALT)
541
542 MATRIX_KEY(0x03, 0x00, KEY_5)
543 MATRIX_KEY(0x03, 0x01, KEY_4)
544 MATRIX_KEY(0x03, 0x02, KEY_R)
545 MATRIX_KEY(0x03, 0x03, KEY_E)
546 MATRIX_KEY(0x03, 0x04, KEY_F)
547 MATRIX_KEY(0x03, 0x05, KEY_D)
548 MATRIX_KEY(0x03, 0x06, KEY_X)
549
550 MATRIX_KEY(0x04, 0x00, KEY_7)
551 MATRIX_KEY(0x04, 0x01, KEY_6)
552 MATRIX_KEY(0x04, 0x02, KEY_T)
553 MATRIX_KEY(0x04, 0x03, KEY_H)
554 MATRIX_KEY(0x04, 0x04, KEY_G)
555 MATRIX_KEY(0x04, 0x05, KEY_V)
556 MATRIX_KEY(0x04, 0x06, KEY_C)
557 MATRIX_KEY(0x04, 0x07, KEY_SPACE)
558
559 MATRIX_KEY(0x05, 0x00, KEY_9)
560 MATRIX_KEY(0x05, 0x01, KEY_8)
561 MATRIX_KEY(0x05, 0x02, KEY_U)
562 MATRIX_KEY(0x05, 0x03, KEY_Y)
563 MATRIX_KEY(0x05, 0x04, KEY_J)
564 MATRIX_KEY(0x05, 0x05, KEY_N)
565 MATRIX_KEY(0x05, 0x06, KEY_B)
566 MATRIX_KEY(0x05, 0x07, KEY_BACKSLASH)
567
568 MATRIX_KEY(0x06, 0x00, KEY_MINUS)
569 MATRIX_KEY(0x06, 0x01, KEY_0)
570 MATRIX_KEY(0x06, 0x02, KEY_O)
571 MATRIX_KEY(0x06, 0x03, KEY_I)
572 MATRIX_KEY(0x06, 0x04, KEY_L)
573 MATRIX_KEY(0x06, 0x05, KEY_K)
574 MATRIX_KEY(0x06, 0x06, KEY_COMMA)
575 MATRIX_KEY(0x06, 0x07, KEY_M)
576
577 MATRIX_KEY(0x07, 0x01, KEY_EQUAL)
578 MATRIX_KEY(0x07, 0x02, KEY_RIGHTBRACE)
579 MATRIX_KEY(0x07, 0x03, KEY_ENTER)
580 MATRIX_KEY(0x07, 0x07, KEY_MENU)
581
582 MATRIX_KEY(0x08, 0x04, KEY_RIGHTSHIFT)
583 MATRIX_KEY(0x08, 0x05, KEY_LEFTSHIFT)
584
585 MATRIX_KEY(0x09, 0x05, KEY_RIGHTCTRL)
586 MATRIX_KEY(0x09, 0x07, KEY_LEFTCTRL)
587
588 MATRIX_KEY(0x0B, 0x00, KEY_LEFTBRACE)
589 MATRIX_KEY(0x0B, 0x01, KEY_P)
590 MATRIX_KEY(0x0B, 0x02, KEY_APOSTROPHE)
591 MATRIX_KEY(0x0B, 0x03, KEY_SEMICOLON)
592 MATRIX_KEY(0x0B, 0x04, KEY_SLASH)
593 MATRIX_KEY(0x0B, 0x05, KEY_DOT)
594
595 MATRIX_KEY(0x0C, 0x00, KEY_F10)
596 MATRIX_KEY(0x0C, 0x01, KEY_F9)
597 MATRIX_KEY(0x0C, 0x02, KEY_BACKSPACE)
598 MATRIX_KEY(0x0C, 0x03, KEY_3)
599 MATRIX_KEY(0x0C, 0x04, KEY_2)
600 MATRIX_KEY(0x0C, 0x05, KEY_UP)
601 MATRIX_KEY(0x0C, 0x06, KEY_PRINT)
602 MATRIX_KEY(0x0C, 0x07, KEY_PAUSE)
603
604 MATRIX_KEY(0x0D, 0x00, KEY_INSERT)
605 MATRIX_KEY(0x0D, 0x01, KEY_DELETE)
606 MATRIX_KEY(0x0D, 0x03, KEY_PAGEUP )
607 MATRIX_KEY(0x0D, 0x04, KEY_PAGEDOWN)
608 MATRIX_KEY(0x0D, 0x05, KEY_RIGHT)
609 MATRIX_KEY(0x0D, 0x06, KEY_DOWN)
610 MATRIX_KEY(0x0D, 0x07, KEY_LEFT)
611
612 MATRIX_KEY(0x0E, 0x00, KEY_F11)
613 MATRIX_KEY(0x0E, 0x01, KEY_F12)
614 MATRIX_KEY(0x0E, 0x02, KEY_F8)
615 MATRIX_KEY(0x0E, 0x03, KEY_Q)
616 MATRIX_KEY(0x0E, 0x04, KEY_F4)
617 MATRIX_KEY(0x0E, 0x05, KEY_F3)
618 MATRIX_KEY(0x0E, 0x06, KEY_1)
619 MATRIX_KEY(0x0E, 0x07, KEY_F7)
620
621 MATRIX_KEY(0x0F, 0x00, KEY_ESC)
622 MATRIX_KEY(0x0F, 0x01, KEY_GRAVE)
623 MATRIX_KEY(0x0F, 0x02, KEY_F5)
624 MATRIX_KEY(0x0F, 0x03, KEY_TAB)
625 MATRIX_KEY(0x0F, 0x04, KEY_F1)
626 MATRIX_KEY(0x0F, 0x05, KEY_F2)
627 MATRIX_KEY(0x0F, 0x06, KEY_CAPSLOCK)
628 MATRIX_KEY(0x0F, 0x07, KEY_F6)
629
630 /* Software Handled Function Keys */
631 MATRIX_KEY(0x14, 0x00, KEY_KP7)
632
633 MATRIX_KEY(0x15, 0x00, KEY_KP9)
634 MATRIX_KEY(0x15, 0x01, KEY_KP8)
635 MATRIX_KEY(0x15, 0x02, KEY_KP4)
636 MATRIX_KEY(0x15, 0x04, KEY_KP1)
637
638 MATRIX_KEY(0x16, 0x01, KEY_KPSLASH)
639 MATRIX_KEY(0x16, 0x02, KEY_KP6)
640 MATRIX_KEY(0x16, 0x03, KEY_KP5)
641 MATRIX_KEY(0x16, 0x04, KEY_KP3)
642 MATRIX_KEY(0x16, 0x05, KEY_KP2)
643 MATRIX_KEY(0x16, 0x07, KEY_KP0)
644
645 MATRIX_KEY(0x1B, 0x01, KEY_KPASTERISK)
646 MATRIX_KEY(0x1B, 0x03, KEY_KPMINUS)
647 MATRIX_KEY(0x1B, 0x04, KEY_KPPLUS)
648 MATRIX_KEY(0x1B, 0x05, KEY_KPDOT)
649
650 MATRIX_KEY(0x1C, 0x05, KEY_VOLUMEUP)
651
652 MATRIX_KEY(0x1D, 0x03, KEY_HOME)
653 MATRIX_KEY(0x1D, 0x04, KEY_END)
654 MATRIX_KEY(0x1D, 0x05, KEY_BRIGHTNESSDOWN)
655 MATRIX_KEY(0x1D, 0x06, KEY_VOLUMEDOWN)
656 MATRIX_KEY(0x1D, 0x07, KEY_BRIGHTNESSUP)
657
658 MATRIX_KEY(0x1E, 0x00, KEY_NUMLOCK)
659 MATRIX_KEY(0x1E, 0x01, KEY_SCROLLLOCK)
660 MATRIX_KEY(0x1E, 0x02, KEY_MUTE)
661
662 MATRIX_KEY(0x1F, 0x04, KEY_HELP)>;
517 }; 663 };
518 664
519 pmc { 665 pmc@7000e400 {
520 nvidia,invert-interrupt; 666 nvidia,invert-interrupt;
521 nvidia,suspend-mode = <1>; 667 nvidia,suspend-mode = <1>;
522 nvidia,cpu-pwr-good-time = <5000>; 668 nvidia,cpu-pwr-good-time = <5000>;
@@ -621,7 +767,7 @@
621 #address-cells = <1>; 767 #address-cells = <1>;
622 #size-cells = <0>; 768 #size-cells = <0>;
623 769
624 clk32k_in: clock { 770 clk32k_in: clock@0 {
625 compatible = "fixed-clock"; 771 compatible = "fixed-clock";
626 reg=<0>; 772 reg=<0>;
627 #clock-cells = <0>; 773 #clock-cells = <0>;
@@ -635,7 +781,7 @@
635 power { 781 power {
636 label = "Power"; 782 label = "Power";
637 gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>; 783 gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
638 linux,code = <116>; /* KEY_POWER */ 784 linux,code = <KEY_POWER>;
639 gpio-key,wakeup; 785 gpio-key,wakeup;
640 }; 786 };
641 787
@@ -649,145 +795,6 @@
649 }; 795 };
650 }; 796 };
651 797
652 kbc {
653 status = "okay";
654 nvidia,debounce-delay-ms = <32>;
655 nvidia,repeat-delay-ms = <160>;
656 nvidia,ghost-filter;
657 nvidia,kbc-row-pins = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>;
658 nvidia,kbc-col-pins = <16 17 18 19 20 21 22 23>;
659 linux,keymap = <0x00020011 /* KEY_W */
660 0x0003001F /* KEY_S */
661 0x0004001E /* KEY_A */
662 0x0005002C /* KEY_Z */
663 0x000701d0 /* KEY_FN */
664
665 0x0107007D /* KEY_LEFTMETA */
666 0x02060064 /* KEY_RIGHTALT */
667 0x02070038 /* KEY_LEFTALT */
668
669 0x03000006 /* KEY_5 */
670 0x03010005 /* KEY_4 */
671 0x03020013 /* KEY_R */
672 0x03030012 /* KEY_E */
673 0x03040021 /* KEY_F */
674 0x03050020 /* KEY_D */
675 0x0306002D /* KEY_X */
676
677 0x04000008 /* KEY_7 */
678 0x04010007 /* KEY_6 */
679 0x04020014 /* KEY_T */
680 0x04030023 /* KEY_H */
681 0x04040022 /* KEY_G */
682 0x0405002F /* KEY_V */
683 0x0406002E /* KEY_C */
684 0x04070039 /* KEY_SPACE */
685
686 0x0500000A /* KEY_9 */
687 0x05010009 /* KEY_8 */
688 0x05020016 /* KEY_U */
689 0x05030015 /* KEY_Y */
690 0x05040024 /* KEY_J */
691 0x05050031 /* KEY_N */
692 0x05060030 /* KEY_B */
693 0x0507002B /* KEY_BACKSLASH */
694
695 0x0600000C /* KEY_MINUS */
696 0x0601000B /* KEY_0 */
697 0x06020018 /* KEY_O */
698 0x06030017 /* KEY_I */
699 0x06040026 /* KEY_L */
700 0x06050025 /* KEY_K */
701 0x06060033 /* KEY_COMMA */
702 0x06070032 /* KEY_M */
703
704 0x0701000D /* KEY_EQUAL */
705 0x0702001B /* KEY_RIGHTBRACE */
706 0x0703001C /* KEY_ENTER */
707 0x0707008B /* KEY_MENU */
708
709 0x08040036 /* KEY_RIGHTSHIFT */
710 0x0805002A /* KEY_LEFTSHIFT */
711
712 0x09050061 /* KEY_RIGHTCTRL */
713 0x0907001D /* KEY_LEFTCTRL */
714
715 0x0B00001A /* KEY_LEFTBRACE */
716 0x0B010019 /* KEY_P */
717 0x0B020028 /* KEY_APOSTROPHE */
718 0x0B030027 /* KEY_SEMICOLON */
719 0x0B040035 /* KEY_SLASH */
720 0x0B050034 /* KEY_DOT */
721
722 0x0C000044 /* KEY_F10 */
723 0x0C010043 /* KEY_F9 */
724 0x0C02000E /* KEY_BACKSPACE */
725 0x0C030004 /* KEY_3 */
726 0x0C040003 /* KEY_2 */
727 0x0C050067 /* KEY_UP */
728 0x0C0600D2 /* KEY_PRINT */
729 0x0C070077 /* KEY_PAUSE */
730
731 0x0D00006E /* KEY_INSERT */
732 0x0D01006F /* KEY_DELETE */
733 0x0D030068 /* KEY_PAGEUP */
734 0x0D04006D /* KEY_PAGEDOWN */
735 0x0D05006A /* KEY_RIGHT */
736 0x0D06006C /* KEY_DOWN */
737 0x0D070069 /* KEY_LEFT */
738
739 0x0E000057 /* KEY_F11 */
740 0x0E010058 /* KEY_F12 */
741 0x0E020042 /* KEY_F8 */
742 0x0E030010 /* KEY_Q */
743 0x0E04003E /* KEY_F4 */
744 0x0E05003D /* KEY_F3 */
745 0x0E060002 /* KEY_1 */
746 0x0E070041 /* KEY_F7 */
747
748 0x0F000001 /* KEY_ESC */
749 0x0F010029 /* KEY_GRAVE */
750 0x0F02003F /* KEY_F5 */
751 0x0F03000F /* KEY_TAB */
752 0x0F04003B /* KEY_F1 */
753 0x0F05003C /* KEY_F2 */
754 0x0F06003A /* KEY_CAPSLOCK */
755 0x0F070040 /* KEY_F6 */
756
757 /* Software Handled Function Keys */
758 0x14000047 /* KEY_KP7 */
759
760 0x15000049 /* KEY_KP9 */
761 0x15010048 /* KEY_KP8 */
762 0x1502004B /* KEY_KP4 */
763 0x1504004F /* KEY_KP1 */
764
765 0x1601004E /* KEY_KPSLASH */
766 0x1602004D /* KEY_KP6 */
767 0x1603004C /* KEY_KP5 */
768 0x16040051 /* KEY_KP3 */
769 0x16050050 /* KEY_KP2 */
770 0x16070052 /* KEY_KP0 */
771
772 0x1B010037 /* KEY_KPASTERISK */
773 0x1B03004A /* KEY_KPMINUS */
774 0x1B04004E /* KEY_KPPLUS */
775 0x1B050053 /* KEY_KPDOT */
776
777 0x1C050073 /* KEY_VOLUMEUP */
778
779 0x1D030066 /* KEY_HOME */
780 0x1D04006B /* KEY_END */
781 0x1D0500E0 /* KEY_BRIGHTNESSDOWN */
782 0x1D060072 /* KEY_VOLUMEDOWN */
783 0x1D0700E1 /* KEY_BRIGHTNESSUP */
784
785 0x1E000045 /* KEY_NUMLOCK */
786 0x1E010046 /* KEY_SCROLLLOCK */
787 0x1E020071 /* KEY_MUTE */
788
789 0x1F04008A>; /* KEY_HELP */
790 };
791 regulators { 798 regulators {
792 compatible = "simple-bus"; 799 compatible = "simple-bus";
793 #address-cells = <1>; 800 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/tegra20-tamonten.dtsi b/arch/arm/boot/dts/tegra20-tamonten.dtsi
index 7726dab3d08d..a1b0d965757f 100644
--- a/arch/arm/boot/dts/tegra20-tamonten.dtsi
+++ b/arch/arm/boot/dts/tegra20-tamonten.dtsi
@@ -4,12 +4,17 @@
4 model = "Avionic Design Tamonten SOM"; 4 model = "Avionic Design Tamonten SOM";
5 compatible = "ad,tamonten", "nvidia,tegra20"; 5 compatible = "ad,tamonten", "nvidia,tegra20";
6 6
7 aliases {
8 rtc0 = "/i2c@7000d000/tps6586x@34";
9 rtc1 = "/rtc@7000e000";
10 };
11
7 memory { 12 memory {
8 reg = <0x00000000 0x20000000>; 13 reg = <0x00000000 0x20000000>;
9 }; 14 };
10 15
11 host1x { 16 host1x@50000000 {
12 hdmi { 17 hdmi@54280000 {
13 vdd-supply = <&hdmi_vdd_reg>; 18 vdd-supply = <&hdmi_vdd_reg>;
14 pll-supply = <&hdmi_pll_reg>; 19 pll-supply = <&hdmi_pll_reg>;
15 20
@@ -19,7 +24,7 @@
19 }; 24 };
20 }; 25 };
21 26
22 pinmux { 27 pinmux@70000014 {
23 pinctrl-names = "default"; 28 pinctrl-names = "default";
24 pinctrl-0 = <&state_default>; 29 pinctrl-0 = <&state_default>;
25 30
@@ -176,50 +181,50 @@
176 "gmb", "gmc", "gmd", "gme", "gpu7", 181 "gmb", "gmc", "gmd", "gme", "gpu7",
177 "gpv", "i2cp", "pta", "rm", "slxa", 182 "gpv", "i2cp", "pta", "rm", "slxa",
178 "slxk", "spia", "spib", "uac"; 183 "slxk", "spia", "spib", "uac";
179 nvidia,pull = <0>; 184 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
180 nvidia,tristate = <0>; 185 nvidia,tristate = <TEGRA_PIN_DISABLE>;
181 }; 186 };
182 conf_ck32 { 187 conf_ck32 {
183 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", 188 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
184 "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; 189 "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
185 nvidia,pull = <0>; 190 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
186 }; 191 };
187 conf_csus { 192 conf_csus {
188 nvidia,pins = "csus", "spid", "spif"; 193 nvidia,pins = "csus", "spid", "spif";
189 nvidia,pull = <1>; 194 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
190 nvidia,tristate = <1>; 195 nvidia,tristate = <TEGRA_PIN_ENABLE>;
191 }; 196 };
192 conf_crtp { 197 conf_crtp {
193 nvidia,pins = "crtp", "dap2", "dap3", "dap4", 198 nvidia,pins = "crtp", "dap2", "dap3", "dap4",
194 "dtc", "dte", "dtf", "gpu", "sdio1", 199 "dtc", "dte", "dtf", "gpu", "sdio1",
195 "slxc", "slxd", "spdi", "spdo", "spig", 200 "slxc", "slxd", "spdi", "spdo", "spig",
196 "uda"; 201 "uda";
197 nvidia,pull = <0>; 202 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
198 nvidia,tristate = <1>; 203 nvidia,tristate = <TEGRA_PIN_ENABLE>;
199 }; 204 };
200 conf_ddc { 205 conf_ddc {
201 nvidia,pins = "ddc", "dta", "dtd", "kbca", 206 nvidia,pins = "ddc", "dta", "dtd", "kbca",
202 "kbcb", "kbcc", "kbcd", "kbce", "kbcf", 207 "kbcb", "kbcc", "kbcd", "kbce", "kbcf",
203 "sdc"; 208 "sdc";
204 nvidia,pull = <2>; 209 nvidia,pull = <TEGRA_PIN_PULL_UP>;
205 nvidia,tristate = <0>; 210 nvidia,tristate = <TEGRA_PIN_DISABLE>;
206 }; 211 };
207 conf_hdint { 212 conf_hdint {
208 nvidia,pins = "hdint", "lcsn", "ldc", "lm1", 213 nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
209 "lpw1", "lsc1", "lsck", "lsda", "lsdi", 214 "lpw1", "lsc1", "lsck", "lsda", "lsdi",
210 "lvp0", "owc", "sdb"; 215 "lvp0", "owc", "sdb";
211 nvidia,tristate = <1>; 216 nvidia,tristate = <TEGRA_PIN_ENABLE>;
212 }; 217 };
213 conf_irrx { 218 conf_irrx {
214 nvidia,pins = "irrx", "irtx", "sdd", "spic", 219 nvidia,pins = "irrx", "irtx", "sdd", "spic",
215 "spie", "spih", "uaa", "uab", "uad", 220 "spie", "spih", "uaa", "uab", "uad",
216 "uca", "ucb"; 221 "uca", "ucb";
217 nvidia,pull = <2>; 222 nvidia,pull = <TEGRA_PIN_PULL_UP>;
218 nvidia,tristate = <1>; 223 nvidia,tristate = <TEGRA_PIN_ENABLE>;
219 }; 224 };
220 conf_lc { 225 conf_lc {
221 nvidia,pins = "lc", "ls"; 226 nvidia,pins = "lc", "ls";
222 nvidia,pull = <2>; 227 nvidia,pull = <TEGRA_PIN_PULL_UP>;
223 }; 228 };
224 conf_ld0 { 229 conf_ld0 {
225 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4", 230 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
@@ -229,12 +234,12 @@
229 "lhp1", "lhp2", "lhs", "lm0", "lpp", 234 "lhp1", "lhp2", "lhs", "lm0", "lpp",
230 "lpw0", "lpw2", "lsc0", "lspi", "lvp1", 235 "lpw0", "lpw2", "lsc0", "lspi", "lvp1",
231 "lvs", "pmc"; 236 "lvs", "pmc";
232 nvidia,tristate = <0>; 237 nvidia,tristate = <TEGRA_PIN_DISABLE>;
233 }; 238 };
234 conf_ld17_0 { 239 conf_ld17_0 {
235 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 240 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
236 "ld23_22"; 241 "ld23_22";
237 nvidia,pull = <1>; 242 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
238 }; 243 };
239 }; 244 };
240 245
@@ -457,7 +462,7 @@
457 }; 462 };
458 }; 463 };
459 464
460 pmc { 465 pmc@7000e400 {
461 nvidia,invert-interrupt; 466 nvidia,invert-interrupt;
462 nvidia,suspend-mode = <1>; 467 nvidia,suspend-mode = <1>;
463 nvidia,cpu-pwr-good-time = <5000>; 468 nvidia,cpu-pwr-good-time = <5000>;
@@ -467,7 +472,7 @@
467 nvidia,sys-clock-req-active-high; 472 nvidia,sys-clock-req-active-high;
468 }; 473 };
469 474
470 pcie-controller { 475 pcie-controller@80003000 {
471 pex-clk-supply = <&pci_clk_reg>; 476 pex-clk-supply = <&pci_clk_reg>;
472 vdd-supply = <&pci_vdd_reg>; 477 vdd-supply = <&pci_vdd_reg>;
473 }; 478 };
@@ -492,7 +497,7 @@
492 #address-cells = <1>; 497 #address-cells = <1>;
493 #size-cells = <0>; 498 #size-cells = <0>;
494 499
495 clk32k_in: clock { 500 clk32k_in: clock@0 {
496 compatible = "fixed-clock"; 501 compatible = "fixed-clock";
497 reg=<0>; 502 reg=<0>;
498 #clock-cells = <0>; 503 #clock-cells = <0>;
diff --git a/arch/arm/boot/dts/tegra20-tec.dts b/arch/arm/boot/dts/tegra20-tec.dts
index 3ada3cb67f07..890562c667fb 100644
--- a/arch/arm/boot/dts/tegra20-tec.dts
+++ b/arch/arm/boot/dts/tegra20-tec.dts
@@ -6,8 +6,8 @@
6 model = "Avionic Design Tamonten Evaluation Carrier"; 6 model = "Avionic Design Tamonten Evaluation Carrier";
7 compatible = "ad,tec", "ad,tamonten", "nvidia,tegra20"; 7 compatible = "ad,tec", "ad,tamonten", "nvidia,tegra20";
8 8
9 host1x { 9 host1x@50000000 {
10 hdmi { 10 hdmi@54280000 {
11 status = "okay"; 11 status = "okay";
12 }; 12 };
13 }; 13 };
@@ -32,7 +32,7 @@
32 }; 32 };
33 }; 33 };
34 34
35 pcie-controller { 35 pcie-controller@80003000 {
36 status = "okay"; 36 status = "okay";
37 37
38 pci@1,0 { 38 pci@1,0 {
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
index 78deea5c0d21..216fa6d50c65 100644
--- a/arch/arm/boot/dts/tegra20-trimslice.dts
+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
@@ -1,17 +1,23 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra20.dtsi" 4#include "tegra20.dtsi"
4 5
5/ { 6/ {
6 model = "Compulab TrimSlice board"; 7 model = "Compulab TrimSlice board";
7 compatible = "compulab,trimslice", "nvidia,tegra20"; 8 compatible = "compulab,trimslice", "nvidia,tegra20";
8 9
10 aliases {
11 rtc0 = "/i2c@7000c500/rtc@56";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x00000000 0x40000000>; 16 reg = <0x00000000 0x40000000>;
11 }; 17 };
12 18
13 host1x { 19 host1x@50000000 {
14 hdmi { 20 hdmi@54280000 {
15 status = "okay"; 21 status = "okay";
16 22
17 vdd-supply = <&hdmi_vdd_reg>; 23 vdd-supply = <&hdmi_vdd_reg>;
@@ -23,7 +29,7 @@
23 }; 29 };
24 }; 30 };
25 31
26 pinmux { 32 pinmux@70000014 {
27 pinctrl-names = "default"; 33 pinctrl-names = "default";
28 pinctrl-0 = <&state_default>; 34 pinctrl-0 = <&state_default>;
29 35
@@ -191,49 +197,49 @@
191 "dtb", "dtc", "dtd", "dte", "gmb", 197 "dtb", "dtc", "dtd", "dte", "gmb",
192 "gme", "i2cp", "pta", "slxc", "slxd", 198 "gme", "i2cp", "pta", "slxc", "slxd",
193 "spdi", "spdo", "uda"; 199 "spdi", "spdo", "uda";
194 nvidia,pull = <0>; 200 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
195 nvidia,tristate = <1>; 201 nvidia,tristate = <TEGRA_PIN_ENABLE>;
196 }; 202 };
197 conf_atb { 203 conf_atb {
198 nvidia,pins = "atb", "cdev1", "cdev2", "dap1", 204 nvidia,pins = "atb", "cdev1", "cdev2", "dap1",
199 "gma", "gmc", "gmd", "gpu", "gpu7", 205 "gma", "gmc", "gmd", "gpu", "gpu7",
200 "gpv", "sdio1", "slxa", "slxk", "uac"; 206 "gpv", "sdio1", "slxa", "slxk", "uac";
201 nvidia,pull = <0>; 207 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
202 nvidia,tristate = <0>; 208 nvidia,tristate = <TEGRA_PIN_DISABLE>;
203 }; 209 };
204 conf_ck32 { 210 conf_ck32 {
205 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", 211 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
206 "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; 212 "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
207 nvidia,pull = <0>; 213 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
208 }; 214 };
209 conf_csus { 215 conf_csus {
210 nvidia,pins = "csus", "spia", "spib", 216 nvidia,pins = "csus", "spia", "spib",
211 "spid", "spif"; 217 "spid", "spif";
212 nvidia,pull = <1>; 218 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
213 nvidia,tristate = <1>; 219 nvidia,tristate = <TEGRA_PIN_ENABLE>;
214 }; 220 };
215 conf_ddc { 221 conf_ddc {
216 nvidia,pins = "ddc", "dtf", "rm", "sdc", "sdd"; 222 nvidia,pins = "ddc", "dtf", "rm", "sdc", "sdd";
217 nvidia,pull = <2>; 223 nvidia,pull = <TEGRA_PIN_PULL_UP>;
218 nvidia,tristate = <0>; 224 nvidia,tristate = <TEGRA_PIN_DISABLE>;
219 }; 225 };
220 conf_hdint { 226 conf_hdint {
221 nvidia,pins = "hdint", "lcsn", "ldc", "lm1", 227 nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
222 "lpw1", "lsc1", "lsck", "lsda", "lsdi", 228 "lpw1", "lsc1", "lsck", "lsda", "lsdi",
223 "lvp0", "pmc"; 229 "lvp0", "pmc";
224 nvidia,tristate = <1>; 230 nvidia,tristate = <TEGRA_PIN_ENABLE>;
225 }; 231 };
226 conf_irrx { 232 conf_irrx {
227 nvidia,pins = "irrx", "irtx", "kbca", "kbcb", 233 nvidia,pins = "irrx", "irtx", "kbca", "kbcb",
228 "kbcc", "kbcd", "kbce", "kbcf", "owc", 234 "kbcc", "kbcd", "kbce", "kbcf", "owc",
229 "spic", "spie", "spig", "spih", "uaa", 235 "spic", "spie", "spig", "spih", "uaa",
230 "uab", "uad", "uca", "ucb"; 236 "uab", "uad", "uca", "ucb";
231 nvidia,pull = <2>; 237 nvidia,pull = <TEGRA_PIN_PULL_UP>;
232 nvidia,tristate = <1>; 238 nvidia,tristate = <TEGRA_PIN_ENABLE>;
233 }; 239 };
234 conf_lc { 240 conf_lc {
235 nvidia,pins = "lc", "ls"; 241 nvidia,pins = "lc", "ls";
236 nvidia,pull = <2>; 242 nvidia,pull = <TEGRA_PIN_PULL_UP>;
237 }; 243 };
238 conf_ld0 { 244 conf_ld0 {
239 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4", 245 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
@@ -243,17 +249,17 @@
243 "lhp1", "lhp2", "lhs", "lm0", "lpp", 249 "lhp1", "lhp2", "lhs", "lm0", "lpp",
244 "lpw0", "lpw2", "lsc0", "lspi", "lvp1", 250 "lpw0", "lpw2", "lsc0", "lspi", "lvp1",
245 "lvs", "sdb"; 251 "lvs", "sdb";
246 nvidia,tristate = <0>; 252 nvidia,tristate = <TEGRA_PIN_DISABLE>;
247 }; 253 };
248 conf_ld17_0 { 254 conf_ld17_0 {
249 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 255 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
250 "ld23_22"; 256 "ld23_22";
251 nvidia,pull = <1>; 257 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
252 }; 258 };
253 conf_spif { 259 conf_spif {
254 nvidia,pins = "spif"; 260 nvidia,pins = "spif";
255 nvidia,pull = <1>; 261 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
256 nvidia,tristate = <0>; 262 nvidia,tristate = <TEGRA_PIN_DISABLE>;
257 }; 263 };
258 }; 264 };
259 }; 265 };
@@ -301,7 +307,7 @@
301 }; 307 };
302 }; 308 };
303 309
304 pmc { 310 pmc@7000e400 {
305 nvidia,suspend-mode = <1>; 311 nvidia,suspend-mode = <1>;
306 nvidia,cpu-pwr-good-time = <5000>; 312 nvidia,cpu-pwr-good-time = <5000>;
307 nvidia,cpu-pwr-off-time = <5000>; 313 nvidia,cpu-pwr-off-time = <5000>;
@@ -310,7 +316,7 @@
310 nvidia,sys-clock-req-active-high; 316 nvidia,sys-clock-req-active-high;
311 }; 317 };
312 318
313 pcie-controller { 319 pcie-controller@80003000 {
314 status = "okay"; 320 status = "okay";
315 pex-clk-supply = <&pci_clk_reg>; 321 pex-clk-supply = <&pci_clk_reg>;
316 vdd-supply = <&pci_vdd_reg>; 322 vdd-supply = <&pci_vdd_reg>;
@@ -366,7 +372,7 @@
366 #address-cells = <1>; 372 #address-cells = <1>;
367 #size-cells = <0>; 373 #size-cells = <0>;
368 374
369 clk32k_in: clock { 375 clk32k_in: clock@0 {
370 compatible = "fixed-clock"; 376 compatible = "fixed-clock";
371 reg=<0>; 377 reg=<0>;
372 #clock-cells = <0>; 378 #clock-cells = <0>;
@@ -380,7 +386,7 @@
380 power { 386 power {
381 label = "Power"; 387 label = "Power";
382 gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>; 388 gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_LOW>;
383 linux,code = <116>; /* KEY_POWER */ 389 linux,code = <KEY_POWER>;
384 gpio-key,wakeup; 390 gpio-key,wakeup;
385 }; 391 };
386 }; 392 };
diff --git a/arch/arm/boot/dts/tegra20-ventana.dts b/arch/arm/boot/dts/tegra20-ventana.dts
index aab872cd0530..571d12e6ac2d 100644
--- a/arch/arm/boot/dts/tegra20-ventana.dts
+++ b/arch/arm/boot/dts/tegra20-ventana.dts
@@ -1,17 +1,23 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra20.dtsi" 4#include "tegra20.dtsi"
4 5
5/ { 6/ {
6 model = "NVIDIA Tegra20 Ventana evaluation board"; 7 model = "NVIDIA Tegra20 Ventana evaluation board";
7 compatible = "nvidia,ventana", "nvidia,tegra20"; 8 compatible = "nvidia,ventana", "nvidia,tegra20";
8 9
10 aliases {
11 rtc0 = "/i2c@7000d000/tps6586x@34";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x00000000 0x40000000>; 16 reg = <0x00000000 0x40000000>;
11 }; 17 };
12 18
13 host1x { 19 host1x@50000000 {
14 hdmi { 20 hdmi@54280000 {
15 status = "okay"; 21 status = "okay";
16 22
17 vdd-supply = <&hdmi_vdd_reg>; 23 vdd-supply = <&hdmi_vdd_reg>;
@@ -23,7 +29,7 @@
23 }; 29 };
24 }; 30 };
25 31
26 pinmux { 32 pinmux@70000014 {
27 pinctrl-names = "default"; 33 pinctrl-names = "default";
28 pinctrl-0 = <&state_default>; 34 pinctrl-0 = <&state_default>;
29 35
@@ -189,50 +195,50 @@
189 "irtx", "pta", "rm", "sdc", "sdd", 195 "irtx", "pta", "rm", "sdc", "sdd",
190 "slxc", "slxd", "slxk", "spdi", "spdo", 196 "slxc", "slxd", "slxk", "spdi", "spdo",
191 "uac", "uad", "uca", "ucb", "uda"; 197 "uac", "uad", "uca", "ucb", "uda";
192 nvidia,pull = <0>; 198 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
193 nvidia,tristate = <0>; 199 nvidia,tristate = <TEGRA_PIN_DISABLE>;
194 }; 200 };
195 conf_ate { 201 conf_ate {
196 nvidia,pins = "ate", "csus", "dap3", "gmd", 202 nvidia,pins = "ate", "csus", "dap3", "gmd",
197 "gpv", "owc", "spia", "spib", "spic", 203 "gpv", "owc", "spia", "spib", "spic",
198 "spid", "spie", "spig"; 204 "spid", "spie", "spig";
199 nvidia,pull = <0>; 205 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
200 nvidia,tristate = <1>; 206 nvidia,tristate = <TEGRA_PIN_ENABLE>;
201 }; 207 };
202 conf_ck32 { 208 conf_ck32 {
203 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", 209 nvidia,pins = "ck32", "ddrc", "pmca", "pmcb",
204 "pmcc", "pmcd", "pmce", "xm2c", "xm2d"; 210 "pmcc", "pmcd", "pmce", "xm2c", "xm2d";
205 nvidia,pull = <0>; 211 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
206 }; 212 };
207 conf_crtp { 213 conf_crtp {
208 nvidia,pins = "crtp", "gmb", "slxa", "spih"; 214 nvidia,pins = "crtp", "gmb", "slxa", "spih";
209 nvidia,pull = <2>; 215 nvidia,pull = <TEGRA_PIN_PULL_UP>;
210 nvidia,tristate = <1>; 216 nvidia,tristate = <TEGRA_PIN_ENABLE>;
211 }; 217 };
212 conf_dta { 218 conf_dta {
213 nvidia,pins = "dta", "dtb", "dtc", "dtd"; 219 nvidia,pins = "dta", "dtb", "dtc", "dtd";
214 nvidia,pull = <1>; 220 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
215 nvidia,tristate = <0>; 221 nvidia,tristate = <TEGRA_PIN_DISABLE>;
216 }; 222 };
217 conf_dte { 223 conf_dte {
218 nvidia,pins = "dte", "spif"; 224 nvidia,pins = "dte", "spif";
219 nvidia,pull = <1>; 225 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
220 nvidia,tristate = <1>; 226 nvidia,tristate = <TEGRA_PIN_ENABLE>;
221 }; 227 };
222 conf_hdint { 228 conf_hdint {
223 nvidia,pins = "hdint", "lcsn", "ldc", "lm1", 229 nvidia,pins = "hdint", "lcsn", "ldc", "lm1",
224 "lpw1", "lsck", "lsda", "lsdi", "lvp0"; 230 "lpw1", "lsck", "lsda", "lsdi", "lvp0";
225 nvidia,tristate = <1>; 231 nvidia,tristate = <TEGRA_PIN_ENABLE>;
226 }; 232 };
227 conf_kbca { 233 conf_kbca {
228 nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd", 234 nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd",
229 "kbce", "kbcf", "sdio1", "uaa", "uab"; 235 "kbce", "kbcf", "sdio1", "uaa", "uab";
230 nvidia,pull = <2>; 236 nvidia,pull = <TEGRA_PIN_PULL_UP>;
231 nvidia,tristate = <0>; 237 nvidia,tristate = <TEGRA_PIN_DISABLE>;
232 }; 238 };
233 conf_lc { 239 conf_lc {
234 nvidia,pins = "lc", "ls"; 240 nvidia,pins = "lc", "ls";
235 nvidia,pull = <2>; 241 nvidia,pull = <TEGRA_PIN_PULL_UP>;
236 }; 242 };
237 conf_ld0 { 243 conf_ld0 {
238 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4", 244 nvidia,pins = "ld0", "ld1", "ld2", "ld3", "ld4",
@@ -242,22 +248,22 @@
242 "lhp1", "lhp2", "lhs", "lm0", "lpp", 248 "lhp1", "lhp2", "lhs", "lm0", "lpp",
243 "lpw0", "lpw2", "lsc0", "lsc1", "lspi", 249 "lpw0", "lpw2", "lsc0", "lsc1", "lspi",
244 "lvp1", "lvs", "pmc", "sdb"; 250 "lvp1", "lvs", "pmc", "sdb";
245 nvidia,tristate = <0>; 251 nvidia,tristate = <TEGRA_PIN_DISABLE>;
246 }; 252 };
247 conf_ld17_0 { 253 conf_ld17_0 {
248 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 254 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
249 "ld23_22"; 255 "ld23_22";
250 nvidia,pull = <1>; 256 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
251 }; 257 };
252 drive_sdio1 { 258 drive_sdio1 {
253 nvidia,pins = "drive_sdio1"; 259 nvidia,pins = "drive_sdio1";
254 nvidia,high-speed-mode = <0>; 260 nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
255 nvidia,schmitt = <1>; 261 nvidia,schmitt = <TEGRA_PIN_ENABLE>;
256 nvidia,low-power-mode = <3>; 262 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>;
257 nvidia,pull-down-strength = <31>; 263 nvidia,pull-down-strength = <31>;
258 nvidia,pull-up-strength = <31>; 264 nvidia,pull-up-strength = <31>;
259 nvidia,slew-rate-rising = <3>; 265 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
260 nvidia,slew-rate-falling = <3>; 266 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>;
261 }; 267 };
262 }; 268 };
263 269
@@ -492,7 +498,7 @@
492 }; 498 };
493 }; 499 };
494 500
495 pmc { 501 pmc@7000e400 {
496 nvidia,invert-interrupt; 502 nvidia,invert-interrupt;
497 nvidia,suspend-mode = <1>; 503 nvidia,suspend-mode = <1>;
498 nvidia,cpu-pwr-good-time = <2000>; 504 nvidia,cpu-pwr-good-time = <2000>;
@@ -556,7 +562,7 @@
556 #address-cells = <1>; 562 #address-cells = <1>;
557 #size-cells = <0>; 563 #size-cells = <0>;
558 564
559 clk32k_in: clock { 565 clk32k_in: clock@0 {
560 compatible = "fixed-clock"; 566 compatible = "fixed-clock";
561 reg=<0>; 567 reg=<0>;
562 #clock-cells = <0>; 568 #clock-cells = <0>;
@@ -570,7 +576,7 @@
570 power { 576 power {
571 label = "Power"; 577 label = "Power";
572 gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>; 578 gpios = <&gpio TEGRA_GPIO(V, 2) GPIO_ACTIVE_LOW>;
573 linux,code = <116>; /* KEY_POWER */ 579 linux,code = <KEY_POWER>;
574 gpio-key,wakeup; 580 gpio-key,wakeup;
575 }; 581 };
576 }; 582 };
diff --git a/arch/arm/boot/dts/tegra20-whistler.dts b/arch/arm/boot/dts/tegra20-whistler.dts
index d33a73cf167c..1843725785c9 100644
--- a/arch/arm/boot/dts/tegra20-whistler.dts
+++ b/arch/arm/boot/dts/tegra20-whistler.dts
@@ -1,17 +1,23 @@
1/dts-v1/; 1/dts-v1/;
2 2
3#include <dt-bindings/input/input.h>
3#include "tegra20.dtsi" 4#include "tegra20.dtsi"
4 5
5/ { 6/ {
6 model = "NVIDIA Tegra20 Whistler evaluation board"; 7 model = "NVIDIA Tegra20 Whistler evaluation board";
7 compatible = "nvidia,whistler", "nvidia,tegra20"; 8 compatible = "nvidia,whistler", "nvidia,tegra20";
8 9
10 aliases {
11 rtc0 = "/i2c@7000d000/max8907@3c";
12 rtc1 = "/rtc@7000e000";
13 };
14
9 memory { 15 memory {
10 reg = <0x00000000 0x20000000>; 16 reg = <0x00000000 0x20000000>;
11 }; 17 };
12 18
13 host1x { 19 host1x@50000000 {
14 hdmi { 20 hdmi@54280000 {
15 status = "okay"; 21 status = "okay";
16 22
17 vdd-supply = <&hdmi_vdd_reg>; 23 vdd-supply = <&hdmi_vdd_reg>;
@@ -23,7 +29,7 @@
23 }; 29 };
24 }; 30 };
25 31
26 pinmux { 32 pinmux@70000014 {
27 pinctrl-names = "default"; 33 pinctrl-names = "default";
28 pinctrl-0 = <&state_default>; 34 pinctrl-0 = <&state_default>;
29 35
@@ -189,8 +195,8 @@
189 "kbcf", "sdc", "sdd", "spie", "spig", 195 "kbcf", "sdc", "sdd", "spie", "spig",
190 "spih", "uaa", "uab", "uad", "uca", 196 "spih", "uaa", "uab", "uad", "uca",
191 "ucb"; 197 "ucb";
192 nvidia,pull = <2>; 198 nvidia,pull = <TEGRA_PIN_PULL_UP>;
193 nvidia,tristate = <0>; 199 nvidia,tristate = <TEGRA_PIN_DISABLE>;
194 }; 200 };
195 conf_atd { 201 conf_atd {
196 nvidia,pins = "atd", "ate", "cdev1", "csus", 202 nvidia,pins = "atd", "ate", "cdev1", "csus",
@@ -198,54 +204,54 @@
198 "dtf", "gpu", "gpu7", "gpv", "i2cp", 204 "dtf", "gpu", "gpu7", "gpv", "i2cp",
199 "rm", "sdio1", "slxa", "slxc", "slxd", 205 "rm", "sdio1", "slxa", "slxc", "slxd",
200 "slxk", "spdi", "spdo", "uac", "uda"; 206 "slxk", "spdi", "spdo", "uac", "uda";
201 nvidia,pull = <0>; 207 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
202 nvidia,tristate = <0>; 208 nvidia,tristate = <TEGRA_PIN_DISABLE>;
203 }; 209 };
204 conf_cdev2 { 210 conf_cdev2 {
205 nvidia,pins = "cdev2", "spia", "spib"; 211 nvidia,pins = "cdev2", "spia", "spib";
206 nvidia,pull = <1>; 212 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
207 nvidia,tristate = <1>; 213 nvidia,tristate = <TEGRA_PIN_ENABLE>;
208 }; 214 };
209 conf_ck32 { 215 conf_ck32 {
210 nvidia,pins = "ck32", "ddrc", "lc", "pmca", 216 nvidia,pins = "ck32", "ddrc", "lc", "pmca",
211 "pmcb", "pmcc", "pmcd", "xm2c", 217 "pmcb", "pmcc", "pmcd", "xm2c",
212 "xm2d"; 218 "xm2d";
213 nvidia,pull = <0>; 219 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
214 }; 220 };
215 conf_crtp { 221 conf_crtp {
216 nvidia,pins = "crtp"; 222 nvidia,pins = "crtp";
217 nvidia,pull = <0>; 223 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
218 nvidia,tristate = <1>; 224 nvidia,tristate = <TEGRA_PIN_ENABLE>;
219 }; 225 };
220 conf_dta { 226 conf_dta {
221 nvidia,pins = "dta", "dtb", "dtc", "dtd", 227 nvidia,pins = "dta", "dtb", "dtc", "dtd",
222 "spid", "spif"; 228 "spid", "spif";
223 nvidia,pull = <1>; 229 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
224 nvidia,tristate = <0>; 230 nvidia,tristate = <TEGRA_PIN_DISABLE>;
225 }; 231 };
226 conf_gme { 232 conf_gme {
227 nvidia,pins = "gme", "owc", "pta", "spic"; 233 nvidia,pins = "gme", "owc", "pta", "spic";
228 nvidia,pull = <2>; 234 nvidia,pull = <TEGRA_PIN_PULL_UP>;
229 nvidia,tristate = <1>; 235 nvidia,tristate = <TEGRA_PIN_ENABLE>;
230 }; 236 };
231 conf_ld17_0 { 237 conf_ld17_0 {
232 nvidia,pins = "ld17_0", "ld19_18", "ld21_20", 238 nvidia,pins = "ld17_0", "ld19_18", "ld21_20",
233 "ld23_22"; 239 "ld23_22";
234 nvidia,pull = <1>; 240 nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
235 }; 241 };
236 conf_ls { 242 conf_ls {
237 nvidia,pins = "ls", "pmce"; 243 nvidia,pins = "ls", "pmce";
238 nvidia,pull = <2>; 244 nvidia,pull = <TEGRA_PIN_PULL_UP>;
239 }; 245 };
240 drive_dap1 { 246 drive_dap1 {
241 nvidia,pins = "drive_dap1"; 247 nvidia,pins = "drive_dap1";
242 nvidia,high-speed-mode = <0>; 248 nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
243 nvidia,schmitt = <1>; 249 nvidia,schmitt = <TEGRA_PIN_ENABLE>;
244 nvidia,low-power-mode = <0>; 250 nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_8>;
245 nvidia,pull-down-strength = <0>; 251 nvidia,pull-down-strength = <0>;
246 nvidia,pull-up-strength = <0>; 252 nvidia,pull-up-strength = <0>;
247 nvidia,slew-rate-rising = <0>; 253 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>;
248 nvidia,slew-rate-falling = <0>; 254 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>;
249 }; 255 };
250 }; 256 };
251 }; 257 };
@@ -495,7 +501,20 @@
495 }; 501 };
496 }; 502 };
497 503
498 pmc { 504 kbc@7000e200 {
505 status = "okay";
506 nvidia,debounce-delay-ms = <20>;
507 nvidia,repeat-delay-ms = <160>;
508 nvidia,kbc-row-pins = <0 1 2>;
509 nvidia,kbc-col-pins = <16 17>;
510 nvidia,wakeup-source;
511 linux,keymap = <MATRIX_KEY(0x00, 0x00, KEY_POWER)
512 MATRIX_KEY(0x01, 0x00, KEY_HOME)
513 MATRIX_KEY(0x01, 0x01, KEY_BACK)
514 MATRIX_KEY(0x02, 0x01, KEY_MENU)>;
515 };
516
517 pmc@7000e400 {
499 nvidia,invert-interrupt; 518 nvidia,invert-interrupt;
500 nvidia,suspend-mode = <1>; 519 nvidia,suspend-mode = <1>;
501 nvidia,cpu-pwr-good-time = <2000>; 520 nvidia,cpu-pwr-good-time = <2000>;
@@ -543,7 +562,7 @@
543 #address-cells = <1>; 562 #address-cells = <1>;
544 #size-cells = <0>; 563 #size-cells = <0>;
545 564
546 clk32k_in: clock { 565 clk32k_in: clock@0 {
547 compatible = "fixed-clock"; 566 compatible = "fixed-clock";
548 reg=<0>; 567 reg=<0>;
549 #clock-cells = <0>; 568 #clock-cells = <0>;
@@ -551,25 +570,12 @@
551 }; 570 };
552 }; 571 };
553 572
554 kbc {
555 status = "okay";
556 nvidia,debounce-delay-ms = <20>;
557 nvidia,repeat-delay-ms = <160>;
558 nvidia,kbc-row-pins = <0 1 2>;
559 nvidia,kbc-col-pins = <16 17>;
560 nvidia,wakeup-source;
561 linux,keymap = <0x00000074 /* KEY_POWER */
562 0x01000066 /* KEY_HOME */
563 0x0101009E /* KEY_BACK */
564 0x0201008B>; /* KEY_MENU */
565 };
566
567 regulators { 573 regulators {
568 compatible = "simple-bus"; 574 compatible = "simple-bus";
569 #address-cells = <1>; 575 #address-cells = <1>;
570 #size-cells = <0>; 576 #size-cells = <0>;
571 577
572 usb0_vbus_reg: regulator { 578 usb0_vbus_reg: regulator@0 {
573 compatible = "regulator-fixed"; 579 compatible = "regulator-fixed";
574 reg = <0>; 580 reg = <0>;
575 regulator-name = "usb0_vbus"; 581 regulator-name = "usb0_vbus";
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index c90d0aac3afe..480ecda3416b 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -1,5 +1,6 @@
1#include <dt-bindings/clock/tegra20-car.h> 1#include <dt-bindings/clock/tegra20-car.h>
2#include <dt-bindings/gpio/tegra-gpio.h> 2#include <dt-bindings/gpio/tegra-gpio.h>
3#include <dt-bindings/pinctrl/pinctrl-tegra.h>
3#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
4 5
5#include "skeleton.dtsi" 6#include "skeleton.dtsi"
@@ -16,7 +17,7 @@
16 serial4 = &uarte; 17 serial4 = &uarte;
17 }; 18 };
18 19
19 host1x { 20 host1x@50000000 {
20 compatible = "nvidia,tegra20-host1x", "simple-bus"; 21 compatible = "nvidia,tegra20-host1x", "simple-bus";
21 reg = <0x50000000 0x00024000>; 22 reg = <0x50000000 0x00024000>;
22 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */ 23 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */
@@ -30,7 +31,7 @@
30 31
31 ranges = <0x54000000 0x54000000 0x04000000>; 32 ranges = <0x54000000 0x54000000 0x04000000>;
32 33
33 mpe { 34 mpe@54040000 {
34 compatible = "nvidia,tegra20-mpe"; 35 compatible = "nvidia,tegra20-mpe";
35 reg = <0x54040000 0x00040000>; 36 reg = <0x54040000 0x00040000>;
36 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; 37 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
@@ -39,7 +40,7 @@
39 reset-names = "mpe"; 40 reset-names = "mpe";
40 }; 41 };
41 42
42 vi { 43 vi@54080000 {
43 compatible = "nvidia,tegra20-vi"; 44 compatible = "nvidia,tegra20-vi";
44 reg = <0x54080000 0x00040000>; 45 reg = <0x54080000 0x00040000>;
45 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 46 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
@@ -48,7 +49,7 @@
48 reset-names = "vi"; 49 reset-names = "vi";
49 }; 50 };
50 51
51 epp { 52 epp@540c0000 {
52 compatible = "nvidia,tegra20-epp"; 53 compatible = "nvidia,tegra20-epp";
53 reg = <0x540c0000 0x00040000>; 54 reg = <0x540c0000 0x00040000>;
54 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>; 55 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
@@ -57,7 +58,7 @@
57 reset-names = "epp"; 58 reset-names = "epp";
58 }; 59 };
59 60
60 isp { 61 isp@54100000 {
61 compatible = "nvidia,tegra20-isp"; 62 compatible = "nvidia,tegra20-isp";
62 reg = <0x54100000 0x00040000>; 63 reg = <0x54100000 0x00040000>;
63 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 64 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
@@ -66,7 +67,7 @@
66 reset-names = "isp"; 67 reset-names = "isp";
67 }; 68 };
68 69
69 gr2d { 70 gr2d@54140000 {
70 compatible = "nvidia,tegra20-gr2d"; 71 compatible = "nvidia,tegra20-gr2d";
71 reg = <0x54140000 0x00040000>; 72 reg = <0x54140000 0x00040000>;
72 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 73 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
@@ -75,9 +76,9 @@
75 reset-names = "2d"; 76 reset-names = "2d";
76 }; 77 };
77 78
78 gr3d { 79 gr3d@54140000 {
79 compatible = "nvidia,tegra20-gr3d"; 80 compatible = "nvidia,tegra20-gr3d";
80 reg = <0x54180000 0x00040000>; 81 reg = <0x54140000 0x00040000>;
81 clocks = <&tegra_car TEGRA20_CLK_GR3D>; 82 clocks = <&tegra_car TEGRA20_CLK_GR3D>;
82 resets = <&tegra_car 24>; 83 resets = <&tegra_car 24>;
83 reset-names = "3d"; 84 reset-names = "3d";
@@ -113,7 +114,7 @@
113 }; 114 };
114 }; 115 };
115 116
116 hdmi { 117 hdmi@54280000 {
117 compatible = "nvidia,tegra20-hdmi"; 118 compatible = "nvidia,tegra20-hdmi";
118 reg = <0x54280000 0x00040000>; 119 reg = <0x54280000 0x00040000>;
119 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; 120 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
@@ -125,7 +126,7 @@
125 status = "disabled"; 126 status = "disabled";
126 }; 127 };
127 128
128 tvo { 129 tvo@542c0000 {
129 compatible = "nvidia,tegra20-tvo"; 130 compatible = "nvidia,tegra20-tvo";
130 reg = <0x542c0000 0x00040000>; 131 reg = <0x542c0000 0x00040000>;
131 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; 132 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
@@ -133,9 +134,9 @@
133 status = "disabled"; 134 status = "disabled";
134 }; 135 };
135 136
136 dsi { 137 dsi@542c0000 {
137 compatible = "nvidia,tegra20-dsi"; 138 compatible = "nvidia,tegra20-dsi";
138 reg = <0x54300000 0x00040000>; 139 reg = <0x542c0000 0x00040000>;
139 clocks = <&tegra_car TEGRA20_CLK_DSI>; 140 clocks = <&tegra_car TEGRA20_CLK_DSI>;
140 resets = <&tegra_car 48>; 141 resets = <&tegra_car 48>;
141 reset-names = "dsi"; 142 reset-names = "dsi";
@@ -151,7 +152,7 @@
151 clocks = <&tegra_car TEGRA20_CLK_TWD>; 152 clocks = <&tegra_car TEGRA20_CLK_TWD>;
152 }; 153 };
153 154
154 intc: interrupt-controller { 155 intc: interrupt-controller@50041000 {
155 compatible = "arm,cortex-a9-gic"; 156 compatible = "arm,cortex-a9-gic";
156 reg = <0x50041000 0x1000 157 reg = <0x50041000 0x1000
157 0x50040100 0x0100>; 158 0x50040100 0x0100>;
@@ -159,7 +160,7 @@
159 #interrupt-cells = <3>; 160 #interrupt-cells = <3>;
160 }; 161 };
161 162
162 cache-controller { 163 cache-controller@50043000 {
163 compatible = "arm,pl310-cache"; 164 compatible = "arm,pl310-cache";
164 reg = <0x50043000 0x1000>; 165 reg = <0x50043000 0x1000>;
165 arm,data-latency = <5 5 2>; 166 arm,data-latency = <5 5 2>;
@@ -178,14 +179,14 @@
178 clocks = <&tegra_car TEGRA20_CLK_TIMER>; 179 clocks = <&tegra_car TEGRA20_CLK_TIMER>;
179 }; 180 };
180 181
181 tegra_car: clock { 182 tegra_car: clock@60006000 {
182 compatible = "nvidia,tegra20-car"; 183 compatible = "nvidia,tegra20-car";
183 reg = <0x60006000 0x1000>; 184 reg = <0x60006000 0x1000>;
184 #clock-cells = <1>; 185 #clock-cells = <1>;
185 #reset-cells = <1>; 186 #reset-cells = <1>;
186 }; 187 };
187 188
188 apbdma: dma { 189 apbdma: dma@6000a000 {
189 compatible = "nvidia,tegra20-apbdma"; 190 compatible = "nvidia,tegra20-apbdma";
190 reg = <0x6000a000 0x1200>; 191 reg = <0x6000a000 0x1200>;
191 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, 192 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
@@ -210,12 +211,12 @@
210 #dma-cells = <1>; 211 #dma-cells = <1>;
211 }; 212 };
212 213
213 ahb { 214 ahb@6000c004 {
214 compatible = "nvidia,tegra20-ahb"; 215 compatible = "nvidia,tegra20-ahb";
215 reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */ 216 reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */
216 }; 217 };
217 218
218 gpio: gpio { 219 gpio: gpio@6000d000 {
219 compatible = "nvidia,tegra20-gpio"; 220 compatible = "nvidia,tegra20-gpio";
220 reg = <0x6000d000 0x1000>; 221 reg = <0x6000d000 0x1000>;
221 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>, 222 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
@@ -231,7 +232,7 @@
231 interrupt-controller; 232 interrupt-controller;
232 }; 233 };
233 234
234 pinmux: pinmux { 235 pinmux: pinmux@70000014 {
235 compatible = "nvidia,tegra20-pinmux"; 236 compatible = "nvidia,tegra20-pinmux";
236 reg = <0x70000014 0x10 /* Tri-state registers */ 237 reg = <0x70000014 0x10 /* Tri-state registers */
237 0x70000080 0x20 /* Mux registers */ 238 0x70000080 0x20 /* Mux registers */
@@ -239,12 +240,12 @@
239 0x70000868 0xa8>; /* Pad control registers */ 240 0x70000868 0xa8>; /* Pad control registers */
240 }; 241 };
241 242
242 das { 243 das@70000c00 {
243 compatible = "nvidia,tegra20-das"; 244 compatible = "nvidia,tegra20-das";
244 reg = <0x70000c00 0x80>; 245 reg = <0x70000c00 0x80>;
245 }; 246 };
246 247
247 tegra_ac97: ac97 { 248 tegra_ac97: ac97@70002000 {
248 compatible = "nvidia,tegra20-ac97"; 249 compatible = "nvidia,tegra20-ac97";
249 reg = <0x70002000 0x200>; 250 reg = <0x70002000 0x200>;
250 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>; 251 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
@@ -352,7 +353,7 @@
352 status = "disabled"; 353 status = "disabled";
353 }; 354 };
354 355
355 pwm: pwm { 356 pwm: pwm@7000a000 {
356 compatible = "nvidia,tegra20-pwm"; 357 compatible = "nvidia,tegra20-pwm";
357 reg = <0x7000a000 0x100>; 358 reg = <0x7000a000 0x100>;
358 #pwm-cells = <2>; 359 #pwm-cells = <2>;
@@ -362,7 +363,7 @@
362 status = "disabled"; 363 status = "disabled";
363 }; 364 };
364 365
365 rtc { 366 rtc@7000e000 {
366 compatible = "nvidia,tegra20-rtc"; 367 compatible = "nvidia,tegra20-rtc";
367 reg = <0x7000e000 0x100>; 368 reg = <0x7000e000 0x100>;
368 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 369 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
@@ -503,7 +504,7 @@
503 status = "disabled"; 504 status = "disabled";
504 }; 505 };
505 506
506 kbc { 507 kbc@7000e200 {
507 compatible = "nvidia,tegra20-kbc"; 508 compatible = "nvidia,tegra20-kbc";
508 reg = <0x7000e200 0x100>; 509 reg = <0x7000e200 0x100>;
509 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 510 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
@@ -513,7 +514,7 @@
513 status = "disabled"; 514 status = "disabled";
514 }; 515 };
515 516
516 pmc { 517 pmc@7000e400 {
517 compatible = "nvidia,tegra20-pmc"; 518 compatible = "nvidia,tegra20-pmc";
518 reg = <0x7000e400 0x400>; 519 reg = <0x7000e400 0x400>;
519 clocks = <&tegra_car TEGRA20_CLK_PCLK>, <&clk32k_in>; 520 clocks = <&tegra_car TEGRA20_CLK_PCLK>, <&clk32k_in>;
@@ -527,7 +528,7 @@
527 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 528 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
528 }; 529 };
529 530
530 iommu { 531 iommu@7000f024 {
531 compatible = "nvidia,tegra20-gart"; 532 compatible = "nvidia,tegra20-gart";
532 reg = <0x7000f024 0x00000018 /* controller registers */ 533 reg = <0x7000f024 0x00000018 /* controller registers */
533 0x58000000 0x02000000>; /* GART aperture */ 534 0x58000000 0x02000000>; /* GART aperture */
@@ -540,7 +541,7 @@
540 #size-cells = <0>; 541 #size-cells = <0>;
541 }; 542 };
542 543
543 pcie-controller { 544 pcie-controller@80003000 {
544 compatible = "nvidia,tegra20-pcie"; 545 compatible = "nvidia,tegra20-pcie";
545 device_type = "pci"; 546 device_type = "pci";
546 reg = <0x80003000 0x00000800 /* PADS registers */ 547 reg = <0x80003000 0x00000800 /* PADS registers */
diff --git a/arch/arm/boot/dts/tegra30-beaver.dts b/arch/arm/boot/dts/tegra30-beaver.dts
index 08cad696e89f..e93fe45b7803 100644
--- a/arch/arm/boot/dts/tegra30-beaver.dts
+++ b/arch/arm/boot/dts/tegra30-beaver.dts
@@ -6,11 +6,16 @@
6 model = "NVIDIA Tegra30 Beaver evaluation board"; 6 model = "NVIDIA Tegra30 Beaver evaluation board";
7 compatible = "nvidia,beaver", "nvidia,tegra30"; 7 compatible = "nvidia,beaver", "nvidia,tegra30";
8 8
9 aliases {
10 rtc0 = "/i2c@7000d000/tps65911@2d";
11 rtc1 = "/rtc@7000e000";
12 };
13
9 memory { 14 memory {
10 reg = <0x80000000 0x7ff00000>; 15 reg = <0x80000000 0x7ff00000>;
11 }; 16 };
12 17
13 pcie-controller { 18 pcie-controller@00003000 {
14 status = "okay"; 19 status = "okay";
15 pex-clk-supply = <&sys_3v3_pexs_reg>; 20 pex-clk-supply = <&sys_3v3_pexs_reg>;
16 vdd-supply = <&ldo1_reg>; 21 vdd-supply = <&ldo1_reg>;
@@ -31,8 +36,8 @@
31 }; 36 };
32 }; 37 };
33 38
34 host1x { 39 host1x@50000000 {
35 hdmi { 40 hdmi@54280000 {
36 status = "okay"; 41 status = "okay";
37 42
38 vdd-supply = <&sys_3v3_reg>; 43 vdd-supply = <&sys_3v3_reg>;
@@ -44,7 +49,7 @@
44 }; 49 };
45 }; 50 };
46 51
47 pinmux { 52 pinmux@70000868 {
48 pinctrl-names = "default"; 53 pinctrl-names = "default";
49 pinctrl-0 = <&state_default>; 54 pinctrl-0 = <&state_default>;
50 55
@@ -52,8 +57,8 @@
52 sdmmc1_clk_pz0 { 57 sdmmc1_clk_pz0 {
53 nvidia,pins = "sdmmc1_clk_pz0"; 58 nvidia,pins = "sdmmc1_clk_pz0";
54 nvidia,function = "sdmmc1"; 59 nvidia,function = "sdmmc1";
55 nvidia,pull = <0>; 60 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
56 nvidia,tristate = <0>; 61 nvidia,tristate = <TEGRA_PIN_DISABLE>;
57 }; 62 };
58 sdmmc1_cmd_pz1 { 63 sdmmc1_cmd_pz1 {
59 nvidia,pins = "sdmmc1_cmd_pz1", 64 nvidia,pins = "sdmmc1_cmd_pz1",
@@ -62,14 +67,14 @@
62 "sdmmc1_dat2_py5", 67 "sdmmc1_dat2_py5",
63 "sdmmc1_dat3_py4"; 68 "sdmmc1_dat3_py4";
64 nvidia,function = "sdmmc1"; 69 nvidia,function = "sdmmc1";
65 nvidia,pull = <2>; 70 nvidia,pull = <TEGRA_PIN_PULL_UP>;
66 nvidia,tristate = <0>; 71 nvidia,tristate = <TEGRA_PIN_DISABLE>;
67 }; 72 };
68 sdmmc3_clk_pa6 { 73 sdmmc3_clk_pa6 {
69 nvidia,pins = "sdmmc3_clk_pa6"; 74 nvidia,pins = "sdmmc3_clk_pa6";
70 nvidia,function = "sdmmc3"; 75 nvidia,function = "sdmmc3";
71 nvidia,pull = <0>; 76 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
72 nvidia,tristate = <0>; 77 nvidia,tristate = <TEGRA_PIN_DISABLE>;
73 }; 78 };
74 sdmmc3_cmd_pa7 { 79 sdmmc3_cmd_pa7 {
75 nvidia,pins = "sdmmc3_cmd_pa7", 80 nvidia,pins = "sdmmc3_cmd_pa7",
@@ -78,15 +83,15 @@
78 "sdmmc3_dat2_pb5", 83 "sdmmc3_dat2_pb5",
79 "sdmmc3_dat3_pb4"; 84 "sdmmc3_dat3_pb4";
80 nvidia,function = "sdmmc3"; 85 nvidia,function = "sdmmc3";
81 nvidia,pull = <2>; 86 nvidia,pull = <TEGRA_PIN_PULL_UP>;
82 nvidia,tristate = <0>; 87 nvidia,tristate = <TEGRA_PIN_DISABLE>;
83 }; 88 };
84 sdmmc4_clk_pcc4 { 89 sdmmc4_clk_pcc4 {
85 nvidia,pins = "sdmmc4_clk_pcc4", 90 nvidia,pins = "sdmmc4_clk_pcc4",
86 "sdmmc4_rst_n_pcc3"; 91 "sdmmc4_rst_n_pcc3";
87 nvidia,function = "sdmmc4"; 92 nvidia,function = "sdmmc4";
88 nvidia,pull = <0>; 93 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
89 nvidia,tristate = <0>; 94 nvidia,tristate = <TEGRA_PIN_DISABLE>;
90 }; 95 };
91 sdmmc4_dat0_paa0 { 96 sdmmc4_dat0_paa0 {
92 nvidia,pins = "sdmmc4_dat0_paa0", 97 nvidia,pins = "sdmmc4_dat0_paa0",
@@ -98,8 +103,8 @@
98 "sdmmc4_dat6_paa6", 103 "sdmmc4_dat6_paa6",
99 "sdmmc4_dat7_paa7"; 104 "sdmmc4_dat7_paa7";
100 nvidia,function = "sdmmc4"; 105 nvidia,function = "sdmmc4";
101 nvidia,pull = <2>; 106 nvidia,pull = <TEGRA_PIN_PULL_UP>;
102 nvidia,tristate = <0>; 107 nvidia,tristate = <TEGRA_PIN_DISABLE>;
103 }; 108 };
104 dap2_fs_pa2 { 109 dap2_fs_pa2 {
105 nvidia,pins = "dap2_fs_pa2", 110 nvidia,pins = "dap2_fs_pa2",
@@ -107,18 +112,18 @@
107 "dap2_din_pa4", 112 "dap2_din_pa4",
108 "dap2_dout_pa5"; 113 "dap2_dout_pa5";
109 nvidia,function = "i2s1"; 114 nvidia,function = "i2s1";
110 nvidia,pull = <0>; 115 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
111 nvidia,tristate = <0>; 116 nvidia,tristate = <TEGRA_PIN_DISABLE>;
112 }; 117 };
113 pex_l1_prsnt_n_pdd4 { 118 pex_l1_prsnt_n_pdd4 {
114 nvidia,pins = "pex_l1_prsnt_n_pdd4", 119 nvidia,pins = "pex_l1_prsnt_n_pdd4",
115 "pex_l1_clkreq_n_pdd6"; 120 "pex_l1_clkreq_n_pdd6";
116 nvidia,pull = <2>; 121 nvidia,pull = <TEGRA_PIN_PULL_UP>;
117 }; 122 };
118 sdio3 { 123 sdio3 {
119 nvidia,pins = "drive_sdio3"; 124 nvidia,pins = "drive_sdio3";
120 nvidia,high-speed-mode = <0>; 125 nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
121 nvidia,schmitt = <0>; 126 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
122 nvidia,pull-down-strength = <46>; 127 nvidia,pull-down-strength = <46>;
123 nvidia,pull-up-strength = <42>; 128 nvidia,pull-up-strength = <42>;
124 nvidia,slew-rate-rising = <1>; 129 nvidia,slew-rate-rising = <1>;
@@ -159,7 +164,7 @@
159 status = "okay"; 164 status = "okay";
160 clock-frequency = <100000>; 165 clock-frequency = <100000>;
161 166
162 rt5640: rt5640 { 167 rt5640: rt5640@1c {
163 compatible = "realtek,rt5640"; 168 compatible = "realtek,rt5640";
164 reg = <0x1c>; 169 reg = <0x1c>;
165 interrupt-parent = <&gpio>; 170 interrupt-parent = <&gpio>;
@@ -168,19 +173,6 @@
168 <&gpio TEGRA_GPIO(X, 2) GPIO_ACTIVE_HIGH>; 173 <&gpio TEGRA_GPIO(X, 2) GPIO_ACTIVE_HIGH>;
169 }; 174 };
170 175
171 tps62361 {
172 compatible = "ti,tps62361";
173 reg = <0x60>;
174
175 regulator-name = "tps62361-vout";
176 regulator-min-microvolt = <500000>;
177 regulator-max-microvolt = <1500000>;
178 regulator-boot-on;
179 regulator-always-on;
180 ti,vsel0-state-high;
181 ti,vsel1-state-high;
182 };
183
184 pmic: tps65911@2d { 176 pmic: tps65911@2d {
185 compatible = "ti,tps65911"; 177 compatible = "ti,tps65911";
186 reg = <0x2d>; 178 reg = <0x2d>;
@@ -284,6 +276,19 @@
284 }; 276 };
285 }; 277 };
286 }; 278 };
279
280 tps62361@60 {
281 compatible = "ti,tps62361";
282 reg = <0x60>;
283
284 regulator-name = "tps62361-vout";
285 regulator-min-microvolt = <500000>;
286 regulator-max-microvolt = <1500000>;
287 regulator-boot-on;
288 regulator-always-on;
289 ti,vsel0-state-high;
290 ti,vsel1-state-high;
291 };
287 }; 292 };
288 293
289 spi@7000da00 { 294 spi@7000da00 {
@@ -296,13 +301,7 @@
296 }; 301 };
297 }; 302 };
298 303
299 ahub { 304 pmc@7000e400 {
300 i2s@70080400 {
301 status = "okay";
302 };
303 };
304
305 pmc {
306 status = "okay"; 305 status = "okay";
307 nvidia,invert-interrupt; 306 nvidia,invert-interrupt;
308 nvidia,suspend-mode = <1>; 307 nvidia,suspend-mode = <1>;
@@ -314,6 +313,12 @@
314 nvidia,sys-clock-req-active-high; 313 nvidia,sys-clock-req-active-high;
315 }; 314 };
316 315
316 ahub@70080000 {
317 i2s@70080400 {
318 status = "okay";
319 };
320 };
321
317 sdhci@78000000 { 322 sdhci@78000000 {
318 status = "okay"; 323 status = "okay";
319 cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>; 324 cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
@@ -328,6 +333,15 @@
328 non-removable; 333 non-removable;
329 }; 334 };
330 335
336 usb@7d004000 {
337 status = "okay";
338 };
339
340 phy2: usb-phy@7d004000 {
341 vbus-supply = <&sys_3v3_reg>;
342 status = "okay";
343 };
344
331 usb@7d008000 { 345 usb@7d008000 {
332 status = "okay"; 346 status = "okay";
333 }; 347 };
@@ -342,7 +356,7 @@
342 #address-cells = <1>; 356 #address-cells = <1>;
343 #size-cells = <0>; 357 #size-cells = <0>;
344 358
345 clk32k_in: clock { 359 clk32k_in: clock@0 {
346 compatible = "fixed-clock"; 360 compatible = "fixed-clock";
347 reg=<0>; 361 reg=<0>;
348 #clock-cells = <0>; 362 #clock-cells = <0>;
@@ -350,6 +364,19 @@
350 }; 364 };
351 }; 365 };
352 366
367 gpio-leds {
368 compatible = "gpio-leds";
369
370 gpled1 {
371 label = "LED1"; /* CR5A1 (blue) */
372 gpios = <&gpio TEGRA_GPIO(L, 1) GPIO_ACTIVE_HIGH>;
373 };
374 gpled2 {
375 label = "LED2"; /* CR4A2 (green) */
376 gpios = <&gpio TEGRA_GPIO(L, 0) GPIO_ACTIVE_HIGH>;
377 };
378 };
379
353 regulators { 380 regulators {
354 compatible = "simple-bus"; 381 compatible = "simple-bus";
355 #address-cells = <1>; 382 #address-cells = <1>;
@@ -453,19 +480,6 @@
453 }; 480 };
454 }; 481 };
455 482
456 gpio-leds {
457 compatible = "gpio-leds";
458
459 gpled1 {
460 label = "LED1"; /* CR5A1 (blue) */
461 gpios = <&gpio TEGRA_GPIO(L, 1) GPIO_ACTIVE_HIGH>;
462 };
463 gpled2 {
464 label = "LED2"; /* CR4A2 (green) */
465 gpios = <&gpio TEGRA_GPIO(L, 0) GPIO_ACTIVE_HIGH>;
466 };
467 };
468
469 sound { 483 sound {
470 compatible = "nvidia,tegra-audio-rt5640-beaver", 484 compatible = "nvidia,tegra-audio-rt5640-beaver",
471 "nvidia,tegra-audio-rt5640"; 485 "nvidia,tegra-audio-rt5640";
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a02.dts b/arch/arm/boot/dts/tegra30-cardhu-a02.dts
index 1082c5ed90d1..c9bfedcca6ed 100644
--- a/arch/arm/boot/dts/tegra30-cardhu-a02.dts
+++ b/arch/arm/boot/dts/tegra30-cardhu-a02.dts
@@ -8,6 +8,13 @@
8 model = "NVIDIA Tegra30 Cardhu A02 evaluation board"; 8 model = "NVIDIA Tegra30 Cardhu A02 evaluation board";
9 compatible = "nvidia,cardhu-a02", "nvidia,cardhu", "nvidia,tegra30"; 9 compatible = "nvidia,cardhu-a02", "nvidia,cardhu", "nvidia,tegra30";
10 10
11 sdhci@78000400 {
12 status = "okay";
13 power-gpios = <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
14 bus-width = <4>;
15 keep-power-in-suspend;
16 };
17
11 regulators { 18 regulators {
12 compatible = "simple-bus"; 19 compatible = "simple-bus";
13 #address-cells = <1>; 20 #address-cells = <1>;
@@ -83,12 +90,5 @@
83 gpio = <&gpio TEGRA_GPIO(K, 3) GPIO_ACTIVE_HIGH>; 90 gpio = <&gpio TEGRA_GPIO(K, 3) GPIO_ACTIVE_HIGH>;
84 }; 91 };
85 }; 92 };
86
87 sdhci@78000400 {
88 status = "okay";
89 power-gpios = <&gpio TEGRA_GPIO(D, 4) GPIO_ACTIVE_HIGH>;
90 bus-width = <4>;
91 keep-power-in-suspend;
92 };
93}; 93};
94 94
diff --git a/arch/arm/boot/dts/tegra30-cardhu-a04.dts b/arch/arm/boot/dts/tegra30-cardhu-a04.dts
index bf012bddaafb..fadf55e46b2b 100644
--- a/arch/arm/boot/dts/tegra30-cardhu-a04.dts
+++ b/arch/arm/boot/dts/tegra30-cardhu-a04.dts
@@ -8,6 +8,13 @@
8 model = "NVIDIA Tegra30 Cardhu A04 (A05, A06, A07) evaluation board"; 8 model = "NVIDIA Tegra30 Cardhu A04 (A05, A06, A07) evaluation board";
9 compatible = "nvidia,cardhu-a04", "nvidia,cardhu", "nvidia,tegra30"; 9 compatible = "nvidia,cardhu-a04", "nvidia,cardhu", "nvidia,tegra30";
10 10
11 sdhci@78000400 {
12 status = "okay";
13 power-gpios = <&gpio TEGRA_GPIO(D, 3) GPIO_ACTIVE_HIGH>;
14 bus-width = <4>;
15 keep-power-in-suspend;
16 };
17
11 regulators { 18 regulators {
12 compatible = "simple-bus"; 19 compatible = "simple-bus";
13 #address-cells = <1>; 20 #address-cells = <1>;
@@ -95,11 +102,4 @@
95 gpio = <&gpio TEGRA_GPIO(DD, 0) GPIO_ACTIVE_HIGH>; 102 gpio = <&gpio TEGRA_GPIO(DD, 0) GPIO_ACTIVE_HIGH>;
96 }; 103 };
97 }; 104 };
98
99 sdhci@78000400 {
100 status = "okay";
101 power-gpios = <&gpio TEGRA_GPIO(D, 3) GPIO_ACTIVE_HIGH>;
102 bus-width = <4>;
103 keep-power-in-suspend;
104 };
105}; 105};
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
index 5ea7dfa4d9fa..9104224124ee 100644
--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
@@ -27,11 +27,16 @@
27 model = "NVIDIA Tegra30 Cardhu evaluation board"; 27 model = "NVIDIA Tegra30 Cardhu evaluation board";
28 compatible = "nvidia,cardhu", "nvidia,tegra30"; 28 compatible = "nvidia,cardhu", "nvidia,tegra30";
29 29
30 aliases {
31 rtc0 = "/i2c@7000d000/tps6586x@34";
32 rtc1 = "/rtc@7000e000";
33 };
34
30 memory { 35 memory {
31 reg = <0x80000000 0x40000000>; 36 reg = <0x80000000 0x40000000>;
32 }; 37 };
33 38
34 pcie-controller { 39 pcie-controller@00003000 {
35 status = "okay"; 40 status = "okay";
36 pex-clk-supply = <&pex_hvdd_3v3_reg>; 41 pex-clk-supply = <&pex_hvdd_3v3_reg>;
37 vdd-supply = <&ldo1_reg>; 42 vdd-supply = <&ldo1_reg>;
@@ -51,7 +56,17 @@
51 }; 56 };
52 }; 57 };
53 58
54 pinmux { 59 host1x@50000000 {
60 dc@54200000 {
61 rgb {
62 status = "okay";
63
64 nvidia,panel = <&panel>;
65 };
66 };
67 };
68
69 pinmux@70000868 {
55 pinctrl-names = "default"; 70 pinctrl-names = "default";
56 pinctrl-0 = <&state_default>; 71 pinctrl-0 = <&state_default>;
57 72
@@ -59,8 +74,8 @@
59 sdmmc1_clk_pz0 { 74 sdmmc1_clk_pz0 {
60 nvidia,pins = "sdmmc1_clk_pz0"; 75 nvidia,pins = "sdmmc1_clk_pz0";
61 nvidia,function = "sdmmc1"; 76 nvidia,function = "sdmmc1";
62 nvidia,pull = <0>; 77 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
63 nvidia,tristate = <0>; 78 nvidia,tristate = <TEGRA_PIN_DISABLE>;
64 }; 79 };
65 sdmmc1_cmd_pz1 { 80 sdmmc1_cmd_pz1 {
66 nvidia,pins = "sdmmc1_cmd_pz1", 81 nvidia,pins = "sdmmc1_cmd_pz1",
@@ -69,14 +84,14 @@
69 "sdmmc1_dat2_py5", 84 "sdmmc1_dat2_py5",
70 "sdmmc1_dat3_py4"; 85 "sdmmc1_dat3_py4";
71 nvidia,function = "sdmmc1"; 86 nvidia,function = "sdmmc1";
72 nvidia,pull = <2>; 87 nvidia,pull = <TEGRA_PIN_PULL_UP>;
73 nvidia,tristate = <0>; 88 nvidia,tristate = <TEGRA_PIN_DISABLE>;
74 }; 89 };
75 sdmmc3_clk_pa6 { 90 sdmmc3_clk_pa6 {
76 nvidia,pins = "sdmmc3_clk_pa6"; 91 nvidia,pins = "sdmmc3_clk_pa6";
77 nvidia,function = "sdmmc3"; 92 nvidia,function = "sdmmc3";
78 nvidia,pull = <0>; 93 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
79 nvidia,tristate = <0>; 94 nvidia,tristate = <TEGRA_PIN_DISABLE>;
80 }; 95 };
81 sdmmc3_cmd_pa7 { 96 sdmmc3_cmd_pa7 {
82 nvidia,pins = "sdmmc3_cmd_pa7", 97 nvidia,pins = "sdmmc3_cmd_pa7",
@@ -85,15 +100,15 @@
85 "sdmmc3_dat2_pb5", 100 "sdmmc3_dat2_pb5",
86 "sdmmc3_dat3_pb4"; 101 "sdmmc3_dat3_pb4";
87 nvidia,function = "sdmmc3"; 102 nvidia,function = "sdmmc3";
88 nvidia,pull = <2>; 103 nvidia,pull = <TEGRA_PIN_PULL_UP>;
89 nvidia,tristate = <0>; 104 nvidia,tristate = <TEGRA_PIN_DISABLE>;
90 }; 105 };
91 sdmmc4_clk_pcc4 { 106 sdmmc4_clk_pcc4 {
92 nvidia,pins = "sdmmc4_clk_pcc4", 107 nvidia,pins = "sdmmc4_clk_pcc4",
93 "sdmmc4_rst_n_pcc3"; 108 "sdmmc4_rst_n_pcc3";
94 nvidia,function = "sdmmc4"; 109 nvidia,function = "sdmmc4";
95 nvidia,pull = <0>; 110 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
96 nvidia,tristate = <0>; 111 nvidia,tristate = <TEGRA_PIN_DISABLE>;
97 }; 112 };
98 sdmmc4_dat0_paa0 { 113 sdmmc4_dat0_paa0 {
99 nvidia,pins = "sdmmc4_dat0_paa0", 114 nvidia,pins = "sdmmc4_dat0_paa0",
@@ -105,8 +120,8 @@
105 "sdmmc4_dat6_paa6", 120 "sdmmc4_dat6_paa6",
106 "sdmmc4_dat7_paa7"; 121 "sdmmc4_dat7_paa7";
107 nvidia,function = "sdmmc4"; 122 nvidia,function = "sdmmc4";
108 nvidia,pull = <2>; 123 nvidia,pull = <TEGRA_PIN_PULL_UP>;
109 nvidia,tristate = <0>; 124 nvidia,tristate = <TEGRA_PIN_DISABLE>;
110 }; 125 };
111 dap2_fs_pa2 { 126 dap2_fs_pa2 {
112 nvidia,pins = "dap2_fs_pa2", 127 nvidia,pins = "dap2_fs_pa2",
@@ -114,17 +129,17 @@
114 "dap2_din_pa4", 129 "dap2_din_pa4",
115 "dap2_dout_pa5"; 130 "dap2_dout_pa5";
116 nvidia,function = "i2s1"; 131 nvidia,function = "i2s1";
117 nvidia,pull = <0>; 132 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
118 nvidia,tristate = <0>; 133 nvidia,tristate = <TEGRA_PIN_DISABLE>;
119 }; 134 };
120 sdio3 { 135 sdio3 {
121 nvidia,pins = "drive_sdio3"; 136 nvidia,pins = "drive_sdio3";
122 nvidia,high-speed-mode = <0>; 137 nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>;
123 nvidia,schmitt = <0>; 138 nvidia,schmitt = <TEGRA_PIN_DISABLE>;
124 nvidia,pull-down-strength = <46>; 139 nvidia,pull-down-strength = <46>;
125 nvidia,pull-up-strength = <42>; 140 nvidia,pull-up-strength = <42>;
126 nvidia,slew-rate-rising = <1>; 141 nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FAST>;
127 nvidia,slew-rate-falling = <1>; 142 nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FAST>;
128 }; 143 };
129 uart3_txd_pw6 { 144 uart3_txd_pw6 {
130 nvidia,pins = "uart3_txd_pw6", 145 nvidia,pins = "uart3_txd_pw6",
@@ -132,8 +147,8 @@
132 "uart3_rts_n_pc0", 147 "uart3_rts_n_pc0",
133 "uart3_rxd_pw7"; 148 "uart3_rxd_pw7";
134 nvidia,function = "uartc"; 149 nvidia,function = "uartc";
135 nvidia,pull = <0>; 150 nvidia,pull = <TEGRA_PIN_PULL_NONE>;
136 nvidia,tristate = <0>; 151 nvidia,tristate = <TEGRA_PIN_DISABLE>;
137 }; 152 };
138 }; 153 };
139 }; 154 };
@@ -147,7 +162,11 @@
147 status = "okay"; 162 status = "okay";
148 }; 163 };
149 164
150 i2c@7000c000 { 165 pwm@7000a000 {
166 status = "okay";
167 };
168
169 panelddc: i2c@7000c000 {
151 status = "okay"; 170 status = "okay";
152 clock-frequency = <100000>; 171 clock-frequency = <100000>;
153 }; 172 };
@@ -302,7 +321,7 @@
302 interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_LEVEL_LOW>; 321 interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_LEVEL_LOW>;
303 }; 322 };
304 323
305 tps62361 { 324 tps62361@60 {
306 compatible = "ti,tps62361"; 325 compatible = "ti,tps62361";
307 reg = <0x60>; 326 reg = <0x60>;
308 327
@@ -326,13 +345,7 @@
326 }; 345 };
327 }; 346 };
328 347
329 ahub { 348 pmc@7000e400 {
330 i2s@70080400 {
331 status = "okay";
332 };
333 };
334
335 pmc {
336 status = "okay"; 349 status = "okay";
337 nvidia,invert-interrupt; 350 nvidia,invert-interrupt;
338 nvidia,suspend-mode = <1>; 351 nvidia,suspend-mode = <1>;
@@ -344,6 +357,12 @@
344 nvidia,sys-clock-req-active-high; 357 nvidia,sys-clock-req-active-high;
345 }; 358 };
346 359
360 ahub@70080000 {
361 i2s@70080400 {
362 status = "okay";
363 };
364 };
365
347 sdhci@78000000 { 366 sdhci@78000000 {
348 status = "okay"; 367 status = "okay";
349 cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>; 368 cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
@@ -367,12 +386,23 @@
367 status = "okay"; 386 status = "okay";
368 }; 387 };
369 388
389 backlight: backlight {
390 compatible = "pwm-backlight";
391
392 enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
393 power-supply = <&vdd_bl_reg>;
394 pwms = <&pwm 0 5000000>;
395
396 brightness-levels = <0 4 8 16 32 64 128 255>;
397 default-brightness-level = <6>;
398 };
399
370 clocks { 400 clocks {
371 compatible = "simple-bus"; 401 compatible = "simple-bus";
372 #address-cells = <1>; 402 #address-cells = <1>;
373 #size-cells = <0>; 403 #size-cells = <0>;
374 404
375 clk32k_in: clock { 405 clk32k_in: clock@0 {
376 compatible = "fixed-clock"; 406 compatible = "fixed-clock";
377 reg=<0>; 407 reg=<0>;
378 #clock-cells = <0>; 408 #clock-cells = <0>;
@@ -380,6 +410,16 @@
380 }; 410 };
381 }; 411 };
382 412
413 panel: panel {
414 compatible = "chunghwa,claa101wb01", "simple-panel";
415 ddc-i2c-bus = <&panelddc>;
416
417 power-supply = <&vdd_pnl1_reg>;
418 enable-gpios = <&gpio TEGRA_GPIO(L, 2) GPIO_ACTIVE_HIGH>;
419
420 backlight = <&backlight>;
421 };
422
383 regulators { 423 regulators {
384 compatible = "simple-bus"; 424 compatible = "simple-bus";
385 #address-cells = <1>; 425 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/tegra30.dtsi b/arch/arm/boot/dts/tegra30.dtsi
index 31259b09e7cc..ed8e7700b46d 100644
--- a/arch/arm/boot/dts/tegra30.dtsi
+++ b/arch/arm/boot/dts/tegra30.dtsi
@@ -1,5 +1,6 @@
1#include <dt-bindings/clock/tegra30-car.h> 1#include <dt-bindings/clock/tegra30-car.h>
2#include <dt-bindings/gpio/tegra-gpio.h> 2#include <dt-bindings/gpio/tegra-gpio.h>
3#include <dt-bindings/pinctrl/pinctrl-tegra.h>
3#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
4 5
5#include "skeleton.dtsi" 6#include "skeleton.dtsi"
@@ -16,7 +17,7 @@
16 serial4 = &uarte; 17 serial4 = &uarte;
17 }; 18 };
18 19
19 pcie-controller { 20 pcie-controller@00003000 {
20 compatible = "nvidia,tegra30-pcie"; 21 compatible = "nvidia,tegra30-pcie";
21 device_type = "pci"; 22 device_type = "pci";
22 reg = <0x00003000 0x00000800 /* PADS registers */ 23 reg = <0x00003000 0x00000800 /* PADS registers */
@@ -89,7 +90,7 @@
89 }; 90 };
90 }; 91 };
91 92
92 host1x { 93 host1x@50000000 {
93 compatible = "nvidia,tegra30-host1x", "simple-bus"; 94 compatible = "nvidia,tegra30-host1x", "simple-bus";
94 reg = <0x50000000 0x00024000>; 95 reg = <0x50000000 0x00024000>;
95 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */ 96 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */
@@ -103,7 +104,7 @@
103 104
104 ranges = <0x54000000 0x54000000 0x04000000>; 105 ranges = <0x54000000 0x54000000 0x04000000>;
105 106
106 mpe { 107 mpe@54040000 {
107 compatible = "nvidia,tegra30-mpe"; 108 compatible = "nvidia,tegra30-mpe";
108 reg = <0x54040000 0x00040000>; 109 reg = <0x54040000 0x00040000>;
109 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; 110 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
@@ -112,7 +113,7 @@
112 reset-names = "mpe"; 113 reset-names = "mpe";
113 }; 114 };
114 115
115 vi { 116 vi@54080000 {
116 compatible = "nvidia,tegra30-vi"; 117 compatible = "nvidia,tegra30-vi";
117 reg = <0x54080000 0x00040000>; 118 reg = <0x54080000 0x00040000>;
118 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 119 interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
@@ -121,7 +122,7 @@
121 reset-names = "vi"; 122 reset-names = "vi";
122 }; 123 };
123 124
124 epp { 125 epp@540c0000 {
125 compatible = "nvidia,tegra30-epp"; 126 compatible = "nvidia,tegra30-epp";
126 reg = <0x540c0000 0x00040000>; 127 reg = <0x540c0000 0x00040000>;
127 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>; 128 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
@@ -130,7 +131,7 @@
130 reset-names = "epp"; 131 reset-names = "epp";
131 }; 132 };
132 133
133 isp { 134 isp@54100000 {
134 compatible = "nvidia,tegra30-isp"; 135 compatible = "nvidia,tegra30-isp";
135 reg = <0x54100000 0x00040000>; 136 reg = <0x54100000 0x00040000>;
136 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 137 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
@@ -139,7 +140,7 @@
139 reset-names = "isp"; 140 reset-names = "isp";
140 }; 141 };
141 142
142 gr2d { 143 gr2d@54140000 {
143 compatible = "nvidia,tegra30-gr2d"; 144 compatible = "nvidia,tegra30-gr2d";
144 reg = <0x54140000 0x00040000>; 145 reg = <0x54140000 0x00040000>;
145 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; 146 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
@@ -148,7 +149,7 @@
148 clocks = <&tegra_car TEGRA30_CLK_GR2D>; 149 clocks = <&tegra_car TEGRA30_CLK_GR2D>;
149 }; 150 };
150 151
151 gr3d { 152 gr3d@54180000 {
152 compatible = "nvidia,tegra30-gr3d"; 153 compatible = "nvidia,tegra30-gr3d";
153 reg = <0x54180000 0x00040000>; 154 reg = <0x54180000 0x00040000>;
154 clocks = <&tegra_car TEGRA30_CLK_GR3D 155 clocks = <&tegra_car TEGRA30_CLK_GR3D
@@ -189,7 +190,7 @@
189 }; 190 };
190 }; 191 };
191 192
192 hdmi { 193 hdmi@54280000 {
193 compatible = "nvidia,tegra30-hdmi"; 194 compatible = "nvidia,tegra30-hdmi";
194 reg = <0x54280000 0x00040000>; 195 reg = <0x54280000 0x00040000>;
195 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>; 196 interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
@@ -201,7 +202,7 @@
201 status = "disabled"; 202 status = "disabled";
202 }; 203 };
203 204
204 tvo { 205 tvo@542c0000 {
205 compatible = "nvidia,tegra30-tvo"; 206 compatible = "nvidia,tegra30-tvo";
206 reg = <0x542c0000 0x00040000>; 207 reg = <0x542c0000 0x00040000>;
207 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; 208 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
@@ -209,7 +210,7 @@
209 status = "disabled"; 210 status = "disabled";
210 }; 211 };
211 212
212 dsi { 213 dsi@54300000 {
213 compatible = "nvidia,tegra30-dsi"; 214 compatible = "nvidia,tegra30-dsi";
214 reg = <0x54300000 0x00040000>; 215 reg = <0x54300000 0x00040000>;
215 clocks = <&tegra_car TEGRA30_CLK_DSIA>; 216 clocks = <&tegra_car TEGRA30_CLK_DSIA>;
@@ -227,7 +228,7 @@
227 clocks = <&tegra_car TEGRA30_CLK_TWD>; 228 clocks = <&tegra_car TEGRA30_CLK_TWD>;
228 }; 229 };
229 230
230 intc: interrupt-controller { 231 intc: interrupt-controller@50041000 {
231 compatible = "arm,cortex-a9-gic"; 232 compatible = "arm,cortex-a9-gic";
232 reg = <0x50041000 0x1000 233 reg = <0x50041000 0x1000
233 0x50040100 0x0100>; 234 0x50040100 0x0100>;
@@ -235,7 +236,7 @@
235 #interrupt-cells = <3>; 236 #interrupt-cells = <3>;
236 }; 237 };
237 238
238 cache-controller { 239 cache-controller@50043000 {
239 compatible = "arm,pl310-cache"; 240 compatible = "arm,pl310-cache";
240 reg = <0x50043000 0x1000>; 241 reg = <0x50043000 0x1000>;
241 arm,data-latency = <6 6 2>; 242 arm,data-latency = <6 6 2>;
@@ -256,14 +257,14 @@
256 clocks = <&tegra_car TEGRA30_CLK_TIMER>; 257 clocks = <&tegra_car TEGRA30_CLK_TIMER>;
257 }; 258 };
258 259
259 tegra_car: clock { 260 tegra_car: clock@60006000 {
260 compatible = "nvidia,tegra30-car"; 261 compatible = "nvidia,tegra30-car";
261 reg = <0x60006000 0x1000>; 262 reg = <0x60006000 0x1000>;
262 #clock-cells = <1>; 263 #clock-cells = <1>;
263 #reset-cells = <1>; 264 #reset-cells = <1>;
264 }; 265 };
265 266
266 apbdma: dma { 267 apbdma: dma@6000a000 {
267 compatible = "nvidia,tegra30-apbdma", "nvidia,tegra20-apbdma"; 268 compatible = "nvidia,tegra30-apbdma", "nvidia,tegra20-apbdma";
268 reg = <0x6000a000 0x1400>; 269 reg = <0x6000a000 0x1400>;
269 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>, 270 interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
@@ -304,12 +305,12 @@
304 #dma-cells = <1>; 305 #dma-cells = <1>;
305 }; 306 };
306 307
307 ahb: ahb { 308 ahb: ahb@6000c004 {
308 compatible = "nvidia,tegra30-ahb"; 309 compatible = "nvidia,tegra30-ahb";
309 reg = <0x6000c004 0x14c>; /* AHB Arbitration + Gizmo Controller */ 310 reg = <0x6000c004 0x14c>; /* AHB Arbitration + Gizmo Controller */
310 }; 311 };
311 312
312 gpio: gpio { 313 gpio: gpio@6000d000 {
313 compatible = "nvidia,tegra30-gpio"; 314 compatible = "nvidia,tegra30-gpio";
314 reg = <0x6000d000 0x1000>; 315 reg = <0x6000d000 0x1000>;
315 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>, 316 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
@@ -326,7 +327,7 @@
326 interrupt-controller; 327 interrupt-controller;
327 }; 328 };
328 329
329 pinmux: pinmux { 330 pinmux: pinmux@70000868 {
330 compatible = "nvidia,tegra30-pinmux"; 331 compatible = "nvidia,tegra30-pinmux";
331 reg = <0x70000868 0xd4 /* Pad control registers */ 332 reg = <0x70000868 0xd4 /* Pad control registers */
332 0x70003000 0x3e4>; /* Mux registers */ 333 0x70003000 0x3e4>; /* Mux registers */
@@ -405,7 +406,7 @@
405 status = "disabled"; 406 status = "disabled";
406 }; 407 };
407 408
408 pwm: pwm { 409 pwm: pwm@7000a000 {
409 compatible = "nvidia,tegra30-pwm", "nvidia,tegra20-pwm"; 410 compatible = "nvidia,tegra30-pwm", "nvidia,tegra20-pwm";
410 reg = <0x7000a000 0x100>; 411 reg = <0x7000a000 0x100>;
411 #pwm-cells = <2>; 412 #pwm-cells = <2>;
@@ -415,7 +416,7 @@
415 status = "disabled"; 416 status = "disabled";
416 }; 417 };
417 418
418 rtc { 419 rtc@7000e000 {
419 compatible = "nvidia,tegra30-rtc", "nvidia,tegra20-rtc"; 420 compatible = "nvidia,tegra30-rtc", "nvidia,tegra20-rtc";
420 reg = <0x7000e000 0x100>; 421 reg = <0x7000e000 0x100>;
421 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; 422 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
@@ -586,7 +587,7 @@
586 status = "disabled"; 587 status = "disabled";
587 }; 588 };
588 589
589 kbc { 590 kbc@7000e200 {
590 compatible = "nvidia,tegra30-kbc", "nvidia,tegra20-kbc"; 591 compatible = "nvidia,tegra30-kbc", "nvidia,tegra20-kbc";
591 reg = <0x7000e200 0x100>; 592 reg = <0x7000e200 0x100>;
592 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 593 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
@@ -596,14 +597,14 @@
596 status = "disabled"; 597 status = "disabled";
597 }; 598 };
598 599
599 pmc { 600 pmc@7000e400 {
600 compatible = "nvidia,tegra30-pmc"; 601 compatible = "nvidia,tegra30-pmc";
601 reg = <0x7000e400 0x400>; 602 reg = <0x7000e400 0x400>;
602 clocks = <&tegra_car TEGRA30_CLK_PCLK>, <&clk32k_in>; 603 clocks = <&tegra_car TEGRA30_CLK_PCLK>, <&clk32k_in>;
603 clock-names = "pclk", "clk32k_in"; 604 clock-names = "pclk", "clk32k_in";
604 }; 605 };
605 606
606 memory-controller { 607 memory-controller@7000f000 {
607 compatible = "nvidia,tegra30-mc"; 608 compatible = "nvidia,tegra30-mc";
608 reg = <0x7000f000 0x010 609 reg = <0x7000f000 0x010
609 0x7000f03c 0x1b4 610 0x7000f03c 0x1b4
@@ -612,7 +613,7 @@
612 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 613 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
613 }; 614 };
614 615
615 iommu { 616 iommu@7000f010 {
616 compatible = "nvidia,tegra30-smmu"; 617 compatible = "nvidia,tegra30-smmu";
617 reg = <0x7000f010 0x02c 618 reg = <0x7000f010 0x02c
618 0x7000f1f0 0x010 619 0x7000f1f0 0x010
@@ -622,7 +623,7 @@
622 nvidia,ahb = <&ahb>; 623 nvidia,ahb = <&ahb>;
623 }; 624 };
624 625
625 ahub { 626 ahub@70080000 {
626 compatible = "nvidia,tegra30-ahub"; 627 compatible = "nvidia,tegra30-ahub";
627 reg = <0x70080000 0x200 628 reg = <0x70080000 0x200
628 0x70080200 0x100>; 629 0x70080200 0x100>;
@@ -784,7 +785,7 @@
784 compatible = "nvidia,tegra30-ehci", "usb-ehci"; 785 compatible = "nvidia,tegra30-ehci", "usb-ehci";
785 reg = <0x7d004000 0x4000>; 786 reg = <0x7d004000 0x4000>;
786 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 787 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
787 phy_type = "ulpi"; 788 phy_type = "utmi";
788 clocks = <&tegra_car TEGRA30_CLK_USB2>; 789 clocks = <&tegra_car TEGRA30_CLK_USB2>;
789 resets = <&tegra_car 58>; 790 resets = <&tegra_car 58>;
790 reset-names = "usb"; 791 reset-names = "usb";
@@ -794,12 +795,23 @@
794 795
795 phy2: usb-phy@7d004000 { 796 phy2: usb-phy@7d004000 {
796 compatible = "nvidia,tegra30-usb-phy"; 797 compatible = "nvidia,tegra30-usb-phy";
797 reg = <0x7d004000 0x4000>; 798 reg = <0x7d004000 0x4000 0x7d000000 0x4000>;
798 phy_type = "ulpi"; 799 phy_type = "utmi";
799 clocks = <&tegra_car TEGRA30_CLK_USB2>, 800 clocks = <&tegra_car TEGRA30_CLK_USB2>,
800 <&tegra_car TEGRA30_CLK_PLL_U>, 801 <&tegra_car TEGRA30_CLK_PLL_U>,
801 <&tegra_car TEGRA30_CLK_CDEV2>; 802 <&tegra_car TEGRA30_CLK_USBD>;
802 clock-names = "reg", "pll_u", "ulpi-link"; 803 clock-names = "reg", "pll_u", "utmi-pads";
804 nvidia,hssync-start-delay = <9>;
805 nvidia,idle-wait-delay = <17>;
806 nvidia,elastic-limit = <16>;
807 nvidia,term-range-adj = <6>;
808 nvidia,xcvr-setup = <51>;
809 nvidia.xcvr-setup-use-fuses;
810 nvidia,xcvr-lsfslew = <2>;
811 nvidia,xcvr-lsrslew = <2>;
812 nvidia,xcvr-hsslew = <32>;
813 nvidia,hssquelch-level = <2>;
814 nvidia,hsdiscon-level = <5>;
803 status = "disabled"; 815 status = "disabled";
804 }; 816 };
805 817
diff --git a/arch/arm/boot/dts/zynq-7000.dtsi b/arch/arm/boot/dts/zynq-7000.dtsi
index e7f73b2e4550..5d7681be0580 100644
--- a/arch/arm/boot/dts/zynq-7000.dtsi
+++ b/arch/arm/boot/dts/zynq-7000.dtsi
@@ -15,6 +15,25 @@
15/ { 15/ {
16 compatible = "xlnx,zynq-7000"; 16 compatible = "xlnx,zynq-7000";
17 17
18 cpus {
19 #address-cells = <1>;
20 #size-cells = <0>;
21
22 cpu@0 {
23 compatible = "arm,cortex-a9";
24 device_type = "cpu";
25 reg = <0>;
26 clocks = <&clkc 3>;
27 };
28
29 cpu@1 {
30 compatible = "arm,cortex-a9";
31 device_type = "cpu";
32 reg = <1>;
33 clocks = <&clkc 3>;
34 };
35 };
36
18 pmu { 37 pmu {
19 compatible = "arm,cortex-a9-pmu"; 38 compatible = "arm,cortex-a9-pmu";
20 interrupts = <0 5 4>, <0 6 4>; 39 interrupts = <0 5 4>, <0 6 4>;
@@ -65,6 +84,24 @@
65 interrupts = <0 50 4>; 84 interrupts = <0 50 4>;
66 }; 85 };
67 86
87 gem0: ethernet@e000b000 {
88 compatible = "cdns,gem";
89 reg = <0xe000b000 0x4000>;
90 status = "disabled";
91 interrupts = <0 22 4>;
92 clocks = <&clkc 30>, <&clkc 30>, <&clkc 13>;
93 clock-names = "pclk", "hclk", "tx_clk";
94 };
95
96 gem1: ethernet@e000c000 {
97 compatible = "cdns,gem";
98 reg = <0xe000c000 0x4000>;
99 status = "disabled";
100 interrupts = <0 45 4>;
101 clocks = <&clkc 31>, <&clkc 31>, <&clkc 14>;
102 clock-names = "pclk", "hclk", "tx_clk";
103 };
104
68 slcr: slcr@f8000000 { 105 slcr: slcr@f8000000 {
69 compatible = "xlnx,zynq-slcr"; 106 compatible = "xlnx,zynq-slcr";
70 reg = <0xF8000000 0x1000>; 107 reg = <0xF8000000 0x1000>;
@@ -106,7 +143,6 @@
106 compatible = "cdns,ttc"; 143 compatible = "cdns,ttc";
107 clocks = <&clkc 6>; 144 clocks = <&clkc 6>;
108 reg = <0xF8001000 0x1000>; 145 reg = <0xF8001000 0x1000>;
109 clock-ranges;
110 }; 146 };
111 147
112 ttc1: ttc1@f8002000 { 148 ttc1: ttc1@f8002000 {
@@ -115,7 +151,6 @@
115 compatible = "cdns,ttc"; 151 compatible = "cdns,ttc";
116 clocks = <&clkc 6>; 152 clocks = <&clkc 6>;
117 reg = <0xF8002000 0x1000>; 153 reg = <0xF8002000 0x1000>;
118 clock-ranges;
119 }; 154 };
120 scutimer: scutimer@f8f00600 { 155 scutimer: scutimer@f8f00600 {
121 interrupt-parent = <&intc>; 156 interrupt-parent = <&intc>;
diff --git a/arch/arm/boot/dts/zynq-zc702.dts b/arch/arm/boot/dts/zynq-zc702.dts
index 21aea99a067b..34d680a46b7e 100644
--- a/arch/arm/boot/dts/zynq-zc702.dts
+++ b/arch/arm/boot/dts/zynq-zc702.dts
@@ -29,6 +29,11 @@
29 29
30}; 30};
31 31
32&gem0 {
33 status = "okay";
34 phy-mode = "rgmii";
35};
36
32&uart1 { 37&uart1 {
33 status = "okay"; 38 status = "okay";
34}; 39};
diff --git a/arch/arm/boot/dts/zynq-zc706.dts b/arch/arm/boot/dts/zynq-zc706.dts
index 79009e0b74b9..b2835d5fc09a 100644
--- a/arch/arm/boot/dts/zynq-zc706.dts
+++ b/arch/arm/boot/dts/zynq-zc706.dts
@@ -30,6 +30,11 @@
30 30
31}; 31};
32 32
33&gem0 {
34 status = "okay";
35 phy-mode = "rgmii";
36};
37
33&uart1 { 38&uart1 {
34 status = "okay"; 39 status = "okay";
35}; 40};
diff --git a/arch/arm/boot/dts/zynq-zed.dts b/arch/arm/boot/dts/zynq-zed.dts
index d6acf2b1cdf4..2eda06889dfc 100644
--- a/arch/arm/boot/dts/zynq-zed.dts
+++ b/arch/arm/boot/dts/zynq-zed.dts
@@ -30,6 +30,11 @@
30 30
31}; 31};
32 32
33&gem0 {
34 status = "okay";
35 phy-mode = "rgmii";
36};
37
33&uart1 { 38&uart1 {
34 status = "okay"; 39 status = "okay";
35}; 40};
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index 473e21b87364..17c0fe627435 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -63,6 +63,9 @@
63 63
64/* Base address to the AP system controller */ 64/* Base address to the AP system controller */
65void __iomem *ap_syscon_base; 65void __iomem *ap_syscon_base;
66/* Base address to the external bus interface */
67static void __iomem *ebi_base;
68
66 69
67/* 70/*
68 * All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx 71 * All IO addresses are mapped onto VA 0xFFFx.xxxx, where x.xxxx
@@ -72,15 +75,11 @@ void __iomem *ap_syscon_base;
72 * just for now). 75 * just for now).
73 */ 76 */
74#define VA_IC_BASE __io_address(INTEGRATOR_IC_BASE) 77#define VA_IC_BASE __io_address(INTEGRATOR_IC_BASE)
75#define VA_EBI_BASE __io_address(INTEGRATOR_EBI_BASE)
76#define VA_CMIC_BASE __io_address(INTEGRATOR_HDR_IC)
77 78
78/* 79/*
79 * Logical Physical 80 * Logical Physical
80 * ef000000 Cache flush 81 * ef000000 Cache flush
81 * f1000000 10000000 Core module registers
82 * f1100000 11000000 System controller registers 82 * f1100000 11000000 System controller registers
83 * f1200000 12000000 EBI registers
84 * f1300000 13000000 Counter/Timer 83 * f1300000 13000000 Counter/Timer
85 * f1400000 14000000 Interrupt controller 84 * f1400000 14000000 Interrupt controller
86 * f1600000 16000000 UART 0 85 * f1600000 16000000 UART 0
@@ -91,16 +90,6 @@ void __iomem *ap_syscon_base;
91 90
92static struct map_desc ap_io_desc[] __initdata __maybe_unused = { 91static struct map_desc ap_io_desc[] __initdata __maybe_unused = {
93 { 92 {
94 .virtual = IO_ADDRESS(INTEGRATOR_HDR_BASE),
95 .pfn = __phys_to_pfn(INTEGRATOR_HDR_BASE),
96 .length = SZ_4K,
97 .type = MT_DEVICE
98 }, {
99 .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE),
100 .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE),
101 .length = SZ_4K,
102 .type = MT_DEVICE
103 }, {
104 .virtual = IO_ADDRESS(INTEGRATOR_CT_BASE), 93 .virtual = IO_ADDRESS(INTEGRATOR_CT_BASE),
105 .pfn = __phys_to_pfn(INTEGRATOR_CT_BASE), 94 .pfn = __phys_to_pfn(INTEGRATOR_CT_BASE),
106 .length = SZ_4K, 95 .length = SZ_4K,
@@ -174,9 +163,6 @@ device_initcall(irq_syscore_init);
174/* 163/*
175 * Flash handling. 164 * Flash handling.
176 */ 165 */
177#define EBI_CSR1 (VA_EBI_BASE + INTEGRATOR_EBI_CSR1_OFFSET)
178#define EBI_LOCK (VA_EBI_BASE + INTEGRATOR_EBI_LOCK_OFFSET)
179
180static int ap_flash_init(struct platform_device *dev) 166static int ap_flash_init(struct platform_device *dev)
181{ 167{
182 u32 tmp; 168 u32 tmp;
@@ -184,13 +170,15 @@ static int ap_flash_init(struct platform_device *dev)
184 writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, 170 writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP,
185 ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET); 171 ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET);
186 172
187 tmp = readl(EBI_CSR1) | INTEGRATOR_EBI_WRITE_ENABLE; 173 tmp = readl(ebi_base + INTEGRATOR_EBI_CSR1_OFFSET) |
188 writel(tmp, EBI_CSR1); 174 INTEGRATOR_EBI_WRITE_ENABLE;
175 writel(tmp, ebi_base + INTEGRATOR_EBI_CSR1_OFFSET);
189 176
190 if (!(readl(EBI_CSR1) & INTEGRATOR_EBI_WRITE_ENABLE)) { 177 if (!(readl(ebi_base + INTEGRATOR_EBI_CSR1_OFFSET)
191 writel(0xa05f, EBI_LOCK); 178 & INTEGRATOR_EBI_WRITE_ENABLE)) {
192 writel(tmp, EBI_CSR1); 179 writel(0xa05f, ebi_base + INTEGRATOR_EBI_LOCK_OFFSET);
193 writel(0, EBI_LOCK); 180 writel(tmp, ebi_base + INTEGRATOR_EBI_CSR1_OFFSET);
181 writel(0, ebi_base + INTEGRATOR_EBI_LOCK_OFFSET);
194 } 182 }
195 return 0; 183 return 0;
196} 184}
@@ -202,13 +190,15 @@ static void ap_flash_exit(struct platform_device *dev)
202 writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP, 190 writel(INTEGRATOR_SC_CTRL_nFLVPPEN | INTEGRATOR_SC_CTRL_nFLWP,
203 ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET); 191 ap_syscon_base + INTEGRATOR_SC_CTRLC_OFFSET);
204 192
205 tmp = readl(EBI_CSR1) & ~INTEGRATOR_EBI_WRITE_ENABLE; 193 tmp = readl(ebi_base + INTEGRATOR_EBI_CSR1_OFFSET) &
206 writel(tmp, EBI_CSR1); 194 ~INTEGRATOR_EBI_WRITE_ENABLE;
195 writel(tmp, ebi_base + INTEGRATOR_EBI_CSR1_OFFSET);
207 196
208 if (readl(EBI_CSR1) & INTEGRATOR_EBI_WRITE_ENABLE) { 197 if (readl(ebi_base + INTEGRATOR_EBI_CSR1_OFFSET) &
209 writel(0xa05f, EBI_LOCK); 198 INTEGRATOR_EBI_WRITE_ENABLE) {
210 writel(tmp, EBI_CSR1); 199 writel(0xa05f, ebi_base + INTEGRATOR_EBI_LOCK_OFFSET);
211 writel(0, EBI_LOCK); 200 writel(tmp, ebi_base + INTEGRATOR_EBI_CSR1_OFFSET);
201 writel(0, ebi_base + INTEGRATOR_EBI_LOCK_OFFSET);
212 } 202 }
213} 203}
214 204
@@ -475,11 +465,17 @@ static const struct of_device_id ap_syscon_match[] = {
475 { }, 465 { },
476}; 466};
477 467
468static const struct of_device_id ebi_match[] = {
469 { .compatible = "arm,external-bus-interface"},
470 { },
471};
472
478static void __init ap_init_of(void) 473static void __init ap_init_of(void)
479{ 474{
480 unsigned long sc_dec; 475 unsigned long sc_dec;
481 struct device_node *root; 476 struct device_node *root;
482 struct device_node *syscon; 477 struct device_node *syscon;
478 struct device_node *ebi;
483 struct device *parent; 479 struct device *parent;
484 struct soc_device *soc_dev; 480 struct soc_device *soc_dev;
485 struct soc_device_attribute *soc_dev_attr; 481 struct soc_device_attribute *soc_dev_attr;
@@ -495,10 +491,16 @@ static void __init ap_init_of(void)
495 syscon = of_find_matching_node(root, ap_syscon_match); 491 syscon = of_find_matching_node(root, ap_syscon_match);
496 if (!syscon) 492 if (!syscon)
497 return; 493 return;
494 ebi = of_find_matching_node(root, ebi_match);
495 if (!ebi)
496 return;
498 497
499 ap_syscon_base = of_iomap(syscon, 0); 498 ap_syscon_base = of_iomap(syscon, 0);
500 if (!ap_syscon_base) 499 if (!ap_syscon_base)
501 return; 500 return;
501 ebi_base = of_iomap(ebi, 0);
502 if (!ebi_base)
503 return;
502 504
503 ap_sc_id = readl(ap_syscon_base); 505 ap_sc_id = readl(ap_syscon_base);
504 506
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 4fc0a195de01..5e84149d1790 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -64,9 +64,6 @@ static void __iomem *intcp_con_base;
64 64
65/* 65/*
66 * Logical Physical 66 * Logical Physical
67 * f1000000 10000000 Core module registers
68 * f1100000 11000000 System controller registers
69 * f1200000 12000000 EBI registers
70 * f1300000 13000000 Counter/Timer 67 * f1300000 13000000 Counter/Timer
71 * f1400000 14000000 Interrupt controller 68 * f1400000 14000000 Interrupt controller
72 * f1600000 16000000 UART 0 69 * f1600000 16000000 UART 0
@@ -74,21 +71,10 @@ static void __iomem *intcp_con_base;
74 * f1a00000 1a000000 Debug LEDs 71 * f1a00000 1a000000 Debug LEDs
75 * fc900000 c9000000 GPIO 72 * fc900000 c9000000 GPIO
76 * fca00000 ca000000 SIC 73 * fca00000 ca000000 SIC
77 * fcb00000 cb000000 CP system control
78 */ 74 */
79 75
80static struct map_desc intcp_io_desc[] __initdata __maybe_unused = { 76static struct map_desc intcp_io_desc[] __initdata __maybe_unused = {
81 { 77 {
82 .virtual = IO_ADDRESS(INTEGRATOR_HDR_BASE),
83 .pfn = __phys_to_pfn(INTEGRATOR_HDR_BASE),
84 .length = SZ_4K,
85 .type = MT_DEVICE
86 }, {
87 .virtual = IO_ADDRESS(INTEGRATOR_EBI_BASE),
88 .pfn = __phys_to_pfn(INTEGRATOR_EBI_BASE),
89 .length = SZ_4K,
90 .type = MT_DEVICE
91 }, {
92 .virtual = IO_ADDRESS(INTEGRATOR_CT_BASE), 78 .virtual = IO_ADDRESS(INTEGRATOR_CT_BASE),
93 .pfn = __phys_to_pfn(INTEGRATOR_CT_BASE), 79 .pfn = __phys_to_pfn(INTEGRATOR_CT_BASE),
94 .length = SZ_4K, 80 .length = SZ_4K,
diff --git a/arch/arm/mach-nomadik/cpu-8815.c b/arch/arm/mach-nomadik/cpu-8815.c
index cce2c9dfb5d1..4a1065e41e9c 100644
--- a/arch/arm/mach-nomadik/cpu-8815.c
+++ b/arch/arm/mach-nomadik/cpu-8815.c
@@ -110,38 +110,6 @@ static void cpu8815_restart(enum reboot_mode mode, const char *cmd)
110} 110}
111 111
112/* 112/*
113 * The SMSC911x IRQ is connected to a GPIO pin, but the driver expects
114 * to simply request an IRQ passed as a resource. So the GPIO pin needs
115 * to be requested by this hog and set as input.
116 */
117static int __init cpu8815_eth_init(void)
118{
119 struct device_node *eth;
120 int gpio, irq, err;
121
122 eth = of_find_node_by_path("/usb-s8815/ethernet-gpio");
123 if (!eth) {
124 pr_info("could not find any ethernet GPIO\n");
125 return 0;
126 }
127 gpio = of_get_gpio(eth, 0);
128 err = gpio_request(gpio, "eth_irq");
129 if (err) {
130 pr_info("failed to request ethernet GPIO\n");
131 return -ENODEV;
132 }
133 err = gpio_direction_input(gpio);
134 if (err) {
135 pr_info("failed to set ethernet GPIO as input\n");
136 return -ENODEV;
137 }
138 irq = gpio_to_irq(gpio);
139 pr_info("enabled USB-S8815 ethernet GPIO %d, IRQ %d\n", gpio, irq);
140 return 0;
141}
142device_initcall(cpu8815_eth_init);
143
144/*
145 * This GPIO pin turns on a line that is used to detect card insertion 113 * This GPIO pin turns on a line that is used to detect card insertion
146 * on this board. 114 * on this board.
147 */ 115 */
diff --git a/arch/arm/mach-shmobile/board-bockw-reference.c b/arch/arm/mach-shmobile/board-bockw-reference.c
index 1687df9b267f..875cf3f3f503 100644
--- a/arch/arm/mach-shmobile/board-bockw-reference.c
+++ b/arch/arm/mach-shmobile/board-bockw-reference.c
@@ -27,14 +27,6 @@
27 * see board-bock.c for checking detail of dip-switch 27 * see board-bock.c for checking detail of dip-switch
28 */ 28 */
29 29
30static const struct pinctrl_map bockw_pinctrl_map[] = {
31 /* SCIF0 */
32 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
33 "scif0_data_a", "scif0"),
34 PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.0", "pfc-r8a7778",
35 "scif0_ctrl", "scif0"),
36};
37
38#define FPGA 0x18200000 30#define FPGA 0x18200000
39#define IRQ0MR 0x30 31#define IRQ0MR 0x30
40#define COMCTLR 0x101c 32#define COMCTLR 0x101c
@@ -44,10 +36,6 @@ static void __init bockw_init(void)
44 36
45 r8a7778_clock_init(); 37 r8a7778_clock_init();
46 r8a7778_init_irq_extpin_dt(1); 38 r8a7778_init_irq_extpin_dt(1);
47
48 pinctrl_register_mappings(bockw_pinctrl_map,
49 ARRAY_SIZE(bockw_pinctrl_map));
50 r8a7778_pinmux_init();
51 r8a7778_add_dt_devices(); 39 r8a7778_add_dt_devices();
52 40
53 fpga = ioremap_nocache(FPGA, SZ_1M); 41 fpga = ioremap_nocache(FPGA, SZ_1M);
diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c
index 4f9e3ec42ddc..d832a4477b4b 100644
--- a/arch/arm/mach-shmobile/board-marzen.c
+++ b/arch/arm/mach-shmobile/board-marzen.c
@@ -347,8 +347,6 @@ static const struct pinctrl_map marzen_pinctrl_map[] = {
347 "sdhi0_ctrl", "sdhi0"), 347 "sdhi0_ctrl", "sdhi0"),
348 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779", 348 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
349 "sdhi0_cd", "sdhi0"), 349 "sdhi0_cd", "sdhi0"),
350 PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7779",
351 "sdhi0_wp", "sdhi0"),
352 /* SMSC */ 350 /* SMSC */
353 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a7779", 351 PIN_MAP_MUX_GROUP_DEFAULT("smsc911x", "pfc-r8a7779",
354 "intc_irq1_b", "intc"), 352 "intc_irq1_b", "intc"),
diff --git a/arch/arm/mach-shmobile/clock-r8a73a4.c b/arch/arm/mach-shmobile/clock-r8a73a4.c
index 571409b611d3..7348d58f500e 100644
--- a/arch/arm/mach-shmobile/clock-r8a73a4.c
+++ b/arch/arm/mach-shmobile/clock-r8a73a4.c
@@ -584,15 +584,15 @@ static struct clk_lookup lookups[] = {
584 CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]), 584 CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
585 CLKDEV_DEV_ID("e6520000.i2c", &mstp_clks[MSTP300]), 585 CLKDEV_DEV_ID("e6520000.i2c", &mstp_clks[MSTP300]),
586 CLKDEV_DEV_ID("sh_mmcif.1", &mstp_clks[MSTP305]), 586 CLKDEV_DEV_ID("sh_mmcif.1", &mstp_clks[MSTP305]),
587 CLKDEV_DEV_ID("ee220000.mmcif", &mstp_clks[MSTP305]), 587 CLKDEV_DEV_ID("ee220000.mmc", &mstp_clks[MSTP305]),
588 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP312]), 588 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP312]),
589 CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP312]), 589 CLKDEV_DEV_ID("ee140000.sd", &mstp_clks[MSTP312]),
590 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), 590 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]),
591 CLKDEV_DEV_ID("ee120000.sdhi", &mstp_clks[MSTP313]), 591 CLKDEV_DEV_ID("ee120000.sd", &mstp_clks[MSTP313]),
592 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), 592 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]),
593 CLKDEV_DEV_ID("ee100000.sdhi", &mstp_clks[MSTP314]), 593 CLKDEV_DEV_ID("ee100000.sd", &mstp_clks[MSTP314]),
594 CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP315]), 594 CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP315]),
595 CLKDEV_DEV_ID("ee200000.mmcif", &mstp_clks[MSTP315]), 595 CLKDEV_DEV_ID("ee200000.mmc", &mstp_clks[MSTP315]),
596 CLKDEV_DEV_ID("e6550000.i2c", &mstp_clks[MSTP316]), 596 CLKDEV_DEV_ID("e6550000.i2c", &mstp_clks[MSTP316]),
597 CLKDEV_DEV_ID("e6560000.i2c", &mstp_clks[MSTP317]), 597 CLKDEV_DEV_ID("e6560000.i2c", &mstp_clks[MSTP317]),
598 CLKDEV_DEV_ID("e6500000.i2c", &mstp_clks[MSTP318]), 598 CLKDEV_DEV_ID("e6500000.i2c", &mstp_clks[MSTP318]),
diff --git a/arch/arm/mach-shmobile/clock-r8a7740.c b/arch/arm/mach-shmobile/clock-r8a7740.c
index e9a3c6401845..dd989f93498f 100644
--- a/arch/arm/mach-shmobile/clock-r8a7740.c
+++ b/arch/arm/mach-shmobile/clock-r8a7740.c
@@ -590,18 +590,18 @@ static struct clk_lookup lookups[] = {
590 CLKDEV_DEV_ID("e6c20000.i2c", &mstp_clks[MSTP323]), 590 CLKDEV_DEV_ID("e6c20000.i2c", &mstp_clks[MSTP323]),
591 CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP320]), 591 CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP320]),
592 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), 592 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]),
593 CLKDEV_DEV_ID("e6850000.sdhi", &mstp_clks[MSTP314]), 593 CLKDEV_DEV_ID("e6850000.sd", &mstp_clks[MSTP314]),
594 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), 594 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]),
595 CLKDEV_DEV_ID("e6860000.sdhi", &mstp_clks[MSTP313]), 595 CLKDEV_DEV_ID("e6860000.sd", &mstp_clks[MSTP313]),
596 CLKDEV_DEV_ID("sh_mmcif", &mstp_clks[MSTP312]), 596 CLKDEV_DEV_ID("sh_mmcif", &mstp_clks[MSTP312]),
597 CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), 597 CLKDEV_DEV_ID("e6bd0000.mmc", &mstp_clks[MSTP312]),
598 CLKDEV_DEV_ID("r8a7740-gether", &mstp_clks[MSTP309]), 598 CLKDEV_DEV_ID("r8a7740-gether", &mstp_clks[MSTP309]),
599 CLKDEV_DEV_ID("e9a00000.sh-eth", &mstp_clks[MSTP309]), 599 CLKDEV_DEV_ID("e9a00000.sh-eth", &mstp_clks[MSTP309]),
600 CLKDEV_DEV_ID("renesas-tpu-pwm", &mstp_clks[MSTP304]), 600 CLKDEV_DEV_ID("renesas-tpu-pwm", &mstp_clks[MSTP304]),
601 CLKDEV_DEV_ID("e6600000.pwm", &mstp_clks[MSTP304]), 601 CLKDEV_DEV_ID("e6600000.pwm", &mstp_clks[MSTP304]),
602 602
603 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP415]), 603 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP415]),
604 CLKDEV_DEV_ID("e6870000.sdhi", &mstp_clks[MSTP415]), 604 CLKDEV_DEV_ID("e6870000.sd", &mstp_clks[MSTP415]),
605 605
606 /* ICK */ 606 /* ICK */
607 CLKDEV_ICK_ID("host", "renesas_usbhs", &mstp_clks[MSTP416]), 607 CLKDEV_ICK_ID("host", "renesas_usbhs", &mstp_clks[MSTP416]),
diff --git a/arch/arm/mach-shmobile/clock-r8a7778.c b/arch/arm/mach-shmobile/clock-r8a7778.c
index dfb0fff4d24c..9783945f8bc7 100644
--- a/arch/arm/mach-shmobile/clock-r8a7778.c
+++ b/arch/arm/mach-shmobile/clock-r8a7778.c
@@ -184,13 +184,13 @@ static struct clk_lookup lookups[] = {
184 184
185 /* MSTP32 clocks */ 185 /* MSTP32 clocks */
186 CLKDEV_DEV_ID("sh_mmcif", &mstp_clks[MSTP331]), /* MMC */ 186 CLKDEV_DEV_ID("sh_mmcif", &mstp_clks[MSTP331]), /* MMC */
187 CLKDEV_DEV_ID("ffe4e000.mmcif", &mstp_clks[MSTP331]), /* MMC */ 187 CLKDEV_DEV_ID("ffe4e000.mmc", &mstp_clks[MSTP331]), /* MMC */
188 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP323]), /* SDHI0 */ 188 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP323]), /* SDHI0 */
189 CLKDEV_DEV_ID("ffe4c000.sdhi", &mstp_clks[MSTP323]), /* SDHI0 */ 189 CLKDEV_DEV_ID("ffe4c000.sd", &mstp_clks[MSTP323]), /* SDHI0 */
190 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */ 190 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */
191 CLKDEV_DEV_ID("ffe4d000.sdhi", &mstp_clks[MSTP322]), /* SDHI1 */ 191 CLKDEV_DEV_ID("ffe4d000.sd", &mstp_clks[MSTP322]), /* SDHI1 */
192 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */ 192 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */
193 CLKDEV_DEV_ID("ffe4f000.sdhi", &mstp_clks[MSTP321]), /* SDHI2 */ 193 CLKDEV_DEV_ID("ffe4f000.sd", &mstp_clks[MSTP321]), /* SDHI2 */
194 CLKDEV_DEV_ID("r8a777x-ether", &mstp_clks[MSTP114]), /* Ether */ 194 CLKDEV_DEV_ID("r8a777x-ether", &mstp_clks[MSTP114]), /* Ether */
195 CLKDEV_DEV_ID("r8a7778-vin.0", &mstp_clks[MSTP110]), /* VIN0 */ 195 CLKDEV_DEV_ID("r8a7778-vin.0", &mstp_clks[MSTP110]), /* VIN0 */
196 CLKDEV_DEV_ID("r8a7778-vin.1", &mstp_clks[MSTP109]), /* VIN1 */ 196 CLKDEV_DEV_ID("r8a7778-vin.1", &mstp_clks[MSTP109]), /* VIN1 */
diff --git a/arch/arm/mach-shmobile/clock-r8a7779.c b/arch/arm/mach-shmobile/clock-r8a7779.c
index b545c8dbb818..f1fb89b76786 100644
--- a/arch/arm/mach-shmobile/clock-r8a7779.c
+++ b/arch/arm/mach-shmobile/clock-r8a7779.c
@@ -204,13 +204,13 @@ static struct clk_lookup lookups[] = {
204 CLKDEV_DEV_ID("sh-hspi.2", &mstp_clks[MSTP007]), /* HSPI2 */ 204 CLKDEV_DEV_ID("sh-hspi.2", &mstp_clks[MSTP007]), /* HSPI2 */
205 CLKDEV_DEV_ID("fffc6000.spi", &mstp_clks[MSTP007]), /* HSPI2 */ 205 CLKDEV_DEV_ID("fffc6000.spi", &mstp_clks[MSTP007]), /* HSPI2 */
206 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP323]), /* SDHI0 */ 206 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP323]), /* SDHI0 */
207 CLKDEV_DEV_ID("ffe4c000.sdhi", &mstp_clks[MSTP323]), /* SDHI0 */ 207 CLKDEV_DEV_ID("ffe4c000.sd", &mstp_clks[MSTP323]), /* SDHI0 */
208 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */ 208 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */
209 CLKDEV_DEV_ID("ffe4d000.sdhi", &mstp_clks[MSTP322]), /* SDHI1 */ 209 CLKDEV_DEV_ID("ffe4d000.sd", &mstp_clks[MSTP322]), /* SDHI1 */
210 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */ 210 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */
211 CLKDEV_DEV_ID("ffe4e000.sdhi", &mstp_clks[MSTP321]), /* SDHI2 */ 211 CLKDEV_DEV_ID("ffe4e000.sd", &mstp_clks[MSTP321]), /* SDHI2 */
212 CLKDEV_DEV_ID("sh_mobile_sdhi.3", &mstp_clks[MSTP320]), /* SDHI3 */ 212 CLKDEV_DEV_ID("sh_mobile_sdhi.3", &mstp_clks[MSTP320]), /* SDHI3 */
213 CLKDEV_DEV_ID("ffe4f000.sdhi", &mstp_clks[MSTP320]), /* SDHI3 */ 213 CLKDEV_DEV_ID("ffe4f000.sd", &mstp_clks[MSTP320]), /* SDHI3 */
214 CLKDEV_DEV_ID("rcar-du-r8a7779", &mstp_clks[MSTP103]), /* DU */ 214 CLKDEV_DEV_ID("rcar-du-r8a7779", &mstp_clks[MSTP103]), /* DU */
215}; 215};
216 216
diff --git a/arch/arm/mach-shmobile/clock-r8a7790.c b/arch/arm/mach-shmobile/clock-r8a7790.c
index 30552448b056..f44987a92ad4 100644
--- a/arch/arm/mach-shmobile/clock-r8a7790.c
+++ b/arch/arm/mach-shmobile/clock-r8a7790.c
@@ -302,17 +302,17 @@ static struct clk_lookup lookups[] = {
302 CLKDEV_DEV_ID("r8a7790-ether", &mstp_clks[MSTP813]), 302 CLKDEV_DEV_ID("r8a7790-ether", &mstp_clks[MSTP813]),
303 CLKDEV_DEV_ID("e61f0000.thermal", &mstp_clks[MSTP522]), 303 CLKDEV_DEV_ID("e61f0000.thermal", &mstp_clks[MSTP522]),
304 CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]), 304 CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
305 CLKDEV_DEV_ID("ee200000.mmcif", &mstp_clks[MSTP315]), 305 CLKDEV_DEV_ID("ee200000.mmc", &mstp_clks[MSTP315]),
306 CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP315]), 306 CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP315]),
307 CLKDEV_DEV_ID("ee100000.sdhi", &mstp_clks[MSTP314]), 307 CLKDEV_DEV_ID("ee100000.sd", &mstp_clks[MSTP314]),
308 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), 308 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]),
309 CLKDEV_DEV_ID("ee120000.sdhi", &mstp_clks[MSTP313]), 309 CLKDEV_DEV_ID("ee120000.sd", &mstp_clks[MSTP313]),
310 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), 310 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]),
311 CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP312]), 311 CLKDEV_DEV_ID("ee140000.sd", &mstp_clks[MSTP312]),
312 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP312]), 312 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP312]),
313 CLKDEV_DEV_ID("ee160000.sdhi", &mstp_clks[MSTP311]), 313 CLKDEV_DEV_ID("ee160000.sd", &mstp_clks[MSTP311]),
314 CLKDEV_DEV_ID("sh_mobile_sdhi.3", &mstp_clks[MSTP311]), 314 CLKDEV_DEV_ID("sh_mobile_sdhi.3", &mstp_clks[MSTP311]),
315 CLKDEV_DEV_ID("ee220000.mmcif", &mstp_clks[MSTP305]), 315 CLKDEV_DEV_ID("ee220000.mmc", &mstp_clks[MSTP305]),
316 CLKDEV_DEV_ID("sh_mmcif.1", &mstp_clks[MSTP305]), 316 CLKDEV_DEV_ID("sh_mmcif.1", &mstp_clks[MSTP305]),
317 CLKDEV_DEV_ID("sh_cmt.0", &mstp_clks[MSTP124]), 317 CLKDEV_DEV_ID("sh_cmt.0", &mstp_clks[MSTP124]),
318 CLKDEV_DEV_ID("qspi.0", &mstp_clks[MSTP917]), 318 CLKDEV_DEV_ID("qspi.0", &mstp_clks[MSTP917]),
diff --git a/arch/arm/mach-shmobile/clock-sh73a0.c b/arch/arm/mach-shmobile/clock-sh73a0.c
index 87e349ddba7c..23edf8360c27 100644
--- a/arch/arm/mach-shmobile/clock-sh73a0.c
+++ b/arch/arm/mach-shmobile/clock-sh73a0.c
@@ -658,13 +658,13 @@ static struct clk_lookup lookups[] = {
658 CLKDEV_DEV_ID("e6822000.i2c", &mstp_clks[MSTP323]), /* I2C1 */ 658 CLKDEV_DEV_ID("e6822000.i2c", &mstp_clks[MSTP323]), /* I2C1 */
659 CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP322]), /* USB */ 659 CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP322]), /* USB */
660 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), /* SDHI0 */ 660 CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), /* SDHI0 */
661 CLKDEV_DEV_ID("ee100000.sdhi", &mstp_clks[MSTP314]), /* SDHI0 */ 661 CLKDEV_DEV_ID("ee100000.sd", &mstp_clks[MSTP314]), /* SDHI0 */
662 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), /* SDHI1 */ 662 CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP313]), /* SDHI1 */
663 CLKDEV_DEV_ID("ee120000.sdhi", &mstp_clks[MSTP313]), /* SDHI1 */ 663 CLKDEV_DEV_ID("ee120000.sd", &mstp_clks[MSTP313]), /* SDHI1 */
664 CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP312]), /* MMCIF0 */ 664 CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP312]), /* MMCIF0 */
665 CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), /* MMCIF0 */ 665 CLKDEV_DEV_ID("e6bd0000.mmc", &mstp_clks[MSTP312]), /* MMCIF0 */
666 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */ 666 CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */
667 CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP311]), /* SDHI2 */ 667 CLKDEV_DEV_ID("ee140000.sd", &mstp_clks[MSTP311]), /* SDHI2 */
668 CLKDEV_DEV_ID("renesas-tpu-pwm.0", &mstp_clks[MSTP304]), /* TPU0 */ 668 CLKDEV_DEV_ID("renesas-tpu-pwm.0", &mstp_clks[MSTP304]), /* TPU0 */
669 CLKDEV_DEV_ID("renesas-tpu-pwm.1", &mstp_clks[MSTP303]), /* TPU1 */ 669 CLKDEV_DEV_ID("renesas-tpu-pwm.1", &mstp_clks[MSTP303]), /* TPU1 */
670 CLKDEV_DEV_ID("renesas-tpu-pwm.2", &mstp_clks[MSTP302]), /* TPU2 */ 670 CLKDEV_DEV_ID("renesas-tpu-pwm.2", &mstp_clks[MSTP302]), /* TPU2 */
diff --git a/arch/arm/mach-ux500/Makefile b/arch/arm/mach-ux500/Makefile
index 616b96e86ad4..d05ba759da30 100644
--- a/arch/arm/mach-ux500/Makefile
+++ b/arch/arm/mach-ux500/Makefile
@@ -2,10 +2,10 @@
2# Makefile for the linux kernel, U8500 machine. 2# Makefile for the linux kernel, U8500 machine.
3# 3#
4 4
5obj-y := cpu.o devices.o id.o timer.o pm.o 5obj-y := cpu.o id.o timer.o pm.o
6obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o 6obj-$(CONFIG_CACHE_L2X0) += cache-l2x0.o
7obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o 7obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o
8obj-$(CONFIG_MACH_MOP500) += board-mop500.o board-mop500-sdi.o \ 8obj-$(CONFIG_MACH_MOP500) += board-mop500-sdi.o \
9 board-mop500-regulators.o \ 9 board-mop500-regulators.o \
10 board-mop500-pins.o \ 10 board-mop500-pins.o \
11 board-mop500-audio.o 11 board-mop500-audio.o
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c
index 43d6cb8c381d..9309ad4cbd09 100644
--- a/arch/arm/mach-ux500/board-mop500-audio.c
+++ b/arch/arm/mach-ux500/board-mop500-audio.c
@@ -7,16 +7,13 @@
7#include <linux/platform_device.h> 7#include <linux/platform_device.h>
8#include <linux/init.h> 8#include <linux/init.h>
9#include <linux/gpio.h> 9#include <linux/gpio.h>
10#include <linux/platform_data/pinctrl-nomadik.h>
11#include <linux/platform_data/dma-ste-dma40.h> 10#include <linux/platform_data/dma-ste-dma40.h>
12 11
13#include "devices.h"
14#include "irqs.h" 12#include "irqs.h"
15#include <linux/platform_data/asoc-ux500-msp.h> 13#include <linux/platform_data/asoc-ux500-msp.h>
16 14
17#include "ste-dma40-db8500.h" 15#include "ste-dma40-db8500.h"
18#include "board-mop500.h" 16#include "board-mop500.h"
19#include "devices-db8500.h"
20 17
21static struct stedma40_chan_cfg msp0_dma_rx = { 18static struct stedma40_chan_cfg msp0_dma_rx = {
22 .high_priority = true, 19 .high_priority = true,
diff --git a/arch/arm/mach-ux500/board-mop500-pins.c b/arch/arm/mach-ux500/board-mop500-pins.c
index 0efb1560fc35..f63619b69113 100644
--- a/arch/arm/mach-ux500/board-mop500-pins.c
+++ b/arch/arm/mach-ux500/board-mop500-pins.c
@@ -10,94 +10,18 @@
10#include <linux/string.h> 10#include <linux/string.h>
11#include <linux/pinctrl/machine.h> 11#include <linux/pinctrl/machine.h>
12#include <linux/pinctrl/pinconf-generic.h> 12#include <linux/pinctrl/pinconf-generic.h>
13#include <linux/platform_data/pinctrl-nomadik.h>
14 13
15#include <asm/mach-types.h> 14#include <asm/mach-types.h>
16 15
17#include "board-mop500.h" 16#include "board-mop500.h"
18 17
19enum custom_pin_cfg_t {
20 PINS_FOR_DEFAULT,
21 PINS_FOR_U9500,
22};
23
24static enum custom_pin_cfg_t pinsfor;
25
26/* These simply sets bias for pins */ 18/* These simply sets bias for pins */
27#define BIAS(a,b) static unsigned long a[] = { b } 19#define BIAS(a,b) static unsigned long a[] = { b }
28 20
29BIAS(pd, PIN_PULL_DOWN);
30BIAS(in_nopull, PIN_INPUT_NOPULL);
31BIAS(in_nopull_slpm_nowkup, PIN_INPUT_NOPULL|PIN_SLPM_WAKEUP_DISABLE);
32BIAS(in_pu, PIN_INPUT_PULLUP);
33BIAS(in_pd, PIN_INPUT_PULLDOWN);
34BIAS(out_hi, PIN_OUTPUT_HIGH);
35BIAS(out_lo, PIN_OUTPUT_LOW);
36BIAS(out_lo_slpm_nowkup, PIN_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE);
37
38BIAS(abx500_out_lo, PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0)); 21BIAS(abx500_out_lo, PIN_CONF_PACKED(PIN_CONFIG_OUTPUT, 0));
39BIAS(abx500_in_pd, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 1)); 22BIAS(abx500_in_pd, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 1));
40BIAS(abx500_in_nopull, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 0)); 23BIAS(abx500_in_nopull, PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_DOWN, 0));
41 24
42/* These also force them into GPIO mode */
43BIAS(gpio_in_pu, PIN_INPUT_PULLUP|PIN_GPIOMODE_ENABLED);
44BIAS(gpio_in_pd, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED);
45BIAS(gpio_in_pu_slpm_gpio_nopull, PIN_INPUT_PULLUP|PIN_GPIOMODE_ENABLED|PIN_SLPM_GPIO|PIN_SLPM_INPUT_NOPULL);
46BIAS(gpio_in_pd_slpm_gpio_nopull, PIN_INPUT_PULLDOWN|PIN_GPIOMODE_ENABLED|PIN_SLPM_GPIO|PIN_SLPM_INPUT_NOPULL);
47BIAS(gpio_out_hi, PIN_OUTPUT_HIGH|PIN_GPIOMODE_ENABLED);
48BIAS(gpio_out_lo, PIN_OUTPUT_LOW|PIN_GPIOMODE_ENABLED);
49/* Sleep modes */
50BIAS(slpm_in_wkup_pdis, PIN_SLEEPMODE_ENABLED|
51 PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
52BIAS(slpm_in_wkup_pdis_en, PIN_SLEEPMODE_ENABLED|
53 PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_ENABLED);
54BIAS(slpm_wkup_pdis, PIN_SLEEPMODE_ENABLED|
55 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
56BIAS(slpm_wkup_pdis_en, PIN_SLEEPMODE_ENABLED|
57 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_ENABLED);
58BIAS(slpm_out_lo_pdis, PIN_SLEEPMODE_ENABLED|
59 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_DISABLE|PIN_SLPM_PDIS_DISABLED);
60BIAS(slpm_out_lo_wkup_pdis, PIN_SLEEPMODE_ENABLED|
61 PIN_SLPM_OUTPUT_LOW|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
62BIAS(slpm_out_hi_wkup_pdis, PIN_SLEEPMODE_ENABLED|PIN_SLPM_OUTPUT_HIGH|
63 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
64BIAS(slpm_in_nopull_wkup_pdis, PIN_SLEEPMODE_ENABLED|
65 PIN_SLPM_INPUT_NOPULL|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
66BIAS(slpm_in_pu_wkup_pdis_en, PIN_SLEEPMODE_ENABLED|PIN_SLPM_INPUT_PULLUP|
67 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_ENABLED);
68BIAS(slpm_out_wkup_pdis, PIN_SLEEPMODE_ENABLED|
69 PIN_SLPM_DIR_OUTPUT|PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
70BIAS(out_lo_wkup_pdis, PIN_SLPM_OUTPUT_LOW|
71 PIN_SLPM_WAKEUP_ENABLE|PIN_SLPM_PDIS_DISABLED);
72BIAS(in_wkup_pdis_en, PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|
73 PIN_SLPM_PDIS_ENABLED);
74BIAS(in_wkup_pdis, PIN_SLPM_DIR_INPUT|PIN_SLPM_WAKEUP_ENABLE|
75 PIN_SLPM_PDIS_DISABLED);
76BIAS(out_wkup_pdis, PIN_SLPM_DIR_OUTPUT|PIN_SLPM_WAKEUP_ENABLE|
77 PIN_SLPM_PDIS_DISABLED);
78
79/* We use these to define hog settings that are always done on boot */
80#define DB8500_MUX_HOG(group,func) \
81 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-db8500", group, func)
82#define DB8500_PIN_HOG(pin,conf) \
83 PIN_MAP_CONFIGS_PIN_HOG_DEFAULT("pinctrl-db8500", pin, conf)
84
85/* These are default states associated with device and changed runtime */
86#define DB8500_MUX(group,func,dev) \
87 PIN_MAP_MUX_GROUP_DEFAULT(dev, "pinctrl-db8500", group, func)
88#define DB8500_PIN(pin,conf,dev) \
89 PIN_MAP_CONFIGS_PIN_DEFAULT(dev, "pinctrl-db8500", pin, conf)
90#define DB8500_PIN_IDLE(pin, conf, dev) \
91 PIN_MAP_CONFIGS_PIN(dev, PINCTRL_STATE_IDLE, "pinctrl-db8500", \
92 pin, conf)
93#define DB8500_PIN_SLEEP(pin, conf, dev) \
94 PIN_MAP_CONFIGS_PIN(dev, PINCTRL_STATE_SLEEP, "pinctrl-db8500", \
95 pin, conf)
96#define DB8500_MUX_STATE(group, func, dev, state) \
97 PIN_MAP_MUX_GROUP(dev, state, "pinctrl-db8500", group, func)
98#define DB8500_PIN_STATE(pin, conf, dev, state) \
99 PIN_MAP_CONFIGS_PIN(dev, state, "pinctrl-db8500", pin, conf)
100
101#define AB8500_MUX_HOG(group, func) \ 25#define AB8500_MUX_HOG(group, func) \
102 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-ab8500.0", group, func) 26 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-ab8500.0", group, func)
103#define AB8500_PIN_HOG(pin, conf) \ 27#define AB8500_PIN_HOG(pin, conf) \
@@ -344,725 +268,8 @@ static struct pinctrl_map __initdata ab8505_pinmap[] = {
344 AB8505_PIN_HOG("GPIO53_D15", in_pd), 268 AB8505_PIN_HOG("GPIO53_D15", in_pd),
345}; 269};
346 270
347/* Pin control settings */
348static struct pinctrl_map __initdata mop500_family_pinmap[] = {
349 /*
350 * uMSP0, mux in 4 pins, regular placement of RX/TX
351 * explicitly set the pins to no pull
352 */
353 DB8500_MUX_HOG("msp0txrx_a_1", "msp0"),
354 DB8500_MUX_HOG("msp0tfstck_a_1", "msp0"),
355 DB8500_PIN_HOG("GPIO12_AC4", in_nopull), /* TXD */
356 DB8500_PIN_HOG("GPIO15_AC3", in_nopull), /* RXD */
357 DB8500_PIN_HOG("GPIO13_AF3", in_nopull), /* TFS */
358 DB8500_PIN_HOG("GPIO14_AE3", in_nopull), /* TCK */
359 /* MSP2 for HDMI, pull down TXD, TCK, TFS */
360 DB8500_MUX_HOG("msp2_a_1", "msp2"),
361 DB8500_PIN_HOG("GPIO193_AH27", in_pd), /* TXD */
362 DB8500_PIN_HOG("GPIO194_AF27", in_pd), /* TCK */
363 DB8500_PIN_HOG("GPIO195_AG28", in_pd), /* TFS */
364 DB8500_PIN_HOG("GPIO196_AG26", out_lo), /* RXD */
365 /*
366 * LCD, set TE0 (using LCD VSI0) and D14 (touch screen interrupt) to
367 * pull-up
368 * TODO: is this really correct? Snowball doesn't have a LCD.
369 */
370 DB8500_MUX_HOG("lcdvsi0_a_1", "lcd"),
371 DB8500_PIN_HOG("GPIO68_E1", in_pu),
372 DB8500_PIN_HOG("GPIO84_C2", gpio_in_pu),
373 /*
374 * STMPE1601/tc35893 keypad IRQ GPIO 218
375 * TODO: set for snowball and HREF really??
376 */
377 DB8500_PIN_HOG("GPIO218_AH11", gpio_in_pu),
378 /*
379 * UART0, we do not mux in u0 here.
380 * uart-0 pins gpio configuration should be kept intact to prevent
381 * a glitch in tx line when the tty dev is opened. Later these pins
382 * are configured by uart driver
383 */
384 DB8500_PIN_HOG("GPIO0_AJ5", in_pu), /* CTS */
385 DB8500_PIN_HOG("GPIO1_AJ3", out_hi), /* RTS */
386 DB8500_PIN_HOG("GPIO2_AH4", in_pu), /* RXD */
387 DB8500_PIN_HOG("GPIO3_AH3", out_hi), /* TXD */
388 /*
389 * Mux in UART2 on altfunction C and set pull-ups.
390 * TODO: is this used on U8500 variants and Snowball really?
391 * The setting on GPIO31 conflicts with magnetometer use on hrefv60
392 */
393 /* default state for UART2 */
394 DB8500_MUX("u2rxtx_c_1", "u2", "uart2"),
395 DB8500_PIN("GPIO29_W2", in_pu, "uart2"), /* RXD */
396 DB8500_PIN("GPIO30_W3", out_hi, "uart2"), /* TXD */
397 /* Sleep state for UART2 */
398 DB8500_PIN_SLEEP("GPIO29_W2", in_wkup_pdis, "uart2"),
399 DB8500_PIN_SLEEP("GPIO30_W3", out_wkup_pdis, "uart2"),
400 /*
401 * The following pin sets were known as "runtime pins" before being
402 * converted to the pinctrl model. Here we model them as "default"
403 * states.
404 */
405 /* Mux in UART0 after initialization */
406 DB8500_MUX("u0_a_1", "u0", "uart0"),
407 DB8500_PIN("GPIO0_AJ5", in_pu, "uart0"), /* CTS */
408 DB8500_PIN("GPIO1_AJ3", out_hi, "uart0"), /* RTS */
409 DB8500_PIN("GPIO2_AH4", in_pu, "uart0"), /* RXD */
410 DB8500_PIN("GPIO3_AH3", out_hi, "uart0"), /* TXD */
411 /* Sleep state for UART0 */
412 DB8500_PIN_SLEEP("GPIO0_AJ5", slpm_in_wkup_pdis, "uart0"),
413 DB8500_PIN_SLEEP("GPIO1_AJ3", slpm_out_hi_wkup_pdis, "uart0"),
414 DB8500_PIN_SLEEP("GPIO2_AH4", slpm_in_wkup_pdis, "uart0"),
415 DB8500_PIN_SLEEP("GPIO3_AH3", slpm_out_wkup_pdis, "uart0"),
416 /* Mux in UART1 after initialization */
417 DB8500_MUX("u1rxtx_a_1", "u1", "uart1"),
418 DB8500_PIN("GPIO4_AH6", in_pu, "uart1"), /* RXD */
419 DB8500_PIN("GPIO5_AG6", out_hi, "uart1"), /* TXD */
420 /* Sleep state for UART1 */
421 DB8500_PIN_SLEEP("GPIO4_AH6", slpm_in_wkup_pdis, "uart1"),
422 DB8500_PIN_SLEEP("GPIO5_AG6", slpm_out_wkup_pdis, "uart1"),
423 /* MSP1 for ALSA codec */
424 DB8500_MUX_HOG("msp1txrx_a_1", "msp1"),
425 DB8500_MUX_HOG("msp1_a_1", "msp1"),
426 DB8500_PIN_HOG("GPIO33_AF2", out_lo_slpm_nowkup),
427 DB8500_PIN_HOG("GPIO34_AE1", in_nopull_slpm_nowkup),
428 DB8500_PIN_HOG("GPIO35_AE2", in_nopull_slpm_nowkup),
429 DB8500_PIN_HOG("GPIO36_AG2", in_nopull_slpm_nowkup),
430 /* Mux in LCD data lines 8 thru 11 and LCDA CLK for MCDE TVOUT */
431 DB8500_MUX("lcd_d8_d11_a_1", "lcd", "mcde-tvout"),
432 DB8500_MUX("lcdaclk_b_1", "lcda", "mcde-tvout"),
433 /* Mux in LCD VSI1 and pull it up for MCDE HDMI output */
434 DB8500_MUX("lcdvsi1_a_1", "lcd", "0-0070"),
435 DB8500_PIN("GPIO69_E2", in_pu, "0-0070"),
436 /* LCD VSI1 sleep state */
437 DB8500_PIN_SLEEP("GPIO69_E2", slpm_in_wkup_pdis, "0-0070"),
438 /* Mux in i2c0 block, default state */
439 DB8500_MUX("i2c0_a_1", "i2c0", "nmk-i2c.0"),
440 /* i2c0 sleep state */
441 DB8500_PIN_SLEEP("GPIO147_C15", slpm_in_nopull_wkup_pdis, "nmk-i2c.0"), /* SDA */
442 DB8500_PIN_SLEEP("GPIO148_B16", slpm_in_nopull_wkup_pdis, "nmk-i2c.0"), /* SCL */
443 /* Mux in i2c1 block, default state */
444 DB8500_MUX("i2c1_b_2", "i2c1", "nmk-i2c.1"),
445 /* i2c1 sleep state */
446 DB8500_PIN_SLEEP("GPIO16_AD3", slpm_in_nopull_wkup_pdis, "nmk-i2c.1"), /* SDA */
447 DB8500_PIN_SLEEP("GPIO17_AD4", slpm_in_nopull_wkup_pdis, "nmk-i2c.1"), /* SCL */
448 /* Mux in i2c2 block, default state */
449 DB8500_MUX("i2c2_b_2", "i2c2", "nmk-i2c.2"),
450 /* i2c2 sleep state */
451 DB8500_PIN_SLEEP("GPIO10_AF5", slpm_in_nopull_wkup_pdis, "nmk-i2c.2"), /* SDA */
452 DB8500_PIN_SLEEP("GPIO11_AG4", slpm_in_nopull_wkup_pdis, "nmk-i2c.2"), /* SCL */
453 /* Mux in i2c3 block, default state */
454 DB8500_MUX("i2c3_c_2", "i2c3", "nmk-i2c.3"),
455 /* i2c3 sleep state */
456 DB8500_PIN_SLEEP("GPIO229_AG7", slpm_in_nopull_wkup_pdis, "nmk-i2c.3"), /* SDA */
457 DB8500_PIN_SLEEP("GPIO230_AF7", slpm_in_nopull_wkup_pdis, "nmk-i2c.3"), /* SCL */
458 /* Mux in SDI0 (here called MC0) used for removable MMC/SD/SDIO cards */
459 DB8500_MUX("mc0_a_1", "mc0", "sdi0"),
460 DB8500_PIN("GPIO18_AC2", out_hi, "sdi0"), /* CMDDIR */
461 DB8500_PIN("GPIO19_AC1", out_hi, "sdi0"), /* DAT0DIR */
462 DB8500_PIN("GPIO20_AB4", out_hi, "sdi0"), /* DAT2DIR */
463 DB8500_PIN("GPIO22_AA3", in_nopull, "sdi0"), /* FBCLK */
464 DB8500_PIN("GPIO23_AA4", out_lo, "sdi0"), /* CLK */
465 DB8500_PIN("GPIO24_AB2", in_pu, "sdi0"), /* CMD */
466 DB8500_PIN("GPIO25_Y4", in_pu, "sdi0"), /* DAT0 */
467 DB8500_PIN("GPIO26_Y2", in_pu, "sdi0"), /* DAT1 */
468 DB8500_PIN("GPIO27_AA2", in_pu, "sdi0"), /* DAT2 */
469 DB8500_PIN("GPIO28_AA1", in_pu, "sdi0"), /* DAT3 */
470 /* SDI0 sleep state */
471 DB8500_PIN_SLEEP("GPIO18_AC2", slpm_out_hi_wkup_pdis, "sdi0"),
472 DB8500_PIN_SLEEP("GPIO19_AC1", slpm_out_hi_wkup_pdis, "sdi0"),
473 DB8500_PIN_SLEEP("GPIO20_AB4", slpm_out_hi_wkup_pdis, "sdi0"),
474 DB8500_PIN_SLEEP("GPIO22_AA3", slpm_in_wkup_pdis, "sdi0"),
475 DB8500_PIN_SLEEP("GPIO23_AA4", slpm_out_lo_wkup_pdis, "sdi0"),
476 DB8500_PIN_SLEEP("GPIO24_AB2", slpm_in_wkup_pdis, "sdi0"),
477 DB8500_PIN_SLEEP("GPIO25_Y4", slpm_in_wkup_pdis, "sdi0"),
478 DB8500_PIN_SLEEP("GPIO26_Y2", slpm_in_wkup_pdis, "sdi0"),
479 DB8500_PIN_SLEEP("GPIO27_AA2", slpm_in_wkup_pdis, "sdi0"),
480 DB8500_PIN_SLEEP("GPIO28_AA1", slpm_in_wkup_pdis, "sdi0"),
481
482 /* Mux in SDI1 (here called MC1) used for SDIO for CW1200 WLAN */
483 DB8500_MUX("mc1_a_1", "mc1", "sdi1"),
484 DB8500_PIN("GPIO208_AH16", out_lo, "sdi1"), /* CLK */
485 DB8500_PIN("GPIO209_AG15", in_nopull, "sdi1"), /* FBCLK */
486 DB8500_PIN("GPIO210_AJ15", in_pu, "sdi1"), /* CMD */
487 DB8500_PIN("GPIO211_AG14", in_pu, "sdi1"), /* DAT0 */
488 DB8500_PIN("GPIO212_AF13", in_pu, "sdi1"), /* DAT1 */
489 DB8500_PIN("GPIO213_AG13", in_pu, "sdi1"), /* DAT2 */
490 DB8500_PIN("GPIO214_AH15", in_pu, "sdi1"), /* DAT3 */
491 /* SDI1 sleep state */
492 DB8500_PIN_SLEEP("GPIO208_AH16", slpm_out_lo_wkup_pdis, "sdi1"), /* CLK */
493 DB8500_PIN_SLEEP("GPIO209_AG15", slpm_in_wkup_pdis, "sdi1"), /* FBCLK */
494 DB8500_PIN_SLEEP("GPIO210_AJ15", slpm_in_wkup_pdis, "sdi1"), /* CMD */
495 DB8500_PIN_SLEEP("GPIO211_AG14", slpm_in_wkup_pdis, "sdi1"), /* DAT0 */
496 DB8500_PIN_SLEEP("GPIO212_AF13", slpm_in_wkup_pdis, "sdi1"), /* DAT1 */
497 DB8500_PIN_SLEEP("GPIO213_AG13", slpm_in_wkup_pdis, "sdi1"), /* DAT2 */
498 DB8500_PIN_SLEEP("GPIO214_AH15", slpm_in_wkup_pdis, "sdi1"), /* DAT3 */
499
500 /* Mux in SDI2 (here called MC2) used for for PoP eMMC */
501 DB8500_MUX("mc2_a_1", "mc2", "sdi2"),
502 DB8500_PIN("GPIO128_A5", out_lo, "sdi2"), /* CLK */
503 DB8500_PIN("GPIO129_B4", in_pu, "sdi2"), /* CMD */
504 DB8500_PIN("GPIO130_C8", in_nopull, "sdi2"), /* FBCLK */
505 DB8500_PIN("GPIO131_A12", in_pu, "sdi2"), /* DAT0 */
506 DB8500_PIN("GPIO132_C10", in_pu, "sdi2"), /* DAT1 */
507 DB8500_PIN("GPIO133_B10", in_pu, "sdi2"), /* DAT2 */
508 DB8500_PIN("GPIO134_B9", in_pu, "sdi2"), /* DAT3 */
509 DB8500_PIN("GPIO135_A9", in_pu, "sdi2"), /* DAT4 */
510 DB8500_PIN("GPIO136_C7", in_pu, "sdi2"), /* DAT5 */
511 DB8500_PIN("GPIO137_A7", in_pu, "sdi2"), /* DAT6 */
512 DB8500_PIN("GPIO138_C5", in_pu, "sdi2"), /* DAT7 */
513 /* SDI2 sleep state */
514 DB8500_PIN_SLEEP("GPIO128_A5", out_lo_wkup_pdis, "sdi2"), /* CLK */
515 DB8500_PIN_SLEEP("GPIO129_B4", in_wkup_pdis_en, "sdi2"), /* CMD */
516 DB8500_PIN_SLEEP("GPIO130_C8", in_wkup_pdis_en, "sdi2"), /* FBCLK */
517 DB8500_PIN_SLEEP("GPIO131_A12", in_wkup_pdis, "sdi2"), /* DAT0 */
518 DB8500_PIN_SLEEP("GPIO132_C10", in_wkup_pdis, "sdi2"), /* DAT1 */
519 DB8500_PIN_SLEEP("GPIO133_B10", in_wkup_pdis, "sdi2"), /* DAT2 */
520 DB8500_PIN_SLEEP("GPIO134_B9", in_wkup_pdis, "sdi2"), /* DAT3 */
521 DB8500_PIN_SLEEP("GPIO135_A9", in_wkup_pdis, "sdi2"), /* DAT4 */
522 DB8500_PIN_SLEEP("GPIO136_C7", in_wkup_pdis, "sdi2"), /* DAT5 */
523 DB8500_PIN_SLEEP("GPIO137_A7", in_wkup_pdis, "sdi2"), /* DAT6 */
524 DB8500_PIN_SLEEP("GPIO138_C5", in_wkup_pdis, "sdi2"), /* DAT7 */
525
526 /* Mux in SDI4 (here called MC4) used for for PCB-mounted eMMC */
527 DB8500_MUX("mc4_a_1", "mc4", "sdi4"),
528 DB8500_PIN("GPIO197_AH24", in_pu, "sdi4"), /* DAT3 */
529 DB8500_PIN("GPIO198_AG25", in_pu, "sdi4"), /* DAT2 */
530 DB8500_PIN("GPIO199_AH23", in_pu, "sdi4"), /* DAT1 */
531 DB8500_PIN("GPIO200_AH26", in_pu, "sdi4"), /* DAT0 */
532 DB8500_PIN("GPIO201_AF24", in_pu, "sdi4"), /* CMD */
533 DB8500_PIN("GPIO202_AF25", in_nopull, "sdi4"), /* FBCLK */
534 DB8500_PIN("GPIO203_AE23", out_lo, "sdi4"), /* CLK */
535 DB8500_PIN("GPIO204_AF23", in_pu, "sdi4"), /* DAT7 */
536 DB8500_PIN("GPIO205_AG23", in_pu, "sdi4"), /* DAT6 */
537 DB8500_PIN("GPIO206_AG24", in_pu, "sdi4"), /* DAT5 */
538 DB8500_PIN("GPIO207_AJ23", in_pu, "sdi4"), /* DAT4 */
539 /*SDI4 sleep state */
540 DB8500_PIN_SLEEP("GPIO197_AH24", slpm_in_wkup_pdis, "sdi4"), /* DAT3 */
541 DB8500_PIN_SLEEP("GPIO198_AG25", slpm_in_wkup_pdis, "sdi4"), /* DAT2 */
542 DB8500_PIN_SLEEP("GPIO199_AH23", slpm_in_wkup_pdis, "sdi4"), /* DAT1 */
543 DB8500_PIN_SLEEP("GPIO200_AH26", slpm_in_wkup_pdis, "sdi4"), /* DAT0 */
544 DB8500_PIN_SLEEP("GPIO201_AF24", slpm_in_wkup_pdis, "sdi4"), /* CMD */
545 DB8500_PIN_SLEEP("GPIO202_AF25", slpm_in_wkup_pdis, "sdi4"), /* FBCLK */
546 DB8500_PIN_SLEEP("GPIO203_AE23", slpm_out_lo_wkup_pdis, "sdi4"), /* CLK */
547 DB8500_PIN_SLEEP("GPIO204_AF23", slpm_in_wkup_pdis, "sdi4"), /* DAT7 */
548 DB8500_PIN_SLEEP("GPIO205_AG23", slpm_in_wkup_pdis, "sdi4"), /* DAT6 */
549 DB8500_PIN_SLEEP("GPIO206_AG24", slpm_in_wkup_pdis, "sdi4"), /* DAT5 */
550 DB8500_PIN_SLEEP("GPIO207_AJ23", slpm_in_wkup_pdis, "sdi4"), /* DAT4 */
551
552 /* Mux in USB pins, drive STP high */
553 /* USB default state */
554 DB8500_MUX("usb_a_1", "usb", "ab8500-usb.0"),
555 DB8500_PIN("GPIO257_AE29", out_hi, "ab8500-usb.0"), /* STP */
556 /* USB sleep state */
557 DB8500_PIN_SLEEP("GPIO256_AF28", slpm_wkup_pdis_en, "ab8500-usb.0"), /* NXT */
558 DB8500_PIN_SLEEP("GPIO257_AE29", slpm_out_hi_wkup_pdis, "ab8500-usb.0"), /* STP */
559 DB8500_PIN_SLEEP("GPIO258_AD29", slpm_wkup_pdis_en, "ab8500-usb.0"), /* XCLK */
560 DB8500_PIN_SLEEP("GPIO259_AC29", slpm_wkup_pdis_en, "ab8500-usb.0"), /* DIR */
561 DB8500_PIN_SLEEP("GPIO260_AD28", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT7 */
562 DB8500_PIN_SLEEP("GPIO261_AD26", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT6 */
563 DB8500_PIN_SLEEP("GPIO262_AE26", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT5 */
564 DB8500_PIN_SLEEP("GPIO263_AG29", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT4 */
565 DB8500_PIN_SLEEP("GPIO264_AE27", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT3 */
566 DB8500_PIN_SLEEP("GPIO265_AD27", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT2 */
567 DB8500_PIN_SLEEP("GPIO266_AC28", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT1 */
568 DB8500_PIN_SLEEP("GPIO267_AC27", slpm_in_wkup_pdis_en, "ab8500-usb.0"), /* DAT0 */
569
570 /* Mux in SPI2 pins on the "other C1" altfunction */
571 DB8500_MUX("spi2_oc1_2", "spi2", "spi2"),
572 DB8500_PIN("GPIO216_AG12", gpio_out_hi, "spi2"), /* FRM */
573 DB8500_PIN("GPIO218_AH11", in_pd, "spi2"), /* RXD */
574 DB8500_PIN("GPIO215_AH13", out_lo, "spi2"), /* TXD */
575 DB8500_PIN("GPIO217_AH12", out_lo, "spi2"), /* CLK */
576 /* SPI2 idle state */
577 DB8500_PIN_IDLE("GPIO218_AH11", slpm_in_wkup_pdis, "spi2"), /* RXD */
578 DB8500_PIN_IDLE("GPIO215_AH13", slpm_out_lo_wkup_pdis, "spi2"), /* TXD */
579 DB8500_PIN_IDLE("GPIO217_AH12", slpm_wkup_pdis, "spi2"), /* CLK */
580 /* SPI2 sleep state */
581 DB8500_PIN_SLEEP("GPIO216_AG12", slpm_in_wkup_pdis, "spi2"), /* FRM */
582 DB8500_PIN_SLEEP("GPIO218_AH11", slpm_in_wkup_pdis, "spi2"), /* RXD */
583 DB8500_PIN_SLEEP("GPIO215_AH13", slpm_out_lo_wkup_pdis, "spi2"), /* TXD */
584 DB8500_PIN_SLEEP("GPIO217_AH12", slpm_wkup_pdis, "spi2"), /* CLK */
585
586 /* ske default state */
587 DB8500_MUX("kp_a_2", "kp", "nmk-ske-keypad"),
588 DB8500_PIN("GPIO153_B17", in_pd, "nmk-ske-keypad"), /* I7 */
589 DB8500_PIN("GPIO154_C16", in_pd, "nmk-ske-keypad"), /* I6 */
590 DB8500_PIN("GPIO155_C19", in_pd, "nmk-ske-keypad"), /* I5 */
591 DB8500_PIN("GPIO156_C17", in_pd, "nmk-ske-keypad"), /* I4 */
592 DB8500_PIN("GPIO161_D21", in_pd, "nmk-ske-keypad"), /* I3 */
593 DB8500_PIN("GPIO162_D20", in_pd, "nmk-ske-keypad"), /* I2 */
594 DB8500_PIN("GPIO163_C20", in_pd, "nmk-ske-keypad"), /* I1 */
595 DB8500_PIN("GPIO164_B21", in_pd, "nmk-ske-keypad"), /* I0 */
596 DB8500_PIN("GPIO157_A18", out_lo, "nmk-ske-keypad"), /* O7 */
597 DB8500_PIN("GPIO158_C18", out_lo, "nmk-ske-keypad"), /* O6 */
598 DB8500_PIN("GPIO159_B19", out_lo, "nmk-ske-keypad"), /* O5 */
599 DB8500_PIN("GPIO160_B20", out_lo, "nmk-ske-keypad"), /* O4 */
600 DB8500_PIN("GPIO165_C21", out_lo, "nmk-ske-keypad"), /* O3 */
601 DB8500_PIN("GPIO166_A22", out_lo, "nmk-ske-keypad"), /* O2 */
602 DB8500_PIN("GPIO167_B24", out_lo, "nmk-ske-keypad"), /* O1 */
603 DB8500_PIN("GPIO168_C22", out_lo, "nmk-ske-keypad"), /* O0 */
604 /* ske sleep state */
605 DB8500_PIN_SLEEP("GPIO153_B17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I7 */
606 DB8500_PIN_SLEEP("GPIO154_C16", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I6 */
607 DB8500_PIN_SLEEP("GPIO155_C19", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I5 */
608 DB8500_PIN_SLEEP("GPIO156_C17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I4 */
609 DB8500_PIN_SLEEP("GPIO161_D21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I3 */
610 DB8500_PIN_SLEEP("GPIO162_D20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I2 */
611 DB8500_PIN_SLEEP("GPIO163_C20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I1 */
612 DB8500_PIN_SLEEP("GPIO164_B21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I0 */
613 DB8500_PIN_SLEEP("GPIO157_A18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O7 */
614 DB8500_PIN_SLEEP("GPIO158_C18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O6 */
615 DB8500_PIN_SLEEP("GPIO159_B19", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O5 */
616 DB8500_PIN_SLEEP("GPIO160_B20", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O4 */
617 DB8500_PIN_SLEEP("GPIO165_C21", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O3 */
618 DB8500_PIN_SLEEP("GPIO166_A22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O2 */
619 DB8500_PIN_SLEEP("GPIO167_B24", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O1 */
620 DB8500_PIN_SLEEP("GPIO168_C22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O0 */
621
622 /* STM APE pins states */
623 DB8500_MUX_STATE("stmape_c_1", "stmape",
624 "stm", "ape_mipi34"),
625 DB8500_PIN_STATE("GPIO70_G5", in_nopull,
626 "stm", "ape_mipi34"), /* clk */
627 DB8500_PIN_STATE("GPIO71_G4", in_nopull,
628 "stm", "ape_mipi34"), /* dat3 */
629 DB8500_PIN_STATE("GPIO72_H4", in_nopull,
630 "stm", "ape_mipi34"), /* dat2 */
631 DB8500_PIN_STATE("GPIO73_H3", in_nopull,
632 "stm", "ape_mipi34"), /* dat1 */
633 DB8500_PIN_STATE("GPIO74_J3", in_nopull,
634 "stm", "ape_mipi34"), /* dat0 */
635
636 DB8500_PIN_STATE("GPIO70_G5", slpm_out_lo_pdis,
637 "stm", "ape_mipi34_sleep"), /* clk */
638 DB8500_PIN_STATE("GPIO71_G4", slpm_out_lo_pdis,
639 "stm", "ape_mipi34_sleep"), /* dat3 */
640 DB8500_PIN_STATE("GPIO72_H4", slpm_out_lo_pdis,
641 "stm", "ape_mipi34_sleep"), /* dat2 */
642 DB8500_PIN_STATE("GPIO73_H3", slpm_out_lo_pdis,
643 "stm", "ape_mipi34_sleep"), /* dat1 */
644 DB8500_PIN_STATE("GPIO74_J3", slpm_out_lo_pdis,
645 "stm", "ape_mipi34_sleep"), /* dat0 */
646
647 DB8500_MUX_STATE("stmape_oc1_1", "stmape",
648 "stm", "ape_microsd"),
649 DB8500_PIN_STATE("GPIO23_AA4", in_nopull,
650 "stm", "ape_microsd"), /* clk */
651 DB8500_PIN_STATE("GPIO25_Y4", in_nopull,
652 "stm", "ape_microsd"), /* dat0 */
653 DB8500_PIN_STATE("GPIO26_Y2", in_nopull,
654 "stm", "ape_microsd"), /* dat1 */
655 DB8500_PIN_STATE("GPIO27_AA2", in_nopull,
656 "stm", "ape_microsd"), /* dat2 */
657 DB8500_PIN_STATE("GPIO28_AA1", in_nopull,
658 "stm", "ape_microsd"), /* dat3 */
659
660 DB8500_PIN_STATE("GPIO23_AA4", slpm_out_lo_wkup_pdis,
661 "stm", "ape_microsd_sleep"), /* clk */
662 DB8500_PIN_STATE("GPIO25_Y4", slpm_in_wkup_pdis,
663 "stm", "ape_microsd_sleep"), /* dat0 */
664 DB8500_PIN_STATE("GPIO26_Y2", slpm_in_wkup_pdis,
665 "stm", "ape_microsd_sleep"), /* dat1 */
666 DB8500_PIN_STATE("GPIO27_AA2", slpm_in_wkup_pdis,
667 "stm", "ape_microsd_sleep"), /* dat2 */
668 DB8500_PIN_STATE("GPIO28_AA1", slpm_in_wkup_pdis,
669 "stm", "ape_microsd_sleep"), /* dat3 */
670
671 /* STM Modem pins states */
672 DB8500_MUX_STATE("stmmod_oc3_2", "stmmod",
673 "stm", "mod_mipi34"),
674 DB8500_MUX_STATE("uartmodrx_oc3_1", "uartmod",
675 "stm", "mod_mipi34"),
676 DB8500_MUX_STATE("uartmodtx_oc3_1", "uartmod",
677 "stm", "mod_mipi34"),
678 DB8500_PIN_STATE("GPIO70_G5", in_nopull,
679 "stm", "mod_mipi34"), /* clk */
680 DB8500_PIN_STATE("GPIO71_G4", in_nopull,
681 "stm", "mod_mipi34"), /* dat3 */
682 DB8500_PIN_STATE("GPIO72_H4", in_nopull,
683 "stm", "mod_mipi34"), /* dat2 */
684 DB8500_PIN_STATE("GPIO73_H3", in_nopull,
685 "stm", "mod_mipi34"), /* dat1 */
686 DB8500_PIN_STATE("GPIO74_J3", in_nopull,
687 "stm", "mod_mipi34"), /* dat0 */
688 DB8500_PIN_STATE("GPIO75_H2", in_pu,
689 "stm", "mod_mipi34"), /* uartmod rx */
690 DB8500_PIN_STATE("GPIO76_J2", out_lo,
691 "stm", "mod_mipi34"), /* uartmod tx */
692
693 DB8500_PIN_STATE("GPIO70_G5", slpm_out_lo_pdis,
694 "stm", "mod_mipi34_sleep"), /* clk */
695 DB8500_PIN_STATE("GPIO71_G4", slpm_out_lo_pdis,
696 "stm", "mod_mipi34_sleep"), /* dat3 */
697 DB8500_PIN_STATE("GPIO72_H4", slpm_out_lo_pdis,
698 "stm", "mod_mipi34_sleep"), /* dat2 */
699 DB8500_PIN_STATE("GPIO73_H3", slpm_out_lo_pdis,
700 "stm", "mod_mipi34_sleep"), /* dat1 */
701 DB8500_PIN_STATE("GPIO74_J3", slpm_out_lo_pdis,
702 "stm", "mod_mipi34_sleep"), /* dat0 */
703 DB8500_PIN_STATE("GPIO75_H2", slpm_in_wkup_pdis,
704 "stm", "mod_mipi34_sleep"), /* uartmod rx */
705 DB8500_PIN_STATE("GPIO76_J2", slpm_out_lo_wkup_pdis,
706 "stm", "mod_mipi34_sleep"), /* uartmod tx */
707
708 DB8500_MUX_STATE("stmmod_b_1", "stmmod",
709 "stm", "mod_microsd"),
710 DB8500_MUX_STATE("uartmodrx_oc3_1", "uartmod",
711 "stm", "mod_microsd"),
712 DB8500_MUX_STATE("uartmodtx_oc3_1", "uartmod",
713 "stm", "mod_microsd"),
714 DB8500_PIN_STATE("GPIO23_AA4", in_nopull,
715 "stm", "mod_microsd"), /* clk */
716 DB8500_PIN_STATE("GPIO25_Y4", in_nopull,
717 "stm", "mod_microsd"), /* dat0 */
718 DB8500_PIN_STATE("GPIO26_Y2", in_nopull,
719 "stm", "mod_microsd"), /* dat1 */
720 DB8500_PIN_STATE("GPIO27_AA2", in_nopull,
721 "stm", "mod_microsd"), /* dat2 */
722 DB8500_PIN_STATE("GPIO28_AA1", in_nopull,
723 "stm", "mod_microsd"), /* dat3 */
724 DB8500_PIN_STATE("GPIO75_H2", in_pu,
725 "stm", "mod_microsd"), /* uartmod rx */
726 DB8500_PIN_STATE("GPIO76_J2", out_lo,
727 "stm", "mod_microsd"), /* uartmod tx */
728
729 DB8500_PIN_STATE("GPIO23_AA4", slpm_out_lo_wkup_pdis,
730 "stm", "mod_microsd_sleep"), /* clk */
731 DB8500_PIN_STATE("GPIO25_Y4", slpm_in_wkup_pdis,
732 "stm", "mod_microsd_sleep"), /* dat0 */
733 DB8500_PIN_STATE("GPIO26_Y2", slpm_in_wkup_pdis,
734 "stm", "mod_microsd_sleep"), /* dat1 */
735 DB8500_PIN_STATE("GPIO27_AA2", slpm_in_wkup_pdis,
736 "stm", "mod_microsd_sleep"), /* dat2 */
737 DB8500_PIN_STATE("GPIO28_AA1", slpm_in_wkup_pdis,
738 "stm", "mod_microsd_sleep"), /* dat3 */
739 DB8500_PIN_STATE("GPIO75_H2", slpm_in_wkup_pdis,
740 "stm", "mod_microsd_sleep"), /* uartmod rx */
741 DB8500_PIN_STATE("GPIO76_J2", slpm_out_lo_wkup_pdis,
742 "stm", "mod_microsd_sleep"), /* uartmod tx */
743
744 /* STM dual Modem/APE pins state */
745 DB8500_MUX_STATE("stmmod_oc3_2", "stmmod",
746 "stm", "mod_mipi34_ape_mipi60"),
747 DB8500_MUX_STATE("stmape_c_2", "stmape",
748 "stm", "mod_mipi34_ape_mipi60"),
749 DB8500_MUX_STATE("uartmodrx_oc3_1", "uartmod",
750 "stm", "mod_mipi34_ape_mipi60"),
751 DB8500_MUX_STATE("uartmodtx_oc3_1", "uartmod",
752 "stm", "mod_mipi34_ape_mipi60"),
753 DB8500_PIN_STATE("GPIO70_G5", in_nopull,
754 "stm", "mod_mipi34_ape_mipi60"), /* clk */
755 DB8500_PIN_STATE("GPIO71_G4", in_nopull,
756 "stm", "mod_mipi34_ape_mipi60"), /* dat3 */
757 DB8500_PIN_STATE("GPIO72_H4", in_nopull,
758 "stm", "mod_mipi34_ape_mipi60"), /* dat2 */
759 DB8500_PIN_STATE("GPIO73_H3", in_nopull,
760 "stm", "mod_mipi34_ape_mipi60"), /* dat1 */
761 DB8500_PIN_STATE("GPIO74_J3", in_nopull,
762 "stm", "mod_mipi34_ape_mipi60"), /* dat0 */
763 DB8500_PIN_STATE("GPIO75_H2", in_pu,
764 "stm", "mod_mipi34_ape_mipi60"), /* uartmod rx */
765 DB8500_PIN_STATE("GPIO76_J2", out_lo,
766 "stm", "mod_mipi34_ape_mipi60"), /* uartmod tx */
767 DB8500_PIN_STATE("GPIO155_C19", in_nopull,
768 "stm", "mod_mipi34_ape_mipi60"), /* clk */
769 DB8500_PIN_STATE("GPIO156_C17", in_nopull,
770 "stm", "mod_mipi34_ape_mipi60"), /* dat3 */
771 DB8500_PIN_STATE("GPIO157_A18", in_nopull,
772 "stm", "mod_mipi34_ape_mipi60"), /* dat2 */
773 DB8500_PIN_STATE("GPIO158_C18", in_nopull,
774 "stm", "mod_mipi34_ape_mipi60"), /* dat1 */
775 DB8500_PIN_STATE("GPIO159_B19", in_nopull,
776 "stm", "mod_mipi34_ape_mipi60"), /* dat0 */
777
778 DB8500_PIN_STATE("GPIO70_G5", slpm_out_lo_pdis,
779 "stm", "mod_mipi34_ape_mipi60_sleep"), /* clk */
780 DB8500_PIN_STATE("GPIO71_G4", slpm_out_lo_pdis,
781 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat3 */
782 DB8500_PIN_STATE("GPIO72_H4", slpm_out_lo_pdis,
783 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat2 */
784 DB8500_PIN_STATE("GPIO73_H3", slpm_out_lo_pdis,
785 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat1 */
786 DB8500_PIN_STATE("GPIO74_J3", slpm_out_lo_pdis,
787 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat0 */
788 DB8500_PIN_STATE("GPIO75_H2", slpm_in_wkup_pdis,
789 "stm", "mod_mipi34_ape_mipi60_sleep"), /* uartmod rx */
790 DB8500_PIN_STATE("GPIO76_J2", slpm_out_lo_wkup_pdis,
791 "stm", "mod_mipi34_ape_mipi60_sleep"), /* uartmod tx */
792 DB8500_PIN_STATE("GPIO155_C19", slpm_in_wkup_pdis,
793 "stm", "mod_mipi34_ape_mipi60_sleep"), /* clk */
794 DB8500_PIN_STATE("GPIO156_C17", slpm_in_wkup_pdis,
795 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat3 */
796 DB8500_PIN_STATE("GPIO157_A18", slpm_in_wkup_pdis,
797 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat2 */
798 DB8500_PIN_STATE("GPIO158_C18", slpm_in_wkup_pdis,
799 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat1 */
800 DB8500_PIN_STATE("GPIO159_B19", slpm_in_wkup_pdis,
801 "stm", "mod_mipi34_ape_mipi60_sleep"), /* dat0 */
802};
803
804/*
805 * These are specifically for the MOP500 and HREFP (pre-v60) version of the
806 * board, which utilized a TC35892 GPIO expander instead of using a lot of
807 * on-chip pins as the HREFv60 and later does.
808 */
809static struct pinctrl_map __initdata mop500_pinmap[] = {
810 /* Mux in SSP0, pull down RXD pin */
811 DB8500_MUX_HOG("ssp0_a_1", "ssp0"),
812 DB8500_PIN_HOG("GPIO145_C13", pd),
813 /*
814 * XENON Flashgun on image processor GPIO (controlled from image
815 * processor firmware), mux in these image processor GPIO lines 0
816 * (XENON_FLASH_ID) and 1 (XENON_READY) on altfunction C and pull up
817 * the pins.
818 */
819 DB8500_MUX_HOG("ipgpio0_c_1", "ipgpio"),
820 DB8500_MUX_HOG("ipgpio1_c_1", "ipgpio"),
821 DB8500_PIN_HOG("GPIO6_AF6", in_pu),
822 DB8500_PIN_HOG("GPIO7_AG5", in_pu),
823 /* TC35892 IRQ, pull up the line, let the driver mux in the pin */
824 DB8500_PIN_HOG("GPIO217_AH12", gpio_in_pu),
825 /* Mux in UART1 and set the pull-ups */
826 DB8500_MUX_HOG("u1rxtx_a_1", "u1"),
827 DB8500_PIN_HOG("GPIO4_AH6", in_pu), /* RXD */
828 DB8500_PIN_HOG("GPIO5_AG6", out_hi), /* TXD */
829 /*
830 * Runtime stuff: make it possible to mux in the SKE keypad
831 * and bias the pins
832 */
833 /* ske default state */
834 DB8500_MUX("kp_a_2", "kp", "nmk-ske-keypad"),
835 DB8500_PIN("GPIO153_B17", in_pu, "nmk-ske-keypad"), /* I7 */
836 DB8500_PIN("GPIO154_C16", in_pu, "nmk-ske-keypad"), /* I6 */
837 DB8500_PIN("GPIO155_C19", in_pu, "nmk-ske-keypad"), /* I5 */
838 DB8500_PIN("GPIO156_C17", in_pu, "nmk-ske-keypad"), /* I4 */
839 DB8500_PIN("GPIO161_D21", in_pu, "nmk-ske-keypad"), /* I3 */
840 DB8500_PIN("GPIO162_D20", in_pu, "nmk-ske-keypad"), /* I2 */
841 DB8500_PIN("GPIO163_C20", in_pu, "nmk-ske-keypad"), /* I1 */
842 DB8500_PIN("GPIO164_B21", in_pu, "nmk-ske-keypad"), /* I0 */
843 DB8500_PIN("GPIO157_A18", out_lo, "nmk-ske-keypad"), /* O7 */
844 DB8500_PIN("GPIO158_C18", out_lo, "nmk-ske-keypad"), /* O6 */
845 DB8500_PIN("GPIO159_B19", out_lo, "nmk-ske-keypad"), /* O5 */
846 DB8500_PIN("GPIO160_B20", out_lo, "nmk-ske-keypad"), /* O4 */
847 DB8500_PIN("GPIO165_C21", out_lo, "nmk-ske-keypad"), /* O3 */
848 DB8500_PIN("GPIO166_A22", out_lo, "nmk-ske-keypad"), /* O2 */
849 DB8500_PIN("GPIO167_B24", out_lo, "nmk-ske-keypad"), /* O1 */
850 DB8500_PIN("GPIO168_C22", out_lo, "nmk-ske-keypad"), /* O0 */
851 /* ske sleep state */
852 DB8500_PIN_SLEEP("GPIO153_B17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I7 */
853 DB8500_PIN_SLEEP("GPIO154_C16", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I6 */
854 DB8500_PIN_SLEEP("GPIO155_C19", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I5 */
855 DB8500_PIN_SLEEP("GPIO156_C17", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I4 */
856 DB8500_PIN_SLEEP("GPIO161_D21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I3 */
857 DB8500_PIN_SLEEP("GPIO162_D20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I2 */
858 DB8500_PIN_SLEEP("GPIO163_C20", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I1 */
859 DB8500_PIN_SLEEP("GPIO164_B21", slpm_in_pu_wkup_pdis_en, "nmk-ske-keypad"), /* I0 */
860 DB8500_PIN_SLEEP("GPIO157_A18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O7 */
861 DB8500_PIN_SLEEP("GPIO158_C18", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O6 */
862 DB8500_PIN_SLEEP("GPIO159_B19", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O5 */
863 DB8500_PIN_SLEEP("GPIO160_B20", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O4 */
864 DB8500_PIN_SLEEP("GPIO165_C21", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O3 */
865 DB8500_PIN_SLEEP("GPIO166_A22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O2 */
866 DB8500_PIN_SLEEP("GPIO167_B24", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O1 */
867 DB8500_PIN_SLEEP("GPIO168_C22", slpm_out_lo_pdis, "nmk-ske-keypad"), /* O0 */
868
869 /* Mux in and drive the SDI0 DAT31DIR line high at runtime */
870 DB8500_MUX("mc0dat31dir_a_1", "mc0", "sdi0"),
871 DB8500_PIN("GPIO21_AB3", out_hi, "sdi0"),
872};
873
874/*
875 * The HREFv60 series of platforms is using available pins on the DB8500
876 * insteaf of the Toshiba I2C GPIO expander, reusing some pins like the SSP0
877 * and SSP1 ports (previously connected to the AB8500) as generic GPIO lines.
878 */
879static struct pinctrl_map __initdata hrefv60_pinmap[] = {
880 /* Drive WLAN_ENA low */
881 DB8500_PIN_HOG("GPIO85_D5", gpio_out_lo), /* WLAN_ENA */
882 /*
883 * XENON Flashgun on image processor GPIO (controlled from image
884 * processor firmware), mux in these image processor GPIO lines 0
885 * (XENON_FLASH_ID), 1 (XENON_READY) and there is an assistant
886 * LED on IP GPIO 4 (XENON_EN2) on altfunction C, that need bias
887 * from GPIO21 so pull up 0, 1 and drive 4 and GPIO21 low as output.
888 */
889 DB8500_MUX_HOG("ipgpio0_c_1", "ipgpio"),
890 DB8500_MUX_HOG("ipgpio1_c_1", "ipgpio"),
891 DB8500_MUX_HOG("ipgpio4_c_1", "ipgpio"),
892 DB8500_PIN_HOG("GPIO6_AF6", in_pu), /* XENON_FLASH_ID */
893 DB8500_PIN_HOG("GPIO7_AG5", in_pu), /* XENON_READY */
894 DB8500_PIN_HOG("GPIO21_AB3", gpio_out_lo), /* XENON_EN1 */
895 DB8500_PIN_HOG("GPIO64_F3", out_lo), /* XENON_EN2 */
896 /* Magnetometer uses GPIO 31 and 32, pull these up/down respectively */
897 DB8500_PIN_HOG("GPIO31_V3", gpio_in_pu), /* EN1 */
898 DB8500_PIN_HOG("GPIO32_V2", gpio_in_pd), /* DRDY */
899 /*
900 * Display Interface 1 uses GPIO 65 for RST (reset).
901 * Display Interface 2 uses GPIO 66 for RST (reset).
902 * Drive DISP1 reset high (not reset), driver DISP2 reset low (reset)
903 */
904 DB8500_PIN_HOG("GPIO65_F1", gpio_out_hi), /* DISP1 NO RST */
905 DB8500_PIN_HOG("GPIO66_G3", gpio_out_lo), /* DISP2 RST */
906 /*
907 * Touch screen uses GPIO 143 for RST1, GPIO 146 for RST2 and
908 * GPIO 67 for interrupts. Pull-up the IRQ line and drive both
909 * reset signals low.
910 */
911 DB8500_PIN_HOG("GPIO143_D12", gpio_out_lo), /* TOUCH_RST1 */
912 DB8500_PIN_HOG("GPIO67_G2", gpio_in_pu), /* TOUCH_INT2 */
913 DB8500_PIN_HOG("GPIO146_D13", gpio_out_lo), /* TOUCH_RST2 */
914 /*
915 * Drive D19-D23 for the ETM PTM trace interface low,
916 * (presumably pins are unconnected therefore grounded here,
917 * the "other alt C1" setting enables these pins)
918 */
919 DB8500_PIN_HOG("GPIO70_G5", gpio_out_lo),
920 DB8500_PIN_HOG("GPIO71_G4", gpio_out_lo),
921 DB8500_PIN_HOG("GPIO72_H4", gpio_out_lo),
922 DB8500_PIN_HOG("GPIO73_H3", gpio_out_lo),
923 DB8500_PIN_HOG("GPIO74_J3", gpio_out_lo),
924 /* NAHJ CTRL on GPIO 76 to low, CTRL_INV on GPIO216 to high */
925 DB8500_PIN_HOG("GPIO76_J2", gpio_out_lo), /* CTRL */
926 DB8500_PIN_HOG("GPIO216_AG12", gpio_out_hi), /* CTRL_INV */
927 /* NFC ENA and RESET to low, pulldown IRQ line */
928 DB8500_PIN_HOG("GPIO77_H1", gpio_out_lo), /* NFC_ENA */
929 DB8500_PIN_HOG("GPIO144_B13", gpio_in_pd), /* NFC_IRQ */
930 DB8500_PIN_HOG("GPIO142_C11", gpio_out_lo), /* NFC_RESET */
931 /*
932 * SKE keyboard partly on alt A and partly on "Other alt C1"
933 * Driver KP_O1,2,3,6,7 low and pull up KP_I 0,2,3 for three
934 * rows of 6 keys, then pull up force sensing interrup and
935 * drive reset and force sensing WU low.
936 */
937 DB8500_MUX_HOG("kp_a_1", "kp"),
938 DB8500_MUX_HOG("kp_oc1_1", "kp"),
939 DB8500_PIN_HOG("GPIO90_A3", out_lo), /* KP_O1 */
940 DB8500_PIN_HOG("GPIO87_B3", out_lo), /* KP_O2 */
941 DB8500_PIN_HOG("GPIO86_C6", out_lo), /* KP_O3 */
942 DB8500_PIN_HOG("GPIO96_D8", out_lo), /* KP_O6 */
943 DB8500_PIN_HOG("GPIO94_D7", out_lo), /* KP_O7 */
944 DB8500_PIN_HOG("GPIO93_B7", in_pu), /* KP_I0 */
945 DB8500_PIN_HOG("GPIO89_E6", in_pu), /* KP_I2 */
946 DB8500_PIN_HOG("GPIO88_C4", in_pu), /* KP_I3 */
947 DB8500_PIN_HOG("GPIO91_B6", gpio_in_pu), /* FORCE_SENSING_INT */
948 DB8500_PIN_HOG("GPIO92_D6", gpio_out_lo), /* FORCE_SENSING_RST */
949 DB8500_PIN_HOG("GPIO97_D9", gpio_out_lo), /* FORCE_SENSING_WU */
950 /* DiPro Sensor interrupt */
951 DB8500_PIN_HOG("GPIO139_C9", gpio_in_pu), /* DIPRO_INT */
952 /* Audio Amplifier HF enable */
953 DB8500_PIN_HOG("GPIO149_B14", gpio_out_hi), /* VAUDIO_HF_EN, enable MAX8968 */
954 /* GBF interface, pull low to reset state */
955 DB8500_PIN_HOG("GPIO171_D23", gpio_out_lo), /* GBF_ENA_RESET */
956 /* MSP : HDTV INTERFACE GPIO line */
957 DB8500_PIN_HOG("GPIO192_AJ27", gpio_in_pd),
958 /* Accelerometer interrupt lines */
959 DB8500_PIN_HOG("GPIO82_C1", gpio_in_pu), /* ACC_INT1 */
960 DB8500_PIN_HOG("GPIO83_D3", gpio_in_pu), /* ACC_INT2 */
961 /* SD card detect GPIO pin */
962 DB8500_PIN_HOG("GPIO95_E8", gpio_in_pu),
963 /*
964 * Runtime stuff
965 * Pull up/down of some sensor GPIO pins, for proximity, HAL sensor
966 * etc.
967 */
968 DB8500_PIN("GPIO217_AH12", gpio_in_pu_slpm_gpio_nopull, "gpio-keys.0"),
969 DB8500_PIN("GPIO145_C13", gpio_in_pd_slpm_gpio_nopull, "gpio-keys.0"),
970 DB8500_PIN("GPIO139_C9", gpio_in_pu_slpm_gpio_nopull, "gpio-keys.0"),
971};
972
973static struct pinctrl_map __initdata u9500_pinmap[] = {
974 /* Mux in UART1 (just RX/TX) and set the pull-ups */
975 DB8500_MUX_HOG("u1rxtx_a_1", "u1"),
976 DB8500_PIN_HOG("GPIO4_AH6", in_pu),
977 DB8500_PIN_HOG("GPIO5_AG6", out_hi),
978 /* WLAN_IRQ line */
979 DB8500_PIN_HOG("GPIO144_B13", gpio_in_pu),
980 /* HSI */
981 DB8500_MUX_HOG("hsir_a_1", "hsi"),
982 DB8500_MUX_HOG("hsit_a_2", "hsi"),
983 DB8500_PIN_HOG("GPIO219_AG10", in_pd), /* RX FLA0 */
984 DB8500_PIN_HOG("GPIO220_AH10", in_pd), /* RX DAT0 */
985 DB8500_PIN_HOG("GPIO221_AJ11", out_lo), /* RX RDY0 */
986 DB8500_PIN_HOG("GPIO222_AJ9", out_lo), /* TX FLA0 */
987 DB8500_PIN_HOG("GPIO223_AH9", out_lo), /* TX DAT0 */
988 DB8500_PIN_HOG("GPIO224_AG9", in_pd), /* TX RDY0 */
989 DB8500_PIN_HOG("GPIO225_AG8", in_pd), /* CAWAKE0 */
990 DB8500_PIN_HOG("GPIO226_AF8", gpio_out_hi), /* ACWAKE0 */
991};
992
993static struct pinctrl_map __initdata u8500_pinmap[] = {
994 DB8500_PIN_HOG("GPIO226_AF8", gpio_out_lo), /* WLAN_PMU_EN */
995 DB8500_PIN_HOG("GPIO4_AH6", gpio_in_pu), /* WLAN_IRQ */
996};
997
998static struct pinctrl_map __initdata snowball_pinmap[] = {
999 /* Mux in SSP0 connected to AB8500, pull down RXD pin */
1000 DB8500_MUX_HOG("ssp0_a_1", "ssp0"),
1001 DB8500_PIN_HOG("GPIO145_C13", pd),
1002 /* Always drive the MC0 DAT31DIR line high on these boards */
1003 DB8500_PIN_HOG("GPIO21_AB3", out_hi),
1004 /* Mux in "SM" which is used for the SMSC911x Ethernet adapter */
1005 DB8500_MUX_HOG("sm_b_1", "sm"),
1006 /* User LED */
1007 DB8500_PIN_HOG("GPIO142_C11", gpio_out_hi),
1008 /* Drive RSTn_LAN high */
1009 DB8500_PIN_HOG("GPIO141_C12", gpio_out_hi),
1010 /* Accelerometer/Magnetometer */
1011 DB8500_PIN_HOG("GPIO163_C20", gpio_in_pu), /* ACCEL_IRQ1 */
1012 DB8500_PIN_HOG("GPIO164_B21", gpio_in_pu), /* ACCEL_IRQ2 */
1013 DB8500_PIN_HOG("GPIO165_C21", gpio_in_pu), /* MAG_DRDY */
1014 /* WLAN/GBF */
1015 DB8500_PIN_HOG("GPIO161_D21", gpio_out_lo), /* WLAN_PMU_EN */
1016 DB8500_PIN_HOG("GPIO171_D23", gpio_out_hi), /* GBF_ENA */
1017 DB8500_PIN_HOG("GPIO215_AH13", gpio_out_lo), /* WLAN_ENA */
1018 DB8500_PIN_HOG("GPIO216_AG12", gpio_in_pu), /* WLAN_IRQ */
1019};
1020
1021/*
1022 * passing "pinsfor=" in kernel cmdline allows for custom
1023 * configuration of GPIOs on u8500 derived boards.
1024 */
1025static int __init early_pinsfor(char *p)
1026{
1027 pinsfor = PINS_FOR_DEFAULT;
1028
1029 if (strcmp(p, "u9500-21") == 0)
1030 pinsfor = PINS_FOR_U9500;
1031
1032 return 0;
1033}
1034early_param("pinsfor", early_pinsfor);
1035
1036int pins_for_u9500(void)
1037{
1038 if (pinsfor == PINS_FOR_U9500)
1039 return 1;
1040
1041 return 0;
1042}
1043
1044static void __init mop500_href_family_pinmaps_init(void)
1045{
1046 switch (pinsfor) {
1047 case PINS_FOR_U9500:
1048 pinctrl_register_mappings(u9500_pinmap,
1049 ARRAY_SIZE(u9500_pinmap));
1050 break;
1051 case PINS_FOR_DEFAULT:
1052 pinctrl_register_mappings(u8500_pinmap,
1053 ARRAY_SIZE(u8500_pinmap));
1054 default:
1055 break;
1056 }
1057}
1058
1059void __init mop500_pinmaps_init(void) 271void __init mop500_pinmaps_init(void)
1060{ 272{
1061 pinctrl_register_mappings(mop500_family_pinmap,
1062 ARRAY_SIZE(mop500_family_pinmap));
1063 pinctrl_register_mappings(mop500_pinmap,
1064 ARRAY_SIZE(mop500_pinmap));
1065 mop500_href_family_pinmaps_init();
1066 if (machine_is_u8520()) 273 if (machine_is_u8520())
1067 pinctrl_register_mappings(ab8505_pinmap, 274 pinctrl_register_mappings(ab8505_pinmap,
1068 ARRAY_SIZE(ab8505_pinmap)); 275 ARRAY_SIZE(ab8505_pinmap));
@@ -1073,23 +280,12 @@ void __init mop500_pinmaps_init(void)
1073 280
1074void __init snowball_pinmaps_init(void) 281void __init snowball_pinmaps_init(void)
1075{ 282{
1076 pinctrl_register_mappings(mop500_family_pinmap,
1077 ARRAY_SIZE(mop500_family_pinmap));
1078 pinctrl_register_mappings(snowball_pinmap,
1079 ARRAY_SIZE(snowball_pinmap));
1080 pinctrl_register_mappings(u8500_pinmap,
1081 ARRAY_SIZE(u8500_pinmap));
1082 pinctrl_register_mappings(ab8500_pinmap, 283 pinctrl_register_mappings(ab8500_pinmap,
1083 ARRAY_SIZE(ab8500_pinmap)); 284 ARRAY_SIZE(ab8500_pinmap));
1084} 285}
1085 286
1086void __init hrefv60_pinmaps_init(void) 287void __init hrefv60_pinmaps_init(void)
1087{ 288{
1088 pinctrl_register_mappings(mop500_family_pinmap,
1089 ARRAY_SIZE(mop500_family_pinmap));
1090 pinctrl_register_mappings(hrefv60_pinmap,
1091 ARRAY_SIZE(hrefv60_pinmap));
1092 mop500_href_family_pinmaps_init();
1093 pinctrl_register_mappings(ab8500_pinmap, 289 pinctrl_register_mappings(ab8500_pinmap,
1094 ARRAY_SIZE(ab8500_pinmap)); 290 ARRAY_SIZE(ab8500_pinmap));
1095} 291}
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.c b/arch/arm/mach-ux500/board-mop500-regulators.c
index 0dc44c683427..a4e139aa2441 100644
--- a/arch/arm/mach-ux500/board-mop500-regulators.c
+++ b/arch/arm/mach-ux500/board-mop500-regulators.c
@@ -30,20 +30,6 @@ struct regulator_init_data gpio_en_3v3_regulator = {
30 .consumer_supplies = gpio_en_3v3_consumers, 30 .consumer_supplies = gpio_en_3v3_consumers,
31}; 31};
32 32
33static struct regulator_consumer_supply sdi0_reg_consumers[] = {
34 REGULATOR_SUPPLY("vqmmc", "sdi0"),
35};
36
37struct regulator_init_data sdi0_reg_init_data = {
38 .constraints = {
39 .min_uV = 1800000,
40 .max_uV = 2900000,
41 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE|REGULATOR_CHANGE_STATUS,
42 },
43 .num_consumer_supplies = ARRAY_SIZE(sdi0_reg_consumers),
44 .consumer_supplies = sdi0_reg_consumers,
45};
46
47/* 33/*
48 * TPS61052 regulator 34 * TPS61052 regulator
49 */ 35 */
diff --git a/arch/arm/mach-ux500/board-mop500-regulators.h b/arch/arm/mach-ux500/board-mop500-regulators.h
index 039f5132c370..9bece38fe933 100644
--- a/arch/arm/mach-ux500/board-mop500-regulators.h
+++ b/arch/arm/mach-ux500/board-mop500-regulators.h
@@ -18,7 +18,6 @@ extern struct ab8500_regulator_platform_data ab8500_regulator_plat_data;
18extern struct ab8500_regulator_platform_data ab8505_regulator_plat_data; 18extern struct ab8500_regulator_platform_data ab8505_regulator_plat_data;
19extern struct regulator_init_data tps61052_regulator; 19extern struct regulator_init_data tps61052_regulator;
20extern struct regulator_init_data gpio_en_3v3_regulator; 20extern struct regulator_init_data gpio_en_3v3_regulator;
21extern struct regulator_init_data sdi0_reg_init_data;
22 21
23void mop500_regulator_init(void); 22void mop500_regulator_init(void);
24 23
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index 26600a1c5319..fcbf3a13a539 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -14,10 +14,8 @@
14#include <linux/platform_data/dma-ste-dma40.h> 14#include <linux/platform_data/dma-ste-dma40.h>
15 15
16#include <asm/mach-types.h> 16#include <asm/mach-types.h>
17#include "devices.h"
18 17
19#include "db8500-regs.h" 18#include "db8500-regs.h"
20#include "devices-db8500.h"
21#include "board-mop500.h" 19#include "board-mop500.h"
22#include "ste-dma40-db8500.h" 20#include "ste-dma40-db8500.h"
23 21
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
deleted file mode 100644
index 514d40b625a4..000000000000
--- a/arch/arm/mach-ux500/board-mop500.c
+++ /dev/null
@@ -1,78 +0,0 @@
1/*
2 * Copyright (C) 2008-2012 ST-Ericsson
3 *
4 * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2, as
8 * published by the Free Software Foundation.
9 *
10 */
11#include <linux/kernel.h>
12#include <linux/init.h>
13#include <linux/interrupt.h>
14#include <linux/platform_device.h>
15#include <linux/clk.h>
16#include <linux/io.h>
17#include <linux/platform_data/db8500_thermal.h>
18#include <linux/amba/bus.h>
19#include <linux/amba/pl022.h>
20#include <linux/mfd/abx500/ab8500.h>
21#include <linux/regulator/ab8500.h>
22#include <linux/regulator/fixed.h>
23#include <linux/regulator/driver.h>
24#include <linux/mfd/tps6105x.h>
25#include <linux/platform_data/leds-lp55xx.h>
26#include <linux/input.h>
27#include <linux/delay.h>
28#include <linux/leds.h>
29#include <linux/pinctrl/consumer.h>
30#include <linux/platform_data/pinctrl-nomadik.h>
31#include <linux/platform_data/dma-ste-dma40.h>
32
33#include <asm/mach-types.h>
34
35#include "setup.h"
36#include "devices.h"
37#include "irqs.h"
38
39#include "ste-dma40-db8500.h"
40#include "db8500-regs.h"
41#include "devices-db8500.h"
42#include "board-mop500.h"
43#include "board-mop500-regulators.h"
44
45struct ab8500_platform_data ab8500_platdata = {
46 .irq_base = MOP500_AB8500_IRQ_BASE,
47 .regulator = &ab8500_regulator_plat_data,
48};
49
50#ifdef CONFIG_STE_DMA40
51static struct stedma40_chan_cfg ssp0_dma_cfg_rx = {
52 .mode = STEDMA40_MODE_LOGICAL,
53 .dir = DMA_DEV_TO_MEM,
54 .dev_type = DB8500_DMA_DEV8_SSP0,
55};
56
57static struct stedma40_chan_cfg ssp0_dma_cfg_tx = {
58 .mode = STEDMA40_MODE_LOGICAL,
59 .dir = DMA_MEM_TO_DEV,
60 .dev_type = DB8500_DMA_DEV8_SSP0,
61};
62#endif
63
64struct pl022_ssp_controller ssp0_plat = {
65 .bus_id = 0,
66#ifdef CONFIG_STE_DMA40
67 .enable_dma = 1,
68 .dma_filter = stedma40_filter,
69 .dma_rx_param = &ssp0_dma_cfg_rx,
70 .dma_tx_param = &ssp0_dma_cfg_tx,
71#else
72 .enable_dma = 0,
73#endif
74 /* on this platform, gpio 31,142,144,214 &
75 * 224 are connected as chip selects
76 */
77 .num_chipselect = 5,
78};
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h
index 511d6febbe99..d48e8662c676 100644
--- a/arch/arm/mach-ux500/board-mop500.h
+++ b/arch/arm/mach-ux500/board-mop500.h
@@ -87,7 +87,6 @@ extern struct msp_i2s_platform_data msp0_platform_data;
87extern struct msp_i2s_platform_data msp1_platform_data; 87extern struct msp_i2s_platform_data msp1_platform_data;
88extern struct msp_i2s_platform_data msp2_platform_data; 88extern struct msp_i2s_platform_data msp2_platform_data;
89extern struct msp_i2s_platform_data msp3_platform_data; 89extern struct msp_i2s_platform_data msp3_platform_data;
90extern struct pl022_ssp_controller ssp0_plat;
91 90
92void __init mop500_pinmaps_init(void); 91void __init mop500_pinmaps_init(void);
93void __init snowball_pinmaps_init(void); 92void __init snowball_pinmaps_init(void);
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 12c7e5c03ea4..bc8a6183560d 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -21,21 +21,32 @@
21#include <linux/of.h> 21#include <linux/of.h>
22#include <linux/of_platform.h> 22#include <linux/of_platform.h>
23#include <linux/regulator/machine.h> 23#include <linux/regulator/machine.h>
24#include <linux/platform_data/pinctrl-nomadik.h>
25#include <linux/random.h> 24#include <linux/random.h>
26 25
27#include <asm/pmu.h> 26#include <asm/pmu.h>
28#include <asm/mach/map.h> 27#include <asm/mach/map.h>
29 28
30#include "setup.h" 29#include "setup.h"
31#include "devices.h"
32#include "irqs.h" 30#include "irqs.h"
33 31
34#include "devices-db8500.h" 32#include "board-mop500-regulators.h"
35#include "db8500-regs.h"
36#include "board-mop500.h" 33#include "board-mop500.h"
34#include "db8500-regs.h"
37#include "id.h" 35#include "id.h"
38 36
37struct ab8500_platform_data ab8500_platdata = {
38 .irq_base = MOP500_AB8500_IRQ_BASE,
39 .regulator = &ab8500_regulator_plat_data,
40};
41
42struct prcmu_pdata db8500_prcmu_pdata = {
43 .ab_platdata = &ab8500_platdata,
44 .ab_irq = IRQ_DB8500_AB8500,
45 .irq_base = IRQ_PRCMU_BASE,
46 .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET,
47 .legacy_offset = DB8500_PRCMU_LEGACY_OFFSET,
48};
49
39/* minimum static i/o mapping required to boot U8500 platforms */ 50/* minimum static i/o mapping required to boot U8500 platforms */
40static struct map_desc u8500_uart_io_desc[] __initdata = { 51static struct map_desc u8500_uart_io_desc[] __initdata = {
41 __IO_DEV_DESC(U8500_UART0_BASE, SZ_4K), 52 __IO_DEV_DESC(U8500_UART0_BASE, SZ_4K),
@@ -159,17 +170,10 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
159 OF_DEV_AUXDATA("stericsson,ux500-hash", 0xa03c2000, "hash1", NULL), 170 OF_DEV_AUXDATA("stericsson,ux500-hash", 0xa03c2000, "hash1", NULL),
160 OF_DEV_AUXDATA("stericsson,snd-soc-mop500", 0, "snd-soc-mop500.0", 171 OF_DEV_AUXDATA("stericsson,snd-soc-mop500", 0, "snd-soc-mop500.0",
161 NULL), 172 NULL),
162 /* Requires device name bindings. */
163 OF_DEV_AUXDATA("stericsson,db8500-pinctrl", U8500_PRCMU_BASE,
164 "pinctrl-db8500", NULL),
165 {}, 173 {},
166}; 174};
167 175
168static struct of_dev_auxdata u8540_auxdata_lookup[] __initdata = { 176static struct of_dev_auxdata u8540_auxdata_lookup[] __initdata = {
169 /* Requires DMA bindings. */
170 OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", NULL),
171 OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", NULL),
172 OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", NULL),
173 OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu", 177 OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
174 &db8500_prcmu_pdata), 178 &db8500_prcmu_pdata),
175 {}, 179 {},
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index f84d4397896b..d11ac4bf336c 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -25,7 +25,6 @@
25#include <asm/mach/map.h> 25#include <asm/mach/map.h>
26 26
27#include "setup.h" 27#include "setup.h"
28#include "devices.h"
29 28
30#include "board-mop500.h" 29#include "board-mop500.h"
31#include "db8500-regs.h" 30#include "db8500-regs.h"
@@ -64,12 +63,7 @@ void __init ux500_init_irq(void)
64 } else 63 } else
65 ux500_unknown_soc(); 64 ux500_unknown_soc();
66 65
67#ifdef CONFIG_OF 66 irqchip_init();
68 if (of_have_populated_dt())
69 irqchip_init();
70 else
71#endif
72 gic_init(0, 29, dist_base, cpu_base);
73 67
74 /* 68 /*
75 * Init clocks here so that they are available for system timer 69 * Init clocks here so that they are available for system timer
@@ -79,16 +73,11 @@ void __init ux500_init_irq(void)
79 prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1); 73 prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
80 ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1); 74 ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
81 75
82 if (of_have_populated_dt()) 76 u8500_of_clk_init(U8500_CLKRST1_BASE,
83 u8500_of_clk_init(U8500_CLKRST1_BASE, 77 U8500_CLKRST2_BASE,
84 U8500_CLKRST2_BASE, 78 U8500_CLKRST3_BASE,
85 U8500_CLKRST3_BASE, 79 U8500_CLKRST5_BASE,
86 U8500_CLKRST5_BASE, 80 U8500_CLKRST6_BASE);
87 U8500_CLKRST6_BASE);
88 else
89 u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
90 U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
91 U8500_CLKRST6_BASE);
92 } else if (cpu_is_u9540()) { 81 } else if (cpu_is_u9540()) {
93 prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1); 82 prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
94 ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1); 83 ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c
deleted file mode 100644
index c59f89d058ff..000000000000
--- a/arch/arm/mach-ux500/devices-db8500.c
+++ /dev/null
@@ -1,28 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2010
3 *
4 * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
5 * License terms: GNU General Public License (GPL) version 2
6 */
7
8#include <linux/kernel.h>
9#include <linux/platform_device.h>
10#include <linux/interrupt.h>
11#include <linux/io.h>
12#include <linux/amba/bus.h>
13#include <linux/amba/pl022.h>
14#include <linux/mfd/dbx500-prcmu.h>
15
16#include "setup.h"
17#include "irqs.h"
18
19#include "db8500-regs.h"
20#include "devices-db8500.h"
21
22struct prcmu_pdata db8500_prcmu_pdata = {
23 .ab_platdata = &ab8500_platdata,
24 .ab_irq = IRQ_DB8500_AB8500,
25 .irq_base = IRQ_PRCMU_BASE,
26 .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET,
27 .legacy_offset = DB8500_PRCMU_LEGACY_OFFSET,
28};
diff --git a/arch/arm/mach-ux500/devices-db8500.h b/arch/arm/mach-ux500/devices-db8500.h
deleted file mode 100644
index b8ffc9979bb2..000000000000
--- a/arch/arm/mach-ux500/devices-db8500.h
+++ /dev/null
@@ -1,19 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2010
3 *
4 * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
5 * License terms: GNU General Public License (GPL), version 2.
6 */
7
8#ifndef __DEVICES_DB8500_H
9#define __DEVICES_DB8500_H
10
11#include "irqs.h"
12#include "db8500-regs.h"
13
14struct platform_device;
15
16extern struct ab8500_platform_data ab8500_platdata;
17extern struct prcmu_pdata db8500_prcmu_pdata;
18
19#endif
diff --git a/arch/arm/mach-ux500/devices.c b/arch/arm/mach-ux500/devices.c
deleted file mode 100644
index 0f9e52b95935..000000000000
--- a/arch/arm/mach-ux500/devices.c
+++ /dev/null
@@ -1,26 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2010
3 *
4 * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
5 * License terms: GNU General Public License (GPL) version 2
6 */
7
8#include <linux/kernel.h>
9#include <linux/platform_device.h>
10#include <linux/interrupt.h>
11#include <linux/io.h>
12#include <linux/amba/bus.h>
13
14#include "setup.h"
15
16#include "db8500-regs.h"
17
18void __init amba_add_devices(struct amba_device *devs[], int num)
19{
20 int i;
21
22 for (i = 0; i < num; i++) {
23 struct amba_device *d = devs[i];
24 amba_device_register(d, &iomem_resource);
25 }
26}
diff --git a/arch/arm/mach-ux500/devices.h b/arch/arm/mach-ux500/devices.h
deleted file mode 100644
index 5bca7c605cd6..000000000000
--- a/arch/arm/mach-ux500/devices.h
+++ /dev/null
@@ -1,15 +0,0 @@
1/*
2 * Copyright (C) ST-Ericsson SA 2010
3 *
4 * License terms: GNU General Public License (GPL) version 2
5 */
6
7#ifndef __ASM_ARCH_DEVICES_H__
8#define __ASM_ARCH_DEVICES_H__
9
10struct platform_device;
11struct amba_device;
12
13extern struct amba_device ux500_pl031_device;
14
15#endif
diff --git a/arch/arm/mach-ux500/setup.h b/arch/arm/mach-ux500/setup.h
index b1dd8584bed4..2dea8b59d222 100644
--- a/arch/arm/mach-ux500/setup.h
+++ b/arch/arm/mach-ux500/setup.h
@@ -19,17 +19,11 @@
19void ux500_restart(enum reboot_mode mode, const char *cmd); 19void ux500_restart(enum reboot_mode mode, const char *cmd);
20 20
21void __init ux500_map_io(void); 21void __init ux500_map_io(void);
22extern void __init u8500_map_io(void);
23
24extern struct device * __init u8500_init_devices(void);
25 22
26extern void __init ux500_init_irq(void); 23extern void __init ux500_init_irq(void);
27 24
28extern struct device *ux500_soc_device_init(const char *soc_id); 25extern struct device *ux500_soc_device_init(const char *soc_id);
29 26
30struct amba_device;
31extern void __init amba_add_devices(struct amba_device *devs[], int num);
32
33extern void ux500_timer_init(void); 27extern void ux500_timer_init(void);
34 28
35#define __IO_DEV_DESC(x, sz) { \ 29#define __IO_DEV_DESC(x, sz) { \
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index 05a4ff78b3bd..87efda0aa348 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -10,40 +10,12 @@
10#include <linux/clocksource.h> 10#include <linux/clocksource.h>
11#include <linux/of.h> 11#include <linux/of.h>
12#include <linux/of_address.h> 12#include <linux/of_address.h>
13#include <linux/platform_data/clocksource-nomadik-mtu.h>
14
15#include <asm/smp_twd.h>
16 13
17#include "setup.h" 14#include "setup.h"
18#include "irqs.h"
19 15
20#include "db8500-regs.h" 16#include "db8500-regs.h"
21#include "id.h" 17#include "id.h"
22 18
23#ifdef CONFIG_HAVE_ARM_TWD
24static DEFINE_TWD_LOCAL_TIMER(u8500_twd_local_timer,
25 U8500_TWD_BASE, IRQ_LOCALTIMER);
26
27static void __init ux500_twd_init(void)
28{
29 struct twd_local_timer *twd_local_timer;
30 int err;
31
32 /* Use this to switch local timer base if changed in new ASICs */
33 twd_local_timer = &u8500_twd_local_timer;
34
35 if (of_have_populated_dt())
36 clocksource_of_init();
37 else {
38 err = twd_local_timer_register(twd_local_timer);
39 if (err)
40 pr_err("twd_local_timer_register failed %d\n", err);
41 }
42}
43#else
44#define ux500_twd_init() do { } while(0)
45#endif
46
47const static struct of_device_id prcmu_timer_of_match[] __initconst = { 19const static struct of_device_id prcmu_timer_of_match[] __initconst = {
48 { .compatible = "stericsson,db8500-prcmu-timer-4", }, 20 { .compatible = "stericsson,db8500-prcmu-timer-4", },
49 { }, 21 { },
@@ -51,54 +23,26 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {
51 23
52void __init ux500_timer_init(void) 24void __init ux500_timer_init(void)
53{ 25{
54 void __iomem *mtu_timer_base;
55 void __iomem *prcmu_timer_base; 26 void __iomem *prcmu_timer_base;
56 void __iomem *tmp_base; 27 void __iomem *tmp_base;
57 struct device_node *np; 28 struct device_node *np;
58 29
59 if (cpu_is_u8500_family() || cpu_is_ux540_family()) { 30 if (cpu_is_u8500_family() || cpu_is_ux540_family())
60 mtu_timer_base = __io_address(U8500_MTU0_BASE);
61 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE); 31 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
62 } else { 32 else
63 ux500_unknown_soc(); 33 ux500_unknown_soc();
64 }
65 34
66 /* TODO: Once MTU has been DT:ed place code above into else. */ 35 np = of_find_matching_node(NULL, prcmu_timer_of_match);
67 if (of_have_populated_dt()) { 36 if (!np)
68#ifdef CONFIG_OF 37 goto dt_fail;
69 np = of_find_matching_node(NULL, prcmu_timer_of_match);
70 if (!np)
71#endif
72 goto dt_fail;
73 38
74 tmp_base = of_iomap(np, 0); 39 tmp_base = of_iomap(np, 0);
75 if (!tmp_base) 40 if (!tmp_base)
76 goto dt_fail; 41 goto dt_fail;
77 42
78 prcmu_timer_base = tmp_base; 43 prcmu_timer_base = tmp_base;
79 }
80 44
81dt_fail: 45dt_fail:
82 /* Doing it the old fashioned way. */
83
84 /*
85 * Here we register the timerblocks active in the system.
86 * Localtimers (twd) is started when both cpu is up and running.
87 * MTU register a clocksource, clockevent and sched_clock.
88 * Since the MTU is located in the VAPE power domain
89 * it will be cleared in sleep which makes it unsuitable.
90 * We however need it as a timer tick (clockevent)
91 * during boot to calibrate delay until twd is started.
92 * RTC-RTT have problems as timer tick during boot since it is
93 * depending on delay which is not yet calibrated. RTC-RTT is in the
94 * always-on powerdomain and is used as clockevent instead of twd when
95 * sleeping.
96 * The PRCMU timer 4 register a clocksource and
97 * sched_clock with higher rating then MTU since is always-on.
98 *
99 */
100 if (!of_have_populated_dt())
101 nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
102 clksrc_dbx500_prcmu_init(prcmu_timer_base); 46 clksrc_dbx500_prcmu_init(prcmu_timer_base);
103 ux500_twd_init(); 47 clocksource_of_init();
104} 48}
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index ace7309c4369..a3b7c5dd3c16 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -36,6 +36,7 @@ obj-$(CONFIG_PLAT_SAMSUNG) += samsung/
36obj-$(CONFIG_COMMON_CLK_XGENE) += clk-xgene.o 36obj-$(CONFIG_COMMON_CLK_XGENE) += clk-xgene.o
37obj-$(CONFIG_COMMON_CLK_KEYSTONE) += keystone/ 37obj-$(CONFIG_COMMON_CLK_KEYSTONE) += keystone/
38obj-$(CONFIG_COMMON_CLK_AT91) += at91/ 38obj-$(CONFIG_COMMON_CLK_AT91) += at91/
39obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += shmobile/
39 40
40obj-$(CONFIG_X86) += x86/ 41obj-$(CONFIG_X86) += x86/
41 42
diff --git a/drivers/clk/shmobile/Makefile b/drivers/clk/shmobile/Makefile
new file mode 100644
index 000000000000..706adc6ae70c
--- /dev/null
+++ b/drivers/clk/shmobile/Makefile
@@ -0,0 +1,7 @@
1obj-$(CONFIG_ARCH_R8A7790) += clk-rcar-gen2.o
2obj-$(CONFIG_ARCH_R8A7791) += clk-rcar-gen2.o
3obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += clk-div6.o
4obj-$(CONFIG_ARCH_SHMOBILE_MULTI) += clk-mstp.o
5
6# for emply built-in.o
7obj-n := dummy
diff --git a/drivers/clk/shmobile/clk-div6.c b/drivers/clk/shmobile/clk-div6.c
new file mode 100644
index 000000000000..aac4756ec52e
--- /dev/null
+++ b/drivers/clk/shmobile/clk-div6.c
@@ -0,0 +1,185 @@
1/*
2 * r8a7790 Common Clock Framework support
3 *
4 * Copyright (C) 2013 Renesas Solutions Corp.
5 *
6 * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; version 2 of the License.
11 */
12
13#include <linux/clk-provider.h>
14#include <linux/clkdev.h>
15#include <linux/init.h>
16#include <linux/io.h>
17#include <linux/kernel.h>
18#include <linux/of.h>
19#include <linux/of_address.h>
20
21#define CPG_DIV6_CKSTP BIT(8)
22#define CPG_DIV6_DIV(d) ((d) & 0x3f)
23#define CPG_DIV6_DIV_MASK 0x3f
24
25/**
26 * struct div6_clock - MSTP gating clock
27 * @hw: handle between common and hardware-specific interfaces
28 * @reg: IO-remapped register
29 * @div: divisor value (1-64)
30 */
31struct div6_clock {
32 struct clk_hw hw;
33 void __iomem *reg;
34 unsigned int div;
35};
36
37#define to_div6_clock(_hw) container_of(_hw, struct div6_clock, hw)
38
39static int cpg_div6_clock_enable(struct clk_hw *hw)
40{
41 struct div6_clock *clock = to_div6_clock(hw);
42
43 clk_writel(CPG_DIV6_DIV(clock->div - 1), clock->reg);
44
45 return 0;
46}
47
48static void cpg_div6_clock_disable(struct clk_hw *hw)
49{
50 struct div6_clock *clock = to_div6_clock(hw);
51
52 /* DIV6 clocks require the divisor field to be non-zero when stopping
53 * the clock.
54 */
55 clk_writel(CPG_DIV6_CKSTP | CPG_DIV6_DIV(CPG_DIV6_DIV_MASK),
56 clock->reg);
57}
58
59static int cpg_div6_clock_is_enabled(struct clk_hw *hw)
60{
61 struct div6_clock *clock = to_div6_clock(hw);
62
63 return !(clk_readl(clock->reg) & CPG_DIV6_CKSTP);
64}
65
66static unsigned long cpg_div6_clock_recalc_rate(struct clk_hw *hw,
67 unsigned long parent_rate)
68{
69 struct div6_clock *clock = to_div6_clock(hw);
70 unsigned int div = (clk_readl(clock->reg) & CPG_DIV6_DIV_MASK) + 1;
71
72 return parent_rate / div;
73}
74
75static unsigned int cpg_div6_clock_calc_div(unsigned long rate,
76 unsigned long parent_rate)
77{
78 unsigned int div;
79
80 div = DIV_ROUND_CLOSEST(parent_rate, rate);
81 return clamp_t(unsigned int, div, 1, 64);
82}
83
84static long cpg_div6_clock_round_rate(struct clk_hw *hw, unsigned long rate,
85 unsigned long *parent_rate)
86{
87 unsigned int div = cpg_div6_clock_calc_div(rate, *parent_rate);
88
89 return *parent_rate / div;
90}
91
92static int cpg_div6_clock_set_rate(struct clk_hw *hw, unsigned long rate,
93 unsigned long parent_rate)
94{
95 struct div6_clock *clock = to_div6_clock(hw);
96 unsigned int div = cpg_div6_clock_calc_div(rate, parent_rate);
97
98 clock->div = div;
99
100 /* Only program the new divisor if the clock isn't stopped. */
101 if (!(clk_readl(clock->reg) & CPG_DIV6_CKSTP))
102 clk_writel(CPG_DIV6_DIV(clock->div - 1), clock->reg);
103
104 return 0;
105}
106
107static const struct clk_ops cpg_div6_clock_ops = {
108 .enable = cpg_div6_clock_enable,
109 .disable = cpg_div6_clock_disable,
110 .is_enabled = cpg_div6_clock_is_enabled,
111 .recalc_rate = cpg_div6_clock_recalc_rate,
112 .round_rate = cpg_div6_clock_round_rate,
113 .set_rate = cpg_div6_clock_set_rate,
114};
115
116static void __init cpg_div6_clock_init(struct device_node *np)
117{
118 struct clk_init_data init;
119 struct div6_clock *clock;
120 const char *parent_name;
121 const char *name;
122 struct clk *clk;
123 int ret;
124
125 clock = kzalloc(sizeof(*clock), GFP_KERNEL);
126 if (!clock) {
127 pr_err("%s: failed to allocate %s DIV6 clock\n",
128 __func__, np->name);
129 return;
130 }
131
132 /* Remap the clock register and read the divisor. Disabling the
133 * clock overwrites the divisor, so we need to cache its value for the
134 * enable operation.
135 */
136 clock->reg = of_iomap(np, 0);
137 if (clock->reg == NULL) {
138 pr_err("%s: failed to map %s DIV6 clock register\n",
139 __func__, np->name);
140 goto error;
141 }
142
143 clock->div = (clk_readl(clock->reg) & CPG_DIV6_DIV_MASK) + 1;
144
145 /* Parse the DT properties. */
146 ret = of_property_read_string(np, "clock-output-names", &name);
147 if (ret < 0) {
148 pr_err("%s: failed to get %s DIV6 clock output name\n",
149 __func__, np->name);
150 goto error;
151 }
152
153 parent_name = of_clk_get_parent_name(np, 0);
154 if (parent_name == NULL) {
155 pr_err("%s: failed to get %s DIV6 clock parent name\n",
156 __func__, np->name);
157 goto error;
158 }
159
160 /* Register the clock. */
161 init.name = name;
162 init.ops = &cpg_div6_clock_ops;
163 init.flags = CLK_IS_BASIC;
164 init.parent_names = &parent_name;
165 init.num_parents = 1;
166
167 clock->hw.init = &init;
168
169 clk = clk_register(NULL, &clock->hw);
170 if (IS_ERR(clk)) {
171 pr_err("%s: failed to register %s DIV6 clock (%ld)\n",
172 __func__, np->name, PTR_ERR(clk));
173 goto error;
174 }
175
176 of_clk_add_provider(np, of_clk_src_simple_get, clk);
177
178 return;
179
180error:
181 if (clock->reg)
182 iounmap(clock->reg);
183 kfree(clock);
184}
185CLK_OF_DECLARE(cpg_div6_clk, "renesas,cpg-div6-clock", cpg_div6_clock_init);
diff --git a/drivers/clk/shmobile/clk-mstp.c b/drivers/clk/shmobile/clk-mstp.c
new file mode 100644
index 000000000000..e576b60de20e
--- /dev/null
+++ b/drivers/clk/shmobile/clk-mstp.c
@@ -0,0 +1,229 @@
1/*
2 * R-Car MSTP clocks
3 *
4 * Copyright (C) 2013 Ideas On Board SPRL
5 *
6 * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; version 2 of the License.
11 */
12
13#include <linux/clk-provider.h>
14#include <linux/clkdev.h>
15#include <linux/io.h>
16#include <linux/of.h>
17#include <linux/of_address.h>
18#include <linux/spinlock.h>
19
20/*
21 * MSTP clocks. We can't use standard gate clocks as we need to poll on the
22 * status register when enabling the clock.
23 */
24
25#define MSTP_MAX_CLOCKS 32
26
27/**
28 * struct mstp_clock_group - MSTP gating clocks group
29 *
30 * @data: clocks in this group
31 * @smstpcr: module stop control register
32 * @mstpsr: module stop status register (optional)
33 * @lock: protects writes to SMSTPCR
34 */
35struct mstp_clock_group {
36 struct clk_onecell_data data;
37 void __iomem *smstpcr;
38 void __iomem *mstpsr;
39 spinlock_t lock;
40};
41
42/**
43 * struct mstp_clock - MSTP gating clock
44 * @hw: handle between common and hardware-specific interfaces
45 * @bit_index: control bit index
46 * @group: MSTP clocks group
47 */
48struct mstp_clock {
49 struct clk_hw hw;
50 u32 bit_index;
51 struct mstp_clock_group *group;
52};
53
54#define to_mstp_clock(_hw) container_of(_hw, struct mstp_clock, hw)
55
56static int cpg_mstp_clock_endisable(struct clk_hw *hw, bool enable)
57{
58 struct mstp_clock *clock = to_mstp_clock(hw);
59 struct mstp_clock_group *group = clock->group;
60 u32 bitmask = BIT(clock->bit_index);
61 unsigned long flags;
62 unsigned int i;
63 u32 value;
64
65 spin_lock_irqsave(&group->lock, flags);
66
67 value = clk_readl(group->smstpcr);
68 if (enable)
69 value &= ~bitmask;
70 else
71 value |= bitmask;
72 clk_writel(value, group->smstpcr);
73
74 spin_unlock_irqrestore(&group->lock, flags);
75
76 if (!enable || !group->mstpsr)
77 return 0;
78
79 for (i = 1000; i > 0; --i) {
80 if (!(clk_readl(group->mstpsr) & bitmask))
81 break;
82 cpu_relax();
83 }
84
85 if (!i) {
86 pr_err("%s: failed to enable %p[%d]\n", __func__,
87 group->smstpcr, clock->bit_index);
88 return -ETIMEDOUT;
89 }
90
91 return 0;
92}
93
94static int cpg_mstp_clock_enable(struct clk_hw *hw)
95{
96 return cpg_mstp_clock_endisable(hw, true);
97}
98
99static void cpg_mstp_clock_disable(struct clk_hw *hw)
100{
101 cpg_mstp_clock_endisable(hw, false);
102}
103
104static int cpg_mstp_clock_is_enabled(struct clk_hw *hw)
105{
106 struct mstp_clock *clock = to_mstp_clock(hw);
107 struct mstp_clock_group *group = clock->group;
108 u32 value;
109
110 if (group->mstpsr)
111 value = clk_readl(group->mstpsr);
112 else
113 value = clk_readl(group->smstpcr);
114
115 return !!(value & BIT(clock->bit_index));
116}
117
118static const struct clk_ops cpg_mstp_clock_ops = {
119 .enable = cpg_mstp_clock_enable,
120 .disable = cpg_mstp_clock_disable,
121 .is_enabled = cpg_mstp_clock_is_enabled,
122};
123
124static struct clk * __init
125cpg_mstp_clock_register(const char *name, const char *parent_name,
126 unsigned int index, struct mstp_clock_group *group)
127{
128 struct clk_init_data init;
129 struct mstp_clock *clock;
130 struct clk *clk;
131
132 clock = kzalloc(sizeof(*clock), GFP_KERNEL);
133 if (!clock) {
134 pr_err("%s: failed to allocate MSTP clock.\n", __func__);
135 return ERR_PTR(-ENOMEM);
136 }
137
138 init.name = name;
139 init.ops = &cpg_mstp_clock_ops;
140 init.flags = CLK_IS_BASIC;
141 init.parent_names = &parent_name;
142 init.num_parents = 1;
143
144 clock->bit_index = index;
145 clock->group = group;
146 clock->hw.init = &init;
147
148 clk = clk_register(NULL, &clock->hw);
149
150 if (IS_ERR(clk))
151 kfree(clock);
152
153 return clk;
154}
155
156static void __init cpg_mstp_clocks_init(struct device_node *np)
157{
158 struct mstp_clock_group *group;
159 struct clk **clks;
160 unsigned int i;
161
162 group = kzalloc(sizeof(*group), GFP_KERNEL);
163 clks = kzalloc(MSTP_MAX_CLOCKS * sizeof(*clks), GFP_KERNEL);
164 if (group == NULL || clks == NULL) {
165 kfree(group);
166 kfree(clks);
167 pr_err("%s: failed to allocate group\n", __func__);
168 return;
169 }
170
171 spin_lock_init(&group->lock);
172 group->data.clks = clks;
173
174 group->smstpcr = of_iomap(np, 0);
175 group->mstpsr = of_iomap(np, 1);
176
177 if (group->smstpcr == NULL) {
178 pr_err("%s: failed to remap SMSTPCR\n", __func__);
179 kfree(group);
180 kfree(clks);
181 return;
182 }
183
184 for (i = 0; i < MSTP_MAX_CLOCKS; ++i) {
185 const char *parent_name;
186 const char *name;
187 u32 clkidx;
188 int ret;
189
190 /* Skip clocks with no name. */
191 ret = of_property_read_string_index(np, "clock-output-names",
192 i, &name);
193 if (ret < 0 || strlen(name) == 0)
194 continue;
195
196 parent_name = of_clk_get_parent_name(np, i);
197 ret = of_property_read_u32_index(np, "renesas,clock-indices", i,
198 &clkidx);
199 if (parent_name == NULL || ret < 0)
200 break;
201
202 if (clkidx >= MSTP_MAX_CLOCKS) {
203 pr_err("%s: invalid clock %s %s index %u)\n",
204 __func__, np->name, name, clkidx);
205 continue;
206 }
207
208 clks[clkidx] = cpg_mstp_clock_register(name, parent_name, i,
209 group);
210 if (!IS_ERR(clks[clkidx])) {
211 group->data.clk_num = max(group->data.clk_num, clkidx);
212 /*
213 * Register a clkdev to let board code retrieve the
214 * clock by name and register aliases for non-DT
215 * devices.
216 *
217 * FIXME: Remove this when all devices that require a
218 * clock will be instantiated from DT.
219 */
220 clk_register_clkdev(clks[clkidx], name, NULL);
221 } else {
222 pr_err("%s: failed to register %s %s clock (%ld)\n",
223 __func__, np->name, name, PTR_ERR(clks[clkidx]));
224 }
225 }
226
227 of_clk_add_provider(np, of_clk_src_onecell_get, &group->data);
228}
229CLK_OF_DECLARE(cpg_mstp_clks, "renesas,cpg-mstp-clocks", cpg_mstp_clocks_init);
diff --git a/drivers/clk/shmobile/clk-rcar-gen2.c b/drivers/clk/shmobile/clk-rcar-gen2.c
new file mode 100644
index 000000000000..a59ec217a124
--- /dev/null
+++ b/drivers/clk/shmobile/clk-rcar-gen2.c
@@ -0,0 +1,298 @@
1/*
2 * rcar_gen2 Core CPG Clocks
3 *
4 * Copyright (C) 2013 Ideas On Board SPRL
5 *
6 * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; version 2 of the License.
11 */
12
13#include <linux/clk-provider.h>
14#include <linux/clkdev.h>
15#include <linux/clk/shmobile.h>
16#include <linux/init.h>
17#include <linux/kernel.h>
18#include <linux/math64.h>
19#include <linux/of.h>
20#include <linux/of_address.h>
21#include <linux/spinlock.h>
22
23struct rcar_gen2_cpg {
24 struct clk_onecell_data data;
25 spinlock_t lock;
26 void __iomem *reg;
27};
28
29#define CPG_SDCKCR 0x00000074
30#define CPG_PLL0CR 0x000000d8
31#define CPG_FRQCRC 0x000000e0
32#define CPG_FRQCRC_ZFC_MASK (0x1f << 8)
33#define CPG_FRQCRC_ZFC_SHIFT 8
34
35/* -----------------------------------------------------------------------------
36 * Z Clock
37 *
38 * Traits of this clock:
39 * prepare - clk_prepare only ensures that parents are prepared
40 * enable - clk_enable only ensures that parents are enabled
41 * rate - rate is adjustable. clk->rate = parent->rate * mult / 32
42 * parent - fixed parent. No clk_set_parent support
43 */
44
45struct cpg_z_clk {
46 struct clk_hw hw;
47 void __iomem *reg;
48};
49
50#define to_z_clk(_hw) container_of(_hw, struct cpg_z_clk, hw)
51
52static unsigned long cpg_z_clk_recalc_rate(struct clk_hw *hw,
53 unsigned long parent_rate)
54{
55 struct cpg_z_clk *zclk = to_z_clk(hw);
56 unsigned int mult;
57 unsigned int val;
58
59 val = (clk_readl(zclk->reg) & CPG_FRQCRC_ZFC_MASK)
60 >> CPG_FRQCRC_ZFC_SHIFT;
61 mult = 32 - val;
62
63 return div_u64((u64)parent_rate * mult, 32);
64}
65
66static long cpg_z_clk_round_rate(struct clk_hw *hw, unsigned long rate,
67 unsigned long *parent_rate)
68{
69 unsigned long prate = *parent_rate;
70 unsigned int mult;
71
72 if (!prate)
73 prate = 1;
74
75 mult = div_u64((u64)rate * 32, prate);
76 mult = clamp(mult, 1U, 32U);
77
78 return *parent_rate / 32 * mult;
79}
80
81static int cpg_z_clk_set_rate(struct clk_hw *hw, unsigned long rate,
82 unsigned long parent_rate)
83{
84 struct cpg_z_clk *zclk = to_z_clk(hw);
85 unsigned int mult;
86 u32 val;
87
88 mult = div_u64((u64)rate * 32, parent_rate);
89 mult = clamp(mult, 1U, 32U);
90
91 val = clk_readl(zclk->reg);
92 val &= ~CPG_FRQCRC_ZFC_MASK;
93 val |= (32 - mult) << CPG_FRQCRC_ZFC_SHIFT;
94 clk_writel(val, zclk->reg);
95
96 return 0;
97}
98
99static const struct clk_ops cpg_z_clk_ops = {
100 .recalc_rate = cpg_z_clk_recalc_rate,
101 .round_rate = cpg_z_clk_round_rate,
102 .set_rate = cpg_z_clk_set_rate,
103};
104
105static struct clk * __init cpg_z_clk_register(struct rcar_gen2_cpg *cpg)
106{
107 static const char *parent_name = "pll0";
108 struct clk_init_data init;
109 struct cpg_z_clk *zclk;
110 struct clk *clk;
111
112 zclk = kzalloc(sizeof(*zclk), GFP_KERNEL);
113 if (!zclk)
114 return ERR_PTR(-ENOMEM);
115
116 init.name = "z";
117 init.ops = &cpg_z_clk_ops;
118 init.flags = 0;
119 init.parent_names = &parent_name;
120 init.num_parents = 1;
121
122 zclk->reg = cpg->reg + CPG_FRQCRC;
123 zclk->hw.init = &init;
124
125 clk = clk_register(NULL, &zclk->hw);
126 if (IS_ERR(clk))
127 kfree(zclk);
128
129 return clk;
130}
131
132/* -----------------------------------------------------------------------------
133 * CPG Clock Data
134 */
135
136/*
137 * MD EXTAL PLL0 PLL1 PLL3
138 * 14 13 19 (MHz) *1 *1
139 *---------------------------------------------------
140 * 0 0 0 15 x 1 x172/2 x208/2 x106
141 * 0 0 1 15 x 1 x172/2 x208/2 x88
142 * 0 1 0 20 x 1 x130/2 x156/2 x80
143 * 0 1 1 20 x 1 x130/2 x156/2 x66
144 * 1 0 0 26 / 2 x200/2 x240/2 x122
145 * 1 0 1 26 / 2 x200/2 x240/2 x102
146 * 1 1 0 30 / 2 x172/2 x208/2 x106
147 * 1 1 1 30 / 2 x172/2 x208/2 x88
148 *
149 * *1 : Table 7.6 indicates VCO ouput (PLLx = VCO/2)
150 */
151#define CPG_PLL_CONFIG_INDEX(md) ((((md) & BIT(14)) >> 12) | \
152 (((md) & BIT(13)) >> 12) | \
153 (((md) & BIT(19)) >> 19))
154struct cpg_pll_config {
155 unsigned int extal_div;
156 unsigned int pll1_mult;
157 unsigned int pll3_mult;
158};
159
160static const struct cpg_pll_config cpg_pll_configs[8] __initconst = {
161 { 1, 208, 106 }, { 1, 208, 88 }, { 1, 156, 80 }, { 1, 156, 66 },
162 { 2, 240, 122 }, { 2, 240, 102 }, { 2, 208, 106 }, { 2, 208, 88 },
163};
164
165/* SDHI divisors */
166static const struct clk_div_table cpg_sdh_div_table[] = {
167 { 0, 2 }, { 1, 3 }, { 2, 4 }, { 3, 6 },
168 { 4, 8 }, { 5, 12 }, { 6, 16 }, { 7, 18 },
169 { 8, 24 }, { 10, 36 }, { 11, 48 }, { 0, 0 },
170};
171
172static const struct clk_div_table cpg_sd01_div_table[] = {
173 { 5, 12 }, { 6, 16 }, { 7, 18 }, { 8, 24 },
174 { 10, 36 }, { 11, 48 }, { 12, 10 }, { 0, 0 },
175};
176
177/* -----------------------------------------------------------------------------
178 * Initialization
179 */
180
181static u32 cpg_mode __initdata;
182
183static struct clk * __init
184rcar_gen2_cpg_register_clock(struct device_node *np, struct rcar_gen2_cpg *cpg,
185 const struct cpg_pll_config *config,
186 const char *name)
187{
188 const struct clk_div_table *table = NULL;
189 const char *parent_name = "main";
190 unsigned int shift;
191 unsigned int mult = 1;
192 unsigned int div = 1;
193
194 if (!strcmp(name, "main")) {
195 parent_name = of_clk_get_parent_name(np, 0);
196 div = config->extal_div;
197 } else if (!strcmp(name, "pll0")) {
198 /* PLL0 is a configurable multiplier clock. Register it as a
199 * fixed factor clock for now as there's no generic multiplier
200 * clock implementation and we currently have no need to change
201 * the multiplier value.
202 */
203 u32 value = clk_readl(cpg->reg + CPG_PLL0CR);
204 mult = ((value >> 24) & ((1 << 7) - 1)) + 1;
205 } else if (!strcmp(name, "pll1")) {
206 mult = config->pll1_mult / 2;
207 } else if (!strcmp(name, "pll3")) {
208 mult = config->pll3_mult;
209 } else if (!strcmp(name, "lb")) {
210 div = cpg_mode & BIT(18) ? 36 : 24;
211 } else if (!strcmp(name, "qspi")) {
212 div = (cpg_mode & (BIT(3) | BIT(2) | BIT(1))) == BIT(2)
213 ? 16 : 20;
214 } else if (!strcmp(name, "sdh")) {
215 table = cpg_sdh_div_table;
216 shift = 8;
217 } else if (!strcmp(name, "sd0")) {
218 table = cpg_sd01_div_table;
219 shift = 4;
220 } else if (!strcmp(name, "sd1")) {
221 table = cpg_sd01_div_table;
222 shift = 0;
223 } else if (!strcmp(name, "z")) {
224 return cpg_z_clk_register(cpg);
225 } else {
226 return ERR_PTR(-EINVAL);
227 }
228
229 if (!table)
230 return clk_register_fixed_factor(NULL, name, parent_name, 0,
231 mult, div);
232 else
233 return clk_register_divider_table(NULL, name, parent_name, 0,
234 cpg->reg + CPG_SDCKCR, shift,
235 4, 0, table, &cpg->lock);
236}
237
238static void __init rcar_gen2_cpg_clocks_init(struct device_node *np)
239{
240 const struct cpg_pll_config *config;
241 struct rcar_gen2_cpg *cpg;
242 struct clk **clks;
243 unsigned int i;
244 int num_clks;
245
246 num_clks = of_property_count_strings(np, "clock-output-names");
247 if (num_clks < 0) {
248 pr_err("%s: failed to count clocks\n", __func__);
249 return;
250 }
251
252 cpg = kzalloc(sizeof(*cpg), GFP_KERNEL);
253 clks = kzalloc(num_clks * sizeof(*clks), GFP_KERNEL);
254 if (cpg == NULL || clks == NULL) {
255 /* We're leaking memory on purpose, there's no point in cleaning
256 * up as the system won't boot anyway.
257 */
258 pr_err("%s: failed to allocate cpg\n", __func__);
259 return;
260 }
261
262 spin_lock_init(&cpg->lock);
263
264 cpg->data.clks = clks;
265 cpg->data.clk_num = num_clks;
266
267 cpg->reg = of_iomap(np, 0);
268 if (WARN_ON(cpg->reg == NULL))
269 return;
270
271 config = &cpg_pll_configs[CPG_PLL_CONFIG_INDEX(cpg_mode)];
272
273 for (i = 0; i < num_clks; ++i) {
274 const char *name;
275 struct clk *clk;
276
277 of_property_read_string_index(np, "clock-output-names", i,
278 &name);
279
280 clk = rcar_gen2_cpg_register_clock(np, cpg, config, name);
281 if (IS_ERR(clk))
282 pr_err("%s: failed to register %s %s clock (%ld)\n",
283 __func__, np->name, name, PTR_ERR(clk));
284 else
285 cpg->data.clks[i] = clk;
286 }
287
288 of_clk_add_provider(np, of_clk_src_onecell_get, &cpg->data);
289}
290CLK_OF_DECLARE(rcar_gen2_cpg_clks, "renesas,rcar-gen2-cpg-clocks",
291 rcar_gen2_cpg_clocks_init);
292
293void __init rcar_gen2_clocks_init(u32 mode)
294{
295 cpg_mode = mode;
296
297 of_clk_init(NULL);
298}
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index 62b0de6a1837..48f76bc05da0 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -71,6 +71,10 @@ enum {
71 MCT_L1_IRQ, 71 MCT_L1_IRQ,
72 MCT_L2_IRQ, 72 MCT_L2_IRQ,
73 MCT_L3_IRQ, 73 MCT_L3_IRQ,
74 MCT_L4_IRQ,
75 MCT_L5_IRQ,
76 MCT_L6_IRQ,
77 MCT_L7_IRQ,
74 MCT_NR_IRQS, 78 MCT_NR_IRQS,
75}; 79};
76 80
diff --git a/drivers/clocksource/nomadik-mtu.c b/drivers/clocksource/nomadik-mtu.c
index 152a3f3875ee..a709cfa49d85 100644
--- a/drivers/clocksource/nomadik-mtu.c
+++ b/drivers/clocksource/nomadik-mtu.c
@@ -20,7 +20,6 @@
20#include <linux/jiffies.h> 20#include <linux/jiffies.h>
21#include <linux/delay.h> 21#include <linux/delay.h>
22#include <linux/err.h> 22#include <linux/err.h>
23#include <linux/platform_data/clocksource-nomadik-mtu.h>
24#include <linux/sched_clock.h> 23#include <linux/sched_clock.h>
25#include <asm/mach/time.h> 24#include <asm/mach/time.h>
26 25
@@ -103,7 +102,7 @@ static int nmdk_clkevt_next(unsigned long evt, struct clock_event_device *ev)
103 return 0; 102 return 0;
104} 103}
105 104
106void nmdk_clkevt_reset(void) 105static void nmdk_clkevt_reset(void)
107{ 106{
108 if (clkevt_periodic) { 107 if (clkevt_periodic) {
109 /* Timer: configure load and background-load, and fire it up */ 108 /* Timer: configure load and background-load, and fire it up */
@@ -144,7 +143,7 @@ static void nmdk_clkevt_mode(enum clock_event_mode mode,
144 } 143 }
145} 144}
146 145
147void nmdk_clksrc_reset(void) 146static void nmdk_clksrc_reset(void)
148{ 147{
149 /* Disable */ 148 /* Disable */
150 writel(0, mtu_base + MTU_CR(0)); 149 writel(0, mtu_base + MTU_CR(0));
@@ -192,8 +191,8 @@ static struct irqaction nmdk_timer_irq = {
192 .dev_id = &nmdk_clkevt, 191 .dev_id = &nmdk_clkevt,
193}; 192};
194 193
195static void __init __nmdk_timer_init(void __iomem *base, int irq, 194static void __init nmdk_timer_init(void __iomem *base, int irq,
196 struct clk *pclk, struct clk *clk) 195 struct clk *pclk, struct clk *clk)
197{ 196{
198 unsigned long rate; 197 unsigned long rate;
199 198
@@ -245,18 +244,6 @@ static void __init __nmdk_timer_init(void __iomem *base, int irq,
245 register_current_timer_delay(&mtu_delay_timer); 244 register_current_timer_delay(&mtu_delay_timer);
246} 245}
247 246
248void __init nmdk_timer_init(void __iomem *base, int irq)
249{
250 struct clk *clk0, *pclk0;
251
252 pclk0 = clk_get_sys("mtu0", "apb_pclk");
253 BUG_ON(IS_ERR(pclk0));
254 clk0 = clk_get_sys("mtu0", NULL);
255 BUG_ON(IS_ERR(clk0));
256
257 __nmdk_timer_init(base, irq, pclk0, clk0);
258}
259
260static void __init nmdk_timer_of_init(struct device_node *node) 247static void __init nmdk_timer_of_init(struct device_node *node)
261{ 248{
262 struct clk *pclk; 249 struct clk *pclk;
@@ -280,7 +267,7 @@ static void __init nmdk_timer_of_init(struct device_node *node)
280 if (irq <= 0) 267 if (irq <= 0)
281 panic("Can't parse IRQ"); 268 panic("Can't parse IRQ");
282 269
283 __nmdk_timer_init(base, irq, pclk, clk); 270 nmdk_timer_init(base, irq, pclk, clk);
284} 271}
285CLOCKSOURCE_OF_DECLARE(nomadik_mtu, "st,nomadik-mtu", 272CLOCKSOURCE_OF_DECLARE(nomadik_mtu, "st,nomadik-mtu",
286 nmdk_timer_of_init); 273 nmdk_timer_of_init);
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index b8c031b7de4e..00a2de957b23 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -2409,6 +2409,7 @@ static void d40_set_prio_realtime(struct d40_chan *d40c)
2409#define D40_DT_FLAGS_DIR(flags) ((flags >> 1) & 0x1) 2409#define D40_DT_FLAGS_DIR(flags) ((flags >> 1) & 0x1)
2410#define D40_DT_FLAGS_BIG_ENDIAN(flags) ((flags >> 2) & 0x1) 2410#define D40_DT_FLAGS_BIG_ENDIAN(flags) ((flags >> 2) & 0x1)
2411#define D40_DT_FLAGS_FIXED_CHAN(flags) ((flags >> 3) & 0x1) 2411#define D40_DT_FLAGS_FIXED_CHAN(flags) ((flags >> 3) & 0x1)
2412#define D40_DT_FLAGS_HIGH_PRIO(flags) ((flags >> 4) & 0x1)
2412 2413
2413static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec, 2414static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
2414 struct of_dma *ofdma) 2415 struct of_dma *ofdma)
@@ -2446,6 +2447,9 @@ static struct dma_chan *d40_xlate(struct of_phandle_args *dma_spec,
2446 cfg.use_fixed_channel = true; 2447 cfg.use_fixed_channel = true;
2447 } 2448 }
2448 2449
2450 if (D40_DT_FLAGS_HIGH_PRIO(flags))
2451 cfg.high_priority = true;
2452
2449 return dma_request_channel(cap, stedma40_filter, &cfg); 2453 return dma_request_channel(cap, stedma40_filter, &cfg);
2450} 2454}
2451 2455
diff --git a/drivers/pinctrl/pinctrl-nomadik.c b/drivers/pinctrl/pinctrl-nomadik.c
index cd2b1a1c9275..53a11114927f 100644
--- a/drivers/pinctrl/pinctrl-nomadik.c
+++ b/drivers/pinctrl/pinctrl-nomadik.c
@@ -4,7 +4,7 @@
4 * Copyright (C) 2008,2009 STMicroelectronics 4 * Copyright (C) 2008,2009 STMicroelectronics
5 * Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it> 5 * Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it>
6 * Rewritten based on work by Prafulla WADASKAR <prafulla.wadaskar@st.com> 6 * Rewritten based on work by Prafulla WADASKAR <prafulla.wadaskar@st.com>
7 * Copyright (C) 2011 Linus Walleij <linus.walleij@linaro.org> 7 * Copyright (C) 2011-2013 Linus Walleij <linus.walleij@linaro.org>
8 * 8 *
9 * This program is free software; you can redistribute it and/or modify 9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as 10 * it under the terms of the GNU General Public License version 2 as
@@ -33,7 +33,6 @@
33#include <linux/pinctrl/pinconf.h> 33#include <linux/pinctrl/pinconf.h>
34/* Since we request GPIOs from ourself */ 34/* Since we request GPIOs from ourself */
35#include <linux/pinctrl/consumer.h> 35#include <linux/pinctrl/consumer.h>
36#include <linux/platform_data/pinctrl-nomadik.h>
37#include "pinctrl-nomadik.h" 36#include "pinctrl-nomadik.h"
38#include "core.h" 37#include "core.h"
39 38
@@ -45,6 +44,221 @@
45 * Symbols in this file are called "nmk_gpio" for "nomadik gpio" 44 * Symbols in this file are called "nmk_gpio" for "nomadik gpio"
46 */ 45 */
47 46
47/*
48 * pin configurations are represented by 32-bit integers:
49 *
50 * bit 0.. 8 - Pin Number (512 Pins Maximum)
51 * bit 9..10 - Alternate Function Selection
52 * bit 11..12 - Pull up/down state
53 * bit 13 - Sleep mode behaviour
54 * bit 14 - Direction
55 * bit 15 - Value (if output)
56 * bit 16..18 - SLPM pull up/down state
57 * bit 19..20 - SLPM direction
58 * bit 21..22 - SLPM Value (if output)
59 * bit 23..25 - PDIS value (if input)
60 * bit 26 - Gpio mode
61 * bit 27 - Sleep mode
62 *
63 * to facilitate the definition, the following macros are provided
64 *
65 * PIN_CFG_DEFAULT - default config (0):
66 * pull up/down = disabled
67 * sleep mode = input/wakeup
68 * direction = input
69 * value = low
70 * SLPM direction = same as normal
71 * SLPM pull = same as normal
72 * SLPM value = same as normal
73 *
74 * PIN_CFG - default config with alternate function
75 */
76
77typedef unsigned long pin_cfg_t;
78
79#define PIN_NUM_MASK 0x1ff
80#define PIN_NUM(x) ((x) & PIN_NUM_MASK)
81
82#define PIN_ALT_SHIFT 9
83#define PIN_ALT_MASK (0x3 << PIN_ALT_SHIFT)
84#define PIN_ALT(x) (((x) & PIN_ALT_MASK) >> PIN_ALT_SHIFT)
85#define PIN_GPIO (NMK_GPIO_ALT_GPIO << PIN_ALT_SHIFT)
86#define PIN_ALT_A (NMK_GPIO_ALT_A << PIN_ALT_SHIFT)
87#define PIN_ALT_B (NMK_GPIO_ALT_B << PIN_ALT_SHIFT)
88#define PIN_ALT_C (NMK_GPIO_ALT_C << PIN_ALT_SHIFT)
89
90#define PIN_PULL_SHIFT 11
91#define PIN_PULL_MASK (0x3 << PIN_PULL_SHIFT)
92#define PIN_PULL(x) (((x) & PIN_PULL_MASK) >> PIN_PULL_SHIFT)
93#define PIN_PULL_NONE (NMK_GPIO_PULL_NONE << PIN_PULL_SHIFT)
94#define PIN_PULL_UP (NMK_GPIO_PULL_UP << PIN_PULL_SHIFT)
95#define PIN_PULL_DOWN (NMK_GPIO_PULL_DOWN << PIN_PULL_SHIFT)
96
97#define PIN_SLPM_SHIFT 13
98#define PIN_SLPM_MASK (0x1 << PIN_SLPM_SHIFT)
99#define PIN_SLPM(x) (((x) & PIN_SLPM_MASK) >> PIN_SLPM_SHIFT)
100#define PIN_SLPM_MAKE_INPUT (NMK_GPIO_SLPM_INPUT << PIN_SLPM_SHIFT)
101#define PIN_SLPM_NOCHANGE (NMK_GPIO_SLPM_NOCHANGE << PIN_SLPM_SHIFT)
102/* These two replace the above in DB8500v2+ */
103#define PIN_SLPM_WAKEUP_ENABLE (NMK_GPIO_SLPM_WAKEUP_ENABLE << PIN_SLPM_SHIFT)
104#define PIN_SLPM_WAKEUP_DISABLE (NMK_GPIO_SLPM_WAKEUP_DISABLE << PIN_SLPM_SHIFT)
105#define PIN_SLPM_USE_MUX_SETTINGS_IN_SLEEP PIN_SLPM_WAKEUP_DISABLE
106
107#define PIN_SLPM_GPIO PIN_SLPM_WAKEUP_ENABLE /* In SLPM, pin is a gpio */
108#define PIN_SLPM_ALTFUNC PIN_SLPM_WAKEUP_DISABLE /* In SLPM, pin is altfunc */
109
110#define PIN_DIR_SHIFT 14
111#define PIN_DIR_MASK (0x1 << PIN_DIR_SHIFT)
112#define PIN_DIR(x) (((x) & PIN_DIR_MASK) >> PIN_DIR_SHIFT)
113#define PIN_DIR_INPUT (0 << PIN_DIR_SHIFT)
114#define PIN_DIR_OUTPUT (1 << PIN_DIR_SHIFT)
115
116#define PIN_VAL_SHIFT 15
117#define PIN_VAL_MASK (0x1 << PIN_VAL_SHIFT)
118#define PIN_VAL(x) (((x) & PIN_VAL_MASK) >> PIN_VAL_SHIFT)
119#define PIN_VAL_LOW (0 << PIN_VAL_SHIFT)
120#define PIN_VAL_HIGH (1 << PIN_VAL_SHIFT)
121
122#define PIN_SLPM_PULL_SHIFT 16
123#define PIN_SLPM_PULL_MASK (0x7 << PIN_SLPM_PULL_SHIFT)
124#define PIN_SLPM_PULL(x) \
125 (((x) & PIN_SLPM_PULL_MASK) >> PIN_SLPM_PULL_SHIFT)
126#define PIN_SLPM_PULL_NONE \
127 ((1 + NMK_GPIO_PULL_NONE) << PIN_SLPM_PULL_SHIFT)
128#define PIN_SLPM_PULL_UP \
129 ((1 + NMK_GPIO_PULL_UP) << PIN_SLPM_PULL_SHIFT)
130#define PIN_SLPM_PULL_DOWN \
131 ((1 + NMK_GPIO_PULL_DOWN) << PIN_SLPM_PULL_SHIFT)
132
133#define PIN_SLPM_DIR_SHIFT 19
134#define PIN_SLPM_DIR_MASK (0x3 << PIN_SLPM_DIR_SHIFT)
135#define PIN_SLPM_DIR(x) \
136 (((x) & PIN_SLPM_DIR_MASK) >> PIN_SLPM_DIR_SHIFT)
137#define PIN_SLPM_DIR_INPUT ((1 + 0) << PIN_SLPM_DIR_SHIFT)
138#define PIN_SLPM_DIR_OUTPUT ((1 + 1) << PIN_SLPM_DIR_SHIFT)
139
140#define PIN_SLPM_VAL_SHIFT 21
141#define PIN_SLPM_VAL_MASK (0x3 << PIN_SLPM_VAL_SHIFT)
142#define PIN_SLPM_VAL(x) \
143 (((x) & PIN_SLPM_VAL_MASK) >> PIN_SLPM_VAL_SHIFT)
144#define PIN_SLPM_VAL_LOW ((1 + 0) << PIN_SLPM_VAL_SHIFT)
145#define PIN_SLPM_VAL_HIGH ((1 + 1) << PIN_SLPM_VAL_SHIFT)
146
147#define PIN_SLPM_PDIS_SHIFT 23
148#define PIN_SLPM_PDIS_MASK (0x3 << PIN_SLPM_PDIS_SHIFT)
149#define PIN_SLPM_PDIS(x) \
150 (((x) & PIN_SLPM_PDIS_MASK) >> PIN_SLPM_PDIS_SHIFT)
151#define PIN_SLPM_PDIS_NO_CHANGE (0 << PIN_SLPM_PDIS_SHIFT)
152#define PIN_SLPM_PDIS_DISABLED (1 << PIN_SLPM_PDIS_SHIFT)
153#define PIN_SLPM_PDIS_ENABLED (2 << PIN_SLPM_PDIS_SHIFT)
154
155#define PIN_LOWEMI_SHIFT 25
156#define PIN_LOWEMI_MASK (0x1 << PIN_LOWEMI_SHIFT)
157#define PIN_LOWEMI(x) (((x) & PIN_LOWEMI_MASK) >> PIN_LOWEMI_SHIFT)
158#define PIN_LOWEMI_DISABLED (0 << PIN_LOWEMI_SHIFT)
159#define PIN_LOWEMI_ENABLED (1 << PIN_LOWEMI_SHIFT)
160
161#define PIN_GPIOMODE_SHIFT 26
162#define PIN_GPIOMODE_MASK (0x1 << PIN_GPIOMODE_SHIFT)
163#define PIN_GPIOMODE(x) (((x) & PIN_GPIOMODE_MASK) >> PIN_GPIOMODE_SHIFT)
164#define PIN_GPIOMODE_DISABLED (0 << PIN_GPIOMODE_SHIFT)
165#define PIN_GPIOMODE_ENABLED (1 << PIN_GPIOMODE_SHIFT)
166
167#define PIN_SLEEPMODE_SHIFT 27
168#define PIN_SLEEPMODE_MASK (0x1 << PIN_SLEEPMODE_SHIFT)
169#define PIN_SLEEPMODE(x) (((x) & PIN_SLEEPMODE_MASK) >> PIN_SLEEPMODE_SHIFT)
170#define PIN_SLEEPMODE_DISABLED (0 << PIN_SLEEPMODE_SHIFT)
171#define PIN_SLEEPMODE_ENABLED (1 << PIN_SLEEPMODE_SHIFT)
172
173
174/* Shortcuts. Use these instead of separate DIR, PULL, and VAL. */
175#define PIN_INPUT_PULLDOWN (PIN_DIR_INPUT | PIN_PULL_DOWN)
176#define PIN_INPUT_PULLUP (PIN_DIR_INPUT | PIN_PULL_UP)
177#define PIN_INPUT_NOPULL (PIN_DIR_INPUT | PIN_PULL_NONE)
178#define PIN_OUTPUT_LOW (PIN_DIR_OUTPUT | PIN_VAL_LOW)
179#define PIN_OUTPUT_HIGH (PIN_DIR_OUTPUT | PIN_VAL_HIGH)
180
181#define PIN_SLPM_INPUT_PULLDOWN (PIN_SLPM_DIR_INPUT | PIN_SLPM_PULL_DOWN)
182#define PIN_SLPM_INPUT_PULLUP (PIN_SLPM_DIR_INPUT | PIN_SLPM_PULL_UP)
183#define PIN_SLPM_INPUT_NOPULL (PIN_SLPM_DIR_INPUT | PIN_SLPM_PULL_NONE)
184#define PIN_SLPM_OUTPUT_LOW (PIN_SLPM_DIR_OUTPUT | PIN_SLPM_VAL_LOW)
185#define PIN_SLPM_OUTPUT_HIGH (PIN_SLPM_DIR_OUTPUT | PIN_SLPM_VAL_HIGH)
186
187#define PIN_CFG_DEFAULT (0)
188
189#define PIN_CFG(num, alt) \
190 (PIN_CFG_DEFAULT |\
191 (PIN_NUM(num) | PIN_##alt))
192
193#define PIN_CFG_INPUT(num, alt, pull) \
194 (PIN_CFG_DEFAULT |\
195 (PIN_NUM(num) | PIN_##alt | PIN_INPUT_##pull))
196
197#define PIN_CFG_OUTPUT(num, alt, val) \
198 (PIN_CFG_DEFAULT |\
199 (PIN_NUM(num) | PIN_##alt | PIN_OUTPUT_##val))
200
201/*
202 * "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving
203 * the "gpio" namespace for generic and cross-machine functions
204 */
205
206#define GPIO_BLOCK_SHIFT 5
207#define NMK_GPIO_PER_CHIP (1 << GPIO_BLOCK_SHIFT)
208
209/* Register in the logic block */
210#define NMK_GPIO_DAT 0x00
211#define NMK_GPIO_DATS 0x04
212#define NMK_GPIO_DATC 0x08
213#define NMK_GPIO_PDIS 0x0c
214#define NMK_GPIO_DIR 0x10
215#define NMK_GPIO_DIRS 0x14
216#define NMK_GPIO_DIRC 0x18
217#define NMK_GPIO_SLPC 0x1c
218#define NMK_GPIO_AFSLA 0x20
219#define NMK_GPIO_AFSLB 0x24
220#define NMK_GPIO_LOWEMI 0x28
221
222#define NMK_GPIO_RIMSC 0x40
223#define NMK_GPIO_FIMSC 0x44
224#define NMK_GPIO_IS 0x48
225#define NMK_GPIO_IC 0x4c
226#define NMK_GPIO_RWIMSC 0x50
227#define NMK_GPIO_FWIMSC 0x54
228#define NMK_GPIO_WKS 0x58
229/* These appear in DB8540 and later ASICs */
230#define NMK_GPIO_EDGELEVEL 0x5C
231#define NMK_GPIO_LEVEL 0x60
232
233
234/* Pull up/down values */
235enum nmk_gpio_pull {
236 NMK_GPIO_PULL_NONE,
237 NMK_GPIO_PULL_UP,
238 NMK_GPIO_PULL_DOWN,
239};
240
241/* Sleep mode */
242enum nmk_gpio_slpm {
243 NMK_GPIO_SLPM_INPUT,
244 NMK_GPIO_SLPM_WAKEUP_ENABLE = NMK_GPIO_SLPM_INPUT,
245 NMK_GPIO_SLPM_NOCHANGE,
246 NMK_GPIO_SLPM_WAKEUP_DISABLE = NMK_GPIO_SLPM_NOCHANGE,
247};
248
249/*
250 * Platform data to register a block: only the initial gpio/irq number.
251 */
252struct nmk_gpio_platform_data {
253 char *name;
254 int first_gpio;
255 int first_irq;
256 int num_gpio;
257 u32 (*get_secondary_status)(unsigned int bank);
258 void (*set_ioforce)(bool enable);
259 bool supports_sleepmode;
260};
261
48struct nmk_gpio_chip { 262struct nmk_gpio_chip {
49 struct gpio_chip chip; 263 struct gpio_chip chip;
50 struct irq_domain *domain; 264 struct irq_domain *domain;
@@ -1026,7 +1240,7 @@ static const struct irq_domain_ops nmk_gpio_irq_simple_ops = {
1026 1240
1027static int nmk_gpio_probe(struct platform_device *dev) 1241static int nmk_gpio_probe(struct platform_device *dev)
1028{ 1242{
1029 struct nmk_gpio_platform_data *pdata = dev->dev.platform_data; 1243 struct nmk_gpio_platform_data *pdata;
1030 struct device_node *np = dev->dev.of_node; 1244 struct device_node *np = dev->dev.of_node;
1031 struct nmk_gpio_chip *nmk_chip; 1245 struct nmk_gpio_chip *nmk_chip;
1032 struct gpio_chip *chip; 1246 struct gpio_chip *chip;
@@ -1034,32 +1248,24 @@ static int nmk_gpio_probe(struct platform_device *dev)
1034 struct clk *clk; 1248 struct clk *clk;
1035 int secondary_irq; 1249 int secondary_irq;
1036 void __iomem *base; 1250 void __iomem *base;
1037 int irq_start = 0;
1038 int irq; 1251 int irq;
1039 int ret; 1252 int ret;
1040 1253
1041 if (!pdata && !np) { 1254 pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL);
1042 dev_err(&dev->dev, "No platform data or device tree found\n"); 1255 if (!pdata)
1043 return -ENODEV; 1256 return -ENOMEM;
1044 }
1045
1046 if (np) {
1047 pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), GFP_KERNEL);
1048 if (!pdata)
1049 return -ENOMEM;
1050
1051 if (of_get_property(np, "st,supports-sleepmode", NULL))
1052 pdata->supports_sleepmode = true;
1053 1257
1054 if (of_property_read_u32(np, "gpio-bank", &dev->id)) { 1258 if (of_get_property(np, "st,supports-sleepmode", NULL))
1055 dev_err(&dev->dev, "gpio-bank property not found\n"); 1259 pdata->supports_sleepmode = true;
1056 return -EINVAL;
1057 }
1058 1260
1059 pdata->first_gpio = dev->id * NMK_GPIO_PER_CHIP; 1261 if (of_property_read_u32(np, "gpio-bank", &dev->id)) {
1060 pdata->num_gpio = NMK_GPIO_PER_CHIP; 1262 dev_err(&dev->dev, "gpio-bank property not found\n");
1263 return -EINVAL;
1061 } 1264 }
1062 1265
1266 pdata->first_gpio = dev->id * NMK_GPIO_PER_CHIP;
1267 pdata->num_gpio = NMK_GPIO_PER_CHIP;
1268
1063 irq = platform_get_irq(dev, 0); 1269 irq = platform_get_irq(dev, 0);
1064 if (irq < 0) 1270 if (irq < 0)
1065 return irq; 1271 return irq;
@@ -1107,10 +1313,7 @@ static int nmk_gpio_probe(struct platform_device *dev)
1107 clk_enable(nmk_chip->clk); 1313 clk_enable(nmk_chip->clk);
1108 nmk_chip->lowemi = readl_relaxed(nmk_chip->addr + NMK_GPIO_LOWEMI); 1314 nmk_chip->lowemi = readl_relaxed(nmk_chip->addr + NMK_GPIO_LOWEMI);
1109 clk_disable(nmk_chip->clk); 1315 clk_disable(nmk_chip->clk);
1110
1111#ifdef CONFIG_OF_GPIO
1112 chip->of_node = np; 1316 chip->of_node = np;
1113#endif
1114 1317
1115 ret = gpiochip_add(&nmk_chip->chip); 1318 ret = gpiochip_add(&nmk_chip->chip);
1116 if (ret) 1319 if (ret)
@@ -1122,10 +1325,8 @@ static int nmk_gpio_probe(struct platform_device *dev)
1122 1325
1123 platform_set_drvdata(dev, nmk_chip); 1326 platform_set_drvdata(dev, nmk_chip);
1124 1327
1125 if (!np)
1126 irq_start = pdata->first_irq;
1127 nmk_chip->domain = irq_domain_add_simple(np, 1328 nmk_chip->domain = irq_domain_add_simple(np,
1128 NMK_GPIO_PER_CHIP, irq_start, 1329 NMK_GPIO_PER_CHIP, 0,
1129 &nmk_gpio_irq_simple_ops, nmk_chip); 1330 &nmk_gpio_irq_simple_ops, nmk_chip);
1130 if (!nmk_chip->domain) { 1331 if (!nmk_chip->domain) {
1131 dev_err(&dev->dev, "failed to create irqdomain\n"); 1332 dev_err(&dev->dev, "failed to create irqdomain\n");
@@ -1858,11 +2059,10 @@ static int nmk_pinctrl_resume(struct platform_device *pdev)
1858 2059
1859static int nmk_pinctrl_probe(struct platform_device *pdev) 2060static int nmk_pinctrl_probe(struct platform_device *pdev)
1860{ 2061{
1861 const struct platform_device_id *platid = platform_get_device_id(pdev); 2062 const struct of_device_id *match;
1862 struct device_node *np = pdev->dev.of_node; 2063 struct device_node *np = pdev->dev.of_node;
1863 struct device_node *prcm_np; 2064 struct device_node *prcm_np;
1864 struct nmk_pinctrl *npct; 2065 struct nmk_pinctrl *npct;
1865 struct resource *res;
1866 unsigned int version = 0; 2066 unsigned int version = 0;
1867 int i; 2067 int i;
1868 2068
@@ -1870,16 +2070,10 @@ static int nmk_pinctrl_probe(struct platform_device *pdev)
1870 if (!npct) 2070 if (!npct)
1871 return -ENOMEM; 2071 return -ENOMEM;
1872 2072
1873 if (platid) 2073 match = of_match_device(nmk_pinctrl_match, &pdev->dev);
1874 version = platid->driver_data; 2074 if (!match)
1875 else if (np) { 2075 return -ENODEV;
1876 const struct of_device_id *match; 2076 version = (unsigned int) match->data;
1877
1878 match = of_match_device(nmk_pinctrl_match, &pdev->dev);
1879 if (!match)
1880 return -ENODEV;
1881 version = (unsigned int) match->data;
1882 }
1883 2077
1884 /* Poke in other ASIC variants here */ 2078 /* Poke in other ASIC variants here */
1885 if (version == PINCTRL_NMK_STN8815) 2079 if (version == PINCTRL_NMK_STN8815)
@@ -1889,17 +2083,9 @@ static int nmk_pinctrl_probe(struct platform_device *pdev)
1889 if (version == PINCTRL_NMK_DB8540) 2083 if (version == PINCTRL_NMK_DB8540)
1890 nmk_pinctrl_db8540_init(&npct->soc); 2084 nmk_pinctrl_db8540_init(&npct->soc);
1891 2085
1892 if (np) { 2086 prcm_np = of_parse_phandle(np, "prcm", 0);
1893 prcm_np = of_parse_phandle(np, "prcm", 0); 2087 if (prcm_np)
1894 if (prcm_np) 2088 npct->prcm_base = of_iomap(prcm_np, 0);
1895 npct->prcm_base = of_iomap(prcm_np, 0);
1896 }
1897
1898 /* Allow platform passed information to over-write DT. */
1899 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1900 if (res)
1901 npct->prcm_base = devm_ioremap(&pdev->dev, res->start,
1902 resource_size(res));
1903 if (!npct->prcm_base) { 2089 if (!npct->prcm_base) {
1904 if (version == PINCTRL_NMK_STN8815) { 2090 if (version == PINCTRL_NMK_STN8815) {
1905 dev_info(&pdev->dev, 2091 dev_info(&pdev->dev,
@@ -1958,13 +2144,6 @@ static struct platform_driver nmk_gpio_driver = {
1958 .probe = nmk_gpio_probe, 2144 .probe = nmk_gpio_probe,
1959}; 2145};
1960 2146
1961static const struct platform_device_id nmk_pinctrl_id[] = {
1962 { "pinctrl-stn8815", PINCTRL_NMK_STN8815 },
1963 { "pinctrl-db8500", PINCTRL_NMK_DB8500 },
1964 { "pinctrl-db8540", PINCTRL_NMK_DB8540 },
1965 { }
1966};
1967
1968static struct platform_driver nmk_pinctrl_driver = { 2147static struct platform_driver nmk_pinctrl_driver = {
1969 .driver = { 2148 .driver = {
1970 .owner = THIS_MODULE, 2149 .owner = THIS_MODULE,
@@ -1972,7 +2151,6 @@ static struct platform_driver nmk_pinctrl_driver = {
1972 .of_match_table = nmk_pinctrl_match, 2151 .of_match_table = nmk_pinctrl_match,
1973 }, 2152 },
1974 .probe = nmk_pinctrl_probe, 2153 .probe = nmk_pinctrl_probe,
1975 .id_table = nmk_pinctrl_id,
1976#ifdef CONFIG_PM 2154#ifdef CONFIG_PM
1977 .suspend = nmk_pinctrl_suspend, 2155 .suspend = nmk_pinctrl_suspend,
1978 .resume = nmk_pinctrl_resume, 2156 .resume = nmk_pinctrl_resume,
diff --git a/drivers/pinctrl/pinctrl-nomadik.h b/drivers/pinctrl/pinctrl-nomadik.h
index bcd4191e10ea..d8215f1e70c7 100644
--- a/drivers/pinctrl/pinctrl-nomadik.h
+++ b/drivers/pinctrl/pinctrl-nomadik.h
@@ -1,13 +1,23 @@
1#ifndef PINCTRL_PINCTRL_NOMADIK_H 1#ifndef PINCTRL_PINCTRL_NOMADIK_H
2#define PINCTRL_PINCTRL_NOMADIK_H 2#define PINCTRL_PINCTRL_NOMADIK_H
3 3
4#include <linux/platform_data/pinctrl-nomadik.h>
5
6/* Package definitions */ 4/* Package definitions */
7#define PINCTRL_NMK_STN8815 0 5#define PINCTRL_NMK_STN8815 0
8#define PINCTRL_NMK_DB8500 1 6#define PINCTRL_NMK_DB8500 1
9#define PINCTRL_NMK_DB8540 2 7#define PINCTRL_NMK_DB8540 2
10 8
9/* Alternate functions: function C is set in hw by setting both A and B */
10#define NMK_GPIO_ALT_GPIO 0
11#define NMK_GPIO_ALT_A 1
12#define NMK_GPIO_ALT_B 2
13#define NMK_GPIO_ALT_C (NMK_GPIO_ALT_A | NMK_GPIO_ALT_B)
14
15#define NMK_GPIO_ALT_CX_SHIFT 2
16#define NMK_GPIO_ALT_C1 ((1<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
17#define NMK_GPIO_ALT_C2 ((2<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
18#define NMK_GPIO_ALT_C3 ((3<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
19#define NMK_GPIO_ALT_C4 ((4<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
20
11#define PRCM_GPIOCR_ALTCX(pin_num,\ 21#define PRCM_GPIOCR_ALTCX(pin_num,\
12 altc1_used, altc1_ri, altc1_cb,\ 22 altc1_used, altc1_ri, altc1_cb,\
13 altc2_used, altc2_ri, altc2_cb,\ 23 altc2_used, altc2_ri, altc2_cb,\
diff --git a/include/dt-bindings/clock/r8a7790-clock.h b/include/dt-bindings/clock/r8a7790-clock.h
index 420f0b00ae1e..859e9be511d9 100644
--- a/include/dt-bindings/clock/r8a7790-clock.h
+++ b/include/dt-bindings/clock/r8a7790-clock.h
@@ -22,6 +22,9 @@
22#define R8A7790_CLK_SD1 8 22#define R8A7790_CLK_SD1 8
23#define R8A7790_CLK_Z 9 23#define R8A7790_CLK_Z 9
24 24
25/* MSTP0 */
26#define R8A7790_CLK_MSIOF0 0
27
25/* MSTP1 */ 28/* MSTP1 */
26#define R8A7790_CLK_TMU1 11 29#define R8A7790_CLK_TMU1 11
27#define R8A7790_CLK_TMU3 21 30#define R8A7790_CLK_TMU3 21
@@ -37,8 +40,11 @@
37#define R8A7790_CLK_SCIFA2 2 40#define R8A7790_CLK_SCIFA2 2
38#define R8A7790_CLK_SCIFA1 3 41#define R8A7790_CLK_SCIFA1 3
39#define R8A7790_CLK_SCIFA0 4 42#define R8A7790_CLK_SCIFA0 4
43#define R8A7790_CLK_MSIOF2 5
40#define R8A7790_CLK_SCIFB0 6 44#define R8A7790_CLK_SCIFB0 6
41#define R8A7790_CLK_SCIFB1 7 45#define R8A7790_CLK_SCIFB1 7
46#define R8A7790_CLK_MSIOF1 8
47#define R8A7790_CLK_MSIOF3 15
42#define R8A7790_CLK_SCIFB2 16 48#define R8A7790_CLK_SCIFB2 16
43#define R8A7790_CLK_SYS_DMAC0 18 49#define R8A7790_CLK_SYS_DMAC0 18
44#define R8A7790_CLK_SYS_DMAC1 19 50#define R8A7790_CLK_SYS_DMAC1 19
@@ -91,6 +97,7 @@
91#define R8A7790_CLK_GPIO0 12 97#define R8A7790_CLK_GPIO0 12
92#define R8A7790_CLK_RCAN1 15 98#define R8A7790_CLK_RCAN1 15
93#define R8A7790_CLK_RCAN0 16 99#define R8A7790_CLK_RCAN0 16
100#define R8A7790_CLK_QSPI_MOD 17
94#define R8A7790_CLK_IICDVFS 26 101#define R8A7790_CLK_IICDVFS 26
95#define R8A7790_CLK_I2C3 28 102#define R8A7790_CLK_I2C3 28
96#define R8A7790_CLK_I2C2 29 103#define R8A7790_CLK_I2C2 29
diff --git a/include/dt-bindings/clock/r8a7791-clock.h b/include/dt-bindings/clock/r8a7791-clock.h
index df1715b77f96..30f82f286e29 100644
--- a/include/dt-bindings/clock/r8a7791-clock.h
+++ b/include/dt-bindings/clock/r8a7791-clock.h
@@ -21,6 +21,9 @@
21#define R8A7791_CLK_SD0 7 21#define R8A7791_CLK_SD0 7
22#define R8A7791_CLK_Z 8 22#define R8A7791_CLK_Z 8
23 23
24/* MSTP0 */
25#define R8A7791_CLK_MSIOF0 0
26
24/* MSTP1 */ 27/* MSTP1 */
25#define R8A7791_CLK_TMU1 11 28#define R8A7791_CLK_TMU1 11
26#define R8A7791_CLK_TMU3 21 29#define R8A7791_CLK_TMU3 21
@@ -35,8 +38,10 @@
35#define R8A7791_CLK_SCIFA2 2 38#define R8A7791_CLK_SCIFA2 2
36#define R8A7791_CLK_SCIFA1 3 39#define R8A7791_CLK_SCIFA1 3
37#define R8A7791_CLK_SCIFA0 4 40#define R8A7791_CLK_SCIFA0 4
41#define R8A7791_CLK_MSIOF2 5
38#define R8A7791_CLK_SCIFB0 6 42#define R8A7791_CLK_SCIFB0 6
39#define R8A7791_CLK_SCIFB1 7 43#define R8A7791_CLK_SCIFB1 7
44#define R8A7791_CLK_MSIOF1 8
40#define R8A7791_CLK_SCIFB2 16 45#define R8A7791_CLK_SCIFB2 16
41#define R8A7791_CLK_DMAC 18 46#define R8A7791_CLK_DMAC 18
42 47
@@ -89,6 +94,7 @@
89#define R8A7791_CLK_GPIO0 12 94#define R8A7791_CLK_GPIO0 12
90#define R8A7791_CLK_RCAN1 15 95#define R8A7791_CLK_RCAN1 15
91#define R8A7791_CLK_RCAN0 16 96#define R8A7791_CLK_RCAN0 16
97#define R8A7791_CLK_QSPI_MOD 17
92#define R8A7791_CLK_I2C5 25 98#define R8A7791_CLK_I2C5 25
93#define R8A7791_CLK_IICDVFS 26 99#define R8A7791_CLK_IICDVFS 26
94#define R8A7791_CLK_I2C4 27 100#define R8A7791_CLK_I2C4 27
diff --git a/include/dt-bindings/gpio/tegra-gpio.h b/include/dt-bindings/gpio/tegra-gpio.h
index 4d179c00f081..197dc28b676e 100644
--- a/include/dt-bindings/gpio/tegra-gpio.h
+++ b/include/dt-bindings/gpio/tegra-gpio.h
@@ -43,6 +43,7 @@
43#define TEGRA_GPIO_BANK_ID_CC 28 43#define TEGRA_GPIO_BANK_ID_CC 28
44#define TEGRA_GPIO_BANK_ID_DD 29 44#define TEGRA_GPIO_BANK_ID_DD 29
45#define TEGRA_GPIO_BANK_ID_EE 30 45#define TEGRA_GPIO_BANK_ID_EE 30
46#define TEGRA_GPIO_BANK_ID_FF 31
46 47
47#define TEGRA_GPIO(bank, offset) \ 48#define TEGRA_GPIO(bank, offset) \
48 ((TEGRA_GPIO_BANK_ID_##bank * 8) + offset) 49 ((TEGRA_GPIO_BANK_ID_##bank * 8) + offset)
diff --git a/include/dt-bindings/pinctrl/pinctrl-tegra.h b/include/dt-bindings/pinctrl/pinctrl-tegra.h
new file mode 100644
index 000000000000..ebafa498be0f
--- /dev/null
+++ b/include/dt-bindings/pinctrl/pinctrl-tegra.h
@@ -0,0 +1,45 @@
1/*
2 * This header provides constants for Tegra pinctrl bindings.
3 *
4 * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
5 *
6 * Author: Laxman Dewangan <ldewangan@nvidia.com>
7 *
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms and conditions of the GNU General Public License,
10 * version 2, as published by the Free Software Foundation.
11 *
12 * This program is distributed in the hope it will be useful, but WITHOUT
13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15 * more details.
16 */
17
18#ifndef _DT_BINDINGS_PINCTRL_TEGRA_H
19#define _DT_BINDINGS_PINCTRL_TEGRA_H
20
21/*
22 * Enable/disable for diffeent dt properties. This is applicable for
23 * properties nvidia,enable-input, nvidia,tristate, nvidia,open-drain,
24 * nvidia,lock, nvidia,rcv-sel, nvidia,high-speed-mode, nvidia,schmitt.
25 */
26#define TEGRA_PIN_DISABLE 0
27#define TEGRA_PIN_ENABLE 1
28
29#define TEGRA_PIN_PULL_NONE 0
30#define TEGRA_PIN_PULL_DOWN 1
31#define TEGRA_PIN_PULL_UP 2
32
33/* Low power mode driver */
34#define TEGRA_PIN_LP_DRIVE_DIV_8 0
35#define TEGRA_PIN_LP_DRIVE_DIV_4 1
36#define TEGRA_PIN_LP_DRIVE_DIV_2 2
37#define TEGRA_PIN_LP_DRIVE_DIV_1 3
38
39/* Rising/Falling slew rate */
40#define TEGRA_PIN_SLEW_RATE_FASTEST 0
41#define TEGRA_PIN_SLEW_RATE_FAST 1
42#define TEGRA_PIN_SLEW_RATE_SLOW 2
43#define TEGRA_PIN_SLEW_RATE_SLOWEST 3
44
45#endif
diff --git a/include/linux/clk/shmobile.h b/include/linux/clk/shmobile.h
new file mode 100644
index 000000000000..f9bf080a1123
--- /dev/null
+++ b/include/linux/clk/shmobile.h
@@ -0,0 +1,19 @@
1/*
2 * Copyright 2013 Ideas On Board SPRL
3 *
4 * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 */
11
12#ifndef __LINUX_CLK_SHMOBILE_H_
13#define __LINUX_CLK_SHMOBILE_H_
14
15#include <linux/types.h>
16
17void rcar_gen2_clocks_init(u32 mode);
18
19#endif
diff --git a/include/linux/platform_data/clocksource-nomadik-mtu.h b/include/linux/platform_data/clocksource-nomadik-mtu.h
deleted file mode 100644
index 80088973b734..000000000000
--- a/include/linux/platform_data/clocksource-nomadik-mtu.h
+++ /dev/null
@@ -1,9 +0,0 @@
1#ifndef __PLAT_MTU_H
2#define __PLAT_MTU_H
3
4void nmdk_timer_init(void __iomem *base, int irq);
5void nmdk_clkevt_reset(void);
6void nmdk_clksrc_reset(void);
7
8#endif /* __PLAT_MTU_H */
9
diff --git a/include/linux/platform_data/pinctrl-nomadik.h b/include/linux/platform_data/pinctrl-nomadik.h
deleted file mode 100644
index abf5bed84df3..000000000000
--- a/include/linux/platform_data/pinctrl-nomadik.h
+++ /dev/null
@@ -1,242 +0,0 @@
1/*
2 * Structures and registers for GPIO access in the Nomadik SoC
3 *
4 * Copyright (C) 2008 STMicroelectronics
5 * Author: Prafulla WADASKAR <prafulla.wadaskar@st.com>
6 * Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as
10 * published by the Free Software Foundation.
11 */
12
13#ifndef __PLAT_NOMADIK_GPIO
14#define __PLAT_NOMADIK_GPIO
15
16/*
17 * pin configurations are represented by 32-bit integers:
18 *
19 * bit 0.. 8 - Pin Number (512 Pins Maximum)
20 * bit 9..10 - Alternate Function Selection
21 * bit 11..12 - Pull up/down state
22 * bit 13 - Sleep mode behaviour
23 * bit 14 - Direction
24 * bit 15 - Value (if output)
25 * bit 16..18 - SLPM pull up/down state
26 * bit 19..20 - SLPM direction
27 * bit 21..22 - SLPM Value (if output)
28 * bit 23..25 - PDIS value (if input)
29 * bit 26 - Gpio mode
30 * bit 27 - Sleep mode
31 *
32 * to facilitate the definition, the following macros are provided
33 *
34 * PIN_CFG_DEFAULT - default config (0):
35 * pull up/down = disabled
36 * sleep mode = input/wakeup
37 * direction = input
38 * value = low
39 * SLPM direction = same as normal
40 * SLPM pull = same as normal
41 * SLPM value = same as normal
42 *
43 * PIN_CFG - default config with alternate function
44 */
45
46typedef unsigned long pin_cfg_t;
47
48#define PIN_NUM_MASK 0x1ff
49#define PIN_NUM(x) ((x) & PIN_NUM_MASK)
50
51#define PIN_ALT_SHIFT 9
52#define PIN_ALT_MASK (0x3 << PIN_ALT_SHIFT)
53#define PIN_ALT(x) (((x) & PIN_ALT_MASK) >> PIN_ALT_SHIFT)
54#define PIN_GPIO (NMK_GPIO_ALT_GPIO << PIN_ALT_SHIFT)
55#define PIN_ALT_A (NMK_GPIO_ALT_A << PIN_ALT_SHIFT)
56#define PIN_ALT_B (NMK_GPIO_ALT_B << PIN_ALT_SHIFT)
57#define PIN_ALT_C (NMK_GPIO_ALT_C << PIN_ALT_SHIFT)
58
59#define PIN_PULL_SHIFT 11
60#define PIN_PULL_MASK (0x3 << PIN_PULL_SHIFT)
61#define PIN_PULL(x) (((x) & PIN_PULL_MASK) >> PIN_PULL_SHIFT)
62#define PIN_PULL_NONE (NMK_GPIO_PULL_NONE << PIN_PULL_SHIFT)
63#define PIN_PULL_UP (NMK_GPIO_PULL_UP << PIN_PULL_SHIFT)
64#define PIN_PULL_DOWN (NMK_GPIO_PULL_DOWN << PIN_PULL_SHIFT)
65
66#define PIN_SLPM_SHIFT 13
67#define PIN_SLPM_MASK (0x1 << PIN_SLPM_SHIFT)
68#define PIN_SLPM(x) (((x) & PIN_SLPM_MASK) >> PIN_SLPM_SHIFT)
69#define PIN_SLPM_MAKE_INPUT (NMK_GPIO_SLPM_INPUT << PIN_SLPM_SHIFT)
70#define PIN_SLPM_NOCHANGE (NMK_GPIO_SLPM_NOCHANGE << PIN_SLPM_SHIFT)
71/* These two replace the above in DB8500v2+ */
72#define PIN_SLPM_WAKEUP_ENABLE (NMK_GPIO_SLPM_WAKEUP_ENABLE << PIN_SLPM_SHIFT)
73#define PIN_SLPM_WAKEUP_DISABLE (NMK_GPIO_SLPM_WAKEUP_DISABLE << PIN_SLPM_SHIFT)
74#define PIN_SLPM_USE_MUX_SETTINGS_IN_SLEEP PIN_SLPM_WAKEUP_DISABLE
75
76#define PIN_SLPM_GPIO PIN_SLPM_WAKEUP_ENABLE /* In SLPM, pin is a gpio */
77#define PIN_SLPM_ALTFUNC PIN_SLPM_WAKEUP_DISABLE /* In SLPM, pin is altfunc */
78
79#define PIN_DIR_SHIFT 14
80#define PIN_DIR_MASK (0x1 << PIN_DIR_SHIFT)
81#define PIN_DIR(x) (((x) & PIN_DIR_MASK) >> PIN_DIR_SHIFT)
82#define PIN_DIR_INPUT (0 << PIN_DIR_SHIFT)
83#define PIN_DIR_OUTPUT (1 << PIN_DIR_SHIFT)
84
85#define PIN_VAL_SHIFT 15
86#define PIN_VAL_MASK (0x1 << PIN_VAL_SHIFT)
87#define PIN_VAL(x) (((x) & PIN_VAL_MASK) >> PIN_VAL_SHIFT)
88#define PIN_VAL_LOW (0 << PIN_VAL_SHIFT)
89#define PIN_VAL_HIGH (1 << PIN_VAL_SHIFT)
90
91#define PIN_SLPM_PULL_SHIFT 16
92#define PIN_SLPM_PULL_MASK (0x7 << PIN_SLPM_PULL_SHIFT)
93#define PIN_SLPM_PULL(x) \
94 (((x) & PIN_SLPM_PULL_MASK) >> PIN_SLPM_PULL_SHIFT)
95#define PIN_SLPM_PULL_NONE \
96 ((1 + NMK_GPIO_PULL_NONE) << PIN_SLPM_PULL_SHIFT)
97#define PIN_SLPM_PULL_UP \
98 ((1 + NMK_GPIO_PULL_UP) << PIN_SLPM_PULL_SHIFT)
99#define PIN_SLPM_PULL_DOWN \
100 ((1 + NMK_GPIO_PULL_DOWN) << PIN_SLPM_PULL_SHIFT)
101
102#define PIN_SLPM_DIR_SHIFT 19
103#define PIN_SLPM_DIR_MASK (0x3 << PIN_SLPM_DIR_SHIFT)
104#define PIN_SLPM_DIR(x) \
105 (((x) & PIN_SLPM_DIR_MASK) >> PIN_SLPM_DIR_SHIFT)
106#define PIN_SLPM_DIR_INPUT ((1 + 0) << PIN_SLPM_DIR_SHIFT)
107#define PIN_SLPM_DIR_OUTPUT ((1 + 1) << PIN_SLPM_DIR_SHIFT)
108
109#define PIN_SLPM_VAL_SHIFT 21
110#define PIN_SLPM_VAL_MASK (0x3 << PIN_SLPM_VAL_SHIFT)
111#define PIN_SLPM_VAL(x) \
112 (((x) & PIN_SLPM_VAL_MASK) >> PIN_SLPM_VAL_SHIFT)
113#define PIN_SLPM_VAL_LOW ((1 + 0) << PIN_SLPM_VAL_SHIFT)
114#define PIN_SLPM_VAL_HIGH ((1 + 1) << PIN_SLPM_VAL_SHIFT)
115
116#define PIN_SLPM_PDIS_SHIFT 23
117#define PIN_SLPM_PDIS_MASK (0x3 << PIN_SLPM_PDIS_SHIFT)
118#define PIN_SLPM_PDIS(x) \
119 (((x) & PIN_SLPM_PDIS_MASK) >> PIN_SLPM_PDIS_SHIFT)
120#define PIN_SLPM_PDIS_NO_CHANGE (0 << PIN_SLPM_PDIS_SHIFT)
121#define PIN_SLPM_PDIS_DISABLED (1 << PIN_SLPM_PDIS_SHIFT)
122#define PIN_SLPM_PDIS_ENABLED (2 << PIN_SLPM_PDIS_SHIFT)
123
124#define PIN_LOWEMI_SHIFT 25
125#define PIN_LOWEMI_MASK (0x1 << PIN_LOWEMI_SHIFT)
126#define PIN_LOWEMI(x) (((x) & PIN_LOWEMI_MASK) >> PIN_LOWEMI_SHIFT)
127#define PIN_LOWEMI_DISABLED (0 << PIN_LOWEMI_SHIFT)
128#define PIN_LOWEMI_ENABLED (1 << PIN_LOWEMI_SHIFT)
129
130#define PIN_GPIOMODE_SHIFT 26
131#define PIN_GPIOMODE_MASK (0x1 << PIN_GPIOMODE_SHIFT)
132#define PIN_GPIOMODE(x) (((x) & PIN_GPIOMODE_MASK) >> PIN_GPIOMODE_SHIFT)
133#define PIN_GPIOMODE_DISABLED (0 << PIN_GPIOMODE_SHIFT)
134#define PIN_GPIOMODE_ENABLED (1 << PIN_GPIOMODE_SHIFT)
135
136#define PIN_SLEEPMODE_SHIFT 27
137#define PIN_SLEEPMODE_MASK (0x1 << PIN_SLEEPMODE_SHIFT)
138#define PIN_SLEEPMODE(x) (((x) & PIN_SLEEPMODE_MASK) >> PIN_SLEEPMODE_SHIFT)
139#define PIN_SLEEPMODE_DISABLED (0 << PIN_SLEEPMODE_SHIFT)
140#define PIN_SLEEPMODE_ENABLED (1 << PIN_SLEEPMODE_SHIFT)
141
142
143/* Shortcuts. Use these instead of separate DIR, PULL, and VAL. */
144#define PIN_INPUT_PULLDOWN (PIN_DIR_INPUT | PIN_PULL_DOWN)
145#define PIN_INPUT_PULLUP (PIN_DIR_INPUT | PIN_PULL_UP)
146#define PIN_INPUT_NOPULL (PIN_DIR_INPUT | PIN_PULL_NONE)
147#define PIN_OUTPUT_LOW (PIN_DIR_OUTPUT | PIN_VAL_LOW)
148#define PIN_OUTPUT_HIGH (PIN_DIR_OUTPUT | PIN_VAL_HIGH)
149
150#define PIN_SLPM_INPUT_PULLDOWN (PIN_SLPM_DIR_INPUT | PIN_SLPM_PULL_DOWN)
151#define PIN_SLPM_INPUT_PULLUP (PIN_SLPM_DIR_INPUT | PIN_SLPM_PULL_UP)
152#define PIN_SLPM_INPUT_NOPULL (PIN_SLPM_DIR_INPUT | PIN_SLPM_PULL_NONE)
153#define PIN_SLPM_OUTPUT_LOW (PIN_SLPM_DIR_OUTPUT | PIN_SLPM_VAL_LOW)
154#define PIN_SLPM_OUTPUT_HIGH (PIN_SLPM_DIR_OUTPUT | PIN_SLPM_VAL_HIGH)
155
156#define PIN_CFG_DEFAULT (0)
157
158#define PIN_CFG(num, alt) \
159 (PIN_CFG_DEFAULT |\
160 (PIN_NUM(num) | PIN_##alt))
161
162#define PIN_CFG_INPUT(num, alt, pull) \
163 (PIN_CFG_DEFAULT |\
164 (PIN_NUM(num) | PIN_##alt | PIN_INPUT_##pull))
165
166#define PIN_CFG_OUTPUT(num, alt, val) \
167 (PIN_CFG_DEFAULT |\
168 (PIN_NUM(num) | PIN_##alt | PIN_OUTPUT_##val))
169
170/*
171 * "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving
172 * the "gpio" namespace for generic and cross-machine functions
173 */
174
175#define GPIO_BLOCK_SHIFT 5
176#define NMK_GPIO_PER_CHIP (1 << GPIO_BLOCK_SHIFT)
177
178/* Register in the logic block */
179#define NMK_GPIO_DAT 0x00
180#define NMK_GPIO_DATS 0x04
181#define NMK_GPIO_DATC 0x08
182#define NMK_GPIO_PDIS 0x0c
183#define NMK_GPIO_DIR 0x10
184#define NMK_GPIO_DIRS 0x14
185#define NMK_GPIO_DIRC 0x18
186#define NMK_GPIO_SLPC 0x1c
187#define NMK_GPIO_AFSLA 0x20
188#define NMK_GPIO_AFSLB 0x24
189#define NMK_GPIO_LOWEMI 0x28
190
191#define NMK_GPIO_RIMSC 0x40
192#define NMK_GPIO_FIMSC 0x44
193#define NMK_GPIO_IS 0x48
194#define NMK_GPIO_IC 0x4c
195#define NMK_GPIO_RWIMSC 0x50
196#define NMK_GPIO_FWIMSC 0x54
197#define NMK_GPIO_WKS 0x58
198/* These appear in DB8540 and later ASICs */
199#define NMK_GPIO_EDGELEVEL 0x5C
200#define NMK_GPIO_LEVEL 0x60
201
202/* Alternate functions: function C is set in hw by setting both A and B */
203#define NMK_GPIO_ALT_GPIO 0
204#define NMK_GPIO_ALT_A 1
205#define NMK_GPIO_ALT_B 2
206#define NMK_GPIO_ALT_C (NMK_GPIO_ALT_A | NMK_GPIO_ALT_B)
207
208#define NMK_GPIO_ALT_CX_SHIFT 2
209#define NMK_GPIO_ALT_C1 ((1<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
210#define NMK_GPIO_ALT_C2 ((2<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
211#define NMK_GPIO_ALT_C3 ((3<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
212#define NMK_GPIO_ALT_C4 ((4<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
213
214/* Pull up/down values */
215enum nmk_gpio_pull {
216 NMK_GPIO_PULL_NONE,
217 NMK_GPIO_PULL_UP,
218 NMK_GPIO_PULL_DOWN,
219};
220
221/* Sleep mode */
222enum nmk_gpio_slpm {
223 NMK_GPIO_SLPM_INPUT,
224 NMK_GPIO_SLPM_WAKEUP_ENABLE = NMK_GPIO_SLPM_INPUT,
225 NMK_GPIO_SLPM_NOCHANGE,
226 NMK_GPIO_SLPM_WAKEUP_DISABLE = NMK_GPIO_SLPM_NOCHANGE,
227};
228
229/*
230 * Platform data to register a block: only the initial gpio/irq number.
231 */
232struct nmk_gpio_platform_data {
233 char *name;
234 int first_gpio;
235 int first_irq;
236 int num_gpio;
237 u32 (*get_secondary_status)(unsigned int bank);
238 void (*set_ioforce)(bool enable);
239 bool supports_sleepmode;
240};
241
242#endif /* __PLAT_NOMADIK_GPIO */