All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-21  2:20 ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

V5:
 Add R-b tag
 Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
 comments

V4:
 Typo fix
 patch 4: take state as a check condition
 patch 5: move regmap lookup/attach to imx_rproc_detect_mode
 patch 6: add imx_rproc_clk_enable for optional clk
 patch 8: use switch/case in imx_rproc_detect_mode
V3:
 Add A-b tag for Patch 1/2
 Fix the checkpatch warning for Patch 6,8

V2:
 Patch 1/8, use fsl as vendor, typo fix
 Because patchset [1] has v2 version, patch 5,6,7,8 are adapted that
 change.

This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
parse fsl,auto-boot

Peng Fan (8):
  dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
  dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
  dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
  remoteproc: imx_rproc: parse fsl,auto-boot
  remoteproc: imx_rproc: initial support for mutilple start/stop method
  remoteproc: imx_rproc: make clk optional
  remoteproc: imx_rproc: support i.MX7ULP
  remoteproc: imx_rproc: support i.MX8MN/P

 .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
 drivers/remoteproc/imx_rproc.c                | 196 +++++++++++++++---
 2 files changed, 173 insertions(+), 34 deletions(-)

-- 
2.30.0


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

* [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-21  2:20 ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

V5:
 Add R-b tag
 Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
 comments

V4:
 Typo fix
 patch 4: take state as a check condition
 patch 5: move regmap lookup/attach to imx_rproc_detect_mode
 patch 6: add imx_rproc_clk_enable for optional clk
 patch 8: use switch/case in imx_rproc_detect_mode
V3:
 Add A-b tag for Patch 1/2
 Fix the checkpatch warning for Patch 6,8

V2:
 Patch 1/8, use fsl as vendor, typo fix
 Because patchset [1] has v2 version, patch 5,6,7,8 are adapted that
 change.

This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
parse fsl,auto-boot

Peng Fan (8):
  dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
  dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
  dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
  remoteproc: imx_rproc: parse fsl,auto-boot
  remoteproc: imx_rproc: initial support for mutilple start/stop method
  remoteproc: imx_rproc: make clk optional
  remoteproc: imx_rproc: support i.MX7ULP
  remoteproc: imx_rproc: support i.MX8MN/P

 .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
 drivers/remoteproc/imx_rproc.c                | 196 +++++++++++++++---
 2 files changed, 173 insertions(+), 34 deletions(-)

-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 1/8] dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add an optional property "fsl,auto-boot" to indicate remote processor
auto boot.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml       | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index 208a628f8d6c..b13bf8d70488 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -49,6 +49,12 @@ properties:
     minItems: 1
     maxItems: 32
 
+  fsl,auto-boot:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Indicate whether need to load the default firmware and start the remote
+      processor automatically.
+
 required:
   - compatible
   - clocks
-- 
2.30.0


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

* [PATCH V5 1/8] dt-bindings: remoteproc: imx_rproc: add fsl, auto-boot property
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add an optional property "fsl,auto-boot" to indicate remote processor
auto boot.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml       | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index 208a628f8d6c..b13bf8d70488 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -49,6 +49,12 @@ properties:
     minItems: 1
     maxItems: 32
 
+  fsl,auto-boot:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Indicate whether need to load the default firmware and start the remote
+      processor automatically.
+
 required:
   - compatible
   - clocks
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX7ULP compatible.

We use i.MX7ULP dual mode and in which case i.MX7ULP A7 core runs under
control of M4 core, M4 core starts by ROM and powers most services used
by A7 core, so A7 core has no power to start and stop M4 core. So
clocks and syscon are not required.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml          | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index b13bf8d70488..58bc2a23f97b 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -18,6 +18,7 @@ properties:
       - fsl,imx8mq-cm4
       - fsl,imx8mm-cm4
       - fsl,imx7d-cm4
+      - fsl,imx7ulp-cm4
       - fsl,imx6sx-cm4
 
   clocks:
@@ -57,8 +58,6 @@ properties:
 
 required:
   - compatible
-  - clocks
-  - syscon
 
 additionalProperties: false
 
-- 
2.30.0


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

* [PATCH V5 2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX7ULP compatible.

We use i.MX7ULP dual mode and in which case i.MX7ULP A7 core runs under
control of M4 core, M4 core starts by ROM and powers most services used
by A7 core, so A7 core has no power to start and stop M4 core. So
clocks and syscon are not required.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 .../devicetree/bindings/remoteproc/fsl,imx-rproc.yaml          | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index b13bf8d70488..58bc2a23f97b 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -18,6 +18,7 @@ properties:
       - fsl,imx8mq-cm4
       - fsl,imx8mm-cm4
       - fsl,imx7d-cm4
+      - fsl,imx7ulp-cm4
       - fsl,imx6sx-cm4
 
   clocks:
@@ -57,8 +58,6 @@ properties:
 
 required:
   - compatible
-  - clocks
-  - syscon
 
 additionalProperties: false
 
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX8MN/P remote processor(Cortex-M7) compatible string

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index 58bc2a23f97b..1dc34cf5a4ea 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -17,6 +17,8 @@ properties:
     enum:
       - fsl,imx8mq-cm4
       - fsl,imx8mm-cm4
+      - fsl,imx8mn-cm7
+      - fsl,imx8mp-cm7
       - fsl,imx7d-cm4
       - fsl,imx7ulp-cm4
       - fsl,imx6sx-cm4
-- 
2.30.0


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

* [PATCH V5 3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX8MN/P remote processor(Cortex-M7) compatible string

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index 58bc2a23f97b..1dc34cf5a4ea 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -17,6 +17,8 @@ properties:
     enum:
       - fsl,imx8mq-cm4
       - fsl,imx8mm-cm4
+      - fsl,imx8mn-cm7
+      - fsl,imx8mp-cm7
       - fsl,imx7d-cm4
       - fsl,imx7ulp-cm4
       - fsl,imx6sx-cm4
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 4/8] remoteproc: imx_rproc: parse fsl,auto-boot
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Parse fsl,auto-boot to indicate whether need remoteproc framework
auto boot or not.

When remote processor is booted before Linux Kernel up, do not parse
fsl,auto-boot, so only need to parse the property when rproc state is
RPROC_DETACHED.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 drivers/remoteproc/imx_rproc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index d6338872c6db..06dac92e98e6 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -654,6 +654,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
 
 	INIT_WORK(&priv->rproc_work, imx_rproc_vq_work);
 
+	if (rproc->state != RPROC_DETACHED)
+		rproc->auto_boot = of_property_read_bool(np, "fsl,auto-boot");
+
 	ret = rproc_add(rproc);
 	if (ret) {
 		dev_err(dev, "rproc_add failed\n");
-- 
2.30.0


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

* [PATCH V5 4/8] remoteproc: imx_rproc: parse fsl,auto-boot
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Parse fsl,auto-boot to indicate whether need remoteproc framework
auto boot or not.

When remote processor is booted before Linux Kernel up, do not parse
fsl,auto-boot, so only need to parse the property when rproc state is
RPROC_DETACHED.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 drivers/remoteproc/imx_rproc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index d6338872c6db..06dac92e98e6 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -654,6 +654,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
 
 	INIT_WORK(&priv->rproc_work, imx_rproc_vq_work);
 
+	if (rproc->state != RPROC_DETACHED)
+		rproc->auto_boot = of_property_read_bool(np, "fsl,auto-boot");
+
 	ret = rproc_add(rproc);
 	if (ret) {
 		dev_err(dev, "rproc_add failed\n");
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add three methods IMX_RPROC_NONE(no need start/stop), IMX_RPROC_MMIO
(start/stop through mmio) and IMX_RPROC_SMC(start/stop through ARM SMCCC).

The current SoCs supported are all using IMX_RPROC_MMIO.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 06dac92e98e6..6289aeae95b6 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -74,6 +74,15 @@ struct imx_rproc_att {
 	int flags;
 };
 
+/* Remote core start/stop method */
+enum imx_rproc_method {
+	IMX_RPROC_NONE,
+	/* Through syscon regmap */
+	IMX_RPROC_MMIO,
+	/* Through ARM SMCCC */
+	IMX_RPROC_SMC,
+};
+
 struct imx_rproc_dcfg {
 	u32				src_reg;
 	u32				src_mask;
@@ -81,6 +90,7 @@ struct imx_rproc_dcfg {
 	u32				src_stop;
 	const struct imx_rproc_att	*att;
 	size_t				att_size;
+	enum imx_rproc_method		method;
 };
 
 struct imx_rproc {
@@ -183,6 +193,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
 	.src_stop	= IMX7D_M4_STOP,
 	.att		= imx_rproc_att_imx8mq,
 	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mq),
+	.method		= IMX_RPROC_MMIO,
 };
 
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
@@ -192,6 +203,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
 	.src_stop	= IMX7D_M4_STOP,
 	.att		= imx_rproc_att_imx7d,
 	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7d),
+	.method		= IMX_RPROC_MMIO,
 };
 
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
@@ -201,6 +213,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
 	.src_stop	= IMX6SX_M4_STOP,
 	.att		= imx_rproc_att_imx6sx,
 	.att_size	= ARRAY_SIZE(imx_rproc_att_imx6sx),
+	.method		= IMX_RPROC_MMIO,
 };
 
 static int imx_rproc_start(struct rproc *rproc)
-- 
2.30.0


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

* [PATCH V5 5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add three methods IMX_RPROC_NONE(no need start/stop), IMX_RPROC_MMIO
(start/stop through mmio) and IMX_RPROC_SMC(start/stop through ARM SMCCC).

The current SoCs supported are all using IMX_RPROC_MMIO.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 06dac92e98e6..6289aeae95b6 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -74,6 +74,15 @@ struct imx_rproc_att {
 	int flags;
 };
 
+/* Remote core start/stop method */
+enum imx_rproc_method {
+	IMX_RPROC_NONE,
+	/* Through syscon regmap */
+	IMX_RPROC_MMIO,
+	/* Through ARM SMCCC */
+	IMX_RPROC_SMC,
+};
+
 struct imx_rproc_dcfg {
 	u32				src_reg;
 	u32				src_mask;
@@ -81,6 +90,7 @@ struct imx_rproc_dcfg {
 	u32				src_stop;
 	const struct imx_rproc_att	*att;
 	size_t				att_size;
+	enum imx_rproc_method		method;
 };
 
 struct imx_rproc {
@@ -183,6 +193,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
 	.src_stop	= IMX7D_M4_STOP,
 	.att		= imx_rproc_att_imx8mq,
 	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mq),
+	.method		= IMX_RPROC_MMIO,
 };
 
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
@@ -192,6 +203,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
 	.src_stop	= IMX7D_M4_STOP,
 	.att		= imx_rproc_att_imx7d,
 	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7d),
+	.method		= IMX_RPROC_MMIO,
 };
 
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
@@ -201,6 +213,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
 	.src_stop	= IMX6SX_M4_STOP,
 	.att		= imx_rproc_att_imx6sx,
 	.att_size	= ARRAY_SIZE(imx_rproc_att_imx6sx),
+	.method		= IMX_RPROC_MMIO,
 };
 
 static int imx_rproc_start(struct rproc *rproc)
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 6/8] remoteproc: imx_rproc: make clk optional
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

To i.MX7ULP, M4 is the master to control everything, no need to provide
clk from Linux side. So make clk optional when method is IMX_RPROC_NONE.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 drivers/remoteproc/imx_rproc.c | 46 +++++++++++++++++++++++-----------
 1 file changed, 31 insertions(+), 15 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 6289aeae95b6..e9d9860e4fce 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -590,6 +590,35 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
 	return 0;
 }
 
+static int imx_rproc_clk_enable(struct imx_rproc *priv)
+{
+	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
+	struct device *dev = priv->dev;
+	int ret;
+
+	/* Remote core is not under control of Linux */
+	if (dcfg->method == IMX_RPROC_NONE)
+		return 0;
+
+	priv->clk = devm_clk_get(dev, NULL);
+	if (IS_ERR(priv->clk)) {
+		dev_err(dev, "Failed to get clock\n");
+		return PTR_ERR(priv->clk);
+	}
+
+	/*
+	 * clk for M4 block including memory. Should be
+	 * enabled before .start for FW transfer.
+	 */
+	ret = clk_prepare_enable(priv->clk);
+	if (ret) {
+		dev_err(dev, "Failed to enable clock\n");
+		return ret;
+	}
+
+	return 0;
+}
+
 static int imx_rproc_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -648,22 +677,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_put_mbox;
 
-	priv->clk = devm_clk_get(dev, NULL);
-	if (IS_ERR(priv->clk)) {
-		dev_err(dev, "Failed to get clock\n");
-		ret = PTR_ERR(priv->clk);
-		goto err_put_mbox;
-	}
-
-	/*
-	 * clk for M4 block including memory. Should be
-	 * enabled before .start for FW transfer.
-	 */
-	ret = clk_prepare_enable(priv->clk);
-	if (ret) {
-		dev_err(&rproc->dev, "Failed to enable clock\n");
+	ret = imx_rproc_clk_enable(priv);
+	if (ret)
 		goto err_put_mbox;
-	}
 
 	INIT_WORK(&priv->rproc_work, imx_rproc_vq_work);
 
-- 
2.30.0


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

* [PATCH V5 6/8] remoteproc: imx_rproc: make clk optional
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

To i.MX7ULP, M4 is the master to control everything, no need to provide
clk from Linux side. So make clk optional when method is IMX_RPROC_NONE.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
---
 drivers/remoteproc/imx_rproc.c | 46 +++++++++++++++++++++++-----------
 1 file changed, 31 insertions(+), 15 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 6289aeae95b6..e9d9860e4fce 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -590,6 +590,35 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
 	return 0;
 }
 
+static int imx_rproc_clk_enable(struct imx_rproc *priv)
+{
+	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
+	struct device *dev = priv->dev;
+	int ret;
+
+	/* Remote core is not under control of Linux */
+	if (dcfg->method == IMX_RPROC_NONE)
+		return 0;
+
+	priv->clk = devm_clk_get(dev, NULL);
+	if (IS_ERR(priv->clk)) {
+		dev_err(dev, "Failed to get clock\n");
+		return PTR_ERR(priv->clk);
+	}
+
+	/*
+	 * clk for M4 block including memory. Should be
+	 * enabled before .start for FW transfer.
+	 */
+	ret = clk_prepare_enable(priv->clk);
+	if (ret) {
+		dev_err(dev, "Failed to enable clock\n");
+		return ret;
+	}
+
+	return 0;
+}
+
 static int imx_rproc_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -648,22 +677,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	if (ret)
 		goto err_put_mbox;
 
