]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
Merge tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 17 Feb 2015 17:36:52 +0000 (09:36 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 17 Feb 2015 17:36:52 +0000 (09:36 -0800)
Pull ARM SoC DT updates from Olof Johansson:
 "DT changes continue to be the bulk of our merge window contents.

  We continue to have a large set of changes across the board as new
  platforms and drivers are added.

  Some of the new platforms are:
   - Alphascale ASM9260
   - Marvell Armada 388
   - CSR Atlas7
   - TI Davinci DM816x
   - Hisilicon HiP01
   - ST STiH418

  There have also been some sweeping changes, including relicensing of
  DTS contents from GPL to GPLv2+/X11 so that the same files can be
  reused in other non-GPL projects more easily.  There's also been
  changes to the DT Makefile to make it a little less conflict-ridden
  and churny down the road"

* tag 'dt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (330 commits)
  ARM: dts: Add PPMU node for exynos4412-trats2
  ARM: dts: Add PPMU node for exynos3250-monk and exynos3250-rinato
  ARM: dts: Add PPMU dt node for exynos4 and exynos4210
  ARM: dts: Add PPMU dt node for exynos3250
  ARM: dts: add mipi dsi device node for exynos4415
  ARM: dts: add fimd device node for exynos4415
  ARM: dts: Add syscon phandle to the video-phy node for Exynos4
  ARM: dts: Add sound nodes for exynos4412-trats2
  ARM: dts: Fix CLK_MOUT_CAMn parent clocks assignment for exynos4412-trats2
  ARM: dts: Fix CLK_UART_ISP_SCLK clock assignment in exynos4x12.dtsi
  ARM: dts: Add max77693 charger node for exynos4412-trats2
  ARM: dts: Switch max77686 regulators to GPIO control for exynos4412-trats2
  ARM: dts: Add suspend configuration for max77686 regulators for exynos4412-trats2
  ARM: dts: Add Maxim 77693 fuel gauge node for exynos4412-trats2
  ARM: dts: am57xx-beagle-x15: Fix USB2 mode
  ARM: dts: am57xx-beagle-x15: Add extcon nodes for USB
  ARM: dts: dra72-evm: Add extcon nodes for USB
  ARM: dts: dra7-evm: Add extcon nodes for USB
  ARM: dts: rockchip: move the hdmi ddc-i2c-bus property to the actual boards
  ARM: dts: rockchip: enable vops and hdmi output on rk3288-firefly and -evb
  ...

47 files changed:
1  2 
Documentation/devicetree/bindings/serial/of-serial.txt
Documentation/devicetree/bindings/vendor-prefixes.txt
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/armada-370-netgear-rn102.dts
arch/arm/boot/dts/armada-370-netgear-rn104.dts
arch/arm/boot/dts/armada-38x.dtsi
arch/arm/boot/dts/armada-xp-netgear-rn2120.dts
arch/arm/boot/dts/at91sam9263.dtsi
arch/arm/boot/dts/berlin2q.dtsi
arch/arm/boot/dts/dra7-evm.dts
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/exynos4.dtsi
arch/arm/boot/dts/exynos4210-trats.dts
arch/arm/boot/dts/exynos4210-universal_c210.dts
arch/arm/boot/dts/exynos4210.dtsi
arch/arm/boot/dts/exynos4412-odroid-common.dtsi
arch/arm/boot/dts/exynos4412-trats2.dts
arch/arm/boot/dts/exynos4x12.dtsi
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5420.dtsi
arch/arm/boot/dts/imx6qdl.dtsi
arch/arm/boot/dts/imx6sx-sdb.dts
arch/arm/boot/dts/omap3-n900.dts
arch/arm/boot/dts/r8a7790-lager.dts
arch/arm/boot/dts/r8a7791-koelsch.dts
arch/arm/boot/dts/rk3288-evb-rk808.dts
arch/arm/boot/dts/rk3288-evb.dtsi
arch/arm/boot/dts/rk3288.dtsi
arch/arm/boot/dts/sama5d3xmb.dtsi
arch/arm/boot/dts/sama5d4.dtsi
arch/arm/boot/dts/sun4i-a10.dtsi
arch/arm/boot/dts/sun5i-a10s-olinuxino-micro.dts
arch/arm/boot/dts/sun5i-a10s.dtsi
arch/arm/boot/dts/sun5i-a13-hsg-h702.dts
arch/arm/boot/dts/sun5i-a13-olinuxino-micro.dts
arch/arm/boot/dts/sun5i-a13-olinuxino.dts
arch/arm/boot/dts/sun5i-a13.dtsi
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun7i-a20-bananapi.dts
arch/arm/boot/dts/sun7i-a20-hummingbird.dts
arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
arch/arm/boot/dts/sun7i-a20.dtsi
arch/arm/boot/dts/sun8i-a23.dtsi
arch/arm/boot/dts/sun9i-a80-optimus.dts
arch/arm/boot/dts/sun9i-a80.dtsi
arch/arm/boot/dts/vf610-twr.dts
include/dt-bindings/clock/rk3288-cru.h

index bea60ef6cdc52c0941fe537511a32fef82c5983f,93e249c78060ea6fa8404d9ace638525944b3573..91d5ab0e60fc4eda6894ea94213bfb1ca8eb4572
@@@ -8,10 -8,7 +8,10 @@@ Required properties
        - "ns16550"
        - "ns16750"
        - "ns16850"
 -      - "nvidia,tegra20-uart"
 +      - For Tegra20, must contain "nvidia,tegra20-uart"
 +      - For other Tegra, must contain '"nvidia,<chip>-uart",
 +        "nvidia,tegra20-uart"' where <chip> is tegra30, tegra114, tegra124,
 +        tegra132, or tegra210.
        - "nxp,lpc3220-uart"
        - "ralink,rt2880-uart"
        - "ibm,qpace-nwp-serial"
@@@ -19,6 -16,7 +19,7 @@@
        - "altr,16550-FIFO64"
        - "altr,16550-FIFO128"
        - "fsl,16550-FIFO64"
+       - "fsl,ns16550"
        - "serial" if the port type is unknown.
  - reg : offset and length of the register set for the device.
  - interrupts : should contain uart interrupt.
@@@ -43,6 -41,17 +44,17 @@@ Optional properties
    driver is allowed to detect support for the capability even without this
    property.
  
+ Note:
+ * fsl,ns16550:
+   ------------
+   Freescale DUART is very similar to the PC16552D (and to a
+   pair of NS16550A), albeit with some nonstandard behavior such as
+   erratum A-004737 (relating to incorrect BRK handling).
+   Represents a single port that is compatible with the DUART found
+   on many Freescale chips (examples include mpc8349, mpc8548,
+   mpc8641d, p4080 and ls2085a).
  Example:
  
        uart@80230000 {
index 0229b71dc74bcf5d17a8191f33e65f381a36d5a2,e02e14d95e0f506e2bf86617a40b264efa3d49d1..389ca1347a771cb049994db077fc38d2d04b7020
@@@ -4,14 -4,14 +4,15 @@@ This isn't an exhaustive list, but you 
  using them to avoid name-space collisions.
  
  abilis        Abilis Systems
 +abcn  Abracon Corporation
  active-semi   Active-Semi International Inc
  ad    Avionic Design GmbH
  adapteva      Adapteva, Inc.
 +adh   AD Holdings Plc.
  adi   Analog Devices, Inc.
  aeroflexgaisler       Aeroflex Gaisler AB
 -ak    Asahi Kasei Corp.
  allwinner     Allwinner Technology Co., Ltd.
+ alphascale    AlphaScale Integrated Circuits Systems, Inc.
  altr  Altera Corp.
  amcc  Applied Micro Circuits Corporation (APM, formally AMCC)
  amd   Advanced Micro Devices (AMD), Inc.
@@@ -21,11 -21,9 +22,11 @@@ amstaos     AMS-Taos Inc
  apm   Applied Micro Circuits Corporation (APM)
  arm   ARM Ltd.
  armadeus      ARMadeus Systems SARL
 +asahi-kasei   Asahi Kasei Corp.
  atmel Atmel Corporation
  auo   AU Optronics Corporation
  avago Avago Technologies
 +avic  Shanghai AVIC Optoelectronics Co., Ltd.
  bosch Bosch Sensortec GmbH
  brcm  Broadcom Corporation
  buffalo       Buffalo, Inc.
@@@ -34,13 -32,13 +35,15 @@@ capella    Capella Microsystems, In
  cavium        Cavium, Inc.
  cdns  Cadence Design Systems Inc.
  chipidea      Chipidea, Inc
+ chipspark     ChipSPARK
  chrp  Common Hardware Reference Platform
  chunghwa      Chunghwa Picture Tubes Ltd.
  cirrus        Cirrus Logic, Inc.
+ cloudengines  Cloud Engines, Inc.
  cnm   Chips&Media, Inc.
 +cnxt  Conexant Systems, Inc.
  cortina       Cortina Systems, Inc.
 +cosmic        Cosmic Circuits
  crystalfontz  Crystalfontz America, Inc.
  dallas        Maxim Integrated Products (formerly Dallas Semiconductor)
  davicom       DAVICOM Semiconductor, Inc.
@@@ -59,17 -57,15 +62,18 @@@ epcos      EPCOS A
  epfl  Ecole Polytechnique Fédérale de Lausanne
  epson Seiko Epson Corp.
  est   ESTeem Wireless Modems
 +ettus NI Ettus Research
  eukrea  Eukréa Electromatique
  everest       Everest Semiconductor Co. Ltd.
 +everspin      Everspin Technologies, Inc.
  excito        Excito
  fcs   Fairchild Semiconductor
+ firefly       Firefly
  fsl   Freescale Semiconductor
  GEFanuc       GE Fanuc Intelligent Platforms Embedded Systems, Inc.
  gef   GE Fanuc Intelligent Platforms Embedded Systems, Inc.
  geniatech     Geniatech, Inc.
 +giantplus     Giantplus Technology Co., Ltd.
  globalscale   Globalscale Technologies, Inc.
  gmt   Global Mixed-mode Technology, Inc.
  google        Google, Inc.
@@@ -77,7 -73,6 +81,7 @@@ gumstix       Gumstix, Inc
  gw    Gateworks Corporation
  hannstar      HannStar Display Corporation
  haoyu Haoyu Microelectronic Co. Ltd.
 +himax Himax Technologies, Inc.
  hisilicon     Hisilicon Limited.
  hit   Hitachi Ltd.
  honeywell     Honeywell
@@@ -91,7 -86,8 +95,7 @@@ innolux       Innolux Corporatio
  intel Intel Corporation
  intercontrol  Inter Control Group
  isee  ISEE 2007 S.L.
 -isil    Intersil (deprecated, use isl)
 -isl   Intersil
 +isil  Intersil
  karo  Ka-Ro electronics GmbH
  keymile       Keymile GmbH
  lacie LaCie
@@@ -126,9 -122,7 +130,9 @@@ nvidia     NVIDI
  nxp   NXP Semiconductors
  onnn  ON Semiconductor Corp.
  opencores     OpenCores.org
 +ovti  OmniVision Technologies
  panasonic     Panasonic Corporation
 +parade        Parade Technologies Inc.
  pericom       Pericom Technology Inc.
  phytec        PHYTEC Messtechnik GmbH
  picochip      Picochip Ltd
@@@ -137,7 -131,6 +141,7 @@@ pixcir  PIXCIR MICROELECTRONICS Co., Lt
  powervr       PowerVR (deprecated, use img)
  qca   Qualcomm Atheros, Inc.
  qcom  Qualcomm Technologies, Inc
 +qemu  QEMU, a generic and open source machine emulator and virtualizer
  qnap  QNAP Systems, Inc.
  radxa Radxa
  raidsonic     RaidSonic Technology GmbH
@@@ -152,10 -145,8 +156,10 @@@ sandisk  Sandisk Corporatio
  sbs   Smart Battery System
  schindler     Schindler
  seagate       Seagate Technology PLC
 +semtech       Semtech Corporation
  sil   Silicon Image
  silabs        Silicon Laboratories
 +siliconmitus  Silicon Mitus, Inc.
  simtek
  sii   Seiko Instruments, Inc.
  silergy       Silergy Corp.
@@@ -166,7 -157,6 +170,7 @@@ snps       Synopsys, Inc
  solidrun      SolidRun
  sony  Sony Corporation
  spansion      Spansion Inc.
 +sprd  Spreadtrum Communications Inc.
  st    STMicroelectronics
  ste   ST-Ericsson
  stericsson    ST-Ericsson
@@@ -178,12 -168,10 +182,12 @@@ tlm     Trusted Logic Mobilit
  toradex       Toradex AG
  toshiba       Toshiba Corporation
  toumaz        Toumaz
 +truly Truly Semiconductors Limited
  usi   Universal Scientific Industrial Co., Ltd.
  v3    V3 Semiconductor
  variscite     Variscite Ltd.
  via   VIA Technologies, Inc.
 +virtio        Virtual I/O Device Specification, developed by the OASIS consortium
  voipac        Voipac Technologies s.r.o.
  winbond Winbond Electronics corp.
  wlf   Wolfson Microelectronics
index 19cb6fcecf89d169867d602ce69723bb6b43a38e,a8873b8d9ed13a24da9409bab22e4d264ea7a40f..a1c776b8dcec51554879d1e001f7f96bd653efd8
@@@ -1,83 -1,91 +1,91 @@@
  ifeq ($(CONFIG_OF),y)
  
+ dtb-$(CONFIG_MACH_ASM9260) += \
+       alphascale-asm9260-devkit.dtb
  # Keep at91 dtb files sorted alphabetically for each SoC
- # rm9200
- dtb-$(CONFIG_ARCH_AT91) += at91rm9200ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += mpa1600.dtb
- # sam9260
- dtb-$(CONFIG_ARCH_AT91) += animeo_ip.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91-qil_a9260.dtb
- dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb
- dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb
- dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb
- dtb-$(CONFIG_ARCH_AT91) += tny_a9260.dtb
- dtb-$(CONFIG_ARCH_AT91) += usb_a9260.dtb
- # sam9261
- dtb-$(CONFIG_ARCH_AT91) += at91sam9261ek.dtb
- # sam9263
- dtb-$(CONFIG_ARCH_AT91) += at91sam9263ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += tny_a9263.dtb
- dtb-$(CONFIG_ARCH_AT91) += usb_a9263.dtb
- # sam9g20
- dtb-$(CONFIG_ARCH_AT91) += at91-foxg20.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9g20ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9g20ek_2mmc.dtb
- dtb-$(CONFIG_ARCH_AT91) += kizbox.dtb
- dtb-$(CONFIG_ARCH_AT91) += tny_a9g20.dtb
- dtb-$(CONFIG_ARCH_AT91) += usb_a9g20.dtb
- dtb-$(CONFIG_ARCH_AT91) += usb_a9g20_lpw.dtb
- # sam9g45
- dtb-$(CONFIG_ARCH_AT91) += at91sam9m10g45ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb
- # sam9n12
- dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb
- # sam9rl
- dtb-$(CONFIG_ARCH_AT91) += at91sam9rlek.dtb
- # sam9x5
- dtb-$(CONFIG_ARCH_AT91) += at91-ariag25.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91-cosino_mega2560.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9g25ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9g35ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9x25ek.dtb
- dtb-$(CONFIG_ARCH_AT91) += at91sam9x35ek.dtb
- # sama5d3
- dtb-$(CONFIG_ARCH_AT91)       += at91-sama5d3_xplained.dtb
- dtb-$(CONFIG_ARCH_AT91)       += sama5d31ek.dtb
- dtb-$(CONFIG_ARCH_AT91)       += sama5d33ek.dtb
- dtb-$(CONFIG_ARCH_AT91)       += sama5d34ek.dtb
- dtb-$(CONFIG_ARCH_AT91)       += sama5d35ek.dtb
- dtb-$(CONFIG_ARCH_AT91)       += sama5d36ek.dtb
- # sama5d4
- dtb-$(CONFIG_ARCH_AT91)       += at91-sama5d4ek.dtb
- dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb
- dtb-$(CONFIG_ARCH_AXXIA) += axm5516-amarillo.dtb
- dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
- dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b-plus.dtb
+ dtb-$(CONFIG_SOC_SAM_V4_V5) += \
+       at91rm9200ek.dtb \
+       mpa1600.dtb \
+       animeo_ip.dtb \
+       at91-qil_a9260.dtb \
+       aks-cdu.dtb \
+       ethernut5.dtb \
+       evk-pro3.dtb \
+       tny_a9260.dtb \
+       usb_a9260.dtb \
+       at91sam9261ek.dtb \
+       at91sam9263ek.dtb \
+       tny_a9263.dtb \
+       usb_a9263.dtb \
+       at91-foxg20.dtb \
+       at91sam9g20ek.dtb \
+       at91sam9g20ek_2mmc.dtb \
+       kizbox.dtb \
+       tny_a9g20.dtb \
+       usb_a9g20.dtb \
+       usb_a9g20_lpw.dtb \
+       at91sam9m10g45ek.dtb \
+       pm9g45.dtb \
+       at91sam9n12ek.dtb \
+       at91sam9rlek.dtb \
+       at91-ariag25.dtb \
+       at91-cosino_mega2560.dtb \
+       at91sam9g15ek.dtb \
+       at91sam9g25ek.dtb \
+       at91sam9g35ek.dtb \
+       at91sam9x25ek.dtb \
+       at91sam9x35ek.dtb
+ dtb-$(CONFIG_SOC_SAM_V7) += \
+       at91-sama5d3_xplained.dtb \
+       sama5d31ek.dtb \
+       sama5d33ek.dtb \
+       sama5d34ek.dtb \
+       sama5d35ek.dtb \
+       sama5d36ek.dtb \
+       at91-sama5d4ek.dtb
+ dtb-$(CONFIG_ARCH_ATLAS6) += \
+       atlas6-evb.dtb
+ dtb-$(CONFIG_ARCH_ATLAS7) += \
+       atlas7-evb.dtb
+ dtb-$(CONFIG_ARCH_AXXIA) += \
+       axm5516-amarillo.dtb
+ dtb-$(CONFIG_ARCH_BCM2835) += \
+       bcm2835-rpi-b.dtb \
+       bcm2835-rpi-b-plus.dtb
  dtb-$(CONFIG_ARCH_BCM_5301X) += \
        bcm4708-buffalo-wzr-1750dhp.dtb \
+       bcm4708-luxul-xwc-1000.dtb \
        bcm4708-netgear-r6250.dtb \
        bcm4708-netgear-r6300-v2.dtb \
        bcm47081-asus-rt-n18u.dtb \
-       bcm47081-buffalo-wzr-600dhp2.dtb
- dtb-$(CONFIG_ARCH_BCM_63XX) += bcm963138dvt.dtb
- dtb-$(CONFIG_ARCH_BCM_CYGNUS) += bcm911360_entphn.dtb \
+       bcm47081-buffalo-wzr-600dhp2.dtb \
+       bcm47081-buffalo-wzr-900dhp.dtb
+ dtb-$(CONFIG_ARCH_BCM_63XX) += \
+       bcm963138dvt.dtb
+ dtb-$(CONFIG_ARCH_BCM_CYGNUS) += \
+       bcm911360_entphn.dtb \
        bcm911360k.dtb \
        bcm958300k.dtb
- dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \
+ dtb-$(CONFIG_ARCH_BCM_MOBILE) += \
+       bcm28155-ap.dtb \
        bcm21664-garnet.dtb
  dtb-$(CONFIG_ARCH_BERLIN) += \
-       berlin2-sony-nsz-gs7.dtb        \
-       berlin2cd-google-chromecast.dtb \
+       berlin2-sony-nsz-gs7.dtb \
+       berlin2cd-google-chromecast.dtb \
        berlin2q-marvell-dmp.dtb
  dtb-$(CONFIG_ARCH_BRCMSTB) += \
        bcm7445-bcm97445svmb.dtb
- dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \
+ dtb-$(CONFIG_ARCH_DAVINCI) += \
+       da850-enbw-cmc.dtb \
        da850-evm.dtb
- dtb-$(CONFIG_ARCH_EFM32) += efm32gg-dk3750.dtb
- dtb-$(CONFIG_ARCH_EXYNOS) += exynos3250-monk.dtb \
-       exynos3250-rinato.dtb \
+ dtb-$(CONFIG_ARCH_DIGICOLOR) += \
+       cx92755_equinox.dtb
+ dtb-$(CONFIG_ARCH_EFM32) += \
+       efm32gg-dk3750.dtb
+ dtb-$(CONFIG_ARCH_EXYNOS3) += \
+       exynos3250-monk.dtb \
+       exynos3250-rinato.dtb
+ dtb-$(CONFIG_ARCH_EXYNOS4) += \
        exynos4210-origen.dtb \
        exynos4210-smdkv310.dtb \
        exynos4210-trats.dtb \
@@@ -88,7 -96,8 +96,8 @@@
        exynos4412-origen.dtb \
        exynos4412-smdk4412.dtb \
        exynos4412-tiny4412.dtb \
-       exynos4412-trats2.dtb \
+       exynos4412-trats2.dtb
+ dtb-$(CONFIG_ARCH_EXYNOS5) += \
        exynos5250-arndale.dtb \
        exynos5250-smdk5250.dtb \
        exynos5250-snow.dtb \
        exynos5420-arndale-octa.dtb \
        exynos5420-peach-pit.dtb \
        exynos5420-smdk5420.dtb \
+       exynos5422-odroidxu3.dtb \
        exynos5440-sd5v1.dtb \
        exynos5440-ssdk5440.dtb \
        exynos5800-peach-pi.dtb
- dtb-$(CONFIG_ARCH_HI3xxx) += hi3620-hi4511.dtb
- dtb-$(CONFIG_ARCH_HIX5HD2) += hisi-x5hd2-dkb.dtb
- dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \
+ dtb-$(CONFIG_ARCH_HI3xxx) += \
+       hi3620-hi4511.dtb
+ dtb-$(CONFIG_ARCH_HIX5HD2) += \
+       hisi-x5hd2-dkb.dtb
+ dtb-$(CONFIG_ARCH_HIGHBANK) += \
+       highbank.dtb \
        ecx-2000.dtb
- dtb-$(CONFIG_ARCH_HIP04) += hip04-d01.dtb
- dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
+ dtb-$(CONFIG_ARCH_HIP01) += \
+       hip01-ca9x2.dtb
+ dtb-$(CONFIG_ARCH_HIP04) += \
+       hip04-d01.dtb
+ dtb-$(CONFIG_ARCH_INTEGRATOR) += \
+       integratorap.dtb \
        integratorcp.dtb
- dtb-$(CONFIG_ARCH_KEYSTONE) += k2hk-evm.dtb \
+ dtb-$(CONFIG_ARCH_KEYSTONE) += \
+       k2hk-evm.dtb \
        k2l-evm.dtb \
        k2e-evm.dtb
- dtb-$(CONFIG_MACH_KIRKWOOD) += kirkwood-b3.dtb \
+ dtb-$(CONFIG_MACH_KIRKWOOD) += \
+       kirkwood-b3.dtb \
+       kirkwood-blackarmor-nas220.dtb \
        kirkwood-cloudbox.dtb \
        kirkwood-d2net.dtb \
        kirkwood-db-88f6281.dtb \
        kirkwood-openrd-base.dtb \
        kirkwood-openrd-client.dtb \
        kirkwood-openrd-ultimate.dtb \
+       kirkwood-pogo_e02.dtb \
        kirkwood-rd88f6192.dtb \
        kirkwood-rd88f6281-z0.dtb \
        kirkwood-rd88f6281-a.dtb \
        kirkwood-ts219-6282.dtb \
        kirkwood-ts419-6281.dtb \
        kirkwood-ts419-6282.dtb
- dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
- dtb-$(CONFIG_ARCH_MARCO) += marco-evb.dtb
- dtb-$(CONFIG_MACH_MESON6) += meson6-atv1200.dtb
- dtb-$(CONFIG_ARCH_MMP) += pxa168-aspenite.dtb \
+ dtb-$(CONFIG_ARCH_LPC32XX) += \
+       ea3250.dtb phy3250.dtb
+ dtb-$(CONFIG_MACH_MESON6) += \
+       meson6-atv1200.dtb
+ dtb-$(CONFIG_ARCH_MMP) += \
+       pxa168-aspenite.dtb \
        pxa910-dkb.dtb \
        mmp2-brownstone.dtb
- dtb-$(CONFIG_ARCH_MOXART) += moxart-uc7112lx.dtb
- dtb-$(CONFIG_ARCH_MXC) += \
+ dtb-$(CONFIG_ARCH_MOXART) += \
+       moxart-uc7112lx.dtb
+ dtb-$(CONFIG_SOC_IMX1) += \
        imx1-ads.dtb \
-       imx1-apf9328.dtb \
+       imx1-apf9328.dtb
+ dtb-$(CONFIG_SOC_IMX25) += \
        imx25-eukrea-mbimxsd25-baseboard.dtb \
        imx25-eukrea-mbimxsd25-baseboard-cmo-qvga.dtb \
        imx25-eukrea-mbimxsd25-baseboard-dvi-svga.dtb \
        imx25-eukrea-mbimxsd25-baseboard-dvi-vga.dtb \
        imx25-karo-tx25.dtb \
-       imx25-pdk.dtb \
+       imx25-pdk.dtb
+ dtb-$(CONFIG_SOC_IMX31) += \
        imx27-apf27.dtb \
        imx27-apf27dev.dtb \
        imx27-eukrea-mbimxsd27-baseboard.dtb \
        imx27-pdk.dtb \
        imx27-phytec-phycore-rdk.dtb \
-       imx27-phytec-phycard-s-rdk.dtb \
-       imx31-bug.dtb \
+       imx27-phytec-phycard-s-rdk.dtb
+ dtb-$(CONFIG_SOC_IMX31) += \
+       imx31-bug.dtb
+ dtb-$(CONFIG_SOC_IMX35) += \
        imx35-eukrea-mbimxsd35-baseboard.dtb \
-       imx35-pdk.dtb \
-       imx50-evk.dtb \
+       imx35-pdk.dtb
+ dtb-$(CONFIG_SOC_IMX50) += \
+       imx50-evk.dtb
+ dtb-$(CONFIG_SOC_IMX51) += \
        imx51-apf51.dtb \
        imx51-apf51dev.dtb \
        imx51-babbage.dtb \
        imx51-digi-connectcore-jsk.dtb \
-       imx51-eukrea-mbimxsd51-baseboard.dtb \
+       imx51-eukrea-mbimxsd51-baseboard.dtb
+ dtb-$(CONFIG_SOC_IMX53) += \
        imx53-ard.dtb \
        imx53-m53evk.dtb \
        imx53-mba53.dtb \
        imx53-smd.dtb \
        imx53-tx53-x03x.dtb \
        imx53-tx53-x13x.dtb \
-       imx53-voipac-bsb.dtb \
+       imx53-voipac-bsb.dtb
+ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6dl-aristainetos_4.dtb \
        imx6dl-aristainetos_7.dtb \
        imx6dl-cubox-i.dtb \
        imx6dl-tx6dl-comtft.dtb \
        imx6dl-tx6u-801x.dtb \
        imx6dl-tx6u-811x.dtb \
+       imx6dl-udoo.dtb \
        imx6dl-wandboard.dtb \
        imx6dl-wandboard-revb1.dtb \
        imx6q-arm2.dtb \
        imx6q-sabresd.dtb \
        imx6q-sbc6x.dtb \
        imx6q-tbs2910.dtb \
-       imx6q-udoo.dtb \
-       imx6q-wandboard.dtb \
-       imx6q-wandboard-revb1.dtb \
        imx6q-tx6q-1010.dtb \
        imx6q-tx6q-1010-comtft.dtb \
        imx6q-tx6q-1020.dtb \
        imx6q-tx6q-1020-comtft.dtb \
        imx6q-tx6q-1110.dtb \
-       imx6sl-evk.dtb \
-       imx6sx-sdb.dtb \
+       imx6q-udoo.dtb \
+       imx6q-wandboard.dtb \
+       imx6q-wandboard-revb1.dtb
+ dtb-$(CONFIG_SOC_IMX6SL) += \
+       imx6sl-evk.dtb
+ dtb-$(CONFIG_SOC_IMX6SX) += \
+       imx6sx-sabreauto.dtb \
+       imx6sx-sdb.dtb
+ dtb-$(CONFIG_SOC_LS1021A) += \
        ls1021a-qds.dtb \
-       ls1021a-twr.dtb \
+       ls1021a-twr.dtb
+ dtb-$(CONFIG_SOC_VF610) += \
        vf500-colibri-eval-v3.dtb \
        vf610-colibri-eval-v3.dtb \
        vf610-cosmic.dtb \
        vf610-twr.dtb
- dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
+ dtb-$(CONFIG_ARCH_MXS) += \
+       imx23-evk.dtb \
        imx23-olinuxino.dtb \
        imx23-stmp378x_devb.dtb \
        imx28-apf28.dtb \
        imx28-m28evk.dtb \
        imx28-sps1.dtb \
        imx28-tx28.dtb
- dtb-$(CONFIG_ARCH_NOMADIK) += ste-nomadik-s8815.dtb \
+ dtb-$(CONFIG_ARCH_NOMADIK) += \
+       ste-nomadik-s8815.dtb \
        ste-nomadik-nhk15.dtb
- dtb-$(CONFIG_ARCH_NSPIRE) += nspire-cx.dtb \
+ dtb-$(CONFIG_ARCH_NSPIRE) += \
+       nspire-cx.dtb \
        nspire-tp.dtb \
        nspire-clp.dtb
- dtb-$(CONFIG_ARCH_OMAP2) += omap2420-h4.dtb \
+ dtb-$(CONFIG_ARCH_OMAP2) += \
+       omap2420-h4.dtb \
        omap2420-n800.dtb \
        omap2420-n810.dtb \
        omap2420-n810-wimax.dtb \
        omap2430-sdp.dtb
- dtb-$(CONFIG_ARCH_OMAP3) += am3517-craneboard.dtb \
+ dtb-$(CONFIG_ARCH_OMAP3) += \
+       am3517-craneboard.dtb \
        am3517-evm.dtb \
        am3517_mt_ventoux.dtb \
        omap3430-sdp.dtb \
        omap3-sbc-t3730.dtb \
        omap3-thunder.dtb \
        omap3-zoom3.dtb
- dtb-$(CONFIG_SOC_AM33XX) += am335x-base0033.dtb \
+ dtb-$(CONFIG_SOC_TI81XX) += \
+       dm8168-evm.dtb
+ dtb-$(CONFIG_SOC_AM33XX) += \
+       am335x-base0033.dtb \
        am335x-bone.dtb \
        am335x-boneblack.dtb \
        am335x-evm.dtb \
        am335x-nano.dtb \
        am335x-pepper.dtb \
        am335x-lxm.dtb
- dtb-$(CONFIG_ARCH_OMAP4) += omap4-duovero-parlor.dtb \
+ dtb-$(CONFIG_ARCH_OMAP4) += \
+       omap4-duovero-parlor.dtb \
        omap4-panda.dtb \
        omap4-panda-a4.dtb \
        omap4-panda-es.dtb \
        omap4-sdp-es23plus.dtb \
        omap4-var-dvk-om44.dtb \
        omap4-var-stk-om44.dtb
- dtb-$(CONFIG_SOC_AM43XX) += am43x-epos-evm.dtb \
+ dtb-$(CONFIG_SOC_AM43XX) += \
+       am43x-epos-evm.dtb \
        am437x-sk-evm.dtb \
+       am437x-idk-evm.dtb \
        am437x-gp-evm.dtb
- dtb-$(CONFIG_SOC_OMAP5) += omap5-cm-t54.dtb \
+ dtb-$(CONFIG_SOC_OMAP5) += \
+       omap5-cm-t54.dtb \
        omap5-sbc-t54.dtb \
        omap5-uevm.dtb
- dtb-$(CONFIG_SOC_DRA7XX) += dra7-evm.dtb \
+ dtb-$(CONFIG_SOC_DRA7XX) += \
+       dra7-evm.dtb \
        am57xx-beagle-x15.dtb \
        dra72-evm.dtb
- dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-d2-network.dtb \
+ dtb-$(CONFIG_ARCH_ORION5X) += \
+       orion5x-lacie-d2-network.dtb \
        orion5x-lacie-ethernet-disk-mini-v2.dtb \
        orion5x-maxtor-shared-storage-2.dtb \
        orion5x-rd88f5182-nas.dtb
- dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
+ dtb-$(CONFIG_ARCH_PRIMA2) += \
+       prima2-evb.dtb
  dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8064-cm-qs600.dtb \
        qcom-apq8064-ifc6410.dtb \
        qcom-msm8660-surf.dtb \
        qcom-msm8960-cdp.dtb \
        qcom-msm8974-sony-xperia-honami.dtb
- dtb-$(CONFIG_ARCH_REALVIEW) += arm-realview-pb1176.dtb
+ dtb-$(CONFIG_ARCH_REALVIEW) += \
+       arm-realview-pb1176.dtb
  dtb-$(CONFIG_ARCH_ROCKCHIP) += \
        rk3066a-bqcurie2.dtb \
        rk3066a-marsboard.dtb \
+       rk3066a-rayeager.dtb \
        rk3188-radxarock.dtb \
        rk3288-evb-act8846.dtb \
-       rk3288-evb-rk808.dtb
- dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb
- dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \
+       rk3288-evb-rk808.dtb \
+       rk3288-firefly-beta.dtb \
+       rk3288-firefly.dtb
+ dtb-$(CONFIG_ARCH_S3C24XX) += \
+       s3c2416-smdk2416.dtb
+ dtb-$(CONFIG_ARCH_S3C64XX) += \
+       s3c6410-mini6410.dtb \
        s3c6410-smdk6410.dtb
- dtb-$(CONFIG_ARCH_S5PV210) += s5pv210-aquila.dtb \
+ dtb-$(CONFIG_ARCH_S5PV210) += \
+       s5pv210-aquila.dtb \
        s5pv210-goni.dtb \
        s5pv210-smdkc110.dtb \
        s5pv210-smdkv210.dtb \
@@@ -410,47 -470,62 +470,61 @@@ dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += 
        r8a7778-bockw.dtb \
        r8a7778-bockw-reference.dtb \
        r8a7779-marzen.dtb \
 -      r8a7790-lager.dtb \
        sh7372-mackerel.dtb \
        sh73a0-kzm9g.dtb \
        sh73a0-kzm9g-reference.dtb
- dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d.dtb \
+ dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += \
+       emev2-kzm9d.dtb \
        r7s72100-genmai.dtb \
+       r8a73a4-ape6evm.dtb \
        r8a7740-armadillo800eva.dtb \
        r8a7779-marzen.dtb \
        r8a7790-lager.dtb \
        r8a7791-henninger.dtb \
        r8a7791-koelsch.dtb \
        r8a7794-alt.dtb
- dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_arria5_socdk.dtb \
+ dtb-$(CONFIG_ARCH_SOCFPGA) += \
+       socfpga_arria5_socdk.dtb \
        socfpga_arria10_socdk.dtb \
        socfpga_cyclone5_socdk.dtb \
        socfpga_cyclone5_sockit.dtb \
        socfpga_cyclone5_socrates.dtb \
        socfpga_vt.dtb
- dtb-$(CONFIG_ARCH_SPEAR13XX) += spear1310-evb.dtb \
+ dtb-$(CONFIG_ARCH_SPEAR13XX) += \
+       spear1310-evb.dtb \
        spear1340-evb.dtb
- dtb-$(CONFIG_ARCH_SPEAR3XX)+= spear300-evb.dtb \
+ dtb-$(CONFIG_ARCH_SPEAR3XX) += \
+       spear300-evb.dtb \
        spear310-evb.dtb \
        spear320-evb.dtb \
        spear320-hmi.dtb
- dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb
- dtb-$(CONFIG_ARCH_STI)+= stih407-b2120.dtb \
+ dtb-$(CONFIG_ARCH_SPEAR6XX) += \
+       spear600-evb.dtb
+ dtb-$(CONFIG_ARCH_STI) += \
+       stih407-b2120.dtb \
        stih410-b2120.dtb \
        stih415-b2000.dtb \
        stih415-b2020.dtb \
        stih416-b2000.dtb \
        stih416-b2020.dtb \
-       stih416-b2020e.dtb
+       stih416-b2020e.dtb \
+       stih418-b2199.dtb
  dtb-$(CONFIG_MACH_SUN4I) += \
        sun4i-a10-a1000.dtb \
        sun4i-a10-ba10-tvbox.dtb \
+       sun4i-a10-chuwi-v7-cw0825.dtb \
        sun4i-a10-cubieboard.dtb \
+       sun4i-a10-marsboard.dtb \
        sun4i-a10-mini-xplus.dtb \
+       sun4i-a10-mk802.dtb \
+       sun4i-a10-mk802ii.dtb \
        sun4i-a10-hackberry.dtb \
+       sun4i-a10-hyundai-a7hd.dtb \
        sun4i-a10-inet97fv2.dtb \
        sun4i-a10-olinuxino-lime.dtb \
        sun4i-a10-pcduino.dtb
  dtb-$(CONFIG_MACH_SUN5I) += \
+       sun5i-a10s-mk802.dtb \
        sun5i-a10s-olinuxino-micro.dtb \
        sun5i-a10s-r7-tv-dongle.dtb \
        sun5i-a13-hsg-h702.dtb \
@@@ -460,9 -535,11 +534,11 @@@ dtb-$(CONFIG_MACH_SUN6I) += 
        sun6i-a31-app4-evb1.dtb \
        sun6i-a31-colombus.dtb \
        sun6i-a31-hummingbird.dtb \
-       sun6i-a31-m9.dtb
+       sun6i-a31-m9.dtb \
+       sun6i-a31s-cs908.dtb
  dtb-$(CONFIG_MACH_SUN7I) += \
        sun7i-a20-bananapi.dtb \
+       sun7i-a20-bananapro.dtb \
        sun7i-a20-cubieboard2.dtb \
        sun7i-a20-cubietruck.dtb \
        sun7i-a20-hummingbird.dtb \
        sun7i-a20-olinuxino-micro.dtb \
        sun7i-a20-pcduino3.dtb
  dtb-$(CONFIG_MACH_SUN8I) += \
-       sun8i-a23-ippo-q8h-v5.dtb
+       sun8i-a23-ippo-q8h-v5.dtb \
+       sun8i-a23-ippo-q8h-v1.2.dtb
  dtb-$(CONFIG_MACH_SUN9I) += \
        sun9i-a80-optimus.dtb
- dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
+ dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += \
+       tegra20-harmony.dtb \
        tegra20-iris-512.dtb \
        tegra20-medcom-wide.dtb \
        tegra20-paz00.dtb \
        tegra20-tec.dtb \
        tegra20-trimslice.dtb \
        tegra20-ventana.dtb \
-       tegra20-whistler.dtb \
+       tegra20-whistler.dtb
+ dtb-$(CONFIG_ARCH_TEGRA_3x_SOC) += \
        tegra30-apalis-eval.dtb \
        tegra30-beaver.dtb \
        tegra30-cardhu-a02.dtb \
        tegra30-cardhu-a04.dtb \
-       tegra30-colibri-eval-v3.dtb \
+       tegra30-colibri-eval-v3.dtb
+ dtb-$(CONFIG_ARCH_TEGRA_114_SOC) += \
        tegra114-dalmore.dtb \
        tegra114-roth.dtb \
-       tegra114-tn7.dtb \
+       tegra114-tn7.dtb
+ dtb-$(CONFIG_ARCH_TEGRA_124_SOC) += \
        tegra124-jetson-tk1.dtb \
        tegra124-nyan-big.dtb \
        tegra124-venice2.dtb
- dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
- dtb-$(CONFIG_ARCH_U8500) += ste-snowball.dtb \
+ dtb-$(CONFIG_ARCH_U300) += \
+       ste-u300.dtb
+ dtb-$(CONFIG_ARCH_U8500) += \
+       ste-snowball.dtb \
        ste-hrefprev60-stuib.dtb \
        ste-hrefprev60-tvk.dtb \
        ste-hrefv60plus-stuib.dtb \
        ste-hrefv60plus-tvk.dtb \
        ste-ccu8540.dtb \
        ste-ccu9540.dtb
- dtb-$(CONFIG_ARCH_VERSATILE) += versatile-ab.dtb \
+ dtb-$(CONFIG_ARCH_VERSATILE) += \
+       versatile-ab.dtb \
        versatile-pb.dtb
- dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \
+ dtb-$(CONFIG_ARCH_VEXPRESS) += \
+       vexpress-v2p-ca5s.dtb \
        vexpress-v2p-ca9.dtb \
        vexpress-v2p-ca15-tc1.dtb \
        vexpress-v2p-ca15_a7.dtb
- dtb-$(CONFIG_ARCH_VIRT) += xenvm-4.2.dtb
- dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \
+ dtb-$(CONFIG_ARCH_VIRT) += \
+       xenvm-4.2.dtb
+ dtb-$(CONFIG_ARCH_VT8500) += \
+       vt8500-bv07.dtb \
        wm8505-ref.dtb \
        wm8650-mid.dtb \
        wm8750-apc8750.dtb \
@@@ -533,8 -621,10 +620,10 @@@ dtb-$(CONFIG_MACH_ARMADA_370) += 
  dtb-$(CONFIG_MACH_ARMADA_375) += \
        armada-375-db.dtb
  dtb-$(CONFIG_MACH_ARMADA_38X) += \
-       armada-385-db.dtb \
-       armada-385-rd.dtb
+       armada-385-db-ap.dtb \
+       armada-388-db.dtb \
+       armada-388-gp.dtb \
+       armada-388-rd.dtb
  dtb-$(CONFIG_MACH_ARMADA_XP) += \
        armada-xp-axpwifiap.dtb \
        armada-xp-db.dtb \
        armada-xp-netgear-rn2120.dtb \
        armada-xp-openblocks-ax3-4.dtb \
        armada-xp-synology-ds414.dtb
- dtb-$(CONFIG_MACH_DOVE) += dove-cm-a510.dtb \
+ dtb-$(CONFIG_MACH_DOVE) += \
+       dove-cm-a510.dtb \
        dove-cubox.dtb \
        dove-cubox-es.dtb \
        dove-d2plug.dtb \
        dove-d3plug.dtb \
        dove-dove-db.dtb
- dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aquaris5.dtb \
+ dtb-$(CONFIG_ARCH_MEDIATEK) += \
+       mt6589-aquaris5.dtb \
        mt6592-evb.dtb \
        mt8127-moose.dtb \
        mt8135-evbp1.dtb
  endif
  
  always                := $(dtb-y)
index 1c83b7ce0982501342eae101e05df9b366077a4e,7c5c4ff941ecd0af5d3d9609f1ffd3e15f03e1b0..3f8cc3845a5e9423f0536ee3c201af4a1b8c5e51
@@@ -3,10 -3,43 +3,43 @@@
   *
   * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
   *
-  * 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.
+  * 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/;
                                isl12057: isl12057@68 {
                                        compatible = "isil,isl12057";
                                        reg = <0x68>;
 +                                      isil,irq2-can-wakeup-machine;
                                };
  
                                g762: g762@3e {
index 5fbfe02964dc5a08c0da65ecf1bae7de18af359f,1de53b59283a49d1505ffb0f813930ac9a1964fb..99eb8a014ac631df0a26b992f571be829c467411
@@@ -3,10 -3,43 +3,43 @@@
   *
   * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
   *
-  * 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.
+  * 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/;
                                isl12057: isl12057@68 {
                                        compatible = "isil,isl12057";
                                        reg = <0x68>;
 +                                      isil,irq2-can-wakeup-machine;
                                };
  
                                g762: g762@3e {
index 2a9f4caac6437da52f1ea254010ca7c6b8d918ee,54ebce71f802cc8abb0eac81d0b44f17c02e1cc2..1dff30a81e247a12ecd88f1c37b2b8dd6a55d2c1
@@@ -7,9 -7,43 +7,43 @@@
   * Gregory CLEMENT <gregory.clement@free-electrons.com>
   * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
   *
-  * 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.
+  * 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.
   */
  
  #include "skeleton.dtsi"
@@@ -31,8 -65,7 +65,7 @@@
        };
  
        soc {
-               compatible = "marvell,armada380-mbus", "marvell,armada370-mbus",
-                            "simple-bus";
+               compatible = "marvell,armada380-mbus", "simple-bus";
                #address-cells = <2>;
                #size-cells = <1>;
                controller = <&mbusc>;
                                status = "disabled";
                        };
  
-                       serial@12000 {
+                       uart0: serial@12000 {
                                compatible = "snps,dw-apb-uart";
                                reg = <0x12000 0x100>;
                                reg-shift = <2>;
                                status = "disabled";
                        };
  
-                       pinctrl {
-                               compatible = "marvell,mv88f6820-pinctrl";
+                       pinctrl: pinctrl@18000 {
                                reg = <0x18000 0x20>;
+                               ge0_rgmii_pins: ge-rgmii-pins-0 {
+                                       marvell,pins = "mpp6", "mpp7", "mpp8",
+                                                      "mpp9", "mpp10", "mpp11",
+                                                      "mpp12", "mpp13", "mpp14",
+                                                      "mpp15", "mpp16", "mpp17";
+                                       marvell,function = "ge0";
+                               };
+                               ge1_rgmii_pins: ge-rgmii-pins-1 {
+                                       marvell,pins = "mpp21", "mpp27", "mpp28",
+                                                      "mpp29", "mpp30", "mpp31",
+                                                      "mpp32", "mpp37", "mpp38",
+                                                      "mpp39", "mpp40", "mpp41";
+                                       marvell,function = "ge1";
+                               };
+                               i2c0_pins: i2c-pins-0 {
+                                       marvell,pins = "mpp2", "mpp3";
+                                       marvell,function = "i2c0";
+                               };
+                               mdio_pins: mdio-pins {
+                                       marvell,pins = "mpp4", "mpp5";
+                                       marvell,function = "ge";
+                               };
+                               ref_clk0_pins: ref-clk-pins-0 {
+                                       marvell,pins = "mpp45";
+                                       marvell,function = "ref";
+                               };
+                               ref_clk1_pins: ref-clk-pins-1 {
+                                       marvell,pins = "mpp46";
+                                       marvell,function = "ref";
+                               };
+                               spi0_pins: spi-pins-0 {
+                                       marvell,pins = "mpp22", "mpp23", "mpp24",
+                                                      "mpp25";
+                                       marvell,function = "spi0";
+                               };
+                               spi1_pins: spi-pins-1 {
+                                       marvell,pins = "mpp56", "mpp57", "mpp58",
+                                                      "mpp59";
+                                       marvell,function = "spi1";
+                               };
+                               uart0_pins: uart-pins-0 {
+                                       marvell,pins = "mpp0", "mpp1";
+                                       marvell,function = "ua0";
+                               };
+                               uart1_pins: uart-pins-1 {
+                                       marvell,pins = "mpp19", "mpp20";
+                                       marvell,function = "ua1";
+                               };
+                               sdhci_pins: sdhci-pins {
+                                       marvell,pins = "mpp48", "mpp49", "mpp50",
+                                                      "mpp52", "mpp53", "mpp54",
+                                                      "mpp55", "mpp57", "mpp58",
+                                                      "mpp59";
+                                       marvell,function = "sd0";
+                               };
+                               sata0_pins: sata-pins-0 {
+                                       marvell,pins = "mpp20";
+                                       marvell,function = "sata0";
+                               };
+                               sata1_pins: sata-pins-1 {
+                                       marvell,pins = "mpp19";
+                                       marvell,function = "sata1";
+                               };
+                               sata2_pins: sata-pins-2 {
+                                       marvell,pins = "mpp47";
+                                       marvell,function = "sata2";
+                               };
+                               sata3_pins: sata-pins-3 {
+                                       marvell,pins = "mpp44";
+                                       marvell,function = "sata3";
+                               };
                        };
  
                        gpio0: gpio@18100 {
                                status = "disabled";
                        };
  
-                       mdio {
+                       mdio@72004 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "marvell,orion-mdio";
                                clocks = <&gateclk 4>;
                        };
  
 +                      rtc@a3800 {
 +                              compatible = "marvell,armada-380-rtc";
 +                              reg = <0xa3800 0x20>, <0x184a0 0x0c>;
 +                              reg-names = "rtc", "rtc-soc";
 +                              interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
 +                      };
 +
                        sata@a8000 {
                                compatible = "marvell,armada-380-ahci";
                                reg = <0xa8000 0x2000>;
index fc8bdfcd23486a6e28c14fd639119452e62e14f1,a7ceafd5808db36fc27fb45abb04031bc4828b89..99cb9a8401b40737287ae15dbe7e67c0ffb2619d
@@@ -3,10 -3,43 +3,43 @@@
   *
   * Copyright (C) 2013, Arnaud EBALARD <arno@natisbad.org>
   *
-  * 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.
+  * 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/;
                                isl12057: isl12057@68 {
                                        compatible = "isil,isl12057";
                                        reg = <0x68>;
 +                                      isil,irq2-can-wakeup-machine;
                                };
  
                                /* Controller for rear fan #1 of 3 (Protechnic
index e087a93bea268146bc3f82c6eaf341304f4a8836,d7e8a2420ad38a0dcba8b50debebffe5f280c2ef..1f67bb4c144eef2489891b63b64edda96402f100
                                        };
                                };
  
+                               ac97 {
+                                       pinctrl_ac97: ac97-0 {
+                                               atmel,pins =
+                                                       <AT91_PIOB 0 AT91_PERIPH_A AT91_PINCTRL_NONE    /* PB12 periph A AC97FS pin */
+                                                        AT91_PIOB 1 AT91_PERIPH_A AT91_PINCTRL_NONE    /* PB13 periph A AC97CK pin */
+                                                        AT91_PIOB 2 AT91_PERIPH_A AT91_PINCTRL_NONE    /* PB14 periph A AC97TX pin */
+                                                        AT91_PIOB 3 AT91_PERIPH_A AT91_PINCTRL_NONE>;  /* PB14 periph A AC97RX pin */
+                                       };
+                               };
                                pioA: gpio@fffff200 {
                                        compatible = "atmel,at91rm9200-gpio";
                                        reg = <0xfffff200 0x200>;
                                status = "disabled";
                        };
  
+                       ac97: sound@fffa0000 {
+                               compatible = "atmel,at91sam9263-ac97c";
+                               reg = <0xfffa0000 0x4000>;
+                               interrupts = <18 IRQ_TYPE_LEVEL_HIGH 5>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_ac97>;
+                               clocks = <&ac97_clk>;
+                               clock-names = "ac97_clk";
+                               status = "disabled";
+                       };
                        macb0: ethernet@fffbc000 {
                                compatible = "cdns,at32ap7000-macb", "cdns,macb";
                                reg = <0xfffbc000 0x100>;
                        interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&pinctrl_fb>;
 +                      clocks = <&lcd_clk>, <&lcd_clk>;
 +                      clock-names = "lcdc_clk", "hclk";
                        status = "disabled";
                };
  
index e2f61f27944e24fd45cc65518126f932409ea610,41a683fd079cf7d59c6fae78f16171af7405b3da..be5397288d24f355ed2a2ce7f63bc5772d5ccdf9
                ranges = <0 0xf7000000 0x1000000>;
                interrupt-parent = <&gic>;
  
+               pmu {
+                       compatible = "arm,cortex-a9-pmu";
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+               };
                sdhci0: sdhci@ab0000 {
                        compatible = "mrvl,pxav3-mmc";
                        reg = <0xab0000 0x200>;
@@@ -83,8 -91,7 +91,8 @@@
                        compatible = "mrvl,pxav3-mmc";
                        reg = <0xab1000 0x200>;
                        interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&chip CLKID_SDIO1XIN>;
 +                      clocks = <&chip CLKID_NFC_ECC>, <&chip CLKID_NFC>;
 +                      clock-names = "io", "core";
                        status = "disabled";
                };
  
                        compatible = "arm,cortex-a9-twd-timer";
                        reg = <0xad0600 0x20>;
                        clocks = <&chip CLKID_TWD>;
-                       interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                };
  
                gic: interrupt-controller@ad1000 {
                                interrupt-parent = <&gic>;
                                interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        };
 -
 -                      gpio4: gpio@5000 {
 -                              compatible = "snps,dw-apb-gpio";
 -                              reg = <0x5000 0x400>;
 -                              #address-cells = <1>;
 -                              #size-cells = <0>;
 -
 -                              porte: gpio-port@4 {
 -                                      compatible = "snps,dw-apb-gpio-port";
 -                                      gpio-controller;
 -                                      #gpio-cells = <2>;
 -                                      snps,nr-gpios = <32>;
 -                                      reg = <0>;
 -                              };
 -                      };
 -
 -                      gpio5: gpio@c000 {
 -                              compatible = "snps,dw-apb-gpio";
 -                              reg = <0xc000 0x400>;
 -                              #address-cells = <1>;
 -                              #size-cells = <0>;
 -
 -                              portf: gpio-port@5 {
 -                                      compatible = "snps,dw-apb-gpio-port";
 -                                      gpio-controller;
 -                                      #gpio-cells = <2>;
 -                                      snps,nr-gpios = <32>;
 -                                      reg = <0>;
 -                              };
 -                      };
                };
  
                chip: chip-control@ea0000 {
                        ranges = <0 0xfc0000 0x10000>;
                        interrupt-parent = <&sic>;
  
 +                      sm_gpio1: gpio@5000 {
 +                              compatible = "snps,dw-apb-gpio";
 +                              reg = <0x5000 0x400>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +
 +                              portf: gpio-port@5 {
 +                                      compatible = "snps,dw-apb-gpio-port";
 +                                      gpio-controller;
 +                                      #gpio-cells = <2>;
 +                                      snps,nr-gpios = <32>;
 +                                      reg = <0>;
 +                              };
 +                      };
 +
                        i2c2: i2c@7000 {
                                compatible = "snps,designware-i2c";
                                #address-cells = <1>;
                                status = "disabled";
                        };
  
 +                      sm_gpio0: gpio@c000 {
 +                              compatible = "snps,dw-apb-gpio";
 +                              reg = <0xc000 0x400>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +
 +                              porte: gpio-port@4 {
 +                                      compatible = "snps,dw-apb-gpio-port";
 +                                      gpio-controller;
 +                                      #gpio-cells = <2>;
 +                                      snps,nr-gpios = <32>;
 +                                      reg = <0>;
 +                              };
 +                      };
 +
                        sysctrl: pin-controller@d000 {
                                compatible = "marvell,berlin2q-system-ctrl";
                                reg = <0xd000 0x100>;
index ad4118f7e1a6106139af2a6bfe56d3534c306af9,c1d0ac7bd002f06f16a1288e0faceeab9dfde6a5..746cddb1b8f538e1d1fed717b077998f4a46adc8
                regulator-max-microvolt = <3300000>;
        };
  
+       extcon_usb1: extcon_usb1 {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&pcf_gpio_21 1 GPIO_ACTIVE_HIGH>;
+       };
+       extcon_usb2: extcon_usb2 {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpio = <&pcf_gpio_21 2 GPIO_ACTIVE_HIGH>;
+       };
        vtt_fixed: fixedregulator-vtt {
                compatible = "regulator-fixed";
                regulator-name = "vtt_fixed";
                        };
                };
        };
+       pcf_gpio_21: gpio@21 {
+               compatible = "ti,pcf8575";
+               reg = <0x21>;
+               lines-initial-states = <0x1408>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
  };
  
  &i2c2 {
                };
                partition@5 {
                        label = "QSPI.u-boot-spl-os";
 -                      reg = <0x00140000 0x00010000>;
 +                      reg = <0x00140000 0x00080000>;
                };
                partition@6 {
                        label = "QSPI.u-boot-env";
 -                      reg = <0x00150000 0x00010000>;
 +                      reg = <0x001c0000 0x00010000>;
                };
                partition@7 {
                        label = "QSPI.u-boot-env.backup1";
 -                      reg = <0x00160000 0x0010000>;
 +                      reg = <0x001d0000 0x0010000>;
                };
                partition@8 {
                        label = "QSPI.kernel";
 -                      reg = <0x00170000 0x0800000>;
 +                      reg = <0x001e0000 0x0800000>;
                };
                partition@9 {
                        label = "QSPI.file-system";
 -                      reg = <0x00970000 0x01690000>;
 +                      reg = <0x009e0000 0x01620000>;
                };
        };
  };
  
