mbox series

[v2,0/8] arm64: dts: qcom: sm8150: Add SM8150 DTS

Message ID 20190820064216.8629-1-vkoul@kernel.org
Headers show
Series arm64: dts: qcom: sm8150: Add SM8150 DTS | expand

Message

Vinod Koul Aug. 20, 2019, 6:42 a.m. UTC
This series adds DTS for SM8150, PMIC PM8150, PM8150B, PM8150L and
the MTP for SM8150.

Changes in v2:
 - Squash patches
 - Fix comments given by Stephen namely, lowercase for hext numbers,
   making rpmhcc have xo_board as parent, rename pon controller to
   power-on controller, make pmic nodes as disabled etc.
 - removed the dependency on clk defines and use raw numbers

Vinod Koul (8):
  arm64: dts: qcom: sm8150: add base dts file
  arm64: dts: qcom: pm8150: Add Base DTS file
  arm64: dts: qcom: pm8150b: Add Base DTS file
  arm64: dts: qcom: pm8150l: Add Base DTS file
  arm64: dts: qcom: sm8150-mtp: add base dts file
  arm64: dts: qcom: sm8150-mtp: Add regulators
  arm64: dts: qcom: sm8150: Add reserved-memory regions
  arm64: dts: qcom: sm8150: Add apps shared nodes

 arch/arm64/boot/dts/qcom/Makefile       |   1 +
 arch/arm64/boot/dts/qcom/pm8150.dtsi    |  95 +++++
 arch/arm64/boot/dts/qcom/pm8150b.dtsi   |  84 +++++
 arch/arm64/boot/dts/qcom/pm8150l.dtsi   |  78 ++++
 arch/arm64/boot/dts/qcom/sm8150-mtp.dts | 375 +++++++++++++++++++
 arch/arm64/boot/dts/qcom/sm8150.dtsi    | 479 ++++++++++++++++++++++++
 6 files changed, 1112 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/pm8150.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/pm8150b.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/pm8150l.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/sm8150-mtp.dts
 create mode 100644 arch/arm64/boot/dts/qcom/sm8150.dtsi

-- 
2.20.1

Comments

Niklas Cassel Aug. 20, 2019, 12:26 p.m. UTC | #1
On Tue, Aug 20, 2019 at 12:12:14PM +0530, Vinod Koul wrote:
> Add the regulators found in the mtp platform. This platform consists of

> pmic PM8150, PM8150L and PM8009.


Is there a reason not to squash this this patch 5/8 ?

> 

> Signed-off-by: Vinod Koul <vkoul@kernel.org>

> ---

>  arch/arm64/boot/dts/qcom/sm8150-mtp.dts | 327 ++++++++++++++++++++++++

>  1 file changed, 327 insertions(+)

> 

> diff --git a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts

> index 80b15f4f07c8..0513b24496f6 100644

> --- a/arch/arm64/boot/dts/qcom/sm8150-mtp.dts

> +++ b/arch/arm64/boot/dts/qcom/sm8150-mtp.dts

> @@ -4,6 +4,7 @@

>  

>  /dts-v1/;

>  

> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>

>  #include "sm8150.dtsi"

>  #include "pm8150.dtsi"

>  #include "pm8150b.dtsi"

> @@ -20,6 +21,332 @@

>  	chosen {

>  		stdout-path = "serial0:115200n8";

>  	};

> +

> +	vph_pwr: vph-pwr-regulator {

> +		compatible = "regulator-fixed";

> +		regulator-name = "vph_pwr";

> +		regulator-min-microvolt = <3700000>;

> +		regulator-max-microvolt = <3700000>;

> +	};

> +

> +	/*

> +	 * Apparently RPMh does not provide support for PM8150 S4 because it

> +	 * is always-on; model it as a fixed regulator.

> +	 */

> +	vreg_s4a_1p8: pm8150-s4 {

> +		compatible = "regulator-fixed";

> +		regulator-name = "vreg_s4a_1p8";

> +

> +		regulator-min-microvolt = <1800000>;

> +		regulator-max-microvolt = <1800000>;

> +

> +		regulator-always-on;

> +		regulator-boot-on;

> +

> +		vin-supply = <&vph_pwr>;

> +	};