-	priv->clk = devm_clk_get(dev, NULL);
-	if (IS_ERR(priv->clk)) {
-		dev_err(dev, "Failed to get clock\n");
-		ret = PTR_ERR(priv->clk);
-		goto err_put_mbox;
-	}
-
-	/*
-	 * clk for M4 block including memory. Should be
-	 * enabled before .start for FW transfer.
-	 */
-	ret = clk_prepare_enable(priv->clk);
-	if (ret) {
-		dev_err(&rproc->dev, "Failed to enable clock\n");
+	ret = imx_rproc_clk_enable(priv);
+	if (ret)
 		goto err_put_mbox;
-	}
 
 	INIT_WORK(&priv->rproc_work, imx_rproc_vq_work);
 
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

i.MX7ULP A7 core runs under control of M4 core, M4 core starts by ROM
and powers most serivces used by A7 core, so A7 core has no power to
start and stop M4 core. And the M4 core's state is default RPROC_DETACHED
and remoteproc framework not able to stop the M4 core.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 49 ++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index e9d9860e4fce..d26254609a52 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -136,6 +136,14 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
 	{ 0x40000000, 0x40000000, 0x80000000, 0 },
 };
 
+static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
+	{0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
+	{0x20000000, 0x20000000, 0x10000, ATT_OWN},
+	{0x2F000000, 0x2F000000, 0x20000, ATT_OWN},
+	{0x2F020000, 0x2F020000, 0x20000, ATT_OWN},
+	{0x60000000, 0x60000000, 0x40000000, 0}
+};
+
 static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
 	/* dev addr , sys addr  , size	    , flags */
 	/* OCRAM_S (M4 Boot code) - alias */
@@ -196,6 +204,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
 	.method		= IMX_RPROC_MMIO,
 };
 
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
+	.att		= imx_rproc_att_imx7ulp,
+	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7ulp),
+	.method		= IMX_RPROC_NONE,
+};
+
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
 	.src_reg	= IMX7D_SRC_SCR,
 	.src_mask	= IMX7D_M4_RST_MASK,
@@ -238,6 +252,9 @@ static int imx_rproc_stop(struct rproc *rproc)
 	struct device *dev = priv->dev;
 	int ret;
 
+	if (dcfg->method == IMX_RPROC_NONE)
+		return -EOPNOTSUPP;
+
 	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
 				 dcfg->src_mask, dcfg->src_stop);
 	if (ret)
@@ -573,12 +590,31 @@ static void imx_rproc_free_mbox(struct rproc *rproc)
 
 static int imx_rproc_detect_mode(struct imx_rproc *priv)
 {
+	struct regmap_config config = { .name = "imx-rproc" };
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
+	struct regmap *regmap;
 	int ret;
 	u32 val;
 
-	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
+	switch (dcfg->method) {
+	case IMX_RPROC_NONE:
+		priv->rproc->state = RPROC_DETACHED;
+		return 0;
+	default:
+		break;
+	}
+
+	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
+	if (IS_ERR(regmap)) {
+		dev_err(dev, "failed to find syscon\n");
+		return PTR_ERR(regmap);
+	}
+
+	priv->regmap = regmap;
+	regmap_attach_dev(dev, regmap, &config);
+
+	ret = regmap_read(regmap, dcfg->src_reg, &val);
 	if (ret) {
 		dev_err(dev, "Failed to read src\n");
 		return ret;
@@ -625,18 +661,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	struct device_node *np = dev->of_node;
 	struct imx_rproc *priv;
 	struct rproc *rproc;
-	struct regmap_config config = { .name = "imx-rproc" };
 	const struct imx_rproc_dcfg *dcfg;
-	struct regmap *regmap;
 	int ret;
 
-	regmap = syscon_regmap_lookup_by_phandle(np, "syscon");
-	if (IS_ERR(regmap)) {
-		dev_err(dev, "failed to find syscon\n");
-		return PTR_ERR(regmap);
-	}
-	regmap_attach_dev(dev, regmap, &config);
-
 	/* set some other name then imx */
 	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
 			    NULL, sizeof(*priv));
@@ -651,7 +678,6 @@ static int imx_rproc_probe(struct platform_device *pdev)
 
 	priv = rproc->priv;
 	priv->rproc = rproc;
-	priv->regmap = regmap;
 	priv->dcfg = dcfg;
 	priv->dev = dev;
 
@@ -720,6 +746,7 @@ static int imx_rproc_remove(struct platform_device *pdev)
 }
 
 static const struct of_device_id imx_rproc_of_match[] = {
+	{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
 	{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
 	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
 	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
-- 
2.30.0


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

* [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

i.MX7ULP A7 core runs under control of M4 core, M4 core starts by ROM
and powers most serivces used by A7 core, so A7 core has no power to
start and stop M4 core. And the M4 core's state is default RPROC_DETACHED
and remoteproc framework not able to stop the M4 core.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 49 ++++++++++++++++++++++++++--------
 1 file changed, 38 insertions(+), 11 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index e9d9860e4fce..d26254609a52 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -136,6 +136,14 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
 	{ 0x40000000, 0x40000000, 0x80000000, 0 },
 };
 
+static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
+	{0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
+	{0x20000000, 0x20000000, 0x10000, ATT_OWN},
+	{0x2F000000, 0x2F000000, 0x20000, ATT_OWN},
+	{0x2F020000, 0x2F020000, 0x20000, ATT_OWN},
+	{0x60000000, 0x60000000, 0x40000000, 0}
+};
+
 static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
 	/* dev addr , sys addr  , size	    , flags */
 	/* OCRAM_S (M4 Boot code) - alias */
@@ -196,6 +204,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
 	.method		= IMX_RPROC_MMIO,
 };
 
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
+	.att		= imx_rproc_att_imx7ulp,
+	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7ulp),
+	.method		= IMX_RPROC_NONE,
+};
+
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
 	.src_reg	= IMX7D_SRC_SCR,
 	.src_mask	= IMX7D_M4_RST_MASK,
@@ -238,6 +252,9 @@ static int imx_rproc_stop(struct rproc *rproc)
 	struct device *dev = priv->dev;
 	int ret;
 
+	if (dcfg->method == IMX_RPROC_NONE)
+		return -EOPNOTSUPP;
+
 	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
 				 dcfg->src_mask, dcfg->src_stop);
 	if (ret)
@@ -573,12 +590,31 @@ static void imx_rproc_free_mbox(struct rproc *rproc)
 
 static int imx_rproc_detect_mode(struct imx_rproc *priv)
 {
+	struct regmap_config config = { .name = "imx-rproc" };
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
+	struct regmap *regmap;
 	int ret;
 	u32 val;
 
-	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
+	switch (dcfg->method) {
+	case IMX_RPROC_NONE:
+		priv->rproc->state = RPROC_DETACHED;
+		return 0;
+	default:
+		break;
+	}
+
+	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
+	if (IS_ERR(regmap)) {
+		dev_err(dev, "failed to find syscon\n");
+		return PTR_ERR(regmap);
+	}
+
+	priv->regmap = regmap;
+	regmap_attach_dev(dev, regmap, &config);
+
+	ret = regmap_read(regmap, dcfg->src_reg, &val);
 	if (ret) {
 		dev_err(dev, "Failed to read src\n");
 		return ret;
@@ -625,18 +661,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	struct device_node *np = dev->of_node;
 	struct imx_rproc *priv;
 	struct rproc *rproc;
-	struct regmap_config config = { .name = "imx-rproc" };
 	const struct imx_rproc_dcfg *dcfg;
-	struct regmap *regmap;
 	int ret;
 
-	regmap = syscon_regmap_lookup_by_phandle(np, "syscon");
-	if (IS_ERR(regmap)) {
-		dev_err(dev, "failed to find syscon\n");
-		return PTR_ERR(regmap);
-	}
-	regmap_attach_dev(dev, regmap, &config);
-
 	/* set some other name then imx */
 	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
 			    NULL, sizeof(*priv));
@@ -651,7 +678,6 @@ static int imx_rproc_probe(struct platform_device *pdev)
 
 	priv = rproc->priv;
 	priv->rproc = rproc;
-	priv->regmap = regmap;
 	priv->dcfg = dcfg;
 	priv->dev = dev;
 
@@ -720,6 +746,7 @@ static int imx_rproc_remove(struct platform_device *pdev)
 }
 
 static const struct of_device_id imx_rproc_of_match[] = {
+	{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
 	{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
 	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
 	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH V5 8/8] remoteproc: imx_rproc: support i.MX8MN/P
  2021-04-21  2:20 ` peng.fan
@ 2021-04-21  2:20   ` peng.fan
  -1 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX8MN/P remote processor(Cortex-M7) support, we are using ARM
SMCCC to start/stop M core, not using regmap interface.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 87 +++++++++++++++++++++++++++++++---
 1 file changed, 80 insertions(+), 7 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index d26254609a52..3cb901c87a7d 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
  */
 
+#include <linux/arm-smccc.h>
 #include <linux/clk.h>
 #include <linux/err.h>
 #include <linux/interrupt.h>
@@ -50,6 +51,11 @@
 
 #define IMX_RPROC_MEM_MAX		32
 
+#define IMX_SIP_RPROC			0xC2000005
+#define IMX_SIP_RPROC_START		0x00
+#define IMX_SIP_RPROC_STARTED		0x01
+#define IMX_SIP_RPROC_STOP		0x02
+
 /**
  * struct imx_rproc_mem - slim internal memory structure
  * @cpu_addr: MPU virtual address of the memory region
@@ -108,6 +114,36 @@ struct imx_rproc {
 	void __iomem			*rsc_table;
 };
 
+static const struct imx_rproc_att imx_rproc_att_imx8mn[] = {
+	/* dev addr , sys addr  , size	    , flags */
+	/* ITCM   */
+	{ 0x00000000, 0x007E0000, 0x00020000, ATT_OWN },
+	/* OCRAM_S */
+	{ 0x00180000, 0x00180000, 0x00009000, 0 },
+	/* OCRAM */
+	{ 0x00900000, 0x00900000, 0x00020000, 0 },
+	/* OCRAM */
+	{ 0x00920000, 0x00920000, 0x00020000, 0 },
+	/* OCRAM */
+	{ 0x00940000, 0x00940000, 0x00050000, 0 },
+	/* QSPI Code - alias */
+	{ 0x08000000, 0x08000000, 0x08000000, 0 },
+	/* DDR (Code) - alias */
+	{ 0x10000000, 0x40000000, 0x0FFE0000, 0 },
+	/* DTCM */
+	{ 0x20000000, 0x00800000, 0x00020000, ATT_OWN },
+	/* OCRAM_S - alias */
+	{ 0x20180000, 0x00180000, 0x00008000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20200000, 0x00900000, 0x00020000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20220000, 0x00920000, 0x00020000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20240000, 0x00940000, 0x00040000, ATT_OWN },
+	/* DDR (Data) */
+	{ 0x40000000, 0x40000000, 0x80000000, 0 },
+};
+
 static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
 	/* dev addr , sys addr  , size	    , flags */
 	/* TCML - alias */
@@ -194,6 +230,12 @@ static const struct imx_rproc_att imx_rproc_att_imx6sx[] = {
 	{ 0x80000000, 0x80000000, 0x60000000, 0 },
 };
 
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mn = {
+	.att		= imx_rproc_att_imx8mn,
+	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mn),
+	.method		= IMX_RPROC_SMC,
+};
+
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
 	.src_reg	= IMX7D_SRC_SCR,
 	.src_mask	= IMX7D_M4_RST_MASK,
@@ -235,12 +277,24 @@ static int imx_rproc_start(struct rproc *rproc)
 	struct imx_rproc *priv = rproc->priv;
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
+	struct arm_smccc_res res;
 	int ret;
 
-	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
-				 dcfg->src_mask, dcfg->src_start);
+	switch (dcfg->method) {
+	case IMX_RPROC_MMIO:
+		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
+					 dcfg->src_start);
+		break;
+	case IMX_RPROC_SMC:
+		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_START, 0, 0, 0, 0, 0, 0, &res);
+		ret = res.a0;
+		break;
+	default:
+		return -EOPNOTSUPP;
+	}
+
 	if (ret)
-		dev_err(dev, "Failed to enable M4!\n");
+		dev_err(dev, "Failed to enable remote cores!\n");
 
 	return ret;
 }
@@ -250,15 +304,26 @@ static int imx_rproc_stop(struct rproc *rproc)
 	struct imx_rproc *priv = rproc->priv;
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
+	struct arm_smccc_res res;
 	int ret;
 
-	if (dcfg->method == IMX_RPROC_NONE)
+	switch (dcfg->method) {
+	case IMX_RPROC_MMIO:
+		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
+					 dcfg->src_stop);
+		break;
+	case IMX_RPROC_SMC:
+		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STOP, 0, 0, 0, 0, 0, 0, &res);
+		ret = res.a0;
+		if (res.a1)
+			dev_info(dev, "Not in wfi, force stopped\n");
+		break;
+	default:
 		return -EOPNOTSUPP;
+	}
 
-	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
-				 dcfg->src_mask, dcfg->src_stop);
 	if (ret)
-		dev_err(dev, "Failed to stop M4!\n");
+		dev_err(dev, "Failed to stop remote cores\n");
 
 	return ret;
 }
@@ -594,6 +659,7 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
 	struct regmap *regmap;
+	struct arm_smccc_res res;
 	int ret;
 	u32 val;
 
@@ -601,6 +667,11 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
 	case IMX_RPROC_NONE:
 		priv->rproc->state = RPROC_DETACHED;
 		return 0;
+	case IMX_RPROC_SMC:
+		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STARTED, 0, 0, 0, 0, 0, 0, &res);
+		if (res.a0)
+			priv->rproc->state = RPROC_DETACHED;
+		return 0;
 	default:
 		break;
 	}
@@ -751,6 +822,8 @@ static const struct of_device_id imx_rproc_of_match[] = {
 	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
 	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
 	{ .compatible = "fsl,imx8mm-cm4", .data = &imx_rproc_cfg_imx8mq },
+	{ .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn },
+	{ .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn },
 	{},
 };
 MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
-- 
2.30.0


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