+ &omap_dwc3_1 {
+       extcon = <&extcon_usb1>;
+ };
+ &omap_dwc3_2 {
+       extcon = <&extcon_usb2>;
+ };
  &usb1 {
        dr_mode = "peripheral";
        pinctrl-names = "default";
index 63f8b007bdc51358d53cdd57b58c8fe1a21f617a,fffe768477da7d2f9ac883b7e1958553193dcfdb..5827fedafd43d58a00169a4186cbb595d6f11234
                                              "wkupclk", "refclk",
                                              "div-clk", "phy-div";
                                #phy-cells = <0>;
-                               id = <1>;
                                ti,hwmods = "pcie1-phy";
                        };
  
                                              "div-clk", "phy-div";
                                #phy-cells = <0>;
                                ti,hwmods = "pcie2-phy";
-                               id = <2>;
                                status = "disabled";
                        };
                };
                                tx-fifo-resize;
                                maximum-speed = "super-speed";
                                dr_mode = "otg";
 +                              snps,dis_u3_susphy_quirk;
 +                              snps,dis_u2_susphy_quirk;
                        };
                };
  
                                tx-fifo-resize;
                                maximum-speed = "high-speed";
                                dr_mode = "otg";
 +                              snps,dis_u3_susphy_quirk;
 +                              snps,dis_u2_susphy_quirk;
                        };
                };
  
                                tx-fifo-resize;
                                maximum-speed = "high-speed";
                                dr_mode = "otg";
 +                              snps,dis_u3_susphy_quirk;
 +                              snps,dis_u2_susphy_quirk;
                        };
                };
  
