diff mbox series

[1/3] arm64: dts: qcom: sc7180: Add APSS watchdog node

Message ID 0101016ef3391ded-57772416-f32d-40e8-acb5-5dd1b6064f73-000000@us-west-2.amazonses.com (mailing list archive)
State Accepted
Commit 4722f95646de169ecda38d99b8abe78181fda0a8
Headers show
Series [1/3] arm64: dts: qcom: sc7180: Add APSS watchdog node | expand

Commit Message

Sai Prakash Ranjan Dec. 11, 2019, 4:30 a.m. UTC
Add APSS (Application Processor Subsystem) watchdog
DT node for SC7180 SoC.

Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
---
 arch/arm64/boot/dts/qcom/sc7180.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Doug Anderson Dec. 11, 2019, 7:25 p.m. UTC | #1
Sai,

On Tue, Dec 10, 2019 at 8:30 PM Sai Prakash Ranjan
<saiprakash.ranjan@codeaurora.org> wrote:
>
> Add APSS (Application Processor Subsystem) watchdog
> DT node for SC7180 SoC.
>
> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> ---
>  arch/arm64/boot/dts/qcom/sc7180.dtsi | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> index 666e9b92c7ad..a6773ad3738b 100644
> --- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
> @@ -1038,6 +1038,12 @@
>                         };
>                 };
>
> +               watchdog@17c10000 {
> +                       compatible = "qcom,apss-wdt-sc7180", "qcom,kpss-wdt";

If you haven't already done it (I couldn't find it), can you please
add this to "Documentation/devicetree/bindings/watchdog/qcom-wdt.txt"?
 Presumably at the same time it would be good to change the format of
that file to .yaml.


Unrelated to sc7180, but it also feels like something is awfully
screwy here in terms of the various Qualcomm device tree files
referring to watchdog timers.  It feels wrong, but perhaps you can
educate me on how it works and I'll see the light.  Specifically:

1. It seems like the same node is used for two things on other Qualcomm SoCs

If I grep the bindings for "qcom,kpss-timer" or "qcom,scss-timer", I
get two hits:

Documentation/devicetree/bindings/timer/qcom,msm-timer.txt
Documentation/devicetree/bindings/watchdog/qcom-wdt.txt

...and, in fact, there appear to be two drivers claiming compatibility here:

drivers/clocksource/timer-qcom.c
drivers/watchdog/qcom-wdt.c

That seems super odd to me.  Is that really right?  We have two
drivers probing against the same device tree nodes?  ...and that's OK?
 If so, why does only one of the bindings list the SoC-specific
bindings names?


2. The actual nodes look really wonky.  A few examples below:

2a) arch/arm/boot/dts/qcom-apq8064.dtsi:
compatible = "qcom,kpss-timer", "qcom,kpss-wdt-apq8064", "qcom,msm-timer";

...why is the SoC-specific compatible string in the middle?  The
SoC-specific one should be first.

2b) arch/arm/boot/dts/qcom-ipq4019.dtsi:
compatible = "qcom,kpss-wdt", "qcom,kpss-wdt-ipq4019";

...same question, but in this case there is no "msm-timer" at the end?

2c) arch/arm64/boot/dts/qcom/qcs404.dtsi
compatible = "qcom,kpss-wdt";

...no SoC-specific string at all?


Thanks!

-Doug
Sai Prakash Ranjan Dec. 13, 2019, 4:31 a.m. UTC | #2
Hi Doug,

On 2019-12-12 00:55, Doug Anderson wrote:
> If you haven't already done it (I couldn't find it), can you please
> add this to "Documentation/devicetree/bindings/watchdog/qcom-wdt.txt"?
>  Presumably at the same time it would be good to change the format of
> that file to .yaml.
> 

This was the copy paste mistake from sdm845, I will convert the wdog 
bindings
to yaml and add missing SoC specific compatible for SC7180, SDM845 and 
SM8150.

> 
> Unrelated to sc7180, but it also feels like something is awfully
> screwy here in terms of the various Qualcomm device tree files
> referring to watchdog timers.  It feels wrong, but perhaps you can
> educate me on how it works and I'll see the light.  Specifically:
> 
> 1. It seems like the same node is used for two things on other Qualcomm 
> SoCs
> 
> If I grep the bindings for "qcom,kpss-timer" or "qcom,scss-timer", I
> get two hits:
> 
> Documentation/devicetree/bindings/timer/qcom,msm-timer.txt
> Documentation/devicetree/bindings/watchdog/qcom-wdt.txt
> 
> ...and, in fact, there appear to be two drivers claiming compatibility 
> here:
> 
> drivers/clocksource/timer-qcom.c
> drivers/watchdog/qcom-wdt.c
> 
> That seems super odd to me.  Is that really right?  We have two
> drivers probing against the same device tree nodes?  ...and that's OK?
>  If so, why does only one of the bindings list the SoC-specific
> bindings names?
> 

This was before my time, but scratching my head and some internal docs
and git history reveals that watchdog was part of the timer block in
APQ8064, MSM8960. However in IPQ4019, watchdog was standalone and split
from timer block.

Below links gives us some more background:

https://groups.google.com/forum/#!topic/linux.kernel/UnDgqU8QgLU
https://patchwork.kernel.org/patch/5868261/

> 
> 2. The actual nodes look really wonky.  A few examples below:
> 
> 2a) arch/arm/boot/dts/qcom-apq8064.dtsi:
> compatible = "qcom,kpss-timer", "qcom,kpss-wdt-apq8064", 
> "qcom,msm-timer";
> 
> ...why is the SoC-specific compatible string in the middle?  The
> SoC-specific one should be first.

Yes, SoC specific compatible should come first, I guess they just didn't 
care when
it was merged.

> 
> 2b) arch/arm/boot/dts/qcom-ipq4019.dtsi:
> compatible = "qcom,kpss-wdt", "qcom,kpss-wdt-ipq4019";
> 
> ...same question, but in this case there is no "msm-timer" at the end?
> 

IPQ4019 had watchdog as standalone outside of timer block as explained 
above.

> 2c) arch/arm64/boot/dts/qcom/qcs404.dtsi
> compatible = "qcom,kpss-wdt";
> 
> ...no SoC-specific string at all?
> 

Needs a SoC specific compatible, I am going to add this in my coming 
patch.

Thanks,
Sai
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/qcom/sc7180.dtsi b/arch/arm64/boot/dts/qcom/sc7180.dtsi
index 666e9b92c7ad..a6773ad3738b 100644
--- a/arch/arm64/boot/dts/qcom/sc7180.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7180.dtsi
@@ -1038,6 +1038,12 @@ 
 			};
 		};
 
+		watchdog@17c10000 {
+			compatible = "qcom,apss-wdt-sc7180", "qcom,kpss-wdt";
+			reg = <0 0x17c10000 0 0x1000>;
+			clocks = <&sleep_clk>;
+		};
+
 		timer@17c20000{
 			#address-cells = <2>;
 			#size-cells = <2>;