* [PATCH V5 8/8] remoteproc: imx_rproc: support i.MX8MN/P
@ 2021-04-21  2:20   ` peng.fan
  0 siblings, 0 replies; 38+ messages in thread
From: peng.fan @ 2021-04-21  2:20 UTC (permalink / raw)
  To: ohad, bjorn.andersson, mathieu.poirier, o.rempel, robh+dt, devicetree
  Cc: shawnguo, s.hauer, kernel, festevam, linux-remoteproc,
	linux-arm-kernel, linux-kernel, Peng Fan

From: Peng Fan <peng.fan@nxp.com>

Add i.MX8MN/P remote processor(Cortex-M7) support, we are using ARM
SMCCC to start/stop M core, not using regmap interface.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c | 87 +++++++++++++++++++++++++++++++---
 1 file changed, 80 insertions(+), 7 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index d26254609a52..3cb901c87a7d 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -3,6 +3,7 @@
  * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
  */
 
+#include <linux/arm-smccc.h>
 #include <linux/clk.h>
 #include <linux/err.h>
 #include <linux/interrupt.h>
@@ -50,6 +51,11 @@
 
 #define IMX_RPROC_MEM_MAX		32
 
+#define IMX_SIP_RPROC			0xC2000005
+#define IMX_SIP_RPROC_START		0x00
+#define IMX_SIP_RPROC_STARTED		0x01
+#define IMX_SIP_RPROC_STOP		0x02
+
 /**
  * struct imx_rproc_mem - slim internal memory structure
  * @cpu_addr: MPU virtual address of the memory region
@@ -108,6 +114,36 @@ struct imx_rproc {
 	void __iomem			*rsc_table;
 };
 
+static const struct imx_rproc_att imx_rproc_att_imx8mn[] = {
+	/* dev addr , sys addr  , size	    , flags */
+	/* ITCM   */
+	{ 0x00000000, 0x007E0000, 0x00020000, ATT_OWN },
+	/* OCRAM_S */
+	{ 0x00180000, 0x00180000, 0x00009000, 0 },
+	/* OCRAM */
+	{ 0x00900000, 0x00900000, 0x00020000, 0 },
+	/* OCRAM */
+	{ 0x00920000, 0x00920000, 0x00020000, 0 },
+	/* OCRAM */
+	{ 0x00940000, 0x00940000, 0x00050000, 0 },
+	/* QSPI Code - alias */
+	{ 0x08000000, 0x08000000, 0x08000000, 0 },
+	/* DDR (Code) - alias */
+	{ 0x10000000, 0x40000000, 0x0FFE0000, 0 },
+	/* DTCM */
+	{ 0x20000000, 0x00800000, 0x00020000, ATT_OWN },
+	/* OCRAM_S - alias */
+	{ 0x20180000, 0x00180000, 0x00008000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20200000, 0x00900000, 0x00020000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20220000, 0x00920000, 0x00020000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20240000, 0x00940000, 0x00040000, ATT_OWN },
+	/* DDR (Data) */
+	{ 0x40000000, 0x40000000, 0x80000000, 0 },
+};
+
 static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
 	/* dev addr , sys addr  , size	    , flags */
 	/* TCML - alias */
@@ -194,6 +230,12 @@ static const struct imx_rproc_att imx_rproc_att_imx6sx[] = {
 	{ 0x80000000, 0x80000000, 0x60000000, 0 },
 };
 
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mn = {
+	.att		= imx_rproc_att_imx8mn,
+	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mn),
+	.method		= IMX_RPROC_SMC,
+};
+
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
 	.src_reg	= IMX7D_SRC_SCR,
 	.src_mask	= IMX7D_M4_RST_MASK,
@@ -235,12 +277,24 @@ static int imx_rproc_start(struct rproc *rproc)
 	struct imx_rproc *priv = rproc->priv;
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
+	struct arm_smccc_res res;
 	int ret;
 
-	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
-				 dcfg->src_mask, dcfg->src_start);
+	switch (dcfg->method) {
+	case IMX_RPROC_MMIO:
+		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
+					 dcfg->src_start);
+		break;
+	case IMX_RPROC_SMC:
+		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_START, 0, 0, 0, 0, 0, 0, &res);
+		ret = res.a0;
+		break;
+	default:
+		return -EOPNOTSUPP;
+	}
+
 	if (ret)
-		dev_err(dev, "Failed to enable M4!\n");
+		dev_err(dev, "Failed to enable remote cores!\n");
 
 	return ret;
 }
@@ -250,15 +304,26 @@ static int imx_rproc_stop(struct rproc *rproc)
 	struct imx_rproc *priv = rproc->priv;
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
+	struct arm_smccc_res res;
 	int ret;
 
-	if (dcfg->method == IMX_RPROC_NONE)
+	switch (dcfg->method) {
+	case IMX_RPROC_MMIO:
+		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
+					 dcfg->src_stop);
+		break;
+	case IMX_RPROC_SMC:
+		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STOP, 0, 0, 0, 0, 0, 0, &res);
+		ret = res.a0;
+		if (res.a1)
+			dev_info(dev, "Not in wfi, force stopped\n");
+		break;
+	default:
 		return -EOPNOTSUPP;
+	}
 
-	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
-				 dcfg->src_mask, dcfg->src_stop);
 	if (ret)
-		dev_err(dev, "Failed to stop M4!\n");
+		dev_err(dev, "Failed to stop remote cores\n");
 
 	return ret;
 }
@@ -594,6 +659,7 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
 	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
 	struct device *dev = priv->dev;
 	struct regmap *regmap;
+	struct arm_smccc_res res;
 	int ret;
 	u32 val;
 
@@ -601,6 +667,11 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
 	case IMX_RPROC_NONE:
 		priv->rproc->state = RPROC_DETACHED;
 		return 0;
+	case IMX_RPROC_SMC:
+		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STARTED, 0, 0, 0, 0, 0, 0, &res);
+		if (res.a0)
+			priv->rproc->state = RPROC_DETACHED;
+		return 0;
 	default:
 		break;
 	}
@@ -751,6 +822,8 @@ static const struct of_device_id imx_rproc_of_match[] = {
 	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
 	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
 	{ .compatible = "fsl,imx8mm-cm4", .data = &imx_rproc_cfg_imx8mq },
+	{ .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn },
+	{ .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn },
 	{},
 };
 MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
-- 
2.30.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
  2021-04-21  2:20 ` peng.fan
@ 2021-04-22 16:56   ` Mathieu Poirier
  -1 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-04-22 16:56 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> V5:
>  Add R-b tag
>  Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
>  comments
> 
> V4:
>  Typo fix
>  patch 4: take state as a check condition
>  patch 5: move regmap lookup/attach to imx_rproc_detect_mode
>  patch 6: add imx_rproc_clk_enable for optional clk
>  patch 8: use switch/case in imx_rproc_detect_mode
> V3:
>  Add A-b tag for Patch 1/2
>  Fix the checkpatch warning for Patch 6,8
> 
> V2:
>  Patch 1/8, use fsl as vendor, typo fix
>  Because patchset [1] has v2 version, patch 5,6,7,8 are adapted that
>  change.
> 
> This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
> parse fsl,auto-boot
> 

One of the request I had from the last revision was to explicitly list what
other patchset this work depends on and what branch it is based of, something I
can't find here.

As such I am dropping this set and won't look at another revision before May
22nd.

> Peng Fan (8):
>   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
>   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
>   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
>   remoteproc: imx_rproc: parse fsl,auto-boot
>   remoteproc: imx_rproc: initial support for mutilple start/stop method
>   remoteproc: imx_rproc: make clk optional
>   remoteproc: imx_rproc: support i.MX7ULP
>   remoteproc: imx_rproc: support i.MX8MN/P
> 
>  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
>  drivers/remoteproc/imx_rproc.c                | 196 +++++++++++++++---
>  2 files changed, 173 insertions(+), 34 deletions(-)
> 
> -- 
> 2.30.0
> 

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

* Re: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-22 16:56   ` Mathieu Poirier
  0 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-04-22 16:56 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> V5:
>  Add R-b tag
>  Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
>  comments
> 
> V4:
>  Typo fix
>  patch 4: take state as a check condition
>  patch 5: move regmap lookup/attach to imx_rproc_detect_mode
>  patch 6: add imx_rproc_clk_enable for optional clk
>  patch 8: use switch/case in imx_rproc_detect_mode
> V3:
>  Add A-b tag for Patch 1/2
>  Fix the checkpatch warning for Patch 6,8
> 
> V2:
>  Patch 1/8, use fsl as vendor, typo fix
>  Because patchset [1] has v2 version, patch 5,6,7,8 are adapted that
>  change.
> 
> This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
> parse fsl,auto-boot
> 

One of the request I had from the last revision was to explicitly list what
other patchset this work depends on and what branch it is based of, something I
can't find here.

As such I am dropping this set and won't look at another revision before May
22nd.

> Peng Fan (8):
>   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
>   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
>   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
>   remoteproc: imx_rproc: parse fsl,auto-boot
>   remoteproc: imx_rproc: initial support for mutilple start/stop method
>   remoteproc: imx_rproc: make clk optional
>   remoteproc: imx_rproc: support i.MX7ULP
>   remoteproc: imx_rproc: support i.MX8MN/P
> 
>  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
>  drivers/remoteproc/imx_rproc.c                | 196 +++++++++++++++---
>  2 files changed, 173 insertions(+), 34 deletions(-)
> 
> -- 
> 2.30.0
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* RE: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
  2021-04-22 16:56   ` Mathieu Poirier
@ 2021-04-23  1:01     ` Peng Fan
  -1 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-04-23  1:01 UTC (permalink / raw)
  To: Mathieu Poirier, Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

Hi Mathieu,

> Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> i.MX7ULP/8MN/8MP
> 
> On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > V5:
> >  Add R-b tag
> >  Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
> > comments
> >
> > V4:
> >  Typo fix
> >  patch 4: take state as a check condition  patch 5: move regmap
> > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > imx_rproc_detect_mode
> > V3:
> >  Add A-b tag for Patch 1/2
> >  Fix the checkpatch warning for Patch 6,8
> >
> > V2:
> >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has v2
> > version, patch 5,6,7,8 are adapted that  change.
> >
> > This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
> > parse fsl,auto-boot
> >
> 
> One of the request I had from the last revision was to explicitly list what other
> patchset this work depends on and what branch it is based of, something I
> can't find here.

Sorry, that patchset has been merged, so I remove that line.
I should mention that that patchset has been merged into Linux-next tree.

> 
> As such I am dropping this set and won't look at another revision before May
> 22nd.

Ah. Is it just because that the dependency patchset not been mentioned or you
have issue applying the patchset that delay the patchset for one month?

Thanks,
Peng.

> 
> > Peng Fan (8):
> >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> >   remoteproc: imx_rproc: parse fsl,auto-boot
> >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> >   remoteproc: imx_rproc: make clk optional
> >   remoteproc: imx_rproc: support i.MX7ULP
> >   remoteproc: imx_rproc: support i.MX8MN/P
> >
> >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> >  drivers/remoteproc/imx_rproc.c                | 196
> +++++++++++++++---
> >  2 files changed, 173 insertions(+), 34 deletions(-)
> >
> > --
> > 2.30.0
> >

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

* RE: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-23  1:01     ` Peng Fan
  0 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-04-23  1:01 UTC (permalink / raw)
  To: Mathieu Poirier, Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

Hi Mathieu,

> Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> i.MX7ULP/8MN/8MP
> 
> On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > V5:
> >  Add R-b tag
> >  Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
> > comments
> >
> > V4:
> >  Typo fix
> >  patch 4: take state as a check condition  patch 5: move regmap
> > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > imx_rproc_detect_mode
> > V3:
> >  Add A-b tag for Patch 1/2
> >  Fix the checkpatch warning for Patch 6,8
> >
> > V2:
> >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has v2
> > version, patch 5,6,7,8 are adapted that  change.
> >
> > This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
> > parse fsl,auto-boot
> >
> 
> One of the request I had from the last revision was to explicitly list what other
> patchset this work depends on and what branch it is based of, something I
> can't find here.

Sorry, that patchset has been merged, so I remove that line.
I should mention that that patchset has been merged into Linux-next tree.

> 
> As such I am dropping this set and won't look at another revision before May
> 22nd.

Ah. Is it just because that the dependency patchset not been mentioned or you
have issue applying the patchset that delay the patchset for one month?

Thanks,
Peng.

> 
> > Peng Fan (8):
> >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> >   remoteproc: imx_rproc: parse fsl,auto-boot
> >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> >   remoteproc: imx_rproc: make clk optional
> >   remoteproc: imx_rproc: support i.MX7ULP
> >   remoteproc: imx_rproc: support i.MX8MN/P
> >
> >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> >  drivers/remoteproc/imx_rproc.c                | 196
> +++++++++++++++---
> >  2 files changed, 173 insertions(+), 34 deletions(-)
> >
> > --
> > 2.30.0
> >

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
  2021-04-23  1:01     ` Peng Fan
@ 2021-04-23 14:50       ` Mathieu Poirier
  -1 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-04-23 14:50 UTC (permalink / raw)
  To: Peng Fan
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
>
> Hi Mathieu,
>
> > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > i.MX7ULP/8MN/8MP
> >
> > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com wrote:
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > V5:
> > >  Add R-b tag
> > >  Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
> > > comments
> > >
> > > V4:
> > >  Typo fix
> > >  patch 4: take state as a check condition  patch 5: move regmap
> > > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > > imx_rproc_detect_mode
> > > V3:
> > >  Add A-b tag for Patch 1/2
> > >  Fix the checkpatch warning for Patch 6,8
> > >
> > > V2:
> > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has v2
> > > version, patch 5,6,7,8 are adapted that  change.
> > >
> > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
> > > parse fsl,auto-boot
> > >
> >
> > One of the request I had from the last revision was to explicitly list what other
> > patchset this work depends on and what branch it is based of, something I
> > can't find here.
>
> Sorry, that patchset has been merged, so I remove that line.
> I should mention that that patchset has been merged into Linux-next tree.
>

And what branch this set should be applied to is missing.

> >
> > As such I am dropping this set and won't look at another revision before May
> > 22nd.
>
> Ah. Is it just because that the dependency patchset not been mentioned or you
> have issue applying the patchset that delay the patchset for one month?
>

Both.

> Thanks,
> Peng.
>
> >
> > > Peng Fan (8):
> > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> > >   remoteproc: imx_rproc: make clk optional
> > >   remoteproc: imx_rproc: support i.MX7ULP
> > >   remoteproc: imx_rproc: support i.MX8MN/P
> > >
> > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > >  drivers/remoteproc/imx_rproc.c                | 196
> > +++++++++++++++---
> > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > >
> > > --
> > > 2.30.0
> > >

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

* Re: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-23 14:50       ` Mathieu Poirier
  0 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-04-23 14:50 UTC (permalink / raw)
  To: Peng Fan
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
>
> Hi Mathieu,
>
> > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > i.MX7ULP/8MN/8MP
> >
> > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com wrote:
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > V5:
> > >  Add R-b tag
> > >  Move the change in detect mode of patch 5 to patch 7 Per Mathieu's
> > > comments
> > >
> > > V4:
> > >  Typo fix
> > >  patch 4: take state as a check condition  patch 5: move regmap
> > > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > > imx_rproc_detect_mode
> > > V3:
> > >  Add A-b tag for Patch 1/2
> > >  Fix the checkpatch warning for Patch 6,8
> > >
> > > V2:
> > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has v2
> > > version, patch 5,6,7,8 are adapted that  change.
> > >
> > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a patch to
> > > parse fsl,auto-boot
> > >
> >
> > One of the request I had from the last revision was to explicitly list what other
> > patchset this work depends on and what branch it is based of, something I
> > can't find here.
>
> Sorry, that patchset has been merged, so I remove that line.
> I should mention that that patchset has been merged into Linux-next tree.
>