> +};

> +

> +&apps_rsc {

> +	pm8150-rpmh-regulators {

> +		compatible = "qcom,pm8150-rpmh-regulators";

> +		qcom,pmic-id = "a";

> +

> +		vdd-s1-supply = <&vph_pwr>;

> +		vdd-s2-supply = <&vph_pwr>;

> +		vdd-s3-supply = <&vph_pwr>;

> +		vdd-s4-supply = <&vph_pwr>;

> +		vdd-s5-supply = <&vph_pwr>;

> +		vdd-s6-supply = <&vph_pwr>;

> +		vdd-s7-supply = <&vph_pwr>;

> +		vdd-s8-supply = <&vph_pwr>;

> +		vdd-s9-supply = <&vph_pwr>;

> +		vdd-s10-supply = <&vph_pwr>;

> +

> +		vdd-l1-l8-l11-supply = <&vreg_s6a_0p9>;

> +		vdd-l2-l10-supply = <&vreg_bob>;

> +		vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p9>;

> +		vdd-l6-l9-supply = <&vreg_s8c_1p3>;

> +		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>;

> +		vdd-l13-l16-l17-supply = <&vreg_bob>;

> +

> +		vreg_s5a_2p0: smps5 {

> +			regulator-min-microvolt = <1904000>;

> +			regulator-max-microvolt = <2000000>;

> +		};

> +

> +		vreg_s6a_0p9: smps6 {

> +			regulator-min-microvolt = <920000>;

> +			regulator-max-microvolt = <1128000>;

> +		};

> +

> +		vdda_wcss_pll:

> +		vreg_l1a_0p75: ldo1 {

> +			regulator-min-microvolt = <752000>;

> +			regulator-max-microvolt = <752000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vdd_pdphy:

> +		vdda_usb_hs_3p1:

> +		vreg_l2a_3p1: ldo2 {

> +			regulator-min-microvolt = <3072000>;

> +			regulator-max-microvolt = <3072000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l3a_0p8: ldo3 {

> +			regulator-min-microvolt = <480000>;

> +			regulator-max-microvolt = <932000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vdd_usb_hs_core:

> +		vdda_csi_0_0p9:

> +		vdda_csi_1_0p9:

> +		vdda_csi_2_0p9:

> +		vdda_csi_3_0p9:

> +		vdda_dsi_0_0p9:

> +		vdda_dsi_1_0p9:

> +		vdda_dsi_0_pll_0p9:

> +		vdda_dsi_1_pll_0p9:

> +		vdda_pcie_1ln_core:

> +		vdda_pcie_2ln_core:

> +		vdda_pll_hv_cc_ebi01:

> +		vdda_pll_hv_cc_ebi23:

> +		vdda_qrefs_0p875_5:

> +		vdda_sp_sensor:

> +		vdda_ufs_2ln_core_1:

> +		vdda_ufs_2ln_core_2:

> +		vdda_usb_ss_dp_core_1:

> +		vdda_usb_ss_dp_core_2:

> +		vdda_qlink_lv:

> +		vdda_qlink_lv_ck:

> +		vreg_l5a_0p875: ldo5 {

> +			regulator-min-microvolt = <880000>;

> +			regulator-max-microvolt = <880000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l6a_1p2: ldo6 {

> +			regulator-min-microvolt = <1200000>;

> +			regulator-max-microvolt = <1200000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l7a_1p8: ldo7 {

> +			regulator-min-microvolt = <1800000>;

> +			regulator-max-microvolt = <1800000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vddpx_10:

> +		vreg_l9a_1p2: ldo9 {

> +			regulator-min-microvolt = <1200000>;

> +			regulator-max-microvolt = <1200000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +

> +		vreg_l10a_2p5: ldo10 {

> +			regulator-min-microvolt = <2504000>;

> +			regulator-max-microvolt = <2960000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l11a_0p8: ldo11 {

> +			regulator-min-microvolt = <800000>;

> +			regulator-max-microvolt = <800000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vdd_qfprom:

> +		vdd_qfprom_sp:

> +		vdda_apc_cs_1p8:

> +		vdda_gfx_cs_1p8:

> +		vdda_usb_hs_1p8:

> +		vdda_qrefs_vref_1p8:

> +		vddpx_10_a:

> +		vreg_l12a_1p8: ldo12 {

> +			regulator-min-microvolt = <1800000>;

> +			regulator-max-microvolt = <1800000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l13a_2p7: ldo13 {

> +			regulator-min-microvolt = <2704000>;

> +			regulator-max-microvolt = <2704000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l14a_1p8: ldo14 {

> +			regulator-min-microvolt = <1800000>;

> +			regulator-max-microvolt = <1880000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l15a_1p7: ldo15 {

> +			regulator-min-microvolt = <1704000>;

> +			regulator-max-microvolt = <1704000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l16a_2p7: ldo16 {

> +			regulator-min-microvolt = <2704000>;

> +			regulator-max-microvolt = <2960000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l17a_3p0: ldo17 {

> +			regulator-min-microvolt = <2856000>;

> +			regulator-max-microvolt = <3008000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +	};

> +

> +	pm8150l-rpmh-regulators {

> +		compatible = "qcom,pm8150l-rpmh-regulators";

> +		qcom,pmic-id = "c";

> +

> +		vdd-s1-supply = <&vph_pwr>;

> +		vdd-s2-supply = <&vph_pwr>;

> +		vdd-s3-supply = <&vph_pwr>;

> +		vdd-s4-supply = <&vph_pwr>;

> +		vdd-s5-supply = <&vph_pwr>;

> +		vdd-s6-supply = <&vph_pwr>;

> +		vdd-s7-supply = <&vph_pwr>;

> +		vdd-s8-supply = <&vph_pwr>;

> +

> +		vdd-l1-l8-supply = <&vreg_s4a_1p8>;

> +		vdd-l2-l3-supply = <&vreg_s8c_1p3>;

> +		vdd-l4-l5-l6-supply = <&vreg_bob>;

> +		vdd-l7-l11-supply = <&vreg_bob>;

> +		vdd-l9-l10-supply = <&vreg_bob>;

> +

> +		vdd-bob-supply = <&vph_pwr>;

> +		vdd-flash-supply = <&vreg_bob>;

> +		vdd-rgb-supply = <&vreg_bob>;

> +

> +		vreg_bob: bob {

> +			regulator-min-microvolt = <3008000>;

> +			regulator-max-microvolt = <4000000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;

> +			regulator-allow-bypass;

> +		};

> +

> +		vreg_s8c_1p3: smps8 {

> +			regulator-min-microvolt = <1352000>;

> +			regulator-max-microvolt = <1352000>;

> +		};

> +

> +		vreg_l1c_1p8: ldo1 {

> +			regulator-min-microvolt = <1800000>;

> +			regulator-max-microvolt = <1800000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vdda_wcss_adcdac_1:

> +		vdda_wcss_adcdac_22:

> +		vreg_l2c_1p3: ldo2 {

> +			regulator-min-microvolt = <1304000>;

> +			regulator-max-microvolt = <1304000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vdda_hv_ebi0:

> +		vdda_hv_ebi1:

> +		vdda_hv_ebi2:

> +		vdda_hv_ebi3:

> +		vdda_hv_refgen0:

> +		vdda_qlink_hv_ck:

> +		vreg_l3c_1p2: ldo3 {

> +			regulator-min-microvolt = <1200000>;

> +			regulator-max-microvolt = <1200000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vddpx_5:

> +		vreg_l4c_1p8: ldo4 {

> +			regulator-min-microvolt = <1704000>;

> +			regulator-max-microvolt = <2928000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vddpx_6:

> +		vreg_l5c_1p8: ldo5 {

> +			regulator-min-microvolt = <1704000>;

> +			regulator-max-microvolt = <2928000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vddpx_2:

> +		vreg_l6c_2p9: ldo6 {

> +			regulator-min-microvolt = <1800000>;

> +			regulator-max-microvolt = <2960000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l7c_3p0: ldo7 {

> +			regulator-min-microvolt = <2856000>;

> +			regulator-max-microvolt = <3104000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l8c_1p8: ldo8 {

> +			regulator-min-microvolt = <1800000>;

> +			regulator-max-microvolt = <1800000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l9c_2p9: ldo9 {

> +			regulator-min-microvolt = <2704000>;

> +			regulator-max-microvolt = <2960000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +

> +		vreg_l10c_3p3: ldo10 {

> +			regulator-min-microvolt = <3000000>;

> +			regulator-max-microvolt = <3312000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l11c_3p3: ldo11 {

> +			regulator-min-microvolt = <3000000>;

> +			regulator-max-microvolt = <3312000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +	};

> +

> +	pm8009-rpmh-regulators {

> +		compatible = "qcom,pm8009-rpmh-regulators";

> +		qcom,pmic-id = "f";

> +

> +		vdd-s1-supply = <&vph_pwr>;

> +		vdd-s2-supply = <&vreg_bob>;

> +

> +		vdd-l2-supply = <&vreg_s8c_1p3>;

> +		vdd-l5-l6-supply = <&vreg_bob>;

> +

> +		vreg_l2f_1p2: ldo2 {

> +			regulator-min-microvolt = <1200000>;

> +			regulator-max-microvolt = <1200000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l5f_2p85: ldo5 {

> +			regulator-min-microvolt = <2800000>;

> +			regulator-max-microvolt = <2800000>;

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +		};

> +

> +		vreg_l6f_2p85: ldo6 {

> +			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;

> +			regulator-min-microvolt = <2856000>;

> +			regulator-max-microvolt = <2856000>;

> +		};

> +	};

> +

>  };

>  

>  &qupv3_id_1 {

> -- 

> 2.20.1

>
Niklas Cassel Aug. 20, 2019, 12:27 p.m. UTC | #2
On Tue, Aug 20, 2019 at 12:12:09PM +0530, Vinod Koul wrote:
> This add base DTS file with cpu, psci, firmware, clock, tlmm and

> spmi nodes which enables boot to console

> 

> Signed-off-by: Vinod Koul <vkoul@kernel.org>

> ---

>  arch/arm64/boot/dts/qcom/sm8150.dtsi | 305 +++++++++++++++++++++++++++

>  1 file changed, 305 insertions(+)

>  create mode 100644 arch/arm64/boot/dts/qcom/sm8150.dtsi

> 

> diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi

> new file mode 100644

> index 000000000000..d9dc95f851b7

> --- /dev/null

> +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi

> @@ -0,0 +1,305 @@

> +// SPDX-License-Identifier: BSD-3-Clause

> +// Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.

> +// Copyright (c) 2019, Linaro Limited

> +

> +#include <dt-bindings/interrupt-controller/arm-gic.h>

> +#include <dt-bindings/soc/qcom,rpmh-rsc.h>

> +#include <dt-bindings/clock/qcom,rpmh.h>

> +

> +/ {

> +	interrupt-parent = <&intc>;

> +

> +	#address-cells = <2>;

> +	#size-cells = <2>;

> +

> +	chosen { };


What is the point of an empty node without a label?
Perhaps I'm missing something.

> +

> +	clocks {

> +		xo_board: xo-board {

> +			compatible = "fixed-clock";

> +			#clock-cells = <0>;

> +			clock-frequency = <38400000>;

> +			clock-output-names = "xo_board";

> +		};

> +

> +		sleep_clk: sleep-clk {

> +			compatible = "fixed-clock";

> +			#clock-cells = <0>;

> +			clock-frequency = <32764>;

> +			clock-output-names = "sleep_clk";

> +		};

> +	};

> +

> +	cpus {

> +		#address-cells = <2>;

> +		#size-cells = <0>;

> +

> +		CPU0: cpu@0 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";


I don't see this compatible in
Documentation/devicetree/bindings/arm/cpus.yaml

> +			reg = <0x0 0x0>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_0>;

> +			L2_0: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +				L3_0: l3-cache {

> +				      compatible = "cache";

> +				};

> +			};

> +		};

> +

> +		CPU1: cpu@100 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x100>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_100>;

> +			L2_100: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +

> +		};

> +

> +		CPU2: cpu@200 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x200>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_200>;

> +			L2_200: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +		};

> +

> +		CPU3: cpu@300 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x300>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_300>;

> +			L2_300: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +		};

> +

> +		CPU4: cpu@400 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x400>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_400>;

> +			L2_400: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +		};

> +

> +		CPU5: cpu@500 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x500>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_500>;

> +			L2_500: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +		};

> +

> +		CPU6: cpu@600 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x600>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_600>;

> +			L2_600: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +		};

> +

> +		CPU7: cpu@700 {

> +			device_type = "cpu";

> +			compatible = "qcom,kryo485";

> +			reg = <0x0 0x700>;

> +			enable-method = "psci";

> +			next-level-cache = <&L2_700>;

> +			L2_700: l2-cache {

> +				compatible = "cache";

> +				next-level-cache = <&L3_0>;

> +			};

> +		};

> +	};


I was expecting to see the cpu-map here, defining
the core to cluster relationship.

> +

> +	firmware {

> +		scm: scm {

> +			compatible = "qcom,scm-sm8150", "qcom,scm";

> +			#reset-cells = <1>;

> +		};

> +	};

> +

> +	memory@80000000 {

> +		device_type = "memory";

> +		/* We expect the bootloader to fill in the size */

> +		reg = <0 0x80000000 0 0>;

> +	};

> +

> +	psci {

> +		compatible = "arm,psci-1.0";

> +		method = "smc";

> +	};

> +

> +	soc: soc@0 {

> +		#address-cells = <1>;

> +		#size-cells = <1>;

> +		ranges = <0 0 0 0xffffffff>;

> +		compatible = "simple-bus";

> +

> +		gcc: clock-controller@100000 {

> +			compatible = "qcom,gcc-sm8150";

> +			reg = <0x00100000 0x1f0000>;

> +			#clock-cells = <1>;

> +			#reset-cells = <1>;

> +			#power-domain-cells = <1>;

> +			clock-names = "bi_tcxo",

> +				      "sleep_clk";

> +			clocks = <&rpmhcc RPMH_CXO_CLK>,

> +				 <&sleep_clk>;

> +		};

> +

> +		qupv3_id_1: geniqup@ac0000 {

> +			compatible = "qcom,geni-se-qup";

> +			reg = <0x00ac0000 0x6000>;

> +			clock-names = "m-ahb", "s-ahb";

> +			clocks = <&gcc 123>,

> +				 <&gcc 124>;


Is there no defines for these?

> +			#address-cells = <1>;

> +			#size-cells = <1>;

> +			ranges;

> +			status = "disabled";

> +

> +			uart2: serial@a90000 {

> +				compatible = "qcom,geni-debug-uart";

> +				reg = <0x00a90000 0x4000>;

> +				clock-names = "se";

> +				clocks = <&gcc 105>;

> +				interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;

> +				status = "disabled";

> +			};

> +		};

> +

> +		tlmm: pinctrl@3100000 {

> +			compatible = "qcom,sm8150-pinctrl";

> +			reg = <0x03100000 0x300000>,

> +			      <0x03500000 0x300000>,

> +			      <0x03900000 0x300000>,

> +			      <0x03d00000 0x300000>;

> +			reg-names = "west", "east", "north", "south";

> +			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;

> +			gpio-ranges = <&tlmm 0 0 175>;

> +			gpio-controller;

> +			#gpio-cells = <2>;

> +			interrupt-controller;

> +			#interrupt-cells = <2>;

> +		};

> +

> +		intc: interrupt-controller@17a00000 {

> +			compatible = "arm,gic-v3";

> +			interrupt-controller;

> +			#interrupt-cells = <3>;

> +			reg = <0x17a00000 0x10000>,	/* GICD */

> +			      <0x17a60000 0x100000>;	/* GICR * 8 */

> +			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;

> +		};

> +

> +		timer@17c20000 {

> +			#address-cells = <1>;

> +			#size-cells = <1>;

> +			ranges;

> +			compatible = "arm,armv7-timer-mem";

> +			reg = <0x17c20000 0x1000>;

> +			clock-frequency = <19200000>;

> +

> +			frame@17c21000{

> +				frame-number = <0>;

> +				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,

> +					     <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c21000 0x1000>,

> +				      <0x17c22000 0x1000>;

> +			};

> +

> +			frame@17c23000 {

> +				frame-number = <1>;

> +				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c23000 0x1000>;

> +				status = "disabled";

> +			};

> +

> +			frame@17c25000 {

> +				frame-number = <2>;

> +				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c25000 0x1000>;

> +				status = "disabled";

> +			};

> +

> +			frame@17c27000 {

> +				frame-number = <3>;

> +				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c26000 0x1000>;

> +				status = "disabled";

> +			};

> +

> +			frame@17c29000 {

> +				frame-number = <4>;

> +				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c29000 0x1000>;

> +				status = "disabled";

> +			};

> +

> +			frame@17c2b000 {

> +				frame-number = <5>;

> +				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c2b000 0x1000>;

> +				status = "disabled";

> +			};

> +

> +			frame@17c2d000 {

> +				frame-number = <6>;

> +				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;

> +				reg = <0x17c2d000 0x1000>;

> +				status = "disabled";

> +			};

> +		};

> +

> +		spmi_bus: spmi@c440000 {

> +			compatible = "qcom,spmi-pmic-arb";

> +			reg = <0x0c440000 0x0001100>,

> +			      <0x0c600000 0x2000000>,

> +			      <0x0e600000 0x0100000>,

> +			      <0x0e700000 0x00a0000>,

> +			      <0x0c40a000 0x0026000>;

> +			reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";

> +			interrupt-names = "periph_irq";

> +			interrupts = <GIC_SPI 481 IRQ_TYPE_LEVEL_HIGH>;

> +			qcom,ee = <0>;

> +			qcom,channel = <0>;

> +			#address-cells = <2>;

> +			#size-cells = <0>;

> +			interrupt-controller;

> +			#interrupt-cells = <4>;

> +			cell-index = <0>;

> +		};

> +	};

> +

> +	timer {

> +		compatible = "arm,armv8-timer";

> +		interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_LOW>,

> +			     <GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>,

> +			     <GIC_PPI 3 IRQ_TYPE_LEVEL_LOW>,

> +			     <GIC_PPI 0 IRQ_TYPE_LEVEL_LOW>;

> +	};

> +};

> -- 

> 2.20.1

>
Vinod Koul Aug. 20, 2019, 12:33 p.m. UTC | #3
On 20-08-19, 14:27, Niklas Cassel wrote:
> On Tue, Aug 20, 2019 at 12:12:09PM +0530, Vinod Koul wrote:

> > This add base DTS file with cpu, psci, firmware, clock, tlmm and

> > spmi nodes which enables boot to console

> > 

> > Signed-off-by: Vinod Koul <vkoul@kernel.org>

> > ---

> >  arch/arm64/boot/dts/qcom/sm8150.dtsi | 305 +++++++++++++++++++++++++++

> >  1 file changed, 305 insertions(+)

> >  create mode 100644 arch/arm64/boot/dts/qcom/sm8150.dtsi

> > 

> > diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi

> > new file mode 100644

> > index 000000000000..d9dc95f851b7

> > --- /dev/null

> > +++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi

> > @@ -0,0 +1,305 @@

> > +// SPDX-License-Identifier: BSD-3-Clause

> > +// Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.

> > +// Copyright (c) 2019, Linaro Limited

> > +

> > +#include <dt-bindings/interrupt-controller/arm-gic.h>

> > +#include <dt-bindings/soc/qcom,rpmh-rsc.h>

> > +#include <dt-bindings/clock/qcom,rpmh.h>

> > +

> > +/ {

> > +	interrupt-parent = <&intc>;

> > +

> > +	#address-cells = <2>;

> > +	#size-cells = <2>;

> > +

> > +	chosen { };

> 

> What is the point of an empty node without a label?

> Perhaps I'm missing something.


Hmm that seems to be the case with other dts in qcom folder :), we do
have chosen in mtp dts as well which is not empty

> 

> > +

> > +	clocks {

> > +		xo_board: xo-board {

> > +			compatible = "fixed-clock";

> > +			#clock-cells = <0>;

> > +			clock-frequency = <38400000>;

> > +			clock-output-names = "xo_board";

> > +		};

> > +

> > +		sleep_clk: sleep-clk {

> > +			compatible = "fixed-clock";

> > +			#clock-cells = <0>;

> > +			clock-frequency = <32764>;

> > +			clock-output-names = "sleep_clk";

> > +		};

> > +	};

> > +

> > +	cpus {

> > +		#address-cells = <2>;

> > +		#size-cells = <0>;

> > +

> > +		CPU0: cpu@0 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> 

> I don't see this compatible in

> Documentation/devicetree/bindings/arm/cpus.yaml


Thanks for pointing, will send

> 

> > +			reg = <0x0 0x0>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_0>;

> > +			L2_0: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +				L3_0: l3-cache {

> > +				      compatible = "cache";

> > +				};

> > +			};

> > +		};

> > +

> > +		CPU1: cpu@100 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x100>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_100>;

> > +			L2_100: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +

> > +		};

> > +

> > +		CPU2: cpu@200 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x200>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_200>;

> > +			L2_200: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +		};

> > +

> > +		CPU3: cpu@300 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x300>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_300>;

> > +			L2_300: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +		};

> > +

> > +		CPU4: cpu@400 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x400>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_400>;

> > +			L2_400: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +		};

> > +

> > +		CPU5: cpu@500 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x500>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_500>;

> > +			L2_500: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +		};

> > +

> > +		CPU6: cpu@600 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x600>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_600>;

> > +			L2_600: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +		};

> > +

> > +		CPU7: cpu@700 {

> > +			device_type = "cpu";

> > +			compatible = "qcom,kryo485";

> > +			reg = <0x0 0x700>;

> > +			enable-method = "psci";

> > +			next-level-cache = <&L2_700>;

> > +			L2_700: l2-cache {

> > +				compatible = "cache";

> > +				next-level-cache = <&L3_0>;

> > +			};

> > +		};

> > +	};

> 

> I was expecting to see the cpu-map here, defining

> the core to cluster relationship.


That would come later with bunch of other support

> 

> > +

> > +	firmware {

> > +		scm: scm {

> > +			compatible = "qcom,scm-sm8150", "qcom,scm";

> > +			#reset-cells = <1>;

> > +		};

> > +	};

> > +

> > +	memory@80000000 {

> > +		device_type = "memory";

> > +		/* We expect the bootloader to fill in the size */

> > +		reg = <0 0x80000000 0 0>;

> > +	};

> > +

> > +	psci {

> > +		compatible = "arm,psci-1.0";

> > +		method = "smc";

> > +	};

> > +

> > +	soc: soc@0 {

> > +		#address-cells = <1>;

> > +		#size-cells = <1>;

> > +		ranges = <0 0 0 0xffffffff>;

> > +		compatible = "simple-bus";

> > +

> > +		gcc: clock-controller@100000 {

> > +			compatible = "qcom,gcc-sm8150";

> > +			reg = <0x00100000 0x1f0000>;

> > +			#clock-cells = <1>;

> > +			#reset-cells = <1>;

> > +			#power-domain-cells = <1>;

> > +			clock-names = "bi_tcxo",

> > +				      "sleep_clk";

> > +			clocks = <&rpmhcc RPMH_CXO_CLK>,

> > +				 <&sleep_clk>;

> > +		};

> > +

> > +		qupv3_id_1: geniqup@ac0000 {

> > +			compatible = "qcom,geni-se-qup";

> > +			reg = <0x00ac0000 0x6000>;

> > +			clock-names = "m-ahb", "s-ahb";

> > +			clocks = <&gcc 123>,

> > +				 <&gcc 124>;

> 

> Is there no defines for these?


It is, but if you look at cover we did that here so that we can get
these merged and not worry about dependency. The defines are in clock
tree. After next cycle these will be replaced with defines.

-- 
~Vinod
Vinod Koul Aug. 20, 2019, 12:37 p.m. UTC | #4
On 20-08-19, 14:26, Niklas Cassel wrote:
> On Tue, Aug 20, 2019 at 12:12:14PM +0530, Vinod Koul wrote:

> > Add the regulators found in the mtp platform. This platform consists of

> > pmic PM8150, PM8150L and PM8009.

> 

> Is there a reason not to squash this this patch 5/8 ?


I typically like big chunks to split logically so that is the reason why
I still kept this off from base dts one

-- 
~Vinod