2022-09-20 16:00:03

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH v4 0/3] ARM/hwlock: qcom: switch TCSR mutex to MMIO (msm8974)

Hi,

Remaining patches from v3:
https://lore.kernel.org/all/[email protected]/

Not tested on hardware. Please kindly provide tests.

Changes since v3
================
1. Drop applied patches - remaining is only msm8974.
2. Add syscon to TCSR mutex regs, after talk with Bjorn.
3. New patch: bindings.

Changes since v2
================
1. Rebase on current MFD changes.
2. Add Rb tag.
3. Split MFD patch to separate patchset:
https://lore.kernel.org/linux-devicetree/[email protected]/T/#u

Changes since v1
================
1. Use existing qcom,tcsr-msm8974 compatible.
2. Fix few other TCSR syscon compatibles (new patches: ipq6018, msm8953,
qcs404, msm8996).
3. New patch: dt-bindings: mfd: qcom,tcsr: drop simple-mfd from IPQ6018
4. New patch: dt-bindings: mfd: qcom,tcsr: add QCS404

Dependencies
============
1. DT bindings and driver patches can go via hwlock. DTS via Bjorn/Qualcomm.

2. The last five DTS commits (ARM and arm64) named "switch TCSR mutex to MMIO"
depend on driver support. The changes are not bisectable, just like
previously such changes were not bisectable:
https://lore.kernel.org/all/[email protected]/
Therefore these changes could wait for next release.

Best regards,
Krzysztof

Krzysztof Kozlowski (3):
dt-bindings: hwlock: qcom-hwspinlock: add syscon to MSM8974
ARM: dts: qcom: msm8974: add missing TCSR syscon compatible
ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO

.../bindings/hwlock/qcom-hwspinlock.yaml | 6 +++++-
arch/arm/boot/dts/qcom-msm8974.dtsi | 16 +++++-----------
2 files changed, 10 insertions(+), 12 deletions(-)

--
2.34.1


2022-09-20 16:08:05

by Krzysztof Kozlowski

[permalink] [raw]
Subject: [PATCH v4 3/3] ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO

The TCSR mutex bindings allow device to be described only with address
space (so it uses MMIO, not syscon regmap). This seems reasonable, as
TCSR mutex is actually a dedicated IO address space, and it also fixes
DT schema checks:

qcom-msm8974-sony-xperia-rhine-amami.dtb: tcsr-mutex: 'reg' is a required property
qcom-msm8974-sony-xperia-rhine-amami.dtb: tcsr-mutex: 'syscon' does not match any of the regexes: 'pinctrl-[0-9]+'

Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
arch/arm/boot/dts/qcom-msm8974.dtsi | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index a4e12daf3eeb..7bc19b5375f6 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -1194,7 +1194,7 @@ remoteproc_mss: remoteproc@fc880000 {
resets = <&gcc GCC_MSS_RESTART>;
reset-names = "mss_restart";

- qcom,halt-regs = <&tcsr_mutex_block 0x1180 0x1200 0x1280>;
+ qcom,halt-regs = <&tcsr_mutex 0x1180 0x1200 0x1280>;

qcom,smem-states = <&modem_smp2p_out 0>;
qcom,smem-state-names = "stop";
@@ -1233,9 +1233,10 @@ smd-edge {
};
};