And what branch this set should be applied to is missing.

> >
> > As such I am dropping this set and won't look at another revision before May
> > 22nd.
>
> Ah. Is it just because that the dependency patchset not been mentioned or you
> have issue applying the patchset that delay the patchset for one month?
>

Both.

> Thanks,
> Peng.
>
> >
> > > Peng Fan (8):
> > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> > >   remoteproc: imx_rproc: make clk optional
> > >   remoteproc: imx_rproc: support i.MX7ULP
> > >   remoteproc: imx_rproc: support i.MX8MN/P
> > >
> > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > >  drivers/remoteproc/imx_rproc.c                | 196
> > +++++++++++++++---
> > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > >
> > > --
> > > 2.30.0
> > >

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* RE: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
  2021-04-23 14:50       ` Mathieu Poirier
@ 2021-04-23 23:28         ` Peng Fan
  -1 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-04-23 23:28 UTC (permalink / raw)
  To: Mathieu Poirier
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

> Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> i.MX7ULP/8MN/8MP
> 
> On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
> >
> > Hi Mathieu,
> >
> > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > i.MX7ULP/8MN/8MP
> > >
> > > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com
> wrote:
> > > > From: Peng Fan <peng.fan@nxp.com>
> > > >
> > > > V5:
> > > >  Add R-b tag
> > > >  Move the change in detect mode of patch 5 to patch 7 Per
> > > > Mathieu's comments
> > > >
> > > > V4:
> > > >  Typo fix
> > > >  patch 4: take state as a check condition  patch 5: move regmap
> > > > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > > > imx_rproc_detect_mode
> > > > V3:
> > > >  Add A-b tag for Patch 1/2
> > > >  Fix the checkpatch warning for Patch 6,8
> > > >
> > > > V2:
> > > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has
> > > > v2 version, patch 5,6,7,8 are adapted that  change.
> > > >
> > > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a
> > > > patch to parse fsl,auto-boot
> > > >
> > >
> > > One of the request I had from the last revision was to explicitly
> > > list what other patchset this work depends on and what branch it is
> > > based of, something I can't find here.
> >
> > Sorry, that patchset has been merged, so I remove that line.
> > I should mention that that patchset has been merged into Linux-next tree.
> >
> 
> And what branch this set should be applied to is missing.

I take latest linux-next/master for my upstream new feature work.

> 
> > >
> > > As such I am dropping this set and won't look at another revision
> > > before May 22nd.
> >
> > Ah. Is it just because that the dependency patchset not been mentioned
> > or you have issue applying the patchset that delay the patchset for one
> month?
> >
> 
> Both.

I replay my flow:
git fetch linux-next
git checkout linux-next/master -b master-next-4-24-2021
pwclient list -w "Peng Fan (OSS)" -s New | grep V5 | awk '{print $1}' | xargs -I {} pwclient git-am {}

