Re: [PATCH 7/7] arm64: dts: add dts files for asr Aquilac SoC
From: Rob Herring
Date: Sun Mar 31 2019 - 02:41:52 EST
On Sat, Mar 23, 2019 at 10:01:28PM +0800, qiaozhou wrote:
> 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.
Drop the boilerplate.
> + */
> +
> +/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 {
unit address doesn't match.
> + /* 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.
Drop the boilerplate.
> + */
> +#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 {
Use '-' rather than '_':
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;
Not documented.
> + 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";
'arm,armv8' is only valid for s/w models.
> + 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 {
None of this node is documented.
> + /* 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>;
I believe specifying the numbers is deprecated.
> + };
> +
> + 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;
You can remove this level and move axi and apb up to the root.
> +
> + 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
>