index cb6001085f1a1885c8dec0ae29fe3e7e0b109221,d1759bf5202f4e1c60c8a773dec382282d7f3d85..76173cacd4501fdd5af0ff061cf6f93e3bd922df
                reg = <0x03830000 0x100>;
                clocks = <&clock_audss EXYNOS_I2S_BUS>;
                clock-names = "iis";
 +              #clock-cells = <1>;
 +              clock-output-names = "i2s_cdclk0";
                dmas = <&pdma0 12>, <&pdma0 11>, <&pdma0 10>;
                dma-names = "tx", "rx", "tx-sec";
                samsung,idma-addr = <0x03000000>;
 +              #sound-dai-cells = <1>;
                status = "disabled";
        };
  
                compatible = "samsung,s5pv210-mipi-video-phy";
                reg = <0x10020710 8>;
                #phy-cells = <1>;
+               syscon = <&pmu_system_controller>;
        };
  
        pd_mfc: mfc-power-domain@10023C40 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023C40 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_g3d: g3d-power-domain@10023C60 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023C60 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_lcd0: lcd0-power-domain@10023C80 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023C80 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_tv: tv-power-domain@10023C20 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023C20 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_cam: cam-power-domain@10023C00 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023C00 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_gps: gps-power-domain@10023CE0 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023CE0 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_gps_alive: gps-alive-power-domain@10023D00 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023D00 0x20>;
+               #power-domain-cells = <0>;
        };
  
        gic: interrupt-controller@10490000 {
                compatible = "samsung,exynos4210-mipi-dsi";
                reg = <0x11C80000 0x10000>;
                interrupts = <0 79 0>;
-               samsung,power-domain = <&pd_lcd0>;
+               power-domains = <&pd_lcd0>;
                phys = <&mipi_phy 1>;
                phy-names = "dsim";
                clocks = <&clock CLK_DSIM0>, <&clock CLK_SCLK_MIPI0>;
                        interrupts = <0 84 0>;
                        clocks = <&clock CLK_FIMC0>, <&clock CLK_SCLK_FIMC0>;
                        clock-names = "fimc", "sclk_fimc";
-                       samsung,power-domain = <&pd_cam>;
+                       power-domains = <&pd_cam>;
                        samsung,sysreg = <&sys_reg>;
                        status = "disabled";
                };
                        interrupts = <0 85 0>;
                        clocks = <&clock CLK_FIMC1>, <&clock CLK_SCLK_FIMC1>;
                        clock-names = "fimc", "sclk_fimc";
-                       samsung,power-domain = <&pd_cam>;
+                       power-domains = <&pd_cam>;
                        samsung,sysreg = <&sys_reg>;
                        status = "disabled";
                };
                        interrupts = <0 86 0>;
                        clocks = <&clock CLK_FIMC2>, <&clock CLK_SCLK_FIMC2>;
                        clock-names = "fimc", "sclk_fimc";
-                       samsung,power-domain = <&pd_cam>;
+                       power-domains = <&pd_cam>;
                        samsung,sysreg = <&sys_reg>;
                        status = "disabled";
                };
                        interrupts = <0 87 0>;
                        clocks = <&clock CLK_FIMC3>, <&clock CLK_SCLK_FIMC3>;
                        clock-names = "fimc", "sclk_fimc";
-                       samsung,power-domain = <&pd_cam>;
+                       power-domains = <&pd_cam>;
                        samsung,sysreg = <&sys_reg>;
                        status = "disabled";
                };
                        clocks = <&clock CLK_CSIS0>, <&clock CLK_SCLK_CSIS0>;
                        clock-names = "csis", "sclk_csis";
                        bus-width = <4>;
-                       samsung,power-domain = <&pd_cam>;
+                       power-domains = <&pd_cam>;
                        phys = <&mipi_phy 0>;
                        phy-names = "csis";
                        status = "disabled";
                        clocks = <&clock CLK_CSIS1>, <&clock CLK_SCLK_CSIS1>;
                        clock-names = "csis", "sclk_csis";
                        bus-width = <2>;
-                       samsung,power-domain = <&pd_cam>;
+                       power-domains = <&pd_cam>;
                        phys = <&mipi_phy 2>;
                        phy-names = "csis";
                        status = "disabled";
        };
  
        i2s1: i2s@13960000 {
 -              compatible = "samsung,s5pv210-i2s";
 +              compatible = "samsung,s3c6410-i2s";
                reg = <0x13960000 0x100>;
                clocks = <&clock CLK_I2S1>;
                clock-names = "iis";
 +              #clock-cells = <1>;
 +              clock-output-names = "i2s_cdclk1";
                dmas = <&pdma1 12>, <&pdma1 11>;
                dma-names = "tx", "rx";
 +              #sound-dai-cells = <1>;
                status = "disabled";
        };
  
        i2s2: i2s@13970000 {
 -              compatible = "samsung,s5pv210-i2s";
 +              compatible = "samsung,s3c6410-i2s";
                reg = <0x13970000 0x100>;
                clocks = <&clock CLK_I2S2>;
                clock-names = "iis";
 +              #clock-cells = <1>;
 +              clock-output-names = "i2s_cdclk2";
                dmas = <&pdma0 14>, <&pdma0 13>;
                dma-names = "tx", "rx";
 +              #sound-dai-cells = <1>;
                status = "disabled";
        };
  
                compatible = "samsung,mfc-v5";
                reg = <0x13400000 0x10000>;
                interrupts = <0 94 0>;
-               samsung,power-domain = <&pd_mfc>;
+               power-domains = <&pd_mfc>;
                clocks = <&clock CLK_MFC>, <&clock CLK_SCLK_MFC>;
                clock-names = "mfc", "sclk_mfc";
                status = "disabled";
                interrupts = <11 0>, <11 1>, <11 2>;
                clocks = <&clock CLK_SCLK_FIMD0>, <&clock CLK_FIMD0>;
                clock-names = "sclk_fimd", "fimd";
-               samsung,power-domain = <&pd_lcd0>;
+               power-domains = <&pd_lcd0>;
                samsung,sysreg = <&sys_reg>;
                status = "disabled";
        };
+       ppmu_dmc0: ppmu_dmc0@106a0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x106a0000 0x2000>;
+               clocks = <&clock CLK_PPMUDMC0>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_dmc1: ppmu_dmc1@106b0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x106b0000 0x2000>;
+               clocks = <&clock CLK_PPMUDMC1>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_cpu: ppmu_cpu@106c0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x106c0000 0x2000>;
+               clocks = <&clock CLK_PPMUCPU>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_acp: ppmu_acp@10ae0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x106e0000 0x2000>;
+               status = "disabled";
+       };
+       ppmu_rightbus: ppmu_rightbus@112a0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x112a0000 0x2000>;
+               clocks = <&clock CLK_PPMURIGHT>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_leftbus: ppmu_leftbus0@116a0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x116a0000 0x2000>;
+               clocks = <&clock CLK_PPMULEFT>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_camif: ppmu_camif@11ac0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x11ac0000 0x2000>;
+               clocks = <&clock CLK_PPMUCAMIF>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_lcd0: ppmu_lcd0@11e40000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x11e40000 0x2000>;
+               clocks = <&clock CLK_PPMULCD0>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_fsys: ppmu_g3d@12630000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x12630000 0x2000>;
+               status = "disabled";
+       };
+       ppmu_image: ppmu_image@12aa0000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x12aa0000 0x2000>;
+               clocks = <&clock CLK_PPMUIMAGE>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_tv: ppmu_tv@12e40000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x12e40000 0x2000>;
+               clocks = <&clock CLK_PPMUTV>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_g3d: ppmu_g3d@13220000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x13220000 0x2000>;
+               clocks = <&clock CLK_PPMUG3D>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_mfc_left: ppmu_mfc_left@13660000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x13660000 0x2000>;
+               clocks = <&clock CLK_PPMUMFC_L>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
+       ppmu_mfc_right: ppmu_mfc_right@13670000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x13670000 0x2000>;
+               clocks = <&clock CLK_PPMUMFC_R>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
  };
index a406df3d6df87e3c223ef5bd5138da1de831834c,1c0c7be02616a98d0d2f5495d455bba9f291e478..3d6652a4b6cbafad4a935ee82430c0b998e8590e
@@@ -28,7 -28,6 +28,7 @@@
  
        chosen {
                bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rootwait earlyprintk panic=5";
 +              stdout-path = &serial_2;
        };
  
        regulators {
@@@ -92,6 -91,7 +92,7 @@@
        hsotg@12480000 {
                vusb_d-supply = <&vusb_reg>;
                vusb_a-supply = <&vusbdac_reg>;
+               dr_mode = "peripheral";
                status = "okay";
        };
  
index 6effb13f98a6c268c593da22edc1664bfdd258ff,08f89e0ff2b813b7107e1737b2f0cc9356250b6e..b57e6b82ea203b521399fc13f56f3e3a99c10c17
@@@ -26,7 -26,6 +26,7 @@@
  
        chosen {
                bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rw rootwait earlyprintk panic=5 maxcpus=1";
 +              stdout-path = &serial_2;
        };
  
        sysram@02020000 {
@@@ -72,6 -71,7 +72,7 @@@
        hsotg@12480000 {
                vusb_d-supply = <&ldo3_reg>;
                vusb_a-supply = <&ldo8_reg>;
+               dr_mode = "peripheral";
                status = "okay";
        };
  
index 8e45ea44317e59a06a284b02fe75b5e702087883,7c15880bc8ba0ffcc13c1617a846d450e605a456..67c832c9dcf140d6203d742810a374aff867ef69
        pd_lcd1: lcd1-power-domain@10023CA0 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023CA0 0x20>;
+               #power-domain-cells = <0>;
        };
  
 +      l2c: l2-cache-controller@10502000 {
 +              compatible = "arm,pl310-cache";
 +              reg = <0x10502000 0x1000>;
 +              cache-unified;
 +              cache-level = <2>;
 +              arm,tag-latency = <2 2 1>;
 +              arm,data-latency = <2 2 1>;
 +      };
 +
        gic: interrupt-controller@10490000 {
                cpu-offset = <0x8000>;
        };
                        samsung,lcd-wb;
                };
        };
+       ppmu_lcd1: ppmu_lcd1@12240000 {
+               compatible = "samsung,exynos-ppmu";
+               reg = <0x12240000 0x2000>;
+               clocks = <&clock CLK_PPMULCD1>;
+               clock-names = "ppmu";
+               status = "disabled";
+       };
  };
