]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/commitdiff
Merge tag 'armsoc-arm64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Sep 2015 20:29:48 +0000 (13:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 1 Sep 2015 20:29:48 +0000 (13:29 -0700)
Pull ARM SoC 64-bit changes from Olof Johansson:
 "Here's our branch of ARM64 contents for this merge window.

  Most of this is DT contents for new SoCs (or those who have seen new
  device support added).  Maybe we should stop separating out the arm64
  contents here to avoid the kind of internal conflicts as we got this
  time around, where 32- and 64-bit contents conflicted.

  Anyhow, on the actual contents:

  New SoCs:

   - Broadcom North Star 2 (ns2)
   - Marvell Berlin4CT
   - Mediatek MT6795
   - Rockchip RK3368

  In addition, there are enhancements for the following platforms:

   - Mediatek MT8173: cpuidle-dt updates, misc other additions
   - ZyncMP: A bunch of devices added to the existing DTSI
   - Qualcomm MSM8916 and APQ8016 updates for USB, etc.

  + a handful of other updates for various platforms"

* tag 'armsoc-arm64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (47 commits)
  ARM64: dts: vexpress: Use assigned-clock-parents for sp810
  ARM64: dts: mt6795: enable basic SMP bringup for MT6795
  arm64: Enable Marvell Berlin SoC family in defconfig
  arm64: Enable Marvell Berlin SoC family in Kconfig
  arm64: dts: Add dts files for Marvell Berlin4CT SoC
  ARM64: zynqmp: Move SPI nodes to the right location
  ARM64: zynqmp: Move uart and ttcs to the right location
  ARM64: zynqmp: Enable spi flashes on ep108
  ARM64: zynqmp: Add eeprom memories on i2c bus
  ARM64: zynqmp: Enable sdhci on ep108
  ARM64: zynqmp: Enable watchdog on ep108
  ARM64: zynqmp: Add DWC3 usb support
  ARM64: zynqmp: Add SMMU support
  ARM64: zynqmp: Add CANs node for platform
  ARM64: zynqmp: Use zynqmp specific compatible string for gpio
  devicetree: xilinx: zynqmp: add sata node
  PCI: iproc: Fix BCMA dependency in Kconfig
  arm64: dts: Add Broadcom North Star 2 support
  arm64: Add Broadcom iProc family support
  PCI: iproc: Fix ARM64 dependency in Kconfig
  ...

