Linux-remoteproc Archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Support single-PD in wcnss driver
@ 2025-02-06 19:56 Luca Weiss
  2025-02-06 19:56 ` [PATCH v2 1/2] dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms Luca Weiss
  2025-02-06 19:56 ` [PATCH v2 2/2] remoteproc: qcom_wcnss: Handle platforms with only single power domain Luca Weiss
  0 siblings, 2 replies; 4+ messages in thread
From: Luca Weiss @ 2025-02-06 19:56 UTC (permalink / raw)
  To: ~postmarketos/upstreaming, phone-devel, Bjorn Andersson,
	Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Stephan Gerhold, Matti Lehtimäki
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Luca Weiss

Both MSM8974 and MSM8226 only model CX as power domain, leaving MX & PX
as regulators. Add some patches to support this use case.

Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
---
Changes in v2:
- Narrow down dt-schema to only allow one of these three options:
    - cx regulator + mx regulator (still deprecated)
    - cx pd + mx regulator
    - cx pd + mx pd
- Link to v1: https://lore.kernel.org/r/20250129-wcnss-singlepd-v1-0-b01a6ba0b1bd@lucaweiss.eu

---
Matti Lehtimäki (2):
      dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms
      remoteproc: qcom_wcnss: Handle platforms with only single power domain

 .../bindings/remoteproc/qcom,wcnss-pil.yaml        | 45 +++++++++++++++++-----
 drivers/remoteproc/qcom_wcnss.c                    | 32 +++++++++++----
 2 files changed, 61 insertions(+), 16 deletions(-)
---
base-commit: 808eb958781e4ebb6e9c0962af2e856767e20f45
change-id: 20250129-wcnss-singlepd-f9e6854257ed

Best regards,
-- 
Luca Weiss <luca@lucaweiss.eu>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH v2 1/2] dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms
  2025-02-06 19:56 [PATCH v2 0/2] Support single-PD in wcnss driver Luca Weiss
@ 2025-02-06 19:56 ` Luca Weiss
  2025-02-12  7:19   ` Krzysztof Kozlowski
  2025-02-06 19:56 ` [PATCH v2 2/2] remoteproc: qcom_wcnss: Handle platforms with only single power domain Luca Weiss
  1 sibling, 1 reply; 4+ messages in thread
From: Luca Weiss @ 2025-02-06 19:56 UTC (permalink / raw)
  To: ~postmarketos/upstreaming, phone-devel, Bjorn Andersson,
	Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Stephan Gerhold, Matti Lehtimäki
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Luca Weiss

From: Matti Lehtimäki <matti.lehtimaki@gmail.com>

Support platforms such as MSM8226 and MSM8974 with only one power rail
(CX) modelled as power domain while MX and PX are regulators.

Signed-off-by: Matti Lehtimäki <matti.lehtimaki@gmail.com>
[luca: reword commit message, expand based on feedback from
 Stephan Gerhold]
Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
---
 .../bindings/remoteproc/qcom,wcnss-pil.yaml        | 45 +++++++++++++++++-----
 1 file changed, 36 insertions(+), 9 deletions(-)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.yaml
index 8e033b22d28cfa8203234f744b3b408e976e20c3..117fb4d0c4ad2a3fad3cfe5d49ec2223b59358b2 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,wcnss-pil.yaml
@@ -69,9 +69,11 @@ properties:
       CX regulator to be held on behalf of the booting of the WCNSS core.
 
   power-domains:
+    minItems: 1
     maxItems: 2
 
   power-domain-names:
+    minItems: 1
     items:
       - const: cx
       - const: mx
@@ -187,22 +189,43 @@ allOf:
               - qcom,pronto-v1-pil
               - qcom,pronto-v2-pil
     then:
-      properties:
-        vddmx-supply:
-          deprecated: true
-          description: Deprecated for qcom,pronto-v1/2-pil
-
-        vddcx-supply:
-          deprecated: true
-          description: Deprecated for qcom,pronto-v1/2-pil
-
+      # CX and MX must be present either as power domains or regulators
       oneOf:
+        # Both CX and MX represented as power domains
         - required:
             - power-domains
             - power-domain-names
+          properties:
+            power-domains:
+              minItems: 2
+            power-domain-names:
+              minItems: 2
+            vddmx-supply: false
+            vddcx-supply: false
+        # CX represented as power domain, MX as regulator
+        - required:
+            - power-domains
+            - power-domain-names
+            - vddmx-supply
+          properties:
+            power-domains:
+              maxItems: 1
+            power-domain-names:
+              maxItems: 1
+            vddcx-supply: false
+        # Both CX and MX represented as regulators
         - required:
             - vddmx-supply
             - vddcx-supply
+          properties:
+            power-domains: false
+            power-domain-names: false
+            vddmx-supply:
+              deprecated: true
+              description: Deprecated for qcom,pronto-v1/2-pil
+            vddcx-supply:
+              deprecated: true
+              description: Deprecated for qcom,pronto-v1/2-pil
 
   - if:
       properties:
@@ -212,6 +235,10 @@ allOf:
               - qcom,pronto-v3-pil
     then:
       properties:
+        power-domains:
+          minItems: 2
+        power-domain-names:
+          minItems: 2
         vddmx-supply: false
         vddcx-supply: false
 

-- 
2.48.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] remoteproc: qcom_wcnss: Handle platforms with only single power domain
  2025-02-06 19:56 [PATCH v2 0/2] Support single-PD in wcnss driver Luca Weiss
  2025-02-06 19:56 ` [PATCH v2 1/2] dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms Luca Weiss
