From: Qiao Zhou <qiaoz...@asrmicro.com>

Add initial dtsi file to support ASR Aquilac SoC. It has two clusters.
Cluster0 has 4 * Cortex-A53 and Cluster1 has 4 * Cortex-A73.

Also add dts file to support ASR Aquilac SoC development board which is
based on ASR AquilaC SoC.

Signed-off-by: qiaozhou <qiaoz...@asrmicro.com>
---
 arch/arm64/boot/dts/Makefile                  |   1 +
 arch/arm64/boot/dts/asr/Makefile              |   2 +
 arch/arm64/boot/dts/asr/asr8751c-aquilac.dts  |  58 ++++
 arch/arm64/boot/dts/asr/asr8751c-pinctrl.dtsi | 400 ++++++++++++++++++++++
 arch/arm64/boot/dts/asr/asr8751c.dtsi         | 460 ++++++++++++++++++++++++++
 5 files changed, 921 insertions(+)
 create mode 100644 arch/arm64/boot/dts/asr/Makefile
 create mode 100644 arch/arm64/boot/dts/asr/asr8751c-aquilac.dts
 create mode 100644 arch/arm64/boot/dts/asr/asr8751c-pinctrl.dtsi
 create mode 100644 arch/arm64/boot/dts/asr/asr8751c.dtsi

diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
index 5bc7533..38f3db0 100644
--- a/arch/arm64/boot/dts/Makefile
+++ b/arch/arm64/boot/dts/Makefile
@@ -27,3 +27,4 @@ subdir-y += synaptics
 subdir-y += ti
 subdir-y += xilinx
 subdir-y += zte