It could successfully apply the patchset.
Applying patch #12215291 using 'git am'
Description: [V5,1/8] dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
Applying: dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
Applying patch #12215293 using 'git am'
Description: [V5,2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
Applying: dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
Applying patch #12215295 using 'git am'
Description: [V5,3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
Applying: dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
Applying patch #12215297 using 'git am'
Description: [V5,4/8] remoteproc: imx_rproc: parse fsl,auto-boot
Applying: remoteproc: imx_rproc: parse fsl,auto-boot
Applying patch #12215299 using 'git am'
Description: [V5,5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
Applying: remoteproc: imx_rproc: initial support for mutilple start/stop method
Applying patch #12215301 using 'git am'
Description: [V5,6/8] remoteproc: imx_rproc: make clk optional
Applying: remoteproc: imx_rproc: make clk optional
Applying patch #12215303 using 'git am'
Description: [V5,7/8] remoteproc: imx_rproc: support i.MX7ULP
Applying: remoteproc: imx_rproc: support i.MX7ULP
Applying patch #12215305 using 'git am'
Description: [V5,8/8] remoteproc: imx_rproc: support i.MX8MN/P
Applying: remoteproc: imx_rproc: support i.MX8MN/P


If anything wrong my work flow conflicts with Linux remoteproc subsystem upstream flow,
please correct me, and I'll follow.

Thanks for your time and patience on reviewing my patches. Sorry for the inconvince
that I bring in.

Anyway please share me your flow to apply patches, I will try to avoid unhappy things
in following patches. 

Thanks,
Peng.

> 
> > Thanks,
> > Peng.
> >
> > >
> > > > Peng Fan (8):
> > > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > > >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> > > >   remoteproc: imx_rproc: make clk optional
> > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > >   remoteproc: imx_rproc: support i.MX8MN/P
> > > >
> > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > > >  drivers/remoteproc/imx_rproc.c                | 196
> > > +++++++++++++++---
> > > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > > >
> > > > --
> > > > 2.30.0
> > > >

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

* RE: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-23 23:28         ` Peng Fan
  0 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-04-23 23:28 UTC (permalink / raw)
  To: Mathieu Poirier
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

> Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> i.MX7ULP/8MN/8MP
> 
> On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
> >
> > Hi Mathieu,
> >
> > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > i.MX7ULP/8MN/8MP
> > >
> > > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com
> wrote:
> > > > From: Peng Fan <peng.fan@nxp.com>
> > > >
> > > > V5:
> > > >  Add R-b tag
> > > >  Move the change in detect mode of patch 5 to patch 7 Per
> > > > Mathieu's comments
> > > >
> > > > V4:
> > > >  Typo fix
> > > >  patch 4: take state as a check condition  patch 5: move regmap
> > > > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > > > imx_rproc_detect_mode
> > > > V3:
> > > >  Add A-b tag for Patch 1/2
> > > >  Fix the checkpatch warning for Patch 6,8
> > > >
> > > > V2:
> > > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has
> > > > v2 version, patch 5,6,7,8 are adapted that  change.
> > > >
> > > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a
> > > > patch to parse fsl,auto-boot
> > > >
> > >
> > > One of the request I had from the last revision was to explicitly
> > > list what other patchset this work depends on and what branch it is
> > > based of, something I can't find here.
> >
> > Sorry, that patchset has been merged, so I remove that line.
> > I should mention that that patchset has been merged into Linux-next tree.
> >
> 
> And what branch this set should be applied to is missing.

I take latest linux-next/master for my upstream new feature work.

> 
> > >
> > > As such I am dropping this set and won't look at another revision
> > > before May 22nd.
> >
> > Ah. Is it just because that the dependency patchset not been mentioned
> > or you have issue applying the patchset that delay the patchset for one
> month?
> >
> 
> Both.

I replay my flow:
git fetch linux-next
git checkout linux-next/master -b master-next-4-24-2021
pwclient list -w "Peng Fan (OSS)" -s New | grep V5 | awk '{print $1}' | xargs -I {} pwclient git-am {}

It could successfully apply the patchset.
Applying patch #12215291 using 'git am'
Description: [V5,1/8] dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
Applying: dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
Applying patch #12215293 using 'git am'
Description: [V5,2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
Applying: dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
Applying patch #12215295 using 'git am'
Description: [V5,3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
Applying: dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
Applying patch #12215297 using 'git am'
Description: [V5,4/8] remoteproc: imx_rproc: parse fsl,auto-boot
Applying: remoteproc: imx_rproc: parse fsl,auto-boot
Applying patch #12215299 using 'git am'
Description: [V5,5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
Applying: remoteproc: imx_rproc: initial support for mutilple start/stop method
Applying patch #12215301 using 'git am'
Description: [V5,6/8] remoteproc: imx_rproc: make clk optional
Applying: remoteproc: imx_rproc: make clk optional
Applying patch #12215303 using 'git am'
Description: [V5,7/8] remoteproc: imx_rproc: support i.MX7ULP
Applying: remoteproc: imx_rproc: support i.MX7ULP
Applying patch #12215305 using 'git am'
Description: [V5,8/8] remoteproc: imx_rproc: support i.MX8MN/P
Applying: remoteproc: imx_rproc: support i.MX8MN/P


If anything wrong my work flow conflicts with Linux remoteproc subsystem upstream flow,
please correct me, and I'll follow.

Thanks for your time and patience on reviewing my patches. Sorry for the inconvince
that I bring in.

Anyway please share me your flow to apply patches, I will try to avoid unhappy things
in following patches. 

Thanks,
Peng.

> 
> > Thanks,
> > Peng.
> >
> > >
> > > > Peng Fan (8):
> > > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > > >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> > > >   remoteproc: imx_rproc: make clk optional
> > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > >   remoteproc: imx_rproc: support i.MX8MN/P
> > > >
> > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > > >  drivers/remoteproc/imx_rproc.c                | 196
> > > +++++++++++++++---
> > > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > > >
> > > > --
> > > > 2.30.0
> > > >
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
  2021-04-23 23:28         ` Peng Fan
@ 2021-04-26 15:46           ` Mathieu Poirier
  -1 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-04-26 15:46 UTC (permalink / raw)
  To: Peng Fan
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

On Fri, Apr 23, 2021 at 11:28:00PM +0000, Peng Fan wrote:
> > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > i.MX7ULP/8MN/8MP
> > 
> > On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
> > >
> > > Hi Mathieu,
> > >
> > > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > > i.MX7ULP/8MN/8MP
> > > >
> > > > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com
> > wrote:
> > > > > From: Peng Fan <peng.fan@nxp.com>
> > > > >
> > > > > V5:
> > > > >  Add R-b tag
> > > > >  Move the change in detect mode of patch 5 to patch 7 Per
> > > > > Mathieu's comments
> > > > >
> > > > > V4:
> > > > >  Typo fix
> > > > >  patch 4: take state as a check condition  patch 5: move regmap
> > > > > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > > > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > > > > imx_rproc_detect_mode
> > > > > V3:
> > > > >  Add A-b tag for Patch 1/2
> > > > >  Fix the checkpatch warning for Patch 6,8
> > > > >
> > > > > V2:
> > > > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has
> > > > > v2 version, patch 5,6,7,8 are adapted that  change.
> > > > >
> > > > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a
> > > > > patch to parse fsl,auto-boot
> > > > >
> > > >
> > > > One of the request I had from the last revision was to explicitly
> > > > list what other patchset this work depends on and what branch it is
> > > > based of, something I can't find here.
> > >
> > > Sorry, that patchset has been merged, so I remove that line.
> > > I should mention that that patchset has been merged into Linux-next tree.
> > >
> > 
> > And what branch this set should be applied to is missing.
> 
> I take latest linux-next/master for my upstream new feature work.
> 
> > 
> > > >
> > > > As such I am dropping this set and won't look at another revision
> > > > before May 22nd.
> > >
> > > Ah. Is it just because that the dependency patchset not been mentioned
> > > or you have issue applying the patchset that delay the patchset for one
> > month?
> > >
> > 
> > Both.
> 
> I replay my flow:
> git fetch linux-next
> git checkout linux-next/master -b master-next-4-24-2021
> pwclient list -w "Peng Fan (OSS)" -s New | grep V5 | awk '{print $1}' | xargs -I {} pwclient git-am {}
> 
> It could successfully apply the patchset.
> Applying patch #12215291 using 'git am'
> Description: [V5,1/8] dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> Applying: dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> Applying patch #12215293 using 'git am'
> Description: [V5,2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> Applying: dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> Applying patch #12215295 using 'git am'
> Description: [V5,3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> Applying: dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> Applying patch #12215297 using 'git am'
> Description: [V5,4/8] remoteproc: imx_rproc: parse fsl,auto-boot
> Applying: remoteproc: imx_rproc: parse fsl,auto-boot
> Applying patch #12215299 using 'git am'
> Description: [V5,5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
> Applying: remoteproc: imx_rproc: initial support for mutilple start/stop method
> Applying patch #12215301 using 'git am'
> Description: [V5,6/8] remoteproc: imx_rproc: make clk optional
> Applying: remoteproc: imx_rproc: make clk optional
> Applying patch #12215303 using 'git am'
> Description: [V5,7/8] remoteproc: imx_rproc: support i.MX7ULP
> Applying: remoteproc: imx_rproc: support i.MX7ULP
> Applying patch #12215305 using 'git am'
> Description: [V5,8/8] remoteproc: imx_rproc: support i.MX8MN/P
> Applying: remoteproc: imx_rproc: support i.MX8MN/P
> 
> 
> If anything wrong my work flow conflicts with Linux remoteproc subsystem upstream flow,
> please correct me, and I'll follow.
> 
> Thanks for your time and patience on reviewing my patches. Sorry for the inconvince
> that I bring in.
> 
> Anyway please share me your flow to apply patches, I will try to avoid unhappy things
> in following patches. 
>

All I asked is that you list the branch your work is based on _and_ any
dependencies, something you did not do.

I review hundreds of patchsets every year and knowing exactly how to work with a
series goes a long way in saving precious time, time that can be used to
review other people's submissions.

I am not angry at you but at the same time I can't review your patches if you
are not ready to help me do so.
 
> Thanks,
> Peng.
> 
> > 
> > > Thanks,
> > > Peng.
> > >
> > > >
> > > > > Peng Fan (8):
> > > > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > > > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > > > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > > > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > > > >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> > > > >   remoteproc: imx_rproc: make clk optional
> > > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > > >   remoteproc: imx_rproc: support i.MX8MN/P
> > > > >
> > > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > > > >  drivers/remoteproc/imx_rproc.c                | 196
> > > > +++++++++++++++---
> > > > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > > > >
> > > > > --
> > > > > 2.30.0
> > > > >

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

* Re: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-26 15:46           ` Mathieu Poirier
  0 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-04-26 15:46 UTC (permalink / raw)
  To: Peng Fan
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

On Fri, Apr 23, 2021 at 11:28:00PM +0000, Peng Fan wrote:
> > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > i.MX7ULP/8MN/8MP
> > 
> > On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
> > >
> > > Hi Mathieu,
> > >
> > > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > > i.MX7ULP/8MN/8MP
> > > >
> > > > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com
> > wrote:
> > > > > From: Peng Fan <peng.fan@nxp.com>
> > > > >
> > > > > V5:
> > > > >  Add R-b tag
> > > > >  Move the change in detect mode of patch 5 to patch 7 Per
> > > > > Mathieu's comments
> > > > >
> > > > > V4:
> > > > >  Typo fix
> > > > >  patch 4: take state as a check condition  patch 5: move regmap
> > > > > lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > > > imx_rproc_clk_enable for optional clk  patch 8: use switch/case in
> > > > > imx_rproc_detect_mode
> > > > > V3:
> > > > >  Add A-b tag for Patch 1/2
> > > > >  Fix the checkpatch warning for Patch 6,8
> > > > >
> > > > > V2:
> > > > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1] has
> > > > > v2 version, patch 5,6,7,8 are adapted that  change.
> > > > >
> > > > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a
> > > > > patch to parse fsl,auto-boot
> > > > >
> > > >
> > > > One of the request I had from the last revision was to explicitly
> > > > list what other patchset this work depends on and what branch it is
> > > > based of, something I can't find here.
> > >
> > > Sorry, that patchset has been merged, so I remove that line.
> > > I should mention that that patchset has been merged into Linux-next tree.
> > >
> > 
> > And what branch this set should be applied to is missing.
> 
> I take latest linux-next/master for my upstream new feature work.
> 
> > 
> > > >
> > > > As such I am dropping this set and won't look at another revision
> > > > before May 22nd.
> > >
> > > Ah. Is it just because that the dependency patchset not been mentioned
> > > or you have issue applying the patchset that delay the patchset for one
> > month?
> > >
> > 
> > Both.
> 
> I replay my flow:
> git fetch linux-next
> git checkout linux-next/master -b master-next-4-24-2021
> pwclient list -w "Peng Fan (OSS)" -s New | grep V5 | awk '{print $1}' | xargs -I {} pwclient git-am {}
> 
> It could successfully apply the patchset.
> Applying patch #12215291 using 'git am'
> Description: [V5,1/8] dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> Applying: dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> Applying patch #12215293 using 'git am'
> Description: [V5,2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> Applying: dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> Applying patch #12215295 using 'git am'
> Description: [V5,3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> Applying: dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> Applying patch #12215297 using 'git am'
> Description: [V5,4/8] remoteproc: imx_rproc: parse fsl,auto-boot
> Applying: remoteproc: imx_rproc: parse fsl,auto-boot
> Applying patch #12215299 using 'git am'
> Description: [V5,5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
> Applying: remoteproc: imx_rproc: initial support for mutilple start/stop method
> Applying patch #12215301 using 'git am'
> Description: [V5,6/8] remoteproc: imx_rproc: make clk optional
> Applying: remoteproc: imx_rproc: make clk optional
> Applying patch #12215303 using 'git am'
> Description: [V5,7/8] remoteproc: imx_rproc: support i.MX7ULP
> Applying: remoteproc: imx_rproc: support i.MX7ULP
> Applying patch #12215305 using 'git am'
> Description: [V5,8/8] remoteproc: imx_rproc: support i.MX8MN/P
> Applying: remoteproc: imx_rproc: support i.MX8MN/P
> 
> 
> If anything wrong my work flow conflicts with Linux remoteproc subsystem upstream flow,
> please correct me, and I'll follow.
> 
> Thanks for your time and patience on reviewing my patches. Sorry for the inconvince
> that I bring in.
> 
> Anyway please share me your flow to apply patches, I will try to avoid unhappy things
> in following patches. 
>

All I asked is that you list the branch your work is based on _and_ any
dependencies, something you did not do.

I review hundreds of patchsets every year and knowing exactly how to work with a
series goes a long way in saving precious time, time that can be used to
review other people's submissions.

I am not angry at you but at the same time I can't review your patches if you
are not ready to help me do so.
 
> Thanks,
> Peng.
> 
> > 
> > > Thanks,
> > > Peng.
> > >
> > > >
> > > > > Peng Fan (8):
> > > > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > > > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > > > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > > > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > > > >   remoteproc: imx_rproc: initial support for mutilple start/stop method
> > > > >   remoteproc: imx_rproc: make clk optional
> > > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > > >   remoteproc: imx_rproc: support i.MX8MN/P
> > > > >
> > > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > > > >  drivers/remoteproc/imx_rproc.c                | 196
> > > > +++++++++++++++---
> > > > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > > > >
> > > > > --
> > > > > 2.30.0
> > > > >

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* RE: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
  2021-04-26 15:46           ` Mathieu Poirier
@ 2021-04-26 23:45             ` Peng Fan
  -1 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-04-26 23:45 UTC (permalink / raw)
  To: Mathieu Poirier
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

> Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> i.MX7ULP/8MN/8MP
> 
> On Fri, Apr 23, 2021 at 11:28:00PM +0000, Peng Fan wrote:
> > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > i.MX7ULP/8MN/8MP
> > >
> > > On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
> > > >
> > > > Hi Mathieu,
> > > >
> > > > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > > > i.MX7ULP/8MN/8MP
> > > > >
> > > > > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com
> > > wrote:
> > > > > > From: Peng Fan <peng.fan@nxp.com>
> > > > > >
> > > > > > V5:
> > > > > >  Add R-b tag
> > > > > >  Move the change in detect mode of patch 5 to patch 7 Per
> > > > > > Mathieu's comments
> > > > > >
> > > > > > V4:
> > > > > >  Typo fix
> > > > > >  patch 4: take state as a check condition  patch 5: move
> > > > > > regmap lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > > > > imx_rproc_clk_enable for optional clk  patch 8: use
> > > > > > switch/case in imx_rproc_detect_mode
> > > > > > V3:
> > > > > >  Add A-b tag for Patch 1/2
> > > > > >  Fix the checkpatch warning for Patch 6,8
> > > > > >
> > > > > > V2:
> > > > > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1]
> > > > > > has
> > > > > > v2 version, patch 5,6,7,8 are adapted that  change.
> > > > > >
> > > > > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a
> > > > > > patch to parse fsl,auto-boot
> > > > > >
> > > > >
> > > > > One of the request I had from the last revision was to
> > > > > explicitly list what other patchset this work depends on and
> > > > > what branch it is based of, something I can't find here.
> > > >
> > > > Sorry, that patchset has been merged, so I remove that line.
> > > > I should mention that that patchset has been merged into Linux-next
> tree.
> > > >
> > >
> > > And what branch this set should be applied to is missing.
> >
> > I take latest linux-next/master for my upstream new feature work.
> >
> > >
> > > > >
> > > > > As such I am dropping this set and won't look at another
> > > > > revision before May 22nd.
> > > >
> > > > Ah. Is it just because that the dependency patchset not been
> > > > mentioned or you have issue applying the patchset that delay the
> > > > patchset for one
> > > month?
> > > >
> > >
> > > Both.
> >
> > I replay my flow:
> > git fetch linux-next
> > git checkout linux-next/master -b master-next-4-24-2021 pwclient list
> > -w "Peng Fan (OSS)" -s New | grep V5 | awk '{print $1}' | xargs -I {}
> > pwclient git-am {}
> >
> > It could successfully apply the patchset.
> > Applying patch #12215291 using 'git am'
> > Description: [V5,1/8] dt-bindings: remoteproc: imx_rproc: add
> > fsl,auto-boot property
> > Applying: dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot
> > property Applying patch #12215293 using 'git am'
> > Description: [V5,2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP
> > support
> > Applying: dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > Applying patch #12215295 using 'git am'
> > Description: [V5,3/8] dt-bindings: remoteproc: imx_rproc: support
> > i.MX8MN/P
> > Applying: dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > Applying patch #12215297 using 'git am'
> > Description: [V5,4/8] remoteproc: imx_rproc: parse fsl,auto-boot
> > Applying: remoteproc: imx_rproc: parse fsl,auto-boot Applying patch
> > #12215299 using 'git am'
> > Description: [V5,5/8] remoteproc: imx_rproc: initial support for
> > mutilple start/stop method
> > Applying: remoteproc: imx_rproc: initial support for mutilple
> > start/stop method Applying patch #12215301 using 'git am'
> > Description: [V5,6/8] remoteproc: imx_rproc: make clk optional
> > Applying: remoteproc: imx_rproc: make clk optional Applying patch
> > #12215303 using 'git am'
> > Description: [V5,7/8] remoteproc: imx_rproc: support i.MX7ULP
> > Applying: remoteproc: imx_rproc: support i.MX7ULP Applying patch
> > #12215305 using 'git am'
> > Description: [V5,8/8] remoteproc: imx_rproc: support i.MX8MN/P
> > Applying: remoteproc: imx_rproc: support i.MX8MN/P
> >
> >
> > If anything wrong my work flow conflicts with Linux remoteproc
> > subsystem upstream flow, please correct me, and I'll follow.
> >
> > Thanks for your time and patience on reviewing my patches. Sorry for
> > the inconvince that I bring in.
> >
> > Anyway please share me your flow to apply patches, I will try to avoid
> > unhappy things in following patches.
> >
> 
> All I asked is that you list the branch your work is based on _and_ any
> dependencies, something you did not do.

ok, got it.

> 
> I review hundreds of patchsets every year and knowing exactly how to work
> with a series goes a long way in saving precious time, time that can be used to
> review other people's submissions.
> 
> I am not angry at you but at the same time I can't review your patches if you
> are not ready to help me do so.

Understand. Since one month is a bit long period, I'll post v6 later to avoid
potential conflicts. Or if you could help check this V5 patchset based on
Linux-next/master, that would be appreciated.

Thanks,
Peng.

> 
> > Thanks,
> > Peng.
> >
> > >
> > > > Thanks,
> > > > Peng.
> > > >
> > > > >
> > > > > > Peng Fan (8):
> > > > > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > > > > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > > > > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > > > > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > > > > >   remoteproc: imx_rproc: initial support for mutilple start/stop
> method
> > > > > >   remoteproc: imx_rproc: make clk optional
> > > > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > > > >   remoteproc: imx_rproc: support i.MX8MN/P
> > > > > >
> > > > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > > > > >  drivers/remoteproc/imx_rproc.c                | 196
> > > > > +++++++++++++++---
> > > > > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > > > > >
> > > > > > --
> > > > > > 2.30.0
> > > > > >

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

* RE: [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP
@ 2021-04-26 23:45             ` Peng Fan
  0 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-04-26 23:45 UTC (permalink / raw)
  To: Mathieu Poirier
  Cc: Peng Fan (OSS),
	ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

> Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> i.MX7ULP/8MN/8MP
> 
> On Fri, Apr 23, 2021 at 11:28:00PM +0000, Peng Fan wrote:
> > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > i.MX7ULP/8MN/8MP
> > >
> > > On Thu, 22 Apr 2021 at 19:01, Peng Fan <peng.fan@nxp.com> wrote:
> > > >
> > > > Hi Mathieu,
> > > >
> > > > > Subject: Re: [PATCH V5 0/8] remoteproc: imx_rproc: support
> > > > > i.MX7ULP/8MN/8MP
> > > > >
> > > > > On Wed, Apr 21, 2021 at 10:20:14AM +0800, peng.fan@oss.nxp.com
> > > wrote:
> > > > > > From: Peng Fan <peng.fan@nxp.com>
> > > > > >
> > > > > > V5:
> > > > > >  Add R-b tag
> > > > > >  Move the change in detect mode of patch 5 to patch 7 Per
> > > > > > Mathieu's comments
> > > > > >
> > > > > > V4:
> > > > > >  Typo fix
> > > > > >  patch 4: take state as a check condition  patch 5: move
> > > > > > regmap lookup/attach to imx_rproc_detect_mode  patch 6: add
> > > > > > imx_rproc_clk_enable for optional clk  patch 8: use
> > > > > > switch/case in imx_rproc_detect_mode
> > > > > > V3:
> > > > > >  Add A-b tag for Patch 1/2
> > > > > >  Fix the checkpatch warning for Patch 6,8
> > > > > >
> > > > > > V2:
> > > > > >  Patch 1/8, use fsl as vendor, typo fix  Because patchset [1]
> > > > > > has
> > > > > > v2 version, patch 5,6,7,8 are adapted that  change.
> > > > > >
> > > > > > This patchset is to support i.MX7ULP/8MN/8MP, also includes a
> > > > > > patch to parse fsl,auto-boot
> > > > > >
> > > > >
> > > > > One of the request I had from the last revision was to
> > > > > explicitly list what other patchset this work depends on and
> > > > > what branch it is based of, something I can't find here.
> > > >
> > > > Sorry, that patchset has been merged, so I remove that line.
> > > > I should mention that that patchset has been merged into Linux-next
> tree.
> > > >
> > >
> > > And what branch this set should be applied to is missing.
> >
> > I take latest linux-next/master for my upstream new feature work.
> >
> > >
> > > > >
> > > > > As such I am dropping this set and won't look at another
> > > > > revision before May 22nd.
> > > >
> > > > Ah. Is it just because that the dependency patchset not been
> > > > mentioned or you have issue applying the patchset that delay the
> > > > patchset for one
> > > month?
> > > >
> > >
> > > Both.
> >
> > I replay my flow:
> > git fetch linux-next
> > git checkout linux-next/master -b master-next-4-24-2021 pwclient list
> > -w "Peng Fan (OSS)" -s New | grep V5 | awk '{print $1}' | xargs -I {}
> > pwclient git-am {}
> >
> > It could successfully apply the patchset.
> > Applying patch #12215291 using 'git am'
> > Description: [V5,1/8] dt-bindings: remoteproc: imx_rproc: add
> > fsl,auto-boot property
> > Applying: dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot
> > property Applying patch #12215293 using 'git am'
> > Description: [V5,2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP
> > support
> > Applying: dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > Applying patch #12215295 using 'git am'
> > Description: [V5,3/8] dt-bindings: remoteproc: imx_rproc: support
> > i.MX8MN/P
> > Applying: dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > Applying patch #12215297 using 'git am'
> > Description: [V5,4/8] remoteproc: imx_rproc: parse fsl,auto-boot
> > Applying: remoteproc: imx_rproc: parse fsl,auto-boot Applying patch
> > #12215299 using 'git am'
> > Description: [V5,5/8] remoteproc: imx_rproc: initial support for
> > mutilple start/stop method
> > Applying: remoteproc: imx_rproc: initial support for mutilple
> > start/stop method Applying patch #12215301 using 'git am'
> > Description: [V5,6/8] remoteproc: imx_rproc: make clk optional
> > Applying: remoteproc: imx_rproc: make clk optional Applying patch
> > #12215303 using 'git am'
> > Description: [V5,7/8] remoteproc: imx_rproc: support i.MX7ULP
> > Applying: remoteproc: imx_rproc: support i.MX7ULP Applying patch
> > #12215305 using 'git am'
> > Description: [V5,8/8] remoteproc: imx_rproc: support i.MX8MN/P
> > Applying: remoteproc: imx_rproc: support i.MX8MN/P
> >
> >
> > If anything wrong my work flow conflicts with Linux remoteproc
> > subsystem upstream flow, please correct me, and I'll follow.
> >
> > Thanks for your time and patience on reviewing my patches. Sorry for
> > the inconvince that I bring in.
> >
> > Anyway please share me your flow to apply patches, I will try to avoid
> > unhappy things in following patches.
> >
> 
> All I asked is that you list the branch your work is based on _and_ any
> dependencies, something you did not do.

ok, got it.

> 
> I review hundreds of patchsets every year and knowing exactly how to work
> with a series goes a long way in saving precious time, time that can be used to
> review other people's submissions.
> 
> I am not angry at you but at the same time I can't review your patches if you
> are not ready to help me do so.

Understand. Since one month is a bit long period, I'll post v6 later to avoid
potential conflicts. Or if you could help check this V5 patchset based on
Linux-next/master, that would be appreciated.

Thanks,
Peng.

> 
> > Thanks,
> > Peng.
> >
> > >
> > > > Thanks,
> > > > Peng.
> > > >
> > > > >
> > > > > > Peng Fan (8):
> > > > > >   dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property
> > > > > >   dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support
> > > > > >   dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P
> > > > > >   remoteproc: imx_rproc: parse fsl,auto-boot
> > > > > >   remoteproc: imx_rproc: initial support for mutilple start/stop
> method
> > > > > >   remoteproc: imx_rproc: make clk optional
> > > > > >   remoteproc: imx_rproc: support i.MX7ULP
> > > > > >   remoteproc: imx_rproc: support i.MX8MN/P
> > > > > >
> > > > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  11 +-
> > > > > >  drivers/remoteproc/imx_rproc.c                | 196
> > > > > +++++++++++++++---
> > > > > >  2 files changed, 173 insertions(+), 34 deletions(-)
> > > > > >
> > > > > > --
> > > > > > 2.30.0
> > > > > >

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V5 8/8] remoteproc: imx_rproc: support i.MX8MN/P
  2021-04-21  2:20   ` peng.fan
@ 2021-05-03 16:25     ` Mathieu Poirier
  -1 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-05-03 16:25 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:22AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Add i.MX8MN/P remote processor(Cortex-M7) support, we are using ARM
> SMCCC to start/stop M core, not using regmap interface.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 87 +++++++++++++++++++++++++++++++---
>  1 file changed, 80 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index d26254609a52..3cb901c87a7d 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -3,6 +3,7 @@
>   * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
>   */
>  
> +#include <linux/arm-smccc.h>
>  #include <linux/clk.h>
>  #include <linux/err.h>
>  #include <linux/interrupt.h>
> @@ -50,6 +51,11 @@
>  
>  #define IMX_RPROC_MEM_MAX		32
>  
> +#define IMX_SIP_RPROC			0xC2000005
> +#define IMX_SIP_RPROC_START		0x00
> +#define IMX_SIP_RPROC_STARTED		0x01
> +#define IMX_SIP_RPROC_STOP		0x02
> +
>  /**
>   * struct imx_rproc_mem - slim internal memory structure
>   * @cpu_addr: MPU virtual address of the memory region
> @@ -108,6 +114,36 @@ struct imx_rproc {
>  	void __iomem			*rsc_table;
>  };
>  
> +static const struct imx_rproc_att imx_rproc_att_imx8mn[] = {
> +	/* dev addr , sys addr  , size	    , flags */
> +	/* ITCM   */
> +	{ 0x00000000, 0x007E0000, 0x00020000, ATT_OWN },
> +	/* OCRAM_S */
> +	{ 0x00180000, 0x00180000, 0x00009000, 0 },
> +	/* OCRAM */
> +	{ 0x00900000, 0x00900000, 0x00020000, 0 },
> +	/* OCRAM */
> +	{ 0x00920000, 0x00920000, 0x00020000, 0 },
> +	/* OCRAM */
> +	{ 0x00940000, 0x00940000, 0x00050000, 0 },
> +	/* QSPI Code - alias */
> +	{ 0x08000000, 0x08000000, 0x08000000, 0 },
> +	/* DDR (Code) - alias */
> +	{ 0x10000000, 0x40000000, 0x0FFE0000, 0 },
> +	/* DTCM */
> +	{ 0x20000000, 0x00800000, 0x00020000, ATT_OWN },
> +	/* OCRAM_S - alias */
> +	{ 0x20180000, 0x00180000, 0x00008000, ATT_OWN },
> +	/* OCRAM */
> +	{ 0x20200000, 0x00900000, 0x00020000, ATT_OWN },
> +	/* OCRAM */
> +	{ 0x20220000, 0x00920000, 0x00020000, ATT_OWN },
> +	/* OCRAM */
> +	{ 0x20240000, 0x00940000, 0x00040000, ATT_OWN },
> +	/* DDR (Data) */
> +	{ 0x40000000, 0x40000000, 0x80000000, 0 },
> +};
> +
>  static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
>  	/* dev addr , sys addr  , size	    , flags */
>  	/* TCML - alias */
> @@ -194,6 +230,12 @@ static const struct imx_rproc_att imx_rproc_att_imx6sx[] = {
>  	{ 0x80000000, 0x80000000, 0x60000000, 0 },
>  };
>  
> +static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mn = {
> +	.att		= imx_rproc_att_imx8mn,
> +	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mn),
> +	.method		= IMX_RPROC_SMC,
> +};
> +
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
>  	.src_reg	= IMX7D_SRC_SCR,
>  	.src_mask	= IMX7D_M4_RST_MASK,
> @@ -235,12 +277,24 @@ static int imx_rproc_start(struct rproc *rproc)
>  	struct imx_rproc *priv = rproc->priv;
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
> +	struct arm_smccc_res res;
>  	int ret;
>  
> -	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
> -				 dcfg->src_mask, dcfg->src_start);
> +	switch (dcfg->method) {
> +	case IMX_RPROC_MMIO:
> +		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
> +					 dcfg->src_start);
> +		break;
> +	case IMX_RPROC_SMC:
> +		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_START, 0, 0, 0, 0, 0, 0, &res);
> +		ret = res.a0;
> +		break;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +
>  	if (ret)
> -		dev_err(dev, "Failed to enable M4!\n");
> +		dev_err(dev, "Failed to enable remote cores!\n");

s/cores/core

>  
>  	return ret;
>  }
> @@ -250,15 +304,26 @@ static int imx_rproc_stop(struct rproc *rproc)
>  	struct imx_rproc *priv = rproc->priv;
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
> +	struct arm_smccc_res res;
>  	int ret;
>  
> -	if (dcfg->method == IMX_RPROC_NONE)
> +	switch (dcfg->method) {
> +	case IMX_RPROC_MMIO:
> +		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
> +					 dcfg->src_stop);
> +		break;
> +	case IMX_RPROC_SMC:
> +		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STOP, 0, 0, 0, 0, 0, 0, &res);
> +		ret = res.a0;
> +		if (res.a1)
> +			dev_info(dev, "Not in wfi, force stopped\n");
> +		break;
> +	default:
>  		return -EOPNOTSUPP;
> +	}
>  
> -	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
> -				 dcfg->src_mask, dcfg->src_stop);
>  	if (ret)
> -		dev_err(dev, "Failed to stop M4!\n");
> +		dev_err(dev, "Failed to stop remote cores\n");

s/cores/core

>  
>  	return ret;
>  }
> @@ -594,6 +659,7 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
>  	struct regmap *regmap;
> +	struct arm_smccc_res res;
>  	int ret;
>  	u32 val;
>  
> @@ -601,6 +667,11 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
>  	case IMX_RPROC_NONE:
>  		priv->rproc->state = RPROC_DETACHED;
>  		return 0;
> +	case IMX_RPROC_SMC:
> +		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STARTED, 0, 0, 0, 0, 0, 0, &res);
> +		if (res.a0)
> +			priv->rproc->state = RPROC_DETACHED;
> +		return 0;
>  	default:
>  		break;
>  	}
> @@ -751,6 +822,8 @@ static const struct of_device_id imx_rproc_of_match[] = {
>  	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
>  	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
>  	{ .compatible = "fsl,imx8mm-cm4", .data = &imx_rproc_cfg_imx8mq },
> +	{ .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn },
> +	{ .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn },

With the above:

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  	{},
>  };
>  MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
> -- 
> 2.30.0
> 

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

* Re: [PATCH V5 8/8] remoteproc: imx_rproc: support i.MX8MN/P
@ 2021-05-03 16:25     ` Mathieu Poirier
  0 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-05-03 16:25 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:22AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Add i.MX8MN/P remote processor(Cortex-M7) support, we are using ARM
> SMCCC to start/stop M core, not using regmap interface.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 87 +++++++++++++++++++++++++++++++---
>  1 file changed, 80 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index d26254609a52..3cb901c87a7d 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -3,6 +3,7 @@
>   * Copyright (c) 2017 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
>   */
>  
> +#include <linux/arm-smccc.h>
>  #include <linux/clk.h>
>  #include <linux/err.h>
>  #include <linux/interrupt.h>
> @@ -50,6 +51,11 @@
>  
>  #define IMX_RPROC_MEM_MAX		32
>  
> +#define IMX_SIP_RPROC			0xC2000005
> +#define IMX_SIP_RPROC_START		0x00
> +#define IMX_SIP_RPROC_STARTED		0x01
> +#define IMX_SIP_RPROC_STOP		0x02
> +
>  /**
>   * struct imx_rproc_mem - slim internal memory structure
>   * @cpu_addr: MPU virtual address of the memory region
> @@ -108,6 +114,36 @@ struct imx_rproc {
>  	void __iomem			*rsc_table;
>  };
>  
> +static const struct imx_rproc_att imx_rproc_att_imx8mn[] = {
> +	/* dev addr , sys addr  , size	    , flags */
> +	/* ITCM   */
> +	{ 0x00000000, 0x007E0000, 0x00020000, ATT_OWN },
> +	/* OCRAM_S */
> +	{ 0x00180000, 0x00180000, 0x00009000, 0 },
> +	/* OCRAM */
> +	{ 0x00900000, 0x00900000, 0x00020000, 0 },
> +	/* OCRAM */
> +	{ 0x00920000, 0x00920000, 0x00020000, 0 },
> +	/* OCRAM */
> +	{ 0x00940000, 0x00940000, 0x00050000, 0 },
> +	/* QSPI Code - alias */
> +	{ 0x08000000, 0x08000000, 0x08000000, 0 },
> +	/* DDR (Code) - alias */
> +	{ 0x10000000, 0x40000000, 0x0FFE0000, 0 },
> +	/* DTCM */
> +	{ 0x20000000, 0x00800000, 0x00020000, ATT_OWN },
> +	/* OCRAM_S - alias */
> +	{ 0x20180000, 0x00180000, 0x00008000, ATT_OWN },
> +	/* OCRAM */
> +	{ 0x20200000, 0x00900000, 0x00020000, ATT_OWN },
> +	/* OCRAM */
> +	{ 0x20220000, 0x00920000, 0x00020000, ATT_OWN },
> +	/* OCRAM */
> +	{ 0x20240000, 0x00940000, 0x00040000, ATT_OWN },
> +	/* DDR (Data) */
> +	{ 0x40000000, 0x40000000, 0x80000000, 0 },
> +};
> +
>  static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
>  	/* dev addr , sys addr  , size	    , flags */
>  	/* TCML - alias */
> @@ -194,6 +230,12 @@ static const struct imx_rproc_att imx_rproc_att_imx6sx[] = {
>  	{ 0x80000000, 0x80000000, 0x60000000, 0 },
>  };
>  
> +static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mn = {
> +	.att		= imx_rproc_att_imx8mn,
> +	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mn),
> +	.method		= IMX_RPROC_SMC,
> +};
> +
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
>  	.src_reg	= IMX7D_SRC_SCR,
>  	.src_mask	= IMX7D_M4_RST_MASK,
> @@ -235,12 +277,24 @@ static int imx_rproc_start(struct rproc *rproc)
>  	struct imx_rproc *priv = rproc->priv;
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
> +	struct arm_smccc_res res;
>  	int ret;
>  
> -	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
> -				 dcfg->src_mask, dcfg->src_start);
> +	switch (dcfg->method) {
> +	case IMX_RPROC_MMIO:
> +		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
> +					 dcfg->src_start);
> +		break;
> +	case IMX_RPROC_SMC:
> +		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_START, 0, 0, 0, 0, 0, 0, &res);
> +		ret = res.a0;
> +		break;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +
>  	if (ret)
> -		dev_err(dev, "Failed to enable M4!\n");
> +		dev_err(dev, "Failed to enable remote cores!\n");

s/cores/core

>  
>  	return ret;
>  }
> @@ -250,15 +304,26 @@ static int imx_rproc_stop(struct rproc *rproc)
>  	struct imx_rproc *priv = rproc->priv;
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
> +	struct arm_smccc_res res;
>  	int ret;
>  
> -	if (dcfg->method == IMX_RPROC_NONE)
> +	switch (dcfg->method) {
> +	case IMX_RPROC_MMIO:
> +		ret = regmap_update_bits(priv->regmap, dcfg->src_reg, dcfg->src_mask,
> +					 dcfg->src_stop);
> +		break;
> +	case IMX_RPROC_SMC:
> +		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STOP, 0, 0, 0, 0, 0, 0, &res);
> +		ret = res.a0;
> +		if (res.a1)
> +			dev_info(dev, "Not in wfi, force stopped\n");
> +		break;
> +	default:
>  		return -EOPNOTSUPP;
> +	}
>  
> -	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
> -				 dcfg->src_mask, dcfg->src_stop);
>  	if (ret)
> -		dev_err(dev, "Failed to stop M4!\n");
> +		dev_err(dev, "Failed to stop remote cores\n");

