2021-09-16 18:02:03

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH v7 00/13] Use qmp_send to update co-processor load state

The power domains exposed by the AOSS QMP driver control the load state
resources linked to modem, adsp, cdsp remoteprocs. These are used to
notify the Always on Subsystem (AOSS) that a particular co-processor is
up/down. AOSS uses this information to wait for the co-processors to
suspend before starting its sleep sequence. These co-processors enter
low-power modes independent to that of the application processor and
the load state resources linked to them are expected to remain unaltered
across system suspend/resume cycles. To achieve this behavior let's stop
modeling them as power-domains and replace them with generic qmp_send
interface instead.

https://lore.kernel.org/lkml/20200913034603.GV3715@yoga/
Previous discussion on dropping power-domain support from AOSS QMP driver

Depends on:
qmp_send: https://patchwork.kernel.org/project/linux-arm-msm/cover/[email protected]/

V7:
* Set "qcom,qmp" property to false for unsupported devices (patch 2). [Rob]
* Let's not miss adding qcom,qmp to ADSP/CDSP on SDM845 SoC.

V6:
* Updated commit message to explain binding breakage (patch 2). [Stephen]

V5:
* Fixup power-domain count (patch 2). [Matthias]
* Add WARN_ON on truncation, remove redundant initialization
code, use dev_err_probe (patch 4). [Stephen]
* Use devm_kstrdup, handle kstrdup failure due to
no memory and set qmp to NULL when not available
(patch 4). [Bjorn]

V4:
* Rebase patch 1 due to the aoss-qmp yaml conversion (Dropping Rb).
* Commit message change and sc8180x co-processor addition
to patch 2. [Rob/Bjorn]
* Drop unused pdev and kfree the load state string in q6v5_deinit
/probe path for patch 4. [Matthias]
* Replaced "binding" with "property" across the series. [Matthias]
* Commit message change and drop incorrect cleanup on cooling
device probe failures. [Matthias]

V3:
* Misc. documentation fixes [patch 2]:
- Reduce power-domain maxItems due to load_state pd removal
- Combine compatibles where possible with the load_state pd removal
- Fixup the qcom,qmp ref to phandle type

V2:
* load_state is currently broken on mainline so be safely dropped
without side-effects.
* Rebased on top of qmp_send v3 series.
* Dropped R-b from Stephen and Rob on patch 3 due to the yaml
conversion.
* New patch [12] to drop unused aoss-qmp header.
* Commit message update [patch 1] [Rob]
* Reorder the series [Stephen]

Sibi Sankar (13):
dt-bindings: soc: qcom: aoss: Drop the load state power-domain
dt-bindings: remoteproc: qcom: pas: Add QMP property
dt-bindings: remoteproc: qcom: Add QMP property
remoteproc: qcom: q6v5: Use qmp_send to update co-processor load state
arm64: dts: qcom: sc7180: Use QMP property to control load state
arm64: dts: qcom: sc7280: Use QMP property to control load state
arm64: dts: qcom: sdm845: Use QMP property to control load state
arm64: dts: qcom: sm8150: Use QMP property to control load state
arm64: dts: qcom: sm8250: Use QMP property to control load state
arm64: dts: qcom: sm8350: Use QMP property to control load state
soc: qcom: aoss: Drop power domain support
dt-bindings: msm/dp: Remove aoss-qmp header
dt-bindings: soc: qcom: aoss: Delete unused power-domain definitions

.../bindings/display/msm/dp-controller.yaml | 1 -
.../devicetree/bindings/remoteproc/qcom,adsp.yaml | 54 +++++-----
.../devicetree/bindings/remoteproc/qcom,q6v5.txt | 7 +-
.../bindings/soc/qcom/qcom,aoss-qmp.yaml | 11 +-
arch/arm64/boot/dts/qcom/sc7180.dtsi | 9 +-
arch/arm64/boot/dts/qcom/sc7280.dtsi | 2 -
arch/arm64/boot/dts/qcom/sdm845.dtsi | 12 ++-
arch/arm64/boot/dts/qcom/sm8150.dtsi | 28 ++---
arch/arm64/boot/dts/qcom/sm8250.dtsi | 22 ++--
arch/arm64/boot/dts/qcom/sm8350.dtsi | 30 +++---
drivers/remoteproc/qcom_q6v5.c | 57 ++++++++++-
drivers/remoteproc/qcom_q6v5.h | 7 +-
drivers/remoteproc/qcom_q6v5_adsp.c | 7 +-
drivers/remoteproc/qcom_q6v5_mss.c | 44 ++------
drivers/remoteproc/qcom_q6v5_pas.c | 113 ++++++++-------------
drivers/remoteproc/qcom_q6v5_wcss.c | 4 +-
drivers/soc/qcom/qcom_aoss.c | 107 -------------------
include/dt-bindings/power/qcom-aoss-qmp.h | 14 ---
18 files changed, 206 insertions(+), 323 deletions(-)
delete mode 100644 include/dt-bindings/power/qcom-aoss-qmp.h

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project