+subdir-y += asr
diff --git a/arch/arm64/boot/dts/asr/Makefile b/arch/arm64/boot/dts/asr/Makefile
new file mode 100644
index 0000000..b1f31c8
--- /dev/null
+++ b/arch/arm64/boot/dts/asr/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+dtb-$(CONFIG_ARCH_ASR) += asr8751c-aquilac.dtb
diff --git a/arch/arm64/boot/dts/asr/asr8751c-aquilac.dts 
b/arch/arm64/boot/dts/asr/asr8751c-aquilac.dts
new file mode 100644
index 0000000..076642f
--- /dev/null
+++ b/arch/arm64/boot/dts/asr/asr8751c-aquilac.dts
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dts file for ASR8751C AquilaC SoC
+ * Copyright (c) 2019, ASR Microelectronics(Shanghai) Co., Ltd.
+ *
+ *  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
+ *  publishhed by the Free Software Foundation.
+ */
+
+/dts-v1/;
+#include "asr8751c.dtsi"
+#include "asr8751c-pinctrl.dtsi"
+#include <dt-bindings/input/linux-event-codes.h>
+
+/ {
+       model = "ASR AquilaC Development Board";
+       compatible = "asr,aquilac-evb", "asr,8751c";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+       };
+
+       chosen {
+               /*
+                * initrd parameters not set in dts file since the ramdisk.img
+                * size need to check in uboot, and the initrd load address and
+                * size will set in uboot stage.
+                */
+               bootargs = "clk_ignore_unused";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               /* address-cell = 2, size-cell = 2 */
+               device_type = "memory";
+               /* start address: 0x100000000, size = 0xC0000000 */
+               reg = <0x1 0x00000000 0x0 0xC0000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               ramoops@10c000000 {
+                       compatible = "ramoops";
+                       reg = <0x1 0x0c000000 0x0 0x0040000>;
+                       record-size = <0x7000>;
+                       console-size = <0x30000>;
+                       ftrace-size = <0x1000>;
+                       pmsg-size = <0x1000>;
+                       dump-oops = <0>;
+               };
+       };
+};
diff --git a/arch/arm64/boot/dts/asr/asr8751c-pinctrl.dtsi 
b/arch/arm64/boot/dts/asr/asr8751c-pinctrl.dtsi
new file mode 100644
index 0000000..047049f
--- /dev/null
+++ b/arch/arm64/boot/dts/asr/asr8751c-pinctrl.dtsi
@@ -0,0 +1,400 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ *  Copyright (C) 2019 ASR Microelectronics(Shanghai) Co., Ltd.
+ *  Author: Tim Wang <timw...@asrmicro.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
+ *  publishhed by the Free Software Foundation.
+ */
+#include <dt-bindings/pinctrl/asr8751c-pinfunc.h>
+
+&pmx {
+       evb_mfp_pins_group_0: evb_mfp_pins_group_0 {
+               pinctrl-single,pins = <
+                       GPIO_124        AF0
+               >;
+               MFP_PULL_DOWN;
+       };
+
+       /* aquilac evb config group */
+       evb_mfp_pins_group_1: evb_mfp_pins_group_1 {
+               pinctrl-single,pins = <
+                       GPIO_07         AF0
+                       /* I2C */
+                       GPIO_03         AF1 /* I2C5 */
+                       GPIO_04         AF1
+                       GPIO_45         AF1 /* I2C7 */
+                       GPIO_46         AF1
+                       GPIO_22         AF1 /* I2C2 */
+                       GPIO_23         AF1
+                       GPIO_112        AF1 /* I2C6 */
+                       GPIO_113        AF1
+                       GPIO_63         AF1
+                       GPIO_64         AF1
+
+                       /* I2S */
+                       GPIO_31         AF1
+                       GPIO_32         AF1
+                       GPIO_33         AF1
+                       GPIO_34         AF1
+                       GPIO_102        AF1
+                       GPIO_103        AF1
+                       GPIO_104        AF1
+                       GPIO_105        AF1
+                       /* SH_SSP */
+                       GPIO_82         AF1
+                       GPIO_83         AF1
+                       GPIO_84         AF1
+                       GPIO_85         AF1
+                       GPIO_86         AF1
+                       GPIO_87         AF1
+                       GPIO_88         AF1
+                       GPIO_89         AF1
+                       /* SH_UART */
+                       GPIO_61         AF1
+                       GPIO_62         AF1
+                       /* SSP */
+                       GPIO_41         AF1
+                       GPIO_42         AF1
+                       GPIO_43         AF1
+                       GPIO_44         AF1
+                       /* UART */
+                       GPIO_24         AF0 /* VSP UART */
+                       GPIO_25         AF0
+                       GPIO_08         AF0
+                       GPIO_92         AF1 /* BT_UART */
+                       GPIO_93         AF1
+                       GPIO_94         AF1
+                       GPIO_95         AF1
+                       /* CAMERA */
+                       GPIO_09         AF0
+                       GPIO_10         AF0
+                       GPIO_11         AF0
+                       GPIO_12         AF0
+                       GPIO_13         AF0
+                       GPIO_14         AF0
+                       GPIO_15         AF1
+                       GPIO_16         AF1
+                       GPIO_17         AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* TWSI0 GPIO */
+       twsi0_pmx_func0: twsi0_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_18 AF0
+                       GPIO_19 AF0
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* AP I2C0 */
+       twsi0_pmx_func1: twsi0_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_18 AF1
+                       GPIO_19 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* OVT I2C 0 */
+       twsi0_pmx_func2: twsi0_pmx_func2 {
+               pinctrl-single,pins = <
+                       GPIO_18 AF2
+                       GPIO_19 AF2
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* TWSI1 GPIO */
+       twsi1_pmx_func0: twsi1_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_20 AF0
+                       GPIO_21 AF0
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* AP I2C 1 */
+       twsi1_pmx_func1: twsi1_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_20 AF1
+                       GPIO_21 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* OVT I2C 1 */
+       twsi1_pmx_func2: twsi1_pmx_func2 {
+               pinctrl-single,pins = <
+                       GPIO_20 AF2
+                       GPIO_21 AF2
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* AP I2C 4 */
+       twsi4_pmx_func1: twsi4_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_35 AF1
+                       GPIO_36 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       ccic1_pmx_func1: ccic1_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_09 AF0
+                       GPIO_12 AF0
+                       GPIO_15 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       ccic2_pmx_func1: ccic2_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_10 AF0
+                       GPIO_13 AF0
+                       GPIO_16 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       ccic3_pmx_func1: ccic3_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_11 AF0
+                       GPIO_14 AF0
+                       GPIO_17 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* MFP_LPM_PULL_UP */
+       gpio126_pmx_func0: gpio126_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_126 AF0
+               >;
+               MFP_LPM_PULL_UP;
+       };
+
+       /* MFP_DEFAULT */
+       gpio126_pmx_func2: gpio126_pmx_func2 {
+               pinctrl-single,pins = <
+                       GPIO_126 AF2
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* MFP_LPM_PULL_UP */
+       gpio51_pmx_func0: gpio51_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_51 AF0
+               >;
+               MFP_LPM_PULL_UP;
+       };
+
+       /* MFP_DEFAULT */
+       gpio51_pmx_func2: gpio51_pmx_func2 {
+               pinctrl-single,pins = <
+                       GPIO_51 AF2
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* SD card */
+       sdcard_pmx_func0: sdcard_pmx_func0 {
+               pinctrl-single,pins = <
+                       MMC1_DAT3 AF0
+                       MMC1_DAT2 AF0
+                       MMC1_DAT1 AF0
+                       MMC1_DAT0 AF0
+                       MMC1_CMD AF0
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* MFP_LPM_DRIVE_LOW */
+       sdcard_clk_pmx_func0: sdcard_clk_pmx_func0 {
+               pinctrl-single,pins = <
+                       MMC1_CLK AF0
+               >;
+               MFP_LPM_DRIVE_LOW;
+       };
+
+       /* ds fast, no pull, no LPM */
+       sdcard_pmx_func0_fast: sdcard_pmx_func0_fast {
+               pinctrl-single,pins = <
+                       MMC1_DAT3 AF0
+                       MMC1_DAT2 AF0
+                       MMC1_DAT1 AF0
+                       MMC1_DAT0 AF0
+                       MMC1_CMD AF0
+               >;
+               DS_FAST;PULL_NONE;EDGE_NONE;LPM_NONE;
+       };
+
+       /* ds fast, LPM_DRIVE_LOW */
+       sdcard_clk_pmx_func0_fast: sdcard_clk_pmx_func0_fast {
+               pinctrl-single,pins = <
+                       MMC1_CLK AF0
+               >;
+               DS_FAST;PULL_NONE;EDGE_NONE;LPM_DRIVE_LOW;
+       };
+
+       /* JTAG */
+       sdcard_pmx_func2: sdcard_pmx_func2 {
+               pinctrl-single,pins = <
+                       MMC1_DAT3 AF2
+                       MMC1_DAT2 AF2
+                       MMC1_DAT1 AF2
+                       MMC1_DAT0 AF2
+                       MMC1_CMD AF2
+                       MMC1_CLK AF2
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* SDIO card */
+       sdio_pmx_func1: sdio_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_96 AF1 //MMC2_DAT3
+                       GPIO_97 AF1 //MMC2_DAT2
+                       GPIO_98 AF1 //MMC2_DAT1
+                       GPIO_99 AF1 //MMC2_DAT0
+                       GPIO_100 AF1 //MMC2_CMD
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* MFP_LPM_DRIVE_LOW */
+       sdio_clk_pmx_func1: sdio_clk_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_101 AF1 //MMC2_CLK
+               >;
+               MFP_LPM_DRIVE_LOW;
+       };
+
+       /* ds fast, no pull, no LPM */
+       sdio_pmx_func1_fast: sdio_pmx_func1_fast {
+               pinctrl-single,pins = <
+                       GPIO_96 AF1 //MMC2_DAT3
+                       GPIO_97 AF1 //MMC2_DAT2
+                       GPIO_98 AF1 //MMC2_DAT1
+                       GPIO_99 AF1 //MMC2_DAT0
+                       GPIO_100 AF1 //MMC2_CMD
+               >;
+               DS_FAST;PULL_NONE;EDGE_NONE;LPM_NONE;
+       };
+
+       /* ds fast, LPM_DRIVE_LOW */
+       sdio_clk_pmx_func1_fast: sdio_clk_pmx_func1_fast {
+               pinctrl-single,pins = <
+                       GPIO_101 AF1 //MMC2_CLK
+               >;
+               DS_FAST;PULL_NONE;EDGE_NONE;LPM_DRIVE_LOW;
+       };
+
+       /* ssp0 default state */
+       ssp0_pmx_func0: ssp0_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_118 AF1    /* clk */
+                       GPIO_120 AF1    /* tx */
+                       GPIO_121 AF1    /* rx */
+               >;
+               MFP_PULL_DOWN;
+       };
+
+       ssp0_pmx_func1: ssp0_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_119 AF1    /* cs */
+               >;
+               MFP_PULL_UP;
+       };
+
+       /* uart2 */
+       uart2_pmx_func1: uart2_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_120 AF2    /* tx */
+                       GPIO_121 AF2    /* rx */
+               >;
+               MFP_DEFAULT;
+       };
+
+       uart2_pmx_func2: uart2_pmx_func2 {
+               pinctrl-single,pins = <
+                       GPIO_118 AF2    /* CTS */
+                       GPIO_119 AF2    /* RTS */
+               >;
+               MFP_PULL_DOWN;
+       };
+
+       fp_pmx_func1: fp_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_76 AF0
+                       GPIO_81 AF0
+               >;
+               MFP_DEFAULT;
+       };
+
+       /* AP I2C 8 */
+       twsi8_pmx_func1: twsi8_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_47 AF1
+                       GPIO_48 AF1
+               >;
+               MFP_DEFAULT;
+       };
+
+       nfc_pmx_func0: nfc_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_124 AF0
+                       GPIO_123 AF0
+                       GPIO_115 AF0
+                       VCXO_REQ1 AF1
+               >;
+               MFP_LPM_FLOAT;
+       };
+
+       nfc_pmx_func0_n3_1: nfc_pmx_func0_n3_1 {
+               pinctrl-single,pins = <
+                       GPIO_116 AF0
+                       GPIO_115 AF0
+                       GPIO_60  AF0
+               >;
+               MFP_DEFAULT;
+       };
+
+       nfc_pmx_func0_n3_2: nfc_pmx_func0_n3_2 {
+               pinctrl-single,pins = <
+                       GPIO_107 AF0
+               >;
+               MFP_PULL_DOWN;
+       };
+
+       goodix_ts_pmx_func0: goodix_ts_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_05 AF0
+                       GPIO_06 AF0
+               >;
+               MFP_PULL_DOWN;
+       };
+
+
+       /* Not used pin, pull down and set input in lpm */
+       evb_sensor_pmx_func0: evb_sensor_pmx_func0 {
+               pinctrl-single,pins = <
+                       GPIO_78 AF0
+               >;
+               MFP_PULL_DOWN;
+       };
+
+       /* EVB reset pin for mag sensor, GPIO */
+       evb_sensor_pmx_func1: evb_sensor_pmx_func1 {
+               pinctrl-single,pins = <
+                       GPIO_80 AF0
+               >;
+               MFP_PULL_UP;
+       };
+};
diff --git a/arch/arm64/boot/dts/asr/asr8751c.dtsi 
b/arch/arm64/boot/dts/asr/asr8751c.dtsi
new file mode 100644
index 0000000..c7222eb
--- /dev/null
+++ b/arch/arm64/boot/dts/asr/asr8751c.dtsi
@@ -0,0 +1,460 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * dtsi file for ASR8751C
+ * Copyright (c) 2019, ASR Microelectronics(Shanghai) Co., Ltd.
+ *
+ *  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
+ *  publishhed by the Free Software Foundation.
+ */
+
+#include <dt-bindings/clock/asr8751c-clk.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_C1: cpu-c1 {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0000002>;
+                               entry-latency-us = <20>;
+                               exit-latency-us = <20>;
+                               min-residency-us = <100>;
+                       };
+
+                       CPU_C2: cpu-c2 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x0010005>;
+                               entry-latency-us = <40>;
+                               exit-latency-us = <40>;
+                               min-residency-us = <200>;
+                       };
+
+                       CLUSTER_MP2: cluster-mp2 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x1010055>;
+                               entry-latency-us = <80>;
+                               exit-latency-us = <80>;
+                               min-residency-us = <400>;
+                               wakeup-latency-us = <40>;
+                       };
+
+                       CHIP_D1P: chip-d1p {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x2010355>;
+                               entry-latency-us = <200>;
+                               exit-latency-us = <200>;
+                               min-residency-us = <1000>;
+                               wakeup-latency-us = <80>;
+                       };
+
+                       CHIP_D1: chip-d1 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x2010455>;
+                               entry-latency-us = <300>;
+                               exit-latency-us = <300>;
+                               min-residency-us = <1200>;
+                               wakeup-latency-us = <160>;
+                       };
+
+                       CHIP_D2: chip-d2 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x2010555>;
+                               entry-latency-us = <400>;
+                               exit-latency-us = <400>;
+                               min-residency-us = <1500>;
+                               wakeup-latency-us = <200>;
+                       };
+               };
+
+               clst0_core_opp_table: opp_table0 {
+                       compatible = "operating-points-v2";
+                       opp-shared;
+
+                       opp624000000 {
+                               opp-hz = /bits/ 64 <624000000>;
+                               opp-microvolt = <1000000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp832000000 {
+                               opp-hz = /bits/ 64 <832000000>;
+                               opp-microvolt = <1000000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1000000000 {
+                               opp-hz = /bits/ 64 <1000000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1248000000 {
+                               opp-hz = /bits/ 64 <1248000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1400000000 {
+                               opp-hz = /bits/ 64 <1400000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1600000000 {
+                               opp-hz = /bits/ 64 <1600000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+               };
+
+               clst1_core_opp_table: opp_table1 {
+                       compatible = "operating-points-v2";
+                       opp-shared;
+
+                       opp1000000000 {
+                               opp-hz = /bits/ 64 <1000000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1248000000 {
+                               opp-hz = /bits/ 64 <1248000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1600000000 {
+                               opp-hz = /bits/ 64 <1600000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+                       opp1900000000 {
+                               opp-hz = /bits/ 64 <1900000000>;
+                               opp-microvolt = <1500000>;
+                               clock-latency-ns = <200000>;
+                       };
+               };
+
+               cpu-map {
+                       cluster0: cluster0 {
+                               #cooling-cells = <2>; /* min followed by max */
+                               dynamic-pwr-coeff = <89>;
+                               static-pwr-base-coeff = <1335>;
+                               static-pwr-temp-coeff =
+                                       <2225 27650 (-286) 10>;
+                               enable_ipa_vmin_control;
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1: cluster1 {
+                               #cooling-cells = <2>;
+                               dynamic-pwr-coeff = <115>;
+                               static-pwr-base-coeff = <2157>;
+                               static-pwr-temp-coeff =
+                                       <52330 32960 (-603) 13>;
+                               enable_ipa_vmin_control;
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                               core3 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x0>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_0 &CLUSTER_COST_0>;
+                       clocks = <&soc_clocks ASR_CLK_CLST0>;
+                       operating-points-v2 = <&clst0_core_opp_table>;
+               };
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x1>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_0 &CLUSTER_COST_0>;
+                       clocks = <&soc_clocks ASR_CLK_CLST0>;
+                       operating-points-v2 = <&clst0_core_opp_table>;
+               };
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x2>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_0 &CLUSTER_COST_0>;
+                       clocks = <&soc_clocks ASR_CLK_CLST0>;
+                       operating-points-v2 = <&clst0_core_opp_table>;
+               };
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x3>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_0 &CLUSTER_COST_0>;
+                       clocks = <&soc_clocks ASR_CLK_CLST0>;
+                       operating-points-v2 = <&clst0_core_opp_table>;
+               };
+               cpu4: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x100>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_1 &CLUSTER_COST_1>;
+                       clocks = <&soc_clocks ASR_CLK_CLST1>;
+                       operating-points-v2 = <&clst1_core_opp_table>;
+               };
+               cpu5: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x101>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_1 &CLUSTER_COST_1>;
+                       clocks = <&soc_clocks ASR_CLK_CLST1>;
+                       operating-points-v2 = <&clst1_core_opp_table>;
+               };
+               cpu6: cpu@102 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x102>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_1 &CLUSTER_COST_1>;
+                       clocks = <&soc_clocks ASR_CLK_CLST1>;
+                       operating-points-v2 = <&clst1_core_opp_table>;
+               };
+               cpu7: cpu@103 {
+                       device_type = "cpu";
+                       compatible = "arm,armv8";
+                       reg = <0 0x103>;
+                       enable-method = "psci";
+                       cpu-idle-states = <&CPU_C2 &CLUSTER_MP2 &CHIP_D1P 
&CHIP_D1>;
+                       sched-energy-costs = <&CPU_COST_1 &CLUSTER_COST_1>;
+                       clocks = <&soc_clocks ASR_CLK_CLST1>;
+                       operating-points-v2 = <&clst1_core_opp_table>;
+               };
+
+       };
+
+       energy-costs {
+               /* cpu 0 data is magic data without any evidence */
+               CPU_COST_0: core-cost0 {
+                       busy-cost-data = <
+                               195     35      /* 624mhz */
+                               260     48      /* 832mhz */
+                               312     64      /* 1000mhz */
+                               390     95      /* 1248mhz */
+                               438     118     /* 1400mhz */
+                               501     149     /* 1600mhz */
+                       >;
+                       idle-cost-data = <
+                               6
+                               0
+                               0
+                               0
+                               0
+                               0
+                               0
+                       >;
+               };
+               CPU_COST_1: core-cost1 {
+                       busy-cost-data = <
+                               538     195     /* 1000mhz */
+                               672     292     /* 1248mhz */
+                               862     441     /* 1600mhz */
+                               1024    640     /* 1900mhz */
+
+                       >;
+                       idle-cost-data = <
+                               8
+                               0
+                               0
+                               0
+                               0
+                               0
+                               0
+                       >;
+               };
+               CLUSTER_COST_0: cluster-cost0 {
+                       busy-cost-data = <
+                               195     7       /* 624mhz */
+                               260     10      /* 832mhz */
+                               312     13      /* 1000mhz */
+                               390     22      /* 1248mhz */
+                               438     29      /* 1400mhz */
+                               501     39      /* 1600mhz */
+                       >;
+                       idle-cost-data = <
+                               40
+                               50
+                               0
+                               0
+                               0
+                               0
+                               0
+                       >;
+               };
+               CLUSTER_COST_1: cluster-cost1 {
+                       busy-cost-data = <
+                               538     20      /* 1000mhz */
+                               672     33      /* 1248mhz */
+                               862     54      /* 1600mhz */
+                               1024    86      /* 1900mhz */
+                       >;
+                       idle-cost-data = <
+                               50
+                               60
+                               0
+                               0
+                               0
+                               0
+                               0
+                       >;
+               };
+       };
+
+       psci {
+               compatible      = "arm,psci-1.0";
+               method          = "smc";
+               cpu_suspend     = <0xc4000001>;
+               cpu_off         = <0x84000002>;
+               cpu_on          = <0xc4000003>;
+       };
+
+       pmu {
+               compatible = "arm,armv8-pmuv3";
+               interrupts = <1 7 0x8>; /* PMU PPI, Level low type */
+       };
+
+       gic: interrupt-controller@d8000000 {
+               compatible = "arm,gic-v3";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               reg = <0x0 0xd8000000 0x0 0x200000>,
+                     <0x0 0xd8100000 0x0 0x200000>;
+               interrupts = <1 9 0x8>;
+       };
+
+       generic-timer {
+               compatible = "arm,armv8-timer";
+               /* PPI secure/nonsecure IRQ, active low level-sensitive */
+               interrupts = <1 13 0x8>,
+                            <1 14 0x8>,
+                                <1 11 0x8>,
+                                <1 10 0x8>;
+               clock-frequency = <26000000>;
+       };
+
+       soc {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               ranges;
+
+               axi@d4200000 {  /* AXI */
+                       compatible = "asr,axi-bus", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0 0xd4200000 0 0x00200000>;
+                       ranges = <0 0 0 0xffffffff>;
+
+               }; /* AXI */
+
+               apb@d4000000 {  /* APB */
+                       compatible = "asr,apb-bus", "simple-bus";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0 0xd4000000 0 0x00200000>;
+                       ranges = <0 0 0 0xffffffff>;
+
+                       uart0: uart@d4017000 {
+                               compatible = "asr,uart";
+                               reg = <0xd4017000 0x1000>;
+                               interrupts = <0 32 0x4>;
+                               clock-frequency = <13000000>;
+                               clocks = <&soc_clocks ASR_CLK_UART0>;
+                       };
+
+                       uart1: uart@d4018000 {
+                               compatible = "asr,uart";
+                               reg = <0xd4018000 0x1000>;
+                               interrupts = <0 33 0x4>;
+                               clock-frequency = <13000000>;
+                               clocks = <&soc_clocks ASR_CLK_UART1>;
+                       };
+
+                       uart2: uart@d4017800 {
+                               compatible = "asr,uart";
+                               reg = <0xd4017800 0x1000>;
+                               interrupts = <0 34 0x4>;
+                               clock-frequency = <13000000>;
+                               clocks = <&soc_clocks ASR_CLK_UART2>;
+                       };
+
+                       pmx: pinmux@d401e000 {
+                               compatible = "pinconf-single";
+                               reg = <0xd401e000 0x400>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               #gpio-range-cells = <3>;
+                               ranges;
+
+                               pinctrl-single,register-width = <32>;
+                               pinctrl-single,function-mask = <7>;
+
+                               range: gpio-range {
+                                       #pinctrl-single,gpio-range-cells = <3>;
+                               };
+                       };
+               }; /* APB */
+       }; /* soc */
+
+       soc_clocks: clocks@d4050000{
+               compatible = "asr,8751c-clock";
+               reg = <0x0 0xd4050000 0x0 0x209c>,
+                     <0x0 0xd4282800 0x0 0x400>,
+                     <0x0 0xd4015000 0x0 0x1000>,
+                     <0x0 0xd4090000 0x0 0x1000>,
+                     <0x0 0xd4282c00 0x0 0x400>,
+                     <0x0 0xd8440000 0x0 0x98>,
+                     <0x0 0xd4200000 0x0 0x4280>;
+               reg-names = "mpmu", "apmu", "apbc", "apbs", "ciu", "dciu", 
"ddrc";
+               interrupts = <0 96 IRQ_TYPE_LEVEL_HIGH>;
+               #clock-cells = <1>;
+       };
+};
-- 
2.7.4

Reply via email to