s/cores/core

>  
>  	return ret;
>  }
> @@ -594,6 +659,7 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
>  	struct regmap *regmap;
> +	struct arm_smccc_res res;
>  	int ret;
>  	u32 val;
>  
> @@ -601,6 +667,11 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv)
>  	case IMX_RPROC_NONE:
>  		priv->rproc->state = RPROC_DETACHED;
>  		return 0;
> +	case IMX_RPROC_SMC:
> +		arm_smccc_smc(IMX_SIP_RPROC, IMX_SIP_RPROC_STARTED, 0, 0, 0, 0, 0, 0, &res);
> +		if (res.a0)
> +			priv->rproc->state = RPROC_DETACHED;
> +		return 0;
>  	default:
>  		break;
>  	}
> @@ -751,6 +822,8 @@ static const struct of_device_id imx_rproc_of_match[] = {
>  	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
>  	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
>  	{ .compatible = "fsl,imx8mm-cm4", .data = &imx_rproc_cfg_imx8mq },
> +	{ .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn },
> +	{ .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn },

With the above:

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

>  	{},
>  };
>  MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
> -- 
> 2.30.0
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
  2021-04-21  2:20   ` peng.fan
@ 2021-05-03 16:29     ` Mathieu Poirier
  -1 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-05-03 16:29 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:21AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> i.MX7ULP A7 core runs under control of M4 core, M4 core starts by ROM