@ 2025-02-06 19:56 ` Luca Weiss
  1 sibling, 0 replies; 4+ messages in thread
From: Luca Weiss @ 2025-02-06 19:56 UTC (permalink / raw)
  To: ~postmarketos/upstreaming, phone-devel, Bjorn Andersson,
	Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Stephan Gerhold, Matti Lehtimäki
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Luca Weiss

From: Matti Lehtimäki <matti.lehtimaki@gmail.com>

Both MSM8974 and MSM8226 have only CX as power domain with MX & PX being
handled as regulators. Handle this case by reodering pd_names to have CX
first, and handling that the driver core will already attach a single
power domain internally.

Signed-off-by: Matti Lehtimäki <matti.lehtimaki@gmail.com>
[luca: minor changes]
Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
---
 drivers/remoteproc/qcom_wcnss.c | 32 +++++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 7 deletions(-)

diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c
index 5b5664603eed293a1086a302564111d6203b17ca..143cc2fa8b65e4cf076cf29b41bb8939de5a74f0 100644
--- a/drivers/remoteproc/qcom_wcnss.c
+++ b/drivers/remoteproc/qcom_wcnss.c
@@ -117,10 +117,10 @@ static const struct wcnss_data pronto_v1_data = {
 	.pmu_offset = 0x1004,
 	.spare_offset = 0x1088,
 
-	.pd_names = { "mx", "cx" },
+	.pd_names = { "cx", "mx" },
 	.vregs = (struct wcnss_vreg_info[]) {
-		{ "vddmx", 950000, 1150000, 0 },
 		{ "vddcx", .super_turbo = true},
+		{ "vddmx", 950000, 1150000, 0 },
 		{ "vddpx", 1800000, 1800000, 0 },
 	},
 	.num_pd_vregs = 2,
@@ -131,10 +131,10 @@ static const struct wcnss_data pronto_v2_data = {
 	.pmu_offset = 0x1004,
 	.spare_offset = 0x1088,
 
-	.pd_names = { "mx", "cx" },
+	.pd_names = { "cx", "mx" },
 	.vregs = (struct wcnss_vreg_info[]) {
-		{ "vddmx", 1287500, 1287500, 0 },
 		{ "vddcx", .super_turbo = true },
+		{ "vddmx", 1287500, 1287500, 0 },
 		{ "vddpx", 1800000, 1800000, 0 },
 	},
 	.num_pd_vregs = 2,
@@ -397,8 +397,17 @@ static irqreturn_t wcnss_stop_ack_interrupt(int irq, void *dev)
 static int wcnss_init_pds(struct qcom_wcnss *wcnss,
 			  const char * const pd_names[WCNSS_MAX_PDS])
 {
+	struct device *dev = wcnss->dev;
 	int i, ret;
 
+	/* Handle single power domain */
+	if (dev->pm_domain) {
+		wcnss->pds[0] = dev;
+		wcnss->num_pds = 1;
+		pm_runtime_enable(dev);
+		return 0;
+	}
+
 	for (i = 0; i < WCNSS_MAX_PDS; i++) {
 		if (!pd_names[i])
 			break;
@@ -418,8 +427,15 @@ static int wcnss_init_pds(struct qcom_wcnss *wcnss,
 
 static void wcnss_release_pds(struct qcom_wcnss *wcnss)
 {
+	struct device *dev = wcnss->dev;
 	int i;
 
+	/* Handle single power domain */
+	if (wcnss->num_pds == 1 && dev->pm_domain) {
+		pm_runtime_disable(dev);
+		return;
+	}
+
 	for (i = 0; i < wcnss->num_pds; i++)
 		dev_pm_domain_detach(wcnss->pds[i], false);
 }
@@ -437,9 +453,11 @@ static int wcnss_init_regulators(struct qcom_wcnss *wcnss,
 	 * the regulators for the power domains. For old device trees we need to
 	 * reserve extra space to manage them through the regulator interface.
 	 */
-	if (wcnss->num_pds)
-		info += num_pd_vregs;
-	else
+	if (wcnss->num_pds) {
+		info += wcnss->num_pds;
+		/* Handle single power domain case */
+		num_vregs += num_pd_vregs - wcnss->num_pds;
+	} else
 		num_vregs += num_pd_vregs;
 
 	bulk = devm_kcalloc(wcnss->dev,

-- 
2.48.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms
  2025-02-06 19:56 ` [PATCH v2 1/2] dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms Luca Weiss
