linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS
@ 2025-12-28 14:21 Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607 Barnabás Czémán
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

This patch series add support for MDM9607/MSM8917/MSM8937/MSM8940 mss.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
Barnabás Czémán (7):
      dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607
      dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8917
      remoteproc: qcom_q6v5_mss: Add MSM8917
      dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8937
      remoteproc: qcom_q6v5_mss: Add MSM8937
      dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8940
      remoteproc: qcom_q6v5_mss: Add MSM8940

Stephan Gerhold (1):
      remoteproc: qcom_q6v5_mss: Add MDM9607

 .../bindings/remoteproc/qcom,msm8916-mss-pil.yaml  |   4 +
 drivers/remoteproc/qcom_q6v5_mss.c                 | 199 ++++++++++++++++++++-
 2 files changed, 195 insertions(+), 8 deletions(-)
---
base-commit: cc3aa43b44bdb43dfbac0fcb51c56594a11338a8
change-id: 20251228-mss-1fa61b7092b5

Best regards,
-- 
Barnabás Czémán <barnabas.czeman@mainlining.org>


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

* [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-29 10:58   ` Stephan Gerhold
  2025-12-28 14:21 ` [PATCH 2/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add the compatible for MSS as found on the MDM9607 platform.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
index c179b560572b..b59d6fe091a5 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
@@ -17,6 +17,7 @@ properties:
   compatible:
     oneOf:
       - enum:
+          - qcom,mdm9607-mss-pil
           - qcom,msm8226-mss-pil
           - qcom,msm8909-mss-pil
           - qcom,msm8916-mss-pil

-- 
2.52.0


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

* [PATCH 2/8] remoteproc: qcom_q6v5_mss: Add MDM9607
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607 Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 3/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8917 Barnabás Czémán
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

From: Stephan Gerhold <stephan@gerhold.net>

Add support for MDM9607 MSS it have different ACC settings
and it needs mitigation for inrush current issue.

Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
[Reword the commit, add has_ext_bhs_reg]
Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 drivers/remoteproc/qcom_q6v5_mss.c | 70 ++++++++++++++++++++++++++++++++++----
 1 file changed, 63 insertions(+), 7 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 91940977ca89..ffafbe501a05 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -124,6 +124,7 @@
 #define QDSP6v56_CLAMP_QMC_MEM		BIT(22)
 #define QDSP6SS_XO_CBCR		0x0038
 #define QDSP6SS_ACC_OVERRIDE_VAL		0x20
+#define QDSP6SS_ACC_OVERRIDE_VAL_9607	0x80800000
 #define QDSP6v55_BHS_EN_REST_ACK	BIT(0)
 
 /* QDSP6v65 parameters */
@@ -254,6 +255,7 @@ struct q6v5 {
 };
 
 enum {
+	MSS_MDM9607,
 	MSS_MSM8226,
 	MSS_MSM8909,
 	MSS_MSM8916,
@@ -745,15 +747,19 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 			return ret;
 		}
 		goto pbl_wait;
-	} else if (qproc->version == MSS_MSM8909 ||
+	} else if (qproc->version == MSS_MDM9607 ||
+		   qproc->version == MSS_MSM8909 ||
 		   qproc->version == MSS_MSM8953 ||
 		   qproc->version == MSS_MSM8996 ||
 		   qproc->version == MSS_MSM8998 ||
 		   qproc->version == MSS_SDM660) {
 
-		if (qproc->version != MSS_MSM8909 &&
-		    qproc->version != MSS_MSM8953)
-			/* Override the ACC value if required */
+		/* Override the ACC value if required */
+		if (qproc->version == MSS_MDM9607)
+			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
+			       qproc->reg_base + QDSP6SS_STRAP_ACC);
+		else if (qproc->version != MSS_MSM8909 &&
+			 qproc->version != MSS_MSM8953)
 			writel(QDSP6SS_ACC_OVERRIDE_VAL,
 			       qproc->reg_base + QDSP6SS_STRAP_ACC);
 
@@ -798,7 +804,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 		writel(val, qproc->reg_base + QDSP6SS_PWR_CTL_REG);
 
 		if (qproc->version != MSS_MSM8909) {
-			int mem_pwr_ctl;
+			int mem_pwr_ctl, reverse = 0;
 
 			/* Deassert QDSP6 compiler memory clamp */
 			val = readl(qproc->reg_base + QDSP6SS_PWR_CTL_REG);
@@ -810,17 +816,25 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 			writel(val, qproc->reg_base + QDSP6SS_PWR_CTL_REG);
 
 			/* Turn on L1, L2, ETB and JU memories 1 at a time */
-			if (qproc->version == MSS_MSM8953 ||
+			if (qproc->version == MSS_MDM9607 ||
+			    qproc->version == MSS_MSM8953 ||
 			    qproc->version == MSS_MSM8996) {
 				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
 				i = 19;
+
+				/*
+				 * Set first 5 bits in reverse to avoid
+				 * "inrush current" issues.
+				 */
+				if (qproc->version == MSS_MDM9607)
+					reverse = 6;
 			} else {
 				/* MSS_MSM8998, MSS_SDM660 */
 				mem_pwr_ctl = QDSP6V6SS_MEM_PWR_CTL;
 				i = 28;
 			}
 			val = readl(qproc->reg_base + mem_pwr_ctl);
-			for (; i >= 0; i--) {
+			for (; i >= reverse; i--) {
 				val |= BIT(i);
 				writel(val, qproc->reg_base + mem_pwr_ctl);
 				/*
@@ -831,6 +845,12 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 				val |= readl(qproc->reg_base + mem_pwr_ctl);
 				udelay(1);
 			}
+			for (i = 0; i < reverse; i++) {
+				val |= BIT(i);
+				writel(val, qproc->reg_base + mem_pwr_ctl);
+				val |= readl(qproc->reg_base + mem_pwr_ctl);
+				udelay(1);
+			}
 		} else {
 			/* Turn on memories */
 			val = readl(qproc->reg_base + QDSP6SS_PWR_CTL_REG);
@@ -2402,6 +2422,41 @@ static const struct rproc_hexagon_res msm8996_mss = {
 	.version = MSS_MSM8996,
 };
 
+static const struct rproc_hexagon_res mdm9607_mss = {
+	.hexagon_mba_image = "mba.mbn",
+	.proxy_supply = (struct qcom_mss_reg_res[]) {
+		{
+			.supply = "pll",
+			.uA = 100000,
+		},
+		{}
+	},
+	.proxy_clk_names = (char*[]){
+		"xo",
+		NULL
+	},
+	.active_clk_names = (char*[]){
+		"iface",
+		"bus",
+		"mem",
+		NULL
+	},
+	.proxy_pd_names = (char*[]){
+		"mx",
+		"cx",
+		NULL
+	},
+	.need_mem_protection = false,
+	.has_alt_reset = false,
+	.has_mba_logs = false,
+	.has_spare_reg = false,
+	.has_qaccept_regs = false,
+	.has_ext_bhs_reg = false,
+	.has_ext_cntl_regs = false,
+	.has_vq6 = false,
+	.version = MSS_MDM9607,
+};
+
 static const struct rproc_hexagon_res msm8909_mss = {
 	.hexagon_mba_image = "mba.mbn",
 	.proxy_supply = (struct qcom_mss_reg_res[]) {
@@ -2658,6 +2713,7 @@ static const struct rproc_hexagon_res msm8926_mss = {
 
 static const struct of_device_id q6v5_of_match[] = {
 	{ .compatible = "qcom,q6v5-pil", .data = &msm8916_mss},
+	{ .compatible = "qcom,mdm9607-mss-pil", .data = &mdm9607_mss},
 	{ .compatible = "qcom,msm8226-mss-pil", .data = &msm8226_mss},
 	{ .compatible = "qcom,msm8909-mss-pil", .data = &msm8909_mss},
 	{ .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss},

-- 
2.52.0


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

* [PATCH 3/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8917
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607 Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 2/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 4/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add the compatible for MSS as found on the MSM8917 platform.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
index b59d6fe091a5..7ba813774597 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
@@ -21,6 +21,7 @@ properties:
           - qcom,msm8226-mss-pil
           - qcom,msm8909-mss-pil
           - qcom,msm8916-mss-pil
+          - qcom,msm8917-mss-pil
           - qcom,msm8926-mss-pil
           - qcom,msm8953-mss-pil
           - qcom,msm8974-mss-pil

-- 
2.52.0


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

* [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
                   ` (2 preceding siblings ...)
  2025-12-28 14:21 ` [PATCH 3/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8917 Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-29 11:08   ` Stephan Gerhold
  2025-12-28 14:21 ` [PATCH 5/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8937 Barnabás Czémán
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add support for MSM8917 MSS it is similar for MDM9607 MSS
only difference is the mss power domain.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 drivers/remoteproc/qcom_q6v5_mss.c | 46 ++++++++++++++++++++++++++++++++++++--
 1 file changed, 44 insertions(+), 2 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index ffafbe501a05..2579558fb567 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -259,6 +259,7 @@ enum {
 	MSS_MSM8226,
 	MSS_MSM8909,
 	MSS_MSM8916,
+	MSS_MSM8917,
 	MSS_MSM8926,
 	MSS_MSM8953,
 	MSS_MSM8974,
@@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 		goto pbl_wait;
 	} else if (qproc->version == MSS_MDM9607 ||
 		   qproc->version == MSS_MSM8909 ||
+		   qproc->version == MSS_MSM8917 ||
 		   qproc->version == MSS_MSM8953 ||
 		   qproc->version == MSS_MSM8996 ||
 		   qproc->version == MSS_MSM8998 ||
 		   qproc->version == MSS_SDM660) {
 
 		/* Override the ACC value if required */
-		if (qproc->version == MSS_MDM9607)
+		if (qproc->version == MSS_MDM9607 ||
+		    qproc->version == MSS_MSM8917)
 			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
 			       qproc->reg_base + QDSP6SS_STRAP_ACC);
 		else if (qproc->version != MSS_MSM8909 &&
@@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 
 			/* Turn on L1, L2, ETB and JU memories 1 at a time */
 			if (qproc->version == MSS_MDM9607 ||
+			    qproc->version == MSS_MSM8917 ||
 			    qproc->version == MSS_MSM8953 ||
 			    qproc->version == MSS_MSM8996) {
 				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
@@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 				 * Set first 5 bits in reverse to avoid
 				 * "inrush current" issues.
 				 */
-				if (qproc->version == MSS_MDM9607)
+				if (qproc->version == MSS_MDM9607 ||
+				    qproc->version == MSS_MSM8917)
 					reverse = 6;
 			} else {
 				/* MSS_MSM8998, MSS_SDM660 */
@@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res msm8916_mss = {
 	.version = MSS_MSM8916,
 };
 
+static const struct rproc_hexagon_res msm8917_mss = {
+	.hexagon_mba_image = "mba.mbn",
+	.proxy_supply = (struct qcom_mss_reg_res[]) {
+		{
+			.supply = "pll",
+			.uA = 100000,
+		},
+		{}
+	},
+	.proxy_clk_names = (char*[]){
+		"xo",
+		NULL
+	},
+	.active_clk_names = (char*[]){
+		"iface",
+		"bus",
+		"mem",
+		NULL
+	},
+	.proxy_pd_names = (char*[]) {
+		"cx",
+		"mx",
+		"mss",
+		NULL
+	},
+	.need_mem_protection = false,
+	.has_alt_reset = false,
+	.has_mba_logs = false,
+	.has_spare_reg = false,
+	.has_qaccept_regs = false,
+	.has_ext_bhs_reg = false,
+	.has_ext_cntl_regs = false,
+	.has_vq6 = false,
+	.version = MSS_MSM8917,
+};
+
 static const struct rproc_hexagon_res msm8953_mss = {
 	.hexagon_mba_image = "mba.mbn",
 	.proxy_supply = (struct qcom_mss_reg_res[]) {
@@ -2717,6 +2758,7 @@ static const struct of_device_id q6v5_of_match[] = {
 	{ .compatible = "qcom,msm8226-mss-pil", .data = &msm8226_mss},
 	{ .compatible = "qcom,msm8909-mss-pil", .data = &msm8909_mss},
 	{ .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss},
+	{ .compatible = "qcom,msm8917-mss-pil", .data = &msm8917_mss},
 	{ .compatible = "qcom,msm8926-mss-pil", .data = &msm8926_mss},
 	{ .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss},
 	{ .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss},

-- 
2.52.0


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

* [PATCH 5/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8937
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
                   ` (3 preceding siblings ...)
  2025-12-28 14:21 ` [PATCH 4/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 6/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add the compatible for MSS as found on the MSM8937 platform.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
index 7ba813774597..093231abf44b 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
@@ -23,6 +23,7 @@ properties:
           - qcom,msm8916-mss-pil
           - qcom,msm8917-mss-pil
           - qcom,msm8926-mss-pil
+          - qcom,msm8937-mss-pil
           - qcom,msm8953-mss-pil
           - qcom,msm8974-mss-pil
 

-- 
2.52.0


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

* [PATCH 6/8] remoteproc: qcom_q6v5_mss: Add MSM8937
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
                   ` (4 preceding siblings ...)
  2025-12-28 14:21 ` [PATCH 5/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8937 Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-29 11:13   ` Stephan Gerhold
  2025-12-28 14:21 ` [PATCH 7/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8940 Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 8/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
  7 siblings, 1 reply; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add support for MSM8937 MSS it similar to MSM8917 MSS.
It differs primarily in that TZ needs to be informed of
the modem start address and pas_id.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 drivers/remoteproc/qcom_q6v5_mss.c | 49 +++++++++++++++++++++++++++++++++++---
 1 file changed, 46 insertions(+), 3 deletions(-)

diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 2579558fb567..2ffcea7dbc79 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -261,6 +261,7 @@ enum {
 	MSS_MSM8916,
 	MSS_MSM8917,
 	MSS_MSM8926,
+	MSS_MSM8937,
 	MSS_MSM8953,
 	MSS_MSM8974,
 	MSS_MSM8996,
@@ -751,6 +752,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 	} else if (qproc->version == MSS_MDM9607 ||
 		   qproc->version == MSS_MSM8909 ||
 		   qproc->version == MSS_MSM8917 ||
+		   qproc->version == MSS_MSM8937 ||
 		   qproc->version == MSS_MSM8953 ||
 		   qproc->version == MSS_MSM8996 ||
 		   qproc->version == MSS_MSM8998 ||
@@ -758,7 +760,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 
 		/* Override the ACC value if required */
 		if (qproc->version == MSS_MDM9607 ||
-		    qproc->version == MSS_MSM8917)
+		    qproc->version == MSS_MSM8917 ||
+		    qproc->version == MSS_MSM8937)
 			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
 			       qproc->reg_base + QDSP6SS_STRAP_ACC);
 		else if (qproc->version != MSS_MSM8909 &&
@@ -821,6 +824,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 			/* Turn on L1, L2, ETB and JU memories 1 at a time */
 			if (qproc->version == MSS_MDM9607 ||
 			    qproc->version == MSS_MSM8917 ||
+			    qproc->version == MSS_MSM8937 ||
 			    qproc->version == MSS_MSM8953 ||
 			    qproc->version == MSS_MSM8996) {
 				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
@@ -831,7 +835,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 				 * "inrush current" issues.
 				 */
 				if (qproc->version == MSS_MDM9607 ||
-				    qproc->version == MSS_MSM8917)
+				    qproc->version == MSS_MSM8917 ||
+				    qproc->version == MSS_MSM8937)
 					reverse = 6;
 			} else {
 				/* MSS_MSM8998, MSS_SDM660 */
@@ -1466,7 +1471,8 @@ static int q6v5_mpss_load(struct q6v5 *qproc)
 			max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K);
 	}
 
-	if (qproc->version == MSS_MSM8953) {
+	if (qproc->version == MSS_MSM8937 ||
+	    qproc->version == MSS_MSM8953) {
 		ret = qcom_scm_pas_mem_setup(MPSS_PAS_ID, qproc->mpss_phys, qproc->mpss_size);
 		if (ret) {
 			dev_err(qproc->dev,
@@ -2579,6 +2585,42 @@ static const struct rproc_hexagon_res msm8917_mss = {
 	.version = MSS_MSM8917,
 };
 
+static const struct rproc_hexagon_res msm8937_mss = {
+	.hexagon_mba_image = "mba.mbn",
+	.proxy_supply = (struct qcom_mss_reg_res[]) {
+		{
+			.supply = "pll",
+			.uA = 100000,
+		},
+		{}
+	},
+	.proxy_clk_names = (char*[]){
+		"xo",
+		NULL
+	},
+	.active_clk_names = (char*[]){
+		"iface",
+		"bus",
+		"mem",
+		NULL
+	},
+	.proxy_pd_names = (char*[]) {
+		"cx",
+		"mx",
+		"mss",
+		NULL
+	},
+	.need_mem_protection = false,
+	.has_alt_reset = false,
+	.has_mba_logs = false,
+	.has_spare_reg = false,
+	.has_qaccept_regs = false,
+	.has_ext_bhs_reg = false,
+	.has_ext_cntl_regs = false,
+	.has_vq6 = false,
+	.version = MSS_MSM8937,
+};
+
 static const struct rproc_hexagon_res msm8953_mss = {
 	.hexagon_mba_image = "mba.mbn",
 	.proxy_supply = (struct qcom_mss_reg_res[]) {
@@ -2760,6 +2802,7 @@ static const struct of_device_id q6v5_of_match[] = {
 	{ .compatible = "qcom,msm8916-mss-pil", .data = &msm8916_mss},
 	{ .compatible = "qcom,msm8917-mss-pil", .data = &msm8917_mss},
 	{ .compatible = "qcom,msm8926-mss-pil", .data = &msm8926_mss},
+	{ .compatible = "qcom,msm8937-mss-pil", .data = &msm8937_mss},
 	{ .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss},
 	{ .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss},
 	{ .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_mss},

-- 
2.52.0


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

* [PATCH 7/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8940
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
                   ` (5 preceding siblings ...)
  2025-12-28 14:21 ` [PATCH 6/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  2025-12-28 14:21 ` [PATCH 8/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
  7 siblings, 0 replies; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add the compatible for MSS as found on the MSM8940 platform.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
index 093231abf44b..e8e5030f60be 100644
--- a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
@@ -24,6 +24,7 @@ properties:
           - qcom,msm8917-mss-pil
           - qcom,msm8926-mss-pil
           - qcom,msm8937-mss-pil
+          - qcom,msm8940-mss-pil
           - qcom,msm8953-mss-pil
           - qcom,msm8974-mss-pil
 

-- 
2.52.0


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

* [PATCH 8/8] remoteproc: qcom_q6v5_mss: Add MSM8940
  2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
                   ` (6 preceding siblings ...)
  2025-12-28 14:21 ` [PATCH 7/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8940 Barnabás Czémán
@ 2025-12-28 14:21 ` Barnabás Czémán
  7 siblings, 0 replies; 20+ messages in thread
From: Barnabás Czémán @ 2025-12-28 14:21 UTC (permalink / raw)
  To: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold
  Cc: linux-arm-msm, linux-remoteproc, devicetree, linux-kernel,
	Barnabás Czémán

Add support for MSM8940 MSS it is similar for MSM8937 MSS
without inrush current mitigation.

Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
---
 drivers/remoteproc/qcom_q6v5_mss.c | 44 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
index 2ffcea7dbc79..27f4bd507a39 100644
--- a/drivers/remoteproc/qcom_q6v5_mss.c
+++ b/drivers/remoteproc/qcom_q6v5_mss.c
@@ -262,6 +262,7 @@ enum {
 	MSS_MSM8917,
 	MSS_MSM8926,
 	MSS_MSM8937,
+	MSS_MSM8940,
 	MSS_MSM8953,
 	MSS_MSM8974,
 	MSS_MSM8996,
@@ -753,6 +754,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 		   qproc->version == MSS_MSM8909 ||
 		   qproc->version == MSS_MSM8917 ||
 		   qproc->version == MSS_MSM8937 ||
+		   qproc->version == MSS_MSM8940 ||
 		   qproc->version == MSS_MSM8953 ||
 		   qproc->version == MSS_MSM8996 ||
 		   qproc->version == MSS_MSM8998 ||
@@ -761,7 +763,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 		/* Override the ACC value if required */
 		if (qproc->version == MSS_MDM9607 ||
 		    qproc->version == MSS_MSM8917 ||
-		    qproc->version == MSS_MSM8937)
+		    qproc->version == MSS_MSM8937 ||
+		    qproc->version == MSS_MSM8940)
 			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
 			       qproc->reg_base + QDSP6SS_STRAP_ACC);
 		else if (qproc->version != MSS_MSM8909 &&
@@ -825,6 +828,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
 			if (qproc->version == MSS_MDM9607 ||
 			    qproc->version == MSS_MSM8917 ||
 			    qproc->version == MSS_MSM8937 ||
+			    qproc->version == MSS_MSM8940 ||
 			    qproc->version == MSS_MSM8953 ||
 			    qproc->version == MSS_MSM8996) {
 				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
@@ -1472,6 +1476,7 @@ static int q6v5_mpss_load(struct q6v5 *qproc)
 	}
 
 	if (qproc->version == MSS_MSM8937 ||
+	    qproc->version == MSS_MSM8940 ||
 	    qproc->version == MSS_MSM8953) {
 		ret = qcom_scm_pas_mem_setup(MPSS_PAS_ID, qproc->mpss_phys, qproc->mpss_size);
 		if (ret) {
@@ -2621,6 +2626,42 @@ static const struct rproc_hexagon_res msm8937_mss = {
 	.version = MSS_MSM8937,
 };
 
+static const struct rproc_hexagon_res msm8940_mss = {
+	.hexagon_mba_image = "mba.mbn",
+	.proxy_supply = (struct qcom_mss_reg_res[]) {
+		{
+			.supply = "pll",
+			.uA = 100000,
+		},
+		{}
+	},
+	.proxy_clk_names = (char*[]){
+		"xo",
+		NULL
+	},
+	.active_clk_names = (char*[]){
+		"iface",
+		"bus",
+		"mem",
+		NULL
+	},
+	.proxy_pd_names = (char*[]) {
+		"cx",
+		"mx",
+		"mss",
+		NULL
+	},
+	.need_mem_protection = false,
+	.has_alt_reset = false,
+	.has_mba_logs = false,
+	.has_spare_reg = false,
+	.has_qaccept_regs = false,
+	.has_ext_bhs_reg = false,
+	.has_ext_cntl_regs = false,
+	.has_vq6 = false,
+	.version = MSS_MSM8940,
+};
+
 static const struct rproc_hexagon_res msm8953_mss = {
 	.hexagon_mba_image = "mba.mbn",
 	.proxy_supply = (struct qcom_mss_reg_res[]) {
@@ -2803,6 +2844,7 @@ static const struct of_device_id q6v5_of_match[] = {
 	{ .compatible = "qcom,msm8917-mss-pil", .data = &msm8917_mss},
 	{ .compatible = "qcom,msm8926-mss-pil", .data = &msm8926_mss},
 	{ .compatible = "qcom,msm8937-mss-pil", .data = &msm8937_mss},
+	{ .compatible = "qcom,msm8940-mss-pil", .data = &msm8940_mss},
 	{ .compatible = "qcom,msm8953-mss-pil", .data = &msm8953_mss},
 	{ .compatible = "qcom,msm8974-mss-pil", .data = &msm8974_mss},
 	{ .compatible = "qcom,msm8996-mss-pil", .data = &msm8996_mss},

-- 
2.52.0


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

* Re: [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607
  2025-12-28 14:21 ` [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607 Barnabás Czémán
@ 2025-12-29 10:58   ` Stephan Gerhold
  0 siblings, 0 replies; 20+ messages in thread
From: Stephan Gerhold @ 2025-12-29 10:58 UTC (permalink / raw)
  To: Barnabás Czémán
  Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On Sun, Dec 28, 2025 at 03:21:51PM +0100, Barnabás Czémán wrote:
> Add the compatible for MSS as found on the MDM9607 platform.
> 
> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
> ---
>  Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
> index c179b560572b..b59d6fe091a5 100644
> --- a/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
> +++ b/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml
> @@ -17,6 +17,7 @@ properties:
>    compatible:
>      oneOf:
>        - enum:
> +          - qcom,mdm9607-mss-pil
>            - qcom,msm8226-mss-pil
>            - qcom,msm8909-mss-pil
>            - qcom,msm8916-mss-pil
> 

You need to add the new compatible to some of the conditionals below as
well. In this case probably everywhere where qcom,msm8909-mss-pil is.

Thanks,
Stephan

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-28 14:21 ` [PATCH 4/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
@ 2025-12-29 11:08   ` Stephan Gerhold
  2025-12-29 12:33     ` barnabas.czeman
  0 siblings, 1 reply; 20+ messages in thread
From: Stephan Gerhold @ 2025-12-29 11:08 UTC (permalink / raw)
  To: Barnabás Czémán
  Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
> Add support for MSM8917 MSS it is similar for MDM9607 MSS
> only difference is the mss power domain.
> 
> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
> ---
>  drivers/remoteproc/qcom_q6v5_mss.c | 46 ++++++++++++++++++++++++++++++++++++--
>  1 file changed, 44 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
> index ffafbe501a05..2579558fb567 100644
> --- a/drivers/remoteproc/qcom_q6v5_mss.c
> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
> @@ -259,6 +259,7 @@ enum {
>  	MSS_MSM8226,
>  	MSS_MSM8909,
>  	MSS_MSM8916,
> +	MSS_MSM8917,
>  	MSS_MSM8926,
>  	MSS_MSM8953,
>  	MSS_MSM8974,
> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  		goto pbl_wait;
>  	} else if (qproc->version == MSS_MDM9607 ||
>  		   qproc->version == MSS_MSM8909 ||
> +		   qproc->version == MSS_MSM8917 ||
>  		   qproc->version == MSS_MSM8953 ||
>  		   qproc->version == MSS_MSM8996 ||
>  		   qproc->version == MSS_MSM8998 ||
>  		   qproc->version == MSS_SDM660) {
>  
>  		/* Override the ACC value if required */
> -		if (qproc->version == MSS_MDM9607)
> +		if (qproc->version == MSS_MDM9607 ||
> +		    qproc->version == MSS_MSM8917)
>  			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>  			       qproc->reg_base + QDSP6SS_STRAP_ACC);
>  		else if (qproc->version != MSS_MSM8909 &&
> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  
>  			/* Turn on L1, L2, ETB and JU memories 1 at a time */
>  			if (qproc->version == MSS_MDM9607 ||
> +			    qproc->version == MSS_MSM8917 ||
>  			    qproc->version == MSS_MSM8953 ||
>  			    qproc->version == MSS_MSM8996) {
>  				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  				 * Set first 5 bits in reverse to avoid
>  				 * "inrush current" issues.
>  				 */
> -				if (qproc->version == MSS_MDM9607)
> +				if (qproc->version == MSS_MDM9607 ||
> +				    qproc->version == MSS_MSM8917)
>  					reverse = 6;
>  			} else {
>  				/* MSS_MSM8998, MSS_SDM660 */
> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res msm8916_mss = {
>  	.version = MSS_MSM8916,
>  };
>  
> +static const struct rproc_hexagon_res msm8917_mss = {
> +	.hexagon_mba_image = "mba.mbn",
> +	.proxy_supply = (struct qcom_mss_reg_res[]) {
> +		{
> +			.supply = "pll",
> +			.uA = 100000,
> +		},
> +		{}
> +	},
> +	.proxy_clk_names = (char*[]){
> +		"xo",
> +		NULL
> +	},
> +	.active_clk_names = (char*[]){
> +		"iface",
> +		"bus",
> +		"mem",
> +		NULL
> +	},
> +	.proxy_pd_names = (char*[]) {
> +		"cx",
> +		"mx",
> +		"mss",

Are you sure mss/pm8937_s1 also works as a power domain? It seems to be
a plain regulator downstream (similar to msm8226/msm8974).

Same thing applies to MSM8953 as well though and there we seem to have
decided to model it as a power domain ...

> +		NULL
> +	},
> +	.need_mem_protection = false,
> +	.has_alt_reset = false,
> +	.has_mba_logs = false,
> +	.has_spare_reg = false,
> +	.has_qaccept_regs = false,
> +	.has_ext_bhs_reg = false,
> +	.has_ext_cntl_regs = false,
> +	.has_vq6 = false,
> +	.version = MSS_MSM8917,

You could set MSS_MDM9607 here to drop the extra diff above (but not
sure if that would be clearer).

Thanks,
Stephan

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

* Re: [PATCH 6/8] remoteproc: qcom_q6v5_mss: Add MSM8937
  2025-12-28 14:21 ` [PATCH 6/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
@ 2025-12-29 11:13   ` Stephan Gerhold
  0 siblings, 0 replies; 20+ messages in thread
From: Stephan Gerhold @ 2025-12-29 11:13 UTC (permalink / raw)
  To: Barnabás Czémán
  Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On Sun, Dec 28, 2025 at 03:21:56PM +0100, Barnabás Czémán wrote:
> Add support for MSM8937 MSS it similar to MSM8917 MSS.
> It differs primarily in that TZ needs to be informed of
> the modem start address and pas_id.
> 
> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
> ---
>  drivers/remoteproc/qcom_q6v5_mss.c | 49 +++++++++++++++++++++++++++++++++++---
>  1 file changed, 46 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
> index 2579558fb567..2ffcea7dbc79 100644
> --- a/drivers/remoteproc/qcom_q6v5_mss.c
> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
> @@ -261,6 +261,7 @@ enum {
>  	MSS_MSM8916,
>  	MSS_MSM8917,
>  	MSS_MSM8926,
> +	MSS_MSM8937,
>  	MSS_MSM8953,
>  	MSS_MSM8974,
>  	MSS_MSM8996,
> @@ -751,6 +752,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  	} else if (qproc->version == MSS_MDM9607 ||
>  		   qproc->version == MSS_MSM8909 ||
>  		   qproc->version == MSS_MSM8917 ||
> +		   qproc->version == MSS_MSM8937 ||
>  		   qproc->version == MSS_MSM8953 ||
>  		   qproc->version == MSS_MSM8996 ||
>  		   qproc->version == MSS_MSM8998 ||
> @@ -758,7 +760,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  
>  		/* Override the ACC value if required */
>  		if (qproc->version == MSS_MDM9607 ||
> -		    qproc->version == MSS_MSM8917)
> +		    qproc->version == MSS_MSM8917 ||
> +		    qproc->version == MSS_MSM8937)
>  			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>  			       qproc->reg_base + QDSP6SS_STRAP_ACC);
>  		else if (qproc->version != MSS_MSM8909 &&
> @@ -821,6 +824,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  			/* Turn on L1, L2, ETB and JU memories 1 at a time */
>  			if (qproc->version == MSS_MDM9607 ||
>  			    qproc->version == MSS_MSM8917 ||
> +			    qproc->version == MSS_MSM8937 ||
>  			    qproc->version == MSS_MSM8953 ||
>  			    qproc->version == MSS_MSM8996) {
>  				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
> @@ -831,7 +835,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>  				 * "inrush current" issues.
>  				 */
>  				if (qproc->version == MSS_MDM9607 ||
> -				    qproc->version == MSS_MSM8917)
> +				    qproc->version == MSS_MSM8917 ||
> +				    qproc->version == MSS_MSM8937)
>  					reverse = 6;
>  			} else {
>  				/* MSS_MSM8998, MSS_SDM660 */
> @@ -1466,7 +1471,8 @@ static int q6v5_mpss_load(struct q6v5 *qproc)
>  			max_addr = ALIGN(phdr->p_paddr + phdr->p_memsz, SZ_4K);
>  	}
>  
> -	if (qproc->version == MSS_MSM8953) {
> +	if (qproc->version == MSS_MSM8937 ||
> +	    qproc->version == MSS_MSM8953) {
>  		ret = qcom_scm_pas_mem_setup(MPSS_PAS_ID, qproc->mpss_phys, qproc->mpss_size);
>  		if (ret) {
>  			dev_err(qproc->dev,

I think for consistency it would be cleaner if this was a flag like
"need_mem_protection" (i.e. something like "need_pas_mem_setup"). Then
you could reuse the actual reset sequence from MSS_MDM9607 similar to
MSM8917.

Thanks,
Stephan

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-29 11:08   ` Stephan Gerhold
@ 2025-12-29 12:33     ` barnabas.czeman
  2025-12-29 12:40       ` Konrad Dybcio
  0 siblings, 1 reply; 20+ messages in thread
From: barnabas.czeman @ 2025-12-29 12:33 UTC (permalink / raw)
  To: Stephan Gerhold
  Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 2025-12-29 12:08, Stephan Gerhold wrote:
> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>> only difference is the mss power domain.
>> 
>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>> ---
>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 
>> ++++++++++++++++++++++++++++++++++++--
>>  1 file changed, 44 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c 
>> b/drivers/remoteproc/qcom_q6v5_mss.c
>> index ffafbe501a05..2579558fb567 100644
>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>> @@ -259,6 +259,7 @@ enum {
>>  	MSS_MSM8226,
>>  	MSS_MSM8909,
>>  	MSS_MSM8916,
>> +	MSS_MSM8917,
>>  	MSS_MSM8926,
>>  	MSS_MSM8953,
>>  	MSS_MSM8974,
>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>  		goto pbl_wait;
>>  	} else if (qproc->version == MSS_MDM9607 ||
>>  		   qproc->version == MSS_MSM8909 ||
>> +		   qproc->version == MSS_MSM8917 ||
>>  		   qproc->version == MSS_MSM8953 ||
>>  		   qproc->version == MSS_MSM8996 ||
>>  		   qproc->version == MSS_MSM8998 ||
>>  		   qproc->version == MSS_SDM660) {
>> 
>>  		/* Override the ACC value if required */
>> -		if (qproc->version == MSS_MDM9607)
>> +		if (qproc->version == MSS_MDM9607 ||
>> +		    qproc->version == MSS_MSM8917)
>>  			writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>  			       qproc->reg_base + QDSP6SS_STRAP_ACC);
>>  		else if (qproc->version != MSS_MSM8909 &&
>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>> 
>>  			/* Turn on L1, L2, ETB and JU memories 1 at a time */
>>  			if (qproc->version == MSS_MDM9607 ||
>> +			    qproc->version == MSS_MSM8917 ||
>>  			    qproc->version == MSS_MSM8953 ||
>>  			    qproc->version == MSS_MSM8996) {
>>  				mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>  				 * Set first 5 bits in reverse to avoid
>>  				 * "inrush current" issues.
>>  				 */
>> -				if (qproc->version == MSS_MDM9607)
>> +				if (qproc->version == MSS_MDM9607 ||
>> +				    qproc->version == MSS_MSM8917)
>>  					reverse = 6;
>>  			} else {
>>  				/* MSS_MSM8998, MSS_SDM660 */
>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res 
>> msm8916_mss = {
>>  	.version = MSS_MSM8916,
>>  };
>> 
>> +static const struct rproc_hexagon_res msm8917_mss = {
>> +	.hexagon_mba_image = "mba.mbn",
>> +	.proxy_supply = (struct qcom_mss_reg_res[]) {
>> +		{
>> +			.supply = "pll",
>> +			.uA = 100000,
>> +		},
>> +		{}
>> +	},
>> +	.proxy_clk_names = (char*[]){
>> +		"xo",
>> +		NULL
>> +	},
>> +	.active_clk_names = (char*[]){
>> +		"iface",
>> +		"bus",
>> +		"mem",
>> +		NULL
>> +	},
>> +	.proxy_pd_names = (char*[]) {
>> +		"cx",
>> +		"mx",
>> +		"mss",
> 
> Are you sure mss/pm8937_s1 also works as a power domain? It seems to be
> a plain regulator downstream (similar to msm8226/msm8974).
> 
> Same thing applies to MSM8953 as well though and there we seem to have
> decided to model it as a power domain ...
They have this at downstream, i guess this is why handled as a power 
domain.
vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
> 
>> +		NULL
>> +	},
>> +	.need_mem_protection = false,
>> +	.has_alt_reset = false,
>> +	.has_mba_logs = false,
>> +	.has_spare_reg = false,
>> +	.has_qaccept_regs = false,
>> +	.has_ext_bhs_reg = false,
>> +	.has_ext_cntl_regs = false,
>> +	.has_vq6 = false,
>> +	.version = MSS_MSM8917,
> 
> You could set MSS_MDM9607 here to drop the extra diff above (but not
> sure if that would be clearer).
> 
> Thanks,
> Stephan

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-29 12:33     ` barnabas.czeman
@ 2025-12-29 12:40       ` Konrad Dybcio
  2025-12-29 12:51         ` barnabas.czeman
  0 siblings, 1 reply; 20+ messages in thread
From: Konrad Dybcio @ 2025-12-29 12:40 UTC (permalink / raw)
  To: barnabas.czeman, Stephan Gerhold
  Cc: Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
> On 2025-12-29 12:08, Stephan Gerhold wrote:
>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>> only difference is the mss power domain.
>>>
>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>> ---
>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 ++++++++++++++++++++++++++++++++++++--
>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
>>> index ffafbe501a05..2579558fb567 100644
>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>> @@ -259,6 +259,7 @@ enum {
>>>      MSS_MSM8226,
>>>      MSS_MSM8909,
>>>      MSS_MSM8916,
>>> +    MSS_MSM8917,
>>>      MSS_MSM8926,
>>>      MSS_MSM8953,
>>>      MSS_MSM8974,
>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>          goto pbl_wait;
>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>             qproc->version == MSS_MSM8909 ||
>>> +           qproc->version == MSS_MSM8917 ||
>>>             qproc->version == MSS_MSM8953 ||
>>>             qproc->version == MSS_MSM8996 ||
>>>             qproc->version == MSS_MSM8998 ||
>>>             qproc->version == MSS_SDM660) {
>>>
>>>          /* Override the ACC value if required */
>>> -        if (qproc->version == MSS_MDM9607)
>>> +        if (qproc->version == MSS_MDM9607 ||
>>> +            qproc->version == MSS_MSM8917)
>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>          else if (qproc->version != MSS_MSM8909 &&
>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>
>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time */
>>>              if (qproc->version == MSS_MDM9607 ||
>>> +                qproc->version == MSS_MSM8917 ||
>>>                  qproc->version == MSS_MSM8953 ||
>>>                  qproc->version == MSS_MSM8996) {
>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>                   * Set first 5 bits in reverse to avoid
>>>                   * "inrush current" issues.
>>>                   */
>>> -                if (qproc->version == MSS_MDM9607)
>>> +                if (qproc->version == MSS_MDM9607 ||
>>> +                    qproc->version == MSS_MSM8917)
>>>                      reverse = 6;
>>>              } else {
>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res msm8916_mss = {
>>>      .version = MSS_MSM8916,
>>>  };
>>>
>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>> +    .hexagon_mba_image = "mba.mbn",
>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>> +        {
>>> +            .supply = "pll",
>>> +            .uA = 100000,
>>> +        },
>>> +        {}
>>> +    },
>>> +    .proxy_clk_names = (char*[]){
>>> +        "xo",
>>> +        NULL
>>> +    },
>>> +    .active_clk_names = (char*[]){
>>> +        "iface",
>>> +        "bus",
>>> +        "mem",
>>> +        NULL
>>> +    },
>>> +    .proxy_pd_names = (char*[]) {
>>> +        "cx",
>>> +        "mx",
>>> +        "mss",
>>
>> Are you sure mss/pm8937_s1 also works as a power domain? It seems to be
>> a plain regulator downstream (similar to msm8226/msm8974).
>>
>> Same thing applies to MSM8953 as well though and there we seem to have
>> decided to model it as a power domain ...
> They have this at downstream, i guess this is why handled as a power domain.
> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;

It seems to be just a normal regulator on both 8917 and 8953

https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi

https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi

Konrad

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-29 12:40       ` Konrad Dybcio
@ 2025-12-29 12:51         ` barnabas.czeman
  2025-12-29 12:59           ` barnabas.czeman
  0 siblings, 1 reply; 20+ messages in thread
From: barnabas.czeman @ 2025-12-29 12:51 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Stephan Gerhold, Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 2025-12-29 13:40, Konrad Dybcio wrote:
> On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
>> On 2025-12-29 12:08, Stephan Gerhold wrote:
>>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>>> only difference is the mss power domain.
>>>> 
>>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>>> ---
>>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 
>>>> ++++++++++++++++++++++++++++++++++++--
>>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>> 
>>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c 
>>>> b/drivers/remoteproc/qcom_q6v5_mss.c
>>>> index ffafbe501a05..2579558fb567 100644
>>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>>> @@ -259,6 +259,7 @@ enum {
>>>>      MSS_MSM8226,
>>>>      MSS_MSM8909,
>>>>      MSS_MSM8916,
>>>> +    MSS_MSM8917,
>>>>      MSS_MSM8926,
>>>>      MSS_MSM8953,
>>>>      MSS_MSM8974,
>>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>          goto pbl_wait;
>>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>>             qproc->version == MSS_MSM8909 ||
>>>> +           qproc->version == MSS_MSM8917 ||
>>>>             qproc->version == MSS_MSM8953 ||
>>>>             qproc->version == MSS_MSM8996 ||
>>>>             qproc->version == MSS_MSM8998 ||
>>>>             qproc->version == MSS_SDM660) {
>>>> 
>>>>          /* Override the ACC value if required */
>>>> -        if (qproc->version == MSS_MDM9607)
>>>> +        if (qproc->version == MSS_MDM9607 ||
>>>> +            qproc->version == MSS_MSM8917)
>>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>>          else if (qproc->version != MSS_MSM8909 &&
>>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>> 
>>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time */
>>>>              if (qproc->version == MSS_MDM9607 ||
>>>> +                qproc->version == MSS_MSM8917 ||
>>>>                  qproc->version == MSS_MSM8953 ||
>>>>                  qproc->version == MSS_MSM8996) {
>>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>                   * Set first 5 bits in reverse to avoid
>>>>                   * "inrush current" issues.
>>>>                   */
>>>> -                if (qproc->version == MSS_MDM9607)
>>>> +                if (qproc->version == MSS_MDM9607 ||
>>>> +                    qproc->version == MSS_MSM8917)
>>>>                      reverse = 6;
>>>>              } else {
>>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res 
>>>> msm8916_mss = {
>>>>      .version = MSS_MSM8916,
>>>>  };
>>>> 
>>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>>> +    .hexagon_mba_image = "mba.mbn",
>>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>>> +        {
>>>> +            .supply = "pll",
>>>> +            .uA = 100000,
>>>> +        },
>>>> +        {}
>>>> +    },
>>>> +    .proxy_clk_names = (char*[]){
>>>> +        "xo",
>>>> +        NULL
>>>> +    },
>>>> +    .active_clk_names = (char*[]){
>>>> +        "iface",
>>>> +        "bus",
>>>> +        "mem",
>>>> +        NULL
>>>> +    },
>>>> +    .proxy_pd_names = (char*[]) {
>>>> +        "cx",
>>>> +        "mx",
>>>> +        "mss",
>>> 
>>> Are you sure mss/pm8937_s1 also works as a power domain? It seems to 
>>> be
>>> a plain regulator downstream (similar to msm8226/msm8974).
>>> 
>>> Same thing applies to MSM8953 as well though and there we seem to 
>>> have
>>> decided to model it as a power domain ...
>> They have this at downstream, i guess this is why handled as a power 
>> domain.
>> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
> 
> It seems to be just a normal regulator on both 8917 and 8953
> 
> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi
> 
> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi
> 
> Konrad
It is different between 3.18 and 4.9, 3.18 seems simpler and easier to 
use it as regulator i will change it
https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8917.dtsi#L1375
https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c32-05500-89xx.0/arch/arm/boot/dts/qcom/msm8917.dtsi#L1655

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-29 12:51         ` barnabas.czeman
@ 2025-12-29 12:59           ` barnabas.czeman
  2025-12-29 13:07             ` Konrad Dybcio
  0 siblings, 1 reply; 20+ messages in thread
From: barnabas.czeman @ 2025-12-29 12:59 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Stephan Gerhold, Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 2025-12-29 13:51, barnabas.czeman@mainlining.org wrote:
> On 2025-12-29 13:40, Konrad Dybcio wrote:
>> On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
>>> On 2025-12-29 12:08, Stephan Gerhold wrote:
>>>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>>>> only difference is the mss power domain.
>>>>> 
>>>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>>>> ---
>>>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 
>>>>> ++++++++++++++++++++++++++++++++++++--
>>>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>>> 
>>>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c 
>>>>> b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>> index ffafbe501a05..2579558fb567 100644
>>>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>> @@ -259,6 +259,7 @@ enum {
>>>>>      MSS_MSM8226,
>>>>>      MSS_MSM8909,
>>>>>      MSS_MSM8916,
>>>>> +    MSS_MSM8917,
>>>>>      MSS_MSM8926,
>>>>>      MSS_MSM8953,
>>>>>      MSS_MSM8974,
>>>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>          goto pbl_wait;
>>>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>>>             qproc->version == MSS_MSM8909 ||
>>>>> +           qproc->version == MSS_MSM8917 ||
>>>>>             qproc->version == MSS_MSM8953 ||
>>>>>             qproc->version == MSS_MSM8996 ||
>>>>>             qproc->version == MSS_MSM8998 ||
>>>>>             qproc->version == MSS_SDM660) {
>>>>> 
>>>>>          /* Override the ACC value if required */
>>>>> -        if (qproc->version == MSS_MDM9607)
>>>>> +        if (qproc->version == MSS_MDM9607 ||
>>>>> +            qproc->version == MSS_MSM8917)
>>>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>>>          else if (qproc->version != MSS_MSM8909 &&
>>>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>> 
>>>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time */
>>>>>              if (qproc->version == MSS_MDM9607 ||
>>>>> +                qproc->version == MSS_MSM8917 ||
>>>>>                  qproc->version == MSS_MSM8953 ||
>>>>>                  qproc->version == MSS_MSM8996) {
>>>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>                   * Set first 5 bits in reverse to avoid
>>>>>                   * "inrush current" issues.
>>>>>                   */
>>>>> -                if (qproc->version == MSS_MDM9607)
>>>>> +                if (qproc->version == MSS_MDM9607 ||
>>>>> +                    qproc->version == MSS_MSM8917)
>>>>>                      reverse = 6;
>>>>>              } else {
>>>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res 
>>>>> msm8916_mss = {
>>>>>      .version = MSS_MSM8916,
>>>>>  };
>>>>> 
>>>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>>>> +    .hexagon_mba_image = "mba.mbn",
>>>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>>>> +        {
>>>>> +            .supply = "pll",
>>>>> +            .uA = 100000,
>>>>> +        },
>>>>> +        {}
>>>>> +    },
>>>>> +    .proxy_clk_names = (char*[]){
>>>>> +        "xo",
>>>>> +        NULL
>>>>> +    },
>>>>> +    .active_clk_names = (char*[]){
>>>>> +        "iface",
>>>>> +        "bus",
>>>>> +        "mem",
>>>>> +        NULL
>>>>> +    },
>>>>> +    .proxy_pd_names = (char*[]) {
>>>>> +        "cx",
>>>>> +        "mx",
>>>>> +        "mss",
>>>> 
>>>> Are you sure mss/pm8937_s1 also works as a power domain? It seems to 
>>>> be
>>>> a plain regulator downstream (similar to msm8226/msm8974).
>>>> 
>>>> Same thing applies to MSM8953 as well though and there we seem to 
>>>> have
>>>> decided to model it as a power domain ...
>>> They have this at downstream, i guess this is why handled as a power 
>>> domain.
>>> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
>> 
>> It seems to be just a normal regulator on both 8917 and 8953
>> 
>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi
>> 
>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi
>> 
>> Konrad
> It is different between 3.18 and 4.9, 3.18 seems simpler and easier to 
> use it as regulator i will change it
> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8917.dtsi#L1375
> https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c32-05500-89xx.0/arch/arm/boot/dts/qcom/msm8917.dtsi#L1655
Only question is left what about SDM439 and SDM632? They were introduced 
at 4.9 maybe that is why it was modified both are inheriting
MSS bindings from 8953 and 8937.

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-29 12:59           ` barnabas.czeman
@ 2025-12-29 13:07             ` Konrad Dybcio
  2025-12-30  3:25               ` barnabas.czeman
  0 siblings, 1 reply; 20+ messages in thread
From: Konrad Dybcio @ 2025-12-29 13:07 UTC (permalink / raw)
  To: barnabas.czeman
  Cc: Stephan Gerhold, Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 12/29/25 1:59 PM, barnabas.czeman@mainlining.org wrote:
> On 2025-12-29 13:51, barnabas.czeman@mainlining.org wrote:
>> On 2025-12-29 13:40, Konrad Dybcio wrote:
>>> On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
>>>> On 2025-12-29 12:08, Stephan Gerhold wrote:
>>>>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>>>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>>>>> only difference is the mss power domain.
>>>>>>
>>>>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>>>>> ---
>>>>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 ++++++++++++++++++++++++++++++++++++--
>>>>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>> index ffafbe501a05..2579558fb567 100644
>>>>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>> @@ -259,6 +259,7 @@ enum {
>>>>>>      MSS_MSM8226,
>>>>>>      MSS_MSM8909,
>>>>>>      MSS_MSM8916,
>>>>>> +    MSS_MSM8917,
>>>>>>      MSS_MSM8926,
>>>>>>      MSS_MSM8953,
>>>>>>      MSS_MSM8974,
>>>>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>          goto pbl_wait;
>>>>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>>>>             qproc->version == MSS_MSM8909 ||
>>>>>> +           qproc->version == MSS_MSM8917 ||
>>>>>>             qproc->version == MSS_MSM8953 ||
>>>>>>             qproc->version == MSS_MSM8996 ||
>>>>>>             qproc->version == MSS_MSM8998 ||
>>>>>>             qproc->version == MSS_SDM660) {
>>>>>>
>>>>>>          /* Override the ACC value if required */
>>>>>> -        if (qproc->version == MSS_MDM9607)
>>>>>> +        if (qproc->version == MSS_MDM9607 ||
>>>>>> +            qproc->version == MSS_MSM8917)
>>>>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>>>>          else if (qproc->version != MSS_MSM8909 &&
>>>>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>
>>>>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time */
>>>>>>              if (qproc->version == MSS_MDM9607 ||
>>>>>> +                qproc->version == MSS_MSM8917 ||
>>>>>>                  qproc->version == MSS_MSM8953 ||
>>>>>>                  qproc->version == MSS_MSM8996) {
>>>>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>>>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>                   * Set first 5 bits in reverse to avoid
>>>>>>                   * "inrush current" issues.
>>>>>>                   */
>>>>>> -                if (qproc->version == MSS_MDM9607)
>>>>>> +                if (qproc->version == MSS_MDM9607 ||
>>>>>> +                    qproc->version == MSS_MSM8917)
>>>>>>                      reverse = 6;
>>>>>>              } else {
>>>>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>>>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res msm8916_mss = {
>>>>>>      .version = MSS_MSM8916,
>>>>>>  };
>>>>>>
>>>>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>>>>> +    .hexagon_mba_image = "mba.mbn",
>>>>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>>>>> +        {
>>>>>> +            .supply = "pll",
>>>>>> +            .uA = 100000,
>>>>>> +        },
>>>>>> +        {}
>>>>>> +    },
>>>>>> +    .proxy_clk_names = (char*[]){
>>>>>> +        "xo",
>>>>>> +        NULL
>>>>>> +    },
>>>>>> +    .active_clk_names = (char*[]){
>>>>>> +        "iface",
>>>>>> +        "bus",
>>>>>> +        "mem",
>>>>>> +        NULL
>>>>>> +    },
>>>>>> +    .proxy_pd_names = (char*[]) {
>>>>>> +        "cx",
>>>>>> +        "mx",
>>>>>> +        "mss",
>>>>>
>>>>> Are you sure mss/pm8937_s1 also works as a power domain? It seems to be
>>>>> a plain regulator downstream (similar to msm8226/msm8974).
>>>>>
>>>>> Same thing applies to MSM8953 as well though and there we seem to have
>>>>> decided to model it as a power domain ...
>>>> They have this at downstream, i guess this is why handled as a power domain.
>>>> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
>>>
>>> It seems to be just a normal regulator on both 8917 and 8953
>>>
>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi
>>>
>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi
>>>
>>> Konrad
>> It is different between 3.18 and 4.9, 3.18 seems simpler and easier to use it as regulator i will change it
>> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8917.dtsi#L1375
>> https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c32-05500-89xx.0/arch/arm/boot/dts/qcom/msm8917.dtsi#L1655
> Only question is left what about SDM439 and SDM632? They were introduced at 4.9 maybe that is why it was modified both are inheriting
> MSS bindings from 8953 and 8937.

Seems both are the same too

Konrad


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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-29 13:07             ` Konrad Dybcio
@ 2025-12-30  3:25               ` barnabas.czeman
  2025-12-30 13:11                 ` Konrad Dybcio
  0 siblings, 1 reply; 20+ messages in thread
From: barnabas.czeman @ 2025-12-30  3:25 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Stephan Gerhold, Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 2025-12-29 14:07, Konrad Dybcio wrote:
> On 12/29/25 1:59 PM, barnabas.czeman@mainlining.org wrote:
>> On 2025-12-29 13:51, barnabas.czeman@mainlining.org wrote:
>>> On 2025-12-29 13:40, Konrad Dybcio wrote:
>>>> On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
>>>>> On 2025-12-29 12:08, Stephan Gerhold wrote:
>>>>>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>>>>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>>>>>> only difference is the mss power domain.
>>>>>>> 
>>>>>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>>>>>> ---
>>>>>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 
>>>>>>> ++++++++++++++++++++++++++++++++++++--
>>>>>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>>>>> 
>>>>>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c 
>>>>>>> b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>> index ffafbe501a05..2579558fb567 100644
>>>>>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>> @@ -259,6 +259,7 @@ enum {
>>>>>>>      MSS_MSM8226,
>>>>>>>      MSS_MSM8909,
>>>>>>>      MSS_MSM8916,
>>>>>>> +    MSS_MSM8917,
>>>>>>>      MSS_MSM8926,
>>>>>>>      MSS_MSM8953,
>>>>>>>      MSS_MSM8974,
>>>>>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 
>>>>>>> *qproc)
>>>>>>>          goto pbl_wait;
>>>>>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>>>>>             qproc->version == MSS_MSM8909 ||
>>>>>>> +           qproc->version == MSS_MSM8917 ||
>>>>>>>             qproc->version == MSS_MSM8953 ||
>>>>>>>             qproc->version == MSS_MSM8996 ||
>>>>>>>             qproc->version == MSS_MSM8998 ||
>>>>>>>             qproc->version == MSS_SDM660) {
>>>>>>> 
>>>>>>>          /* Override the ACC value if required */
>>>>>>> -        if (qproc->version == MSS_MDM9607)
>>>>>>> +        if (qproc->version == MSS_MDM9607 ||
>>>>>>> +            qproc->version == MSS_MSM8917)
>>>>>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>>>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>>>>>          else if (qproc->version != MSS_MSM8909 &&
>>>>>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>> 
>>>>>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time 
>>>>>>> */
>>>>>>>              if (qproc->version == MSS_MDM9607 ||
>>>>>>> +                qproc->version == MSS_MSM8917 ||
>>>>>>>                  qproc->version == MSS_MSM8953 ||
>>>>>>>                  qproc->version == MSS_MSM8996) {
>>>>>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>>>>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>>                   * Set first 5 bits in reverse to avoid
>>>>>>>                   * "inrush current" issues.
>>>>>>>                   */
>>>>>>> -                if (qproc->version == MSS_MDM9607)
>>>>>>> +                if (qproc->version == MSS_MDM9607 ||
>>>>>>> +                    qproc->version == MSS_MSM8917)
>>>>>>>                      reverse = 6;
>>>>>>>              } else {
>>>>>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>>>>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res 
>>>>>>> msm8916_mss = {
>>>>>>>      .version = MSS_MSM8916,
>>>>>>>  };
>>>>>>> 
>>>>>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>>>>>> +    .hexagon_mba_image = "mba.mbn",
>>>>>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>>>>>> +        {
>>>>>>> +            .supply = "pll",
>>>>>>> +            .uA = 100000,
>>>>>>> +        },
>>>>>>> +        {}
>>>>>>> +    },
>>>>>>> +    .proxy_clk_names = (char*[]){
>>>>>>> +        "xo",
>>>>>>> +        NULL
>>>>>>> +    },
>>>>>>> +    .active_clk_names = (char*[]){
>>>>>>> +        "iface",
>>>>>>> +        "bus",
>>>>>>> +        "mem",
>>>>>>> +        NULL
>>>>>>> +    },
>>>>>>> +    .proxy_pd_names = (char*[]) {
>>>>>>> +        "cx",
>>>>>>> +        "mx",
>>>>>>> +        "mss",
>>>>>> 
>>>>>> Are you sure mss/pm8937_s1 also works as a power domain? It seems 
>>>>>> to be
>>>>>> a plain regulator downstream (similar to msm8226/msm8974).
>>>>>> 
>>>>>> Same thing applies to MSM8953 as well though and there we seem to 
>>>>>> have
>>>>>> decided to model it as a power domain ...
>>>>> They have this at downstream, i guess this is why handled as a 
>>>>> power domain.
>>>>> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
>>>> 
>>>> It seems to be just a normal regulator on both 8917 and 8953
>>>> 
>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi
>>>> 
>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi
>>>> 
>>>> Konrad
>>> It is different between 3.18 and 4.9, 3.18 seems simpler and easier 
>>> to use it as regulator i will change it
>>> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8917.dtsi#L1375
>>> https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c32-05500-89xx.0/arch/arm/boot/dts/qcom/msm8917.dtsi#L1655
>> Only question is left what about SDM439 and SDM632? They were 
>> introduced at 4.9 maybe that is why it was modified both are 
>> inheriting
>> MSS bindings from 8953 and 8937.
> 
> Seems both are the same too
https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/sdm439-regulator.dtsi#L18
https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8953-regulator.dtsi#L17
SDM439 and SDM632 do not use simple regulator, s1 seems power domain to 
me. I have checked it in use at Fairphone 3, Redmi 7 and 7A
all have S1 as a power domain.
> 
> Konrad

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-30  3:25               ` barnabas.czeman
@ 2025-12-30 13:11                 ` Konrad Dybcio
  2025-12-30 15:28                   ` barnabas.czeman
  0 siblings, 1 reply; 20+ messages in thread
From: Konrad Dybcio @ 2025-12-30 13:11 UTC (permalink / raw)
  To: barnabas.czeman
  Cc: Stephan Gerhold, Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 12/30/25 4:25 AM, barnabas.czeman@mainlining.org wrote:
> On 2025-12-29 14:07, Konrad Dybcio wrote:
>> On 12/29/25 1:59 PM, barnabas.czeman@mainlining.org wrote:
>>> On 2025-12-29 13:51, barnabas.czeman@mainlining.org wrote:
>>>> On 2025-12-29 13:40, Konrad Dybcio wrote:
>>>>> On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
>>>>>> On 2025-12-29 12:08, Stephan Gerhold wrote:
>>>>>>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>>>>>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>>>>>>> only difference is the mss power domain.
>>>>>>>>
>>>>>>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>>>>>>> ---
>>>>>>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 ++++++++++++++++++++++++++++++++++++--
>>>>>>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>>>>>>
>>>>>>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>>> index ffafbe501a05..2579558fb567 100644
>>>>>>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>>> @@ -259,6 +259,7 @@ enum {
>>>>>>>>      MSS_MSM8226,
>>>>>>>>      MSS_MSM8909,
>>>>>>>>      MSS_MSM8916,
>>>>>>>> +    MSS_MSM8917,
>>>>>>>>      MSS_MSM8926,
>>>>>>>>      MSS_MSM8953,
>>>>>>>>      MSS_MSM8974,
>>>>>>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>>>          goto pbl_wait;
>>>>>>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>>>>>>             qproc->version == MSS_MSM8909 ||
>>>>>>>> +           qproc->version == MSS_MSM8917 ||
>>>>>>>>             qproc->version == MSS_MSM8953 ||
>>>>>>>>             qproc->version == MSS_MSM8996 ||
>>>>>>>>             qproc->version == MSS_MSM8998 ||
>>>>>>>>             qproc->version == MSS_SDM660) {
>>>>>>>>
>>>>>>>>          /* Override the ACC value if required */
>>>>>>>> -        if (qproc->version == MSS_MDM9607)
>>>>>>>> +        if (qproc->version == MSS_MDM9607 ||
>>>>>>>> +            qproc->version == MSS_MSM8917)
>>>>>>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>>>>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>>>>>>          else if (qproc->version != MSS_MSM8909 &&
>>>>>>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>>>
>>>>>>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time */
>>>>>>>>              if (qproc->version == MSS_MDM9607 ||
>>>>>>>> +                qproc->version == MSS_MSM8917 ||
>>>>>>>>                  qproc->version == MSS_MSM8953 ||
>>>>>>>>                  qproc->version == MSS_MSM8996) {
>>>>>>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>>>>>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 *qproc)
>>>>>>>>                   * Set first 5 bits in reverse to avoid
>>>>>>>>                   * "inrush current" issues.
>>>>>>>>                   */
>>>>>>>> -                if (qproc->version == MSS_MDM9607)
>>>>>>>> +                if (qproc->version == MSS_MDM9607 ||
>>>>>>>> +                    qproc->version == MSS_MSM8917)
>>>>>>>>                      reverse = 6;
>>>>>>>>              } else {
>>>>>>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>>>>>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res msm8916_mss = {
>>>>>>>>      .version = MSS_MSM8916,
>>>>>>>>  };
>>>>>>>>
>>>>>>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>>>>>>> +    .hexagon_mba_image = "mba.mbn",
>>>>>>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>>>>>>> +        {
>>>>>>>> +            .supply = "pll",
>>>>>>>> +            .uA = 100000,
>>>>>>>> +        },
>>>>>>>> +        {}
>>>>>>>> +    },
>>>>>>>> +    .proxy_clk_names = (char*[]){
>>>>>>>> +        "xo",
>>>>>>>> +        NULL
>>>>>>>> +    },
>>>>>>>> +    .active_clk_names = (char*[]){
>>>>>>>> +        "iface",
>>>>>>>> +        "bus",
>>>>>>>> +        "mem",
>>>>>>>> +        NULL
>>>>>>>> +    },
>>>>>>>> +    .proxy_pd_names = (char*[]) {
>>>>>>>> +        "cx",
>>>>>>>> +        "mx",
>>>>>>>> +        "mss",
>>>>>>>
>>>>>>> Are you sure mss/pm8937_s1 also works as a power domain? It seems to be
>>>>>>> a plain regulator downstream (similar to msm8226/msm8974).
>>>>>>>
>>>>>>> Same thing applies to MSM8953 as well though and there we seem to have
>>>>>>> decided to model it as a power domain ...
>>>>>> They have this at downstream, i guess this is why handled as a power domain.
>>>>>> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
>>>>>
>>>>> It seems to be just a normal regulator on both 8917 and 8953
>>>>>
>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi
>>>>>
>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi
>>>>>
>>>>> Konrad
>>>> It is different between 3.18 and 4.9, 3.18 seems simpler and easier to use it as regulator i will change it
>>>> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8917.dtsi#L1375
>>>> https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c32-05500-89xx.0/arch/arm/boot/dts/qcom/msm8917.dtsi#L1655
>>> Only question is left what about SDM439 and SDM632? They were introduced at 4.9 maybe that is why it was modified both are inheriting
>>> MSS bindings from 8953 and 8937.
>>
>> Seems both are the same too
> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/sdm439-regulator.dtsi#L18
> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8953-regulator.dtsi#L17
> SDM439 and SDM632 do not use simple regulator, s1 seems power domain to me. I have checked it in use at Fairphone 3, Redmi 7 and 7A
> all have S1 as a power domain.

Hm, it seems you're right. It does indeed use level-based voting which
would qualify it as a power domain in our upstream understanding

Konrad

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

* Re: [PATCH 4/8] remoteproc: qcom_q6v5_mss: Add MSM8917
  2025-12-30 13:11                 ` Konrad Dybcio
@ 2025-12-30 15:28                   ` barnabas.czeman
  0 siblings, 0 replies; 20+ messages in thread
From: barnabas.czeman @ 2025-12-30 15:28 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Stephan Gerhold, Bjorn Andersson, Mathieu Poirier, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Stephan Gerhold, linux-arm-msm,
	linux-remoteproc, devicetree, linux-kernel

On 2025-12-30 14:11, Konrad Dybcio wrote:
> On 12/30/25 4:25 AM, barnabas.czeman@mainlining.org wrote:
>> On 2025-12-29 14:07, Konrad Dybcio wrote:
>>> On 12/29/25 1:59 PM, barnabas.czeman@mainlining.org wrote:
>>>> On 2025-12-29 13:51, barnabas.czeman@mainlining.org wrote:
>>>>> On 2025-12-29 13:40, Konrad Dybcio wrote:
>>>>>> On 12/29/25 1:33 PM, barnabas.czeman@mainlining.org wrote:
>>>>>>> On 2025-12-29 12:08, Stephan Gerhold wrote:
>>>>>>>> On Sun, Dec 28, 2025 at 03:21:54PM +0100, Barnabás Czémán wrote:
>>>>>>>>> Add support for MSM8917 MSS it is similar for MDM9607 MSS
>>>>>>>>> only difference is the mss power domain.
>>>>>>>>> 
>>>>>>>>> Signed-off-by: Barnabás Czémán <barnabas.czeman@mainlining.org>
>>>>>>>>> ---
>>>>>>>>>  drivers/remoteproc/qcom_q6v5_mss.c | 46 
>>>>>>>>> ++++++++++++++++++++++++++++++++++++--
>>>>>>>>>  1 file changed, 44 insertions(+), 2 deletions(-)
>>>>>>>>> 
>>>>>>>>> diff --git a/drivers/remoteproc/qcom_q6v5_mss.c 
>>>>>>>>> b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>>>> index ffafbe501a05..2579558fb567 100644
>>>>>>>>> --- a/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>>>> +++ b/drivers/remoteproc/qcom_q6v5_mss.c
>>>>>>>>> @@ -259,6 +259,7 @@ enum {
>>>>>>>>>      MSS_MSM8226,
>>>>>>>>>      MSS_MSM8909,
>>>>>>>>>      MSS_MSM8916,
>>>>>>>>> +    MSS_MSM8917,
>>>>>>>>>      MSS_MSM8926,
>>>>>>>>>      MSS_MSM8953,
>>>>>>>>>      MSS_MSM8974,
>>>>>>>>> @@ -749,13 +750,15 @@ static int q6v5proc_reset(struct q6v5 
>>>>>>>>> *qproc)
>>>>>>>>>          goto pbl_wait;
>>>>>>>>>      } else if (qproc->version == MSS_MDM9607 ||
>>>>>>>>>             qproc->version == MSS_MSM8909 ||
>>>>>>>>> +           qproc->version == MSS_MSM8917 ||
>>>>>>>>>             qproc->version == MSS_MSM8953 ||
>>>>>>>>>             qproc->version == MSS_MSM8996 ||
>>>>>>>>>             qproc->version == MSS_MSM8998 ||
>>>>>>>>>             qproc->version == MSS_SDM660) {
>>>>>>>>> 
>>>>>>>>>          /* Override the ACC value if required */
>>>>>>>>> -        if (qproc->version == MSS_MDM9607)
>>>>>>>>> +        if (qproc->version == MSS_MDM9607 ||
>>>>>>>>> +            qproc->version == MSS_MSM8917)
>>>>>>>>>              writel(QDSP6SS_ACC_OVERRIDE_VAL_9607,
>>>>>>>>>                     qproc->reg_base + QDSP6SS_STRAP_ACC);
>>>>>>>>>          else if (qproc->version != MSS_MSM8909 &&
>>>>>>>>> @@ -817,6 +820,7 @@ static int q6v5proc_reset(struct q6v5 
>>>>>>>>> *qproc)
>>>>>>>>> 
>>>>>>>>>              /* Turn on L1, L2, ETB and JU memories 1 at a time 
>>>>>>>>> */
>>>>>>>>>              if (qproc->version == MSS_MDM9607 ||
>>>>>>>>> +                qproc->version == MSS_MSM8917 ||
>>>>>>>>>                  qproc->version == MSS_MSM8953 ||
>>>>>>>>>                  qproc->version == MSS_MSM8996) {
>>>>>>>>>                  mem_pwr_ctl = QDSP6SS_MEM_PWR_CTL;
>>>>>>>>> @@ -826,7 +830,8 @@ static int q6v5proc_reset(struct q6v5 
>>>>>>>>> *qproc)
>>>>>>>>>                   * Set first 5 bits in reverse to avoid
>>>>>>>>>                   * "inrush current" issues.
>>>>>>>>>                   */
>>>>>>>>> -                if (qproc->version == MSS_MDM9607)
>>>>>>>>> +                if (qproc->version == MSS_MDM9607 ||
>>>>>>>>> +                    qproc->version == MSS_MSM8917)
>>>>>>>>>                      reverse = 6;
>>>>>>>>>              } else {
>>>>>>>>>                  /* MSS_MSM8998, MSS_SDM660 */
>>>>>>>>> @@ -2538,6 +2543,42 @@ static const struct rproc_hexagon_res 
>>>>>>>>> msm8916_mss = {
>>>>>>>>>      .version = MSS_MSM8916,
>>>>>>>>>  };
>>>>>>>>> 
>>>>>>>>> +static const struct rproc_hexagon_res msm8917_mss = {
>>>>>>>>> +    .hexagon_mba_image = "mba.mbn",
>>>>>>>>> +    .proxy_supply = (struct qcom_mss_reg_res[]) {
>>>>>>>>> +        {
>>>>>>>>> +            .supply = "pll",
>>>>>>>>> +            .uA = 100000,
>>>>>>>>> +        },
>>>>>>>>> +        {}
>>>>>>>>> +    },
>>>>>>>>> +    .proxy_clk_names = (char*[]){
>>>>>>>>> +        "xo",
>>>>>>>>> +        NULL
>>>>>>>>> +    },
>>>>>>>>> +    .active_clk_names = (char*[]){
>>>>>>>>> +        "iface",
>>>>>>>>> +        "bus",
>>>>>>>>> +        "mem",
>>>>>>>>> +        NULL
>>>>>>>>> +    },
>>>>>>>>> +    .proxy_pd_names = (char*[]) {
>>>>>>>>> +        "cx",
>>>>>>>>> +        "mx",
>>>>>>>>> +        "mss",
>>>>>>>> 
>>>>>>>> Are you sure mss/pm8937_s1 also works as a power domain? It 
>>>>>>>> seems to be
>>>>>>>> a plain regulator downstream (similar to msm8226/msm8974).
>>>>>>>> 
>>>>>>>> Same thing applies to MSM8953 as well though and there we seem 
>>>>>>>> to have
>>>>>>>> decided to model it as a power domain ...
>>>>>>> They have this at downstream, i guess this is why handled as a 
>>>>>>> power domain.
>>>>>>> vdd_mss-uV = <RPM_SMD_REGULATOR_LEVEL_TURBO>;
>>>>>> 
>>>>>> It seems to be just a normal regulator on both 8917 and 8953
>>>>>> 
>>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953-regulator.dtsi
>>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8953.dtsi
>>>>>> 
>>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917-regulator.dtsi
>>>>>> https://android.googlesource.com/kernel/msm/+/android-7.1.0_r0.2/arch/arm/boot/dts/qcom/msm8917.dtsi
>>>>>> 
>>>>>> Konrad
>>>>> It is different between 3.18 and 4.9, 3.18 seems simpler and easier 
>>>>> to use it as regulator i will change it
>>>>> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8917.dtsi#L1375
>>>>> https://git.codelinaro.org/clo/la/kernel/msm-3.18/-/blob/LA.UM.6.6.c32-05500-89xx.0/arch/arm/boot/dts/qcom/msm8917.dtsi#L1655
>>>> Only question is left what about SDM439 and SDM632? They were 
>>>> introduced at 4.9 maybe that is why it was modified both are 
>>>> inheriting
>>>> MSS bindings from 8953 and 8937.
>>> 
>>> Seems both are the same too
>> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/sdm439-regulator.dtsi#L18
>> https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.10.6.2.c26-01500-89xx.0/arch/arm64/boot/dts/qcom/msm8953-regulator.dtsi#L17
>> SDM439 and SDM632 do not use simple regulator, s1 seems power domain 
>> to me. I have checked it in use at Fairphone 3, Redmi 7 and 7A
>> all have S1 as a power domain.
> 
> Hm, it seems you're right. It does indeed use level-based voting which
> would qualify it as a power domain in our upstream understanding
What would be the better solution?
1. Keep mss as power domain?
2. Set mss to a regulator for MSM8917 and keep as power domain for 
MSM8937 and SDM439.
3. Split SDM632 and SDM439 MSS from MSM8937 and MSM8953 MSS and use 
mss-supply
as regulator for MSM8917, MSM8937, MSM8940 and MSM8953 and use mss as 
power domain for SDM439 and SDM632.
> 
> Konrad

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

end of thread, other threads:[~2025-12-30 15:28 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-28 14:21 [PATCH 0/8] MDM9607/MSM8917/MSM8937/MSM8940 MSS Barnabás Czémán
2025-12-28 14:21 ` [PATCH 1/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MDM9607 Barnabás Czémán
2025-12-29 10:58   ` Stephan Gerhold
2025-12-28 14:21 ` [PATCH 2/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
2025-12-28 14:21 ` [PATCH 3/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8917 Barnabás Czémán
2025-12-28 14:21 ` [PATCH 4/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
2025-12-29 11:08   ` Stephan Gerhold
2025-12-29 12:33     ` barnabas.czeman
2025-12-29 12:40       ` Konrad Dybcio
2025-12-29 12:51         ` barnabas.czeman
2025-12-29 12:59           ` barnabas.czeman
2025-12-29 13:07             ` Konrad Dybcio
2025-12-30  3:25               ` barnabas.czeman
2025-12-30 13:11                 ` Konrad Dybcio
2025-12-30 15:28                   ` barnabas.czeman
2025-12-28 14:21 ` [PATCH 5/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8937 Barnabás Czémán
2025-12-28 14:21 ` [PATCH 6/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán
2025-12-29 11:13   ` Stephan Gerhold
2025-12-28 14:21 ` [PATCH 7/8] dt-bindings: remoteproc: qcom,msm8916-mss-pil: Add MSM8940 Barnabás Czémán
2025-12-28 14:21 ` [PATCH 8/8] remoteproc: qcom_q6v5_mss: " Barnabás Czémán

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).