On Sat, Mar 23, 2019 at 10:01:28PM +0800, qiaozhou wrote:
> 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.

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 <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.

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
> 

Reply via email to