All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: qiaozhou <qiaozhou@asrmicro.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 7/7] arm64: dts: add dts files for asr Aquilac SoC
Date: Sun, 31 Mar 2019 01:41:42 -0500	[thread overview]
Message-ID: <5ca06128.1c69fb81.10beb.8b9d@mx.google.com> (raw)
In-Reply-To: <1553349688-1946-8-git-send-email-qiaozhou@asrmicro.com>

On Sat, Mar 23, 2019 at 10:01:28PM +0800, qiaozhou wrote:
> From: Qiao Zhou <qiaozhou@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 <qiaozhou@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 <timwang@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	other threads:[~2019-03-31  6:41 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-23 14:01 [PATCH 0/7] Add dts files for ASR8751C SoC qiaozhou
2019-03-23 14:01 ` qiaozhou
2019-03-23 14:01 ` [PATCH 1/7] dt-bindings: arm: asr: add ASR8751C bindings qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-31  6:41   ` Rob Herring
2019-03-23 14:01 ` [PATCH 2/7] dt-bindings: bus: add ASR8751C APB/AXI bindings qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-31  6:41   ` Rob Herring
2019-03-23 14:01 ` [PATCH 3/7] dt-bindings: clocks: add ASR8751C bindings qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-31  6:41   ` Rob Herring
2019-03-23 14:01 ` [PATCH 4/7] dt-bindings: serial: add ASR8751C serial bindings qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-31  6:41   ` Rob Herring
2019-03-23 14:01 ` [PATCH 5/7] dt-bindings: Add header file of ASR8751C clock driver qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-23 14:01 ` [PATCH 6/7] dt-bindings: add header file of ASR8751C pinctrl driver qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-31  6:41   ` Rob Herring
2019-03-23 14:01 ` [PATCH 7/7] arm64: dts: add dts files for asr Aquilac SoC qiaozhou
2019-03-23 14:01   ` qiaozhou
2019-03-31  6:41   ` Rob Herring [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5ca06128.1c69fb81.10beb.8b9d@mx.google.com \
    --to=robh@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=qiaozhou@asrmicro.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.