Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Sep 2015 20:09:20 +0000 (13:09 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Sep 2015 20:09:20 +0000 (13:09 -0700)
Pull ARM DT updates from Olof Johansson:
 "Ladies and gentlemen, we proudly announce to you the latest branch of
  ARM device tree contents for the mainline kernel.  Come and see, come
  and see!

  No less than twentythree thousand lines of additions! Just imagine the
  joy you will have of using your mainline kernel on newly supported
  hardware such as Rockchip Chromebooks, Freescale i.MX6UL boards or
  UniPhier hardware!

  For those of you feeling less adventurous, added hardware support on
  platforms such as TI DM814x and Gumstix Overo platforms might be more
  of your liking.

  We've got something for everyone here!

  Ahem.  Cough.  So, anyway...

  This is the usual large batch of DT updates.  Lots and lots of smaller
  changes, some of the larger ones to point out are:

   - Rockchip veyron (Chromebook) support, as well as several other new boards
   - DRM support on Atmel AT91SAM9N12EK
   - USB additions on some Allwinner platforms
   - Mediatek MT6580 support
   - Freescale i.MX6UL support
   - cleanups for Renesas shmobile platforms
   - lots of added devices on LPC18xx
   - lots of added devices and boards on UniPhier

  There's also some dependent code added here, in particular some
  branches that are primarily merged through the clock tree"

* tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (389 commits)
  ARM: tegra: Add gpio-ranges property
  ARM: tegra: Fix AHB base address on Tegra20, Tegra30 and Tegra114
  ARM: tegra: Add Tegra124 PMU support
  ARM: tegra: jetson-tk1: Add GK20A GPU DT node
  ARM: tegra: venice2: Add GK20A GPU DT node
  ARM: tegra: Add IOMMU node to GK20A
  ARM: tegra: Add CPU regulator to the Jetson TK1 device tree
  ARM: tegra: Add entries for cpufreq on Tegra124
  ARM: tegra: Enable the DFLL on the Jetson TK1
  ARM: tegra: Add the DFLL to Tegra124 device tree
  ARM: dts: zynq: Add devicetree entry for Xilinx Zynq reset controller.
  ARM: dts: UniPhier: fix PPI interrupt CPU mask of timer nodes
  ARM: dts: rockchip: correct regulator power states for suspend
  ARM: dts: rockchip: correct regulator PM properties
  ARM: dts: vexpress: Use assigned-clock-parents for sp810
  pinctrl: tegra: Only set the gpio range if needed
  arm: boot: dts: am4372: add ARM timers and SCU nodes
  ARM: dts: AM4372: Add the am4372-rtc compatible string
  ARM: shmobile: r8a7794 dtsi: Add CPG/MSTP Clock Domain
  ARM: shmobile: r8a7793 dtsi: Add CPG/MSTP Clock Domain
  ...

282 files changed:
Documentation/devicetree/bindings/arm/atmel-at91.txt
Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.txt [new file with mode: 0644]
Documentation/devicetree/bindings/arm/marvell,kirkwood.txt
Documentation/devicetree/bindings/arm/mediatek.txt
Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt
Documentation/devicetree/bindings/arm/omap/omap.txt
Documentation/devicetree/bindings/arm/rockchip.txt
Documentation/devicetree/bindings/clock/imx6ul-clock.txt [new file with mode: 0644]
Documentation/devicetree/bindings/clock/st/st,clkgen-pll.txt
Documentation/devicetree/bindings/memory-controllers/synopsys.txt
Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.txt [new file with mode: 0644]
Documentation/devicetree/bindings/reset/socfpga-reset.txt
Documentation/devicetree/bindings/rtc/atmel,at91rm9200-rtc.txt
Documentation/devicetree/bindings/rtc/rtc-omap.txt
Documentation/devicetree/bindings/serial/mtk-uart.txt
Documentation/devicetree/bindings/timer/mediatek,mtk-timer.txt
Documentation/devicetree/bindings/vendor-prefixes.txt
Documentation/devicetree/bindings/watchdog/atmel-wdt.txt
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-boneblack.dts
arch/arm/boot/dts/am335x-evm.dts
arch/arm/boot/dts/am335x-evmsk.dts
arch/arm/boot/dts/am335x-phycore-som.dtsi [new file with mode: 0644]
arch/arm/boot/dts/am335x-wega-rdk.dts [new file with mode: 0644]
arch/arm/boot/dts/am335x-wega.dtsi [new file with mode: 0644]
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/am4372.dtsi
arch/arm/boot/dts/am437x-gp-evm.dts
arch/arm/boot/dts/am437x-sk-evm.dts
arch/arm/boot/dts/am43x-epos-evm.dts
arch/arm/boot/dts/am43xx-clocks.dtsi
arch/arm/boot/dts/am57xx-beagle-x15.dts
arch/arm/boot/dts/armada-375.dtsi
arch/arm/boot/dts/armada-388-gp.dts
arch/arm/boot/dts/armada-38x.dtsi
arch/arm/boot/dts/armada-39x.dtsi
arch/arm/boot/dts/at91-sama5d2_xplained.dts [new file with mode: 0644]
arch/arm/boot/dts/at91-sama5d4_xplained.dts
arch/arm/boot/dts/at91-sama5d4ek.dts
arch/arm/boot/dts/at91rm9200.dtsi
arch/arm/boot/dts/at91sam9260.dtsi
arch/arm/boot/dts/at91sam9261.dtsi
arch/arm/boot/dts/at91sam9263.dtsi
arch/arm/boot/dts/at91sam9g15.dtsi
arch/arm/boot/dts/at91sam9g15ek.dts
arch/arm/boot/dts/at91sam9g35.dtsi
arch/arm/boot/dts/at91sam9g35ek.dts
arch/arm/boot/dts/at91sam9g45.dtsi
arch/arm/boot/dts/at91sam9m10g45ek.dts
arch/arm/boot/dts/at91sam9n12.dtsi
arch/arm/boot/dts/at91sam9n12ek.dts
arch/arm/boot/dts/at91sam9rl.dtsi
arch/arm/boot/dts/at91sam9x35.dtsi
arch/arm/boot/dts/at91sam9x35ek.dts
arch/arm/boot/dts/at91sam9x5.dtsi
arch/arm/boot/dts/at91sam9x5_lcd.dtsi
arch/arm/boot/dts/at91sam9x5dm.dtsi [new file with mode: 0644]
arch/arm/boot/dts/atlas7-evb.dts
arch/arm/boot/dts/atlas7.dtsi
arch/arm/boot/dts/axp152.dtsi [new file with mode: 0644]
arch/arm/boot/dts/bcm-cygnus-clock.dtsi
arch/arm/boot/dts/bcm2835-rpi.dtsi
arch/arm/boot/dts/bcm4708-buffalo-wzr-1750dhp.dts
arch/arm/boot/dts/bcm4708-luxul-xwc-1000.dts
arch/arm/boot/dts/bcm4708-netgear-r6250.dts
arch/arm/boot/dts/bcm4708-smartrg-sr400ac.dts
arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
arch/arm/boot/dts/bcm5301x.dtsi
arch/arm/boot/dts/bcm7445.dtsi
arch/arm/boot/dts/cros-ec-sbs.dtsi [new file with mode: 0644]
arch/arm/boot/dts/cx92755.dtsi
arch/arm/boot/dts/cx92755_equinox.dts
arch/arm/boot/dts/dm8148-evm.dts [new file with mode: 0644]
arch/arm/boot/dts/dm8148-t410.dts [new file with mode: 0644]
arch/arm/boot/dts/dm814x-clocks.dtsi [new file with mode: 0644]
arch/arm/boot/dts/dm814x.dtsi [new file with mode: 0644]
arch/arm/boot/dts/dm816x.dtsi
arch/arm/boot/dts/dove.dtsi
arch/arm/boot/dts/dra7-evm.dts
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/dra72-evm.dts
arch/arm/boot/dts/dra74x.dtsi
arch/arm/boot/dts/emev2-kzm9d.dts
arch/arm/boot/dts/emev2.dtsi
arch/arm/boot/dts/exynos4210-universal_c210.dts
arch/arm/boot/dts/exynos4412-trats2.dts
arch/arm/boot/dts/exynos5250-pinctrl.dtsi
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5410-smdk5410.dts
arch/arm/boot/dts/exynos5420-pinctrl.dtsi
arch/arm/boot/dts/exynos5420.dtsi
arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi [new file with mode: 0644]
arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
arch/arm/boot/dts/imx27.dtsi
arch/arm/boot/dts/imx53-qsb-common.dtsi
arch/arm/boot/dts/imx53-qsrb.dts
arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
arch/arm/boot/dts/imx6qdl-gw551x.dtsi
arch/arm/boot/dts/imx6qdl-gw552x.dtsi
arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi
arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
arch/arm/boot/dts/imx6qdl-sabresd.dtsi
arch/arm/boot/dts/imx6qdl.dtsi
arch/arm/boot/dts/imx6sl-warp.dts
arch/arm/boot/dts/imx6sl.dtsi
arch/arm/boot/dts/imx6sx.dtsi
arch/arm/boot/dts/imx6ul-14x14-evk.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6ul-pinfunc.h [new file with mode: 0644]
arch/arm/boot/dts/imx6ul.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx7d.dtsi
arch/arm/boot/dts/kirkwood-lswvl.dts [new file with mode: 0644]
arch/arm/boot/dts/kirkwood-lswxl.dts [new file with mode: 0644]
arch/arm/boot/dts/lpc18xx.dtsi
arch/arm/boot/dts/lpc4337-ciaa.dts [new file with mode: 0644]
arch/arm/boot/dts/lpc4350-hitex-eval.dts
arch/arm/boot/dts/lpc4357-ea4357-devkit.dts
arch/arm/boot/dts/ls1021a-qds.dts
arch/arm/boot/dts/ls1021a-twr.dts
arch/arm/boot/dts/ls1021a.dtsi
arch/arm/boot/dts/mt6580-evbp1.dts [new file with mode: 0644]
arch/arm/boot/dts/mt6580.dtsi [new file with mode: 0644]
arch/arm/boot/dts/mt8135-evbp1.dts
arch/arm/boot/dts/mt8135.dtsi
arch/arm/boot/dts/omap3-devkit8000-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap3-devkit8000-lcd-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap3-devkit8000-lcd43.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-devkit8000-lcd70.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-devkit8000.dts
arch/arm/boot/dts/omap3-lilly-a83x.dtsi
arch/arm/boot/dts/omap3-overo-base.dtsi
arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi
arch/arm/boot/dts/omap3-overo-palo35-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap3-overo-palo35.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-overo-storm-palo35.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-overo-storm-tobiduo.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap3-overo-tobiduo.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-overo.dtsi
arch/arm/boot/dts/omap3-pandora-1ghz.dts
arch/arm/boot/dts/omap3-pandora-600mhz.dts
arch/arm/boot/dts/omap3-pandora-common.dtsi
arch/arm/boot/dts/omap5-uevm.dts
arch/arm/boot/dts/omap5.dtsi
arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts [new file with mode: 0644]
arch/arm/boot/dts/orion5x-lswsgl.dts [new file with mode: 0644]
arch/arm/boot/dts/pxa27x.dtsi
arch/arm/boot/dts/pxa2xx.dtsi
arch/arm/boot/dts/pxa3xx.dtsi
arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts
arch/arm/boot/dts/qcom-apq8064-ifc6410.dts
arch/arm/boot/dts/qcom-apq8064.dtsi
arch/arm/boot/dts/qcom-msm8660.dtsi
arch/arm/boot/dts/qcom-msm8960-cdp.dts
arch/arm/boot/dts/qcom-msm8960.dtsi
arch/arm/boot/dts/qcom-msm8974.dtsi
arch/arm/boot/dts/r7s72100.dtsi
arch/arm/boot/dts/r8a73a4.dtsi
arch/arm/boot/dts/r8a7740-armadillo800eva.dts
arch/arm/boot/dts/r8a7740.dtsi
arch/arm/boot/dts/r8a7778.dtsi
arch/arm/boot/dts/r8a7779.dtsi
arch/arm/boot/dts/r8a7790-lager.dts
arch/arm/boot/dts/r8a7790.dtsi
arch/arm/boot/dts/r8a7791-koelsch.dts
arch/arm/boot/dts/r8a7791.dtsi
arch/arm/boot/dts/r8a7793-gose.dts [new file with mode: 0644]
arch/arm/boot/dts/r8a7793.dtsi [new file with mode: 0644]
arch/arm/boot/dts/r8a7794-silk.dts [new file with mode: 0644]
arch/arm/boot/dts/r8a7794.dtsi
arch/arm/boot/dts/rk3066a-bqcurie2.dts
arch/arm/boot/dts/rk3066a-marsboard.dts
arch/arm/boot/dts/rk3066a-rayeager.dts
arch/arm/boot/dts/rk3066a.dtsi
arch/arm/boot/dts/rk3188-radxarock.dts
arch/arm/boot/dts/rk3188.dtsi
arch/arm/boot/dts/rk3288-evb.dtsi
arch/arm/boot/dts/rk3288-firefly.dtsi
arch/arm/boot/dts/rk3288-popmetal.dts
arch/arm/boot/dts/rk3288-r89.dts [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron-jerry.dts [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron-minnie.dts [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron-pinky.dts [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron-sdmmc.dtsi [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron-speedy.dts [new file with mode: 0644]
arch/arm/boot/dts/rk3288-veyron.dtsi [new file with mode: 0644]
arch/arm/boot/dts/rk3288.dtsi
arch/arm/boot/dts/rk3xxx.dtsi
arch/arm/boot/dts/sama5d2.dtsi [new file with mode: 0644]
arch/arm/boot/dts/sama5d3.dtsi
arch/arm/boot/dts/sama5d3_tcb1.dtsi
arch/arm/boot/dts/sama5d4.dtsi
arch/arm/boot/dts/sh73a0.dtsi
arch/arm/boot/dts/socfpga.dtsi
arch/arm/boot/dts/socfpga_arria10.dtsi
arch/arm/boot/dts/socfpga_arria10_socdk.dtsi
arch/arm/boot/dts/socfpga_arria5_socdk.dts
arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts [new file with mode: 0644]
arch/arm/boot/dts/socfpga_cyclone5_socdk.dts
arch/arm/boot/dts/socfpga_cyclone5_sockit.dts
arch/arm/boot/dts/stih407-clock.dtsi
arch/arm/boot/dts/stih407-family.dtsi
arch/arm/boot/dts/stih407-pinctrl.dtsi
arch/arm/boot/dts/stih407.dtsi
arch/arm/boot/dts/stih410-clock.dtsi
arch/arm/boot/dts/stih410.dtsi
arch/arm/boot/dts/stih418-clock.dtsi
arch/arm/boot/dts/stih418.dtsi
arch/arm/boot/dts/stm32429i-eval.dts [new file with mode: 0644]
arch/arm/boot/dts/stm32f429-disco.dts
arch/arm/boot/dts/stm32f429.dtsi
arch/arm/boot/dts/sun4i-a10-ba10-tvbox.dts
arch/arm/boot/dts/sun4i-a10-chuwi-v7-cw0825.dts
arch/arm/boot/dts/sun4i-a10-cubieboard.dts
arch/arm/boot/dts/sun4i-a10-itead-iteaduino-plus.dts [new file with mode: 0644]
arch/arm/boot/dts/sun4i-a10-mini-xplus.dts
arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts
arch/arm/boot/dts/sun4i-a10.dtsi
arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts
arch/arm/boot/dts/sun5i-a13-hsg-h702.dts
arch/arm/boot/dts/sun5i-a13-olinuxino.dts
arch/arm/boot/dts/sun5i-a13-utoo-p66.dts
arch/arm/boot/dts/sun5i.dtsi
arch/arm/boot/dts/sun6i-a31-mele-a1000g-quad.dts
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun6i-a31s-cs908.dts
arch/arm/boot/dts/sun7i-a20-cubietruck.dts
arch/arm/boot/dts/sun7i-a20-i12-tvbox.dts
arch/arm/boot/dts/sun7i-a20-olinuxino-lime.dts
arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
arch/arm/boot/dts/sun7i-a20.dtsi
arch/arm/boot/dts/sun8i-a23-a33.dtsi
arch/arm/boot/dts/sun8i-a23-ippo-q8h-v5.dts
arch/arm/boot/dts/sun8i-a23.dtsi
arch/arm/boot/dts/sun8i-a33-ga10h-v1.1.dts
arch/arm/boot/dts/sun8i-a33-ippo-q8h-v1.2.dts [new file with mode: 0644]
arch/arm/boot/dts/sun8i-a33-sinlinx-sina33.dts
arch/arm/boot/dts/sun8i-a33.dtsi
arch/arm/boot/dts/sunxi-common-regulators.dtsi
arch/arm/boot/dts/tegra114.dtsi
arch/arm/boot/dts/tegra124-jetson-tk1.dts
arch/arm/boot/dts/tegra124-venice2.dts
arch/arm/boot/dts/tegra124.dtsi
arch/arm/boot/dts/tegra20.dtsi
arch/arm/boot/dts/tegra30.dtsi
arch/arm/boot/dts/uniphier-ph1-ld4-ref.dts
arch/arm/boot/dts/uniphier-ph1-ld4.dtsi
arch/arm/boot/dts/uniphier-ph1-ld6b-ref.dts [new file with mode: 0644]
arch/arm/boot/dts/uniphier-ph1-ld6b.dtsi [new file with mode: 0644]
arch/arm/boot/dts/uniphier-ph1-pro4-ref.dts
arch/arm/boot/dts/uniphier-ph1-pro4.dtsi
arch/arm/boot/dts/uniphier-ph1-pro5.dtsi [new file with mode: 0644]
arch/arm/boot/dts/uniphier-ph1-sld3-ref.dts
arch/arm/boot/dts/uniphier-ph1-sld3.dtsi
arch/arm/boot/dts/uniphier-ph1-sld8-ref.dts
arch/arm/boot/dts/uniphier-ph1-sld8.dtsi
arch/arm/boot/dts/uniphier-pinctrl.dtsi [new file with mode: 0644]
arch/arm/boot/dts/uniphier-proxstream2.dtsi [new file with mode: 0644]
arch/arm/boot/dts/uniphier-ref-daughter.dtsi [new file with mode: 0644]
arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
arch/arm/boot/dts/vexpress-v2m.dtsi
arch/arm/boot/dts/vf-colibri-eval-v3.dtsi
arch/arm/boot/dts/vfxxx.dtsi
arch/arm/boot/dts/zynq-7000.dtsi
arch/arm/boot/dts/zynq-zc702.dts
arch/arm/configs/omap2plus_defconfig
arch/arm/mach-omap2/pdata-quirks.c
arch/arm/mach-orion5x/Kconfig
arch/arm/mach-orion5x/Makefile
arch/arm/mach-orion5x/lsmini-setup.c [deleted file]
drivers/clk/ti/clk-43xx.c
drivers/pinctrl/pinctrl-tegra.c
include/dt-bindings/clock/r8a7790-clock.h
include/dt-bindings/clock/r8a7791-clock.h
include/dt-bindings/clock/r8a7793-clock.h [new file with mode: 0644]
include/dt-bindings/pinctrl/am43xx.h
include/dt-bindings/pinctrl/dra.h
include/dt-bindings/reset/altr,rst-mgr-a10.h [new file with mode: 0644]

index 23c0978..7fd64ec 100644 (file)
@@ -52,6 +52,7 @@ System Timer (ST) required properties:
 - reg: Should contain registers location and length
 - interrupts: Should contain interrupt for the ST which is the IRQ line
   shared across all System Controller members.
+- clocks: phandle to input clock.
 Its subnodes can be:
 - watchdog: compatible should be "atmel,at91rm9200-wdt"
 
@@ -63,7 +64,7 @@ TC/TCLIB Timer required properties:
   Note that you can specify several interrupt cells if the TC
   block has one interrupt per channel.
 - clock-names: tuple listing input clock names.
-       Required elements: "t0_clk"
+       Required elements: "t0_clk", "slow_clk"
        Optional elements: "t1_clk", "t2_clk"
 - clocks: phandles to input clocks.
 
@@ -91,12 +92,14 @@ RSTC Reset Controller required properties:
 - compatible: Should be "atmel,<chip>-rstc".
   <chip> can be "at91sam9260" or "at91sam9g45" or "sama5d3"
 - reg: Should contain registers location and length
+- clocks: phandle to input clock.
 
 Example:
 
        rstc@fffffd00 {
                compatible = "atmel,at91sam9260-rstc";
                reg = <0xfffffd00 0x10>;
+               clocks = <&clk32k>;
        };
 
 RAMC SDRAM/DDR Controller required properties:
@@ -119,6 +122,7 @@ required properties:
 - compatible: Should be "atmel,<chip>-shdwc".
   <chip> can be "at91sam9260", "at91sam9rl" or "at91sam9x5".
 - reg: Should contain registers location and length
+- clocks: phandle to input clock.
 
 optional properties:
 - atmel,wakeup-mode: String, operation mode of the wakeup mode.
@@ -137,9 +141,10 @@ optional at91sam9x5 properties:
 
 Example:
 
-       rstc@fffffd00 {
-               compatible = "atmel,at91sam9260-rstc";
-               reg = <0xfffffd00 0x10>;
+       shdwc@fffffd10 {
+               compatible = "atmel,at91sam9260-shdwc";
+               reg = <0xfffffd10 0x10>;
+               clocks = <&clk32k>;
        };
 
 Special Function Registers (SFR)
diff --git a/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.txt b/Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.txt
new file mode 100644 (file)
index 0000000..6824b31
--- /dev/null
@@ -0,0 +1,14 @@
+Raspberry Pi VideoCore firmware driver
+
+Required properties:
+
+- compatible:          Should be "raspberrypi,bcm2835-firmware"
+- mboxes:              Phandle to the firmware device's Mailbox.
+                         (See: ../mailbox/mailbox.txt for more information)
+
+Example:
+
+firmware {
+       compatible = "raspberrypi,bcm2835-firmware";
+       mboxes = <&mailbox>;
+};
index 4f40ff3..5171ad8 100644 (file)
@@ -20,6 +20,8 @@ And in addition, the compatible shall be extended with the specific
 board. Currently known boards are:
 
 "buffalo,lschlv2"
+"buffalo,lswvl"
+"buffalo,lswxl"
 "buffalo,lsxhl"
 "buffalo,lsxl"
 "dlink,dns-320"
index dd7550a..2daa424 100644 (file)
@@ -5,6 +5,7 @@ Boards with a MediaTek mt65xx/mt81xx SoC shall have the following property:
 Required root node property:
 
 compatible: Must contain one of
+   "mediatek,mt6580"
    "mediatek,mt6589"
    "mediatek,mt6592"
    "mediatek,mt8127"
@@ -14,6 +15,9 @@ compatible: Must contain one of
 
 Supported boards:
 
+- Evaluation board for MT6580:
+    Required root node properties:
+      - compatible = "mediatek,mt6580-evbp1", "mediatek,mt6580";
 - bq Aquaris5 smart phone:
     Required root node properties:
       - compatible = "mundoreader,bq-aquaris5", "mediatek,mt6589";
index 4f5a535..3c9c3a7 100644 (file)
@@ -11,6 +11,7 @@ Required properties:
        "mediatek,mt6592-sysirq"
        "mediatek,mt6589-sysirq"
        "mediatek,mt6582-sysirq"
+       "mediatek,mt6580-sysirq"
        "mediatek,mt6577-sysirq"
 - interrupt-controller : Identifies the node as an interrupt controller
 - #interrupt-cells : Use the same format as specified by GIC in
index 4f6a82c..9f4e513 100644 (file)
@@ -135,6 +135,9 @@ Boards:
 - AM335X OrionLXm : Substation Automation Platform
   compatible = "novatech,am335x-lxm", "ti,am33xx"
 
+- AM335X phyBOARD-WEGA: Single Board Computer dev kit
+  compatible = "phytec,am335x-wega", "phytec,am335x-phycore-som", "ti,am33xx"
+
 - OMAP5 EVM : Evaluation Module
   compatible = "ti,omap5-evm", "ti,omap5"
 
index 60d4a1e..af58cd7 100644 (file)
@@ -26,3 +26,38 @@ Rockchip platforms device tree bindings
 - ChipSPARK PopMetal-RK3288 board:
     Required root node properties:
       - compatible = "chipspark,popmetal-rk3288", "rockchip,rk3288";
+
+- Netxeon R89 board:
+    Required root node properties:
+      - compatible = "netxeon,r89", "rockchip,rk3288";
+
+- Google Jerry (Hisense Chromebook C11 and more):
+    Required root node properties:
+      - compatible = "google,veyron-jerry-rev7", "google,veyron-jerry-rev6",
+                    "google,veyron-jerry-rev5", "google,veyron-jerry-rev4",
+                    "google,veyron-jerry-rev3", "google,veyron-jerry",
+                    "google,veyron", "rockchip,rk3288";
+
+- Google Minnie (Asus Chromebook Flip C100P):
+    Required root node properties:
+      - compatible = "google,veyron-minnie-rev4", "google,veyron-minnie-rev3",
+                    "google,veyron-minnie-rev2", "google,veyron-minnie-rev1",
+                    "google,veyron-minnie-rev0", "google,veyron-minnie",
+                    "google,veyron", "rockchip,rk3288";
+
+- Google Pinky (dev-board):
+    Required root node properties:
+      - compatible = "google,veyron-pinky-rev2", "google,veyron-pinky",
+                    "google,veyron", "rockchip,rk3288";
+
+- Google Speedy (Asus C201 Chromebook):
+    Required root node properties:
+      - compatible = "google,veyron-speedy-rev9", "google,veyron-speedy-rev8",
+                    "google,veyron-speedy-rev7", "google,veyron-speedy-rev6",
+                    "google,veyron-speedy-rev5", "google,veyron-speedy-rev4",
+                    "google,veyron-speedy-rev3", "google,veyron-speedy-rev2",
+                    "google,veyron-speedy", "google,veyron", "rockchip,rk3288";
+
+- Rockchip R88 board:
+    Required root node properties:
+      - compatible = "rockchip,r88", "rockchip,rk3368";
diff --git a/Documentation/devicetree/bindings/clock/imx6ul-clock.txt b/Documentation/devicetree/bindings/clock/imx6ul-clock.txt
new file mode 100644 (file)
index 0000000..571d503
--- /dev/null
@@ -0,0 +1,13 @@
+* Clock bindings for Freescale i.MX6 UltraLite
+
+Required properties:
+- compatible: Should be "fsl,imx6ul-ccm"
+- reg: Address and length of the register set
+- #clock-cells: Should be <1>
+- clocks: list of clock specifiers, must contain an entry for each required
+  entry in clock-names
+- clock-names: should include entries "ckil", "osc", "ipp_di0" and "ipp_di1"
+
+The clock consumer should specify the desired clock by having the clock
+ID in its "clocks" phandle cell.  See include/dt-bindings/clock/imx6ul-clock.h
+for the full list of i.MX6 UltraLite clock IDs.
index efb51cf..d8b168e 100644 (file)
@@ -21,8 +21,8 @@ Required properties:
        "st,stih416-plls-c32-ddr",      "st,clkgen-plls-c32"
        "st,stih407-plls-c32-a0",       "st,clkgen-plls-c32"
        "st,stih407-plls-c32-a9",       "st,clkgen-plls-c32"
-       "st,stih407-plls-c32-c0_0",     "st,clkgen-plls-c32"
-       "st,stih407-plls-c32-c0_1",     "st,clkgen-plls-c32"
+       "sst,plls-c32-cx_0",            "st,clkgen-plls-c32"
+       "sst,plls-c32-cx_1",            "st,clkgen-plls-c32"
 
        "st,stih415-gpu-pll-c32",       "st,clkgengpu-pll-c32"
        "st,stih416-gpu-pll-c32",       "st,clkgengpu-pll-c32"
index f9c6454..a43d26d 100644 (file)
@@ -1,5 +1,9 @@
 Binding for Synopsys IntelliDDR Multi Protocol Memory Controller
 
+This controller has an optional ECC support in half-bus width (16-bit)
+configuration. The ECC controller corrects one bit error and detects
+two bit errors.
+
 Required properties:
  - compatible: Should be 'xlnx,zynq-ddrc-a05'
  - reg: Base address and size of the controllers memory area
diff --git a/Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.txt
new file mode 100644 (file)
index 0000000..a81bbf3
--- /dev/null
@@ -0,0 +1,36 @@
+* Freescale i.MX6 UltraLite IOMUX Controller
+
+Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
+and usage.
+
+Required properties:
+- compatible: "fsl,imx6ul-iomuxc"
+- fsl,pins: each entry consists of 6 integers and represents the mux and config
+  setting for one pin.  The first 5 integers <mux_reg conf_reg input_reg mux_val
+  input_val> are specified using a PIN_FUNC_ID macro, which can be found in
+  imx6ul-pinfunc.h under device tree source folder.  The last integer CONFIG is
+  the pad setting value like pull-up on this pin.  Please refer to i.MX6 UltraLite
+  Reference Manual for detailed CONFIG settings.
+
+CONFIG bits definition:
+PAD_CTL_HYS                     (1 << 16)
+PAD_CTL_PUS_100K_DOWN           (0 << 14)
+PAD_CTL_PUS_47K_UP              (1 << 14)
+PAD_CTL_PUS_100K_UP             (2 << 14)
+PAD_CTL_PUS_22K_UP              (3 << 14)
+PAD_CTL_PUE                     (1 << 13)
+PAD_CTL_PKE                     (1 << 12)
+PAD_CTL_ODE                     (1 << 11)
+PAD_CTL_SPEED_LOW               (0 << 6)
+PAD_CTL_SPEED_MED               (1 << 6)
+PAD_CTL_SPEED_HIGH              (3 << 6)
+PAD_CTL_DSE_DISABLE             (0 << 3)
+PAD_CTL_DSE_260ohm              (1 << 3)
+PAD_CTL_DSE_130ohm              (2 << 3)
+PAD_CTL_DSE_87ohm               (3 << 3)
+PAD_CTL_DSE_65ohm               (4 << 3)
+PAD_CTL_DSE_52ohm               (5 << 3)
+PAD_CTL_DSE_43ohm               (6 << 3)
+PAD_CTL_DSE_37ohm               (7 << 3)
+PAD_CTL_SRE_FAST                (1 << 0)
+PAD_CTL_SRE_SLOW                (0 << 0)
index 32c1c8b..98c9f56 100644 (file)
@@ -3,6 +3,7 @@ Altera SOCFPGA Reset Manager
 Required properties:
 - compatible : "altr,rst-mgr"
 - reg : Should contain 1 register ranges(address and length)
+- altr,modrst-offset : Should contain the offset of the first modrst register.
 - #reset-cells: 1
 
 Example:
@@ -10,4 +11,5 @@ Example:
                #reset-cells = <1>;
                compatible = "altr,rst-mgr";
                reg = <0xffd05000 0x1000>;
+               altr,modrst-offset = <0x10>;
        };
index 34c1505..5d3791e 100644 (file)
@@ -5,6 +5,7 @@ Required properties:
 - reg: physical base address of the controller and length of memory mapped
   region.
 - interrupts: rtc alarm/event interrupt
+- clocks: phandle to input clock.
 
 Example:
 
@@ -12,4 +13,5 @@ rtc@fffffe00 {
        compatible = "atmel,at91rm9200-rtc";
        reg = <0xfffffe00 0x100>;
        interrupts = <1 4 7>;
+       clocks = <&clk32k>;
 };
index 4ba4dbd..43a8366 100644 (file)
@@ -8,6 +8,7 @@ Required properties:
                            Wakeup generation for event Alarm. It can also be
                            used to control an external PMIC via the
                            pmic_power_en pin.
+       - "ti,am4372-rtc" - for RTC IP used similar to that on AM437X SoC family.
 - reg: Address range of rtc register set
 - interrupts: rtc timer, alarm interrupts in order
 - interrupt-parent: phandle for the interrupt controller
index 8d63f1d..a875997 100644 (file)
@@ -7,8 +7,9 @@ Required properties:
   * "mediatek,mt8173-uart" for MT8173 compatible UARTS
   * "mediatek,mt6589-uart" for MT6589 compatible UARTS
   * "mediatek,mt6582-uart" for MT6582 compatible UARTS
+  * "mediatek,mt6580-uart" for MT6580 compatible UARTS
   * "mediatek,mt6577-uart" for all compatible UARTS (MT8173, MT6589, MT6582, 
-       MT6577)
+       MT6580, MT6577)
 
 - reg: The base address of the UART register bank.
 
index 7c4408f..53a3029 100644 (file)
@@ -2,7 +2,11 @@ Mediatek MT6577, MT6572 and MT6589 Timers
 ---------------------------------------
 
 Required properties:
-- compatible: Should be "mediatek,mt6577-timer"
+- compatible should contain:
+       * "mediatek,mt6589-timer" for MT6589 compatible timers
+       * "mediatek,mt6580-timer" for MT6580 compatible timers
+       * "mediatek,mt6577-timer" for all compatible timers (MT6589, MT6580,
+               MT6577)
 - reg: Should contain location and length for timers register.
 - clocks: Clocks driving the timer hardware. This list should include two
        clocks. The order is system clock and as second clock the RTC clock.
index d444757..d3fbd1f 100644 (file)
@@ -46,6 +46,7 @@ chipone               ChipOne
 chipspark      ChipSPARK
 chrp   Common Hardware Reference Platform
 chunghwa       Chunghwa Picture Tubes Ltd.
+ciaa   Computadora Industrial Abierta Argentina
 cirrus Cirrus Logic, Inc.
 cloudengines   Cloud Engines, Inc.
 cnm    Chips&Media, Inc.
@@ -135,6 +136,7 @@ mitsubishi  Mitsubishi Electric Corporation
 mosaixtech     Mosaix Technologies, Inc.
 moxa   Moxa
 mpl    MPL AG
+msi    Micro-Star International Co. Ltd.
 mti    Imagination Technologies Ltd. (formerly MIPS Technologies Inc.)
 mundoreader    Mundo Reader S.L.
 murata Murata Manufacturing Co., Ltd.
@@ -143,6 +145,7 @@ national    National Semiconductor
 neonode                Neonode Inc.
 netgear        NETGEAR
 netlogic       Broadcom Corporation (formerly NetLogic Microsystems)
+netxeon                Shenzhen Netxeon Technology CO., LTD
 newhaven       Newhaven Display International
 nintendo       Nintendo
 nokia  Nokia
index a4d8697..86fa6de 100644 (file)
@@ -6,6 +6,7 @@ Required properties:
 - compatible: must be "atmel,at91sam9260-wdt".
 - reg: physical base address of the controller and length of memory mapped
   region.
+- clocks: phandle to input clock.
 
 Optional properties:
 - timeout-sec: contains the watchdog timeout in seconds.
@@ -39,6 +40,7 @@ Example:
                compatible = "atmel,at91sam9260-wdt";
                reg = <0xfffffd40 0x10>;
                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+               clocks = <&clk32k>;
                timeout-sec = <15>;
                atmel,watchdog-type = "hardware";
                atmel,reset-type = "all";
index 917aa31..233159d 100644 (file)
@@ -41,6 +41,7 @@ dtb-$(CONFIG_SOC_SAM_V4_V5) += \
        at91sam9x35ek.dtb
 dtb-$(CONFIG_SOC_SAM_V7) += \
        at91-kizbox2.dtb \
+       at91-sama5d2_xplained.dtb \
        at91-sama5d3_xplained.dtb \
        sama5d31ek.dtb \
        sama5d33ek.dtb \
@@ -176,6 +177,8 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
        kirkwood-km_kirkwood.dtb \
        kirkwood-laplug.dtb \
        kirkwood-lschlv2.dtb \
+       kirkwood-lswvl.dtb \
+       kirkwood-lswxl.dtb \
        kirkwood-lsxhl.dtb \
        kirkwood-mplcec4.dtb \
        kirkwood-mv88f6281gtw-ge.dtb \
@@ -211,6 +214,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
        kirkwood-ts419-6281.dtb \
        kirkwood-ts419-6282.dtb
 dtb-$(CONFIG_ARCH_LPC18XX) += \
+       lpc4337-ciaa.dtb \
        lpc4350-hitex-eval.dtb \
        lpc4357-ea4357-devkit.dtb
 dtb-$(CONFIG_ARCH_LPC32XX) += \
@@ -331,6 +335,8 @@ dtb-$(CONFIG_SOC_IMX6SX) += \
        imx6sx-sabreauto.dtb \
        imx6sx-sdb-reva.dtb \
        imx6sx-sdb.dtb
+dtb-$(CONFIG_SOC_IMX6UL) += \
+       imx6ul-14x14-evk.dtb
 dtb-$(CONFIG_SOC_IMX7D) += \
        imx7d-sdb.dtb
 dtb-$(CONFIG_SOC_LS1021A) += \
@@ -390,6 +396,8 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
        omap3-cm-t3530.dtb \
        omap3-cm-t3730.dtb \
        omap3-devkit8000.dtb \
+       omap3-devkit8000-lcd43.dtb \
+       omap3-devkit8000-lcd70.dtb \
        omap3-evm.dtb \
        omap3-evm-37xx.dtb \
        omap3-gta04a3.dtb \
@@ -409,15 +417,19 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
        omap3-overo-alto35.dtb \
        omap3-overo-chestnut43.dtb \
        omap3-overo-gallop43.dtb \
+       omap3-overo-palo35.dtb \
        omap3-overo-palo43.dtb \
        omap3-overo-storm-alto35.dtb \
        omap3-overo-storm-chestnut43.dtb \
        omap3-overo-storm-gallop43.dtb \
+       omap3-overo-storm-palo35.dtb \
        omap3-overo-storm-palo43.dtb \
        omap3-overo-storm-summit.dtb \
        omap3-overo-storm-tobi.dtb \
+       omap3-overo-storm-tobiduo.dtb \
        omap3-overo-summit.dtb \
        omap3-overo-tobi.dtb \
+       omap3-overo-tobiduo.dtb \
        omap3-pandora-600mhz.dtb \
        omap3-pandora-1ghz.dtb \
        omap3-sbc-t3517.dtb \
@@ -426,6 +438,8 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
        omap3-thunder.dtb \
        omap3-zoom3.dtb
 dtb-$(CONFIG_SOC_TI81XX) += \
+       dm8148-evm.dtb \
+       dm8148-t410.dtb \
        dm8168-evm.dtb
 dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-baltos-ir5221.dtb \
@@ -438,7 +452,8 @@ dtb-$(CONFIG_SOC_AM33XX) += \
        am335x-nano.dtb \
        am335x-pepper.dtb \
        am335x-lxm.dtb \
-       am335x-chiliboard.dtb
+       am335x-chiliboard.dtb \
+       am335x-wega-rdk.dtb
 dtb-$(CONFIG_ARCH_OMAP4) += \
        omap4-duovero-parlor.dtb \
        omap4-panda.dtb \
@@ -464,6 +479,8 @@ dtb-$(CONFIG_SOC_DRA7XX) += \
 dtb-$(CONFIG_ARCH_ORION5X) += \
        orion5x-lacie-d2-network.dtb \
        orion5x-lacie-ethernet-disk-mini-v2.dtb \
+       orion5x-linkstation-lswtgl.dtb \
+       orion5x-lswsgl.dtb \
        orion5x-maxtor-shared-storage-2.dtb \
        orion5x-rd88f5182-nas.dtb
 dtb-$(CONFIG_ARCH_PRIMA2) += \
@@ -488,7 +505,12 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
        rk3288-evb-act8846.dtb \
        rk3288-evb-rk808.dtb \
        rk3288-firefly-beta.dtb \
-       rk3288-firefly.dtb
+       rk3288-firefly.dtb \
+       rk3288-r89.dtb \
+       rk3288-veyron-jerry.dtb \
+       rk3288-veyron-minnie.dtb \
+       rk3288-veyron-pinky.dtb \
+       rk3288-veyron-speedy.dtb
 dtb-$(CONFIG_ARCH_S3C24XX) += \
        s3c2416-smdk2416.dtb
 dtb-$(CONFIG_ARCH_S3C64XX) += \
@@ -513,12 +535,15 @@ dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += \
        r8a7790-lager.dtb \
        r8a7791-henninger.dtb \
        r8a7791-koelsch.dtb \
+       r8a7793-gose.dtb \
        r8a7794-alt.dtb \
+       r8a7794-silk.dtb \
        sh73a0-kzm9g.dtb
 dtb-$(CONFIG_ARCH_SOCFPGA) += \
        socfpga_arria5_socdk.dtb \
        socfpga_arria10_socdk_sdmmc.dtb \
        socfpga_cyclone5_socdk.dtb \
+       socfpga_cyclone5_de0_sockit.dtb \
        socfpga_cyclone5_sockit.dtb \
        socfpga_cyclone5_socrates.dtb \
        socfpga_vt.dtb
@@ -541,7 +566,9 @@ dtb-$(CONFIG_ARCH_STI) += \
        stih416-b2020.dtb \
        stih416-b2020e.dtb \
        stih418-b2199.dtb
-dtb-$(CONFIG_ARCH_STM32)+= stm32f429-disco.dtb
+dtb-$(CONFIG_ARCH_STM32)+= \
+       stm32f429-disco.dtb \
+       stm32429i-eval.dtb
 dtb-$(CONFIG_MACH_SUN4I) += \
        sun4i-a10-a1000.dtb \
        sun4i-a10-ba10-tvbox.dtb \
@@ -551,6 +578,7 @@ dtb-$(CONFIG_MACH_SUN4I) += \
        sun4i-a10-hackberry.dtb \
        sun4i-a10-hyundai-a7hd.dtb \
        sun4i-a10-inet97fv2.dtb \
+       sun4i-a10-itead-iteaduino-plus.dts \
        sun4i-a10-jesurun-q5.dtb \
        sun4i-a10-marsboard.dtb \
        sun4i-a10-mini-xplus.dtb \
@@ -598,6 +626,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \
        sun8i-a23-ippo-q8h-v1.2.dtb \
        sun8i-a33-et-q8-v1.6.dtb \
        sun8i-a33-ga10h-v1.1.dtb \
+       sun8i-a33-ippo-q8h-v1.2.dtb \
        sun8i-a33-sinlinx-sina33.dtb
 dtb-$(CONFIG_MACH_SUN9I) += \
        sun9i-a80-optimus.dtb \
@@ -639,10 +668,11 @@ dtb-$(CONFIG_ARCH_U8500) += \
        ste-ccu8540.dtb \
        ste-ccu9540.dtb
 dtb-$(CONFIG_ARCH_UNIPHIER) += \
-       uniphier-ph1-sld3-ref.dtb \
        uniphier-ph1-ld4-ref.dtb \
+       uniphier-ph1-ld6b-ref.dtb \
        uniphier-ph1-pro4-ref.dtb \
-       uniphier-ph1-sld8-ref.dtb
+       uniphier-ph1-sld3-ref.dtb \
+       uniphier-ph1-sld8-ref.dtb 
 dtb-$(CONFIG_ARCH_VERSATILE) += \
        versatile-ab.dtb \
        versatile-pb.dtb
@@ -702,6 +732,7 @@ dtb-$(CONFIG_MACH_DOVE) += \
        dove-dove-db.dtb \
        dove-sbc-a510.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += \
+       mt6580-evbp1.dtb \
        mt6589-aquaris5.dtb \
        mt6592-evb.dtb \
        mt8127-moose.dtb \
index 5c42d25..eadbba3 100644 (file)
 
 &lcdc {
        status = "okay";
+       port {
+               lcdc_0: endpoint@0 {
+                       remote-endpoint = <&hdmi_0>;
+               };
+       };
 };
 
-/ {
-       hdmi {
-               compatible = "ti,tilcdc,slave";
-               i2c = <&i2c0>;
+&i2c0 {
+       tda19988 {
+               compatible = "nxp,tda998x";
+               reg = <0x70>;
                pinctrl-names = "default", "off";
                pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
                pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
-               status = "okay";
+
+               port {
+                       hdmi_0: endpoint@0 {
+                               remote-endpoint = <&lcdc_0>;
+                       };
+               };
        };
 };
 
index 765be27..1942a5c 100644 (file)
        };
 
        sound {
-               compatible = "ti,da830-evm-audio";
-               ti,model = "AM335x-EVM";
-               ti,audio-codec = <&tlv320aic3106>;
-               ti,mcasp-controller = <&mcasp1>;
-               ti,codec-clock-rate = <12000000>;
-               ti,audio-routing =
-                       "Headphone Jack",       "HPLOUT",
-                       "Headphone Jack",       "HPROUT",
-                       "LINE1L",               "Line In",
-                       "LINE1R",               "Line In";
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "AM335x-EVM";
+               simple-audio-card,widgets =
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In";
+               simple-audio-card,routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT",
+                       "LINE1L",               "Line In",
+                       "LINE1R",               "Line In";
+               simple-audio-card,format = "dsp_b";
+               simple-audio-card,bitclock-master = <&sound_master>;
+               simple-audio-card,frame-master = <&sound_master>;
+               simple-audio-card,bitclock-inversion;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp1>;
+               };
+
+               sound_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320aic3106>;
+                       system-clock-frequency = <12000000>;
+               };
        };
 };
 
                >;
        };
 
-       am335x_evm_audio_pins: am335x_evm_audio_pins {
+       mcasp1_pins: mcasp1_pins {
                pinctrl-single,pins = <
                        0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
                        0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
                >;
        };
 
+       mcasp1_pins_sleep: mcasp1_pins_sleep {
+               pinctrl-single,pins = <
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
        dcan1_pins_default: dcan1_pins_default {
                pinctrl-single,pins = <
                        0x168 (PIN_OUTPUT | MUX_MODE2) /* uart0_ctsn.d_can1_tx */
        };
 
        tlv320aic3106: tlv320aic3106@1b {
+               #sound-dai-cells = <0>;
                compatible = "ti,tlv320aic3106";
                reg = <0x1b>;
                status = "okay";
 #include "tps65910.dtsi"
 
 &mcasp1 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&am335x_evm_audio_pins>;
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mcasp1_pins>;
+       pinctrl-1 = <&mcasp1_pins_sleep>;
 
-               status = "okay";
+       status = "okay";
 
-               op-mode = <0>;          /* MCASP_IIS_MODE */
-               tdm-slots = <2>;
-               /* 4 serializers */
-               serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
-                       0 0 1 2
-               >;
-               tx-num-evt = <32>;
-               rx-num-evt = <32>;
+       op-mode = <0>;          /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       /* 4 serializers */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+               0 0 1 2
+       >;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
 };
 
 &tps {
index 156d05e..315bb02 100644 (file)
        };
 
        sound {
-               compatible = "ti,da830-evm-audio";
-               ti,model = "AM335x-EVMSK";
-               ti,audio-codec = <&tlv320aic3106>;
-               ti,mcasp-controller = <&mcasp1>;
-               ti,codec-clock-rate = <24000000>;
-               ti,audio-routing =
-                       "Headphone Jack",       "HPLOUT",
-                       "Headphone Jack",       "HPROUT";
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "AM335x-EVMSK";
+               simple-audio-card,widgets =
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT";
+               simple-audio-card,format = "dsp_b";
+               simple-audio-card,bitclock-master = <&sound_master>;
+               simple-audio-card,frame-master = <&sound_master>;
+               simple-audio-card,bitclock-inversion;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp1>;
+               };
+
+               sound_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320aic3106>;
+                       system-clock-frequency = <24000000>;
+               };
        };
 
        panel {
                >;
        };
 
+       mcasp1_pins_sleep: mcasp1_pins_sleep {
+               pinctrl-single,pins = <
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
        mmc2_pins: pinmux_mmc2_pins {
                pinctrl-single,pins = <
                        0x74 (PIN_INPUT_PULLUP | MUX_MODE7) /* gpmc_wpn.gpio0_31 */
        };
 
        tlv320aic3106: tlv320aic3106@1b {
+               #sound-dai-cells = <0>;
                compatible = "ti,tlv320aic3106";
                reg = <0x1b>;
                status = "okay";
 };
 
 &mcasp1 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&mcasp1_pins>;
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mcasp1_pins>;
+       pinctrl-1 = <&mcasp1_pins_sleep>;
 
-               status = "okay";
+       status = "okay";
 
-               op-mode = <0>;          /* MCASP_IIS_MODE */
-               tdm-slots = <2>;
-               /* 4 serializers */
-               serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
-                       0 0 1 2
-               >;
-               tx-num-evt = <32>;
-               rx-num-evt = <32>;
+       op-mode = <0>;          /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       /* 4 serializers */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+               0 0 1 2
+       >;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
 };
 
 &tscadc {
diff --git a/arch/arm/boot/dts/am335x-phycore-som.dtsi b/arch/arm/boot/dts/am335x-phycore-som.dtsi
new file mode 100644 (file)
index 0000000..4d28fc3
--- /dev/null
@@ -0,0 +1,368 @@
+/*
+ * Copyright (C) 2015 Phytec Messtechnik GmbH
+ * Author: Teresa Remmet <t.remmet@phytec.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "am33xx.dtsi"
+
+/ {
+       model = "Phytec AM335x phyCORE";
+       compatible = "phytec,am335x-phycore-som", "ti,am33xx";
+
+       aliases {
+               rtc0 = &i2c_rtc;
+               rtc1 = &rtc;
+       };
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vdd1_reg>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>; /* 256 MB */
+       };
+
+       vbat: fixedregulator@0 {
+               compatible = "regulator-fixed";
+       };
+};
+
+/* Crypto Module */
+&aes {
+       status = "okay";
+};
+
+&sham {
+       status = "okay";
+};
+
+/* Ethernet */
+&am33xx_pinmux {
+       ethernet0_pins: pinmux_ethernet0 {
+               pinctrl-single,pins = <
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_crs.rmii1_crs_dv */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxerr.rmii1_rxerr */
+                       0x114 (PIN_OUTPUT | MUX_MODE1)          /* mii1_txen.rmii1_txen */
+                       0x124 (PIN_OUTPUT | MUX_MODE1)          /* mii1_txd1.rmii1_txd1 */
+                       0x128 (PIN_OUTPUT | MUX_MODE1)          /* mii1_txd0.rmii1_txd0 */
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxd1.rmii1_rxd1 */
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxd0.rmii1_rxd0 */
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* rmii1_refclk.rmii1_refclk */
+               >;
+       };
+
+       mdio_pins: pinmux_mdio {
+               pinctrl-single,pins = <
+                       /* MDIO */
+                       0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
+                       0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
+               >;
+       };
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <0>;
+       phy-mode = "rmii";
+       dual_emac_res_vlan = <1>;
+};
+
+&davinci_mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mdio_pins>;
+       status = "okay";
+};
+
+&mac {
+       slaves = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&ethernet0_pins>;
+       status = "okay";
+};
+
+&phy_sel {
+       rmii-clock-ext;
+};
+
+/* I2C Busses */
+&am33xx_pinmux {
+       i2c0_pins: pinmux_i2c0 {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT | MUX_MODE0)   /* i2c0_sda.i2c0_sda */
+                       0x18c (PIN_INPUT | MUX_MODE0)   /* i2c0_scl.i2c0_scl */
+               >;
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       tps: pmic@2d {
+               reg = <0x2d>;
+       };
+
+       i2c_eeprom: eeprom@52 {
+               compatible = "atmel,24c32";
+               pagesize = <32>;
+               reg = <0x52>;
+               status = "disabled";
+       };
+
+       i2c_rtc: rtc@68 {
+               compatible = "rv4162";
+               reg = <0x68>;
+               status = "disabled";
+       };
+};
+
+/* NAND memory */
+&am33xx_pinmux {
+               nandflash_pins: pinmux_nandflash {
+                       pinctrl-single,pins = <
+                       0x0 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad0.gpmc_ad0 */
+                       0x4 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad1.gpmc_ad1 */
+                       0x8 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad2.gpmc_ad2 */
+                       0xc (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad3.gpmc_ad3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad4.gpmc_ad4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad5.gpmc_ad5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad6.gpmc_ad6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad7.gpmc_ad7 */
+                       0x70 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_wait0.gpmc_wait0 */
+                       0x7c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn0.gpmc_csn0 */
+                       0x90 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_advn_ale.gpmc_advn_ale */
+                       0x94 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_oen_ren.gpmc_oen_ren */
+                       0x98 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_wen.gpmc_wen */
+                       0x9c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_be0n_cle.gpmc_be0n_cle */
+               >;
+       };
+};
+
+&elm {
+       status = "okay";
+};
+
+&gpmc {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&nandflash_pins>;
+       ranges = <0 0 0x08000000 0x1000000>;   /* CS0: NAND */
+       nandflash: nand@0,0 {
+               reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
+               nand-bus-width = <8>;
+               ti,nand-ecc-opt = "bch8";
+               gpmc,device-nand = "true";
+               gpmc,device-width = <1>;
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <30>;
+               gpmc,cs-wr-off-ns = <30>;
+               gpmc,adv-on-ns = <0>;
+               gpmc,adv-rd-off-ns = <30>;
+               gpmc,adv-wr-off-ns = <30>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <20>;
+               gpmc,oe-on-ns = <10>;
+               gpmc,oe-off-ns = <30>;
+               gpmc,access-ns = <30>;
+               gpmc,rd-cycle-ns = <30>;
+               gpmc,wr-cycle-ns = <30>;
+               gpmc,wait-on-read = "true";
+               gpmc,wait-on-write = "true";
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <50>;
+               gpmc,cycle2cycle-diffcsen;
+               gpmc,clk-activation-ns = <0>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,wr-access-ns = <30>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+
+               elm_id = <&elm>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "xload";
+                       reg = <0x0 0x20000>;
+               };
+               partition@1 {
+                       label = "xload_backup1";
+                       reg = <0x20000 0x20000>;
+               };
+               partition@2 {
+                       label = "xload_backup2";
+                       reg = <0x40000 0x20000>;
+               };
+               partition@3 {
+                       label = "xload_backup3";
+                       reg = <0x60000 0x20000>;
+               };
+               partition@4 {
+                       label = "barebox";
+                       reg = <0x80000 0x80000>;
+               };
+               partition@5 {
+                       label = "bareboxenv";
+                       reg = <0x100000 0x40000>;
+               };
+               partition@6 {
+                       label = "oftree";
+                       reg = <0x140000 0x40000>;
+               };
+               partition@7 {
+                       label = "kernel";
+                       reg = <0x180000 0x800000>;
+               };
+               partition@8 {
+                       label = "root";
+                       reg = <0x980000 0x0>;
+               };
+       };
+};
+
+/* Power */
+#include "tps65910.dtsi"
+
+&tps {
+       vcc1-supply = <&vbat>;
+       vcc2-supply = <&vbat>;
+       vcc3-supply = <&vbat>;
+       vcc4-supply = <&vbat>;
+       vcc5-supply = <&vbat>;
+       vcc6-supply = <&vbat>;
+       vcc7-supply = <&vbat>;
+       vccio-supply = <&vbat>;
+
+       regulators {
+               vrtc_reg: regulator@0 {
+                       regulator-always-on;
+               };
+
+               vio_reg: regulator@1 {
+                       regulator-always-on;
+               };
+
+               vdd1_reg: regulator@2 {
+                       /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
+                       regulator-name = "vdd_mpu";
+                       regulator-min-microvolt = <912500>;
+                       regulator-max-microvolt = <1312500>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               vdd2_reg: regulator@3 {
+                       /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
+                       regulator-name = "vdd_core";
+                       regulator-min-microvolt = <912500>;
+                       regulator-max-microvolt = <1150000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               vdd3_reg: regulator@4 {
+                       regulator-always-on;
+               };
+
+               vdig1_reg: regulator@5 {
+                       regulator-name = "vdig1_1p8v";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               vdig2_reg: regulator@6 {
+                       regulator-always-on;
+               };
+
+               vpll_reg: regulator@7 {
+                       regulator-always-on;
+               };
+
+               vdac_reg: regulator@8 {
+                       regulator-always-on;
+               };
+
+               vaux1_reg: regulator@9 {
+                       regulator-always-on;
+               };
+
+               vaux2_reg: regulator@10 {
+                       regulator-always-on;
+               };
+
+               vaux33_reg: regulator@11 {
+                       regulator-always-on;
+               };
+
+               vmmc_reg: regulator@12 {
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+       };
+};
+
+&vbat {
+       regulator-name = "vbat";
+       regulator-min-microvolt = <5000000>;
+       regulator-max-microvolt = <5000000>;
+       regulator-boot-on;
+};
+
+/* SPI Busses */
+&am33xx_pinmux {
+       spi0_pins: pinmux_spi0 {
+               pinctrl-single,pins = <
+                       0x150 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* spi0_clk.spi0_clk */
+                       0x154 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* spi0_d0.spi0_d0 */
+                       0x158 (PIN_INPUT_PULLUP | MUX_MODE0)    /* spi0_d1.spi0_d1 */
+                       0x15c (PIN_INPUT_PULLUP | MUX_MODE0)    /* spi0_cs0.spi0_cs0 */
+               >;
+       };
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi0_pins>;
+       status = "okay";
+
+       serial_flash: m25p80@0 {
+               compatible = "m25p80";
+               spi-max-frequency = <48000000>;
+               reg = <0x0>;
+               m25p,fast-read;
+               status = "disabled";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "xload";
+                       reg = <0x0 0x20000>;
+               };
+               partition@1 {
+                       label = "barebox";
+                       reg = <0x20000 0x80000>;
+               };
+               partition@2 {
+                       label = "bareboxenv";
+                       reg = <0xa0000 0x20000>;
+               };
+               partition@3 {
+                       label = "oftree";
+                       reg = <0xc0000 0x20000>;
+               };
+               partition@4 {
+                       label = "kernel";
+                       reg = <0xe0000 0x0>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/am335x-wega-rdk.dts b/arch/arm/boot/dts/am335x-wega-rdk.dts
new file mode 100644 (file)
index 0000000..6431b7d
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2015 Phytec Messtechnik GmbH
+ * Author: Teresa Remmet <t.remmet@phytec.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "am335x-phycore-som.dtsi"
+#include "am335x-wega.dtsi"
+
+/* SoM */
+&i2c_eeprom {
+       status = "okay";
+};
+
+&i2c_rtc {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/am335x-wega.dtsi b/arch/arm/boot/dts/am335x-wega.dtsi
new file mode 100644 (file)
index 0000000..5e541bd
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2015 Phytec Messtechnik GmbH
+ * Author: Teresa Remmet <t.remmet@phytec.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/ {
+       model = "Phytec AM335x phyBOARD-WEGA";
+       compatible = "phytec,am335x-wega", "phytec,am335x-phycore-som", "ti,am33xx";
+
+};
+
+/* CAN Busses */
+&am33xx_pinmux {
+       dcan1_pins: pinmux_dcan1 {
+               pinctrl-single,pins = <
+                       0x168 (PIN_OUTPUT_PULLUP | MUX_MODE2) /* uart0_ctsn.d_can1_tx */
+                       0x16c (PIN_INPUT_PULLUP | MUX_MODE2) /* uart0_rtsn.d_can1_rx */
+               >;
+       };
+};
+
+&dcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&dcan1_pins>;
+       status = "okay";
+};
+
+/* Ethernet */
+&am33xx_pinmux {
+       ethernet1_pins: pinmux_ethernet1 {
+               pinctrl-single,pins = <
+                       0x40 (PIN_OUTPUT | MUX_MODE1)           /* gpmc_a0.mii2_txen */
+                       0x44 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a1.mii2_rxdv */
+                       0x48 (PIN_OUTPUT | MUX_MODE1)           /* gpmc_a2.mii2_txd3 */
+                       0x4c (PIN_OUTPUT | MUX_MODE1)           /* gpmc_a3.mii2_txd2 */
+                       0x50 (PIN_OUTPUT | MUX_MODE1)           /* gpmc_a4.mii2_txd1 */
+                       0x54 (PIN_OUTPUT | MUX_MODE1)           /* gpmc_a5.mii2_txd0 */
+                       0x58 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a6.mii2_txclk */
+                       0x5c (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a7.mii2_rxclk */
+                       0x60 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a8.mii2_rxd3 */
+                       0x64 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a9.mii2_rxd2 */
+                       0x68 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a10.mii2_rxd1 */
+                       0x6c (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_a11.mii2_rxd0 */
+                       0x74 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_wpn.mii2_rxerr */
+                       0x78 (PIN_INPUT_PULLDOWN | MUX_MODE1)   /* gpmc_ben1.mii2_col */
+               >;
+       };
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+       phy-mode = "mii";
+       dual_emac_res_vlan = <2>;
+};
+
+&mac {
+       slaves = <2>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&ethernet0_pins &ethernet1_pins>;
+       dual_emac = <1>;
+};
+
+/* MMC */
+&am33xx_pinmux {
+       mmc1_pins: pinmux_mmc1 {
+               pinctrl-single,pins = <
+                       0x0F0 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat3.mmc0_dat3 */
+                       0x0F4 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat2.mmc0_dat2 */
+                       0x0F8 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat1.mmc0_dat1 */
+                       0x0FC (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_dat0.mmc0_dat0 */
+                       0x100 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_clk.mmc0_clk */
+                       0x104 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_cmd.mmc0_cmd */
+                       0x160 (PIN_INPUT_PULLUP | MUX_MODE7)    /* spi0_cs1.mmc0_sdcd */
+               >;
+       };
+};
+
+&mmc1 {
+       vmmc-supply = <&vmmc_reg>;
+       bus-width = <4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+/* UARTs */
+&am33xx_pinmux {
+       uart0_pins: pinmux_uart0 {
+               pinctrl-single,pins = <
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
+                       0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
+               >;
+       };
+
+       uart1_pins: pinmux_uart1_pins {
+               pinctrl-single,pins = <
+                       0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
+                       0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */
+                       0x178 (PIN_INPUT | MUX_MODE0)           /* uart1_ctsn.uart1_ctsn */
+                       0x17c (PIN_OUTPUT_PULLDOWN | MUX_MODE0)         /* uart1_rtsn.uart1_rtsn */
+               >;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+       status = "okay";
+};
+
+/* USB */
+&cppi41dma {
+       status = "okay";
+};
+
+&usb_ctrl_mod {
+       status = "okay";
+};
+
+&usb {
+       status = "okay";
+};
+
+&usb0 {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usb0_phy {
+       status = "okay";
+};
+
+&usb1 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb1_phy {
+       status = "okay";
+};
index b76f9a2..9117c1a 100644 (file)
                        #size-cells = <1>;
                        ranges = <0 0x44c00000 0x280000>;
 
+                       wkup_m3: wkup_m3@100000 {
+                               compatible = "ti,am3352-wkup-m3";
+                               reg = <0x100000 0x4000>,
+                                     <0x180000 0x2000>;
+                               reg-names = "umem", "dmem";
+                               ti,hwmods = "wkup_m3";
+                               ti,pm-firmware = "am335x-pm-firmware.elf";
+                       };
+
                        prcm: prcm@200000 {
                                compatible = "ti,am3-prcm";
                                reg = <0x200000 0x4000>;
                                        };
                                };
 
+                               wkup_m3_ipc: wkup_m3_ipc@1324 {
+                                       compatible = "ti,am3352-wkup-m3-ipc";
+                                       reg = <0x1324 0x24>;
+                                       interrupts = <78>;
+                                       ti,rproc = <&wkup_m3>;
+                                       mboxes = <&mailbox &mbox_wkupm3>;
+                               };
+
                                scm_clockdomains: clockdomains {
                                };
                        };
                        reg = <0x40300000 0x10000>; /* 64k */
                };
 
-               wkup_m3: wkup_m3@44d00000 {
-                       compatible = "ti,am3353-wkup-m3";
-                       reg = <0x44d00000 0x4000        /* M3 UMEM */
-                              0x44d80000 0x2000>;      /* M3 DMEM */
-                       ti,hwmods = "wkup_m3";
-                       ti,no-reset-on-init;
-               };
-
                elm: elm@48080000 {
                        compatible = "ti,am3352-elm";
                        reg = <0x48080000 0x2000>;
index 359a3b6..564900b 100644 (file)
                i2c1 = &i2c1;
                i2c2 = &i2c2;
                serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               serial5 = &uart5;
                ethernet0 = &cpsw_emac0;
                ethernet1 = &cpsw_emac1;
        };
                interrupt-parent = <&gic>;
        };
 
+       scu: scu@48240000 {
+               compatible = "arm,cortex-a9-scu";
+               reg = <0x48240000 0x100>;
+       };
+
+       global_timer: timer@48240200 {
+               compatible = "arm,cortex-a9-global-timer";
+               reg = <0x48240200 0x100>;
+               interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-parent = <&gic>;
+               clocks = <&dpll_mpu_m2_ck>;
+       };
+
+       local_timer: timer@48240600 {
+               compatible = "arm,cortex-a9-twd-timer";
+               reg = <0x48240600 0x100>;
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-parent = <&gic>;
+               clocks = <&dpll_mpu_m2_ck>;
+       };
+
        l2-cache-controller@48242000 {
                compatible = "arm,pl310-cache";
                reg = <0x48242000 0x1000>;
                        #size-cells = <1>;
                        ranges = <0 0x44c00000 0x287000>;
 
+                       wkup_m3: wkup_m3@100000 {
+                               compatible = "ti,am4372-wkup-m3";
+                               reg = <0x100000 0x4000>,
+                                     <0x180000 0x2000>;
+                               reg-names = "umem", "dmem";
+                               ti,hwmods = "wkup_m3";
+                               ti,pm-firmware = "am335x-pm-firmware.elf";
+                       };
+
                        prcm: prcm@1f0000 {
                                compatible = "ti,am4-prcm";
                                reg = <0x1f0000 0x11000>;
                                        };
                                };
 
+                               wkup_m3_ipc: wkup_m3_ipc@1324 {
+                                       compatible = "ti,am4372-wkup-m3-ipc";
+                                       reg = <0x1324 0x44>;
+                                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                                       ti,rproc = <&wkup_m3>;
+                                       mboxes = <&mailbox &mbox_wkupm3>;
+                               };
+
                                scm_clockdomains: clockdomains {
                                };
                        };
                };
 
                rtc: rtc@44e3e000 {
-                       compatible = "ti,am4372-rtc","ti,da830-rtc";
+                       compatible = "ti,am4372-rtc", "ti,am3352-rtc",
+                                    "ti,da830-rtc";
                        reg = <0x44e3e000 0x1000>;
                        interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
                                      GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ti,hwmods = "cpgmac0";
-                       clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
-                       clock-names = "fck", "cpts";
+                       clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>,
+                                <&dpll_clksel_mac_clk>;
+                       clock-names = "fck", "cpts", "50mclk";
+                       assigned-clocks = <&dpll_clksel_mac_clk>;
+                       assigned-clock-rates = <50000000>;
                        status = "disabled";
                        cpdma_channels = <8>;
                        ale_entries = <1024>;
                        usb1: usb@48390000 {
                                compatible = "synopsys,dwc3";
                                reg = <0x48390000 0x10000>;
-                               interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                phys = <&usb2_phy1>;
                                phy-names = "usb2-phy";
                                maximum-speed = "high-speed";
                        usb2: usb@483d0000 {
                                compatible = "synopsys,dwc3";
                                reg = <0x483d0000 0x10000>;
-                               interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                phys = <&usb2_phy2>;
                                phy-names = "usb2-phy";
                                maximum-speed = "high-speed";
index 84aa30c..215775d 100644 (file)
 
        aliases {
                display0 = &lcd0;
-               serial3 = &uart3;
        };
 
-       vmmcsd_fixed: fixedregulator-sd {
+       evm_v3_3d: fixedregulator-v3_3d {
                compatible = "regulator-fixed";
-               regulator-name = "vmmcsd_fixed";
+               regulator-name = "evm_v3_3d";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
                enable-active-high;
                compatible = "osddisplays,osd057T0559-34ts", "panel-dpi";
                label = "lcd";
 
-               pinctrl-names = "default";
-               pinctrl-0 = <&lcd_pins>;
-
-               /*
-                * SelLCDorHDMI, LOW to select HDMI. This is not really the
-                * panel's enable GPIO, but we don't have HDMI driver support nor
-                * support to switch between two displays, so using this gpio as
-                * panel's enable should be safe.
-                */
-               enable-gpios = <&gpio5 8 GPIO_ACTIVE_HIGH>;
-
                panel-timing {
                        clock-frequency = <33000000>;
                        hactive = <800>;
                clock-frequency = <12000000>;
        };
 
+       sound0: sound@0 {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "AM437x-GP-EVM";
+               simple-audio-card,widgets =
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In";
+               simple-audio-card,routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT",
+                       "LINE1L",               "Line In",
+                       "LINE1R",               "Line In";
+               simple-audio-card,format = "dsp_b";
+               simple-audio-card,bitclock-master = <&sound0_master>;
+               simple-audio-card,frame-master = <&sound0_master>;
+               simple-audio-card,bitclock-inversion;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp1>;
+                       system-clock-frequency = <12000000>;
+               };
+
+               sound0_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320aic3106>;
+                       system-clock-frequency = <12000000>;
+               };
+       };
 };
 
 &am43xx_pinmux {
 
        nand_flash_x8: nand_flash_x8 {
                pinctrl-single,pins = <
-                       0x26c(PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* spi2_cs0.gpio/eMMCorNANDsel */
                        0x0  (PIN_INPUT  | MUX_MODE0)   /* gpmc_ad0.gpmc_ad0 */
                        0x4  (PIN_INPUT  | MUX_MODE0)   /* gpmc_ad1.gpmc_ad1 */
                        0x8  (PIN_INPUT  | MUX_MODE0)   /* gpmc_ad2.gpmc_ad2 */
                >;
        };
 
-       lcd_pins: lcd_pins {
+       display_mux_pins: display_mux_pins {
                pinctrl-single,pins = <
                        /* GPIO 5_8 to select LCD / HDMI */
                        0x238 (PIN_OUTPUT_PULLUP | MUX_MODE7)
                        0x234 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart3_rtsn.uart3_rtsn */
                >;
        };
+
+       mcasp1_pins: mcasp1_pins {
+               pinctrl-single,pins = <
+                       0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* mii1_crs.mcasp1_aclkx */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* mii1_rxerr.mcasp1_fsx */
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4)  /* rmii1_ref_clk.mcasp1_axr3 */
+               >;
+       };
+
+       mcasp1_sleep_pins: mcasp1_sleep_pins {
+               pinctrl-single,pins = <
+                       0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       gpio0_pins: gpio0_pins {
+               pinctrl-single,pins = <
+                       0x26c (PIN_OUTPUT | MUX_MODE9) /* spi2_cs0.gpio0_23 SEL_eMMCorNANDn */
+               >;
+       };
+
+       emmc_pins_default: emmc_pins_default {
+               pinctrl-single,pins = <
+                       0x00 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
+                       0x04 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
+                       0x08 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
+                       0x0c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
+                       0x80 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
+                       0x84 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
+               >;
+       };
+
+       emmc_pins_sleep: emmc_pins_sleep {
+               pinctrl-single,pins = <
+                       0x00 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad0.gpio1_0 */
+                       0x04 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad1.gpio1_1 */
+                       0x08 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad2.gpio1_2 */
+                       0x0c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad3.gpio1_3 */
+                       0x10 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad4.gpio1_4 */
+                       0x14 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad5.gpio1_5 */
+                       0x18 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad6.gpio1_6 */
+                       0x1c (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_ad7.gpio1_7 */
+                       0x80 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_csn1.gpio1_30 */
+                       0x84 (PIN_INPUT_PULLDOWN | MUX_MODE7) /* gpmc_csn2.gpio1_31 */
+               >;
+       };
 };
 
 &i2c0 {
                        regulator-name = "v1_0bat";
                        regulator-min-microvolt = <1000000>;
                        regulator-max-microvolt = <1000000>;
+                       regulator-boot-on;
+                       regulator-always-on;
                };
 
                dcdc6: regulator-dcdc6 {
                        regulator-name = "v1_8bat";
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
+                       regulator-boot-on;
+                       regulator-always-on;
                };
 
                ldo1: regulator-ldo1 {
                        };
                };
        };
+
+       tlv320aic3106: tlv320aic3106@1b {
+               #sound-dai-cells = <0>;
+               compatible = "ti,tlv320aic3106";
+               reg = <0x1b>;
+               status = "okay";
+
+               /* Regulators */
+               IOVDD-supply = <&evm_v3_3d>; /* V3_3D -> <tps63031> EN: V1_8D -> VBAT */
+               AVDD-supply = <&evm_v3_3d>; /* v3_3AUD -> V3_3D -> ... */
+               DRVDD-supply = <&evm_v3_3d>; /* v3_3AUD -> V3_3D -> ... */
+               DVDD-supply = <&ldo1>; /* V1_8D -> LDO1 */
+       };
 };
 
 &epwmss0 {
 };
 
 &gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio0_pins>;
        status = "okay";
+
+       p23 {
+               gpio-hog;
+               gpios = <23 GPIO_ACTIVE_HIGH>;
+               /* SelEMMCorNAND selects between eMMC and NAND:
+                * Low: NAND
+                * High: eMMC
+                * When changing this line make sure the newly
+                * selected device node is enabled and the previously
+                * selected device node is disabled.
+                */
+               output-low;
+               line-name = "SelEMMCorNAND";
+       };
 };
 
 &gpio1 {
 };
 
 &gpio5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&display_mux_pins>;
        status = "okay";
        ti,no-reset-on-init;
+
+       p8 {
+               /*
+                * SelLCDorHDMI selects between display and audio paths:
+                * Low: HDMI display with audio via HDMI
+                * High: LCD display with analog audio via aic3111 codec
+                */
+               gpio-hog;
+               gpios = <8 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "SelLCDorHDMI";
+       };
 };
 
 &mmc1 {
        status = "okay";
-       vmmc-supply = <&vmmcsd_fixed>;
+       vmmc-supply = <&evm_v3_3d>;
        bus-width = <4>;
        pinctrl-names = "default";
        pinctrl-0 = <&mmc1_pins>;
        cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
 };
 
+/* eMMC sits on mmc2 */
+&mmc2 {
+       /*
+        * When enabling eMMC, disable GPMC/NAND and set
+        * SelEMMCorNAND to output-high
+        */
+       status = "disabled";
+       vmmc-supply = <&evm_v3_3d>;
+       bus-width = <8>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&emmc_pins_default>;
+       pinctrl-1 = <&emmc_pins_sleep>;
+       ti,non-removable;
+};
+
 &mmc3 {
        status = "okay";
        /* these are on the crossbar and are outlined in the
 };
 
 &gpmc {
+       /*
+        * When enabling GPMC, disable eMMC and set
+        * SelEMMCorNAND to output-low
+        */
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&nand_flash_x8>;
                };
        };
 };
+
+&mcasp1 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mcasp1_pins>;
+       pinctrl-1 = <&mcasp1_sleep_pins>;
+
+       status = "okay";
+
+       op-mode = <0>; /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       /* 4 serializers */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+               0 0 1 2
+       >;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
+};
index c17097d..22af448 100644 (file)
        };
 
        sound {
-               compatible = "ti,da830-evm-audio";
-               ti,model = "AM437x-SK-EVM";
-               ti,audio-codec = <&tlv320aic3106>;
-               ti,mcasp-controller = <&mcasp1>;
-               ti,codec-clock-rate = <24000000>;
-               ti,audio-routing =
-                       "Headphone Jack",       "HPLOUT",
-                       "Headphone Jack",       "HPROUT";
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "AM437x-SK-EVM";
+               simple-audio-card,widgets =
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In";
+               simple-audio-card,routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT",
+                       "LINE1L",               "Line In",
+                       "LINE1R",               "Line In";
+               simple-audio-card,format = "dsp_b";
+               simple-audio-card,bitclock-master = <&sound_master>;
+               simple-audio-card,frame-master = <&sound_master>;
+               simple-audio-card,bitclock-inversion;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp1>;
+               };
+
+               sound_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320aic3106>;
+                       system-clock-frequency = <24000000>;
+               };
        };
 
        matrix_keypad: matrix_keypad@0 {
                >;
        };
 
+       mcasp1_pins_sleep: mcasp1_pins_sleep {
+               pinctrl-single,pins = <
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x108 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
        lcd_pins: lcd_pins {
                pinctrl-single,pins = <
                        0x1c (PIN_OUTPUT_PULLDOWN | MUX_MODE7) /* gpcm_ad7.gpio1_7 */
        };
 
        tlv320aic3106: tlv320aic3106@1b {
+               #sound-dai-cells = <0>;
                compatible = "ti,tlv320aic3106";
                reg = <0x1b>;
                status = "okay";
 };
 
 &mcasp1 {
-       pinctrl-names = "default";
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mcasp1_pins>;
+       pinctrl-1 = <&mcasp1_pins_sleep>;
 
        status = "okay";
 
index 795d68a..86c2dfb 100644 (file)
@@ -14,6 +14,7 @@
 #include <dt-bindings/pinctrl/am43xx.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/sound/tlv320aic31xx-micbias.h>
 
 / {
        model = "TI AM43x EPOS EVM";
                enable-active-high;
        };
 
+       vbat: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vbat";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+       };
+
        lcd0: display {
                compatible = "osddisplays,osd057T0559-34ts", "panel-dpi";
                label = "lcd";
 
-               pinctrl-names = "default";
-               pinctrl-0 = <&lcd_pins>;
-
-               /*
-                * SelLCDorHDMI, LOW to select HDMI. This is not really the
-                * panel's enable GPIO, but we don't have HDMI driver support nor
-                * support to switch between two displays, so using this gpio as
-                * panel's enable should be safe.
-                */
-               enable-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
-
                panel-timing {
                        clock-frequency = <33000000>;
                        hactive = <800>;
                brightness-levels = <0 51 53 56 62 75 101 152 255>;
                default-brightness-level = <8>;
        };
+
+       sound0: sound@0 {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "AM43-EPOS-EVM";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack",
+                       "Speaker", "Speaker";
+               simple-audio-card,routing =
+                       "MIC1LP", "Microphone Jack",
+                       "MIC1RP", "Microphone Jack",
+                       "MIC1LP", "MICBIAS",
+                       "MIC1RP", "MICBIAS",
+                       "Headphone Jack", "HPL",
+                       "Headphone Jack", "HPR",
+                       "Speaker", "SPL",
+                       "Speaker", "SPR";
+               simple-audio-card,format = "dsp_b";
+               simple-audio-card,bitclock-master = <&sound0_master>;
+               simple-audio-card,frame-master = <&sound0_master>;
+               simple-audio-card,bitclock-inversion;
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp1>;
+                       system-clock-frequency = <12000000>;
+               };
+
+               sound0_master: simple-audio-card,codec {
+                       sound-dai = <&tlv320aic3111>;
+                       system-clock-frequency = <12000000>;
+               };
+       };
 };
 
 &am43xx_pinmux {
                        >;
                };
 
-               lcd_pins: lcd_pins {
+               display_mux_pins: display_mux_pins {
                        pinctrl-single,pins = <
                                /* GPMC CLK -> GPIO 2_1 to select LCD / HDMI */
                                0x08C (PIN_OUTPUT_PULLUP | MUX_MODE7)
                                0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN | MUX_MODE7)
                        >;
                };
+
+               mcasp1_pins: mcasp1_pins {
+                       pinctrl-single,pins = <
+                               0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE3) /* MCASP0_ACLKR/MCASP1_ACLKX */
+                               0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE3) /* MCASP0_FSR/MCASP1_FSX */
+                               0x1a8 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)/* MCASP0_AXR1/MCASP1_AXR0 */
+                               0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE3) /* MCASP0_AHCLKX/MCASP1_AXR1 */
+                       >;
+               };
+
+               mcasp1_sleep_pins: mcasp1_sleep_pins {
+                       pinctrl-single,pins = <
+                               0x1a0 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       >;
+               };
 };
 
 &mmc1 {
                        regulator-always-on;
                };
 
+               dcdc4: regulator-dcdc4 {
+                       compatible = "ti,tps65218-dcdc4";
+                       regulator-name = "vdcdc4";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
                dcdc5: regulator-dcdc5 {
                        compatible = "ti,tps65218-dcdc5";
                        regulator-name = "v1_0bat";
                touchscreen-size-x = <1024>;
                touchscreen-size-y = <600>;
        };
+
+       tlv320aic3111: tlv320aic3111@18 {
+               #sound-dai-cells = <0>;
+               compatible = "ti,tlv320aic3111";
+               reg = <0x18>;
+               status = "okay";
+
+               ai31xx-micbias-vg = <MICBIAS_2_0V>;
+
+               /* Regulators */
+               HPVDD-supply = <&dcdc4>; /* v3_3AUD -> V3_3D -> DCDC4 */
+               SPRVDD-supply = <&vbat>; /* vbat */
+               SPLVDD-supply = <&vbat>; /* vbat */
+               AVDD-supply = <&dcdc4>; /* v3_3AUD -> V3_3D -> DCDC4 */
+               IOVDD-supply = <&dcdc4>; /* V3_3D -> DCDC4 */
+               DVDD-supply = <&ldo1>; /* V1_8AUD -> V1_8D -> LDO1 */
+       };
 };
 
 &i2c2 {
 };
 
 &gpio2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&display_mux_pins>;
        status = "okay";
+
+       p1 {
+               /*
+                * SelLCDorHDMI selects between display and audio paths:
+                * Low: HDMI display with audio via HDMI
+                * High: LCD display with analog audio via aic3111 codec
+                */
+               gpio-hog;
+               gpios = <1 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "SelLCDorHDMI";
+       };
 };
 
 &gpio3 {
                };
        };
 };
+
+&mcasp1 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&mcasp1_pins>;
+       pinctrl-1 = <&mcasp1_sleep_pins>;
+
+       status = "okay";
+
+       op-mode = <0>;          /* MCASP_IIS_MODE */
+       tdm-slots = <2>;
+       /* 4 serializer */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+               1 2 0 0
+       >;
+       tx-num-evt = <32>;
+       rx-num-evt = <32>;
+};
index d0c0dfa..cc88728 100644 (file)
                reg = <0x4238>;
        };
 
+       dpll_clksel_mac_clk: dpll_clksel_mac_clk {
+               #clock-cells = <0>;
+               compatible = "ti,divider-clock";
+               clocks = <&dpll_core_m5_ck>;
+               reg = <0x4234>;
+               ti,bit-shift = <2>;
+               ti,dividers = <2>, <5>;
+       };
+
        clk_32k_mosc_ck: clk_32k_mosc_ck {
                #clock-cells = <0>;
                compatible = "fixed-clock";
index f9a4b31..3a05b94 100644 (file)
 
        vmmc-supply = <&ldo1_reg>;
        vmmc_aux-supply = <&vdd_3v3>;
-       pbias-supply = <&pbias_mmc_reg>;
        bus-width = <4>;
        cd-gpios = <&gpio6 27 0>; /* gpio 219 */
 };
index 67a0ab0..e9a3817 100644 (file)
                                reg = <0x8000 0x1000>;
                                cache-unified;
                                cache-level = <2>;
+                               arm,double-linefill-incr = <1>;
+                               arm,double-linefill-wrap = <0>;
+                               arm,double-linefill = <1>;
+                               prefetch-data = <1>;
                        };
 
                        scu@c000 {
index fd4f6fd..353c925 100644 (file)
                                pinctrl-0 = <&i2c0_pins>;
                                status = "okay";
                                clock-frequency = <100000>;
-                               /*
-                                * The EEPROM located at adresse 54 is needed
-                                * for the boot - DO NOT ERASE IT -
-                                */
 
                                expander0: pca9555@20 {
                                        compatible = "nxp,pca9555";
                                        reg = <0x21>;
                                };
 
+                               eeprom@57 {
+                                       compatible = "atmel,24c64";
+                                       reg = <0x57>;
+                               };
                        };
 
                        serial@12000 {
        reg_sata0: pwr-sata0 {
                compatible = "regulator-fixed";
                regulator-name = "pwr_en_sata0";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
                enable-active-high;
                regulator-always-on;
-
+               gpio = <&expander0 2 GPIO_ACTIVE_HIGH>;
        };
 
        reg_5v_sata0: v5-sata0 {
index 04ecfe6..f9f2347 100644 (file)
                                reg = <0x8000 0x1000>;
                                cache-unified;
                                cache-level = <2>;
+                               arm,double-linefill-incr = <1>;
+                               arm,double-linefill-wrap = <0>;
+                               arm,double-linefill = <1>;
+                               prefetch-data = <1>;
                        };
 
                        scu@c000 {
                        };
 
                        xor@60800 {
-                               compatible = "marvell,orion-xor";
+                               compatible = "marvell,armada-380-xor", "marvell,orion-xor";
                                reg = <0x60800 0x100
                                       0x60a00 0x100>;
                                clocks = <&gateclk 22>;
                        };
 
                        xor@60900 {
-                               compatible = "marvell,orion-xor";
+                               compatible = "marvell,armada-380-xor", "marvell,orion-xor";
                                reg = <0x60900 0x100
                                       0x60b00 0x100>;
                                clocks = <&gateclk 28>;
index fc9864f..dc6efd3 100644 (file)
                                reg = <0x8000 0x1000>;
                                cache-unified;
                                cache-level = <2>;
+                               arm,double-linefill-incr = <1>;
+                               arm,double-linefill-wrap = <0>;
+                               arm,double-linefill = <1>;
+                               prefetch-data = <1>;
                        };
 
                        scu@c000 {
                        };
 
                        xor@60800 {
-                               compatible = "marvell,orion-xor";
+                               compatible = "marvell,armada-380-xor", "marvell,orion-xor";
                                reg = <0x60800 0x100
                                       0x60a00 0x100>;
                                clocks = <&gateclk 22>;
                        };
 
                        xor@60900 {
-                               compatible = "marvell,orion-xor";
+                               compatible = "marvell,armada-380-xor", "marvell,orion-xor";
                                reg = <0x60900 0x100
                                       0x60b00 0x100>;
                                clocks = <&gateclk 28>;
diff --git a/arch/arm/boot/dts/at91-sama5d2_xplained.dts b/arch/arm/boot/dts/at91-sama5d2_xplained.dts
new file mode 100644 (file)
index 0000000..e8d63af
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * at91-sama5d2_xplained.dts - Device Tree file for SAMA5D2 Xplained board
+ *
+ *  Copyright (C) 2015 Atmel,
+ *                2015 Nicolas Ferre <nicolas.ferre@atmel.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+/dts-v1/;
+#include "sama5d2.dtsi"
+
+/ {
+       model = "Atmel SAMA5D2 Xplained";
+       compatible = "atmel,sama5d2-xplained", "atmel,sama5d2", "atmel,sama5";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory {
+               reg = <0x20000000 0x80000>;
+       };
+
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               main_clock: clock@0 {
+                       compatible = "atmel,osc", "fixed-clock";
+                       clock-frequency = <12000000>;
+               };
+
+               slow_xtal {
+                       clock-frequency = <32768>;
+               };
+
+               main_xtal {
+                       clock-frequency = <12000000>;
+               };
+       };
+
+       ahb {
+               usb0: gadget@00300000 {
+                       status = "okay";
+               };
+
+               usb1: ohci@00400000 {
+                       num-ports = <3>;
+                       status = "okay";
+               };
+
+               usb2: ehci@00500000 {
+                       status = "okay";
+               };
+
+               apb {
+                       spi0: spi@f8000000 {
+                               status = "okay";
+
+                               m25p80@0 {
+                                       compatible = "atmel,at25df321a";
+                                       reg = <0>;
+                                       spi-max-frequency = <50000000>;
+                               };
+                       };
+
+                       macb0: ethernet@f8008000 {
+                               phy-mode = "rmii";
+                               status = "okay";
+                       };
+
+                       uart1: serial@f8020000 {
+                               status = "okay";
+                       };
+
+                       i2c0: i2c@f8028000 {
+                               dmas = <0>, <0>;
+                               status = "okay";
+                       };
+
+                       uart3: serial@fc008000 {
+                               status = "okay";
+                       };
+
+                       i2c1: i2c@fc028000 {
+                               dmas = <0>, <0>;
+                               status = "okay";
+
+                               at24@54 {
+                                       compatible = "atmel,24c02";
+                                       reg = <0x54>;
+                                       pagesize = <16>;
+                               };
+                       };
+               };
+       };
+};
index 22ad7c9..07f4696 100644 (file)
                        };
 
                        adc0: adc@fc034000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <
+                                       /* external trigger conflicts with USBA_VBUS */
+                                       &pinctrl_adc0_ad0
+                                       &pinctrl_adc0_ad1
+                                       &pinctrl_adc0_ad2
+                                       &pinctrl_adc0_ad3
+                                       &pinctrl_adc0_ad4
+                                       >;
                                atmel,adc-vref = <3300>;
                                status = "okay";
                        };
index d782f29..49a59c7 100644 (file)
                        };
 
                        adc0: adc@fc034000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <
+                                       /* external trigger conflicts with USBA_VBUS */
+                                       &pinctrl_adc0_ad0
+                                       &pinctrl_adc0_ad1
+                                       &pinctrl_adc0_ad2
+                                       &pinctrl_adc0_ad3
+                                       &pinctrl_adc0_ad4
+                                       >;
                                /* The vref depends on JP22 of EK. If connect 1-2 then use 3.3V. connect 2-3 use 3.0V */
                                atmel,adc-vref = <3300>;
                                /*atmel,adc-ts-wires = <4>;*/   /* Set up ADC touch screen */
index e3cfb99..60edd8b 100644 (file)
                                compatible = "atmel,at91rm9200-st", "syscon", "simple-mfd";
                                reg = <0xfffffd00 0x100>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&slow_xtal>;
 
                                watchdog {
                                        compatible = "atmel,at91rm9200-wdt";
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xfffffe00 0x40>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&slow_xtal>;
                                status = "disabled";
                        };
 
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0
                                              18 IRQ_TYPE_LEVEL_HIGH 0
                                              19 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>, <&slow_xtal>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        tcb1: timer@fffa4000 {
                                interrupts = <20 IRQ_TYPE_LEVEL_HIGH 0
                                              21 IRQ_TYPE_LEVEL_HIGH 0
                                              22 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tc3_clk>, <&tc4_clk>, <&tc5_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tc3_clk>, <&tc4_clk>, <&tc5_clk>, <&slow_xtal>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        i2c0: i2c@fffb8000 {
index 4bc3475..be9c027 100644 (file)
                        rstc@fffffd00 {
                                compatible = "atmel,at91sam9260-rstc";
                                reg = <0xfffffd00 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        shdwc@fffffd10 {
                                compatible = "atmel,at91sam9260-shdwc";
                                reg = <0xfffffd10 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fffffd30 {
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0
                                              18 IRQ_TYPE_LEVEL_HIGH 0
                                              19 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        tcb1: timer@fffdc000 {
                                interrupts = <26 IRQ_TYPE_LEVEL_HIGH 0
                                              27 IRQ_TYPE_LEVEL_HIGH 0
                                              28 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tc3_clk>, <&tc4_clk>, <&tc5_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tc3_clk>, <&tc4_clk>, <&tc5_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        pinctrl@fffff400 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffd40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                atmel,watchdog-type = "hardware";
                                atmel,reset-type = "all";
                                atmel,dbg-halt;
index b2c44a0..ce1e3e9 100644 (file)
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0>,
                                             <18 IRQ_TYPE_LEVEL_HIGH 0>,
                                             <19 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>, <&slow_xtal>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        usb1: gadget@fffa4000 {
                        rstc@fffffd00 {
                                compatible = "atmel,at91sam9260-rstc";
                                reg = <0xfffffd00 0x10>;
+                               clocks = <&slow_xtal>;
                        };
 
                        shdwc@fffffd10 {
                                compatible = "atmel,at91sam9260-shdwc";
                                reg = <0xfffffd10 0x10>;
+                               clocks = <&slow_xtal>;
                        };
 
                        pit: timer@fffffd30 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffd40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&slow_xtal>;
                                status = "disabled";
                        };
 
index e36d966..f1f5fa3 100644 (file)
                                compatible = "atmel,at91rm9200-tcb";
                                reg = <0xfff7c000 0x100>;
                                interrupts = <19 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb_clk>, <&slow_xtal>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        rstc@fffffd00 {
                                compatible = "atmel,at91sam9260-rstc";
                                reg = <0xfffffd00 0x10>;
+                               clocks = <&slow_xtal>;
                        };
 
                        shdwc@fffffd10 {
                                compatible = "atmel,at91sam9260-shdwc";
                                reg = <0xfffffd10 0x10>;
+                               clocks = <&slow_xtal>;
                        };
 
                        pinctrl@fffff200 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffd40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&slow_xtal>;
                                atmel,watchdog-type = "hardware";
                                atmel,reset-type = "all";
                                atmel,dbg-halt;
index cfd7044..27de7dc 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "at91sam9x5.dtsi"
+#include "at91sam9x5_lcd.dtsi"
 
 / {
        model = "Atmel AT91SAM9G15 SoC";
index 26b0444..d1d2b40 100644 (file)
@@ -8,9 +8,34 @@
  */
 /dts-v1/;
 #include "at91sam9g15.dtsi"
+#include "at91sam9x5dm.dtsi"
 #include "at91sam9x5ek.dtsi"
 
 / {
        model = "Atmel AT91SAM9G15-EK";
        compatible = "atmel,at91sam9g15ek", "atmel,at91sam9x5ek", "atmel,at91sam9x5", "atmel,at91sam9";
+
+       ahb {
+               apb {
+                       hlcdc: hlcdc@f8038000 {
+                               status = "okay";
+                       };
+               };
+       };
+
+       backlight: backlight {
+               status = "okay";
+       };
+
+       bl_reg: backlight_regulator {
+               status = "okay";
+       };
+
+       panel: panel {
+               status = "okay";
+       };
+
+       panel_reg: panel_regulator {
+               status = "okay";
+       };
 };
index e35c2fc..ff41158 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "at91sam9x5.dtsi"
+#include "at91sam9x5_lcd.dtsi"
 #include "at91sam9x5_macb0.dtsi"
 
 / {
index 641a9bf..23ec8b1 100644 (file)
@@ -8,6 +8,7 @@
  */
 /dts-v1/;
 #include "at91sam9g35.dtsi"
+#include "at91sam9x5dm.dtsi"
 #include "at91sam9x5ek.dtsi"
 
 / {
                                phy-mode = "rmii";
                                status = "okay";
                        };
+
+                       hlcdc: hlcdc@f8038000 {
+                               status = "okay";
+                       };
                };
        };
+
+       backlight: backlight {
+               status = "okay";
+       };
+
+       bl_reg: backlight_regulator {
+               status = "okay";
+       };
+
+       panel: panel {
+               status = "okay";
+       };
+
+       panel_reg: panel_regulator {
+               status = "okay";
+       };
 };
index 18177f5..18b8b9e 100644 (file)
                        rstc@fffffd00 {
                                compatible = "atmel,at91sam9g45-rstc";
                                reg = <0xfffffd00 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fffffd30 {
                        shdwc@fffffd10 {
                                compatible = "atmel,at91sam9rl-shdwc";
                                reg = <0xfffffd10 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        tcb0: timer@fff7c000 {
                                compatible = "atmel,at91rm9200-tcb";
                                reg = <0xfff7c000 0x100>;
                                interrupts = <18 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb0_clk>, <&tcb0_clk>, <&tcb0_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tcb0_clk>, <&tcb0_clk>, <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        tcb1: timer@fffd4000 {
                                compatible = "atmel,at91rm9200-tcb";
                                reg = <0xfffd4000 0x100>;
                                interrupts = <18 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb0_clk>, <&tcb0_clk>, <&tcb0_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tcb0_clk>, <&tcb0_clk>, <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        dma: dma-controller@ffffec00 {
                                };
 
                                isi {
-                                       pinctrl_isi: isi-0 {
-                                               atmel,pins = <AT91_PIOB 8 AT91_PERIPH_B AT91_PINCTRL_NONE /* D8 */
-                                                             AT91_PIOB 9 AT91_PERIPH_B AT91_PINCTRL_NONE /* D9 */
-                                                             AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE /* D10 */
-                                                             AT91_PIOB 11 AT91_PERIPH_B AT91_PINCTRL_NONE /* D11 */
-                                                             AT91_PIOB 20 AT91_PERIPH_A AT91_PINCTRL_NONE /* D0 */
-                                                             AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_NONE /* D1 */
-                                                             AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_NONE /* D2 */
-                                                             AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_NONE /* D3 */
-                                                             AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_NONE /* D4 */
-                                                             AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE /* D5 */
-                                                             AT91_PIOB 26 AT91_PERIPH_A AT91_PINCTRL_NONE /* D6 */
-                                                             AT91_PIOB 27 AT91_PERIPH_A AT91_PINCTRL_NONE /* D7 */
-                                                             AT91_PIOB 28 AT91_PERIPH_A AT91_PINCTRL_NONE /* PCK */
-                                                             AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_NONE /* VSYNC */
-                                                             AT91_PIOB 30 AT91_PERIPH_A AT91_PINCTRL_NONE /* HSYNC */
-                                                             AT91_PIOB 31 AT91_PERIPH_A AT91_PINCTRL_NONE /* MCK */>;
+                                       pinctrl_isi_data_0_7: isi-0-data-0-7 {
+                                               atmel,pins =
+                                                       <AT91_PIOB 20 AT91_PERIPH_A AT91_PINCTRL_NONE /* D0 */
+                                                       AT91_PIOB 21 AT91_PERIPH_A AT91_PINCTRL_NONE /* D1 */
+                                                       AT91_PIOB 22 AT91_PERIPH_A AT91_PINCTRL_NONE /* D2 */
+                                                       AT91_PIOB 23 AT91_PERIPH_A AT91_PINCTRL_NONE /* D3 */
+                                                       AT91_PIOB 24 AT91_PERIPH_A AT91_PINCTRL_NONE /* D4 */
+                                                       AT91_PIOB 25 AT91_PERIPH_A AT91_PINCTRL_NONE /* D5 */
+                                                       AT91_PIOB 26 AT91_PERIPH_A AT91_PINCTRL_NONE /* D6 */
+                                                       AT91_PIOB 27 AT91_PERIPH_A AT91_PINCTRL_NONE /* D7 */
+                                                       AT91_PIOB 28 AT91_PERIPH_A AT91_PINCTRL_NONE /* PCK */
+                                                       AT91_PIOB 29 AT91_PERIPH_A AT91_PINCTRL_NONE /* VSYNC */
+                                                       AT91_PIOB 30 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* HSYNC */
+                                       };
+
+                                       pinctrl_isi_data_8_9: isi-0-data-8-9 {
+                                               atmel,pins =
+                                                       <AT91_PIOB 8 AT91_PERIPH_B AT91_PINCTRL_NONE /* D8 */
+                                                       AT91_PIOB 9 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* D9 */
+                                       };
+
+                                       pinctrl_isi_data_10_11: isi-0-data-10-11 {
+                                               atmel,pins =
+                                                       <AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE /* D10 */
+                                                       AT91_PIOB 11 AT91_PERIPH_B AT91_PINCTRL_NONE>; /* D11 */
                                        };
                                };
 
                                interrupts = <26 IRQ_TYPE_LEVEL_HIGH 5>;
                                clocks = <&isi_clk>;
                                clock-names = "isi_clk";
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&pinctrl_isi>;
                                status = "disabled";
+                               port {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
                        };
 
                        pwm0: pwm@fffb8000 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffd40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                atmel,watchdog-type = "hardware";
                                atmel,reset-type = "all";
                                atmel,dbg-halt;
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xfffffdb0 0x30>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                status = "disabled";
                        };
 
index 1375d33..d1ae60a 100644 (file)
 
                        i2c0: i2c@fff84000 {
                                status = "okay";
+                               ov2640: camera@30 {
+                                       compatible = "ovti,ov2640";
+                                       reg = <0x30>;
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&pinctrl_pck1_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
+                                       resetb-gpios = <&pioD 12 GPIO_ACTIVE_LOW>;
+                                       pwdn-gpios = <&pioD 13 GPIO_ACTIVE_HIGH>;
+                                       clocks = <&pck1>;
+                                       clock-names = "xvclk";
+                                       assigned-clocks = <&pck1>;
+                                       assigned-clock-rates = <25000000>;
+
+                                       port {
+                                               ov2640_0: endpoint {
+                                                       remote-endpoint = <&isi_0>;
+                                                       bus-width = <8>;
+                                               };
+                                       };
+                               };
                        };
 
                        i2c1: i2c@fff88000 {
                        };
 
                        pinctrl@fffff200 {
+                               camera_sensor {
+                                       pinctrl_pck1_as_isi_mck: pck1_as_isi_mck-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOB 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+                                       };
+
+                                       pinctrl_sensor_reset: sensor_reset-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOD 12 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+
+                                       pinctrl_sensor_power: sensor_power-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
+                                       };
+                               };
                                mmc0 {
                                        pinctrl_board_mmc0: mmc0-board {
                                                atmel,pins =
                                status = "okay";
                        };
 
+                       isi@fffb4000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_isi_data_0_7>;
+                               status = "okay";
+                               port {
+                                       isi_0: endpoint {
+                                               remote-endpoint = <&ov2640_0>;
+                                               bus-width = <8>;
+                                       };
+                               };
+                       };
+
                        pwm0: pwm@fffb8000 {
                                status = "okay";
 
index 5c2a8c8..32bc9a1 100644 (file)
                        rstc@fffffe00 {
                                compatible = "atmel,at91sam9g45-rstc";
                                reg = <0xfffffe00 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fffffe30 {
                        shdwc@fffffe10 {
                                compatible = "atmel,at91sam9x5-shdwc";
                                reg = <0xfffffe10 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        sckc@fffffe50 {
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf8008000 0x100>;
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        tcb1: timer@f800c000 {
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf800c000 0x100>;
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
+                       };
+
+                       hlcdc: hlcdc@f8038000 {
+                               compatible = "atmel,at91sam9n12-hlcdc";
+                               reg = <0xf8038000 0x2000>;
+                               interrupts = <25 IRQ_TYPE_LEVEL_HIGH 0>;
+                               clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
+                               clock-names = "periph_clk", "sys_clk", "slow_clk";
+                               status = "disabled";
+
+                               hlcdc-display-controller {
+                                       compatible = "atmel,hlcdc-display-controller";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               reg = <0>;
+                                       };
+                               };
+
+                               hlcdc_pwm: hlcdc-pwm {
+                                       compatible = "atmel,hlcdc-pwm";
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&pinctrl_lcd_pwm>;
+                                       #pwm-cells = <3>;
+                               };
                        };
 
                        dma: dma-controller@ffffec00 {
                                        };
                                };
 
+                               lcd {
+                                       pinctrl_lcd_base: lcd-base-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 27 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDVSYNC */
+                                                        AT91_PIOC 28 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDHSYNC */
+                                                        AT91_PIOC 24 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDDISP */
+                                                        AT91_PIOC 29 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDDEN */
+                                                        AT91_PIOC 30 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDPCK */
+                                       };
+
+                                       pinctrl_lcd_pwm: lcd-pwm-0 {
+                                               atmel,pins = <AT91_PIOC 26 AT91_PERIPH_A AT91_PINCTRL_NONE>;    /* LCDPWM */
+                                       };
+
+                                       pinctrl_lcd_rgb888: lcd-rgb-3 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD0 pin */
+                                                        AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD1 pin */
+                                                        AT91_PIOC 2 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD2 pin */
+                                                        AT91_PIOC 3 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD3 pin */
+                                                        AT91_PIOC 4 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD4 pin */
+                                                        AT91_PIOC 5 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD5 pin */
+                                                        AT91_PIOC 6 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD6 pin */
+                                                        AT91_PIOC 7 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD7 pin */
+                                                        AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD8 pin */
+                                                        AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD9 pin */
+                                                        AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD10 pin */
+                                                        AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD11 pin */
+                                                        AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD12 pin */
+                                                        AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD13 pin */
+                                                        AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD14 pin */
+                                                        AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD15 pin */
+                                                        AT91_PIOC 16 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD16 pin */
+                                                        AT91_PIOC 17 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD17 pin */
+                                                        AT91_PIOC 18 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD18 pin */
+                                                        AT91_PIOC 19 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD19 pin */
+                                                        AT91_PIOC 20 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD20 pin */
+                                                        AT91_PIOC 21 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD21 pin */
+                                                        AT91_PIOC 22 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD22 pin */
+                                                        AT91_PIOC 23 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDD23 pin */
+                                       };
+                               };
+
                                usart0 {
                                        pinctrl_usart0: usart0-0 {
                                                atmel,pins =
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffe40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                atmel,watchdog-type = "hardware";
                                atmel,reset-type = "all";
                                atmel,dbg-halt;
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xfffffeb0 0x40>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                status = "disabled";
                        };
 
index eab17fc..efa7506 100644 (file)
                                };
                        };
 
+                       hlcdc: hlcdc@f8038000 {
+                               status = "okay";
+
+                               hlcdc-display-controller {
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
+
+                                       port@0 {
+                                               hlcdc_panel_output: endpoint@0 {
+                                                       reg = <0>;
+                                                       remote-endpoint = <&panel_input>;
+                                               };
+                                       };
+                               };
+                       };
+
                        usb1: gadget@f803c000 {
                                pinctrl-names = "default";
                                pinctrl-0 = <&pinctrl_usb1_vbus_sense>;
                };
        };
 
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&hlcdc_pwm 0 50000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <6>;
+               power-supply = <&bl_reg>;
+               status = "okay";
+       };
+
+       bl_reg: backlight_regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "backlight-power-supply";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               status = "okay";
+       };
+
        leds {
                compatible = "gpio-leds";
 
                };
        };
 
+       panel: panel {
+               compatible = "qd,qd43003c0-40", "simple-panel";
+               backlight = <&backlight>;
+               power-supply = <&panel_reg>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "okay";
+
+               port@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       panel_input: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&hlcdc_panel_output>;
+                       };
+               };
+       };
+
+       panel_reg: panel_regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "panel-power-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               status = "okay";
+       };
+
        sound {
                compatible = "atmel,asoc-wm8904";
                pinctrl-names = "default";
index c9920c6..a0b90ae 100644 (file)
                                interrupts = <16 IRQ_TYPE_LEVEL_HIGH 0>,
                                             <17 IRQ_TYPE_LEVEL_HIGH 0>,
                                             <18 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>;
-                               clock-names = "t0_clk", "t1_clk", "t2_clk";
+                               clocks = <&tc0_clk>, <&tc1_clk>, <&tc2_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "t1_clk", "t2_clk", "slow_clk";
                        };
 
                        mmc0: mmc@fffa4000 {
                        rstc@fffffd00 {
                                compatible = "atmel,at91sam9260-rstc";
                                reg = <0xfffffd00 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        shdwc@fffffd10 {
                                compatible = "atmel,at91sam9260-shdwc";
                                reg = <0xfffffd10 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fffffd30 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffd40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                status = "disabled";
                        };
 
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xfffffe00 0x40>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                status = "disabled";
                        };
 
index 499cdc8..d9054e8 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "at91sam9x5.dtsi"
+#include "at91sam9x5_lcd.dtsi"
 #include "at91sam9x5_macb0.dtsi"
 #include "at91sam9x5_can.dtsi"
 
index 343d328..fcb6718 100644 (file)
@@ -8,6 +8,7 @@
  */
 /dts-v1/;
 #include "at91sam9x35.dtsi"
+#include "at91sam9x5dm.dtsi"
 #include "at91sam9x5ek.dtsi"
 
 / {
                                phy-mode = "rmii";
                                status = "okay";
                        };
+                       hlcdc: hlcdc@f8038000 {
+                               status = "okay";
+                       };
                };
        };
+
+       backlight: backlight {
+               status = "okay";
+       };
+
+       bl_reg: backlight_regulator {
+               status = "okay";
+       };
+
+       panel: panel {
+               status = "okay";
+       };
+
+       panel_reg: panel_regulator {
+               status = "okay";
+       };
 };
index b6c8df8..747d8f0 100644 (file)
                        rstc@fffffe00 {
                                compatible = "atmel,at91sam9g45-rstc";
                                reg = <0xfffffe00 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        shdwc@fffffe10 {
                                compatible = "atmel,at91sam9x5-shdwc";
                                reg = <0xfffffe10 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fffffe30 {
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf8008000 0x100>;
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb0_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        tcb1: timer@f800c000 {
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf800c000 0x100>;
                                interrupts = <17 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb0_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        dma0: dma-controller@ffffec00 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffe40 0x10>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                atmel,watchdog-type = "hardware";
                                atmel,reset-type = "all";
                                atmel,dbg-halt;
                                compatible = "atmel,at91sam9x5-rtc";
                                reg = <0xfffffeb0 0x40>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                status = "disabled";
                        };
 
index 485302e..1629db9 100644 (file)
 / {
        ahb {
                apb {
+                       hlcdc: hlcdc@f8038000 {
+                               compatible = "atmel,at91sam9x5-hlcdc";
+                               reg = <0xf8038000 0x4000>;
+                               interrupts = <25 IRQ_TYPE_LEVEL_HIGH 0>;
+                               clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
+                               clock-names = "periph_clk","sys_clk", "slow_clk";
+                               status = "disabled";
+
+                               hlcdc-display-controller {
+                                       compatible = "atmel,hlcdc-display-controller";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                               reg = <0>;
+                                       };
+                               };
+
+                               hlcdc_pwm: hlcdc-pwm {
+                                       compatible = "atmel,hlcdc-pwm";
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&pinctrl_lcd_pwm>;
+                                       #pwm-cells = <3>;
+                               };
+                       };
+
+                       pinctrl@fffff400 {
+                               lcd {
+                                       pinctrl_lcd_base: lcd-base-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 27 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDVSYNC */
+                                                        AT91_PIOC 28 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDHSYNC */
+                                                        AT91_PIOC 24 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDDISP */
+                                                        AT91_PIOC 29 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDDEN */
+                                                        AT91_PIOC 30 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDPCK */
+                                       };
+
+                                       pinctrl_lcd_pwm: lcd-pwm-0 {
+                                               atmel,pins = <AT91_PIOC 26 AT91_PERIPH_A AT91_PINCTRL_NONE>;    /* LCDPWM */
+                                       };
+
+                                       pinctrl_lcd_rgb444: lcd-rgb-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD0 pin */
+                                                        AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD1 pin */
+                                                        AT91_PIOC 2 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD2 pin */
+                                                        AT91_PIOC 3 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD3 pin */
+                                                        AT91_PIOC 4 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD4 pin */
+                                                        AT91_PIOC 5 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD5 pin */
+                                                        AT91_PIOC 6 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD6 pin */
+                                                        AT91_PIOC 7 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD7 pin */
+                                                        AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD8 pin */
+                                                        AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD9 pin */
+                                                        AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD10 pin */
+                                                        AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDD11 pin */
+                                       };
+
+                                       pinctrl_lcd_rgb565: lcd-rgb-1 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD0 pin */
+                                                        AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD1 pin */
+                                                        AT91_PIOC 2 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD2 pin */
+                                                        AT91_PIOC 3 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD3 pin */
+                                                        AT91_PIOC 4 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD4 pin */
+                                                        AT91_PIOC 5 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD5 pin */
+                                                        AT91_PIOC 6 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD6 pin */
+                                                        AT91_PIOC 7 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD7 pin */
+                                                        AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD8 pin */
+                                                        AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD9 pin */
+                                                        AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD10 pin */
+                                                        AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD11 pin */
+                                                        AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD12 pin */
+                                                        AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD13 pin */
+                                                        AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD14 pin */
+                                                        AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDD15 pin */
+                                       };
+
+                                       pinctrl_lcd_rgb666: lcd-rgb-2 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD0 pin */
+                                                        AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD1 pin */
+                                                        AT91_PIOC 2 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD2 pin */
+                                                        AT91_PIOC 3 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD3 pin */
+                                                        AT91_PIOC 4 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD4 pin */
+                                                        AT91_PIOC 5 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD5 pin */
+                                                        AT91_PIOC 6 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD6 pin */
+                                                        AT91_PIOC 7 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD7 pin */
+                                                        AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD8 pin */
+                                                        AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD9 pin */
+                                                        AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD10 pin */
+                                                        AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD11 pin */
+                                                        AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD12 pin */
+                                                        AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD13 pin */
+                                                        AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD14 pin */
+                                                        AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD15 pin */
+                                                        AT91_PIOC 16 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD16 pin */
+                                                        AT91_PIOC 17 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDD17 pin */
+                                       };
+
+                                       pinctrl_lcd_rgb888: lcd-rgb-3 {
+                                               atmel,pins =
+                                                       <AT91_PIOC 0 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD0 pin */
+                                                        AT91_PIOC 1 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD1 pin */
+                                                        AT91_PIOC 2 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD2 pin */
+                                                        AT91_PIOC 3 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD3 pin */
+                                                        AT91_PIOC 4 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD4 pin */
+                                                        AT91_PIOC 5 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD5 pin */
+                                                        AT91_PIOC 6 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD6 pin */
+                                                        AT91_PIOC 7 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD7 pin */
+                                                        AT91_PIOC 8 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD8 pin */
+                                                        AT91_PIOC 9 AT91_PERIPH_A AT91_PINCTRL_NONE    /* LCDD9 pin */
+                                                        AT91_PIOC 10 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD10 pin */
+                                                        AT91_PIOC 11 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD11 pin */
+                                                        AT91_PIOC 12 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD12 pin */
+                                                        AT91_PIOC 13 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD13 pin */
+                                                        AT91_PIOC 14 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD14 pin */
+                                                        AT91_PIOC 15 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD15 pin */
+                                                        AT91_PIOC 16 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD16 pin */
+                                                        AT91_PIOC 17 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD17 pin */
+                                                        AT91_PIOC 18 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD18 pin */
+                                                        AT91_PIOC 19 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD19 pin */
+                                                        AT91_PIOC 20 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD20 pin */
+                                                        AT91_PIOC 21 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD21 pin */
+                                                        AT91_PIOC 22 AT91_PERIPH_A AT91_PINCTRL_NONE   /* LCDD22 pin */
+                                                        AT91_PIOC 23 AT91_PERIPH_A AT91_PINCTRL_NONE>; /* LCDD23 pin */
+                                       };
+                               };
+                       };
+
                        pmc: pmc@fffffc00 {
                                periphck {
                                        lcdc_clk: lcdc_clk {
                                                reg = <25>;
                                        };
                                };
+
+                               systemck {
+                                       lcdck: lcdck {
+                                               #clock-cells = <0>;
+                                               reg = <3>;
+                                               clocks = <&mck>;
+                                       };
+                               };
                        };
                };
        };
diff --git a/arch/arm/boot/dts/at91sam9x5dm.dtsi b/arch/arm/boot/dts/at91sam9x5dm.dtsi
new file mode 100644 (file)
index 0000000..34c089f
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * at91sam9x5dm.dtsi - Device Tree file for SAM9x5 display module
+ *
+ *  Copyright (C) 2014 Atmel,
+ *                2014 Free Electrons
+ *
+ *  Author: Boris Brezillon <boris.brezillon@free-electrons.com>
+ *
+ * Licensed under GPLv2 or later.
+ */
+
+/ {
+       ahb {
+               apb {
+                       i2c0: i2c@f8010000 {
+                               qt1070: keyboard@1b {
+                                       compatible = "qt1070";
+                                       reg = <0x1b>;
+                                       interrupt-parent = <&pioA>;
+                                       interrupts = <7 0x0>;
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&pinctrl_qt1070_irq>;
+                                       wakeup-source;
+                               };
+                       };
+
+                       hlcdc: hlcdc@f8038000 {
+                               hlcdc-display-controller {
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
+
+                                       port@0 {
+                                               hlcdc_panel_output: endpoint@0 {
+                                                       reg = <0>;
+                                                       remote-endpoint = <&panel_input>;
+                                               };
+                                       };
+                               };
+                       };
+
+                       adc0: adc@f804c000 {
+                               atmel,adc-ts-wires = <4>;
+                               atmel,adc-ts-pressure-threshold = <10000>;
+                               status = "okay";
+                       };
+
+                       pinctrl@fffff400 {
+                               board {
+                                       pinctrl_qt1070_irq: qt1070_irq {
+                                               atmel,pins =
+                                                       <AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&hlcdc_pwm 0 50000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <6>;
+               power-supply = <&bl_reg>;
+               status = "disabled";
+       };
+
+       bl_reg: backlight_regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "backlight-power-supply";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               status = "disabled";
+       };
+
+       panel: panel {
+               compatible = "foxlink,fl500wvr00-a0t", "simple-panel";
+               backlight = <&backlight>;
+               power-supply = <&panel_reg>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+
+               port@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       panel_input: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&hlcdc_panel_output>;
+                       };
+               };
+       };
+
+       panel_reg: panel_regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "panel-power-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               status = "disabled";
+       };
+};
index 49cf59a..1e9cd1a 100644 (file)
@@ -10,6 +10,9 @@
 
 /include/ "atlas7.dtsi"
 
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/gpio.h>
+
 / {
        model = "CSR SiRFatlas7 Evaluation Board";
        compatible = "sirf,atlas7-cb", "sirf,atlas7";
                                };
                        };
                };
+
+               gpio_keys {
+                       compatible = "gpio-keys";
+                       status = "okay";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       rearview_key {
+                               label = "rearview key";
+                               linux,code = <KEY_CAMERA>;
+                               gpios = <&gpio_1 3 GPIO_ACTIVE_LOW>;
+                               debounce_interval = <100>;
+                       };
+               };
+
        };
 };
index 3e21311..83449b3 100644 (file)
                serial5 = &uart5;
                serial6 = &uart6;
                serial9 = &usp2;
+               spi1 = &spi1;
+               spi2 = &usp1;
+               spi3 = &usp2;
+               spi4 = &usp3;
        };
        cpus {
                #address-cells = <1>;
                };
        };
 
+       arm-pmu {
+               compatible = "arm,cortex-a7-pmu";
+               interrupts = <0 29 4>, <0 82 4>;
+       };
+
        noc {
                compatible = "simple-bus";
                #address-cells = <1>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x18641000 0x18641000 0x3000>,
-                                        <0x18620000 0x18620000 0x1000>;
+                                        <0x18620000 0x18620000 0x1000>,
+                                       <0x18630000 0x18630000 0x10000>;
 
                        cgum@18641000 {
                                compatible = "sirf,nocfw-cgum";
                                #clock-cells = <1>;
                                #reset-cells = <1>;
                        };
+                       pwm: pwm@18630000 {
+                               compatible = "sirf,prima2-pwm";
+                               #pwm-cells = <2>;
+                               reg = <0x18630000 0x10000>;
+                               clocks = <&car 138>, <&car 139>, <&car 237>,
+                                       <&car 240>,  <&car 140>, <&car 246>;
+                               clock-names = "pwmc", "sigsrc0", "sigsrc1",
+                                       "sigsrc2", "sigsrc3", "sigsrc4";
+                       };
                };
 
                gnssm {
                                <0x18040000 0x18040000 0x1000>,
                                <0x18050000 0x18050000 0x1000>,
                                <0x18060000 0x18060000 0x1000>,
+                               <0x180b0000 0x180b0000 0x4000>,
                                <0x18100000 0x18100000 0x3000>,
                                <0x18250000 0x18250000 0x10000>,
                                <0x18200000 0x18200000 0x1000>;
                                dma-names = "rx", "tx";
                                status = "disabled";
                        };
+                       gmac: eth@180b0000 {
+                               compatible = "snps, dwc-eth-qos";
+                               reg = <0x180b0000 0x4000>;
+                               interrupts = <0 59 0>, <0 70 0>;
+                               interrupt-names = "macirq", "macpmt";
+                               clocks = <&car 39>, <&car 45>,
+                                      <&car 86>, <&car 87>;
+                               clock-names = "gnssm_rgmii", "gnssm_gmac",
+                                       "rgmii", "gmac";
+                               local-mac-address = [00 00 00 00 00 00];
+                               phy-mode = "rgmii";
+                       };
                        dspub@18250000 {
                                compatible = "dx,cc44p";
                                reg = <0x18250000 0x10000>;
                        compatible = "arteris, flexnoc", "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <0x13000000 0x13000000 0x3000>;
+                       ranges = <0x13000000 0x13000000 0x3000>,
+                               <0x13010000 0x13010000 0x1400>,
+                               <0x13010800 0x13010800 0x100>,
+                               <0x13011000 0x13011000 0x100>;
                        gpum@0x13000000 {
                                compatible = "sirf,nocfw-gpum";
                                reg = <0x13000000 0x3000>;
                        };
+                       dmacsdrr: dma-controller@13010800 {
+                               cell-index = <5>;
+                               compatible = "sirf,atlas7-dmac-v2";
+                               reg = <0x13010800 0x100>;
+                               interrupts = <0 8 0>;
+                               clocks = <&car 127>;
+                               #dma-cells = <1>;
+                               #dma-channels = <1>;
+                       };
+                       dmacsdrw: dma-controller@13011000 {
+                               cell-index = <6>;
+                               compatible = "sirf,atlas7-dmac-v2";
+                               reg = <0x13011000 0x100>;
+                               interrupts = <0 9 0>;
+                               clocks = <&car 127>;
+                               #dma-cells = <1>;
+                               #dma-channels = <1>;
+                       };
+                       sdr@0x13010000 {
+                               compatible = "sirf,atlas7-sdr";
+                               reg = <0x13010000 0x1400>;
+                               interrupts = <0 7 0>,
+                                          <0 8 0>,
+                                          <0 9 0>;
+                               clocks = <&car 127>;
+                               dmas = <&dmacsdrr 0>, <&dmacsdrw 0>;
+                               dma-names = "tx", "rx";
+                       };
                };
 
                mediam {
                        compatible = "arteris, flexnoc", "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       ranges = <0x16000000 0x16000000 0x00200000>,
+                       ranges = <0x15000000 0x15000000 0x00600000>,
+                               <0x16000000 0x16000000 0x00200000>,
+                               <0x17000000 0x17000000 0x10000>,
                                <0x17020000 0x17020000 0x1000>,
                                <0x17030000 0x17030000 0x1000>,
                                <0x17040000 0x17040000 0x1000>,
                                <0x17070200 0x17070200 0x100>,
                                <0x170A0000 0x170A0000 0x3000>;
 
+                       multimedia@15000000 {
+                               compatible = "sirf,atlas7-video-codec";
+                               reg = <0x15000000 0x10000>;
+                               interrupts = <0 5 0>;
+                               clocks = <&car 102>;
+                       };
+
                        mediam@170A0000 {
                                compatible = "sirf,nocfw-mediam";
                                reg = <0x170A0000 0x3000>;
                        nand@17050000 {
                                compatible = "sirf,atlas7-nand";
                                reg = <0x17050000 0x10000>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&nd_df_pmx>;
                                interrupts = <0 41 0>;
                                clocks = <&car 108>, <&car 112>;
                                clock-names = "nand_io", "nand_nand";
                                bus-width = <8>;
                        };
 
+                       jpeg@17000000 {
+                               compatible = "sirf,atlas7-jpeg";
+                               reg = <0x17000000 0x10000>;
+                               interrupts = <0 72 0>,
+                                       <0 73 0>;
+                               clocks = <&car 103>;
+                       };
+
                        usb0: usb@17060000 {
                                cell-index = <0>;
                                compatible = "sirf,atlas7-usb";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges = <0x13100000 0x13100000 0x20000>,
-                                <0x10e10000 0x10e10000 0x10000>;
+                               <0x10e10000 0x10e10000 0x10000>,
+                               <0x17010000 0x17010000 0x10000>;
 
                        lcd@13100000 {
                                compatible = "sirf,atlas7-lcdc";
                                clocks = <&car 54>;
                                resets = <&car 29>;
                        };
+                       g2d@17010000 {
+                               compatible = "sirf, atlas7-g2d";
+                               reg = <0x17010000 0x10000>;
+                               interrupts = <0 61 0>;
+                               clocks = <&car 104>;
+                       };
 
                };
 
diff --git a/arch/arm/boot/dts/axp152.dtsi b/arch/arm/boot/dts/axp152.dtsi
new file mode 100644 (file)
index 0000000..f90ad6c
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2015 Chen-Yu Tsai
+ *
+ * Chen-Yu Tsai <wens@csie.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&axp152 {
+       compatible = "x-powers,axp152";
+       interrupt-controller;
+       #interrupt-cells = <1>;
+};
index 60d8389..32bcd45 100644 (file)
@@ -36,56 +36,89 @@ clocks {
        ranges;
 
        osc: oscillator {
+               #clock-cells = <0>;
                compatible = "fixed-clock";
-               #clock-cells = <1>;
                clock-frequency = <25000000>;
        };
 
-       apb_clk: apb_clk {
-               compatible = "fixed-clock";
+       /* Cygnus ARM PLL */
+       armpll: armpll {
                #clock-cells = <0>;
-               clock-frequency = <1000000000>;
+               compatible = "brcm,cygnus-armpll";
+               clocks = <&osc>;
+               reg = <0x19000000 0x1000>;
        };
 
-       periph_clk: periph_clk {
-               compatible = "fixed-clock";
+       /* peripheral clock for system timer */
+       periph_clk: arm_periph_clk {
                #clock-cells = <0>;
-               clock-frequency = <500000000>;
+               compatible = "fixed-factor-clock";
+               clocks = <&armpll>;
+               clock-div = <2>;
+               clock-mult = <1>;
        };
 
-       sdio_clk: lcpll_ch2 {
-               compatible = "fixed-clock";
+       /* APB bus clock */
+       apb_clk: apb_clk {
                #clock-cells = <0>;
-               clock-frequency = <200000000>;
+               compatible = "fixed-factor-clock";
+               clocks = <&armpll>;
+               clock-div = <4>;
+               clock-mult = <1>;
        };
 
-       axi81_clk: axi81_clk {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <100000000>;
+       genpll: genpll {
+               #clock-cells = <1>;
+               compatible = "brcm,cygnus-genpll";
+               reg = <0x0301d000 0x2c>, <0x0301c020 0x4>;
+               clocks = <&osc>;
+               clock-output-names = "genpll", "axi21", "250mhz", "ihost_sys",
+                                    "enet_sw", "audio_125", "can";
        };
 
-       keypad_clk: keypad_clk {
-               compatible = "fixed-clock";
+       /* always 1/2 of the axi21 clock */
+       axi41_clk: axi41_clk {
                #clock-cells = <0>;
-               clock-frequency = <31806>;
+               compatible = "fixed-factor-clock";
+               clocks = <&genpll 1>;
+               clock-div = <2>;
+               clock-mult = <1>;
        };
 
-       adc_clk: adc_clk {
-               compatible = "fixed-clock";
+       /* always 1/4 of the axi21 clock */
+       axi81_clk: axi81_clk {
                #clock-cells = <0>;
-               clock-frequency = <1562500>;
+               compatible = "fixed-factor-clock";
+               clocks = <&genpll 1>;
+               clock-div = <4>;
+               clock-mult = <1>;
        };
 
-       pwm_clk: pwm_clk {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <1000000>;
+       lcpll0: lcpll0 {
+               #clock-cells = <1>;
+               compatible = "brcm,cygnus-lcpll0";
+               reg = <0x0301d02c 0x1c>, <0x0301c020 0x4>;
+               clocks = <&osc>;
+               clock-output-names = "lcpll0", "pcie_phy", "ddr_phy", "sdio",
+                                    "usb_phy", "smart_card", "ch5";
        };
 
-       lcd_clk: mipipll_ch1 {
-               compatible = "fixed-clock";
-               #clock-cells = <0>;
-               clock-frequency = <100000000>;
+       mipipll: mipipll {
+               #clock-cells = <1>;
+               compatible = "brcm,cygnus-mipipll";
+               reg = <0x180a9800 0x2c>, <0x0301c020 0x4>, <0x180aa024 0x4>;
+               clocks = <&osc>;
+               clock-output-names = "mipipll", "ch0_unused", "ch1_lcd",
+                                    "ch2_v3d", "ch3_unused", "ch4_unused",
+                                    "ch5_unused";
+       };
+
+       asiu_clks: asiu_clks {
+               #clock-cells = <1>;
+               compatible = "brcm,cygnus-asiu-clk";
+               reg = <0x0301d048 0xc>, <0x180aa024 0x4>;
+
+               clocks = <&osc>;
+               clock-output-names = "keypad", "adc/touch", "pwm";
        };
 };
index 46780bb..ab5474e 100644 (file)
                        linux,default-trigger = "heartbeat";
                };
        };
+
+       soc {
+               firmware: firmware {
+                       compatible = "raspberrypi,bcm2835-firmware";
+                       mboxes = <&mailbox>;
+               };
+       };
 };
 
 &gpio {
index 24f0ab5..42dcdfb 100644 (file)
                };
        };
 };
+
+&uart0 {
+       status = "okay";
+};
index f039393..f18e80e 100644 (file)
@@ -55,3 +55,7 @@
                };
        };
 };
+
+&uart0 {
+       status = "okay";
+};
index 326ce8f..64b8d10 100644 (file)
                reg = <0x00000000 0x08000000>;
        };
 
-       chipcommonA {
-               uart0: serial@0300 {
-                       status = "okay";
-               };
-
-               uart1: serial@0400 {
-                       status = "okay";
-               };
-       };
-
        leds {
                compatible = "gpio-leds";
 
@@ -92,3 +82,7 @@
                };
        };
 };
+
+&uart0 {
+       status = "okay";
+};
index d6a033b..64a5e8a 100644 (file)
                };
        };
 };
+
+&uart0 {
+       status = "okay";
+};
index bb0cb0b..38f0c00 100644 (file)
                };
        };
 };
+
+&uart0 {
+       status = "okay";
+};
index 21fefd4..6f50f67 100644 (file)
                        compatible = "arm,pl310-cache";
                        reg = <0x2000 0x1000>;
                        cache-unified;
+                       arm,shared-override;
+                       prefetch-data = <1>;
+                       prefetch-instr = <1>;
                        cache-level = <2>;
                };
        };
 
+       pmu {
+               compatible = "arm,cortex-a9-pmu";
+               interrupts =
+                       <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                       <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
        clocks {
                #address-cells = <1>;
                #size-cells = <0>;
index 58dcd66..3b6b175 100644 (file)
                        brcm,int-fwd-mask = <0x70000>;
                };
 
+               irq0_aon_intc: interrupt-controller@417280 {
+                       compatible = "brcm,bcm7120-l2-intc";
+                       reg = <0x417280 0x8>;
+                       interrupt-parent = <&gic>;
+                       #interrupt-cells = <1>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 0x46 0x0>,
+                                    <GIC_SPI 0x44 0x0>,
+                                    <GIC_SPI 0x49 0x0>;
+                       brcm,int-map-mask = <0x1e3 0x18000000 0x100000>;
+                       brcm,int-fwd-mask = <0x0>;
+                       brcm,irq-can-wake;
+               };
+
                hif_intr2_intc: interrupt-controller@3e1000 {
                        compatible = "brcm,l2-intc";
                        reg = <0x3e1000 0x30>;
                        interrupt-names = "hif";
                };
 
+                aon_pm_l2_intc: interrupt-controller@410640 {
+                       compatible = "brcm,l2-intc";
+                       reg = <0x410640 0x30>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       interrupts = <GIC_SPI 0x40 0x0>;
+                       interrupt-parent = <&gic>;
+                       brcm,irq-can-wake;
+               };
+
                nand: nand@3e2800 {
                        status = "disabled";
                        #address-cells = <1>;
                                #phy-cells = <0>;
                        };
                };
+
+               upg_gio: gpio@40a700 {
+                       compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
+                       reg = <0x40a700 0x80>;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+                       gpio-controller;
+                       interrupt-controller;
+                       interrupt-parent = <&irq0_intc>;
+                       interrupts = <6>;
+                       brcm,gpio-bank-widths = <32 32 32 24>;
+               };
+
+               upg_gio_aon: gpio@4172c0 {
+                       compatible = "brcm,bcm7445-gpio", "brcm,brcmstb-gpio";
+                       reg = <0x4172c0 0x40>;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+                       gpio-controller;
+                       interrupt-controller;
+                       interrupts-extended = <&irq0_aon_intc 0x6>,
+                                             <&aon_pm_l2_intc 0x5>;
+                       wakeup-source;
+                       brcm,gpio-bank-widths = <18 4>;
+               };
+
        };
 
        smpboot {
diff --git a/arch/arm/boot/dts/cros-ec-sbs.dtsi b/arch/arm/boot/dts/cros-ec-sbs.dtsi
new file mode 100644 (file)
index 0000000..71f5c5e
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Smart battery dts fragment for devices that use cros-ec-sbs
+ *
+ * Copyright (c) 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&i2c_tunnel {
+       battery: sbs-battery@b {
+               compatible = "sbs,sbs-battery";
+               reg = <0xb>;
+               sbs,i2c-retry-count = <2>;
+               sbs,poll-retry-count = <1>;
+       };
+};
index af33326..df4c6f1 100644 (file)
                interrupts = <25>;
        };
 
+       watchdog@f0000fc0 {
+               compatible = "cnxt,cx92755-wdt";
+               reg = <0xf0000fc0 0x8>;
+               clocks = <&main_clk>;
+               timeout-sec = <15>;
+       };
+
        uc_regs: syscon@f00003a0 {
                compatible = "cnxt,cx92755-uc", "syscon";
                reg = <0xf00003a0 0x10>;
index 90d52cc..5da0080 100644 (file)
@@ -64,8 +64,7 @@
        };
 
        chosen {
-               bootargs = "console=ttyS0,115200";
-               stdout-path = &uart0;
+               stdout-path = "serial0:115200n8";
        };
 };
 
diff --git a/arch/arm/boot/dts/dm8148-evm.dts b/arch/arm/boot/dts/dm8148-evm.dts
new file mode 100644 (file)
index 0000000..92bacd3
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "dm814x.dtsi"
+
+/ {
+       model = "DM8148 EVM";
+       compatible = "ti,dm8148-evm", "ti,dm8148";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;  /* 1 GB */
+       };
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <0>;
+       phy-mode = "mii";
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+       phy-mode = "mii";
+};
diff --git a/arch/arm/boot/dts/dm8148-t410.dts b/arch/arm/boot/dts/dm8148-t410.dts
new file mode 100644 (file)
index 0000000..8c4bbc7
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "dm814x.dtsi"
+
+/ {
+       model = "DM8148 EVM";
+       compatible = "hp,t410", "ti,dm8148";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>;  /* 1 GB */
+       };
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <0>;
+       phy-mode = "mii";
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+       phy-mode = "mii";
+};
diff --git a/arch/arm/boot/dts/dm814x-clocks.dtsi b/arch/arm/boot/dts/dm814x-clocks.dtsi
new file mode 100644 (file)
index 0000000..ef1e8e7
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+&scm_clocks {
+
+       tclkin_ck: tclkin_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+       };
+
+       devosc_ck: devosc_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <20000000>;
+       };
+
+       /* Optional auxosc, 20 - 30 MHz range, assume 27 MHz by default */
+       auxosc_ck: auxosc_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <27000000>;
+       };
+
+       mpu_ck: mpu_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <1000000000>;
+       };
+
+       sysclk4_ck: sysclk4_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <222000000>;
+       };
+
+       sysclk6_ck: sysclk6_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <100000000>;
+       };
+
+       sysclk10_ck: sysclk10_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <48000000>;
+       };
+
+       sysclk18_ck: sysclk18_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+       };
+
+        cpsw_125mhz_gclk: cpsw_125mhz_gclk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+       };
+
+       cpsw_cpts_rft_clk: cpsw_cpts_rft_clk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <250000000>;
+       };
+
+};
+
+&pllss_clocks {
+
+       aud_clkin0_ck: aud_clkin0_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <20000000>;
+       };
+
+       aud_clkin1_ck: aud_clkin1_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <20000000>;
+       };
+
+       aud_clkin2_ck: aud_clkin2_ck {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <20000000>;
+       };
+
+       timer1_mux_ck: timer1_mux_ck {
+               #clock-cells = <0>;
+               compatible = "ti,mux-clock";
+               clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck
+                         &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>;
+               ti,bit-shift = <3>;
+               reg = <0x2e0>;
+       };
+
+       timer2_mux_ck: timer2_mux_ck {
+               #clock-cells = <0>;
+               compatible = "ti,mux-clock";
+               clocks = <&sysclk18_ck &aud_clkin0_ck &aud_clkin1_ck
+                         &aud_clkin2_ck &devosc_ck &auxosc_ck &tclkin_ck>;
+               ti,bit-shift = <6>;
+               reg = <0x2e0>;
+       };
+};
diff --git a/arch/arm/boot/dts/dm814x.dtsi b/arch/arm/boot/dts/dm814x.dtsi
new file mode 100644 (file)
index 0000000..972c9c9
--- /dev/null
@@ -0,0 +1,333 @@
+/*
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/omap.h>
+
+#include "skeleton.dtsi"
+
+/ {
+       compatible = "ti,dm814";
+       interrupt-parent = <&intc>;
+
+       aliases {
+               i2c0 = &i2c1;
+               i2c1 = &i2c2;
+               serial0 = &uart1;
+               serial1 = &uart2;
+               serial2 = &uart3;
+               ethernet0 = &cpsw_emac0;
+               ethernet1 = &cpsw_emac1;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               cpu@0 {
+                       compatible = "arm,cortex-a8";
+                       device_type = "cpu";
+                       reg = <0>;
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a8-pmu";
+               interrupts = <3>;
+       };
+
+       /*
+        * The soc node represents the soc top level view. It is used for IPs
+        * that are not memory mapped in the MPU view or for the MPU itself.
+        */
+       soc {
+               compatible = "ti,omap-infra";
+               mpu {
+                       compatible = "ti,omap3-mpu";
+                       ti,hwmods = "mpu";
+               };
+       };
+
+       ocp {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+               ti,hwmods = "l3_main";
+
+               /*
+                * See TRM "Table 1-317. L4LS Instance Summary", just deduct
+                * 0x1000 from the 1-317 addresses to get the device address
+                */
+               l4ls: l4ls@48000000 {
+                       compatible = "ti,dm814-l4ls", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0x48000000 0x2000000>;
+
+                       i2c1: i2c@28000 {
+                               compatible = "ti,omap4-i2c";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               ti,hwmods = "i2c1";
+                               reg = <0x28000 0x1000>;
+                               interrupts = <70>;
+                       };
+
+                       elm: elm@80000 {
+                               compatible = "ti,814-elm";
+                               ti,hwmods = "elm";
+                               reg = <0x80000 0x2000>;
+                               interrupts = <4>;
+                       };
+
+                       gpio1: gpio@32000 {
+                               compatible = "ti,omap4-gpio";
+                               ti,hwmods = "gpio1";
+                               ti,gpio-always-on;
+                               reg = <0x32000 0x2000>;
+                               interrupts = <96>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       gpio2: gpio@4c000 {
+                               compatible = "ti,omap4-gpio";
+                               ti,hwmods = "gpio2";
+                               ti,gpio-always-on;
+                               reg = <0x4c000 0x2000>;
+                               interrupts = <98>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       i2c2: i2c@2a000 {
+                               compatible = "ti,omap4-i2c";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               ti,hwmods = "i2c2";
+                               reg = <0x2a000 0x1000>;
+                               interrupts = <71>;
+                       };
+
+                       mcspi1: spi@30000 {
+                               compatible = "ti,omap4-mcspi";
+                               reg = <0x30000 0x1000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <65>;
+                               ti,spi-num-cs = <4>;
+                               ti,hwmods = "mcspi1";
+                               dmas = <&edma 16 &edma 17
+                                       &edma 18 &edma 19>;
+                               dma-names = "tx0", "rx0", "tx1", "rx1";
+                       };
+
+                       timer1: timer@2e000 {
+                               compatible = "ti,dm814-timer";
+                               reg = <0x2e000 0x2000>;
+                               interrupts = <67>;
+                               ti,hwmods = "timer1";
+                               ti,timer-alwon;
+                       };
+
+                       uart1: uart@20000 {
+                               compatible = "ti,omap3-uart";
+                               ti,hwmods = "uart1";
+                               reg = <0x20000 0x2000>;
+                               clock-frequency = <48000000>;
+                               interrupts = <72>;
+                               dmas = <&edma 26 &edma 27>;
+                               dma-names = "tx", "rx";
+                       };
+
+                       uart2: uart@22000 {
+                               compatible = "ti,omap3-uart";
+                               ti,hwmods = "uart2";
+                               reg = <0x22000 0x2000>;
+                               clock-frequency = <48000000>;
+                               interrupts = <73>;
+                               dmas = <&edma 28 &edma 29>;
+                               dma-names = "tx", "rx";
+                       };
+
+                       uart3: uart@24000 {
+                               compatible = "ti,omap3-uart";
+                               ti,hwmods = "uart3";
+                               reg = <0x24000 0x2000>;
+                               clock-frequency = <48000000>;
+                               interrupts = <74>;
+                               dmas = <&edma 30 &edma 31>;
+                               dma-names = "tx", "rx";
+                       };
+
+                       timer2: timer@40000 {
+                               compatible = "ti,dm814-timer";
+                               reg = <0x40000 0x2000>;
+                               interrupts = <68>;
+                               ti,hwmods = "timer2";
+                       };
+
+                       timer3: timer@42000 {
+                               compatible = "ti,dm814-timer";
+                               reg = <0x42000 0x2000>;
+                               interrupts = <69>;
+                               ti,hwmods = "timer3";
+                       };
+
+                       control: control@160000 {
+                               compatible = "ti,dm814-scm", "simple-bus";
+                               reg = <0x160000 0x16d000>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0 0x160000 0x16d000>;
+
+                               scm_conf: scm_conf@0 {
+                                       compatible = "syscon";
+                                       reg = <0x0 0x800>;
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       scm_clocks: clocks {
+                                               #address-cells = <1>;
+                                               #size-cells = <0>;
+                                       };
+
+                                       scm_clockdomains: clockdomains {
+                                       };
+                               };
+
+                               pincntl: pinmux@800 {
+                                       compatible = "pinctrl-single";
+                                       reg = <0x800 0xc38>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       pinctrl-single,register-width = <32>;
+                                       pinctrl-single,function-mask = <0x300ff>;
+                               };
+                       };
+
+                       prcm: prcm@180000 {
+                               compatible = "ti,dm814-prcm", "simple-bus";
+                               reg = <0x180000 0x4000>;
+
+                               prcm_clocks: clocks {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
+
+                               prcm_clockdomains: clockdomains {
+                               };
+                       };
+
+                       pllss: pllss@1c5000 {
+                               compatible = "ti,dm814-pllss", "simple-bus";
+                               reg = <0x1c5000 0x2000>;
+
+                               pllss_clocks: clocks {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                               };
+
+                               pllss_clockdomains: clockdomains {
+                               };
+                       };
+
+                       wdt1: wdt@1c7000 {
+                               compatible = "ti,omap3-wdt";
+                               ti,hwmods = "wd_timer";
+                               reg = <0x1c7000 0x1000>;
+                               interrupts = <91>;
+                       };
+               };
+
+               intc: interrupt-controller@48200000 {
+                       compatible = "ti,dm814-intc";
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+                       reg = <0x48200000 0x1000>;
+               };
+
+               edma: edma@49000000 {
+                       compatible = "ti,edma3";
+                       ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
+                       reg =   <0x49000000 0x10000>,
+                               <0x44e10f90 0x40>;
+                       interrupts = <12 13 14>;
+                       #dma-cells = <1>;
+               };
+
+               /* See TRM "Table 1-318. L4HS Instance Summary" */
+               l4hs: l4hs@4a000000 {
+                       compatible = "ti,dm814-l4hs", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0x4a000000 0x1b4040>;
+               };
+
+               /* REVISIT: Move to live under l4hs once driver is fixed */
+               mac: ethernet@4a100000 {
+                       compatible = "ti,cpsw";
+                       ti,hwmods = "cpgmac0";
+                       clocks = <&cpsw_125mhz_gclk>, <&cpsw_cpts_rft_clk>;
+                       clock-names = "fck", "cpts";
+                       cpdma_channels = <8>;
+                       ale_entries = <1024>;
+                       bd_ram_size = <0x2000>;
+                       no_bd_ram = <0>;
+                       rx_descs = <64>;
+                       mac_control = <0x20>;
+                       slaves = <2>;
+                       active_slave = <0>;
+                       cpts_clock_mult = <0x80000000>;
+                       cpts_clock_shift = <29>;
+                       reg = <0x4a100000 0x800
+                              0x4a100900 0x100>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       interrupt-parent = <&intc>;
+                       /*
+                        * c0_rx_thresh_pend
+                        * c0_rx_pend
+                        * c0_tx_pend
+                        * c0_misc_pend
+                        */
+                       interrupts = <40 41 42 43>;
+                       ranges;
+                       syscon = <&scm_conf>;
+
+                       davinci_mdio: mdio@4a100800 {
+                               compatible = "ti,davinci_mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               ti,hwmods = "davinci_mdio";
+                               bus_freq = <1000000>;
+                               reg = <0x4a100800 0x100>;
+                       };
+
+                       cpsw_emac0: slave@4a100200 {
+                               /* Filled in by U-Boot */
+                               mac-address = [ 00 00 00 00 00 00 ];
+                       };
+
+                       cpsw_emac1: slave@4a100300 {
+                               /* Filled in by U-Boot */
+                               mac-address = [ 00 00 00 00 00 00 ];
+                       };
+
+                       phy_sel: cpsw-phy-sel@0x48160650 {
+                               compatible = "ti,am3352-cpsw-phy-sel";
+                               reg= <0x48160650 0x4>;
+                               reg-names = "gmii-sel";
+                       };
+               };
+       };
+};
+
+#include "dm814x-clocks.dtsi"
index 289806a..3c99cfa 100644 (file)
@@ -58,7 +58,7 @@
         * the whole bus hierarchy.
         */
        ocp {
-               compatible = "ti,omap3-l3-smx", "simple-bus";
+               compatible = "simple-bus";
                reg = <0x44000000 0x10000>;
                interrupts = <9 10>;
                #address-cells = <1>;
index 38b1f7e..1791216 100644 (file)
                                status = "disabled";
                        };
 
-                       thermal: thermal-diode@d001c {
-                               compatible = "marvell,dove-thermal";
-                               reg = <0xd001c 0x0c>, <0xd005c 0x08>;
-                       };
-
-                       gate_clk: clock-gating-ctrl@d0038 {
-                               compatible = "marvell,dove-gating-clock";
-                               reg = <0xd0038 0x4>;
-                               clocks = <&core_clk 0>;
-                               #clock-cells = <1>;
-                       };
-
-                       pinctrl: pin-ctrl@d0200 {
-                               compatible = "marvell,dove-pinctrl";
-                               reg = <0xd0200 0x14>,
-                                     <0xd0440 0x04>;
-                               clocks = <&gate_clk 22>;
-
-                               pmx_gpio_0: pmx-gpio-0 {
-                                       marvell,pins = "mpp0";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_1: pmx-gpio-1 {
-                                       marvell,pins = "mpp1";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_2: pmx-gpio-2 {
-                                       marvell,pins = "mpp2";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_3: pmx-gpio-3 {
-                                       marvell,pins = "mpp3";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_4: pmx-gpio-4 {
-                                       marvell,pins = "mpp4";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_5: pmx-gpio-5 {
-                                       marvell,pins = "mpp5";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_6: pmx-gpio-6 {
-                                       marvell,pins = "mpp6";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_7: pmx-gpio-7 {
-                                       marvell,pins = "mpp7";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_8: pmx-gpio-8 {
-                                       marvell,pins = "mpp8";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_9: pmx-gpio-9 {
-                                       marvell,pins = "mpp9";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_pcie1_clkreq: pmx-pcie1-clkreq {
-                                       marvell,pins = "mpp9";
-                                       marvell,function = "pex1";
-                               };
-
-                               pmx_gpio_10: pmx-gpio-10 {
-                                       marvell,pins = "mpp10";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_11: pmx-gpio-11 {
-                                       marvell,pins = "mpp11";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_pcie0_clkreq: pmx-pcie0-clkreq {
-                                       marvell,pins = "mpp11";
-                                       marvell,function = "pex0";
-                               };
-
-                               pmx_gpio_12: pmx-gpio-12 {
-                                       marvell,pins = "mpp12";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_13: pmx-gpio-13 {
-                                       marvell,pins = "mpp13";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_audio1_extclk: pmx-audio1-extclk {
-                                       marvell,pins = "mpp13";
-                                       marvell,function = "audio1";
-                               };
-
-                               pmx_gpio_14: pmx-gpio-14 {
-                                       marvell,pins = "mpp14";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_15: pmx-gpio-15 {
-                                       marvell,pins = "mpp15";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_16: pmx-gpio-16 {
-                                       marvell,pins = "mpp16";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_17: pmx-gpio-17 {
-                                       marvell,pins = "mpp17";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_18: pmx-gpio-18 {
-                                       marvell,pins = "mpp18";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_19: pmx-gpio-19 {
-                                       marvell,pins = "mpp19";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_20: pmx-gpio-20 {
-                                       marvell,pins = "mpp20";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_gpio_21: pmx-gpio-21 {
-                                       marvell,pins = "mpp21";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_camera: pmx-camera {
-                                       marvell,pins = "mpp_camera";
-                                       marvell,function = "camera";
-                               };
-
-                               pmx_camera_gpio: pmx-camera-gpio {
-                                       marvell,pins = "mpp_camera";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_sdio0: pmx-sdio0 {
-                                       marvell,pins = "mpp_sdio0";
-                                       marvell,function = "sdio0";
-                               };
-
-                               pmx_sdio0_gpio: pmx-sdio0-gpio {
-                                       marvell,pins = "mpp_sdio0";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_sdio1: pmx-sdio1 {
-                                       marvell,pins = "mpp_sdio1";
-                                       marvell,function = "sdio1";
-                               };
-
-                               pmx_sdio1_gpio: pmx-sdio1-gpio {
-                                       marvell,pins = "mpp_sdio1";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_audio1_gpio: pmx-audio1-gpio {
-                                       marvell,pins = "mpp_audio1";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_audio1_i2s1_spdifo: pmx-audio1-i2s1-spdifo {
-                                       marvell,pins = "mpp_audio1";
-                                       marvell,function = "i2s1/spdifo";
-                               };
-
-                               pmx_spi0: pmx-spi0 {
-                                       marvell,pins = "mpp_spi0";
-                                       marvell,function = "spi0";
-                               };
-
-                               pmx_spi0_gpio: pmx-spi0-gpio {
-                                       marvell,pins = "mpp_spi0";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_spi1_4_7: pmx-spi1-4-7 {
-                                       marvell,pins = "mpp4", "mpp5",
-                                               "mpp6", "mpp7";
-                                       marvell,function = "spi1";
-                               };
-
-                               pmx_spi1_20_23: pmx-spi1-20-23 {
-                                       marvell,pins = "mpp20", "mpp21",
-                                               "mpp22", "mpp23";
-                                       marvell,function = "spi1";
-                               };
-
-                               pmx_uart1: pmx-uart1 {
-                                       marvell,pins = "mpp_uart1";
-                                       marvell,function = "uart1";
-                               };
-
-                               pmx_uart1_gpio: pmx-uart1-gpio {
-                                       marvell,pins = "mpp_uart1";
-                                       marvell,function = "gpio";
-                               };
-
-                               pmx_nand: pmx-nand {
-                                       marvell,pins = "mpp_nand";
-                                       marvell,function = "nand";
-                               };
-
-                               pmx_nand_gpo: pmx-nand-gpo {
-                                       marvell,pins = "mpp_nand";
-                                       marvell,function = "gpo";
-                               };
-
-                               pmx_i2c1: pmx-i2c1 {
-                                       marvell,pins = "mpp17", "mpp19";
-                                       marvell,function = "twsi";
-                               };
-
-                               pmx_i2c2: pmx-i2c2 {
-                                       marvell,pins = "mpp_audio1";
-                                       marvell,function = "twsi";
-                               };
-
-                               pmx_ssp_i2c2: pmx-ssp-i2c2 {
-                                       marvell,pins = "mpp_audio1";
-                                       marvell,function = "ssp/twsi";
-                               };
-
-                               pmx_i2cmux_0: pmx-i2cmux-0 {
-                                       marvell,pins = "twsi";
-                                       marvell,function = "twsi-opt1";
-                               };
-
-                               pmx_i2cmux_1: pmx-i2cmux-1 {
-                                       marvell,pins = "twsi";
-                                       marvell,function = "twsi-opt2";
-                               };
-
-                               pmx_i2cmux_2: pmx-i2cmux-2 {
-                                       marvell,pins = "twsi";
-                                       marvell,function = "twsi-opt3";
-                               };
-                       };
-
-                       core_clk: core-clocks@d0214 {
-                               compatible = "marvell,dove-core-clock";
-                               reg = <0xd0214 0x4>;
-                               #clock-cells = <1>;
-                       };
-
-                       gpio0: gpio-ctrl@d0400 {
-                               compatible = "marvell,orion-gpio";
-                               #gpio-cells = <2>;
-                               gpio-controller;
-                               reg = <0xd0400 0x20>;
-                               ngpios = <32>;
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-                               interrupts = <12>, <13>, <14>, <60>;
-                       };
-
-                       gpio1: gpio-ctrl@d0420 {
-                               compatible = "marvell,orion-gpio";
-                               #gpio-cells = <2>;
-                               gpio-controller;
-                               reg = <0xd0420 0x20>;
-                               ngpios = <32>;
+                       pmu: power-management@d0000 {
+                               compatible = "marvell,dove-pmu", "simple-bus";
+                               reg = <0xd0000 0x8000>, <0xd8000 0x8000>;
+                               ranges = <0x00000000 0x000d0000 0x8000
+                                         0x00008000 0x000d8000 0x8000>;
+                               interrupts = <33>;
                                interrupt-controller;
-                               #interrupt-cells = <2>;
-                               interrupts = <61>;
-                       };
-
-                       rtc: real-time-clock@d8500 {
-                               compatible = "marvell,orion-rtc";
-                               reg = <0xd8500 0x20>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               #interrupt-cells = <1>;
+                               #reset-cells = <1>;
+
+                               domains {
+                                       vpu_domain: vpu-domain {
+                                               #power-domain-cells = <0>;
+                                               marvell,pmu_pwr_mask = <0x00000008>;
+                                               marvell,pmu_iso_mask = <0x00000001>;
+                                               resets = <&pmu 16>;
+                                       };
+
+                                       gpu_domain: gpu-domain {
+                                               #power-domain-cells = <0>;
+                                               marvell,pmu_pwr_mask = <0x00000004>;
+                                               marvell,pmu_iso_mask = <0x00000002>;
+                                               resets = <&pmu 18>;
+                                       };
+                               };
+
+                               thermal: thermal-diode@001c {
+                                       compatible = "marvell,dove-thermal";
+                                       reg = <0x001c 0x0c>, <0x005c 0x08>;
+                               };
+
+                               gate_clk: clock-gating-ctrl@0038 {
+                                       compatible = "marvell,dove-gating-clock";
+                                       reg = <0x0038 0x4>;
+                                       clocks = <&core_clk 0>;
+                                       #clock-cells = <1>;
+                               };
+
+                               pinctrl: pin-ctrl@0200 {
+                                       compatible = "marvell,dove-pinctrl";
+                                       reg = <0x0200 0x14>,
+                                             <0x0440 0x04>;
+                                       clocks = <&gate_clk 22>;
+
+                                       pmx_gpio_0: pmx-gpio-0 {
+                                               marvell,pins = "mpp0";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_1: pmx-gpio-1 {
+                                               marvell,pins = "mpp1";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_2: pmx-gpio-2 {
+                                               marvell,pins = "mpp2";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_3: pmx-gpio-3 {
+                                               marvell,pins = "mpp3";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_4: pmx-gpio-4 {
+                                               marvell,pins = "mpp4";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_5: pmx-gpio-5 {
+                                               marvell,pins = "mpp5";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_6: pmx-gpio-6 {
+                                               marvell,pins = "mpp6";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_7: pmx-gpio-7 {
+                                               marvell,pins = "mpp7";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_8: pmx-gpio-8 {
+                                               marvell,pins = "mpp8";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_9: pmx-gpio-9 {
+                                               marvell,pins = "mpp9";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_pcie1_clkreq: pmx-pcie1-clkreq {
+                                               marvell,pins = "mpp9";
+                                               marvell,function = "pex1";
+                                       };
+
+                                       pmx_gpio_10: pmx-gpio-10 {
+                                               marvell,pins = "mpp10";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_11: pmx-gpio-11 {
+                                               marvell,pins = "mpp11";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_pcie0_clkreq: pmx-pcie0-clkreq {
+                                               marvell,pins = "mpp11";
+                                               marvell,function = "pex0";
+                                       };
+
+                                       pmx_gpio_12: pmx-gpio-12 {
+                                               marvell,pins = "mpp12";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_13: pmx-gpio-13 {
+                                               marvell,pins = "mpp13";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_audio1_extclk: pmx-audio1-extclk {
+                                               marvell,pins = "mpp13";
+                                               marvell,function = "audio1";
+                                       };
+
+                                       pmx_gpio_14: pmx-gpio-14 {
+                                               marvell,pins = "mpp14";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_15: pmx-gpio-15 {
+                                               marvell,pins = "mpp15";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_16: pmx-gpio-16 {
+                                               marvell,pins = "mpp16";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_17: pmx-gpio-17 {
+                                               marvell,pins = "mpp17";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_18: pmx-gpio-18 {
+                                               marvell,pins = "mpp18";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_19: pmx-gpio-19 {
+                                               marvell,pins = "mpp19";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_20: pmx-gpio-20 {
+                                               marvell,pins = "mpp20";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_gpio_21: pmx-gpio-21 {
+                                               marvell,pins = "mpp21";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_camera: pmx-camera {
+                                               marvell,pins = "mpp_camera";
+                                               marvell,function = "camera";
+                                       };
+
+                                       pmx_camera_gpio: pmx-camera-gpio {
+                                               marvell,pins = "mpp_camera";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_sdio0: pmx-sdio0 {
+                                               marvell,pins = "mpp_sdio0";
+                                               marvell,function = "sdio0";
+                                       };
+
+                                       pmx_sdio0_gpio: pmx-sdio0-gpio {
+                                               marvell,pins = "mpp_sdio0";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_sdio1: pmx-sdio1 {
+                                               marvell,pins = "mpp_sdio1";
+                                               marvell,function = "sdio1";
+                                       };
+
+                                       pmx_sdio1_gpio: pmx-sdio1-gpio {
+                                               marvell,pins = "mpp_sdio1";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_audio1_gpio: pmx-audio1-gpio {
+                                               marvell,pins = "mpp_audio1";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_audio1_i2s1_spdifo: pmx-audio1-i2s1-spdifo {
+                                               marvell,pins = "mpp_audio1";
+                                               marvell,function = "i2s1/spdifo";
+                                       };
+
+                                       pmx_spi0: pmx-spi0 {
+                                               marvell,pins = "mpp_spi0";
+                                               marvell,function = "spi0";
+                                       };
+
+                                       pmx_spi0_gpio: pmx-spi0-gpio {
+                                               marvell,pins = "mpp_spi0";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_spi1_4_7: pmx-spi1-4-7 {
+                                               marvell,pins = "mpp4", "mpp5",
+                                                       "mpp6", "mpp7";
+                                               marvell,function = "spi1";
+                                       };
+
+                                       pmx_spi1_20_23: pmx-spi1-20-23 {
+                                               marvell,pins = "mpp20", "mpp21",
+                                                       "mpp22", "mpp23";
+                                               marvell,function = "spi1";
+                                       };
+
+                                       pmx_uart1: pmx-uart1 {
+                                               marvell,pins = "mpp_uart1";
+                                               marvell,function = "uart1";
+                                       };
+
+                                       pmx_uart1_gpio: pmx-uart1-gpio {
+                                               marvell,pins = "mpp_uart1";
+                                               marvell,function = "gpio";
+                                       };
+
+                                       pmx_nand: pmx-nand {
+                                               marvell,pins = "mpp_nand";
+                                               marvell,function = "nand";
+                                       };
+
+                                       pmx_nand_gpo: pmx-nand-gpo {
+                                               marvell,pins = "mpp_nand";
+                                               marvell,function = "gpo";
+                                       };
+
+                                       pmx_i2c1: pmx-i2c1 {
+                                               marvell,pins = "mpp17", "mpp19";
+                                               marvell,function = "twsi";
+                                       };
+
+                                       pmx_i2c2: pmx-i2c2 {
+                                               marvell,pins = "mpp_audio1";
+                                               marvell,function = "twsi";
+                                       };
+
+                                       pmx_ssp_i2c2: pmx-ssp-i2c2 {
+                                               marvell,pins = "mpp_audio1";
+                                               marvell,function = "ssp/twsi";
+                                       };
+
+                                       pmx_i2cmux_0: pmx-i2cmux-0 {
+                                               marvell,pins = "twsi";
+                                               marvell,function = "twsi-opt1";
+                                       };
+
+                                       pmx_i2cmux_1: pmx-i2cmux-1 {
+                                               marvell,pins = "twsi";
+                                               marvell,function = "twsi-opt2";
+                                       };
+
+                                       pmx_i2cmux_2: pmx-i2cmux-2 {
+                                               marvell,pins = "twsi";
+                                               marvell,function = "twsi-opt3";
+                                       };
+                               };
+
+                               core_clk: core-clocks@0214 {
+                                       compatible = "marvell,dove-core-clock";
+                                       reg = <0x0214 0x4>;
+                                       #clock-cells = <1>;
+                               };
+
+                               gpio0: gpio-ctrl@0400 {
+                                       compatible = "marvell,orion-gpio";
+                                       #gpio-cells = <2>;
+                                       gpio-controller;
+                                       reg = <0x0400 0x20>;
+                                       ngpios = <32>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
+                                       interrupt-parent = <&intc>;
+                                       interrupts = <12>, <13>, <14>, <60>;
+                               };
+
+                               gpio1: gpio-ctrl@0420 {
+                                       compatible = "marvell,orion-gpio";
+                                       #gpio-cells = <2>;
+                                       gpio-controller;
+                                       reg = <0x0420 0x20>;
+                                       ngpios = <32>;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
+                                       interrupt-parent = <&intc>;
+                                       interrupts = <61>;
+                               };
+
+                               rtc: real-time-clock@8500 {
+                                       compatible = "marvell,orion-rtc";
+                                       reg = <0x8500 0x20>;
+                                       interrupts = <5>;
+                               };
                        };
 
                        gconf: global-config@e802c {
index 096f68b..a6c82e5 100644 (file)
                reg = <0x80000000 0x60000000>; /* 1536 MB */
        };
 
+       evm_3v3_sd: fixedregulator-sd {
+               compatible = "regulator-fixed";
+               regulator-name = "evm_3v3_sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+               gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
+       };
+
        mmc2_3v3: fixedregulator-mmc2 {
                compatible = "regulator-fixed";
                regulator-name = "mmc2_3v3";
                                        regulator-name = "ldo1";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
                                        regulator-boot-on;
                                };
 
 
 &mmc1 {
        status = "okay";
-       vmmc-supply = <&ldo1_reg>;
+       vmmc-supply = <&evm_3v3_sd>;
+       vmmc_aux-supply = <&ldo1_reg>;
        bus-width = <4>;
+       /*
+        * SDCD signal is not being used here - using the fact that GPIO mode
+        * is always hardwired.
+        */
+       cd-gpios = <&gpio6 27 0>;
 };
 
 &mmc2 {
index b058b31..a0d3d4b 100644 (file)
                                dra7_pmx_core: pinmux@1400 {
                                        compatible = "ti,dra7-padconf",
                                                     "pinctrl-single";
-                                       reg = <0x1400 0x0464>;
+                                       reg = <0x1400 0x0468>;
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        #interrupt-cells = <1>;
                                        pinctrl-single,register-width = <32>;
                                        pinctrl-single,function-mask = <0x3fffffff>;
                                };
+
+                               scm_conf1: scm_conf@1c04 {
+                                       compatible = "syscon";
+                                       reg = <0x1c04 0x0020>;
+                               };
                        };
 
                        cm_core_aon: cm_core_aon@5000 {
                                #thermal-sensor-cells = <1>;
                };
 
-               dra7_ctrl_core: ctrl_core@4a002000 {
-                       compatible = "syscon";
-                       reg = <0x4a002000 0x6d0>;
-               };
-
-               dra7_ctrl_general: tisyscon@4a002e00 {
-                       compatible = "syscon";
-                       reg = <0x4a002e00 0x7c>;
-               };
-
                sdma: dma-controller@4a056000 {
                        compatible = "ti,omap4430-sdma";
                        reg = <0x4a056000 0x1000>;
                        dma-requests = <127>;
                };
 
+               sdma_xbar: dma-router@4a002b78 {
+                       compatible = "ti,dra7-dma-crossbar";
+                       reg = <0x4a002b78 0xfc>;
+                       #dma-cells = <1>;
+                       dma-requests = <205>;
+                       ti,dma-safe-map = <0>;
+                       dma-masters = <&sdma>;
+               };
+
                gpio1: gpio@4ae10000 {
                        compatible = "ti,omap4-gpio";
                        reg = <0x4ae10000 0x200>;
                        ti,hwmods = "uart1";
                        clock-frequency = <48000000>;
                        status = "disabled";
-                       dmas = <&sdma 49>, <&sdma 50>;
+                       dmas = <&sdma_xbar 49>, <&sdma_xbar 50>;
                        dma-names = "tx", "rx";
                };
 
                        ti,hwmods = "uart2";
                        clock-frequency = <48000000>;
                        status = "disabled";
-                       dmas = <&sdma 51>, <&sdma 52>;
+                       dmas = <&sdma_xbar 51>, <&sdma_xbar 52>;
                        dma-names = "tx", "rx";
                };
 
                        ti,hwmods = "uart3";
                        clock-frequency = <48000000>;
                        status = "disabled";
-                       dmas = <&sdma 53>, <&sdma 54>;
+                       dmas = <&sdma_xbar 53>, <&sdma_xbar 54>;
                        dma-names = "tx", "rx";
                };
 
                        ti,hwmods = "uart4";
                        clock-frequency = <48000000>;
                         status = "disabled";
-                       dmas = <&sdma 55>, <&sdma 56>;
+                       dmas = <&sdma_xbar 55>, <&sdma_xbar 56>;
                        dma-names = "tx", "rx";
                };
 
                        ti,hwmods = "uart5";
                        clock-frequency = <48000000>;
                        status = "disabled";
-                       dmas = <&sdma 63>, <&sdma 64>;
+                       dmas = <&sdma_xbar 63>, <&sdma_xbar 64>;
                        dma-names = "tx", "rx";
                };
 
                        ti,hwmods = "uart6";
                        clock-frequency = <48000000>;
                        status = "disabled";
-                       dmas = <&sdma 79>, <&sdma 80>;
+                       dmas = <&sdma_xbar 79>, <&sdma_xbar 80>;
                        dma-names = "tx", "rx";
                };
 
                        ti,hwmods = "mmc1";
                        ti,dual-volt;
                        ti,needs-special-reset;
-                       dmas = <&sdma 61>, <&sdma 62>;
+                       dmas = <&sdma_xbar 61>, <&sdma_xbar 62>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                        pbias-supply = <&pbias_mmc_reg>;
                        interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
                        ti,hwmods = "mmc2";
                        ti,needs-special-reset;
-                       dmas = <&sdma 47>, <&sdma 48>;
+                       dmas = <&sdma_xbar 47>, <&sdma_xbar 48>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                };
                        interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
                        ti,hwmods = "mmc3";
                        ti,needs-special-reset;
-                       dmas = <&sdma 77>, <&sdma 78>;
+                       dmas = <&sdma_xbar 77>, <&sdma_xbar 78>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                };
                        interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
                        ti,hwmods = "mmc4";
                        ti,needs-special-reset;
-                       dmas = <&sdma 57>, <&sdma 58>;
+                       dmas = <&sdma_xbar 57>, <&sdma_xbar 58>;
                        dma-names = "tx", "rx";
                        status = "disabled";
                };
                        #size-cells = <0>;
                        ti,hwmods = "mcspi1";
                        ti,spi-num-cs = <4>;
-                       dmas = <&sdma 35>,
-                              <&sdma 36>,
-                              <&sdma 37>,
-                              <&sdma 38>,
-                              <&sdma 39>,
-                              <&sdma 40>,
-                              <&sdma 41>,
-                              <&sdma 42>;
+                       dmas = <&sdma_xbar 35>,
+                              <&sdma_xbar 36>,
+                              <&sdma_xbar 37>,
+                              <&sdma_xbar 38>,
+                              <&sdma_xbar 39>,
+                              <&sdma_xbar 40>,
+                              <&sdma_xbar 41>,
+                              <&sdma_xbar 42>;
                        dma-names = "tx0", "rx0", "tx1", "rx1",
                                    "tx2", "rx2", "tx3", "rx3";
                        status = "disabled";
                        #size-cells = <0>;
                        ti,hwmods = "mcspi2";
                        ti,spi-num-cs = <2>;
-                       dmas = <&sdma 43>,
-                              <&sdma 44>,
-                              <&sdma 45>,
-                              <&sdma 46>;
+                       dmas = <&sdma_xbar 43>,
+                              <&sdma_xbar 44>,
+                              <&sdma_xbar 45>,
+                              <&sdma_xbar 46>;
                        dma-names = "tx0", "rx0", "tx1", "rx1";
                        status = "disabled";
                };
                        #size-cells = <0>;
                        ti,hwmods = "mcspi3";
                        ti,spi-num-cs = <2>;
-                       dmas = <&sdma 15>, <&sdma 16>;
+                       dmas = <&sdma_xbar 15>, <&sdma_xbar 16>;
                        dma-names = "tx0", "rx0";
                        status = "disabled";
                };
                        #size-cells = <0>;
                        ti,hwmods = "mcspi4";
                        ti,spi-num-cs = <1>;
-                       dmas = <&sdma 70>, <&sdma 71>;
+                       dmas = <&sdma_xbar 70>, <&sdma_xbar 71>;
                        dma-names = "tx0", "rx0";
                        status = "disabled";
                };
                        usb1: usb@48890000 {
                                compatible = "snps,dwc3";
                                reg = <0x48890000 0x17000>;
-                               interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                phys = <&usb2_phy1>, <&usb3_phy1>;
                                phy-names = "usb2-phy", "usb3-phy";
                                tx-fifo-resize;
                        usb2: usb@488d0000 {
                                compatible = "snps,dwc3";
                                reg = <0x488d0000 0x17000>;
-                               interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                phys = <&usb2_phy2>;
                                phy-names = "usb2-phy";
                                tx-fifo-resize;
                        usb3: usb@48910000 {
                                compatible = "snps,dwc3";
                                reg = <0x48910000 0x17000>;
-                               interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                tx-fifo-resize;
                                maximum-speed = "high-speed";
                                dr_mode = "otg";
index 8037384..6f6bd98 100644 (file)
                regulator-max-microvolt = <3300000>;
        };
 
+       evm_3v3_sd: fixedregulator-sd {
+               compatible = "regulator-fixed";
+               regulator-name = "evm_3v3_sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+               gpio = <&pcf_gpio_21 5 GPIO_ACTIVE_HIGH>;
+       };
+
        extcon_usb1: extcon_usb1 {
                compatible = "linux,extcon-usb-gpio";
                id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
                                        regulator-name = "ldo1";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <3300000>;
+                                       regulator-always-on;
                                        regulator-boot-on;
                                };
 
                interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
                interrupt-controller;
                #interrupt-cells = <2>;
+
+               cpsw_sel_s0 {
+                       gpio-hog;
+                       gpios = <4 GPIO_ACTIVE_HIGH>;
+                       output-low;
+               };
        };
 };
 
        status = "okay";
        pinctrl-names = "default";
        pinctrl-0 = <&mmc1_pins_default>;
-
-       vmmc-supply = <&ldo1_reg>;
+       vmmc-supply = <&evm_3v3_sd>;
+       vmmc_aux-supply = <&ldo1_reg>;
        bus-width = <4>;
        /*
         * SDCD signal is not being used here - using the fact that GPIO mode
         * is a viable alternative
         */
        cd-gpios = <&gpio6 27 0>;
+       max-frequency = <192000000>;
 };
 
 &mmc2 {
        vmmc-supply = <&evm_3v3>;
        bus-width = <8>;
        ti,non-removable;
+       max-frequency = <192000000>;
 };
 
 &dra7_pmx_core {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&cpsw_default>;
        pinctrl-1 = <&cpsw_sleep>;
+       slaves = <1>;
 };
 
-&cpsw_emac1 {
+&cpsw_emac0 {
        phy_id = <&davinci_mdio>, <3>;
        phy-mode = "rgmii";
 };
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
-       active_slave = <1>;
 };
 
 &dcan1 {
index fa995d0..feea98e 100644 (file)
                        usb4: usb@48950000 {
                                compatible = "snps,dwc3";
                                reg = <0x48950000 0x17000>;
-                               interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 346 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                tx-fifo-resize;
                                maximum-speed = "high-speed";
                                dr_mode = "otg";
index 1dee0aa..955c24e 100644 (file)
        };
 };
 
+&iic0 {
+       status = "okay";
+};
+
+&iic1 {
+       status = "okay";
+};
+
 &pfc {
        uart1_pins: serial@e1030000 {
                renesas,groups = "uart1_ctrl", "uart1_data";
index bb45694..edad0c4 100644 (file)
@@ -21,6 +21,8 @@
                gpio2 = &gpio2;
                gpio3 = &gpio3;
                gpio4 = &gpio4;
+               i2c0 = &iic0;
+               i2c1 = &iic1;
        };
 
        cpus {
                        clock-frequency = <32768>;
                        #clock-cells = <0>;
                };
+               iic0_sclkdiv: iic0_sclkdiv {
+                       compatible = "renesas,emev2-smu-clkdiv";
+                       reg = <0x624 0>;
+                       clocks = <&pll3_fo>;
+                       #clock-cells = <0>;
+               };
+               iic0_sclk: iic0_sclk {
+                       compatible = "renesas,emev2-smu-gclk";
+                       reg = <0x48c 1>;
+                       clocks = <&iic0_sclkdiv>;
+                       #clock-cells = <0>;
+               };
+               iic1_sclkdiv: iic1_sclkdiv {
+                       compatible = "renesas,emev2-smu-clkdiv";
+                       reg = <0x624 16>;
+                       clocks = <&pll3_fo>;
+                       #clock-cells = <0>;
+               };
+               iic1_sclk: iic1_sclk {
+                       compatible = "renesas,emev2-smu-gclk";
+                       reg = <0x490 1>;
+                       clocks = <&iic1_sclkdiv>;
+                       #clock-cells = <0>;
+               };
                pll3_fo: pll3_fo {
                        compatible = "fixed-factor-clock";
                        clocks = <&c32ki>;
                interrupt-controller;
                #interrupt-cells = <2>;
        };
+
+       iic0: i2c@e0070000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "renesas,iic-emev2";
+               reg = <0xe0070000 0x28>;
+               interrupts = <0 32 IRQ_TYPE_EDGE_RISING>;
+               clocks = <&iic0_sclk>;
+               clock-names = "sclk";
+               status = "disabled";
+       };
+
+       iic1: i2c@e10a0000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "renesas,iic-emev2";
+               reg = <0xe10a0000 0x28>;
+               interrupts = <0 33 IRQ_TYPE_EDGE_RISING>;
+               clocks = <&iic1_sclk>;
+               clock-names = "sclk";
+               status = "disabled";
+       };
 };
index 775892b..eb37952 100644 (file)
                enable-active-high;
        };
 
-       hsotg@12480000 {
-               vusb_d-supply = <&ldo3_reg>;
-               vusb_a-supply = <&ldo8_reg>;
-               dr_mode = "peripheral";
-               status = "okay";
-       };
-
-       sdhci_emmc: sdhci@12510000 {
-               bus-width = <8>;
-               non-removable;
-               pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>;
-               pinctrl-names = "default";
-               vmmc-supply = <&vemmc_reg>;
-               status = "okay";
-       };
-
-       sdhci_sd: sdhci@12530000 {
-               bus-width = <4>;
-               pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
-               pinctrl-names = "default";
-               vmmc-supply = <&ldo5_reg>;
-               cd-gpios = <&gpx3 4 0>;
-               cd-inverted;
-               status = "okay";
-       };
-
-       ehci@12580000 {
-               status = "okay";
-               port@0 {
-                       status = "okay";
-               };
-       };
-
-       ohci@12590000 {
-               status = "okay";
-               port@0 {
-                       status = "okay";
-               };
-       };
-
-       exynos-usbphy@125B0000 {
-               status = "okay";
-       };
-
-       serial@13800000 {
-               status = "okay";
-       };
-
-       serial@13810000 {
-               status = "okay";
-       };
-
-       serial@13820000 {
-               status = "okay";
-       };
-
-       serial@13830000 {
-               status = "okay";
-       };
-
        gpio-keys {
                compatible = "gpio-keys";
 
                enable-active-high;
        };
 
-       i2c@13890000 {
-               samsung,i2c-sda-delay = <100>;
-               samsung,i2c-slave-addr = <0x10>;
-               samsung,i2c-max-bus-freq = <100000>;
-               pinctrl-0 = <&i2c3_bus>;
-               pinctrl-names = "default";
-               status = "okay";
-
-               tsp@4a {
-                       /* TBD: Atmel maXtouch touchscreen */
-                       reg = <0x4a>;
-               };
-       };
-
-       i2c@138B0000 {
-               samsung,i2c-sda-delay = <100>;
-               samsung,i2c-slave-addr = <0x10>;
-               samsung,i2c-max-bus-freq = <100000>;
-               pinctrl-0 = <&i2c5_bus>;
-               pinctrl-names = "default";
-               status = "okay";
-
-               vdd_arm_reg: pmic@60 {
-                       compatible = "maxim,max8952";
-                       reg = <0x60>;
-
-                       max8952,vid-gpios = <&gpx0 3 0>, <&gpx0 4 0>;
-                       max8952,default-mode = <0>;
-                       max8952,dvs-mode-microvolt = <1250000>, <1200000>,
-                                                       <1050000>, <950000>;
-                       max8952,sync-freq = <0>;
-                       max8952,ramp-speed = <0>;
-
-                       regulator-name = "vdd_arm";
-                       regulator-min-microvolt = <770000>;
-                       regulator-max-microvolt = <1400000>;
-                       regulator-always-on;
-                       regulator-boot-on;
-               };
-
-               pmic@66 {
-                       compatible = "national,lp3974";
-                       reg = <0x66>;
-
-                       max8998,pmic-buck1-default-dvs-idx = <0>;
-                       max8998,pmic-buck1-dvs-gpios = <&gpx0 5 0>,
-                                                       <&gpx0 6 0>;
-                       max8998,pmic-buck1-dvs-voltage = <1100000>, <1000000>,
-                                                       <1100000>, <1000000>;
-
-                       max8998,pmic-buck2-default-dvs-idx = <0>;
-                       max8998,pmic-buck2-dvs-gpio = <&gpe2 0 0>;
-                       max8998,pmic-buck2-dvs-voltage = <1200000>, <1100000>;
-
-                       regulators {
-                               ldo2_reg: LDO2 {
-                                       regulator-name = "VALIVE_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo3_reg: LDO3 {
-                                       regulator-name = "VUSB+MIPI_1.1V";
-                                       regulator-min-microvolt = <1100000>;
-                                       regulator-max-microvolt = <1100000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo4_reg: LDO4 {
-                                       regulator-name = "VADC_3.3V";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                               };
-
-                               ldo5_reg: LDO5 {
-                                       regulator-name = "VTF_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                               };
-
-                               ldo6_reg: LDO6 {
-                                       regulator-name = "LDO6";
-                                       regulator-min-microvolt = <2000000>;
-                                       regulator-max-microvolt = <2000000>;
-                               };
-
-                               ldo7_reg: LDO7 {
-                                       regulator-name = "VLCD+VMIPI_1.8V";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                               };
-
-                               ldo8_reg: LDO8 {
-                                       regulator-name = "VUSB+VDAC_3.3V";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo9_reg: LDO9 {
-                                       regulator-name = "VCC_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                                       regulator-always-on;
-                               };
-
-                               ldo10_reg: LDO10 {
-                                       regulator-name = "VPLL_1.1V";
-                                       regulator-min-microvolt = <1100000>;
-                                       regulator-max-microvolt = <1100000>;
-                                       regulator-boot-on;
-                                       regulator-always-on;
-                               };
-
-                               ldo11_reg: LDO11 {
-                                       regulator-name = "CAM_AF_3.3V";
-                                       regulator-min-microvolt = <3300000>;
-                                       regulator-max-microvolt = <3300000>;
-                               };
-
-                               ldo12_reg: LDO12 {
-                                       regulator-name = "PS_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                               };
-
-                               ldo13_reg: LDO13 {
-                                       regulator-name = "VHIC_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                               };
-
-                               ldo14_reg: LDO14 {
-                                       regulator-name = "CAM_I_HOST_1.8V";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                               };
-
-                               ldo15_reg: LDO15 {
-                                       regulator-name = "CAM_S_DIG+FM33_CORE_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                               };
-
-                               ldo16_reg: LDO16 {
-                                       regulator-name = "CAM_S_ANA_2.8V";
-                                       regulator-min-microvolt = <2800000>;
-                                       regulator-max-microvolt = <2800000>;
-                               };
-
-                               ldo17_reg: LDO17 {
-                                       regulator-name = "VCC_3.0V_LCD";
-                                       regulator-min-microvolt = <3000000>;
-                                       regulator-max-microvolt = <3000000>;
-                               };
-
-                               buck1_reg: BUCK1 {
-                                       regulator-name = "VINT_1.1V";
-                                       regulator-min-microvolt = <750000>;
-                                       regulator-max-microvolt = <1500000>;
-                                       regulator-boot-on;
-                                       regulator-always-on;
-                               };
-
-                               buck2_reg: BUCK2 {
-                                       regulator-name = "VG3D_1.1V";
-                                       regulator-min-microvolt = <750000>;
-                                       regulator-max-microvolt = <1500000>;
-                                       regulator-boot-on;
-                               };
-
-                               buck3_reg: BUCK3 {
-                                       regulator-name = "VCC_1.8V";
-                                       regulator-min-microvolt = <1800000>;
-                                       regulator-max-microvolt = <1800000>;
-                                       regulator-always-on;
-                               };
-
-                               buck4_reg: BUCK4 {
-                                       regulator-name = "VMEM_1.2V";
-                                       regulator-min-microvolt = <1200000>;
-                                       regulator-max-microvolt = <1200000>;
-                                       regulator-always-on;
-                               };
-
-                               ap32khz_reg: EN32KHz-AP {
-                                       regulator-name = "32KHz AP";
-                                       regulator-always-on;
-                               };
-
-                               cp32khz_reg: EN32KHz-CP {
-                                       regulator-name = "32KHz CP";
-                               };
-
-                               vichg_reg: ENVICHG {
-                                       regulator-name = "VICHG";
-                               };
-
-                               safeout1_reg: ESAFEOUT1 {
-                                       regulator-name = "SAFEOUT1";
-                                       regulator-always-on;
-                               };
-
-                               safeout2_reg: ESAFEOUT2 {
-                                       regulator-name = "SAFEOUT2";
-                                       regulator-boot-on;
-                               };
-                       };
-               };
-       };
-
        spi-lcd {
                compatible = "spi-gpio";
                #address-cells = <1>;
                };
        };
 
-       fimd: fimd@11c00000 {
-               pinctrl-0 = <&lcd_clk>, <&lcd_data24>;
-               pinctrl-names = "default";
-               status = "okay";
-               samsung,invert-vden;
-               samsung,invert-vclk;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               port@3 {
-                       reg = <3>;
-                       fimd_dpi_ep: endpoint {
-                               remote-endpoint = <&lcd_ep>;
-                       };
-               };
-       };
-
-       pwm@139D0000 {
-               compatible = "samsung,s5p6440-pwm";
-               status = "okay";
-       };
-
        camera {
                status = "okay";
 
                pinctrl-names = "default";
                status = "okay";
        };
+};
 
-       mixer@12C10000 {
+&cpu0 {
+       cpu0-supply = <&vdd_arm_reg>;
+};
+
+&ehci {
+       status = "okay";
+       port@0 {
                status = "okay";
        };
+};
 
-       hdmi@12D00000 {
-               hpd-gpio = <&gpx3 7 0>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&hdmi_hpd>;
-               hdmi-en-supply = <&hdmi_en>;
-               vdd-supply = <&ldo3_reg>;
-               vdd_osc-supply = <&ldo4_reg>;
-               vdd_pll-supply = <&ldo3_reg>;
-               ddc = <&hdmi_ddc>;
-               status = "okay";
+&exynos_usbphy {
+       status = "okay";
+};
+
+&fimd {
+       pinctrl-0 = <&lcd_clk>, <&lcd_data24>;
+       pinctrl-names = "default";
+       status = "okay";
+       samsung,invert-vden;
+       samsung,invert-vclk;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       port@3 {
+               reg = <3>;
+               fimd_dpi_ep: endpoint {
+                       remote-endpoint = <&lcd_ep>;
+               };
        };
+};
 
-       i2c@138E0000 {
-               status = "okay";
+&hdmi {
+       hpd-gpio = <&gpx3 7 0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&hdmi_hpd>;
+       hdmi-en-supply = <&hdmi_en>;
+       vdd-supply = <&ldo3_reg>;
+       vdd_osc-supply = <&ldo4_reg>;
+       vdd_pll-supply = <&ldo3_reg>;
+       ddc = <&hdmi_ddc>;
+       status = "okay";
+};
+
+&hsotg {
+       vusb_d-supply = <&ldo3_reg>;
+       vusb_a-supply = <&ldo8_reg>;
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&i2c_3 {
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-slave-addr = <0x10>;
+       samsung,i2c-max-bus-freq = <100000>;
+       pinctrl-0 = <&i2c3_bus>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       tsp@4a {
+               /* TBD: Atmel maXtouch touchscreen */
+               reg = <0x4a>;
        };
 };
 
-&cpu0 {
-       cpu0-supply = <&vdd_arm_reg>;
+&i2c_5 {
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-slave-addr = <0x10>;
+       samsung,i2c-max-bus-freq = <100000>;
+       pinctrl-0 = <&i2c5_bus>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       vdd_arm_reg: pmic@60 {
+               compatible = "maxim,max8952";
+               reg = <0x60>;
+
+               max8952,vid-gpios = <&gpx0 3 0>, <&gpx0 4 0>;
+               max8952,default-mode = <0>;
+               max8952,dvs-mode-microvolt = <1250000>, <1200000>,
+                                               <1050000>, <950000>;
+               max8952,sync-freq = <0>;
+               max8952,ramp-speed = <0>;
+
+               regulator-name = "vdd_arm";
+               regulator-min-microvolt = <770000>;
+               regulator-max-microvolt = <1400000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       pmic@66 {
+               compatible = "national,lp3974";
+               reg = <0x66>;
+
+               max8998,pmic-buck1-default-dvs-idx = <0>;
+               max8998,pmic-buck1-dvs-gpios = <&gpx0 5 0>,
+                                               <&gpx0 6 0>;
+               max8998,pmic-buck1-dvs-voltage = <1100000>, <1000000>,
+                                               <1100000>, <1000000>;
+
+               max8998,pmic-buck2-default-dvs-idx = <0>;
+               max8998,pmic-buck2-dvs-gpio = <&gpe2 0 0>;
+               max8998,pmic-buck2-dvs-voltage = <1200000>, <1100000>;
+
+               regulators {
+                       ldo2_reg: LDO2 {
+                               regulator-name = "VALIVE_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       ldo3_reg: LDO3 {
+                               regulator-name = "VUSB+MIPI_1.1V";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-always-on;
+                       };
+
+                       ldo4_reg: LDO4 {
+                               regulator-name = "VADC_3.3V";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo5_reg: LDO5 {
+                               regulator-name = "VTF_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                       };
+
+                       ldo6_reg: LDO6 {
+                               regulator-name = "LDO6";
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                       };
+
+                       ldo7_reg: LDO7 {
+                               regulator-name = "VLCD+VMIPI_1.8V";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       ldo8_reg: LDO8 {
+                               regulator-name = "VUSB+VDAC_3.3V";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       ldo9_reg: LDO9 {
+                               regulator-name = "VCC_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-always-on;
+                       };
+
+                       ldo10_reg: LDO10 {
+                               regulator-name = "VPLL_1.1V";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo11_reg: LDO11 {
+                               regulator-name = "CAM_AF_3.3V";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       ldo12_reg: LDO12 {
+                               regulator-name = "PS_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                       };
+
+                       ldo13_reg: LDO13 {
+                               regulator-name = "VHIC_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                       };
+
+                       ldo14_reg: LDO14 {
+                               regulator-name = "CAM_I_HOST_1.8V";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       ldo15_reg: LDO15 {
+                               regulator-name = "CAM_S_DIG+FM33_CORE_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                       };
+
+                       ldo16_reg: LDO16 {
+                               regulator-name = "CAM_S_ANA_2.8V";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                       };
+
+                       ldo17_reg: LDO17 {
+                               regulator-name = "VCC_3.0V_LCD";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                       };
+
+                       buck1_reg: BUCK1 {
+                               regulator-name = "VINT_1.1V";
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck2_reg: BUCK2 {
+                               regulator-name = "VG3D_1.1V";
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-boot-on;
+                       };
+
+                       buck3_reg: BUCK3 {
+                               regulator-name = "VCC_1.8V";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       buck4_reg: BUCK4 {
+                               regulator-name = "VMEM_1.2V";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       ap32khz_reg: EN32KHz-AP {
+                               regulator-name = "32KHz AP";
+                               regulator-always-on;
+                       };
+
+                       cp32khz_reg: EN32KHz-CP {
+                               regulator-name = "32KHz CP";
+                       };
+
+                       vichg_reg: ENVICHG {
+                               regulator-name = "VICHG";
+                       };
+
+                       safeout1_reg: ESAFEOUT1 {
+                               regulator-name = "SAFEOUT1";
+                               regulator-always-on;
+                       };
+
+                       safeout2_reg: ESAFEOUT2 {
+                               regulator-name = "SAFEOUT2";
+                               regulator-boot-on;
+                       };
+               };
+       };
+};
+
+&i2c_8 {
+       status = "okay";
+};
+
+&mdma1 {
+       reg = <0x12840000 0x1000>;
+};
+
+&mixer {
+       status = "okay";
+};
+
+&ohci {
+       status = "okay";
+       port@0 {
+               status = "okay";
+       };
 };
 
 &pinctrl_1 {
        };
 };
 
-&mdma1 {
-       reg = <0x12840000 0x1000>;
+&pwm {
+       compatible = "samsung,s5p6440-pwm";
+       status = "okay";
+};
+
+&sdhci_0 {
+       bus-width = <8>;
+       non-removable;
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus8>;
+       pinctrl-names = "default";
+       vmmc-supply = <&vemmc_reg>;
+       status = "okay";
+};
+
+&sdhci_2 {
+       bus-width = <4>;
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus4>;
+       pinctrl-names = "default";
+       vmmc-supply = <&ldo5_reg>;
+       cd-gpios = <&gpx3 4 0>;
+       cd-inverted;
+       status = "okay";
+};
+
+&serial_0 {
+       status = "okay";
+};
+
+&serial_1 {
+       status = "okay";
+};
+
+&serial_2 {
+       status = "okay";
+};
+
+&serial_3 {
+       status = "okay";
 };
index afc199d..8848400 100644 (file)
                        interrupt-parent = <&gpx2>;
                        interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
                        reg = <0x36>;
+
+                       maxim,over-heat-temp = <700>;
+                       maxim,over-volt = <4500>;
                };
        };
 
index 886cfca..880917e 100644 (file)
  * published by the Free Software Foundation.
 */
 
-/ {
-       pinctrl@11400000 {
-               gpa0: gpa0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
+&pinctrl_0 {
+       gpa0: gpa0 {
+               gpio-controller;
+               #gpio-cells = <2>;
 
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa1: gpa1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa2: gpa2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb0: gpb0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb1: gpb1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb2: gpb2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb3: gpb3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc0: gpc0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc1: gpc1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc2: gpc2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc3: gpc3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpd0: gpd0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpd1: gpd1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpy0: gpy0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy1: gpy1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy2: gpy2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy3: gpy3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy4: gpy4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy5: gpy5 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy6: gpy6 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpc4: gpc4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx0: gpx0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
-                                    <26 0>, <26 1>, <27 0>, <27 1>;
-               };
-
-               gpx1: gpx1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
-                                    <30 0>, <30 1>, <31 0>, <31 1>;
-               };
-
-               gpx2: gpx2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx3: gpx3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               uart0_data: uart0-data {
-                       samsung,pins = "gpa0-0", "gpa0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart0_fctl: uart0-fctl {
-                       samsung,pins = "gpa0-2", "gpa0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c2_bus: i2c2-bus {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c2_hs_bus: i2c2-hs-bus {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_data: uart2-data {
-                       samsung,pins = "gpa1-0", "gpa1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_fctl: uart2-fctl {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c3_bus: i2c3-bus {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c3_hs_bus: i2c3-hs-bus {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart3_data: uart3-data {
-                       samsung,pins = "gpa1-4", "gpa1-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi0_bus: spi0-bus {
-                       samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c4_bus: i2c4-bus {
-                       samsung,pins = "gpa2-0", "gpa2-1";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c5_bus: i2c5-bus {
-                       samsung,pins = "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi1_bus: spi1-bus {
-                       samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s1_bus: i2s1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm1_bus: pcm1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               ac97_bus: ac97-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s2_bus: i2s2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm2_bus: pcm2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spdif_bus: spdif-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi2_bus: spi2-bus {
-                       samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <5>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c6_bus: i2c6-bus {
-                       samsung,pins = "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm0_out: pwm0-out {
-                       samsung,pins = "gpb2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm1_out: pwm1-out {
-                       samsung,pins = "gpb2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm2_out: pwm2-out {
-                       samsung,pins = "gpb2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm3_out: pwm3-out {
-                       samsung,pins = "gpb2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c7_bus: i2c7-bus {
-                       samsung,pins = "gpb2-2", "gpb2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c0_bus: i2c0-bus {
-                       samsung,pins = "gpb3-0", "gpb3-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c1_bus: i2c1-bus {
-                       samsung,pins = "gpb3-2", "gpb3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c0_hs_bus: i2c0-hs-bus {
-                       samsung,pins = "gpb3-0", "gpb3-1";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c1_hs_bus: i2c1-hs-bus {
-                       samsung,pins = "gpb3-2", "gpb3-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               sd0_clk: sd0-clk {
-                       samsung,pins = "gpc0-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cmd: sd0-cmd {
-                       samsung,pins = "gpc0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cd: sd0-cd {
-                       samsung,pins = "gpc0-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus1: sd0-bus-width1 {
-                       samsung,pins = "gpc0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus4: sd0-bus-width4 {
-                       samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus8: sd0-bus-width8 {
-                       samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_clk: sd1-clk {
-                       samsung,pins = "gpc2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cmd: sd1-cmd {
-                       samsung,pins = "gpc2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cd: sd1-cd {
-                       samsung,pins = "gpc2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus1: sd1-bus-width1 {
-                       samsung,pins = "gpc2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus4: sd1-bus-width4 {
-                       samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_clk: sd2-clk {
-                       samsung,pins = "gpc3-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cmd: sd2-cmd {
-                       samsung,pins = "gpc3-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cd: sd2-cd {
-                       samsung,pins = "gpc3-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus1: sd2-bus-width1 {
-                       samsung,pins = "gpc3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus4: sd2-bus-width4 {
-                       samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus8: sd2-bus-width8 {
-                       samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_clk: sd3-clk {
-                       samsung,pins = "gpc4-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_cmd: sd3-cmd {
-                       samsung,pins = "gpc4-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_cd: sd3-cd {
-                       samsung,pins = "gpc4-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_bus1: sd3-bus-width1 {
-                       samsung,pins = "gpc4-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd3_bus4: sd3-bus-width4 {
-                       samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               uart1_data: uart1-data {
-                       samsung,pins = "gpd0-0", "gpd0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart1_fctl: uart1-fctl {
-                       samsung,pins = "gpd0-2", "gpd0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               dp_hpd: dp_hpd {
-                       samsung,pins = "gpx0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@13400000 {
-               gpe0: gpe0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpe1: gpe1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf0: gpf0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf1: gpf1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg0: gpg0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg1: gpg1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg2: gpg2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gph0: gph0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gph1: gph1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               cam_gpio_a: cam-gpio-a {
-                       samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
-                                      "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
-                                      "gpe1-0", "gpe1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_gpio_b: cam-gpio-b {
-                       samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
-                                      "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c2_bus: cam-i2c2-bus {
-                       samsung,pins = "gpe0-6", "gpe1-0";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_spi1_bus: cam-spi1-bus {
-                       samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c1_bus: cam-i2c1-bus {
-                       samsung,pins = "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c0_bus: cam-i2c0-bus {
-                       samsung,pins = "gpf0-0", "gpf0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_spi0_bus: cam-spi0-bus {
-                       samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_bayrgb_bus: cam-bayrgb-bus {
-                       samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
-                                      "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
-                                      "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
-                                      "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
-                                      "gpg2-0", "gpg2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_port_a: cam-port-a {
-                       samsung,pins = "gph0-0", "gph0-1", "gph0-2", "gph0-3",
-                                      "gph1-0", "gph1-1", "gph1-2", "gph1-3",
-                                      "gph1-4", "gph1-5", "gph1-6", "gph1-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@10d10000 {
-               gpv0: gpv0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv1: gpv1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv2: gpv2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv3: gpv3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpv4: gpv4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               c2c_rxd: c2c-rxd {
-                       samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3",
-                                      "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7",
-                                      "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3",
-                                      "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               c2c_txd: c2c-txd {
-                       samsung,pins = "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3",
-                                      "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7",
-                                      "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3",
-                                      "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@03860000 {
-               gpz: gpz {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               i2s0_bus: i2s0-bus {
-                       samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
-                                       "gpz-4", "gpz-5", "gpz-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa1: gpa1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa2: gpa2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb0: gpb0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb1: gpb1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb2: gpb2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb3: gpb3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc0: gpc0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc2: gpc2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc3: gpc3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd0: gpd0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd1: gpd1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpy0: gpy0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy1: gpy1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy2: gpy2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy3: gpy3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy4: gpy4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy5: gpy5 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy6: gpy6 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpc4: gpc4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx0: gpx0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
+                            <26 0>, <26 1>, <27 0>, <27 1>;
+       };
+
+       gpx1: gpx1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
+                            <30 0>, <30 1>, <31 0>, <31 1>;
+       };
+
+       gpx2: gpx2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx3: gpx3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       uart0_data: uart0-data {
+               samsung,pins = "gpa0-0", "gpa0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart0_fctl: uart0-fctl {
+               samsung,pins = "gpa0-2", "gpa0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_bus: i2c2-bus {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_hs_bus: i2c2-hs-bus {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_data: uart2-data {
+               samsung,pins = "gpa1-0", "gpa1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_fctl: uart2-fctl {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c3_bus: i2c3-bus {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c3_hs_bus: i2c3-hs-bus {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart3_data: uart3-data {
+               samsung,pins = "gpa1-4", "gpa1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi0_bus: spi0-bus {
+               samsung,pins = "gpa2-0", "gpa2-2", "gpa2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c4_bus: i2c4-bus {
+               samsung,pins = "gpa2-0", "gpa2-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c5_bus: i2c5-bus {
+               samsung,pins = "gpa2-2", "gpa2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi1_bus: spi1-bus {
+               samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s1_bus: i2s1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm1_bus: pcm1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       ac97_bus: ac97-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm2_bus: pcm2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spdif_bus: spdif-bus {
+               samsung,pins = "gpb1-0", "gpb1-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi2_bus: spi2-bus {
+               samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c6_bus: i2c6-bus {
+               samsung,pins = "gpb1-3", "gpb1-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm0_out: pwm0-out {
+               samsung,pins = "gpb2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm1_out: pwm1-out {
+               samsung,pins = "gpb2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm2_out: pwm2-out {
+               samsung,pins = "gpb2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm3_out: pwm3-out {
+               samsung,pins = "gpb2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c7_bus: i2c7-bus {
+               samsung,pins = "gpb2-2", "gpb2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_bus: i2c0-bus {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_bus: i2c1-bus {
+               samsung,pins = "gpb3-2", "gpb3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_hs_bus: i2c0-hs-bus {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_hs_bus: i2c1-hs-bus {
+               samsung,pins = "gpb3-2", "gpb3-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       sd0_clk: sd0-clk {
+               samsung,pins = "gpc0-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cmd: sd0-cmd {
+               samsung,pins = "gpc0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cd: sd0-cd {
+               samsung,pins = "gpc0-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus1: sd0-bus-width1 {
+               samsung,pins = "gpc0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus4: sd0-bus-width4 {
+               samsung,pins = "gpc0-3", "gpc0-4", "gpc0-5", "gpc0-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus8: sd0-bus-width8 {
+               samsung,pins = "gpc1-0", "gpc1-1", "gpc1-2", "gpc1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_clk: sd1-clk {
+               samsung,pins = "gpc2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cmd: sd1-cmd {
+               samsung,pins = "gpc2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cd: sd1-cd {
+               samsung,pins = "gpc2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus1: sd1-bus-width1 {
+               samsung,pins = "gpc2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus4: sd1-bus-width4 {
+               samsung,pins = "gpc2-3", "gpc2-4", "gpc2-5", "gpc2-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_clk: sd2-clk {
+               samsung,pins = "gpc3-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cmd: sd2-cmd {
+               samsung,pins = "gpc3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cd: sd2-cd {
+               samsung,pins = "gpc3-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus1: sd2-bus-width1 {
+               samsung,pins = "gpc3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus4: sd2-bus-width4 {
+               samsung,pins = "gpc3-3", "gpc3-4", "gpc3-5", "gpc3-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus8: sd2-bus-width8 {
+               samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_clk: sd3-clk {
+               samsung,pins = "gpc4-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_cmd: sd3-cmd {
+               samsung,pins = "gpc4-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_cd: sd3-cd {
+               samsung,pins = "gpc4-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_bus1: sd3-bus-width1 {
+               samsung,pins = "gpc4-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd3_bus4: sd3-bus-width4 {
+               samsung,pins = "gpc4-3", "gpc4-4", "gpc4-5", "gpc4-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       uart1_data: uart1-data {
+               samsung,pins = "gpd0-0", "gpd0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_fctl: uart1-fctl {
+               samsung,pins = "gpd0-2", "gpd0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       dp_hpd: dp_hpd {
+               samsung,pins = "gpx0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_1 {
+       gpe0: gpe0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe1: gpe1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf0: gpf0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph0: gph0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph1: gph1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       cam_gpio_a: cam-gpio-a {
+               samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
+                              "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
+                              "gpe1-0", "gpe1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_gpio_b: cam-gpio-b {
+               samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
+                              "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c2_bus: cam-i2c2-bus {
+               samsung,pins = "gpe0-6", "gpe1-0";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi1_bus: cam-spi1-bus {
+               samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c1_bus: cam-i2c1-bus {
+               samsung,pins = "gpf0-2", "gpf0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c0_bus: cam-i2c0-bus {
+               samsung,pins = "gpf0-0", "gpf0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi0_bus: cam-spi0-bus {
+               samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_bayrgb_bus: cam-bayrgb-bus {
+               samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
+                              "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
+                              "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
+                              "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
+                              "gpg2-0", "gpg2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_port_a: cam-port-a {
+               samsung,pins = "gph0-0", "gph0-1", "gph0-2", "gph0-3",
+                              "gph1-0", "gph1-1", "gph1-2", "gph1-3",
+                              "gph1-4", "gph1-5", "gph1-6", "gph1-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_2 {
+       gpv0: gpv0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv1: gpv1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv2: gpv2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv3: gpv3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpv4: gpv4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       c2c_rxd: c2c-rxd {
+               samsung,pins = "gpv0-0", "gpv0-1", "gpv0-2", "gpv0-3",
+                              "gpv0-4", "gpv0-5", "gpv0-6", "gpv0-7",
+                              "gpv1-0", "gpv1-1", "gpv1-2", "gpv1-3",
+                              "gpv1-4", "gpv1-5", "gpv1-6", "gpv1-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       c2c_txd: c2c-txd {
+               samsung,pins = "gpv2-0", "gpv2-1", "gpv2-2", "gpv2-3",
+                              "gpv2-4", "gpv2-5", "gpv2-6", "gpv2-7",
+                              "gpv3-0", "gpv3-1", "gpv3-2", "gpv3-3",
+                              "gpv3-4", "gpv3-5", "gpv3-6", "gpv3-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_3 {
+       gpz: gpz {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2s0_bus: i2s0-bus {
+               samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
+                               "gpz-4", "gpz-5", "gpz-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
        };
 };
index bf9bee6..4a1f883 100644 (file)
@@ -19,7 +19,6 @@
 
 #include <dt-bindings/clock/exynos5250.h>
 #include "exynos5.dtsi"
-#include "exynos5250-pinctrl.dtsi"
 #include "exynos4-cpu-thermal.dtsi"
 #include <dt-bindings/clock/exynos-audss-clk.h>
 
        clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
        clock-names = "uart", "clk_uart_baud0";
 };
+
+#include "exynos5250-pinctrl.dtsi"
index be3e025..cebeaab 100644 (file)
 };
 
 &uart0 {
-               status = "okay";
+       status = "okay";
 };
 
 &uart1 {
-               status = "okay";
+       status = "okay";
 };
 
 &uart2 {
-               status = "okay";
+       status = "okay";
 };
index 8b15316..130563b 100644 (file)
  * published by the Free Software Foundation.
 */
 
-/ {
-       pinctrl@13400000 {
-               gpy7: gpy7 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx0: gpx0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
-                                    <26 0>, <26 1>, <27 0>, <27 1>;
-               };
-
-               gpx1: gpx1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       interrupt-parent = <&combiner>;
-                       #interrupt-cells = <2>;
-                       interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
-                                    <30 0>, <30 1>, <31 0>, <31 1>;
-               };
-
-               gpx2: gpx2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpx3: gpx3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               dp_hpd: dp_hpd {
-                       samsung,pins = "gpx0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@13410000 {
-               gpc0: gpc0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc1: gpc1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc2: gpc2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc3: gpc3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpc4: gpc4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpd1: gpd1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpy0: gpy0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy1: gpy1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy2: gpy2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy3: gpy3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy4: gpy4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy5: gpy5 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               gpy6: gpy6 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-               };
-
-               sd0_clk: sd0-clk {
-                       samsung,pins = "gpc0-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cmd: sd0-cmd {
-                       samsung,pins = "gpc0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_cd: sd0-cd {
-                       samsung,pins = "gpc0-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus1: sd0-bus-width1 {
-                       samsung,pins = "gpc0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus4: sd0-bus-width4 {
-                       samsung,pins = "gpc0-4", "gpc0-5", "gpc0-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_bus8: sd0-bus-width8 {
-                       samsung,pins = "gpc3-0", "gpc3-1", "gpc3-2", "gpc3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_clk: sd1-clk {
-                       samsung,pins = "gpc1-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd0_rclk: sd0-rclk {
-                       samsung,pins = "gpc0-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <1>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cmd: sd1-cmd {
-                       samsung,pins = "gpc1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_cd: sd1-cd {
-                       samsung,pins = "gpc1-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_int: sd1-int {
-                       samsung,pins = "gpd1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               sd1_bus1: sd1-bus-width1 {
-                       samsung,pins = "gpc1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus4: sd1-bus-width4 {
-                       samsung,pins = "gpc1-4", "gpc1-5", "gpc1-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd1_bus8: sd1-bus-width8 {
-                       samsung,pins = "gpd1-4", "gpd1-5", "gpd1-6", "gpd1-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_clk: sd2-clk {
-                       samsung,pins = "gpc2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cmd: sd2-cmd {
-                       samsung,pins = "gpc2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_cd: sd2-cd {
-                       samsung,pins = "gpc2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus1: sd2-bus-width1 {
-                       samsung,pins = "gpc2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-
-               sd2_bus4: sd2-bus-width4 {
-                       samsung,pins = "gpc2-4", "gpc2-5", "gpc2-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <3>;
-               };
-       };
-
-       pinctrl@14000000 {
-               gpe0: gpe0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpe1: gpe1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf0: gpf0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpf1: gpf1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg0: gpg0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg1: gpg1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpg2: gpg2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpj4: gpj4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               cam_gpio_a: cam-gpio-a {
-                       samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
-                                      "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
-                                      "gpe1-0", "gpe1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_gpio_b: cam-gpio-b {
-                       samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
-                                      "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c2_bus: cam-i2c2-bus {
-                       samsung,pins = "gpf0-4", "gpf0-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-               cam_spi1_bus: cam-spi1-bus {
-                       samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c1_bus: cam-i2c1-bus {
-                       samsung,pins = "gpf0-2", "gpf0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_i2c0_bus: cam-i2c0-bus {
-                       samsung,pins = "gpf0-0", "gpf0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_spi0_bus: cam-spi0-bus {
-                       samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               cam_bayrgb_bus: cam-bayrgb-bus {
-                       samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
-                                      "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
-                                      "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
-                                      "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
-                                      "gpg2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@14010000 {
-               gpa0: gpa0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa1: gpa1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpa2: gpa2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb0: gpb0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb1: gpb1 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb2: gpb2 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb3: gpb3 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gpb4: gpb4 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               gph0: gph0 {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               uart0_data: uart0-data {
-                       samsung,pins = "gpa0-0", "gpa0-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart0_fctl: uart0-fctl {
-                       samsung,pins = "gpa0-2", "gpa0-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart1_data: uart1-data {
-                       samsung,pins = "gpa0-4", "gpa0-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart1_fctl: uart1-fctl {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c2_bus: i2c2-bus {
-                       samsung,pins = "gpa0-6", "gpa0-7";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_data: uart2-data {
-                       samsung,pins = "gpa1-0", "gpa1-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart2_fctl: uart2-fctl {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c3_bus: i2c3-bus {
-                       samsung,pins = "gpa1-2", "gpa1-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               uart3_data: uart3-data {
-                       samsung,pins = "gpa1-4", "gpa1-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi0_bus: spi0-bus {
-                       samsung,pins = "gpa2-0", "gpa2-1", "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi1_bus: spi1-bus {
-                       samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c4_hs_bus: i2c4-hs-bus {
-                       samsung,pins = "gpa2-0", "gpa2-1";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c5_hs_bus: i2c5-hs-bus {
-                       samsung,pins = "gpa2-2", "gpa2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s1_bus: i2s1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm1_bus: pcm1-bus {
-                       samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
-                                       "gpb0-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2s2_bus: i2s2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pcm2_bus: pcm2-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
-                                       "gpb1-4";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spdif_bus: spdif-bus {
-                       samsung,pins = "gpb1-0", "gpb1-1";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               spi2_bus: spi2-bus {
-                       samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <5>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c6_hs_bus: i2c6-hs-bus {
-                       samsung,pins = "gpb1-3", "gpb1-4";
-                       samsung,pin-function = <4>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm0_out: pwm0-out {
-                       samsung,pins = "gpb2-0";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm1_out: pwm1-out {
-                       samsung,pins = "gpb2-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm2_out: pwm2-out {
-                       samsung,pins = "gpb2-2";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               pwm3_out: pwm3-out {
-                       samsung,pins = "gpb2-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c7_hs_bus: i2c7-hs-bus {
-                       samsung,pins = "gpb2-2", "gpb2-3";
-                       samsung,pin-function = <3>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c0_bus: i2c0-bus {
-                       samsung,pins = "gpb3-0", "gpb3-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c1_bus: i2c1-bus {
-                       samsung,pins = "gpb3-2", "gpb3-3";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c8_hs_bus: i2c8-hs-bus {
-                       samsung,pins = "gpb3-4", "gpb3-5";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c9_hs_bus: i2c9-hs-bus {
-                       samsung,pins = "gpb3-6", "gpb3-7";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-
-               i2c10_hs_bus: i2c10-hs-bus {
-                       samsung,pins = "gpb4-0", "gpb4-1";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <3>;
-                       samsung,pin-drv = <0>;
-               };
-       };
-
-       pinctrl@03860000 {
-               gpz: gpz {
-                       gpio-controller;
-                       #gpio-cells = <2>;
-
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-               };
-
-               i2s0_bus: i2s0-bus {
-                       samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
-                                       "gpz-4", "gpz-5", "gpz-6";
-                       samsung,pin-function = <2>;
-                       samsung,pin-pud = <0>;
-                       samsung,pin-drv = <0>;
-               };
+&pinctrl_0 {
+       gpy7: gpy7 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx0: gpx0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <23 0>, <24 0>, <25 0>, <25 1>,
+                            <26 0>, <26 1>, <27 0>, <27 1>;
+       };
+
+       gpx1: gpx1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               interrupt-parent = <&combiner>;
+               #interrupt-cells = <2>;
+               interrupts = <28 0>, <28 1>, <29 0>, <29 1>,
+                            <30 0>, <30 1>, <31 0>, <31 1>;
+       };
+
+       gpx2: gpx2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpx3: gpx3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       dp_hpd: dp_hpd {
+               samsung,pins = "gpx0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_1 {
+       gpc0: gpc0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc2: gpc2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc3: gpc3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc4: gpc4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd1: gpd1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpy0: gpy0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy1: gpy1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy2: gpy2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy3: gpy3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy4: gpy4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy5: gpy5 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpy6: gpy6 {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       sd0_clk: sd0-clk {
+               samsung,pins = "gpc0-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cmd: sd0-cmd {
+               samsung,pins = "gpc0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_cd: sd0-cd {
+               samsung,pins = "gpc0-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus1: sd0-bus-width1 {
+               samsung,pins = "gpc0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus4: sd0-bus-width4 {
+               samsung,pins = "gpc0-4", "gpc0-5", "gpc0-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_bus8: sd0-bus-width8 {
+               samsung,pins = "gpc3-0", "gpc3-1", "gpc3-2", "gpc3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_clk: sd1-clk {
+               samsung,pins = "gpc1-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd0_rclk: sd0-rclk {
+               samsung,pins = "gpc0-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <1>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cmd: sd1-cmd {
+               samsung,pins = "gpc1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_cd: sd1-cd {
+               samsung,pins = "gpc1-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_int: sd1-int {
+               samsung,pins = "gpd1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       sd1_bus1: sd1-bus-width1 {
+               samsung,pins = "gpc1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus4: sd1-bus-width4 {
+               samsung,pins = "gpc1-4", "gpc1-5", "gpc1-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd1_bus8: sd1-bus-width8 {
+               samsung,pins = "gpd1-4", "gpd1-5", "gpd1-6", "gpd1-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_clk: sd2-clk {
+               samsung,pins = "gpc2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cmd: sd2-cmd {
+               samsung,pins = "gpc2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_cd: sd2-cd {
+               samsung,pins = "gpc2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus1: sd2-bus-width1 {
+               samsung,pins = "gpc2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+
+       sd2_bus4: sd2-bus-width4 {
+               samsung,pins = "gpc2-4", "gpc2-5", "gpc2-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <3>;
+       };
+};
+
+&pinctrl_2 {
+       gpe0: gpe0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe1: gpe1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf0: gpf0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg0: gpg0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg1: gpg1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg2: gpg2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpj4: gpj4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       cam_gpio_a: cam-gpio-a {
+               samsung,pins = "gpe0-0", "gpe0-1", "gpe0-2", "gpe0-3",
+                              "gpe0-4", "gpe0-5", "gpe0-6", "gpe0-7",
+                              "gpe1-0", "gpe1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_gpio_b: cam-gpio-b {
+               samsung,pins = "gpf0-0", "gpf0-1", "gpf0-2", "gpf0-3",
+                              "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c2_bus: cam-i2c2-bus {
+               samsung,pins = "gpf0-4", "gpf0-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi1_bus: cam-spi1-bus {
+               samsung,pins = "gpe0-4", "gpe0-5", "gpf0-2", "gpf0-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c1_bus: cam-i2c1-bus {
+               samsung,pins = "gpf0-2", "gpf0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_i2c0_bus: cam-i2c0-bus {
+               samsung,pins = "gpf0-0", "gpf0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_spi0_bus: cam-spi0-bus {
+               samsung,pins = "gpf1-0", "gpf1-1", "gpf1-2", "gpf1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       cam_bayrgb_bus: cam-bayrgb-bus {
+               samsung,pins = "gpg0-0", "gpg0-1", "gpg0-2", "gpg0-3",
+                              "gpg0-4", "gpg0-5", "gpg0-6", "gpg0-7",
+                              "gpg1-0", "gpg1-1", "gpg1-2", "gpg1-3",
+                              "gpg1-4", "gpg1-5", "gpg1-6", "gpg1-7",
+                              "gpg2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_3 {
+       gpa0: gpa0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa1: gpa1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa2: gpa2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb0: gpb0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb1: gpb1 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb2: gpb2 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb3: gpb3 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb4: gpb4 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph0: gph0 {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       uart0_data: uart0-data {
+               samsung,pins = "gpa0-0", "gpa0-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart0_fctl: uart0-fctl {
+               samsung,pins = "gpa0-2", "gpa0-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_data: uart1-data {
+               samsung,pins = "gpa0-4", "gpa0-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart1_fctl: uart1-fctl {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c2_bus: i2c2-bus {
+               samsung,pins = "gpa0-6", "gpa0-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_data: uart2-data {
+               samsung,pins = "gpa1-0", "gpa1-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart2_fctl: uart2-fctl {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c3_bus: i2c3-bus {
+               samsung,pins = "gpa1-2", "gpa1-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       uart3_data: uart3-data {
+               samsung,pins = "gpa1-4", "gpa1-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi0_bus: spi0-bus {
+               samsung,pins = "gpa2-0", "gpa2-1", "gpa2-2", "gpa2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi1_bus: spi1-bus {
+               samsung,pins = "gpa2-4", "gpa2-6", "gpa2-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c4_hs_bus: i2c4-hs-bus {
+               samsung,pins = "gpa2-0", "gpa2-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c5_hs_bus: i2c5-hs-bus {
+               samsung,pins = "gpa2-2", "gpa2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s1_bus: i2s1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm1_bus: pcm1-bus {
+               samsung,pins = "gpb0-0", "gpb0-1", "gpb0-2", "gpb0-3",
+                              "gpb0-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pcm2_bus: pcm2-bus {
+               samsung,pins = "gpb1-0", "gpb1-1", "gpb1-2", "gpb1-3",
+                              "gpb1-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spdif_bus: spdif-bus {
+               samsung,pins = "gpb1-0", "gpb1-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       spi2_bus: spi2-bus {
+               samsung,pins = "gpb1-1", "gpb1-3", "gpb1-4";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c6_hs_bus: i2c6-hs-bus {
+               samsung,pins = "gpb1-3", "gpb1-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm0_out: pwm0-out {
+               samsung,pins = "gpb2-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm1_out: pwm1-out {
+               samsung,pins = "gpb2-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm2_out: pwm2-out {
+               samsung,pins = "gpb2-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       pwm3_out: pwm3-out {
+               samsung,pins = "gpb2-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c7_hs_bus: i2c7-hs-bus {
+               samsung,pins = "gpb2-2", "gpb2-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c0_bus: i2c0-bus {
+               samsung,pins = "gpb3-0", "gpb3-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c1_bus: i2c1-bus {
+               samsung,pins = "gpb3-2", "gpb3-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c8_hs_bus: i2c8-hs-bus {
+               samsung,pins = "gpb3-4", "gpb3-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c9_hs_bus: i2c9-hs-bus {
+               samsung,pins = "gpb3-6", "gpb3-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+
+       i2c10_hs_bus: i2c10-hs-bus {
+               samsung,pins = "gpb4-0", "gpb4-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <3>;
+               samsung,pin-drv = <0>;
+       };
+};
+
+&pinctrl_4 {
+       gpz: gpz {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2s0_bus: i2s0-bus {
+               samsung,pins = "gpz-0", "gpz-1", "gpz-2", "gpz-3",
+                               "gpz-4", "gpz-5", "gpz-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <0>;
+               samsung,pin-drv = <0>;
        };
 };
index 534f27c..df9aee9 100644 (file)
@@ -15,7 +15,6 @@
 
 #include <dt-bindings/clock/exynos5420.h>
 #include "exynos5.dtsi"
-#include "exynos5420-pinctrl.dtsi"
 
 #include <dt-bindings/clock/exynos-audss-clk.h>
 
        clocks = <&clock CLK_UART3>, <&clock CLK_SCLK_UART3>;
        clock-names = "uart", "clk_uart_baud0";
 };
+
+#include "exynos5420-pinctrl.dtsi"
diff --git a/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi b/arch/arm/boot/dts/exynos5422-cpu-thermal.dtsi
new file mode 100644 (file)
index 0000000..2b289d7
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Device tree sources for Exynos5422 thermal zone
+ *
+ * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com>
+ *                     Anand Moon <linux.amoon@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       thermal-zones {
+               cpu0_thermal: cpu0-thermal {
+                       thermal-sensors = <&tmu_cpu0 0>;
+                       polling-delay-passive = <0>;
+                       polling-delay = <0>;
+                       trips {
+                               cpu_alert0: cpu-alert-0 {
+                                       temperature = <50000>; /* millicelsius */
+                                       hysteresis = <5000>; /* millicelsius */
+                                       type = "active";
+                               };
+                               cpu_alert1: cpu-alert-1 {
+                                       temperature = <60000>; /* millicelsius */
+                                       hysteresis = <5000>; /* millicelsius */
+                                       type = "active";
+                               };
+                               cpu_alert2: cpu-alert-2 {
+                                       temperature = <70000>; /* millicelsius */
+                                       hysteresis = <5000>; /* millicelsius */
+                                       type = "active";
+                               };
+                               cpu_crit0: cpu-crit-0 {
+                                       temperature = <120000>; /* millicelsius */
+                                       hysteresis = <0>; /* millicelsius */
+                                       type = "critical";
+                               };
+                       };
+                       cooling-maps {
+                               map0 {
+                                    trip = <&cpu_alert0>;
+                                    cooling-device = <&fan0 0 1>;
+                               };
+                               map1 {
+                                    trip = <&cpu_alert1>;
+                                    cooling-device = <&fan0 1 2>;
+                               };
+                               map2 {
+                                    trip = <&cpu_alert2>;
+                                    cooling-device = <&fan0 2 3>;
+                               };
+                       };
+               };
+       };
+};
index 8adf455..1565667 100644 (file)
@@ -15,6 +15,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/sound/samsung-i2s.h>
 #include "exynos5800.dtsi"
+#include "exynos5422-cpu-thermal.dtsi"
 
 / {
        memory {
                        clocks = <&i2s0 CLK_I2S_CDCLK>;
                };
        };
+
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm 0 20972 0>;
+               cooling-min-state = <0>;
+               cooling-max-state = <3>;
+               #cooling-cells = <2>;
+               cooling-levels = <0 130 170 230>;
+       };
 };
 
 &clock_audss {
         */
        pinctrl-0 = <&pwm0_out &pwm1_out &pwm2_out &pwm3_out>;
        pinctrl-names = "default";
+       samsung,pwm-outputs = <0>;
+       status = "okay";
+};
+
+&tmu_cpu0 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_cpu1 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_cpu2 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_cpu3 {
+       vtmu-supply = <&ldo7_reg>;
+       status = "okay";
+};
+
+&tmu_gpu {
+       vtmu-supply = <&ldo7_reg>;
        status = "okay";
 };
 
 &usbdrd_dwc3_1 {
        dr_mode = "otg";
 };
+
+&usbdrd3_0 {
+       vdd33-supply = <&ldo9_reg>;
+       vdd10-supply = <&ldo11_reg>;
+};
+
+&usbdrd3_1 {
+       vdd33-supply = <&ldo9_reg>;
+       vdd10-supply = <&ldo11_reg>;
+};
index b69be5c..feb9d34 100644 (file)
                                clock-names = "ipg", "per";
                        };
 
+                       rtc: rtc@10007000 {
+                               compatible = "fsl,imx21-rtc";
+                               reg = <0x10007000 0x1000>;
+                               interrupts = <22>;
+                               clocks = <&clks IMX27_CLK_CKIL>,
+                                        <&clks IMX27_CLK_RTC_IPG_GATE>;
+                               clock-names = "ref", "ipg";
+                       };
+
                        kpp: kpp@10008000 {
                                compatible = "fsl,imx27-kpp", "fsl,imx21-kpp";
                                reg = <0x10008000 0x1000>;
index b0d5542..53fd75c 100644 (file)
                        >;
                };
 
+               /* open drain */
                pinctrl_i2c1: i2c1grp {
                        fsl,pins = <
-                               MX53_PAD_CSI0_DAT8__I2C1_SDA            0xc0000000
-                               MX53_PAD_CSI0_DAT9__I2C1_SCL            0xc0000000
+                               MX53_PAD_CSI0_DAT8__I2C1_SDA            0x400001ec
+                               MX53_PAD_CSI0_DAT9__I2C1_SCL            0x400001ec
                        >;
                };
 
index 82d623d..66e47de 100644 (file)
 };
 
 &iomuxc {
-       i2c1 {
-               /* open drain */
-               pinctrl_i2c1_qsrb: i2c1grp-1 {
-                       fsl,pins = <
-                               MX53_PAD_CSI0_DAT8__I2C1_SDA      0x400001ec
-                               MX53_PAD_CSI0_DAT9__I2C1_SCL      0x400001ec
-                       >;
-               };
-
+       imx53-qsrb {
                pinctrl_pmic: pmicgrp {
                        fsl,pins = <
                                MX53_PAD_CSI0_DAT5__GPIO5_23    0x1e4 /* IRQ */
 };
 
 &i2c1 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c1_qsrb>;
-       status = "okay";
-
        pmic: mc34708@8 {
                compatible = "fsl,mc34708";
                pinctrl-names = "default";
index f2867c4..7b31fdb 100644 (file)
                                MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0xb0b1
                                MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0xb000
                                MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0xb0b1
-                               MX6QDL_PAD_NANDF_CS1__NAND_CE1_B        0xb0b1
                                MX6QDL_PAD_SD4_CMD__NAND_RE_B           0xb0b1
                                MX6QDL_PAD_SD4_CLK__NAND_WE_B           0xb0b1
                                MX6QDL_PAD_NANDF_D0__NAND_DATA00        0xb0b1
index 4493f6e..1b66328 100644 (file)
 };
 
 &usdhc3 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
        cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_3p3v>;
+       no-1-8-v; /* firmware will remove if board revision supports */
        status = "okay";
 };
 
                                MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0xb0b1
                                MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0xb000
                                MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0xb0b1
-                               MX6QDL_PAD_NANDF_CS1__NAND_CE1_B        0xb0b1
                                MX6QDL_PAD_SD4_CMD__NAND_RE_B           0xb0b1
                                MX6QDL_PAD_SD4_CLK__NAND_WE_B           0xb0b1
                                MX6QDL_PAD_NANDF_D0__NAND_DATA00        0xb0b1
                                MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x17059
                                MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x17059
                                MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x17059
-                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x1b0b0 /* CD */
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x17059 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x17059
+                       >;
+               };
+
+               pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD             0x170b9
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK             0x170b9
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x170b9
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x170b9
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x170b9
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x170b9
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x170b9 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x170b9
+                       >;
+               };
+
+               pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD             0x170f9
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK             0x100f9
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x170f9
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x170f9
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x170f9
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x170f9
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x170f9 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x170f9
                        >;
                };
        };
index a857d12..7c51839 100644 (file)
 };
 
 &usdhc3 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
        cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_3p3v>;
+       no-1-8-v; /* firmware will remove if board revision supports */
        status = "okay";
 };
 
                                MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0xb0b1
                                MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0xb000
                                MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0xb0b1
-                               MX6QDL_PAD_NANDF_CS1__NAND_CE1_B        0xb0b1
                                MX6QDL_PAD_SD4_CMD__NAND_RE_B           0xb0b1
                                MX6QDL_PAD_SD4_CLK__NAND_WE_B           0xb0b1
                                MX6QDL_PAD_NANDF_D0__NAND_DATA00        0xb0b1
                                MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x17059
                                MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x17059
                                MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x17059
-                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x1b0b0 /* CD */
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x17059 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x17059
+                       >;
+               };
+
+               pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD             0x170b9
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK             0x100b9
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x170b9
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x170b9
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x170b9
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x170b9
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x170b9 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x170b9
+                       >;
+               };
+
+               pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD             0x170f9
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK             0x100f9
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x170f9
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x170f9
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x170f9
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x170f9
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x170f9 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x170f9
                        >;
                };
        };
index 1afe338..929e0b3 100644 (file)
 };
 
 &usdhc3 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
        cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&reg_3p3v>;
+       no-1-8-v; /* firmware will remove if board revision supports */
        status = "okay";
 };
 
                                MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0xb0b1
                                MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0xb000
                                MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0xb0b1
-                               MX6QDL_PAD_NANDF_CS1__NAND_CE1_B        0xb0b1
                                MX6QDL_PAD_SD4_CMD__NAND_RE_B           0xb0b1
                                MX6QDL_PAD_SD4_CLK__NAND_WE_B           0xb0b1
                                MX6QDL_PAD_NANDF_D0__NAND_DATA00        0xb0b1
                                MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x17059
                                MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x17059
                                MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x17059
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x17059 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x17059
+                       >;
+               };
+
+               pinctrl_usdhc3_100mhz: usdhc3grp100mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD             0x170b9
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK             0x100b9
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x170b9
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x170b9
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x170b9
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x170b9
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x170b9 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x170b9
+                       >;
+               };
+
+               pinctrl_usdhc3_200mhz: usdhc3grp200mhz {
+                       fsl,pins = <
+                               MX6QDL_PAD_SD3_CMD__SD3_CMD             0x170f9
+                               MX6QDL_PAD_SD3_CLK__SD3_CLK             0x100f9
+                               MX6QDL_PAD_SD3_DAT0__SD3_DATA0          0x170f9
+                               MX6QDL_PAD_SD3_DAT1__SD3_DATA1          0x170f9
+                               MX6QDL_PAD_SD3_DAT2__SD3_DATA2          0x170f9
+                               MX6QDL_PAD_SD3_DAT3__SD3_DATA3          0x170f9
+                               MX6QDL_PAD_SD3_DAT5__GPIO7_IO00         0x170f9 /* CD */
+                               MX6QDL_PAD_NANDF_CS1__SD3_VSELECT       0x170f9
                        >;
                };
        };
index d1866a0..741f3d5 100644 (file)
                                MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0xb0b1
                                MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0xb000
                                MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0xb0b1
-                               MX6QDL_PAD_NANDF_CS1__NAND_CE1_B        0xb0b1
                                MX6QDL_PAD_SD4_CMD__NAND_RE_B           0xb0b1
                                MX6QDL_PAD_SD4_CLK__NAND_WE_B           0xb0b1
                                MX6QDL_PAD_NANDF_D0__NAND_DATA00        0xb0b1
index 5c6587f..d1e5048 100644 (file)
                                MX6QDL_PAD_NANDF_WP_B__NAND_WP_B        0xb0b1
                                MX6QDL_PAD_NANDF_RB0__NAND_READY_B      0xb000
                                MX6QDL_PAD_NANDF_CS0__NAND_CE0_B        0xb0b1
-                               MX6QDL_PAD_NANDF_CS1__NAND_CE1_B        0xb0b1
                                MX6QDL_PAD_SD4_CMD__NAND_RE_B           0xb0b1
                                MX6QDL_PAD_SD4_CLK__NAND_WE_B           0xb0b1
                                MX6QDL_PAD_NANDF_D0__NAND_DATA00        0xb0b1
index d7fe667..340bc8e 100644 (file)
                        gpio = <&gpio3 22 0>;
                        enable-active-high;
                };
+
+               reg_can_xcvr: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "CAN XCVR";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_can_xcvr>;
+                       gpio = <&gpio1 2 GPIO_ACTIVE_LOW>;
+               };
        };
 
        gpio-keys {
        status = "okay";
 };
 
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1>;
+       xceiver-supply = <&reg_can_xcvr>;
+       status = "okay";
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
+};
+
 &ecspi1 {
        fsl,spi-num-chipselects = <1>;
        cs-gpios = <&gpio3 19 0>;
                        >;
                };
 
+               pinctrl_can1: can1grp {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX        0x1b0b0
+                               MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX        0x1b0b0
+                       >;
+               };
+
+               pinctrl_can_xcvr: can-xcvrgrp {
+                       fsl,pins = <
+                               /* Flexcan XCVR enable */
+                               MX6QDL_PAD_GPIO_2__GPIO1_IO02           0x1b0b0
+                       >;
+               };
+
                pinctrl_ecspi1: ecspi1grp {
                        fsl,pins = <
                                MX6QDL_PAD_EIM_D17__ECSPI1_MISO         0x100b1
index e329ca5..c37bb9f 100644 (file)
                };
        };
 
+       clocks {
+               codec_osc: anaclk2 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <24576000>;
+               };
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reg_audio: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "cs42888_supply";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+
+               reg_usb_h1_vbus: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "usb_h1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&max7310_b 7 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+               };
+
+               reg_usb_otg_vbus: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "usb_otg_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&max7310_c 1 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+               };
+       };
+
+       sound-cs42888 {
+               compatible = "fsl,imx6-sabreauto-cs42888",
+                       "fsl,imx-audio-cs42888";
+               model = "imx-cs42888";
+               audio-cpu = <&esai>;
+               audio-asrc = <&asrc>;
+               audio-codec = <&codec>;
+               audio-routing =
+                       "Line Out Jack", "AOUT1L",
+                       "Line Out Jack", "AOUT1R",
+                       "Line Out Jack", "AOUT2L",
+                       "Line Out Jack", "AOUT2R",
+                       "Line Out Jack", "AOUT3L",
+                       "Line Out Jack", "AOUT3R",
+                       "Line Out Jack", "AOUT4L",
+                       "Line Out Jack", "AOUT4R",
+                       "AIN1L", "Line In Jack",
+                       "AIN1R", "Line In Jack",
+                       "AIN2L", "Line In Jack",
+                       "AIN2R", "Line In Jack";
+       };
+
        sound-spdif {
                compatible = "fsl,imx-audio-spdif",
                           "fsl,imx-sabreauto-spdif";
        };
 };
 
+&clks {
+       assigned-clocks = <&clks IMX6QDL_PLL4_BYPASS_SRC>,
+                         <&clks IMX6QDL_PLL4_BYPASS>,
+                         <&clks IMX6QDL_CLK_PLL4_POST_DIV>,
+                         <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_LVDS2_IN>,
+                                <&clks IMX6QDL_PLL4_BYPASS_SRC>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
+       assigned-clock-rates = <0>, <0>, <24576000>;
+};
+
 &ecspi1 {
        fsl,spi-num-chipselects = <1>;
        cs-gpios = <&gpio3 19 0>;
        };
 };
 
+&esai {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_esai>;
+       assigned-clocks = <&clks IMX6QDL_CLK_ESAI_SEL>,
+                         <&clks IMX6QDL_CLK_ESAI_EXTAL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL4_AUDIO_DIV>;
+       assigned-clock-rates = <0>, <24576000>;
+       status = "okay";
+};
+
 &fec {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet>;
        status = "okay";
 };
 
+&hdmi {
+       status = "okay";
+};
+
 &i2c2 {
        clock-frequency = <100000>;
        pinctrl-names = "default";
                        };
                };
        };
+
+       codec: cs42888@48 {
+               compatible = "cirrus,cs42888";
+               reg = <0x48>;
+               clocks = <&codec_osc>;
+               clock-names = "mclk";
+               VA-supply = <&reg_audio>;
+               VD-supply = <&reg_audio>;
+               VLS-supply = <&reg_audio>;
+               VLC-supply = <&reg_audio>;
+        };
+
 };
 
 &i2c3 {
                        >;
                };
 
+               pinctrl_esai: esaigrp {
+                       fsl,pins = <
+                               MX6QDL_PAD_ENET_CRS_DV__ESAI_TX_CLK 0x1b030
+                               MX6QDL_PAD_ENET_RXD1__ESAI_TX_FS    0x1b030
+                               MX6QDL_PAD_ENET_TX_EN__ESAI_TX3_RX2 0x1b030
+                               MX6QDL_PAD_GPIO_5__ESAI_TX2_RX3     0x1b030
+                               MX6QDL_PAD_ENET_TXD0__ESAI_TX4_RX1  0x1b030
+                               MX6QDL_PAD_ENET_MDC__ESAI_TX5_RX0   0x1b030
+                               MX6QDL_PAD_GPIO_17__ESAI_TX0        0x1b030
+                               MX6QDL_PAD_NANDF_CS3__ESAI_TX1      0x1b030
+                               MX6QDL_PAD_ENET_MDIO__ESAI_RX_CLK   0x1b030
+                               MX6QDL_PAD_GPIO_9__ESAI_RX_FS       0x1b030
+                       >;
+               };
+
                pinctrl_gpio_leds: gpioledsgrp {
                        fsl,pins = <
                                MX6QDL_PAD_DISP0_DAT21__GPIO5_IO15      0x80000000
                        >;
                };
 
+               pinctrl_usbotg: usbotggrp {
+                       fsl,pins = <
+                               MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
+                       >;
+               };
+
                pinctrl_usdhc3: usdhc3grp {
                        fsl,pins = <
                                MX6QDL_PAD_SD3_CMD__SD3_CMD             0x17059
        status = "okay";
 };
 
+&usbh1 {
+       vbus-supply = <&reg_usb_h1_vbus>;
+       status = "okay";
+};
+
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg>;
+       status = "okay";
+};
+
 &usdhc3 {
        pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3>;
index 7823793..ce4c731 100644 (file)
                        gpio = <&gpio3 22 0>;
                        enable-active-high;
                };
+
+               reg_can_xcvr: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "CAN XCVR";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_can_xcvr>;
+                       gpio = <&gpio1 2 GPIO_ACTIVE_LOW>;
+               };
        };
 
        gpio-keys {
        status = "okay";
 };
 
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1>;
+       xceiver-supply = <&reg_can_xcvr>;
+       status = "okay";
+};
+
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
+};
+
 &ecspi1 {
        fsl,spi-num-chipselects = <1>;
        cs-gpios = <&gpio3 19 0>;
                        >;
                };
 
+               pinctrl_can1: can1grp {
+                       fsl,pins = <
+                               MX6QDL_PAD_KEY_COL2__FLEXCAN1_TX        0x1b0b0
+                               MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX        0x1b0b0
+                       >;
+               };
+
+               pinctrl_can_xcvr: can-xcvrgrp {
+                       fsl,pins = <
+                               /* Flexcan XCVR enable */
+                               MX6QDL_PAD_GPIO_2__GPIO1_IO02           0x1b0b0
+                       >;
+               };
+
                pinctrl_ecspi1: ecspi1grp {
                        fsl,pins = <
                                MX6QDL_PAD_EIM_D17__ECSPI1_MISO         0x100b1
index 944eb81..2c07d3a 100644 (file)
        status = "okay";
 };
 
+&clks {
+       assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
+                         <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
+       assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
+                                <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
+};
+
 &ecspi1 {
        fsl,spi-num-chipselects = <1>;
        cs-gpios = <&gpio4 9 0>;
index 10d0b26..e716e6f 100644 (file)
                                };
 
                                esai: esai@02024000 {
+                                       #sound-dai-cells = <0>;
+                                       compatible = "fsl,imx35-esai";
                                        reg = <0x02024000 0x4000>;
                                        interrupts = <0 51 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6QDL_CLK_ESAI_IPG>,
+                                                <&clks IMX6QDL_CLK_ESAI_MEM>,
+                                                <&clks IMX6QDL_CLK_ESAI_EXTAL>,
+                                                <&clks IMX6QDL_CLK_ESAI_IPG>,
+                                                <&clks IMX6QDL_CLK_SPBA>;
+                                       clock-names = "core", "mem", "extal", "fsys", "dma";
+                                       dmas = <&sdma 23 21 0>, <&sdma 24 21 0>;
+                                       dma-names = "rx", "tx";
+                                       status = "disabled";
                                };
 
                                ssi1: ssi@02028000 {
                                };
 
                                asrc: asrc@02034000 {
+                                       compatible = "fsl,imx53-asrc";
                                        reg = <0x02034000 0x4000>;
                                        interrupts = <0 50 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6QDL_CLK_ASRC_IPG>,
+                                               <&clks IMX6QDL_CLK_ASRC_MEM>, <&clks 0>,
+                                               <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
+                                               <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
+                                               <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>,
+                                               <&clks IMX6QDL_CLK_ASRC>, <&clks 0>, <&clks 0>,
+                                               <&clks IMX6QDL_CLK_SPBA>;
+                                       clock-names = "mem", "ipg", "asrck_0",
+                                               "asrck_1", "asrck_2", "asrck_3", "asrck_4",
+                                               "asrck_5", "asrck_6", "asrck_7", "asrck_8",
+                                               "asrck_9", "asrck_a", "asrck_b", "asrck_c",
+                                               "asrck_d", "asrck_e", "asrck_f", "dma";
+                                       dmas = <&sdma 17 23 1>, <&sdma 18 23 1>, <&sdma 19 23 1>,
+                                               <&sdma 20 23 1>, <&sdma 21 23 1>, <&sdma 22 23 1>;
+                                       dma-names = "rxa", "rxb", "rxc",
+                                                       "txa", "txb", "txc";
+                                       fsl,asrc-rate  = <48000>;
+                                       fsl,asrc-width = <16>;
+                                       status = "okay";
                                };
 
                                spba@0203c000 {
                                fsl,anatop = <&anatop>;
                        };
 
-                       snvs@020cc000 {
-                               compatible = "fsl,sec-v4.0-mon", "simple-bus";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges = <0 0x020cc000 0x4000>;
+                       snvs: snvs@020cc000 {
+                               compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
+                               reg = <0x020cc000 0x4000>;
 
-                               snvs_rtc: snvs-rtc-lp@34 {
+                               snvs_rtc: snvs-rtc-lp {
                                        compatible = "fsl,sec-v4.0-mon-rtc-lp";
-                                       reg = <0x34 0x58>;
+                                       regmap = <&snvs>;
+                                       offset = <0x34>;
                                        interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
                                                     <0 20 IRQ_TYPE_LEVEL_HIGH>;
                                };
 
-                               snvs_poweroff: snvs-poweroff@38 {
-                                       compatible = "fsl,sec-v4.0-poweroff";
-                                       reg = <0x38 0x4>;
+                               snvs_poweroff: snvs-poweroff {
+                                       compatible = "syscon-poweroff";
+                                       regmap = <&snvs>;
+                                       offset = <0x38>;
+                                       mask = <0x60>;
                                        status = "disabled";
                                };
                        };
index 0da906b..10c6996 100644 (file)
@@ -61,7 +61,9 @@
        usdhc3_pwrseq: usdhc3_pwrseq {
                compatible = "mmc-pwrseq-simple";
                reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>,       /* WL_REG_ON */
+                             <&gpio4 7 GPIO_ACTIVE_LOW>,       /* WL_HOSTWAKE */
                              <&gpio3 25 GPIO_ACTIVE_LOW>,      /* BT_REG_ON */
+                             <&gpio3 27 GPIO_ACTIVE_LOW>,      /* BT_HOSTWAKE */
                              <&gpio4 4 GPIO_ACTIVE_LOW>,       /* BT_WAKE */
                              <&gpio4 6 GPIO_ACTIVE_LOW>;       /* BT_RST_N */
        };
        status = "okay";
 };
 
-&uart2 {
+&uart3 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart2>;
-       fsl,uart-has-rtscts;
+       pinctrl-0 = <&pinctrl_uart3>;
        status = "okay";
 };
 
-&uart3 {
+&uart5 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart3>;
+       pinctrl-0 = <&pinctrl_uart5>;
+       fsl,uart-has-rtscts;
        status = "okay";
 };
 
                        >;
                };
 
-               pinctrl_uart2: uart2grp {
-                       fsl,pins = <
-                               MX6SL_PAD_EPDC_D12__UART2_RX_DATA       0x41b0b1
-                               MX6SL_PAD_EPDC_D13__UART2_TX_DATA       0x41b0b1
-                               MX6SL_PAD_EPDC_D14__UART2_RTS_B         0x4130B1
-                               MX6SL_PAD_EPDC_D15__UART2_CTS_B         0x4130B1
-                       >;
-               };
 
                pinctrl_uart3: uart3grp {
                        fsl,pins = <
                        >;
                };
 
+               pinctrl_uart5: uart5grp {
+                       fsl,pins = <
+                               MX6SL_PAD_ECSPI1_SCLK__UART5_RX_DATA    0x41b0b1
+                               MX6SL_PAD_ECSPI1_MOSI__UART5_TX_DATA    0x41b0b1
+                               MX6SL_PAD_ECSPI1_MISO__UART5_RTS_B      0x4130b1
+                               MX6SL_PAD_ECSPI1_SS0__UART5_CTS_B       0x4130b1
+                       >;
+               };
+
                pinctrl_usdhc2: usdhc2grp {
                        fsl,pins = <
                                MX6SL_PAD_SD2_CMD__SD2_CMD              0x417059
                                MX6SL_PAD_SD2_DAT5__SD2_DATA5           0x417059
                                MX6SL_PAD_SD2_DAT6__SD2_DATA6           0x417059
                                MX6SL_PAD_SD2_DAT7__SD2_DATA7           0x417059
+                               MX6SL_PAD_SD2_RST__SD2_RESET            0x417059
                        >;
                };
 
                                MX6SL_PAD_SD2_DAT5__SD2_DATA5           0x4170b9
                                MX6SL_PAD_SD2_DAT6__SD2_DATA6           0x4170b9
                                MX6SL_PAD_SD2_DAT7__SD2_DATA7           0x4170b9
+                               MX6SL_PAD_SD2_RST__SD2_RESET            0x4170b9
                        >;
                };
 
                                MX6SL_PAD_SD2_DAT5__SD2_DATA5           0x4170f9
                                MX6SL_PAD_SD2_DAT6__SD2_DATA6           0x4170f9
                                MX6SL_PAD_SD2_DAT7__SD2_DATA7           0x4170f9
+                               MX6SL_PAD_SD2_RST__SD2_RESET            0x4170f9
                        >;
                };
 
index a78e715..320a27f 100644 (file)
                                fsl,anatop = <&anatop>;
                        };
 
-                       snvs@020cc000 {
-                               compatible = "fsl,sec-v4.0-mon", "simple-bus";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges = <0 0x020cc000 0x4000>;
+                       snvs: snvs@020cc000 {
+                               compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
+                               reg = <0x020cc000 0x4000>;
 
-                               snvs_rtc: snvs-rtc-lp@34 {
+                               snvs_rtc: snvs-rtc-lp {
                                        compatible = "fsl,sec-v4.0-mon-rtc-lp";
-                                       reg = <0x34 0x58>;
+                                       regmap = <&snvs>;
+                                       offset = <0x34>;
                                        interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>,
                                                     <0 20 IRQ_TYPE_LEVEL_HIGH>;
                                };
 
-                               snvs_poweroff: snvs-poweroff@38 {
-                                       compatible = "fsl,sec-v4.0-poweroff";
-                                       reg = <0x38 0x4>;
+                               snvs_poweroff: snvs-poweroff {
+                                       compatible = "syscon-poweroff";
+                                       regmap = <&snvs>;
+                                       offset = <0x38>;
+                                       mask = <0x60>;
                                        status = "disabled";
                                };
                        };
index e6223d8..c94f2ea 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <dt-bindings/clock/imx6sx-clock.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include "imx6sx-pinfunc.h"
 #include "skeleton.dtsi"
                        };
 
                        snvs: snvs@020cc000 {
-                               compatible = "fsl,sec-v4.0-mon", "simple-bus";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges = <0 0x020cc000 0x4000>;
+                               compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
+                               reg = <0x020cc000 0x4000>;
 
-                               snvs_rtc: snvs-rtc-lp@34 {
+                               snvs_rtc: snvs-rtc-lp {
                                        compatible = "fsl,sec-v4.0-mon-rtc-lp";
-                                       reg = <0x34 0x58>;
+                                       regmap = <&snvs>;
+                                       offset = <0x34>;
                                        interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                                };
 
-                               snvs_poweroff: snvs-poweroff@38 {
-                                       compatible = "fsl,sec-v4.0-poweroff";
-                                       reg = <0x38 0x4>;
+                               snvs_poweroff: snvs-poweroff {
+                                       compatible = "syscon-poweroff";
+                                       regmap = <&snvs>;
+                                       offset = <0x38>;
+                                       mask = <0x60>;
                                        status = "disabled";
                                };
+
+                               snvs_pwrkey: snvs-powerkey {
+                                       compatible = "fsl,sec-v4.0-pwrkey";
+                                       regmap = <&snvs>;
+                                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                                       linux,keycode = <KEY_POWER>;
+                                       wakeup-source;
+                               };
                        };
 
                        epit1: epit@020d0000 {
diff --git a/arch/arm/boot/dts/imx6ul-14x14-evk.dts b/arch/arm/boot/dts/imx6ul-14x14-evk.dts
new file mode 100644 (file)
index 0000000..25746b1
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include "imx6ul.dtsi"
+
+/ {
+       model = "Freescale i.MX6 UltraLite 14x14 EVK Board";
+       compatible = "fsl,imx6ul-14x14-evk", "fsl,imx6ul";
+
+       chosen {
+               stdout-path = &uart1;
+       };
+
+       memory {
+               reg = <0x80000000 0x20000000>;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reg_sd1_vmmc: sd1_regulator {
+                       compatible = "regulator-fixed";
+                       regulator-name = "VSD_3V3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+               };
+       };
+};
+
+&cpu0 {
+       arm-supply = <&reg_arm>;
+       soc-supply = <&reg_soc>;
+};
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet1>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy0>;
+       status = "okay";
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet2>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy1>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@2 {
+                       reg = <2>;
+               };
+
+               ethphy1: ethernet-phy@1 {
+                       reg = <1>;
+               };
+       };
+};
+
+&qspi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_qspi>;
+       status = "okay";
+
+       flash0: n25q256a@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "micron,n25q256a";
+               spi-max-frequency = <29000000>;
+               reg = <0>;
+       };
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       fsl,uart-has-rtscts;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
+       keep-power-in-suspend;
+       enable-sdio-wakeup;
+       vmmc-supply = <&reg_sd1_vmmc>;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       no-1-8-v;
+       keep-power-in-suspend;
+       enable-sdio-wakeup;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+
+       pinctrl_csi1: csi1grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_MCLK__CSI_MCLK            0x1b088
+                       MX6UL_PAD_CSI_PIXCLK__CSI_PIXCLK        0x1b088
+                       MX6UL_PAD_CSI_VSYNC__CSI_VSYNC          0x1b088
+                       MX6UL_PAD_CSI_HSYNC__CSI_HSYNC          0x1b088
+                       MX6UL_PAD_CSI_DATA00__CSI_DATA02        0x1b088
+                       MX6UL_PAD_CSI_DATA01__CSI_DATA03        0x1b088
+                       MX6UL_PAD_CSI_DATA02__CSI_DATA04        0x1b088
+                       MX6UL_PAD_CSI_DATA03__CSI_DATA05        0x1b088
+                       MX6UL_PAD_CSI_DATA04__CSI_DATA06        0x1b088
+                       MX6UL_PAD_CSI_DATA05__CSI_DATA07        0x1b088
+                       MX6UL_PAD_CSI_DATA06__CSI_DATA08        0x1b088
+                       MX6UL_PAD_CSI_DATA07__CSI_DATA09        0x1b088
+               >;
+       };
+
+       pinctrl_enet1: enet1grp {
+               fsl,pins = <
+                       MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4001b031
+               >;
+       };
+
+       pinctrl_enet2: enet2grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO07__ENET2_MDC         0x1b0b0
+                       MX6UL_PAD_GPIO1_IO06__ENET2_MDIO        0x1b0b0
+                       MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER      0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN      0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
+                       MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4001b031
+                       MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00      0x17059
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp{
+               fsl,pins = <
+                       MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX      0x1b020
+                       MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX      0x1b020
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp{
+               fsl,pins = <
+                       MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX      0x1b020
+                       MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX      0x1b020
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
+                       MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART5_TX_DATA__I2C2_SCL 0x4001b8b0
+                       MX6UL_PAD_UART5_RX_DATA__I2C2_SDA 0x4001b8b0
+               >;
+       };
+
+       pinctrl_lcdif_dat: lcdifdatgrp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_DATA00__LCDIF_DATA00  0x79
+                       MX6UL_PAD_LCD_DATA01__LCDIF_DATA01  0x79
+                       MX6UL_PAD_LCD_DATA02__LCDIF_DATA02  0x79
+                       MX6UL_PAD_LCD_DATA03__LCDIF_DATA03  0x79
+                       MX6UL_PAD_LCD_DATA04__LCDIF_DATA04  0x79
+                       MX6UL_PAD_LCD_DATA05__LCDIF_DATA05  0x79
+                       MX6UL_PAD_LCD_DATA06__LCDIF_DATA06  0x79
+                       MX6UL_PAD_LCD_DATA07__LCDIF_DATA07  0x79
+                       MX6UL_PAD_LCD_DATA08__LCDIF_DATA08  0x79
+                       MX6UL_PAD_LCD_DATA09__LCDIF_DATA09  0x79
+                       MX6UL_PAD_LCD_DATA10__LCDIF_DATA10  0x79
+                       MX6UL_PAD_LCD_DATA11__LCDIF_DATA11  0x79
+                       MX6UL_PAD_LCD_DATA12__LCDIF_DATA12  0x79
+                       MX6UL_PAD_LCD_DATA13__LCDIF_DATA13  0x79
+                       MX6UL_PAD_LCD_DATA14__LCDIF_DATA14  0x79
+                       MX6UL_PAD_LCD_DATA15__LCDIF_DATA15  0x79
+                       MX6UL_PAD_LCD_DATA16__LCDIF_DATA16  0x79
+                       MX6UL_PAD_LCD_DATA17__LCDIF_DATA17  0x79
+                       MX6UL_PAD_LCD_DATA18__LCDIF_DATA18  0x79
+                       MX6UL_PAD_LCD_DATA19__LCDIF_DATA19  0x79
+                       MX6UL_PAD_LCD_DATA20__LCDIF_DATA20  0x79
+                       MX6UL_PAD_LCD_DATA21__LCDIF_DATA21  0x79
+                       MX6UL_PAD_LCD_DATA22__LCDIF_DATA22  0x79
+                       MX6UL_PAD_LCD_DATA23__LCDIF_DATA23  0x79
+               >;
+       };
+
+       pinctrl_lcdif_ctrl: lcdifctrlgrp {
+               fsl,pins = <
+                       MX6UL_PAD_LCD_CLK__LCDIF_CLK        0x79
+                       MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE  0x79
+                       MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC    0x79
+                       MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC    0x79
+                       /* used for lcd reset */
+                       MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09  0x79
+               >;
+       };
+
+       pinctrl_qspi: qspigrp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_WP_B__QSPI_A_SCLK        0x70a1
+                       MX6UL_PAD_NAND_READY_B__QSPI_A_DATA00   0x70a1
+                       MX6UL_PAD_NAND_CE0_B__QSPI_A_DATA01     0x70a1
+                       MX6UL_PAD_NAND_CE1_B__QSPI_A_DATA02     0x70a1
+                       MX6UL_PAD_NAND_CLE__QSPI_A_DATA03       0x70a1
+                       MX6UL_PAD_NAND_DQS__QSPI_A_SS0_B        0x70a1
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX6UL_PAD_GPIO1_IO08__PWM1_OUT   0x110b0
+               >;
+       };
+
+       pinctrl_sim2: sim2grp {
+               fsl,pins = <
+                       MX6UL_PAD_CSI_DATA03__SIM2_PORT1_PD             0xb808
+                       MX6UL_PAD_CSI_DATA04__SIM2_PORT1_CLK            0x31
+                       MX6UL_PAD_CSI_DATA05__SIM2_PORT1_RST_B          0xb808
+                       MX6UL_PAD_CSI_DATA06__SIM2_PORT1_SVEN           0xb808
+                       MX6UL_PAD_CSI_DATA07__SIM2_PORT1_TRXD           0xb809
+                       MX6UL_PAD_CSI_DATA02__GPIO4_IO23                0x3008
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
+                       MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX   0x1b0b1
+                       MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX   0x1b0b1
+                       MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS  0x1b0b1
+                       MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS  0x1b0b1
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD           0x17059
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK           0x10059
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0       0x17059
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1       0x17059
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2       0x17059
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3       0x17059
+                       MX6UL_PAD_UART1_RTS_B__GPIO1_IO19       0x17059 /* SD1 CD */
+                       MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT    0x17059 /* SD1 VSELECT */
+                       MX6UL_PAD_GPIO1_IO09__GPIO1_IO09        0x17059 /* SD1 RESET */
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x170b9
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x100b9
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9
+
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
+               fsl,pins = <
+                       MX6UL_PAD_SD1_CMD__USDHC1_CMD     0x170f9
+                       MX6UL_PAD_SD1_CLK__USDHC1_CLK     0x100f9
+                       MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9
+                       MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9
+                       MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9
+                       MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX6UL_PAD_NAND_RE_B__USDHC2_CLK     0x17059
+                       MX6UL_PAD_NAND_WE_B__USDHC2_CMD     0x17059
+                       MX6UL_PAD_NAND_DATA00__USDHC2_DATA0 0x17059
+                       MX6UL_PAD_NAND_DATA01__USDHC2_DATA1 0x17059
+                       MX6UL_PAD_NAND_DATA02__USDHC2_DATA2 0x17059
+                       MX6UL_PAD_NAND_DATA03__USDHC2_DATA3 0x17059
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/imx6ul-pinfunc.h b/arch/arm/boot/dts/imx6ul-pinfunc.h
new file mode 100644 (file)
index 0000000..20c7da1
--- /dev/null
@@ -0,0 +1,938 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#ifndef __DTS_IMX6UL_PINFUNC_H
+#define __DTS_IMX6UL_PINFUNC_H
+
+/*
+ * The pin function ID is a tuple of
+ * <mux_reg conf_reg input_reg mux_mode input_val>
+ */
+#define MX6UL_PAD_BOOT_MODE0__GPIO5_IO10                               0x0014 0x02a0 0x0000 5 0
+#define MX6UL_PAD_BOOT_MODE1__GPIO5_IO11                               0x0018 0x02a4 0x0000 5 0
+
+#define MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00                             0x001c 0x02a8 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01                             0x0020 0x02ac 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02                             0x0024 0x02b0 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03                             0x0028 0x02b4 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04                             0x002c 0x02b8 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER5__GPIO5_IO05                             0x0030 0x02bc 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER6__GPIO5_IO06                             0x0034 0x02c0 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07                             0x0038 0x02c4 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08                             0x003c 0x02c8 0x0000 5 0
+#define MX6UL_PAD_SNVS_TAMPER9__GPIO5_IO09                             0x0040 0x02cc 0x0000 5 0
+
+#define MX6UL_PAD_JTAG_MOD__SJC_MOD                                    0x0044 0x02d0 0x0000 0 0
+#define MX6UL_PAD_JTAG_MOD__GPT2_CLK                                   0x0044 0x02d0 0x05a0 1 0
+#define MX6UL_PAD_JTAG_MOD__SPDIF_OUT                                  0x0044 0x02d0 0x0000 2 0
+#define MX6UL_PAD_JTAG_MOD__ENET1_REF_CLK_25M                          0x0044 0x02d0 0x0000 3 0
+#define MX6UL_PAD_JTAG_MOD__CCM_PMIC_RDY                               0x0044 0x02d0 0x04c0 4 0
+#define MX6UL_PAD_JTAG_MOD__GPIO1_IO10                                 0x0044 0x02d0 0x0000 5 0
+#define MX6UL_PAD_JTAG_MOD__SDMA_EXT_EVENT00                           0x0044 0x02d0 0x0000 6 0
+#define MX6UL_PAD_JTAG_TMS__SJC_TMS                                    0x0048 0x02d4 0x0000 0 0
+#define MX6UL_PAD_JTAG_TMS__GPT2_CAPTURE1                              0x0048 0x02d4 0x0598 1 0
+#define MX6UL_PAD_JTAG_TMS__SAI2_MCLK                                  0x0048 0x02d4 0x0000 2 0
+#define MX6UL_PAD_JTAG_TMS__CCM_CLKO1                                  0x0048 0x02d4 0x0000 3 0
+#define MX6UL_PAD_JTAG_TMS__CCM_WAIT                                   0x0048 0x02d4 0x0000 4 0
+#define MX6UL_PAD_JTAG_TMS__GPIO1_IO11                                 0x0048 0x02d4 0x0000 5 0
+#define MX6UL_PAD_JTAG_TMS__SDMA_EXT_EVENT01                           0x0048 0x02d4 0x0000 6 0
+#define MX6UL_PAD_JTAG_TMS__EPIT1_OUT                                  0x0048 0x02d4 0x0000 8 0
+#define MX6UL_PAD_JTAG_TDO__SJC_TDO                                    0x004c 0x02d8 0x0000 0 0
+#define MX6UL_PAD_JTAG_TDO__GPT2_CAPTURE2                              0x004c 0x02d8 0x059c 1 0
+#define MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC                               0x004c 0x02d8 0x05fc 2 0
+#define MX6UL_PAD_JTAG_TDO__CCM_CLKO2                                  0x004c 0x02d8 0x0000 3 0
+#define MX6UL_PAD_JTAG_TDO__CCM_STOP                                   0x004c 0x02d8 0x0000 4 0
+#define MX6UL_PAD_JTAG_TDO__GPIO1_IO12                                 0x004c 0x02d8 0x0000 5 0
+#define MX6UL_PAD_JTAG_TDO__MQS_RIGHT                                  0x004c 0x02d8 0x0000 6 0
+#define MX6UL_PAD_JTAG_TDO__EPIT2_OUT                                  0x004c 0x02d8 0x0000 8 0
+#define MX6UL_PAD_JTAG_TDI__SJC_TDI                                    0x0050 0x02dc 0x0000 0 0
+#define MX6UL_PAD_JTAG_TDI__GPT2_COMPARE1                              0x0050 0x02dc 0x0000 1 0
+#define MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK                               0x0050 0x02dc 0x05f8 2 0
+#define MX6UL_PAD_JTAG_TDI__PWM6_OUT                                   0x0050 0x02dc 0x0000 4 0
+#define MX6UL_PAD_JTAG_TDI__GPIO1_IO13                                 0x0050 0x02dc 0x0000 5 0
+#define MX6UL_PAD_JTAG_TDI__MQS_LEFT                                   0x0050 0x02dc 0x0000 6 0
+#define MX6UL_PAD_JTAG_TDI__SIM1_POWER_FAIL                            0x0050 0x02dc 0x0000 8 0
+#define MX6UL_PAD_JTAG_TCK__SJC_TCK                                    0x0054 0x02e0 0x0000 0 0
+#define MX6UL_PAD_JTAG_TCK__GPT2_COMPARE2                              0x0054 0x02e0 0x0000 1 0
+#define MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA                               0x0054 0x02e0 0x0000 2 0
+#define MX6UL_PAD_JTAG_TCK__PWM7_OUT                                   0x0054 0x02e0 0x0000 4 0
+#define MX6UL_PAD_JTAG_TCK__GPIO1_IO14                                 0x0054 0x02e0 0x0000 5 0
+#define MX6UL_PAD_JTAG_TCK__SIM2_POWER_FAIL                            0x0054 0x02e0 0x0000 8 0
+#define MX6UL_PAD_JTAG_TRST_B__SJC_TRSTB                               0x0058 0x02e4 0x0000 0 0
+#define MX6UL_PAD_JTAG_TRST_B__GPT2_COMPARE3                           0x0058 0x02e4 0x0000 1 0
+#define MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA                            0x0058 0x02e4 0x0000 2 0
+#define MX6UL_PAD_JTAG_TRST_B__PWM8_OUT                                0x0058 0x02e4 0x0000 4 0
+#define MX6UL_PAD_JTAG_TRST_B__GPIO1_IO15                              0x0058 0x02e4 0x0000 5 0
+#define MX6UL_PAD_JTAG_TRST_B__CAAM_RNG_OSC_OBS                        0x0058 0x02e4 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO00__I2C2_SCL                                 0x005c 0x02e8 0x05ac 0 1
+#define MX6UL_PAD_GPIO1_IO00__GPT1_CAPTURE1                            0x005c 0x02e8 0x058c 1 0
+#define MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID                           0x005c 0x02e8 0x04b8 2 0
+#define MX6UL_PAD_GPIO1_IO00__ENET1_REF_CLK1                           0x005c 0x02e8 0x0574 3 0
+#define MX6UL_PAD_GPIO1_IO00__MQS_RIGHT                                0x005c 0x02e8 0x0000 4 0
+#define MX6UL_PAD_GPIO1_IO00__GPIO1_IO00                               0x005c 0x02e8 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO00__ENET1_1588_EVENT0_IN                     0x005c 0x02e8 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO00__SRC_SYSTEM_RESET                         0x005c 0x02e8 0x0000 7 0
+#define MX6UL_PAD_GPIO1_IO00__WDOG3_WDOG_B                             0x005c 0x02e8 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO01__I2C2_SDA                                 0x0060 0x02ec 0x05b0 0 1
+#define MX6UL_PAD_GPIO1_IO01__GPT1_COMPARE1                            0x0060 0x02ec 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO01__USB_OTG1_OC                              0x0060 0x02ec 0x0664 2 0
+#define MX6UL_PAD_GPIO1_IO01__ENET2_REF_CLK2                           0x0060 0x02ec 0x057c 3 0
+#define MX6UL_PAD_GPIO1_IO01__MQS_LEFT                                 0x0060 0x02ec 0x0000 4 0
+#define MX6UL_PAD_GPIO1_IO01__GPIO1_IO01                               0x0060 0x02ec 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO01__ENET1_1588_EVENT0_OUT                    0x0060 0x02ec 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO01__SRC_EARLY_RESET                          0x0060 0x02ec 0x0000 7 0
+#define MX6UL_PAD_GPIO1_IO01__WDOG1_WDOG_B                             0x0060 0x02ec 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO02__I2C1_SCL                                 0x0064 0x02f0 0x05a4 0 0
+#define MX6UL_PAD_GPIO1_IO02__GPT1_COMPARE2                            0x0064 0x02f0 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO02__USB_OTG2_PWR                             0x0064 0x02f0 0x0000 2 0
+#define MX6UL_PAD_GPIO1_IO02__ENET1_REF_CLK_25M                        0x0064 0x02f0 0x0000 3 0
+#define MX6UL_PAD_GPIO1_IO02__USDHC1_WP                                0x0064 0x02f0 0x066c 4 0
+#define MX6UL_PAD_GPIO1_IO02__GPIO1_IO02                               0x0064 0x02f0 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO02__SDMA_EXT_EVENT00                         0x0064 0x02f0 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO02__SRC_ANY_PU_RESET                         0x0064 0x02f0 0x0000 7 0
+#define MX6UL_PAD_GPIO1_IO02__UART1_DCE_TX                             0x0064 0x02f0 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO02__UART1_DTE_RX                             0x0064 0x02f0 0x0624 8 0
+#define MX6UL_PAD_GPIO1_IO03__I2C1_SDA                                 0x0068 0x02f4 0x05a8 0 1
+#define MX6UL_PAD_GPIO1_IO03__GPT1_COMPARE3                            0x0068 0x02f4 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO03__USB_OTG2_OC                              0x0068 0x02f4 0x0660 2 0
+#define MX6UL_PAD_GPIO1_IO03__USDHC1_CD_B                              0x0068 0x02f4 0x0668 4 0
+#define MX6UL_PAD_GPIO1_IO03__GPIO1_IO03                               0x0068 0x02f4 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO03__CCM_DI0_eXT_CLK                          0x0068 0x02f4 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO03__SRC_TESTER_ACK                           0x0068 0x02f4 0x0000 7 0
+#define MX6UL_PAD_GPIO1_IO03__UART1_DTE_TX                             0x0068 0x02f4 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO03__UART1_DCE_RX                             0x0068 0x02f4 0x0624 8 1
+#define MX6UL_PAD_GPIO1_IO04__ENET1_REF_CLK1                           0x006c 0x02f8 0x0574 0 1
+#define MX6UL_PAD_GPIO1_IO04__PWM3_OUT                                 0x006c 0x02f8 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO04__USB_OTG1_PWR                             0x006c 0x02f8 0x0000 2 0
+#define MX6UL_PAD_GPIO1_IO04__USDHC1_RESET_B                           0x006c 0x02f8 0x0000 4 0
+#define MX6UL_PAD_GPIO1_IO04__GPIO1_IO04                               0x006c 0x02f8 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO04__ENET2_1588_EVENT0_IN                     0x006c 0x02f8 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO04__UART5_DCE_TX                             0x006c 0x02f8 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO04__UART5_DTE_RX                             0x006c 0x02f8 0x0644 8 2
+#define MX6UL_PAD_GPIO1_IO05__ENET2_REF_CLK2                           0x0070 0x02fc 0x057c 0 1
+#define MX6UL_PAD_GPIO1_IO05__PWM4_OUT                                 0x0070 0x02fc 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO05__ANATOP_OTG2_ID                           0x0070 0x02fc 0x04bc 2 0
+#define MX6UL_PAD_GPIO1_IO05__CSI_FIELD                                0x0070 0x02fc 0x0530 3 0
+#define MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT                           0x0070 0x02fc 0x0000 4 0
+#define MX6UL_PAD_GPIO1_IO05__GPIO1_IO05                               0x0070 0x02fc 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO05__ENET2_1588_EVENT0_OUT                    0x0070 0x02fc 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO05__UART5_DCE_RX                             0x0070 0x02fc 0x0644 8 3
+#define MX6UL_PAD_GPIO1_IO05__UART5_DTE_TX                             0x0070 0x02fc 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO06__ENET1_MDIO                               0x0074 0x0300 0x0578 0 0
+#define MX6UL_PAD_GPIO1_IO06__ENET2_MDIO                               0x0074 0x0300 0x0580 1 0
+#define MX6UL_PAD_GPIO1_IO06__USB_OTG_PWR_WAKE                         0x0074 0x0300 0x0000 2 0
+#define MX6UL_PAD_GPIO1_IO06__CSI_MCLK                                 0x0074 0x0300 0x0000 3 0
+#define MX6UL_PAD_GPIO1_IO06__USDHC2_WP                                0x0074 0x0300 0x069c 4 0
+#define MX6UL_PAD_GPIO1_IO06__GPIO1_IO06                               0x0074 0x0300 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO06__CCM_WAIT                                 0x0074 0x0300 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO06__CCM_REF_EN_B                             0x0074 0x0300 0x0000 7 0
+#define MX6UL_PAD_GPIO1_IO06__UART1_DCE_CTS                            0x0074 0x0300 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO06__UART1_DTE_RTS                            0x0074 0x0300 0x0620 8 0
+#define MX6UL_PAD_GPIO1_IO07__ENET1_MDC                                0x0078 0x0304 0x0000 0 0
+#define MX6UL_PAD_GPIO1_IO07__ENET2_MDC                                0x0078 0x0304 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO07__USB_OTG_HOST_MODE                        0x0078 0x0304 0x0000 2 0
+#define MX6UL_PAD_GPIO1_IO07__CSI_PIXCLK                               0x0078 0x0304 0x0528 3 0
+#define MX6UL_PAD_GPIO1_IO07__USDHC2_CD_B                              0x0078 0x0304 0x0674 4 1
+#define MX6UL_PAD_GPIO1_IO07__GPIO1_IO07                               0x0078 0x0304 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO07__CCM_STOP                                 0x0078 0x0304 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO07__UART1_DCE_RTS                            0x0078 0x0304 0x0620 8 1
+#define MX6UL_PAD_GPIO1_IO07__UART1_DTE_CTS                            0x0078 0x0304 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO08__PWM1_OUT                                 0x007c 0x0308 0x0000 0 0
+#define MX6UL_PAD_GPIO1_IO08__WDOG1_WDOG_B                             0x007c 0x0308 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO08__SPDIF_OUT                                0x007c 0x0308 0x0000 2 0
+#define MX6UL_PAD_GPIO1_IO08__CSI_VSYNC                                0x007c 0x0308 0x052c 3 1
+#define MX6UL_PAD_GPIO1_IO08__USDHC2_VSELECT                           0x007c 0x0308 0x0000 4 0
+#define MX6UL_PAD_GPIO1_IO08__GPIO1_IO08                               0x007c 0x0308 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO08__CCM_PMIC_RDY                             0x007c 0x0308 0x04c0 6 1
+#define MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS                            0x007c 0x0308 0x0640 8 1
+#define MX6UL_PAD_GPIO1_IO08__UART5_DTE_CTS                            0x007c 0x0308 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO09__PWM2_OUT                                 0x0080 0x030c 0x0000 0 0
+#define MX6UL_PAD_GPIO1_IO09__WDOG1_WDOG_ANY                           0x0080 0x030c 0x0000 1 0
+#define MX6UL_PAD_GPIO1_IO09__SPDIF_IN                                 0x0080 0x030c 0x0618 2 0
+#define MX6UL_PAD_GPIO1_IO09__CSI_HSYNC                                0x0080 0x030c 0x0524 3 1
+#define MX6UL_PAD_GPIO1_IO09__USDHC2_RESET_B                           0x0080 0x030c 0x0000 4 0
+#define MX6UL_PAD_GPIO1_IO09__GPIO1_IO09                               0x0080 0x030c 0x0000 5 0
+#define MX6UL_PAD_GPIO1_IO09__USDHC1_RESET_B                           0x0080 0x030c 0x0000 6 0
+#define MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS                            0x0080 0x030c 0x0000 8 0
+#define MX6UL_PAD_GPIO1_IO09__UART5_DTE_RTS                            0x0080 0x030c 0x0640 8 2
+#define MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX                          0x0084 0x0310 0x0000 0 0
+#define MX6UL_PAD_UART1_TX_DATA__UART1_DTE_RX                          0x0084 0x0310 0x0624 0 2
+#define MX6UL_PAD_UART1_TX_DATA__ENET1_RDATA02                         0x0084 0x0310 0x0000 1 0
+#define MX6UL_PAD_UART1_TX_DATA__I2C3_SCL                              0x0084 0x0310 0x05b4 2 0
+#define MX6UL_PAD_UART1_TX_DATA__CSI_DATA02                            0x0084 0x0310 0x0000 3 0
+#define MX6UL_PAD_UART1_TX_DATA__GPT1_COMPARE1                         0x0084 0x0310 0x0000 4 0
+#define MX6UL_PAD_UART1_TX_DATA__GPIO1_IO16                            0x0084 0x0310 0x0000 5 0
+#define MX6UL_PAD_UART1_TX_DATA__SPDIF_OUT                             0x0084 0x0310 0x0000 8 0
+#define MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX                          0x0088 0x0314 0x0624 0 3
+#define MX6UL_PAD_UART1_RX_DATA__UART1_DTE_TX                          0x0088 0x0314 0x0000 0 0
+#define MX6UL_PAD_UART1_RX_DATA__ENET1_RDATA03                         0x0088 0x0314 0x0000 1 0
+#define MX6UL_PAD_UART1_RX_DATA__I2C3_SDA                              0x0088 0x0314 0x05b8 2 0
+#define MX6UL_PAD_UART1_RX_DATA__CSI_DATA03                            0x0088 0x0314 0x0000 3 0
+#define MX6UL_PAD_UART1_RX_DATA__GPT1_CLK                              0x0088 0x0314 0x0594 4 0
+#define MX6UL_PAD_UART1_RX_DATA__GPIO1_IO17                            0x0088 0x0314 0x0000 5 0
+#define MX6UL_PAD_UART1_RX_DATA__SPDIF_IN                              0x0088 0x0314 0x0000 8 0
+#define MX6UL_PAD_UART1_CTS_B__UART1_DCE_CTS                           0x008c 0x0318 0x0000 0 0
+#define MX6UL_PAD_UART1_CTS_B__UART1_DTE_RTS                           0x008c 0x0318 0x0620 0 2
+#define MX6UL_PAD_UART1_CTS_B__ENET1_RX_CLK                            0x008c 0x0318 0x0000 1 0
+#define MX6UL_PAD_UART1_CTS_B__USDHC1_WP                               0x008c 0x0318 0x066c 2 1
+#define MX6UL_PAD_UART1_CTS_B__CSI_DATA04                              0x008c 0x0318 0x0000 3 0
+#define MX6UL_PAD_UART1_CTS_B__ENET2_1588_EVENT1_IN                    0x008c 0x0318 0x0000 4 0
+#define MX6UL_PAD_UART1_CTS_B__GPIO1_IO18                              0x008c 0x0318 0x0000 5 0
+#define MX6UL_PAD_UART1_CTS_B__USDHC2_WP                               0x008c 0x0318 0x0000 8 0
+#define MX6UL_PAD_UART1_RTS_B__UART1_DCE_RTS                           0x0090 0x031c 0x0620 0 3
+#define MX6UL_PAD_UART1_RTS_B__UART1_DTE_CTS                           0x0090 0x031c 0x0000 0 0
+#define MX6UL_PAD_UART1_RTS_B__ENET1_TX_ER                             0x0090 0x031c 0x0000 1 0
+#define MX6UL_PAD_UART1_RTS_B__USDHC1_CD_B                             0x0090 0x031c 0x0668 2 1
+#define MX6UL_PAD_UART1_RTS_B__CSI_DATA05                              0x0090 0x031c 0x0000 3 0
+#define MX6UL_PAD_UART1_RTS_B__ENET2_1588_EVENT1_OUT                   0x0090 0x031c 0x0000 4 0
+#define MX6UL_PAD_UART1_RTS_B__GPIO1_IO19                              0x0090 0x031c 0x0000 5 0
+#define MX6UL_PAD_UART1_RTS_B__USDHC2_CD_B                             0x0090 0x031c 0x0000 8 0
+#define MX6UL_PAD_UART2_TX_DATA__UART2_DCE_TX                          0x0094 0x0320 0x0000 0 0
+#define MX6UL_PAD_UART2_TX_DATA__UART2_DTE_RX                          0x0094 0x0320 0x062c 0 0
+#define MX6UL_PAD_UART2_TX_DATA__ENET1_TDATA02                         0x0094 0x0320 0x0000 1 0
+#define MX6UL_PAD_UART2_TX_DATA__I2C4_SCL                              0x0094 0x0320 0x05bc 2 0
+#define MX6UL_PAD_UART2_TX_DATA__CSI_DATA06                            0x0094 0x0320 0x0000 3 0
+#define MX6UL_PAD_UART2_TX_DATA__GPT1_CAPTURE1                         0x0094 0x0320 0x058c 4 1
+#define MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20                            0x0094 0x0320 0x0000 5 0
+#define MX6UL_PAD_UART2_TX_DATA__ECSPI3_SS0                            0x0094 0x0320 0x0000 8 0
+#define MX6UL_PAD_UART2_RX_DATA__UART2_DCE_RX                          0x0098 0x0324 0x062c 0 1
+#define MX6UL_PAD_UART2_RX_DATA__UART2_DTE_TX                          0x0098 0x0324 0x0000 0 0
+#define MX6UL_PAD_UART2_RX_DATA__ENET1_TDATA03                         0x0098 0x0324 0x0000 1 0
+#define MX6UL_PAD_UART2_RX_DATA__I2C4_SDA                              0x0098 0x0324 0x05c0 2 0
+#define MX6UL_PAD_UART2_RX_DATA__CSI_DATA07                            0x0098 0x0324 0x0000 3 0
+#define MX6UL_PAD_UART2_RX_DATA__GPT1_CAPTURE2                         0x0098 0x0324 0x0590 4 0
+#define MX6UL_PAD_UART2_RX_DATA__GPIO1_IO21                            0x0098 0x0324 0x0000 5 0
+#define MX6UL_PAD_UART2_RX_DATA__SJC_DONE                              0x0098 0x0324 0x0000 7 0
+#define MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK                           0x0098 0x0324 0x0000 8 0
+#define MX6UL_PAD_UART2_CTS_B__UART2_DCE_CTS                           0x009c 0x0328 0x0000 0 0
+#define MX6UL_PAD_UART2_CTS_B__UART2_DTE_RTS                           0x009c 0x0328 0x0628 0 0
+#define MX6UL_PAD_UART2_CTS_B__ENET1_CRS                               0x009c 0x0328 0x0000 1 0
+#define MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX                             0x009c 0x0328 0x0000 2 0
+#define MX6UL_PAD_UART2_CTS_B__CSI_DATA08                              0x009c 0x0328 0x0000 3 0
+#define MX6UL_PAD_UART2_CTS_B__GPT1_COMPARE2                           0x009c 0x0328 0x0000 4 0
+#define MX6UL_PAD_UART2_CTS_B__GPIO1_IO22                              0x009c 0x0328 0x0000 5 0
+#define MX6UL_PAD_UART2_CTS_B__SJC_DE_B                                0x009c 0x0328 0x0000 7 0
+#define MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI                             0x009c 0x0328 0x0000 8 0
+#define MX6UL_PAD_UART2_RTS_B__UART2_DCE_RTS                           0x00a0 0x032c 0x0628 0 1
+#define MX6UL_PAD_UART2_RTS_B__UART2_DTE_CTS                           0x00a0 0x032c 0x0000 0 0
+#define MX6UL_PAD_UART2_RTS_B__ENET1_COL                               0x00a0 0x032c 0x0000 1 0
+#define MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX                             0x00a0 0x032c 0x0588 2 0
+#define MX6UL_PAD_UART2_RTS_B__CSI_DATA09                              0x00a0 0x032c 0x0000 3 0
+#define MX6UL_PAD_UART2_RTS_B__GPT1_COMPARE3                           0x00a0 0x032c 0x0000 4 0
+#define MX6UL_PAD_UART2_RTS_B__GPIO1_IO23                              0x00a0 0x032c 0x0000 5 0
+#define MX6UL_PAD_UART2_RTS_B__SJC_FAIL                                0x00a0 0x032c 0x0000 7 0
+#define MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO                             0x00a0 0x032c 0x0000 8 0
+#define MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX                          0x00a4 0x0330 0x0000 0 0
+#define MX6UL_PAD_UART3_TX_DATA__UART3_DTE_RX                          0x00a4 0x0330 0x0634 0 0
+#define MX6UL_PAD_UART3_TX_DATA__ENET2_RDATA02                         0x00a4 0x0330 0x0000 1 0
+#define MX6UL_PAD_UART3_TX_DATA__SIM1_PORT0_PD                         0x00a4 0x0330 0x0000 2 0
+#define MX6UL_PAD_UART3_TX_DATA__CSI_DATA01                            0x00a4 0x0330 0x0000 3 0
+#define MX6UL_PAD_UART3_TX_DATA__UART2_DCE_CTS                         0x00a4 0x0330 0x0000 4 0
+#define MX6UL_PAD_UART3_TX_DATA__UART2_DTE_RTS                         0x00a4 0x0330 0x0628 4 2
+#define MX6UL_PAD_UART3_TX_DATA__GPIO1_IO24                            0x00a4 0x0330 0x0000 5 0
+#define MX6UL_PAD_UART3_TX_DATA__SJC_JTAG_ACT                          0x00a4 0x0330 0x0000 7 0
+#define MX6UL_PAD_UART3_TX_DATA__ANATOP_OTG1_ID                        0x00a4 0x0330 0x0000 8 0
+#define MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX                          0x00a8 0x0334 0x0634 0 1
+#define MX6UL_PAD_UART3_RX_DATA__UART3_DTE_TX                          0x00a8 0x0334 0x0000 0 0
+#define MX6UL_PAD_UART3_RX_DATA__ENET2_RDATA03                         0x00a8 0x0334 0x0000 1 0
+#define MX6UL_PAD_UART3_RX_DATA__SIM2_PORT0_PD                         0x00a8 0x0334 0x0000 2 0
+#define MX6UL_PAD_UART3_RX_DATA__CSI_DATA00                            0x00a8 0x0334 0x0000 3 0
+#define MX6UL_PAD_UART3_RX_DATA__UART2_DCE_RTS                         0x00a8 0x0334 0x0628 4 3
+#define MX6UL_PAD_UART3_RX_DATA__UART2_DTE_CTS                         0x00a8 0x0334 0x0000 4 0
+#define MX6UL_PAD_UART3_RX_DATA__GPIO1_IO25                            0x00a8 0x0334 0x0000 5 0
+#define MX6UL_PAD_UART3_RX_DATA__EPIT1_OUT                             0x00a8 0x0334 0x0000 8 0
+#define MX6UL_PAD_UART3_CTS_B__UART3_DCE_CTS                           0x00ac 0x0338 0x0000 0 0
+#define MX6UL_PAD_UART3_CTS_B__UART3_DTE_RTS                           0x00ac 0x0338 0x0630 0 0
+#define MX6UL_PAD_UART3_CTS_B__ENET2_RX_CLK                            0x00ac 0x0338 0x0000 1 0
+#define MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX                             0x00ac 0x0338 0x0000 2 0
+#define MX6UL_PAD_UART3_CTS_B__CSI_DATA10                              0x00ac 0x0338 0x0000 3 0
+#define MX6UL_PAD_UART3_CTS_B__ENET1_1588_EVENT1_IN                    0x00ac 0x0338 0x0000 4 0
+#define MX6UL_PAD_UART3_CTS_B__GPIO1_IO26                              0x00ac 0x0338 0x0000 5 0
+#define MX6UL_PAD_UART3_CTS_B__EPIT2_OUT                               0x00ac 0x0338 0x0000 8 0
+#define MX6UL_PAD_UART3_RTS_B__UART3_DCE_RTS                           0x00b0 0x033c 0x0630 0 1
+#define MX6UL_PAD_UART3_RTS_B__UART3_DTE_CTS                           0x00b0 0x033c 0x0000 0 0
+#define MX6UL_PAD_UART3_RTS_B__ENET2_TX_ER                             0x00b0 0x033c 0x0000 1 0
+#define MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX                             0x00b0 0x033c 0x0584 2 0
+#define MX6UL_PAD_UART3_RTS_B__CSI_DATA11                              0x00b0 0x033c 0x0000 3 0
+#define MX6UL_PAD_UART3_RTS_B__ENET1_1588_EVENT1_OUT                   0x00b0 0x033c 0x0000 4 0
+#define MX6UL_PAD_UART3_RTS_B__GPIO1_IO27                              0x00b0 0x033c 0x0000 5 0
+#define MX6UL_PAD_UART3_RTS_B__WDOG1_WDOG_B                            0x00b0 0x033c 0x0000 8 0
+#define MX6UL_PAD_UART4_TX_DATA__UART4_DCE_TX                          0x00b4 0x0340 0x0000 0 0
+#define MX6UL_PAD_UART4_TX_DATA__UART4_DTE_RX                          0x00b4 0x0340 0x063c 0 0
+#define MX6UL_PAD_UART4_TX_DATA__ENET2_TDATA02                         0x00b4 0x0340 0x0000 1 0
+#define MX6UL_PAD_UART4_TX_DATA__I2C1_SCL                              0x00b4 0x0340 0x05a4 2 1
+#define MX6UL_PAD_UART4_TX_DATA__CSI_DATA12                            0x00b4 0x0340 0x0000 3 0
+#define MX6UL_PAD_UART4_TX_DATA__CSU_CSU_ALARM_AUT02                   0x00b4 0x0340 0x0000 4 0
+#define MX6UL_PAD_UART4_TX_DATA__GPIO1_IO28                            0x00b4 0x0340 0x0000 5 0
+#define MX6UL_PAD_UART4_TX_DATA__ECSPI2_SCLK                           0x00b4 0x0340 0x0000 8 0
+#define MX6UL_PAD_UART4_RX_DATA__UART4_DCE_RX                          0x00b8 0x0344 0x063c 0 1
+#define MX6UL_PAD_UART4_RX_DATA__UART4_DTE_TX                          0x00b8 0x0344 0x0000 0 0
+#define MX6UL_PAD_UART4_RX_DATA__ENET2_TDATA03                         0x00b8 0x0344 0x0000 1 0
+#define MX6UL_PAD_UART4_RX_DATA__I2C1_SDA                              0x00b8 0x0344 0x05a8 2 2
+#define MX6UL_PAD_UART4_RX_DATA__CSI_DATA13                            0x00b8 0x0344 0x0000 3 0
+#define MX6UL_PAD_UART4_RX_DATA__CSU_CSU_ALARM_AUT01                   0x00b8 0x0344 0x0000 4 0
+#define MX6UL_PAD_UART4_RX_DATA__GPIO1_IO29                            0x00b8 0x0344 0x0000 5 0
+#define MX6UL_PAD_UART4_RX_DATA__ECSPI2_SS0                            0x00b8 0x0344 0x0000 8 0
+#define MX6UL_PAD_UART5_TX_DATA__GPIO1_IO30                            0x00bc 0x0348 0x0000 5 0
+#define MX6UL_PAD_UART5_TX_DATA__ECSPI2_MOSI                           0x00bc 0x0348 0x0000 8 0
+#define MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX                          0x00bc 0x0348 0x0000 0 0
+#define MX6UL_PAD_UART5_TX_DATA__UART5_DTE_RX                          0x00bc 0x0348 0x0644 0 4
+#define MX6UL_PAD_UART5_TX_DATA__ENET2_CRS                             0x00bc 0x0348 0x0000 1 0
+#define MX6UL_PAD_UART5_TX_DATA__I2C2_SCL                              0x00bc 0x0348 0x05ac 2 2
+#define MX6UL_PAD_UART5_TX_DATA__CSI_DATA14                            0x00bc 0x0348 0x0000 3 0
+#define MX6UL_PAD_UART5_TX_DATA__CSU_CSU_ALARM_AUT00                   0x00bc 0x0348 0x0000 4 0
+#define MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX                          0x00c0 0x034c 0x0644 0 5
+#define MX6UL_PAD_UART5_RX_DATA__UART5_DTE_TX                          0x00c0 0x034c 0x0000 0 0
+#define MX6UL_PAD_UART5_RX_DATA__ENET2_COL                             0x00c0 0x034c 0x0000 1 0
+#define MX6UL_PAD_UART5_RX_DATA__I2C2_SDA                              0x00c0 0x034c 0x05b0 2 2
+#define MX6UL_PAD_UART5_RX_DATA__CSI_DATA15                            0x00c0 0x034c 0x0000 3 0
+#define MX6UL_PAD_UART5_RX_DATA__CSU_CSU_INT_DEB                       0x00c0 0x034c 0x0000 4 0
+#define MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31                            0x00c0 0x034c 0x0000 5 0
+#define MX6UL_PAD_UART5_RX_DATA__ECSPI2_MISO                           0x00c0 0x034c 0x0000 8 0
+#define MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00                        0x00c4 0x0350 0x0000 0 0
+#define MX6UL_PAD_ENET1_RX_DATA0__UART4_DCE_RTS                        0x00c4 0x0350 0x0638 1 0
+#define MX6UL_PAD_ENET1_RX_DATA0__UART4_DTE_CTS                        0x00c4 0x0350 0x0000 1 0
+#define MX6UL_PAD_ENET1_RX_DATA0__PWM1_OUT                             0x00c4 0x0350 0x0000 2 0
+#define MX6UL_PAD_ENET1_RX_DATA0__CSI_DATA16                           0x00c4 0x0350 0x0000 3 0
+#define MX6UL_PAD_ENET1_RX_DATA0__FLEXCAN1_TX                          0x00c4 0x0350 0x0000 4 0
+#define MX6UL_PAD_ENET1_RX_DATA0__GPIO2_IO00                           0x00c4 0x0350 0x0000 5 0
+#define MX6UL_PAD_ENET1_RX_DATA0__KPP_ROW00                            0x00c4 0x0350 0x0000 6 0
+#define MX6UL_PAD_ENET1_RX_DATA0__USDHC1_LCTL                          0x00c4 0x0350 0x0000 8 0
+#define MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01                        0x00c8 0x0354 0x0000 0 0
+#define MX6UL_PAD_ENET1_RX_DATA1__UART4_DCE_CTS                        0x00c8 0x0354 0x0000 1 0
+#define MX6UL_PAD_ENET1_RX_DATA1__UART4_DTE_RTS                        0x00c8 0x0354 0x0638 1 1
+#define MX6UL_PAD_ENET1_RX_DATA1__PWM2_OUT                             0x00c8 0x0354 0x0000 2 0
+#define MX6UL_PAD_ENET1_RX_DATA1__CSI_DATA17                           0x00c8 0x0354 0x0000 3 0
+#define MX6UL_PAD_ENET1_RX_DATA1__FLEXCAN1_RX                          0x00c8 0x0354 0x0584 4 1
+#define MX6UL_PAD_ENET1_RX_DATA1__GPIO2_IO01                           0x00c8 0x0354 0x0000 5 0
+#define MX6UL_PAD_ENET1_RX_DATA1__KPP_COL00                            0x00c8 0x0354 0x0000 6 0
+#define MX6UL_PAD_ENET1_RX_DATA1__USDHC2_LCTL                          0x00c8 0x0354 0x0000 8 0
+#define MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN                             0x00cc 0x0358 0x0000 0 0
+#define MX6UL_PAD_ENET1_RX_EN__UART5_DCE_RTS                           0x00cc 0x0358 0x0640 1 3
+#define MX6UL_PAD_ENET1_RX_EN__UART5_DTE_CTS                           0x00cc 0x0358 0x0000 1 0
+#define MX6UL_PAD_ENET1_RX_EN__CSI_DATA18                              0x00cc 0x0358 0x0000 3 0
+#define MX6UL_PAD_ENET1_RX_EN__FLEXCAN2_TX                             0x00cc 0x0358 0x0000 4 0
+#define MX6UL_PAD_ENET1_RX_EN__GPIO2_IO02                              0x00cc 0x0358 0x0000 5 0
+#define MX6UL_PAD_ENET1_RX_EN__KPP_ROW01                               0x00cc 0x0358 0x0000 6 0
+#define MX6UL_PAD_ENET1_RX_EN__USDHC1_VSELECT                          0x00cc 0x0358 0x0000 8 0
+#define MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00                        0x00d0 0x035c 0x0000 0 0
+#define MX6UL_PAD_ENET1_TX_DATA0__UART5_DCE_CTS                        0x00d0 0x035c 0x0000 1 0
+#define MX6UL_PAD_ENET1_TX_DATA0__UART5_DTE_RTS                        0x00d0 0x035c 0x0640 1 4
+#define MX6UL_PAD_ENET1_TX_DATA0__CSI_DATA19                           0x00d0 0x035c 0x0000 3 0
+#define MX6UL_PAD_ENET1_TX_DATA0__FLEXCAN2_RX                          0x00d0 0x035c 0x0588 4 1
+#define MX6UL_PAD_ENET1_TX_DATA0__GPIO2_IO03                           0x00d0 0x035c 0x0000 5 0
+#define MX6UL_PAD_ENET1_TX_DATA0__KPP_COL01                            0x00d0 0x035c 0x0000 6 0
+#define MX6UL_PAD_ENET1_TX_DATA0__USDHC2_VSELECT                       0x00d0 0x035c 0x0000 8 0
+#define MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01                        0x00d4 0x0360 0x0000 0 0
+#define MX6UL_PAD_ENET1_TX_DATA1__UART6_DCE_CTS                        0x00d4 0x0360 0x0000 1 0
+#define MX6UL_PAD_ENET1_TX_DATA1__UART6_DTE_RTS                        0x00d4 0x0360 0x0648 1 2
+#define MX6UL_PAD_ENET1_TX_DATA1__PWM5_OUT                             0x00d4 0x0360 0x0000 2 0
+#define MX6UL_PAD_ENET1_TX_DATA1__CSI_DATA20                           0x00d4 0x0360 0x0000 3 0
+#define MX6UL_PAD_ENET1_TX_DATA1__ENET2_MDIO                           0x00d4 0x0360 0x0580 4 1
+#define MX6UL_PAD_ENET1_TX_DATA1__GPIO2_IO04                           0x00d4 0x0360 0x0000 5 0
+#define MX6UL_PAD_ENET1_TX_DATA1__KPP_ROW02                            0x00d4 0x0360 0x0000 6 0
+#define MX6UL_PAD_ENET1_TX_DATA1__WDOG1_WDOG_RST_B_DEB                 0x00d4 0x0360 0x0000 8 0
+#define MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN                             0x00d8 0x0364 0x0000 0 0
+#define MX6UL_PAD_ENET1_TX_EN__UART6_DCE_RTS                           0x00d8 0x0364 0x0648 1 3
+#define MX6UL_PAD_ENET1_TX_EN__UART6_DTE_CTS                           0x00d8 0x0364 0x0000 1 0
+#define MX6UL_PAD_ENET1_TX_EN__PWM6_OUT                                0x00d8 0x0364 0x0000 2 0
+#define MX6UL_PAD_ENET1_TX_EN__CSI_DATA21                              0x00d8 0x0364 0x0000 3 0
+#define MX6UL_PAD_ENET1_TX_EN__ENET2_MDC                               0x00d8 0x0364 0x0000 4 0
+#define MX6UL_PAD_ENET1_TX_EN__GPIO2_IO05                              0x00d8 0x0364 0x0000 5 0
+#define MX6UL_PAD_ENET1_TX_EN__KPP_COL02                               0x00d8 0x0364 0x0000 6 0
+#define MX6UL_PAD_ENET1_TX_EN__WDOG2_WDOG_RST_B_DEB                    0x00d8 0x0364 0x0000 8 0
+#define MX6UL_PAD_ENET1_TX_CLK__ENET1_TX_CLK                           0x00dc 0x0368 0x0000 0 0
+#define MX6UL_PAD_ENET1_TX_CLK__UART7_DCE_CTS                          0x00dc 0x0368 0x0000 1 0
+#define MX6UL_PAD_ENET1_TX_CLK__UART7_DTE_RTS                          0x00dc 0x0368 0x0650 1 0
+#define MX6UL_PAD_ENET1_TX_CLK__PWM7_OUT                               0x00dc 0x0368 0x0000 2 0
+#define MX6UL_PAD_ENET1_TX_CLK__CSI_DATA22                             0x00dc 0x0368 0x0000 3 0
+#define MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1                         0x00dc 0x0368 0x0574 4 2
+#define MX6UL_PAD_ENET1_TX_CLK__GPIO2_IO06                             0x00dc 0x0368 0x0000 5 0
+#define MX6UL_PAD_ENET1_TX_CLK__KPP_ROW03                              0x00dc 0x0368 0x0000 6 0
+#define MX6UL_PAD_ENET1_TX_CLK__GPT1_CLK                               0x00dc 0x0368 0x0000 8 0
+#define MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER                             0x00e0 0x036c 0x0000 0 0
+#define MX6UL_PAD_ENET1_RX_ER__UART7_DCE_RTS                           0x00e0 0x036c 0x0650 1 1
+#define MX6UL_PAD_ENET1_RX_ER__UART7_DTE_CTS                           0x00e0 0x036c 0x0000 1 0
+#define MX6UL_PAD_ENET1_RX_ER__PWM8_OUT                                0x00e0 0x036c 0x0000 2 0
+#define MX6UL_PAD_ENET1_RX_ER__CSI_DATA23                              0x00e0 0x036c 0x0000 3 0
+#define MX6UL_PAD_ENET1_RX_ER__EIM_CRE                                 0x00e0 0x036c 0x0000 4 0
+#define MX6UL_PAD_ENET1_RX_ER__GPIO2_IO07                              0x00e0 0x036c 0x0000 5 0
+#define MX6UL_PAD_ENET1_RX_ER__KPP_COL03                               0x00e0 0x036c 0x0000 6 0
+#define MX6UL_PAD_ENET1_RX_ER__GPT1_CAPTURE2                           0x00e0 0x036c 0x0000 8 0
+#define MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00                        0x00e4 0x0370 0x0000 0 0
+#define MX6UL_PAD_ENET2_RX_DATA0__UART6_DCE_TX                         0x00e4 0x0370 0x0000 1 0
+#define MX6UL_PAD_ENET2_RX_DATA0__UART6_DTE_RX                         0x00e4 0x0370 0x064c 1 1
+#define MX6UL_PAD_ENET2_RX_DATA0__SIM1_PORT0_TRXD                      0x00e4 0x0370 0x0000 2 0
+#define MX6UL_PAD_ENET2_RX_DATA0__I2C3_SCL                             0x00e4 0x0370 0x05b4 3 1
+#define MX6UL_PAD_ENET2_RX_DATA0__ENET1_MDIO                           0x00e4 0x0370 0x0578 4 1
+#define MX6UL_PAD_ENET2_RX_DATA0__GPIO2_IO08                           0x00e4 0x0370 0x0000 5 0
+#define MX6UL_PAD_ENET2_RX_DATA0__KPP_ROW04                            0x00e4 0x0370 0x0000 6 0
+#define MX6UL_PAD_ENET2_RX_DATA0__USB_OTG1_PWR                         0x00e4 0x0370 0x0000 8 0
+#define MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01                        0x00e8 0x0374 0x0000 0 0
+#define MX6UL_PAD_ENET2_RX_DATA1__UART6_DCE_RX                         0x00e8 0x0374 0x064c 1 2
+#define MX6UL_PAD_ENET2_RX_DATA1__UART6_DTE_TX                         0x00e8 0x0374 0x0000 1 0
+#define MX6UL_PAD_ENET2_RX_DATA1__SIM1_PORT0_cLK                       0x00e8 0x0374 0x0000 2 0
+#define MX6UL_PAD_ENET2_RX_DATA1__I2C3_SDA                             0x00e8 0x0374 0x05b8 3 1
+#define MX6UL_PAD_ENET2_RX_DATA1__ENET1_MDC                            0x00e8 0x0374 0x0000 4 0
+#define MX6UL_PAD_ENET2_RX_DATA1__GPIO2_IO09                           0x00e8 0x0374 0x0000 5 0
+#define MX6UL_PAD_ENET2_RX_DATA1__KPP_COL04                            0x00e8 0x0374 0x0000 6 0
+#define MX6UL_PAD_ENET2_RX_DATA1__USB_OTG1_OC                          0x00e8 0x0374 0x0000 8 0
+#define MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN                             0x00ec 0x0378 0x0000 0 0
+#define MX6UL_PAD_ENET2_RX_EN__UART7_DCE_TX                            0x00ec 0x0378 0x0000 1 0
+#define MX6UL_PAD_ENET2_RX_EN__UART7_DTE_RX                            0x00ec 0x0378 0x0654 1 0
+#define MX6UL_PAD_ENET2_RX_EN__SIM1_PORT0_RST_B                        0x00ec 0x0378 0x0000 2 0
+#define MX6UL_PAD_ENET2_RX_EN__I2C4_SCL                                0x00ec 0x0378 0x05bc 3 1
+#define MX6UL_PAD_ENET2_RX_EN__EIM_ADDR26                              0x00ec 0x0378 0x0000 4 0
+#define MX6UL_PAD_ENET2_RX_EN__GPIO2_IO10                              0x00ec 0x0378 0x0000 5 0
+#define MX6UL_PAD_ENET2_RX_EN__KPP_ROW05                               0x00ec 0x0378 0x0000 6 0
+#define MX6UL_PAD_ENET2_RX_EN__ENET1_REF_CLK_25M                       0x00ec 0x0378 0x0000 8 0
+#define MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00                        0x00f0 0x037c 0x0000 0 0
+#define MX6UL_PAD_ENET2_TX_DATA0__UART7_DCE_RX                         0x00f0 0x037c 0x0654 1 1
+#define MX6UL_PAD_ENET2_TX_DATA0__UART7_DTE_TX                         0x00f0 0x037c 0x0000 1 0
+#define MX6UL_PAD_ENET2_TX_DATA0__SIM1_PORT0_SVEN                      0x00f0 0x037c 0x0000 2 0
+#define MX6UL_PAD_ENET2_TX_DATA0__I2C4_SDA                             0x00f0 0x037c 0x05c0 3 1
+#define MX6UL_PAD_ENET2_TX_DATA0__EIM_EB_B02                           0x00f0 0x037c 0x0000 4 0
+#define MX6UL_PAD_ENET2_TX_DATA0__GPIO2_IO11                           0x00f0 0x037c 0x0000 5 0
+#define MX6UL_PAD_ENET2_TX_DATA0__KPP_COL05                            0x00f0 0x037c 0x0000 6 0
+#define MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01                        0x00f4 0x0380 0x0000 0 0
+#define MX6UL_PAD_ENET2_TX_DATA1__UART8_DCE_TX                         0x00f4 0x0380 0x0000 1 0
+#define MX6UL_PAD_ENET2_TX_DATA1__UART8_DTE_RX                         0x00f4 0x0380 0x065c 1 0
+#define MX6UL_PAD_ENET2_TX_DATA1__SIM2_PORT0_TRXD                      0x00f4 0x0380 0x0000 2 0
+#define MX6UL_PAD_ENET2_TX_DATA1__ECSPI4_SCLK                          0x00f4 0x0380 0x0564 3 0
+#define MX6UL_PAD_ENET2_TX_DATA1__EIM_EB_B03                           0x00f4 0x0380 0x0000 4 0
+#define MX6UL_PAD_ENET2_TX_DATA1__GPIO2_IO12                           0x00f4 0x0380 0x0000 5 0
+#define MX6UL_PAD_ENET2_TX_DATA1__KPP_ROW06                            0x00f4 0x0380 0x0000 6 0
+#define MX6UL_PAD_ENET2_TX_DATA1__USB_OTG2_PWR                         0x00f4 0x0380 0x0000 8 0
+#define MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN                             0x00f8 0x0384 0x0000 0 0
+#define MX6UL_PAD_ENET2_TX_EN__UART8_DCE_RX                            0x00f8 0x0384 0x065c 1 1
+#define MX6UL_PAD_ENET2_TX_EN__UART8_DTE_TX                            0x00f8 0x0384 0x0000 1 0
+#define MX6UL_PAD_ENET2_TX_EN__SIM2_PORT0_cLK                          0x00f8 0x0384 0x0000 2 0
+#define MX6UL_PAD_ENET2_TX_EN__ECSPI4_MOSI                             0x00f8 0x0384 0x056c 3 0
+#define MX6UL_PAD_ENET2_TX_EN__EIM_ACLK_FREERUN                        0x00f8 0x0384 0x0000 4 0
+#define MX6UL_PAD_ENET2_TX_EN__GPIO2_IO13                              0x00f8 0x0384 0x0000 5 0
+#define MX6UL_PAD_ENET2_TX_EN__KPP_COL06                               0x00f8 0x0384 0x0000 6 0
+#define MX6UL_PAD_ENET2_TX_EN__USB_OTG2_OC                             0x00f8 0x0384 0x0000 8 0
+#define MX6UL_PAD_ENET2_TX_CLK__ENET2_TX_CLK                           0x00fc 0x0388 0x0000 0 0
+#define MX6UL_PAD_ENET2_TX_CLK__UART8_DCE_CTS                          0x00fc 0x0388 0x0000 1 0
+#define MX6UL_PAD_ENET2_TX_CLK__UART8_DTE_RTS                          0x00fc 0x0388 0x0658 1 0
+#define MX6UL_PAD_ENET2_TX_CLK__SIM2_PORT0_RST_B                       0x00fc 0x0388 0x0000 2 0
+#define MX6UL_PAD_ENET2_TX_CLK__ECSPI4_MISO                            0x00fc 0x0388 0x0568 3 0
+#define MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2                         0x00fc 0x0388 0x057c 4 2
+#define MX6UL_PAD_ENET2_TX_CLK__GPIO2_IO14                             0x00fc 0x0388 0x0000 5 0
+#define MX6UL_PAD_ENET2_TX_CLK__KPP_ROW07                              0x00fc 0x0388 0x0000 6 0
+#define MX6UL_PAD_ENET2_TX_CLK__ANATOP_OTG2_ID                         0x00fc 0x0388 0x0000 8 0
+#define MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER                             0x0100 0x038c 0x0000 0 0
+#define MX6UL_PAD_ENET2_RX_ER__UART8_DCE_RTS                           0x0100 0x038c 0x0658 1 1
+#define MX6UL_PAD_ENET2_RX_ER__UART8_DTE_CTS                           0x0100 0x038c 0x0000 1 0
+#define MX6UL_PAD_ENET2_RX_ER__SIM2_PORT0_SVEN                         0x0100 0x038c 0x0000 2 0
+#define MX6UL_PAD_ENET2_RX_ER__ECSPI4_SS0                              0x0100 0x038c 0x0000 3 0
+#define MX6UL_PAD_ENET2_RX_ER__EIM_ADDR25                              0x0100 0x038c 0x0000 4 0
+#define MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15                              0x0100 0x038c 0x0000 5 0
+#define MX6UL_PAD_ENET2_RX_ER__KPP_COL07                               0x0100 0x038c 0x0000 6 0
+#define MX6UL_PAD_ENET2_RX_ER__WDOG1_WDOG_ANY                          0x0100 0x038c 0x0000 8 0
+#define MX6UL_PAD_LCD_CLK__LCDIF_CLK                                   0x0104 0x0390 0x0000 0 0
+#define MX6UL_PAD_LCD_CLK__LCDIF_WR_RWN                                0x0104 0x0390 0x0000 1 0
+#define MX6UL_PAD_LCD_CLK__UART4_DCE_TX                                0x0104 0x0390 0x0000 2 0
+#define MX6UL_PAD_LCD_CLK__UART4_DTE_RX                                0x0104 0x0390 0x063c 2 2
+#define MX6UL_PAD_LCD_CLK__SAI3_MCLK                                   0x0104 0x0390 0x0000 3 0
+#define MX6UL_PAD_LCD_CLK__EIM_CS2_B                                   0x0104 0x0390 0x0000 4 0
+#define MX6UL_PAD_LCD_CLK__GPIO3_IO00                                  0x0104 0x0390 0x0000 5 0
+#define MX6UL_PAD_LCD_CLK__WDOG1_WDOG_RST_B_DEB                        0x0104 0x0390 0x0000 8 0
+#define MX6UL_PAD_LCD_ENABLE__LCDIF_ENABLE                             0x0108 0x0394 0x0000 0 0
+#define MX6UL_PAD_LCD_ENABLE__LCDIF_RD_E                               0x0108 0x0394 0x0000 1 0
+#define MX6UL_PAD_LCD_ENABLE__UART4_DCE_RX                             0x0108 0x0394 0x063c 2 3
+#define MX6UL_PAD_LCD_ENABLE__UART4_DTE_TX                             0x0108 0x0394 0x0000 2 0
+#define MX6UL_PAD_LCD_ENABLE__SAI3_TX_SYNC                             0x0108 0x0394 0x060c 3 0
+#define MX6UL_PAD_LCD_ENABLE__EIM_CS3_B                                0x0108 0x0394 0x0000 4 0
+#define MX6UL_PAD_LCD_ENABLE__GPIO3_IO01                               0x0108 0x0394 0x0000 5 0
+#define MX6UL_PAD_LCD_ENABLE__ECSPI2_RDY                               0x0108 0x0394 0x0000 8 0
+#define MX6UL_PAD_LCD_HSYNC__LCDIF_HSYNC                               0x010c 0x0398 0x05dc 0 0
+#define MX6UL_PAD_LCD_HSYNC__LCDIF_RS                                  0x010c 0x0398 0x0000 1 0
+#define MX6UL_PAD_LCD_HSYNC__UART4_DCE_CTS                             0x010c 0x0398 0x0000 2 0
+#define MX6UL_PAD_LCD_HSYNC__UART4_DTE_RTS                             0x010c 0x0398 0x0638 2 2
+#define MX6UL_PAD_LCD_HSYNC__SAI3_TX_BCLK                              0x010c 0x0398 0x0608 3 0
+#define MX6UL_PAD_LCD_HSYNC__WDOG3_WDOG_RST_B_DEB                      0x010c 0x0398 0x0000 4 0
+#define MX6UL_PAD_LCD_HSYNC__GPIO3_IO02                                0x010c 0x0398 0x0000 5 0
+#define MX6UL_PAD_LCD_HSYNC__ECSPI2_SS1                                0x010c 0x0398 0x0000 8 0
+#define MX6UL_PAD_LCD_VSYNC__LCDIF_VSYNC                               0x0110 0x039c 0x0000 0 0
+#define MX6UL_PAD_LCD_VSYNC__LCDIF_BUSY                                0x0110 0x039c 0x05dc 1 1
+#define MX6UL_PAD_LCD_VSYNC__UART4_DCE_RTS                             0x0110 0x039c 0x0638 2 3
+#define MX6UL_PAD_LCD_VSYNC__UART4_DTE_CTS                             0x0110 0x039c 0x0000 2 0
+#define MX6UL_PAD_LCD_VSYNC__SAI3_RX_DATA                              0x0110 0x039c 0x0000 3 0
+#define MX6UL_PAD_LCD_VSYNC__WDOG2_WDOG_B                              0x0110 0x039c 0x0000 4 0
+#define MX6UL_PAD_LCD_VSYNC__GPIO3_IO03                                0x0110 0x039c 0x0000 5 0
+#define MX6UL_PAD_LCD_VSYNC__ECSPI2_SS2                                0x0110 0x039c 0x0000 8 0
+#define MX6UL_PAD_LCD_RESET__LCDIF_RESET                               0x0114 0x03a0 0x0000 0 0
+#define MX6UL_PAD_LCD_RESET__LCDIF_CS                                  0x0114 0x03a0 0x0000 1 0
+#define MX6UL_PAD_LCD_RESET__CA7_MX6UL_EVENTI                          0x0114 0x03a0 0x0000 2 0
+#define MX6UL_PAD_LCD_RESET__SAI3_TX_DATA                              0x0114 0x03a0 0x0000 3 0
+#define MX6UL_PAD_LCD_RESET__WDOG1_WDOG_ANY                            0x0114 0x03a0 0x0000 4 0
+#define MX6UL_PAD_LCD_RESET__GPIO3_IO04                                0x0114 0x03a0 0x0000 5 0
+#define MX6UL_PAD_LCD_RESET__ECSPI2_SS3                                0x0114 0x03a0 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA00__LCDIF_DATA00                             0x0118 0x03a4 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA00__PWM1_OUT                                 0x0118 0x03a4 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA00__ENET1_1588_EVENT2_IN                     0x0118 0x03a4 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA00__I2C3_SDA                                 0x0118 0x03a4 0x05b8 4 2
+#define MX6UL_PAD_LCD_DATA00__GPIO3_IO05                               0x0118 0x03a4 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA00__SRC_BT_CFG00                             0x0118 0x03a4 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA00__SAI1_MCLK                                0x0118 0x03a4 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA01__LCDIF_DATA01                             0x011c 0x03a8 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA01__PWM2_OUT                                 0x011c 0x03a8 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA01__ENET1_1588_EVENT2_OUT                    0x011c 0x03a8 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA01__I2C3_SCL                                 0x011c 0x03a8 0x05b4 4 2
+#define MX6UL_PAD_LCD_DATA01__GPIO3_IO06                               0x011c 0x03a8 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA01__SRC_BT_CFG01                             0x011c 0x03a8 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA01__SAI1_TX_SYNC                             0x011c 0x03a8 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA02__LCDIF_DATA02                             0x0120 0x03ac 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA02__PWM3_OUT                                 0x0120 0x03ac 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA02__ENET1_1588_EVENT3_IN                     0x0120 0x03ac 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA02__I2C4_SDA                                 0x0120 0x03ac 0x05c0 4 2
+#define MX6UL_PAD_LCD_DATA02__GPIO3_IO07                               0x0120 0x03ac 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA02__SRC_BT_CFG02                             0x0120 0x03ac 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA02__SAI1_TX_BCLK                             0x0120 0x03ac 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA03__LCDIF_DATA03                             0x0124 0x03b0 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA03__PWM4_OUT                                 0x0124 0x03b0 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA03__ENET1_1588_EVENT3_OUT                    0x0124 0x03b0 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA03__I2C4_SCL                                 0x0124 0x03b0 0x05bc 4 2
+#define MX6UL_PAD_LCD_DATA03__GPIO3_IO08                               0x0124 0x03b0 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA03__SRC_BT_CFG03                             0x0124 0x03b0 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA03__SAI1_RX_DATA                             0x0124 0x03b0 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA04__LCDIF_DATA04                             0x0128 0x03b4 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA04__UART8_DCE_CTS                            0x0128 0x03b4 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA04__UART8_DTE_RTS                            0x0128 0x03b4 0x0658 1 2
+#define MX6UL_PAD_LCD_DATA04__ENET2_1588_EVENT2_IN                     0x0128 0x03b4 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA04__SPDIF_SR_CLK                             0x0128 0x03b4 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA04__GPIO3_IO09                               0x0128 0x03b4 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA04__SRC_BT_CFG04                             0x0128 0x03b4 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA04__SAI1_TX_DATA                             0x0128 0x03b4 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA05__LCDIF_DATA05                             0x012c 0x03b8 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA05__UART8_DCE_RTS                            0x012c 0x03b8 0x0658 1 3
+#define MX6UL_PAD_LCD_DATA05__UART8_DTE_CTS                            0x012c 0x03b8 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA05__ENET2_1588_EVENT2_OUT                    0x012c 0x03b8 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA05__SPDIF_OUT                                0x012c 0x03b8 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA05__GPIO3_IO10                               0x012c 0x03b8 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA05__SRC_BT_CFG05                             0x012c 0x03b8 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA05__ECSPI1_SS1                               0x012c 0x03b8 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA06__LCDIF_DATA06                             0x0130 0x03bc 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA06__UART7_DCE_CTS                            0x0130 0x03bc 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA06__UART7_DTE_RTS                            0x0130 0x03bc 0x0650 1 2
+#define MX6UL_PAD_LCD_DATA06__ENET2_1588_EVENT3_IN                     0x0130 0x03bc 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA06__SPDIF_LOCK                               0x0130 0x03bc 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA06__GPIO3_IO11                               0x0130 0x03bc 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA06__SRC_BT_CFG06                             0x0130 0x03bc 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA06__ECSPI1_SS2                               0x0130 0x03bc 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA07__LCDIF_DATA07                             0x0134 0x03c0 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA07__UART7_DCE_RTS                            0x0134 0x03c0 0x0650 1 3
+#define MX6UL_PAD_LCD_DATA07__UART7_DTE_CTS                            0x0134 0x03c0 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA07__ENET2_1588_EVENT3_OUT                    0x0134 0x03c0 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA07__SPDIF_EXT_CLK                            0x0134 0x03c0 0x061c 4 0
+#define MX6UL_PAD_LCD_DATA07__GPIO3_IO12                               0x0134 0x03c0 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA07__SRC_BT_CFG07                             0x0134 0x03c0 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA07__ECSPI1_SS3                               0x0134 0x03c0 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA08__LCDIF_DATA08                             0x0138 0x03c4 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA08__SPDIF_IN                                 0x0138 0x03c4 0x0618 1 2
+#define MX6UL_PAD_LCD_DATA08__CSI_DATA16                               0x0138 0x03c4 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA08__EIM_DATA00                               0x0138 0x03c4 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA08__GPIO3_IO13                               0x0138 0x03c4 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA08__SRC_BT_CFG08                             0x0138 0x03c4 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA08__FLEXCAN1_TX                              0x0138 0x03c4 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA09__LCDIF_DATA09                             0x013c 0x03c8 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA09__SAI3_MCLK                                0x013c 0x03c8 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA09__CSI_DATA17                               0x013c 0x03c8 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA09__EIM_DATA01                               0x013c 0x03c8 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA09__GPIO3_IO14                               0x013c 0x03c8 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA09__SRC_BT_CFG09                             0x013c 0x03c8 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA09__FLEXCAN1_RX                              0x013c 0x03c8 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA10__LCDIF_DATA10                             0x0140 0x03cc 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA10__SAI3_RX_SYNC                             0x0140 0x03cc 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA10__CSI_DATA18                               0x0140 0x03cc 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA10__EIM_DATA02                               0x0140 0x03cc 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA10__GPIO3_IO15                               0x0140 0x03cc 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA10__SRC_BT_CFG10                             0x0140 0x03cc 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA10__FLEXCAN2_TX                              0x0140 0x03cc 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA11__LCDIF_DATA11                             0x0144 0x03d0 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA11__SAI3_RX_BCLK                             0x0144 0x03d0 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA11__CSI_DATA19                               0x0144 0x03d0 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA11__EIM_DATA03                               0x0144 0x03d0 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA11__GPIO3_IO16                               0x0144 0x03d0 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA11__SRC_BT_CFG11                             0x0144 0x03d0 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA11__FLEXCAN2_RX                              0x0144 0x03d0 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA12__LCDIF_DATA12                             0x0148 0x03d4 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA12__SAI3_TX_SYNC                             0x0148 0x03d4 0x060c 1 1
+#define MX6UL_PAD_LCD_DATA12__CSI_DATA20                               0x0148 0x03d4 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA12__EIM_DATA04                               0x0148 0x03d4 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA12__GPIO3_IO17                               0x0148 0x03d4 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA12__SRC_BT_CFG12                             0x0148 0x03d4 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA12__ECSPI1_RDY                               0x0148 0x03d4 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA13__LCDIF_DATA13                             0x014c 0x03d8 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA13__SAI3_TX_BCLK                             0x014c 0x03d8 0x0608 1 1
+#define MX6UL_PAD_LCD_DATA13__CSI_DATA21                               0x014c 0x03d8 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA13__EIM_DATA05                               0x014c 0x03d8 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA13__GPIO3_IO18                               0x014c 0x03d8 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA13__SRC_BT_CFG13                             0x014c 0x03d8 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA13__USDHC2_RESET_B                           0x014c 0x03d8 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA14__LCDIF_DATA14                             0x0150 0x03dc 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA14__SAI3_RX_DATA                             0x0150 0x03dc 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA14__CSI_DATA22                               0x0150 0x03dc 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA14__EIM_DATA06                               0x0150 0x03dc 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA14__GPIO3_IO19                               0x0150 0x03dc 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA14__SRC_BT_CFG14                             0x0150 0x03dc 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA14__USDHC2_DATA4                             0x0150 0x03dc 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA15__LCDIF_DATA15                             0x0154 0x03e0 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA15__SAI3_TX_DATA                             0x0154 0x03e0 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA15__CSI_DATA23                               0x0154 0x03e0 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA15__EIM_DATA07                               0x0154 0x03e0 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA15__GPIO3_IO20                               0x0154 0x03e0 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA15__SRC_BT_CFG15                             0x0154 0x03e0 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA15__USDHC2_DATA5                             0x0154 0x03e0 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA16__LCDIF_DATA16                             0x0158 0x03e4 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA16__UART7_DCE_TX                             0x0158 0x03e4 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA16__UART7_DTE_RX                             0x0158 0x03e4 0x0654 1 2
+#define MX6UL_PAD_LCD_DATA16__CSI_DATA01                               0x0158 0x03e4 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA16__EIM_DATA08                               0x0158 0x03e4 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA16__GPIO3_IO21                               0x0158 0x03e4 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA16__SRC_BT_CFG24                             0x0158 0x03e4 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA16__USDHC2_DATA6                             0x0158 0x03e4 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA17__LCDIF_DATA17                             0x015c 0x03e8 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA17__UART7_DCE_RX                             0x015c 0x03e8 0x0654 1 3
+#define MX6UL_PAD_LCD_DATA17__UART7_DTE_TX                             0x015c 0x03e8 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA17__CSI_DATA00                               0x015c 0x03e8 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA17__EIM_DATA09                               0x015c 0x03e8 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA17__GPIO3_IO22                               0x015c 0x03e8 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA17__SRC_BT_CFG25                             0x015c 0x03e8 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA17__USDHC2_DATA7                             0x015c 0x03e8 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA18__LCDIF_DATA18                             0x0160 0x03ec 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA18__PWM5_OUT                                 0x0160 0x03ec 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA18__CA7_MX6UL_EVENTO                         0x0160 0x03ec 0x0000 2 0
+#define MX6UL_PAD_LCD_DATA18__CSI_DATA10                               0x0160 0x03ec 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA18__EIM_DATA10                               0x0160 0x03ec 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA18__GPIO3_IO23                               0x0160 0x03ec 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA18__SRC_BT_CFG26                             0x0160 0x03ec 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA18__USDHC2_CMD                               0x0160 0x03ec 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA19__EIM_DATA11                               0x0164 0x03f0 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA19__GPIO3_IO24                               0x0164 0x03f0 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA19__SRC_BT_CFG27                             0x0164 0x03f0 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA19__USDHC2_CLK                               0x0164 0x03f0 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA19__LCDIF_DATA19                             0x0164 0x03f0 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA19__PWM6_OUT                                 0x0164 0x03f0 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA19__WDOG1_WDOG_ANY                           0x0164 0x03f0 0x0000 2 0
+#define MX6UL_PAD_LCD_DATA19__CSI_DATA11                               0x0164 0x03f0 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA20__EIM_DATA12                               0x0168 0x03f4 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA20__GPIO3_IO25                               0x0168 0x03f4 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA20__SRC_BT_CFG28                             0x0168 0x03f4 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA20__USDHC2_DATA0                             0x0168 0x03f4 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA20__LCDIF_DATA20                             0x0168 0x03f4 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA20__UART8_DCE_TX                             0x0168 0x03f4 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA20__UART8_DTE_RX                             0x0168 0x03f4 0x065c 1 2
+#define MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK                              0x0168 0x03f4 0x0534 2 0
+#define MX6UL_PAD_LCD_DATA20__CSI_DATA12                               0x0168 0x03f4 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA21__LCDIF_DATA21                             0x016c 0x03f8 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA21__UART8_DCE_RX                             0x016c 0x03f8 0x065c 1 3
+#define MX6UL_PAD_LCD_DATA21__UART8_DTE_TX                             0x016c 0x03f8 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA21__ECSPI1_SS0                               0x016c 0x03f8 0x0000 2 0
+#define MX6UL_PAD_LCD_DATA21__CSI_DATA13                               0x016c 0x03f8 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA21__EIM_DATA13                               0x016c 0x03f8 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA21__GPIO3_IO26                               0x016c 0x03f8 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA21__SRC_BT_CFG29                             0x016c 0x03f8 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA21__USDHC2_DATA1                             0x016c 0x03f8 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA22__LCDIF_DATA22                             0x0170 0x03fc 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA22__MQS_RIGHT                                0x0170 0x03fc 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI                              0x0170 0x03fc 0x053c 2 0
+#define MX6UL_PAD_LCD_DATA22__CSI_DATA14                               0x0170 0x03fc 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA22__EIM_DATA14                               0x0170 0x03fc 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA22__GPIO3_IO27                               0x0170 0x03fc 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA22__SRC_BT_CFG30                             0x0170 0x03fc 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA22__USDHC2_DATA2                             0x0170 0x03fc 0x0000 8 0
+#define MX6UL_PAD_LCD_DATA23__LCDIF_DATA23                             0x0174 0x0400 0x0000 0 0
+#define MX6UL_PAD_LCD_DATA23__MQS_LEFT                                 0x0174 0x0400 0x0000 1 0
+#define MX6UL_PAD_LCD_DATA23__ECSPI1_MISO                              0x0174 0x0400 0x0538 2 0
+#define MX6UL_PAD_LCD_DATA23__CSI_DATA15                               0x0174 0x0400 0x0000 3 0
+#define MX6UL_PAD_LCD_DATA23__EIM_DATA15                               0x0174 0x0400 0x0000 4 0
+#define MX6UL_PAD_LCD_DATA23__GPIO3_IO28                               0x0174 0x0400 0x0000 5 0
+#define MX6UL_PAD_LCD_DATA23__SRC_BT_CFG31                             0x0174 0x0400 0x0000 6 0
+#define MX6UL_PAD_LCD_DATA23__USDHC2_DATA3                             0x0174 0x0400 0x0000 8 0
+#define MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B                              0x0178 0x0404 0x0000 0 0
+#define MX6UL_PAD_NAND_RE_B__USDHC2_CLK                                0x0178 0x0404 0x0670 1 2
+#define MX6UL_PAD_NAND_RE_B__QSPI_B_SCLK                               0x0178 0x0404 0x0000 2 0
+#define MX6UL_PAD_NAND_RE_B__KPP_ROW00                                 0x0178 0x0404 0x0000 3 0
+#define MX6UL_PAD_NAND_RE_B__EIM_EB_B00                                0x0178 0x0404 0x0000 4 0
+#define MX6UL_PAD_NAND_RE_B__GPIO4_IO00                                0x0178 0x0404 0x0000 5 0
+#define MX6UL_PAD_NAND_RE_B__ECSPI3_SS2                                0x0178 0x0404 0x0000 8 0
+#define MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B                              0x017c 0x0408 0x0000 0 0
+#define MX6UL_PAD_NAND_WE_B__USDHC2_CMD                                0x017c 0x0408 0x0678 1 2
+#define MX6UL_PAD_NAND_WE_B__QSPI_B_SS0_B                              0x017c 0x0408 0x0000 2 0
+#define MX6UL_PAD_NAND_WE_B__KPP_COL00                                 0x017c 0x0408 0x0000 3 0
+#define MX6UL_PAD_NAND_WE_B__EIM_EB_B01                                0x017c 0x0408 0x0000 4 0
+#define MX6UL_PAD_NAND_WE_B__GPIO4_IO01                                0x017c 0x0408 0x0000 5 0
+#define MX6UL_PAD_NAND_WE_B__ECSPI3_SS3                                0x017c 0x0408 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00                          0x0180 0x040c 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA00__USDHC2_DATA0                            0x0180 0x040c 0x067c 1 2
+#define MX6UL_PAD_NAND_DATA00__QSPI_B_SS1_B                            0x0180 0x040c 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA00__KPP_ROW01                               0x0180 0x040c 0x0000 3 0
+#define MX6UL_PAD_NAND_DATA00__EIM_AD08                                0x0180 0x040c 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA00__GPIO4_IO02                              0x0180 0x040c 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA00__ECSPI4_RDY                              0x0180 0x040c 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01                          0x0184 0x0410 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA01__USDHC2_DATA1                            0x0184 0x0410 0x0680 1 2
+#define MX6UL_PAD_NAND_DATA01__QSPI_B_DQS                              0x0184 0x0410 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA01__KPP_COL01                               0x0184 0x0410 0x0000 3 0
+#define MX6UL_PAD_NAND_DATA01__EIM_AD09                                0x0184 0x0410 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA01__GPIO4_IO03                              0x0184 0x0410 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA01__ECSPI4_SS1                              0x0184 0x0410 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02                          0x0188 0x0414 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA02__USDHC2_DATA2                            0x0188 0x0414 0x0684 1 1
+#define MX6UL_PAD_NAND_DATA02__QSPI_B_DATA00                           0x0188 0x0414 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA02__KPP_ROW02                               0x0188 0x0414 0x0000 3 0
+#define MX6UL_PAD_NAND_DATA02__EIM_AD10                                0x0188 0x0414 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA02__GPIO4_IO04                              0x0188 0x0414 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA02__ECSPI4_SS2                              0x0188 0x0414 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03                          0x018c 0x0418 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA03__USDHC2_DATA3                            0x018c 0x0418 0x0688 1 2
+#define MX6UL_PAD_NAND_DATA03__QSPI_B_DATA01                           0x018c 0x0418 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA03__KPP_COL02                               0x018c 0x0418 0x0000 3 0
+#define MX6UL_PAD_NAND_DATA03__EIM_AD11                                0x018c 0x0418 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA03__GPIO4_IO05                              0x018c 0x0418 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA03__ECSPI4_SS3                              0x018c 0x0418 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04                          0x0190 0x041c 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA04__USDHC2_DATA4                            0x0190 0x041c 0x068c 1 1
+#define MX6UL_PAD_NAND_DATA04__QSPI_B_DATA02                           0x0190 0x041c 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA04__ECSPI4_SCLK                             0x0190 0x041c 0x0564 3 1
+#define MX6UL_PAD_NAND_DATA04__EIM_AD12                                0x0190 0x041c 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA04__GPIO4_IO06                              0x0190 0x041c 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA04__UART2_DCE_TX                            0x0190 0x041c 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA04__UART2_DTE_RX                            0x0190 0x041c 0x062c 8 2
+#define MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05                          0x0194 0x0420 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA05__USDHC2_DATA5                            0x0194 0x0420 0x0690 1 1
+#define MX6UL_PAD_NAND_DATA05__QSPI_B_DATA03                           0x0194 0x0420 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA05__ECSPI4_MOSI                             0x0194 0x0420 0x056c 3 1
+#define MX6UL_PAD_NAND_DATA05__EIM_AD13                                0x0194 0x0420 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA05__GPIO4_IO07                              0x0194 0x0420 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA05__UART2_DCE_RX                            0x0194 0x0420 0x062c 8 3
+#define MX6UL_PAD_NAND_DATA05__UART2_DTE_TX                            0x0194 0x0420 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06                          0x0198 0x0424 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA06__USDHC2_DATA6                            0x0198 0x0424 0x0694 1 1
+#define MX6UL_PAD_NAND_DATA06__SAI2_RX_BCLK                            0x0198 0x0424 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA06__ECSPI4_MISO                             0x0198 0x0424 0x0568 3 1
+#define MX6UL_PAD_NAND_DATA06__EIM_AD14                                0x0198 0x0424 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA06__GPIO4_IO08                              0x0198 0x0424 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA06__UART2_DCE_CTS                           0x0198 0x0424 0x0000 8 0
+#define MX6UL_PAD_NAND_DATA06__UART2_DTE_RTS                           0x0198 0x0424 0x0628 8 4
+#define MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07                          0x019c 0x0428 0x0000 0 0
+#define MX6UL_PAD_NAND_DATA07__USDHC2_DATA7                            0x019c 0x0428 0x0698 1 1
+#define MX6UL_PAD_NAND_DATA07__QSPI_A_SS1_B                            0x019c 0x0428 0x0000 2 0
+#define MX6UL_PAD_NAND_DATA07__ECSPI4_SS0                              0x019c 0x0428 0x0000 3 0
+#define MX6UL_PAD_NAND_DATA07__EIM_AD15                                0x019c 0x0428 0x0000 4 0
+#define MX6UL_PAD_NAND_DATA07__GPIO4_IO09                              0x019c 0x0428 0x0000 5 0
+#define MX6UL_PAD_NAND_DATA07__UART2_DCE_RTS                           0x019c 0x0428 0x0628 8 5
+#define MX6UL_PAD_NAND_DATA07__UART2_DTE_CTS                           0x019c 0x0428 0x0000 8 0
+#define MX6UL_PAD_NAND_ALE__RAWNAND_ALE                                0x01a0 0x042c 0x0000 0 0
+#define MX6UL_PAD_NAND_ALE__USDHC2_RESET_B                             0x01a0 0x042c 0x0000 1 0
+#define MX6UL_PAD_NAND_ALE__QSPI_A_DQS                                 0x01a0 0x042c 0x0000 2 0
+#define MX6UL_PAD_NAND_ALE__PWM3_OUT                                   0x01a0 0x042c 0x0000 3 0
+#define MX6UL_PAD_NAND_ALE__EIM_ADDR17                                 0x01a0 0x042c 0x0000 4 0
+#define MX6UL_PAD_NAND_ALE__GPIO4_IO10                                 0x01a0 0x042c 0x0000 5 0
+#define MX6UL_PAD_NAND_ALE__ECSPI3_SS1                                 0x01a0 0x042c 0x0000 8 0
+#define MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B                              0x01a4 0x0430 0x0000 0 0
+#define MX6UL_PAD_NAND_WP_B__USDHC1_RESET_B                            0x01a4 0x0430 0x0000 1 0
+#define MX6UL_PAD_NAND_WP_B__QSPI_A_SCLK                               0x01a4 0x0430 0x0000 2 0
+#define MX6UL_PAD_NAND_WP_B__PWM4_OUT                                  0x01a4 0x0430 0x0000 3 0
+#define MX6UL_PAD_NAND_WP_B__EIM_BCLK                                  0x01a4 0x0430 0x0000 4 0
+#define MX6UL_PAD_NAND_WP_B__GPIO4_IO11                                0x01a4 0x0430 0x0000 5 0
+#define MX6UL_PAD_NAND_WP_B__ECSPI3_RDY                                0x01a4 0x0430 0x0000 8 0
+#define MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B                        0x01a8 0x0434 0x0000 0 0
+#define MX6UL_PAD_NAND_READY_B__USDHC1_DATA4                           0x01a8 0x0434 0x0000 1 0
+#define MX6UL_PAD_NAND_READY_B__QSPI_A_DATA00                          0x01a8 0x0434 0x0000 2 0
+#define MX6UL_PAD_NAND_READY_B__ECSPI3_SS0                             0x01a8 0x0434 0x0000 3 0
+#define MX6UL_PAD_NAND_READY_B__EIM_CS1_B                              0x01a8 0x0434 0x0000 4 0
+#define MX6UL_PAD_NAND_READY_B__GPIO4_IO12                             0x01a8 0x0434 0x0000 5 0
+#define MX6UL_PAD_NAND_READY_B__UART3_DCE_TX                           0x01a8 0x0434 0x0000 8 0
+#define MX6UL_PAD_NAND_READY_B__UART3_DTE_RX                           0x01a8 0x0434 0x0634 8 2
+#define MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B                            0x01ac 0x0438 0x0000 0 0
+#define MX6UL_PAD_NAND_CE0_B__USDHC1_DATA5                             0x01ac 0x0438 0x0000 1 0
+#define MX6UL_PAD_NAND_CE0_B__QSPI_A_DATA01                            0x01ac 0x0438 0x0000 2 0
+#define MX6UL_PAD_NAND_CE0_B__ECSPI3_SCLK                              0x01ac 0x0438 0x0554 3 1
+#define MX6UL_PAD_NAND_CE0_B__EIM_DTACK_B                              0x01ac 0x0438 0x0000 4 0
+#define MX6UL_PAD_NAND_CE0_B__GPIO4_IO13                               0x01ac 0x0438 0x0000 5 0
+#define MX6UL_PAD_NAND_CE0_B__UART3_DCE_RX                             0x01ac 0x0438 0x0634 8 3
+#define MX6UL_PAD_NAND_CE0_B__UART3_DTE_TX                             0x01ac 0x0438 0x0000 8 0
+#define MX6UL_PAD_NAND_CE1_B__RAWNAND_CE1_B                            0x01b0 0x043c 0x0000 0 0
+#define MX6UL_PAD_NAND_CE1_B__USDHC1_DATA6                             0x01b0 0x043c 0x0000 1 0
+#define MX6UL_PAD_NAND_CE1_B__QSPI_A_DATA02                            0x01b0 0x043c 0x0000 2 0
+#define MX6UL_PAD_NAND_CE1_B__ECSPI3_MOSI                              0x01b0 0x043c 0x055c 3 1
+#define MX6UL_PAD_NAND_CE1_B__EIM_ADDR18                               0x01b0 0x043c 0x0000 4 0
+#define MX6UL_PAD_NAND_CE1_B__GPIO4_IO14                               0x01b0 0x043c 0x0000 5 0
+#define MX6UL_PAD_NAND_CE1_B__UART3_DCE_CTS                            0x01b0 0x043c 0x0000 8 0
+#define MX6UL_PAD_NAND_CE1_B__UART3_DTE_RTS                            0x01b0 0x043c 0x0630 8 2
+#define MX6UL_PAD_NAND_CLE__RAWNAND_CLE                                0x01b4 0x0440 0x0000 0 0
+#define MX6UL_PAD_NAND_CLE__USDHC1_DATA7                               0x01b4 0x0440 0x0000 1 0
+#define MX6UL_PAD_NAND_CLE__QSPI_A_DATA03                              0x01b4 0x0440 0x0000 2 0
+#define MX6UL_PAD_NAND_CLE__ECSPI3_MISO                                0x01b4 0x0440 0x0558 3 1
+#define MX6UL_PAD_NAND_CLE__EIM_ADDR16                                 0x01b4 0x0440 0x0000 4 0
+#define MX6UL_PAD_NAND_CLE__GPIO4_IO15                                 0x01b4 0x0440 0x0000 5 0
+#define MX6UL_PAD_NAND_CLE__UART3_DCE_RTS                              0x01b4 0x0440 0x0630 8 3
+#define MX6UL_PAD_NAND_CLE__UART3_DTE_CTS                              0x01b4 0x0440 0x0000 8 0
+#define MX6UL_PAD_NAND_DQS__RAWNAND_DQS                                0x01b8 0x0444 0x0000 0 0
+#define MX6UL_PAD_NAND_DQS__CSI_FIELD                                  0x01b8 0x0444 0x0530 1 1
+#define MX6UL_PAD_NAND_DQS__QSPI_A_SS0_B                               0x01b8 0x0444 0x0000 2 0
+#define MX6UL_PAD_NAND_DQS__PWM5_OUT                                   0x01b8 0x0444 0x0000 3 0
+#define MX6UL_PAD_NAND_DQS__EIM_WAIT                                   0x01b8 0x0444 0x0000 4 0
+#define MX6UL_PAD_NAND_DQS__GPIO4_IO16                                 0x01b8 0x0444 0x0000 5 0
+#define MX6UL_PAD_NAND_DQS__SDMA_EXT_EVENT01                           0x01b8 0x0444 0x0000 6 0
+#define MX6UL_PAD_NAND_DQS__SPDIF_EXT_CLK                              0x01b8 0x0444 0x0000 8 0
+#define MX6UL_PAD_SD1_CMD__USDHC1_CMD                                  0x01bc 0x0448 0x0000 0 0
+#define MX6UL_PAD_SD1_CMD__GPT2_COMPARE1                               0x01bc 0x0448 0x0000 1 0
+#define MX6UL_PAD_SD1_CMD__SAI2_RX_SYNC                                0x01bc 0x0448 0x0000 2 0
+#define MX6UL_PAD_SD1_CMD__SPDIF_OUT                                   0x01bc 0x0448 0x0000 3 0
+#define MX6UL_PAD_SD1_CMD__EIM_ADDR19                                  0x01bc 0x0448 0x0000 4 0
+#define MX6UL_PAD_SD1_CMD__GPIO2_IO16                                  0x01bc 0x0448 0x0000 5 0
+#define MX6UL_PAD_SD1_CMD__SDMA_EXT_EVENT00                            0x01bc 0x0448 0x0000 6 0
+#define MX6UL_PAD_SD1_CMD__USB_OTG1_PWR                                0x01bc 0x0448 0x0000 8 0
+#define MX6UL_PAD_SD1_CLK__USDHC1_CLK                                  0x01c0 0x044c 0x0000 0 0
+#define MX6UL_PAD_SD1_CLK__GPT2_COMPARE2                               0x01c0 0x044c 0x0000 1 0
+#define MX6UL_PAD_SD1_CLK__SAI2_MCLK                                   0x01c0 0x044c 0x0000 2 0
+#define MX6UL_PAD_SD1_CLK__SPDIF_IN                                    0x01c0 0x044c 0x0618 3 3
+#define MX6UL_PAD_SD1_CLK__EIM_ADDR20                                  0x01c0 0x044c 0x0000 4 0
+#define MX6UL_PAD_SD1_CLK__GPIO2_IO17                                  0x01c0 0x044c 0x0000 5 0
+#define MX6UL_PAD_SD1_CLK__USB_OTG1_OC                                 0x01c0 0x044c 0x0000 8 0
+#define MX6UL_PAD_SD1_DATA0__USDHC1_DATA0                              0x01c4 0x0450 0x0000 0 0
+#define MX6UL_PAD_SD1_DATA0__GPT2_COMPARE3                             0x01c4 0x0450 0x0000 1 0
+#define MX6UL_PAD_SD1_DATA0__SAI2_TX_SYNC                              0x01c4 0x0450 0x05fc 2 1
+#define MX6UL_PAD_SD1_DATA0__FLEXCAN1_TX                               0x01c4 0x0450 0x0000 3 0
+#define MX6UL_PAD_SD1_DATA0__EIM_ADDR21                                0x01c4 0x0450 0x0000 4 0
+#define MX6UL_PAD_SD1_DATA0__GPIO2_IO18                                0x01c4 0x0450 0x0000 5 0
+#define MX6UL_PAD_SD1_DATA0__ANATOP_OTG1_ID                            0x01c4 0x0450 0x0000 8 0
+#define MX6UL_PAD_SD1_DATA1__USDHC1_DATA1                              0x01c8 0x0454 0x0000 0 0
+#define MX6UL_PAD_SD1_DATA1__GPT2_CLK                                  0x01c8 0x0454 0x05a0 1 1
+#define MX6UL_PAD_SD1_DATA1__SAI2_TX_BCLK                              0x01c8 0x0454 0x05f8 2 1
+#define MX6UL_PAD_SD1_DATA1__FLEXCAN1_RX                               0x01c8 0x0454 0x0584 3 3
+#define MX6UL_PAD_SD1_DATA1__EIM_ADDR22                                0x01c8 0x0454 0x0000 4 0
+#define MX6UL_PAD_SD1_DATA1__GPIO2_IO19                                0x01c8 0x0454 0x0000 5 0
+#define MX6UL_PAD_SD1_DATA1__USB_OTG2_PWR                              0x01c8 0x0454 0x0000 8 0
+#define MX6UL_PAD_SD1_DATA2__USDHC1_DATA2                              0x01cc 0x0458 0x0000 0 0
+#define MX6UL_PAD_SD1_DATA2__GPT2_CAPTURE1                             0x01cc 0x0458 0x0598 1 1
+#define MX6UL_PAD_SD1_DATA2__SAI2_RX_DATA                              0x01cc 0x0458 0x05f4 2 1
+#define MX6UL_PAD_SD1_DATA2__FLEXCAN2_TX                               0x01cc 0x0458 0x0000 3 0
+#define MX6UL_PAD_SD1_DATA2__EIM_ADDR23                                0x01cc 0x0458 0x0000 4 0
+#define MX6UL_PAD_SD1_DATA2__GPIO2_IO20                                0x01cc 0x0458 0x0000 5 0
+#define MX6UL_PAD_SD1_DATA2__CCM_CLKO1                                 0x01cc 0x0458 0x0000 6 0
+#define MX6UL_PAD_SD1_DATA2__USB_OTG2_OC                               0x01cc 0x0458 0x0000 8 0
+#define MX6UL_PAD_SD1_DATA3__USDHC1_DATA3                              0x01d0 0x045c 0x0000 0 0
+#define MX6UL_PAD_SD1_DATA3__GPT2_CAPTURE2                             0x01d0 0x045c 0x059c 1 1
+#define MX6UL_PAD_SD1_DATA3__SAI2_TX_DATA                              0x01d0 0x045c 0x0000 2 0
+#define MX6UL_PAD_SD1_DATA3__FLEXCAN2_RX                               0x01d0 0x045c 0x0588 3 3
+#define MX6UL_PAD_SD1_DATA3__EIM_ADDR24                                0x01d0 0x045c 0x0000 4 0
+#define MX6UL_PAD_SD1_DATA3__GPIO2_IO21                                0x01d0 0x045c 0x0000 5 0
+#define MX6UL_PAD_SD1_DATA3__CCM_CLKO2                                 0x01d0 0x045c 0x0000 6 0
+#define MX6UL_PAD_SD1_DATA3__ANATOP_OTG2_ID                            0x01d0 0x045c 0x0000 8 0
+#define MX6UL_PAD_CSI_MCLK__CSI_MCLK                                   0x01d4 0x0460 0x0000 0 0
+#define MX6UL_PAD_CSI_MCLK__USDHC2_CD_B                                0x01d4 0x0460 0x0674 1 0
+#define MX6UL_PAD_CSI_MCLK__RAWNAND_CE2_B                              0x01d4 0x0460 0x0000 2 0
+#define MX6UL_PAD_CSI_MCLK__I2C1_SDA                                   0x01d4 0x0460 0x05a8 3 0
+#define MX6UL_PAD_CSI_MCLK__EIM_CS0_B                                  0x01d4 0x0460 0x0000 4 0
+#define MX6UL_PAD_CSI_MCLK__GPIO4_IO17                                 0x01d4 0x0460 0x0000 5 0
+#define MX6UL_PAD_CSI_MCLK__SNVS_HP_VIO_5_CTL                          0x01d4 0x0460 0x0000 6 0
+#define MX6UL_PAD_CSI_MCLK__UART6_DCE_TX                               0x01d4 0x0460 0x0000 8 0
+#define MX6UL_PAD_CSI_MCLK__UART6_DTE_RX                               0x01d4 0x0460 0x064c 8 0
+#define MX6UL_PAD_CSI_PIXCLK__CSI_PIXCLK                               0x01d8 0x0464 0x0528 0 1
+#define MX6UL_PAD_CSI_PIXCLK__USDHC2_WP                                0x01d8 0x0464 0x069c 1 2
+#define MX6UL_PAD_CSI_PIXCLK__RAWNAND_CE3_B                            0x01d8 0x0464 0x0000 2 0
+#define MX6UL_PAD_CSI_PIXCLK__I2C1_SCL                                 0x01d8 0x0464 0x05a4 3 2
+#define MX6UL_PAD_CSI_PIXCLK__EIM_OE                                   0x01d8 0x0464 0x0000 4 0
+#define MX6UL_PAD_CSI_PIXCLK__GPIO4_IO18                               0x01d8 0x0464 0x0000 5 0
+#define MX6UL_PAD_CSI_PIXCLK__SNVS_HP_VIO_5                            0x01d8 0x0464 0x0000 6 0
+#define MX6UL_PAD_CSI_PIXCLK__UART6_DCE_RX                             0x01d8 0x0464 0x064c 8 3
+#define MX6UL_PAD_CSI_PIXCLK__UART6_DTE_TX                             0x01d8 0x0464 0x0000 8 0
+#define MX6UL_PAD_CSI_VSYNC__CSI_VSYNC                                 0x01dc 0x0468 0x052c 0 0
+#define MX6UL_PAD_CSI_VSYNC__USDHC2_CLK                                0x01dc 0x0468 0x0670 1 0
+#define MX6UL_PAD_CSI_VSYNC__SIM1_PORT1_CLK                            0x01dc 0x0468 0x0000 2 0
+#define MX6UL_PAD_CSI_VSYNC__I2C2_SDA                                  0x01dc 0x0468 0x05b0 3 0
+#define MX6UL_PAD_CSI_VSYNC__EIM_RW                                    0x01dc 0x0468 0x0000 4 0
+#define MX6UL_PAD_CSI_VSYNC__GPIO4_IO19                                0x01dc 0x0468 0x0000 5 0
+#define MX6UL_PAD_CSI_VSYNC__PWM7_OUT                                  0x01dc 0x0468 0x0000 6 0
+#define MX6UL_PAD_CSI_VSYNC__UART6_DCE_RTS                             0x01dc 0x0468 0x0648 8 0
+#define MX6UL_PAD_CSI_VSYNC__UART6_DTE_CTS                             0x01dc 0x0468 0x0000 8 0
+#define MX6UL_PAD_CSI_HSYNC__CSI_HSYNC                                 0x01e0 0x046c 0x0524 0 0
+#define MX6UL_PAD_CSI_HSYNC__USDHC2_CMD                                0x01e0 0x046c 0x0678 1 0
+#define MX6UL_PAD_CSI_HSYNC__SIM1_PORT1_PD                             0x01e0 0x046c 0x0000 2 0
+#define MX6UL_PAD_CSI_HSYNC__I2C2_SCL                                  0x01e0 0x046c 0x05ac 3 0
+#define MX6UL_PAD_CSI_HSYNC__EIM_LBA_B                                 0x01e0 0x046c 0x0000 4 0
+#define MX6UL_PAD_CSI_HSYNC__GPIO4_IO20                                0x01e0 0x046c 0x0000 5 0
+#define MX6UL_PAD_CSI_HSYNC__PWM8_OUT                                  0x01e0 0x046c 0x0000 6 0
+#define MX6UL_PAD_CSI_HSYNC__UART6_DCE_CTS                             0x01e0 0x046c 0x0000 8 0
+#define MX6UL_PAD_CSI_HSYNC__UART6_DTE_RTS                             0x01e0 0x046c 0x0648 8 1
+#define MX6UL_PAD_CSI_DATA00__CSI_DATA02                               0x01e4 0x0470 0x04c4 0 0
+#define MX6UL_PAD_CSI_DATA00__USDHC2_DATA0                             0x01e4 0x0470 0x067c 1 0
+#define MX6UL_PAD_CSI_DATA00__SIM1_PORT1_RST_B                         0x01e4 0x0470 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK                              0x01e4 0x0470 0x0544 3 0
+#define MX6UL_PAD_CSI_DATA00__EIM_AD00                                 0x01e4 0x0470 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA00__GPIO4_IO21                               0x01e4 0x0470 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA00__SRC_INT_BOOT                             0x01e4 0x0470 0x0000 6 0
+#define MX6UL_PAD_CSI_DATA00__UART5_DCE_TX                             0x01e4 0x0470 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA00__UART5_DTE_RX                             0x01e4 0x0470 0x0644 8 0
+#define MX6UL_PAD_CSI_DATA01__CSI_DATA03                               0x01e8 0x0474 0x04c8 0 0
+#define MX6UL_PAD_CSI_DATA01__USDHC2_DATA1                             0x01e8 0x0474 0x0680 1 0
+#define MX6UL_PAD_CSI_DATA01__SIM1_PORT1_SVEN                          0x01e8 0x0474 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA01__ECSPI2_SS0                               0x01e8 0x0474 0x0000 3 0
+#define MX6UL_PAD_CSI_DATA01__EIM_AD01                                 0x01e8 0x0474 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA01__GPIO4_IO22                               0x01e8 0x0474 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA01__SAI1_MCLK                                0x01e8 0x0474 0x0000 6 0
+#define MX6UL_PAD_CSI_DATA01__UART5_DCE_RX                             0x01e8 0x0474 0x0644 8 1
+#define MX6UL_PAD_CSI_DATA01__UART5_DTE_TX                             0x01e8 0x0474 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA02__CSI_DATA04                               0x01ec 0x0478 0x04d8 0 1
+#define MX6UL_PAD_CSI_DATA02__USDHC2_DATA2                             0x01ec 0x0478 0x0684 1 2
+#define MX6UL_PAD_CSI_DATA02__SIM1_PORT1_TRXD                          0x01ec 0x0478 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI                              0x01ec 0x0478 0x054c 3 1
+#define MX6UL_PAD_CSI_DATA02__EIM_AD02                                 0x01ec 0x0478 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA02__GPIO4_IO23                               0x01ec 0x0478 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA02__SAI1_RX_SYNC                             0x01ec 0x0478 0x0000 6 0
+#define MX6UL_PAD_CSI_DATA02__UART5_DCE_RTS                            0x01ec 0x0478 0x0640 8 5
+#define MX6UL_PAD_CSI_DATA02__UART5_DTE_CTS                            0x01ec 0x0478 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA03__CSI_DATA05                               0x01f0 0x047c 0x04cc 0 0
+#define MX6UL_PAD_CSI_DATA03__USDHC2_DATA3                             0x01f0 0x047c 0x0688 1 0
+#define MX6UL_PAD_CSI_DATA03__SIM2_PORT1_PD                            0x01f0 0x047c 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA03__ECSPI2_MISO                              0x01f0 0x047c 0x0548 3 0
+#define MX6UL_PAD_CSI_DATA03__EIM_AD03                                 0x01f0 0x047c 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA03__GPIO4_IO24                               0x01f0 0x047c 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA03__SAI1_RX_BCLK                             0x01f0 0x047c 0x0000 6 0
+#define MX6UL_PAD_CSI_DATA03__UART5_DCE_CTS                            0x01f0 0x047c 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA03__UART5_DTE_RTS                            0x01f0 0x047c 0x0640 8 0
+#define MX6UL_PAD_CSI_DATA04__CSI_DATA06                               0x01f4 0x0480 0x04dc 0 1
+#define MX6UL_PAD_CSI_DATA04__USDHC2_DATA4                             0x01f4 0x0480 0x068c 1 2
+#define MX6UL_PAD_CSI_DATA04__SIM2_PORT1_CLK                           0x01f4 0x0480 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA04__ECSPI1_SCLK                              0x01f4 0x0480 0x0534 3 1
+#define MX6UL_PAD_CSI_DATA04__EIM_AD04                                 0x01f4 0x0480 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA04__GPIO4_IO25                               0x01f4 0x0480 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA04__SAI1_TX_SYNC                             0x01f4 0x0480 0x05ec 6 1
+#define MX6UL_PAD_CSI_DATA04__USDHC1_WP                                0x01f4 0x0480 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA05__CSI_DATA07                               0x01f8 0x0484 0x04e0 0 1
+#define MX6UL_PAD_CSI_DATA05__USDHC2_DATA5                             0x01f8 0x0484 0x0690 1 2
+#define MX6UL_PAD_CSI_DATA05__SIM2_PORT1_RST_B                         0x01f8 0x0484 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA05__ECSPI1_SS0                               0x01f8 0x0484 0x0000 3 0
+#define MX6UL_PAD_CSI_DATA05__EIM_AD05                                 0x01f8 0x0484 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA05__GPIO4_IO26                               0x01f8 0x0484 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA05__SAI1_TX_BCLK                             0x01f8 0x0484 0x05e8 6 1
+#define MX6UL_PAD_CSI_DATA05__USDHC1_CD_B                              0x01f8 0x0484 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA06__CSI_DATA08                               0x01fc 0x0488 0x04e4 0 1
+#define MX6UL_PAD_CSI_DATA06__USDHC2_DATA6                             0x01fc 0x0488 0x0694 1 2
+#define MX6UL_PAD_CSI_DATA06__SIM2_PORT1_SVEN                          0x01fc 0x0488 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA06__ECSPI1_MOSI                              0x01fc 0x0488 0x053c 3 1
+#define MX6UL_PAD_CSI_DATA06__EIM_AD06                                 0x01fc 0x0488 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA06__GPIO4_IO27                               0x01fc 0x0488 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA06__SAI1_RX_DATA                             0x01fc 0x0488 0x0000 6 0
+#define MX6UL_PAD_CSI_DATA06__USDHC1_RESET_B                           0x01fc 0x0488 0x0000 8 0
+#define MX6UL_PAD_CSI_DATA07__CSI_DATA09                               0x0200 0x048c 0x04e8 0 1
+#define MX6UL_PAD_CSI_DATA07__USDHC2_DATA7                             0x0200 0x048c 0x0698 1 2
+#define MX6UL_PAD_CSI_DATA07__SIM2_PORT1_TRXD                          0x0200 0x048c 0x0000 2 0
+#define MX6UL_PAD_CSI_DATA07__ECSPI1_MISO                              0x0200 0x048c 0x0538 3 1
+#define MX6UL_PAD_CSI_DATA07__EIM_AD07                                 0x0200 0x048c 0x0000 4 0
+#define MX6UL_PAD_CSI_DATA07__GPIO4_IO28                               0x0200 0x048c 0x0000 5 0
+#define MX6UL_PAD_CSI_DATA07__SAI1_TX_DATA                             0x0200 0x048c 0x0000 6 0
+#define MX6UL_PAD_CSI_DATA07__USDHC1_VSELECT                           0x0200 0x048c 0x0000 8 0
+
+#endif /* __DTS_IMX6UL_PINFUNC_H */
diff --git a/arch/arm/boot/dts/imx6ul.dtsi b/arch/arm/boot/dts/imx6ul.dtsi
new file mode 100644 (file)
index 0000000..09edbed
--- /dev/null
@@ -0,0 +1,707 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <dt-bindings/clock/imx6ul-clock.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "imx6ul-pinfunc.h"
+#include "skeleton.dtsi"
+
+/ {
+       aliases {
+               ethernet0 = &fec1;
+               ethernet1 = &fec2;
+               gpio0 = &gpio1;
+               gpio1 = &gpio2;
+               gpio2 = &gpio3;
+               gpio3 = &gpio4;
+               gpio4 = &gpio5;
+               i2c0 = &i2c1;
+               i2c1 = &i2c2;
+               i2c2 = &i2c3;
+               i2c3 = &i2c4;
+               mmc0 = &usdhc1;
+               mmc1 = &usdhc2;
+               serial0 = &uart1;
+               serial1 = &uart2;
+               serial2 = &uart3;
+               serial3 = &uart4;
+               serial4 = &uart5;
+               serial5 = &uart6;
+               serial6 = &uart7;
+               serial7 = &uart8;
+               spi0 = &ecspi1;
+               spi1 = &ecspi2;
+               spi2 = &ecspi3;
+               spi3 = &ecspi4;
+               usbphy0 = &usbphy1;
+               usbphy1 = &usbphy2;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a7";
+                       device_type = "cpu";
+                       reg = <0>;
+                       clock-latency = <61036>; /* two CLK32 periods */
+                       operating-points = <
+                               /* kHz  uV */
+                               528000  1250000
+                               396000  1150000
+                               198000  1150000
+                       >;
+                       fsl,soc-operating-points = <
+                               /* KHz  uV */
+                               528000  1250000
+                               396000  1150000
+                               198000  1150000
+                       >;
+                       clocks = <&clks IMX6UL_CLK_ARM>,
+                                <&clks IMX6UL_CLK_PLL2_BUS>,
+                                <&clks IMX6UL_CLK_PLL2_PFD2>,
+                                <&clks IMX6UL_CA7_SECONDARY_SEL>,
+                                <&clks IMX6UL_CLK_STEP>,
+                                <&clks IMX6UL_CLK_PLL1_SW>,
+                                <&clks IMX6UL_CLK_PLL1_SYS>,
+                                <&clks IMX6UL_PLL1_BYPASS>,
+                                <&clks IMX6UL_CLK_PLL1>,
+                                <&clks IMX6UL_PLL1_BYPASS_SRC>,
+                                <&clks IMX6UL_CLK_OSC>;
+                       clock-names = "arm", "pll2_bus",  "pll2_pfd2_396m",
+                                     "secondary_sel", "step", "pll1_sw",
+                                     "pll1_sys", "pll1_bypass", "pll1",
+                                     "pll1_bypass_src", "osc";
+                       arm-supply = <&reg_arm>;
+                       soc-supply = <&reg_soc>;
+               };
+       };
+
+       intc: interrupt-controller@00a01000 {
+               compatible = "arm,cortex-a7-gic";
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               reg = <0x00a01000 0x1000>,
+                     <0x00a02000 0x1000>,
+                     <0x00a04000 0x2000>,
+                     <0x00a06000 0x2000>;
+       };
+
+       ckil: clock-cli {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "ckil";
+       };
+
+       osc: clock-osc {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "osc";
+       };
+
+       ipp_di0: clock-di0 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "ipp_di0";
+       };
+
+       ipp_di1: clock-di1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "ipp_di1";
+       };
+
+       soc {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "simple-bus";
+               interrupt-parent = <&gpc>;
+               ranges;
+
+               pmu {
+                       compatible = "arm,cortex-a7-pmu";
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               aips1: aips-bus@02000000 {
+                       compatible = "fsl,aips-bus", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0x02000000 0x100000>;
+                       ranges;
+
+                       spba-bus@02000000 {
+                               compatible = "fsl,spba-bus", "simple-bus";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               reg = <0x02000000 0x40000>;
+                               ranges;
+
+                               ecspi1: ecspi@02008000 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
+                                       reg = <0x02008000 0x4000>;
+                                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_ECSPI1>,
+                                                <&clks IMX6UL_CLK_ECSPI1>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+
+                               ecspi2: ecspi@0200c000 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
+                                       reg = <0x0200c000 0x4000>;
+                                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_ECSPI2>,
+                                                <&clks IMX6UL_CLK_ECSPI2>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+
+                               ecspi3: ecspi@02010000 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
+                                       reg = <0x02010000 0x4000>;
+                                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_ECSPI3>,
+                                                <&clks IMX6UL_CLK_ECSPI3>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+
+                               ecspi4: ecspi@02014000 {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
+                                       reg = <0x02014000 0x4000>;
+                                       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_ECSPI4>,
+                                                <&clks IMX6UL_CLK_ECSPI4>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+
+                               uart7: serial@02018000 {
+                                       compatible = "fsl,imx6ul-uart",
+                                                    "fsl,imx6q-uart";
+                                       reg = <0x02018000 0x4000>;
+                                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_UART7_IPG>,
+                                                <&clks IMX6UL_CLK_UART7_SERIAL>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+
+                               uart1: serial@02020000 {
+                                       compatible = "fsl,imx6ul-uart",
+                                                    "fsl,imx6q-uart";
+                                       reg = <0x02020000 0x4000>;
+                                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_UART1_IPG>,
+                                                <&clks IMX6UL_CLK_UART1_SERIAL>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+
+                               uart8: serial@02024000 {
+                                       compatible = "fsl,imx6ul-uart",
+                                                    "fsl,imx6q-uart";
+                                       reg = <0x02024000 0x4000>;
+                                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                                       clocks = <&clks IMX6UL_CLK_UART8_IPG>,
+                                                <&clks IMX6UL_CLK_UART8_SERIAL>;
+                                       clock-names = "ipg", "per";
+                                       status = "disabled";
+                               };
+                       };
+
+                       gpt1: gpt@02098000 {
+                               compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
+                               reg = <0x02098000 0x4000>;
+                               interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_GPT1_BUS>,
+                                        <&clks IMX6UL_CLK_GPT1_SERIAL>;
+                               clock-names = "ipg", "per";
+                       };
+
+                       gpio1: gpio@0209c000 {
+                               compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
+                               reg = <0x0209c000 0x4000>;
+                               interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       gpio2: gpio@020a0000 {
+                               compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
+                               reg = <0x020a0000 0x4000>;
+                               interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       gpio3: gpio@020a4000 {
+                               compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
+                               reg = <0x020a4000 0x4000>;
+                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       gpio4: gpio@020a8000 {
+                               compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
+                               reg = <0x020a8000 0x4000>;
+                               interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       gpio5: gpio@020ac000 {
+                               compatible = "fsl,imx6ul-gpio", "fsl,imx35-gpio";
+                               reg = <0x020ac000 0x4000>;
+                               interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                       };
+
+                       fec2: ethernet@020b4000 {
+                               compatible = "fsl,imx6ul-fec", "fsl,imx6q-fec";
+                               reg = <0x020b4000 0x4000>;
+                               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_ENET>,
+                                        <&clks IMX6UL_CLK_ENET_AHB>,
+                                        <&clks IMX6UL_CLK_ENET_PTP>,
+                                        <&clks IMX6UL_CLK_ENET2_REF_125M>,
+                                        <&clks IMX6UL_CLK_ENET2_REF_125M>;
+                               clock-names = "ipg", "ahb", "ptp",
+                                             "enet_clk_ref", "enet_out";
+                               fsl,num-tx-queues=<1>;
+                               fsl,num-rx-queues=<1>;
+                               status = "disabled";
+                       };
+
+                       wdog1: wdog@020bc000 {
+                               compatible = "fsl,imx6ul-wdt", "fsl,imx21-wdt";
+                               reg = <0x020bc000 0x4000>;
+                               interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_WDOG1>;
+                       };
+
+                       wdog2: wdog@020c0000 {
+                               compatible = "fsl,imx6ul-wdt", "fsl,imx21-wdt";
+                               reg = <0x020c0000 0x4000>;
+                               interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_WDOG2>;
+                               status = "disabled";
+                       };
+
+                       clks: ccm@020c4000 {
+                               compatible = "fsl,imx6ul-ccm";
+                               reg = <0x020c4000 0x4000>;
+                               interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                               #clock-cells = <1>;
+                               clocks = <&ckil>, <&osc>, <&ipp_di0>, <&ipp_di1>;
+                               clock-names = "ckil", "osc", "ipp_di0", "ipp_di1";
+                       };
+
+                       anatop: anatop@020c8000 {
+                               compatible = "fsl,imx6ul-anatop", "fsl,imx6q-anatop",
+                                            "syscon", "simple-bus";
+                               reg = <0x020c8000 0x1000>;
+                               interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+
+                               reg_3p0: regulator-3p0@120 {
+                                       compatible = "fsl,anatop-regulator";
+                                       regulator-name = "vdd3p0";
+                                       regulator-min-microvolt = <2625000>;
+                                       regulator-max-microvolt = <3400000>;
+                                       anatop-reg-offset = <0x120>;
+                                       anatop-vol-bit-shift = <8>;
+                                       anatop-vol-bit-width = <5>;
+                                       anatop-min-bit-val = <0>;
+                                       anatop-min-voltage = <2625000>;
+                                       anatop-max-voltage = <3400000>;
+                                       anatop-enable-bit = <0>;
+                               };
+
+                               reg_arm: regulator-vddcore@140 {
+                                       compatible = "fsl,anatop-regulator";
+                                       regulator-name = "cpu";
+                                       regulator-min-microvolt = <725000>;
+                                       regulator-max-microvolt = <1450000>;
+                                       regulator-always-on;
+                                       anatop-reg-offset = <0x140>;
+                                       anatop-vol-bit-shift = <0>;
+                                       anatop-vol-bit-width = <5>;
+                                       anatop-delay-reg-offset = <0x170>;
+                                       anatop-delay-bit-shift = <24>;
+                                       anatop-delay-bit-width = <2>;
+                                       anatop-min-bit-val = <1>;
+                                       anatop-min-voltage = <725000>;
+                                       anatop-max-voltage = <1450000>;
+                               };
+
+                               reg_soc: regulator-vddsoc@140 {
+                                       compatible = "fsl,anatop-regulator";
+                                       regulator-name = "vddsoc";
+                                       regulator-min-microvolt = <725000>;
+                                       regulator-max-microvolt = <1450000>;
+                                       regulator-always-on;
+                                       anatop-reg-offset = <0x140>;
+                                       anatop-vol-bit-shift = <18>;
+                                       anatop-vol-bit-width = <5>;
+                                       anatop-delay-reg-offset = <0x170>;
+                                       anatop-delay-bit-shift = <28>;
+                                       anatop-delay-bit-width = <2>;
+                                       anatop-min-bit-val = <1>;
+                                       anatop-min-voltage = <725000>;
+                                       anatop-max-voltage = <1450000>;
+                               };
+                       };
+
+                       usbphy1: usbphy@020c9000 {
+                               compatible = "fsl,imx6ul-usbphy", "fsl,imx23-usbphy";
+                               reg = <0x020c9000 0x1000>;
+                               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_USBPHY1>;
+                               phy-3p0-supply = <&reg_3p0>;
+                               fsl,anatop = <&anatop>;
+                       };
+
+                       usbphy2: usbphy@020ca000 {
+                               compatible = "fsl,imx6ul-usbphy", "fsl,imx23-usbphy";
+                               reg = <0x020ca000 0x1000>;
+                               interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_USBPHY2>;
+                               phy-3p0-supply = <&reg_3p0>;
+                               fsl,anatop = <&anatop>;
+                       };
+
+                       snvs: snvs@020cc000 {
+                               compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
+                               reg = <0x020cc000 0x4000>;
+
+                               snvs_rtc: snvs-rtc-lp {
+                                       compatible = "fsl,sec-v4.0-mon-rtc-lp";
+                                       regmap = <&snvs>;
+                                       offset = <0x34>;
+                                       interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
+                                                    <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+                               };
+
+                               snvs_pwrkey: snvs-powerkey {
+                                       compatible = "fsl,sec-v4.0-pwrkey";
+                                       regmap = <&snvs>;
+                                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                                       linux,keycode = <KEY_POWER>;
+                                       wakeup-source;
+                               };
+                       };
+
+                       epit1: epit@020d0000 {
+                               reg = <0x020d0000 0x4000>;
+                               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       epit2: epit@020d4000 {
+                               reg = <0x020d4000 0x4000>;
+                               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       src: src@020d8000 {
+                               compatible = "fsl,imx6ul-src", "fsl,imx51-src";
+                               reg = <0x020d8000 0x4000>;
+                               interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                               #reset-cells = <1>;
+                       };
+
+                       gpc: gpc@020dc000 {
+                               compatible = "fsl,imx6ul-gpc", "fsl,imx6q-gpc";
+                               reg = <0x020dc000 0x4000>;
+                               interrupt-controller;
+                               #interrupt-cells = <3>;
+                               interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-parent = <&intc>;
+                       };
+
+                       iomuxc: iomuxc@020e0000 {
+                               compatible = "fsl,imx6ul-iomuxc";
+                               reg = <0x020e0000 0x4000>;
+                       };
+
+                       gpr: iomuxc-gpr@020e4000 {
+                               compatible = "fsl,imx6ul-iomuxc-gpr", "syscon";
+                               reg = <0x020e4000 0x4000>;
+                       };
+
+                       gpt2: gpt@020e8000 {
+                               compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt";
+                               reg = <0x020e8000 0x4000>;
+                               interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_DUMMY>,
+                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clock-names = "ipg", "per";
+                       };
+
+                       pwm5: pwm@020f0000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x020f0000 0x4000>;
+                               interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_DUMMY>,
+                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                       };
+
+                       pwm6: pwm@020f4000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x020f4000 0x4000>;
+                               interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_DUMMY>,
+                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                       };
+
+                       pwm7: pwm@020f8000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x020f8000 0x4000>;
+                               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_DUMMY>,
+                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                       };
+
+                       pwm8: pwm@020fc000 {
+                               compatible = "fsl,imx6ul-pwm", "fsl,imx27-pwm";
+                               reg = <0x020fc000 0x4000>;
+                               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_DUMMY>,
+                                        <&clks IMX6UL_CLK_DUMMY>;
+                               clock-names = "ipg", "per";
+                               #pwm-cells = <2>;
+                       };
+               };
+
+               aips2: aips-bus@02100000 {
+                       compatible = "fsl,aips-bus", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0x02100000 0x100000>;
+                       ranges;
+
+                       usbotg1: usb@02184000 {
+                               compatible = "fsl,imx6ul-usb", "fsl,imx27-usb";
+                               reg = <0x02184000 0x200>;
+                               interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_USBOH3>;
+                               fsl,usbphy = <&usbphy1>;
+                               fsl,usbmisc = <&usbmisc 0>;
+                               fsl,anatop = <&anatop>;
+                               status = "disabled";
+                       };
+
+                       usbotg2: usb@02184200 {
+                               compatible = "fsl,imx6ul-usb", "fsl,imx27-usb";
+                               reg = <0x02184200 0x200>;
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_USBOH3>;
+                               fsl,usbphy = <&usbphy2>;
+                               fsl,usbmisc = <&usbmisc 1>;
+                               status = "disabled";
+                       };
+
+                       usbmisc: usbmisc@02184800 {
+                               #index-cells = <1>;
+                               compatible = "fsl,imx6ul-usbmisc", "fsl,imx6q-usbmisc";
+                               reg = <0x02184800 0x200>;
+                       };
+
+                       fec1: ethernet@02188000 {
+                               compatible = "fsl,imx6ul-fec", "fsl,imx6q-fec";
+                               reg = <0x02188000 0x4000>;
+                               interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_ENET>,
+                                        <&clks IMX6UL_CLK_ENET_AHB>,
+                                        <&clks IMX6UL_CLK_ENET_PTP>,
+                                        <&clks IMX6UL_CLK_ENET_REF>,
+                                        <&clks IMX6UL_CLK_ENET_REF>;
+                               clock-names = "ipg", "ahb", "ptp",
+                                             "enet_clk_ref", "enet_out";
+                               fsl,num-tx-queues=<1>;
+                               fsl,num-rx-queues=<1>;
+                               status = "disabled";
+                       };
+
+                       usdhc1: usdhc@02190000 {
+                               compatible = "fsl,imx6ul-usdhc", "fsl,imx6sx-usdhc";
+                               reg = <0x02190000 0x4000>;
+                               interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_USDHC1>,
+                                        <&clks IMX6UL_CLK_USDHC1>,
+                                        <&clks IMX6UL_CLK_USDHC1>;
+                               clock-names = "ipg", "ahb", "per";
+                               bus-width = <4>;
+                               status = "disabled";
+                       };
+
+                       usdhc2: usdhc@02194000 {
+                               compatible = "fsl,imx6ul-usdhc", "fsl,imx6sx-usdhc";
+                               reg = <0x02194000 0x4000>;
+                               interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_USDHC2>,
+                                        <&clks IMX6UL_CLK_USDHC2>,
+                                        <&clks IMX6UL_CLK_USDHC2>;
+                               clock-names = "ipg", "ahb", "per";
+                               bus-width = <4>;
+                               status = "disabled";
+                       };
+
+                       i2c1: i2c@021a0000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
+                               reg = <0x021a0000 0x4000>;
+                               interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_I2C1>;
+                               status = "disabled";
+                       };
+
+                       i2c2: i2c@021a4000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
+                               reg = <0x021a4000 0x4000>;
+                               interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_I2C2>;
+                               status = "disabled";
+                       };
+
+                       i2c3: i2c@021a8000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
+                               reg = <0x021a8000 0x4000>;
+                               interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_I2C3>;
+                               status = "disabled";
+                       };
+
+                       qspi: qspi@021e0000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,imx6ul-qspi", "fsl,imx6sx-qspi";
+                               reg = <0x021e0000 0x4000>, <0x60000000 0x10000000>;
+                               reg-names = "QuadSPI", "QuadSPI-memory";
+                               interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_QSPI>,
+                                        <&clks IMX6UL_CLK_QSPI>;
+                               clock-names = "qspi_en", "qspi";
+                               status = "disabled";
+                       };
+
+                       uart2: serial@021e8000 {
+                               compatible = "fsl,imx6ul-uart",
+                                            "fsl,imx6q-uart";
+                               reg = <0x021e8000 0x4000>;
+                               interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_UART2_IPG>,
+                                        <&clks IMX6UL_CLK_UART2_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
+                       };
+
+                       uart3: serial@021ec000 {
+                               compatible = "fsl,imx6ul-uart",
+                                            "fsl,imx6q-uart";
+                               reg = <0x021ec000 0x4000>;
+                               interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_UART3_IPG>,
+                                        <&clks IMX6UL_CLK_UART3_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
+                       };
+
+                       uart4: serial@021f0000 {
+                               compatible = "fsl,imx6ul-uart",
+                                            "fsl,imx6q-uart";
+                               reg = <0x021f0000 0x4000>;
+                               interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_UART4_IPG>,
+                                        <&clks IMX6UL_CLK_UART4_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
+                       };
+
+                       uart5: serial@021f4000 {
+                               compatible = "fsl,imx6ul-uart",
+                                            "fsl,imx6q-uart";
+                               reg = <0x021f4000 0x4000>;
+                               interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_UART5_IPG>,
+                                        <&clks IMX6UL_CLK_UART5_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
+                       };
+
+                       i2c4: i2c@021f8000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,imx6ul-i2c", "fsl,imx21-i2c";
+                               reg = <0x021f8000 0x4000>;
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_I2C4>;
+                               status = "disabled";
+                       };
+
+                       uart6: serial@021fc000 {
+                               compatible = "fsl,imx6ul-uart",
+                                            "fsl,imx6q-uart";
+                               reg = <0x021fc000 0x4000>;
+                               interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX6UL_CLK_UART6_IPG>,
+                                        <&clks IMX6UL_CLK_UART6_SERIAL>;
+                               clock-names = "ipg", "per";
+                               status = "disabled";
+                       };
+               };
+       };
+};
index c42cf8d..b738ce0 100644 (file)
                clock-output-names = "osc";
        };
 
+       etr@30086000 {
+               compatible = "arm,coresight-tmc", "arm,primecell";
+               reg = <0x30086000 0x1000>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               port {
+                       etr_in_port: endpoint {
+                               slave-mode;
+                               remote-endpoint = <&replicator_out_port1>;
+                       };
+               };
+       };
+
+       tpiu@30087000 {
+               compatible = "arm,coresight-tpiu", "arm,primecell";
+               reg = <0x30087000 0x1000>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               port {
+                       tpiu_in_port: endpoint {
+                               slave-mode;
+                               remote-endpoint = <&replicator_out_port1>;
+                       };
+               };
+       };
+
+       replicator {
+               /*
+                * non-configurable replicators don't show up on the
+                * AMBA bus.  As such no need to add "arm,primecell"
+                */
+               compatible = "arm,coresight-replicator";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* replicator output ports */
+                       port@0 {
+                               reg = <0>;
+                               replicator_out_port0: endpoint {
+                                       remote-endpoint = <&tpiu_in_port>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               replicator_out_port1: endpoint {
+                                       remote-endpoint = <&etr_in_port>;
+                               };
+                       };
+
+                       /* replicator input port */
+                       port@2 {
+                               reg = <0>;
+                               replicator_in_port0: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etf_out_port>;
+                               };
+                       };
+               };
+       };
+
+       etf@30084000 {
+               compatible = "arm,coresight-tmc", "arm,primecell";
+               reg = <0x30084000 0x1000>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               etf_in_port: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&hugo_funnel_out_port0>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <0>;
+                               etf_out_port: endpoint {
+                                       remote-endpoint = <&replicator_in_port0>;
+                               };
+                       };
+               };
+       };
+
+       funnel@30083000 {
+               compatible = "arm,coresight-funnel", "arm,primecell";
+               reg = <0x30083000 0x1000>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* funnel input ports */
+                       port@0 {
+                               reg = <0>;
+                               hugo_funnel_in_port0: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&ca_funnel_out_port0>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               hugo_funnel_in_port1: endpoint {
+                                       slave-mode; /* M4 input */
+                               };
+                       };
+
+                       port@2 {
+                               reg = <0>;
+                               hugo_funnel_out_port0: endpoint {
+                                       remote-endpoint = <&etf_in_port>;
+                               };
+                       };
+
+                       /* the other input ports are not connect to anything */
+               };
+       };
+
+       funnel@30041000 {
+               compatible = "arm,coresight-funnel", "arm,primecell";
+               reg = <0x30041000 0x1000>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* funnel input ports */
+                       port@0 {
+                               reg = <0>;
+                               ca_funnel_in_port0: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etm0_out_port>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               ca_funnel_in_port1: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etm1_out_port>;
+                               };
+                       };
+
+                       /* funnel output port */
+                       port@2 {
+                               reg = <0>;
+                               ca_funnel_out_port0: endpoint {
+                                       remote-endpoint = <&hugo_funnel_in_port0>;
+                               };
+                       };
+
+                       /* the other input ports are not connect to anything */
+               };
+       };
+
+       etm@3007c000 {
+               compatible = "arm,coresight-etm3x", "arm,primecell";
+               reg = <0x3007c000 0x1000>;
+               cpu = <&cpu0>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               port {
+                       etm0_out_port: endpoint {
+                               remote-endpoint = <&ca_funnel_in_port0>;
+                       };
+               };
+       };
+
+       etm@3007d000 {
+               compatible = "arm,coresight-etm3x", "arm,primecell";
+               reg = <0x3007d000 0x1000>;
+
+               /*
+                * System will hang if added nosmp in kernel command line
+                * without arm,primecell-periphid because amba bus try to
+                * read id and core1 power off at this time.
+                */
+               arm,primecell-periphid = <0xbb956>;
+               cpu = <&cpu1>;
+               clocks = <&clks IMX7D_MAIN_AXI_ROOT_CLK>;
+               clock-names = "apb_pclk";
+
+               port {
+                       etm1_out_port: endpoint {
+                               remote-endpoint = <&ca_funnel_in_port1>;
+                       };
+               };
+       };
+
        soc {
                #address-cells = <1>;
                #size-cells = <1>;
                                #interrupt-cells = <2>;
                        };
 
+                       wdog1: wdog@30280000 {
+                               compatible = "fsl,imx7d-wdt", "fsl,imx21-wdt";
+                               reg = <0x30280000 0x10000>;
+                               interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX7D_WDOG1_ROOT_CLK>;
+                       };
+
+                       wdog2: wdog@30290000 {
+                               compatible = "fsl,imx7d-wdt", "fsl,imx21-wdt";
+                               reg = <0x30290000 0x10000>;
+                               interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX7D_WDOG2_ROOT_CLK>;
+                               status = "disabled";
+                       };
+
+                       wdog3: wdog@302a0000 {
+                               compatible = "fsl,imx7d-wdt", "fsl,imx21-wdt";
+                               reg = <0x302a0000 0x10000>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX7D_WDOG3_ROOT_CLK>;
+                               status = "disabled";
+                       };
+
+                       wdog4: wdog@302b0000 {
+                               compatible = "fsl,imx7d-wdt", "fsl,imx21-wdt";
+                               reg = <0x302b0000 0x10000>;
+                               interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks IMX7D_WDOG4_ROOT_CLK>;
+                               status = "disabled";
+                       };
+
                        gpt1: gpt@302d0000 {
                                compatible = "fsl,imx7d-gpt", "fsl,imx6sx-gpt";
                                reg = <0x302d0000 0x10000>;
                        };
 
                        snvs: snvs@30370000 {
-                               compatible = "fsl,sec-v4.0-mon", "simple-bus";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges = <0 0x30370000 0x10000>;
+                               compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
+                               reg = <0x30370000 0x10000>;
 
-                               snvs-rtc-lp@34 {
+                               snvs_rtc: snvs-rtc-lp {
                                        compatible = "fsl,sec-v4.0-mon-rtc-lp";
-                                       reg = <0x34 0x58>;
+                                       regmap = <&snvs>;
+                                       offset = <0x34>;
                                        interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
                                                     <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                                };
+
+                               snvs_poweroff: snvs-poweroff {
+                                       compatible = "syscon-poweroff";
+                                       regmap = <&snvs>;
+                                       offset = <0x38>;
+                                       mask = <0x60>;
+                               };
+
+                               snvs_pwrkey: snvs-powerkey {
+                                       compatible = "fsl,sec-v4.0-pwrkey";
+                                       regmap = <&snvs>;
+                                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                                       linux,keycode = <KEY_POWER>;
+                                       wakeup-source;
+                               };
                        };
 
                        clks: ccm@30380000 {
diff --git a/arch/arm/boot/dts/kirkwood-lswvl.dts b/arch/arm/boot/dts/kirkwood-lswvl.dts
new file mode 100644 (file)
index 0000000..09eed3c
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ * Device Tree file for Buffalo Linkstation LS-WVL/VL
+ *
+ * Copyright (C) 2015, rogershimizu@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6282.dtsi"
+
+/ {
+       model = "Buffalo Linkstation LS-WVL/VL";
+       compatible = "buffalo,lswvl", "buffalo,lsvl", "marvell,kirkwood-88f6282", "marvell,kirkwood";
+
+       memory { /* 256 MB */
+               device_type = "memory";
+               reg = <0x00000000 0x10000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 earlyprintk";
+               stdout-path = &uart0;
+       };
+
+       mbus {
+               pcie-controller {
+                       status = "okay";
+                       pcie@1,0 {
+                               status = "okay";
+                       };
+               };
+       };
+
+       ocp@f1000000 {
+               pinctrl: pin-controller@10000 {
+                       pmx_power_hdd0: pmx-power-hdd0 {
+                               marvell,pins = "mpp8";
+                               marvell,function = "gpio";
+                       };
+                       pmx_power_hdd1: pmx-power-hdd1 {
+                               marvell,pins = "mpp9";
+                               marvell,function = "gpio";
+                       };
+                       pmx_usb_vbus: pmx-usb-vbus {
+                               marvell,pins = "mpp12";
+                               marvell,function = "gpio";
+                       };
+                       pmx_fan_high: pmx-fan-high {
+                               marvell,pins = "mpp16";
+                               marvell,function = "gpio";
+                       };
+                       pmx_fan_low: pmx-fan-low {
+                               marvell,pins = "mpp17";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_hdderr0: pmx-led-hdderr0 {
+                               marvell,pins = "mpp34";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_hdderr1: pmx-led-hdderr1 {
+                               marvell,pins = "mpp35";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_alarm: pmx-led-alarm {
+                               marvell,pins = "mpp36";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_function_red: pmx-led-function-red {
+                               marvell,pins = "mpp37";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_info: pmx-led-info {
+                               marvell,pins = "mpp38";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_function_blue: pmx-led-function-blue {
+                               marvell,pins = "mpp39";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_power: pmx-led-power {
+                               marvell,pins = "mpp40";
+                               marvell,function = "gpio";
+                       };
+                       pmx_fan_lock: pmx-fan-lock {
+                               marvell,pins = "mpp43";
+                               marvell,function = "gpio";
+                       };
+                       pmx_button_function: pmx-button-function {
+                               marvell,pins = "mpp45";
+                               marvell,function = "gpio";
+                       };
+                       pmx_power_switch: pmx-power-switch {
+                               marvell,pins = "mpp46";
+                               marvell,function = "gpio";
+                       };
+                       pmx_power_auto_switch: pmx-power-auto-switch {
+                               marvell,pins = "mpp47";
+                               marvell,function = "gpio";
+                       };
+               };
+
+               serial@12000 {
+                       status = "okay";
+               };
+
+               sata@80000 {
+                       status = "okay";
+                       nr-ports = <2>;
+               };
+
+               spi@10600 {
+                       status = "okay";
+
+                       m25p40@0 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               compatible = "st,m25p40", "jedec,spi-nor";
+                               reg = <0>;
+                               spi-max-frequency = <25000000>;
+                               mode = <0>;
+
+                               partition@0 {
+                                       reg = <0x0 0x60000>;
+                                       label = "uboot";
+                                       read-only;
+                               };
+
+                               partition@60000 {
+                                       reg = <0x60000 0x10000>;
+                                       label = "dtb";
+                                       read-only;
+                               };
+
+                               partition@70000 {
+                                       reg = <0x70000 0x10000>;
+                                       label = "uboot_env";
+                               };
+                       };
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_button_function &pmx_power_switch
+                            &pmx_power_auto_switch>;
+               pinctrl-names = "default";
+
+               button@1 {
+                       label = "Function Button";
+                       linux,code = <KEY_OPTION>;
+                       gpios = <&gpio0 45 GPIO_ACTIVE_LOW>;
+               };
+
+               button@2 {
+                       label = "Power-on Switch";
+                       linux,code = <KEY_RESERVED>;
+                       linux,input-type = <5>;
+                       gpios = <&gpio0 46 GPIO_ACTIVE_LOW>;
+               };
+
+               button@3 {
+                       label = "Power-auto Switch";
+                       linux,code = <KEY_ESC>;
+                       linux,input-type = <5>;
+                       gpios = <&gpio0 47 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
+                            &pmx_led_info &pmx_led_power
+                            &pmx_led_function_blue
+                            &pmx_led_hdderr0
+                            &pmx_led_hdderr1>;
+               pinctrl-names = "default";
+
+               led@1 {
+                       label = "lswvl:red:alarm";
+                       gpios = <&gpio0 36 GPIO_ACTIVE_LOW>;
+               };
+
+               led@2 {
+                       label = "lswvl:red:func";
+                       gpios = <&gpio0 37 GPIO_ACTIVE_LOW>;
+               };
+
+               led@3 {
+                       label = "lswvl:amber:info";
+                       gpios = <&gpio0 38 GPIO_ACTIVE_LOW>;
+               };
+
+               led@4 {
+                       label = "lswvl:blue:func";
+                       gpios = <&gpio0 39 GPIO_ACTIVE_LOW>;
+               };
+
+               led@5 {
+                       label = "lswvl:blue:power";
+                       gpios = <&gpio0 40 GPIO_ACTIVE_LOW>;
+                       default-state = "keep";
+               };
+
+               led@6 {
+                       label = "lswvl:red:hdderr0";
+                       gpios = <&gpio0 34 GPIO_ACTIVE_LOW>;
+               };
+
+               led@7 {
+                       label = "lswvl:red:hdderr1";
+                       gpios = <&gpio0 35 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_fan {
+               compatible = "gpio-fan";
+               pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
+               pinctrl-names = "default";
+
+               gpios = <&gpio0 17 GPIO_ACTIVE_LOW
+                        &gpio0 16 GPIO_ACTIVE_LOW>;
+
+               gpio-fan,speed-map = <0 3
+                               1500 2
+                               3250 1
+                               5000 0>;
+
+               alarm-gpios = <&gpio0 43 GPIO_ACTIVE_HIGH>;
+       };
+
+       restart_poweroff {
+               compatible = "restart-poweroff";
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
+               pinctrl-names = "default";
+
+               usb_power: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "USB Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               };
+               hdd_power0: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "HDD0 Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>;
+               };
+               hdd_power1: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "HDD1 Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 9 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&mdio {
+       status = "okay";
+
+       ethphy0: ethernet-phy@0 {
+               device_type = "ethernet-phy";
+               reg = <0>;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       ethernet0-port@0 {
+               phy-handle = <&ethphy0>;
+       };
+};
diff --git a/arch/arm/boot/dts/kirkwood-lswxl.dts b/arch/arm/boot/dts/kirkwood-lswxl.dts
new file mode 100644 (file)
index 0000000..f5db16a
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ * Device Tree file for Buffalo Linkstation LS-WXL/WSXL
+ *
+ * Copyright (C) 2015, rogershimizu@gmail.com
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+/dts-v1/;
+
+#include "kirkwood.dtsi"
+#include "kirkwood-6281.dtsi"
+
+/ {
+       model = "Buffalo Linkstation LS-WXL/WSXL";
+       compatible = "buffalo,lswxl", "marvell,kirkwood-88f6281", "marvell,kirkwood";
+
+       memory { /* 128 MB */
+               device_type = "memory";
+               reg = <0x00000000 0x8000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 earlyprintk";
+               stdout-path = &uart0;
+       };
+
+       mbus {
+               pcie-controller {
+                       status = "okay";
+                       pcie@1,0 {
+                               status = "okay";
+                       };
+               };
+       };
+
+       ocp@f1000000 {
+               pinctrl: pin-controller@10000 {
+                       pmx_power_hdd0: pmx-power-hdd0 {
+                               marvell,pins = "mpp28";
+                               marvell,function = "gpio";
+                       };
+                       pmx_power_hdd1: pmx-power-hdd1 {
+                               marvell,pins = "mpp29";
+                               marvell,function = "gpio";
+                       };
+                       pmx_usb_vbus: pmx-usb-vbus {
+                               marvell,pins = "mpp37";
+                               marvell,function = "gpio";
+                       };
+                       pmx_fan_high: pmx-fan-high {
+                               marvell,pins = "mpp47";
+                               marvell,function = "gpio";
+                       };
+                       pmx_fan_low: pmx-fan-low {
+                               marvell,pins = "mpp48";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_hdderr0: pmx-led-hdderr0 {
+                               marvell,pins = "mpp8";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_hdderr1: pmx-led-hdderr1 {
+                               marvell,pins = "mpp46";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_alarm: pmx-led-alarm {
+                               marvell,pins = "mpp49";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_function_red: pmx-led-function-red {
+                               marvell,pins = "mpp34";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_function_blue: pmx-led-function-blue {
+                               marvell,pins = "mpp36";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_info: pmx-led-info {
+                               marvell,pins = "mpp38";
+                               marvell,function = "gpio";
+                       };
+                       pmx_led_power: pmx-led-power {
+                               marvell,pins = "mpp39";
+                               marvell,function = "gpio";
+                       };
+                       pmx_fan_lock: pmx-fan-lock {
+                               marvell,pins = "mpp40";
+                               marvell,function = "gpio";
+                       };
+                       pmx_button_function: pmx-button-function {
+                               marvell,pins = "mpp41";
+                               marvell,function = "gpio";
+                       };
+                       pmx_power_switch: pmx-power-switch {
+                               marvell,pins = "mpp42";
+                               marvell,function = "gpio";
+                       };
+                       pmx_power_auto_switch: pmx-power-auto-switch {
+                               marvell,pins = "mpp43";
+                               marvell,function = "gpio";
+                       };
+               };
+
+               serial@12000 {
+                       status = "okay";
+               };
+
+               sata@80000 {
+                       status = "okay";
+                       nr-ports = <2>;
+               };
+
+               spi@10600 {
+                       status = "okay";
+
+                       m25p40@0 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               compatible = "st,m25p40", "jedec,spi-nor";
+                               reg = <0>;
+                               spi-max-frequency = <25000000>;
+                               mode = <0>;
+
+                               partition@0 {
+                                       reg = <0x0 0x60000>;
+                                       label = "uboot";
+                                       read-only;
+                               };
+
+                               partition@60000 {
+                                       reg = <0x60000 0x10000>;
+                                       label = "dtb";
+                                       read-only;
+                               };
+
+                               partition@70000 {
+                                       reg = <0x70000 0x10000>;
+                                       label = "uboot_env";
+                               };
+                       };
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_button_function &pmx_power_switch
+                            &pmx_power_auto_switch>;
+               pinctrl-names = "default";
+
+               button@1 {
+                       label = "Function Button";
+                       linux,code = <KEY_OPTION>;
+                       gpios = <&gpio1 41 GPIO_ACTIVE_LOW>;
+               };
+
+               button@2 {
+                       label = "Power-on Switch";
+                       linux,code = <KEY_RESERVED>;
+                       linux,input-type = <5>;
+                       gpios = <&gpio1 42 GPIO_ACTIVE_LOW>;
+               };
+
+               button@3 {
+                       label = "Power-auto Switch";
+                       linux,code = <KEY_ESC>;
+                       linux,input-type = <5>;
+                       gpios = <&gpio1 43 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&pmx_led_function_red &pmx_led_alarm
+                            &pmx_led_info &pmx_led_power
+                            &pmx_led_function_blue
+                            &pmx_led_hdderr0
+                            &pmx_led_hdderr1>;
+               pinctrl-names = "default";
+
+               led@1 {
+                       label = "lswxl:blue:func";
+                       gpios = <&gpio1 36 GPIO_ACTIVE_LOW>;
+               };
+
+               led@2 {
+                       label = "lswxl:red:alarm";
+                       gpios = <&gpio1 49 GPIO_ACTIVE_LOW>;
+               };
+
+               led@3 {
+                       label = "lswxl:amber:info";
+                       gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+               };
+
+               led@4 {
+                       label = "lswxl:blue:power";
+                       gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+               };
+
+               led@5 {
+                       label = "lswxl:red:func";
+                       gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+                       default-state = "keep";
+               };
+
+               led@6 {
+                       label = "lswxl:red:hdderr0";
+                       gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
+               };
+
+               led@7 {
+                       label = "lswxl:red:hdderr1";
+                       gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_fan {
+               compatible = "gpio-fan";
+               pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
+               pinctrl-names = "default";
+
+               gpios = <&gpio0 47 GPIO_ACTIVE_LOW
+                        &gpio0 48 GPIO_ACTIVE_LOW>;
+
+               gpio-fan,speed-map = <0 3
+                               1500 2
+                               3250 1
+                               5000 0>;
+
+               alarm-gpios = <&gpio1 49 GPIO_ACTIVE_HIGH>;
+       };
+
+       restart_poweroff {
+               compatible = "restart-poweroff";
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_power_hdd0 &pmx_power_hdd1 &pmx_usb_vbus>;
+               pinctrl-names = "default";
+
+               usb_power: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "USB Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 37 GPIO_ACTIVE_HIGH>;
+               };
+               hdd_power0: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "HDD0 Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 28 GPIO_ACTIVE_HIGH>;
+               };
+               hdd_power1: regulator@3 {
+                       compatible = "regulator-fixed";
+                       reg = <3>;
+                       regulator-name = "HDD1 Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 29 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&mdio {
+       status = "okay";
+
+       ethphy1: ethernet-phy@8 {
+               device_type = "ethernet-phy";
+               reg = <8>;
+       };
+};
+
+&eth1 {
+       status = "okay";
+
+       ethernet1-port@0 {
+               phy-handle = <&ethphy1>;
+       };
+};
index 204da5b..2c569a6 100644 (file)
 
 #include "armv7-m.dtsi"
 
+#include "dt-bindings/clock/lpc18xx-cgu.h"
+#include "dt-bindings/clock/lpc18xx-ccu.h"
+
+#define LPC_PIN(port, pin)     (0x##port * 32 + pin)
+#define LPC_GPIO(port, pin)    (port * 32 + pin)
+
 / {
        cpus {
                #address-cells = <1>;
@@ -22,6 +28,7 @@
                        compatible = "arm,cortex-m3";
                        device_type = "cpu";
                        reg = <0x0>;
+                       clocks = <&ccu1 CLK_CPU_CORE>;
                };
        };
 
                        clock-frequency = <12000000>;
                };
 
-               /* Temporary hardcode PLL1 until clk drivers are merged */
-               pll1: pll1 {
-                       compatible = "fixed-factor-clock";
-                       clocks = <&xtal>;
+               xtal32: xtal32 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <32768>;
+               };
+
+               enet_rx_clk: enet_rx_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <0>;
+                       clock-output-names = "enet_rx_clk";
+               };
+
+               enet_tx_clk: enet_tx_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <0>;
+                       clock-output-names = "enet_tx_clk";
+               };
+
+               gp_clkin: gp_clkin {
+                       compatible = "fixed-clock";
                        #clock-cells = <0>;
-                       clock-div = <1>;
-                       clock-mult = <12>;
+                       clock-frequency = <0>;
+                       clock-output-names = "gp_clkin";
                };
        };
 
        soc {
+               mmcsd: mmcsd@40004000 {
+                       compatible = "snps,dw-mshc";
+                       reg = <0x40004000 0x1000>;
+                       interrupts = <6>;
+                       num-slots = <1>;
+                       clocks = <&ccu2 CLK_SDIO>, <&ccu1 CLK_CPU_SDIO>;
+                       clock-names = "ciu", "biu";
+                       status = "disabled";
+               };
+
+               usb0: ehci@40006100 {
+                       compatible = "nxp,lpc1850-ehci", "generic-ehci";
+                       reg = <0x40006100 0x100>;
+                       interrupts = <8>;
+                       clocks = <&ccu1 CLK_CPU_USB0>;
+                       phys = <&usb0_otg_phy>;
+                       phy-names = "usb";
+                       has-transaction-translator;
+                       status = "disabled";
+               };
+
+               usb1: ehci@40007100 {
+                       compatible = "nxp,lpc1850-ehci", "generic-ehci";
+                       reg = <0x40007100 0x100>;
+                       interrupts = <9>;
+                       clocks = <&ccu1 CLK_CPU_USB1>;
+                       status = "disabled";
+               };
+
+               emc: memory-controller@40005000 {
+                       compatible = "arm,pl172", "arm,primecell";
+                       reg = <0x40005000 0x1000>;
+                       clocks = <&ccu1 CLK_CPU_EMCDIV>, <&ccu1 CLK_CPU_EMC>;
+                       clock-names = "mpmcclk", "apb_pclk";
+                       #address-cells = <2>;
+                       #size-cells = <1>;
+                       ranges = <0 0 0x1c000000 0x1000000
+                                 1 0 0x1d000000 0x1000000
+                                 2 0 0x1e000000 0x1000000
+                                 3 0 0x1f000000 0x1000000>;
+                       status = "disabled";
+               };
+
+               lcdc: lcd-controller@40008000 {
+                       compatible = "arm,pl111", "arm,primecell";
+                       reg = <0x40008000 0x1000>;
+                       interrupts = <7>;
+                       interrupt-names = "combined";
+                       clocks = <&cgu BASE_LCD_CLK>, <&ccu1 CLK_CPU_LCD>;
+                       clock-names = "clcdclk", "apb_pclk";
+                       status = "disabled";
+               };
+
+               mac: ethernet@40010000 {
+                       compatible = "nxp,lpc1850-dwmac", "snps,dwmac-3.611", "snps,dwmac";
+                       reg = <0x40010000 0x2000>;
+                       interrupts = <5>;
+                       interrupt-names = "macirq";
+                       clocks = <&ccu1 CLK_CPU_ETHERNET>;
+                       clock-names = "stmmaceth";
+                       status = "disabled";
+               };
+
+               creg: syscon@40043000 {
+                       compatible = "nxp,lpc1850-creg", "syscon", "simple-mfd";
+                       reg = <0x40043000 0x1000>;
+                       clocks = <&ccu1 CLK_CPU_CREG>;
+
+                       usb0_otg_phy: phy@004 {
+                               compatible = "nxp,lpc1850-usb-otg-phy";
+                               clocks = <&ccu1 CLK_USB0>;
+                               #phy-cells = <0>;
+                       };
+               };
+
+               cgu: clock-controller@40050000 {
+                       compatible = "nxp,lpc1850-cgu";
+                       reg = <0x40050000 0x1000>;
+                       #clock-cells = <1>;
+                       clocks = <&xtal>, <&xtal32>, <&enet_rx_clk>, <&enet_tx_clk>, <&gp_clkin>;
+               };
+
+               ccu1: clock-controller@40051000 {
+                       compatible = "nxp,lpc1850-ccu";
+                       reg = <0x40051000 0x1000>;
+                       #clock-cells = <1>;
+                       clocks = <&cgu BASE_APB3_CLK>,   <&cgu BASE_APB1_CLK>,
+                                <&cgu BASE_SPIFI_CLK>,  <&cgu BASE_CPU_CLK>,
+                                <&cgu BASE_PERIPH_CLK>, <&cgu BASE_USB0_CLK>,
+                                <&cgu BASE_USB1_CLK>,   <&cgu BASE_SPI_CLK>;
+                       clock-names = "base_apb3_clk",   "base_apb1_clk",
+                                     "base_spifi_clk",  "base_cpu_clk",
+                                     "base_periph_clk", "base_usb0_clk",
+                                     "base_usb1_clk",   "base_spi_clk";
+               };
+
+               ccu2: clock-controller@40052000 {
+                       compatible = "nxp,lpc1850-ccu";
+                       reg = <0x40052000 0x1000>;
+                       #clock-cells = <1>;
+                       clocks = <&cgu BASE_AUDIO_CLK>, <&cgu BASE_UART3_CLK>,
+                                <&cgu BASE_UART2_CLK>, <&cgu BASE_UART1_CLK>,
+                                <&cgu BASE_UART0_CLK>, <&cgu BASE_SSP1_CLK>,
+                                <&cgu BASE_SSP0_CLK>,  <&cgu BASE_SDIO_CLK>;
+                       clock-names = "base_audio_clk", "base_uart3_clk",
+                                     "base_uart2_clk", "base_uart1_clk",
+                                     "base_uart0_clk", "base_ssp1_clk",
+                                     "base_ssp0_clk",  "base_sdio_clk";
+               };
+
                uart0: serial@40081000 {
-                       compatible = "ns16550a";
+                       compatible = "nxp,lpc1850-uart", "ns16550a";
                        reg = <0x40081000 0x1000>;
                        reg-shift = <2>;
                        interrupts = <24>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu2 CLK_APB0_UART0>, <&ccu1 CLK_CPU_UART0>;
+                       clock-names = "uartclk", "reg";
                        status = "disabled";
                };
 
                uart1: serial@40082000 {
-                       compatible = "ns16550a";
+                       compatible = "nxp,lpc1850-uart", "ns16550a";
                        reg = <0x40082000 0x1000>;
                        reg-shift = <2>;
                        interrupts = <25>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu2 CLK_APB0_UART1>, <&ccu1 CLK_CPU_UART1>;
+                       clock-names = "uartclk", "reg";
+                       status = "disabled";
+               };
+
+               ssp0: spi@40083000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x40083000 0x1000>;
+                       interrupts = <22>;
+                       clocks = <&ccu2 CLK_APB0_SSP0>, <&ccu1 CLK_CPU_SSP0>;
+                       clock-names = "sspclk", "apb_pclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
                        status = "disabled";
                };
 
                        compatible = "nxp,lpc3220-timer";
                        reg = <0x40084000 0x1000>;
                        interrupts = <12>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu1 CLK_CPU_TIMER0>;
                        clock-names = "timerclk";
                };
 
                        compatible = "nxp,lpc3220-timer";
                        reg = <0x40085000 0x1000>;
                        interrupts = <13>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu1 CLK_CPU_TIMER1>;
                        clock-names = "timerclk";
                };
 
+               pinctrl: pinctrl@40086000 {
+                       compatible = "nxp,lpc1850-scu";
+                       reg = <0x40086000 0x1000>;
+                       clocks = <&ccu1 CLK_CPU_SCU>;
+               };
+
+               can1: can@400a4000 {
+                       compatible = "bosch,c_can";
+                       reg = <0x400a4000 0x1000>;
+                       interrupts = <43>;
+                       clocks = <&ccu1 CLK_APB1_CAN1>;
+                       status = "disabled";
+               };
+
                uart2: serial@400c1000 {
-                       compatible = "ns16550a";
+                       compatible = "nxp,lpc1850-uart", "ns16550a";
                        reg = <0x400c1000 0x1000>;
                        reg-shift = <2>;
                        interrupts = <26>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu2 CLK_APB2_UART2>, <&ccu1 CLK_CPU_UART2>;
+                       clock-names = "uartclk", "reg";
                        status = "disabled";
                };
 
                uart3: serial@400c2000 {
-                       compatible = "ns16550a";
+                       compatible = "nxp,lpc1850-uart", "ns16550a";
                        reg = <0x400c2000 0x1000>;
                        reg-shift = <2>;
                        interrupts = <27>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu2 CLK_APB2_UART3>, <&ccu1 CLK_CPU_UART3>;
+                       clock-names = "uartclk", "reg";
                        status = "disabled";
                };
 
                        compatible = "nxp,lpc3220-timer";
                        reg = <0x400c3000 0x1000>;
                        interrupts = <14>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu1 CLK_CPU_TIMER2>;
                        clock-names = "timerclk";
                };
 
                        compatible = "nxp,lpc3220-timer";
                        reg = <0x400c4000 0x1000>;
                        interrupts = <15>;
-                       clocks = <&pll1>;
+                       clocks = <&ccu1 CLK_CPU_TIMER3>;
                        clock-names = "timerclk";
                };
+
+               ssp1: spi@400c5000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x400c5000 0x1000>;
+                       interrupts = <23>;
+                       clocks = <&ccu2 CLK_APB2_SSP1>, <&ccu1 CLK_CPU_SSP1>;
+                       clock-names = "sspclk", "apb_pclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               can0: can@400e2000 {
+                       compatible = "bosch,c_can";
+                       reg = <0x400e2000 0x1000>;
+                       interrupts = <51>;
+                       clocks = <&ccu1 CLK_APB3_CAN0>;
+                       status = "disabled";
+               };
+
+               gpio: gpio@400f4000 {
+                       compatible = "nxp,lpc1850-gpio";
+                       reg = <0x400f4000 0x4000>;
+                       clocks = <&ccu1 CLK_CPU_GPIO>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges =   <&pinctrl LPC_GPIO(0,0)  LPC_PIN(0,0)  2>,
+                                       <&pinctrl LPC_GPIO(0,4)  LPC_PIN(1,0)  1>,
+                                       <&pinctrl LPC_GPIO(0,8)  LPC_PIN(1,1)  4>,
+                                       <&pinctrl LPC_GPIO(1,8)  LPC_PIN(1,5)  2>,
+                                       <&pinctrl LPC_GPIO(1,0)  LPC_PIN(1,7)  8>,
+                                       <&pinctrl LPC_GPIO(0,2)  LPC_PIN(1,15) 2>,
+                                       <&pinctrl LPC_GPIO(0,12) LPC_PIN(1,17) 2>,
+                                       <&pinctrl LPC_GPIO(0,15) LPC_PIN(1,20) 1>,
+                                       <&pinctrl LPC_GPIO(5,0)  LPC_PIN(2,0)  7>,
+                                       <&pinctrl LPC_GPIO(0,7)  LPC_PIN(2,7)  1>,
+                                       <&pinctrl LPC_GPIO(5,7)  LPC_PIN(2,8)  1>,
+                                       <&pinctrl LPC_GPIO(1,10) LPC_PIN(2,9)  1>,
+                                       <&pinctrl LPC_GPIO(0,14) LPC_PIN(2,10) 1>,
+                                       <&pinctrl LPC_GPIO(1,11) LPC_PIN(2,11) 3>,
+                                       <&pinctrl LPC_GPIO(5,8)  LPC_PIN(3,1)  2>,
+                                       <&pinctrl LPC_GPIO(1,14) LPC_PIN(3,4)  2>,
+                                       <&pinctrl LPC_GPIO(0,6)  LPC_PIN(3,6)  1>,
+                                       <&pinctrl LPC_GPIO(5,10) LPC_PIN(3,7)  2>,
+                                       <&pinctrl LPC_GPIO(2,0)  LPC_PIN(4,0)  7>,
+                                       <&pinctrl LPC_GPIO(5,12) LPC_PIN(4,8)  3>,
+                                       <&pinctrl LPC_GPIO(2,9)  LPC_PIN(5,0)  7>,
+                                       <&pinctrl LPC_GPIO(2,7)  LPC_PIN(5,7)  1>,
+                                       <&pinctrl LPC_GPIO(3,0)  LPC_PIN(6,1)  5>,
+                                       <&pinctrl LPC_GPIO(0,5)  LPC_PIN(6,6)  1>,
+                                       <&pinctrl LPC_GPIO(5,15) LPC_PIN(6,7)  2>,
+                                       <&pinctrl LPC_GPIO(3,5)  LPC_PIN(6,9)  3>,
+                                       <&pinctrl LPC_GPIO(2,8)  LPC_PIN(6,12) 1>,
+                                       <&pinctrl LPC_GPIO(3,8)  LPC_PIN(7,0)  8>,
+                                       <&pinctrl LPC_GPIO(4,0)  LPC_PIN(8,0)  8>,
+                                       <&pinctrl LPC_GPIO(4,12) LPC_PIN(9,0)  4>,
+                                       <&pinctrl LPC_GPIO(5,17) LPC_PIN(9,4)  2>,
+                                       <&pinctrl LPC_GPIO(4,11) LPC_PIN(9,6)  1>,
+                                       <&pinctrl LPC_GPIO(4,8)  LPC_PIN(a,1)  3>,
+                                       <&pinctrl LPC_GPIO(5,19) LPC_PIN(a,4)  1>,
+                                       <&pinctrl LPC_GPIO(5,20) LPC_PIN(b,0)  7>,
+                                       <&pinctrl LPC_GPIO(6,0)  LPC_PIN(c,1) 14>,
+                                       <&pinctrl LPC_GPIO(6,14) LPC_PIN(d,0) 17>,
+                                       <&pinctrl LPC_GPIO(7,0)  LPC_PIN(e,0) 16>,
+                                       <&pinctrl LPC_GPIO(7,16) LPC_PIN(f,1)  3>,
+                                       <&pinctrl LPC_GPIO(7,19) LPC_PIN(f,5)  7>;
+               };
        };
 };
diff --git a/arch/arm/boot/dts/lpc4337-ciaa.dts b/arch/arm/boot/dts/lpc4337-ciaa.dts
new file mode 100644 (file)
index 0000000..5f500c1
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * CIAA NXP LPC4337 (http://www.proyecto-ciaa.com.ar)
+ *
+ * Copyright (C) 2015 VanguardiaSur - www.vanguardiasur.com.ar
+ *
+ * This code is released using a dual license strategy: BSD/GPL
+ * You can choose the licence that better fits your requirements.
+ *
+ * Released under the terms of 3-clause BSD License
+ * Released under the terms of GNU General Public License Version 2.0
+ */
+/dts-v1/;
+
+#include "lpc18xx.dtsi"
+#include "lpc4357.dtsi"
+
+#include "dt-bindings/gpio/gpio.h"
+
+/ {
+       model = "CIAA NXP LPC4337";
+       compatible = "ciaa,lpc4337", "nxp,lpc4337", "nxp,lpc4350";
+
+       aliases {
+               serial0 = &uart2;
+               serial1 = &uart3;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200 earlyprintk";
+               stdout-path = &uart2;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x28000000 0x0800000>; /* 8 MB */
+       };
+};
+
+&pinctrl {
+       enet_rmii_pins: enet-rmii-pins {
+               enet_rmii_rxd_cfg {
+                       pins = "p1_15", "p0_0";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_rmii_txd_cfg {
+                       pins = "p1_18", "p1_20";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_rmii_rx_dv_cfg {
+                       pins = "p1_16";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_rmii_tx_en_cfg {
+                       pins = "p0_1";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_ref_clk_cfg {
+                       pins = "p1_19";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_mdio_cfg {
+                       pins = "p1_17";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_mdc_cfg {
+                       pins = "p7_7";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+       };
+
+       ssp_pins: ssp-pins {
+               ssp1_cs {
+                       pins = "p6_7";
+                       function = "gpio";
+                       bias-pull-up;
+                       bias-disable;
+               };
+
+               ssp1_miso_mosi {
+                       pins = "p1_3", "p1_4";
+                       function = "ssp1";
+                       slew-rate = <1>;
+                       bias-pull-down;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               ssp1_sck {
+                       pins = "pf_4";
+                       function = "ssp1";
+                       slew-rate = <1>;
+                       bias-disable;
+               };
+       };
+
+       uart2_pins: uart2-pins {
+               uart2_rx_cfg {
+                       pins = "p7_2";
+                       function = "uart2";
+                       bias-disable;
+                       input-enable;
+               };
+
+               uart2_tx_cfg {
+                       pins = "p7_1";
+                       function = "uart2";
+                       bias-disable;
+               };
+       };
+
+       uart3_pins: uart3-pins {
+               uart3_rx_cfg {
+                       pins = "p2_4";
+                       function = "uart3";
+                       bias-disable;
+                       input-enable;
+               };
+
+               uart3_tx_cfg {
+                       pins = "p2_3";
+                       function = "uart3";
+                       bias-disable;
+               };
+       };
+};
+
+&enet_tx_clk {
+       clock-frequency = <50000000>;
+};
+
+&mac {
+       status = "okay";
+       phy-mode = "rmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&enet_rmii_pins>;
+};
+
+&ssp1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&ssp_pins>;
+       cs-gpios = <&gpio LPC_GPIO(5,15) GPIO_ACTIVE_HIGH>;
+       num-cs = <1>;
+};
+
+&uart2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+};
+
+&uart3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
index d04072f..32bc7ff 100644 (file)
        };
 };
 
-&pll1 {
-       clock-mult = <15>;
+&pinctrl {
+       emc_pins: emc-pins {
+               emc_addr0_23_cfg {
+                       pins =  "p2_9",  "p2_10", "p2_11", "p2_12",
+                               "p2_13", "p1_0",  "p1_1",  "p1_2",
+                               "p2_8",  "p2_7",  "p2_6",  "p2_2",
+                               "p2_1",  "p2_0",  "p6_8",  "p6_7",
+                               "pd_16", "pd_15", "pe_0",  "pe_1",
+                               "pe_2",  "pe_3",  "pe_4",  "pa_4";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_data0_15_cfg {
+                       pins =  "p1_7",  "p1_8",  "p1_9",  "p1_10",
+                               "p1_11", "p1_12", "p1_13", "p1_14",
+                               "p5_4",  "p5_5",  "p5_6",  "p5_7",
+                               "p5_0",  "p5_1",  "p5_2",  "p5_3";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_we_oe_cfg {
+                       pins = "p1_6", "p1_3";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_bls0_3_cfg {
+                       pins = "p1_4", "p6_6", "pd_13", "pd_10";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_cs0_cs2_cfg {
+                       pins = "p1_5", "pd_12";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_dqm0_3_cfg {
+                       pins = "p6_12", "p6_10", "pd_0", "pe_13";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_ras_cas_cfg {
+                       pins = "p6_5", "p6_4";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_dycs0_cfg {
+                       pins = "p6_9";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_cke_cfg {
+                       pins = "p6_11";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_clock_cfg {
+                       pins = "clk0", "clk1", "clk2", "clk3";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+       };
+
+       enet_mii_pins: enet-mii-pins {
+               enet_mii_rxd0_3_cfg {
+                       pins = "p1_15", "p0_0", "p9_3", "p9_2";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+               };
+
+               enet_mii_txd0_3_cfg {
+                       pins = "p1_18", "p1_20", "p9_4", "p9_5";
+                       function = "enet";
+                       bias-disable;
+               };
+
+               enet_mii_crs_col_cfg {
+                       pins = "p9_0", "p9_6";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+               };
+
+               enet_mii_rx_clk_dv_er_cfg {
+                       pins = "pc_0", "p1_16", "p9_1";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+               };
+
+               enet_mii_tx_clk_en_cfg {
+                       pins = "p1_19", "p0_1";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+               };
+
+               enet_mdio_cfg {
+                       pins = "p1_17";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+               };
+
+               enet_mdc_cfg {
+                       pins = "pc_1";
+                       function = "enet";
+                       bias-disable;
+               };
+       };
+
+       uart0_pins: uart0-pins {
+               uart0_rx_cfg {
+                       pins = "pf_11";
+                       function = "uart0";
+                       input-schmitt-disable;
+                       bias-disable;
+                       input-enable;
+               };
+
+               uart0_tx_cfg {
+                       pins = "pf_10";
+                       function = "uart0";
+                       bias-pull-down;
+               };
+       };
+};
+
+&emc {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&emc_pins>;
+
+       cs0 {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               mpmc,cs = <0>;
+               mpmc,memory-width = <16>;
+               mpmc,byte-lane-low;
+               mpmc,write-enable-delay = <0>;
+               mpmc,output-enable-delay = <0>;
+               mpmc,read-access-delay = <70>;
+               mpmc,page-mode-read-delay = <70>;
+
+               flash@0,0 {
+                       compatible = "sst,sst39vf320", "cfi-flash";
+                       reg = <0 0 0x400000>;
+                       bank-width = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bootloader";
+                               reg = <0x000000 0x040000>; /* 256 KiB */
+                       };
+
+                       partition@1 {
+                               label = "kernel";
+                               reg = <0x040000 0x2C0000>; /* 2.75 MiB */
+                       };
+
+                       partition@2 {
+                               label = "rootfs";
+                               reg = <0x300000 0x100000>; /* 1 MiB */
+                       };
+               };
+       };
+
+       cs2 {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               mpmc,cs = <2>;
+               mpmc,memory-width = <16>;
+               mpmc,byte-lane-low;
+               mpmc,write-enable-delay = <0>;
+               mpmc,output-enable-delay = <30>;
+               mpmc,read-access-delay = <90>;
+               mpmc,page-mode-read-delay = <55>;
+               mpmc,write-access-delay = <55>;
+               mpmc,turn-round-delay = <55>;
+
+               ext_sram: sram@2,0 {
+                       compatible = "mmio-sram";
+                       reg = <2 0 0x80000>; /* 512 KiB SRAM on IS62WV25616 */
+               };
+       };
+};
+
+&enet_tx_clk {
+       clock-frequency = <25000000>;
+};
+
+&mac {
+       status = "okay";
+       phy-mode = "mii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&enet_mii_pins>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
 };
index 08a6f75..5f7bdad 100644 (file)
@@ -15,6 +15,9 @@
 #include "lpc18xx.dtsi"
 #include "lpc4357.dtsi"
 
+#include "dt-bindings/input/input.h"
+#include "dt-bindings/gpio/gpio.h"
+
 / {
        model = "Embedded Artists' LPC4357 Developer's Kit";
        compatible = "ea,lpc4357-developers-kit", "nxp,lpc4357", "nxp,lpc4350";
                device_type = "memory";
                reg = <0x28000000 0x2000000>; /* 32 MB */
        };
+
+       /* vmmc is controlled by sdmmc host internally */
+       vmmc: vmmc_fixed {
+               compatible = "regulator-fixed";
+               regulator-name = "vmmc-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       gpio_joystick {
+               compatible = "gpio-keys-polled";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_joystick_pins>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <100>;
+               autorepeat;
+
+               button@0 {
+                       label = "joy_enter";
+                       linux,code = <KEY_ENTER>;
+                       gpios = <&gpio LPC_GPIO(4,8) GPIO_ACTIVE_LOW>;
+               };
+
+               button@1 {
+                       label = "joy_left";
+                       linux,code = <KEY_LEFT>;
+                       gpios = <&gpio LPC_GPIO(4,9) GPIO_ACTIVE_LOW>;
+               };
+
+               button@2 {
+                       label = "joy_up";
+                       linux,code = <KEY_UP>;
+                       gpios = <&gpio LPC_GPIO(4,10) GPIO_ACTIVE_LOW>;
+               };
+
+               button@3 {
+                       label = "joy_right";
+                       linux,code = <KEY_RIGHT>;
+                       gpios = <&gpio LPC_GPIO(4,12) GPIO_ACTIVE_LOW>;
+               };
+
+               button@4 {
+                       label = "joy_down";
+                       linux,code = <KEY_DOWN>;
+                       gpios = <&gpio LPC_GPIO(4,13) GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds_mmio {
+               compatible = "gpio-leds";
+
+               led1 {
+                       gpios = <&mmio_leds 15 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+
+               led2 {
+                       gpios = <&mmio_leds 14 GPIO_ACTIVE_HIGH>;
+               };
+
+               led3 {
+                       gpios = <&mmio_leds 13 GPIO_ACTIVE_HIGH>;
+               };
+
+               led4 {
+                       gpios = <&mmio_leds 12 GPIO_ACTIVE_HIGH>;
+               };
+
+               led5 {
+                       gpios = <&mmio_leds 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               led6 {
+                       gpios = <&mmio_leds 10 GPIO_ACTIVE_HIGH>;
+               };
+
+               led7 {
+                       gpios = <&mmio_leds 9 GPIO_ACTIVE_HIGH>;
+               };
+
+               led8 {
+                       gpios = <&mmio_leds 8 GPIO_ACTIVE_HIGH>;
+               };
+
+               led9 {
+                       gpios = <&mmio_leds 7 GPIO_ACTIVE_HIGH>;
+               };
+
+               led10 {
+                       gpios = <&mmio_leds 6 GPIO_ACTIVE_HIGH>;
+               };
+
+               led11 {
+                       gpios = <&mmio_leds 5 GPIO_ACTIVE_HIGH>;
+               };
+
+               led12 {
+                       gpios = <&mmio_leds 4 GPIO_ACTIVE_HIGH>;
+               };
+
+               led13 {
+                       gpios = <&mmio_leds 3 GPIO_ACTIVE_HIGH>;
+               };
+
+               led14 {
+                       gpios = <&mmio_leds 2 GPIO_ACTIVE_HIGH>;
+               };
+
+               led15 {
+                       gpios = <&mmio_leds 1 GPIO_ACTIVE_HIGH>;
+               };
+
+               led16 {
+                       gpios = <&mmio_leds 0 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&pinctrl {
+       emc_pins: emc-pins {
+               emc_addr0_23_cfg {
+                       pins =  "p2_9",  "p2_10", "p2_11", "p2_12",
+                               "p2_13", "p1_0",  "p1_1",  "p1_2",
+                               "p2_8",  "p2_7",  "p2_6",  "p2_2",
+                               "p2_1",  "p2_0",  "p6_8",  "p6_7",
+                               "pd_16", "pd_15", "pe_0",  "pe_1",
+                               "pe_2",  "pe_3",  "pe_4",  "pa_4";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_data0_31_cfg {
+                       pins =  "p1_7",  "p1_8",  "p1_9",  "p1_10",
+                               "p1_11", "p1_12", "p1_13", "p1_14",
+                               "p5_4",  "p5_5",  "p5_6",  "p5_7",
+                               "p5_0",  "p5_1",  "p5_2",  "p5_3",
+                               "pd_2",  "pd_3",  "pd_4",  "pd_5",
+                               "pd_6",  "pd_7",  "pd_8",  "pd_9",
+                               "pe_5",  "pe_6",  "pe_7",  "pe_8",
+                               "pe_9",  "pe_10", "pe_11", "pe_12";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_we_oe_cfg {
+                       pins = "p1_6", "p1_3";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_bls0_3_cfg {
+                       pins = "p1_4", "p6_6", "pd_13", "pd_10";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_cs0_3_cfg {
+                       pins = "p1_5", "p6_3", "pd_12", "pd_11";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_dqm0_3_cfg {
+                       pins = "p6_12", "p6_10", "pd_0", "pe_13";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_ras_cas_cfg {
+                       pins = "p6_5", "p6_4";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_dycs0_cfg {
+                       pins = "p6_9";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_cke_cfg {
+                       pins = "p6_11";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               emc_sdram_clock_cfg {
+                       pins = "clk0", "clk1", "clk2", "clk3";
+                       function = "emc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+       };
+
+       enet_rmii_pins: enet-rmii-pins {
+               enet_rmii_rxd_cfg {
+                       pins = "p1_15", "p0_0";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_rmii_txd_cfg {
+                       pins = "p1_18", "p1_20";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_rmii_rx_dv_cfg {
+                       pins = "p1_16";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_rmii_tx_en_cfg {
+                       pins = "p0_1";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_ref_clk_cfg {
+                       pins = "p1_19";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_mdio_cfg {
+                       pins = "p1_17";
+                       function = "enet";
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               enet_mdc_cfg {
+                       pins = "pc_1";
+                       function = "enet";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+       };
+
+       gpio_joystick_pins: gpio-joystick-pins {
+               gpio_joystick_cfg {
+                       pins =  "p9_0", "p9_1", "pa_1", "pa_2", "pa_3";
+                       function = "gpio";
+                       input-enable;
+                       bias-disable;
+               };
+       };
+
+       sdmmc_pins: sdmmc-pins {
+               sdmmc_clk_cfg {
+                       pins = "pc_0";
+                       function = "sdmmc";
+                       slew-rate = <1>;
+                       bias-pull-down;
+               };
+
+               sdmmc_cmd_dat0_3_cfg {
+                       pins = "pc_4", "pc_5", "pc_6", "pc_7", "pc_10";
+                       function = "sdmmc";
+                       slew-rate = <1>;
+                       bias-disable;
+                       input-enable;
+                       input-schmitt-disable;
+               };
+
+               sdmmc_cd_cfg {
+                       pins = "pc_8";
+                       function = "sdmmc";
+                       bias-pull-down;
+                       input-enable;
+               };
+
+               sdmmc_pow_cfg {
+                       pins = "pc_9";
+                       function = "sdmmc";
+                       bias-pull-down;
+               };
+       };
+
+       uart0_pins: uart0-pins {
+               uart0_rx_cfg {
+                       pins = "pf_11";
+                       function = "uart0";
+                       input-schmitt-disable;
+                       bias-disable;
+                       input-enable;
+               };
+
+               uart0_tx_cfg {
+                       pins = "pf_10";
+                       function = "uart0";
+                       bias-pull-down;
+               };
+       };
+
+       uart3_pins: uart3-pins {
+               uart3_rx_cfg {
+                       pins = "p2_4";
+                       function = "uart3";
+                       input-schmitt-disable;
+                       bias-disable;
+                       input-enable;
+               };
+
+               uart3_tx_cfg {
+                       pins = "p9_3";
+                       function = "uart3";
+                       bias-pull-down;
+               };
+       };
+
+       usb0_pins: usb0-pins {
+               usb0_pwr_enable {
+                       pins = "p2_3";
+                       function = "usb0";
+               };
+
+               usb0_pwr_fault {
+                       pins = "p8_0";
+                       function = "usb0";
+                       bias-disable;
+                       input-enable;
+               };
+       };
+};
+
+&emc {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&emc_pins>;
+
+       cs0 {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               mpmc,cs = <0>;
+               mpmc,memory-width = <16>;
+               mpmc,byte-lane-low;
+               mpmc,write-enable-delay = <0>;
+               mpmc,output-enable-delay = <0>;
+               mpmc,read-access-delay = <70>;
+               mpmc,page-mode-read-delay = <70>;
+
+               flash@0,0 {
+                       compatible = "sst,sst39vf320", "cfi-flash";
+                       reg = <0 0 0x400000>;
+                       bank-width = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "bootloader";
+                               reg = <0x000000 0x040000>; /* 256 KiB */
+                       };
+
+                       partition@1 {
+                               label = "kernel";
+                               reg = <0x040000 0x2c0000>; /* 2.75 MiB */
+                       };
+
+                       partition@2 {
+                               label = "rootfs";
+                               reg = <0x300000 0x100000>; /* 1 MiB */
+                       };
+               };
+       };
+
+       cs2 {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               mpmc,cs = <2>;
+               mpmc,memory-width = <16>;
+
+               mmio_leds: gpio@2,0 {
+                       compatible = "ti,7416374";
+                       reg = <2 0 0x2>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+
+       };
+};
+
+&enet_tx_clk {
+       clock-frequency = <50000000>;
+};
+
+&mac {
+       status = "okay";
+       phy-mode = "rmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&enet_rmii_pins>;
+};
+
+&mmcsd {
+       status = "okay";
+       bus-width = <4>;
+       vmmc-supply = <&vmmc>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_pins>;
 };
 
 &uart0 {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+};
+
+&uart3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
+
+&usb0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_pins>;
 };
index 9c5e16b..0521e68 100644 (file)
                enet0_sgmii_phy = &sgmii_phy1c;
                enet1_sgmii_phy = &sgmii_phy1d;
        };
+
+       sys_mclk: clock-mclk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reg_3p3v: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "3P3V";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack",
+                       "Speaker", "Speaker Ext",
+                       "Line", "Line In Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Microphone Jack",
+                       "Microphone Jack", "Mic Bias",
+                       "LINE_IN", "Line In Jack",
+                       "Headphone Jack", "HP_OUT",
+                       "Speaker Ext", "LINE_OUT";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai2>;
+                       frame-master;
+                       bitclock-master;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&codec>;
+                       frame-master;
+                       bitclock-master;
+               };
+       };
 };
 
 &dspi0 {
        };
 };
 
+&enet0 {
+       tbi-handle = <&tbi0>;
+       phy-handle = <&sgmii_phy1c>;
+       phy-connection-type = "sgmii";
+       status = "okay";
+};
+
+&enet1 {
+       tbi-handle = <&tbi0>;
+       phy-handle = <&sgmii_phy1d>;
+       phy-connection-type = "sgmii";
+       status = "okay";
+};
+
+&enet2 {
+       phy-handle = <&rgmii_phy3>;
+       phy-connection-type = "rgmii-id";
+       status = "okay";
+};
+
 &i2c0 {
        status = "okay";
 
        pca9547: mux@77 {
+               compatible = "nxp,pca9547";
                reg = <0x77>;
                #address-cells = <1>;
                #size-cells = <0>;
                                reg = <0x4c>;
                        };
                };
+
+               i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0x4>;
+
+                       codec: sgtl5000@2a {
+                               #sound-dai-cells = <0>;
+                               compatible = "fsl,sgtl5000";
+                               reg = <0x2a>;
+                               VDDA-supply = <&reg_3p3v>;
+                               VDDIO-supply = <&reg_3p3v>;
+                               clocks = <&sys_mclk 1>;
+                       };
+               };
        };
 };
 
        };
 };
 
+&sai2 {
+       status = "okay";
+};
+
 &uart0 {
        status = "okay";
 };
index a2c591e..e008f93 100644 (file)
                enet0_sgmii_phy = &sgmii_phy2;
                enet1_sgmii_phy = &sgmii_phy0;
        };
+
+       sys_mclk: clock-mclk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24576000>;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reg_3p3v: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "3P3V";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack",
+                       "Speaker", "Speaker Ext",
+                       "Line", "Line In Jack";
+               simple-audio-card,routing =
+                       "MIC_IN", "Microphone Jack",
+                       "Microphone Jack", "Mic Bias",
+                       "LINE_IN", "Line In Jack",
+                       "Headphone Jack", "HP_OUT",
+                       "Speaker Ext", "LINE_OUT";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai1>;
+                       frame-master;
+                       bitclock-master;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&codec>;
+                       frame-master;
+                       bitclock-master;
+               };
+       };
 };
 
 &dspi1 {
        };
 };
 
+&enet0 {
+       tbi-handle = <&tbi1>;
+       phy-handle = <&sgmii_phy2>;
+       phy-connection-type = "sgmii";
+       status = "okay";
+};
+
+&enet1 {
+       tbi-handle = <&tbi1>;
+       phy-handle = <&sgmii_phy0>;
+       phy-connection-type = "sgmii";
+       status = "okay";
+};
+
+&enet2 {
+       phy-handle = <&rgmii_phy1>;
+       phy-connection-type = "rgmii-id";
+       status = "okay";
+};
+
 &i2c0 {
        status = "okay";
 };
 
 &i2c1 {
        status = "okay";
+       codec: sgtl5000@a {
+               #sound-dai-cells = <0>;
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               VDDA-supply = <&reg_3p3v>;
+               VDDIO-supply = <&reg_3p3v>;
+               clocks = <&sys_mclk 1>;
+       };
 };
 
 &ifc {
        };
 };
 
+&sai1 {
+       status = "okay";
+};
+
 &uart0 {
        status = "okay";
 };
index c70bb27..973a496 100644 (file)
@@ -53,6 +53,9 @@
        interrupt-parent = <&gic>;
 
        aliases {
+               ethernet0 = &enet0;
+               ethernet1 = &enet1;
+               ethernet2 = &enet2;
                serial0 = &lpuart0;
                serial1 = &lpuart1;
                serial2 = &lpuart2;
                };
 
                dspi0: dspi@2100000 {
-                       compatible = "fsl,vf610-dspi";
+                       compatible = "fsl,ls1021a-v1.0-dspi";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x0 0x2100000 0x0 0x10000>;
                };
 
                dspi1: dspi@2110000 {
-                       compatible = "fsl,vf610-dspi";
+                       compatible = "fsl,ls1021a-v1.0-dspi";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        reg = <0x0 0x2110000 0x0 0x10000>;
                };
 
                sai1: sai@2b50000 {
+                       #sound-dai-cells = <0>;
                        compatible = "fsl,vf610-sai";
                        reg = <0x0 0x2b50000 0x0 0x10000>;
                        interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&platform_clk 1>;
-                       clock-names = "sai";
+                       clocks = <&platform_clk 1>, <&platform_clk 1>,
+                                <&platform_clk 1>, <&platform_clk 1>;
+                       clock-names = "bus", "mclk1", "mclk2", "mclk3";
                        dma-names = "tx", "rx";
                        dmas = <&edma0 1 47>,
                               <&edma0 1 46>;
-                       big-endian;
                        status = "disabled";
                };
 
                sai2: sai@2b60000 {
+                       #sound-dai-cells = <0>;
                        compatible = "fsl,vf610-sai";
                        reg = <0x0 0x2b60000 0x0 0x10000>;
                        interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&platform_clk 1>;
-                       clock-names = "sai";
+                       clocks = <&platform_clk 1>, <&platform_clk 1>,
+                                <&platform_clk 1>, <&platform_clk 1>;
+                       clock-names = "bus", "mclk1", "mclk2", "mclk3";
                        dma-names = "tx", "rx";
                        dmas = <&edma0 1 45>,
                               <&edma0 1 44>;
-                       big-endian;
                        status = "disabled";
                };
 
                        reg = <0x0 0x2d24000 0x0 0x4000>;
                };
 
+               enet0: ethernet@2d10000 {
+                       compatible = "fsl,etsec2";
+                       device_type = "network";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gic>;
+                       model = "eTSEC";
+                       fsl,magic-packet;
+                       ranges;
+
+                       queue-group@2d10000 {
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x2d10000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       queue-group@2d14000  {
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x2d14000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               enet1: ethernet@2d50000 {
+                       compatible = "fsl,etsec2";
+                       device_type = "network";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gic>;
+                       model = "eTSEC";
+                       ranges;
+
+                       queue-group@2d50000  {
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x2d50000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       queue-group@2d54000  {
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x2d54000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               enet2: ethernet@2d90000 {
+                       compatible = "fsl,etsec2";
+                       device_type = "network";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gic>;
+                       model = "eTSEC";
+                       ranges;
+
+                       queue-group@2d90000  {
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x2d90000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       queue-group@2d94000  {
+                               #address-cells = <2>;
+                               #size-cells = <2>;
+                               reg = <0x0 0x2d94000 0x0 0x1000>;
+                               interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
                usb@8600000 {
                        compatible = "fsl-usb2-dr-v2.5", "fsl-usb2-dr";
                        reg = <0x0 0x8600000 0x0 0x1000>;
diff --git a/arch/arm/boot/dts/mt6580-evbp1.dts b/arch/arm/boot/dts/mt6580-evbp1.dts
new file mode 100644 (file)
index 0000000..17daeae
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2015 MediaTek Inc.
+ * Author: Mars.C <mars.cheng@mediatek.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+#include "mt6580.dtsi"
+
+/ {
+       model = "MediaTek MT6580 evaluation board";
+       compatible = "mediatek,mt6580-evbp1", "mediatek,mt6580";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:921600n8";
+       };
+
+       memory {
+               reg = <0x80000000 0x20000000>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/mt6580.dtsi b/arch/arm/boot/dts/mt6580.dtsi
new file mode 100644 (file)
index 0000000..06fdf6c
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2015 MediaTek Inc.
+ * Author: Mars.C <mars.cheng@mediatek.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "skeleton.dtsi"
+
+/ {
+       compatible = "mediatek,mt6580";
+       #address-cells = <1>;
+       #size-cells = <1>;
+       interrupt-parent = <&sysirq>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x0>;
+               };
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x1>;
+               };
+               cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x2>;
+               };
+               cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x3>;
+               };
+
+       };
+
+       system_clk: dummy13m {
+               compatible = "fixed-clock";
+               clock-frequency = <13000000>;
+               #clock-cells = <0>;
+       };
+
+       rtc_clk: dummy32k {
+               compatible = "fixed-clock";
+               clock-frequency = <32000>;
+               #clock-cells = <0>;
+       };
+
+       uart_clk: dummy26m {
+               compatible = "fixed-clock";
+               clock-frequency = <26000000>;
+               #clock-cells = <0>;
+       };
+
+       timer: timer@10008000 {
+               compatible = "mediatek,mt6580-timer",
+                            "mediatek,mt6577-timer";
+               reg = <0x10008000 0x80>;
+               interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&system_clk>, <&rtc_clk>;
+               clock-names = "system-clk", "rtc-clk";
+       };
+
+       sysirq: interrupt-controller@10200100 {
+               compatible = "mediatek,mt6580-sysirq",
+                            "mediatek,mt6577-sysirq";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               interrupt-parent = <&gic>;
+               reg = <0x10200100 0x1c>;
+       };
+
+       gic: interrupt-controller@10211000 {
+               compatible = "arm,cortex-a7-gic";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               interrupt-parent = <&gic>;
+               reg = <0x10211000 0x1000>,
+                     <0x10212000 0x1000>,
+                     <0x10214000 0x2000>,
+                     <0x10216000 0x2000>;
+       };
+
+       uart0: serial@11005000 {
+               compatible = "mediatek,mt6580-uart",
+                            "mediatek,mt6577-uart";
+               reg = <0x11005000 0x400>;
+               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&uart_clk>;
+               status = "disabled";
+       };
+
+       uart1: serial@11006000 {
+               compatible = "mediatek,mt6580-uart",
+                            "mediatek,mt6577-uart";
+               reg = <0x11006000 0x400>;
+               interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&uart_clk>;
+               status = "disabled";
+       };
+};
index 3667738..357a91f 100644 (file)
        };
 };
 
+&pwrap {
+       pmic: mt6397 {
+               compatible = "mediatek,mt6397";
+
+               mt6397regulator: mt6397regulator {
+                       compatible = "mediatek,mt6397-regulator";
+
+                       mt6397_vpca15_reg: buck_vpca15 {
+                               regulator-compatible = "buck_vpca15";
+                               regulator-name = "vpca15";
+                               regulator-min-microvolt = < 850000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vpca7_reg: buck_vpca7 {
+                               regulator-compatible = "buck_vpca7";
+                               regulator-name = "vpca7";
+                               regulator-min-microvolt = < 850000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vsramca15_reg: buck_vsramca15 {
+                               regulator-compatible = "buck_vsramca15";
+                               regulator-name = "vsramca15";
+                               regulator-min-microvolt = < 850000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vsramca7_reg: buck_vsramca7 {
+                               regulator-compatible = "buck_vsramca7";
+                               regulator-name = "vsramca7";
+                               regulator-min-microvolt = < 850000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vcore_reg: buck_vcore {
+                               regulator-compatible = "buck_vcore";
+                               regulator-name = "vcore";
+                               regulator-min-microvolt = < 850000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vgpu_reg: buck_vgpu {
+                               regulator-compatible = "buck_vgpu";
+                               regulator-name = "vgpu";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-enable-ramp-delay = <115>;
+                       };
+
+                       mt6397_vdrm_reg: buck_vdrm {
+                               regulator-compatible = "buck_vdrm";
+                               regulator-name = "vdrm";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1400000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vio18_reg: buck_vio18 {
+                               regulator-compatible = "buck_vio18";
+                               regulator-name = "vio18";
+                               regulator-min-microvolt = <1620000>;
+                               regulator-max-microvolt = <1980000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vtcxo_reg: ldo_vtcxo {
+                               regulator-compatible = "ldo_vtcxo";
+                               regulator-name = "vtcxo";
+                               regulator-always-on;
+                       };
+
+                       mt6397_va28_reg: ldo_va28 {
+                               regulator-compatible = "ldo_va28";
+                               regulator-name = "va28";
+                               regulator-always-on;
+                       };
+
+                       mt6397_vcama_reg: ldo_vcama {
+                               regulator-compatible = "ldo_vcama";
+                               regulator-name = "vcama";
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vio28_reg: ldo_vio28 {
+                               regulator-compatible = "ldo_vio28";
+                               regulator-name = "vio28";
+                               regulator-always-on;
+                       };
+
+                       mt6397_vusb_reg: ldo_vusb {
+                               regulator-compatible = "ldo_vusb";
+                               regulator-name = "vusb";
+                       };
+
+                       mt6397_vmc_reg: ldo_vmc {
+                               regulator-compatible = "ldo_vmc";
+                               regulator-name = "vmc";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vmch_reg: ldo_vmch {
+                               regulator-compatible = "ldo_vmch";
+                               regulator-name = "vmch";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vemc_3v3_reg: ldo_vemc3v3 {
+                               regulator-compatible = "ldo_vemc3v3";
+                               regulator-name = "vemc_3v3";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp1_reg: ldo_vgp1 {
+                               regulator-compatible = "ldo_vgp1";
+                               regulator-name = "vcamd";
+                               regulator-min-microvolt = <1220000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <240>;
+                       };
+
+                       mt6397_vgp2_reg: ldo_vgp2 {
+                               regulator-compatible = "ldo_vgp2";
+                               regulator-name = "vcamio";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp3_reg: ldo_vgp3 {
+                               regulator-compatible = "ldo_vgp3";
+                               regulator-name = "vcamaf";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp4_reg: ldo_vgp4 {
+                               regulator-compatible = "ldo_vgp4";
+                               regulator-name = "vgp4";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp5_reg: ldo_vgp5 {
+                               regulator-compatible = "ldo_vgp5";
+                               regulator-name = "vgp5";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp6_reg: ldo_vgp6 {
+                               regulator-compatible = "ldo_vgp6";
+                               regulator-name = "vgp6";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vibr_reg: ldo_vibr {
+                               regulator-compatible = "ldo_vibr";
+                               regulator-name = "vibr";
+                               regulator-min-microvolt = <1300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+               };
+       };
+};
+
 &uart3 {
        status = "okay";
 };
index 0aba9eb..08371db 100644 (file)
  * GNU General Public License for more details.
  */
 
+#include <dt-bindings/clock/mt8135-clk.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/reset-controller/mt8135-resets.h>
 #include "skeleton64.dtsi"
 #include "mt8135-pinfunc.h"
 
                        #clock-cells = <0>;
                };
 
-               uart_clk: dummy26m {
+               clk26m: clk26m {
                        compatible = "fixed-clock";
-                       clock-frequency = <26000000>;
                        #clock-cells = <0>;
+                       clock-frequency = <26000000>;
                };
-
        };
 
        soc {
                compatible = "simple-bus";
                ranges;
 
+               topckgen: topckgen@10000000 {
+                       compatible = "mediatek,mt8135-topckgen";
+                       reg = <0 0x10000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               infracfg: infracfg@10001000 {
+                       #reset-cells = <1>;
+                       #clock-cells = <1>;
+                       compatible = "mediatek,mt8135-infracfg", "syscon";
+                       reg = <0 0x10001000 0 0x1000>;
+               };
+
+               pericfg: pericfg@10003000 {
+                       #reset-cells = <1>;
+                       #clock-cells = <1>;
+                       compatible = "mediatek,mt8135-pericfg", "syscon";
+                       reg = <0 0x10003000 0 0x1000>;
+               };
+
                /*
                 * Pinctrl access register at 0x10005000 and 0x1020c000 through
                 * regmap. Register 0x1000b000 is used by EINT.
                        clock-names = "system-clk", "rtc-clk";
                };
 
+               pwrap: pwrap@1000f000 {
+                       compatible = "mediatek,mt8135-pwrap";
+                       reg = <0 0x1000f000 0 0x1000>,
+                               <0 0x11017000 0 0x1000>;
+                       reg-names = "pwrap", "pwrap-bridge";
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&infracfg MT8135_INFRA_PMIC_WRAP_RST>,
+                                       <&pericfg MT8135_PERI_PWRAP_BRIDGE_SW_RST>;
+                       reset-names = "pwrap", "pwrap-bridge";
+                       clocks = <&clk26m>, <&clk26m>;
+                       clock-names = "spi", "wrap";
+               };
+
                sysirq: interrupt-controller@10200030 {
                        compatible = "mediatek,mt8135-sysirq",
                                     "mediatek,mt6577-sysirq";
                        reg = <0 0x10200030 0 0x1c>;
                };
 
+               apmixedsys: apmixedsys@10209000 {
+                       compatible = "mediatek,mt8135-apmixedsys";
+                       reg = <0 0x10209000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                syscfg_pctl_b: syscfg_pctl_b@1020c000 {
                        compatible = "mediatek,mt8135-pctl-b-syscfg", "syscon";
                        reg = <0 0x1020c000 0 0x1000>;
                        compatible = "mediatek,mt8135-uart","mediatek,mt6577-uart";
                        reg = <0 0x11006000 0 0x400>;
                        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART0_SEL>, <&pericfg CLK_PERI_UART0>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
                        compatible = "mediatek,mt8135-uart","mediatek,mt6577-uart";
                        reg = <0 0x11007000 0 0x400>;
                        interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART1_SEL>, <&pericfg CLK_PERI_UART1>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
                        compatible = "mediatek,mt8135-uart","mediatek,mt6577-uart";
                        reg = <0 0x11008000 0 0x400>;
                        interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART2_SEL>, <&pericfg CLK_PERI_UART2>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
                        compatible = "mediatek,mt8135-uart","mediatek,mt6577-uart";
                        reg = <0 0x11009000 0 0x400>;
                        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART3_SEL>, <&pericfg CLK_PERI_UART3>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
diff --git a/arch/arm/boot/dts/omap3-devkit8000-common.dtsi b/arch/arm/boot/dts/omap3-devkit8000-common.dtsi
new file mode 100644 (file)
index 0000000..9ca2865
--- /dev/null
@@ -0,0 +1,369 @@
+/*
+ * Author: Anil Kumar <anilk4.v@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <dt-bindings/input/input.h>
+
+#include "omap34xx.dtsi"
+/ {
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>;  /* 256 MB */
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               heartbeat {
+                       label = "devkit8000::led1";
+                       gpios = <&gpio6 26 GPIO_ACTIVE_HIGH>;   /* 186 -> LED1 */
+                       default-state = "on";
+                       linux,default-trigger = "heartbeat";
+               };
+
+               mmc {
+                       label = "devkit8000::led2";
+                       gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;    /* 163 -> LED2 */
+                       default-state = "on";
+                       linux,default-trigger = "none";
+               };
+
+               usr {
+                       label = "devkit8000::led3";
+                       gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>;    /* 164 -> LED3 */
+                       default-state = "on";
+                       linux,default-trigger = "usr";
+               };
+
+               pmu_stat {
+                       label = "devkit8000::pmu_stat";
+                       gpios = <&twl_gpio 19 GPIO_ACTIVE_HIGH>; /* LEDB */
+               };
+       };
+
+       sound {
+               compatible = "ti,omap-twl4030";
+               ti,model = "devkit8000";
+
+               ti,mcbsp = <&mcbsp2>;
+               ti,audio-routing =
+                       "Ext Spk", "PREDRIVEL",
+                       "Ext Spk", "PREDRIVER",
+                       "MAINMIC", "Main Mic",
+                       "Main Mic", "Mic Bias 1";
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               user {
+                       label = "user";
+                       gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
+                       linux,code = <BTN_EXTRA>;
+                       gpio-key,wakeup;
+               };
+       };
+
+       tfp410: encoder@0 {
+               compatible = "ti,tfp410";
+               powerdown-gpios = <&twl_gpio 7 GPIO_ACTIVE_LOW>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               tfp410_in: endpoint@0 {
+                                       remote-endpoint = <&dpi_dvi_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               tfp410_out: endpoint@0 {
+                                       remote-endpoint = <&dvi_connector_in>;
+                               };
+                       };
+               };
+       };
+
+       dvi0: connector@0 {
+               compatible = "dvi-connector";
+               label = "dvi";
+
+               digital;
+
+               ddc-i2c-bus = <&i2c2>;
+
+               port {
+                       dvi_connector_in: endpoint {
+                               remote-endpoint = <&tfp410_out>;
+                       };
+               };
+       };
+
+       tv0: connector@1 {
+               compatible = "svideo-connector";
+               label = "tv";
+
+               port {
+                       tv_connector_in: endpoint {
+                               remote-endpoint = <&venc_out>;
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <2600000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>;       /* SYS_NIRQ cascaded to intc */
+
+               twl_audio: audio {
+                       compatible = "ti,twl4030-audio";
+                       codec {
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       status = "disabled";
+};
+
+#include "twl4030.dtsi"
+#include "twl4030_omap3.dtsi"
+
+&mmc1 {
+       vmmc-supply = <&vmmc1>;
+       vmmc_aux-supply = <&vsim>;
+       bus-width = <8>;
+};
+
+&mmc2 {
+       status = "disabled";
+};
+
+&mmc3 {
+       status = "disabled";
+};
+
+&twl_gpio {
+       ti,use-leds;
+       /*
+        * pulldowns:
+        * BIT(1), BIT(2), BIT(6), BIT(7), BIT(8), BIT(13)
+        * BIT(15), BIT(16), BIT(17)
+        */
+       ti,pulldowns = <0x03a1c6>;
+};
+
+&twl_keypad {
+       linux,keymap = <MATRIX_KEY(0, 0, KEY_1)
+                       MATRIX_KEY(1, 0, KEY_2)
+                       MATRIX_KEY(2, 0, KEY_3)
+                       MATRIX_KEY(0, 1, KEY_4)
+                       MATRIX_KEY(1, 1, KEY_5)
+                       MATRIX_KEY(2, 1, KEY_6)
+                       MATRIX_KEY(3, 1, KEY_F5)
+                       MATRIX_KEY(0, 2, KEY_7)
+                       MATRIX_KEY(1, 2, KEY_8)
+                       MATRIX_KEY(2, 2, KEY_9)
+                       MATRIX_KEY(3, 2, KEY_F6)
+                       MATRIX_KEY(0, 3, KEY_F7)
+                       MATRIX_KEY(1, 3, KEY_0)
+                       MATRIX_KEY(2, 3, KEY_F8)
+                       MATRIX_KEY(4, 5, KEY_RESERVED)
+                       MATRIX_KEY(4, 4, KEY_VOLUMEUP)
+                       MATRIX_KEY(5, 5, KEY_VOLUMEDOWN)
+                       >;
+};
+
+&wdt2 {
+       status = "disabled";
+};
+
+&mcbsp2 {
+       status = "okay";
+};
+
+&gpmc {
+       ranges = <0 0 0x30000000 0x1000000>;       /* CS0: 16MB for NAND */
+
+       nand@0,0 {
+               reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
+               nand-bus-width = <16>;
+               gpmc,device-width = <2>;
+               ti,nand-ecc-opt = "sw";
+
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <44>;
+               gpmc,cs-wr-off-ns = <44>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <34>;
+               gpmc,adv-wr-off-ns = <44>;
+               gpmc,we-off-ns = <40>;
+               gpmc,oe-off-ns = <54>;
+               gpmc,access-ns = <64>;
+               gpmc,rd-cycle-ns = <82>;
+               gpmc,wr-cycle-ns = <82>;
+               gpmc,wr-access-ns = <40>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               x-loader@0 {
+                       label = "X-Loader";
+                       reg = <0 0x80000>;
+               };
+
+               bootloaders@80000 {
+                       label = "U-Boot";
+                       reg = <0x80000 0x1e0000>;
+               };
+
+               bootloaders_env@260000 {
+                       label = "U-Boot Env";
+                       reg = <0x260000 0x20000>;
+               };
+
+               kernel@280000 {
+                       label = "Kernel";
+                       reg = <0x280000 0x400000>;
+               };
+
+               filesystem@680000 {
+                       label = "File System";
+                       reg = <0x680000 0xf980000>;
+               };
+       };
+};
+
+&gpmc {
+       ranges = <6 0 0x2c000000 0x1000000>;       /* CS6: 16MB for DM9000 */
+
+       ethernet@0,0 {
+               compatible = "davicom,dm9000";
+               reg =  <6 0x000 2
+                       6 0x400 2>; /* CS6, offset 0 and 0x400, IO size 2 */
+               bank-width = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
+               davicom,no-eeprom;
+
+               gpmc,mux-add-data = <0>;
+               gpmc,device-width = <1>;
+               gpmc,wait-pin = <0>;
+               gpmc,cycle2cycle-samecsen = <1>;
+               gpmc,cycle2cycle-diffcsen = <1>;
+
+               gpmc,cs-on-ns = <6>;
+               gpmc,cs-rd-off-ns = <180>;
+               gpmc,cs-wr-off-ns = <180>;
+               gpmc,adv-on-ns = <0>;
+               gpmc,adv-rd-off-ns = <18>;
+               gpmc,adv-wr-off-ns = <48>;
+               gpmc,oe-on-ns = <54>;
+               gpmc,oe-off-ns = <168>;
+               gpmc,we-on-ns = <54>;
+               gpmc,we-off-ns = <168>;
+               gpmc,rd-cycle-ns = <186>;
+               gpmc,wr-cycle-ns = <186>;
+               gpmc,access-ns = <144>;
+               gpmc,page-burst-access-ns = <24>;
+               gpmc,bus-turnaround-ns = <90>;
+               gpmc,cycle2cycle-delay-ns = <90>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,clk-activation-ns = <0>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+               gpmc,wr-access-ns = <0>;
+       };
+};
+
+&omap3_pmx_core {
+       dss_dpi_pins: pinmux_dss_dpi_pins {
+               pinctrl-single,pins = <
+                       OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0)       /* dss_pclk.dss_pclk */
+                       OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0)       /* dss_hsync.dss_hsync */
+                       OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0)       /* dss_vsync.dss_vsync */
+                       OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0)       /* dss_acbias.dss_acbias */
+                       OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE0)       /* dss_data0.dss_data0 */
+                       OMAP3_CORE1_IOPAD(0x20de, PIN_OUTPUT | MUX_MODE0)       /* dss_data1.dss_data1 */
+                       OMAP3_CORE1_IOPAD(0x20e0, PIN_OUTPUT | MUX_MODE0)       /* dss_data2.dss_data2 */
+                       OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE0)       /* dss_data3.dss_data3 */
+                       OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE0)       /* dss_data4.dss_data4 */
+                       OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE0)       /* dss_data5.dss_data5 */
+                       OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0)       /* dss_data6.dss_data6 */
+                       OMAP3_CORE1_IOPAD(0x20ea, PIN_OUTPUT | MUX_MODE0)       /* dss_data7.dss_data7 */
+                       OMAP3_CORE1_IOPAD(0x20ec, PIN_OUTPUT | MUX_MODE0)       /* dss_data8.dss_data8 */
+                       OMAP3_CORE1_IOPAD(0x20ee, PIN_OUTPUT | MUX_MODE0)       /* dss_data9.dss_data9 */
+                       OMAP3_CORE1_IOPAD(0x20f0, PIN_OUTPUT | MUX_MODE0)       /* dss_data10.dss_data10 */
+                       OMAP3_CORE1_IOPAD(0x20f2, PIN_OUTPUT | MUX_MODE0)       /* dss_data11.dss_data11 */
+                       OMAP3_CORE1_IOPAD(0x20f4, PIN_OUTPUT | MUX_MODE0)       /* dss_data12.dss_data12 */
+                       OMAP3_CORE1_IOPAD(0x20f6, PIN_OUTPUT | MUX_MODE0)       /* dss_data13.dss_data13 */
+                       OMAP3_CORE1_IOPAD(0x20f8, PIN_OUTPUT | MUX_MODE0)       /* dss_data14.dss_data14 */
+                       OMAP3_CORE1_IOPAD(0x20fa, PIN_OUTPUT | MUX_MODE0)       /* dss_data15.dss_data15 */
+                       OMAP3_CORE1_IOPAD(0x20fc, PIN_OUTPUT | MUX_MODE0)       /* dss_data16.dss_data16 */
+                       OMAP3_CORE1_IOPAD(0x20fe, PIN_OUTPUT | MUX_MODE0)       /* dss_data17.dss_data17 */
+                       OMAP3_CORE1_IOPAD(0x2100, PIN_OUTPUT | MUX_MODE0)       /* dss_data18.dss_data18 */
+                       OMAP3_CORE1_IOPAD(0x2102, PIN_OUTPUT | MUX_MODE0)       /* dss_data19.dss_data19 */
+                       OMAP3_CORE1_IOPAD(0x2104, PIN_OUTPUT | MUX_MODE0)       /* dss_data20.dss_data20 */
+                       OMAP3_CORE1_IOPAD(0x2106, PIN_OUTPUT | MUX_MODE0)       /* dss_data21.dss_data21 */
+                       OMAP3_CORE1_IOPAD(0x2108, PIN_OUTPUT | MUX_MODE0)       /* dss_data22.dss_data22 */
+                       OMAP3_CORE1_IOPAD(0x210a, PIN_OUTPUT | MUX_MODE0)       /* dss_data23.dss_data23 */
+               >;
+       };
+};
+
+&vpll1 {
+       /* Needed for DSS */
+       regulator-name = "vdds_dsi";
+
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+};
+
+&dss {
+       status = "ok";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&dss_dpi_pins>;
+
+       vdds_dsi-supply = <&vpll1>;
+       vdda_dac-supply = <&vdac>;
+
+       port {
+               dpi_dvi_out: endpoint@0 {
+                       remote-endpoint = <&tfp410_in>;
+                       data-lines = <24>;
+               };
+       };
+};
+
+&venc {
+       status = "ok";
+
+       vdda-supply = <&vdac>;
+
+       port {
+               venc_out: endpoint {
+                       remote-endpoint = <&tv_connector_in>;
+                       ti,channels = <2>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-devkit8000-lcd-common.dtsi b/arch/arm/boot/dts/omap3-devkit8000-lcd-common.dtsi
new file mode 100644 (file)
index 0000000..e84184d
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Author: Anthoine Bourgeois <anthoine.bourgois@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "omap3-devkit8000-common.dtsi"
+/ {
+       aliases {
+               display0 = &lcd0;
+               display1 = &dvi0;
+               display2 = &tv0;
+       };
+
+       lcd0: display@0 {
+               compatible = "panel-dpi";
+               label = "lcd";
+
+               enable-gpios = <&twl_gpio 18 GPIO_ACTIVE_HIGH>;
+
+               port {
+                       lcd_in: endpoint {
+                               remote-endpoint = <&dpi_lcd_out>;
+                       };
+               };
+       };
+};
+
+&dss {
+       port {
+               dpi_lcd_out: endpoint@1 {
+                       remote-endpoint = <&lcd_in>;
+                       data-lines = <24>;
+               };
+       };
+};
+
+&vio {
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+};
+
+&mcspi2 {
+
+       /* touch controller */
+       ads7846@0 {
+               compatible = "ti,ads7846";
+               vcc-supply = <&vio>;
+
+               reg = <0>;                      /* CS0 */
+               spi-max-frequency = <1500000>;
+
+               interrupt-parent = <&gpio1>;
+               interrupts = <27 0>;            /* gpio_27 */
+               pendown-gpio = <&gpio1 27 0>;
+
+               ti,x-min = /bits/ 16 <0x0>;
+               ti,x-max = /bits/ 16 <0x0fff>;
+               ti,y-min = /bits/ 16 <0x0>;
+               ti,y-max = /bits/ 16 <0x0fff>;
+               ti,x-plate-ohms = /bits/ 16 <180>;
+               ti,pressure-max = /bits/ 16 <255>;
+               ti,debounce-max = /bits/ 16 <10>;
+               ti,debounce-tol = /bits/ 16 <5>;
+               ti,debounce-rep = /bits/ 16 <1>;
+               ti,keep-vref-on = <1>;
+               ti,settle-delay-usec = /bits/ 16 <150>;
+
+               linux,wakeup;
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-devkit8000-lcd43.dts b/arch/arm/boot/dts/omap3-devkit8000-lcd43.dts
new file mode 100644 (file)
index 0000000..d570535
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Author: Anthoine Bourgeois <anthoine.bourgois@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/*
+ * 4.3'' LCD panel sold with devkit8000 board
+ */
+
+#include "omap3-devkit8000-lcd-common.dtsi"
+/ {
+       model = "TimLL OMAP3 Devkit8000 with 4.3'' LCD panel";
+       compatible = "timll,omap3-devkit8000", "ti,omap3";
+
+       lcd0: display@0 {
+               panel-timing {
+                       clock-frequency = <10164705>;
+                       hactive = <480>;
+                       vactive = <272>;
+                       hfront-porch = <2>;
+                       hback-porch = <2>;
+                       hsync-len = <41>;
+                       vback-porch = <2>;
+                       vfront-porch = <2>;
+                       vsync-len = <10>;
+
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <1>;
+                       pixelclk-active = <1>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-devkit8000-lcd70.dts b/arch/arm/boot/dts/omap3-devkit8000-lcd70.dts
new file mode 100644 (file)
index 0000000..4afad4b
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Author: Anthoine Bourgeois <anthoine.bourgois@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+/*
+ * 7.0'' LCD panel sold with some devkit8000 board
+ */
+
+#include "omap3-devkit8000-lcd-common.dtsi"
+/ {
+       model = "TimLL OMAP3 Devkit8000 with 7.0'' LCD panel";
+       compatible = "timll,omap3-devkit8000", "ti,omap3";
+
+       lcd0: display@0 {
+               panel-timing {
+                       clock-frequency = <40000000>;
+                       hactive = <800>;
+                       vactive = <480>;
+                       hfront-porch = <1>;
+                       hback-porch = <1>;
+                       hsync-len = <48>;
+                       vback-porch = <25>;
+                       vfront-porch = <12>;
+                       vsync-len = <3>;
+
+                       hsync-active = <0>;
+                       vsync-active = <0>;
+                       de-active = <1>;
+                       pixelclk-active = <1>;
+               };
+       };
+};
index be22971..40ac894 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Author: Anil Kumar <anilk4.v@gmail.com>
+ * Author: Anthoine Bourgeois <anthoine.bourgeois@gmail.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  */
 /dts-v1/;
 
-#include "omap34xx.dtsi"
+#include "omap3-devkit8000-common.dtsi"
 / {
        model = "TimLL OMAP3 Devkit8000";
        compatible = "timll,omap3-devkit8000", "ti,omap3";
 
-       memory {
-               device_type = "memory";
-               reg = <0x80000000 0x10000000>;  /* 256 MB */
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               heartbeat {
-                       label = "devkit8000::led1";
-                       gpios = <&gpio6 26 GPIO_ACTIVE_HIGH>;   /* 186 -> LED1 */
-                       default-state = "on";
-                       linux,default-trigger = "heartbeat";
-               };
-
-               mmc {
-                       label = "devkit8000::led2";
-                       gpios = <&gpio6 3 GPIO_ACTIVE_HIGH>;    /* 163 -> LED2 */
-                       default-state = "on";
-                       linux,default-trigger = "none";
-               };
-
-               usr {
-                       label = "devkit8000::led3";
-                       gpios = <&gpio6 4 GPIO_ACTIVE_HIGH>;    /* 164 -> LED3 */
-                       default-state = "on";
-                       linux,default-trigger = "usr";
-                };
-
-       };
-
-       sound {
-               compatible = "ti,omap-twl4030";
-               ti,model = "devkit8000";
-
-               ti,mcbsp = <&mcbsp2>;
-               ti,audio-routing =
-                       "Ext Spk", "PREDRIVEL",
-                       "Ext Spk", "PREDRIVER",
-                       "MAINMIC", "Main Mic",
-                       "Main Mic", "Mic Bias 1";
-       };
-};
-
-&i2c1 {
-       clock-frequency = <2600000>;
-
-       twl: twl@48 {
-               reg = <0x48>;
-               interrupts = <7>;       /* SYS_NIRQ cascaded to intc */
-
-               twl_audio: audio {
-                       compatible = "ti,twl4030-audio";
-                       codec {
-                       };
-               };
-       };
-};
-
-&i2c2 {
-       status = "disabled";
-};
-
-&i2c3 {
-       status = "disabled";
-};
-
-#include "twl4030.dtsi"
-#include "twl4030_omap3.dtsi"
-
-&mmc1 {
-       vmmc-supply = <&vmmc1>;
-       vmmc_aux-supply = <&vsim>;
-       bus-width = <8>;
-};
-
-&mmc2 {
-       status = "disabled";
-};
-
-&mmc3 {
-       status = "disabled";
-};
-
-&wdt2 {
-       status = "disabled";
-};
-
-&mcbsp2 {
-       status = "okay";
-};
-
-&gpmc {
-       ranges = <0 0 0x30000000 0x1000000>;       /* CS0: 16MB for NAND */
-
-       nand@0,0 {
-               reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
-               nand-bus-width = <16>;
-               gpmc,device-width = <2>;
-               ti,nand-ecc-opt = "sw";
-
-               gpmc,sync-clk-ps = <0>;
-               gpmc,cs-on-ns = <0>;
-               gpmc,cs-rd-off-ns = <44>;
-               gpmc,cs-wr-off-ns = <44>;
-               gpmc,adv-on-ns = <6>;
-               gpmc,adv-rd-off-ns = <34>;
-               gpmc,adv-wr-off-ns = <44>;
-               gpmc,we-off-ns = <40>;
-               gpmc,oe-off-ns = <54>;
-               gpmc,access-ns = <64>;
-               gpmc,rd-cycle-ns = <82>;
-               gpmc,wr-cycle-ns = <82>;
-               gpmc,wr-access-ns = <40>;
-               gpmc,wr-data-mux-bus-ns = <0>;
-
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               x-loader@0 {
-                       label = "X-Loader";
-                       reg = <0 0x80000>;
-               };
-
-               bootloaders@80000 {
-                       label = "U-Boot";
-                       reg = <0x80000 0x1e0000>;
-               };
-
-               bootloaders_env@260000 {
-                       label = "U-Boot Env";
-                       reg = <0x260000 0x20000>;
-               };
-
-               kernel@280000 {
-                       label = "Kernel";
-                       reg = <0x280000 0x400000>;
-               };
-
-               filesystem@680000 {
-                       label = "File System";
-                       reg = <0x680000 0xf980000>;
-               };
-       };
-};
-
-&gpmc {
-       ranges = <6 0 0x2c000000 0x1000000>;       /* CS6: 16MB for DM9000 */
-
-       ethernet@0,0 {
-               compatible = "davicom,dm9000";
-               reg =  <6 0x000 2
-                       6 0x400 2>; /* CS6, offset 0 and 0x400, IO size 2 */
-               bank-width = <2>;
-               interrupt-parent = <&gpio1>;
-               interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
-               davicom,no-eeprom;
-
-               gpmc,mux-add-data = <0>;
-               gpmc,device-width = <1>;
-               gpmc,wait-pin = <0>;
-               gpmc,cycle2cycle-samecsen = <1>;
-               gpmc,cycle2cycle-diffcsen = <1>;
-
-               gpmc,cs-on-ns = <6>;
-               gpmc,cs-rd-off-ns = <180>;
-               gpmc,cs-wr-off-ns = <180>;
-               gpmc,adv-on-ns = <0>;
-               gpmc,adv-rd-off-ns = <18>;
-               gpmc,adv-wr-off-ns = <48>;
-               gpmc,oe-on-ns = <54>;
-               gpmc,oe-off-ns = <168>;
-               gpmc,we-on-ns = <54>;
-               gpmc,we-off-ns = <168>;
-               gpmc,rd-cycle-ns = <186>;
-               gpmc,wr-cycle-ns = <186>;
-               gpmc,access-ns = <144>;
-               gpmc,page-burst-access-ns = <24>;
-               gpmc,bus-turnaround-ns = <90>;
-               gpmc,cycle2cycle-delay-ns = <90>;
-               gpmc,wait-monitoring-ns = <0>;
-               gpmc,clk-activation-ns = <0>;
-               gpmc,wr-data-mux-bus-ns = <0>;
-               gpmc,wr-access-ns = <0>;
+       aliases {
+               display1 = &dvi0;
+               display2 = &tv0;
        };
 };
index e631333..d0dd036 100644 (file)
                pinctrl-names = "default";
                pinctrl-0 = <&tsc2048_pins>;
 
-               ti,x-min = <300>;
-               ti,x-max = <3000>;
-               ti,y-min = <600>;
-               ti,y-max = <3600>;
-               ti,x-plate-ohms = <80>;
-               ti,pressure-max = <255>;
+               ti,x-min = /bits/ 16 <300>;
+               ti,x-max = /bits/ 16 <3000>;
+               ti,y-min = /bits/ 16 <600>;
+               ti,y-max = /bits/ 16 <3600>;
+               ti,x-plate-ohms = /bits/ 16 <80>;
+               ti,pressure-max = /bits/ 16 <255>;
                ti,swap-xy;
 
                linux,wakeup;
index 18e1649..28430f1 100644 (file)
        pinctrl-0 = <&uart2_pins>;
 };
 
+&mcbsp2 {
+       status = "okay";
+};
+
+&gpmc {
+       ranges = <0 0 0x00000000 0x20000000>;
+
+       nand@0,0 {
+               linux,mtd-name= "micron,mt29c4g96maz";
+               reg = <0 0 0>;
+               nand-bus-width = <16>;
+               gpmc,device-width = <2>;
+               ti,nand-ecc-opt = "bch8";
+
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <44>;
+               gpmc,cs-wr-off-ns = <44>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <34>;
+               gpmc,adv-wr-off-ns = <44>;
+               gpmc,we-off-ns = <40>;
+               gpmc,oe-off-ns = <54>;
+               gpmc,access-ns = <64>;
+               gpmc,rd-cycle-ns = <82>;
+               gpmc,wr-cycle-ns = <82>;
+               gpmc,wr-access-ns = <40>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "SPL";
+                       reg = <0 0x80000>; /* 512KiB */
+               };
+               partition@80000 {
+                       label = "U-Boot";
+                       reg = <0x80000 0x1C0000>; /* 1792KiB */
+               };
+               partition@1c0000 {
+                       label = "Environment";
+                       reg = <0x240000 0x40000>; /* 256KiB */
+               };
+               partition@280000 {
+                       label = "Kernel";
+                       reg = <0x280000 0x800000>; /* 8192KiB */
+               };
+               partition@780000 {
+                       label = "Filesystem";
+                       reg = <0xA80000 0>;
+                       /* HACK: MTDPART_SIZ_FULL=0 so fill to end */
+               };
+       };
+};
index df8908a..80d236a 100644 (file)
@@ -62,6 +62,7 @@
                        OMAP3_CORE1_IOPAD(0x21ca, PIN_INPUT | MUX_MODE0)        /* mcspi1_simo.mcspi1_simo */
                        OMAP3_CORE1_IOPAD(0x21cc, PIN_INPUT | MUX_MODE0)        /* mcspi1_somi.mcspi1_somi */
                        OMAP3_CORE1_IOPAD(0x21ce, PIN_INPUT | MUX_MODE0)        /* mcspi1_cs0.mcspi1_cs0 */
+                       OMAP3_CORE1_IOPAD(0x21d0, PIN_INPUT | MUX_MODE0)        /* mcspi1_cs1.mcspi1_cs1 */
                >;
        };
 
                label = "lcd35";
 
                reg = <1>;                                      /* CS1 */
-               spi-max-frequency = <10000000>;
+               spi-max-frequency = <500000>;
                spi-cpol;
                spi-cpha;
 
diff --git a/arch/arm/boot/dts/omap3-overo-palo35-common.dtsi b/arch/arm/boot/dts/omap3-overo-palo35-common.dtsi
new file mode 100644 (file)
index 0000000..680d726
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 Ash Charles, Gumstix Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Palo35 expansion board is manufactured by Gumstix Inc.
+ */
+
+#include "omap3-overo-common-peripherals.dtsi"
+#include "omap3-overo-common-lcd35.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins>;
+               heartbeat {
+                       label = "overo:red:gpio21";
+                       gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;            /* gpio_21 */
+                       linux,default-trigger = "heartbeat";
+               };
+               gpio22 {
+                       label = "overo:blue:gpio22";
+                       gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;            /* gpio_22 */
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&button_pins>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               button0@23 {
+                       label = "button0";
+                       linux,code = <BTN_0>;
+                       gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;            /* gpio_23 */
+                       gpio-key,wakeup;
+               };
+               button1@14 {
+                       label = "button1";
+                       linux,code = <BTN_1>;
+                       gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;            /* gpio_14 */
+                       gpio-key,wakeup;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-overo-palo35.dts b/arch/arm/boot/dts/omap3-overo-palo35.dts
new file mode 100644 (file)
index 0000000..e3e2bce
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 Ash Charles, Gumstix Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Palo35 expansion board is manufactured by Gumstix Inc.
+ */
+
+/dts-v1/;
+
+#include "omap3-overo.dtsi"
+#include "omap3-overo-palo35-common.dtsi"
+
+/ {
+       model = "OMAP35xx Gumstix Overo on Palo35";
+       compatible = "gumstix,omap3-overo-palo35", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3";
+};
+
+&omap3_pmx_core2 {
+       led_pins: pinmux_led_pins {
+               pinctrl-single,pins = <
+                       OMAP3430_CORE2_IOPAD(0x25ea, PIN_OUTPUT | MUX_MODE4)    /* etk_d7.gpio_21 */
+                       OMAP3430_CORE2_IOPAD(0x25ec, PIN_OUTPUT | MUX_MODE4)    /* etk_d8.gpio_22 */
+               >;
+       };
+
+       button_pins: pinmux_button_pins {
+               pinctrl-single,pins = <
+                       OMAP3430_CORE2_IOPAD(0x25ee, PIN_INPUT | MUX_MODE4)     /* etk_d9.gpio_23 */
+                       OMAP3430_CORE2_IOPAD(0x25dc, PIN_INPUT | MUX_MODE4)     /* etk_d0.gpio_14 */
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-overo-storm-palo35.dts b/arch/arm/boot/dts/omap3-overo-storm-palo35.dts
new file mode 100644 (file)
index 0000000..4e725d2
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 Ash Charles, Gumstix, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * Palo35 expansion board is manufactured by Gumstix Inc.
+ */
+
+/dts-v1/;
+
+#include "omap3-overo-storm.dtsi"
+#include "omap3-overo-palo35-common.dtsi"
+
+/ {
+       model = "OMAP36xx/AM37xx/DM37xx Gumstix Overo on Palo35";
+       compatible = "gumstix,omap3-overo-palo35", "gumstix,omap3-overo", "ti,omap36xx", "ti,omap3";
+};
+
+&omap3_pmx_core2 {
+       led_pins: pinmux_led_pins {
+               pinctrl-single,pins = <
+                       OMAP3630_CORE2_IOPAD(0x25ea, PIN_OUTPUT | MUX_MODE4)    /* etk_d7.gpio_21 */
+                       OMAP3630_CORE2_IOPAD(0x25ec, PIN_OUTPUT | MUX_MODE4)    /* etk_d8.gpio_22 */
+               >;
+       };
+
+       button_pins: pinmux_button_pins {
+               pinctrl-single,pins = <
+                       OMAP3630_CORE2_IOPAD(0x25ee, PIN_INPUT | MUX_MODE4)     /* etk_d9.gpio_23 */
+                       OMAP3630_CORE2_IOPAD(0x25dc, PIN_INPUT | MUX_MODE4)     /* etk_d0.gpio_14 */
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-overo-storm-tobiduo.dts b/arch/arm/boot/dts/omap3-overo-storm-tobiduo.dts
new file mode 100644 (file)
index 0000000..da6afaf
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2015 Ash Charles, Gumstix, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * TobiDuo expansion board is manufactured by Gumstix Inc.
+ */
+
+/dts-v1/;
+
+#include "omap3-overo-storm.dtsi"
+#include "omap3-overo-tobiduo-common.dtsi"
+
+/ {
+       model = "OMAP36xx/AM37xx/DM37xx Gumstix Overo on TobiDuo";
+       compatible = "gumstix,omap3-overo-tobiduo", "gumstix,omap3-overo", "ti,omap36xx", "ti,omap3";
+};
diff --git a/arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi b/arch/arm/boot/dts/omap3-overo-tobiduo-common.dtsi
new file mode 100644 (file)
index 0000000..334109e
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2015 Ash Charles, Gumstix, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * TobiDuo expansion board is manufactured by Gumstix Inc.
+ */
+
+#include "omap3-overo-common-peripherals.dtsi"
+
+#include "omap-gpmc-smsc9221.dtsi"
+
+&gpmc {
+       ranges = <4 0 0x2b000000 0x1000000>,    /* CS4 */
+                <5 0 0x2c000000 0x1000000>;    /* CS5 */
+
+       smsc1: ethernet@gpmc {
+               reg = <5 0 0xff>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;   /* GPIO 176 */
+       };
+
+       smsc2: ethernet@4,0 {
+               compatible = "smsc,lan9221","smsc,lan9115";
+               bank-width = <2>;
+
+               gpmc,mux-add-data;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <42>;
+               gpmc,cs-wr-off-ns = <36>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <12>;
+               gpmc,adv-wr-off-ns = <12>;
+               gpmc,oe-on-ns = <0>;
+               gpmc,oe-off-ns = <42>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <36>;
+               gpmc,rd-cycle-ns = <60>;
+               gpmc,wr-cycle-ns = <54>;
+               gpmc,access-ns = <36>;
+               gpmc,page-burst-access-ns = <0>;
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <0>;
+               gpmc,wr-data-mux-bus-ns = <18>;
+               gpmc,wr-access-ns = <42>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
+               vddvario-supply = <&vddvario>;
+               vdd33a-supply = <&vdd33a>;
+               reg-io-width = <4>;
+               smsc,save-mac-address;
+
+               reg = <4 0 0xff>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <1 IRQ_TYPE_LEVEL_LOW>;    /* GPIO 65 */
+       };
+};
+
+&lis33de {
+       status = "disabled";
+};
diff --git a/arch/arm/boot/dts/omap3-overo-tobiduo.dts b/arch/arm/boot/dts/omap3-overo-tobiduo.dts
new file mode 100644 (file)
index 0000000..b9ce310
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2015 Ash Charles, Gumstix, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/*
+ * TobiDuo expansion board is manufactured by Gumstix Inc.
+ */
+
+/dts-v1/;
+
+#include "omap3-overo.dtsi"
+#include "omap3-overo-tobiduo-common.dtsi"
+
+/ {
+       model = "OMAP35xx Gumstix Overo on TobiDuo";
+       compatible = "gumstix,omap3-overo-tobiduo", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3";
+};
index 69ca7c4..932a02f 100644 (file)
@@ -32,7 +32,3 @@
                >;
        };
 };
-
-&mcbsp2 {
-       status = "okay";
-};
index 9619a28..25498f7 100644 (file)
@@ -19,7 +19,7 @@
 / {
        model = "Pandora Handheld Console 1GHz";
 
-       compatible = "ti,omap36xx", "ti,omap3";
+       compatible = "openpandora,omap3-pandora-1ghz", "ti,omap36xx", "ti,omap3";
 };
 
 &omap3_pmx_core2 {
index fb803a7..8775897 100644 (file)
@@ -19,7 +19,7 @@
 / {
        model = "Pandora Handheld Console";
 
-       compatible = "ti,omap3";
+       compatible = "openpandora,omap3-pandora-600mhz", "ti,omap3430", "ti,omap3";
 };
 
 &omap3_pmx_core2 {
index 782ab1f..f2084e6 100644 (file)
                        gpios = <&gpio4 12 GPIO_ACTIVE_HIGH>;   /* GPIO_108 */
                };
        };
+
+       /* HS USB Host PHY on PORT 2 */
+       hsusb2_phy: hsusb2_phy {
+               compatible = "usb-nop-xceiv";
+               reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; /* GPIO_16 */
+               vcc-supply = <&vaux2>;
+       };
+
+       /* HS USB Host VBUS supply
+        * disabling this regulator causes current leakage, and LCD flicker
+        * on earlier (CC) board revisions, so keep it always on */
+       usb_host_5v: fixed-regulator-usb_host_5v {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_host_5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               enable-active-high;
+               gpio = <&gpio6 4 0>;    /* GPIO_164 */
+       };
+
+       /* wg7210 (wifi+bt module) 32k clock buffer */
+       wg7210_32k: fixed-regulator-wg7210_32k {
+               compatible = "regulator-fixed";
+               regulator-name = "wg7210_32k";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               enable-active-high;
+               gpio = <&twl_gpio 13 GPIO_ACTIVE_HIGH>;
+       };
 };
 
 &omap3_pmx_core {
        power = <50>;
 };
 
+/*
+ * Many pandora boards have been produced with defective write-protect switches
+ * on either slot, so it was decided not to use this feature. If you know
+ * your board has good switches, feel free to uncomment wp-gpios below.
+ */
 &mmc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc1_pins>;
        vmmc-supply = <&vmmc1>;
        bus-width = <4>;
        cd-gpios = <&twl_gpio 0 GPIO_ACTIVE_LOW>;
-       wp-gpios = <&gpio4 30 GPIO_ACTIVE_LOW>; /* GPIO_126 */
+       /*wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;*/    /* GPIO_126 */
 };
 
 &mmc2 {
        pinctrl-0 = <&mmc2_pins>;
        vmmc-supply = <&vmmc2>;
        bus-width = <4>;
-       cd-gpios = <&twl_gpio 1 GPIO_ACTIVE_HIGH>;
-       wp-gpios = <&gpio4 31 GPIO_ACTIVE_LOW>; /* GPIO_127 */
+       cd-gpios = <&twl_gpio 1 GPIO_ACTIVE_LOW>;
+       /*wp-gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;*/    /* GPIO_127 */
+};
+
+/* mmc3 is probed using pdata-quirks to pass wl1251 card data */
+&mmc3 {
+       status = "disabled";
 };
 
 /* bluetooth*/
        port2-mode = "ehci-phy";
 };
 
+&usbhsehci {
+       phys = <0 &hsusb2_phy>;
+};
+
 &gpmc {
        ranges = <0 0 0x30000000 0x1000000>; /* CS0: 16MB for NAND */
 
                        reg = <0x280000 0xa00000>;
                };
 
-               filesystem@680000 {
+               filesystem@c80000 {
                        label = "rootfs";
                        reg = <0xc80000 0>;     /* 0 = MTDPART_SIZ_FULL */
                };
index 275618f..3cc8f35 100644 (file)
                                };
                        };
                };
+
+               palmas_power_button: palmas_power_button {
+                       compatible = "ti,palmas-pwrbutton";
+                       interrupt-parent = <&palmas>;
+                       interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
+                       wakeup-source;
+               };
        };
 
        twl6040: twl@4b {
index b1a1263..4205a8a 100644 (file)
                        dwc3@4a030000 {
                                compatible = "snps,dwc3";
                                reg = <0x4a030000 0x10000>;
-                               interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "peripheral",
+                                                 "host",
+                                                 "otg";
                                phys = <&usb2_phy>, <&usb3_phy>;
                                phy-names = "usb2-phy", "usb3-phy";
                                dr_mode = "peripheral";
diff --git a/arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts b/arch/arm/boot/dts/orion5x-linkstation-lswtgl.dts
new file mode 100644 (file)
index 0000000..3daec91
--- /dev/null
@@ -0,0 +1,273 @@
+/*
+ * Device Tree file for Buffalo Linkstation LS-WTGL
+ *
+ * Copyright (C) 2015, Roger Shimizu <rogershimizu@gmail.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "orion5x-mv88f5182.dtsi"
+
+/ {
+       model = "Buffalo Linkstation LS-WTGL";
+       compatible = "buffalo,lswtgl", "marvell,orion5x-88f5182", "marvell,orion5x";
+
+       memory { /* 64 MB */
+               device_type = "memory";
+               reg = <0x00000000 0x4000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 earlyprintk";
+               linux,stdout-path = &uart0;
+       };
+
+       soc {
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>,
+                        <MBUS_ID(0x09, 0x00) 0 0xf2200000 0x800>,
+                        <MBUS_ID(0x01, 0x0f) 0 0xf4000000 0x40000>;
+
+               internal-regs {
+                       pinctrl: pinctrl@10000 {
+                               pinctrl-0 = <&pmx_usb_power &pmx_power_hdd
+                                       &pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
+                               pinctrl-names = "default";
+
+                               pmx_led_power: pmx-leds {
+                                       marvell,pins = "mpp0";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_led_alarm: pmx-leds {
+                                       marvell,pins = "mpp2";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_led_info: pmx-leds {
+                                       marvell,pins = "mpp3";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_power_hdd: pmx-power-hdd {
+                                       marvell,pins = "mpp1";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_usb_power: pmx-usb-power {
+                                       marvell,pins = "mpp9";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_sata0: pmx-sata0 {
+                                       marvell,pins = "mpp12";
+                                       marvell,function = "sata0";
+                               };
+
+                               pmx_sata1: pmx-sata1 {
+                                       marvell,pins = "mpp13";
+                                       marvell,function = "sata1";
+                               };
+
+                               pmx_fan_high: pmx-fan-high {
+                                       marvell,pins = "mpp14";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_fan_low: pmx-fan-low {
+                                       marvell,pins = "mpp17";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_fan_lock: pmx-fan-lock {
+                                       marvell,pins = "mpp6";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_power_switch: pmx-power-switch {
+                                       marvell,pins = "mpp8", "mpp10";
+                                       marvell,function = "gpio";
+                               };
+                       };
+               };
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_power_switch>;
+               pinctrl-names = "default";
+
+               button@1 {
+                       label = "Power-on Switch";
+                       linux,code = <KEY_RESERVED>;
+                       linux,input-type = <5>;
+                       gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
+               };
+
+               button@2 {
+                       label = "Power-auto Switch";
+                       linux,code = <KEY_ESC>;
+                       linux,input-type = <5>;
+                       gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&pmx_led_power &pmx_led_alarm
+                            &pmx_led_info>;
+               pinctrl-names = "default";
+
+               led@1 {
+                       label = "lswtgl:blue:power";
+                       gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
+               };
+
+               led@2 {
+                       label = "lswtgl:red:alarm";
+                       gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+               };
+
+               led@3 {
+                       label = "lswtgl:amber:info";
+                       gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio_fan {
+               compatible = "gpio-fan";
+               pinctrl-0 = <&pmx_fan_low &pmx_fan_high &pmx_fan_lock>;
+               pinctrl-names = "default";
+
+               gpios = <&gpio0 14 GPIO_ACTIVE_LOW
+                        &gpio0 17 GPIO_ACTIVE_LOW>;
+
+               gpio-fan,speed-map = <0 3
+                               1500 2
+                               3250 1
+                               5000 0>;
+
+               alarm-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
+       };
+
+       restart_poweroff {
+               compatible = "restart-poweroff";
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_power_hdd &pmx_usb_power>;
+               pinctrl-names = "default";
+
+               usb_power: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "USB Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>;
+               };
+
+               hdd_power: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "HDD Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&mdio {
+       status = "okay";
+
+       ethphy: ethernet-phy {
+               reg = <8>;
+       };
+};
+
+&eth {
+       status = "okay";
+
+       ethernet-port@0 {
+               phy-handle = <&ethphy>;
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&i2c {
+       status = "okay";
+
+       rtc {
+               compatible = "ricoh,rs5c372a";
+               reg = <0x32>;
+       };
+};
+
+&wdt {
+       status = "disabled";
+};
+
+&sata {
+       pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
+       pinctrl-names = "default";
+       status = "okay";
+       nr-ports = <2>;
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/orion5x-lswsgl.dts b/arch/arm/boot/dts/orion5x-lswsgl.dts
new file mode 100644 (file)
index 0000000..6b47a52
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2015 Benjamin Cama <benoar@dolka.fr>
+ * Copyright (C) 2014 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+ * Based on the board file arch/arm/mach-orion5x/lsmini-setup.c,
+ * Copyright (C) 2008 Alexey Kopytko <alexey@kopytko.ru>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include "orion5x-mv88f5182.dtsi"
+
+/ {
+       model = "Buffalo Linkstation Mini (LS-WSGL)";
+       compatible = "buffalo,lswsgl", "marvell,orion5x-88f5182", "marvell,orion5x";
+
+       memory {
+               reg = <0x00000000 0x8000000>; /* 128 MB */
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200 earlyprintk";
+               linux,stdout-path = &uart0;
+       };
+
+       soc {
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>,
+                        <MBUS_ID(0x09, 0x00) 0 0xf2200000 0x800>,
+                        <MBUS_ID(0x01, 0x0f) 0 0xf4000000 0x40000>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&pmx_buttons>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               func {
+                       label = "Function Button";
+                       linux,code = <KEY_OPTION>;
+                       gpios = <&gpio0 15 GPIO_ACTIVE_LOW>;
+               };
+
+               power {
+                       label = "Power-on Switch";
+                       linux,input-type = <5>; /* EV_SW */
+                       linux,code = <KEY_RESERVED>; /* LSMINI_SW_POWER */
+                       gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
+               };
+
+               autopower {
+                       label = "Power-auto Switch";
+                       linux,input-type = <5>; /* EV_SW */
+                       linux,code = <KEY_ESC>; /* LSMINI_SW_AUTOPOWER */
+                       gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&pmx_led_alarm &pmx_led_info &pmx_led_func
+                            &pmx_led_power>;
+               pinctrl-names = "default";
+
+               alarm {
+                       label = "lswsgl:alarm:red";
+                       gpio = <&gpio0 2 GPIO_ACTIVE_LOW>;
+               };
+
+               info {
+                       label = "lswsgl:info:amber";
+                       gpio = <&gpio0 3 GPIO_ACTIVE_LOW>;
+               };
+
+               func {
+                       label = "lswsgl:func:blue:top";
+                       gpio = <&gpio0 9 GPIO_ACTIVE_LOW>;
+               };
+
+               power {
+                       label = "lswsgl:power:blue:bottom";
+                       gpio = <&gpio0 14 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+       };
+
+       restart_poweroff {
+               compatible = "restart-poweroff";
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pmx_sata0_power &pmx_sata1_power &pmx_usb_power>;
+               pinctrl-names = "default";
+
+               sata0_power: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "SATA0 Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 1 GPIO_ACTIVE_HIGH>;
+               };
+
+               sata1_power: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "SATA1 Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 19 GPIO_ACTIVE_HIGH>;
+               };
+
+               usb_power: regulator@2 {
+                       compatible = "regulator-fixed";
+                       reg = <2>;
+                       regulator-name = "USB Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+&devbus_bootcs {
+       status = "okay";
+
+       devbus,keep-config;
+
+       flash@0 {
+               compatible = "cfi-flash";
+               reg = <0 0x40000>;
+               bank-width = <1>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "Full256Kb";
+                       reg = <0 0x40000>;
+                       read-only;
+               };
+       };
+};
+
+&mdio {
+       status = "okay";
+
+       ethphy: ethernet-phy {
+               reg = <8>;
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&eth {
+       status = "okay";
+
+       ethernet-port@0 {
+               phy-handle = <&ethphy>;
+       };
+};
+
+&i2c {
+       status = "okay";
+       clock-frequency = <100000>;
+       #address-cells = <1>;
+
+       rtc@32 {
+               compatible = "ricoh,rs5c372a";
+               reg = <0x32>;
+       };
+};
+
+&pinctrl {
+       pmx_buttons: pmx-buttons {
+               marvell,pins = "mpp15", "mpp17", "mpp18";
+               marvell,function = "gpio";
+       };
+
+       pmx_led_alarm: pmx-leds {
+               marvell,pins = "mpp2";
+               marvell,function = "gpio";
+       };
+
+       pmx_led_info: pmx-leds {
+               marvell,pins = "mpp3";
+               marvell,function = "gpio";
+       };
+
+       pmx_led_func: pmx-leds {
+               marvell,pins = "mpp9";
+               marvell,function = "gpio";
+       };
+
+       pmx_led_power: pmx-leds {
+               marvell,pins = "mpp14";
+               marvell,function = "gpio";
+       };
+
+       pmx_sata0_power: pmx-sata0-power {
+               marvell,pins = "mpp1";
+               marvell,function = "gpio";
+       };
+
+       pmx_sata1_power: pmx-sata1-power {
+               marvell,pins = "mpp19";
+               marvell,function = "gpio";
+       };
+
+       pmx_usb_power: pmx-usb-power {
+               marvell,pins = "mpp16";
+               marvell,function = "gpio";
+       };
+};
+
+&sata {
+       status = "okay";
+       nr-ports = <2>;
+};
+
+&uart0 {
+       status = "okay";
+};
index 90b9971..7f68a1e 100644 (file)
@@ -7,6 +7,15 @@
        compatible = "marvell,pxa27x";
 
        pxabus {
+               pdma: dma-controller@40000000 {
+                       compatible = "marvell,pdma-1.0";
+                       reg = <0x40000000 0x10000>;
+                       interrupts = <25>;
+                       #dma-channels = <32>;
+                       #dma-cells = <2>;
+                       status = "okay";
+               };
+
                pxairq: interrupt-controller@40d00000 {
                        marvell,intc-priority;
                        marvell,intc-nr-irqs = <34>;
                        clocks = <&clks CLK_NONE>;
                };
 
+               pxa27x_ohci: usb@4c000000 {
+                       compatible = "marvell,pxa-ohci";
+                       reg = <0x4c000000 0x10000>;
+                       interrupts = <3>;
+                       clocks = <&clks CLK_USBHOST>;
+                       status = "disabled";
+               };
+
                pwm0: pwm@40b00000 {
                        compatible = "marvell,pxa270-pwm", "marvell,pxa250-pwm";
                        reg = <0x40b00000 0x10>;
@@ -50,6 +67,8 @@
                        reg = <0x40f00180 0x24>;
                        interrupts = <6>;
                        clocks = <&clks CLK_PWRI2C>;
+                       #address-cells = <0x1>;
+                       #size-cells = <0>;
                        status = "disabled";
                };
 
                        clocks = <&clks CLK_KEYPAD>;
                        status = "disabled";
                };
+
+               pxa_camera: imaging@50000000 {
+                       compatible = "marvell,pxa270-qci";
+                       reg = <0x50000000 0x1000>;
+                       interrupts = <33>;
+                       dmas = <&pdma 68 0      /* Y channel */
+                               &pdma 69 0      /* U channel */
+                               &pdma 70 0>;    /* V channel */
+                       dma-names = "CI_Y", "CI_U", "CI_V";
+
+                       clocks = <&clks CLK_CAMERA>;
+                       clock-names = "ciclk";
+                       clock-frequency = <5000000>;
+                       clock-output-names = "qci_mclk";
+
+                       status = "disabled";
+               };
        };
 
        clocks {
index 71a0cd7..5e5af07 100644 (file)
                        compatible = "marvell,pxa-mmc";
                        reg = <0x41100000 0x1000>;
                        interrupts = <23>;
+                       clocks = <&clks CLK_MMC>;
+                       dmas = <&pdma 21 3
+                               &pdma 22 3>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
index 7ad0b17..cf6998a 100644 (file)
@@ -6,6 +6,15 @@
        compatible = "marvell,pxa3xx";
 
        pxabus {
+               pdma: dma-controller@40000000 {
+                       compatible = "marvell,pdma-1.0";
+                       reg = <0x40000000 0x10000>;
+                       interrupts = <25>;
+                       #dma-channels = <32>;
+                       #dma-cells = <2>;
+                       status = "okay";
+               };
+
                pwri2c: i2c@40f500c0 {
                        compatible = "mrvl,pwri2c";
                        reg = <0x40f500c0 0x30>;
@@ -21,6 +30,8 @@
                        reg = <0x43100000 90>;
                        interrupts = <45>;
                        clocks = <&clks CLK_NAND>;
+                       dmas = <&pdma 97>;
+                       dma-names = "data";
                        #address-cells = <1>;
                        #size-cells = <1>;      
                        status = "disabled";
                        interrupt-controller;
                        #interrupt-cells = <0x2>;
                };
+
+               mmc0: mmc@41100000 {
+                       compatible = "marvell,pxa-mmc";
+                       reg = <0x41100000 0x1000>;
+                       interrupts = <23>;
+                       clocks = <&clks CLK_MMC>;
+                       dmas = <&pdma 21 3
+                               &pdma 22 3>;
+                       dma-names = "rx", "tx";
+                       status = "disabled";
+               };
+
+               mmc1: mmc@42000000 {
+                       compatible = "marvell,pxa-mmc";
+                       reg = <0x42000000 0x1000>;
+                       interrupts = <41>;
+                       clocks = <&clks CLK_MMC1>;
+                       dmas = <&pdma 93 3
+                               &pdma 94 3>;
+                       dma-names = "rx", "tx";
+                       status = "disabled";
+               };
+
+               mmc2: mmc@42500000 {
+                       compatible = "marvell,pxa-mmc";
+                       reg = <0x42500000 0x1000>;
+                       interrupts = <55>;
+                       clocks = <&clks CLK_MMC2>;
+                       dmas = <&pdma 46 3
+                               &pdma 47 3>;
+                       dma-names = "rx", "tx";
+                       status = "disabled";
+               };
+
+               pxa3xx_ohci: usb@4c000000 {
+                       compatible = "marvell,pxa-ohci";
+                       reg = <0x4c000000 0x10000>;
+                       interrupts = <3>;
+                       clocks = <&clks CLK_USBHOST>;
+                       status = "disabled";
+               };
        };
 
        clocks {
index 71512b3..34ccb26 100644 (file)
                                        bias-pull-down;
                                };
 
+                               pm8921_l5: l5 {
+                                       regulator-min-microvolt = <2750000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
                                pm8921_l23: l23 {
                                        regulator-min-microvolt = <1700000>;
                                        regulator-max-microvolt = <1900000>;
                        status = "okay";
                };
 
+               /* on board fixed 3.3v supply */
+               v3p3_fixed: v3p3 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "PCIE V3P3";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+
                amba {
                        /* eMMC */
                        sdcc1: sdcc@12400000 {
                                status = "okay";
+                               vmmc-supply = <&pm8921_l5>;
+                               vqmmc-supply = <&pm8921_s4>;
                        };
 
                        /* External micro SD card */
                        sdcc3: sdcc@12180000 {
                                status = "okay";
+                               vmmc-supply = <&v3p3_fixed>;
                        };
                        /* WLAN */
                        sdcc4: sdcc@121c0000 {
                                status = "okay";
+                               vmmc-supply = <&v3p3_fixed>;
+                               vqmmc-supply = <&v3p3_fixed>;
                        };
                };
        };
index a7c939b..88d6655 100644 (file)
@@ -7,6 +7,7 @@
 
        aliases {
                serial0 = &gsbi7_serial;
+               serial1 = &gsbi6_serial;
        };
 
        soc {
                                        bias-pull-down;
                                };
 
+                               pm8921_l5: l5 {
+                                       regulator-min-microvolt = <2750000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
                                pm8921_l6: l6 {
                                        regulator-min-microvolt = <2950000>;
                                        regulator-max-microvolt = <2950000>;
                                        regulator-max-microvolt = <1900000>;
                                        bias-pull-down;
                                };
+
+                               pm8921_lvs1: lvs1 {
+                                       bias-pull-down;
+                               };
                        };
                };
 
+               ext_3p3v: regulator-fixed@1 {
+                       compatible = "regulator-fixed";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-name = "ext_3p3v";
+                       regulator-type = "voltage";
+                       startup-delay-us = <0>;
+                       gpio = <&tlmm_pinmux 77 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       regulator-boot-on;
+               };
+
                gsbi3: gsbi@16200000 {
                        status = "okay";
                        qcom,mode = <GSBI_PROT_I2C>;
                        };
                };
 
+               gsbi@16500000 {
+                       status = "ok";
+                       qcom,mode = <GSBI_PROT_I2C_UART>;
+
+                       serial@16540000 {
+                               status = "ok";
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart_pins>;
+                       };
+               };
+
                gsbi@16600000 {
                        status = "ok";
                        qcom,mode = <GSBI_PROT_I2C_UART>;
                        /* eMMC */
                        sdcc1: sdcc@12400000 {
                                status = "okay";
+                               vmmc-supply = <&pm8921_l5>;
+                               vqmmc-supply = <&pm8921_s4>;
                        };
 
                        /* External micro SD card */
                        sdcc3: sdcc@12180000 {
                                status = "okay";
+                               vmmc-supply = <&pm8921_l6>;
                                pinctrl-names   = "default";
                                pinctrl-0       = <&card_detect>;
                                cd-gpios        = <&tlmm_pinmux 26 GPIO_ACTIVE_LOW>;
                        /* WLAN */
                        sdcc4: sdcc@121c0000 {
                                status = "okay";
+                               vmmc-supply = <&ext_3p3v>;
+                               vqmmc-supply = <&pm8921_lvs1>;
                        };
                };
        };
index df2061e..d2e94d6 100644 (file)
@@ -6,7 +6,6 @@
 #include <dt-bindings/clock/qcom,mmcc-msm8960.h>
 #include <dt-bindings/soc/qcom,gsbi.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
-
 / {
        model = "Qualcomm APQ8064";
        compatible = "qcom,apq8064";
                                        function = "gsbi3";
                                };
                        };
+
+                       uart_pins: uart_pins {
+                               mux {
+                                       pins = "gpio14", "gpio15", "gpio16", "gpio17";
+                                       function = "gsbi6";
+                               };
+                       };
                };
 
                intc: interrupt-controller@2000000 {
                gsbi3: gsbi@16200000 {
                        status = "disabled";
                        compatible = "qcom,gsbi-v1.0.0";
+                       cell-index = <3>;
                        reg = <0x16200000 0x100>;
                        clocks = <&gcc GSBI3_H_CLK>;
                        clock-names = "iface";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
-
                        i2c3: i2c@16280000 {
                                compatible = "qcom,i2c-qup-v1.1.1";
                                reg = <0x16280000 0x1000>;
                        };
                };
 
+               gsbi6: gsbi@16500000 {
+                       status = "disabled";
+                       compatible = "qcom,gsbi-v1.0.0";
+                       cell-index = <6>;
+                       reg = <0x16500000 0x03>;
+                       clocks = <&gcc GSBI6_H_CLK>;
+                       clock-names = "iface";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       gsbi6_serial: serial@16540000 {
+                               compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
+                               reg = <0x16540000 0x100>,
+                                     <0x16500000 0x03>;
+                               interrupts = <0 156 0x0>;
+                               clocks = <&gcc GSBI6_UART_CLK>, <&gcc GSBI6_H_CLK>;
+                               clock-names = "core", "iface";
+                               status = "disabled";
+                       };
+               };
+
                gsbi7: gsbi@16600000 {
                        status = "disabled";
                        compatible = "qcom,gsbi-v1.0.0";
                        compatible = "qcom,ssbi";
                        reg = <0x00500000 0x1000>;
                        qcom,controller-type = "pmic-arbiter";
+
+                       pmicintc: pmic@0 {
+                               compatible = "qcom,pm8921";
+                               interrupt-parent = <&tlmm_pinmux>;
+                               interrupts = <74 8>;
+                               #interrupt-cells = <2>;
+                               interrupt-controller;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               pm8921_gpio: gpio@150 {
+
+                                       compatible = "qcom,pm8921-gpio";
+                                       reg = <0x150>;
+                                       interrupts = <192 1>, <193 1>, <194 1>,
+                                                    <195 1>, <196 1>, <197 1>,
+                                                    <198 1>, <199 1>, <200 1>,
+                                                    <201 1>, <202 1>, <203 1>,
+                                                    <204 1>, <205 1>, <206 1>,
+                                                    <207 1>, <208 1>, <209 1>,
+                                                    <210 1>, <211 1>, <212 1>,
+                                                    <213 1>, <214 1>, <215 1>,
+                                                    <216 1>, <217 1>, <218 1>,
+                                                    <219 1>, <220 1>, <221 1>,
+                                                    <222 1>, <223 1>, <224 1>,
+                                                    <225 1>, <226 1>, <227 1>,
+                                                    <228 1>, <229 1>, <230 1>,
+                                                    <231 1>, <232 1>, <233 1>,
+                                                    <234 1>, <235 1>;
+
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+
+                               };
+
+                               pm8921_mpps: mpps@50 {
+                                       compatible = "qcom,pm8921-mpp";
+                                       reg = <0x50>;
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                                       interrupts =
+                                       <128 1>, <129 1>, <130 1>, <131 1>,
+                                       <132 1>, <133 1>, <134 1>, <135 1>,
+                                       <136 1>, <137 1>, <138 1>, <139 1>;
+                               };
+
+                       };
                };
 
                gcc: clock-controller@900000 {
                };
 
                /* Temporary fixed regulator */
-               vsdcc_fixed: vsdcc-regulator {
-                       compatible = "regulator-fixed";
-                       regulator-name = "SDCC Power";
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <2700000>;
-                       regulator-always-on;
-               };
-
                sdcc1bam:dma@12402000{
                        compatible = "qcom,bam-v1.3.0";
                        reg = <0x12402000 0x8000>;
                                non-removable;
                                cap-sd-highspeed;
                                cap-mmc-highspeed;
-                               vmmc-supply = <&vsdcc_fixed>;
                                dmas = <&sdcc1bam 2>, <&sdcc1bam 1>;
                                dma-names = "tx", "rx";
                        };
                                cap-mmc-highspeed;
                                max-frequency   = <192000000>;
                                no-1-8-v;
-                               vmmc-supply = <&vsdcc_fixed>;
                                dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
                                dma-names = "tx", "rx";
                        };
                                cap-sd-highspeed;
                                cap-mmc-highspeed;
                                max-frequency   = <48000000>;
-                               vmmc-supply = <&vsdcc_fixed>;
-                               vqmmc-supply = <&vsdcc_fixed>;
                                dmas = <&sdcc4bam 2>, <&sdcc4bam 1>;
                                dma-names = "tx", "rx";
                                pinctrl-names = "default";
index e0b2ce2..ef2fe72 100644 (file)
                        cpu-offset = <0x40000>;
                };
 
-               msmgpio: gpio@800000 {
-                       compatible = "qcom,msm-gpio";
-                       reg = <0x00800000 0x4000>;
+               tlmm: pinctrl@800000 {
+                       compatible = "qcom,msm8660-pinctrl";
+                       reg = <0x800000 0x4000>;
+
                        gpio-controller;
                        #gpio-cells = <2>;
-                       ngpio = <173>;
                        interrupts = <0 16 0x4>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
+
                };
 
                gcc: clock-controller@900000 {
 
                        pmicintc: pmic@0 {
                                compatible = "qcom,pm8058";
-                               interrupt-parent = <&msmgpio>;
+                               interrupt-parent = <&tlmm>;
                                interrupts = <88 8>;
                                #interrupt-cells = <2>;
                                interrupt-controller;
index 7f70fae..fad71d5 100644 (file)
                                status = "okay";
                        };
                };
+
+               rpm@108000 {
+                       regulators {
+                               compatible = "qcom,rpm-pm8921-regulators";
+                               vin_lvs1_3_6-supply = <&pm8921_s4>;
+                               vin_lvs2-supply = <&pm8921_s4>;
+                               vin_lvs4_5_7-supply = <&pm8921_s4>;
+                               vdd_ncp-supply = <&pm8921_l6>;
+                               vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
+                               vdd_l21_l23_l29-supply = <&pm8921_s8>;
+                               vdd_l24-supply = <&pm8921_s1>;
+                               vdd_l25-supply = <&pm8921_s1>;
+                               vdd_l27-supply = <&pm8921_s7>;
+                               vdd_l28-supply = <&pm8921_s7>;
+
+                               /* Buck SMPS */
+                               pm8921_s1: s1 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1225000>;
+                                       regulator-max-microvolt = <1225000>;
+                                       qcom,switch-mode-frequency = <3200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s2: s2 {
+                                       regulator-min-microvolt = <1300000>;
+                                       regulator-max-microvolt = <1300000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s3: s3 {
+                                       regulator-min-microvolt = <500000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       qcom,switch-mode-frequency = <4800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s4: s4 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                                       bias-pull-down;
+                                       qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
+                               };
+
+                               pm8921_s7: s7 {
+                                       regulator-min-microvolt = <1150000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       qcom,switch-mode-frequency = <3200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_s8: s8 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <2050000>;
+                                       regulator-max-microvolt = <2050000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                                       bias-pull-down;
+                               };
+
+                               /* PMOS LDO */
+                               pm8921_l1: l1 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l2: l2 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l3: l3 {
+                                       regulator-min-microvolt = <3075000>;
+                                       regulator-max-microvolt = <3075000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l4: l4 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l5: l5 {
+                                       regulator-min-microvolt = <2950000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l6: l6 {
+                                       regulator-min-microvolt = <2950000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l7: l7 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1850000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l8: l8 {
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l9: l9 {
+                                       regulator-min-microvolt = <3000000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l10: l10 {
+                                       regulator-min-microvolt = <3000000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l11: l11 {
+                                       regulator-min-microvolt = <2850000>;
+                                       regulator-max-microvolt = <2850000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l12: l12 {
+                                       regulator-min-microvolt = <1200000>;
+                                       regulator-max-microvolt = <1200000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l14: l14 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l15: l15 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l16: l16 {
+                                       regulator-min-microvolt = <2800000>;
+                                       regulator-max-microvolt = <2800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l17: l17 {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <2950000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l18: l18 {
+                                       regulator-min-microvolt = <1300000>;
+                                       regulator-max-microvolt = <1300000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l21: l21 {
+                                       regulator-min-microvolt = <1900000>;
+                                       regulator-max-microvolt = <1900000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l22: l22 {
+                                       regulator-min-microvolt = <2750000>;
+                                       regulator-max-microvolt = <2750000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l23: l23 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l24: l24 {
+                                       regulator-min-microvolt = <750000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       bias-pull-down;
+                               };
+
+                               pm8921_l25: l25 {
+                                       regulator-always-on;
+                                       regulator-min-microvolt = <1250000>;
+                                       regulator-max-microvolt = <1250000>;
+                                       bias-pull-down;
+                               };
+
+                               /* Low Voltage Switch */
+                               pm8921_lvs1: lvs1 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs2: lvs2 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs3: lvs3 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs4: lvs4 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs5: lvs5 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs6: lvs6 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_lvs7: lvs7 {
+                                       bias-pull-down;
+                               };
+
+                               pm8921_ncp: ncp {
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       qcom,switch-mode-frequency = <1600000>;
+                               };
+                       };
+               };
+
+               gsbi@16000000 {
+                       status = "ok";
+                       qcom,mode = <GSBI_PROT_SPI>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi1_default>;
+                       spi@16080000 {
+                               status = "ok";
+                               eth@0 {
+                                       compatible = "micrel,ks8851";
+                                       reg = <0>;
+                                       interrupt-parent = <&msmgpio>;
+                                       interrupts = <90 8>;
+                                       spi-max-frequency = <5400000>;
+                                       vdd-supply = <&ext_l2>;
+                                       vdd-io-supply = <&pm8921_lvs6>;
+                                       reset-gpios = <&msmgpio 89 0>;
+                               };
+                       };
+               };
+
+               pinctrl@800000 {
+                       spi1_default: spi1_default {
+                               mux {
+                                       pins = "gpio6", "gpio7", "gpio9";
+                                       function = "gsbi1";
+                               };
+
+                               mosi {
+                                       pins = "gpio6";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                               };
+
+                               miso {
+                                       pins = "gpio7";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                               };
+
+                               cs {
+                                       pins = "gpio8";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                                       output-low;
+                               };
+
+                               clk {
+                                       pins = "gpio9";
+                                       drive-strength = <12>;
+                                       bias-disable;
+                               };
+                       };
+               };
+       };
+
+       regulators {
+               compatible = "simple-bus";
+
+               ext_l2: gpio-regulator@91 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "ext_l2";
+                       gpio = <&msmgpio 91 0>;
+                       startup-delay-us = <10000>;
+                       enable-active-high;
+               };
        };
 };
 
index a02b984..2096a94 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,gcc-msm8960.h>
+#include <dt-bindings/mfd/qcom-rpm.h>
 #include <dt-bindings/soc/qcom,gsbi.h>
 
 / {
                        cpu-offset = <0x80000>;
                };
 
-               msmgpio: gpio@800000 {
-                       compatible = "qcom,msm-gpio";
+               msmgpio: pinctrl@800000 {
+                       compatible = "qcom,msm8960-pinctrl";
                        gpio-controller;
                        #gpio-cells = <2>;
-                       ngpio = <150>;
                        interrupts = <0 16 0x4>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        #reset-cells = <1>;
                };
 
+               l2cc: clock-controller@2011000 {
+                       compatible      = "syscon";
+                       reg             = <0x2011000 0x1000>;
+               };
+
+               rpm@108000 {
+                       compatible      = "qcom,rpm-msm8960";
+                       reg             = <0x108000 0x1000>;
+                       qcom,ipc        = <&l2cc 0x8 2>;
+
+                       interrupts      = <0 19 0>, <0 21 0>, <0 22 0>;
+                       interrupt-names = "ack", "err", "wakeup";
+
+                       regulators {
+                               compatible = "qcom,rpm-pm8921-regulators";
+                       };
+               };
+
                acc0: clock-controller@2088000 {
                        compatible = "qcom,kpss-acc-v1";
                        reg = <0x02088000 0x1000>, <0x02008000 0x1000>;
                        compatible = "qcom,tcsr-msm8960", "syscon";
                        reg = <0x1a400000 0x100>;
                };
+
+               gsbi@16000000 {
+                       compatible = "qcom,gsbi-v1.0.0";
+                       cell-index = <1>;
+                       reg = <0x16000000 0x100>;
+                       clocks = <&gcc GSBI1_H_CLK>;
+                       clock-names = "iface";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       spi@16080000 {
+                               compatible = "qcom,spi-qup-v1.1.1";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x16080000 0x1000>;
+                               interrupts = <0 147 0>;
+                               spi-max-frequency = <24000000>;
+                               cs-gpios = <&msmgpio 8 0>;
+
+                               clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
+                               clock-names = "core", "iface";
+                               status = "disabled";
+                       };
+               };
        };
 };
index 37b47b5..d7c99b8 100644 (file)
@@ -9,6 +9,17 @@
        compatible = "qcom,msm8974";
        interrupt-parent = <&intc>;
 
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               smem_region: smem@fa00000 {
+                       reg = <0xfa00000 0x200000>;
+                       no-map;
+               };
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                        reg = <0xfc400000 0x4000>;
                };
 
+               tcsr_mutex_block: syscon@fd484000 {
+                       compatible = "syscon";
+                       reg = <0xfd484000 0x2000>;
+               };
+
                mmcc: clock-controller@fd8c0000 {
                        compatible = "qcom,mmcc-msm8974";
                        #clock-cells = <1>;
                        reg = <0xfd8c0000 0x6000>;
                };
 
+               tcsr_mutex: tcsr-mutex {
+                       compatible = "qcom,tcsr-mutex";
+                       syscon = <&tcsr_mutex_block 0 0x80>;
+
+                       #hwlock-cells = <1>;
+               };
+
+               smem@fa00000 {
+                       compatible = "qcom,smem";
+
+                       memory-region = <&smem_region>;
+                       reg = <0xfc428000 0x4000>;
+
+                       hwlocks = <&tcsr_mutex 3>;
+               };
+
                serial@f991e000 {
                        compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
                        reg = <0xf991e000 0x1000>;
index 277e73c..060c32c 100644 (file)
@@ -86,6 +86,7 @@
                        reg = <0xfcfe0000 0x18>;
                        clocks = <&extal_clk>, <&usb_x1_clk>;
                        clock-output-names = "pll", "i", "g";
+                       #power-domain-cells = <0>;
                };
 
                /* MSTP clocks */
                             <0 189 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF0>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 193 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF1>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 197 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF2>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 201 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF3>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 205 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF4>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 209 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF5>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 213 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF6>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 217 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R7S72100_CLK_SCIF7>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 240 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "error", "rx", "tx";
                clocks = <&mstp10_clks R7S72100_CLK_SPI0>;
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                             <0 243 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "error", "rx", "tx";
                clocks = <&mstp10_clks R7S72100_CLK_SPI1>;
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                             <0 246 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "error", "rx", "tx";
                clocks = <&mstp10_clks R7S72100_CLK_SPI2>;
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                             <0 249 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "error", "rx", "tx";
                clocks = <&mstp10_clks R7S72100_CLK_SPI3>;
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                             <0 252 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "error", "rx", "tx";
                clocks = <&mstp10_clks R7S72100_CLK_SPI4>;
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                             <0 164 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R7S72100_CLK_I2C0>;
                clock-frequency = <100000>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 172 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R7S72100_CLK_I2C1>;
                clock-frequency = <100000>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 180 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R7S72100_CLK_I2C2>;
                clock-frequency = <100000>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 188 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R7S72100_CLK_I2C3>;
                clock-frequency = <100000>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupt-names = "tgi0a";
                clocks = <&mstp3_clks R7S72100_CLK_MTU2>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 };
index 7ee22a4..cb4f7b2 100644 (file)
                reg = <0 0xe6050000 0 0x9000>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-ranges =
+                       <&pfc 0 0 31>, <&pfc 32 32 9>,
+                       <&pfc 64 64 22>, <&pfc 96 96 31>,
+                       <&pfc 128 128 7>, <&pfc 160 160 19>,
+                       <&pfc 192 192 31>, <&pfc 224 224 27>,
+                       <&pfc 256 256 28>, <&pfc 288 288 21>,
+                       <&pfc 320 320 10>;
                interrupts-extended =
                        <&irqc0  0 0>, <&irqc0  1 0>, <&irqc0  2 0>, <&irqc0  3 0>,
                        <&irqc0  4 0>, <&irqc0  5 0>, <&irqc0  6 0>, <&irqc0  7 0>,
        };
 
        gic: interrupt-controller@f1001000 {
-               compatible = "arm,cortex-a15-gic";
+               compatible = "arm,gic-400";
                #interrupt-cells = <3>;
                #address-cells = <0>;
                interrupt-controller;
index 2e31d8c..105d9c9 100644 (file)
 };
 
 &pfc {
+       pinctrl-0 = <&lcd0_pins>;
+       pinctrl-names = "default";
+
        ether_pins: ether {
                renesas,groups = "gether_mii", "gether_int";
                renesas,function = "gether";
                                 "fsia_data_in_1", "fsia_data_out_0";
                renesas,function = "fsia";
        };
+
+       lcd0_pins: lcd0 {
+               renesas,groups = "lcd0_data24_0", "lcd0_lclk_1", "lcd0_sync";
+               renesas,function = "lcd0";
+
+               /* DBGMD/LCDC0/FSIA MUX */
+               gpio-hog;
+               gpios = <176 0>;
+               output-high;
+       };
 };
 
 &tpu {
index d847144..e14cb14 100644 (file)
                      <0xe605800c 0x20>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-ranges = <&pfc 0 0 212>;
                interrupts-extended =
                        <&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>,
                        <&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>,
index 7ce9f5f..4b1fa9f 100644 (file)
@@ -53,6 +53,7 @@
                reg = <0xfde00000 0x400>;
                interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7778_CLK_ETHER>;
+               power-domains = <&cpg_clocks>;
                phy-mode = "rmii";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0xffc70000 0x1000>;
                interrupts = <0 67 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_I2C0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffc71000 0x1000>;
                interrupts = <0 78 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_I2C1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffc72000 0x1000>;
                interrupts = <0 76 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_I2C2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffc73000 0x1000>;
                interrupts = <0 77 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_I2C3>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 34 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_TMU0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                #renesas,channels = <3>;
 
                             <0 38 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_TMU1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                #renesas,channels = <3>;
 
                             <0 42 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_TMU2>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                #renesas,channels = <3>;
 
                interrupts = <0 70 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_SCIF0>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 71 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_SCIF1>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_SCIF2>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 73 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_SCIF3>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 74 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_SCIF4>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 75 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_SCIF5>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4e000 0x100>;
                interrupts = <0 61 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7778_CLK_MMC>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4c000 0x100>;
                interrupts = <0 87 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7778_CLK_SDHI0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4d000 0x100>;
                interrupts = <0 88 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7778_CLK_SDHI1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4f000 0x100>;
                interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7778_CLK_SDHI2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xfffc7000 0x18>;
                interrupts = <0 63 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_HSPI>;
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                reg = <0xfffc8000 0x18>;
                interrupts = <0 84 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_HSPI>;
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                reg = <0xfffc6000 0x18>;
                interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7778_CLK_HSPI>;
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                        clocks = <&extal_clk>;
                        clock-output-names = "plla", "pllb", "b",
                                             "out", "p", "s", "s1";
+                       #power-domain-cells = <0>;
                };
 
                /* Audio clocks; frequencies are set by boards if applicable. */
index 5c8071e..6afa909 100644 (file)
                interrupt-controller;
        };
 
-       irqpin0: interrupt-controller@fe780010 {
+       irqpin0: interrupt-controller@fe78001c {
                compatible = "renesas,intc-irqpin-r8a7779", "renesas,intc-irqpin";
                #interrupt-cells = <2>;
                status = "disabled";
                        <0xfe780010 4>,
                        <0xfe780024 4>,
                        <0xfe780044 4>,
-                       <0xfe780064 4>;
+                       <0xfe780064 4>,
+                       <0xfe780000 4>;
                interrupts = <0 27 IRQ_TYPE_LEVEL_HIGH
                              0 28 IRQ_TYPE_LEVEL_HIGH
                              0 29 IRQ_TYPE_LEVEL_HIGH
                reg = <0xffc70000 0x1000>;
                interrupts = <0 79 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_I2C0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffc71000 0x1000>;
                interrupts = <0 82 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_I2C1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffc72000 0x1000>;
                interrupts = <0 80 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_I2C2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffc73000 0x1000>;
                interrupts = <0 81 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_I2C3>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 88 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_SCIF0>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_SCIF1>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 90 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_SCIF2>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 91 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_SCIF3>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 92 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_SCIF4>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                interrupts = <0 93 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_SCIF5>;
                clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                             <0 34 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_TMU0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                #renesas,channels = <3>;
 
                             <0 38 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_TMU1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                #renesas,channels = <3>;
 
                             <0 42 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp0_clks R8A7779_CLK_TMU2>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                #renesas,channels = <3>;
 
                reg = <0xfc600000 0x2000>;
                interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7779_CLK_SATA>;
+               power-domains = <&cpg_clocks>;
        };
 
        sdhi0: sd@ffe4c000 {
                reg = <0xffe4c000 0x100>;
                interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7779_CLK_SDHI0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4d000 0x100>;
                interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7779_CLK_SDHI1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4e000 0x100>;
                interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7779_CLK_SDHI2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0xffe4f000 0x100>;
                interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7779_CLK_SDHI3>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                #address-cells = <1>;
                #size-cells = <0>;
                clocks = <&mstp0_clks R8A7779_CLK_HSPI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                #address-cells = <1>;
                #size-cells = <0>;
                clocks = <&mstp0_clks R8A7779_CLK_HSPI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                #address-cells = <1>;
                #size-cells = <0>;
                clocks = <&mstp0_clks R8A7779_CLK_HSPI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xfff80000 0 0x40000>;
                interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7779_CLK_DU>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                ports {
                        #clock-cells = <1>;
                        clock-output-names = "plla", "z", "zs", "s",
                                             "s1", "p", "b", "out";
+                       #power-domain-cells = <0>;
                };
 
                /* Fixed factor clocks */
index 2eb8a99..37dec52 100644 (file)
                          1800000 0>;
        };
 
-       sound {
+       rsnd_ak4643: sound {
                compatible = "simple-audio-card";
 
                simple-audio-card,format = "left_j";
                compatible = "adi,adv7511w";
                reg = <0x39>;
                interrupt-parent = <&gpio1>;
-               interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
+               interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
 
                adi,input-depth = <8>;
                adi,input-colorspace = "rgb";
index 51ab886..a0b2a79 100644 (file)
        };
 
        gic: interrupt-controller@f1001000 {
-               compatible = "arm,cortex-a15-gic";
+               compatible = "arm,gic-400";
                #interrupt-cells = <3>;
                #address-cells = <0>;
                interrupt-controller;
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7790_CLK_GPIO0>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio1: gpio@e6051000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7790_CLK_GPIO1>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio2: gpio@e6052000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7790_CLK_GPIO2>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio3: gpio@e6053000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7790_CLK_GPIO3>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio4: gpio@e6054000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7790_CLK_GPIO4>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio5: gpio@e6055000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7790_CLK_GPIO5>;
+               power-domains = <&cpg_clocks>;
        };
 
        thermal@e61f0000 {
                reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>;
                interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp5_clks R8A7790_CLK_THERMAL>;
+               power-domains = <&cpg_clocks>;
        };
 
        timer {
                             <0 143 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7790_CLK_CMT0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                renesas,channels-mask = <0x60>;
 
                             <0 127 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7790_CLK_CMT1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                renesas,channels-mask = <0xff>;
 
                             <0 2 IRQ_TYPE_LEVEL_HIGH>,
                             <0 3 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R8A7790_CLK_IRQC>;
+               power-domains = <&cpg_clocks>;
        };
 
        dmac0: dma-controller@e6700000 {
                                "ch12", "ch13", "ch14";
                clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <15>;
        };
                                "ch12", "ch13", "ch14";
                clocks = <&mstp2_clks R8A7790_CLK_SYS_DMAC1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <15>;
        };
                                "ch12";
                clocks = <&mstp5_clks R8A7790_CLK_AUDIO_DMAC0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <13>;
        };
                                "ch12";
                clocks = <&mstp5_clks R8A7790_CLK_AUDIO_DMAC1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <13>;
        };
                              0 109 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "ch0", "ch1";
                clocks = <&mstp3_clks R8A7790_CLK_USBDMAC0>;
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <2>;
        };
                              0 110 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "ch0", "ch1";
                clocks = <&mstp3_clks R8A7790_CLK_USBDMAC1>;
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <2>;
        };
                reg = <0 0xe6508000 0 0x40>;
                interrupts = <0 287 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7790_CLK_I2C0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6518000 0 0x40>;
                interrupts = <0 288 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7790_CLK_I2C1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6530000 0 0x40>;
                interrupts = <0 286 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7790_CLK_I2C2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6540000 0 0x40>;
                interrupts = <0 290 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7790_CLK_I2C3>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_IIC0>;
                dmas = <&dmac0 0x61>, <&dmac0 0x62>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_IIC1>;
                dmas = <&dmac0 0x65>, <&dmac0 0x66>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_IIC2>;
                dmas = <&dmac0 0x69>, <&dmac0 0x6a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp9_clks R8A7790_CLK_IICDVFS>;
                dmas = <&dmac0 0x77>, <&dmac0 0x78>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_MMCIF0>;
                dmas = <&dmac0 0xd1>, <&dmac0 0xd2>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                reg-io-width = <4>;
                status = "disabled";
                max-frequency = <97500000>;
                clocks = <&mstp3_clks R8A7790_CLK_MMCIF1>;
                dmas = <&dmac0 0xe1>, <&dmac0 0xe2>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                reg-io-width = <4>;
                status = "disabled";
                max-frequency = <97500000>;
                clocks = <&mstp3_clks R8A7790_CLK_SDHI0>;
                dmas = <&dmac1 0xcd>, <&dmac1 0xce>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_SDHI1>;
                dmas = <&dmac1 0xc9>, <&dmac1 0xca>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_SDHI2>;
                dmas = <&dmac1 0xc1>, <&dmac1 0xc2>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7790_CLK_SDHI3>;
                dmas = <&dmac1 0xd3>, <&dmac1 0xd4>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x21>, <&dmac0 0x22>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x25>, <&dmac0 0x26>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x27>, <&dmac0 0x28>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x3d>, <&dmac0 0x3e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x19>, <&dmac0 0x1a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1d>, <&dmac0 0x1e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x29>, <&dmac0 0x2a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2d>, <&dmac0 0x2e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x39>, <&dmac0 0x3a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x4d>, <&dmac0 0x4e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee700000 0 0x400>;
                interrupts = <0 162 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7790_CLK_ETHER>;
+               power-domains = <&cpg_clocks>;
                phy-mode = "rmii";
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
        };
 
+       avb: ethernet@e6800000 {
+               compatible = "renesas,etheravb-r8a7790";
+               reg = <0 0xe6800000 0 0x800>, <0 0xee0e8000 0 0x4000>;
+               interrupts = <0 163 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7790_CLK_ETHERAVB>;
+               power-domains = <&cpg_clocks>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
        sata0: sata@ee300000 {
                compatible = "renesas,sata-r8a7790";
                reg = <0 0xee300000 0 0x2000>;
                interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7790_CLK_SATA0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee500000 0 0x2000>;
                interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7790_CLK_SATA1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6590000 0 0x100>;
                interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp7_clks R8A7790_CLK_HSUSB>;
-               renesas,buswait = <4>;
-               phys = <&usb0 1>;
-               phy-names = "usb";
                dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
                       <&usb_dmac1 0>, <&usb_dmac1 1>;
                dma-names = "ch0", "ch1", "ch2", "ch3";
+               power-domains = <&cpg_clocks>;
+               renesas,buswait = <4>;
+               phys = <&usb0 1>;
+               phy-names = "usb";
                status = "disabled";
        };
 
                #size-cells = <0>;
                clocks = <&mstp7_clks R8A7790_CLK_HSUSB>;
                clock-names = "usbhs";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                usb0: usb-channel@0 {
 
        vin0: video@e6ef0000 {
                compatible = "renesas,vin-r8a7790";
-               clocks = <&mstp8_clks R8A7790_CLK_VIN0>;
                reg = <0 0xe6ef0000 0 0x1000>;
                interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7790_CLK_VIN0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
        vin1: video@e6ef1000 {
                compatible = "renesas,vin-r8a7790";
-               clocks = <&mstp8_clks R8A7790_CLK_VIN1>;
                reg = <0 0xe6ef1000 0 0x1000>;
                interrupts = <0 189 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7790_CLK_VIN1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
        vin2: video@e6ef2000 {
                compatible = "renesas,vin-r8a7790";
-               clocks = <&mstp8_clks R8A7790_CLK_VIN2>;
                reg = <0 0xe6ef2000 0 0x1000>;
                interrupts = <0 190 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7790_CLK_VIN2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
        vin3: video@e6ef3000 {
                compatible = "renesas,vin-r8a7790";
-               clocks = <&mstp8_clks R8A7790_CLK_VIN3>;
                reg = <0 0xe6ef3000 0 0x1000>;
                interrupts = <0 191 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7790_CLK_VIN3>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xfe920000 0 0x8000>;
                interrupts = <0 266 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7790_CLK_VSP1_R>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-sru;
                renesas,#rpf = <5>;
                reg = <0 0xfe928000 0 0x8000>;
                interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7790_CLK_VSP1_S>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-lut;
                renesas,has-sru;
                reg = <0 0xfe930000 0 0x8000>;
                interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU0>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-lif;
                renesas,has-lut;
                reg = <0 0xfe938000 0 0x8000>;
                interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU1>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-lif;
                renesas,has-lut;
                clocks = <&mstp9_clks R8A7790_CLK_RCAN0>,
                         <&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>;
                clock-names = "clkp1", "clkp2", "can_clk";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp9_clks R8A7790_CLK_RCAN1>,
                         <&cpg_clocks R8A7790_CLK_RCAN>, <&can_clk>;
                clock-names = "clkp1", "clkp2", "can_clk";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
+       jpu: jpeg-codec@fe980000 {
+               compatible = "renesas,jpu-r8a7790";
+               reg = <0 0xfe980000 0 0x10300>;
+               interrupts = <0 272 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp1_clks R8A7790_CLK_JPU>;
+               power-domains = <&cpg_clocks>;
+       };
+
        clocks {
                #address-cells = <2>;
                #size-cells = <2>;
                        clock-output-names = "main", "pll0", "pll1", "pll3",
                                             "lb", "qspi", "sdh", "sd0", "sd1",
                                             "z", "rcan", "adsp";
+                       #power-domain-cells = <0>;
                };
 
                /* Variable factor clocks */
                        compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
                        reg = <0 0xe6150990 0 4>, <0 0xe61509a0 0 4>;
                        clocks = <&hp_clk>, <&zg_clk>, <&zg_clk>, <&zg_clk>,
-                                <&zg_clk>, <&p_clk>, <&zs_clk>, <&zs_clk>;
+                                <&zg_clk>, <&hp_clk>, <&p_clk>, <&zs_clk>,
+                                <&zs_clk>;
                        #clock-cells = <1>;
                        clock-indices = <
                                R8A7790_CLK_MLB R8A7790_CLK_VIN3 R8A7790_CLK_VIN2
-                               R8A7790_CLK_VIN1 R8A7790_CLK_VIN0 R8A7790_CLK_ETHER
+                               R8A7790_CLK_VIN1 R8A7790_CLK_VIN0
+                               R8A7790_CLK_ETHERAVB R8A7790_CLK_ETHER
                                R8A7790_CLK_SATA1 R8A7790_CLK_SATA0
                        >;
                        clock-output-names =
-                               "mlb", "vin3", "vin2", "vin1", "vin0", "ether",
-                               "sata1", "sata0";
+                               "mlb", "vin3", "vin2", "vin1", "vin0",
+                               "etheravb", "ether", "sata1", "sata0";
                };
                mstp9_clks: mstp9_clks@e6150994 {
                        compatible = "renesas,r8a7790-mstp-clocks", "renesas,cpg-mstp-clocks";
                                <&mstp10_clks R8A7790_CLK_SCU_ALL>, <&mstp10_clks R8A7790_CLK_SCU_ALL>,
                                <&mstp10_clks R8A7790_CLK_SCU_ALL>, <&mstp10_clks R8A7790_CLK_SCU_ALL>,
                                <&mstp10_clks R8A7790_CLK_SCU_ALL>, <&mstp10_clks R8A7790_CLK_SCU_ALL>,
+                               <&mstp10_clks R8A7790_CLK_SCU_ALL>, <&mstp10_clks R8A7790_CLK_SCU_ALL>,
                                <&mstp10_clks R8A7790_CLK_SCU_ALL>, <&mstp10_clks R8A7790_CLK_SCU_ALL>;
 
                        #clock-cells = <1>;
                                R8A7790_CLK_SSI4 R8A7790_CLK_SSI3 R8A7790_CLK_SSI2 R8A7790_CLK_SSI1 R8A7790_CLK_SSI0
                                R8A7790_CLK_SCU_ALL
                                R8A7790_CLK_SCU_DVC1 R8A7790_CLK_SCU_DVC0
+                               R8A7790_CLK_SCU_CTU1_MIX1 R8A7790_CLK_SCU_CTU0_MIX0
                                R8A7790_CLK_SCU_SRC9 R8A7790_CLK_SCU_SRC8 R8A7790_CLK_SCU_SRC7 R8A7790_CLK_SCU_SRC6 R8A7790_CLK_SCU_SRC5
                                R8A7790_CLK_SCU_SRC4 R8A7790_CLK_SCU_SRC3 R8A7790_CLK_SCU_SRC2 R8A7790_CLK_SCU_SRC1 R8A7790_CLK_SCU_SRC0
                        >;
                                "ssi4", "ssi3", "ssi2", "ssi1", "ssi0",
                                "scu-all",
                                "scu-dvc1", "scu-dvc0",
+                               "scu-ctu1-mix1", "scu-ctu0-mix0",
                                "scu-src9", "scu-src8", "scu-src7", "scu-src6", "scu-src5",
                                "scu-src4", "scu-src3", "scu-src2", "scu-src1", "scu-src0";
                };
                clocks = <&mstp9_clks R8A7790_CLK_QSPI_MOD>;
                dmas = <&dmac0 0x17>, <&dmac0 0x18>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                clocks = <&mstp0_clks R8A7790_CLK_MSIOF0>;
                dmas = <&dmac0 0x51>, <&dmac0 0x52>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                clocks = <&mstp2_clks R8A7790_CLK_MSIOF1>;
                dmas = <&dmac0 0x55>, <&dmac0 0x56>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                clocks = <&mstp2_clks R8A7790_CLK_MSIOF2>;
                dmas = <&dmac0 0x41>, <&dmac0 0x42>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                clocks = <&mstp2_clks R8A7790_CLK_MSIOF3>;
                dmas = <&dmac0 0x45>, <&dmac0 0x46>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                reg = <0 0xee000000 0 0xc00>;
                interrupts = <0 101 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7790_CLK_SSUSB>;
+               power-domains = <&cpg_clocks>;
                phys = <&usb2 1>;
                phy-names = "usb";
                status = "disabled";
        pci0: pci@ee090000 {
                compatible = "renesas,pci-r8a7790";
                device_type = "pci";
-               clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
                reg = <0 0xee090000 0 0xc00>,
                      <0 0xee080000 0 0x1100>;
                interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                bus-range = <0 0>;
        pci1: pci@ee0b0000 {
                compatible = "renesas,pci-r8a7790";
                device_type = "pci";
-               clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
                reg = <0 0xee0b0000 0 0xc00>,
                      <0 0xee0a0000 0 0x1100>;
                interrupts = <0 112 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                bus-range = <1 1>;
                compatible = "renesas,pci-r8a7790";
                device_type = "pci";
                clocks = <&mstp7_clks R8A7790_CLK_EHCI>;
+               power-domains = <&cpg_clocks>;
                reg = <0 0xee0d0000 0 0xc00>,
                      <0 0xee0c0000 0 0x1100>;
                interrupts = <0 113 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-map = <0 0 0 0 &gic 0 116 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7790_CLK_PCIEC>, <&pcie_bus_clk>;
                clock-names = "pcie", "pcie_bus";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                        <&mstp10_clks R8A7790_CLK_SCU_SRC5>, <&mstp10_clks R8A7790_CLK_SCU_SRC4>,
                        <&mstp10_clks R8A7790_CLK_SCU_SRC3>, <&mstp10_clks R8A7790_CLK_SCU_SRC2>,
                        <&mstp10_clks R8A7790_CLK_SCU_SRC1>, <&mstp10_clks R8A7790_CLK_SCU_SRC0>,
+                       <&mstp10_clks R8A7790_CLK_SCU_CTU0_MIX0>, <&mstp10_clks R8A7790_CLK_SCU_CTU1_MIX1>,
+                       <&mstp10_clks R8A7790_CLK_SCU_CTU0_MIX0>, <&mstp10_clks R8A7790_CLK_SCU_CTU1_MIX1>,
                        <&mstp10_clks R8A7790_CLK_SCU_DVC0>, <&mstp10_clks R8A7790_CLK_SCU_DVC1>,
                        <&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
                clock-names = "ssi-all",
                                "ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
                                "src.9", "src.8", "src.7", "src.6", "src.5",
                                "src.4", "src.3", "src.2", "src.1", "src.0",
+                               "ctu.0", "ctu.1",
+                               "mix.0", "mix.1",
                                "dvc.0", "dvc.1",
                                "clk_a", "clk_b", "clk_c", "clk_i";
 
                        };
                };
 
+               rcar_sound,mix {
+                       mix0: mix@0 { };
+                       mix1: mix@1 { };
+               };
+
+               rcar_sound,ctu {
+                       ctu00: ctu@0 { };
+                       ctu01: ctu@1 { };
+                       ctu02: ctu@2 { };
+                       ctu03: ctu@3 { };
+                       ctu10: ctu@4 { };
+                       ctu11: ctu@5 { };
+                       ctu12: ctu@6 { };
+                       ctu13: ctu@7 { };
+               };
+
                rcar_sound,src {
                        src0: src@0 {
                                interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
index cffe33f..dc15884 100644 (file)
                          1800000 0>;
        };
 
-       sound {
+       rsnd_ak4643: sound {
                compatible = "simple-audio-card";
 
                simple-audio-card,format = "left_j";
index dc1cd3f..831525d 100644 (file)
@@ -70,7 +70,7 @@
        };
 
        gic: interrupt-controller@f1001000 {
-               compatible = "arm,cortex-a15-gic";
+               compatible = "arm,gic-400";
                #interrupt-cells = <3>;
                #address-cells = <0>;
                interrupt-controller;
@@ -91,6 +91,7 @@
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO0>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio1: gpio@e6051000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO1>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio2: gpio@e6052000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO2>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio3: gpio@e6053000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO3>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio4: gpio@e6054000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO4>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio5: gpio@e6055000 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO5>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio6: gpio@e6055400 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO6>;
+               power-domains = <&cpg_clocks>;
        };
 
        gpio7: gpio@e6055800 {
                #interrupt-cells = <2>;
                interrupt-controller;
                clocks = <&mstp9_clks R8A7791_CLK_GPIO7>;
+               power-domains = <&cpg_clocks>;
        };
 
        thermal@e61f0000 {
                reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>;
                interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp5_clks R8A7791_CLK_THERMAL>;
+               power-domains = <&cpg_clocks>;
        };
 
        timer {
                             <0 143 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7791_CLK_CMT0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                renesas,channels-mask = <0x60>;
 
                             <0 127 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7791_CLK_CMT1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                renesas,channels-mask = <0xff>;
 
                             <0 16 IRQ_TYPE_LEVEL_HIGH>,
                             <0 17 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R8A7791_CLK_IRQC>;
+               power-domains = <&cpg_clocks>;
        };
 
        dmac0: dma-controller@e6700000 {
                                "ch12", "ch13", "ch14";
                clocks = <&mstp2_clks R8A7791_CLK_SYS_DMAC0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <15>;
        };
                                "ch12", "ch13", "ch14";
                clocks = <&mstp2_clks R8A7791_CLK_SYS_DMAC1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <15>;
        };
                                "ch12";
                clocks = <&mstp5_clks R8A7791_CLK_AUDIO_DMAC0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <13>;
        };
                                "ch12";
                clocks = <&mstp5_clks R8A7791_CLK_AUDIO_DMAC1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <13>;
        };
                              0 109 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "ch0", "ch1";
                clocks = <&mstp3_clks R8A7791_CLK_USBDMAC0>;
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <2>;
        };
                              0 110 IRQ_TYPE_LEVEL_HIGH>;
                interrupt-names = "ch0", "ch1";
                clocks = <&mstp3_clks R8A7791_CLK_USBDMAC1>;
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <2>;
        };
                reg = <0 0xe6508000 0 0x40>;
                interrupts = <0 287 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7791_CLK_I2C0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6518000 0 0x40>;
                interrupts = <0 288 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7791_CLK_I2C1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6530000 0 0x40>;
                interrupts = <0 286 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7791_CLK_I2C2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6540000 0 0x40>;
                interrupts = <0 290 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7791_CLK_I2C3>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6520000 0 0x40>;
                interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7791_CLK_I2C4>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6528000 0 0x40>;
                interrupts = <0 20 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp9_clks R8A7791_CLK_I2C5>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp9_clks R8A7791_CLK_IICDVFS>;
                dmas = <&dmac0 0x77>, <&dmac0 0x78>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7791_CLK_IIC0>;
                dmas = <&dmac0 0x61>, <&dmac0 0x62>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7791_CLK_IIC1>;
                dmas = <&dmac0 0x65>, <&dmac0 0x66>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7791_CLK_MMCIF0>;
                dmas = <&dmac0 0xd1>, <&dmac0 0xd2>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                reg-io-width = <4>;
                status = "disabled";
                max-frequency = <97500000>;
                clocks = <&mstp3_clks R8A7791_CLK_SDHI0>;
                dmas = <&dmac1 0xcd>, <&dmac1 0xce>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7791_CLK_SDHI1>;
                dmas = <&dmac1 0xc1>, <&dmac1 0xc2>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp3_clks R8A7791_CLK_SDHI2>;
                dmas = <&dmac1 0xd3>, <&dmac1 0xd4>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x21>, <&dmac0 0x22>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x25>, <&dmac0 0x26>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x27>, <&dmac0 0x28>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1b>, <&dmac0 0x1c>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1f>, <&dmac0 0x20>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x23>, <&dmac0 0x24>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x3d>, <&dmac0 0x3e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x19>, <&dmac0 0x1a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1d>, <&dmac0 0x1e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x29>, <&dmac0 0x2a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2d>, <&dmac0 0x2e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2b>, <&dmac0 0x2c>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2f>, <&dmac0 0x30>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0xfb>, <&dmac0 0xfc>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0xfd>, <&dmac0 0xfe>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x39>, <&dmac0 0x3a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x4d>, <&dmac0 0x4e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x3b>, <&dmac0 0x3c>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee700000 0 0x400>;
                interrupts = <0 162 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7791_CLK_ETHER>;
+               power-domains = <&cpg_clocks>;
                phy-mode = "rmii";
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0 0xee300000 0 0x2000>;
                interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7791_CLK_SATA0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee500000 0 0x2000>;
                interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7791_CLK_SATA1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xe6590000 0 0x100>;
                interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp7_clks R8A7791_CLK_HSUSB>;
-               renesas,buswait = <4>;
-               phys = <&usb0 1>;
-               phy-names = "usb";
                dmas = <&usb_dmac0 0>, <&usb_dmac0 1>,
                       <&usb_dmac1 0>, <&usb_dmac1 1>;
                dma-names = "ch0", "ch1", "ch2", "ch3";
+               power-domains = <&cpg_clocks>;
+               renesas,buswait = <4>;
+               phys = <&usb0 1>;
+               phy-names = "usb";
                status = "disabled";
        };
 
                #size-cells = <0>;
                clocks = <&mstp7_clks R8A7791_CLK_HSUSB>;
                clock-names = "usbhs";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                usb0: usb-channel@0 {
 
        vin0: video@e6ef0000 {
                compatible = "renesas,vin-r8a7791";
-               clocks = <&mstp8_clks R8A7791_CLK_VIN0>;
                reg = <0 0xe6ef0000 0 0x1000>;
                interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7791_CLK_VIN0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
        vin1: video@e6ef1000 {
                compatible = "renesas,vin-r8a7791";
-               clocks = <&mstp8_clks R8A7791_CLK_VIN1>;
                reg = <0 0xe6ef1000 0 0x1000>;
                interrupts = <0 189 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7791_CLK_VIN1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
        vin2: video@e6ef2000 {
                compatible = "renesas,vin-r8a7791";
-               clocks = <&mstp8_clks R8A7791_CLK_VIN2>;
                reg = <0 0xe6ef2000 0 0x1000>;
                interrupts = <0 190 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7791_CLK_VIN2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xfe928000 0 0x8000>;
                interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7791_CLK_VSP1_S>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-lut;
                renesas,has-sru;
                reg = <0 0xfe930000 0 0x8000>;
                interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU0>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-lif;
                renesas,has-lut;
                reg = <0 0xfe938000 0 0x8000>;
                interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU1>;
+               power-domains = <&cpg_clocks>;
 
                renesas,has-lif;
                renesas,has-lut;
                clocks = <&mstp9_clks R8A7791_CLK_RCAN0>,
                         <&cpg_clocks R8A7791_CLK_RCAN>, <&can_clk>;
                clock-names = "clkp1", "clkp2", "can_clk";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clocks = <&mstp9_clks R8A7791_CLK_RCAN1>,
                         <&cpg_clocks R8A7791_CLK_RCAN>, <&can_clk>;
                clock-names = "clkp1", "clkp2", "can_clk";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
+       jpu: jpeg-codec@fe980000 {
+               compatible = "renesas,jpu-r8a7791";
+               reg = <0 0xfe980000 0 0x10300>;
+               interrupts = <0 272 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp1_clks R8A7791_CLK_JPU>;
+               power-domains = <&cpg_clocks>;
+       };
+
        clocks {
                #address-cells = <2>;
                #size-cells = <2>;
                        clock-output-names = "main", "pll0", "pll1", "pll3",
                                             "lb", "qspi", "sdh", "sd0", "z",
                                             "rcan", "adsp";
+                       #power-domain-cells = <0>;
                };
 
                /* Variable factor clocks */
                                <&mstp10_clks R8A7791_CLK_SCU_ALL>, <&mstp10_clks R8A7791_CLK_SCU_ALL>,
                                <&mstp10_clks R8A7791_CLK_SCU_ALL>, <&mstp10_clks R8A7791_CLK_SCU_ALL>,
                                <&mstp10_clks R8A7791_CLK_SCU_ALL>, <&mstp10_clks R8A7791_CLK_SCU_ALL>,
+                               <&mstp10_clks R8A7791_CLK_SCU_ALL>, <&mstp10_clks R8A7791_CLK_SCU_ALL>,
                                <&mstp10_clks R8A7791_CLK_SCU_ALL>, <&mstp10_clks R8A7791_CLK_SCU_ALL>;
 
                        #clock-cells = <1>;
                                R8A7791_CLK_SSI4 R8A7791_CLK_SSI3 R8A7791_CLK_SSI2 R8A7791_CLK_SSI1 R8A7791_CLK_SSI0
                                R8A7791_CLK_SCU_ALL
                                R8A7791_CLK_SCU_DVC1 R8A7791_CLK_SCU_DVC0
+                               R8A7791_CLK_SCU_CTU1_MIX1 R8A7791_CLK_SCU_CTU0_MIX0
                                R8A7791_CLK_SCU_SRC9 R8A7791_CLK_SCU_SRC8 R8A7791_CLK_SCU_SRC7 R8A7791_CLK_SCU_SRC6 R8A7791_CLK_SCU_SRC5
                                R8A7791_CLK_SCU_SRC4 R8A7791_CLK_SCU_SRC3 R8A7791_CLK_SCU_SRC2 R8A7791_CLK_SCU_SRC1 R8A7791_CLK_SCU_SRC0
                        >;
                                "ssi4", "ssi3", "ssi2", "ssi1", "ssi0",
                                "scu-all",
                                "scu-dvc1", "scu-dvc0",
+                               "scu-ctu1-mix1", "scu-ctu0-mix0",
                                "scu-src9", "scu-src8", "scu-src7", "scu-src6", "scu-src5",
                                "scu-src4", "scu-src3", "scu-src2", "scu-src1", "scu-src0";
                };
                clocks = <&mstp9_clks R8A7791_CLK_QSPI_MOD>;
                dmas = <&dmac0 0x17>, <&dmac0 0x18>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                num-cs = <1>;
                #address-cells = <1>;
                #size-cells = <0>;
                clocks = <&mstp0_clks R8A7791_CLK_MSIOF0>;
                dmas = <&dmac0 0x51>, <&dmac0 0x52>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                clocks = <&mstp2_clks R8A7791_CLK_MSIOF1>;
                dmas = <&dmac0 0x55>, <&dmac0 0x56>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                clocks = <&mstp2_clks R8A7791_CLK_MSIOF2>;
                dmas = <&dmac0 0x41>, <&dmac0 0x42>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
                reg = <0 0xee000000 0 0xc00>;
                interrupts = <0 101 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7791_CLK_SSUSB>;
+               power-domains = <&cpg_clocks>;
                phys = <&usb2 1>;
                phy-names = "usb";
                status = "disabled";
        pci0: pci@ee090000 {
                compatible = "renesas,pci-r8a7791";
                device_type = "pci";
-               clocks = <&mstp7_clks R8A7791_CLK_EHCI>;
                reg = <0 0xee090000 0 0xc00>,
                      <0 0xee080000 0 0x1100>;
                interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp7_clks R8A7791_CLK_EHCI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                bus-range = <0 0>;
        pci1: pci@ee0d0000 {
                compatible = "renesas,pci-r8a7791";
                device_type = "pci";
-               clocks = <&mstp7_clks R8A7791_CLK_EHCI>;
                reg = <0 0xee0d0000 0 0xc00>,
                      <0 0xee0c0000 0 0x1100>;
                interrupts = <0 113 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp7_clks R8A7791_CLK_EHCI>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
 
                bus-range = <1 1>;
                interrupt-map = <0 0 0 0 &gic 0 116 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7791_CLK_PCIEC>, <&pcie_bus_clk>;
                clock-names = "pcie", "pcie_bus";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                        <&mstp10_clks R8A7791_CLK_SCU_SRC5>, <&mstp10_clks R8A7791_CLK_SCU_SRC4>,
                        <&mstp10_clks R8A7791_CLK_SCU_SRC3>, <&mstp10_clks R8A7791_CLK_SCU_SRC2>,
                        <&mstp10_clks R8A7791_CLK_SCU_SRC1>, <&mstp10_clks R8A7791_CLK_SCU_SRC0>,
+                       <&mstp10_clks R8A7791_CLK_SCU_CTU0_MIX0>, <&mstp10_clks R8A7791_CLK_SCU_CTU1_MIX1>,
+                       <&mstp10_clks R8A7791_CLK_SCU_CTU0_MIX0>, <&mstp10_clks R8A7791_CLK_SCU_CTU1_MIX1>,
                        <&mstp10_clks R8A7791_CLK_SCU_DVC0>, <&mstp10_clks R8A7791_CLK_SCU_DVC1>,
                        <&audio_clk_a>, <&audio_clk_b>, <&audio_clk_c>, <&m2_clk>;
                clock-names = "ssi-all",
                                "ssi.4", "ssi.3", "ssi.2", "ssi.1", "ssi.0",
                                "src.9", "src.8", "src.7", "src.6", "src.5",
                                "src.4", "src.3", "src.2", "src.1", "src.0",
+                               "ctu.0", "ctu.1",
+                               "mix.0", "mix.1",
                                "dvc.0", "dvc.1",
                                "clk_a", "clk_b", "clk_c", "clk_i";
 
                        };
                };
 
+               rcar_sound,mix {
+                       mix0: mix@0 { };
+                       mix1: mix@1 { };
+               };
+
+               rcar_sound,ctu {
+                       ctu00: ctu@0 { };
+                       ctu01: ctu@1 { };
+                       ctu02: ctu@2 { };
+                       ctu03: ctu@3 { };
+                       ctu10: ctu@4 { };
+                       ctu11: ctu@5 { };
+                       ctu12: ctu@6 { };
+                       ctu13: ctu@7 { };
+               };
+
                rcar_sound,src {
                        src0: src@0 {
                                interrupts = <0 352 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/arch/arm/boot/dts/r8a7793-gose.dts b/arch/arm/boot/dts/r8a7793-gose.dts
new file mode 100644 (file)
index 0000000..96443ec
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Device Tree Source for the Gose board
+ *
+ * Copyright (C) 2014-2015 Renesas Electronics Corporation
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/dts-v1/;
+#include "r8a7793.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "Gose";
+       compatible = "renesas,gose", "renesas,r8a7793";
+
+       aliases {
+               serial0 = &scif0;
+               serial1 = &scif1;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
+               stdout-path = &scif0;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0 0x40000000 0 0x40000000>;
+       };
+};
+
+&extal_clk {
+       clock-frequency = <20000000>;
+};
+
+&ether {
+       phy-handle = <&phy1>;
+       renesas,ether-link-active-low;
+       status = "okay";
+
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+               interrupt-parent = <&irqc0>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               micrel,led-mode = <1>;
+       };
+};
+
+&cmt0 {
+       status = "okay";
+};
+
+&scif0 {
+       status = "okay";
+};
+
+&scif1 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/r8a7793.dtsi b/arch/arm/boot/dts/r8a7793.dtsi
new file mode 100644 (file)
index 0000000..c465404
--- /dev/null
@@ -0,0 +1,374 @@
+/*
+ * Device Tree Source for the r8a7793 SoC
+ *
+ * Copyright (C) 2014-2015 Renesas Electronics Corporation
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+#include <dt-bindings/clock/r8a7793-clock.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       compatible = "renesas,r8a7793";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <0>;
+                       clock-frequency = <1500000000>;
+                       voltage-tolerance = <1>; /* 1% */
+                       clocks = <&cpg_clocks R8A7793_CLK_Z>;
+                       clock-latency = <300000>; /* 300 us */
+
+                       /* kHz - uV - OPPs unknown yet */
+                       operating-points = <1500000 1000000>,
+                                          <1312500 1000000>,
+                                          <1125000 1000000>,
+                                          < 937500 1000000>,
+                                          < 750000 1000000>,
+                                          < 375000 1000000>;
+               };
+       };
+
+       gic: interrupt-controller@f1001000 {
+               compatible = "arm,gic-400";
+               #interrupt-cells = <3>;
+               #address-cells = <0>;
+               interrupt-controller;
+               reg = <0 0xf1001000 0 0x1000>,
+                       <0 0xf1002000 0 0x1000>,
+                       <0 0xf1004000 0 0x2000>,
+                       <0 0xf1006000 0 0x2000>;
+               interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <1 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <1 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <1 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <1 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       cmt0: timer@ffca0000 {
+               compatible = "renesas,cmt-48-r8a7793", "renesas,cmt-48-gen2";
+               reg = <0 0xffca0000 0 0x1004>;
+               interrupts = <0 142 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 143 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp1_clks R8A7793_CLK_CMT0>;
+               clock-names = "fck";
+               power-domains = <&cpg_clocks>;
+
+               renesas,channels-mask = <0x60>;
+
+               status = "disabled";
+       };
+
+       cmt1: timer@e6130000 {
+               compatible = "renesas,cmt-48-r8a7793", "renesas,cmt-48-gen2";
+               reg = <0 0xe6130000 0 0x1004>;
+               interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 121 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 122 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 123 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 124 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 125 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 126 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 127 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp3_clks R8A7793_CLK_CMT1>;
+               clock-names = "fck";
+               power-domains = <&cpg_clocks>;
+
+               renesas,channels-mask = <0xff>;
+
+               status = "disabled";
+       };
+
+       irqc0: interrupt-controller@e61c0000 {
+               compatible = "renesas,irqc-r8a7793", "renesas,irqc";
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               reg = <0 0xe61c0000 0 0x200>;
+               interrupts = <0 0 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 1 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 2 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 3 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 12 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 13 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 14 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 15 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 16 IRQ_TYPE_LEVEL_HIGH>,
+                            <0 17 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp4_clks R8A7793_CLK_IRQC>;
+               power-domains = <&cpg_clocks>;
+       };
+
+       scif0: serial@e6e60000 {
+               compatible = "renesas,scif-r8a7793", "renesas,scif";
+               reg = <0 0xe6e60000 0 64>;
+               interrupts = <0 152 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp7_clks R8A7793_CLK_SCIF0>;
+               clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
+               status = "disabled";
+       };
+
+       scif1: serial@e6e68000 {
+               compatible = "renesas,scif-r8a7793", "renesas,scif";
+               reg = <0 0xe6e68000 0 64>;
+               interrupts = <0 153 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp7_clks R8A7793_CLK_SCIF1>;
+               clock-names = "sci_ick";
+               power-domains = <&cpg_clocks>;
+               status = "disabled";
+       };
+
+       ether: ethernet@ee700000 {
+               compatible = "renesas,ether-r8a7793";
+               reg = <0 0xee700000 0 0x400>;
+               interrupts = <0 162 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp8_clks R8A7793_CLK_ETHER>;
+               power-domains = <&cpg_clocks>;
+               phy-mode = "rmii";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       clocks {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* External root clock */
+               extal_clk: extal_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       /* This value must be overridden by the board. */
+                       clock-frequency = <0>;
+                       clock-output-names = "extal";
+               };
+
+               /* Special CPG clocks */
+               cpg_clocks: cpg_clocks@e6150000 {
+                       compatible = "renesas,r8a7793-cpg-clocks",
+                                    "renesas,rcar-gen2-cpg-clocks";
+                       reg = <0 0xe6150000 0 0x1000>;
+                       clocks = <&extal_clk>;
+                       #clock-cells = <1>;
+                       clock-output-names = "main", "pll0", "pll1", "pll3",
+                                            "lb", "qspi", "sdh", "sd0", "z",
+                                            "rcan", "adsp";
+                       #power-domain-cells = <0>;
+               };
+
+               /* Variable factor clocks */
+               sd2_clk: sd2_clk@e6150078 {
+                       compatible = "renesas,r8a7793-div6-clock",
+                                    "renesas,cpg-div6-clock";
+                       reg = <0 0xe6150078 0 4>;
+                       clocks = <&pll1_div2_clk>;
+                       #clock-cells = <0>;
+                       clock-output-names = "sd2";
+               };
+               sd3_clk: sd3_clk@e615026c {
+                       compatible = "renesas,r8a7793-div6-clock",
+                                    "renesas,cpg-div6-clock";
+                       reg = <0 0xe615026c 0 4>;
+                       clocks = <&pll1_div2_clk>;
+                       #clock-cells = <0>;
+                       clock-output-names = "sd3";
+               };
+               mmc0_clk: mmc0_clk@e6150240 {
+                       compatible = "renesas,r8a7793-div6-clock",
+                                    "renesas,cpg-div6-clock";
+                       reg = <0 0xe6150240 0 4>;
+                       clocks = <&pll1_div2_clk>;
+                       #clock-cells = <0>;
+                       clock-output-names = "mmc0";
+               };
+
+               /* Fixed factor clocks */
+               pll1_div2_clk: pll1_div2_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <2>;
+                       clock-mult = <1>;
+                       clock-output-names = "pll1_div2";
+               };
+               zg_clk: zg_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <5>;
+                       clock-mult = <1>;
+                       clock-output-names = "zg";
+               };
+               zx_clk: zx_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <3>;
+                       clock-mult = <1>;
+                       clock-output-names = "zx";
+               };
+               zs_clk: zs_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <6>;
+                       clock-mult = <1>;
+                       clock-output-names = "zs";
+               };
+               hp_clk: hp_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <12>;
+                       clock-mult = <1>;
+                       clock-output-names = "hp";
+               };
+               p_clk: p_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <24>;
+                       clock-mult = <1>;
+                       clock-output-names = "p";
+               };
+               rclk_clk: rclk_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&cpg_clocks R8A7793_CLK_PLL1>;
+                       #clock-cells = <0>;
+                       clock-div = <(48 * 1024)>;
+                       clock-mult = <1>;
+                       clock-output-names = "rclk";
+               };
+               mp_clk: mp_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&pll1_div2_clk>;
+                       #clock-cells = <0>;
+                       clock-div = <15>;
+                       clock-mult = <1>;
+                       clock-output-names = "mp";
+               };
+               cp_clk: cp_clk {
+                       compatible = "fixed-factor-clock";
+                       clocks = <&extal_clk>;
+                       #clock-cells = <0>;
+                       clock-div = <2>;
+                       clock-mult = <1>;
+                       clock-output-names = "cp";
+               };
+
+               /* Gate clocks */
+               mstp1_clks: mstp1_clks@e6150134 {
+                       compatible = "renesas,r8a7793-mstp-clocks",
+                                    "renesas,cpg-mstp-clocks";
+                       reg = <0 0xe6150134 0 4>, <0 0xe6150038 0 4>;
+                       clocks = <&zs_clk>, <&zs_clk>, <&zs_clk>, <&p_clk>,
+                                <&zg_clk>, <&zs_clk>, <&zs_clk>, <&zs_clk>,
+                                <&p_clk>, <&p_clk>, <&rclk_clk>, <&cp_clk>,
+                                <&zs_clk>, <&zs_clk>, <&zs_clk>;
+                       #clock-cells = <1>;
+                       clock-indices = <
+                               R8A7793_CLK_VCP0 R8A7793_CLK_VPC0
+                               R8A7793_CLK_SSP1 R8A7793_CLK_TMU1
+                               R8A7793_CLK_3DG R8A7793_CLK_2DDMAC
+                               R8A7793_CLK_FDP1_1 R8A7793_CLK_FDP1_0
+                               R8A7793_CLK_TMU3 R8A7793_CLK_TMU2
+                               R8A7793_CLK_CMT0 R8A7793_CLK_TMU0
+                               R8A7793_CLK_VSP1_DU1 R8A7793_CLK_VSP1_DU0
+                               R8A7793_CLK_VSP1_S
+                       >;
+                       clock-output-names =
+                               "vcp0", "vpc0", "ssp_dev", "tmu1",
+                               "pvrsrvkm", "tddmac", "fdp1", "fdp0",
+                               "tmu3", "tmu2", "cmt0", "tmu0", "vsp1-du1",
+                               "vsp1-du0", "vsps";
+               };
+               mstp3_clks: mstp3_clks@e615013c {
+                       compatible = "renesas,r8a7793-mstp-clocks",
+                                    "renesas,cpg-mstp-clocks";
+                       reg = <0 0xe615013c 0 4>, <0 0xe6150048 0 4>;
+                       clocks = <&cp_clk>, <&sd3_clk>, <&sd2_clk>,
+                                <&cpg_clocks R8A7793_CLK_SD0>, <&mmc0_clk>,
+                                <&hp_clk>, <&mp_clk>, <&hp_clk>, <&mp_clk>,
+                                <&rclk_clk>, <&hp_clk>, <&hp_clk>;
+                       #clock-cells = <1>;
+                       clock-indices = <
+                               R8A7793_CLK_TPU0 R8A7793_CLK_SDHI2
+                               R8A7793_CLK_SDHI1 R8A7793_CLK_SDHI0
+                               R8A7793_CLK_MMCIF0 R8A7793_CLK_IIC0
+                               R8A7793_CLK_PCIEC R8A7793_CLK_IIC1
+                               R8A7793_CLK_SSUSB R8A7793_CLK_CMT1
+                               R8A7793_CLK_USBDMAC0 R8A7793_CLK_USBDMAC1
+                       >;
+                       clock-output-names =
+                               "tpu0", "sdhi2", "sdhi1", "sdhi0", "mmcif0",
+                               "i2c7", "pciec", "i2c8", "ssusb", "cmt1",
+                               "usbdmac0", "usbdmac1";
+               };
+               mstp4_clks: mstp4_clks@e6150140 {
+                       compatible = "renesas,r8a7793-mstp-clocks", "renesas,cpg-mstp-clocks";
+                       reg = <0 0xe6150140 0 4>, <0 0xe615004c 0 4>;
+                       clocks = <&cp_clk>;
+                       #clock-cells = <1>;
+                       clock-indices = <R8A7793_CLK_IRQC>;
+                       clock-output-names = "irqc";
+               };
+               mstp7_clks: mstp7_clks@e615014c {
+                       compatible = "renesas,r8a7793-mstp-clocks",
+                                    "renesas,cpg-mstp-clocks";
+                       reg = <0 0xe615014c 0 4>, <0 0xe61501c4 0 4>;
+                       clocks = <&mp_clk>,  <&hp_clk>, <&zs_clk>, <&p_clk>,
+                                <&p_clk>, <&zs_clk>, <&zs_clk>, <&p_clk>,
+                                <&p_clk>, <&p_clk>, <&p_clk>, <&zx_clk>,
+                                <&zx_clk>, <&zx_clk>;
+                       #clock-cells = <1>;
+                       clock-indices = <
+                               R8A7793_CLK_EHCI R8A7793_CLK_HSUSB
+                               R8A7793_CLK_HSCIF2 R8A7793_CLK_SCIF5
+                               R8A7793_CLK_SCIF4 R8A7793_CLK_HSCIF1
+                               R8A7793_CLK_HSCIF0 R8A7793_CLK_SCIF3
+                               R8A7793_CLK_SCIF2 R8A7793_CLK_SCIF1
+                               R8A7793_CLK_SCIF0 R8A7793_CLK_DU1
+                               R8A7793_CLK_DU0 R8A7793_CLK_LVDS0
+                       >;
+                       clock-output-names =
+                               "ehci", "hsusb", "hscif2", "scif5", "scif4",
+                               "hscif1", "hscif0", "scif3", "scif2",
+                               "scif1", "scif0", "du1", "du0", "lvds0";
+               };
+               mstp8_clks: mstp8_clks@e6150990 {
+                       compatible = "renesas,r8a7793-mstp-clocks",
+                                    "renesas,cpg-mstp-clocks";
+                       reg = <0 0xe6150990 0 4>, <0 0xe61509a0 0 4>;
+                       clocks = <&zx_clk>, <&zg_clk>, <&zg_clk>, <&zg_clk>,
+                                <&p_clk>, <&zs_clk>, <&zs_clk>;
+                       #clock-cells = <1>;
+                       clock-indices = <
+                               R8A7793_CLK_IPMMU_SGX R8A7793_CLK_VIN2
+                               R8A7793_CLK_VIN1 R8A7793_CLK_VIN0
+                               R8A7793_CLK_ETHER R8A7793_CLK_SATA1
+                               R8A7793_CLK_SATA0
+                       >;
+                       clock-output-names =
+                               "ipmmu_sgx", "vin2", "vin1", "vin0", "ether",
+                               "sata1", "sata0";
+               };
+       };
+
+};
diff --git a/arch/arm/boot/dts/r8a7794-silk.dts b/arch/arm/boot/dts/r8a7794-silk.dts
new file mode 100644 (file)
index 0000000..d4dd5a3
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Device Tree Source for the SILK board
+ *
+ * Copyright (C) 2014 Renesas Electronics Corporation
+ * Copyright (C) 2014-2015 Renesas Solutions Corp.
+ * Copyright (C) 2014-2015 Cogent Embedded, Inc.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/dts-v1/;
+#include "r8a7794.dtsi"
+
+/ {
+       model = "SILK";
+       compatible = "renesas,silk", "renesas,r8a7794";
+
+       aliases {
+               serial0 = &scif2;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
+               stdout-path = &scif2;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0 0x40000000 0 0x40000000>;
+       };
+
+       d3_3v: regulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "D3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+&extal_clk {
+       clock-frequency = <20000000>;
+};
+
+&pfc {
+       scif2_pins: serial2 {
+               renesas,groups = "scif2_data";
+               renesas,function = "scif2";
+       };
+
+       ether_pins: ether {
+               renesas,groups = "eth_link", "eth_mdio", "eth_rmii";
+               renesas,function = "eth";
+       };
+
+       phy1_pins: phy1 {
+               renesas,groups = "intc_irq8";
+               renesas,function = "intc";
+       };
+
+       mmcif0_pins: mmcif0 {
+               renesas,groups = "mmc_data8", "mmc_ctrl";
+               renesas,function = "mmc";
+       };
+};
+
+&scif2 {
+       pinctrl-0 = <&scif2_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&ether {
+       pinctrl-0 = <&ether_pins &phy1_pins>;
+       pinctrl-names = "default";
+
+       phy-handle = <&phy1>;
+       renesas,ether-link-active-low;
+       status = "okay";
+
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+               interrupt-parent = <&irqc0>;
+               interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+               micrel,led-mode = <1>;
+       };
+};
+
+&mmcif0 {
+       pinctrl-0 = <&mmcif0_pins>;
+       pinctrl-names = "default";
+
+       vmmc-supply = <&d3_3v>;
+       vqmmc-supply = <&d3_3v>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
index b738194..97c8e9a 100644 (file)
@@ -39,7 +39,7 @@
        };
 
        gic: interrupt-controller@f1001000 {
-               compatible = "arm,cortex-a7-gic";
+               compatible = "arm,gic-400";
                #interrupt-cells = <3>;
                #address-cells = <0>;
                interrupt-controller;
@@ -57,6 +57,7 @@
                             <0 143 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp1_clks R8A7794_CLK_CMT0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                renesas,channels-mask = <0x60>;
 
@@ -76,6 +77,7 @@
                             <0 127 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7794_CLK_CMT1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
 
                renesas,channels-mask = <0xff>;
 
                             <0 16 IRQ_TYPE_LEVEL_HIGH>,
                             <0 17 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp4_clks R8A7794_CLK_IRQC>;
+               power-domains = <&cpg_clocks>;
+       };
+
+       pfc: pin-controller@e6060000 {
+               compatible = "renesas,pfc-r8a7794";
+               reg = <0 0xe6060000 0 0x11c>;
+               #gpio-range-cells = <3>;
        };
 
        dmac0: dma-controller@e6700000 {
                                "ch12", "ch13", "ch14";
                clocks = <&mstp2_clks R8A7794_CLK_SYS_DMAC0>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <15>;
        };
                                "ch12", "ch13", "ch14";
                clocks = <&mstp2_clks R8A7794_CLK_SYS_DMAC1>;
                clock-names = "fck";
+               power-domains = <&cpg_clocks>;
                #dma-cells = <1>;
                dma-channels = <15>;
        };
                clock-names = "sci_ick";
                dmas = <&dmac0 0x21>, <&dmac0 0x22>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x25>, <&dmac0 0x26>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x27>, <&dmac0 0x28>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1b>, <&dmac0 0x1c>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1f>, <&dmac0 0x20>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x23>, <&dmac0 0x24>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x3d>, <&dmac0 0x3e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x19>, <&dmac0 0x1a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x1d>, <&dmac0 0x1e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x29>, <&dmac0 0x2a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2d>, <&dmac0 0x2e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2b>, <&dmac0 0x2c>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x2f>, <&dmac0 0x30>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0xfb>, <&dmac0 0xfc>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0xfd>, <&dmac0 0xfe>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x39>, <&dmac0 0x3a>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x4d>, <&dmac0 0x4e>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                clock-names = "sci_ick";
                dmas = <&dmac0 0x3b>, <&dmac0 0x3c>;
                dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee700000 0 0x400>;
                interrupts = <0 162 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp8_clks R8A7794_CLK_ETHER>;
+               power-domains = <&cpg_clocks>;
                phy-mode = "rmii";
                #address-cells = <1>;
                #size-cells = <0>;
                status = "disabled";
        };
 
+       mmcif0: mmc@ee200000 {
+               compatible = "renesas,mmcif-r8a7794", "renesas,sh-mmcif";
+               reg = <0 0xee200000 0 0x80>;
+               interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&mstp3_clks R8A7794_CLK_MMCIF0>;
+               dmas = <&dmac0 0xd1>, <&dmac0 0xd2>;
+               dma-names = "tx", "rx";
+               power-domains = <&cpg_clocks>;
+               reg-io-width = <4>;
+               status = "disabled";
+       };
+
        sdhi0: sd@ee100000 {
                compatible = "renesas,sdhi-r8a7794";
                reg = <0 0xee100000 0 0x200>;
                interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7794_CLK_SDHI0>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee140000 0 0x100>;
                interrupts = <0 167 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7794_CLK_SDHI1>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                reg = <0 0xee160000 0 0x100>;
                interrupts = <0 168 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&mstp3_clks R8A7794_CLK_SDHI2>;
+               power-domains = <&cpg_clocks>;
                status = "disabled";
        };
 
                        #clock-cells = <1>;
                        clock-output-names = "main", "pll0", "pll1", "pll3",
                                             "lb", "qspi", "sdh", "sd0", "z";
+                       #power-domain-cells = <0>;
                };
                /* Variable factor clocks */
                sd2_clk: sd2_clk@e6150078 {
index b299b26..c027375 100644 (file)
@@ -49,6 +49,7 @@
        compatible = "mundoreader,bq-curie2", "rockchip,rk3066a";
 
        memory {
+               device_type = "memory";
                reg = <0x60000000 0x40000000>;
        };
 
index 0a7304b..bae965c 100644 (file)
@@ -48,6 +48,7 @@
        compatible = "haoyu,marsboard-rk3066", "rockchip,rk3066a";
 
        memory {
+               device_type = "memory";
                reg = <0x60000000 0x40000000>;
        };
 
        status = "okay";
 };
 
+&usbphy {
+       status = "okay";
+};
+
+&usb_host {
+       status = "okay";
+};
+
+&usb_otg {
+       status = "okay";
+};
+
 &wdt {
        status = "okay";
 };
index 3ac1511..e36383c 100644 (file)
@@ -48,6 +48,7 @@
        compatible = "chipspark,rayeager-px2", "rockchip,rk3066a";
 
        memory {
+               device_type = "memory";
                reg = <0x60000000 0x40000000>;
        };
 
        status = "okay";
 };
 
+&usbphy {
+       status = "okay";
+};
+
 &usb_otg {
        status = "okay";
 };
index d32229b..946f187 100644 (file)
                clock-names = "timer", "pclk";
        };
 
+       usbphy: phy {
+               compatible = "rockchip,rk3066a-usb-phy", "rockchip,rk3288-usb-phy";
+               rockchip,grf = <&grf>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+
+               usbphy0: usb-phy0 {
+                       #phy-cells = <0>;
+                       reg = <0x17c>;
+                       clocks = <&cru SCLK_OTGPHY0>;
+                       clock-names = "phyclk";
+               };
+
+               usbphy1: usb-phy1 {
+                       #phy-cells = <0>;
+                       reg = <0x188>;
+                       clocks = <&cru SCLK_OTGPHY1>;
+                       clock-names = "phyclk";
+               };
+       };
+
        pinctrl: pinctrl {
                compatible = "rockchip,rk3066a-pinctrl";
                rockchip,grf = <&grf>;
index 42faa19..d2180e5 100644 (file)
@@ -48,6 +48,7 @@
        compatible = "radxa,rock", "rockchip,rk3188";
 
        memory {
+               device_type = "memory";
                reg = <0x60000000 0x80000000>;
        };
 
        status = "okay";
 };
 
+&usbphy {
+       status = "okay";
+};
+
 &usb_host {
        status = "okay";
 };
index 0f23aed..3163042 100644 (file)
                #reset-cells = <1>;
        };
 
+       usbphy: phy {
+               compatible = "rockchip,rk3188-usb-phy", "rockchip,rk3288-usb-phy";
+               rockchip,grf = <&grf>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+
+               usbphy0: usb-phy0 {
+                       #phy-cells = <0>;
+                       reg = <0x10c>;
+                       clocks = <&cru SCLK_OTGPHY0>;
+                       clock-names = "phyclk";
+               };
+
+               usbphy1: usb-phy1 {
+                       #phy-cells = <0>;
+                       reg = <0x11c>;
+                       clocks = <&cru SCLK_OTGPHY1>;
+                       clock-names = "phyclk";
+               };
+       };
+
        pinctrl: pinctrl {
                compatible = "rockchip,rk3188-pinctrl";
                rockchip,grf = <&grf>;
index 844a6fb..f6d2e78 100644 (file)
@@ -43,6 +43,7 @@
 
 / {
        memory {
+               device_type = "memory";
                reg = <0x0 0x80000000>;
        };
 
index 0b42372..20fa0ef 100644 (file)
@@ -44,6 +44,7 @@
 
 / {
        memory {
+               device_type = "memory";
                reg = <0 0x80000000>;
        };
 
                regulator-max-microvolt = <1350000>;
                regulator-always-on;
                regulator-boot-on;
+               regulator-enable-ramp-delay = <300>;
+               regulator-ramp-delay = <8000>;
                vin-supply = <&vcc_sys>;
        };
 
index d582811..f82b956 100644 (file)
@@ -49,6 +49,7 @@
        compatible = "chipspark,popmetal-rk3288", "rockchip,rk3288";
 
        memory{
+               device_type = "memory";
                reg = <0 0x80000000>;
        };
 
diff --git a/arch/arm/boot/dts/rk3288-r89.dts b/arch/arm/boot/dts/rk3288-r89.dts
new file mode 100644 (file)
index 0000000..14b9fc7
--- /dev/null
@@ -0,0 +1,413 @@
+/*
+ * Copyright (c) 2015 Heiko Stuebner <heiko@sntech.de>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include <dt-bindings/pwm/pwm.h>
+#include "rk3288.dtsi"
+
+/ {
+       compatible = "netxeon,r89", "rockchip,rk3288";
+
+       memory {
+               device_type = "memory";
+               reg = <0x0 0x80000000>;
+       };
+
+       ext_gmac: external-gmac-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+               clock-output-names = "ext_gmac";
+               #clock-cells = <0>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwrbtn>;
+
+               button@0 {
+                       gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+                       linux,code = <116>;
+                       label = "GPIO Key Power";
+                       linux,input-type = <1>;
+                       gpio-key,wakeup = <1>;
+                       debounce-interval = <100>;
+               };
+       };
+
+       vcc_host: vcc-host-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&host_vbus_drv>;
+               regulator-name = "vcc_host";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc_otg: vcc-otg-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&otg_vbus_drv>;
+               regulator-name = "vcc_otg";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc_sdmmc: sdmmc-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "sdmmc-supply";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
+               startup-delay-us = <100000>;
+               vin-supply = <&vcc_io>;
+       };
+
+       vcc_sys: sys-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "sys-supply";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+};
+
+&cpu0 {
+       cpu0-supply = <&vdd_cpu>;
+};
+
+&gmac {
+       phy-supply = <&vcc_lan>;
+       phy-mode = "rgmii";
+       clock_in_out = "input";
+       snps,reset-gpio = <&gpio4 7 0>;
+       snps,reset-active-low;
+       snps,reset-delays-us = <0 10000 1000000>;
+       assigned-clocks = <&cru SCLK_MAC>;
+       assigned-clock-parents = <&ext_gmac>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii_pins>;
+       tx_delay = <0x30>;
+       rx_delay = <0x10>;
+       status = "ok";
+};
+
+&hdmi {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       vdd_cpu: pmic@40 {
+               compatible = "silergy,syr827";
+               reg = <0x40>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "VDD_CPU";
+               regulator-enable-ramp-delay = <300>;
+               regulator-min-microvolt = <850000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-ramp-delay = <8000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vdd_gpu: pmic@41 {
+               compatible = "silergy,syr828";
+               reg = <0x41>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "VDD_GPU";
+               regulator-enable-ramp-delay = <300>;
+               regulator-min-microvolt = <850000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-ramp-delay = <8000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "xin32k";
+               interrupt-parent = <&gpio0>;
+               interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int>;
+       };
+
+       act8846: pmic@5a {
+               compatible = "active-semi,act8846";
+               reg = <0x5a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_vsel>, <&pwr_hold>;
+               system-power-controller;
+
+               regulators {
+                       vcc_ddr: REG1 {
+                               regulator-name = "VCC_DDR";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_io: REG2 {
+                               regulator-name = "VCC_IO";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vdd_log: REG3 {
+                               regulator-name = "VDD_LOG";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_20: REG4 {
+                               regulator-name = "VCC_20";
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                               regulator-always-on;
+                       };
+
+                       vccio_sd: REG5 {
+                               regulator-name = "VCCIO_SD";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vdd10_lcd: REG6 {
+                               regulator-name = "VDD10_LCD";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_wl: REG7 {
+                               regulator-name = "VCC_WL";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vcca_33: REG8 {
+                               regulator-name = "VCCA_33";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_lan: REG9 {
+                               regulator-name = "VCC_LAN";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vdd_10: REG10 {
+                               regulator-name = "VDD_10";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_18: REG11 {
+                               regulator-name = "VCC_18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       vcc18_lcd: REG12 {
+                               regulator-name = "VCC18_LCD";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       status = "okay";
+};
+
+&pinctrl {
+       pcfg_output_high: pcfg-output-high {
+               output-high;
+       };
+
+       pcfg_output_low: pcfg-output-low {
+               output-low;
+       };
+
+       act8846 {
+               pmic_vsel: pmic-vsel {
+                       rockchip,pins = <7 1 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               pwr_hold: pwr-hold {
+                       rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       buttons {
+               pwrbtn: pwrbtn {
+                       rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       pmic {
+               pmic_int: pmic-int {
+                       rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb {
+               host_vbus_drv: host-vbus-drv {
+                       rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               otg_vbus_drv: otg-vbus-drv {
+                       rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcc_18>;
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       card-detect-delay = <200>;
+       disable-wp;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
+       vmmc-supply = <&vcc_sdmmc>;
+       vqmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
+
+&tsadc {
+       rockchip,hw-tshut-mode = <0>;
+       rockchip,hw-tshut-polarity = <0>;
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&uart4 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host1 {
+       status = "okay";
+};
+
+&usb_otg {
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
+
+&wdt {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi b/arch/arm/boot/dts/rk3288-veyron-chromebook.dtsi
new file mode 100644 (file)
index 0000000..136d650
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Google Veyron (and derivatives) board device tree source
+ * Chromebook specific parts
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/clock/rockchip,rk808.h>
+#include <dt-bindings/input/input.h>
+#include "rk3288-veyron.dtsi"
+#include "rk3288-veyron-sdmmc.dtsi"
+
+/ {
+       aliases {
+               /* Assign 20 so we don't get confused w/ builtin ones */
+               i2c20 = &i2c_tunnel;
+       };
+
+       gpio-charger {
+               compatible = "gpio-charger";
+               charger-type = "mains";
+               gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ac_present_ap>;
+       };
+
+       /* A non-regulated voltage from power supply or battery */
+       vccsys: vccsys {
+               compatible = "regulator-fixed";
+               regulator-name = "vccsys";
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vcc33_sys: vcc33-sys {
+               vin-supply = <&vccsys>;
+       };
+
+       vcc_5v: vcc-5v {
+               vin-supply = <&vccsys>;
+       };
+
+       /* This turns on vbus for host1 (dwc2) */
+       vcc5_host1: vcc5-host1-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&host1_pwr_en>;
+               regulator-name = "vcc5_host1";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       /* This turns on vbus for otg for host mode (dwc2) */
+       vcc5v_otg: vcc5v-otg-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usbotg_pwren_h>;
+               regulator-name = "vcc5_host2";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+};
+
+&gpio_keys {
+       pinctrl-0 = <&pwr_key_l &ap_lid_int_l>;
+       lid {
+               label = "Lid";
+               gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+               gpio-key,wakeup;
+               linux,code = <0>; /* SW_LID */
+               linux,input-type = <5>; /* EV_SW */
+               debounce-interval = <1>;
+       };
+};
+
+&rk808 {
+       vcc11-supply = <&vcc_5v>;
+
+       regulators {
+               vcc33_ccd: LDO_REG8 {
+                       regulator-name = "vcc33_ccd";
+                       regulator-always-on;
+                       regulator-boot-on;
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-state-mem {
+                               regulator-on-in-suspend;
+                               regulator-suspend-microvolt = <3300000>;
+                       };
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       cros_ec: ec@0 {
+               compatible = "google,cros-ec-spi";
+               reg = <0>;
+               google,cros-ec-spi-pre-delay = <30>;
+               interrupt-parent = <&gpio7>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ec_int>;
+               spi-max-frequency = <3000000>;
+
+               i2c_tunnel: i2c-tunnel {
+                       compatible = "google,cros-ec-i2c-tunnel";
+                       google,remote-bus = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+};
+
+&i2c4 {
+       trackpad@15 {
+               compatible = "elan,ekth3000";
+               reg = <0x15>;
+               interrupt-parent = <&gpio7>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_int>;
+               vcc-supply = <&vcc33_io>;
+               wakeup-source;
+       };
+};
+
+&pinctrl {
+       pinctrl-0 = <
+               /* Common for sleep and wake, but no owners */
+               &global_pwroff
+
+               /* Wake only */
+               &suspend_l_wake
+       >;
+       pinctrl-1 = <
+               /* Common for sleep and wake, but no owners */
+               &global_pwroff
+
+               /* Sleep only */
+               &suspend_l_sleep
+       >;
+
+       buttons {
+               ap_lid_int_l: ap-lid-int-l {
+                       rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       charger {
+               ac_present_ap: ac-present-ap {
+                       rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       cros-ec {
+               ec_int: ec-int {
+                       rockchip,pins = <7 7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       suspend {
+               suspend_l_wake: suspend-l-wake {
+                       rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               suspend_l_sleep: suspend-l-sleep {
+                       rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       trackpad {
+               trackpad_int: trackpad-int {
+                       rockchip,pins = <7 3 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb-host {
+               host1_pwr_en: host1-pwr-en {
+                       rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usbotg_pwren_h: usbotg-pwren-h {
+                       rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+#include "cros-ec-keyboard.dtsi"
diff --git a/arch/arm/boot/dts/rk3288-veyron-jerry.dts b/arch/arm/boot/dts/rk3288-veyron-jerry.dts
new file mode 100644 (file)
index 0000000..60bd6e9
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ * Google Veyron Jerry Rev 3+ board device tree source
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "rk3288-veyron-chromebook.dtsi"
+#include "cros-ec-sbs.dtsi"
+
+/ {
+       model = "Google Jerry";
+       compatible = "google,veyron-jerry-rev7", "google,veyron-jerry-rev6",
+                    "google,veyron-jerry-rev5", "google,veyron-jerry-rev4",
+                    "google,veyron-jerry-rev3", "google,veyron-jerry",
+                    "google,veyron", "rockchip,rk3288";
+
+       panel_regulator: panel-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio7 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_enable_h>;
+               regulator-name = "panel_regulator";
+               vin-supply = <&vcc33_sys>;
+       };
+
+       vcc18_lcd: vcc18-lcd {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&avdd_1v8_disp_en>;
+               regulator-name = "vcc18_lcd";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc18_wl>;
+       };
+
+       backlight_regulator: backlight-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bl_pwr_en>;
+               regulator-name = "backlight_regulator";
+               vin-supply = <&vcc33_sys>;
+               startup-delay-us = <15000>;
+       };
+};
+
+&rk808 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmic_int_l>;
+
+       regulators {
+               mic_vcc: LDO_REG2 {
+                       regulator-name = "mic_vcc";
+                       regulator-always-on;
+                       regulator-boot-on;
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-state-mem {
+                               regulator-off-in-suspend;
+                       };
+               };
+       };
+};
+
+&sdmmc {
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd_disabled &sdmmc_cd_gpio
+                       &sdmmc_bus4>;
+};
+
+&vcc_5v {
+       enable-active-high;
+       gpio = <&gpio7 21 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&drv_5v>;
+};
+
+&vcc50_hdmi {
+       enable-active-high;
+       gpio = <&gpio5 19 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc50_hdmi_en>;
+};
+
+&pinctrl {
+       backlight {
+               bl_pwr_en: bl_pwr_en {
+                       rockchip,pins = <2 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buck-5v {
+               drv_5v: drv-5v {
+                       rockchip,pins = <7 21 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       hdmi {
+               vcc50_hdmi_en: vcc50-hdmi-en {
+                       rockchip,pins = <5 19 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       lcd {
+               lcd_enable_h: lcd-en {
+                       rockchip,pins = <7 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               avdd_1v8_disp_en: avdd-1v8-disp-en {
+                       rockchip,pins = <2 13 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               dvs_1: dvs-1 {
+                       rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               dvs_2: dvs-2 {
+                       rockchip,pins = <7 15 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       /*
+        * Trackpad pin control is shared between Elan and Synaptics devices
+        * so we have to pull it up to the bus level.
+        */
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c4_xfer &trackpad_int>;
+
+       trackpad@15 {
+               /*
+                * Remove the inherited pinctrl settings to avoid clashing
+                * with bus-wide ones.
+                */
+               /delete-property/pinctrl-names;
+               /delete-property/pinctrl-0;
+       };
+
+       trackpad@2c {
+               compatible = "hid-over-i2c";
+               interrupt-parent = <&gpio7>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               reg = <0x2c>;
+               hid-descr-addr = <0x0020>;
+               vcc-supply = <&vcc33_io>;
+               wakeup-source;
+       };
+};
diff --git a/arch/arm/boot/dts/rk3288-veyron-minnie.dts b/arch/arm/boot/dts/rk3288-veyron-minnie.dts
new file mode 100644 (file)
index 0000000..8fd8ef2
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * Google Veyron Minnie Rev 0+ board device tree source
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "rk3288-veyron-chromebook.dtsi"
+
+/ {
+       model = "Google Minnie";
+       compatible = "google,veyron-minnie-rev4", "google,veyron-minnie-rev3",
+                    "google,veyron-minnie-rev2", "google,veyron-minnie-rev1",
+                    "google,veyron-minnie-rev0", "google,veyron-minnie",
+                    "google,veyron", "rockchip,rk3288";
+
+       backlight_regulator: backlight-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bl_pwr_en>;
+               regulator-name = "backlight_regulator";
+               vin-supply = <&vcc33_sys>;
+               startup-delay-us = <15000>;
+       };
+
+       panel_regulator: panel-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio7 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_enable_h>;
+               regulator-name = "panel_regulator";
+               vin-supply = <&vcc33_sys>;
+       };
+
+       vcc18_lcd: vcc18-lcd {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&avdd_1v8_disp_en>;
+               regulator-name = "vcc18_lcd";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc18_wl>;
+       };
+};
+
+&gpio_keys {
+       pinctrl-0 = <&pwr_key_l &ap_lid_int_l &volum_down_l &volum_up_l>;
+
+       volum_down {
+               label = "Volum_down";
+               gpios = <&gpio5 11 GPIO_ACTIVE_LOW>;
+               linux,code = <KEY_VOLUMEDOWN>;
+               debounce-interval = <100>;
+       };
+
+       volum_up {
+               label = "Volum_up";
+               gpios = <&gpio5 10 GPIO_ACTIVE_LOW>;
+               linux,code = <KEY_VOLUMEUP>;
+               debounce-interval = <100>;
+       };
+};
+
+&i2c_tunnel {
+       battery: bq27500@55 {
+               compatible = "ti,bq27500";
+               reg = <0x55>;
+       };
+};
+
+&i2c3 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;
+       i2c-scl-rising-time-ns = <300>;
+};
+
+&rk808 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmic_int_l &dvs_1 &dvs_2>;
+
+       regulators {
+               vcc33_touch: LDO_REG2 {
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-name = "vcc33_touch";
+                       regulator-state-mem {
+                               regulator-off-in-suspend;
+                       };
+               };
+
+               vcc5v_touch: SWITCH_REG2 {
+                       regulator-name = "vcc5v_touch";
+                       regulator-state-mem {
+                               regulator-off-in-suspend;
+                       };
+               };
+       };
+};
+
+&sdmmc {
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd_disabled &sdmmc_cd_gpio
+                       &sdmmc_bus4>;
+};
+
+&vcc_5v {
+       enable-active-high;
+       gpio = <&gpio7 21 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&drv_5v>;
+};
+
+&vcc50_hdmi {
+       enable-active-high;
+       gpio = <&gpio5 19 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc50_hdmi_en>;
+};
+
+&pinctrl {
+       backlight {
+               bl_pwr_en: bl_pwr_en {
+                       rockchip,pins = <2 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buck-5v {
+               drv_5v: drv-5v {
+                       rockchip,pins = <7 21 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buttons {
+               volum_down_l: volum-down-l {
+                       rockchip,pins = <5 11 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               volum_up_l: volum-up-l {
+                       rockchip,pins = <5 10 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       hdmi {
+               vcc50_hdmi_en: vcc50-hdmi-en {
+                       rockchip,pins = <5 19 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       lcd {
+               lcd_enable_h: lcd-en {
+                       rockchip,pins = <7 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               avdd_1v8_disp_en: avdd-1v8-disp-en {
+                       rockchip,pins = <2 13 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               dvs_1: dvs-1 {
+                       rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               dvs_2: dvs-2 {
+                       rockchip,pins = <7 15 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+       prochot {
+               gpio_prochot: gpio-prochot {
+                       rockchip,pins = <2 8 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       touchscreen {
+               touch_int: touch-int {
+                       rockchip,pins = <2 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               touch_rst: touch-rst {
+                       rockchip,pins = <2 15 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/rk3288-veyron-pinky.dts b/arch/arm/boot/dts/rk3288-veyron-pinky.dts
new file mode 100644 (file)
index 0000000..94b56e3
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Google Veyron Pinky Rev 2 board device tree source
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "rk3288-veyron-chromebook.dtsi"
+#include "cros-ec-sbs.dtsi"
+
+/ {
+       model = "Google Pinky";
+       compatible = "google,veyron-pinky-rev2", "google,veyron-pinky",
+                    "google,veyron", "rockchip,rk3288";
+
+       /delete-node/emmc-pwrseq;
+};
+
+&emmc {
+       /*
+        * Use a pullup instead of a drive since the output is 3.3V and
+        * really should be 1.8V (oops).  The external pulldown will help
+        * bring the voltage down if we only drive with a pullup here.
+        * Therefore disable the powerseq (and actual reset) for pinky.
+        */
+       /delete-property/mmc-pwrseq;
+       pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8 &emmc_reset>;
+};
+
+&gpio_keys {
+       pinctrl-0 = <&pwr_key_h &ap_lid_int_l>;
+
+       power {
+               gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+/* Touchpad connector */
+&i2c3 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;
+       i2c-scl-rising-time-ns = <300>;
+};
+
+&pinctrl {
+       buttons {
+               pwr_key_h: pwr-key-h {
+                       rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       emmc {
+               emmc_reset: emmc-reset {
+                       rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       sdmmc {
+               sdmmc_wp_gpio: sdmmc-wp-gpio {
+                       rockchip,pins = <7 10 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&rk808 {
+       regulators {
+               vcc18_lcd: SWITCH_REG2 {
+                       regulator-always-on;
+                       regulator-boot-on;
+                       regulator-name = "vcc18_lcd";
+                       regulator-state-mem {
+                               regulator-off-in-suspend;
+                       };
+               };
+       };
+};
+
+&sdmmc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd_disabled &sdmmc_cd_gpio
+                    &sdmmc_wp_gpio &sdmmc_bus4>;
+       wp-gpios = <&gpio7 10 GPIO_ACTIVE_HIGH>;
+};
+
+&tsadc {
+       /* Some connection is flaky making the tsadc hang the system */
+       status = "disabled";
+};
diff --git a/arch/arm/boot/dts/rk3288-veyron-sdmmc.dtsi b/arch/arm/boot/dts/rk3288-veyron-sdmmc.dtsi
new file mode 100644 (file)
index 0000000..b5334ec
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * Google Veyron (and derivatives) fragment for sdmmc cards
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&io_domains {
+       sdcard-supply = <&vccio_sd>;
+};
+
+&pinctrl {
+       sdmmc {
+               /*
+                * We run sdmmc at max speed; bump up drive strength.
+                * We also have external pulls, so disable the internal ones.
+                */
+               sdmmc_bus4: sdmmc-bus4 {
+                       rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <6 17 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <6 18 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <6 19 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdmmc_clk: sdmmc-clk {
+                       rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdmmc_cmd: sdmmc-cmd {
+                       rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               /*
+                * Builtin CD line is hooked to ground to prevent JTAG at boot
+                * (and also to get the voltage rail correct).
+                * Configure gpio6_C6 as GPIO so dw_mmc builtin CD doesn't
+                * think there's a card inserted
+                */
+               sdmmc_cd_disabled: sdmmc-cd-disabled {
+                       rockchip,pins = <6 22 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /* This is where we actually hook up CD */
+               sdmmc_cd_gpio: sdmmc-cd-gpio {
+                       rockchip,pins = <7 5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&rk808 {
+       vcc9-supply = <&vcc_5v>;
+
+       regulators {
+               vccio_sd: LDO_REG4 {
+                       regulator-name = "vccio_sd";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-state-mem {
+                               regulator-off-in-suspend;
+                       };
+               };
+
+               vcc33_sd: LDO_REG5 {
+                       regulator-name = "vcc33_sd";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-state-mem {
+                               regulator-off-in-suspend;
+                       };
+               };
+       };
+};
+
+&sdmmc {
+       status = "okay";
+
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       card-detect-delay = <200>;
+       cd-gpios = <&gpio7 5 GPIO_ACTIVE_LOW>;
+       num-slots = <1>;
+       vmmc-supply = <&vcc33_sd>;
+       vqmmc-supply = <&vccio_sd>;
+};
diff --git a/arch/arm/boot/dts/rk3288-veyron-speedy.dts b/arch/arm/boot/dts/rk3288-veyron-speedy.dts
new file mode 100644 (file)
index 0000000..a7ea7d0
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Google Veyron Speedy Rev 1+ board device tree source
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "rk3288-veyron-chromebook.dtsi"
+#include "cros-ec-sbs.dtsi"
+
+/ {
+       model = "Google Speedy";
+       compatible = "google,veyron-speedy-rev9", "google,veyron-speedy-rev8",
+                    "google,veyron-speedy-rev7", "google,veyron-speedy-rev6",
+                    "google,veyron-speedy-rev5", "google,veyron-speedy-rev4",
+                    "google,veyron-speedy-rev3", "google,veyron-speedy-rev2",
+                    "google,veyron-speedy", "google,veyron", "rockchip,rk3288";
+
+       panel_regulator: panel-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio7 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_enable_h>;
+               regulator-name = "panel_regulator";
+               vin-supply = <&vcc33_sys>;
+       };
+
+       vcc18_lcd: vcc18-lcd {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&avdd_1v8_disp_en>;
+               regulator-name = "vcc18_lcd";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc18_wl>;
+       };
+
+       backlight_regulator: backlight-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bl_pwr_en>;
+               regulator-name = "backlight_regulator";
+               vin-supply = <&vcc33_sys>;
+               startup-delay-us = <15000>;
+       };
+};
+
+&rk808 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmic_int_l>;
+};
+
+&sdmmc {
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd_disabled &sdmmc_cd_gpio
+                       &sdmmc_bus4>;
+};
+
+&vcc_5v {
+       enable-active-high;
+       gpio = <&gpio7 21 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&drv_5v>;
+};
+
+&vcc50_hdmi {
+       enable-active-high;
+       gpio = <&gpio5 19 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc50_hdmi_en>;
+};
+
+&pinctrl {
+       backlight {
+               bl_pwr_en: bl_pwr_en {
+                       rockchip,pins = <2 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buck-5v {
+               drv_5v: drv-5v {
+                       rockchip,pins = <7 21 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       hdmi {
+               vcc50_hdmi_en: vcc50-hdmi-en {
+                       rockchip,pins = <5 19 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       lcd {
+               lcd_enable_h: lcd-en {
+                       rockchip,pins = <7 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               avdd_1v8_disp_en: avdd-1v8-disp-en {
+                       rockchip,pins = <2 13 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               dvs_1: dvs-1 {
+                       rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               dvs_2: dvs-2 {
+                       rockchip,pins = <7 15 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/rk3288-veyron.dtsi b/arch/arm/boot/dts/rk3288-veyron.dtsi
new file mode 100644 (file)
index 0000000..2fa7a0d
--- /dev/null
@@ -0,0 +1,563 @@
+/*
+ * Google Veyron (and derivatives) board device tree source
+ *
+ * Copyright 2015 Google, Inc
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *  Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/clock/rockchip,rk808.h>
+#include <dt-bindings/input/input.h>
+#include "rk3288.dtsi"
+
+/ {
+       memory {
+               device_type = "memory";
+               reg = <0x0 0x80000000>;
+       };
+
+       gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_key_l>;
+               power {
+                       label = "Power";
+                       gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <100>;
+                       gpio-key,wakeup;
+               };
+       };
+
+       gpio-restart {
+               compatible = "gpio-restart";
+               gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ap_warm_reset_h>;
+               priority = <200>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               pinctrl-0 = <&emmc_reset>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio2 9 GPIO_ACTIVE_HIGH>;
+       };
+
+       io_domains: io-domains {
+               compatible = "rockchip,rk3288-io-voltage-domain";
+               rockchip,grf = <&grf>;
+
+               bb-supply = <&vcc33_io>;
+               dvp-supply = <&vcc_18>;
+               flash0-supply = <&vcc18_flashio>;
+               gpio1830-supply = <&vcc33_io>;
+               gpio30-supply = <&vcc33_io>;
+               lcdc-supply = <&vcc33_lcd>;
+               wifi-supply = <&vcc18_wl>;
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&rk808 RK808_CLKOUT1>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_enable_l>, <&wifi_enable_h>;
+
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+               reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>;
+       };
+
+       vcc_5v: vcc-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_5v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vcc33_sys: vcc33-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc33_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       vcc50_hdmi: vcc50-hdmi {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc50_hdmi";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_5v>;
+       };
+};
+
+&cpu0 {
+       cpu0-supply = <&vdd_cpu>;
+};
+
+&emmc {
+       status = "okay";
+
+       broken-cd;
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       disable-wp;
+       mmc-pwrseq = <&emmc_pwrseq>;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
+};
+
+&hdmi {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;         /* 2.5ns measured */
+       i2c-scl-rising-time-ns = <100>;         /* 45ns measured */
+
+       rk808: pmic@1b {
+               compatible = "rockchip,rk808";
+               reg = <0x1b>;
+               clock-output-names = "xin32k", "wifibt_32kin";
+               interrupt-parent = <&gpio0>;
+               interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>;
+               rockchip,system-power-controller;
+               wakeup-source;
+               #clock-cells = <1>;
+
+               vcc1-supply = <&vcc33_sys>;
+               vcc2-supply = <&vcc33_sys>;
+               vcc3-supply = <&vcc33_sys>;
+               vcc4-supply = <&vcc33_sys>;
+               vcc6-supply = <&vcc_5v>;
+               vcc7-supply = <&vcc33_sys>;
+               vcc8-supply = <&vcc33_sys>;
+               vcc12-supply = <&vcc_18>;
+               vddio-supply = <&vcc33_io>;
+
+               regulators {
+                       vdd_cpu: DCDC_REG1 {
+                               regulator-name = "vdd_arm";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1450000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_gpu: DCDC_REG2 {
+                               regulator-name = "vdd_gpu";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1250000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc135_ddr: DCDC_REG3 {
+                               regulator-name = "vcc135_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       /*
+                        * vcc_18 has several aliases.  (vcc18_flashio and
+                        * vcc18_wl).  We'll add those aliases here just to
+                        * make it easier to follow the schematic.  The signals
+                        * are actually hooked together and only separated for
+                        * power measurement purposes).
+                        */
+                       vcc18_wl: vcc18_flashio: vcc_18: DCDC_REG4 {
+                               regulator-name = "vcc_18";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       /*
+                        * Note that both vcc33_io and vcc33_pmuio are always
+                        * powered together. To simplify the logic in the dts
+                        * we just refer to vcc33_io every time something is
+                        * powered from vcc33_pmuio. In fact, on later boards
+                        * (such as danger) they're the same net.
+                        */
+                       vcc33_io: LDO_REG1 {
+                               regulator-name = "vcc33_io";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vdd_10: LDO_REG3 {
+                               regulator-name = "vdd_10";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vdd10_lcd_pwren_h: LDO_REG7 {
+                               regulator-name = "vdd10_lcd_pwren_h";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2500000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc33_lcd: SWITCH_REG1 {
+                               regulator-name = "vcc33_lcd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;         /* 2.5ns measured */
+       i2c-scl-rising-time-ns = <100>;         /* 40ns measured */
+
+       tpm: tpm@20 {
+               compatible = "infineon,slb9645tt";
+               reg = <0x20>;
+               powered-while-suspended;
+       };
+};
+
+&i2c2 {
+       status = "okay";
+
+       /* 100kHz since 4.7k resistors don't rise fast enough */
+       clock-frequency = <100000>;
+       i2c-scl-falling-time-ns = <50>;         /* 10ns measured */
+       i2c-scl-rising-time-ns = <800>;         /* 600ns measured */
+};
+
+&i2c4 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;         /* 11ns measured */
+       i2c-scl-rising-time-ns = <300>;         /* 225ns measured */
+};
+
+&i2c5 {
+       status = "okay";
+
+       clock-frequency = <100000>;
+       i2c-scl-falling-time-ns = <300>;
+       i2c-scl-rising-time-ns = <1000>;
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&sdio0 {
+       status = "okay";
+
+       broken-cd;
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio0_clk &sdio0_cmd &sdio0_bus4>;
+       vmmc-supply = <&vcc33_sys>;
+       vqmmc-supply = <&vcc18_wl>;
+};
+
+&spi2 {
+       status = "okay";
+
+       rx-sample-delay-ns = <12>;
+};
+
+&tsadc {
+       status = "okay";
+
+       rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
+       rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
+};
+
+&uart0 {
+       status = "okay";
+
+       /* We need to go faster than 24MHz, so adjust clock parents / rates */
+       assigned-clocks = <&cru SCLK_UART0>;
+       assigned-clock-rates = <48000000>;
+
+       /* Pins don't include flow control by default; add that in */
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+
+       needs-reset-on-resume;
+};
+
+&usb_host1 {
+       status = "okay";
+};
+
+&usb_otg {
+       status = "okay";
+
+       assigned-clocks = <&cru SCLK_USBPHY480M_SRC>;
+       assigned-clock-parents = <&cru SCLK_OTGPHY0>;
+       dr_mode = "host";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&wdt {
+       status = "okay";
+};
+
+&pinctrl {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <
+               /* Common for sleep and wake, but no owners */
+               &global_pwroff
+       >;
+       pinctrl-1 = <
+               /* Common for sleep and wake, but no owners */
+               &global_pwroff
+       >;
+
+       pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
+               bias-disable;
+               drive-strength = <8>;
+       };
+
+       pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
+               bias-pull-up;
+               drive-strength = <8>;
+       };
+
+       pcfg_output_high: pcfg-output-high {
+               output-high;
+       };
+
+       pcfg_output_low: pcfg-output-low {
+               output-low;
+       };
+
+       buttons {
+               pwr_key_l: pwr-key-l {
+                       rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       emmc {
+               emmc_reset: emmc-reset {
+                       rockchip,pins = <2 9 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /*
+                * We run eMMC at max speed; bump up drive strength.
+                * We also have external pulls, so disable the internal ones.
+                */
+               emmc_clk: emmc-clk {
+                       rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+
+               emmc_cmd: emmc-cmd {
+                       rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+
+               emmc_bus8: emmc-bus8 {
+                       rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 1 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 2 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 3 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 4 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 5 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 6 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 7 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+       };
+
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       reboot {
+               ap_warm_reset_h: ap-warm-reset-h {
+                       rockchip,pins = <RK_GPIO0 13 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       recovery-switch {
+               rec_mode_l: rec-mode-l {
+                       rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       sdio0 {
+               wifi_enable_h: wifienable-h {
+                       rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /* NOTE: mislabelled on schematic; should be bt_enable_h */
+               bt_enable_l: bt-enable-l {
+                       rockchip,pins = <4 29 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /*
+                * We run sdio0 at max speed; bump up drive strength.
+                * We also have external pulls, so disable the internal ones.
+                */
+               sdio0_bus4: sdio0-bus4 {
+                       rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <4 21 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <4 22 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <4 23 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdio0_cmd: sdio0-cmd {
+                       rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdio0_clk: sdio0-clk {
+                       rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+       };
+
+       tpm {
+               tpm_int_h: tpm-int-h {
+                       rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       /*
+        * On Marvell-based hardware this is a no-connect.  Make sure we enable
+        * the pullup so that the line doesn't float.  The pullup shouldn't
+        * hurt on Broadcom-based hardware since the other side is actively
+        * driving this signal.  As proof: we've already got a pullup on RX.
+        */
+       uart0 {
+               uart0_cts: uart0-cts {
+                       rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_up>;
+               };
+       };
+
+       write-protect {
+               fw_wp_ap: fw-wp-ap {
+                       rockchip,pins = <7 6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
index 22316d0..906e938 100644 (file)
@@ -78,6 +78,7 @@
                             <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
        };
 
        cpus {
                        clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                };
-               cpu@501 {
+               cpu1: cpu@501 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a12";
                        reg = <0x501>;
                        resets = <&cru SRST_CORE1>;
                };
-               cpu@502 {
+               cpu2: cpu@502 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a12";
                        reg = <0x502>;
                        resets = <&cru SRST_CORE2>;
                };
-               cpu@503 {
+               cpu3: cpu@503 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a12";
                        reg = <0x503>;
                };
        };
 
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               /*
+                * The rk3288 cannot use the memory area above 0xfe000000
+                * for dma operations for some reason. While there is
+                * probably a better solution available somewhere, we
+                * haven't found it yet and while devices with 2GB of ram
+                * are not affected, this issue prevents 4GB from booting.
+                * So to make these devices at least bootable, block
+                * this area for the time being until the real solution
+                * is found.
+                */
+               dma-unusable@fe000000 {
+                       reg = <0xfe000000 0x1000000>;
+               };
+       };
+
        xin24m: oscillator {
                compatible = "fixed-clock";
                clock-frequency = <24000000>;
                        "mac_clk_rx", "mac_clk_tx",
                        "clk_mac_ref", "clk_mac_refout",
                        "aclk_mac", "pclk_mac";
+               resets = <&cru SRST_MAC>;
+               reset-names = "stmmaceth";
                status = "disabled";
        };
 
                compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
                reg = <0xff800000 0x100>;
                clocks = <&cru PCLK_WDT>;
-               interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+               interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
                status = "disabled";
        };
 
index a2ae9f3..4497d28 100644 (file)
                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru HCLK_OTG0>;
                clock-names = "otg";
+               dr_mode = "otg";
+               g-np-tx-fifo-size = <16>;
+               g-rx-fifo-size = <275>;
+               g-tx-fifo-size = <256 128 128 64 64 32>;
+               g-use-dma;
+               phys = <&usbphy0>;
+               phy-names = "usb2-phy";
                status = "disabled";
        };
 
                interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru HCLK_OTG1>;
                clock-names = "otg";
+               dr_mode = "host";
+               phys = <&usbphy1>;
+               phy-names = "usb2-phy";
                status = "disabled";
        };
 
diff --git a/arch/arm/boot/dts/sama5d2.dtsi b/arch/arm/boot/dts/sama5d2.dtsi
new file mode 100644 (file)
index 0000000..034cd48
--- /dev/null
@@ -0,0 +1,926 @@
+/*
+ * sama5d2.dtsi - Device Tree Include file for SAMA5D2 family SoC
+ *
+ *  Copyright (C) 2015 Atmel,
+ *                2015 Ludovic Desroches <ludovic.desroches@atmel.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/dma/at91.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/clock/at91.h>
+
+/ {
+       model = "Atmel SAMA5D2 family SoC";
+       compatible = "atmel,sama5d2";
+       interrupt-parent = <&aic>;
+
+       aliases {
+               serial0 = &uart1;
+               serial1 = &uart3;
+               tcb0 = &tcb0;
+               tcb1 = &tcb1;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a5";
+                       reg = <0>;
+                       next-level-cache = <&L2>;
+               };
+       };
+
+       memory {
+               reg = <0x20000000 0x20000000>;
+       };
+
+       clocks {
+               slow_xtal: slow_xtal {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <0>;
+               };
+
+               main_xtal: main_xtal {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <0>;
+               };
+
+               adc_op_clk: adc_op_clk{
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <1000000>;
+               };
+       };
+
+       ns_sram: sram@00200000 {
+               compatible = "mmio-sram";
+               reg = <0x00200000 0x20000>;
+       };
+
+       ahb {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               usb0: gadget@00300000 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "atmel,sama5d3-udc";
+                       reg = <0x00300000 0x100000
+                              0xfc02c000 0x400>;
+                       interrupts = <42 IRQ_TYPE_LEVEL_HIGH 2>;
+                       clocks = <&udphs_clk>, <&utmi>;
+                       clock-names = "pclk", "hclk";
+                       status = "disabled";
+
+                       ep0 {
+                               reg = <0>;
+                               atmel,fifo-size = <64>;
+                               atmel,nb-banks = <1>;
+                       };
+
+                       ep1 {
+                               reg = <1>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <3>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep2 {
+                               reg = <2>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <3>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep3 {
+                               reg = <3>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep4 {
+                               reg = <4>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep5 {
+                               reg = <5>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep6 {
+                               reg = <6>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep7 {
+                               reg = <7>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-dma;
+                               atmel,can-isoc;
+                       };
+
+                       ep8 {
+                               reg = <8>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep9 {
+                               reg = <9>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep10 {
+                               reg = <10>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep11 {
+                               reg = <11>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep12 {
+                               reg = <12>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep13 {
+                               reg = <13>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep14 {
+                               reg = <14>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+
+                       ep15 {
+                               reg = <15>;
+                               atmel,fifo-size = <1024>;
+                               atmel,nb-banks = <2>;
+                               atmel,can-isoc;
+                       };
+               };
+
+               usb1: ohci@00400000 {
+                       compatible = "atmel,at91rm9200-ohci", "usb-ohci";
+                       reg = <0x00400000 0x100000>;
+                       interrupts = <41 IRQ_TYPE_LEVEL_HIGH 2>;
+                       clocks = <&uhphs_clk>, <&uhphs_clk>, <&uhpck>;
+                       clock-names = "ohci_clk", "hclk", "uhpck";
+                       status = "disabled";
+               };
+
+               usb2: ehci@00500000 {
+                       compatible = "atmel,at91sam9g45-ehci", "usb-ehci";
+                       reg = <0x00500000 0x100000>;
+                       interrupts = <41 IRQ_TYPE_LEVEL_HIGH 2>;
+                       clocks = <&utmi>, <&uhphs_clk>;
+                       clock-names = "usb_clk", "ehci_clk";
+                       status = "disabled";
+               };
+
+               L2: cache-controller@00a00000 {
+                       compatible = "arm,pl310-cache";
+                       reg = <0x00a00000 0x1000>;
+                       interrupts = <63 IRQ_TYPE_LEVEL_HIGH 4>;
+                       cache-unified;
+                       cache-level = <2>;
+               };
+
+               apb {
+                       compatible = "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+
+                       ramc0: ramc@f000c000 {
+                               compatible = "atmel,sama5d3-ddramc";
+                               reg = <0xf000c000 0x200>;
+                               clocks = <&ddrck>, <&mpddr_clk>;
+                               clock-names = "ddrck", "mpddr";
+                       };
+
+                       dma0: dma-controller@f0010000 {
+                               compatible = "atmel,sama5d4-dma";
+                               reg = <0xf0010000 0x1000>;
+                               interrupts = <6 IRQ_TYPE_LEVEL_HIGH 0>;
+                               #dma-cells = <1>;
+                               clocks = <&dma0_clk>;
+                               clock-names = "dma_clk";
+                       };
+
+                       pmc: pmc@f0014000 {
+                               compatible = "atmel,sama5d2-pmc";
+                               reg = <0xf0014000 0x160>;
+                               interrupts = <74 IRQ_TYPE_LEVEL_HIGH 7>;
+                               interrupt-controller;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               #interrupt-cells = <1>;
+
+                               main_rc_osc: main_rc_osc {
+                                       compatible = "atmel,at91sam9x5-clk-main-rc-osc";
+                                       #clock-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       interrupts = <AT91_PMC_MOSCRCS>;
+                                       clock-frequency = <12000000>;
+                                       clock-accuracy = <100000000>;
+                               };
+
+                               main_osc: main_osc {
+                                       compatible = "atmel,at91rm9200-clk-main-osc";
+                                       #clock-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       interrupts = <AT91_PMC_MOSCS>;
+                                       clocks = <&main_xtal>;
+                               };
+
+                               main: mainck {
+                                       compatible = "atmel,at91sam9x5-clk-main";
+                                       #clock-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       interrupts = <AT91_PMC_MOSCSELS>;
+                                       clocks = <&main_rc_osc &main_osc>;
+                               };
+
+                               plla: pllack {
+                                       compatible = "atmel,sama5d3-clk-pll";
+                                       #clock-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       interrupts = <AT91_PMC_LOCKA>;
+                                       clocks = <&main>;
+                                       reg = <0>;
+                                       atmel,clk-input-range = <12000000 12000000>;
+                                       #atmel,pll-clk-output-range-cells = <4>;
+                                       atmel,pll-clk-output-ranges = <600000000 1200000000 0 0>;
+                               };
+
+                               plladiv: plladivck {
+                                       compatible = "atmel,at91sam9x5-clk-plldiv";
+                                       #clock-cells = <0>;
+                                       clocks = <&plla>;
+                               };
+
+                               utmi: utmick {
+                                       compatible = "atmel,at91sam9x5-clk-utmi";
+                                       #clock-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       interrupts = <AT91_PMC_LOCKU>;
+                                       clocks = <&main>;
+                               };
+
+                               mck: masterck {
+                                       compatible = "atmel,at91sam9x5-clk-master";
+                                       #clock-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       interrupts = <AT91_PMC_MCKRDY>;
+                                       clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>;
+                                       atmel,clk-output-range = <124000000 166000000>;
+                                       atmel,clk-divisors = <1 2 4 3>;
+                               };
+
+                               h32ck: h32mxck {
+                                       #clock-cells = <0>;
+                                       compatible = "atmel,sama5d4-clk-h32mx";
+                                       clocks = <&mck>;
+                               };
+
+                               usb: usbck {
+                                       compatible = "atmel,at91sam9x5-clk-usb";
+                                       #clock-cells = <0>;
+                                       clocks = <&plladiv>, <&utmi>;
+                               };
+
+                               prog: progck {
+                                       compatible = "atmel,at91sam9x5-clk-programmable";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       interrupt-parent = <&pmc>;
+                                       clocks = <&clk32k>, <&main>, <&plladiv>, <&utmi>, <&mck>;
+
+                                       prog0: prog0 {
+                                               #clock-cells = <0>;
+                                               reg = <0>;
+                                               interrupts = <AT91_PMC_PCKRDY(0)>;
+                                       };
+
+                                       prog1: prog1 {
+                                               #clock-cells = <0>;
+                                               reg = <1>;
+                                               interrupts = <AT91_PMC_PCKRDY(1)>;
+                                       };
+
+                                       prog2: prog2 {
+                                               #clock-cells = <0>;
+                                               reg = <2>;
+                                               interrupts = <AT91_PMC_PCKRDY(2)>;
+                                       };
+                               };
+
+                               systemck {
+                                       compatible = "atmel,at91rm9200-clk-system";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       ddrck: ddrck {
+                                               #clock-cells = <0>;
+                                               reg = <2>;
+                                               clocks = <&mck>;
+                                       };
+
+                                       lcdck: lcdck {
+                                               #clock-cells = <0>;
+                                               reg = <3>;
+                                               clocks = <&mck>;
+                                       };
+
+                                       uhpck: uhpck {
+                                               #clock-cells = <0>;
+                                               reg = <6>;
+                                               clocks = <&usb>;
+                                       };
+
+                                       udpck: udpck {
+                                               #clock-cells = <0>;
+                                               reg = <7>;
+                                               clocks = <&usb>;
+                                       };
+
+                                       pck0: pck0 {
+                                               #clock-cells = <0>;
+                                               reg = <8>;
+                                               clocks = <&prog0>;
+                                       };
+
+                                       pck1: pck1 {
+                                               #clock-cells = <0>;
+                                               reg = <9>;
+                                               clocks = <&prog1>;
+                                       };
+
+                                       pck2: pck2 {
+                                               #clock-cells = <0>;
+                                               reg = <10>;
+                                               clocks = <&prog2>;
+                                       };
+
+                                       iscck: iscck {
+                                               #clock-cells = <0>;
+                                               reg = <18>;
+                                               clocks = <&mck>;
+                                       };
+                               };
+
+                               periph32ck {
+                                       compatible = "atmel,at91sam9x5-clk-peripheral";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       clocks = <&h32ck>;
+
+                                       macb0_clk: macb0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <5>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       tdes_clk: tdes_clk {
+                                               #clock-cells = <0>;
+                                               reg = <11>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       matrix1_clk: matrix1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <14>;
+                                       };
+
+                                       hsmc_clk: hsmc_clk {
+                                               #clock-cells = <0>;
+                                               reg = <17>;
+                                       };
+
+                                       pioA_clk: pioA_clk {
+                                               #clock-cells = <0>;
+                                               reg = <18>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       flx0_clk: flx0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <19>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       flx1_clk: flx1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <20>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       flx2_clk: flx2_clk {
+                                               #clock-cells = <0>;
+                                               reg = <21>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       flx3_clk: flx3_clk {
+                                               #clock-cells = <0>;
+                                               reg = <22>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       flx4_clk: flx4_clk {
+                                               #clock-cells = <0>;
+                                               reg = <23>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       uart0_clk: uart0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <24>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       uart1_clk: uart1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <25>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       uart2_clk: uart2_clk {
+                                               #clock-cells = <0>;
+                                               reg = <26>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       uart3_clk: uart3_clk {
+                                               #clock-cells = <0>;
+                                               reg = <27>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       uart4_clk: uart4_clk {
+                                               #clock-cells = <0>;
+                                               reg = <28>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       twi0_clk: twi0_clk {
+                                               reg = <29>;
+                                               #clock-cells = <0>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       twi1_clk: twi1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <30>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       spi0_clk: spi0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <33>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       spi1_clk: spi1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <34>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       tcb0_clk: tcb0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <35>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       tcb1_clk: tcb1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <36>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       pwm_clk: pwm_clk {
+                                               #clock-cells = <0>;
+                                               reg = <38>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       adc_clk: adc_clk {
+                                               #clock-cells = <0>;
+                                               reg = <40>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       uhphs_clk: uhphs_clk {
+                                               #clock-cells = <0>;
+                                               reg = <41>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       udphs_clk: udphs_clk {
+                                               #clock-cells = <0>;
+                                               reg = <42>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       ssc0_clk: ssc0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <43>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       ssc1_clk: ssc1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <44>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       trng_clk: trng_clk {
+                                               #clock-cells = <0>;
+                                               reg = <47>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+
+                                       classd_clk: classd_clk {
+                                               #clock-cells = <0>;
+                                               reg = <59>;
+                                               atmel,clk-output-range = <0 83000000>;
+                                       };
+                               };
+
+                               periph64ck {
+                                       compatible = "atmel,at91sam9x5-clk-peripheral";
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       clocks = <&mck>;
+
+                                       dma0_clk: dma0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <6>;
+                                       };
+
+                                       dma1_clk: dma1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <7>;
+                                       };
+
+                                       aes_clk: aes_clk {
+                                               #clock-cells = <0>;
+                                               reg = <9>;
+                                       };
+
+                                       aesb_clk: aesb_clk {
+                                               #clock-cells = <0>;
+                                               reg = <10>;
+                                       };
+
+                                       sha_clk: sha_clk {
+                                               #clock-cells = <0>;
+                                               reg = <12>;
+                                       };
+
+                                       mpddr_clk: mpddr_clk {
+                                               #clock-cells = <0>;
+                                               reg = <13>;
+                                       };
+
+                                       matrix0_clk: matrix0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <15>;
+                                       };
+
+                                       sdmmc0_hclk: sdmmc0_hclk {
+                                               #clock-cells = <0>;
+                                               reg = <31>;
+                                       };
+
+                                       sdmmc1_hclk: sdmmc1_hclk {
+                                               #clock-cells = <0>;
+                                               reg = <32>;
+                                       };
+
+                                       lcdc_clk: lcdc_clk {
+                                               #clock-cells = <0>;
+                                               reg = <45>;
+                                       };
+
+                                       isc_clk: isc_clk {
+                                               #clock-cells = <0>;
+                                               reg = <46>;
+                                       };
+
+                                       qspi0_clk: qspi0_clk {
+                                               #clock-cells = <0>;
+                                               reg = <52>;
+                                       };
+
+                                       qspi1_clk: qspi1_clk {
+                                               #clock-cells = <0>;
+                                               reg = <53>;
+                                       };
+                               };
+                       };
+
+                       sha@f0028000 {
+                               compatible = "atmel,at91sam9g46-sha";
+                               reg = <0xf0028000 0x100>;
+                               interrupts = <12 IRQ_TYPE_LEVEL_HIGH 0>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(30))>;
+                               dma-names = "tx";
+                               clocks = <&sha_clk>;
+                               clock-names = "sha_clk";
+                               status = "disabled";
+                       };
+
+                       aes@f002c000 {
+                               compatible = "atmel,at91sam9g46-aes";
+                               reg = <0xf002c000 0x100>;
+                               interrupts = <9 IRQ_TYPE_LEVEL_HIGH 0>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(26))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(27))>;
+                               dma-names = "tx", "rx";
+                               clocks = <&aes_clk>;
+                               clock-names = "aes_clk";
+                               status = "disabled";
+                       };
+
+                       spi0: spi@f8000000 {
+                               compatible = "atmel,at91rm9200-spi";
+                               reg = <0xf8000000 0x100>;
+                               interrupts = <33 IRQ_TYPE_LEVEL_HIGH 7>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(6))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(7))>;
+                               dma-names = "tx", "rx";
+                               clocks = <&spi0_clk>;
+                               clock-names = "spi_clk";
+                               atmel,fifo-size = <16>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       macb0: ethernet@f8008000 {
+                               compatible = "atmel,sama5d2-gem";
+                               reg = <0xf8008000 0x1000>;
+                               interrupts = <5  IRQ_TYPE_LEVEL_HIGH 3          /* Queue 0 */
+                                             66 IRQ_TYPE_LEVEL_HIGH 3          /* Queue 1 */
+                                             67 IRQ_TYPE_LEVEL_HIGH 3>;        /* Queue 2 */
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&macb0_clk>, <&macb0_clk>;
+                               clock-names = "hclk", "pclk";
+                               status = "disabled";
+                       };
+
+                       tcb0: timer@f800c000 {
+                               compatible = "atmel,at91sam9x5-tcb";
+                               reg = <0xf800c000 0x100>;
+                               interrupts = <35 IRQ_TYPE_LEVEL_HIGH 0>;
+                               clocks = <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
+                       };
+
+                       tcb1: timer@f8010000 {
+                               compatible = "atmel,at91sam9x5-tcb";
+                               reg = <0xf8010000 0x100>;
+                               interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
+                               clocks = <&tcb1_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
+                       };
+
+                       uart0: serial@f801c000 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0xf801c000 0x100>;
+                               interrupts = <24 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&uart0_clk>;
+                               clock-names = "usart";
+                               status = "disabled";
+                       };
+
+                       uart1: serial@f8020000 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0xf8020000 0x100>;
+                               interrupts = <25 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&uart1_clk>;
+                               clock-names = "usart";
+                               status = "disabled";
+                       };
+
+                       uart2: serial@f8024000 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0xf8024000 0x100>;
+                               interrupts = <26 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&uart2_clk>;
+                               clock-names = "usart";
+                               status = "disabled";
+                       };
+
+                       i2c0: i2c@f8028000 {
+                               compatible = "atmel,sama5d2-i2c";
+                               reg = <0xf8028000 0x100>;
+                               interrupts = <29 IRQ_TYPE_LEVEL_HIGH 7>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(0))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(1))>;
+                               dma-names = "tx", "rx";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&twi0_clk>;
+                               status = "disabled";
+                       };
+
+                       pit: timer@f8048030 {
+                               compatible = "atmel,at91sam9260-pit";
+                               reg = <0xf8048030 0x10>;
+                               interrupts = <3 IRQ_TYPE_LEVEL_HIGH 5>;
+                               clocks = <&h32ck>;
+                       };
+
+                       sckc@f8048050 {
+                               compatible = "atmel,at91sam9x5-sckc";
+                               reg = <0xf8048050 0x4>;
+
+                               slow_rc_osc: slow_rc_osc {
+                                       compatible = "atmel,at91sam9x5-clk-slow-rc-osc";
+                                       #clock-cells = <0>;
+                                       clock-frequency = <32768>;
+                                       clock-accuracy = <250000000>;
+                                       atmel,startup-time-usec = <75>;
+                               };
+
+                               slow_osc: slow_osc {
+                                       compatible = "atmel,at91sam9x5-clk-slow-osc";
+                                       #clock-cells = <0>;
+                                       clocks = <&slow_xtal>;
+                                       atmel,startup-time-usec = <1200000>;
+                               };
+
+                               clk32k: slowck {
+                                       compatible = "atmel,at91sam9x5-clk-slow";
+                                       #clock-cells = <0>;
+                                       clocks = <&slow_rc_osc &slow_osc>;
+                               };
+                       };
+
+                       rtc@f80480b0 {
+                               compatible = "atmel,at91rm9200-rtc";
+                               reg = <0xf80480b0 0x30>;
+                               interrupts = <74 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
+                       };
+
+                       spi1: spi@fc000000 {
+                               compatible = "atmel,at91rm9200-spi";
+                               reg = <0xfc000000 0x100>;
+                               interrupts = <34 IRQ_TYPE_LEVEL_HIGH 7>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(8))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(9))>;
+                               dma-names = "tx", "rx";
+                               clocks = <&spi1_clk>;
+                               clock-names = "spi_clk";
+                               atmel,fifo-size = <16>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       uart3: serial@fc008000 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0xfc008000 0x100>;
+                               interrupts = <27 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&uart3_clk>;
+                               clock-names = "usart";
+                               status = "disabled";
+                       };
+
+                       uart4: serial@fc00c000 {
+                               compatible = "atmel,at91sam9260-usart";
+                               reg = <0xfc00c000 0x100>;
+                               interrupts = <28 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&uart4_clk>;
+                               clock-names = "usart";
+                               status = "disabled";
+                       };
+
+                       aic: interrupt-controller@fc020000 {
+                               #interrupt-cells = <3>;
+                               compatible = "atmel,sama5d2-aic";
+                               interrupt-controller;
+                               reg = <0xfc020000 0x200>;
+                               atmel,external-irqs = <49>;
+                       };
+
+                       i2c1: i2c@fc028000 {
+                               compatible = "atmel,sama5d2-i2c";
+                               reg = <0xfc028000 0x100>;
+                               interrupts = <30 IRQ_TYPE_LEVEL_HIGH 7>;
+                               dmas = <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(2))>,
+                                      <&dma0
+                                       (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
+                                        AT91_XDMAC_DT_PERID(3))>;
+                               dma-names = "tx", "rx";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&twi1_clk>;
+                               status = "disabled";
+                       };
+               };
+       };
+};
index 9e2444b..7fa2765 100644 (file)
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf0010000 0x100>;
                                interrupts = <26 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb0_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        i2c0: i2c@f0014000 {
                        };
 
                        rstc@fffffe00 {
-                               compatible = "atmel,at91sam9g45-rstc";
+                               compatible = "atmel,sama5d3-rstc", "atmel,at91sam9g45-rstc";
                                reg = <0xfffffe00 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        shutdown-controller@fffffe10 {
                                compatible = "atmel,at91sam9x5-shdwc";
                                reg = <0xfffffe10 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fffffe30 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfffffe40 0x10>;
                                interrupts = <4 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                                atmel,watchdog-type = "hardware";
                                atmel,reset-type = "all";
                                atmel,dbg-halt;
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xfffffeb0 0x30>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                        };
                };
 
index f7fa58f..801f974 100644 (file)
@@ -31,8 +31,8 @@
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf8014000 0x100>;
                                interrupts = <27 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb1_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb1_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
                };
        };
index 3ee22ee..8d1de29 100644 (file)
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xf801c000 0x100>;
                                interrupts = <40 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb0_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb0_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        macb0: ethernet@f8020000 {
                                compatible = "atmel,at91sam9x5-tcb";
                                reg = <0xfc020000 0x100>;
                                interrupts = <41 IRQ_TYPE_LEVEL_HIGH 0>;
-                               clocks = <&tcb1_clk>;
-                               clock-names = "t0_clk";
+                               clocks = <&tcb1_clk>, <&clk32k>;
+                               clock-names = "t0_clk", "slow_clk";
                        };
 
                        adc0: adc@fc034000 {
                                compatible = "atmel,at91sam9x5-adc";
                                reg = <0xfc034000 0x100>;
                                interrupts = <44 IRQ_TYPE_LEVEL_HIGH 5>;
-                               pinctrl-names = "default";
-                               pinctrl-0 = <
-                                       /* external trigger is conflict with USBA_VBUS */
-                                       &pinctrl_adc0_ad0
-                                       &pinctrl_adc0_ad1
-                                       &pinctrl_adc0_ad2
-                                       &pinctrl_adc0_ad3
-                                       &pinctrl_adc0_ad4
-                                       >;
                                clocks = <&adc_clk>,
                                         <&adc_op_clk>;
                                clock-names = "adc_clk", "adc_op_clk";
                                atmel,adc-channels-used = <0x01f>;
                                atmel,adc-startup-time = <40>;
-                               atmel,adc-use-external;
+                               atmel,adc-use-external-triggers;
                                atmel,adc-vref = <3000>;
                                atmel,adc-res = <8 10>;
                                atmel,adc-sample-hold-time = <11>;
                        };
 
                        rstc@fc068600 {
-                               compatible = "atmel,at91sam9g45-rstc";
+                               compatible = "atmel,sama5d3-rstc", "atmel,at91sam9g45-rstc";
                                reg = <0xfc068600 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        shdwc@fc068610 {
                                compatible = "atmel,at91sam9x5-shdwc";
                                reg = <0xfc068610 0x10>;
+                               clocks = <&clk32k>;
                        };
 
                        pit: timer@fc068630 {
                        watchdog@fc068640 {
                                compatible = "atmel,at91sam9260-wdt";
                                reg = <0xfc068640 0x10>;
+                               clocks = <&clk32k>;
                                status = "disabled";
                        };
 
                                compatible = "atmel,at91rm9200-rtc";
                                reg = <0xfc0686b0 0x30>;
                                interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
+                               clocks = <&clk32k>;
                        };
 
                        dbgu: serial@fc069000 {
index 11e17c5..ff7c8f2 100644 (file)
                      <0xe605801c 0x1c>;
                gpio-controller;
                #gpio-cells = <2>;
+               gpio-ranges =
+                       <&pfc 0 0 119>, <&pfc 128 128 37>, <&pfc 192 192 91>,
+                       <&pfc 288 288 22>;
                interrupts-extended =
                        <&irqpin0 0 0>, <&irqpin0 1 0>, <&irqpin0 2 0>, <&irqpin0 3 0>,
                        <&irqpin0 4 0>, <&irqpin0 5 0>, <&irqpin0 6 0>, <&irqpin0 7 0>,
index 80f924d..314e589 100644 (file)
                                                dbg_base_clk: dbg_base_clk {
                                                        #clock-cells = <0>;
                                                        compatible = "altr,socfpga-perip-clk";
-                                                       clocks = <&main_pll>;
+                                                       clocks = <&main_pll>, <&osc1>;
                                                        div-reg = <0xe8 0 9>;
                                                        reg = <0x50>;
                                                };
                                        l3_sp_clk: l3_sp_clk {
                                                #clock-cells = <0>;
                                                compatible = "altr,socfpga-gate-clk";
-                                               clocks = <&mainclk>;
+                                               clocks = <&l3_mp_clk>;
                                                div-reg = <0x64 2 2>;
                                        };
 
                                        dbg_clk: dbg_clk {
                                                #clock-cells = <0>;
                                                compatible = "altr,socfpga-gate-clk";
-                                               clocks = <&dbg_base_clk>;
+                                               clocks = <&dbg_at_clk>;
                                                div-reg = <0x68 2 2>;
                                                clk-gate = <0x60 5>;
                                        };
                                                clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
                                                clk-gate = <0xa0 11>;
                                        };
+
+                                       ddr_dqs_clk_gate: ddr_dqs_clk_gate {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&ddr_dqs_clk>;
+                                               clk-gate = <0xd8 0>;
+                                       };
+
+                                       ddr_2x_dqs_clk_gate: ddr_2x_dqs_clk_gate {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&ddr_2x_dqs_clk>;
+                                               clk-gate = <0xd8 1>;
+                                       };
+
+                                       ddr_dq_clk_gate: ddr_dq_clk_gate {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&ddr_dq_clk>;
+                                               clk-gate = <0xd8 2>;
+                                       };
+
+                                       h2f_user2_clk: h2f_user2_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&h2f_usr2_clk>;
+                                               clk-gate = <0xd8 3>;
+                                       };
+
                                };
-                       };
+               };
 
                gmac0: ethernet@ff700000 {
                        compatible = "altr,socfpga-stmmac", "snps,dwmac-3.70a", "snps,dwmac";
                        #size-cells = <0>;
                        compatible = "snps,dw-apb-gpio";
                        reg = <0xff708000 0x1000>;
-                       clocks = <&per_base_clk>;
+                       clocks = <&l4_mp_clk>;
                        status = "disabled";
 
                        porta: gpio-controller@0 {
                        #size-cells = <0>;
                        compatible = "snps,dw-apb-gpio";
                        reg = <0xff709000 0x1000>;
-                       clocks = <&per_base_clk>;
+                       clocks = <&l4_mp_clk>;
                        status = "disabled";
 
                        portb: gpio-controller@0 {
                        #size-cells = <0>;
                        compatible = "snps,dw-apb-gpio";
                        reg = <0xff70a000 0x1000>;
-                       clocks = <&per_base_clk>;
+                       clocks = <&l4_mp_clk>;
                        status = "disabled";
 
                        portc: gpio-controller@0 {
                        cache-level = <2>;
                        arm,tag-latency = <1 1 1>;
                        arm,data-latency = <2 1 1>;
+                       prefetch-data = <1>;
+                       prefetch-instr = <1>;
                };
 
                mmc: dwmmc0@ff704000 {
                        #reset-cells = <1>;
                        compatible = "altr,rst-mgr";
                        reg = <0xffd05000 0x1000>;
+                       altr,modrst-offset = <0x10>;
                };
 
                usbphy0: usbphy@0 {
index 4779b07..2340fcb 100644 (file)
 
 #include "skeleton.dtsi"
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/reset/altr,rst-mgr-a10.h>
 
 / {
        #address-cells = <1>;
        #size-cells = <1>;
 
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                        rx-fifo-depth = <16384>;
                        clocks = <&l4_mp_clk>;
                        clock-names = "stmmaceth";
+                       resets = <&rst EMAC0_RESET>;
+                       reset-names = "stmmaceth";
                        status = "disabled";
                };
 
                        rx-fifo-depth = <16384>;
                        clocks = <&l4_mp_clk>;
                        clock-names = "stmmaceth";
+                       resets = <&rst EMAC1_RESET>;
+                       reset-names = "stmmaceth";
                        status = "disabled";
                };
 
                        #reset-cells = <1>;
                        compatible = "altr,rst-mgr";
                        reg = <0xffd05000 0x100>;
+                       altr,modrst-offset = <0x20>;
                };
 
                scu: snoop-control-unit@ffffc000 {
index 94a0709..99aa9a1 100644 (file)
@@ -21,7 +21,8 @@
        compatible = "altr,socfpga-arria10", "altr,socfpga";
 
        chosen {
-               bootargs = "console=ttyS0,115200 rootwait";
+               bootargs = "earlyprintk";
+               stdout-path = "serial1:115200n8";
        };
 
        memory {
index ccaf417..a75a666 100644 (file)
@@ -22,7 +22,8 @@
        compatible = "altr,socfpga-arria5", "altr,socfpga";
 
        chosen {
-               bootargs = "console=ttyS0,115200";
+               bootargs = "earlyprintk";
+               stdout-path = "serial0:115200n8";
        };
 
        memory {
diff --git a/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts b/arch/arm/boot/dts/socfpga_cyclone5_de0_sockit.dts
new file mode 100644 (file)
index 0000000..555e9ca
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright Altera Corporation (C) 2015. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "Terasic DE-0(Atlas)";
+       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "earlyprintk";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+
+       aliases {
+               ethernet0 = &gmac1;
+       };
+
+       regulator_3_3v: 3-3-v-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               hps0 {
+                       label = "hps_led0";
+                       gpios = <&portb 24 0>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+};
+
+&gmac1 {
+       status = "okay";
+       phy-mode = "rgmii";
+
+       txd0-skew-ps = <0>; /* -420ps */
+       txd1-skew-ps = <0>; /* -420ps */
+       txd2-skew-ps = <0>; /* -420ps */
+       txd3-skew-ps = <0>; /* -420ps */
+       rxd0-skew-ps = <420>; /* 0ps */
+       rxd1-skew-ps = <420>; /* 0ps */
+       rxd2-skew-ps = <420>; /* 0ps */
+       rxd3-skew-ps = <420>; /* 0ps */
+       txen-skew-ps = <0>; /* -420ps */
+       txc-skew-ps = <1860>; /* 960ps */
+       rxdv-skew-ps = <420>; /* 0ps */
+       rxc-skew-ps = <1680>; /* 780ps */
+
+       max-frame-size = <3800>;
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       speed-mode = <0>;
+
+       adxl345: adxl345@0 {
+               compatible = "adi,adxl345";
+               reg = <0x53>;
+
+               interrupt-parent = <&portc>;
+               interrupts = <3 2>;
+       };
+};
+
+&mmc0 {
+       vmmc-supply = <&regulator_3_3v>;
+       vqmmc-supply = <&regulator_3_3v>;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index 258865d..d4d0a28 100644 (file)
@@ -22,7 +22,8 @@
        compatible = "altr,socfpga-cyclone5", "altr,socfpga";
 
        chosen {
-               bootargs = "console=ttyS0,115200";
+               bootargs = "earlyprintk";
+               stdout-path = "serial0:115200n8";
        };
 
        memory {
index 5e17fd1..48bf651 100644 (file)
@@ -22,7 +22,8 @@
        compatible = "altr,socfpga-cyclone5", "altr,socfpga";
 
        chosen {
-               bootargs = "console=ttyS0,115200";
+               bootargs = "earlyprintk";
+               stdout-path = "serial0:115200n8";
        };
 
        memory {
index e65744f..ad45f5e 100644 (file)
 
                        clk_s_c0_pll0: clk-s-c0-pll0 {
                                #clock-cells = <1>;
-                               compatible = "st,stih407-plls-c32-c0_0", "st,clkgen-plls-c32";
+                               compatible = "st,plls-c32-cx_0", "st,clkgen-plls-c32";
 
                                clocks = <&clk_sysin>;
 
 
                        clk_s_c0_pll1: clk-s-c0-pll1 {
                                #clock-cells = <1>;
-                               compatible = "st,stih407-plls-c32-c0_1", "st,clkgen-plls-c32";
+                               compatible = "st,plls-c32-cx_1", "st,clkgen-plls-c32";
 
                                clocks = <&clk_sysin>;
 
index eab3477..ae05277 100644 (file)
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <0>;
+                       /* u-boot puts hpen in SBC dmem at 0xa4 offset */
+                       cpu-release-addr = <0x94100A4>;
                };
                cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <1>;
+                       /* u-boot puts hpen in SBC dmem at 0xa4 offset */
+                       cpu-release-addr = <0x94100A4>;
                };
        };
 
                interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
        };
 
+       pwm_regulator: pwm-regulator {
+               compatible = "pwm-regulator";
+               pwms = <&pwm1 3 8448>;
+               regulator-name = "CPU_1V0_AVS";
+               regulator-min-microvolt = <784000>;
+               regulator-max-microvolt = <1299000>;
+               regulator-always-on;
+               max-duty-cycle = <255>;
+               status = "okay";
+       };
+
        soc {
                #address-cells = <1>;
                #size-cells = <1>;
                        status = "disabled";
                };
 
+
                st_dwc3: dwc3@8f94000 {
                        compatible      = "st,stih407-dwc3";
                        reg             = <0x08f94000 0x1000>, <0x110 0x4>;
                                                  <&phy_port2 PHY_TYPE_USB3>;
                        };
                };
+
+               /* COMMS PWM Module */
+               pwm0: pwm@9810000 {
+                       compatible      = "st,sti-pwm";
+                       status          = "okay";
+                       #pwm-cells      = <2>;
+                       reg             = <0x9810000 0x68>;
+                       pinctrl-names   = "default";
+                       pinctrl-0       = <&pinctrl_pwm0_chan0_default>;
+                       clock-names     = "pwm";
+                       clocks          = <&clk_sysin>;
+                       st,pwm-num-chan = <1>;
+               };
+
+               /* SBC PWM Module */
+               pwm1: pwm@9510000 {
+                       compatible      = "st,sti-pwm";
+                       status          = "okay";
+                       #pwm-cells      = <2>;
+                       reg             = <0x9510000 0x68>;
+                       pinctrl-names   = "default";
+                       pinctrl-0       = <&pinctrl_pwm1_chan0_default
+                                       &pinctrl_pwm1_chan1_default
+                                       &pinctrl_pwm1_chan2_default
+                                       &pinctrl_pwm1_chan3_default>;
+                       clock-names     = "pwm";
+                       clocks          = <&clk_sysin>;
+                       st,pwm-num-chan = <4>;
+               };
        };
 };
index 0a754f2..1683deb 100644 (file)
                                        };
                                };
                        };
+
+                       tsin0 {
+                               pinctrl_tsin0_parallel: tsin0_parallel {
+                                       st,pins {
+                                               DATA7 = <&pio10 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA6 = <&pio10 5 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA5 = <&pio10 6 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA4 = <&pio10 7 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA3 = <&pio11 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA2 = <&pio11 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA1 = <&pio11 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA0 = <&pio11 3 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio10 3 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio10 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio10 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio10 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                               pinctrl_tsin0_serial: tsin0_serial {
+                                       st,pins {
+                                               DATA7 = <&pio10 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio10 3 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio10 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio10 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio10 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsin1 {
+                               pinctrl_tsin1_parallel: tsin1_parallel {
+                                       st,pins {
+                                               DATA7 = <&pio12 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA6 = <&pio12 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA5 = <&pio12 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA4 = <&pio12 3 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA3 = <&pio12 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA2 = <&pio12 5 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA1 = <&pio12 6 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA0 = <&pio12 7 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio11 7 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio11 5 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio11 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio11 6 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                               pinctrl_tsin1_serial: tsin1_serial {
+                                       st,pins {
+                                               DATA7 = <&pio12 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio11 7 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio11 5 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio11 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio11 6 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsin2 {
+                               pinctrl_tsin2_parallel: tsin2_parallel {
+                                       st,pins {
+                                               DATA7 = <&pio13 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA6 = <&pio13 5 ALT2 IN SE_NICLK_IO 0 CLK_B>;
+                                               DATA5 = <&pio13 6 ALT2 IN SE_NICLK_IO 0 CLK_B>;
+                                               DATA4 = <&pio13 7 ALT2 IN SE_NICLK_IO 0 CLK_B>;
+                                               DATA3 = <&pio14 0 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA2 = <&pio14 1 ALT2 IN SE_NICLK_IO 0 CLK_B>;
+                                               DATA1 = <&pio14 2 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA0 = <&pio14 3 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio13 3 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio13 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio13 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio13 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                               pinctrl_tsin2_serial: tsin2_serial {
+                                       st,pins {
+                                               DATA7 = <&pio13 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio13 3 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio13 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio13 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio13 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsin3 {
+                               pinctrl_tsin3_serial: tsin3_serial {
+                                       st,pins {
+                                               DATA7 = <&pio14 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio14 0 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio13 6 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio13 5 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio13 7 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsin4 {
+                               pinctrl_tsin4_serial_alt3: tsin4_serial_alt3 {
+                                       st,pins {
+                                               DATA7 = <&pio14 6 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio14 5 ALT3 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio14 3 ALT3 IN SE_NICLK_IO 0 CLK_B>;
+                                               ERROR = <&pio14 2 ALT3 IN SE_NICLK_IO 0 CLK_B>;
+                                               PKCLK = <&pio14 4 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsin5 {
+                               pinctrl_tsin5_serial_alt1: tsin5_serial_alt1 {
+                                       st,pins {
+                                               DATA7 = <&pio18 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio18 3 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio18 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio18 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio18 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                               pinctrl_tsin5_serial_alt2: tsin5_serial_alt2 {
+                                       st,pins {
+                                               DATA7 = <&pio19 4 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio19 3 ALT2 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio19 1 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio19 0 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio19 2 ALT2 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsout0 {
+                               pinctrl_tsout0_parallel: tsout0_parallel {
+                                       st,pins {
+                                               DATA7 = <&pio12 0 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA6 = <&pio12 1 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA5 = <&pio12 2 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA4 = <&pio12 3 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA3 = <&pio12 4 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA2 = <&pio12 5 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA1 = <&pio12 6 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               DATA0 = <&pio12 7 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio11 7 ALT3 OUT NICLK 0 CLK_A>;
+                                               VALID = <&pio11 5 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio11 4 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio11 6 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                               pinctrl_tsout0_serial: tsout0_serial {
+                                       st,pins {
+                                               DATA7 = <&pio12 0 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio11 7 ALT3 OUT NICLK 0 CLK_A>;
+                                               VALID = <&pio11 5 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio11 4 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio11 6 ALT3 OUT SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       tsout1 {
+                               pinctrl_tsout1_serial: tsout1_serial {
+                                       st,pins {
+                                               DATA7 = <&pio19 4 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio19 3 ALT1 OUT NICLK 0 CLK_A>;
+                                               VALID = <&pio19 1 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio19 0 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio19 2 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
+                       mtsin0 {
+                               pinctrl_mtsin0_parallel: mtsin0_parallel {
+                                       st,pins {
+                                               DATA7 = <&pio10 4 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA6 = <&pio10 5 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA5 = <&pio10 6 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA4 = <&pio10 7 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA3 = <&pio11 0 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA2 = <&pio11 1 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA1 = <&pio11 2 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               DATA0 = <&pio11 3 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio10 3 ALT3 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio10 1 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio10 0 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio10 2 ALT3 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
                };
 
                pin-controller-front1 {
                        interrupts-names = "irqmux";
                        ranges = <0 0x09210000 0x10000>;
 
+                       tsin4 {
+                               pinctrl_tsin4_serial_alt1: tsin4_serial_alt1 {
+                                       st,pins {
+                                               DATA7 = <&pio20 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               CLKIN = <&pio20 3 ALT1 IN CLKNOTDATA 0 CLK_A>;
+                                               VALID = <&pio20 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               ERROR = <&pio20 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                               PKCLK = <&pio20 2 ALT1 IN SE_NICLK_IO 0 CLK_A>;
+                                       };
+                               };
+                       };
+
                        pio20: pio@09210000 {
                                gpio-controller;
                                #gpio-cells = <1>;
index 2c560fc..3efa3b2 100644 (file)
                                };
                        };
                };
-
-               /* COMMS PWM Module */
-               pwm0: pwm@9810000 {
-                       compatible      = "st,sti-pwm";
-                       status          = "disabled";
-                       #pwm-cells      = <2>;
-                       reg             = <0x9810000 0x68>;
-                       pinctrl-names   = "default";
-                       pinctrl-0       = <&pinctrl_pwm0_chan0_default>;
-                       clock-names     = "pwm";
-                       clocks          = <&clk_sysin>;
-               };
-
-               /* SBC PWM Module */
-               pwm1: pwm@9510000 {
-                       compatible      = "st,sti-pwm";
-                       status          = "disabled";
-                       #pwm-cells      = <2>;
-                       reg             = <0x9510000 0x68>;
-                       pinctrl-names   = "default";
-                       pinctrl-0       = <&pinctrl_pwm1_chan0_default
-                                       &pinctrl_pwm1_chan1_default
-                                       &pinctrl_pwm1_chan2_default
-                                       &pinctrl_pwm1_chan3_default>;
-                       clock-names     = "pwm";
-                       clocks          = <&clk_sysin>;
-                       st,pwm-num-chan = <4>;
-               };
        };
 };
index 6b5803a..d1f2aca 100644 (file)
 
                        clk_s_c0_pll0: clk-s-c0-pll0 {
                                #clock-cells = <1>;
-                               compatible = "st,stih407-plls-c32-c0_0", "st,clkgen-plls-c32";
+                               compatible = "st,plls-c32-cx_0", "st,clkgen-plls-c32";
 
                                clocks = <&clk_sysin>;
 
 
                        clk_s_c0_pll1: clk-s-c0-pll1 {
                                #clock-cells = <1>;
-                               compatible = "st,stih407-plls-c32-c0_1", "st,clkgen-plls-c32";
+                               compatible = "st,plls-c32-cx_1", "st,clkgen-plls-c32";
 
                                clocks = <&clk_sysin>;
 
index 208b5e8..6f40bc9 100644 (file)
 #include "stih407-family.dtsi"
 #include "stih410-pinctrl.dtsi"
 / {
+       aliases {
+               bdisp0 = &bdisp0;
+       };
+
        soc {
                usb2_picophy1: phy2 {
                        compatible = "st,stih407-usb2-phy";
                                };
                        };
                };
+
+               bdisp0:bdisp@9f10000 {
+                       compatible = "st,stih407-bdisp";
+                       reg = <0x9f10000 0x1000>;
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_NONE>;
+                       clock-names = "bdisp";
+                       clocks = <&clk_s_c0_flexgen CLK_IC_BDISP_0>;
+               };
        };
 };
index 0ab23da..148e177 100644 (file)
 
                        clk_s_c0_pll0: clk-s-c0-pll0 {
                                #clock-cells = <1>;
-                               compatible = "st,stih407-plls-c32-c0_0", "st,clkgen-plls-c32";
+                               compatible = "st,plls-c32-cx_0", "st,clkgen-plls-c32";
 
                                clocks = <&clk_sysin>;
 
 
                        clk_s_c0_pll1: clk-s-c0-pll1 {
                                #clock-cells = <1>;
-                               compatible = "st,stih407-plls-c32-c0_1", "st,clkgen-plls-c32";
+                               compatible = "st,plls-c32-cx_1", "st,clkgen-plls-c32";
 
                                clocks = <&clk_sysin>;
 
index 354d90f..8160a75 100644 (file)
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <2>;
+                       /* u-boot puts hpen in SBC dmem at 0xa4 offset */
+                       cpu-release-addr = <0x94100A4>;
                };
                cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a9";
                        reg = <3>;
+                       /* u-boot puts hpen in SBC dmem at 0xa4 offset */
+                       cpu-release-addr = <0x94100A4>;
                };
        };
 
diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts
new file mode 100644 (file)
index 0000000..6964fc9
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2015 - Maxime Coquelin <mcoquelin.stm32@gmail.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this file; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "stm32f429.dtsi"
+
+/ {
+       model = "STMicroelectronics STM32429i-EVAL board";
+       compatible = "st,stm32429i-eval", "st,stm32f429";
+
+       chosen {
+               bootargs = "root=/dev/ram rdinit=/linuxrc";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory {
+               reg = <0xc0000000 0x2000000>;
+       };
+
+       aliases {
+               serial0 = &usart1;
+       };
+};
+
+&clk_hse {
+       clock-frequency = <25000000>;
+};
+
+&usart1 {
+       status = "okay";
+};
index 6b9aa59..f0b731d 100644 (file)
@@ -53,8 +53,8 @@
        compatible = "st,stm32f429i-disco", "st,stm32f429";
 
        chosen {
-               bootargs = "console=ttyS0,115200 root=/dev/ram rdinit=/linuxrc";
-               linux,stdout-path = &usart1;
+               bootargs = "root=/dev/ram rdinit=/linuxrc";
+               stdout-path = "serial0:115200n8";
        };
 
        memory {
        };
 };
 
+&clk_hse {
+       clock-frequency = <8000000>;
+};
+
 &usart1 {
        status = "okay";
 };
index aa73b4f..d78a481 100644 (file)
 
 / {
        clocks {
-               clk_sysclk: clk-sysclk {
+               clk_hse: clk-hse {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
-                       clock-frequency = <180000000>;
-               };
-
-               clk_hclk: clk-hclk {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <180000000>;
-               };
-
-               clk_pclk1: clk-pclk1 {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <45000000>;
-               };
-
-               clk_pclk2: clk-pclk2 {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <90000000>;
-               };
-
-               clk_pmtr1: clk-pmtr1 {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <90000000>;
-               };
-
-               clk_pmtr2: clk-pmtr2 {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <180000000>;
-               };
-
-               clk_systick: clk-systick {
-                       compatible = "fixed-factor-clock";
-                       clocks = <&clk_hclk>;
-                       #clock-cells = <0>;
-                       clock-div = <8>;
-                       clock-mult = <1>;
+                       clock-frequency = <0>;
                };
        };
 
@@ -99,7 +61,7 @@
                        compatible = "st,stm32-timer";
                        reg = <0x40000000 0x400>;
                        interrupts = <28>;
-                       clocks = <&clk_pmtr1>;
+                       clocks = <&rcc 0 128>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-timer";
                        reg = <0x40000400 0x400>;
                        interrupts = <29>;
-                       clocks = <&clk_pmtr1>;
+                       clocks = <&rcc 0 129>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-timer";
                        reg = <0x40000800 0x400>;
                        interrupts = <30>;
-                       clocks = <&clk_pmtr1>;
+                       clocks = <&rcc 0 130>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-timer";
                        reg = <0x40000c00 0x400>;
                        interrupts = <50>;
-                       clocks = <&clk_pmtr1>;
+                       clocks = <&rcc 0 131>;
                };
 
                timer6: timer@40001000 {
                        compatible = "st,stm32-timer";
                        reg = <0x40001000 0x400>;
                        interrupts = <54>;
-                       clocks = <&clk_pmtr1>;
+                       clocks = <&rcc 0 132>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-timer";
                        reg = <0x40001400 0x400>;
                        interrupts = <55>;
-                       clocks = <&clk_pmtr1>;
+                       clocks = <&rcc 0 133>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-usart", "st,stm32-uart";
                        reg = <0x40004400 0x400>;
                        interrupts = <38>;
-                       clocks = <&clk_pclk1>;
+                       clocks =  <&rcc 0 145>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-usart", "st,stm32-uart";
                        reg = <0x40004800 0x400>;
                        interrupts = <39>;
-                       clocks = <&clk_pclk1>;
+                       clocks = <&rcc 0 146>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-uart";
                        reg = <0x40004c00 0x400>;
                        interrupts = <52>;
-                       clocks = <&clk_pclk1>;
+                       clocks = <&rcc 0 147>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-uart";
                        reg = <0x40005000 0x400>;
                        interrupts = <53>;
-                       clocks = <&clk_pclk1>;
+                       clocks = <&rcc 0 148>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-usart", "st,stm32-uart";
                        reg = <0x40007800 0x400>;
                        interrupts = <82>;
-                       clocks = <&clk_pclk1>;
+                       clocks = <&rcc 0 158>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-usart", "st,stm32-uart";
                        reg = <0x40007c00 0x400>;
                        interrupts = <83>;
-                       clocks = <&clk_pclk1>;
+                       clocks = <&rcc 0 159>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-usart", "st,stm32-uart";
                        reg = <0x40011000 0x400>;
                        interrupts = <37>;
-                       clocks = <&clk_pclk2>;
+                       clocks = <&rcc 0 164>;
                        status = "disabled";
                };
 
                        compatible = "st,stm32-usart", "st,stm32-uart";
                        reg = <0x40011400 0x400>;
                        interrupts = <71>;
-                       clocks = <&clk_pclk2>;
+                       clocks = <&rcc 0 165>;
                        status = "disabled";
                };
+
+               rcc: rcc@40023810 {
+                       #clock-cells = <2>;
+                       compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
+                       reg = <0x40023800 0x400>;
+                       clocks = <&clk_hse>;
+               };
        };
 };
 
 &systick {
-       clocks = <&clk_systick>;
+       clocks = <&rcc 1 0>;
        status = "okay";
 };
index 93d4356..f3cb297 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        usb2_vbus_pin_a: usb2_vbus_pin@0 {
                allwinner,pins = "PH12";
        };
 };
 
+&reg_usb0_vbus {
+       regulator-boot-on;
+       status = "okay";
+};
+
 &reg_usb1_vbus {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
 &usbphy {
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
index 5878a0b..1430568 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+};
+
+&reg_usb0_vbus {
+       status = "okay";
+};
+
 &reg_usb2_vbus {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
 };
index 9afb4e0..046a84d 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        led_pins_cubieboard: led_pins@0 {
                allwinner,pins = "PH20", "PH21";
                allwinner,drive = <SUN4I_PINCTRL_20_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
 };
 
 &reg_ahci_5v {
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
diff --git a/arch/arm/boot/dts/sun4i-a10-itead-iteaduino-plus.dts b/arch/arm/boot/dts/sun4i-a10-itead-iteaduino-plus.dts
new file mode 100644 (file)
index 0000000..985e155
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ * Copyright 2015 Josef Gajdusek <atx@atx.name>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun4i-a10.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "Iteaduino Plus A10";
+       compatible = "itead,iteaduino-plus-a10", "allwinner,sun4i-a10";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&ahci {
+       target-supply = <&reg_ahci_5v>;
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&emac {
+       pinctrl-names = "default";
+       pinctrl-0 = <&emac_pins_a>;
+       phy = <&phy1>;
+       status = "okay";
+};
+
+&emac_sram {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins_a>;
+       status = "okay";
+};
+
+&ir0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&ir0_rx_pins_a>;
+       status = "okay";
+};
+
+&mdio {
+       status = "okay";
+
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
+       cd-inverted;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&reg_ahci_5v {
+       status = "okay";
+};
+
+#include "axp209.dtsi"
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1450000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-int-dll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_usb1_vbus {
+       status = "okay";
+};
+
+&reg_usb2_vbus {
+       status = "okay";
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi0_pins_a>,
+                   <&spi0_cs0_pins_a>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+};
+
+&usbphy {
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       usb2_vbus-supply = <&reg_usb2_vbus>;
+       status = "okay";
+};
index ebe2a04..a7dd86d 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
+&reg_usb0_vbus {
+       regulator-boot-on;
+       status = "okay";
+};
+
 &reg_usb1_vbus {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
 &usbphy {
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
index b64aa4e..28e32ad 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        ahci_pwr_pin_olinuxinolime: ahci_pwr_pin@1 {
                allwinner,pins = "PC3";
                allwinner,drive = <SUN4I_PINCTRL_20_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
 };
 
 &reg_ahci_5v {
        status = "okay";
 };
 
+&reg_usb0_vbus {
+       status = "okay";
+};
+
 &reg_usb1_vbus {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio   = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply   = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
index adaa57b..1f3c51a 100644 (file)
                        #size-cells = <0>;
                };
 
+               usb_otg: usb@01c13000 {
+                       compatible = "allwinner,sun4i-a10-musb";
+                       reg = <0x01c13000 0x0400>;
+                       clocks = <&ahb_gates 0>;
+                       interrupts = <38>;
+                       interrupt-names = "mc";
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       extcon = <&usbphy 0>;
+                       allwinner,sram = <&otg_sram 1>;
+                       status = "disabled";
+               };
+
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun4i-a10-usb-phy";
                        clocks = <&apb0_gates 5>;
                        gpio-controller;
                        interrupt-controller;
-                       #interrupt-cells = <2>;
-                       #size-cells = <0>;
+                       #interrupt-cells = <3>;
                        #gpio-cells = <3>;
 
                        pwm0_pins_a: pwm0@0 {
index a7e19e4..5a422c1 100644 (file)
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0_pins_a>;
        status = "okay";
+
+       axp152: pmic@30 {
+               reg = <0x30>;
+               interrupts = <0>;
+       };
 };
 
+#include "axp152.dtsi"
+
 &i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c1_pins_a>;
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        mmc0_cd_pin_olinuxino_micro: mmc0_cd_pin@0 {
                allwinner,pins = "PG1";
                allwinner,drive = <SUN4I_PINCTRL_10_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PG12";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+};
+
+&reg_usb0_vbus {
+       gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
+       status = "okay";
 };
 
 &reg_usb1_vbus {
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usb0_vbus_pin_a {
+       allwinner,pins = "PG11";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>;
+       usb0_id_det-gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        status = "okay";
 };
-
index 990f9d6..3724b98 100644 (file)
@@ -45,6 +45,7 @@
 #include "sunxi-common-regulators.dtsi"
 
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/pinctrl/sun4i-a10.h>
 
 / {
        status = "okay";
 };
 
+&lradc {
+       vref-supply = <&reg_ldo2>;
+       status = "okay";
+
+       button@200 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@400 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <400000>;
+       };
+};
+
 &mmc0 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_h702>;
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        mmc0_cd_pin_h702: mmc0_cd_pin@0 {
                allwinner,pins = "PG0";
                allwinner,drive = <SUN4I_PINCTRL_10_MA>;
                allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PG2";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PG1";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
 };
 
 #include "axp209.dtsi"
        regulator-name = "vcc-wifi";
 };
 
+&reg_usb0_vbus {
+       pinctrl-0 = <&usb0_vbus_pin_a>;
+       gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
+       status = "okay";
+};
+
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_pins_b>;
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usb0_vbus_pin_a {
+       allwinner,pins = "PG12";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpios = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */
+       usb0_vbus_det-gpios = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_ldo3>;
        status = "okay";
 };
index 4232400..b3c234c 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        mmc0_cd_pin_olinuxino: mmc0_cd_pin@0 {
                allwinner,pins = "PG0";
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
 
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PG2";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PG1";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+
        usb1_vbus_pin_olinuxino: usb1_vbus_pin@0 {
                allwinner,pins = "PG11";
                allwinner,function = "gpio_out";
        };
 };
 
+&reg_usb0_vbus {
+       status = "okay";
+       gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
+};
+
 &reg_usb1_vbus {
        pinctrl-0 = <&usb1_vbus_pin_olinuxino>;
        gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>;
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usb0_vbus_pin_a {
+       allwinner,pins = "PG12";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */
+       usb0_vbus_det-gpio = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        status = "okay";
 };
index 514f159..eb793d5 100644 (file)
@@ -93,7 +93,7 @@
                compatible = "chipone,icn8318";
                reg = <0x40>;
                interrupt-parent = <&pio>;
-               interrupts = <9 IRQ_TYPE_EDGE_FALLING>; /* EINT9 (PG9) */
+               interrupts = <9 IRQ_TYPE_EDGE_FALLING>; /* EINT9 (PG9) */
                pinctrl-names = "default";
                pinctrl-0 = <&ts_wake_pin_p66>;
                wake-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */
        };
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        mmc0_cd_pin_p66: mmc0_cd_pin@0 {
                allwinner,pins = "PG0";
                allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
        };
 
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PG1";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PG2";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
        i2c_lcd_pins: i2c_lcd_pin@0 {
                allwinner,pins = "PG10", "PG12";
                allwinner,function = "gpio_out";
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */
+       usb0_vbus_det-gpio = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */
        usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_ldo3>;
        status = "okay";
index 427c0e7..78b993a 100644 (file)
                        #size-cells = <0>;
                };
 
+               usb_otg: usb@01c13000 {
+                       compatible = "allwinner,sun4i-a10-musb";
+                       reg = <0x01c13000 0x0400>;
+                       clocks = <&ahb_gates 0>;
+                       interrupts = <38>;
+                       interrupt-names = "mc";
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       extcon = <&usbphy 0>;
+                       allwinner,sram = <&otg_sram 1>;
+                       status = "disabled";
+               };
+
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun5i-a13-usb-phy";
                        clocks = <&apb0_gates 5>;
                        gpio-controller;
                        interrupt-controller;
-                       #interrupt-cells = <2>;
-                       #size-cells = <0>;
+                       #interrupt-cells = <3>;
                        #gpio-cells = <3>;
 
                        i2c0_pins_a: i2c0@0 {
index 4404f37..4dd70cc 100644 (file)
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
 &usbphy {
        usb1_vbus-supply = <&reg_usb1_vbus>;
        status = "okay";
index e4d3484..54bb83b 100644 (file)
                        #size-cells = <0>;
                };
 
+               usb_otg: usb@01c19000 {
+                       compatible = "allwinner,sun6i-a31-musb";
+                       reg = <0x01c19000 0x0400>;
+                       clocks = <&ahb1_gates 24>;
+                       resets = <&ahb1_rst 24>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mc";
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       extcon = <&usbphy 0>;
+                       status = "disabled";
+               };
+
                usbphy: phy@01c19400 {
                        compatible = "allwinner,sun6i-a31-usb-phy";
                        reg = <0x01c19400 0x10>,
                        clocks = <&apb1_gates 5>;
                        gpio-controller;
                        interrupt-controller;
-                       #interrupt-cells = <2>;
-                       #size-cells = <0>;
+                       #interrupt-cells = <3>;
                        #gpio-cells = <3>;
 
                        uart0_pins_a: uart0@0 {
index 1e2411a..5e8f8c4 100644 (file)
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
 &usbphy {
        status = "okay";
 };
index 4611e2f..e6b0192 100644 (file)
                };
        };
 
-       reg_vmmc3: vmmc3 {
-               compatible = "regulator-fixed";
+       mmc3_pwrseq: mmc3_pwrseq {
+               compatible = "mmc-pwrseq-simple";
                pinctrl-names = "default";
-               pinctrl-0 = <&vmmc3_pin_cubietruck>;
-               regulator-name = "vmmc3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               enable-active-high;
-               gpio = <&pio 7 9 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&mmc3_pwrseq_pin_cubietruck>;
+               reset-gpios = <&pio 7 9 GPIO_ACTIVE_LOW>; /* PH9 WIFI_EN */
        };
 };
 
 &mmc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc3_pins_a>;
-       vmmc-supply = <&reg_vmmc3>;
+       vmmc-supply = <&reg_vcc3v3>;
+       mmc-pwrseq = <&mmc3_pwrseq>;
        bus-width = <4>;
        non-removable;
        status = "okay";
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupt-parent = <&pio>;
-               interrupts = <10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */
+               interrupts = <10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */
                interrupt-names = "host-wake";
        };
 };
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
-       vmmc3_pin_cubietruck: vmmc3_pin@0 {
-               allwinner,pins = "PH9";
+       ahci_pwr_pin_cubietruck: ahci_pwr_pin@1 {
+               allwinner,pins = "PH12";
                allwinner,function = "gpio_out";
                allwinner,drive = <SUN4I_PINCTRL_10_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
 
-       ahci_pwr_pin_cubietruck: ahci_pwr_pin@1 {
-               allwinner,pins = "PH12";
+       led_pins_cubietruck: led_pins@0 {
+               allwinner,pins = "PH7", "PH11", "PH20", "PH21";
                allwinner,function = "gpio_out";
                allwinner,drive = <SUN4I_PINCTRL_10_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
 
-       led_pins_cubietruck: led_pins@0 {
-               allwinner,pins = "PH7", "PH11", "PH20", "PH21";
+       mmc3_pwrseq_pin_cubietruck: mmc3_pwrseq_pin@0 {
+               allwinner,pins = "PH9";
                allwinner,function = "gpio_out";
                allwinner,drive = <SUN4I_PINCTRL_10_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                allwinner,drive = <SUN4I_PINCTRL_10_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH19";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH22";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
 };
 
 &pwm {
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpios = <&pio 7 19 GPIO_ACTIVE_HIGH>; /* PH19 */
+       usb0_vbus_det-gpios = <&pio 7 22 GPIO_ACTIVE_HIGH>; /* PH22 */
        usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
index f32f6f2..1e6bd36 100644 (file)
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupt-parent = <&pio>;
-               interrupts = <10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */
+               interrupts = <10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */
                interrupt-names = "host-wake";
        };
 };
index 769726d..0423708 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        ahci_pwr_pin_olinuxinolime: ahci_pwr_pin@1 {
                allwinner,pins = "PC3";
                allwinner,drive = <SUN4I_PINCTRL_20_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
 };
 
 &reg_ahci_5v {
        status = "okay";
 };
 
+&reg_usb0_vbus {
+       status = "okay";
+};
+
 &reg_usb1_vbus {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
index 00f8f25..c5d70ca 100644 (file)
        status = "okay";
 };
 
+&otg_sram {
+       status = "okay";
+};
+
 &pio {
        mmc3_cd_pin_olinuxinom: mmc3_cd_pin@0 {
                allwinner,pins = "PH11";
                allwinner,drive = <SUN4I_PINCTRL_20_MA>;
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
 };
 
 &reg_ahci_5v {
        status = "okay";
 };
 
+&reg_usb0_vbus {
+       status = "okay";
+};
+
 &reg_usb1_vbus {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
 &usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
        usb1_vbus-supply = <&reg_usb1_vbus>;
        usb2_vbus-supply = <&reg_usb2_vbus>;
        status = "okay";
index d3b2f26..2bebaa2 100644 (file)
                        #size-cells = <0>;
                };
 
+               usb_otg: usb@01c13000 {
+                       compatible = "allwinner,sun4i-a10-musb";
+                       reg = <0x01c13000 0x0400>;
+                       clocks = <&ahb_gates 0>;
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mc";
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       extcon = <&usbphy 0>;
+                       allwinner,sram = <&otg_sram 1>;
+                       status = "disabled";
+               };
+
                usbphy: phy@01c13400 {
                        #phy-cells = <1>;
                        compatible = "allwinner,sun7i-a20-usb-phy";
                        clocks = <&apb0_gates 5>;
                        gpio-controller;
                        interrupt-controller;
-                       #interrupt-cells = <2>;
-                       #size-cells = <0>;
+                       #interrupt-cells = <3>;
                        #gpio-cells = <3>;
 
                        pwm0_pins_a: pwm0@0 {
index c318c77..27a925e 100644 (file)
                        #size-cells = <0>;
                };
 
+               ehci0: usb@01c1a000 {
+                       compatible = "allwinner,sun8i-a23-ehci", "generic-ehci";
+                       reg = <0x01c1a000 0x100>;
+                       interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ahb1_gates 26>;
+                       resets = <&ahb1_rst 26>;
+                       phys = <&usbphy 1>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               ohci0: usb@01c1a400 {
+                       compatible = "allwinner,sun8i-a23-ohci", "generic-ohci";
+                       reg = <0x01c1a400 0x100>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ahb1_gates 29>, <&usb_clk 16>;
+                       resets = <&ahb1_rst 29>;
+                       phys = <&usbphy 1>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
                pio: pinctrl@01c20800 {
                        /* compatible gets set in SoC specific dtsi file */
                        reg = <0x01c20800 0x400>;
                        clocks = <&apb1_gates 5>;
                        gpio-controller;
                        interrupt-controller;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
+                       #interrupt-cells = <3>;
                        #gpio-cells = <3>;
 
                        uart0_pins_a: uart0@0 {
index 95134c6..8d9da68 100644 (file)
        pinctrl-0 = <&r_uart_pins_a>;
        status = "okay";
 };
+
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
index 8698f7a..2cc27c7 100644 (file)
                        clock-output-names = "mbus";
                };
        };
+
+       soc@01c00000 {
+               usb_otg: usb@01c19000 {
+                       compatible = "allwinner,sun6i-a31-musb";
+                       reg = <0x01c19000 0x0400>;
+                       clocks = <&ahb1_gates 24>;
+                       resets = <&ahb1_rst 24>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mc";
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       extcon = <&usbphy 0>;
+                       status = "disabled";
+               };
+
+               usbphy: phy@01c19400 {
+                       compatible = "allwinner,sun8i-a23-usb-phy";
+                       reg = <0x01c19400 0x10>,
+                             <0x01c1a800 0x4>;
+                       reg-names = "phy_ctrl",
+                                   "pmu1";
+                       clocks = <&usb_clk 8>,
+                                <&usb_clk 9>;
+                       clock-names = "usb0_phy",
+                                     "usb1_phy";
+                       resets = <&usb_clk 0>,
+                                <&usb_clk 1>;
+                       reset-names = "usb0_reset",
+                                     "usb1_reset";
+                       status = "disabled";
+                       #phy-cells = <1>;
+               };
+       };
 };
 
 &pio {
index 8667033..1aefc67 100644 (file)
        };
 };
 
+&ehci0 {
+       status = "okay";
+};
+
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0_pins_a>;
        status = "okay";
 };
 
+&ohci0 {
+       status = "okay";
+};
+
 &pio {
        mmc0_cd_pin_q8h: mmc0_cd_pin@0 {
                allwinner,pins = "PB4";
        pinctrl-0 = <&r_uart_pins_a>;
        status = "okay";
 };
+
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/sun8i-a33-ippo-q8h-v1.2.dts b/arch/arm/boot/dts/sun8i-a33-ippo-q8h-v1.2.dts
new file mode 100644 (file)
index 0000000..a438975
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun8i-a33.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "Ippo Q8H Quad Core Tablet (v1.2)";
+       compatible = "ippo,a33-q8h-v1.2", "allwinner,sun8i-a33";
+
+       aliases {
+               serial0 = &r_uart;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_vcc3v0>;
+       status = "okay";
+
+       button@200 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@400 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <400000>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_q8h>;
+       vmmc-supply = <&reg_vcc3v0>;
+       bus-width = <4>;
+       cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
+       cd-inverted;
+       status = "okay";
+};
+
+&pio {
+       mmc0_cd_pin_q8h: mmc0_cd_pin@0 {
+               allwinner,pins = "PB4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+};
+
+&r_uart {
+       pinctrl-names = "default";
+       pinctrl-0 = <&r_uart_pins_a>;
+       status = "okay";
+};
+
+/*
+ * FIXME for now we only support host mode and rely on u-boot to have
+ * turned on Vbus which is controlled by the axp223 pmic on the board.
+ *
+ * Once we have axp223 support we should switch to fully supporting otg.
+ */
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
index 5788c29..1d5390d 100644 (file)
        };
 };
 
+&ehci0 {
+       status = "okay";
+};
+
 &lradc {
        vref-supply = <&reg_vcc3v0>;
        status = "okay";
        allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
 };
 
+&ohci0 {
+       status = "okay";
+};
+
 &pio {
        mmc0_cd_pin_sina33: mmc0_cd_pin@0 {
                allwinner,pins = "PB4";
        pinctrl-0 = <&uart0_pins_b>;
        status = "okay";
 };
+
+&usbphy {
+       status = "okay";
+       usb1_vbus-supply = <&reg_vcc5v0>; /* USB1 VBUS is always on */
+};
index 85ee080..faa7d3c 100644 (file)
                        clock-output-names = "mbus";
                };
        };
+
+       soc@01c00000 {
+               usb_otg: usb@01c19000 {
+                       compatible = "allwinner,sun8i-a33-musb";
+                       reg = <0x01c19000 0x0400>;
+                       clocks = <&ahb1_gates 24>;
+                       resets = <&ahb1_rst 24>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mc";
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       extcon = <&usbphy 0>;
+                       status = "disabled";
+               };
+
+               usbphy: phy@01c19400 {
+                       compatible = "allwinner,sun8i-a33-usb-phy";
+                       reg = <0x01c19400 0x14>,
+                             <0x01c1a800 0x4>;
+                       reg-names = "phy_ctrl",
+                                   "pmu1";
+                       clocks = <&usb_clk 8>,
+                                <&usb_clk 9>;
+                       clock-names = "usb0_phy",
+                                     "usb1_phy";
+                       resets = <&usb_clk 0>,
+                                <&usb_clk 1>;
+                       reset-names = "usb0_reset",
+                                     "usb1_reset";
+                       status = "disabled";
+                       #phy-cells = <1>;
+               };
+       };
 };
 
 &pio {
index 51cc838..f1953b0 100644 (file)
                regulator-name = "usb1-vbus";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
                enable-active-high;
                gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>;
                status = "disabled";
                regulator-name = "usb2-vbus";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
                enable-active-high;
                gpio = <&pio 7 3 GPIO_ACTIVE_HIGH>;
                status = "disabled";
index f58a3d9..9d4f86e 100644 (file)
                #dma-cells = <1>;
        };
 
-       ahb: ahb@6000c004 {
+       ahb: ahb@6000c000 {
                compatible = "nvidia,tegra114-ahb", "nvidia,tegra30-ahb";
-               reg = <0x6000c004 0x14c>;
+               reg = <0x6000c000 0x150>;
        };
 
        gpio: gpio@6000d000 {
                gpio-controller;
                #interrupt-cells = <2>;
                interrupt-controller;
+               gpio-ranges = <&pinmux 0 0 246>;
        };
 
        apbmisc@70000800 {
index bd43ed6..66b4451 100644 (file)
                };
        };
 
+       gpu@0,57000000 {
+               /*
+                * Node left disabled on purpose - the bootloader will enable
+                * it after having set the VPR up
+                */
+               vdd-supply = <&vdd_gpu>;
+       };
+
        pinmux: pinmux@0,70000868 {
                pinctrl-names = "boot";
                pinctrl-0 = <&state_boot>;
                                vin-ldo9-10-supply = <&vdd_5v0_sys>;
                                vin-ldo11-supply = <&vdd_3v3_run>;
 
-                               sd0 {
+                               vdd_cpu: sd0 {
                                        regulator-name = "+VDD_CPU_AP";
                                        regulator-min-microvolt = <700000>;
                                        regulator-max-microvolt = <1400000>;
                                        regulator-always-on;
                                };
 
-                               sd6 {
+                               vdd_gpu: sd6 {
                                        regulator-name = "+VDD_GPU_AP";
                                        regulator-min-microvolt = <650000>;
                                        regulator-max-microvolt = <1200000>;
                non-removable;
        };
 
+       /* CPU DFLL clock */
+       clock@0,70110000 {
+               status = "okay";
+               vdd-cpu-supply = <&vdd_cpu>;
+               nvidia,i2c-fs-rate = <400000>;
+       };
+
        ahub@0,70300000 {
                i2s@0,70301100 {
                        status = "okay";
                };
        };
 
+       cpus {
+               cpu@0 {
+                       vdd-cpu-supply = <&vdd_cpu>;
+               };
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
 
index 79e724b..cfbdf42 100644 (file)
                };
        };
 
+       gpu@0,57000000 {
+               /*
+                * Node left disabled on purpose - the bootloader will enable
+                * it after having set the VPR up
+                */
+               vdd-supply = <&vdd_gpu>;
+       };
+
        pinmux: pinmux@0,70000868 {
                pinctrl-names = "boot";
                pinctrl-0 = <&pinmux_boot>;
                                        regulator-always-on;
                                };
 
-                               sd6 {
+                               vdd_gpu: sd6 {
                                        regulator-name = "+VDD_GPU_AP";
                                        regulator-min-microvolt = <650000>;
                                        regulator-max-microvolt = <1200000>;
index 01a9f74..1e204a6 100644 (file)
@@ -4,6 +4,7 @@
 #include <dt-bindings/pinctrl/pinctrl-tegra.h>
 #include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/reset/tegra124-car.h>
 #include <dt-bindings/thermal/tegra124-soctherm.h>
 
 #include "skeleton.dtsi"
                clock-names = "gpu", "pwr";
                resets = <&tegra_car 184>;
                reset-names = "gpu";
+
+               iommus = <&mc TEGRA_SWGROUP_GPU>;
+
                status = "disabled";
        };
 
                gpio-controller;
                #interrupt-cells = <2>;
                interrupt-controller;
+               gpio-ranges = <&pinmux 0 0 251>;
        };
 
        apbdma: dma@0,60020000 {
                #thermal-sensor-cells = <1>;
        };
 
+       dfll: clock@0,70110000 {
+               compatible = "nvidia,tegra124-dfll";
+               reg = <0 0x70110000 0 0x100>, /* DFLL control */
+                     <0 0x70110000 0 0x100>, /* I2C output control */
+                     <0 0x70110100 0 0x100>, /* Integrated I2C controller */
+                     <0 0x70110200 0 0x100>; /* Look-up table RAM */
+               interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA124_CLK_DFLL_SOC>,
+                        <&tegra_car TEGRA124_CLK_DFLL_REF>,
+                        <&tegra_car TEGRA124_CLK_I2C5>;
+               clock-names = "soc", "ref", "i2c";
+               resets = <&tegra_car TEGRA124_RST_DFLL_DVCO>;
+               reset-names = "dvco";
+               #clock-cells = <0>;
+               clock-output-names = "dfllCPU_out";
+               nvidia,sample-rate = <12500>;
+               nvidia,droop-ctrl = <0x00000f00>;
+               nvidia,force-mode = <1>;
+               nvidia,cf = <10>;
+               nvidia,ci = <0>;
+               nvidia,cg = <2>;
+               status = "disabled";
+       };
+
        ahub@0,70300000 {
                compatible = "nvidia,tegra124-ahub";
                reg = <0x0 0x70300000 0x0 0x200>,
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0>;
+
+                       clocks = <&tegra_car TEGRA124_CLK_CCLK_G>,
+                                <&tegra_car TEGRA124_CLK_CCLK_LP>,
+                                <&tegra_car TEGRA124_CLK_PLL_X>,
+                                <&tegra_car TEGRA124_CLK_PLL_P>,
+                                <&dfll>;
+                       clock-names = "cpu_g", "cpu_lp", "pll_x", "pll_p", "dfll";
+                       /* FIXME: what's the actual transition time? */
+                       clock-latency = <300000>;
                };
 
                cpu@1 {
                };
        };
 
+       pmu {
+               compatible = "arm,cortex-a15-pmu";
+               interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&{/cpus/cpu@0}>,
+                                    <&{/cpus/cpu@1}>,
+                                    <&{/cpus/cpu@2}>,
+                                    <&{/cpus/cpu@3}>;
+       };
+
        thermal-zones {
                cpu {
                        polling-delay-passive = <1000>;
index f444b67..e058709 100644 (file)
                #dma-cells = <1>;
        };
 
-       ahb@6000c004 {
+       ahb@6000c000 {
                compatible = "nvidia,tegra20-ahb";
-               reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */
+               reg = <0x6000c000 0x110>; /* AHB Arbitration + Gizmo Controller */
        };
 
        gpio: gpio@6000d000 {
                gpio-controller;
                #interrupt-cells = <2>;
                interrupt-controller;
+               gpio-ranges = <&pinmux 0 0 224>;
        };
 
        apbmisc@70000800 {
index 782b11b..fe04fb5 100644 (file)
                #dma-cells = <1>;
        };
 
-       ahb: ahb@6000c004 {
+       ahb: ahb@6000c000 {
                compatible = "nvidia,tegra30-ahb";
-               reg = <0x6000c004 0x14c>; /* AHB Arbitration + Gizmo Controller */
+               reg = <0x6000c000 0x150>; /* AHB Arbitration + Gizmo Controller */
        };
 
        gpio: gpio@6000d000 {
                gpio-controller;
                #interrupt-cells = <2>;
                interrupt-controller;
+               gpio-ranges = <&pinmux 0 0 248>;
        };
 
        apbmisc@70000800 {
index 200b0c9..bfd3bb8 100644 (file)
@@ -44,6 +44,7 @@
 
 /dts-v1/;
 /include/ "uniphier-ph1-ld4.dtsi"
+/include/ "uniphier-ref-daughter.dtsi"
 /include/ "uniphier-support-card.dtsi"
 
 / {
 
        chosen {
                bootargs = "console=ttyS0,115200";
-               stdout-path = &serialsc;
+               stdout-path = &serial0;
        };
 
        aliases {
-               serial0 = &serialsc;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+               serial3 = &serial3;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
        };
 };
 
        ranges = <0x00000000 1 0x03f00000 0x00100000>;
 };
 
-&serialsc {
+&ethsc {
        interrupts = <0 49 4>;
 };
+
+&serial0 {
+       status = "okay";
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&serial3 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
index 6a34c56..a6a185f 100644 (file)
                        compatible = "fixed-clock";
                        clock-frequency = <50000000>;
                };
+
+               uart_clk: uart_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <36864000>;
+               };
+
+               iobus_clk: iobus_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <100000000>;
+               };
        };
 
        soc {
                        #size-cells = <1>;
                };
 
+               serial0: serial@54006800 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart0>;
+                       interrupts = <0 33 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial1: serial@54006900 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart1>;
+                       interrupts = <0 35 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial2: serial@54006a00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart2>;
+                       interrupts = <0 37 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial3: serial@54006b00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart3>;
+                       interrupts = <0 29 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               i2c0: i2c@58400000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58400000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c0>;
+                       interrupts = <0 41 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c1: i2c@58480000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58480000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c1>;
+                       interrupts = <0 42 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               /* chip-internal connection for DMD */
+               i2c2: i2c@58500000 {
+                       compatible = "socionext,uniphier-i2c";
+                       reg = <0x58500000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c2>;
+                       interrupts = <0 43 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               i2c3: i2c@58580000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58580000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c3>;
+                       interrupts = <0 44 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
                system-bus-controller-misc@59800000 {
                        compatible = "socionext,uniphier-system-bus-controller-misc",
                                     "syscon";
                        reg = <0x59800000 0x2000>;
                };
 
+               usb0: usb@5a800100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb0>;
+                       interrupts = <0 80 4>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb1>;
+                       interrupts = <0 81 4>;
+               };
+
+               usb2: usb@5a820100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a820100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb2>;
+                       interrupts = <0 82 4>;
+               };
+
+               pinctrl: pinctrl@5f801000 {
+                       compatible = "socionext,ph1-ld4-pinctrl",
+                                    "syscon";
+                       reg = <0x5f801000 0xe00>;
+               };
+
                timer@60000200 {
                        compatible = "arm,cortex-a9-global-timer";
                        reg = <0x60000200 0x20>;
                };
        };
 };
+
+/include/ "uniphier-pinctrl.dtsi"
diff --git a/arch/arm/boot/dts/uniphier-ph1-ld6b-ref.dts b/arch/arm/boot/dts/uniphier-ph1-ld6b-ref.dts
new file mode 100644 (file)
index 0000000..33963ac
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Device Tree Source for UniPhier PH1-LD6b Reference Board
+ *
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+/include/ "uniphier-ph1-ld6b.dtsi"
+/include/ "uniphier-ref-daughter.dtsi"
+/include/ "uniphier-support-card.dtsi"
+
+/ {
+       model = "UniPhier PH1-LD6b Reference Board";
+       compatible = "socionext,ph1-ld6b-ref", "socionext,ph1-ld6b";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x80000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+               stdout-path = &serial0;
+       };
+
+       aliases {
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+       };
+};
+
+&extbus {
+       ranges = <0 0x00000000 0x0f000000 0x01000000
+                 1 0x00000000 0x00000000 0x08000000>;
+};
+
+&support_card {
+       ranges = <0x00000000 1 0x03f00000 0x00100000>;
+};
+
+&ethsc {
+       interrupts = <0 50 4>;
+};
+
+&serial0 {
+       status = "okay";
+};
+
+&serial1 {
+       status = "okay";
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/uniphier-ph1-ld6b.dtsi b/arch/arm/boot/dts/uniphier-ph1-ld6b.dtsi
new file mode 100644 (file)
index 0000000..c6499ee
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Device Tree Source for UniPhier PH1-LD6b SoC
+ *
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * PH1-LD6b consists of two silicon dies: D-chip and A-chip.
+ * The D-chip (digital chip) is the same as the ProXstream2 die.
+ * Reuse the ProXstream2 device tree with some properties overridden.
+ */
+/include/ "uniphier-proxstream2.dtsi"
+
+/ {
+       compatible = "socionext,ph1-ld6b";
+};
+
+/* UART3 unavilable: the pads are not wired to the package balls */
+&serial3 {
+       status = "disabled";
+};
+
+/*
+ * PH1-LD6b and ProXstream2 have completely different packages,
+ * which makes the pinctrl driver unshareable.
+ */
+&pinctrl {
+       compatible = "socionext,ph1-ld6b-pinctrl", "syscon";
+};
index d891135..69a5b7d 100644 (file)
@@ -44,6 +44,7 @@
 
 /dts-v1/;
 /include/ "uniphier-ph1-pro4.dtsi"
+/include/ "uniphier-ref-daughter.dtsi"
 /include/ "uniphier-support-card.dtsi"
 
 / {
 
        chosen {
                bootargs = "console=ttyS0,115200";
-               stdout-path = &serialsc;
+               stdout-path = &serial0;
        };
 
        aliases {
-               serial0 = &serialsc;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+               serial3 = &serial3;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
        };
 };
 
        ranges = <0x00000000 1 0x03f00000 0x00100000>;
 };
 
-&serialsc {
+&ethsc {
        interrupts = <0 50 4>;
 };
+
+&serial0 {
+       status = "okay";
+};
+
+&serial1 {
+       status = "okay";
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&usb2 {
+       status = "okay";
+};
+
+&usb3 {
+       status = "okay";
+};
index dc63360..e8bbc45 100644 (file)
                        compatible = "fixed-clock";
                        clock-frequency = <50000000>;
                };
+
+               uart_clk: uart_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <73728000>;
+               };
+
+               i2c_clk: i2c_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <50000000>;
+               };
        };
 
        soc {
                        #size-cells = <1>;
                };
 
+               serial0: serial@54006800 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart0>;
+                       interrupts = <0 33 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial1: serial@54006900 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart1>;
+                       interrupts = <0 35 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial2: serial@54006a00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart2>;
+                       interrupts = <0 37 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial3: serial@54006b00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart3>;
+                       interrupts = <0 29 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               i2c0: i2c@58780000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58780000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c0>;
+                       interrupts = <0 41 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c1: i2c@58781000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58781000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c1>;
+                       interrupts = <0 42 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c2: i2c@58782000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58782000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c2>;
+                       interrupts = <0 43 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c3: i2c@58783000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58783000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c3>;
+                       interrupts = <0 44 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               /* i2c4 does not exist */
+
+               /* chip-internal connection for DMD */
+               i2c5: i2c@58785000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58785000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 25 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               /* chip-internal connection for HDMI */
+               i2c6: i2c@58786000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58786000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 26 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
                system-bus-controller-misc@59800000 {
                        compatible = "socionext,uniphier-system-bus-controller-misc",
                                     "syscon";
                        reg = <0x59800000 0x2000>;
                };
 
+               usb2: usb@5a800100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb2>;
+                       interrupts = <0 80 4>;
+               };
+
+               usb3: usb@5a810100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb3>;
+                       interrupts = <0 81 4>;
+               };
+
+               pinctrl: pinctrl@5f801000 {
+                       compatible = "socionext,ph1-pro4-pinctrl",
+                                    "syscon";
+                       reg = <0x5f801000 0xe00>;
+               };
+
                timer@60000200 {
                        compatible = "arm,cortex-a9-global-timer";
                        reg = <0x60000200 0x20>;
                };
        };
 };
+
+/include/ "uniphier-pinctrl.dtsi"
diff --git a/arch/arm/boot/dts/uniphier-ph1-pro5.dtsi b/arch/arm/boot/dts/uniphier-ph1-pro5.dtsi
new file mode 100644 (file)
index 0000000..59c2b12
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+ * Device Tree Source for UniPhier PH1-Pro5 SoC
+ *
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "socionext,ph1-pro5";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "socionext,uniphier-smp";
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <1>;
+               };
+       };
+
+       clocks {
+               arm_timer_clk: arm_timer_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <50000000>;
+               };
+
+               uart_clk: uart_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <73728000>;
+               };
+
+               i2c_clk: i2c_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <50000000>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+               interrupt-parent = <&intc>;
+
+               extbus: extbus {
+                       compatible = "simple-bus";
+                       #address-cells = <2>;
+                       #size-cells = <1>;
+               };
+
+               serial0: serial@54006800 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart0>;
+                       interrupts = <0 33 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               serial1: serial@54006900 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart1>;
+                       interrupts = <0 35 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               serial2: serial@54006a00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart2>;
+                       interrupts = <0 37 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               serial3: serial@54006b00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart3>;
+                       interrupts = <0 177 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               i2c0: i2c@58780000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58780000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c0>;
+                       interrupts = <0 41 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c1: i2c@58781000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58781000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c1>;
+                       interrupts = <0 42 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c2: i2c@58782000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58782000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c2>;
+                       interrupts = <0 43 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c3: i2c@58783000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58783000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c3>;
+                       interrupts = <0 44 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               /* i2c4 does not exist */
+
+               /* chip-internal connection for DMD */
+               i2c5: i2c@58785000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58785000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 25 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               /* chip-internal connection for HDMI */
+               i2c6: i2c@58786000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58786000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 26 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               system-bus-controller-misc@59800000 {
+                       compatible = "socionext,uniphier-system-bus-controller-misc",
+                                    "syscon";
+                       reg = <0x59800000 0x2000>;
+               };
+
+               pinctrl: pinctrl@5f801000 {
+                       compatible = "socionext,ph1-pro5-pinctrl", "syscon";
+                       reg = <0x5f801000 0xe00>;
+               };
+
+               timer@60000200 {
+                       compatible = "arm,cortex-a9-global-timer";
+                       reg = <0x60000200 0x20>;
+                       interrupts = <1 11 0x304>;
+                       clocks = <&arm_timer_clk>;
+               };
+
+               timer@60000600 {
+                       compatible = "arm,cortex-a9-twd-timer";
+                       reg = <0x60000600 0x20>;
+                       interrupts = <1 13 0x304>;
+                       clocks = <&arm_timer_clk>;
+               };
+
+               intc: interrupt-controller@60001000 {
+                       compatible = "arm,cortex-a9-gic";
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       reg = <0x60001000 0x1000>,
+                             <0x60000100 0x100>;
+               };
+       };
+};
+
+/include/ "uniphier-pinctrl.dtsi"
index 3ea64ae..1a440f8 100644 (file)
@@ -44,6 +44,7 @@
 
 /dts-v1/;
 /include/ "uniphier-ph1-sld3.dtsi"
+/include/ "uniphier-ref-daughter.dtsi"
 /include/ "uniphier-support-card.dtsi"
 
 / {
 
        chosen {
                bootargs = "console=ttyS0,115200";
-               stdout-path = &serialsc;
+               stdout-path = &serial0;
        };
 
        aliases {
-               serial0 = &serialsc;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
        };
 };
 
        ranges = <0x00000000 1 0x03f00000 0x00100000>;
 };
 
-&serialsc {
+&ethsc {
        interrupts = <0 49 4>;
 };
+
+&serial0 {
+       status = "okay";
+};
+
+&serial1 {
+       status = "okay";
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+&usb2 {
+       status = "okay";
+};
+
+&usb3 {
+       status = "okay";
+};
index 248b188..3cc90cd 100644 (file)
                        compatible = "fixed-clock";
                        clock-frequency = <50000000>;
                };
+
+               uart_clk: uart_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <36864000>;
+               };
+
+               iobus_clk: iobus_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <100000000>;
+               };
        };
 
        soc {
                              <0x20000100 0x100>;
                };
 
+               serial0: serial@54006800 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x40>;
+                       interrupts = <0 33 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial1: serial@54006900 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x40>;
+                       interrupts = <0 35 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial2: serial@54006a00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x40>;
+                       interrupts = <0 37 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               i2c0: i2c@58400000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58400000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 41 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c1: i2c@58480000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58480000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 42 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c2: i2c@58500000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58500000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 43 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c3: i2c@58580000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58580000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 44 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               /* chip-internal connection for DMD */
+               i2c4: i2c@58600000 {
+                       compatible = "socionext,uniphier-i2c";
+                       reg = <0x58600000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 45 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <400000>;
+               };
+
                system-bus-controller-misc@59800000 {
                        compatible = "socionext,uniphier-system-bus-controller-misc",
                                     "syscon";
                        reg = <0x59800000 0x2000>;
                };
+
+               usb0: usb@5a800100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+                       interrupts = <0 80 4>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+                       interrupts = <0 81 4>;
+               };
+
+               usb2: usb@5a820100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a820100 0x100>;
+                       interrupts = <0 82 4>;
+               };
+
+               usb3: usb@5a830100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a830100 0x100>;
+                       interrupts = <0 83 4>;
+               };
        };
 };
index dcdc4f7..955d417 100644 (file)
@@ -44,6 +44,7 @@
 
 /dts-v1/;
 /include/ "uniphier-ph1-sld8.dtsi"
+/include/ "uniphier-ref-daughter.dtsi"
 /include/ "uniphier-support-card.dtsi"
 
 / {
 
        chosen {
                bootargs = "console=ttyS0,115200";
-               stdout-path = &serialsc;
+               stdout-path = &serial0;
        };
 
        aliases {
-               serial0 = &serialsc;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+               serial3 = &serial3;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
        };
 };
 
        ranges = <0x00000000 1 0x03f00000 0x00100000>;
 };
 
-&serialsc {
+&ethsc {
        interrupts = <0 48 4>;
 };
+
+&serial0 {
+       status = "okay";
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&serial3 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+&usb2 {
+       status = "okay";
+};
index baa71e1..58067df 100644 (file)
                        compatible = "fixed-clock";
                        clock-frequency = <50000000>;
                };
+
+               uart_clk: uart_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <80000000>;
+               };
+
+               iobus_clk: iobus_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <100000000>;
+               };
        };
 
        soc {
                        #size-cells = <1>;
                };
 
+               serial0: serial@54006800 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart0>;
+                       interrupts = <0 33 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial1: serial@54006900 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart1>;
+                       interrupts = <0 35 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial2: serial@54006a00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart2>;
+                       interrupts = <0 37 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               serial3: serial@54006b00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart3>;
+                       interrupts = <0 29 4>;
+                       clocks = <&uart_clk>;
+                       fifo-size = <64>;
+               };
+
+               i2c0: i2c@58400000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58400000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c0>;
+                       interrupts = <0 41 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c1: i2c@58480000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58480000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c1>;
+                       interrupts = <0 42 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               /* chip-internal connection for DMD */
+               i2c2: i2c@58500000 {
+                       compatible = "socionext,uniphier-i2c";
+                       reg = <0x58500000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c2>;
+                       interrupts = <0 43 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               i2c3: i2c@58580000 {
+                       compatible = "socionext,uniphier-i2c";
+                       status = "disabled";
+                       reg = <0x58580000 0x40>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c3>;
+                       interrupts = <0 44 1>;
+                       clocks = <&iobus_clk>;
+                       clock-frequency = <100000>;
+               };
+
                system-bus-controller-misc@59800000 {
                        compatible = "socionext,uniphier-system-bus-controller-misc",
                                     "syscon";
                        reg = <0x59800000 0x2000>;
                };
 
+               usb0: usb@5a800100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a800100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb0>;
+                       interrupts = <0 80 4>;
+               };
+
+               usb1: usb@5a810100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a810100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb1>;
+                       interrupts = <0 81 4>;
+               };
+
+               usb2: usb@5a820100 {
+                       compatible = "socionext,uniphier-ehci", "generic-ehci";
+                       status = "disabled";
+                       reg = <0x5a820100 0x100>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_usb2>;
+                       interrupts = <0 82 4>;
+               };
+
+               pinctrl: pinctrl@5f801000 {
+                       compatible = "socionext,ph1-sld8-pinctrl",
+                                    "syscon";
+                       reg = <0x5f801000 0xe00>;
+               };
+
                timer@60000200 {
                        compatible = "arm,cortex-a9-global-timer";
                        reg = <0x60000200 0x20>;
                };
        };
 };
+
+/include/ "uniphier-pinctrl.dtsi"
diff --git a/arch/arm/boot/dts/uniphier-pinctrl.dtsi b/arch/arm/boot/dts/uniphier-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..f67445f
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Device Tree Source for UniPhier SoCs default pinctrl settings
+ *
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&pinctrl {
+       pinctrl_i2c0: i2c0_grp {
+               groups = "i2c0";
+               function = "i2c0";
+       };
+
+       pinctrl_i2c1: i2c1_grp {
+               groups = "i2c1";
+               function = "i2c1";
+       };
+
+       pinctrl_i2c2: i2c2_grp {
+               groups = "i2c2";
+               function = "i2c2";
+       };
+
+       pinctrl_i2c3: i2c3_grp {
+               groups = "i2c3";
+               function = "i2c3";
+       };
+
+       pinctrl_uart0: uart0_grp {
+               groups = "uart0";
+               function = "uart0";
+       };
+
+       pinctrl_uart1: uart1_grp {
+               groups = "uart1";
+               function = "uart1";
+       };
+
+       pinctrl_uart2: uart2_grp {
+               groups = "uart2";
+               function = "uart2";
+       };
+
+       pinctrl_uart3: uart3_grp {
+               groups = "uart3";
+               function = "uart3";
+       };
+
+       pinctrl_usb0: usb0_grp {
+               groups = "usb0";
+               function = "usb0";
+       };
+
+       pinctrl_usb1: usb1_grp {
+               groups = "usb1";
+               function = "usb1";
+       };
+
+       pinctrl_usb2: usb2_grp {
+               groups = "usb2";
+               function = "usb2";
+       };
+
+       pinctrl_usb3: usb3_grp {
+               groups = "usb3";
+               function = "usb3";
+       };
+};
diff --git a/arch/arm/boot/dts/uniphier-proxstream2.dtsi b/arch/arm/boot/dts/uniphier-proxstream2.dtsi
new file mode 100644 (file)
index 0000000..4c7b246
--- /dev/null
@@ -0,0 +1,273 @@
+/*
+ * Device Tree Source for UniPhier ProXstream2 SoC
+ *
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/include/ "skeleton.dtsi"
+
+/ {
+       compatible = "socionext,proxstream2";
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "socionext,uniphier-smp";
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <1>;
+               };
+
+               cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <2>;
+               };
+
+               cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a9";
+                       reg = <3>;
+               };
+       };
+
+       clocks {
+               arm_timer_clk: arm_timer_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <50000000>;
+               };
+
+               uart_clk: uart_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <88900000>;
+               };
+
+               i2c_clk: i2c_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <50000000>;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+               interrupt-parent = <&intc>;
+
+               extbus: extbus {
+                       compatible = "simple-bus";
+                       #address-cells = <2>;
+                       #size-cells = <1>;
+               };
+
+               serial0: serial@54006800 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006800 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart0>;
+                       interrupts = <0 33 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               serial1: serial@54006900 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006900 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart1>;
+                       interrupts = <0 35 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               serial2: serial@54006a00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006a00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart2>;
+                       interrupts = <0 37 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               serial3: serial@54006b00 {
+                       compatible = "socionext,uniphier-uart";
+                       status = "disabled";
+                       reg = <0x54006b00 0x40>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_uart3>;
+                       interrupts = <0 177 4>;
+                       clocks = <&uart_clk>;
+               };
+
+               i2c0: i2c@58780000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58780000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c0>;
+                       interrupts = <0 41 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c1: i2c@58781000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58781000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c1>;
+                       interrupts = <0 42 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c2: i2c@58782000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58782000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c2>;
+                       interrupts = <0 43 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c3: i2c@58783000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       status = "disabled";
+                       reg = <0x58783000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_i2c3>;
+                       interrupts = <0 44 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <100000>;
+               };
+
+               /* chip-internal connection for DMD */
+               i2c4: i2c@58784000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58784000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 45 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               /* chip-internal connection for STM */
+               i2c5: i2c@58785000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58785000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 25 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               /* chip-internal connection for HDMI */
+               i2c6: i2c@58786000 {
+                       compatible = "socionext,uniphier-fi2c";
+                       reg = <0x58786000 0x80>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       interrupts = <0 26 4>;
+                       clocks = <&i2c_clk>;
+                       clock-frequency = <400000>;
+               };
+
+               system-bus-controller-misc@59800000 {
+                       compatible = "socionext,uniphier-system-bus-controller-misc",
+                                    "syscon";
+                       reg = <0x59800000 0x2000>;
+               };
+
+               pinctrl: pinctrl@5f801000 {
+                       compatible = "socionext,proxstream2-pinctrl", "syscon";
+                       reg = <0x5f801000 0xe00>;
+               };
+
+               timer@60000200 {
+                       compatible = "arm,cortex-a9-global-timer";
+                       reg = <0x60000200 0x20>;
+                       interrupts = <1 11 0xf04>;
+                       clocks = <&arm_timer_clk>;
+               };
+
+               timer@60000600 {
+                       compatible = "arm,cortex-a9-twd-timer";
+                       reg = <0x60000600 0x20>;
+                       interrupts = <1 13 0xf04>;
+                       clocks = <&arm_timer_clk>;
+               };
+
+               intc: interrupt-controller@60001000 {
+                       compatible = "arm,cortex-a9-gic";
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       reg = <0x60001000 0x1000>,
+                             <0x60000100 0x100>;
+               };
+       };
+};
+
+/include/ "uniphier-pinctrl.dtsi"
diff --git a/arch/arm/boot/dts/uniphier-ref-daughter.dtsi b/arch/arm/boot/dts/uniphier-ref-daughter.dtsi
new file mode 100644 (file)
index 0000000..3d29d28
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Device Tree Source for UniPhier Reference Daughter Board
+ *
+ * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+&i2c0 {
+       eeprom {
+               compatible = "microchip,24lc128";
+               reg = <0x50>;
+       };
+};
index 2efb205..21b0287 100644 (file)
                                clock-names = "refclk", "timclk", "apb_pclk";
                                #clock-cells = <1>;
                                clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
+                               assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
+                               assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
                        };
 
                        /* PCI-E I2C bus */
index cb3090f..e712c0a 100644 (file)
                                clock-names = "refclk", "timclk", "apb_pclk";
                                #clock-cells = <1>;
                                clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
+                               assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
+                               assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
                        };
 
                        /* PCI-E I2C bus */
index 606753e..ed65e0f 100644 (file)
@@ -9,7 +9,7 @@
 
 / {
        chosen {
-               bootargs = "console=ttyLP0,115200";
+               stdout-path = "serial0:115200n8";
        };
 
        clk16m: clk16m {
index 4aa3351..6865137 100644 (file)
                                interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clks VF610_CLK_ADC0>;
                                clock-names = "adc";
+                               #io-channel-cells = <1>;
                                status = "disabled";
+                               fsl,adck-max-frequency = <30000000>, <40000000>,
+                                                       <20000000>;
                        };
 
                        wdoga5: wdog@4003e000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,vf610-qspi";
-                               reg = <0x40044000 0x1000>;
+                               reg = <0x40044000 0x1000>, <0x20000000 0x10000000>;
+                               reg-names = "QuadSPI", "QuadSPI-memory";
                                interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clks VF610_CLK_QSPI0_EN>,
                                        <&clks VF610_CLK_QSPI0>;
                                status = "disabled";
                        };
 
+                       i2c1: i2c@40067000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,vf610-i2c";
+                               reg = <0x40067000 0x1000>;
+                               interrupts = <72 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks VF610_CLK_I2C1>;
+                               clock-names = "ipg";
+                               dmas = <&edma0 0 52>,
+                                       <&edma0 0 53>;
+                               dma-names = "rx","tx";
+                               status = "disabled";
+                       };
+
                        clks: ccm@4006b000 {
                                compatible = "fsl,vf610-ccm";
                                reg = <0x4006b000 0x1000>;
                        };
 
                        snvs0: snvs@400a7000 {
-                           compatible = "fsl,sec-v4.0-mon", "simple-bus";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges = <0 0x400a7000 0x2000>;
+                           compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd";
+                               reg = <0x400a7000 0x2000>;
 
-                               snvsrtc: snvs-rtc-lp@34 {
+                               snvsrtc: snvs-rtc-lp {
                                        compatible = "fsl,sec-v4.0-mon-rtc-lp";
-                                       reg = <0x34 0x58>;
+                                       regmap = <&snvs0>;
+                                       offset = <0x34>;
                                        interrupts = <100 IRQ_TYPE_LEVEL_HIGH>;
                                        clocks = <&clks VF610_CLK_SNVS>;
                                        clock-names = "snvs-rtc";
                                interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&clks VF610_CLK_ADC1>;
                                clock-names = "adc";
+                               #io-channel-cells = <1>;
                                status = "disabled";
                        };
 
+                       esdhc0: esdhc@400b1000 {
+                               compatible = "fsl,imx53-esdhc";
+                               reg = <0x400b1000 0x1000>;
+                               interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks VF610_CLK_IPG_BUS>,
+                                       <&clks VF610_CLK_PLATFORM_BUS>,
+                                       <&clks VF610_CLK_ESDHC0>;
+                               clock-names = "ipg", "ahb", "per";
+                               status = "disabled";
+                               fsl,adck-max-frequency = <30000000>, <40000000>,
+                                                       <20000000>;
+                       };
+
                        esdhc1: esdhc@400b2000 {
                                compatible = "fsl,imx53-esdhc";
                                reg = <0x400b2000 0x1000>;
                                status = "disabled";
                        };
 
+                       qspi1: quadspi@400c4000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,vf610-qspi";
+                               reg = <0x400c4000 0x1000>, <0x50000000 0x10000000>;
+                               reg-names = "QuadSPI", "QuadSPI-memory";
+                               interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks VF610_CLK_QSPI1_EN>,
+                                       <&clks VF610_CLK_QSPI1>;
+                               clock-names = "qspi_en", "qspi";
+                               status = "disabled";
+                       };
+
                        fec0: ethernet@400d0000 {
                                compatible = "fsl,mvf600-fec";
                                reg = <0x400d0000 0x1000>;
                                status = "disabled";
                        };
 
+                       i2c2: i2c@400e6000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,vf610-i2c";
+                               reg = <0x400e6000 0x1000>;
+                               interrupts = <73 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks VF610_CLK_I2C2>;
+                               clock-names = "ipg";
+                               dmas = <&edma0 1 36>,
+                                       <&edma0 1 37>;
+                               dma-names = "rx","tx";
+                               status = "disabled";
+                       };
+
+                       i2c3: i2c@400e7000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,vf610-i2c";
+                               reg = <0x400e7000 0x1000>;
+                               interrupts = <74 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&clks VF610_CLK_I2C3>;
+                               clock-names = "ipg";
+                               dmas = <&edma0 1 38>,
+                                       <&edma0 1 39>;
+                               dma-names = "rx","tx";
+                               status = "disabled";
+                       };
                };
        };
 };
index 0691508..dc0457e 100644 (file)
@@ -57,7 +57,7 @@
                regulator-always-on;
        };
 
-       amba {
+       amba: amba {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                L2: cache-controller@f8f02000 {
                        compatible = "arm,pl310-cache";
                        reg = <0xF8F02000 0x1000>;
+                       interrupts = <0 2 4>;
                        arm,data-latency = <3 2 2>;
                        arm,tag-latency = <2 2 2>;
                        cache-unified;
                                reg = <0x100 0x100>;
                        };
 
+                       rstc: rstc@200 {
+                               compatible = "xlnx,zynq-reset";
+                               reg = <0x200 0x48>;
+                               #reset-cells = <1>;
+                               syscon = <&slcr>;
+                       };
+
                        pinctrl0: pinctrl@700 {
                                compatible = "xlnx,pinctrl-zynq";
                                reg = <0x700 0x200>;
index fb59d34..5df8f81 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               autorepeat;
+               sw14 {
+                       label = "sw14";
+                       gpios = <&gpio0 12 0>;
+                       linux,code = <108>; /* down */
+                       gpio-key,wakeup;
+                       autorepeat;
+               };
+               sw13 {
+                       label = "sw13";
+                       gpios = <&gpio0 14 0>;
+                       linux,code = <103>; /* up */
+                       gpio-key,wakeup;
+                       autorepeat;
+               };
+       };
+
        leds {
                compatible = "gpio-leds";
 
        };
 };
 
+&amba {
+       ocm: sram@fffc0000 {
+               compatible = "mmio-sram";
+               reg = <0xfffc0000 0x10000>;
+       };
+};
+
 &can0 {
        status = "okay";
        pinctrl-names = "default";
index ac521e7..b001f7a 100644 (file)
@@ -324,10 +324,13 @@ CONFIG_SND_USB_AUDIO=m
 CONFIG_SND_SOC=m
 CONFIG_SND_EDMA_SOC=m
 CONFIG_SND_AM33XX_SOC_EVM=m
+CONFIG_SND_DAVINCI_SOC_MCASP=m
 CONFIG_SND_OMAP_SOC=m
 CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
 CONFIG_SND_OMAP_SOC_OMAP_ABE_TWL6040=m
 CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
+CONFIG_SND_SIMPLE_CARD=m
+CONFIG_SND_SOC_TLV320AIC3X=m
 CONFIG_HID_GENERIC=m
 CONFIG_USB_HIDDEV=y
 CONFIG_USB_KBD=m
index 1a352f5..ea56397 100644 (file)
 #include <linux/kernel.h>
 #include <linux/of_platform.h>
 #include <linux/ti_wilink_st.h>
+#include <linux/wl12xx.h>
+#include <linux/mmc/card.h>
+#include <linux/mmc/host.h>
+#include <linux/regulator/machine.h>
+#include <linux/regulator/fixed.h>
 
 #include <linux/platform_data/pinctrl-single.h>
 #include <linux/platform_data/iommu-omap.h>
+#include <linux/platform_data/wkup_m3.h>
+
+#include <asm/siginfo.h>
+#include <asm/signal.h>
 
 #include "common.h"
 #include "common-board-devices.h"
@@ -25,6 +34,7 @@
 #include "omap_device.h"
 #include "omap-secure.h"
 #include "soc.h"
+#include "hsmmc.h"
 
 struct pdata_init {
        const char *compatible;
@@ -268,8 +278,136 @@ static void __init omap3_tao3530_legacy_init(void)
 {
        hsmmc2_internal_input_clk();
 }
+
+/* omap3pandora legacy devices */
+#define PANDORA_WIFI_IRQ_GPIO          21
+#define PANDORA_WIFI_NRESET_GPIO       23
+
+static struct platform_device pandora_backlight = {
+       .name   = "pandora-backlight",
+       .id     = -1,
+};
+
+static struct regulator_consumer_supply pandora_vmmc3_supply[] = {
+       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.2"),
+};
+
+static struct regulator_init_data pandora_vmmc3 = {
+       .constraints = {
+               .valid_ops_mask         = REGULATOR_CHANGE_STATUS,
+       },
+       .num_consumer_supplies  = ARRAY_SIZE(pandora_vmmc3_supply),
+       .consumer_supplies      = pandora_vmmc3_supply,
+};
+
+static struct fixed_voltage_config pandora_vwlan = {
+       .supply_name            = "vwlan",
+       .microvolts             = 1800000, /* 1.8V */
+       .gpio                   = PANDORA_WIFI_NRESET_GPIO,
+       .startup_delay          = 50000, /* 50ms */
+       .enable_high            = 1,
+       .init_data              = &pandora_vmmc3,
+};
+
+static struct platform_device pandora_vwlan_device = {
+       .name           = "reg-fixed-voltage",
+       .id             = 1,
+       .dev = {
+               .platform_data = &pandora_vwlan,
+       },
+};
+
+static void pandora_wl1251_init_card(struct mmc_card *card)
+{
+       /*
+        * We have TI wl1251 attached to MMC3. Pass this information to
+        * SDIO core because it can't be probed by normal methods.
+        */
+       if (card->type == MMC_TYPE_SDIO || card->type == MMC_TYPE_SD_COMBO) {
+               card->quirks |= MMC_QUIRK_NONSTD_SDIO;
+               card->cccr.wide_bus = 1;
+               card->cis.vendor = 0x104c;
+               card->cis.device = 0x9066;
+               card->cis.blksize = 512;
+               card->cis.max_dtr = 24000000;
+               card->ocr = 0x80;
+       }
+}
+
+static struct omap2_hsmmc_info pandora_mmc3[] = {
+       {
+               .mmc            = 3,
+               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
+               .gpio_cd        = -EINVAL,
+               .gpio_wp        = -EINVAL,
+               .init_card      = pandora_wl1251_init_card,
+       },
+       {}      /* Terminator */
+};
+
+static void __init pandora_wl1251_init(void)
+{
+       struct wl1251_platform_data pandora_wl1251_pdata;
+       int ret;
+
+       memset(&pandora_wl1251_pdata, 0, sizeof(pandora_wl1251_pdata));
+
+       pandora_wl1251_pdata.power_gpio = -1;
+
+       ret = gpio_request_one(PANDORA_WIFI_IRQ_GPIO, GPIOF_IN, "wl1251 irq");
+       if (ret < 0)
+               goto fail;
+
+       pandora_wl1251_pdata.irq = gpio_to_irq(PANDORA_WIFI_IRQ_GPIO);
+       if (pandora_wl1251_pdata.irq < 0)
+               goto fail_irq;
+
+       pandora_wl1251_pdata.use_eeprom = true;
+       ret = wl1251_set_platform_data(&pandora_wl1251_pdata);
+       if (ret < 0)
+               goto fail_irq;
+
+       return;
+
+fail_irq:
+       gpio_free(PANDORA_WIFI_IRQ_GPIO);
+fail:
+       pr_err("wl1251 board initialisation failed\n");
+}
+
+static void __init omap3_pandora_legacy_init(void)
+{
+       platform_device_register(&pandora_backlight);
+       platform_device_register(&pandora_vwlan_device);
+       omap_hsmmc_init(pandora_mmc3);
+       omap_hsmmc_late_init(pandora_mmc3);
+       pandora_wl1251_init();
+}
 #endif /* CONFIG_ARCH_OMAP3 */
 
+#ifdef CONFIG_SOC_TI81XX
+static int fault_fixed_up;
+
+static int t410_abort_handler(unsigned long addr, unsigned int fsr,
+                             struct pt_regs *regs)
+{
+       if ((fsr == 0x406 || fsr == 0xc06) && !fault_fixed_up) {
+               pr_warn("External imprecise Data abort at addr=%#lx, fsr=%#x ignored.\n",
+                       addr, fsr);
+               fault_fixed_up = 1;
+               return 0;
+       }
+
+       return 1;
+}
+
+static void __init t410_abort_init(void)
+{
+       hook_fault_code(16 + 6, t410_abort_handler, SIGBUS, BUS_OBJERR,
+                       "imprecise external abort");
+}
+#endif
+
 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
 static struct iommu_platform_data omap4_iommu_pdata = {
        .reset_name = "mmu_cache",
@@ -278,6 +416,14 @@ static struct iommu_platform_data omap4_iommu_pdata = {
 };
 #endif
 
+#if defined(CONFIG_SOC_AM33XX) || defined(CONFIG_SOC_AM43XX)
+static struct wkup_m3_platform_data wkup_m3_data = {
+       .reset_name = "wkup_m3",
+       .assert_reset = omap_device_assert_hardreset,
+       .deassert_reset = omap_device_deassert_hardreset,
+};
+#endif
+
 #ifdef CONFIG_SOC_OMAP5
 static void __init omap5_uevm_legacy_init(void)
 {
@@ -340,6 +486,10 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
        OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
                       &am35xx_emac_pdata),
 #endif
+#ifdef CONFIG_SOC_AM33XX
+       OF_DEV_AUXDATA("ti,am3352-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
+                      &wkup_m3_data),
+#endif
 #ifdef CONFIG_ARCH_OMAP4
        OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a100040, "4a100040.pinmux", &pcs_pdata),
        OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a31e040, "4a31e040.pinmux", &pcs_pdata),
@@ -353,6 +503,8 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
 #endif
 #ifdef CONFIG_SOC_AM43XX
        OF_DEV_AUXDATA("ti,am437-padconf", 0x44e10800, "44e10800.pinmux", &pcs_pdata),
+       OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
+                      &wkup_m3_data),
 #endif
 #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
        OF_DEV_AUXDATA("ti,omap4-iommu", 0x4a066000, "4a066000.mmu",
@@ -381,6 +533,11 @@ static struct pdata_init pdata_quirks[] __initdata = {
        { "ti,omap3-evm-37xx", omap3_evm_legacy_init, },
        { "ti,am3517-evm", am3517_evm_legacy_init, },
        { "technexion,omap3-tao3530", omap3_tao3530_legacy_init, },
+       { "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, },
+       { "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, },
+#endif
+#ifdef CONFIG_SOC_TI81XX
+       { "hp,t410", t410_abort_init, },
 #endif
 #ifdef CONFIG_SOC_OMAP5
        { "ti,omap5-uevm", omap5_uevm_legacy_init, },
index 2412efb..08d2be2 100644 (file)
@@ -78,11 +78,11 @@ config MACH_LINKSTATION_LSCHL
          Buffalo Linkstation Live v3 (LS-CHL) platform.
 
 config MACH_LINKSTATION_MINI
-       bool "Buffalo Linkstation Mini"
-       select I2C_BOARDINFO
+       bool "Buffalo Linkstation Mini (Flattened Device Tree)"
+       select ARCH_ORION5X_DT
        help
          Say 'Y' here if you want your kernel to support the
-         Buffalo Linkstation Mini platform.
+         Buffalo Linkstation Mini (LS-WSGL) platform.
 
 config MACH_LINKSTATION_LS_HGL
        bool "Buffalo Linkstation LS-HGL"
index a40b5c9..a1e0fbe 100644 (file)
@@ -4,7 +4,6 @@ obj-$(CONFIG_MACH_RD88F5182)    += rd88f5182-setup.o
 obj-$(CONFIG_MACH_KUROBOX_PRO) += kurobox_pro-setup.o
 obj-$(CONFIG_MACH_TERASTATION_PRO2)    += terastation_pro2-setup.o
 obj-$(CONFIG_MACH_LINKSTATION_PRO) += kurobox_pro-setup.o
-obj-$(CONFIG_MACH_LINKSTATION_MINI) += lsmini-setup.o
 obj-$(CONFIG_MACH_LINKSTATION_LS_HGL) += ls_hgl-setup.o
 obj-$(CONFIG_MACH_DNS323)      += dns323-setup.o
 obj-$(CONFIG_MACH_TS209)       += ts209-setup.o tsx09-common.o
diff --git a/arch/arm/mach-orion5x/lsmini-setup.c b/arch/arm/mach-orion5x/lsmini-setup.c
deleted file mode 100644 (file)
index a6493e7..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- * arch/arm/mach-orion5x/lsmini-setup.c
- *
- * Maintainer: Alexey Kopytko <alexey@kopytko.ru>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2.  This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mtd/physmap.h>
-#include <linux/mv643xx_eth.h>
-#include <linux/leds.h>
-#include <linux/gpio_keys.h>
-#include <linux/input.h>
-#include <linux/i2c.h>
-#include <linux/ata_platform.h>
-#include <linux/gpio.h>
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <mach/orion5x.h>
-#include "common.h"
-#include "mpp.h"
-
-/*****************************************************************************
- * Linkstation Mini Info
- ****************************************************************************/
-
-/*
- * 256K NOR flash Device bus boot chip select
- */
-
-#define LSMINI_NOR_BOOT_BASE   0xf4000000
-#define LSMINI_NOR_BOOT_SIZE   SZ_256K
-
-/*****************************************************************************
- * 256KB NOR Flash on BOOT Device
- ****************************************************************************/
-
-static struct physmap_flash_data lsmini_nor_flash_data = {
-       .width          = 1,
-};
-
-static struct resource lsmini_nor_flash_resource = {
-       .flags  = IORESOURCE_MEM,
-       .start  = LSMINI_NOR_BOOT_BASE,
-       .end    = LSMINI_NOR_BOOT_BASE + LSMINI_NOR_BOOT_SIZE - 1,
-};
-
-static struct platform_device lsmini_nor_flash = {
-       .name                   = "physmap-flash",
-       .id                     = 0,
-       .dev            = {
-               .platform_data  = &lsmini_nor_flash_data,
-       },
-       .num_resources          = 1,
-       .resource               = &lsmini_nor_flash_resource,
-};
-
-/*****************************************************************************
- * Ethernet
- ****************************************************************************/
-
-static struct mv643xx_eth_platform_data lsmini_eth_data = {
-       .phy_addr       = 8,
-};
-
-/*****************************************************************************
- * RTC 5C372a on I2C bus
- ****************************************************************************/
-
-static struct i2c_board_info __initdata lsmini_i2c_rtc = {
-       I2C_BOARD_INFO("rs5c372a", 0x32),
-};
-
-/*****************************************************************************
- * LEDs attached to GPIO
- ****************************************************************************/
-
-#define LSMINI_GPIO_LED_ALARM  2
-#define LSMINI_GPIO_LED_INFO   3
-#define LSMINI_GPIO_LED_FUNC   9
-#define LSMINI_GPIO_LED_PWR    14
-
-static struct gpio_led lsmini_led_pins[] = {
-       {
-               .name      = "alarm:red",
-               .gpio      = LSMINI_GPIO_LED_ALARM,
-               .active_low     = 1,
-       }, {
-               .name      = "info:amber",
-               .gpio      = LSMINI_GPIO_LED_INFO,
-               .active_low     = 1,
-       }, {
-               .name      = "func:blue:top",
-               .gpio      = LSMINI_GPIO_LED_FUNC,
-               .active_low     = 1,
-       }, {
-               .name      = "power:blue:bottom",
-               .gpio      = LSMINI_GPIO_LED_PWR,
-       },
-};
-
-static struct gpio_led_platform_data lsmini_led_data = {
-       .leds      = lsmini_led_pins,
-       .num_leds       = ARRAY_SIZE(lsmini_led_pins),
-};
-
-static struct platform_device lsmini_leds = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data  = &lsmini_led_data,
-       },
-};
-
-/****************************************************************************
- * GPIO Attached Keys
- ****************************************************************************/
-
-#define LSMINI_GPIO_KEY_FUNC       15
-#define LSMINI_GPIO_KEY_POWER     18
-#define LSMINI_GPIO_KEY_AUTOPOWER 17
-
-#define LSMINI_SW_POWER                0x00
-#define LSMINI_SW_AUTOPOWER    0x01
-
-static struct gpio_keys_button lsmini_buttons[] = {
-       {
-               .code      = KEY_OPTION,
-               .gpio      = LSMINI_GPIO_KEY_FUNC,
-               .desc      = "Function Button",
-               .active_low     = 1,
-       }, {
-               .type           = EV_SW,
-               .code      = LSMINI_SW_POWER,
-               .gpio      = LSMINI_GPIO_KEY_POWER,
-               .desc      = "Power-on Switch",
-               .active_low     = 1,
-       }, {
-               .type           = EV_SW,
-               .code      = LSMINI_SW_AUTOPOWER,
-               .gpio      = LSMINI_GPIO_KEY_AUTOPOWER,
-               .desc      = "Power-auto Switch",
-               .active_low     = 1,
-       },
-};
-
-static struct gpio_keys_platform_data lsmini_button_data = {
-       .buttons        = lsmini_buttons,
-       .nbuttons       = ARRAY_SIZE(lsmini_buttons),
-};
-
-static struct platform_device lsmini_button_device = {
-       .name      = "gpio-keys",
-       .id          = -1,
-       .num_resources  = 0,
-       .dev        = {
-               .platform_data  = &lsmini_button_data,
-       },
-};
-
-
-/*****************************************************************************
- * SATA
- ****************************************************************************/
-static struct mv_sata_platform_data lsmini_sata_data = {
-       .n_ports        = 2,
-};
-
-
-/*****************************************************************************
- * Linkstation Mini specific power off method: reboot
- ****************************************************************************/
-/*
- * On the Linkstation Mini, the shutdown process is following:
- * - Userland monitors key events until the power switch goes to off position
- * - The board reboots
- * - U-boot starts and goes into an idle mode waiting for the user
- *   to move the switch to ON position
- */
-
-static void lsmini_power_off(void)
-{
-       orion5x_restart(REBOOT_HARD, NULL);
-}
-
-
-/*****************************************************************************
- * General Setup
- ****************************************************************************/
-
-#define LSMINI_GPIO_USB_POWER  16
-#define LSMINI_GPIO_AUTO_POWER 17
-#define LSMINI_GPIO_POWER      18
-
-#define LSMINI_GPIO_HDD_POWER0 1
-#define LSMINI_GPIO_HDD_POWER1 19
-
-static unsigned int lsmini_mpp_modes[] __initdata = {
-       MPP0_UNUSED, /* LED_RESERVE1 (unused) */
-       MPP1_GPIO, /* HDD_PWR */
-       MPP2_GPIO, /* LED_ALARM */
-       MPP3_GPIO, /* LED_INFO */
-       MPP4_UNUSED,
-       MPP5_UNUSED,
-       MPP6_UNUSED,
-       MPP7_UNUSED,
-       MPP8_UNUSED,
-       MPP9_GPIO, /* LED_FUNC */
-       MPP10_UNUSED,
-       MPP11_UNUSED, /* LED_ETH (dummy) */
-       MPP12_UNUSED,
-       MPP13_UNUSED,
-       MPP14_GPIO, /* LED_PWR */
-       MPP15_GPIO, /* FUNC */
-       MPP16_GPIO, /* USB_PWR */
-       MPP17_GPIO, /* AUTO_POWER */
-       MPP18_GPIO, /* POWER */
-       MPP19_GPIO, /* HDD_PWR1 */
-       0,
-};
-
-static void __init lsmini_init(void)
-{
-       /*
-        * Setup basic Orion functions. Need to be called early.
-        */
-       orion5x_init();
-
-       orion5x_mpp_conf(lsmini_mpp_modes);
-
-       /*
-        * Configure peripherals.
-        */
-       orion5x_ehci0_init();
-       orion5x_ehci1_init();
-       orion5x_eth_init(&lsmini_eth_data);
-       orion5x_i2c_init();
-       orion5x_sata_init(&lsmini_sata_data);
-       orion5x_uart0_init();
-       orion5x_xor_init();
-
-       mvebu_mbus_add_window_by_id(ORION_MBUS_DEVBUS_BOOT_TARGET,
-                                   ORION_MBUS_DEVBUS_BOOT_ATTR,
-                                   LSMINI_NOR_BOOT_BASE,
-                                   LSMINI_NOR_BOOT_SIZE);
-       platform_device_register(&lsmini_nor_flash);
-
-       platform_device_register(&lsmini_button_device);
-
-       platform_device_register(&lsmini_leds);
-
-       i2c_register_board_info(0, &lsmini_i2c_rtc, 1);
-
-       /* enable USB power */
-       gpio_set_value(LSMINI_GPIO_USB_POWER, 1);
-
-       /* register power-off method */
-       pm_power_off = lsmini_power_off;
-
-       pr_info("%s: finished\n", __func__);
-}
-
-#ifdef CONFIG_MACH_LINKSTATION_MINI
-MACHINE_START(LINKSTATION_MINI, "Buffalo Linkstation Mini")
-       /* Maintainer: Alexey Kopytko <alexey@kopytko.ru> */
-       .atag_offset    = 0x100,
-       .init_machine   = lsmini_init,
-       .map_io         = orion5x_map_io,
-       .init_early     = orion5x_init_early,
-       .init_irq       = orion5x_init_irq,
-       .init_time      = orion5x_timer_init,
-       .fixup          = tag_fixup_mem32,
-       .restart        = orion5x_restart,
-MACHINE_END
-#endif
index 72411fb..097fc90 100644 (file)
@@ -74,6 +74,7 @@ static struct ti_dt_clk am43xx_clks[] = {
        DT_CLK(NULL, "clk_24mhz", "clk_24mhz"),
        DT_CLK(NULL, "cpsw_125mhz_gclk", "cpsw_125mhz_gclk"),
        DT_CLK(NULL, "cpsw_cpts_rft_clk", "cpsw_cpts_rft_clk"),
+       DT_CLK(NULL, "dpll_clksel_mac_clk", "dpll_clksel_mac_clk"),
        DT_CLK(NULL, "gpio0_dbclk_mux_ck", "gpio0_dbclk_mux_ck"),
        DT_CLK(NULL, "gpio0_dbclk", "gpio0_dbclk"),
        DT_CLK(NULL, "gpio1_dbclk", "gpio1_dbclk"),
index 0f982b8..0fd7fd2 100644 (file)
@@ -624,6 +624,22 @@ static struct pinctrl_desc tegra_pinctrl_desc = {
        .owner = THIS_MODULE,
 };
 
+static bool gpio_node_has_range(void)
+{
+       struct device_node *np;
+       bool has_prop = false;
+
+       np = of_find_compatible_node(NULL, NULL, "nvidia,tegra30-gpio");
+       if (!np)
+               return has_prop;
+
+       has_prop = of_find_property(np, "gpio-ranges", NULL);
+
+       of_node_put(np);
+
+       return has_prop;
+}
+
 int tegra_pinctrl_probe(struct platform_device *pdev,
                        const struct tegra_pinctrl_soc_data *soc_data)
 {
@@ -708,7 +724,8 @@ int tegra_pinctrl_probe(struct platform_device *pdev,
                return PTR_ERR(pmx->pctl);
        }
 
-       pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range);
+       if (!gpio_node_has_range())
+               pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range);
 
        platform_set_drvdata(pdev, pmx);
 
index ff7ca35..7b1ad89 100644 (file)
 #define R8A7790_CLK_VIN2               9
 #define R8A7790_CLK_VIN1               10
 #define R8A7790_CLK_VIN0               11
+#define R8A7790_CLK_ETHERAVB           12
 #define R8A7790_CLK_ETHER              13
 #define R8A7790_CLK_SATA1              14
 #define R8A7790_CLK_SATA0              15
 #define R8A7790_CLK_SCU_ALL            17
 #define R8A7790_CLK_SCU_DVC1           18
 #define R8A7790_CLK_SCU_DVC0           19
+#define R8A7790_CLK_SCU_CTU1_MIX1      20
+#define R8A7790_CLK_SCU_CTU0_MIX0      21
 #define R8A7790_CLK_SCU_SRC9           22
 #define R8A7790_CLK_SCU_SRC8           23
 #define R8A7790_CLK_SCU_SRC7           24
index 4022683..dd09b73 100644 (file)
 #define R8A7791_CLK_SCU_ALL            17
 #define R8A7791_CLK_SCU_DVC1           18
 #define R8A7791_CLK_SCU_DVC0           19
+#define R8A7791_CLK_SCU_CTU1_MIX1      20
+#define R8A7791_CLK_SCU_CTU0_MIX0      21
 #define R8A7791_CLK_SCU_SRC9           22
 #define R8A7791_CLK_SCU_SRC8           23
 #define R8A7791_CLK_SCU_SRC7           24
diff --git a/include/dt-bindings/clock/r8a7793-clock.h b/include/dt-bindings/clock/r8a7793-clock.h
new file mode 100644 (file)
index 0000000..1579e07
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * r8a7793 clock definition
+ *
+ * Copyright (C) 2014  Renesas Electronics Corporation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef __DT_BINDINGS_CLOCK_R8A7793_H__
+#define __DT_BINDINGS_CLOCK_R8A7793_H__
+
+/* CPG */
+#define R8A7793_CLK_MAIN               0
+#define R8A7793_CLK_PLL0               1
+#define R8A7793_CLK_PLL1               2
+#define R8A7793_CLK_PLL3               3
+#define R8A7793_CLK_LB                 4
+#define R8A7793_CLK_QSPI               5
+#define R8A7793_CLK_SDH                        6
+#define R8A7793_CLK_SD0                        7
+#define R8A7793_CLK_Z                  8
+#define R8A7793_CLK_RCAN               9
+#define R8A7793_CLK_ADSP               10
+
+/* MSTP0 */
+#define R8A7793_CLK_MSIOF0             0
+
+/* MSTP1 */
+#define R8A7793_CLK_VCP0               1
+#define R8A7793_CLK_VPC0               3
+#define R8A7793_CLK_SSP1               9
+#define R8A7793_CLK_TMU1               11
+#define R8A7793_CLK_3DG                        12
+#define R8A7793_CLK_2DDMAC             15
+#define R8A7793_CLK_FDP1_1             18
+#define R8A7793_CLK_FDP1_0             19
+#define R8A7793_CLK_TMU3               21
+#define R8A7793_CLK_TMU2               22
+#define R8A7793_CLK_CMT0               24
+#define R8A7793_CLK_TMU0               25
+#define R8A7793_CLK_VSP1_DU1           27
+#define R8A7793_CLK_VSP1_DU0           28
+#define R8A7793_CLK_VSP1_S             31
+
+/* MSTP2 */
+#define R8A7793_CLK_SCIFA2             2
+#define R8A7793_CLK_SCIFA1             3
+#define R8A7793_CLK_SCIFA0             4
+#define R8A7793_CLK_MSIOF2             5
+#define R8A7793_CLK_SCIFB0             6
+#define R8A7793_CLK_SCIFB1             7
+#define R8A7793_CLK_MSIOF1             8
+#define R8A7793_CLK_SCIFB2             16
+#define R8A7793_CLK_SYS_DMAC1          18
+#define R8A7793_CLK_SYS_DMAC0          19
+
+/* MSTP3 */
+#define R8A7793_CLK_TPU0               4
+#define R8A7793_CLK_SDHI2              11
+#define R8A7793_CLK_SDHI1              12
+#define R8A7793_CLK_SDHI0              14
+#define R8A7793_CLK_MMCIF0             15
+#define R8A7793_CLK_IIC0               18
+#define R8A7793_CLK_PCIEC              19
+#define R8A7793_CLK_IIC1               23
+#define R8A7793_CLK_SSUSB              28
+#define R8A7793_CLK_CMT1               29
+#define R8A7793_CLK_USBDMAC0           30
+#define R8A7793_CLK_USBDMAC1           31
+
+/* MSTP4 */
+#define R8A7793_CLK_IRQC               7
+
+/* MSTP5 */
+#define R8A7793_CLK_AUDIO_DMAC1         1
+#define R8A7793_CLK_AUDIO_DMAC0         2
+#define R8A7793_CLK_ADSP_MOD           6
+#define R8A7793_CLK_THERMAL            22
+#define R8A7793_CLK_PWM                        23
+
+/* MSTP7 */
+#define R8A7793_CLK_EHCI               3
+#define R8A7793_CLK_HSUSB              4
+#define R8A7793_CLK_HSCIF2             13
+#define R8A7793_CLK_SCIF5              14
+#define R8A7793_CLK_SCIF4              15
+#define R8A7793_CLK_HSCIF1             16
+#define R8A7793_CLK_HSCIF0             17
+#define R8A7793_CLK_SCIF3              18
+#define R8A7793_CLK_SCIF2              19
+#define R8A7793_CLK_SCIF1              20
+#define R8A7793_CLK_SCIF0              21
+#define R8A7793_CLK_DU1                        23
+#define R8A7793_CLK_DU0                        24
+#define R8A7793_CLK_LVDS0              26
+
+/* MSTP8 */
+#define R8A7793_CLK_IPMMU_SGX          0
+#define R8A7793_CLK_VIN2               9
+#define R8A7793_CLK_VIN1               10
+#define R8A7793_CLK_VIN0               11
+#define R8A7793_CLK_ETHER              13
+#define R8A7793_CLK_SATA1              14
+#define R8A7793_CLK_SATA0              15
+
+/* MSTP9 */
+#define R8A7793_CLK_GPIO7              4
+#define R8A7793_CLK_GPIO6              5
+#define R8A7793_CLK_GPIO5              7
+#define R8A7793_CLK_GPIO4              8
+#define R8A7793_CLK_GPIO3              9
+#define R8A7793_CLK_GPIO2              10
+#define R8A7793_CLK_GPIO1              11
+#define R8A7793_CLK_GPIO0              12
+#define R8A7793_CLK_RCAN1              15
+#define R8A7793_CLK_RCAN0              16
+#define R8A7793_CLK_QSPI_MOD           17
+#define R8A7793_CLK_I2C5               25
+#define R8A7793_CLK_IICDVFS            26
+#define R8A7793_CLK_I2C4               27
+#define R8A7793_CLK_I2C3               28
+#define R8A7793_CLK_I2C2               29
+#define R8A7793_CLK_I2C1               30
+#define R8A7793_CLK_I2C0               31
+
+/* MSTP10 */
+#define R8A7793_CLK_SSI_ALL            5
+#define R8A7793_CLK_SSI9               6
+#define R8A7793_CLK_SSI8               7
+#define R8A7793_CLK_SSI7               8
+#define R8A7793_CLK_SSI6               9
+#define R8A7793_CLK_SSI5               10
+#define R8A7793_CLK_SSI4               11
+#define R8A7793_CLK_SSI3               12
+#define R8A7793_CLK_SSI2               13
+#define R8A7793_CLK_SSI1               14
+#define R8A7793_CLK_SSI0               15
+#define R8A7793_CLK_SCU_ALL            17
+#define R8A7793_CLK_SCU_DVC1           18
+#define R8A7793_CLK_SCU_DVC0           19
+#define R8A7793_CLK_SCU_SRC9           22
+#define R8A7793_CLK_SCU_SRC8           23
+#define R8A7793_CLK_SCU_SRC7           24
+#define R8A7793_CLK_SCU_SRC6           25
+#define R8A7793_CLK_SCU_SRC5           26
+#define R8A7793_CLK_SCU_SRC4           27
+#define R8A7793_CLK_SCU_SRC3           28
+#define R8A7793_CLK_SCU_SRC2           29
+#define R8A7793_CLK_SCU_SRC1           30
+#define R8A7793_CLK_SCU_SRC0           31
+
+/* MSTP11 */
+#define R8A7793_CLK_SCIFA3             6
+#define R8A7793_CLK_SCIFA4             7
+#define R8A7793_CLK_SCIFA5             8
+
+#endif /* __DT_BINDINGS_CLOCK_R8A7793_H__ */
index b00bbc9..774dc1e 100644 (file)
@@ -14,6 +14,7 @@
 #define MUX_MODE6      6
 #define MUX_MODE7      7
 #define MUX_MODE8      8
+#define MUX_MODE9      9
 
 #define PULL_DISABLE           (1 << 16)
 #define PULL_UP                        (1 << 17)
index 7448edf..4379e29 100644 (file)
 #define MUX_MODE14     0xe
 #define MUX_MODE15     0xf
 
+/* Certain pins need virtual mode, but note: they may glitch */
+#define MUX_VIRTUAL_MODE0      (MODE_SELECT | (0x0 << 4))
+#define MUX_VIRTUAL_MODE1      (MODE_SELECT | (0x1 << 4))
+#define MUX_VIRTUAL_MODE2      (MODE_SELECT | (0x2 << 4))
+#define MUX_VIRTUAL_MODE3      (MODE_SELECT | (0x3 << 4))
+#define MUX_VIRTUAL_MODE4      (MODE_SELECT | (0x4 << 4))
+#define MUX_VIRTUAL_MODE5      (MODE_SELECT | (0x5 << 4))
+#define MUX_VIRTUAL_MODE6      (MODE_SELECT | (0x6 << 4))
+#define MUX_VIRTUAL_MODE7      (MODE_SELECT | (0x7 << 4))
+#define MUX_VIRTUAL_MODE8      (MODE_SELECT | (0x8 << 4))
+#define MUX_VIRTUAL_MODE9      (MODE_SELECT | (0x9 << 4))
+#define MUX_VIRTUAL_MODE10     (MODE_SELECT | (0xa << 4))
+#define MUX_VIRTUAL_MODE11     (MODE_SELECT | (0xb << 4))
+#define MUX_VIRTUAL_MODE12     (MODE_SELECT | (0xc << 4))
+#define MUX_VIRTUAL_MODE13     (MODE_SELECT | (0xd << 4))
+#define MUX_VIRTUAL_MODE14     (MODE_SELECT | (0xe << 4))
+#define MUX_VIRTUAL_MODE15     (MODE_SELECT | (0xf << 4))
+
+#define MODE_SELECT            (1 << 8)
+
 #define PULL_ENA               (0 << 16)
 #define PULL_DIS               (1 << 16)
 #define PULL_UP                        (1 << 17)
diff --git a/include/dt-bindings/reset/altr,rst-mgr-a10.h b/include/dt-bindings/reset/altr,rst-mgr-a10.h
new file mode 100644 (file)
index 0000000..acb0bbf
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2014, Steffen Trumtrar <s.trumtrar@pengutronix.de>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef _DT_BINDINGS_RESET_ALTR_RST_MGR_A10_H
+#define _DT_BINDINGS_RESET_ALTR_RST_MGR_A10_H
+
+/* MPUMODRST */
+#define CPU0_RESET             0
+#define CPU1_RESET             1
+#define WDS_RESET              2
+#define SCUPER_RESET           3
+
+/* PER0MODRST */
+#define EMAC0_RESET            32
+#define EMAC1_RESET            33
+#define EMAC2_RESET            34
+#define USB0_RESET             35
+#define USB1_RESET             36
+#define NAND_RESET             37
+#define QSPI_RESET             38
+#define SDMMC_RESET            39
+#define EMAC0_OCP_RESET                40
+#define EMAC1_OCP_RESET                41
+#define EMAC2_OCP_RESET                42
+#define USB0_OCP_RESET         43
+#define USB1_OCP_RESET         44
+#define NAND_OCP_RESET         45
+#define QSPI_OCP_RESET         46
+#define SDMMC_OCP_RESET                47
+#define DMA_RESET              48
+#define SPIM0_RESET            49
+#define SPIM1_RESET            50
+#define SPIS0_RESET            51
+#define SPIS1_RESET            52
+#define DMA_OCP_RESET          53
+#define EMAC_PTP_RESET         54
+/* 55 is empty*/
+#define DMAIF0_RESET           56
+#define DMAIF1_RESET           57
+#define DMAIF2_RESET           58
+#define DMAIF3_RESET           59
+#define DMAIF4_RESET           60
+#define DMAIF5_RESET           61
+#define DMAIF6_RESET           62
+#define DMAIF7_RESET           63
+
+/* PER1MODRST */
+#define L4WD0_RESET            64
+#define L4WD1_RESET            65
+#define L4SYSTIMER0_RESET      66
+#define L4SYSTIMER1_RESET      67
+#define SPTIMER0_RESET         68
+#define SPTIMER1_RESET         69
+/* 70-71 is reserved */
+#define I2C0_RESET             72
+#define I2C1_RESET             73
+#define I2C2_RESET             74
+#define I2C3_RESET             75
+#define I2C4_RESET             76
+/* 77-79 is reserved */
+#define UART0_RESET            80
+#define UART1_RESET            81
+/* 82-87 is reserved */
+#define GPIO0_RESET            88
+#define GPIO1_RESET            89
+#define GPIO2_RESET            90
+
+/* BRGMODRST */
+#define HPS2FPGA_RESET         96
+#define LWHPS2FPGA_RESET       97
+#define FPGA2HPS_RESET         98
+#define F2SSDRAM0_RESET                99
+#define F2SSDRAM1_RESET                100
+#define F2SSDRAM2_RESET                101
+#define DDRSCH_RESET           102
+
+/* SYSMODRST*/
+#define ROM_RESET              128
+#define OCRAM_RESET            129
+/* 130 is reserved */
+#define FPGAMGR_RESET          131
+#define S2F_RESET              132
+#define SYSDBG_RESET           133
+#define OCRAM_OCP_RESET                134
+
+/* COLDMODRST */
+#define CLKMGRCOLD_RESET       160
+/* 161-162 is reserved */
+#define S2FCOLD_RESET          163
+#define TIMESTAMPCOLD_RESET    164
+#define TAPCOLD_RESET          165
+#define HMCCOLD_RESET          166
+#define IOMGRCOLD_RESET                167
+
+/* NRSTMODRST */
+#define NRSTPINOE_RESET                192
+
+/* DBGMODRST */
+#define DBG_RESET              224
+#endif