- tcsr_mutex_block: syscon@fd484000 {
- compatible = "syscon";
+ tcsr_mutex: hwlock@fd484000 {
+ compatible = "qcom,msm8974-tcsr-mutex", "qcom,tcsr-mutex", "syscon";
reg = <0xfd484000 0x2000>;
+ #hwlock-cells = <1>;
};

tcsr: syscon@fd4a0000 {
@@ -1719,13 +1720,6 @@ reboot-mode {
};
};

- tcsr_mutex: tcsr-mutex {
- compatible = "qcom,tcsr-mutex";
- syscon = <&tcsr_mutex_block 0 0x80>;
-
- #hwlock-cells = <1>;
- };
-
thermal-zones {
cpu0-thermal {
polling-delay-passive = <250>;
--
2.34.1

2022-09-21 19:21:14

by Luca Weiss

[permalink] [raw]
Subject: Re: [PATCH v4 0/3] ARM/hwlock: qcom: switch TCSR mutex to MMIO (msm8974)

Hi Krzysztof,

On Dienstag, 20. September 2022 17:04:11 CEST Krzysztof Kozlowski wrote:
> Hi,
>
> Remaining patches from v3:
> https://lore.kernel.org/all/20220909092035.223915-1-krzysztof.kozlowski@lina
> ro.org/
>
> Not tested on hardware. Please kindly provide tests.

With these patches on top of 5.19.9 everything incl. modem still seems to work
fine on msm8974pro-fairphone-fp2:

(2/3 & 3/3 from this series)
ARM: dts: qcom: msm8974: add missing TCSR syscon compatible
ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO

(picked from linux-next)
hwspinlock: qcom: Add support for mmio usage to sfpb-mutex
hwspinlock: qcom: correct MMIO max register for newer SoCs
hwspinlock: qcom: add support for MMIO on older SoCs

Tested-by: Luca Weiss <[email protected]> # fairphone-fp2

Regards
Luca

>
> Changes since v3
> ================
> 1. Drop applied patches - remaining is only msm8974.
> 2. Add syscon to TCSR mutex regs, after talk with Bjorn.
> 3. New patch: bindings.
>
> Changes since v2
> ================
> 1. Rebase on current MFD changes.
> 2. Add Rb tag.
> 3. Split MFD patch to separate patchset:
> https://lore.kernel.org/linux-devicetree/20220909091056.128949-1-krzysztof.k
> [email protected]/T/#u
>
> Changes since v1
> ================
> 1. Use existing qcom,tcsr-msm8974 compatible.
> 2. Fix few other TCSR syscon compatibles (new patches: ipq6018, msm8953,
> qcs404, msm8996).
> 3. New patch: dt-bindings: mfd: qcom,tcsr: drop simple-mfd from IPQ6018
> 4. New patch: dt-bindings: mfd: qcom,tcsr: add QCS404
>
> Dependencies
> ============
> 1. DT bindings and driver patches can go via hwlock. DTS via Bjorn/Qualcomm.
>
> 2. The last five DTS commits (ARM and arm64) named "switch TCSR mutex to
> MMIO" depend on driver support. The changes are not bisectable, just like
> previously such changes were not bisectable:
>
> https://lore.kernel.org/all/20200622075956.171058-5-bjorn.andersson@linaro.
> org/ Therefore these changes could wait for next release.
>
> Best regards,
> Krzysztof
>
> Krzysztof Kozlowski (3):
> dt-bindings: hwlock: qcom-hwspinlock: add syscon to MSM8974
> ARM: dts: qcom: msm8974: add missing TCSR syscon compatible
> ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO
>
> .../bindings/hwlock/qcom-hwspinlock.yaml | 6 +++++-
> arch/arm/boot/dts/qcom-msm8974.dtsi | 16 +++++-----------
> 2 files changed, 10 insertions(+), 12 deletions(-)




2022-09-21 19:40:21

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v4 0/3] ARM/hwlock: qcom: switch TCSR mutex to MMIO (msm8974)

On 21/09/2022 21:09, Luca Weiss wrote:
> Hi Krzysztof,
>
> On Dienstag, 20. September 2022 17:04:11 CEST Krzysztof Kozlowski wrote:
>> Hi,
>>
>> Remaining patches from v3:
>> https://lore.kernel.org/all/20220909092035.223915-1-krzysztof.kozlowski@lina
>> ro.org/
>>
>> Not tested on hardware. Please kindly provide tests.
>
> With these patches on top of 5.19.9 everything incl. modem still seems to work
> fine on msm8974pro-fairphone-fp2:
>
> (2/3 & 3/3 from this series)
> ARM: dts: qcom: msm8974: add missing TCSR syscon compatible
> ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO
>
> (picked from linux-next)
> hwspinlock: qcom: Add support for mmio usage to sfpb-mutex
> hwspinlock: qcom: correct MMIO max register for newer SoCs
> hwspinlock: qcom: add support for MMIO on older SoCs
>
> Tested-by: Luca Weiss <[email protected]> # fairphone-fp2
>

Thanks!

Best regards,
Krzysztof

2022-09-21 21:28:04

by Alexey Minnekhanov

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO

Hi,

On 20.09.2022 18:04, Krzysztof Kozlowski wrote:

> - tcsr_mutex: tcsr-mutex {
> - compatible = "qcom,tcsr-mutex";
> - syscon = <&tcsr_mutex_block 0 0x80>;

I'm looking and don't understand where does this information go, is it
lost in the conversion? I mean those "0 0x80" parameters to syscon
reference.

Looking at the code of qcom_hwspinlock driver those seem to be read by
qcom_hwspinlock_probe_syscon() [1] using of_property_read_u32_index()
as base and stride values and those would be 0 nad 0x80 respectively as
is now.

But without syscon reference, in mmio mode, code goes through
qcom_hwspinlock_probe_mmio() few lines below, which says

/* All modern platform has offset 0 and stride of 4k */
*offset = 0;
*stride = 0x1000;

So after this conversion stride value will jump from 0x80 to 0x1000,
which does not seem to be 1 to 1 identical conversion to me, unless I am
missing something.

Perhaps msm8974 does not fall into category of "All modern platform"?


[1]
https://elixir.bootlin.com/linux/latest/source/drivers/hwspinlock/qcom_hwspinlock.c#L73

--
Regards
Alexey Minnekhanov

2022-09-22 08:03:37

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH v4 3/3] ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO

On 21/09/2022 22:55, Alexey Minnekhanov wrote:
> Hi,
>
> On 20.09.2022 18:04, Krzysztof Kozlowski wrote:
>
>> - tcsr_mutex: tcsr-mutex {
>> - compatible = "qcom,tcsr-mutex";
>> - syscon = <&tcsr_mutex_block 0 0x80>;
>
> I'm looking and don't understand where does this information go, is it
> lost in the conversion? I mean those "0 0x80" parameters to syscon
> reference.

This compatible is using:
of_msm8226_tcsr_mutex
.stride = 0x80,

Best regards,
Krzysztof

2022-10-18 03:23:14

by Bjorn Andersson

[permalink] [raw]
Subject: Re: (subset) [PATCH v4 0/3] ARM/hwlock: qcom: switch TCSR mutex to MMIO (msm8974)

On Tue, 20 Sep 2022 17:04:11 +0200, Krzysztof Kozlowski wrote:
> Remaining patches from v3:
> https://lore.kernel.org/all/[email protected]/
>
> Not tested on hardware. Please kindly provide tests.
>
> Changes since v3
> ================
> 1. Drop applied patches - remaining is only msm8974.
> 2. Add syscon to TCSR mutex regs, after talk with Bjorn.
> 3. New patch: bindings.
>
> [...]

Applied, thanks!

[2/3] ARM: dts: qcom: msm8974: add missing TCSR syscon compatible
commit: 118fa7657c29c5308268fe813c1fe6c763e56da3
[3/3] ARM: dts: qcom: msm8974: switch TCSR mutex to MMIO
commit: 65eed754c9bf211c81007cb9a87526669274742f

Best regards,
--
Bjorn Andersson <[email protected]>