devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: skakit@codeaurora.org
To: Matthias Kaehlcke <mka@chromium.org>
Cc: Rob Herring <robh+dt@kernel.org>, Andy Gross <agross@kernel.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org, kgunda@codeaurora.org
Subject: Re: [PATCH] arm64: dts: qcom: sc7280: Add PMIC peripherals for SC7280
Date: Mon, 22 Mar 2021 18:50:47 +0530	[thread overview]
Message-ID: <4dc784eb3c00a9805141148732476838@codeaurora.org> (raw)
In-Reply-To: <YEvR1kDm32tE7mK3@google.com>

Hi Matthias,

On 2021-03-13 02:10, Matthias Kaehlcke wrote:
> Hi Satya,
> 
> On Thu, Mar 11, 2021 at 04:10:29PM +0530, satya priya wrote:
>> Add PM7325/PM8350C/PMK8350/PMR735A peripherals such as PON,
>> GPIOs, RTC and other PMIC infra modules for SC7280.
>> 
>> Signed-off-by: satya priya <skakit@codeaurora.org>
>> ---
>> This patch depends on base DT and board files for SC7280 to merge 
>> first
>> https://lore.kernel.org/patchwork/project/lkml/list/?series=487403
>> 
>>  arch/arm64/boot/dts/qcom/pm7325.dtsi  |  60 ++++++++++++++++++++
>>  arch/arm64/boot/dts/qcom/pm8350c.dtsi |  60 ++++++++++++++++++++
>>  arch/arm64/boot/dts/qcom/pmk8350.dtsi | 104 
>> ++++++++++++++++++++++++++++++++++
>>  arch/arm64/boot/dts/qcom/pmr735a.dtsi |  60 ++++++++++++++++++++
>>  arch/arm64/boot/dts/qcom/sc7280.dtsi  |   8 +++
>>  5 files changed, 292 insertions(+)
>>  create mode 100644 arch/arm64/boot/dts/qcom/pm7325.dtsi
>>  create mode 100644 arch/arm64/boot/dts/qcom/pm8350c.dtsi
>>  create mode 100644 arch/arm64/boot/dts/qcom/pmk8350.dtsi
>>  create mode 100644 arch/arm64/boot/dts/qcom/pmr735a.dtsi
>> 
>> diff --git a/arch/arm64/boot/dts/qcom/pm7325.dtsi 
>> b/arch/arm64/boot/dts/qcom/pm7325.dtsi
>> new file mode 100644
>> index 0000000..393b256
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/pm7325.dtsi
>> @@ -0,0 +1,60 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +// Copyright (c) 2021, The Linux Foundation. All rights reserved.
>> +
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include <dt-bindings/spmi/spmi.h>
>> +
>> +&spmi_bus {
>> +	pm7325: pmic@1 {
>> +		compatible = "qcom,pm7325", "qcom,spmi-pmic";
>> +		reg = <0x1 SPMI_USID>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pm7325_tz: temp-alarm@a00 {
> 
> The _tz suffix suggests this is a thermal zone, which isn't the case.
> Call it 'pm7325_temp_alarm' or similar.
> 

Okay.

>> +			compatible = "qcom,spmi-temp-alarm";
>> +			reg = <0xa00>;
>> +			interrupts = <0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
>> +			#thermal-sensor-cells = <0>;
>> +		};
>> +
>> +		pm7325_gpios: gpios@8800 {
>> +			compatible = "qcom,pm7325-gpio", "qcom,spmi-gpio";
>> +			reg = <0x8800>;
>> +			gpio-controller;
>> +			gpio-ranges = <&pm7325_gpios 0 0 10>;
>> +			#gpio-cells = <2>;
>> +			interrupt-controller;
>> +			#interrupt-cells = <2>;
>> +		};
>> +	};
>> +};
>> +
>> +&thermal_zones {
>> +	pm7325_temp_alarm: pm7325_tz {
> 
> The temperature corresponds to the PM7325 on-die temperature, the temp 
> alarm
> is a feature to monitor it. Also many QCA SoCs name the thermal zones
> <whatever>-thermal, so it seems good to follow this convention. My 
> suggestion
> is:
> 	pm7325_thermal: pm7325-thermal {
> 

Okay, will change it.

> 
>> +		polling-delay-passive = <100>;
>> +		polling-delay = <0>;
> 
> Are you sure that no polling delay is needed? How does the thermal 
> framework
> detect that the temperatures is >= the passive trip point and that it 
> should
> start polling at 'polling-delay-passive' rate?
> 

As the temp-alarm has interrupt support, whenever preconfigured 
threshold violates it notifies thermal framework, so I think the polling 
delay is not needed here.

>> +		thermal-governor = "step_wise";
> 
> This property is not supported upstream.
> 
> In any case, this thermal zone doesn't have cooling devices, what is
> any thermal governor supposed to do with this thermal zone?
> 
> I understand that the zone is generally useful to configure the
> over-temperature protection of the PMIC and to allow the kernel
> to shut down (or reboot) when a critical trip point is reached,
> but the specific governor is irrelevant as far as I understand.
> 

Yeah, this is not required here will remove it.

>> +		thermal-sensors = <&pm7325_tz>;
>> +
>> +		trips {
>> +			pm7325_trip0: trip0 {
>> +				temperature = <95000>;
>> +				hysteresis = <0>;
>> +				type = "passive";
>> +			};
>> +
>> +			pm7325_trip1: trip1 {
>> +				temperature = <115000>;
>> +				hysteresis = <0>;
>> +				type = "critical";
>> +			};
>> +
>> +			pm7325_trip2: trip2 {
>> +				temperature = <145000>;
>> +				hysteresis = <0>;
>> +				type = "critical";
>> +			};
> 
> Why are there two critical trip points? The system should shut down
> when the first trip point is reached, the second one is irrelevant.
> As far as I recall from implementing f1599f9e4cd6 ("thermal:
> qcom-spmi: Use PMIC thermal stage 2 for critical trip points")
> earlier PMIC versions have 3 stages for the over-temperature
> protection. When the stage 3 threshold (trip2) is hit the PMIC
> performs and automated shutdown. Unless this has changed for the
> PM7325 the second critical trip point should not be needed. The
> second critical trip point could even lead to a misconfiguration
> of the PMIC threshold, since the driver interprets the temperature
> of a critical trip point as the stage3 temperature.
> 

yes I agree, the system will shutdown when we hit the 1st critical, 2nd 
critical point is not needed. Probably this got carried from old change 
propagation, will remove it.

>> +		};
>> +	};
>> +};
>> diff --git a/arch/arm64/boot/dts/qcom/pm8350c.dtsi 
>> b/arch/arm64/boot/dts/qcom/pm8350c.dtsi
>> new file mode 100644
>> index 0000000..dffa79d
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/pm8350c.dtsi
>> @@ -0,0 +1,60 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +// Copyright (c) 2021, The Linux Foundation. All rights reserved.
>> +
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include <dt-bindings/spmi/spmi.h>
>> +
>> +&spmi_bus {
>> +	pm8350: pmic@2 {
> 
> pm8350c ?
> 

Ok.

>> +		compatible = "qcom,pm8350c", "qcom,spmi-pmic";
>> +		reg = <0x2 SPMI_USID>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pm8350c_tz: temp-alarm@a00 {
> 
> same as for pm7325
> 

Ok.

>> +			compatible = "qcom,spmi-temp-alarm";
>> +			reg = <0xa00>;
>> +			interrupts = <0x2 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
>> +			#thermal-sensor-cells = <0>;
>> +		};
>> +
>> +		pm8350c_gpios: gpios@8800 {
>> +			compatible = "qcom,pm8350c-gpio", "qcom,spmi-gpio";
>> +			reg = <0x8800>;
>> +			gpio-controller;
>> +			gpio-ranges = <&pm8350c_gpios 0 0 9>;
>> +			#gpio-cells = <2>;
>> +			interrupt-controller;
>> +			#interrupt-cells = <2>;
>> +		};
>> +	};
>> +};
>> +
>> +&thermal_zones {
>> +	pm8350c_temp_alarm: pm8350c_tz {
>> +		polling-delay-passive = <100>;
>> +		polling-delay = <0>;
>> +		thermal-governor = "step_wise";
>> +		thermal-sensors = <&pm8350c_tz>;
> 
> 
> same as for pm7325
> 
>> +
>> +		trips {
>> +			pm8350c_trip0: trip0 {
>> +				temperature = <95000>;
>> +				hysteresis = <0>;
>> +				type = "passive";
>> +			};
>> +
>> +			pm8350c_trip1: trip1 {
>> +				temperature = <115000>;
>> +				hysteresis = <0>;
>> +				type = "critical";
>> +			};
>> +
>> +			pm8350c_trip2: trip2 {
>> +				temperature = <145000>;
>> +				hysteresis = <0>;
>> +				type = "critical";
>> +			};
> 
> same as for pm7325
> 
>> +		};
>> +	};
>> +};
>> diff --git a/arch/arm64/boot/dts/qcom/pmk8350.dtsi 
>> b/arch/arm64/boot/dts/qcom/pmk8350.dtsi
>> new file mode 100644
>> index 0000000..9749484
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/pmk8350.dtsi
>> @@ -0,0 +1,104 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +// Copyright (c) 2021, The Linux Foundation. All rights reserved.
>> +
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/input/linux-event-codes.h>
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include <dt-bindings/spmi/spmi.h>
>> +#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
>> +#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
>> +#include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
>> +#include <dt-bindings/iio/qcom,spmi-adc7-pmr735b.h>
>> +
>> +&spmi_bus {
>> +	pmk8350: pmic@0 {
>> +		compatible = "qcom,pmk8350", "qcom,spmi-pmic";
>> +		reg = <0x0 SPMI_USID>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pmk8350_pon: pon_hlos@1300 {
> 
> just pon@1300 for consistency? That's also the namingMK8350 Channel 
> nodes */

ok.

>> +			pmk8350_die_temp {
>> +				reg = <PMK8350_ADC7_DIE_TEMP>;
>> +				label = "pmk8350_die_temp";
>> +				qcom,pre-scaling = <1 1>;
>> +			};
>> +
>> +			/* PM8350 Channel nodes */
> 
> This comment and the ones below don't seem particularly useful,
> the naming of the nodes should provide enough context.
> 

Ok, will remove.

>> +			pm8350_die_temp {
>> +				reg = <PM8350_ADC7_DIE_TEMP>;
>> +				label = "pm8350_die_temp";
>> +				qcom,pre-scaling = <1 1>;
>> +			};
>> +
>> +			/* PMR735a Channel nodes */
>> +			pmr735a_die_temp {
>> +				reg = <PMR735A_ADC7_DIE_TEMP>;
>> +				label = "pmr735a_die_temp";
>> +				qcom,pre-scaling = <1 1>;
>> +			};
>> +
>> +			/* PMR735b Channel nodes */
>> +			pmr735b_die_temp {
>> +				reg = <PMR735B_ADC7_DIE_TEMP>;
>> +				label = "pmr735b_die_temp";
>> +				qcom,pre-scaling = <1 1>;
>> +			};
>> +		};
>> +
>> +		pmk8350_adc_tm: adc_tm@3400 {
>> +			compatible = "qcom,adc-tm7";
>> +			reg = <0x3400>;
>> +			interrupts = <0x0 0x34 0x0 IRQ_TYPE_EDGE_RISING>;
>> +			interrupt-names = "threshold";
>> +			#address-cells = <1>;
>> +			#size-cells = <0>;
>> +			#thermal-sensor-cells = <1>;
>> +			status = "disabled";
>> +		};
>> +
>> +		pmk8350_gpios: gpios@b000 {
>> +			compatible = "qcom,pmk8350-gpio", "qcom,spmi-gpio";
>> +			reg = <0xb000>;
>> +			gpio-controller;
>> +			gpio-ranges = <&pmk8350_gpios 0 0 4>;
>> +			#gpio-cells = <2>;
>> +			interrupt-controller;
>> +			#interrupt-cells = <2>;
>> +		};
>> +
>> +		pmk8350_rtc: rtc@6100 {
>> +			compatible = "qcom,pmk8350-rtc";
>> +			reg = <0x6100>, <0x6200>;
>> +			reg-names = "rtc", "alarm";
>> +			interrupts = <0x0 0x62 0x1 IRQ_TYPE_EDGE_RISING>;
>> +		};
>> +	};
>> +};
>> diff --git a/arch/arm64/boot/dts/qcom/pmr735a.dtsi 
>> b/arch/arm64/boot/dts/qcom/pmr735a.dtsi
>> new file mode 100644
>> index 0000000..e1d2356
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/pmr735a.dtsi
>> @@ -0,0 +1,60 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +// Copyright (c) 2021, The Linux Foundation. All rights reserved.
>> +
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include <dt-bindings/spmi/spmi.h>
>> +
>> +&spmi_bus {
>> +	pmr735a: pmic@4 {
>> +		compatible = "qcom,pmr735a", "qcom,spmi-pmic";
>> +		reg = <0x4 SPMI_USID>;
>> +		#address-cells = <1>;
>> +		#size-cells = <0>;
>> +
>> +		pmr735a_tz: temp-alarm@a00 {
> 
> same as for pm7325
> 

Ok.

>> +			compatible = "qcom,spmi-temp-alarm";
>> +			reg = <0xa00>;
>> +			interrupts = <0x4 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
>> +			#thermal-sensor-cells = <0>;
>> +		};
>> +
>> +		pmr735a_gpios: gpios@8800 {
>> +			compatible = "qcom,pmr735a-gpio", "qcom,spmi-gpio";
>> +			reg = <0x8800>;
>> +			gpio-controller;
>> +			gpio-ranges = <&pmr735a_gpios 0 0 4>;
>> +			#gpio-cells = <2>;
>> +			interrupt-controller;
>> +			#interrupt-cells = <2>;
>> +		};
>> +	};
>> +};
>> +
>> +&thermal_zones {
>> +	pmr735a_temp_alarm: pmr735a_tz {
> 
> same as for pm7325
> 
>> +		polling-delay-passive = <100>;
>> +		polling-delay = <0>;
>> +		thermal-governor = "step_wise";
>> +		thermal-sensors = <&pmr735a_tz>;
> 
> same as for pm7325
> 
>> +
>> +		trips {
>> +			pmr735a_trip0: trip0 {
>> +				temperature = <95000>;
>> +				hysteresis = <0>;
>> +				type = "passive";
>> +			};
>> +
>> +			pmr735a_trip1: trip1 {
>> +				temperature = <115000>;
>> +				hysteresis = <0>;
>> +				type = "critical";
>> +			};
>> +
>> +			pmr735a_trip2: trip2 {
>> +				temperature = <145000>;
>> +				hysteresis = <0>;
>> +				type = "critical";
>> +			};
> 
> same as for pm7325
> 
>> +		};
>> +	};
>> +};
>> diff --git a/arch/arm64/boot/dts/qcom/sc7280.dtsi 
>> b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> index 8af6d77..25402d4 100644
>> --- a/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sc7280.dtsi
>> @@ -606,4 +606,12 @@
>>  			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
>>  			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
>>  	};
>> +
>> +	thermal_zones: thermal-zones {
>> +	};
>>  };
>> +
>> +#include "pm7325.dtsi"
>> +#include "pm8350c.dtsi"
>> +#include "pmk8350.dtsi"
>> +#include "pmr735a.dtsi"

Thanks,
Satya Priya

  reply	other threads:[~2021-03-22 13:24 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-11 10:40 [PATCH] arm64: dts: qcom: sc7280: Add PMIC peripherals for SC7280 satya priya
2021-03-12 17:36 ` Bjorn Andersson
2021-03-22 13:18   ` skakit
2021-03-12 20:40 ` Matthias Kaehlcke
2021-03-22 13:20   ` skakit [this message]
2021-03-22 17:34     ` Matthias Kaehlcke
2021-03-25  5:20       ` skakit
2021-03-30 18:19         ` Matthias Kaehlcke
2021-03-12 20:47 ` Matthias Kaehlcke
2021-03-22 14:05   ` skakit

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=4dc784eb3c00a9805141148732476838@codeaurora.org \
    --to=skakit@codeaurora.org \
    --cc=agross@kernel.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=kgunda@codeaurora.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mka@chromium.org \
    --cc=robh+dt@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).