> and powers most serivces used by A7 core, so A7 core has no power to

s/serivces/services

I pointed that out on V4 - why do I have to do so again?

With that:

Reviwed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> start and stop M4 core. And the M4 core's state is default RPROC_DETACHED
> and remoteproc framework not able to stop the M4 core.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 49 ++++++++++++++++++++++++++--------
>  1 file changed, 38 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index e9d9860e4fce..d26254609a52 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -136,6 +136,14 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
>  	{ 0x40000000, 0x40000000, 0x80000000, 0 },
>  };
>  
> +static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
> +	{0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
> +	{0x20000000, 0x20000000, 0x10000, ATT_OWN},
> +	{0x2F000000, 0x2F000000, 0x20000, ATT_OWN},
> +	{0x2F020000, 0x2F020000, 0x20000, ATT_OWN},
> +	{0x60000000, 0x60000000, 0x40000000, 0}
> +};
> +
>  static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
>  	/* dev addr , sys addr  , size	    , flags */
>  	/* OCRAM_S (M4 Boot code) - alias */
> @@ -196,6 +204,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
>  	.method		= IMX_RPROC_MMIO,
>  };
>  
> +static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
> +	.att		= imx_rproc_att_imx7ulp,
> +	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7ulp),
> +	.method		= IMX_RPROC_NONE,
> +};
> +
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
>  	.src_reg	= IMX7D_SRC_SCR,
>  	.src_mask	= IMX7D_M4_RST_MASK,
> @@ -238,6 +252,9 @@ static int imx_rproc_stop(struct rproc *rproc)
>  	struct device *dev = priv->dev;
>  	int ret;
>  
> +	if (dcfg->method == IMX_RPROC_NONE)
> +		return -EOPNOTSUPP;
> +
>  	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
>  				 dcfg->src_mask, dcfg->src_stop);
>  	if (ret)
> @@ -573,12 +590,31 @@ static void imx_rproc_free_mbox(struct rproc *rproc)
>  
>  static int imx_rproc_detect_mode(struct imx_rproc *priv)
>  {
> +	struct regmap_config config = { .name = "imx-rproc" };
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
> +	struct regmap *regmap;
>  	int ret;
>  	u32 val;
>  
> -	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
> +	switch (dcfg->method) {
> +	case IMX_RPROC_NONE:
> +		priv->rproc->state = RPROC_DETACHED;
> +		return 0;
> +	default:
> +		break;
> +	}
> +
> +	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
> +	if (IS_ERR(regmap)) {
> +		dev_err(dev, "failed to find syscon\n");
> +		return PTR_ERR(regmap);
> +	}
> +
> +	priv->regmap = regmap;
> +	regmap_attach_dev(dev, regmap, &config);
> +
> +	ret = regmap_read(regmap, dcfg->src_reg, &val);
>  	if (ret) {
>  		dev_err(dev, "Failed to read src\n");
>  		return ret;
> @@ -625,18 +661,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  	struct device_node *np = dev->of_node;
>  	struct imx_rproc *priv;
>  	struct rproc *rproc;
> -	struct regmap_config config = { .name = "imx-rproc" };
>  	const struct imx_rproc_dcfg *dcfg;
> -	struct regmap *regmap;
>  	int ret;
>  
> -	regmap = syscon_regmap_lookup_by_phandle(np, "syscon");
> -	if (IS_ERR(regmap)) {
> -		dev_err(dev, "failed to find syscon\n");
> -		return PTR_ERR(regmap);
> -	}
> -	regmap_attach_dev(dev, regmap, &config);
> -
>  	/* set some other name then imx */
>  	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
>  			    NULL, sizeof(*priv));
> @@ -651,7 +678,6 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  
>  	priv = rproc->priv;
>  	priv->rproc = rproc;
> -	priv->regmap = regmap;
>  	priv->dcfg = dcfg;
>  	priv->dev = dev;
>  
> @@ -720,6 +746,7 @@ static int imx_rproc_remove(struct platform_device *pdev)
>  }
>  
>  static const struct of_device_id imx_rproc_of_match[] = {
> +	{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
>  	{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
>  	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
>  	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
> -- 
> 2.30.0
> 

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

* Re: [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
@ 2021-05-03 16:29     ` Mathieu Poirier
  0 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-05-03 16:29 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:21AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> i.MX7ULP A7 core runs under control of M4 core, M4 core starts by ROM
> and powers most serivces used by A7 core, so A7 core has no power to

s/serivces/services

I pointed that out on V4 - why do I have to do so again?

With that:

Reviwed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> start and stop M4 core. And the M4 core's state is default RPROC_DETACHED
> and remoteproc framework not able to stop the M4 core.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 49 ++++++++++++++++++++++++++--------
>  1 file changed, 38 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index e9d9860e4fce..d26254609a52 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -136,6 +136,14 @@ static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
>  	{ 0x40000000, 0x40000000, 0x80000000, 0 },
>  };
>  
> +static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
> +	{0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
> +	{0x20000000, 0x20000000, 0x10000, ATT_OWN},
> +	{0x2F000000, 0x2F000000, 0x20000, ATT_OWN},
> +	{0x2F020000, 0x2F020000, 0x20000, ATT_OWN},
> +	{0x60000000, 0x60000000, 0x40000000, 0}
> +};
> +
>  static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
>  	/* dev addr , sys addr  , size	    , flags */
>  	/* OCRAM_S (M4 Boot code) - alias */
> @@ -196,6 +204,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
>  	.method		= IMX_RPROC_MMIO,
>  };
>  
> +static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
> +	.att		= imx_rproc_att_imx7ulp,
> +	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7ulp),
> +	.method		= IMX_RPROC_NONE,
> +};
> +
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
>  	.src_reg	= IMX7D_SRC_SCR,
>  	.src_mask	= IMX7D_M4_RST_MASK,
> @@ -238,6 +252,9 @@ static int imx_rproc_stop(struct rproc *rproc)
>  	struct device *dev = priv->dev;
>  	int ret;
>  
> +	if (dcfg->method == IMX_RPROC_NONE)
> +		return -EOPNOTSUPP;
> +
>  	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
>  				 dcfg->src_mask, dcfg->src_stop);
>  	if (ret)
> @@ -573,12 +590,31 @@ static void imx_rproc_free_mbox(struct rproc *rproc)
>  
>  static int imx_rproc_detect_mode(struct imx_rproc *priv)
>  {
> +	struct regmap_config config = { .name = "imx-rproc" };
>  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
>  	struct device *dev = priv->dev;
> +	struct regmap *regmap;
>  	int ret;
>  	u32 val;
>  
> -	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
> +	switch (dcfg->method) {
> +	case IMX_RPROC_NONE:
> +		priv->rproc->state = RPROC_DETACHED;
> +		return 0;
> +	default:
> +		break;
> +	}
> +
> +	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
> +	if (IS_ERR(regmap)) {
> +		dev_err(dev, "failed to find syscon\n");
> +		return PTR_ERR(regmap);
> +	}
> +
> +	priv->regmap = regmap;
> +	regmap_attach_dev(dev, regmap, &config);
> +
> +	ret = regmap_read(regmap, dcfg->src_reg, &val);
>  	if (ret) {
>  		dev_err(dev, "Failed to read src\n");
>  		return ret;
> @@ -625,18 +661,9 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  	struct device_node *np = dev->of_node;
>  	struct imx_rproc *priv;
>  	struct rproc *rproc;
> -	struct regmap_config config = { .name = "imx-rproc" };
>  	const struct imx_rproc_dcfg *dcfg;
> -	struct regmap *regmap;
>  	int ret;
>  
> -	regmap = syscon_regmap_lookup_by_phandle(np, "syscon");
> -	if (IS_ERR(regmap)) {
> -		dev_err(dev, "failed to find syscon\n");
> -		return PTR_ERR(regmap);
> -	}
> -	regmap_attach_dev(dev, regmap, &config);
> -
>  	/* set some other name then imx */
>  	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
>  			    NULL, sizeof(*priv));
> @@ -651,7 +678,6 @@ static int imx_rproc_probe(struct platform_device *pdev)
>  
>  	priv = rproc->priv;
>  	priv->rproc = rproc;
> -	priv->regmap = regmap;
>  	priv->dcfg = dcfg;
>  	priv->dev = dev;
>  
> @@ -720,6 +746,7 @@ static int imx_rproc_remove(struct platform_device *pdev)
>  }
>  
>  static const struct of_device_id imx_rproc_of_match[] = {
> +	{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
>  	{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
>  	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
>  	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
> -- 
> 2.30.0
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH V5 5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
  2021-04-21  2:20   ` peng.fan
@ 2021-05-03 16:30     ` Mathieu Poirier
  -1 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-05-03 16:30 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:19AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Add three methods IMX_RPROC_NONE(no need start/stop), IMX_RPROC_MMIO
> (start/stop through mmio) and IMX_RPROC_SMC(start/stop through ARM SMCCC).
> 
> The current SoCs supported are all using IMX_RPROC_MMIO.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 06dac92e98e6..6289aeae95b6 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -74,6 +74,15 @@ struct imx_rproc_att {
>  	int flags;
>  };
>  
> +/* Remote core start/stop method */
> +enum imx_rproc_method {
> +	IMX_RPROC_NONE,
> +	/* Through syscon regmap */
> +	IMX_RPROC_MMIO,
> +	/* Through ARM SMCCC */
> +	IMX_RPROC_SMC,
> +};
> +
>  struct imx_rproc_dcfg {
>  	u32				src_reg;
>  	u32				src_mask;
> @@ -81,6 +90,7 @@ struct imx_rproc_dcfg {
>  	u32				src_stop;
>  	const struct imx_rproc_att	*att;
>  	size_t				att_size;
> +	enum imx_rproc_method		method;
>  };
>  
>  struct imx_rproc {
> @@ -183,6 +193,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
>  	.src_stop	= IMX7D_M4_STOP,
>  	.att		= imx_rproc_att_imx8mq,
>  	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mq),
> +	.method		= IMX_RPROC_MMIO,
>  };
>  
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
> @@ -192,6 +203,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
>  	.src_stop	= IMX7D_M4_STOP,
>  	.att		= imx_rproc_att_imx7d,
>  	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7d),
> +	.method		= IMX_RPROC_MMIO,
>  };
>  
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
> @@ -201,6 +213,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
>  	.src_stop	= IMX6SX_M4_STOP,
>  	.att		= imx_rproc_att_imx6sx,
>  	.att_size	= ARRAY_SIZE(imx_rproc_att_imx6sx),
> +	.method		= IMX_RPROC_MMIO,
>  };
>  
>  static int imx_rproc_start(struct rproc *rproc)
> -- 
> 2.30.0
> 

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

* Re: [PATCH V5 5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method
@ 2021-05-03 16:30     ` Mathieu Poirier
  0 siblings, 0 replies; 38+ messages in thread
From: Mathieu Poirier @ 2021-05-03 16:30 UTC (permalink / raw)
  To: peng.fan
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, Peng Fan

On Wed, Apr 21, 2021 at 10:20:19AM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Add three methods IMX_RPROC_NONE(no need start/stop), IMX_RPROC_MMIO
> (start/stop through mmio) and IMX_RPROC_SMC(start/stop through ARM SMCCC).
> 
> The current SoCs supported are all using IMX_RPROC_MMIO.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  drivers/remoteproc/imx_rproc.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)

Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>

> 
> diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
> index 06dac92e98e6..6289aeae95b6 100644
> --- a/drivers/remoteproc/imx_rproc.c
> +++ b/drivers/remoteproc/imx_rproc.c
> @@ -74,6 +74,15 @@ struct imx_rproc_att {
>  	int flags;
>  };
>  
> +/* Remote core start/stop method */
> +enum imx_rproc_method {
> +	IMX_RPROC_NONE,
> +	/* Through syscon regmap */
> +	IMX_RPROC_MMIO,
> +	/* Through ARM SMCCC */
> +	IMX_RPROC_SMC,
> +};
> +
>  struct imx_rproc_dcfg {
>  	u32				src_reg;
>  	u32				src_mask;
> @@ -81,6 +90,7 @@ struct imx_rproc_dcfg {
>  	u32				src_stop;
>  	const struct imx_rproc_att	*att;
>  	size_t				att_size;
> +	enum imx_rproc_method		method;
>  };
>  
>  struct imx_rproc {
> @@ -183,6 +193,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
>  	.src_stop	= IMX7D_M4_STOP,
>  	.att		= imx_rproc_att_imx8mq,
>  	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mq),
> +	.method		= IMX_RPROC_MMIO,
>  };
>  
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
> @@ -192,6 +203,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
>  	.src_stop	= IMX7D_M4_STOP,
>  	.att		= imx_rproc_att_imx7d,
>  	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7d),
> +	.method		= IMX_RPROC_MMIO,
>  };
>  
>  static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
> @@ -201,6 +213,7 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx6sx = {
>  	.src_stop	= IMX6SX_M4_STOP,
>  	.att		= imx_rproc_att_imx6sx,
>  	.att_size	= ARRAY_SIZE(imx_rproc_att_imx6sx),
> +	.method		= IMX_RPROC_MMIO,
>  };
>  
>  static int imx_rproc_start(struct rproc *rproc)
> -- 
> 2.30.0
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* RE: [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
  2021-05-03 16:29     ` Mathieu Poirier
@ 2021-05-06  4:11       ` Peng Fan
  -1 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-05-06  4:11 UTC (permalink / raw)
  To: Mathieu Poirier, Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

> Subject: Re: [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
> 
> On Wed, Apr 21, 2021 at 10:20:21AM +0800, peng.fan@oss.nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > i.MX7ULP A7 core runs under control of M4 core, M4 core starts by ROM
> > and powers most serivces used by A7 core, so A7 core has no power to
> 
> s/serivces/services
> 
> I pointed that out on V4 - why do I have to do so again?

I forgot that comment, sorry. Thanks for your time.

Thanks,
Peng.

> 
> With that:
> 
> Reviwed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> 
> > start and stop M4 core. And the M4 core's state is default
> > RPROC_DETACHED and remoteproc framework not able to stop the M4
> core.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  drivers/remoteproc/imx_rproc.c | 49
> > ++++++++++++++++++++++++++--------
> >  1 file changed, 38 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/remoteproc/imx_rproc.c
> > b/drivers/remoteproc/imx_rproc.c index e9d9860e4fce..d26254609a52
> > 100644
> > --- a/drivers/remoteproc/imx_rproc.c
> > +++ b/drivers/remoteproc/imx_rproc.c
> > @@ -136,6 +136,14 @@ static const struct imx_rproc_att
> imx_rproc_att_imx8mq[] = {
> >  	{ 0x40000000, 0x40000000, 0x80000000, 0 },  };
> >
> > +static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
> > +	{0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
> > +	{0x20000000, 0x20000000, 0x10000, ATT_OWN},
> > +	{0x2F000000, 0x2F000000, 0x20000, ATT_OWN},
> > +	{0x2F020000, 0x2F020000, 0x20000, ATT_OWN},
> > +	{0x60000000, 0x60000000, 0x40000000, 0} };
> > +
> >  static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
> >  	/* dev addr , sys addr  , size	    , flags */
> >  	/* OCRAM_S (M4 Boot code) - alias */ @@ -196,6 +204,12 @@ static
> > const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
> >  	.method		= IMX_RPROC_MMIO,
> >  };
> >
> > +static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
> > +	.att		= imx_rproc_att_imx7ulp,
> > +	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7ulp),
> > +	.method		= IMX_RPROC_NONE,
> > +};
> > +
> >  static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
> >  	.src_reg	= IMX7D_SRC_SCR,
> >  	.src_mask	= IMX7D_M4_RST_MASK,
> > @@ -238,6 +252,9 @@ static int imx_rproc_stop(struct rproc *rproc)
> >  	struct device *dev = priv->dev;
> >  	int ret;
> >
> > +	if (dcfg->method == IMX_RPROC_NONE)
> > +		return -EOPNOTSUPP;
> > +
> >  	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
> >  				 dcfg->src_mask, dcfg->src_stop);
> >  	if (ret)
> > @@ -573,12 +590,31 @@ static void imx_rproc_free_mbox(struct rproc
> > *rproc)
> >
> >  static int imx_rproc_detect_mode(struct imx_rproc *priv)  {
> > +	struct regmap_config config = { .name = "imx-rproc" };
> >  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
> >  	struct device *dev = priv->dev;
> > +	struct regmap *regmap;
> >  	int ret;
> >  	u32 val;
> >
> > -	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
> > +	switch (dcfg->method) {
> > +	case IMX_RPROC_NONE:
> > +		priv->rproc->state = RPROC_DETACHED;
> > +		return 0;
> > +	default:
> > +		break;
> > +	}
> > +
> > +	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
> > +	if (IS_ERR(regmap)) {
> > +		dev_err(dev, "failed to find syscon\n");
> > +		return PTR_ERR(regmap);
> > +	}
> > +
> > +	priv->regmap = regmap;
> > +	regmap_attach_dev(dev, regmap, &config);
> > +
> > +	ret = regmap_read(regmap, dcfg->src_reg, &val);
> >  	if (ret) {
> >  		dev_err(dev, "Failed to read src\n");
> >  		return ret;
> > @@ -625,18 +661,9 @@ static int imx_rproc_probe(struct platform_device
> *pdev)
> >  	struct device_node *np = dev->of_node;
> >  	struct imx_rproc *priv;
> >  	struct rproc *rproc;
> > -	struct regmap_config config = { .name = "imx-rproc" };
> >  	const struct imx_rproc_dcfg *dcfg;
> > -	struct regmap *regmap;
> >  	int ret;
> >
> > -	regmap = syscon_regmap_lookup_by_phandle(np, "syscon");
> > -	if (IS_ERR(regmap)) {
> > -		dev_err(dev, "failed to find syscon\n");
> > -		return PTR_ERR(regmap);
> > -	}
> > -	regmap_attach_dev(dev, regmap, &config);
> > -
> >  	/* set some other name then imx */
> >  	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
> >  			    NULL, sizeof(*priv));
> > @@ -651,7 +678,6 @@ static int imx_rproc_probe(struct platform_device
> > *pdev)
> >
> >  	priv = rproc->priv;
> >  	priv->rproc = rproc;
> > -	priv->regmap = regmap;
> >  	priv->dcfg = dcfg;
> >  	priv->dev = dev;
> >
> > @@ -720,6 +746,7 @@ static int imx_rproc_remove(struct platform_device
> > *pdev)  }
> >
> >  static const struct of_device_id imx_rproc_of_match[] = {
> > +	{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
> >  	{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
> >  	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
> >  	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
> > --
> > 2.30.0
> >

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

* RE: [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
@ 2021-05-06  4:11       ` Peng Fan
  0 siblings, 0 replies; 38+ messages in thread
From: Peng Fan @ 2021-05-06  4:11 UTC (permalink / raw)
  To: Mathieu Poirier, Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel

> Subject: Re: [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP
> 
> On Wed, Apr 21, 2021 at 10:20:21AM +0800, peng.fan@oss.nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > i.MX7ULP A7 core runs under control of M4 core, M4 core starts by ROM
> > and powers most serivces used by A7 core, so A7 core has no power to
> 
> s/serivces/services
> 
> I pointed that out on V4 - why do I have to do so again?

I forgot that comment, sorry. Thanks for your time.

Thanks,
Peng.

> 
> With that:
> 
> Reviwed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
> 
> > start and stop M4 core. And the M4 core's state is default
> > RPROC_DETACHED and remoteproc framework not able to stop the M4
> core.
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >  drivers/remoteproc/imx_rproc.c | 49
> > ++++++++++++++++++++++++++--------
> >  1 file changed, 38 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/remoteproc/imx_rproc.c
> > b/drivers/remoteproc/imx_rproc.c index e9d9860e4fce..d26254609a52
> > 100644
> > --- a/drivers/remoteproc/imx_rproc.c
> > +++ b/drivers/remoteproc/imx_rproc.c
> > @@ -136,6 +136,14 @@ static const struct imx_rproc_att
> imx_rproc_att_imx8mq[] = {
> >  	{ 0x40000000, 0x40000000, 0x80000000, 0 },  };
> >
> > +static const struct imx_rproc_att imx_rproc_att_imx7ulp[] = {
> > +	{0x1FFD0000, 0x1FFD0000, 0x30000, ATT_OWN},
> > +	{0x20000000, 0x20000000, 0x10000, ATT_OWN},
> > +	{0x2F000000, 0x2F000000, 0x20000, ATT_OWN},
> > +	{0x2F020000, 0x2F020000, 0x20000, ATT_OWN},
> > +	{0x60000000, 0x60000000, 0x40000000, 0} };
> > +
> >  static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
> >  	/* dev addr , sys addr  , size	    , flags */
> >  	/* OCRAM_S (M4 Boot code) - alias */ @@ -196,6 +204,12 @@ static
> > const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
> >  	.method		= IMX_RPROC_MMIO,
> >  };
> >
> > +static const struct imx_rproc_dcfg imx_rproc_cfg_imx7ulp = {
> > +	.att		= imx_rproc_att_imx7ulp,
> > +	.att_size	= ARRAY_SIZE(imx_rproc_att_imx7ulp),
> > +	.method		= IMX_RPROC_NONE,
> > +};
> > +
> >  static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
> >  	.src_reg	= IMX7D_SRC_SCR,
> >  	.src_mask	= IMX7D_M4_RST_MASK,
> > @@ -238,6 +252,9 @@ static int imx_rproc_stop(struct rproc *rproc)
> >  	struct device *dev = priv->dev;
> >  	int ret;
> >
> > +	if (dcfg->method == IMX_RPROC_NONE)
> > +		return -EOPNOTSUPP;
> > +
> >  	ret = regmap_update_bits(priv->regmap, dcfg->src_reg,
> >  				 dcfg->src_mask, dcfg->src_stop);
> >  	if (ret)
> > @@ -573,12 +590,31 @@ static void imx_rproc_free_mbox(struct rproc
> > *rproc)
> >
> >  static int imx_rproc_detect_mode(struct imx_rproc *priv)  {
> > +	struct regmap_config config = { .name = "imx-rproc" };
> >  	const struct imx_rproc_dcfg *dcfg = priv->dcfg;
> >  	struct device *dev = priv->dev;
> > +	struct regmap *regmap;
> >  	int ret;
> >  	u32 val;
> >
> > -	ret = regmap_read(priv->regmap, dcfg->src_reg, &val);
> > +	switch (dcfg->method) {
> > +	case IMX_RPROC_NONE:
> > +		priv->rproc->state = RPROC_DETACHED;
> > +		return 0;
> > +	default:
> > +		break;
> > +	}
> > +
> > +	regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "syscon");
> > +	if (IS_ERR(regmap)) {
> > +		dev_err(dev, "failed to find syscon\n");
> > +		return PTR_ERR(regmap);
> > +	}
> > +
> > +	priv->regmap = regmap;
> > +	regmap_attach_dev(dev, regmap, &config);
> > +
> > +	ret = regmap_read(regmap, dcfg->src_reg, &val);
> >  	if (ret) {
> >  		dev_err(dev, "Failed to read src\n");
> >  		return ret;
> > @@ -625,18 +661,9 @@ static int imx_rproc_probe(struct platform_device
> *pdev)
> >  	struct device_node *np = dev->of_node;
> >  	struct imx_rproc *priv;
> >  	struct rproc *rproc;
> > -	struct regmap_config config = { .name = "imx-rproc" };
> >  	const struct imx_rproc_dcfg *dcfg;
> > -	struct regmap *regmap;
> >  	int ret;
> >
> > -	regmap = syscon_regmap_lookup_by_phandle(np, "syscon");
> > -	if (IS_ERR(regmap)) {
> > -		dev_err(dev, "failed to find syscon\n");
> > -		return PTR_ERR(regmap);
> > -	}
> > -	regmap_attach_dev(dev, regmap, &config);
> > -
> >  	/* set some other name then imx */
> >  	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
> >  			    NULL, sizeof(*priv));
> > @@ -651,7 +678,6 @@ static int imx_rproc_probe(struct platform_device
> > *pdev)
> >
> >  	priv = rproc->priv;
> >  	priv->rproc = rproc;
> > -	priv->regmap = regmap;
> >  	priv->dcfg = dcfg;
> >  	priv->dev = dev;
> >
> > @@ -720,6 +746,7 @@ static int imx_rproc_remove(struct platform_device
> > *pdev)  }
> >
> >  static const struct of_device_id imx_rproc_of_match[] = {
> > +	{ .compatible = "fsl,imx7ulp-cm4", .data = &imx_rproc_cfg_imx7ulp },
> >  	{ .compatible = "fsl,imx7d-cm4", .data = &imx_rproc_cfg_imx7d },
> >  	{ .compatible = "fsl,imx6sx-cm4", .data = &imx_rproc_cfg_imx6sx },
> >  	{ .compatible = "fsl,imx8mq-cm4", .data = &imx_rproc_cfg_imx8mq },
> > --
> > 2.30.0
> >

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2021-05-06  4:15 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-21  2:20 [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP peng.fan
2021-04-21  2:20 ` peng.fan
2021-04-21  2:20 ` [PATCH V5 1/8] dt-bindings: remoteproc: imx_rproc: add fsl,auto-boot property peng.fan
2021-04-21  2:20   ` [PATCH V5 1/8] dt-bindings: remoteproc: imx_rproc: add fsl, auto-boot property peng.fan
2021-04-21  2:20 ` [PATCH V5 2/8] dt-bindings: remoteproc: imx_rproc: add i.MX7ULP support peng.fan
2021-04-21  2:20   ` peng.fan
2021-04-21  2:20 ` [PATCH V5 3/8] dt-bindings: remoteproc: imx_rproc: support i.MX8MN/P peng.fan
2021-04-21  2:20   ` peng.fan
2021-04-21  2:20 ` [PATCH V5 4/8] remoteproc: imx_rproc: parse fsl,auto-boot peng.fan
2021-04-21  2:20   ` peng.fan
2021-04-21  2:20 ` [PATCH V5 5/8] remoteproc: imx_rproc: initial support for mutilple start/stop method peng.fan
2021-04-21  2:20   ` peng.fan
2021-05-03 16:30   ` Mathieu Poirier
2021-05-03 16:30     ` Mathieu Poirier
2021-04-21  2:20 ` [PATCH V5 6/8] remoteproc: imx_rproc: make clk optional peng.fan
2021-04-21  2:20   ` peng.fan
2021-04-21  2:20 ` [PATCH V5 7/8] remoteproc: imx_rproc: support i.MX7ULP peng.fan
2021-04-21  2:20   ` peng.fan
2021-05-03 16:29   ` Mathieu Poirier
2021-05-03 16:29     ` Mathieu Poirier
2021-05-06  4:11     ` Peng Fan
2021-05-06  4:11       ` Peng Fan
2021-04-21  2:20 ` [PATCH V5 8/8] remoteproc: imx_rproc: support i.MX8MN/P peng.fan
2021-04-21  2:20   ` peng.fan
2021-05-03 16:25   ` Mathieu Poirier
2021-05-03 16:25     ` Mathieu Poirier
2021-04-22 16:56 ` [PATCH V5 0/8] remoteproc: imx_rproc: support i.MX7ULP/8MN/8MP Mathieu Poirier
2021-04-22 16:56   ` Mathieu Poirier
2021-04-23  1:01   ` Peng Fan
2021-04-23  1:01     ` Peng Fan
2021-04-23 14:50     ` Mathieu Poirier
2021-04-23 14:50       ` Mathieu Poirier
2021-04-23 23:28       ` Peng Fan
2021-04-23 23:28         ` Peng Fan
2021-04-26 15:46         ` Mathieu Poirier
2021-04-26 15:46           ` Mathieu Poirier
2021-04-26 23:45           ` Peng Fan
2021-04-26 23:45             ` Peng Fan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.