@ 2025-02-12  7:19   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 4+ messages in thread
From: Krzysztof Kozlowski @ 2025-02-12  7:19 UTC (permalink / raw)
  To: Luca Weiss
  Cc: ~postmarketos/upstreaming, phone-devel, Bjorn Andersson,
	Mathieu Poirier, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Stephan Gerhold, Matti Lehtimäki, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On Thu, Feb 06, 2025 at 08:56:47PM +0100, Luca Weiss wrote:
> From: Matti Lehtimäki <matti.lehtimaki@gmail.com>
> 
> Support platforms such as MSM8226 and MSM8974 with only one power rail
> (CX) modelled as power domain while MX and PX are regulators.
> 
> Signed-off-by: Matti Lehtimäki <matti.lehtimaki@gmail.com>
> [luca: reword commit message, expand based on feedback from
>  Stephan Gerhold]
> Signed-off-by: Luca Weiss <luca@lucaweiss.eu>
> ---
>  .../bindings/remoteproc/qcom,wcnss-pil.yaml        | 45 +++++++++++++++++-----
>  1 file changed, 36 insertions(+), 9 deletions(-)

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-02-12  7:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-06 19:56 [PATCH v2 0/2] Support single-PD in wcnss driver Luca Weiss
2025-02-06 19:56 ` [PATCH v2 1/2] dt-bindings: remoteproc: qcom,wcnss-pil: Add support for single power-domain platforms Luca Weiss
2025-02-12  7:19   ` Krzysztof Kozlowski
2025-02-06 19:56 ` [PATCH v2 2/2] remoteproc: qcom_wcnss: Handle platforms with only single power domain Luca Weiss

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 read-only IMAP folder(s) and NNTP newsgroup(s).