index 2c43d185930859dc90f62101beb101351740b563,ffcf17bbf63b1ac9063f8b7f01fbbf265ef24893..de80b5bba20454b3e504fd26228d581bcb725190
@@@ -7,15 -7,10 +7,15 @@@
   * published by the Free Software Foundation.
  */
  
 +#include <dt-bindings/sound/samsung-i2s.h>
  #include <dt-bindings/input/input.h>
  #include "exynos4412.dtsi"
  
  / {
 +      chosen {
 +              stdout-path = &serial_1;
 +      };
 +
        firmware@0204F000 {
                compatible = "samsung,secure-firmware";
                reg = <0x0204F000 0x1000>;
                pinctrl-names = "default";
                status = "okay";
                clocks = <&clock_audss EXYNOS_I2S_BUS>,
 -                       <&clock_audss EXYNOS_DOUT_AUD_BUS>;
 -              clock-names = "iis", "i2s_opclk0";
 +                       <&clock_audss EXYNOS_DOUT_AUD_BUS>,
 +                       <&clock_audss EXYNOS_SCLK_I2S>;
 +              clock-names = "iis", "i2s_opclk0", "i2s_opclk1";
        };
  
        sound: sound {
 -              compatible = "samsung,odroidx2-audio";
 -              samsung,i2s-controller = <&i2s0>;
 -              samsung,audio-codec = <&max98090>;
 +              compatible = "simple-audio-card";
                assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
                                <&clock_audss EXYNOS_MOUT_I2S>,
                                <&clock_audss EXYNOS_DOUT_SRP>,
                                <0>,
                                <192000000>,
                                <19200000>;
 +
 +              simple-audio-card,format = "i2s";
 +              simple-audio-card,bitclock-master = <&link0_codec>;
 +              simple-audio-card,frame-master = <&link0_codec>;
 +
 +              simple-audio-card,cpu {
 +                      sound-dai = <&i2s0 0>;
 +                      system-clock-frequency = <19200000>;
 +              };
 +
 +              link0_codec: simple-audio-card,codec {
 +                      sound-dai = <&max98090>;
 +                      clocks = <&i2s0 CLK_I2S_CDCLK>;
 +              };
        };
  
        mmc@12550000 {
                        reg = <0x10>;
                        interrupt-parent = <&gpx0>;
                        interrupts = <0 0>;
 +                      clocks = <&i2s0 CLK_I2S_CDCLK>;
 +                      clock-names = "mclk";
 +                      #sound-dai-cells = <0>;
                };
        };
  
        };
  
        hsotg@12480000 {
+               dr_mode = "peripheral";
                status = "okay";
                vusb_d-supply = <&ldo15_reg>;
                vusb_a-supply = <&ldo12_reg>;
index 5fbb01335a0f6d7576e1b56caae212068f50316e,d3b3f4f4653e7f35af434eb3549ee8d9c765db9c..21f7480835868396061bc8216833eae37398398a
@@@ -15,6 -15,7 +15,7 @@@
  /dts-v1/;
  #include "exynos4412.dtsi"
  #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
  
  / {
        model = "Samsung Trats 2 based on Exynos4412";
@@@ -24,6 -25,7 +25,7 @@@
                i2c9 = &i2c_ak8975;
                i2c10 = &i2c_cm36651;
                i2c11 = &i2c_max77693;
+               i2c12 = &i2c_max77693_fuel;
        };
  
        memory {
@@@ -32,7 -34,6 +34,7 @@@
  
        chosen {
                bootargs = "console=ttySAC2,115200N8 root=/dev/mmcblk0p5 rootwait earlyprintk panic=5";
 +              stdout-path = &serial_2;
        };
  
        firmware@0204F000 {
                #address-cells = <1>;
                #size-cells = <0>;
  
-               vemmc_reg: regulator-0 {
-                       compatible = "regulator-fixed";
-                       regulator-name = "VMEM_VDD_2.8V";
-                       regulator-min-microvolt = <2800000>;
-                       regulator-max-microvolt = <2800000>;
-                       gpio = <&gpk0 2 0>;
-                       enable-active-high;
-               };
                cam_io_reg: voltage-regulator-1 {
                        compatible = "regulator-fixed";
                        regulator-name = "CAM_SENSOR_A";
                        enable-active-high;
                };
  
-               cam_isp_core_reg: voltage-regulator-4 {
-                       compatible = "regulator-fixed";
-                       regulator-name = "CAM_ISP_CORE_1.2V_EN";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       gpio = <&gpm0 3 0>;
-                       enable-active-high;
-                       regulator-always-on;
-               };
                ps_als_reg: voltage-regulator-5 {
                        compatible = "regulator-fixed";
                        regulator-name = "LED_A_3.0V";
                };
        };
  
+       i2c@138A0000 {
+               samsung,i2c-sda-delay = <100>;
+               samsung,i2c-slave-addr = <0x10>;
+               samsung,i2c-max-bus-freq = <100000>;
+               pinctrl-0 = <&i2c4_bus>;
+               pinctrl-names = "default";
+               status = "okay";
+               wm1811: wm1811@1a {
+                       compatible = "wlf,wm1811";
+                       reg = <0x1a>;
+                       clocks = <&pmu_system_controller 0>;
+                       clock-names = "MCLK1";
+                       DCVDD-supply = <&ldo3_reg>;
+                       DBVDD1-supply = <&ldo3_reg>;
+                       wlf,ldo1ena = <&gpj0 4 0>;
+               };
+       };
        i2c@138D0000 {
                samsung,i2c-sda-delay = <100>;
                samsung,i2c-slave-addr = <0x10>;
                                        regulator-min-microvolt = <1000000>;
                                        regulator-max-microvolt = <1000000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
                                };
  
                                ldo2_reg: ldo2 {
                                        regulator-min-microvolt = <1200000>;
                                        regulator-max-microvolt = <1200000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                       };
                                };
  
                                ldo3_reg: ldo3 {
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
                                };
  
                                ldo4_reg: ldo4 {
                                        regulator-min-microvolt = <2800000>;
                                        regulator-max-microvolt = <2800000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
                                };
  
                                ldo5_reg: ldo5 {
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
                                };
  
                                ldo6_reg: ldo6 {
                                        regulator-min-microvolt = <1000000>;
                                        regulator-max-microvolt = <1000000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                       };
                                };
  
                                ldo7_reg: ldo7 {
                                        regulator-min-microvolt = <1000000>;
                                        regulator-max-microvolt = <1000000>;
                                        regulator-always-on;
-                                       regulator-mem-on;
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                       };
                                };
  
                                ldo8_reg: ldo8 {
                                        regulator-name = "VMIPI_1.0V";
                                        regulator-min-microvolt = <1000000>;
                                        regulator-max-microvolt = <1000000>;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                ldo9_reg: ldo9 {
                                        regulator-name = "CAM_ISP_MIPI_1.2V";
                                        regulator-min-microvolt = <1200000>;
                                        regulator-max-microvolt = <1200000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo10_reg: ldo10 {
                                        regulator-name = "VMIPI_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                ldo11_reg: ldo11 {
                                        regulator-min-microvolt = <1950000>;
                                        regulator-max-microvolt = <1950000>;
                                        regulator-always-on;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                ldo12_reg: ldo12 {
                                        regulator-name = "VUOTG_3.0V";
                                        regulator-min-microvolt = <3000000>;
                                        regulator-max-microvolt = <3000000>;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                ldo13_reg: ldo13 {
                                        regulator-name = "NFC_AVDD_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo14_reg: ldo14 {
                                        regulator-min-microvolt = <1950000>;
                                        regulator-max-microvolt = <1950000>;
                                        regulator-always-on;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                ldo15_reg: ldo15 {
                                        regulator-name = "VHSIC_1.0V";
                                        regulator-min-microvolt = <1000000>;
                                        regulator-max-microvolt = <1000000>;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                       };
                                };
  
                                ldo16_reg: ldo16 {
                                        regulator-name = "VHSIC_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                       };
                                };
  
                                ldo17_reg: ldo17 {
                                        regulator-name = "CAM_SENSOR_CORE_1.2V";
                                        regulator-min-microvolt = <1200000>;
                                        regulator-max-microvolt = <1200000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo18_reg: ldo18 {
                                        regulator-name = "CAM_ISP_SEN_IO_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo19_reg: ldo19 {
                                        regulator-name = "VT_CAM_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo20_reg: ldo20 {
                                        regulator-name = "VDDQ_PRE_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo21_reg: ldo21 {
                                        regulator-name = "VTF_2.8V";
                                        regulator-min-microvolt = <2800000>;
                                        regulator-max-microvolt = <2800000>;
-                                       regulator-mem-idle;
+                                       maxim,ena-gpios = <&gpy2 0 GPIO_ACTIVE_HIGH>;
                                };
  
                                ldo22_reg: ldo22 {
                                        regulator-name = "VMEM_VDD_2.8V";
                                        regulator-min-microvolt = <2800000>;
                                        regulator-max-microvolt = <2800000>;
+                                       maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
                                };
  
                                ldo23_reg: ldo23 {
                                        regulator-name = "TSP_AVDD_3.3V";
                                        regulator-min-microvolt = <3300000>;
                                        regulator-max-microvolt = <3300000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo24_reg: ldo24 {
                                        regulator-name = "TSP_VDD_1.8V";
                                        regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <1800000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo25_reg: ldo25 {
                                        regulator-name = "LCD_VCC_3.3V";
                                        regulator-min-microvolt = <2800000>;
                                        regulator-max-microvolt = <2800000>;
-                                       regulator-mem-idle;
                                };
  
                                ldo26_reg: ldo26 {
                                        regulator-name = "MOTOR_VCC_3.0V";
                                        regulator-min-microvolt = <3000000>;
                                        regulator-max-microvolt = <3000000>;
-                                       regulator-mem-idle;
                                };
  
                                buck1_reg: buck1 {
                                        regulator-max-microvolt = <1100000>;
                                        regulator-always-on;
                                        regulator-boot-on;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                buck2_reg: buck2 {
                                        regulator-max-microvolt = <1500000>;
                                        regulator-always-on;
                                        regulator-boot-on;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-on-in-suspend;
+                                       };
                                };
  
                                buck3_reg: buck3 {
                                        regulator-max-microvolt = <1150000>;
                                        regulator-always-on;
                                        regulator-boot-on;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                buck4_reg: buck4 {
                                        regulator-min-microvolt = <850000>;
                                        regulator-max-microvolt = <1150000>;
                                        regulator-boot-on;
-                                       regulator-mem-off;
+                                       regulator-state-mem {
+                                               regulator-off-in-suspend;
+                                       };
                                };
  
                                buck5_reg: buck5 {
                                        regulator-name = "VMEM_VDDF_3.0V";
                                        regulator-min-microvolt = <2850000>;
                                        regulator-max-microvolt = <2850000>;
+                                       maxim,ena-gpios = <&gpk0 2 GPIO_ACTIVE_HIGH>;
                                };
  
                                buck9_reg: buck9 {
                                        regulator-name = "CAM_ISP_CORE_1.2V";
                                        regulator-min-microvolt = <1000000>;
                                        regulator-max-microvolt = <1200000>;
-                                       regulator-mem-off;
+                                       maxim,ena-gpios = <&gpm0 3 GPIO_ACTIVE_HIGH>;
                                };
                        };
                };
                                haptic-supply = <&ldo26_reg>;
                                pwms = <&pwm 0 38022 0>;
                        };
+                       charger {
+                               compatible = "maxim,max77693-charger";
+                               maxim,constant-microvolt = <4350000>;
+                               maxim,min-system-microvolt = <3600000>;
+                               maxim,thermal-regulation-celsius = <100>;
+                               maxim,battery-overcurrent-microamp = <3500000>;
+                               maxim,charge-input-threshold-microvolt = <4300000>;
+                       };
+               };
+       };
+       i2c_max77693_fuel: i2c-gpio-3 {
+               compatible = "i2c-gpio";
+               gpios = <&gpf1 5 GPIO_ACTIVE_HIGH>, <&gpf1 4 GPIO_ACTIVE_HIGH>;
+               i2c-gpio,delay-us = <2>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "okay";
+               max77693-fuel-gauge@36 {
+                       compatible = "maxim,max17047";
+                       interrupt-parent = <&gpx2>;
+                       interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+                       reg = <0x36>;
                };
        };
  
                broken-cd;
                non-removable;
                card-detect-delay = <200>;
-               vmmc-supply = <&vemmc_reg>;
+               vmmc-supply = <&ldo22_reg>;
                clock-frequency = <400000000>;
                samsung,dw-mshc-ciu-div = <0>;
                samsung,dw-mshc-sdr-timing = <2 3>;
                status = "okay";
                assigned-clocks = <&clock CLK_MOUT_CAM0>,
                                  <&clock CLK_MOUT_CAM1>;
-               assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>,
-                                        <&clock CLK_MOUT_MPLL_USER_T>;
+               assigned-clock-parents = <&clock CLK_XUSBXTI>,
+                                        <&clock CLK_XUSBXTI>;
  
                fimc_0: fimc@11800000 {
                        status = "okay";
                };
        };
  
+       i2s0: i2s@03830000 {
+               pinctrl-0 = <&i2s0_bus>;
+               pinctrl-names = "default";
+               status = "okay";
+       };
+       sound {
+               compatible = "samsung,trats2-audio";
+               samsung,i2s-controller = <&i2s0>;
+               samsung,model = "Trats2";
+               samsung,audio-codec = <&wm1811>;
+               samsung,audio-routing =
+                       "SPK", "SPKOUTLN",
+                       "SPK", "SPKOUTLP",
+                       "SPK", "SPKOUTRN",
+                       "SPK", "SPKOUTRP";
+       };
        exynos-usbphy@125B0000 {
                status = "okay";
        };
        hsotg@12480000 {
                vusb_d-supply = <&ldo15_reg>;
                vusb_a-supply = <&ldo12_reg>;
+               dr_mode = "peripheral";
                status = "okay";
        };
  
        };
  };
  
+ &pmu_system_controller {
+       assigned-clocks = <&pmu_system_controller 0>;
+       assigned-clock-parents =  <&clock CLK_XUSBXTI>;
+ };
+ &ppmu_dmc0 {
+       status = "okay";
+       events {
+               ppmu_dmc0_3: ppmu-event3-dmc0 {
+                       event-name = "ppmu-event3-dmc0";
+               };
+       };
+ };
+ &ppmu_dmc1 {
+       status = "okay";
+       events {
+               ppmu_dmc1_3: ppmu-event3-dmc1 {
+                       event-name = "ppmu-event3-dmc1";
+               };
+       };
+ };
+ &ppmu_leftbus {
+       status = "okay";
+       events {
+               ppmu_leftbus_3: ppmu-event3-leftbus {
+                       event-name = "ppmu-event3-leftbus";
+               };
+       };
+ };
+ &ppmu_rightbus {
+       status = "okay";
+       events {
+               ppmu_rightbus_3: ppmu-event3-rightbus {
+                       event-name = "ppmu-event3-rightbus";
+               };
+       };
+ };
  &pinctrl_0 {
        pinctrl-names = "default";
        pinctrl-0 = <&sleep0>;
index 8bc97c415c9a6f4dba7574b8adec446a172b23a5,af59cab53bd959770788401a191d8219519082f7..f5e0ae780d6ce8dd25622abed741b03416570f03
        pd_isp: isp-power-domain@10023CA0 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023CA0 0x20>;
+               #power-domain-cells = <0>;
        };
  
 +      l2c: l2-cache-controller@10502000 {
 +              compatible = "arm,pl310-cache";
 +              reg = <0x10502000 0x1000>;
 +              cache-unified;
 +              cache-level = <2>;
 +              arm,tag-latency = <2 2 1>;
 +              arm,data-latency = <3 2 1>;
 +              arm,double-linefill = <1>;
 +              arm,double-linefill-incr = <0>;
 +              arm,double-linefill-wrap = <1>;
 +              arm,prefetch-drop = <1>;
 +              arm,prefetch-offset = <7>;
 +      };
 +
        clock: clock-controller@10030000 {
                compatible = "samsung,exynos4412-clock";
                reg = <0x10030000 0x20000>;
                        compatible = "samsung,exynos4212-fimc-lite";
                        reg = <0x12390000 0x1000>;
                        interrupts = <0 105 0>;
-                       samsung,power-domain = <&pd_isp>;
+                       power-domains = <&pd_isp>;
                        clocks = <&clock CLK_FIMC_LITE0>;
                        clock-names = "flite";
                        status = "disabled";
                        compatible = "samsung,exynos4212-fimc-lite";
                        reg = <0x123A0000 0x1000>;
                        interrupts = <0 106 0>;
-                       samsung,power-domain = <&pd_isp>;
+                       power-domains = <&pd_isp>;
                        clocks = <&clock CLK_FIMC_LITE1>;
                        clock-names = "flite";
                        status = "disabled";
                        compatible = "samsung,exynos4212-fimc-is", "simple-bus";
                        reg = <0x12000000 0x260000>;
                        interrupts = <0 90 0>, <0 95 0>;
-                       samsung,power-domain = <&pd_isp>;
+                       power-domains = <&pd_isp>;
                        clocks = <&clock CLK_FIMC_LITE0>,
                                 <&clock CLK_FIMC_LITE1>, <&clock CLK_PPMUISPX>,
                                 <&clock CLK_PPMUISPMX>,
                                 <&clock CLK_DIV_ISP0>,<&clock CLK_DIV_ISP1>,
                                 <&clock CLK_DIV_MCUISP0>,
                                 <&clock CLK_DIV_MCUISP1>,
-                                <&clock CLK_SCLK_UART_ISP>,
+                                <&clock CLK_UART_ISP_SCLK>,
                                 <&clock CLK_ACLK200>, <&clock CLK_DIV_ACLK200>,
                                 <&clock CLK_ACLK400_MCUISP>,
                                 <&clock CLK_DIV_ACLK400_MCUISP>;
index d75c89d7666a0a0bea5fff5139439f8090eee793,2b5a62c91d269b77d672588acce0cc8d5238be65..9bb1b0b738f53d2e544baa582faeec5841b16783
        pd_gsc: gsc-power-domain@10044000 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10044000 0x20>;
+               #power-domain-cells = <0>;
        };
  
        pd_mfc: mfc-power-domain@10044040 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10044040 0x20>;
+               #power-domain-cells = <0>;
        };
  
        clock: clock-controller@10010000 {
                compatible = "samsung,mfc-v6";
                reg = <0x11000000 0x10000>;
                interrupts = <0 96 0>;
-               samsung,power-domain = <&pd_mfc>;
+               power-domains = <&pd_mfc>;
                clocks = <&clock CLK_MFC>;
                clock-names = "mfc";
        };
                compatible = "samsung,exynos5-gsc";
                reg = <0x13e00000 0x1000>;
                interrupts = <0 85 0>;
-               samsung,power-domain = <&pd_gsc>;
+               power-domains = <&pd_gsc>;
                clocks = <&clock CLK_GSCL0>;
                clock-names = "gscl";
        };
                compatible = "samsung,exynos5-gsc";
                reg = <0x13e10000 0x1000>;
                interrupts = <0 86 0>;
-               samsung,power-domain = <&pd_gsc>;
+               power-domains = <&pd_gsc>;
                clocks = <&clock CLK_GSCL1>;
                clock-names = "gscl";
        };
                compatible = "samsung,exynos5-gsc";
                reg = <0x13e20000 0x1000>;
                interrupts = <0 87 0>;
-               samsung,power-domain = <&pd_gsc>;
+               power-domains = <&pd_gsc>;
                clocks = <&clock CLK_GSCL2>;
                clock-names = "gscl";
        };
                compatible = "samsung,exynos5-gsc";
                reg = <0x13e30000 0x1000>;
                interrupts = <0 88 0>;
-               samsung,power-domain = <&pd_gsc>;
+               power-domains = <&pd_gsc>;
                clocks = <&clock CLK_GSCL3>;
                clock-names = "gscl";
        };
  
        dp_phy: video-phy@10040720 {
                compatible = "samsung,exynos5250-dp-video-phy";
 -              reg = <0x10040720 4>;
 +              samsung,pmu-syscon = <&pmu_system_controller>;
                #phy-cells = <0>;
        };
  
index 6d38f8bfd0e68e71358608a9af0ec32dbc5a53c2,a0a3b282920872f891429446ea762d0548893c68..9dc2e9773b30c5f5aaa22e5b3d1c1968bc1dd226
                };
        };
  
 -      cci@10d20000 {
 +      cci: cci@10d20000 {
                compatible = "arm,cci-400";
                #address-cells = <1>;
                #size-cells = <1>;
                interrupts = <0 96 0>;
                clocks = <&clock CLK_MFC>;
                clock-names = "mfc";
-               samsung,power-domain = <&mfc_pd>;
+               power-domains = <&mfc_pd>;
        };
  
        mmc_0: mmc@12200000 {
        gsc_pd: power-domain@10044000 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10044000 0x20>;
+               #power-domain-cells = <0>;
        };
  
        isp_pd: power-domain@10044020 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10044020 0x20>;
+               #power-domain-cells = <0>;
        };
  
        mfc_pd: power-domain@10044060 {
                clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MOUT_SW_ACLK333>,
                        <&clock CLK_MOUT_USER_ACLK333>;
                clock-names = "oscclk", "pclk0", "clk0";
+               #power-domain-cells = <0>;
        };
  
        msc_pd: power-domain@10044120 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10044120 0x20>;
+               #power-domain-cells = <0>;
+       };
+       disp_pd: power-domain@100440C0 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x100440C0 0x20>;
+               #power-domain-cells = <0>;
+               clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MOUT_SW_ACLK200>,
+                        <&clock CLK_MOUT_USER_ACLK200_DISP1>,
+                        <&clock CLK_MOUT_SW_ACLK300>,
+                        <&clock CLK_MOUT_USER_ACLK300_DISP1>,
+                        <&clock CLK_MOUT_SW_ACLK400>,
+                        <&clock CLK_MOUT_USER_ACLK400_DISP1>;
+               clock-names = "oscclk", "pclk0", "clk0",
+                             "pclk1", "clk1", "pclk2", "clk2";
        };
  
        pinctrl_0: pinctrl@13400000 {
        };
  
        dp_phy: video-phy@10040728 {
 -              compatible = "samsung,exynos5250-dp-video-phy";
 -              reg = <0x10040728 4>;
 +              compatible = "samsung,exynos5420-dp-video-phy";
 +              samsung,pmu-syscon = <&pmu_system_controller>;
                #phy-cells = <0>;
        };
  
        fimd: fimd@14400000 {
                clocks = <&clock CLK_SCLK_FIMD1>, <&clock CLK_FIMD1>;
                clock-names = "sclk_fimd", "fimd";
+               power-domains = <&disp_pd>;
        };
  
        adc: adc@12D10000 {
                phy = <&hdmiphy>;
                samsung,syscon-phandle = <&pmu_system_controller>;
                status = "disabled";
+               power-domains = <&disp_pd>;
        };
  
        hdmiphy: hdmiphy@145D0000 {
                interrupts = <0 94 0>;
                clocks = <&clock CLK_MIXER>, <&clock CLK_SCLK_HDMI>;
                clock-names = "mixer", "sclk_hdmi";
+               power-domains = <&disp_pd>;
        };
  
        gsc_0: video-scaler@13e00000 {
                interrupts = <0 85 0>;
                clocks = <&clock CLK_GSCL0>;
                clock-names = "gscl";
-               samsung,power-domain = <&gsc_pd>;
+               power-domains = <&gsc_pd>;
        };
  
        gsc_1: video-scaler@13e10000 {
                interrupts = <0 86 0>;
                clocks = <&clock CLK_GSCL1>;
                clock-names = "gscl";
-               samsung,power-domain = <&gsc_pd>;
+               power-domains = <&gsc_pd>;
        };
  
        pmu_system_controller: system-controller@10040000 {
index 2109d0763c1b6dca448449ba74709c6ced666cbb,f6c6a6e1cf3d1368e38eed5401c4f1d47ebcfb1f..d6c69ec443149da28012034ceea65ac2ba522539
                        vpu: vpu@02040000 {
                                compatible = "cnm,coda960";
                                reg = <0x02040000 0x3c000>;
 -                              interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>,
 -                                           <0 12 IRQ_TYPE_LEVEL_HIGH>;
 +                              interrupts = <0 12 IRQ_TYPE_LEVEL_HIGH>,
 +                                           <0 3 IRQ_TYPE_LEVEL_HIGH>;
                                interrupt-names = "bit", "jpeg";
                                clocks = <&clks IMX6QDL_CLK_VPU_AXI>,
-                                        <&clks IMX6QDL_CLK_MMDC_CH0_AXI>,
-                                        <&clks IMX6QDL_CLK_OCRAM>;
-                               clock-names = "per", "ahb", "ocram";
+                                        <&clks IMX6QDL_CLK_MMDC_CH0_AXI>;
+                               clock-names = "per", "ahb";
                                resets = <&src 1>;
                                iram = <&ocram>;
                        };
index c108bb451337ee4c5108847192d2991d78a4c68b,cdffe8465c4652dc3282e7501dda94f18c836eb4..32f07d6b404239afd3c58c43ae2cb032478a37b5
        pinctrl-0 = <&pinctrl_enet1>;
        phy-supply = <&reg_enet_3v3>;
        phy-mode = "rgmii";
 +      phy-handle = <&ethphy1>;
        status = "okay";
 +
 +      mdio {
 +              #address-cells = <1>;
 +              #size-cells = <0>;
 +
 +              ethphy1: ethernet-phy@1 {
 +                      reg = <1>;
 +              };
 +
 +              ethphy2: ethernet-phy@2 {
 +                      reg = <2>;
 +              };
 +      };
  };
  
  &fec2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet2>;
        phy-mode = "rgmii";
 +      phy-handle = <&ethphy2>;
        status = "okay";
  };
  
        status = "okay";
  };
  
+ &qspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_qspi2>;
+       status = "okay";
+       flash0: s25fl128s@0 {
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spansion,s25fl128s";
+               spi-max-frequency = <66000000>;
+       };
+       flash1: s25fl128s@1 {
+               reg = <1>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spansion,s25fl128s";
+               spi-max-frequency = <66000000>;
+       };
+ };
  &ssi2 {
        status = "okay";
  };
                        >;
                };
  