2021-09-16 18:02:12

by Sibi Sankar

[permalink] [raw]
Subject: [PATCH v7 10/13] arm64: dts: qcom: sm8350: Use QMP property to control load state

Use the Qualcomm Mailbox Protocol (QMP) property to control the load
state resources on SM8350 SoCs and drop deprecated power-domains exposed
by AOSS QMP node.

Signed-off-by: Sibi Sankar <[email protected]>
Reviewed-by: Stephen Boyd <[email protected]>
---
arch/arm64/boot/dts/qcom/sm8350.dtsi | 30 ++++++++++++++++--------------
1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi
index e91cd8a5e535..6c83cd52a279 100644
--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
@@ -8,7 +8,6 @@
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,sm8350.h>
#include <dt-bindings/mailbox/qcom-ipcc.h>
-#include <dt-bindings/power/qcom-aoss-qmp.h>
#include <dt-bindings/power/qcom-rpmpd.h>
#include <dt-bindings/soc/qcom,rpmh-rsc.h>
#include <dt-bindings/thermal/thermal.h>
@@ -726,15 +725,16 @@
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "xo";

- power-domains = <&aoss_qmp AOSS_QMP_LS_MODEM>,
- <&rpmhpd 0>,
+ power-domains = <&rpmhpd 0>,
<&rpmhpd 12>;
- power-domain-names = "load_state", "cx", "mss";
+ power-domain-names = "cx", "mss";

interconnects = <&mc_virt MASTER_LLCC &mc_virt SLAVE_EBI1>;

memory-region = <&pil_modem_mem>;

+ qcom,qmp = <&aoss_qmp>;
+
qcom,smem-states = <&smp2p_modem_out 0>;
qcom,smem-state-names = "stop";

@@ -794,7 +794,6 @@
mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;

#clock-cells = <0>;
- #power-domain-cells = <1>;
};

spmi_bus: spmi@c440000 {
@@ -1107,13 +1106,14 @@
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "xo";

- power-domains = <&aoss_qmp AOSS_QMP_LS_SLPI>,
- <&rpmhpd 4>,
+ power-domains = <&rpmhpd 4>,
<&rpmhpd 5>;
- power-domain-names = "load_state", "lcx", "lmx";
+ power-domain-names = "lcx", "lmx";

memory-region = <&pil_slpi_mem>;

+ qcom,qmp = <&aoss_qmp>;
+
qcom,smem-states = <&smp2p_slpi_out 0>;
qcom,smem-state-names = "stop";

@@ -1147,15 +1147,16 @@
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "xo";

- power-domains = <&aoss_qmp AOSS_QMP_LS_CDSP>,
- <&rpmhpd 0>,
+ power-domains = <&rpmhpd 0>,
<&rpmhpd 10>;
- power-domain-names = "load_state", "cx", "mxc";
+ power-domain-names = "cx", "mxc";

interconnects = <&compute_noc MASTER_CDSP_PROC &mc_virt SLAVE_EBI1>;

memory-region = <&pil_cdsp_mem>;

+ qcom,qmp = <&aoss_qmp>;
+
qcom,smem-states = <&smp2p_cdsp_out 0>;
qcom,smem-state-names = "stop";

@@ -1381,13 +1382,14 @@
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "xo";

- power-domains = <&aoss_qmp AOSS_QMP_LS_LPASS>,
- <&rpmhpd 4>,
+ power-domains = <&rpmhpd 4>,
<&rpmhpd 5>;
- power-domain-names = "load_state", "lcx", "lmx";
+ power-domain-names = "lcx", "lmx";

memory-region = <&pil_adsp_mem>;

+ qcom,qmp = <&aoss_qmp>;
+
qcom,smem-states = <&smp2p_adsp_out 0>;
qcom,smem-state-names = "stop";

--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

2021-09-27 20:56:52

by Bjorn Andersson

[permalink] [raw]
Subject: Re: (subset) [PATCH v7 10/13] arm64: dts: qcom: sm8350: Use QMP property to control load state

On Thu, 16 Sep 2021 19:29:27 +0530, Sibi Sankar wrote:
> Use the Qualcomm Mailbox Protocol (QMP) property to control the load
> state resources on SM8350 SoCs and drop deprecated power-domains exposed
> by AOSS QMP node.
>
>

Applied, thanks!

[10/13] arm64: dts: qcom: sm8350: Use QMP property to control load state
commit: 6b7cb2d23791c541dff2f152d9c5c2f9da065289

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