33 files changed:
Documentation/devicetree/bindings/arm/bcm/ns2.txt [new file with mode: 0644]
Documentation/devicetree/bindings/arm/mediatek.txt
Documentation/devicetree/bindings/arm/mediatek/mediatek,sysirq.txt
Documentation/devicetree/bindings/serial/mtk-uart.txt
arch/arm64/Kconfig
arch/arm64/Kconfig.platforms [new file with mode: 0644]
arch/arm64/boot/dts/Makefile
arch/arm64/boot/dts/arm/juno-motherboard.dtsi
arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
arch/arm64/boot/dts/broadcom/Makefile [new file with mode: 0644]
arch/arm64/boot/dts/broadcom/ns2-svk.dts [new file with mode: 0644]
arch/arm64/boot/dts/broadcom/ns2.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/marvell/Makefile [new file with mode: 0644]
arch/arm64/boot/dts/marvell/berlin4ct-dmp.dts [new file with mode: 0644]
arch/arm64/boot/dts/marvell/berlin4ct.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/Makefile
arch/arm64/boot/dts/mediatek/mt6795-evb.dts [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt6795.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/mediatek/mt8173-evb.dts
arch/arm64/boot/dts/mediatek/mt8173.dtsi
arch/arm64/boot/dts/qcom/apq8016-sbc-pmic-pins.dtsi
arch/arm64/boot/dts/qcom/apq8016-sbc-soc-pins.dtsi
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi
arch/arm64/boot/dts/qcom/msm8916-pins.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/qcom/msm8916.dtsi
arch/arm64/boot/dts/rockchip/Makefile [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3368-r88.dts [new file with mode: 0644]
arch/arm64/boot/dts/rockchip/rk3368.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/sprd/sc9836.dtsi
arch/arm64/boot/dts/xilinx/zynqmp-ep108.dts
arch/arm64/boot/dts/xilinx/zynqmp.dtsi
arch/arm64/configs/defconfig
drivers/pci/host/Kconfig

diff --git a/Documentation/devicetree/bindings/arm/bcm/ns2.txt b/Documentation/devicetree/bindings/arm/bcm/ns2.txt
new file mode 100644 (file)
index 0000000..35f056f
--- /dev/null
@@ -0,0 +1,9 @@
+Broadcom North Star 2 (NS2) device tree bindings
+------------------------------------------------
+
+Boards with NS2 shall have the following properties:
+
+Required root node property:
+
+NS2 SVK board
+compatible = "brcm,ns2-svk", "brcm,ns2";
index 2daa424a13a435ce7e6dd125cb4677801d3dde8f..618a91994a18ecd8942b2ec9b32ccae2e71a9694 100644 (file)
@@ -1,6 +1,7 @@
-MediaTek mt65xx & mt81xx Platforms Device Tree Bindings
+MediaTek mt65xx, mt67xx & mt81xx Platforms Device Tree Bindings
 
-Boards with a MediaTek mt65xx/mt81xx SoC shall have the following property:
+Boards with a MediaTek mt65xx/mt67xx/mt81xx SoC shall have the
+following property:
 
 Required root node property:
 
@@ -8,6 +9,7 @@ compatible: Must contain one of
    "mediatek,mt6580"
    "mediatek,mt6589"
    "mediatek,mt6592"
+   "mediatek,mt6795"
    "mediatek,mt8127"
    "mediatek,mt8135"
    "mediatek,mt8173"
@@ -24,6 +26,9 @@ Supported boards:
 - Evaluation board for MT6592:
     Required root node properties:
       - compatible = "mediatek,mt6592-evb", "mediatek,mt6592";
+- Evaluation board for MT6795(Helio X10):
+    Required root node properties:
+      - compatible = "mediatek,mt6795-evb", "mediatek,mt6795";
 - MTK mt8127 tablet moose EVB:
     Required root node properties:
       - compatible = "mediatek,mt8127-moose", "mediatek,mt8127";
index 3c9c3a7f3d25e5cfbf2bff043cbf9724e9147c4c..afef6a85ac51d46f0496954ea1d76a9144e7d247 100644 (file)
@@ -1,4 +1,4 @@
-Mediatek 65xx/81xx sysirq
++Mediatek 65xx/67xx/81xx sysirq
 
 Mediatek SOCs sysirq support controllable irq inverter for each GIC SPI
 interrupt.
@@ -8,6 +8,7 @@ Required properties:
        "mediatek,mt8173-sysirq"
        "mediatek,mt8135-sysirq"
        "mediatek,mt8127-sysirq"
+       "mediatek,mt6795-sysirq"
        "mediatek,mt6592-sysirq"
        "mediatek,mt6589-sysirq"
        "mediatek,mt6582-sysirq"
index a875997f206277e6e0bdee2c14c6b250be23aab2..2d47add34765ae6a5f5b7f9474409f05927e988e 100644 (file)
@@ -5,11 +5,12 @@ Required properties:
   * "mediatek,mt8135-uart" for MT8135 compatible UARTS
   * "mediatek,mt8127-uart" for MT8127 compatible UARTS
   * "mediatek,mt8173-uart" for MT8173 compatible UARTS
+  * "mediatek,mt6795-uart" for MT6795 compatible UARTS
   * "mediatek,mt6589-uart" for MT6589 compatible UARTS
   * "mediatek,mt6582-uart" for MT6582 compatible UARTS
   * "mediatek,mt6580-uart" for MT6580 compatible UARTS
-  * "mediatek,mt6577-uart" for all compatible UARTS (MT8173, MT6589, MT6582, 
-       MT6580, MT6577)
+  * "mediatek,mt6577-uart" for all compatible UARTS (MT8173, MT6795,
+        MT6589, MT6582, MT6580, MT6577)
 
 - reg: The base address of the UART register bank.
 
index 318175f62c24d0ec4df68a555d02f2bd2a920cfc..b7b9ceaa684ad40dc35e34d7c2c3ca1c1c1fd6c9 100644 (file)
@@ -160,110 +160,7 @@ source "init/Kconfig"
 
 source "kernel/Kconfig.freezer"
 
-menu "Platform selection"
-
-config ARCH_EXYNOS
-       bool
-       help
-         This enables support for Samsung Exynos SoC family
-
-config ARCH_EXYNOS7
-       bool "ARMv8 based Samsung Exynos7"
-       select ARCH_EXYNOS
-       select COMMON_CLK_SAMSUNG
-       select HAVE_S3C2410_WATCHDOG if WATCHDOG
-       select HAVE_S3C_RTC if RTC_CLASS
-       select PINCTRL
-       select PINCTRL_EXYNOS
-
-       help
-         This enables support for Samsung Exynos7 SoC family
-
-config ARCH_FSL_LS2085A
-       bool "Freescale LS2085A SOC"
-       help
-         This enables support for Freescale LS2085A SOC.
-
-config ARCH_HISI
-       bool "Hisilicon SoC Family"
-       help
-         This enables support for Hisilicon ARMv8 SoC family
-
-config ARCH_MEDIATEK
-       bool "Mediatek MT65xx & MT81xx ARMv8 SoC"
-       select ARM_GIC
-       select PINCTRL
-       help
-         Support for Mediatek MT65xx & MT81xx ARMv8 SoCs
-
-config ARCH_QCOM
-       bool "Qualcomm Platforms"
-       select PINCTRL
-       help
-         This enables support for the ARMv8 based Qualcomm chipsets.
-
-config ARCH_SEATTLE
-       bool "AMD Seattle SoC Family"
-       help
-         This enables support for AMD Seattle SOC Family
-
-config ARCH_TEGRA
-       bool "NVIDIA Tegra SoC Family"
-       select ARCH_HAS_RESET_CONTROLLER
-       select ARCH_REQUIRE_GPIOLIB
-       select CLKDEV_LOOKUP
-       select CLKSRC_MMIO
-       select CLKSRC_OF
-       select GENERIC_CLOCKEVENTS
-       select HAVE_CLK
-       select PINCTRL
-       select RESET_CONTROLLER
-       help
-         This enables support for the NVIDIA Tegra SoC family.
-
-config ARCH_TEGRA_132_SOC
-       bool "NVIDIA Tegra132 SoC"
-       depends on ARCH_TEGRA
-       select PINCTRL_TEGRA124
-       select USB_ULPI if USB_PHY
-       select USB_ULPI_VIEWPORT if USB_PHY
-       help
-         Enable support for NVIDIA Tegra132 SoC, based on the Denver
-         ARMv8 CPU.  The Tegra132 SoC is similar to the Tegra124 SoC,
-         but contains an NVIDIA Denver CPU complex in place of
-         Tegra124's "4+1" Cortex-A15 CPU complex.
-
-config ARCH_SPRD
-       bool "Spreadtrum SoC platform"
-       help
-         Support for Spreadtrum ARM based SoCs
-
-config ARCH_THUNDER
-       bool "Cavium Inc. Thunder SoC Family"
-       help
-         This enables support for Cavium's Thunder Family of SoCs.
-
-config ARCH_VEXPRESS
-       bool "ARMv8 software model (Versatile Express)"
-       select ARCH_REQUIRE_GPIOLIB
-       select COMMON_CLK_VERSATILE
-       select POWER_RESET_VEXPRESS
-       select VEXPRESS_CONFIG
-       help
-         This enables support for the ARMv8 software model (Versatile
-         Express).
-
-config ARCH_XGENE
-       bool "AppliedMicro X-Gene SOC Family"
-       help
-         This enables support for AppliedMicro X-Gene SOC Family
-
-config ARCH_ZYNQMP
-       bool "Xilinx ZynqMP Family"
-       help
-         This enables support for Xilinx ZynqMP Family
-
-endmenu
+source "arch/arm64/Kconfig.platforms"
 
 menu "Bus support"
 
diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
new file mode 100644 (file)
index 0000000..23800a1
--- /dev/null
@@ -0,0 +1,125 @@
+menu "Platform selection"
+
+config ARCH_BCM_IPROC
+       bool "Broadcom iProc SoC Family"
+       help
+         This enables support for Broadcom iProc based SoCs
+
+config ARCH_BERLIN
+       bool "Marvell Berlin SoC Family"
+       select DW_APB_ICTL
+       help
+         This enables support for Marvell Berlin SoC Family
+
+config ARCH_EXYNOS
+       bool
+       help
+         This enables support for Samsung Exynos SoC family
+
+config ARCH_EXYNOS7
+       bool "ARMv8 based Samsung Exynos7"
+       select ARCH_EXYNOS
+       select COMMON_CLK_SAMSUNG
+       select HAVE_S3C2410_WATCHDOG if WATCHDOG
+       select HAVE_S3C_RTC if RTC_CLASS
+       select PINCTRL
+       select PINCTRL_EXYNOS
+
+       help
+         This enables support for Samsung Exynos7 SoC family
+
+config ARCH_FSL_LS2085A
+       bool "Freescale LS2085A SOC"
+       help
+         This enables support for Freescale LS2085A SOC.
+
+config ARCH_HISI
+       bool "Hisilicon SoC Family"
+       help
+         This enables support for Hisilicon ARMv8 SoC family
+
+config ARCH_MEDIATEK
+       bool "Mediatek MT65xx & MT81xx ARMv8 SoC"
+       select ARM_GIC
+       select PINCTRL
+       help
+         Support for Mediatek MT65xx & MT81xx ARMv8 SoCs
+
+config ARCH_QCOM
+       bool "Qualcomm Platforms"
+       select PINCTRL
+       help
+         This enables support for the ARMv8 based Qualcomm chipsets.
+
+config ARCH_ROCKCHIP
+       bool "Rockchip Platforms"
+       select ARCH_HAS_RESET_CONTROLLER
+       select ARCH_REQUIRE_GPIOLIB
+       select PINCTRL
+       select PINCTRL_ROCKCHIP
+       help
+         This enables support for the ARMv8 based Rockchip chipsets,
+         like the RK3368.
+
+config ARCH_SEATTLE
+       bool "AMD Seattle SoC Family"
+       help
+         This enables support for AMD Seattle SOC Family
+
+config ARCH_TEGRA
+       bool "NVIDIA Tegra SoC Family"
+       select ARCH_HAS_RESET_CONTROLLER
+       select ARCH_REQUIRE_GPIOLIB
+       select CLKDEV_LOOKUP
+       select CLKSRC_MMIO
+       select CLKSRC_OF
+       select GENERIC_CLOCKEVENTS
+       select HAVE_CLK
+       select PINCTRL
+       select RESET_CONTROLLER
+       help
+         This enables support for the NVIDIA Tegra SoC family.
+
+config ARCH_TEGRA_132_SOC
+       bool "NVIDIA Tegra132 SoC"
+       depends on ARCH_TEGRA
+       select PINCTRL_TEGRA124
+       select USB_ULPI if USB_PHY
+       select USB_ULPI_VIEWPORT if USB_PHY
+       help
+         Enable support for NVIDIA Tegra132 SoC, based on the Denver
+         ARMv8 CPU.  The Tegra132 SoC is similar to the Tegra124 SoC,
+         but contains an NVIDIA Denver CPU complex in place of
+         Tegra124's "4+1" Cortex-A15 CPU complex.
+
+config ARCH_SPRD
+       bool "Spreadtrum SoC platform"
+       help
+         Support for Spreadtrum ARM based SoCs
+
+config ARCH_THUNDER
+       bool "Cavium Inc. Thunder SoC Family"
+       help
+         This enables support for Cavium's Thunder Family of SoCs.
+
+config ARCH_VEXPRESS
+       bool "ARMv8 software model (Versatile Express)"
+       select ARCH_REQUIRE_GPIOLIB
+       select COMMON_CLK_VERSATILE
+       select POWER_RESET_VEXPRESS
+       select VEXPRESS_CONFIG
+       help
+         This enables support for the ARMv8 software model (Versatile
+         Express).
+
+config ARCH_XGENE
+       bool "AppliedMicro X-Gene SOC Family"
+       help
+         This enables support for AppliedMicro X-Gene SOC Family
+
+config ARCH_ZYNQMP
+       bool "Xilinx ZynqMP Family"
+       help
+         This enables support for Xilinx ZynqMP Family
+
+endmenu
index 38913be23695255db81b30d6b25c090d719ca924..d9f88330e7b0a033ed64e93a715ec47504cda523 100644 (file)
@@ -1,12 +1,15 @@
 dts-dirs += amd
 dts-dirs += apm
 dts-dirs += arm
+dts-dirs += broadcom
 dts-dirs += cavium
 dts-dirs += exynos
 dts-dirs += freescale
 dts-dirs += hisilicon
+dts-dirs += marvell
 dts-dirs += mediatek
 dts-dirs += qcom
+dts-dirs += rockchip
 dts-dirs += sprd
 dts-dirs += xilinx
 
index 021e0f40f4195d3f6283dab77a516a1bd663be47..637e046f0e367dd23fbe391dc1542dd97a315504 100644 (file)
                                        clock-names = "refclk", "timclk", "apb_pclk";
                                        #clock-cells = <1>;
                                        clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
+                                       assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
+                                       assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
                                };
 
                                apbregs@010000 {
index c46cbb29f3c6b107cadba495bc590ad8ae820cb2..88a7583ed7a72c3c8536b3c54ad356462cea0feb 100644 (file)
@@ -74,6 +74,8 @@
                                clock-names = "refclk", "timclk", "apb_pclk";
                                #clock-cells = <1>;
                                clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3";
+                               assigned-clocks = <&v2m_sysctl 0>, <&v2m_sysctl 1>, <&v2m_sysctl 3>, <&v2m_sysctl 3>;
+                               assigned-clock-parents = <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>, <&v2m_refclk1mhz>;
                        };
 
                        aaci@040000 {
diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
new file mode 100644 (file)
index 0000000..e21fe66
--- /dev/null
@@ -0,0 +1,5 @@
+dtb-$(CONFIG_ARCH_BCM_IPROC) += ns2-svk.dtb
+
+always         := $(dtb-y)
+subdir-y       := $(dts-dirs)
+clean-files    := *.dtb
diff --git a/arch/arm64/boot/dts/broadcom/ns2-svk.dts b/arch/arm64/boot/dts/broadcom/ns2-svk.dts
new file mode 100644 (file)
index 0000000..244baf8
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ *  BSD LICENSE
+ *
+ *  Copyright(c) 2015 Broadcom Corporation.  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in
+ *      the documentation and/or other materials provided with the
+ *      distribution.
+ *    * Neither the name of Broadcom Corporation nor the names of its
+ *      contributors may be used to endorse or promote products derived
+ *      from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/dts-v1/;
+
+#include "ns2.dtsi"
+
+/ {
+       model = "Broadcom NS2 SVK";
+       compatible = "brcm,ns2-svk", "brcm,ns2";
+
+       aliases {
+               serial0 = &uart3;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x000000000 0x80000000 0x00000000 0x40000000>;
+       };
+
+       soc: soc {
+               uart3: serial@66130000 {
+                       status = "ok";
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/broadcom/ns2.dtsi b/arch/arm64/boot/dts/broadcom/ns2.dtsi
new file mode 100644 (file)
index 0000000..3c92d92
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ *  BSD LICENSE
+ *
+ *  Copyright(c) 2015 Broadcom Corporation.  All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions
+ *  are met:
+ *
+ *    * Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *    * Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in
+ *      the documentation and/or other materials provided with the
+ *      distribution.
+ *    * Neither the name of Broadcom Corporation nor the names of its
+ *      contributors may be used to endorse or promote products derived
+ *      from this software without specific prior written permission.
+ *
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/memreserve/ 0x84b00000 0x00000008;
+
+/ {
+       compatible = "brcm,ns2";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a57", "arm,armv8";
+                       reg = <0 0>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0 0x84b00000>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a57", "arm,armv8";
+                       reg = <0 1>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0 0x84b00000>;
+               };
+
+               cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a57", "arm,armv8";
+                       reg = <0 2>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0 0x84b00000>;
+               };
+
+               cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a57", "arm,armv8";
+                       reg = <0 3>;
+                       enable-method = "spin-table";
+                       cpu-release-addr = <0 0x84b00000>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(0xff) |
+                             IRQ_TYPE_EDGE_RISING)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_RAW(0xff) |
+                             IRQ_TYPE_EDGE_RISING)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_RAW(0xff) |
+                             IRQ_TYPE_EDGE_RISING)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_RAW(0xff) |
+                             IRQ_TYPE_EDGE_RISING)>;
+       };
+
+       soc: soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0 0 0xffffffff>;
+
+               gic: interrupt-controller@65210000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       reg = <0x65210000 0x1000>,
+                             <0x65220000 0x1000>,
+                             <0x65240000 0x2000>,
+                             <0x65260000 0x1000>;
+               };
+
+               uart3: serial@66130000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x66130000 0x100>;
+                       interrupts = <GIC_SPI 393 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clock-frequency = <23961600>;
+                       status = "disabled";
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/marvell/Makefile b/arch/arm64/boot/dts/marvell/Makefile
new file mode 100644 (file)
index 0000000..e2f6afa
--- /dev/null
@@ -0,0 +1,5 @@
+dtb-$(CONFIG_ARCH_BERLIN) += berlin4ct-dmp.dtb
+
+always         := $(dtb-y)
+subdir-y       := $(dts-dirs)
+clean-files    := *.dtb
diff --git a/arch/arm64/boot/dts/marvell/berlin4ct-dmp.dts b/arch/arm64/boot/dts/marvell/berlin4ct-dmp.dts
new file mode 100644 (file)
index 0000000..0d70d39
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2015 Marvell Technology Group Ltd.
+ *
+ * Author: Jisheng Zhang <jszhang@marvell.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPLv2 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 library 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 library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+
+#include "berlin4ct.dtsi"
+
+/ {
+       model = "Marvell BG4CT DMP board";
+       compatible = "marvell,berlin4ct-dmp", "marvell,berlin4ct", "marvell,berlin";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory {
+               device_type = "memory";
+               /* the first 16MB is for firmwares' usage */
+               reg = <0 0x01000000 0 0x7f000000>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/marvell/berlin4ct.dtsi b/arch/arm64/boot/dts/marvell/berlin4ct.dtsi
new file mode 100644 (file)
index 0000000..dd4a10d
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2015 Marvell Technology Group Ltd.
+ *
+ * Author: Jisheng Zhang <jszhang@marvell.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPLv2 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 library 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 library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "marvell,berlin4ct", "marvell,berlin";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       device_type = "cpu";
+                       reg = <0x0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@1 {
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       device_type = "cpu";
+                       reg = <0x1>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@2 {
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       device_type = "cpu";
+                       reg = <0x2>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@3 {
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       device_type = "cpu";
+                       reg = <0x3>;
+                       enable-method = "psci";
+               };
+       };
+
+       osc: osc {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+
+       pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>,
+                                    <&cpu1>,
+                                    <&cpu2>,
+                                    <&cpu3>;
+       };
+
+       timer {
+               compatible = "arm,armv8-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)>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0 0xf7000000 0x1000000>;
+
+               gic: interrupt-controller@901000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       interrupt-controller;
+                       reg = <0x901000 0x1000>,
+                             <0x902000 0x2000>,
+                             <0x904000 0x2000>,
+                             <0x906000 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+               };
+
+               apb@fc0000 {
+                       compatible = "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0xfc0000 0x10000>;
+                       interrupt-parent = <&sic>;
+
+                       sic: interrupt-controller@1000 {
+                               compatible = "snps,dw-apb-ictl";
+                               reg = <0x1000 0x30>;
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+
+                       uart0: uart@d000 {
+                               compatible = "snps,dw-apb-uart";
+                               reg = <0xd000 0x100>;
+                               interrupts = <8>;
+                               clocks = <&osc>;
+                               reg-shift = <2>;
+                               status = "disabled";
+                       };
+               };
+       };
+};
index 3ce24622b2312932db3663b918fb71f6001b18da..e0a4bff2fc17f1c6c48b7741d2d1c46ed6bf247c 100644 (file)
@@ -1,3 +1,4 @@
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt6795-evb.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-evb.dtb
 
 always         := $(dtb-y)
diff --git a/arch/arm64/boot/dts/mediatek/mt6795-evb.dts b/arch/arm64/boot/dts/mediatek/mt6795-evb.dts
new file mode 100644 (file)
index 0000000..ad665f5
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2015 MediaTek Inc.
+ * Author: Mars.C <mars.cheng@mediatek.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+#include "mt6795.dtsi"
+
+/ {
+       model = "MediaTek MT6795 Evaluation Board";
+       compatible = "mediatek,mt6795-evb", "mediatek,mt6795";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0 0x40000000 0 0x1e800000>;
+       };
+
+       chosen {
+               stdout-path = "serial0:921600n8";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt6795.dtsi b/arch/arm64/boot/dts/mediatek/mt6795.dtsi
new file mode 100644 (file)
index 0000000..c85659d
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2015 MediaTek Inc.
+ * Author: Mars.C <mars.cheng@mediatek.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "mediatek,mt6795";
+       interrupt-parent = <&sysirq>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x000>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x001>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x002>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x003>;
+               };
+
+               cpu4: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x100>;
+               };
+
+               cpu5: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x101>;
+               };
+
+               cpu6: cpu@102 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x102>;
+               };
+
+               cpu7: cpu@103 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       enable-method = "psci";
+                       reg = <0x103>;
+               };
+       };
+
+       system_clk: dummy13m {
+               compatible = "fixed-clock";
+               clock-frequency = <13000000>;
+               #clock-cells = <0>;
+       };
+
+       rtc_clk: dummy32k {
+               compatible = "fixed-clock";
+               clock-frequency = <32000>;
+               #clock-cells = <0>;
+       };
+
+       uart_clk: dummy26m {
+               compatible = "fixed-clock";
+               clock-frequency = <26000000>;
+               #clock-cells = <0>;
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_PPI 13
+                            (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14
+                            (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11
+                            (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10
+                            (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       sysirq: intpol-controller@10200620 {
+               compatible = "mediatek,mt6795-sysirq",
+                            "mediatek,mt6577-sysirq";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               interrupt-parent = <&gic>;
+               reg = <0 0x10200620 0 0x20>;
+       };
+
+       gic: interrupt-controller@10221000 {
+               compatible = "arm,gic-400";
+               #interrupt-cells = <3>;
+               interrupt-parent = <&gic>;
+               interrupt-controller;
+               reg = <0 0x10221000 0 0x1000>,
+                     <0 0x10222000 0 0x2000>,
+                     <0 0x10224000 0 0x2000>,
+                     <0 0x10226000 0 0x2000>;
+       };
+
+       uart0: serial@11002000 {
+               compatible = "mediatek,mt6795-uart",
+                            "mediatek,mt6577-uart";
+               reg = <0 0x11002000 0 0x400>;
+               interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&uart_clk>;
+               status = "disabled";
+       };
+
+       uart1: serial@11003000 {
+               compatible = "mediatek,mt6795-uart",
+                            "mediatek,mt6577-uart";
+               reg = <0 0x11003000 0 0x400>;
+               interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&uart_clk>;
+               status = "disabled";
+       };
+
+       uart2: serial@11004000 {
+               compatible = "mediatek,mt6795-uart",
+                            "mediatek,mt6577-uart";
+               reg = <0 0x11004000 0 0x400>;
+               interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&uart_clk>;
+               status = "disabled";
+       };
+
+       uart3: serial@11005000 {
+               compatible = "mediatek,mt6795-uart",
+                            "mediatek,mt6577-uart";
+               reg = <0 0x11005000 0 0x400>;
+               interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_LOW>;
+               clocks = <&uart_clk>;
+               status = "disabled";
+       };
+};
index d0ab012fa379eb97c6e43ebad83ee18185d2b598..4be66cadbc7c19220bafe8bba7e7a9eb1df80fc3 100644 (file)
        chosen { };
 };
 
+&i2c1 {
+       status = "okay";
+
+       buck: da9211@68 {
+               compatible = "dlg,da9211";
+               reg = <0x68>;
+
+               regulators {
+                       da9211_vcpu_reg: BUCKA {
+                               regulator-name = "VBUCKA";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1310000>;
+                               regulator-min-microamp  = <2000000>;
+                               regulator-max-microamp  = <4400000>;
+                               regulator-ramp-delay = <10000>;
+                               regulator-always-on;
+                       };
+
+                       da9211_vgpu_reg: BUCKB {
+                               regulator-name = "VBUCKB";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1310000>;
+                               regulator-min-microamp  = <2000000>;
+                               regulator-max-microamp  = <3000000>;
+                               regulator-ramp-delay = <10000>;
+                       };
+               };
+       };
+};
+
+&mmc0 {
+       status = "okay";
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&mmc0_pins_default>;
+       pinctrl-1 = <&mmc0_pins_uhs>;
+       bus-width = <8>;
+       max-frequency = <50000000>;
+       cap-mmc-highspeed;
+       vmmc-supply = <&mt6397_vemc_3v3_reg>;
+       vqmmc-supply = <&mt6397_vio18_reg>;
+       non-removable;
+};
+
+&mmc1 {
+       status = "okay";
+       pinctrl-names = "default", "state_uhs";
+       pinctrl-0 = <&mmc1_pins_default>;
+       pinctrl-1 = <&mmc1_pins_uhs>;
+       bus-width = <4>;
+       max-frequency = <50000000>;
+       cap-sd-highspeed;
+       sd-uhs-sdr25;
+       cd-gpios = <&pio 132 0>;
+       vmmc-supply = <&mt6397_vmch_reg>;
+       vqmmc-supply = <&mt6397_vmc_reg>;
+};
+
+&pio {
+       mmc0_pins_default: mmc0default {
+               pins_cmd_dat {
+                       pinmux = <MT8173_PIN_57_MSDC0_DAT0__FUNC_MSDC0_DAT0>,
+                                <MT8173_PIN_58_MSDC0_DAT1__FUNC_MSDC0_DAT1>,
+                                <MT8173_PIN_59_MSDC0_DAT2__FUNC_MSDC0_DAT2>,
+                                <MT8173_PIN_60_MSDC0_DAT3__FUNC_MSDC0_DAT3>,
+                                <MT8173_PIN_61_MSDC0_DAT4__FUNC_MSDC0_DAT4>,
+                                <MT8173_PIN_62_MSDC0_DAT5__FUNC_MSDC0_DAT5>,
+                                <MT8173_PIN_63_MSDC0_DAT6__FUNC_MSDC0_DAT6>,
+                                <MT8173_PIN_64_MSDC0_DAT7__FUNC_MSDC0_DAT7>,
+                                <MT8173_PIN_66_MSDC0_CMD__FUNC_MSDC0_CMD>;
+                       input-enable;
+                       bias-pull-up;
+               };
+
+               pins_clk {
+                       pinmux = <MT8173_PIN_65_MSDC0_CLK__FUNC_MSDC0_CLK>;
+                       bias-pull-down;
+               };
+
+               pins_rst {
+                       pinmux = <MT8173_PIN_68_MSDC0_RST___FUNC_MSDC0_RSTB>;
+                       bias-pull-up;
+               };
+       };
+
+       mmc1_pins_default: mmc1default {
+               pins_cmd_dat {
+                       pinmux = <MT8173_PIN_73_MSDC1_DAT0__FUNC_MSDC1_DAT0>,
+                                <MT8173_PIN_74_MSDC1_DAT1__FUNC_MSDC1_DAT1>,
+                                <MT8173_PIN_75_MSDC1_DAT2__FUNC_MSDC1_DAT2>,
+                                <MT8173_PIN_76_MSDC1_DAT3__FUNC_MSDC1_DAT3>,
+                                <MT8173_PIN_78_MSDC1_CMD__FUNC_MSDC1_CMD>;
+                       input-enable;
+                       drive-strength = <MTK_DRIVE_4mA>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins_clk {
+                       pinmux = <MT8173_PIN_77_MSDC1_CLK__FUNC_MSDC1_CLK>;
+                       bias-pull-down;
+                       drive-strength = <MTK_DRIVE_4mA>;
+               };
+
+               pins_insert {
+                       pinmux = <MT8173_PIN_132_I2S0_DATA1__FUNC_GPIO132>;
+                       bias-pull-up;
+               };
+       };
+
+       mmc0_pins_uhs: mmc0 {
+               pins_cmd_dat {
+                       pinmux = <MT8173_PIN_57_MSDC0_DAT0__FUNC_MSDC0_DAT0>,
+                                <MT8173_PIN_58_MSDC0_DAT1__FUNC_MSDC0_DAT1>,
+                                <MT8173_PIN_59_MSDC0_DAT2__FUNC_MSDC0_DAT2>,
+                                <MT8173_PIN_60_MSDC0_DAT3__FUNC_MSDC0_DAT3>,
+                                <MT8173_PIN_61_MSDC0_DAT4__FUNC_MSDC0_DAT4>,
+                                <MT8173_PIN_62_MSDC0_DAT5__FUNC_MSDC0_DAT5>,
+                                <MT8173_PIN_63_MSDC0_DAT6__FUNC_MSDC0_DAT6>,
+                                <MT8173_PIN_64_MSDC0_DAT7__FUNC_MSDC0_DAT7>,
+                                <MT8173_PIN_66_MSDC0_CMD__FUNC_MSDC0_CMD>;
+                       input-enable;
+                       drive-strength = <MTK_DRIVE_2mA>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+               };
+
+               pins_clk {
+                       pinmux = <MT8173_PIN_65_MSDC0_CLK__FUNC_MSDC0_CLK>;
+                       drive-strength = <MTK_DRIVE_2mA>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_01>;
+               };
+
+               pins_rst {
+                       pinmux = <MT8173_PIN_68_MSDC0_RST___FUNC_MSDC0_RSTB>;
+                       bias-pull-up;
+               };
+       };
+
+       mmc1_pins_uhs: mmc1 {
+               pins_cmd_dat {
+                       pinmux = <MT8173_PIN_73_MSDC1_DAT0__FUNC_MSDC1_DAT0>,
+                                <MT8173_PIN_74_MSDC1_DAT1__FUNC_MSDC1_DAT1>,
+                                <MT8173_PIN_75_MSDC1_DAT2__FUNC_MSDC1_DAT2>,
+                                <MT8173_PIN_76_MSDC1_DAT3__FUNC_MSDC1_DAT3>,
+                                <MT8173_PIN_78_MSDC1_CMD__FUNC_MSDC1_CMD>;
+                       input-enable;
+                       drive-strength = <MTK_DRIVE_4mA>;
+                       bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
+               };
+
+               pins_clk {
+                       pinmux = <MT8173_PIN_77_MSDC1_CLK__FUNC_MSDC1_CLK>;
+                       drive-strength = <MTK_DRIVE_4mA>;
+                       bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
+               };
+       };
+};
+
+&pwrap {
+       pmic: mt6397 {
+               compatible = "mediatek,mt6397";
+               interrupt-parent = <&pio>;
+               interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+
+               mt6397regulator: mt6397regulator {
+                       compatible = "mediatek,mt6397-regulator";
+
+                       mt6397_vpca15_reg: buck_vpca15 {
+                               regulator-compatible = "buck_vpca15";
+                               regulator-name = "vpca15";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vpca7_reg: buck_vpca7 {
+                               regulator-compatible = "buck_vpca7";
+                               regulator-name = "vpca7";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-enable-ramp-delay = <115>;
+                       };
+
+                       mt6397_vsramca15_reg: buck_vsramca15 {
+                               regulator-compatible = "buck_vsramca15";
+                               regulator-name = "vsramca15";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vsramca7_reg: buck_vsramca7 {
+                               regulator-compatible = "buck_vsramca7";
+                               regulator-name = "vsramca7";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vcore_reg: buck_vcore {
+                               regulator-compatible = "buck_vcore";
+                               regulator-name = "vcore";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vgpu_reg: buck_vgpu {
+                               regulator-compatible = "buck_vgpu";
+                               regulator-name = "vgpu";
+                               regulator-min-microvolt = < 700000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-enable-ramp-delay = <115>;
+                       };
+
+                       mt6397_vdrm_reg: buck_vdrm {
+                               regulator-compatible = "buck_vdrm";
+                               regulator-name = "vdrm";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1400000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vio18_reg: buck_vio18 {
+                               regulator-compatible = "buck_vio18";
+                               regulator-name = "vio18";
+                               regulator-min-microvolt = <1620000>;
+                               regulator-max-microvolt = <1980000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-always-on;
+                       };
+
+                       mt6397_vtcxo_reg: ldo_vtcxo {
+                               regulator-compatible = "ldo_vtcxo";
+                               regulator-name = "vtcxo";
+                               regulator-always-on;
+                       };
+
+                       mt6397_va28_reg: ldo_va28 {
+                               regulator-compatible = "ldo_va28";
+                               regulator-name = "va28";
+                               regulator-always-on;
+                       };
+
+                       mt6397_vcama_reg: ldo_vcama {
+                               regulator-compatible = "ldo_vcama";
+                               regulator-name = "vcama";
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vio28_reg: ldo_vio28 {
+                               regulator-compatible = "ldo_vio28";
+                               regulator-name = "vio28";
+                               regulator-always-on;
+                       };
+
+                       mt6397_vusb_reg: ldo_vusb {
+                               regulator-compatible = "ldo_vusb";
+                               regulator-name = "vusb";
+                       };
+
+                       mt6397_vmc_reg: ldo_vmc {
+                               regulator-compatible = "ldo_vmc";
+                               regulator-name = "vmc";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vmch_reg: ldo_vmch {
+                               regulator-compatible = "ldo_vmch";
+                               regulator-name = "vmch";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vemc_3v3_reg: ldo_vemc3v3 {
+                               regulator-compatible = "ldo_vemc3v3";
+                               regulator-name = "vemc_3v3";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp1_reg: ldo_vgp1 {
+                               regulator-compatible = "ldo_vgp1";
+                               regulator-name = "vcamd";
+                               regulator-min-microvolt = <1220000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <240>;
+                       };
+
+                       mt6397_vgp2_reg: ldo_vgp2 {
+                               regulator-compatible = "ldo_vgp2";
+                               regulator-name = "vcamio";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp3_reg: ldo_vgp3 {
+                               regulator-compatible = "ldo_vgp3";
+                               regulator-name = "vcamaf";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp4_reg: ldo_vgp4 {
+                               regulator-compatible = "ldo_vgp4";
+                               regulator-name = "vgp4";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp5_reg: ldo_vgp5 {
+                               regulator-compatible = "ldo_vgp5";
+                               regulator-name = "vgp5";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vgp6_reg: ldo_vgp6 {
+                               regulator-compatible = "ldo_vgp6";
+                               regulator-name = "vgp6";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+
+                       mt6397_vibr_reg: ldo_vibr {
+                               regulator-compatible = "ldo_vibr";
+                               regulator-name = "vibr";
+                               regulator-min-microvolt = <1300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-enable-ramp-delay = <218>;
+                       };
+               };
+       };
+};
+
 &uart0 {
        status = "okay";
 };
index 27237a1c1a87030b41825777e9ce0750892870b3..d18ee4259ee57e280166334a01bcba5fba80d2e0 100644 (file)
  * GNU General Public License for more details.
  */
 
+#include <dt-bindings/clock/mt8173-clk.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/mt8173-power.h>
+#include <dt-bindings/reset-controller/mt8173-resets.h>
 #include "mt8173-pinfunc.h"
 
 / {
@@ -49,6 +52,8 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x000>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                };
 
                cpu1: cpu@1 {
@@ -56,6 +61,7 @@
                        compatible = "arm,cortex-a53";
                        reg = <0x001>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                };
 
                cpu2: cpu@100 {
@@ -63,6 +69,7 @@
                        compatible = "arm,cortex-a57";
                        reg = <0x100>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
                };
 
                cpu3: cpu@101 {
                        compatible = "arm,cortex-a57";
                        reg = <0x101>;
                        enable-method = "psci";
+                       cpu-idle-states = <&CPU_SLEEP_0>;
+               };
+
+               idle-states {
+                       entry-method = "arm,psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               entry-latency-us = <639>;
+                               exit-latency-us = <680>;
+                               min-residency-us = <1088>;
+                               arm,psci-suspend-param = <0x0010000>;
+                       };
                };
        };
 
                cpu_on        = <0x84000003>;
        };
 
-       uart_clk: dummy26m {
+       clk26m: oscillator@0 {
                compatible = "fixed-clock";
+               #clock-cells = <0>;
                clock-frequency = <26000000>;
+               clock-output-names = "clk26m";
+       };
+
+       clk32k: oscillator@1 {
+               compatible = "fixed-clock";
                #clock-cells = <0>;
+               clock-frequency = <32000>;
+               clock-output-names = "clk32k";
        };
 
        timer {
                compatible = "simple-bus";
                ranges;
 
-               /*
-                * Pinctrl access register at 0x10005000 through regmap.
-                * Register 0x1000b000 is used by EINT.
-                */
-               pio: pinctrl@10005000 {
+               topckgen: clock-controller@10000000 {
+                       compatible = "mediatek,mt8173-topckgen";
+                       reg = <0 0x10000000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
+               infracfg: power-controller@10001000 {
+                       compatible = "mediatek,mt8173-infracfg", "syscon";
+                       reg = <0 0x10001000 0 0x1000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               pericfg: power-controller@10003000 {
+                       compatible = "mediatek,mt8173-pericfg", "syscon";
+                       reg = <0 0x10003000 0 0x1000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               syscfg_pctl_a: syscfg_pctl_a@10005000 {
+                       compatible = "mediatek,mt8173-pctl-a-syscfg", "syscon";
+                       reg = <0 0x10005000 0 0x1000>;
+               };
+
+               pio: pinctrl@0x10005000 {
                        compatible = "mediatek,mt8173-pinctrl";
                        reg = <0 0x1000b000 0 0x1000>;
                        mediatek,pctl-regmap = <&syscfg_pctl_a>;
                        interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+
+                       i2c0_pins_a: i2c0 {
+                               pins1 {
+                                       pinmux = <MT8173_PIN_45_SDA0__FUNC_SDA0>,
+                                                <MT8173_PIN_46_SCL0__FUNC_SCL0>;
+                                       bias-disable;
+                               };
+                       };
+
+                       i2c1_pins_a: i2c1 {
+                               pins1 {
+                                       pinmux = <MT8173_PIN_125_SDA1__FUNC_SDA1>,
+                                                <MT8173_PIN_126_SCL1__FUNC_SCL1>;
+                                       bias-disable;
+                               };
+                       };
+
+                       i2c2_pins_a: i2c2 {
+                               pins1 {
+                                       pinmux = <MT8173_PIN_43_SDA2__FUNC_SDA2>,
+                                                <MT8173_PIN_44_SCL2__FUNC_SCL2>;
+                                       bias-disable;
+                               };
+                       };
+
+                       i2c3_pins_a: i2c3 {
+                               pins1 {
+                                       pinmux = <MT8173_PIN_106_SDA3__FUNC_SDA3>,
+                                                <MT8173_PIN_107_SCL3__FUNC_SCL3>;
+                                       bias-disable;
+                               };
+                       };
+
+                       i2c4_pins_a: i2c4 {
+                               pins1 {
+                                       pinmux = <MT8173_PIN_133_SDA4__FUNC_SDA4>,
+                                                <MT8173_PIN_134_SCL4__FUNC_SCL4>;
+                                       bias-disable;
+                               };
+                       };
+
+                       i2c6_pins_a: i2c6 {
+                               pins1 {
+                                       pinmux = <MT8173_PIN_100_MSDC2_DAT0__FUNC_SDA5>,
+                                                <MT8173_PIN_101_MSDC2_DAT1__FUNC_SCL5>;
+                                       bias-disable;
+                               };
+                       };
                };
 
-               syscfg_pctl_a: syscfg_pctl_a@10005000 {
-                       compatible = "mediatek,mt8173-pctl-a-syscfg", "syscon";
-                       reg = <0 0x10005000 0 0x1000>;
+               scpsys: scpsys@10006000 {
+                       compatible = "mediatek,mt8173-scpsys";
+                       #power-domain-cells = <1>;
+                       reg = <0 0x10006000 0 0x1000>;
+                       clocks = <&clk26m>,
+                                <&topckgen CLK_TOP_MM_SEL>;
+                       clock-names = "mfg", "mm";
+                       infracfg = <&infracfg>;
+               };
+
+               watchdog: watchdog@10007000 {
+                       compatible = "mediatek,mt8173-wdt",
+                                    "mediatek,mt6589-wdt";
+                       reg = <0 0x10007000 0 0x100>;
+               };
+
+               pwrap: pwrap@1000d000 {
+                       compatible = "mediatek,mt8173-pwrap";
+                       reg = <0 0x1000d000 0 0x1000>;
+                       reg-names = "pwrap";
+                       interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&infracfg MT8173_INFRA_PMIC_WRAP_RST>;
+                       reset-names = "pwrap";
+                       clocks = <&infracfg CLK_INFRA_PMICSPI>, <&infracfg CLK_INFRA_PMICWRAP>;
+                       clock-names = "spi", "wrap";
                };
 
                sysirq: intpol-controller@10200620 {
                        reg = <0 0x10200620 0 0x20>;
                };
 
+               apmixedsys: clock-controller@10209000 {
+                       compatible = "mediatek,mt8173-apmixedsys";
+                       reg = <0 0x10209000 0 0x1000>;
+                       #clock-cells = <1>;
+               };
+
                gic: interrupt-controller@10220000 {
                        compatible = "arm,gic-400";
                        #interrupt-cells = <3>;
                                     "mediatek,mt6577-uart";
                        reg = <0 0x11002000 0 0x400>;
                        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART0_SEL>, <&pericfg CLK_PERI_UART0>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
                                     "mediatek,mt6577-uart";
                        reg = <0 0x11003000 0 0x400>;
                        interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART1_SEL>, <&pericfg CLK_PERI_UART1>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
                                     "mediatek,mt6577-uart";
                        reg = <0 0x11004000 0 0x400>;
                        interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART2_SEL>, <&pericfg CLK_PERI_UART2>;
+                       clock-names = "baud", "bus";
                        status = "disabled";
                };
 
                                     "mediatek,mt6577-uart";
                        reg = <0 0x11005000 0 0x400>;
                        interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&uart_clk>;
+                       clocks = <&pericfg CLK_PERI_UART3_SEL>, <&pericfg CLK_PERI_UART3>;
+                       clock-names = "baud", "bus";
+                       status = "disabled";
+               };
+
+               i2c0: i2c@11007000 {
+                       compatible = "mediatek,mt8173-i2c";
+                       reg = <0 0x11007000 0 0x70>,
+                             <0 0x11000100 0 0x80>;
+                       interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_LOW>;
+                       clock-div = <16>;
+                       clocks = <&pericfg CLK_PERI_I2C0>,
+                                <&pericfg CLK_PERI_AP_DMA>;
+                       clock-names = "main", "dma";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_pins_a>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@11008000 {
+                       compatible = "mediatek,mt8173-i2c";
+                       reg = <0 0x11008000 0 0x70>,
+                             <0 0x11000180 0 0x80>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_LOW>;
+                       clock-div = <16>;
+                       clocks = <&pericfg CLK_PERI_I2C1>,
+                                <&pericfg CLK_PERI_AP_DMA>;
+                       clock-names = "main", "dma";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1_pins_a>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@11009000 {
+                       compatible = "mediatek,mt8173-i2c";
+                       reg = <0 0x11009000 0 0x70>,
+                             <0 0x11000200 0 0x80>;
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_LOW>;
+                       clock-div = <16>;
+                       clocks = <&pericfg CLK_PERI_I2C2>,
+                                <&pericfg CLK_PERI_AP_DMA>;
+                       clock-names = "main", "dma";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c2_pins_a>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c3@11010000 {
+                       compatible = "mediatek,mt8173-i2c";
+                       reg = <0 0x11010000 0 0x70>,
+                             <0 0x11000280 0 0x80>;
+                       interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_LOW>;
+                       clock-div = <16>;
+                       clocks = <&pericfg CLK_PERI_I2C3>,
+                                <&pericfg CLK_PERI_AP_DMA>;
+                       clock-names = "main", "dma";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c3_pins_a>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c4@11011000 {
+                       compatible = "mediatek,mt8173-i2c";
+                       reg = <0 0x11011000 0 0x70>,
+                             <0 0x11000300 0 0x80>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_LOW>;
+                       clock-div = <16>;
+                       clocks = <&pericfg CLK_PERI_I2C4>,
+                                <&pericfg CLK_PERI_AP_DMA>;
+                       clock-names = "main", "dma";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c4_pins_a>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c6: i2c6@11013000 {
+                       compatible = "mediatek,mt8173-i2c";
+                       reg = <0 0x11013000 0 0x70>,
+                             <0 0x11000080 0 0x80>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_LOW>;
+                       clock-div = <16>;
+                       clocks = <&pericfg CLK_PERI_I2C6>,
+                                <&pericfg CLK_PERI_AP_DMA>;
+                       clock-names = "main", "dma";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c6_pins_a>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               afe: audio-controller@11220000  {
+                       compatible = "mediatek,mt8173-afe-pcm";
+                       reg = <0 0x11220000 0 0x1000>;
+                       interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_FALLING>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_AUDIO>;
+                       clocks = <&infracfg CLK_INFRA_AUDIO>,
+                                <&topckgen CLK_TOP_AUDIO_SEL>,
+                                <&topckgen CLK_TOP_AUD_INTBUS_SEL>,
+                                <&topckgen CLK_TOP_APLL1_DIV0>,
+                                <&topckgen CLK_TOP_APLL2_DIV0>,
+                                <&topckgen CLK_TOP_I2S0_M_SEL>,
+                                <&topckgen CLK_TOP_I2S1_M_SEL>,
+                                <&topckgen CLK_TOP_I2S2_M_SEL>,
+                                <&topckgen CLK_TOP_I2S3_M_SEL>,
+                                <&topckgen CLK_TOP_I2S3_B_SEL>;
+                       clock-names = "infra_sys_audio_clk",
+                                     "top_pdn_audio",
+                                     "top_pdn_aud_intbus",
+                                     "bck0",
+                                     "bck1",
+                                     "i2s0_m",
+                                     "i2s1_m",
+                                     "i2s2_m",
+                                     "i2s3_m",
+                                     "i2s3_b";
+                       assigned-clocks = <&topckgen CLK_TOP_AUD_1_SEL>,
+                                         <&topckgen CLK_TOP_AUD_2_SEL>;
+                       assigned-clock-parents = <&topckgen CLK_TOP_APLL1>,
+                                                <&topckgen CLK_TOP_APLL2>;
+               };
+
+               mmc0: mmc@11230000 {
+                       compatible = "mediatek,mt8173-mmc",
+                                    "mediatek,mt8135-mmc";
+                       reg = <0 0x11230000 0 0x1000>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&pericfg CLK_PERI_MSDC30_0>,
+                                <&topckgen CLK_TOP_MSDC50_0_H_SEL>;
+                       clock-names = "source", "hclk";
+                       status = "disabled";
+               };
+
+               mmc1: mmc@11240000 {
+                       compatible = "mediatek,mt8173-mmc",
+                                    "mediatek,mt8135-mmc";
+                       reg = <0 0x11240000 0 0x1000>;
+                       interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&pericfg CLK_PERI_MSDC30_1>,
+                                <&topckgen CLK_TOP_AXI_SEL>;
+                       clock-names = "source", "hclk";
+                       status = "disabled";
+               };
+
+               mmc2: mmc@11250000 {
+                       compatible = "mediatek,mt8173-mmc",
+                                    "mediatek,mt8135-mmc";
+                       reg = <0 0x11250000 0 0x1000>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&pericfg CLK_PERI_MSDC30_2>,
+                                <&topckgen CLK_TOP_AXI_SEL>;
+                       clock-names = "source", "hclk";
+                       status = "disabled";
+               };
+
+               mmc3: mmc@11260000 {
+                       compatible = "mediatek,mt8173-mmc",
+                                    "mediatek,mt8135-mmc";
+                       reg = <0 0x11260000 0 0x1000>;
+                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_LOW>;
+                       clocks = <&pericfg CLK_PERI_MSDC30_3>,
+                                <&topckgen CLK_TOP_MSDC50_2_H_SEL>;
+                       clock-names = "source", "hclk";
                        status = "disabled";
                };
        };
index 535532b9287ff9665b2af01feefff8aed47ee48c..e03c11d9d83447a524047c6e41498d7d3e4ac71c 100644 (file)
@@ -2,27 +2,37 @@
 
 &pm8916_gpios {
 
-       pinctrl-names = "default";
-       pinctrl-0 = <&pm8916_gpios_default>;
-
-       pm8916_gpios_default: default {
-               usb_hub_reset_pm {
-                       pins = "gpio1";
+       usb_hub_reset_pm: usb_hub_reset_pm {
+               pinconf {
+                       pins = "gpio3";
                        function = PMIC_GPIO_FUNC_NORMAL;
                        output-low;
                };
-               usb_sw_sel_pm {
-                       pins = "gpio2";
+       };
+
+       usb_sw_sel_pm: usb_sw_sel_pm {
+               pinconf {
+                       pins = "gpio4";
                        function = PMIC_GPIO_FUNC_NORMAL;
+                       power-source = <PM8916_GPIO_VPH>;
                        input-disable;
                };
-               usr_led_3_ctrl {
-                       pins = "gpio3";
+       };
+
+       pm8916_gpios_leds: pm8916_gpios_leds {
+               pinconf {
+                       pins = "gpio1", "gpio2";
                        function = PMIC_GPIO_FUNC_NORMAL;
                        output-low;
                };
-               usr_led_4_ctrl {
-                       pins = "gpio4";
+       };
+};
+
+&pm8916_mpps {
+
+       pm8916_mpps_leds: pm8916_mpps_leds {
+               pinconf {
+                       pins = "mpp2", "mpp3";
                        function = PMIC_GPIO_FUNC_NORMAL;
                        output-low;
                };
index 5f7023f90df78caa21b7254e02da2144268158a8..cbeee0bcdf5234ecbea25bb354f30d591d6e3f18 100644 (file)
@@ -3,17 +3,9 @@
 
 &msmgpio {
 
-       pinctrl-names = "default";
-       pinctrl-0 = <&soc_gpios_default>;
-
-       soc_gpios_default: default {
-               usr_led_1_ctrl_default: usr_led_1_ctrl_default {
-                       pins = "gpio21";
-                       function = "gpio";
-                       output-low;
-               };
-               usr_led_2_ctrl_default: usr_led_2_ctrl_default {
-                       pins = "gpio120";
+       msmgpio_leds: msmgpio_leds {
+               pinconf {
+                       pins = "gpio21", "gpio120";
                        function = "gpio";
                        output-low;
                };
index 98abece6b23309179c55e42bf81507bd88526ed5..66804ffbc6d29724f2bc5a83a869042ad7159f15 100644 (file)
                        pinctrl-0 = <&blsp1_uart2_default>;
                        pinctrl-1 = <&blsp1_uart2_sleep>;
                };
+
+               leds {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&msmgpio_leds>,
+                                   <&pm8916_gpios_leds>,
+                                   <&pm8916_mpps_leds>;
+
+                       compatible = "gpio-leds";
+
+                       led@1 {
+                               label = "apq8016-sbc:green:user1";
+                               gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>;
+                               linux,default-trigger = "heartbeat";
+                               default-state = "off";
+                       };
+
+                       led@2 {
+                               label = "apq8016-sbc:green:user2";
+                               gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>;
+                               linux,default-trigger = "mmc0";
+                               default-state = "off";
+                       };
+
+                       led@3 {
+                               label = "apq8016-sbc:green:user3";
+                               gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>;
+                               linux,default-trigger = "mmc1";
+                               default-state = "off";
+                       };
+
+                       led@4 {
+                               label = "apq8016-sbc:green:user4";
+                               gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>;
+                               linux,default-trigger = "none";
+                               default-state = "off";
+                       };
+
+                       led@5 {
+                               label = "apq8016-sbc:yellow:wlan";
+                               gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>;
+                               linux,default-trigger = "wlan";
+                               default-state = "off";
+                       };
+
+                       led@6 {
+                               label = "apq8016-sbc:blue:bt";
+                               gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>;
+                               linux,default-trigger = "bt";
+                               default-state = "off";
+                       };
+               };
        };
 };
diff --git a/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi b/arch/arm64/boot/dts/qcom/msm8916-pins.dtsi
new file mode 100644 (file)
index 0000000..5689568
--- /dev/null
@@ -0,0 +1,430 @@
+/*
+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+&msmgpio {
+
+       blsp1_uart2_default: blsp1_uart2_default {
+               pinmux {
+                       function = "blsp_uart2";
+                       pins = "gpio4", "gpio5";
+               };
+               pinconf {
+                       pins = "gpio4", "gpio5";
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+       };
+
+       blsp1_uart2_sleep: blsp1_uart2_sleep {
+               pinmux {
+                       function = "blsp_uart2";
+                       pins = "gpio4", "gpio5";
+               };
+               pinconf {
+                       pins = "gpio4", "gpio5";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       spi1_default: spi1_default {
+               pinmux {
+                       function = "blsp_spi1";
+                       pins = "gpio0", "gpio1", "gpio3";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio2";
+               };
+               pinconf {
+                       pins = "gpio0", "gpio1", "gpio3";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio2";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi1_sleep: spi1_sleep {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               };
+               pinconf {
+                       pins = "gpio0", "gpio1", "gpio2", "gpio3";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       spi2_default: spi2_default {
+               pinmux {
+                       function = "blsp_spi2";
+                       pins = "gpio4", "gpio5", "gpio7";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio6";
+               };
+               pinconf {
+                       pins = "gpio4", "gpio5", "gpio6", "gpio7";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio6";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi2_sleep: spi2_sleep {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio4", "gpio5", "gpio6", "gpio7";
+               };
+               pinconf {
+                       pins = "gpio4", "gpio5", "gpio6", "gpio7";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       spi3_default: spi3_default {
+               pinmux {
+                       function = "blsp_spi3";
+                       pins = "gpio8", "gpio9", "gpio11";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio10";
+               };
+               pinconf {
+                       pins = "gpio8", "gpio9", "gpio10", "gpio11";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio10";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi3_sleep: spi3_sleep {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio8", "gpio9", "gpio10", "gpio11";
+               };
+               pinconf {
+                       pins = "gpio8", "gpio9", "gpio10", "gpio11";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       spi4_default: spi4_default {
+               pinmux {
+                       function = "blsp_spi4";
+                       pins = "gpio12", "gpio13", "gpio15";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio14";
+               };
+               pinconf {
+                       pins = "gpio12", "gpio13", "gpio14", "gpio15";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio14";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi4_sleep: spi4_sleep {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio12", "gpio13", "gpio14", "gpio15";
+               };
+               pinconf {
+                       pins = "gpio12", "gpio13", "gpio14", "gpio15";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       spi5_default: spi5_default {
+               pinmux {
+                       function = "blsp_spi5";
+                       pins = "gpio16", "gpio17", "gpio19";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio18";
+               };
+               pinconf {
+                       pins = "gpio16", "gpio17", "gpio18", "gpio19";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio18";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi5_sleep: spi5_sleep {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio16", "gpio17", "gpio18", "gpio19";
+               };
+               pinconf {
+                       pins = "gpio16", "gpio17", "gpio18", "gpio19";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       spi6_default: spi6_default {
+               pinmux {
+                       function = "blsp_spi6";
+                       pins = "gpio20", "gpio21", "gpio23";
+               };
+               pinmux_cs {
+                       function = "gpio";
+                       pins = "gpio22";
+               };
+               pinconf {
+                       pins = "gpio20", "gpio21", "gpio22", "gpio23";
+                       drive-strength = <12>;
+                       bias-disable;
+               };
+               pinconf_cs {
+                       pins = "gpio22";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       spi6_sleep: spi6_sleep {
+               pinmux {
+                       function = "gpio";
+                       pins = "gpio20", "gpio21", "gpio22", "gpio23";
+               };
+               pinconf {
+                       pins = "gpio20", "gpio21", "gpio22", "gpio23";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+       };
+
+       i2c4_default: i2c4_default {
+               pinmux {
+                       function = "blsp_i2c4";
+                       pins = "gpio14", "gpio15";
+               };
+               pinconf {
+                       pins = "gpio14", "gpio15";
+                       drive-strength = <2>;
+                       bias-disable = <0>;
+               };
+       };
+
+       i2c4_sleep: i2c4_sleep {
+               pinmux {
+                       function = "blsp_i2c4";
+                       pins = "gpio14", "gpio15";
+               };
+               pinconf {
+                       pins = "gpio14", "gpio15";
+                       drive-strength = <2>;
+                       bias-disable = <0>;
+               };
+       };
+
+       sdhc2_cd_pin {
+               sdc2_cd_on: cd_on {
+                       pinmux {
+                               function = "gpio";
+                               pins = "gpio38";
+                       };
+                       pinconf {
+                               pins = "gpio38";
+                               drive-strength = <2>;
+                               bias-pull-up;
+                       };
+               };
+               sdc2_cd_off: cd_off {
+                       pinmux {
+                               function = "gpio";
+                               pins = "gpio38";
+                       };
+                       pinconf {
+                               pins = "gpio38";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+               };
+       };
+
+       pmx_sdc1_clk {
+               sdc1_clk_on: clk_on {
+                       pinmux {
+                               pins = "sdc1_clk";
+                       };
+                       pinconf {
+                               pins = "sdc1_clk";
+                               bias-disable;
+                               drive-strength = <16>;
+                       };
+               };
+               sdc1_clk_off: clk_off {
+                       pinmux {
+                               pins = "sdc1_clk";
+                       };
+                       pinconf {
+                               pins = "sdc1_clk";
+                               bias-disable;
+                               drive-strength = <2>;
+                       };
+               };
+       };
+
+       pmx_sdc1_cmd {
+               sdc1_cmd_on: cmd_on {
+                       pinmux {
+                               pins = "sdc1_cmd";
+                       };
+                       pinconf {
+                               pins = "sdc1_cmd";
+                               bias-pull-up;
+                               drive-strength = <10>;
+                       };
+               };
+               sdc1_cmd_off: cmd_off {
+                       pinmux {
+                               pins = "sdc1_cmd";
+                       };
+                       pinconf {
+                               pins = "sdc1_cmd";
+                               bias-pull-up;
+                               drive-strength = <2>;
+                       };
+               };
+       };
+
+       pmx_sdc1_data {
+               sdc1_data_on: data_on {
+                       pinmux {
+                               pins = "sdc1_data";
+                       };
+                       pinconf {
+                               pins = "sdc1_data";
+                               bias-pull-up;
+                               drive-strength = <10>;
+                       };
+               };
+               sdc1_data_off: data_off {
+                       pinmux {
+                               pins = "sdc1_data";
+                       };
+                       pinconf {
+                               pins = "sdc1_data";
+                               bias-pull-up;
+                               drive-strength = <2>;
+                       };
+               };
+       };
+
+       pmx_sdc2_clk {
+               sdc2_clk_on: clk_on {
+                       pinmux {
+                               pins = "sdc2_clk";
+                       };
+                       pinconf {
+                               pins = "sdc2_clk";
+                               bias-disable;
+                               drive-strength = <16>;
+                       };
+               };
+               sdc2_clk_off: clk_off {
+                       pinmux {
+                               pins = "sdc2_clk";
+                       };
+                       pinconf {
+                               pins = "sdc2_clk";
+                               bias-disable;
+                               drive-strength = <2>;
+                       };
+               };
+       };
+
+       pmx_sdc2_cmd {
+               sdc2_cmd_on: cmd_on {
+                       pinmux {
+                               pins = "sdc2_cmd";
+                       };
+                       pinconf {
+                               pins = "sdc2_cmd";
+                               bias-pull-up;
+                               drive-strength = <10>;
+                       };
+               };
+               sdc2_cmd_off: cmd_off {
+                       pinmux {
+                               pins = "sdc2_cmd";
+                       };
+                       pinconf {
+                               pins = "sdc2_cmd";
+                               bias-pull-up;
+                               drive-strength = <2>;
+                       };
+               };
+       };
+
+       pmx_sdc2_data {
+               sdc2_data_on: data_on {
+                       pinmux {
+                               pins = "sdc2_data";
+                       };
+                       pinconf {
+                               pins = "sdc2_data";
+                               bias-pull-up;
+                               drive-strength = <10>;
+                       };
+               };
+               sdc2_data_off: data_off {
+                       pinmux {
+                               pins = "sdc2_data";
+                       };
+                       pinconf {
+                               pins = "sdc2_data";
+                               bias-pull-up;
+                               drive-strength = <2>;
+                       };
+               };
+       };
+};
index 0f49ebd0aa8b24a1cfc0ed77ae30f08c3f548c19..5911de008dd5010da246c809c0252babcd606ab3 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
-       aliases { };
+       aliases {
+               sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
+               sdhc2 = &sdhc_2; /* SDC2 SD card slot */
+       };
 
        chosen { };
 
                        #gpio-cells = <2>;
                        interrupt-controller;
                        #interrupt-cells = <2>;
-
-                       blsp1_uart2_default: blsp1_uart2_default {
-                               pinmux {
-                                       function = "blsp_uart2";
-                                       pins = "gpio4", "gpio5";
-                               };
-                               pinconf {
-                                       pins = "gpio4", "gpio5";
-                                       drive-strength = <16>;
-                                       bias-disable;
-                               };
-                       };
-
-                       blsp1_uart2_sleep: blsp1_uart2_sleep {
-                               pinmux {
-                                       function = "blsp_uart2";
-                                       pins = "gpio4", "gpio5";
-                               };
-                               pinconf {
-                                       pins = "gpio4", "gpio5";
-                                       drive-strength = <2>;
-                                       bias-pull-down;
-                               };
-                       };
                };
 
                gcc: qcom,gcc@1800000 {
                        status = "disabled";
                };
 
+               blsp_dma: dma@7884000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x07884000 0x23000>;
+                       interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi1: spi@78b5000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b5000 0x600>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 5>, <&blsp_dma 4>;
+                       dma-names = "rx", "tx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi1_default>;
+                       pinctrl-1 = <&spi1_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi2: spi@78b6000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b6000 0x600>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 7>, <&blsp_dma 6>;
+                       dma-names = "rx", "tx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi2_default>;
+                       pinctrl-1 = <&spi2_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi3: spi@78b7000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b7000 0x600>;
+                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 9>, <&blsp_dma 8>;
+                       dma-names = "rx", "tx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi3_default>;
+                       pinctrl-1 = <&spi3_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi4: spi@78b8000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b8000 0x600>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 11>, <&blsp_dma 10>;
+                       dma-names = "rx", "tx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi4_default>;
+                       pinctrl-1 = <&spi4_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi5: spi@78b9000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078b9000 0x600>;
+                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 13>, <&blsp_dma 12>;
+                       dma-names = "rx", "tx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi5_default>;
+                       pinctrl-1 = <&spi5_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_spi6: spi@78ba000 {
+                       compatible = "qcom,spi-qup-v2.2.1";
+                       reg = <0x078ba000 0x600>;
+                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
+                                <&gcc GCC_BLSP1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       dmas = <&blsp_dma 15>, <&blsp_dma 14>;
+                       dma-names = "rx", "tx";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&spi6_default>;
+                       pinctrl-1 = <&spi6_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               blsp_i2c4: i2c@78b8000 {
+                       compatible = "qcom,i2c-qup-v2.2.1";
+                       reg = <0x78b8000 0x1000>;
+                       interrupts = <GIC_SPI 98 0>;
+                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+                               <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
+                       clock-names = "iface", "core";
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&i2c4_default>;
+                       pinctrl-1 = <&i2c4_sleep>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               sdhc_1: sdhci@07824000 {
+                       compatible = "qcom,sdhci-msm-v4";
+                       reg = <0x07824900 0x11c>, <0x07824000 0x800>;
+                       reg-names = "hc_mem", "core_mem";
+
+                       interrupts = <0 123 0>, <0 138 0>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC1_APPS_CLK>,
+                                <&gcc GCC_SDCC1_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       bus-width = <8>;
+                       non-removable;
+                       status = "disabled";
+               };
+
+               sdhc_2: sdhci@07864000 {
+                       compatible = "qcom,sdhci-msm-v4";
+                       reg = <0x07864900 0x11c>, <0x07864000 0x800>;
+                       reg-names = "hc_mem", "core_mem";
+
+                       interrupts = <0 125 0>, <0 221 0>;
+                       interrupt-names = "hc_irq", "pwr_irq";
+                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
+                                <&gcc GCC_SDCC2_AHB_CLK>;
+                       clock-names = "core", "iface";
+                       bus-width = <4>;
+                       status = "disabled";
+               };
+
+               usb_dev: usb@78d9000 {
+                       compatible = "qcom,ci-hdrc";
+                       reg = <0x78d9000 0x400>;
+                       dr_mode = "peripheral";
+                       interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
+                       usb-phy = <&usb_otg>;
+                       status = "disabled";
+               };
+
+               usb_host: ehci@78d9000 {
+                       compatible = "qcom,ehci-host";
+                       reg = <0x78d9000 0x400>;
+                       interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
+                       usb-phy = <&usb_otg>;
+                       status = "disabled";
+               };
+
+               usb_otg: phy@78d9000 {
+                       compatible = "qcom,usb-otg-snps";
+                       reg = <0x78d9000 0x400>;
+                       interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_BOTH>,
+                                    <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
+
+                       qcom,vdd-levels = <1 5 7>;
+                       qcom,phy-init-sequence = <0x44 0x6B 0x24 0x13>;
+                       dr_mode = "peripheral";
+                       qcom,otg-control = <2>; // PMIC
+
+                       clocks = <&gcc GCC_USB_HS_AHB_CLK>,
+                                <&gcc GCC_USB_HS_SYSTEM_CLK>,
+                                <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
+                       clock-names = "iface", "core", "sleep";
+
+                       resets = <&gcc GCC_USB2A_PHY_BCR>,
+                                <&gcc GCC_USB_HS_BCR>;
+                       reset-names = "phy", "link";
+                       status = "disabled";
+               };
+
                intc: interrupt-controller@b000000 {
                        compatible = "qcom,msm-qgic2";
                        interrupt-controller;
                };
        };
 };
+
+#include "msm8916-pins.dtsi"
diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
new file mode 100644 (file)
index 0000000..601e6a2
--- /dev/null
@@ -0,0 +1,5 @@
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3368-r88.dtb
+
+always         := $(dtb-y)
+subdir-y       := $(dts-dirs)
+clean-files    := *.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3368-r88.dts b/arch/arm64/boot/dts/rockchip/rk3368-r88.dts
new file mode 100644 (file)
index 0000000..401a812
--- /dev/null
@@ -0,0 +1,354 @@
+/*
+ * Copyright (c) 2015 Heiko Stuebner <heiko@sntech.de>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "rk3368.dtsi"
+
+/ {
+       model = "Rockchip R88";
+       compatible = "rockchip,r88", "rockchip,rk3368";
+
+       chosen {
+               stdout-path = "serial2:115200n8";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               pinctrl-0 = <&emmc_reset>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
+       };
+
+       keys: gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_key>;
+
+               button@0 {
+                       gpio-key,wakeup = <1>;
+                       gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
+                       label = "GPIO Power";
+                       linux,code = <116>;
+               };
+       };
+
+       leds: gpio-leds {
+               compatible = "gpio-leds";
+
+               work {
+                       gpios = <&gpio3 29 GPIO_ACTIVE_HIGH>;
+                       label = "r88:green:led";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&led_ctl>;
+               };
+       };
+
+       ir: ir-receiver {
+               compatible = "gpio-ir-receiver";
+               gpios = <&gpio3 30 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ir_int>;
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&hym8563>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_rst>, <&wifi_reg_on>;
+
+               reset-gpios =
+                       /* BT_RST_N */
+                       <&gpio3 5 GPIO_ACTIVE_LOW>,
+
+                       /* WL_REG_ON */
+                       <&gpio3 4 GPIO_ACTIVE_LOW>;
+       };
+
+       vcc_18: vcc18-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_18";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       /* supplies both host and otg */
+       vcc_host: vcc-host-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 4 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&host_vbus_drv>;
+               regulator-name = "vcc_host";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_io: vcc-io-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_io";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_lan: vcc-lan-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_lan";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_io>;
+       };
+
+       vcc_sys: vcc-sys-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vccio_wl: vccio-wl-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vccio_wl";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_io>;
+       };
+
+       vdd_10: vdd-10-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_10";
+               regulator-min-microvolt = <1000000>;
+               regulator-max-microvolt = <1000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+};
+
+&emmc {
+       broken-cd;
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       disable-wp;
+       mmc-pwrseq = <&emmc_pwrseq>;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
+       status = "okay";
+};
+
+&gmac {
+       phy-supply = <&vcc_lan>;
+       phy-mode = "rmii";
+       clock_in_out = "output";
+       snps,reset-gpio = <&gpio3 12 0>;
+       snps,reset-active-low;
+       snps,reset-delays-us = <0 10000 1000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&rmii_pins>;
+       tx_delay = <0x30>;
+       rx_delay = <0x10>;
+       status = "ok";
+};
+
+&i2c0 {
+       status = "okay";
+
+       vdd_cpu: syr827@40 {
+               compatible = "silergy,syr827";
+               reg = <0x40>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu";
+               regulator-enable-ramp-delay = <300>;
+               regulator-min-microvolt = <712500>;
+               regulator-max-microvolt = <1500000>;
+               regulator-ramp-delay = <8000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       hym8563: hym8563@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "xin32k";
+               /* rtc_int is not connected */
+       };
+};
+
+&sdio0 {
+       assigned-clocks = <&cru SCLK_SDIO0>;
+       assigned-clock-parents = <&cru PLL_CPLL>;
+       broken-cd;
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio0_clk &sdio0_cmd &sdio0_bus4>;
+       vmmc-supply = <&vcc_io>;
+       vqmmc-supply = <&vccio_wl>;
+       status = "okay";
+};
+
+&pinctrl {
+       pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
+               bias-disable;
+               drive-strength = <8>;
+       };
+
+       pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
+               bias-pull-up;
+               drive-strength = <8>;
+       };
+
+       emmc {
+               emmc_bus8: emmc-bus8 {
+                       rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 19 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 20 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 21 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 22 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 23 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 24 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+                                       <1 25 RK_FUNC_2 &pcfg_pull_up_drv_8ma>;
+               };
+
+               emmc-clk {
+                       rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+
+               emmc-cmd {
+                       rockchip,pins = <1 26 RK_FUNC_2 &pcfg_pull_up_drv_8ma>;
+               };
+
+               emmc_reset: emmc-reset {
+                       rockchip,pins = <2 3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       ir {
+               ir_int: ir-int {
+                       rockchip,pins = <3 30 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       keys {
+               pwr_key: pwr-key {
+                       rockchip,pins = <0 2 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               stby_pwren: stby-pwren {
+                       rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               led_ctl: led-ctl {
+                       rockchip,pins = <3 29 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdio {
+               wifi_reg_on: wifi-reg-on {
+                       rockchip,pins = <3 4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_rst: bt-rst {
+                       rockchip,pins = <3 5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               host_vbus_drv: host-vbus-drv {
+                       rockchip,pins = <0 4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&saradc {
+       vref-supply = <&vcc_18>;
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&wdt {
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/rockchip/rk3368.dtsi b/arch/arm64/boot/dts/rockchip/rk3368.dtsi
new file mode 100644 (file)
index 0000000..a712bea
--- /dev/null
@@ -0,0 +1,900 @@
+/*
+ * Copyright (c) 2015 Heiko Stuebner <heiko@sntech.de>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This library 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 library is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/clock/rk3368-cru.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+
+/ {
+       compatible = "rockchip,rk3368";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               spi2 = &spi2;
+       };
+
+       cpus {
+               #address-cells = <0x2>;
+               #size-cells = <0x0>;
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu_b0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu_b1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu_b2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu_b3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu_l0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu_l1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu_l2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu_l3>;
+                               };
+                       };
+               };
+
+               idle-states {
+                       entry-method = "arm,psci";
+
+                       cpu_sleep: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x1010000>;
+                               entry-latency-us = <0x3fffffff>;
+                               exit-latency-us = <0x40000000>;
+                               min-residency-us = <0xffffffff>;
+                       };
+               };
+
+               cpu_l0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x0>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_l1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x1>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_l2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x2>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_l3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x3>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_b0: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x100>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_b1: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x101>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_b2: cpu@102 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x102>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+
+               cpu_b3: cpu@103 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53", "arm,armv8";
+                       reg = <0x0 0x103>;
+                       cpu-idle-states = <&cpu_sleep>;
+                       enable-method = "psci";
+               };
+       };
+
+       arm-pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu_l0>, <&cpu_l1>, <&cpu_l2>,
+                                    <&cpu_l3>, <&cpu_b0>, <&cpu_b1>,
+                                    <&cpu_b2>, <&cpu_b3>;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13
+                       (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 14
+                       (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 11
+                       (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 10
+                       (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       xin24m: oscillator {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xin24m";
+               #clock-cells = <0>;
+       };
+
+       sdmmc: dwmmc@ff0c0000 {
+               compatible = "rockchip,rk3368-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xff0c0000 0x0 0x4000>;
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
+               clock-names = "biu", "ciu";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       sdio0: dwmmc@ff0d0000 {
+               compatible = "rockchip,rk3368-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xff0d0000 0x0 0x4000>;
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
+                        <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       emmc: dwmmc@ff0f0000 {
+               compatible = "rockchip,rk3368-dw-mshc", "rockchip,rk3288-dw-mshc";
+               reg = <0x0 0xff0f0000 0x0 0x4000>;
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
+               clock-names = "biu", "ciu";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       saradc: saradc@ff100000 {
+               compatible = "rockchip,saradc";
+               reg = <0x0 0xff100000 0x0 0x100>;
+               interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+               #io-channel-cells = <1>;
+               clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
+               clock-names = "saradc", "apb_pclk";
+               status = "disabled";
+       };
+
+       spi0: spi@ff110000 {
+               compatible = "rockchip,rk3368-spi", "rockchip,rk3066-spi";
+               reg = <0x0 0xff110000 0x0 0x1000>;
+               clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
+               clock-names = "spiclk", "apb_pclk";
+               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       spi1: spi@ff120000 {
+               compatible = "rockchip,rk3368-spi", "rockchip,rk3066-spi";
+               reg = <0x0 0xff120000 0x0 0x1000>;
+               clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
+               clock-names = "spiclk", "apb_pclk";
+               interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       spi2: spi@ff130000 {
+               compatible = "rockchip,rk3368-spi", "rockchip,rk3066-spi";
+               reg = <0x0 0xff130000 0x0 0x1000>;
+               clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
+               clock-names = "spiclk", "apb_pclk";
+               interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c1: i2c@ff140000 {
+               compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
+               reg = <0x0 0xff140000 0x0 0x1000>;
+               interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c1_xfer>;
+               status = "disabled";
+       };
+
+       i2c3: i2c@ff150000 {
+               compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
+               reg = <0x0 0xff150000 0x0 0x1000>;
+               interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C3>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c3_xfer>;
+               status = "disabled";
+       };
+
+       i2c4: i2c@ff160000 {
+               compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
+               reg = <0x0 0xff160000 0x0 0x1000>;
+               interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c4_xfer>;
+               status = "disabled";
+       };
+
+       i2c5: i2c@ff170000 {
+               compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
+               reg = <0x0 0xff170000 0x0 0x1000>;
+               interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C5>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c5_xfer>;
+               status = "disabled";
+       };
+
+       uart0: serial@ff180000 {
+               compatible = "rockchip,rk3368-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff180000 0x0 0x100>;
+               clock-frequency = <24000000>;
+               clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
+               clock-names = "baudclk", "apb_pclk";
+               interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               status = "disabled";
+       };
+
+       uart1: serial@ff190000 {
+               compatible = "rockchip,rk3368-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff190000 0x0 0x100>;
+               clock-frequency = <24000000>;
+               clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+               clock-names = "baudclk", "apb_pclk";
+               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               status = "disabled";
+       };
+
+       uart3: serial@ff1b0000 {
+               compatible = "rockchip,rk3368-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff1b0000 0x0 0x100>;
+               clock-frequency = <24000000>;
+               clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+               clock-names = "baudclk", "apb_pclk";
+               interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               status = "disabled";
+       };
+
+       uart4: serial@ff1c0000 {
+               compatible = "rockchip,rk3368-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff1c0000 0x0 0x100>;
+               clock-frequency = <24000000>;
+               clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+               clock-names = "baudclk", "apb_pclk";
+               interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               status = "disabled";
+       };
+
+       gmac: ethernet@ff290000 {
+               compatible = "rockchip,rk3368-gmac";
+               reg = <0x0 0xff290000 0x0 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";
+               status = "disabled";
+       };
+
+       usb_host0_ehci: usb@ff500000 {
+               compatible = "generic-ehci";
+               reg = <0x0 0xff500000 0x0 0x100>;
+               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_HOST0>;
+               clock-names = "usbhost";
+               status = "disabled";
+       };
+
+       usb_otg: usb@ff580000 {
+               compatible = "rockchip,rk3368-usb", "rockchip,rk3066-usb",
+                               "snps,dwc2";
+               reg = <0x0 0xff580000 0x0 0x40000>;
+               interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_OTG0>;
+               clock-names = "otg";
+               dr_mode = "otg";
+               g-np-tx-fifo-size = <16>;
+               g-rx-fifo-size = <275>;
+               g-tx-fifo-size = <256 128 128 64 64 32>;
+               g-use-dma;
+               status = "disabled";
+       };
+
+       i2c0: i2c@ff650000 {
+               compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
+               reg = <0x0 0xff650000 0x0 0x1000>;
+               clocks = <&cru PCLK_I2C0>;
+               clock-names = "i2c";
+               interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c0_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c2: i2c@ff660000 {
+               compatible = "rockchip,rk3368-i2c", "rockchip,rk3288-i2c";
+               reg = <0x0 0xff660000 0x0 0x1000>;
+               interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c2_xfer>;
+               status = "disabled";
+       };
+
+       uart2: serial@ff690000 {
+               compatible = "rockchip,rk3368-uart", "snps,dw-apb-uart";
+               reg = <0x0 0xff690000 0x0 0x100>;
+               clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+               clock-names = "baudclk", "apb_pclk";
+               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart2_xfer>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               status = "disabled";
+       };
+
+       pmugrf: syscon@ff738000 {
+               compatible = "rockchip,rk3368-pmugrf", "syscon";
+               reg = <0x0 0xff738000 0x0 0x1000>;
+       };
+
+       cru: clock-controller@ff760000 {
+               compatible = "rockchip,rk3368-cru";
+               reg = <0x0 0xff760000 0x0 0x1000>;
+               rockchip,grf = <&grf>;
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+       };
+
+       grf: syscon@ff770000 {
+               compatible = "rockchip,rk3368-grf", "syscon";
+               reg = <0x0 0xff770000 0x0 0x1000>;
+       };
+
+       wdt: watchdog@ff800000 {
+               compatible = "rockchip,rk3368-wdt", "snps,dw-wdt";
+               reg = <0x0 0xff800000 0x0 0x100>;
+               clocks = <&cru PCLK_WDT>;
+               interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       gic: interrupt-controller@ffb71000 {
+               compatible = "arm,gic-400";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               #address-cells = <0>;
+
+               reg = <0x0 0xffb71000 0x0 0x1000>,
+                     <0x0 0xffb72000 0x0 0x1000>,
+                     <0x0 0xffb74000 0x0 0x2000>,
+                     <0x0 0xffb76000 0x0 0x2000>;
+               interrupts = <GIC_PPI 9
+                     (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3368-pinctrl";
+               rockchip,grf = <&grf>;
+               rockchip,pmu = <&pmugrf>;
+               #address-cells = <0x2>;
+               #size-cells = <0x2>;
+               ranges;
+
+               gpio0: gpio0@ff750000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff750000 0x0 0x100>;
+                       clocks = <&cru PCLK_GPIO0>;
+                       interrupts = <GIC_SPI 0x51 IRQ_TYPE_LEVEL_HIGH>;
+
+                       gpio-controller;
+                       #gpio-cells = <0x2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <0x2>;
+               };
+
+               gpio1: gpio1@ff780000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff780000 0x0 0x100>;
+                       clocks = <&cru PCLK_GPIO1>;
+                       interrupts = <GIC_SPI 0x52 IRQ_TYPE_LEVEL_HIGH>;
+
+                       gpio-controller;
+                       #gpio-cells = <0x2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <0x2>;
+               };
+
+               gpio2: gpio2@ff790000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff790000 0x0 0x100>;
+                       clocks = <&cru PCLK_GPIO2>;
+                       interrupts = <GIC_SPI 0x53 IRQ_TYPE_LEVEL_HIGH>;
+
+                       gpio-controller;
+                       #gpio-cells = <0x2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <0x2>;
+               };
+
+               gpio3: gpio3@ff7a0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff7a0000 0x0 0x100>;
+                       clocks = <&cru PCLK_GPIO3>;
+                       interrupts = <GIC_SPI 0x54 IRQ_TYPE_LEVEL_HIGH>;
+
+                       gpio-controller;
+                       #gpio-cells = <0x2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <0x2>;
+               };
+
+               pcfg_pull_up: pcfg-pull-up {
+                       bias-pull-up;
+               };
+
+               pcfg_pull_down: pcfg-pull-down {
+                       bias-pull-down;
+               };
+
+               pcfg_pull_none: pcfg-pull-none {
+                       bias-disable;
+               };
+
+               pcfg_pull_none_12ma: pcfg-pull-none-12ma {
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               emmc {
+                       emmc_clk: emmc-clk {
+                               rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+
+                       emmc_cmd: emmc-cmd {
+                               rockchip,pins = <1 26 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_pwr: emmc-pwr {
+                               rockchip,pins = <1 27 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_bus1: emmc-bus1 {
+                               rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_bus4: emmc-bus4 {
+                               rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 19 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 20 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 21 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_bus8: emmc-bus8 {
+                               rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 19 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 20 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 21 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 22 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 23 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 24 RK_FUNC_2 &pcfg_pull_up>,
+                                               <1 25 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+               };
+
+               gmac {
+                       rgmii_pins: rgmii-pins {
+                               rockchip,pins = <3 22 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 24 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 19 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 8 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 9 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 10 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 14 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 28 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 13 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 15 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 16 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 17 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 18 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 25 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 20 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       rmii_pins: rmii-pins {
+                               rockchip,pins = <3 22 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 24 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 19 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 8 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 9 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 13 RK_FUNC_1 &pcfg_pull_none_12ma>,
+                                               <3 15 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 16 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 20 RK_FUNC_1 &pcfg_pull_none>,
+                                               <3 21 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c0 {
+                       i2c0_xfer: i2c0-xfer {
+                               rockchip,pins = <0 6 RK_FUNC_1 &pcfg_pull_none>,
+                                               <0 7 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c1 {
+                       i2c1_xfer: i2c1-xfer {
+                               rockchip,pins = <2 21 RK_FUNC_1 &pcfg_pull_none>,
+                                               <2 22 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c2 {
+                       i2c2_xfer: i2c2-xfer {
+                               rockchip,pins = <0 9 RK_FUNC_2 &pcfg_pull_none>,
+                                               <3 31 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c3 {
+                       i2c3_xfer: i2c3-xfer {
+                               rockchip,pins = <1 16 RK_FUNC_1 &pcfg_pull_none>,
+                                               <1 17 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c4 {
+                       i2c4_xfer: i2c4-xfer {
+                               rockchip,pins = <3 24 RK_FUNC_2 &pcfg_pull_none>,
+                                               <3 25 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c5 {
+                       i2c5_xfer: i2c5-xfer {
+                               rockchip,pins = <3 26 RK_FUNC_2 &pcfg_pull_none>,
+                                               <3 27 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+               };
+
+               sdio0 {
+                       sdio0_bus1: sdio0-bus1 {
+                               rockchip,pins = <2 28 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_bus4: sdio0-bus4 {
+                               rockchip,pins = <2 28 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 29 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 30 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 31 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_cmd: sdio0-cmd {
+                               rockchip,pins = <3 0 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_clk: sdio0-clk {
+                               rockchip,pins = <3 1 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       sdio0_cd: sdio0-cd {
+                               rockchip,pins = <3 2 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_wp: sdio0-wp {
+                               rockchip,pins = <3 3 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_pwr: sdio0-pwr {
+                               rockchip,pins = <3 4 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_bkpwr: sdio0-bkpwr {
+                               rockchip,pins = <3 5 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_int: sdio0-int {
+                               rockchip,pins = <3 6 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+
+               sdmmc {
+                       sdmmc_clk: sdmmc-clk {
+                               rockchip,pins = <2 9 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       sdmmc_cmd: sdmmc-cmd {
+                               rockchip,pins = <2 10 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdmmc_cd: sdmcc-cd {
+                               rockchip,pins = <2 11 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdmmc_bus1: sdmmc-bus1 {
+                               rockchip,pins = <2 5 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdmmc_bus4: sdmmc-bus4 {
+                               rockchip,pins = <2 5 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 6 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 7 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 8 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+
+               spi0 {
+                       spi0_clk: spi0-clk {
+                               rockchip,pins = <1 29 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi0_cs0: spi0-cs0 {
+                               rockchip,pins = <1 24 RK_FUNC_3 &pcfg_pull_up>;
+                       };
+                       spi0_cs1: spi0-cs1 {
+                               rockchip,pins = <1 25 RK_FUNC_3 &pcfg_pull_up>;
+                       };
+                       spi0_tx: spi0-tx {
+                               rockchip,pins = <1 23 RK_FUNC_3 &pcfg_pull_up>;
+                       };
+                       spi0_rx: spi0-rx {
+                               rockchip,pins = <1 22 RK_FUNC_3 &pcfg_pull_up>;
+                       };
+               };
+
+               spi1 {
+                       spi1_clk: spi1-clk {
+                               rockchip,pins = <1 14 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_cs0: spi1-cs0 {
+                               rockchip,pins = <1 15 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_cs1: spi1-cs1 {
+                               rockchip,pins = <3 28 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_rx: spi1-rx {
+                               rockchip,pins = <1 16 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_tx: spi1-tx {
+                               rockchip,pins = <1 17 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+               };
+
+               spi2 {
+                       spi2_clk: spi2-clk {
+                               rockchip,pins = <0 12 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi2_cs0: spi2-cs0 {
+                               rockchip,pins = <0 13 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi2_rx: spi2-rx {
+                               rockchip,pins = <0 10 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi2_tx: spi2-tx {
+                               rockchip,pins = <0 11 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+               };
+
+               uart0 {
+                       uart0_xfer: uart0-xfer {
+                               rockchip,pins = <2 24 RK_FUNC_1 &pcfg_pull_up>,
+                                               <2 25 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart0_cts: uart0-cts {
+                               rockchip,pins = <2 26 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart0_rts: uart0-rts {
+                               rockchip,pins = <2 27 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               uart1 {
+                       uart1_xfer: uart1-xfer {
+                               rockchip,pins = <0 20 RK_FUNC_3 &pcfg_pull_up>,
+                                               <0 21 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+
+                       uart1_cts: uart1-cts {
+                               rockchip,pins = <0 22 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+
+                       uart1_rts: uart1-rts {
+                               rockchip,pins = <0 23 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+               };
+
+               uart2 {
+                       uart2_xfer: uart2-xfer {
+                               rockchip,pins = <2 6 RK_FUNC_2 &pcfg_pull_up>,
+                                               <2 5 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+                       /* no rts / cts for uart2 */
+               };
+
+               uart3 {
+                       uart3_xfer: uart3-xfer {
+                               rockchip,pins = <3 29 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 30 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+
+                       uart3_cts: uart3-cts {
+                               rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+
+                       uart3_rts: uart3-rts {
+                               rockchip,pins = <3 17 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+               };
+
+               uart4 {
+                       uart4_xfer: uart4-xfer {
+                               rockchip,pins = <0 27 RK_FUNC_3 &pcfg_pull_up>,
+                                               <0 26 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+
+                       uart4_cts: uart4-cts {
+                               rockchip,pins = <0 24 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+
+                       uart4_rts: uart4-rts {
+                               rockchip,pins = <0 25 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+               };
+       };
+};
index ee34e1a36e0384b2aec4050cc26c429589520804..63894c45696902a107963d7de6f7300b5cc166ea 100644 (file)
                #address-cells = <2>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53", "arm,armv8";
                        reg = <0x0 0x0>;
                        enable-method = "psci";
                };
 
-               cpu@1 {
+               cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53", "arm,armv8";
                        reg = <0x0 0x1>;
                        enable-method = "psci";
                };
 
-               cpu@2 {
+               cpu2: cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53", "arm,armv8";
                        reg = <0x0 0x2>;
                        enable-method = "psci";
                };
 
-               cpu@3 {
+               cpu3: cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53", "arm,armv8";
                        reg = <0x0 0x3>;
                                };
                        };
 
-                       /* funnel input port 0~3 is reserved for ETMs */
+                       /* funnel input port 0-4 */
                        port@1 {
+                               reg = <0>;
+                               funnel_in_port0: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etm0_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <1>;
+                               funnel_in_port1: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etm1_out>;
+                               };
+                       };
+
+                       port@3 {
+                               reg = <2>;
+                               funnel_in_port2: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etm2_out>;
+                               };
+                       };
+
+                       port@4 {
+                               reg = <3>;
+                               funnel_in_port3: endpoint {
+                                       slave-mode;
+                                       remote-endpoint = <&etm3_out>;
+                               };
+                       };
+
+                       port@5 {
                                reg = <4>;
                                funnel_in_port4: endpoint {
                                        slave-mode;
                                        remote-endpoint = <&stm_out>;
                                };
                        };
+                       /* Other input ports aren't connected to anyone */
+               };
+       };
+
+       etm@10440000 {
+               compatible = "arm,coresight-etm4x", "arm,primecell";
+               reg = <0 0x10440000 0 0x1000>;
+
+               cpu = <&cpu0>;
+               clocks = <&clk26mhz>;
+               clock-names = "apb_pclk";
+               port {
+                       etm0_out: endpoint {
+                               remote-endpoint = <&funnel_in_port0>;
+                       };
+               };
+       };
+
+       etm@10540000 {
+               compatible = "arm,coresight-etm4x", "arm,primecell";
+               reg = <0 0x10540000 0 0x1000>;
+
+               cpu = <&cpu1>;
+               clocks = <&clk26mhz>;
+               clock-names = "apb_pclk";
+               port {
+                       etm1_out: endpoint {
+                               remote-endpoint = <&funnel_in_port1>;
+                       };
+               };
+       };
+
+       etm@10640000 {
+               compatible = "arm,coresight-etm4x", "arm,primecell";
+               reg = <0 0x10640000 0 0x1000>;
+
+               cpu = <&cpu2>;
+               clocks = <&clk26mhz>;
+               clock-names = "apb_pclk";
+               port {
+                       etm2_out: endpoint {
+                               remote-endpoint = <&funnel_in_port2>;
+                       };
+               };
+       };
+
+       etm@10740000 {
+               compatible = "arm,coresight-etm4x", "arm,primecell";
+               reg = <0 0x10740000 0 0x1000>;
+
+               cpu = <&cpu3>;
+               clocks = <&clk26mhz>;
+               clock-names = "apb_pclk";
+               port {
+                       etm3_out: endpoint {
+                               remote-endpoint = <&funnel_in_port3>;
+                       };
                };
        };
 
index 0a3f40ecd06da23957742e1a505b76a89f74067e..ce5d848251fab63cf0bba9a9cb58d1681c221011 100644 (file)
        };
 };
 
+&can0 {
+       status = "okay";
+};
+
 &gem0 {
        status = "okay";
        phy-handle = <&phy0>;
        };
 };
 
+&gpio {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       clock-frequency = <400000>;
+       eeprom@54 {
+               compatible = "at,24c64";
+               reg = <0x54>;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+       clock-frequency = <400000>;
+       eeprom@55 {
+               compatible = "at,24c64";
+               reg = <0x55>;
+       };
+};
+
+&sata {
+       status = "okay";
+       ceva,broken-gen2;
+};
+
+&sdhci0 {
+       status = "okay";
+};
+
+&sdhci1 {
+       status = "okay";
+};
+
+&spi0 {
+       status = "okay";
+       num-cs = <1>;
+       spi0_flash0: spi0_flash0@0 {
+               compatible = "m25p80";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               spi-max-frequency = <50000000>;
+               reg = <0>;
+
+               spi0_flash0@00000000 {
+                       label = "spi0_flash0";
+                       reg = <0x0 0x100000>;
+               };
+       };
+};
+
+&spi1 {
+       status = "okay";
+       num-cs = <1>;
+       spi1_flash0: spi1_flash0@0 {
+               compatible = "m25p80";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               spi-max-frequency = <50000000>;
+               reg = <0>;
+
+               spi1_flash0@00000000 {
+                       label = "spi1_flash0";
+                       reg = <0x0 0x100000>;
+               };
+       };
+};
+
 &uart0 {
        status = "okay";
 };
+
+&usb0 {
+       status = "okay";
+       dr_mode = "peripheral";
+       maximum-speed = "high-speed";
+};
+
+&usb1 {
+       status = "okay";
+       dr_mode = "host";
+       maximum-speed = "high-speed";
+};
+
+&watchdog0 {
+       status = "okay";
+};
index 11e0b00045cfb2a739ecac206808201d3b522483..857eda5c7217849b6c2d736d337eba1ddeee940b 100644 (file)
                #size-cells = <1>;
                ranges;
 
-               misc_clk: misc_clk {
-                       compatible = "fixed-clock";
-                       #clock-cells = <0>;
-                       clock-frequency = <25000000>;
-               };
-
-               ttc0: timer@ff110000 {
-                       compatible = "cdns,ttc";
-                       status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
-                       reg = <0x0 0xff110000 0x1000>;
-                       clocks = <&misc_clk>;
-                       timer-width = <32>;
-               };
-
-               ttc1: timer@ff120000 {
-                       compatible = "cdns,ttc";
-                       status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
-                       reg = <0x0 0xff120000 0x1000>;
-                       clocks = <&misc_clk>;
-                       timer-width = <32>;
-               };
-
-               ttc2: timer@ff130000 {
-                       compatible = "cdns,ttc";
-                       status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
-                       reg = <0x0 0xff130000 0x1000>;
-                       clocks = <&misc_clk>;
-                       timer-width = <32>;
-               };
-
-               ttc3: timer@ff140000 {
-                       compatible = "cdns,ttc";
+               can0: can@ff060000 {
+                       compatible = "xlnx,zynq-can-1.0";
                        status = "disabled";
+                       clocks = <&misc_clk &misc_clk>;
+                       clock-names = "can_clk", "pclk";
+                       reg = <0x0 0xff060000 0x1000>;
+                       interrupts = <0 23 4>;
                        interrupt-parent = <&gic>;
-                       interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
-                       reg = <0x0 0xff140000 0x1000>;
-                       clocks = <&misc_clk>;
-                       timer-width = <32>;
+                       tx-fifo-depth = <0x40>;
+                       rx-fifo-depth = <0x40>;
                };
 
-               uart0: serial@ff000000 {
-                       compatible = "cdns,uart-r1p8";
+               can1: can@ff070000 {
+                       compatible = "xlnx,zynq-can-1.0";
                        status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 21 4>;
-                       reg = <0x0 0xff000000 0x1000>;
-                       clock-names = "uart_clk", "pclk";
                        clocks = <&misc_clk &misc_clk>;
+                       clock-names = "can_clk", "pclk";
+                       reg = <0x0 0xff070000 0x1000>;
+                       interrupts = <0 24 4>;
+                       interrupt-parent = <&gic>;
+                       tx-fifo-depth = <0x40>;
+                       rx-fifo-depth = <0x40>;
                };
 
-               uart1: serial@ff010000 {
-                       compatible = "cdns,uart-r1p8";
-                       status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 22 4>;
-                       reg = <0x0 0xff010000 0x1000>;
-                       clock-names = "uart_clk", "pclk";
-                       clocks = <&misc_clk &misc_clk>;
+               misc_clk: misc_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <25000000>;
                };
 
                gpio: gpio@ff0a0000 {
-                       compatible = "xlnx,zynq-gpio-1.0";
+                       compatible = "xlnx,zynqmp-gpio-1.0";
                        status = "disabled";
                        #gpio-cells = <0x2>;
                        clocks = <&misc_clk>;
                        #size-cells = <0>;
                };
 
-               spi0: spi@ff040000 {
-                       compatible = "cdns,spi-r1p6";
-                       status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 19 4>;
-                       reg = <0x0 0xff040000 0x1000>;
-                       clock-names = "ref_clk", "pclk";
-                       clocks = <&misc_clk &misc_clk>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-               };
-
-               spi1: spi@ff050000 {
-                       compatible = "cdns,spi-r1p6";
-                       status = "disabled";
-                       interrupt-parent = <&gic>;
-                       interrupts = <0 20 4>;
-                       reg = <0x0 0xff050000 0x1000>;
-                       clock-names = "ref_clk", "pclk";
-                       clocks = <&misc_clk &misc_clk>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-               };
-
                i2c_clk: i2c_clk {
                        compatible = "fixed-clock";
                        #clock-cells = <0x0>;
                        #size-cells = <0>;
                };
 
+               sata_clk: sata_clk {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <75000000>;
+               };
+
+               sata: ahci@fd0c0000 {
+                       compatible = "ceva,ahci-1v84";
+                       status = "disabled";
+                       reg = <0x0 0xfd0c0000 0x2000>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 133 4>;
+                       clocks = <&sata_clk>;
+               };
+
                sdhci0: sdhci@ff160000 {
                        compatible = "arasan,sdhci-8.9a";
                        status = "disabled";
                        clocks = <&misc_clk>, <&misc_clk>;
                };
 
+               smmu: smmu@fd800000 {
+                       compatible = "arm,mmu-500";
+                       reg = <0x0 0xfd800000 0x20000>;
+                       #global-interrupts = <1>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 157 4>,
+                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>,
+                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>,
+                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>,
+                               <0 157 4>, <0 157 4>, <0 157 4>, <0 157 4>;
+               };
+
+               spi0: spi@ff040000 {
+                       compatible = "cdns,spi-r1p6";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 19 4>;
+                       reg = <0x0 0xff040000 0x1000>;
+                       clock-names = "ref_clk", "pclk";
+                       clocks = <&misc_clk &misc_clk>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               spi1: spi@ff050000 {
+                       compatible = "cdns,spi-r1p6";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 20 4>;
+                       reg = <0x0 0xff050000 0x1000>;
+                       clock-names = "ref_clk", "pclk";
+                       clocks = <&misc_clk &misc_clk>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               ttc0: timer@ff110000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 36 4>, <0 37 4>, <0 38 4>;
+                       reg = <0x0 0xff110000 0x1000>;
+                       clocks = <&misc_clk>;
+                       timer-width = <32>;
+               };
+
+               ttc1: timer@ff120000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 39 4>, <0 40 4>, <0 41 4>;
+                       reg = <0x0 0xff120000 0x1000>;
+                       clocks = <&misc_clk>;
+                       timer-width = <32>;
+               };
+
+               ttc2: timer@ff130000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 42 4>, <0 43 4>, <0 44 4>;
+                       reg = <0x0 0xff130000 0x1000>;
+                       clocks = <&misc_clk>;
+                       timer-width = <32>;
+               };
+
+               ttc3: timer@ff140000 {
+                       compatible = "cdns,ttc";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 45 4>, <0 46 4>, <0 47 4>;
+                       reg = <0x0 0xff140000 0x1000>;
+                       clocks = <&misc_clk>;
+                       timer-width = <32>;
+               };
+
+               uart0: serial@ff000000 {
+                       compatible = "cdns,uart-r1p8";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 21 4>;
+                       reg = <0x0 0xff000000 0x1000>;
+                       clock-names = "uart_clk", "pclk";
+                       clocks = <&misc_clk &misc_clk>;
+               };
+
+               uart1: serial@ff010000 {
+                       compatible = "cdns,uart-r1p8";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 22 4>;
+                       reg = <0x0 0xff010000 0x1000>;
+                       clock-names = "uart_clk", "pclk";
+                       clocks = <&misc_clk &misc_clk>;
+               };
+
+               usb0: usb@fe200000 {
+                       compatible = "snps,dwc3";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 65 4>;
+                       reg = <0x0 0xfe200000 0x40000>;
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&misc_clk>, <&misc_clk>;
+               };
+
+               usb1: usb@fe300000 {
+                       compatible = "snps,dwc3";
+                       status = "disabled";
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 70 4>;
+                       reg = <0x0 0xfe300000 0x40000>;
+                       clock-names = "clk_xin", "clk_ahb";
+                       clocks = <&misc_clk>, <&misc_clk>;
+               };
+
                watchdog0: watchdog@fd4d0000 {
                        compatible = "cdns,wdt-r1p2";
                        status = "disabled";
index 4e17e7ede33d5a3ebacd8c3a13d31916b009a36b..34d71dd867811af658d782520f2f688db9066c69 100644 (file)
@@ -31,10 +31,13 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_DEADLINE is not set
+CONFIG_ARCH_BCM_IPROC=y
+CONFIG_ARCH_BERLIN=y
 CONFIG_ARCH_EXYNOS7=y
 CONFIG_ARCH_FSL_LS2085A=y
 CONFIG_ARCH_HISI=y
 CONFIG_ARCH_MEDIATEK=y
+CONFIG_ARCH_ROCKCHIP=y
 CONFIG_ARCH_SEATTLE=y
 CONFIG_ARCH_TEGRA=y
 CONFIG_ARCH_TEGRA_132_SOC=y
@@ -102,6 +105,7 @@ CONFIG_SERIO_AMBAKMI=y
 CONFIG_LEGACY_PTY_COUNT=16
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DW=y
 CONFIG_SERIAL_8250_MT6577=y
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
index 1272b8002884bd4e19ac8ab8aee0bdaef833080c..d5e58bae95cf2dbfa74a49ddce1a51dee6e98e9d 100644 (file)
@@ -117,7 +117,7 @@ config PCI_VERSATILE
 
 config PCIE_IPROC
        tristate "Broadcom iProc PCIe controller"
-       depends on OF && ARM
+       depends on OF && (ARM || ARM64)
        default n
        help
          This enables the iProc PCIe core controller support for Broadcom's
@@ -136,7 +136,7 @@ config PCIE_IPROC_PLATFORM
 
 config PCIE_IPROC_BCMA
        tristate "Broadcom iProc PCIe BCMA bus driver"
-       depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
+       depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
        select PCIE_IPROC
        select BCMA
        select PCI_DOMAINS