+               pinctrl_qspi2: qspi2grp {
+                       fsl,pins = <
+                               MX6SX_PAD_NAND_WP_B__QSPI2_A_DATA_0     0x70f1
+                               MX6SX_PAD_NAND_READY_B__QSPI2_A_DATA_1  0x70f1
+                               MX6SX_PAD_NAND_CE0_B__QSPI2_A_DATA_2    0x70f1
+                               MX6SX_PAD_NAND_CE1_B__QSPI2_A_DATA_3    0x70f1
+                               MX6SX_PAD_NAND_CLE__QSPI2_A_SCLK        0x70f1
+                               MX6SX_PAD_NAND_ALE__QSPI2_A_SS0_B       0x70f1
+                               MX6SX_PAD_NAND_DATA01__QSPI2_B_DATA_0   0x70f1
+                               MX6SX_PAD_NAND_DATA00__QSPI2_B_DATA_1   0x70f1
+                               MX6SX_PAD_NAND_WE_B__QSPI2_B_DATA_2     0x70f1
+                               MX6SX_PAD_NAND_RE_B__QSPI2_B_DATA_3     0x70f1
+                               MX6SX_PAD_NAND_DATA02__QSPI2_B_SCLK     0x70f1
+                               MX6SX_PAD_NAND_DATA03__QSPI2_B_SS0_B    0x70f1
+                       >;
+               };
                pinctrl_vcc_sd3: vccsd3grp {
                        fsl,pins = <
                                MX6SX_PAD_KEY_COL1__GPIO2_IO_11         0x17059
index b550c41b46f1ecc83fcc9abf551fbeff4f44e2a0,abf1daf8492614d9850fb150c0012fb34965e7ed..60403273f83e6918483641884707c8f5bd546d1e
        regulator-name = "V28";
        regulator-min-microvolt = <2800000>;
        regulator-max-microvolt = <2800000>;
-       regulator-always-on; /* due battery cover sensor */
+       regulator-always-on; /* due to battery cover sensor */
  };
  
  &vaux2 {
        regulator-name = "VIO";
        regulator-min-microvolt = <1800000>;
        regulator-max-microvolt = <1800000>;
  };
  
  &vintana1 {
                };
        };
  
 +      /* Ethernet is on some early development boards and qemu */
        ethernet@gpmc {
                compatible = "smsc,lan91c94";
 -
 -              status = "disabled";
 -
                interrupt-parent = <&gpio2>;
                interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;  /* gpio54 */
                reg = <1 0x300 0xf>;            /* 16 byte IO range at offset 0x300 */
index 4118030f366dfa7d86b24eafa30fc07920dabe45,2a191b56c9f9257866ba7691b3963281ae7f9889..0c3b6783b72add5d05001c35f39d1da6e55f141b
        compatible = "renesas,lager", "renesas,r8a7790";
  
        aliases {
 -              serial6 = &scifa0;
 -              serial7 = &scifa1;
 +              serial0 = &scifa0;
 +              serial1 = &scifa1;
        };
  
        chosen {
 -              bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp";
 +              bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp";
                stdout-path = &scifa0;
        };
  
  
        phy-handle = <&phy1>;
        renesas,ether-link-active-low;
-       status = "ok";
+       status = "okay";
  
        phy1: ethernet-phy@1 {
                reg = <1>;
  };
  
  &cmt0 {
-       status = "ok";
+       status = "okay";
  };
  
  &mmcif1 {
                spi-max-frequency = <30000000>;
                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
+               spi-cpha;
+               spi-cpol;
                m25p,fast-read;
  
                partition@0 {
  };
  
  &iic0 {
-       status = "ok";
+       status = "okay";
  };
  
  &iic1 {
-       status = "ok";
+       status = "okay";
        pinctrl-0 = <&iic1_pins>;
        pinctrl-names = "default";
  };
  
  &iic2 {
-       status = "ok";
+       status = "okay";
        pinctrl-0 = <&iic2_pins>;
        pinctrl-names = "default";
  
        pinctrl-0 = <&vin1_pins>;
        pinctrl-names = "default";
  
-       status = "ok";
+       status = "okay";
  
        port {
                #address-cells = <1>;
        pinctrl-0 = <&sound_pins &sound_clk_pins>;
        pinctrl-names = "default";
  
+       /* Single DAI */
        #sound-dai-cells = <0>;
  
        status = "okay";
index bf58c79a655480667f6b03032924188ea56def79,96f5b5877f22c576cca2dd349aa6e41d0c5d721a..a3c27807f6c516e8c28b75642cb2df3c1a259e5e
@@@ -48,8 -48,8 +48,8 @@@
        compatible = "renesas,koelsch", "renesas,r8a7791";
  
        aliases {
 -              serial6 = &scif0;
 -              serial7 = &scif1;
 +              serial0 = &scif0;
 +              serial1 = &scif1;
        };
  
        chosen {
  
        phy-handle = <&phy1>;
        renesas,ether-link-active-low;
-       status = "ok";
+       status = "okay";
  
        phy1: ethernet-phy@1 {
                reg = <1>;
  };
  
  &cmt0 {
-       status = "ok";
+       status = "okay";
  };
  
  &sata0 {
                spi-max-frequency = <30000000>;
                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
+               spi-cpha;
+               spi-cpol;
                m25p,fast-read;
  
                partition@0 {
                        read-only;
                };
                partition@80000 {
-                       label = "bootenv";
-                       reg = <0x00080000 0x00080000>;
+                       label = "user";
+                       reg = <0x00080000 0x00580000>;
                        read-only;
                };
-               partition@100000 {
-                       label = "data";
-                       reg = <0x00100000 0x03f00000>;
+               partition@600000 {
+                       label = "flash";
+                       reg = <0x00600000 0x03a00000>;
                };
        };
  };
  
  /* composite video input */
  &vin1 {
-       status = "ok";
+       status = "okay";
        pinctrl-0 = <&vin1_pins>;
        pinctrl-names = "default";
  
        pinctrl-0 = <&sound_pins &sound_clk_pins>;
        pinctrl-names = "default";
  
+       /* Single DAI */
        #sound-dai-cells = <0>;
  
        status = "okay";
index e1d3eeb8f094139ddc7ef67bea911cfd69a76caa,3f7aa9e2e76ade8f5b13d1bc2587ebe5e85d1edc..a1c294bf7fed0e51a29bd9205a408819d7aeadeb
  
  / {
        compatible = "rockchip,rk3288-evb-rk808", "rockchip,rk3288";
 +
 +      ext_gmac: external-gmac-clock {
 +              compatible = "fixed-clock";
 +              clock-frequency = <125000000>;
 +              clock-output-names = "ext_gmac";
 +              #clock-cells = <0>;
 +      };
  };
  
  &cpu0 {
@@@ -30,7 -23,6 +30,6 @@@
  
  &i2c0 {
        clock-frequency = <400000>;
-       status = "okay";
  
        rk808: pmic@1b {
                compatible = "rockchip,rk808";
@@@ -38,7 -30,7 +37,7 @@@
                interrupt-parent = <&gpio0>;
                interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
-               pinctrl-0 = <&pmic_int>;
+               pinctrl-0 = <&pmic_int &global_pwroff>;
                rockchip,system-power-controller;
                wakeup-source;
                #clock-cells = <1>;
@@@ -57,6 -49,9 +56,9 @@@
                                regulator-min-microvolt = <750000>;
                                regulator-max-microvolt = <1350000>;
                                regulator-name = "vdd_arm";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
                        };
  
                        vdd_gpu: DCDC_REG2 {
                                regulator-min-microvolt = <850000>;
                                regulator-max-microvolt = <1250000>;
                                regulator-name = "vdd_gpu";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
                        };
  
                        vcc_ddr: DCDC_REG3 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-name = "vcc_ddr";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
                        };
  
                        vcc_io: DCDC_REG4 {
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
                                regulator-name = "vcc_io";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
                        };
  
                        vccio_pmu: LDO_REG1 {
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
                                regulator-name = "vccio_pmu";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
                        };
  
                        vcc_tp: LDO_REG2 {
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
                                regulator-name = "vcc_tp";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
                        };
  
                        vdd_10: LDO_REG3 {
                                regulator-min-microvolt = <1000000>;
                                regulator-max-microvolt = <1000000>;
                                regulator-name = "vdd_10";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
                        };
  
                        vcc18_lcd: LDO_REG4 {
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                                regulator-name = "vcc18_lcd";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
                        };
  
                        vccio_sd: LDO_REG5 {
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <3300000>;
                                regulator-name = "vccio_sd";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
                        };
  
                        vdd10_lcd: LDO_REG6 {
                                regulator-min-microvolt = <1000000>;
                                regulator-max-microvolt = <1000000>;
                                regulator-name = "vdd10_lcd";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
                        };
  
                        vcc_18: LDO_REG7 {
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                                regulator-name = "vcc_18";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
                        };
  
                        vcca_codec: LDO_REG8 {
                                regulator-min-microvolt = <3300000>;
                                regulator-max-microvolt = <3300000>;
                                regulator-name = "vcca_codec";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
                        };
  
                        vcc_wl: SWITCH_REG1 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-name = "vcc_wl";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
                        };
  
                        vcc_lcd: SWITCH_REG2 {
                                regulator-always-on;
                                regulator-boot-on;
                                regulator-name = "vcc_lcd";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
                        };
                };
        };
  };
 +
 +&gmac {
 +      phy-supply = <&vcc_phy>;
 +      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";
 +};
index 1c08eb0ecdb9c345d0cf9369964173f080e4278d,86ede5893ab6d2b65f43aa69f6b154e4132ce721..5e895a514a0b82afef27ae7c7e849ed1ab8d226f
                regulator-always-on;
                regulator-boot-on;
        };
 +
 +      vcc_phy: vcc-phy-regulator {
 +              compatible = "regulator-fixed";
 +              enable-active-high;
 +              gpio = <&gpio0 6 GPIO_ACTIVE_HIGH>;
 +              pinctrl-names = "default";
 +              pinctrl-0 = <&eth_phy_pwr>;
 +              regulator-name = "vcc_phy";
 +              regulator-min-microvolt = <3300000>;
 +              regulator-max-microvolt = <3300000>;
 +              regulator-always-on;
 +              regulator-boot-on;
 +      };
  };
  
  &emmc {
        status = "okay";
  };
  
+ &hdmi {
+       ddc-i2c-bus = <&i2c5>;
+       status = "okay";
+ };
  &sdmmc {
        bus-width = <4>;
        cap-mmc-highspeed;
        status = "okay";
  };
  
+ &i2c5 {
+       status = "okay";
+ };
  &wdt {
        status = "okay";
  };
  };
  
  &pinctrl {
 +      pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
 +              drive-strength = <8>;
 +      };
 +
 +      pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
 +              bias-pull-up;
 +              drive-strength = <8>;
 +      };
 +
        backlight {
                bl_en: bl-en {
                        rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
  
 +      sdmmc {
 +              /*
 +               * Default drive strength isn't enough to achieve even
 +               * high-speed mode on EVB board so bump up to 8ma.
 +               */
 +              sdmmc_bus4: sdmmc-bus4 {
 +                      rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
 +                                      <6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
 +                                      <6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
 +                                      <6 19 RK_FUNC_1 &pcfg_pull_up_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_up_drv_8ma>;
 +              };
 +      };
 +
        usb {
                host_vbus_drv: host-vbus-drv {
                        rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
 +
 +      eth_phy {
 +              eth_phy_pwr: eth-phy-pwr {
 +                      rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_none>;
 +              };
 +      };
  };
  
  &usb_host0_ehci {
  &usb_host1 {
        status = "okay";
  };
+ &vopb {
+       status = "okay";
+ };
+ &vopb_mmu {
+       status = "okay";
+ };
+ &vopl {
+       status = "okay";
+ };
+ &vopl_mmu {
+       status = "okay";
+ };
index 910dcad2088a43c6a3e2756a18fffaba1a3ede61,1141850d0acb998a04dfbffb14fb75f03cb546d8..d771f687a13b50abad6f87ad6fb476e1d4377da9
                clock-frequency = <24000000>;
        };
  
+       timer: timer@ff810000 {
+               compatible = "rockchip,rk3288-timer";
+               reg = <0xff810000 0x20>;
+               interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&xin24m>, <&cru PCLK_TIMER>;
+               clock-names = "timer", "pclk";
+       };
+       display-subsystem {
+               compatible = "rockchip,display-subsystem";
+               ports = <&vopl_out>, <&vopb_out>;
+       };
        sdmmc: dwmmc@ff0c0000 {
                compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
                clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x100>;
  
        sdio0: dwmmc@ff0d0000 {
                compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
                clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x100>;
  
        sdio1: dwmmc@ff0e0000 {
                compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
                clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x100>;
  
        emmc: dwmmc@ff0f0000 {
                compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
                clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
                clock-names = "biu", "ciu";
                fifo-depth = <0x100>;
                status = "disabled";
        };
  
 +      gmac: ethernet@ff290000 {
 +              compatible = "rockchip,rk3288-gmac";
 +              reg = <0xff290000 0x10000>;
 +              interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
 +              interrupt-names = "macirq";
 +              rockchip,grf = <&grf>;
 +              clocks = <&cru SCLK_MAC>,
 +                      <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
 +                      <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
 +                      <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
 +              clock-names = "stmmaceth",
 +                      "mac_clk_rx", "mac_clk_tx",
 +                      "clk_mac_ref", "clk_mac_refout",
 +                      "aclk_mac", "pclk_mac";
 +      };
 +
        usb_host0_ehci: usb@ff500000 {
                compatible = "generic-ehci";
                reg = <0xff500000 0x100>;
                };
        };
  
+       sram@ff720000 {
+               compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
+               reg = <0xff720000 0x1000>;
+       };
        pmu: power-management@ff730000 {
                compatible = "rockchip,rk3288-pmu", "syscon";
                reg = <0xff730000 0x100>;
        wdt: watchdog@ff800000 {
                compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
                reg = <0xff800000 0x100>;
+               clocks = <&cru PCLK_WDT>;
                interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
                status = "disabled";
        };
                status = "disabled";
        };
  
+       vopb: vop@ff930000 {
+               compatible = "rockchip,rk3288-vop";
+               reg = <0xff930000 0x19c>;
+               interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
+               clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+               resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
+               reset-names = "axi", "ahb", "dclk";
+               iommus = <&vopb_mmu>;
+               status = "disabled";
+               vopb_out: port {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       vopb_out_hdmi: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&hdmi_in_vopb>;
+                       };
+               };
+       };
        vopb_mmu: iommu@ff930300 {
                compatible = "rockchip,iommu";
                reg = <0xff930300 0x100>;
                status = "disabled";
        };
  
+       vopl: vop@ff940000 {
+               compatible = "rockchip,rk3288-vop";
+               reg = <0xff940000 0x19c>;
+               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
+               clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+               resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
+               reset-names = "axi", "ahb", "dclk";
+               iommus = <&vopl_mmu>;
+               status = "disabled";
+               vopl_out: port {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       vopl_out_hdmi: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&hdmi_in_vopl>;
+                       };
+               };
+       };
        vopl_mmu: iommu@ff940300 {
                compatible = "rockchip,iommu";
                reg = <0xff940300 0x100>;
                status = "disabled";
        };
  
+       hdmi: hdmi@ff980000 {
+               compatible = "rockchip,rk3288-dw-hdmi";
+               reg = <0xff980000 0x20000>;
+               reg-io-width = <4>;
+               rockchip,grf = <&grf>;
+               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru  PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
+               clock-names = "iahb", "isfr";
+               status = "disabled";
+               ports {
+                       hdmi_in: port {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               hdmi_in_vopb: endpoint@0 {
+                                       reg = <0>;
+                                       remote-endpoint = <&vopb_out_hdmi>;
+                               };
+                               hdmi_in_vopl: endpoint@1 {
+                                       reg = <1>;
+                                       remote-endpoint = <&vopl_out_hdmi>;
+                               };
+                       };
+               };
+       };
        gic: interrupt-controller@ffc01000 {
                compatible = "arm,gic-400";
                interrupt-controller;
                        bias-disable;
                };
  
 +              pcfg_pull_none_12ma: pcfg-pull-none-12ma {
 +                      bias-disable;
 +                      drive-strength = <12>;
 +              };
 +
+               sleep {
+                       global_pwroff: global-pwroff {
+                               rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+                       ddrio_pwroff: ddrio-pwroff {
+                               rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+                       ddr0_retention: ddr0-retention {
+                               rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       ddr1_retention: ddr1-retention {
+                               rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
                i2c0 {
                        i2c0_xfer: i2c0-xfer {
                                rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
                                rockchip,pins = <7 23 3 &pcfg_pull_none>;
                        };
                };
 +
 +              gmac {
 +                      rgmii_pins: rgmii-pins {
 +                              rockchip,pins = <3 30 3 &pcfg_pull_none>,
 +                                              <3 31 3 &pcfg_pull_none>,
 +                                              <3 26 3 &pcfg_pull_none>,
 +                                              <3 27 3 &pcfg_pull_none>,
 +                                              <3 28 3 &pcfg_pull_none_12ma>,
 +                                              <3 29 3 &pcfg_pull_none_12ma>,
 +                                              <3 24 3 &pcfg_pull_none_12ma>,
 +                                              <3 25 3 &pcfg_pull_none_12ma>,
 +                                              <4 0 3 &pcfg_pull_none>,
 +                                              <4 5 3 &pcfg_pull_none>,
 +                                              <4 6 3 &pcfg_pull_none>,
 +                                              <4 9 3 &pcfg_pull_none_12ma>,
 +                                              <4 4 3 &pcfg_pull_none_12ma>,
 +                                              <4 1 3 &pcfg_pull_none>,
 +                                              <4 3 3 &pcfg_pull_none>;
 +                      };
 +
 +                      rmii_pins: rmii-pins {
 +                              rockchip,pins = <3 30 3 &pcfg_pull_none>,
 +                                              <3 31 3 &pcfg_pull_none>,
 +                                              <3 28 3 &pcfg_pull_none>,
 +                                              <3 29 3 &pcfg_pull_none>,
 +                                              <4 0 3 &pcfg_pull_none>,
 +                                              <4 5 3 &pcfg_pull_none>,
 +                                              <4 4 3 &pcfg_pull_none>,
 +                                              <4 1 3 &pcfg_pull_none>,
 +                                              <4 2 3 &pcfg_pull_none>,
 +                                              <4 3 3 &pcfg_pull_none>;
 +                      };
 +              };
        };
  };
index be2ccc53abb57495bad56164ccde49f17cfd4350,e6396b68b408d74db8744886d292527f29fbc699..83bee7a3a617d06dcfb083771d1ecf3abe38add1
@@@ -45,7 -45,7 +45,7 @@@
                         */
                        i2c0: i2c@f0014000 {
                                wm8904: wm8904@1a {
-                                       compatible = "wm8904";
+                                       compatible = "wlf,wm8904";
                                        reg = <0x1a>;
                                        clocks = <&pck0>;
                                        clock-names = "mclk";
                        "Headphone Jack", "HPOUTR",
                        "IN2L", "Line In Jack",
                        "IN2R", "Line In Jack",
 -                      "MICBIAS", "IN1L",
 +                      "Mic", "MICBIAS",
                        "IN1L", "Mic";
  
                atmel,ssc-controller = <&ssc0>;
index 2a31d66164acef3b1fd18dacacaec680dddab954,5d6d0b3f576807d013be8ecc7e10386c42fa871b..d986b41b965495bce29dc0d610a715ff4ffc0208
@@@ -62,6 -62,7 +62,7 @@@
                gpio0 = &pioA;
                gpio1 = &pioB;
                gpio2 = &pioC;
+               gpio3 = &pioD;
                gpio4 = &pioE;
                tcb0 = &tcb0;
                tcb1 = &tcb1;
                };
  
                nand0: nand@80000000 {
-                       compatible = "atmel,at91rm9200-nand";
+                       compatible = "atmel,sama5d4-nand", "atmel,at91rm9200-nand";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
  
                        pit: timer@fc068630 {
                                compatible = "atmel,at91sam9260-pit";
 -                              reg = <0xfc068630 0xf>;
 +                              reg = <0xfc068630 0x10>;
                                interrupts = <3 IRQ_TYPE_LEVEL_HIGH 5>;
                                clocks = <&h32ck>;
                        };
                                        clocks = <&pioC_clk>;
                                };
  
+                               pioD: gpio@fc068000 {
+                                       compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
+                                       reg = <0xfc068000 0x100>;
+                                       interrupts = <5 IRQ_TYPE_LEVEL_HIGH 1>;
+                                       #gpio-cells = <2>;
+                                       gpio-controller;
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
+                                       clocks = <&pioD_clk>;
+                                       status = "disabled";
+                               };
                                pioE: gpio@fc06d000 {
                                        compatible = "atmel,at91sam9x5-gpio", "atmel,at91rm9200-gpio";
                                        reg = <0xfc06d000 0x100>;
index d5c4669224b1734178f1a04efd42e9d5ec9cda27,2d7483a500ef3ae59566cf071b98417d351324c0..8ca3c1a2063deeb0eb426a7b320b269f77e4b04d
   * http://www.gnu.org/copyleft/gpl.html
   */
  
- /include/ "skeleton.dtsi"
+ #include "skeleton.dtsi"
+ #include <dt-bindings/thermal/thermal.h>
+ #include <dt-bindings/dma/sun4i-a10.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&intc>;
  
        aliases {
                ethernet0 = &emac;
 -              serial0 = &uart0;
 -              serial1 = &uart1;
 -              serial2 = &uart2;
 -              serial3 = &uart3;
 -              serial4 = &uart4;
 -              serial5 = &uart5;
 -              serial6 = &uart6;
 -              serial7 = &uart7;
        };
  
        chosen {
                                 <&ahb_gates 44>, <&ahb_gates 46>;
                        status = "disabled";
                };
+               framebuffer@2 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_fe0-de_be0-lcd0";
+                       clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>,
+                                <&ahb_gates 46>;
+                       status = "disabled";
+               };
+               framebuffer@3 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
+                       clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
+                                <&ahb_gates 44>, <&ahb_gates 46>;
+                       status = "disabled";
+               };
        };
  
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a8";
                        reg = <0x0>;
+                       clocks = <&cpu>;
+                       clock-latency = <244144>; /* 8 32k periods */
+                       operating-points = <
+                               /* kHz    uV */
+                               1056000 1500000
+                               1008000 1400000
+                               912000  1350000
+                               864000  1300000
+                               624000  1250000
+                               >;
+                       #cooling-cells = <2>;
+                       cooling-min-level = <0>;
+                       cooling-max-level = <4>;
+               };
+       };
+       thermal-zones {
+               cpu_thermal {
+                       /* milliseconds */
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&rtp>;
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_alert0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+                       trips {
+                               cpu_alert0: cpu_alert0 {
+                                       /* milliCelsius */
+                                       temperature = <850000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_crit: cpu_crit {
+                                       /* milliCelsius */
+                                       temperature = <100000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
                };
        };
  
                        interrupts = <10>;
                        clocks = <&ahb_gates 20>, <&spi0_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 27>, <&dma 1 26>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 27>,
+                              <&dma SUN4I_DMA_DEDICATED 26>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        interrupts = <11>;
                        clocks = <&ahb_gates 21>, <&spi1_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 9>, <&dma 1 8>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 9>,
+                              <&dma SUN4I_DMA_DEDICATED 8>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        status = "disabled";
                };
  
-               mdio@01c0b080 {
+               mdio: mdio@01c0b080 {
                        compatible = "allwinner,sun4i-a10-mdio";
                        reg = <0x01c0b080 0x14>;
                        status = "disabled";
                        interrupts = <12>;
                        clocks = <&ahb_gates 22>, <&spi2_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 29>, <&dma 1 28>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 29>,
+                              <&dma SUN4I_DMA_DEDICATED 28>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        interrupts = <50>;
                        clocks = <&ahb_gates 23>, <&spi3_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 31>, <&dma 1 30>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 31>,
+                              <&dma SUN4I_DMA_DEDICATED 30>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        pwm0_pins_a: pwm0@0 {
                                allwinner,pins = "PB2";
                                allwinner,function = "pwm";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        pwm1_pins_a: pwm1@0 {
                                allwinner,pins = "PI3";
                                allwinner,function = "pwm";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PB22", "PB23";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart0_pins_b: uart0@1 {
                                allwinner,pins = "PF2", "PF4";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart1_pins_a: uart1@0 {
                                allwinner,pins = "PA10", "PA11";
                                allwinner,function = "uart1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c0_pins_a: i2c0@0 {
                                allwinner,pins = "PB0", "PB1";
                                allwinner,function = "i2c0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c1_pins_a: i2c1@0 {
                                allwinner,pins = "PB18", "PB19";
                                allwinner,function = "i2c1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c2_pins_a: i2c2@0 {
                                allwinner,pins = "PB20", "PB21";
                                allwinner,function = "i2c2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        emac_pins_a: emac0@0 {
                                                "PA11", "PA12", "PA13", "PA14",
                                                "PA15", "PA16";
                                allwinner,function = "emac";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
                                allwinner,function = "mmc0";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
                                allwinner,pins = "PH1";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        ir0_pins_a: ir0@0 {
                                allwinner,pins = "PB3","PB4";
                                allwinner,function = "ir0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        ir1_pins_a: ir1@0 {
                                allwinner,pins = "PB22","PB23";
                                allwinner,function = "ir1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       spi0_pins_a: spi0@0 {
+                               allwinner,pins = "PI10", "PI11", "PI12", "PI13";
+                               allwinner,function = "spi0";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       spi1_pins_a: spi1@0 {
+                               allwinner,pins = "PI16", "PI17", "PI18", "PI19";
+                               allwinner,function = "spi1";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       spi2_pins_a: spi2@0 {
+                               allwinner,pins = "PB14", "PB15", "PB16", "PB17";
+                               allwinner,function = "spi2";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       spi2_pins_b: spi2@1 {
+                               allwinner,pins = "PC19", "PC20", "PC21", "PC22";
+                               allwinner,function = "spi2";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       ps20_pins_a: ps20@0 {
+                               allwinner,pins = "PI20", "PI21";
+                               allwinner,function = "ps2";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       ps21_pins_a: ps21@0 {
+                               allwinner,pins = "PH12", "PH13";
+                               allwinner,function = "ps2";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                        status = "disabled";
                };
  
+               lradc: lradc@01c22800 {
+                       compatible = "allwinner,sun4i-a10-lradc-keys";
+                       reg = <0x01c22800 0x100>;
+                       interrupts = <31>;
+                       status = "disabled";
+               };
                sid: eeprom@01c23800 {
                        compatible = "allwinner,sun4i-a10-sid";
                        reg = <0x01c23800 0x10>;
                        compatible = "allwinner,sun4i-a10-ts";
                        reg = <0x01c25000 0x100>;
                        interrupts = <29>;
+                       #thermal-sensor-cells = <0>;
                };
  
                uart0: serial@01c28000 {
                        #address-cells = <1>;
                        #size-cells = <0>;
                };
+               ps20: ps2@01c2a000 {
+                       compatible = "allwinner,sun4i-a10-ps2";
+                       reg = <0x01c2a000 0x400>;
+                       interrupts = <62>;
+                       clocks = <&apb1_gates 6>;
+                       status = "disabled";
+               };
+               ps21: ps2@01c2a400 {
+                       compatible = "allwinner,sun4i-a10-ps2";
+                       reg = <0x01c2a400 0x400>;
+                       interrupts = <63>;
+                       clocks = <&apb1_gates 7>;
+                       status = "disabled";
+               };
        };
  };
index bfa742817690d823d2044d3e6397f2237abb8cd9,6b8180507139538305d6d8963baa77020d66744b..2bbc93b935ca5bbe8f9af0536c8e0f6cf5263051
   */
  
  /dts-v1/;
- /include/ "sun5i-a10s.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun5i-a10s.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 = "Olimex A10s-Olinuxino Micro";
        compatible = "olimex,a10s-olinuxino-micro", "allwinner,sun5i-a10s";
  
 +      aliases {
 +              serial0 = &uart0;
 +              serial1 = &uart2;
 +              serial2 = &uart3;
 +      };
 +
        soc@01c00000 {
                emac: ethernet@01c0b000 {
                        pinctrl-names = "default";
@@@ -82,7 -80,7 +86,7 @@@
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_olinuxino_micro>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 6 1 0>; /* PG1 */
+                       cd-gpios = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */
                        cd-inverted;
                        status = "okay";
                };
@@@ -92,7 -90,7 +96,7 @@@
                        pinctrl-0 = <&mmc1_pins_a>, <&mmc1_cd_pin_olinuxino_micro>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 6 13 0>; /* PG13 */
+                       cd-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
                        cd-inverted;
                        status = "okay";
                };
                        mmc0_cd_pin_olinuxino_micro: mmc0_cd_pin@0 {
                                allwinner,pins = "PG1";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        mmc1_cd_pin_olinuxino_micro: mmc1_cd_pin@0 {
                                allwinner,pins = "PG13";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        led_pins_olinuxino: led_pins@0 {
                                allwinner,pins = "PE3";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <1>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_20_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        usb1_vbus_pin_olinuxino_m: usb1_vbus_pin@0 {
                                allwinner,pins = "PB10";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+               };
+               lradc: lradc@01c22800 {
+                       vref-supply = <&reg_vcc3v0>;
+                       status = "okay";
+                       button@191 {
+                               label = "Volume Up";
+                               linux,code = <KEY_VOLUMEUP>;
+                               channel = <0>;
+                               voltage = <191274>;
+                       };
+                       button@392 {
+                               label = "Volume Down";
+                               linux,code = <KEY_VOLUMEDOWN>;
+                               channel = <0>;
+                               voltage = <392644>;
+                       };
+                       button@601 {
+                               label = "Menu";
+                               linux,code = <KEY_MENU>;
+                               channel = <0>;
+                               voltage = <601151>;
+                       };
+                       button@795 {
+                               label = "Enter";
+                               linux,code = <KEY_ENTER>;
+                               channel = <0>;
+                               voltage = <795090>;
+                       };
+                       button@987 {
+                               label = "Home";
+                               linux,code = <KEY_HOMEPAGE>;
+                               channel = <0>;
+                               voltage = <987387>;
                        };
                };
  
  
                green {
                        label = "a10s-olinuxino-micro:green:usr";
-                       gpios = <&pio 4 3 0>;
+                       gpios = <&pio 4 3 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
        };
  
        reg_usb1_vbus: usb1-vbus {
                pinctrl-0 = <&usb1_vbus_pin_olinuxino_m>;
-               gpio = <&pio 1 10 0>;
+               gpio = <&pio 1 10 GPIO_ACTIVE_HIGH>;
                status = "okay";
        };
  };
index 2e7d8263799d77fe864a4776285844deb6a21fa3,ac919e62175422f7138c7ed8b5bbff5f44e1038c..905f84d141f03213947def68787c42f905e2b54b
   * http://www.gnu.org/copyleft/gpl.html
   */
  
- /include/ "skeleton.dtsi"
+ #include "skeleton.dtsi"
+ #include <dt-bindings/dma/sun4i-a10.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&intc>;
  
        aliases {
                ethernet0 = &emac;
 -              serial0 = &uart0;
 -              serial1 = &uart1;
 -              serial2 = &uart2;
 -              serial3 = &uart3;
        };
  
        chosen {
                                 <&ahb_gates 44>;
                        status = "disabled";
                };
+               framebuffer@1 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_be0-lcd0";
+                       clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>;
+                       status = "disabled";
+               };
        };
  
        cpus {
                        interrupts = <10>;
                        clocks = <&ahb_gates 20>, <&spi0_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 27>, <&dma 1 26>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 27>,
+                              <&dma SUN4I_DMA_DEDICATED 26>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        interrupts = <11>;
                        clocks = <&ahb_gates 21>, <&spi1_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 9>, <&dma 1 8>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 9>,
+                              <&dma SUN4I_DMA_DEDICATED 8>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        status = "disabled";
                };
  
-               mdio@01c0b080 {
+               mdio: mdio@01c0b080 {
                        compatible = "allwinner,sun4i-a10-mdio";
                        reg = <0x01c0b080 0x14>;
                        status = "disabled";
                        interrupts = <12>;
                        clocks = <&ahb_gates 22>, <&spi2_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 29>, <&dma 1 28>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 29>,
+                              <&dma SUN4I_DMA_DEDICATED 28>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PB19", "PB20";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart2_pins_a: uart2@0 {
                                allwinner,pins = "PC18", "PC19";
                                allwinner,function = "uart2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart3_pins_a: uart3@0 {
                                allwinner,pins = "PG9", "PG10";
                                allwinner,function = "uart3";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        emac_pins_a: emac0@0 {
                                                "PA11", "PA12", "PA13", "PA14",
                                                "PA15", "PA16";
                                allwinner,function = "emac";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c0_pins_a: i2c0@0 {
                                allwinner,pins = "PB0", "PB1";
                                allwinner,function = "i2c0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c1_pins_a: i2c1@0 {
                                allwinner,pins = "PB15", "PB16";
                                allwinner,function = "i2c1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c2_pins_a: i2c2@0 {
                                allwinner,pins = "PB17", "PB18";
                                allwinner,function = "i2c2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
                                allwinner,function = "mmc0";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc1_pins_a: mmc1@0 {
                                allwinner,pins = "PG3","PG4","PG5","PG6","PG7","PG8";
                                allwinner,function = "mmc1";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                        reg = <0x01c20c90 0x10>;
                };
  
+               lradc: lradc@01c22800 {
+                       compatible = "allwinner,sun4i-a10-lradc-keys";
+                       reg = <0x01c22800 0x100>;
+                       interrupts = <31>;
+                       status = "disabled";
+               };
                sid: eeprom@01c23800 {
                        compatible = "allwinner,sun4i-a10-sid";
                        reg = <0x01c23800 0x10>;
                        compatible = "allwinner,sun4i-a10-ts";
                        reg = <0x01c25000 0x100>;
                        interrupts = <29>;
+                       #thermal-sensor-cells = <0>;
                };
  
                uart0: serial@01c28000 {
index c7be3abd9fcc31a9ab3280b0a7b4a01ba73880b4,82637db1c55a5a4188a29594d8725ef315e985fa..03aa04555630ed0067b77a402f52d068046468d8
   */
  
  /dts-v1/;
- /include/ "sun5i-a13.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun5i-a13.dtsi"
+ #include "sunxi-common-regulators.dtsi"
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        model = "HSG H702";
        compatible = "hsg,h702", "allwinner,sun5i-a13";
  
 +      aliases {
 +              serial0 = &uart1;
 +      };
 +
        soc@01c00000 {
                mmc0: mmc@01c0f000 {
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_h702>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 6 0 0>; /* PG0 */
+                       cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */
                        cd-inverted;
                        status = "okay";
                };
  
                usbphy: phy@01c13400 {
-                       /*
-                        * There doesn't seem to be a GPIO for controlling
-                        * usb1 vbus, despite the fex file saying otherwise.
-                        */
-                       usb1_vbus-supply = <&reg_vcc5v0>;
+                       usb1_vbus-supply = <&reg_ldo3>;
                        status = "okay";
                };
  
@@@ -89,8 -84,8 +88,8 @@@
                        mmc0_cd_pin_h702: mmc0_cd_pin@0 {
                                allwinner,pins = "PG0";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
                };
  
                        status = "okay";
  
                        axp209: pmic@34 {
-                               compatible = "x-powers,axp209";
                                reg = <0x34>;
                                interrupts = <0>;
-                               interrupt-controller;
-                               #interrupt-cells = <1>;
                        };
                };
  
                };
        };
  };
+ #include "axp209.dtsi"
+ &cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+ };
+ &reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1500000>;
+       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_ldo3 {
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vcc-wifi";
+ };
index 3decefb3c37ac438c27574e7aed940fa2a684ea8,64d516200daedf204d254b149aa31e73671fbf82..03deb84268cebac916c225424f5cd3697dd682e4
   */
  
  /dts-v1/;
- /include/ "sun5i-a13.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun5i-a13.dtsi"
+ #include "sunxi-common-regulators.dtsi"
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        model = "Olimex A13-Olinuxino Micro";
        compatible = "olimex,a13-olinuxino-micro", "allwinner,sun5i-a13";
  
 +      aliases {
 +              serial0 = &uart1;
 +      };
 +
        soc@01c00000 {
                mmc0: mmc@01c0f000 {
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_olinuxinom>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 6 0 0>; /* PG0 */
+                       cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */
                        cd-inverted;
                        status = "okay";
                };
                        mmc0_cd_pin_olinuxinom: mmc0_cd_pin@0 {
                                allwinner,pins = "PG0";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        led_pins_olinuxinom: led_pins@0 {
                                allwinner,pins = "PG9";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <1>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_20_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        usb1_vbus_pin_olinuxinom: usb1_vbus_pin@0 {
                                allwinner,pins = "PG11";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
  
                power {
                        label = "a13-olinuxino-micro:green:power";
-                       gpios = <&pio 6 9 0>;
+                       gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
        };
  
        reg_usb1_vbus: usb1-vbus {
                pinctrl-0 = <&usb1_vbus_pin_olinuxinom>;
-               gpio = <&pio 6 11 0>;
+               gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>;
                status = "okay";
        };
  };
index b421f7fa197b475f7e0e3e23637c1acf6a7624ec,76a4bdeacb96dab03480eb0fec60498d2209b499..6b24876ed462907f805e3e658ab8e8d0b93ae20c
   */
  
  /dts-v1/;
- /include/ "sun5i-a13.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun5i-a13.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 = "Olimex A13-Olinuxino";
        compatible = "olimex,a13-olinuxino", "allwinner,sun5i-a13";
  
 +      aliases {
 +              serial0 = &uart1;
 +      };
 +
        soc@01c00000 {
                mmc0: mmc@01c0f000 {
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_olinuxino>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 6 0 0>; /* PG0 */
+                       cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */
                        cd-inverted;
                        status = "okay";
                };
                        mmc0_cd_pin_olinuxino: mmc0_cd_pin@0 {
                                allwinner,pins = "PG0";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        led_pins_olinuxino: led_pins@0 {
                                allwinner,pins = "PG9";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <1>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_20_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        usb1_vbus_pin_olinuxino: usb1_vbus_pin@0 {
                                allwinner,pins = "PG11";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+               };
+               lradc: lradc@01c22800 {
+                       vref-supply = <&reg_vcc3v0>;
+                       status = "okay";
+                       button@191 {
+                               label = "Volume Up";
+                               linux,code = <KEY_VOLUMEUP>;
+                               channel = <0>;
+                               voltage = <191274>;
+                       };
+                       button@392 {
+                               label = "Volume Down";
+                               linux,code = <KEY_VOLUMEDOWN>;
+                               channel = <0>;
+                               voltage = <392644>;
+                       };
+                       button@601 {
+                               label = "Menu";
+                               linux,code = <KEY_MENU>;
+                               channel = <0>;
+                               voltage = <601151>;
+                       };
+                       button@795 {
+                               label = "Enter";
+                               linux,code = <KEY_ENTER>;
+                               channel = <0>;
+                               voltage = <795090>;
+                       };
+                       button@987 {
+                               label = "Home";
+                               linux,code = <KEY_HOMEPAGE>;
+                               channel = <0>;
+                               voltage = <987387>;
                        };
                };
  
                        pinctrl-names = "default";
                        pinctrl-0 = <&i2c0_pins_a>;
                        status = "okay";
+                       axp209: pmic@34 {
+                               compatible = "x-powers,axp209";
+                               reg = <0x34>;
+                               interrupts = <0>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
                };
  
                i2c1: i2c@01c2b000 {
                pinctrl-0 = <&led_pins_olinuxino>;
  
                power {
-                       gpios = <&pio 6 9 0>;
+                       gpios = <&pio 6 9 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
        };
  
        reg_usb1_vbus: usb1-vbus {
                pinctrl-0 = <&usb1_vbus_pin_olinuxino>;
-               gpio = <&pio 6 11 0>;
+               gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>;
                status = "okay";
        };
  };
index c556688f8b8ba400a7bef986690e40a633f836e2,fd85720ec6a204ca2464206b8a98c890f64b761b..4910393d1b09013bcb929dc6325d8ddbd6a7d945
   * http://www.gnu.org/copyleft/gpl.html
   */
  
- /include/ "skeleton.dtsi"
+ #include "skeleton.dtsi"
+ #include <dt-bindings/thermal/thermal.h>
+ #include <dt-bindings/dma/sun4i-a10.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&intc>;
  
 -      aliases {
 -              serial0 = &uart1;
 -              serial1 = &uart3;
 -      };
 -
+       chosen {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+               framebuffer@0 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_be0-lcd0";
+                       clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>;
+                       status = "disabled";
+               };
+       };
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a8";
                        reg = <0x0>;
+                       clocks = <&cpu>;
+                       clock-latency = <244144>; /* 8 32k periods */
+                       operating-points = <
+                               /* kHz    uV */
+                               1104000 1500000
+                               1008000 1400000
+                               912000  1350000
+                               864000  1300000
+                               624000  1200000
+                               576000  1200000
+                               432000  1200000
+                               >;
+                       #cooling-cells = <2>;
+                       cooling-min-level = <0>;
+                       cooling-max-level = <6>;
+               };
+       };
+       thermal-zones {
+               cpu_thermal {
+                       /* milliseconds */
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&rtp>;
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_alert0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+                       trips {
+                               cpu_alert0: cpu_alert0 {
+                                       /* milliCelsius */
+                                       temperature = <850000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_crit: cpu_crit {
+                                       /* milliCelsius */
+                                       temperature = <100000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
                };
        };
  
                        interrupts = <10>;
                        clocks = <&ahb_gates 20>, <&spi0_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 27>, <&dma 1 26>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 27>,
+                              <&dma SUN4I_DMA_DEDICATED 26>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        interrupts = <11>;
                        clocks = <&ahb_gates 21>, <&spi1_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 9>, <&dma 1 8>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 9>,
+                              <&dma SUN4I_DMA_DEDICATED 8>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        interrupts = <12>;
                        clocks = <&ahb_gates 22>, <&spi2_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 29>, <&dma 1 28>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 29>,
+                              <&dma SUN4I_DMA_DEDICATED 28>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                        uart1_pins_a: uart1@0 {
                                allwinner,pins = "PE10", "PE11";
                                allwinner,function = "uart1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart1_pins_b: uart1@1 {
                                allwinner,pins = "PG3", "PG4";
                                allwinner,function = "uart1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c0_pins_a: i2c0@0 {
                                allwinner,pins = "PB0", "PB1";
                                allwinner,function = "i2c0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c1_pins_a: i2c1@0 {
                                allwinner,pins = "PB15", "PB16";
                                allwinner,function = "i2c1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c2_pins_a: i2c2@0 {
                                allwinner,pins = "PB17", "PB18";
                                allwinner,function = "i2c2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
                                allwinner,function = "mmc0";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                        reg = <0x01c20c90 0x10>;
                };
  
+               lradc: lradc@01c22800 {
+                       compatible = "allwinner,sun4i-a10-lradc-keys";
+                       reg = <0x01c22800 0x100>;
+                       interrupts = <31>;
+                       status = "disabled";
+               };
                sid: eeprom@01c23800 {
                        compatible = "allwinner,sun4i-a10-sid";
                        reg = <0x01c23800 0x10>;
                        compatible = "allwinner,sun4i-a10-ts";
                        reg = <0x01c25000 0x100>;
                        interrupts = <29>;
+                       #thermal-sensor-cells = <0>;
                };
  
                uart1: serial@01c28400 {
index 1e7e7bcf83071f005b2fd57c5fc8112432104f35,805f67a2e02f83d7519885fcb55c687a7830d44a..47e557656993fe99f1ea46667a1c1d27e8a2648f
   *     OTHER DEALINGS IN THE SOFTWARE.
   */
  
- /include/ "skeleton.dtsi"
+ #include "skeleton.dtsi"
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&gic>;
  
        aliases {
 -              serial0 = &uart0;
 -              serial1 = &uart1;
 -              serial2 = &uart2;
 -              serial3 = &uart3;
 -              serial4 = &uart4;
 -              serial5 = &uart5;
                ethernet0 = &gmac;
        };
  
                        clocks = <&pll6 0>;
                        status = "disabled";
                };
+               framebuffer@1 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_be0-lcd0";
+                       clocks = <&pll6 0>;
+                       status = "disabled";
+               };
+       };
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+               clock-frequency = <24000000>;
+               arm,cpu-registers-not-fw-configured;
        };
  
        cpus {
  
        pmu {
                compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
-               interrupts = <0 120 4>,
-                            <0 121 4>,
-                            <0 122 4>,
-                            <0 123 4>;
+               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
        };
  
        clocks {
                dma: dma-controller@01c02000 {
                        compatible = "allwinner,sun6i-a31-dma";
                        reg = <0x01c02000 0x1000>;
-                       interrupts = <0 50 4>;
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 6>;
                        resets = <&ahb1_rst 6>;
                        #dma-cells = <1>;
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 8>;
                        reset-names = "ahb";
-                       interrupts = <0 60 4>;
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 9>;
                        reset-names = "ahb";
-                       interrupts = <0 61 4>;
+                       interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 10>;
                        reset-names = "ahb";
-                       interrupts = <0 62 4>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 11>;
                        reset-names = "ahb";
-                       interrupts = <0 63 4>;
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                ehci0: usb@01c1a000 {
                        compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
                        reg = <0x01c1a000 0x100>;
-                       interrupts = <0 72 4>;
+                       interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 26>;
                        resets = <&ahb1_rst 26>;
                        phys = <&usbphy 1>;
                ohci0: usb@01c1a400 {
                        compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
                        reg = <0x01c1a400 0x100>;
-                       interrupts = <0 73 4>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 29>, <&usb_clk 16>;
                        resets = <&ahb1_rst 29>;
                        phys = <&usbphy 1>;
                ehci1: usb@01c1b000 {
                        compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
                        reg = <0x01c1b000 0x100>;
-                       interrupts = <0 74 4>;
+                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 27>;
                        resets = <&ahb1_rst 27>;
                        phys = <&usbphy 2>;
                ohci1: usb@01c1b400 {
                        compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
                        reg = <0x01c1b400 0x100>;
-                       interrupts = <0 75 4>;
+                       interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 30>, <&usb_clk 17>;
                        resets = <&ahb1_rst 30>;
                        phys = <&usbphy 2>;
                ohci2: usb@01c1c400 {
                        compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
                        reg = <0x01c1c400 0x100>;
-                       interrupts = <0 77 4>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 31>, <&usb_clk 18>;
                        resets = <&ahb1_rst 31>;
                        status = "disabled";
                pio: pinctrl@01c20800 {
                        compatible = "allwinner,sun6i-a31-pinctrl";
                        reg = <0x01c20800 0x400>;
-                       interrupts = <0 11 4>,
-                                    <0 15 4>,
-                                    <0 16 4>,
-                                    <0 17 4>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 5>;
                        gpio-controller;
                        interrupt-controller;
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PH20", "PH21";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c0_pins_a: i2c0@0 {
                                allwinner,pins = "PH14", "PH15";
                                allwinner,function = "i2c0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c1_pins_a: i2c1@0 {
                                allwinner,pins = "PH16", "PH17";
                                allwinner,function = "i2c1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c2_pins_a: i2c2@0 {
                                allwinner,pins = "PH18", "PH19";
                                allwinner,function = "i2c2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
                                allwinner,function = "mmc0";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        gmac_pins_mii_a: gmac_mii@0 {
                                                "PA20", "PA21", "PA22", "PA23",
                                                "PA24", "PA26", "PA27";
                                allwinner,function = "gmac";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        gmac_pins_gmii_a: gmac_gmii@0 {
                                 * data lines in GMII mode run at 125MHz and
                                 * might need a higher signal drive strength
                                 */
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        gmac_pins_rgmii_a: gmac_rgmii@0 {
                                 * data lines in RGMII mode use DDR mode
                                 * and need a higher signal drive strength
                                 */
-                               allwinner,drive = <3>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_40_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                timer@01c20c00 {
                        compatible = "allwinner,sun4i-a10-timer";
                        reg = <0x01c20c00 0xa0>;
-                       interrupts = <0 18 4>,
-                                    <0 19 4>,
-                                    <0 20 4>,
-                                    <0 21 4>,
-                                    <0 22 4>;
+                       interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&osc24M>;
                };
  
                        reg = <0x01c20ca0 0x20>;
                };
  
+               rtp: rtp@01c25000 {
+                       compatible = "allwinner,sun6i-a31-ts";
+                       reg = <0x01c25000 0x100>;
+                       interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                       #thermal-sensor-cells = <0>;
+               };
                uart0: serial@01c28000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28000 0x400>;
-                       interrupts = <0 0 4>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 16>;
                uart1: serial@01c28400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28400 0x400>;
-                       interrupts = <0 1 4>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 17>;
                uart2: serial@01c28800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28800 0x400>;
-                       interrupts = <0 2 4>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 18>;
                uart3: serial@01c28c00 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28c00 0x400>;
-                       interrupts = <0 3 4>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 19>;
                uart4: serial@01c29000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29000 0x400>;
-                       interrupts = <0 4 4>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 20>;
                uart5: serial@01c29400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29400 0x400>;
-                       interrupts = <0 5 4>;
+                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 21>;
                i2c0: i2c@01c2ac00 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2ac00 0x400>;
-                       interrupts = <0 6 4>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 0>;
                        resets = <&apb2_rst 0>;
                        status = "disabled";
                i2c1: i2c@01c2b000 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2b000 0x400>;
-                       interrupts = <0 7 4>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 1>;
                        resets = <&apb2_rst 1>;
                        status = "disabled";
                i2c2: i2c@01c2b400 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2b400 0x400>;
-                       interrupts = <0 8 4>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 2>;
                        resets = <&apb2_rst 2>;
                        status = "disabled";
                i2c3: i2c@01c2b800 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2b800 0x400>;
-                       interrupts = <0 9 4>;
+                       interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 3>;
                        resets = <&apb2_rst 3>;
                        status = "disabled";
                gmac: ethernet@01c30000 {
                        compatible = "allwinner,sun7i-a20-gmac";
                        reg = <0x01c30000 0x1054>;
-                       interrupts = <0 82 4>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "macirq";
                        clocks = <&ahb1_gates 17>, <&gmac_tx_clk>;
                        clock-names = "stmmaceth", "allwinner_gmac_tx";
                timer@01c60000 {
                        compatible = "allwinner,sun6i-a31-hstimer", "allwinner,sun7i-a20-hstimer";
                        reg = <0x01c60000 0x1000>;
-                       interrupts = <0 51 4>,
-                                    <0 52 4>,
-                                    <0 53 4>,
-                                    <0 54 4>;
+                       interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 19>;
                        resets = <&ahb1_rst 19>;
                };
                spi0: spi@01c68000 {
                        compatible = "allwinner,sun6i-a31-spi";
                        reg = <0x01c68000 0x1000>;
-                       interrupts = <0 65 4>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 20>, <&spi0_clk>;
                        clock-names = "ahb", "mod";
                        dmas = <&dma 23>, <&dma 23>;
                spi1: spi@01c69000 {
                        compatible = "allwinner,sun6i-a31-spi";
                        reg = <0x01c69000 0x1000>;
-                       interrupts = <0 66 4>;
+                       interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 21>, <&spi1_clk>;
                        clock-names = "ahb", "mod";
                        dmas = <&dma 24>, <&dma 24>;
                spi2: spi@01c6a000 {
                        compatible = "allwinner,sun6i-a31-spi";
                        reg = <0x01c6a000 0x1000>;
-                       interrupts = <0 67 4>;
+                       interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 22>, <&spi2_clk>;
                        clock-names = "ahb", "mod";
                        dmas = <&dma 25>, <&dma 25>;
                spi3: spi@01c6b000 {
                        compatible = "allwinner,sun6i-a31-spi";
                        reg = <0x01c6b000 0x1000>;
-                       interrupts = <0 68 4>;
+                       interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 23>, <&spi3_clk>;
                        clock-names = "ahb", "mod";
                        dmas = <&dma 26>, <&dma 26>;
                              <0x01c86000 0x2000>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
-                       interrupts = <1 9 0xf04>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                };
  
                rtc: rtc@01f00000 {
                        compatible = "allwinner,sun6i-a31-rtc";
                        reg = <0x01f00000 0x54>;
-                       interrupts = <0 40 4>, <0 41 4>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                };
  
                nmi_intc: interrupt-controller@01f00c0c {
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        reg = <0x01f00c0c 0x38>;
-                       interrupts = <0 32 4>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
                };
  
                prcm@01f01400 {
                                                "apb0_i2c";
                        };
  
+                       ir_clk: ir_clk {
+                               #clock-cells = <0>;
+                               compatible = "allwinner,sun4i-a10-mod0-clk";
+                               clocks = <&osc32k>, <&osc24M>;
+                               clock-output-names = "ir";
+                       };
                        apb0_rst: apb0_rst {
                                compatible = "allwinner,sun6i-a31-clock-reset";
                                #reset-cells = <1>;
                        reg = <0x01f01c00 0x300>;
                };
  
+               ir: ir@01f02000 {
+                       compatible = "allwinner,sun5i-a13-ir";
+                       clocks = <&apb0_gates 1>, <&ir_clk>;
+                       clock-names = "apb", "ir";
+                       resets = <&apb0_rst 1>;
+                       interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                       reg = <0x01f02000 0x40>;
+                       status = "disabled";
+               };
                r_pio: pinctrl@01f02c00 {
                        compatible = "allwinner,sun6i-a31-r-pinctrl";
                        reg = <0x01f02c00 0x400>;
-                       interrupts = <0 45 4>,
-                                    <0 46 4>;
+                       interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb0_gates 0>;
                        resets = <&apb0_rst 0>;
                        gpio-controller;
                        #interrupt-cells = <2>;
                        #size-cells = <0>;
                        #gpio-cells = <3>;
+                       ir_pins_a: ir@0 {
+                               allwinner,pins = "PL4";
+                               allwinner,function = "s_ir";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
                };
        };
  };
index bd7b15add6972d26fbcffdfa010fe3435141c0b5,4b0cd776c5c528c73a2be0e44fb2bbc0811ac6fd..5dd139e7792e122edd1235a61dd6c2a452594d58
   */
  
  /dts-v1/;
- /include/ "sun7i-a20.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun7i-a20.dtsi"
+ #include "sunxi-common-regulators.dtsi"
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        model = "LeMaker Banana Pi";
        compatible = "lemaker,bananapi", "allwinner,sun7i-a20";
  
 +      aliases {
 +              serial0 = &uart0;
 +              serial1 = &uart3;
 +              serial2 = &uart7;
 +      };
 +
        soc@01c00000 {
                spi0: spi@01c05000 {
                        pinctrl-names = "default";
@@@ -73,7 -71,7 +77,7 @@@
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_bananapi>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 7 10 0>; /* PH10 */
+                       cd-gpios = <&pio 7 10 GPIO_ACTIVE_HIGH>; /* PH10 */
                        cd-inverted;
                        status = "okay";
                };
                        mmc0_cd_pin_bananapi: mmc0_cd_pin@0 {
                                allwinner,pins = "PH10";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        gmac_power_pin_bananapi: gmac_power_pin@0 {
                                allwinner,pins = "PH23";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        led_pins_bananapi: led_pins@0 {
                                allwinner,pins = "PH24";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                                compatible = "x-powers,axp209";
                                reg = <0x34>;
                                interrupt-parent = <&nmi_intc>;
-                               interrupts = <0 8>;
+                               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
  
                                interrupt-controller;
                                #interrupt-cells = <1>;
  
                green {
                        label = "bananapi:green:usr";
-                       gpios = <&pio 7 24 0>;
+                       gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
                };
        };
  
                regulator-max-microvolt = <3300000>;
                startup-delay-us = <100000>;
                enable-active-high;
-               gpio = <&pio 7 23 0>;
+               gpio = <&pio 7 23 GPIO_ACTIVE_HIGH>;
        };
  };
index 0bcefcbbb756e0b7d7e8ad7450413e0c01c2a273,4d6a88ec8c0f9c16a46ff8d646b463c4f865697a..86a944ce19f8c6f2e01e650070945ba02a759f10
   */
  
  /dts-v1/;
- /include/ "sun7i-a20.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun7i-a20.dtsi"
+ #include "sunxi-common-regulators.dtsi"
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        model = "Merrii A20 Hummingbird";
        compatible = "merrii,a20-hummingbird", "allwinner,sun7i-a20";
  
 +      aliases {
 +              serial0 = &uart0;
 +              serial1 = &uart2;
 +              serial2 = &uart3;
 +              serial3 = &uart4;
 +              serial4 = &uart5;
 +      };
 +
        soc@01c00000 {
                mmc0: mmc@01c0f000 {
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
                        vmmc-supply = <&reg_vcc3v0>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 7 1 0>; /* PH1 */
+                       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
                        cd-inverted;
                        status = "okay";
                };
                        ahci_pwr_pin_a20_hummingbird: ahci_pwr_pin@0 {
                                allwinner,pins = "PH15";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        usb1_vbus_pin_a20_hummingbird: usb1_vbus_pin@0 {
                                allwinner,pins = "PH2";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc3_vdd_pin_a20_hummingbird: mmc3_vdd_pin@0 {
                                allwinner,pins = "PH9";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        gmac_vdd_pin_a20_hummingbird: gmac_vdd_pin@0 {
                                allwinner,pins = "PH16";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                                compatible = "x-powers,axp209";
                                reg = <0x34>;
                                interrupt-parent = <&nmi_intc>;
-                               interrupts = <0 8>;
+                               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
                                interrupt-controller;
                                #interrupt-cells = <1>;
                        };
                        phy-mode = "rgmii";
                        phy-supply = <&reg_gmac_vdd>;
                        /* phy reset config */
-                       snps,reset-gpio = <&pio 0 17 0>; /* PA17 */
+                       snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
                        snps,reset-active-low;
                        /* wait 1s after reset, otherwise fail to read phy id */
                        snps,reset-delays-us = <0 10000 1000000>;
  
        reg_ahci_5v: ahci-5v {
                pinctrl-0 = <&ahci_pwr_pin_a20_hummingbird>;
-               gpio = <&pio 7 15 0>; /* PH15 */
+               gpio = <&pio 7 15 GPIO_ACTIVE_HIGH>; /* PH15 */
                status = "okay";
        };
  
        reg_usb1_vbus: usb1-vbus {
                pinctrl-0 = <&usb1_vbus_pin_a20_hummingbird>;
-               gpio = <&pio 7 2 0>; /* PH2 */
+               gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
                status = "okay";
        };
  
                regulator-min-microvolt = <3000000>;
                regulator-max-microvolt = <3000000>;
                enable-active-high;
-               gpio = <&pio 7 9 0>; /* PH9 */
+               gpio = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
        };
  
        reg_gmac_vdd: gmac_vdd {
                regulator-min-microvolt = <3000000>;
                regulator-max-microvolt = <3000000>;
                enable-active-high;
-               gpio = <&pio 7 16 0>; /* PH16 */
+               gpio = <&pio 7 16 GPIO_ACTIVE_HIGH>; /* PH16 */
        };
  };
index 66cc7770719867d8331b30b296611a1921bfac9b,d0dcf72609717c8cdc52b1914d58d56784ef628d..714e15ac5416b71f2b56b60646092eeb24d3d0d2
   */
  
  /dts-v1/;
- /include/ "sun7i-a20.dtsi"
- /include/ "sunxi-common-regulators.dtsi"
+ #include "sun7i-a20.dtsi"
+ #include "sunxi-common-regulators.dtsi"
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/input/input.h>
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        model = "Olimex A20-Olinuxino Micro";
        compatible = "olimex,a20-olinuxino-micro", "allwinner,sun7i-a20";
  
        aliases {
 +              serial0 = &uart0;
 +              serial1 = &uart6;
 +              serial2 = &uart7;
                spi0 = &spi1;
                spi1 = &spi2;
        };
@@@ -39,7 -41,7 +44,7 @@@
                        pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 7 1 0>; /* PH1 */
+                       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
                        cd-inverted;
                        status = "okay";
                };
@@@ -49,7 -51,7 +54,7 @@@
                        pinctrl-0 = <&mmc3_pins_a>, <&mmc3_cd_pin_olinuxinom>;
                        vmmc-supply = <&reg_vcc3v3>;
                        bus-width = <4>;
-                       cd-gpios = <&pio 7 11 0>; /* PH11 */
+                       cd-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
                        cd-inverted;
                        status = "okay";
                };
                        mmc3_cd_pin_olinuxinom: mmc3_cd_pin@0 {
                                allwinner,pins = "PH11";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        led_pins_olinuxino: led_pins@0 {
                                allwinner,pins = "PH2";
                                allwinner,function = "gpio_out";
-                               allwinner,drive = <1>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_20_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+               };
+               lradc: lradc@01c22800 {
+                       vref-supply = <&reg_vcc3v0>;
+                       status = "okay";
+                       button@191 {
+                               label = "Volume Up";
+                               linux,code = <KEY_VOLUMEUP>;
+                               channel = <0>;
+                               voltage = <191274>;
+                       };
+                       button@392 {
+                               label = "Volume Down";
+                               linux,code = <KEY_VOLUMEDOWN>;
+                               channel = <0>;
+                               voltage = <392644>;
+                       };
+                       button@601 {
+                               label = "Menu";
+                               linux,code = <KEY_MENU>;
+                               channel = <0>;
+                               voltage = <601151>;
+                       };
+                       button@795 {
+                               label = "Search";
+                               linux,code = <KEY_SEARCH>;
+                               channel = <0>;
+                               voltage = <795090>;
+                       };
+                       button@987 {
+                               label = "Home";
+                               linux,code = <KEY_HOMEPAGE>;
+                               channel = <0>;
+                               voltage = <987387>;
+                       };
+                       button@1184 {
+                               label = "Esc";
+                               linux,code = <KEY_ESC>;
+                               channel = <0>;
+                               voltage = <1184678>;
+                       };
+                       button@1398 {
+                               label = "Enter";
+                               linux,code = <KEY_ENTER>;
+                               channel = <0>;
+                               voltage = <1398804>;
                        };
                };
  
                                compatible = "x-powers,axp209";
                                reg = <0x34>;
                                interrupt-parent = <&nmi_intc>;
-                               interrupts = <0 8>;
+                               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
  
                                interrupt-controller;
                                #interrupt-cells = <1>;
  
                green {
                        label = "a20-olinuxino-micro:green:usr";
-                       gpios = <&pio 7 2 0>;
+                       gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
                        default-state = "on";
                };
        };
index 89749ce34a844ef8777649a712232631534467d1,9108feb44e588043abee61ed7b1b887d056d836b..786d491542ac429567fd6db6142406858090f81c
   *     OTHER DEALINGS IN THE SOFTWARE.
   */
  
- /include/ "skeleton.dtsi"
+ #include "skeleton.dtsi"
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/thermal/thermal.h>
+ #include <dt-bindings/dma/sun4i-a10.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&gic>;
  
        aliases {
                ethernet0 = &gmac;
 -              serial0 = &uart0;
 -              serial1 = &uart1;
 -              serial2 = &uart2;
 -              serial3 = &uart3;
 -              serial4 = &uart4;
 -              serial5 = &uart5;
 -              serial6 = &uart6;
 -              serial7 = &uart7;
        };
  
        chosen {
                                 <&ahb_gates 44>;
                        status = "disabled";
                };
+               framebuffer@1 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_be0-lcd0";
+                       clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>;
+                       status = "disabled";
+               };
+               framebuffer@2 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_be0-lcd0-tve0";
+                       clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
+                                <&ahb_gates 44>;
+                       status = "disabled";
+               };
        };
  
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
  
-               cpu@0 {
+               cpu0: cpu@0 {
                        compatible = "arm,cortex-a7";
                        device_type = "cpu";
                        reg = <0>;
+                       clocks = <&cpu>;
+                       clock-latency = <244144>; /* 8 32k periods */
+                       operating-points = <
+                               /* kHz    uV */
+                               1008000 1450000
+                               960000  1400000
+                               912000  1400000
+                               864000  1300000
+                               720000  1200000
+                               528000  1100000
+                               312000  1000000
+                               144000  900000
+                               >;
+                       #cooling-cells = <2>;
+                       cooling-min-level = <0>;
+                       cooling-max-level = <7>;
                };
  
                cpu@1 {
                };
        };
  
+       thermal-zones {
+               cpu_thermal {
+                       /* milliseconds */
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&rtp>;
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_alert0>;
+                                       cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+                       trips {
+                               cpu_alert0: cpu_alert0 {
+                                       /* milliCelsius */
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_crit: cpu_crit {
+                                       /* milliCelsius */
+                                       temperature = <100000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
        memory {
                reg = <0x40000000 0x80000000>;
        };
  
        timer {
                compatible = "arm,armv7-timer";
-               interrupts = <1 13 0xf08>,
-                            <1 14 0xf08>,
-                            <1 11 0xf08>,
-                            <1 10 0xf08>;
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
        };
  
        pmu {
                compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
-               interrupts = <0 120 4>,
-                            <0 121 4>;
+               interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
        };
  
        clocks {
                        interrupt-controller;
                        #interrupt-cells = <2>;
                        reg = <0x01c00030 0x0c>;
-                       interrupts = <0 0 4>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
                };
  
                dma: dma-controller@01c02000 {
                        compatible = "allwinner,sun4i-a10-dma";
                        reg = <0x01c02000 0x1000>;
-                       interrupts = <0 27 4>;
+                       interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 6>;
                        #dma-cells = <2>;
                };
                spi0: spi@01c05000 {
                        compatible = "allwinner,sun4i-a10-spi";
                        reg = <0x01c05000 0x1000>;
-                       interrupts = <0 10 4>;
+                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 20>, <&spi0_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 27>, <&dma 1 26>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 27>,
+                              <&dma SUN4I_DMA_DEDICATED 26>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                spi1: spi@01c06000 {
                        compatible = "allwinner,sun4i-a10-spi";
                        reg = <0x01c06000 0x1000>;
-                       interrupts = <0 11 4>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 21>, <&spi1_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 9>, <&dma 1 8>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 9>,
+                              <&dma SUN4I_DMA_DEDICATED 8>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                emac: ethernet@01c0b000 {
                        compatible = "allwinner,sun4i-a10-emac";
                        reg = <0x01c0b000 0x1000>;
-                       interrupts = <0 55 4>;
+                       interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 17>;
                        status = "disabled";
                };
  
-               mdio@01c0b080 {
+               mdio: mdio@01c0b080 {
                        compatible = "allwinner,sun4i-a10-mdio";
                        reg = <0x01c0b080 0x14>;
                        status = "disabled";
                        reg = <0x01c0f000 0x1000>;
                        clocks = <&ahb_gates 8>, <&mmc0_clk>;
                        clock-names = "ahb", "mmc";
-                       interrupts = <0 32 4>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        reg = <0x01c10000 0x1000>;
                        clocks = <&ahb_gates 9>, <&mmc1_clk>;
                        clock-names = "ahb", "mmc";
-                       interrupts = <0 33 4>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        reg = <0x01c11000 0x1000>;
                        clocks = <&ahb_gates 10>, <&mmc2_clk>;
                        clock-names = "ahb", "mmc";
-                       interrupts = <0 34 4>;
+                       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        reg = <0x01c12000 0x1000>;
                        clocks = <&ahb_gates 11>, <&mmc3_clk>;
                        clock-names = "ahb", "mmc";
-                       interrupts = <0 35 4>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                ehci0: usb@01c14000 {
                        compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
                        reg = <0x01c14000 0x100>;
-                       interrupts = <0 39 4>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 1>;
                        phys = <&usbphy 1>;
                        phy-names = "usb";
                ohci0: usb@01c14400 {
                        compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
                        reg = <0x01c14400 0x100>;
-                       interrupts = <0 64 4>;
+                       interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&usb_clk 6>, <&ahb_gates 2>;
                        phys = <&usbphy 1>;
                        phy-names = "usb";
                spi2: spi@01c17000 {
                        compatible = "allwinner,sun4i-a10-spi";
                        reg = <0x01c17000 0x1000>;
-                       interrupts = <0 12 4>;
+                       interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 22>, <&spi2_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 29>, <&dma 1 28>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 29>,
+                              <&dma SUN4I_DMA_DEDICATED 28>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                ahci: sata@01c18000 {
                        compatible = "allwinner,sun4i-a10-ahci";
                        reg = <0x01c18000 0x1000>;
-                       interrupts = <0 56 4>;
+                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&pll6 0>, <&ahb_gates 25>;
                        status = "disabled";
                };
                ehci1: usb@01c1c000 {
                        compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
                        reg = <0x01c1c000 0x100>;
-                       interrupts = <0 40 4>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 3>;
                        phys = <&usbphy 2>;
                        phy-names = "usb";
                ohci1: usb@01c1c400 {
                        compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
                        reg = <0x01c1c400 0x100>;
-                       interrupts = <0 65 4>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&usb_clk 7>, <&ahb_gates 4>;
                        phys = <&usbphy 2>;
                        phy-names = "usb";
                spi3: spi@01c1f000 {
                        compatible = "allwinner,sun4i-a10-spi";
                        reg = <0x01c1f000 0x1000>;
-                       interrupts = <0 50 4>;
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 23>, <&spi3_clk>;
                        clock-names = "ahb", "mod";
-                       dmas = <&dma 1 31>, <&dma 1 30>;
+                       dmas = <&dma SUN4I_DMA_DEDICATED 31>,
+                              <&dma SUN4I_DMA_DEDICATED 30>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        #address-cells = <1>;
                pio: pinctrl@01c20800 {
                        compatible = "allwinner,sun7i-a20-pinctrl";
                        reg = <0x01c20800 0x400>;
-                       interrupts = <0 28 4>;
+                       interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb0_gates 5>;
                        gpio-controller;
                        interrupt-controller;
                        pwm0_pins_a: pwm0@0 {
                                allwinner,pins = "PB2";
                                allwinner,function = "pwm";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        pwm1_pins_a: pwm1@0 {
                                allwinner,pins = "PI3";
                                allwinner,function = "pwm";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PB22", "PB23";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart2_pins_a: uart2@0 {
                                allwinner,pins = "PI16", "PI17", "PI18", "PI19";
                                allwinner,function = "uart2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart3_pins_a: uart3@0 {
                                allwinner,pins = "PG6", "PG7", "PG8", "PG9";
                                allwinner,function = "uart3";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart3_pins_b: uart3@1 {
                                allwinner,pins = "PH0", "PH1";
                                allwinner,function = "uart3";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart4_pins_a: uart4@0 {
                                allwinner,pins = "PG10", "PG11";
                                allwinner,function = "uart4";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart5_pins_a: uart5@0 {
                                allwinner,pins = "PI10", "PI11";
                                allwinner,function = "uart5";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart6_pins_a: uart6@0 {
                                allwinner,pins = "PI12", "PI13";
                                allwinner,function = "uart6";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart7_pins_a: uart7@0 {
                                allwinner,pins = "PI20", "PI21";
                                allwinner,function = "uart7";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c0_pins_a: i2c0@0 {
                                allwinner,pins = "PB0", "PB1";
                                allwinner,function = "i2c0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c1_pins_a: i2c1@0 {
                                allwinner,pins = "PB18", "PB19";
                                allwinner,function = "i2c1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c2_pins_a: i2c2@0 {
                                allwinner,pins = "PB20", "PB21";
                                allwinner,function = "i2c2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c3_pins_a: i2c3@0 {
                                allwinner,pins = "PI0", "PI1";
                                allwinner,function = "i2c3";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        emac_pins_a: emac0@0 {
                                                "PA11", "PA12", "PA13", "PA14",
                                                "PA15", "PA16";
                                allwinner,function = "emac";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        clk_out_a_pins_a: clk_out_a@0 {
                                allwinner,pins = "PI12";
                                allwinner,function = "clk_out_a";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        clk_out_b_pins_a: clk_out_b@0 {
                                allwinner,pins = "PI13";
                                allwinner,function = "clk_out_b";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        gmac_pins_mii_a: gmac_mii@0 {
                                                "PA11", "PA12", "PA13", "PA14",
                                                "PA15", "PA16";
                                allwinner,function = "gmac";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        gmac_pins_rgmii_a: gmac_rgmii@0 {
                                 * data lines in RGMII mode use DDR mode
                                 * and need a higher signal drive strength
                                 */
-                               allwinner,drive = <3>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_40_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        spi0_pins_a: spi0@0 {
                                allwinner,pins = "PI10", "PI11", "PI12", "PI13", "PI14";
                                allwinner,function = "spi0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        spi1_pins_a: spi1@0 {
                                allwinner,pins = "PI16", "PI17", "PI18", "PI19";
                                allwinner,function = "spi1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        spi2_pins_a: spi2@0 {
                                allwinner,pins = "PC19", "PC20", "PC21", "PC22";
                                allwinner,function = "spi2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        spi2_pins_b: spi2@1 {
                                allwinner,pins = "PB14", "PB15", "PB16", "PB17";
                                allwinner,function = "spi2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
                                allwinner,function = "mmc0";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
                                allwinner,pins = "PH1";
                                allwinner,function = "gpio_in";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        mmc2_pins_a: mmc2@0 {
                                allwinner,pins = "PC6","PC7","PC8","PC9","PC10","PC11";
                                allwinner,function = "mmc2";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <1>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
                        };
  
                        mmc3_pins_a: mmc3@0 {
                                allwinner,pins = "PI4","PI5","PI6","PI7","PI8","PI9";
                                allwinner,function = "mmc3";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        ir0_pins_a: ir0@0 {
                                    allwinner,pins = "PB3","PB4";
                                    allwinner,function = "ir0";
-                                   allwinner,drive = <0>;
-                                   allwinner,pull = <0>;
+                                   allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                                   allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        ir1_pins_a: ir1@0 {
                                    allwinner,pins = "PB22","PB23";
                                    allwinner,function = "ir1";
-                                   allwinner,drive = <0>;
-                                   allwinner,pull = <0>;
+                                   allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                                   allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       ps20_pins_a: ps20@0 {
+                               allwinner,pins = "PI20", "PI21";
+                               allwinner,function = "ps2";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       ps21_pins_a: ps21@0 {
+                               allwinner,pins = "PH12", "PH13";
+                               allwinner,function = "ps2";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                timer@01c20c00 {
                        compatible = "allwinner,sun4i-a10-timer";
                        reg = <0x01c20c00 0x90>;
-                       interrupts = <0 22 4>,
-                                    <0 23 4>,
-                                    <0 24 4>,
-                                    <0 25 4>,
-                                    <0 67 4>,
-                                    <0 68 4>;
+                       interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&osc24M>;
                };
  
                rtc: rtc@01c20d00 {
                        compatible = "allwinner,sun7i-a20-rtc";
                        reg = <0x01c20d00 0x20>;
-                       interrupts = <0 24 4>;
+                       interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
                };
  
                pwm: pwm@01c20e00 {
                        compatible = "allwinner,sun4i-a10-ir";
                        clocks = <&apb0_gates 6>, <&ir0_clk>;
                        clock-names = "apb", "ir";
-                       interrupts = <0 5 4>;
+                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
                        reg = <0x01c21800 0x40>;
                        status = "disabled";
                };
                        compatible = "allwinner,sun4i-a10-ir";
                        clocks = <&apb0_gates 7>, <&ir1_clk>;
                        clock-names = "apb", "ir";
-                       interrupts = <0 6 4>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
                        reg = <0x01c21c00 0x40>;
                        status = "disabled";
                };
  
+               lradc: lradc@01c22800 {
+                       compatible = "allwinner,sun4i-a10-lradc-keys";
+                       reg = <0x01c22800 0x100>;
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
                sid: eeprom@01c23800 {
                        compatible = "allwinner,sun7i-a20-sid";
                        reg = <0x01c23800 0x200>;
                rtp: rtp@01c25000 {
                        compatible = "allwinner,sun4i-a10-ts";
                        reg = <0x01c25000 0x100>;
-                       interrupts = <0 29 4>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       #thermal-sensor-cells = <0>;
                };
  
                uart0: serial@01c28000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28000 0x400>;
-                       interrupts = <0 1 4>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 16>;
                uart1: serial@01c28400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28400 0x400>;
-                       interrupts = <0 2 4>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 17>;
                uart2: serial@01c28800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28800 0x400>;
-                       interrupts = <0 3 4>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 18>;
                uart3: serial@01c28c00 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28c00 0x400>;
-                       interrupts = <0 4 4>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 19>;
                uart4: serial@01c29000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29000 0x400>;
-                       interrupts = <0 17 4>;
+                       interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 20>;
                uart5: serial@01c29400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29400 0x400>;
-                       interrupts = <0 18 4>;
+                       interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 21>;
                uart6: serial@01c29800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29800 0x400>;
-                       interrupts = <0 19 4>;
+                       interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 22>;
                uart7: serial@01c29c00 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29c00 0x400>;
-                       interrupts = <0 20 4>;
+                       interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 23>;
                i2c0: i2c@01c2ac00 {
                        compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2ac00 0x400>;
-                       interrupts = <0 7 4>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 0>;
                        status = "disabled";
                        #address-cells = <1>;
                i2c1: i2c@01c2b000 {
                        compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b000 0x400>;
-                       interrupts = <0 8 4>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 1>;
                        status = "disabled";
                        #address-cells = <1>;
                i2c2: i2c@01c2b400 {
                        compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b400 0x400>;
-                       interrupts = <0 9 4>;
+                       interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 2>;
                        status = "disabled";
                        #address-cells = <1>;
                i2c3: i2c@01c2b800 {
                        compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2b800 0x400>;
-                       interrupts = <0 88 4>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 3>;
                        status = "disabled";
                        #address-cells = <1>;
                i2c4: i2c@01c2c000 {
                        compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
                        reg = <0x01c2c000 0x400>;
-                       interrupts = <0 89 4>;
+                       interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 15>;
                        status = "disabled";
                        #address-cells = <1>;
                gmac: ethernet@01c50000 {
                        compatible = "allwinner,sun7i-a20-gmac";
                        reg = <0x01c50000 0x10000>;
-                       interrupts = <0 85 4>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "macirq";
                        clocks = <&ahb_gates 49>, <&gmac_tx_clk>;
                        clock-names = "stmmaceth", "allwinner_gmac_tx";
                hstimer@01c60000 {
                        compatible = "allwinner,sun7i-a20-hstimer";
                        reg = <0x01c60000 0x1000>;
-                       interrupts = <0 81 4>,
-                                    <0 82 4>,
-                                    <0 83 4>,
-                                    <0 84 4>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb_gates 28>;
                };
  
                              <0x01c86000 0x2000>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
-                       interrupts = <1 9 0xf04>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+               };
+               ps20: ps2@01c2a000 {
+                       compatible = "allwinner,sun4i-a10-ps2";
+                       reg = <0x01c2a000 0x400>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&apb1_gates 6>;
+                       status = "disabled";
+               };
+               ps21: ps2@01c2a400 {
+                       compatible = "allwinner,sun4i-a10-ps2";
+                       reg = <0x01c2a400 0x400>;
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&apb1_gates 7>;
+                       status = "disabled";
                };
        };
  };
index 86584fcf5e323bc43489c79be74e43ef8931d3a2,d049443348301892f4c45134d0a612eeaddb8a3b..dd34527293e465d4739cf4518bbd8b292a61989b
   *     OTHER DEALINGS IN THE SOFTWARE.
   */
  
- /include/ "skeleton.dtsi"
+ #include "skeleton.dtsi"
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&gic>;
  
 -      aliases {
 -              serial0 = &uart0;
 -              serial1 = &uart1;
 -              serial2 = &uart2;
 -              serial3 = &uart3;
 -              serial4 = &uart4;
 -              serial5 = &r_uart;
 -      };
 -
+       chosen {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+               framebuffer@0 {
+                       compatible = "allwinner,simple-framebuffer",
+                                    "simple-framebuffer";
+                       allwinner,pipeline = "de_be0-lcd0";
+                       clocks = <&pll6 0>;
+                       status = "disabled";
+               };
+       };
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                dma: dma-controller@01c02000 {
                        compatible = "allwinner,sun8i-a23-dma";
                        reg = <0x01c02000 0x1000>;
-                       interrupts = <0 50 4>;
+                       interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ahb1_gates 6>;
                        resets = <&ahb1_rst 6>;
                        #dma-cells = <1>;
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 8>;
                        reset-names = "ahb";
-                       interrupts = <0 60 4>;
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 9>;
                        reset-names = "ahb";
-                       interrupts = <0 61 4>;
+                       interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                        clock-names = "ahb", "mmc";
                        resets = <&ahb1_rst 10>;
                        reset-names = "ahb";
-                       interrupts = <0 62 4>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                pio: pinctrl@01c20800 {
                        compatible = "allwinner,sun8i-a23-pinctrl";
                        reg = <0x01c20800 0x400>;
-                       interrupts = <0 11 4>,
-                                    <0 15 4>,
-                                    <0 17 4>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 5>;
                        gpio-controller;
                        interrupt-controller;
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PF2", "PF4";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
                                allwinner,function = "mmc0";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        mmc1_pins_a: mmc1@0 {
                                allwinner,pins = "PG0","PG1","PG2","PG3","PG4","PG5";
                                allwinner,function = "mmc1";
-                               allwinner,drive = <2>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c0_pins_a: i2c0@0 {
                                allwinner,pins = "PH2", "PH3";
                                allwinner,function = "i2c0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c1_pins_a: i2c1@0 {
                                allwinner,pins = "PH4", "PH5";
                                allwinner,function = "i2c1";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        i2c2_pins_a: i2c2@0 {
                                allwinner,pins = "PE12", "PE13";
                                allwinner,function = "i2c2";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                timer@01c20c00 {
                        compatible = "allwinner,sun4i-a10-timer";
                        reg = <0x01c20c00 0xa0>;
-                       interrupts = <0 18 4>,
-                                    <0 19 4>;
+                       interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&osc24M>;
                };
  
                wdt0: watchdog@01c20ca0 {
                        compatible = "allwinner,sun6i-a31-wdt";
                        reg = <0x01c20ca0 0x20>;
-                       interrupts = <0 25 4>;
+                       interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+               };
+               lradc: lradc@01c22800 {
+                       compatible = "allwinner,sun4i-a10-lradc-keys";
+                       reg = <0x01c22800 0x100>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
                };
  
                uart0: serial@01c28000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28000 0x400>;
-                       interrupts = <0 0 4>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 16>;
                uart1: serial@01c28400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28400 0x400>;
-                       interrupts = <0 1 4>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 17>;
                uart2: serial@01c28800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28800 0x400>;
-                       interrupts = <0 2 4>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 18>;
                uart3: serial@01c28c00 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28c00 0x400>;
-                       interrupts = <0 3 4>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 19>;
                uart4: serial@01c29000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c29000 0x400>;
-                       interrupts = <0 4 4>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb2_gates 20>;
                i2c0: i2c@01c2ac00 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2ac00 0x400>;
-                       interrupts = <0 6 4>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 0>;
                        resets = <&apb2_rst 0>;
                        status = "disabled";
                i2c1: i2c@01c2b000 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2b000 0x400>;
-                       interrupts = <0 7 4>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 1>;
                        resets = <&apb2_rst 1>;
                        status = "disabled";
                i2c2: i2c@01c2b400 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x01c2b400 0x400>;
-                       interrupts = <0 8 4>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb2_gates 2>;
                        resets = <&apb2_rst 2>;
                        status = "disabled";
                              <0x01c86000 0x2000>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
-                       interrupts = <1 9 0xf04>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                };
  
                rtc: rtc@01f00000 {
                        compatible = "allwinner,sun6i-a31-rtc";
                        reg = <0x01f00000 0x54>;
-                       interrupts = <0 40 4>, <0 41 4>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                };
  
                prcm@01f01400 {
                r_uart: serial@01f02800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01f02800 0x400>;
-                       interrupts = <0 38 4>;
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb0_gates 4>;
                r_pio: pinctrl@01f02c00 {
                        compatible = "allwinner,sun8i-a23-r-pinctrl";
                        reg = <0x01f02c00 0x400>;
-                       interrupts = <0 45 4>;
+                       interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb0_gates 0>;
                        resets = <&apb0_rst 0>;
                        gpio-controller;
                        r_uart_pins_a: r_uart@0 {
                                allwinner,pins = "PL2", "PL3";
                                allwinner,function = "s_uart";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
        };
index 11ec71072e815ac5b4e54a3db3cace2ee81b78b8,c4de9cb9a5f60f68289751b0ec6c88bc7f6b22c5..a3fed2bdf620328424916c694b6b478de20d9b4f
   */
  
  /dts-v1/;
- /include/ "sun9i-a80.dtsi"
+ #include "sun9i-a80.dtsi"
+ #include "sunxi-common-regulators.dtsi"
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        model = "Merrii A80 Optimus Board";
        compatible = "merrii,a80-optimus", "allwinner,sun9i-a80";
  
 +      aliases {
 +              serial0 = &uart0;
 +              serial1 = &uart4;
 +      };
 +
        chosen {
                bootargs = "earlyprintk console=ttyS0,115200";
        };
  
-       soc {
-               pio: pinctrl@06000800 {
-                       i2c3_pins_a: i2c3@0 {
-                               /* Enable internal pull-up */
-                               allwinner,pull = <1>;
-                       };
-                       led_pins_optimus: led-pins@0 {
-                               allwinner,pins = "PH0", "PH1";
-                               allwinner,function = "gpio_out";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
-                       };
-                       uart4_pins_a: uart4@0 {
-                               /* Enable internal pull-up */
-                               allwinner,pull = <1>;
-                       };
-               };
-               uart0: serial@07000000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&uart0_pins_a>;
-                       status = "okay";
-               };
-               uart4: serial@07001000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&uart4_pins_a>;
-                       status = "okay";
-               };
-               i2c3: i2c@07003400 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&i2c3_pins_a>;
-                       status = "okay";
-               };
-       };
        leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
  
                led2 {
                        label = "optimus:led2:usr";
-                       gpios = <&pio 7 1 0>;
+                       gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>;
                };
  
                /* led3 is on PM15, in R_PIO */
  
                led4 {
                        label = "optimus:led4:usr";
-                       gpios = <&pio 7 0 0>;
+                       gpios = <&pio 7 0 GPIO_ACTIVE_HIGH>;
                };
        };
  };
+ &i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c3_pins_a>;
+       status = "okay";
+ };
+ &i2c3_pins_a {
+       /* Enable internal pull-up */
+       allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+ };
+ &pio {
+       led_pins_optimus: led-pins@0 {
+               allwinner,pins = "PH0", "PH1";
+               allwinner,function = "gpio_out";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+       mmc0_cd_pin_optimus: mmc0_cd_pin@0 {
+               allwinner,pins = "PH18";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+ };
+ &mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
+       vmmc-supply = <&reg_vcc3v0>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
+       cd-inverted;
+       status = "okay";
+ };
+ &mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_8bit_pins>;
+       vmmc-supply = <&reg_vcc3v0>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+ };
+ &uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+ };
+ &uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins_a>;
+       status = "okay";
+ };
+ &uart4_pins_a {
+       /* Enable internal pull-up */
+       allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+ };
index 9ef4438206a9986ed82b733ebeaf961f474b742a,9e28ffc6dd90d5b15a2a81e084e13c22c613272b..f0f6fb91f8c36cc5835be3c5509a4eadc81f200d
   *     OTHER DEALINGS IN THE SOFTWARE.
   */
  
- /include/ "skeleton64.dtsi"
+ #include "skeleton64.dtsi"
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/pinctrl/sun4i-a10.h>
  
  / {
        interrupt-parent = <&gic>;
  
 -      aliases {
 -              serial0 = &uart0;
 -              serial1 = &uart1;
 -              serial2 = &uart2;
 -              serial3 = &uart3;
 -              serial4 = &uart4;
 -              serial5 = &uart5;
 -              serial6 = &r_uart;
 -      };
 -
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                        clock-output-names = "cci400";
                };
  
+               mmc0_clk: clk@06000410 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun9i-a80-mmc-clk";
+                       reg = <0x06000410 0x4>;
+                       clocks = <&osc24M>, <&pll4>;
+                       clock-output-names = "mmc0", "mmc0_output",
+                                            "mmc0_sample";
+               };
+               mmc1_clk: clk@06000414 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun9i-a80-mmc-clk";
+                       reg = <0x06000414 0x4>;
+                       clocks = <&osc24M>, <&pll4>;
+                       clock-output-names = "mmc1", "mmc1_output",
+                                            "mmc1_sample";
+               };
+               mmc2_clk: clk@06000418 {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun9i-a80-mmc-clk";
+                       reg = <0x06000418 0x4>;
+                       clocks = <&osc24M>, <&pll4>;
+                       clock-output-names = "mmc2", "mmc2_output",
+                                            "mmc2_sample";
+               };
+               mmc3_clk: clk@0600041c {
+                       #clock-cells = <1>;
+                       compatible = "allwinner,sun9i-a80-mmc-clk";
+                       reg = <0x0600041c 0x4>;
+                       clocks = <&osc24M>, <&pll4>;
+                       clock-output-names = "mmc3", "mmc3_output",
+                                            "mmc3_sample";
+               };
                ahb0_gates: clk@06000580 {
                        #clock-cells = <1>;
                        compatible = "allwinner,sun9i-a80-ahb0-gates-clk";
                        reg = <0x06000580 0x4>;
                        clocks = <&ahb0>;
+                       clock-indices = <0>, <1>, <3>, <5>, <8>, <12>, <13>,
+                                       <14>, <15>, <16>, <18>, <20>, <21>,
+                                       <22>, <23>;
                        clock-output-names = "ahb0_fd", "ahb0_ve", "ahb0_gpu",
                                        "ahb0_ss", "ahb0_sd", "ahb0_nand1",
                                        "ahb0_nand0", "ahb0_sdram",
                        compatible = "allwinner,sun9i-a80-ahb1-gates-clk";
                        reg = <0x06000584 0x4>;
                        clocks = <&ahb1>;
+                       clock-indices = <0>, <1>, <17>, <21>, <22>, <23>, <24>;
                        clock-output-names = "ahb1_usbotg", "ahb1_usbhci",
                                        "ahb1_gmac", "ahb1_msgbox",
                                        "ahb1_spinlock", "ahb1_hstimer",
                        compatible = "allwinner,sun9i-a80-ahb2-gates-clk";
                        reg = <0x06000588 0x4>;
                        clocks = <&ahb2>;
+                       clock-indices = <0>, <1>, <2>, <4>, <5>, <7>, <8>,
+                                       <11>;
                        clock-output-names = "ahb2_lcd0", "ahb2_lcd1",
                                        "ahb2_edp", "ahb2_csi", "ahb2_hdmi",
                                        "ahb2_de", "ahb2_mp", "ahb2_mipi_dsi";
                        compatible = "allwinner,sun9i-a80-apb0-gates-clk";
                        reg = <0x06000590 0x4>;
                        clocks = <&apb0>;
+                       clock-indices = <1>, <5>, <11>, <12>, <13>, <15>,
+                                       <17>, <18>, <19>;
                        clock-output-names = "apb0_spdif", "apb0_pio",
                                        "apb0_ac97", "apb0_i2s0", "apb0_i2s1",
                                        "apb0_lradc", "apb0_gpadc", "apb0_twd",
                        compatible = "allwinner,sun9i-a80-apb1-gates-clk";
                        reg = <0x06000594 0x4>;
                        clocks = <&apb1>;
+                       clock-indices = <0>, <1>, <2>, <3>, <4>,
+                                       <16>, <17>, <18>, <19>, <20>, <21>;
                        clock-output-names = "apb1_i2c0", "apb1_i2c1",
                                        "apb1_i2c2", "apb1_i2c3", "apb1_i2c4",
                                        "apb1_uart0", "apb1_uart1",
                 */
                ranges = <0 0 0 0x20000000>;
  
+               mmc0: mmc@01c0f000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c0f000 0x1000>;
+                       clocks = <&mmc_config_clk 0>, <&mmc0_clk 0>,
+                                <&mmc0_clk 1>, <&mmc0_clk 2>;
+                       clock-names = "ahb", "mmc", "output", "sample";
+                       resets = <&mmc_config_clk 0>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+               mmc1: mmc@01c10000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c10000 0x1000>;
+                       clocks = <&mmc_config_clk 1>, <&mmc1_clk 0>,
+                                <&mmc1_clk 1>, <&mmc1_clk 2>;
+                       clock-names = "ahb", "mmc", "output", "sample";
+                       resets = <&mmc_config_clk 1>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+               mmc2: mmc@01c11000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c11000 0x1000>;
+                       clocks = <&mmc_config_clk 2>, <&mmc2_clk 0>,
+                                <&mmc2_clk 1>, <&mmc2_clk 2>;
+                       clock-names = "ahb", "mmc", "output", "sample";
+                       resets = <&mmc_config_clk 2>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+               mmc3: mmc@01c12000 {
+                       compatible = "allwinner,sun5i-a13-mmc";
+                       reg = <0x01c12000 0x1000>;
+                       clocks = <&mmc_config_clk 3>, <&mmc3_clk 0>,
+                                <&mmc3_clk 1>, <&mmc3_clk 2>;
+                       clock-names = "ahb", "mmc", "output", "sample";
+                       resets = <&mmc_config_clk 3>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+               mmc_config_clk: clk@01c13000 {
+                       compatible = "allwinner,sun9i-a80-mmc-config-clk";
+                       reg = <0x01c13000 0x10>;
+                       clocks = <&ahb0_gates 8>;
+                       clock-names = "ahb";
+                       resets = <&ahb0_resets 8>;
+                       reset-names = "ahb";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       clock-output-names = "mmc0_config", "mmc1_config",
+                                            "mmc2_config", "mmc3_config";
+               };
                gic: interrupt-controller@01c41000 {
                        compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
                        reg = <0x01c41000 0x1000>,
                              <0x01c46000 0x2000>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
-                       interrupts = <1 9 0xf04>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                };
  
                ahb0_resets: reset@060005a0 {
                timer@06000c00 {
                        compatible = "allwinner,sun4i-a10-timer";
                        reg = <0x06000c00 0xa0>;
-                       interrupts = <0 18 4>,
-                                    <0 19 4>,
-                                    <0 20 4>,
-                                    <0 21 4>,
-                                    <0 22 4>,
-                                    <0 23 4>;
+                       interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
  
                        clocks = <&osc24M>;
                };
                pio: pinctrl@06000800 {
                        compatible = "allwinner,sun9i-a80-pinctrl";
                        reg = <0x06000800 0x400>;
-                       interrupts = <0 11 4>,
-                                    <0 15 4>,
-                                    <0 16 4>,
-                                    <0 17 4>,
-                                    <0 120 4>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb0_gates 5>;
                        gpio-controller;
                        interrupt-controller;
                        i2c3_pins_a: i2c3@0 {
                                allwinner,pins = "PG10", "PG11";
                                allwinner,function = "i2c3";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       mmc0_pins: mmc0 {
+                               allwinner,pins = "PF0", "PF1" ,"PF2", "PF3",
+                                                "PF4", "PF5";
+                               allwinner,function = "mmc0";
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       mmc2_8bit_pins: mmc2_8bit {
+                               allwinner,pins = "PC6", "PC7", "PC8", "PC9",
+                                                "PC10", "PC11", "PC12",
+                                                "PC13", "PC14", "PC15";
+                               allwinner,function = "mmc2";
+                               allwinner,drive = <SUN4I_PINCTRL_30_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart0_pins_a: uart0@0 {
                                allwinner,pins = "PH12", "PH13";
                                allwinner,function = "uart0";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
  
                        uart4_pins_a: uart4@0 {
                                allwinner,pins = "PG12", "PG13", "PG14", "PG15";
                                allwinner,function = "uart4";
-                               allwinner,drive = <0>;
-                               allwinner,pull = <0>;
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
                };
  
                uart0: serial@07000000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x07000000 0x400>;
-                       interrupts = <0 0 4>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 16>;
                uart1: serial@07000400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x07000400 0x400>;
-                       interrupts = <0 1 4>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 17>;
                uart2: serial@07000800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x07000800 0x400>;
-                       interrupts = <0 2 4>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 18>;
                uart3: serial@07000c00 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x07000c00 0x400>;
-                       interrupts = <0 3 4>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 19>;
                uart4: serial@07001000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x07001000 0x400>;
-                       interrupts = <0 4 4>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 20>;
                uart5: serial@07001400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x07001400 0x400>;
-                       interrupts = <0 5 4>;
+                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&apb1_gates 21>;
                i2c0: i2c@07002800 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x07002800 0x400>;
-                       interrupts = <0 6 4>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 0>;
                        resets = <&apb1_resets 0>;
                        status = "disabled";
                i2c1: i2c@07002c00 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x07002c00 0x400>;
-                       interrupts = <0 7 4>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 1>;
                        resets = <&apb1_resets 1>;
                        status = "disabled";
                i2c2: i2c@07003000 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x07003000 0x400>;
-                       interrupts = <0 8 4>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 2>;
                        resets = <&apb1_resets 2>;
                        status = "disabled";
                i2c3: i2c@07003400 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x07003400 0x400>;
-                       interrupts = <0 9 4>;
+                       interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 3>;
                        resets = <&apb1_resets 3>;
                        status = "disabled";
                i2c4: i2c@07003800 {
                        compatible = "allwinner,sun6i-a31-i2c";
                        reg = <0x07003800 0x400>;
-                       interrupts = <0 10 4>;
+                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&apb1_gates 4>;
                        resets = <&apb1_resets 4>;
                        status = "disabled";
                r_wdt: watchdog@08001000 {
                        compatible = "allwinner,sun6i-a31-wdt";
                        reg = <0x08001000 0x20>;
-                       interrupts = <0 36 4>;
+                       interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
                };
  
                r_uart: serial@08002800 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x08002800 0x400>;
-                       interrupts = <0 38 4>;
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        clocks = <&osc24M>;
index f2b64b1b00fa5231fc2493164fcc89f434687cd1,289fef20cd834f84eb89dd521526db4b3169cb19..f64fddce3e2ae0d757027e3e7eb358bb4fb2765b
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_esdhc1>;
        bus-width = <4>;
-       cd-gpios = <&gpio5 6 GPIO_ACTIVE_LOW>;
+       cd-gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;
        status = "okay";
  };
  
  &fec0 {
        phy-mode = "rmii";
 +      phy-handle = <&ethphy0>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_fec0>;
        status = "okay";
 +
 +      mdio {
 +              #address-cells = <1>;
 +              #size-cells = <0>;
 +
 +              ethphy0: ethernet-phy@0 {
 +                      reg = <0>;
 +              };
 +
 +              ethphy1: ethernet-phy@1 {
 +                      reg = <1>;
 +              };
 +      };
  };
  
  &fec1 {
        phy-mode = "rmii";
 +      phy-handle = <&ethphy1>;
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_fec1>;
        status = "okay";
index 1c34c24efe088c1887ddd4fc2412c6dbffa277d4,1e626335acf3d66ade8596e37921264138e4b9a1..dea419708d73ed112fd63a4c8bea747fd087e3ee
  #define SCLK_SDIO0_SAMPLE     119
  #define SCLK_SDIO1_SAMPLE     120
  #define SCLK_EMMC_SAMPLE      121
+ #define SCLK_USBPHY480M_SRC   122
+ #define SCLK_PVTM_CORE                123
+ #define SCLK_PVTM_GPU         124
  
 +#define SCLK_MAC              151
 +#define SCLK_MACREF_OUT               152
 +
  #define DCLK_VOP0             190
  #define DCLK_VOP1             191
  
  #define PCLK_PUBL0            365
  #define PCLK_DDRUPCTL1                366
  #define PCLK_PUBL1            367
+ #define PCLK_WDT              368
  
  /* hclk gates */
  #define HCLK_GPS              448