[PATCH 7/7] arm64: dts: add dts files for asr Aquilac SoC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Qiao Zhou <qiaozhou@xxxxxxxxxxxx>

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 <qiaozhou@xxxxxxxxxxxx>
---
 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 <timwang@xxxxxxxxxxxx>
+ *
+ *  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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux