linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
@ 2021-03-06 11:24 peng.fan
  2021-03-06 11:24 ` [PATCH V13 01/10] dt-bindings: remoteproc: convert imx rproc bindings to json-schema peng.fan
                   ` (10 more replies)
  0 siblings, 11 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

V13:
 Add R-b tag from Rob for patch 1.
 Drop the reserved memory node from patch 2 per Rob's comment.
 Mathieu, Bjorn
  Only patch 2 not have R-b/A-b tag, but since Rob's only has a minor comment, and
  addressed in this version, is it ok for you take into remoteproc next branch?
  Thanks.

V12:
 Add maxItems to avoid dt_bindings_check fail
 Rebased on top of linux-next

V11:
 Per Rob's comments, fix memory-region in patch 1/10
 Rebased on top of Linux-next

V10:
 Per Rob's comments, fix patch 1/10

V9:
 Per Mathieu's comments,
   update the tile of yaml in patch 2/10
   update the Kconfig and MODULE_DESCRIPTION, I merge this change in patch 8/10,
   since this is a minor change, I still keep Mathieu's R-b tag. If any objection, I could remove.
   Add R-b tag in Patch 10/10

 Rob, please help review patch 1/10 and 2/10

V8:
 Address sparse warning in patch 4/10 reported by kernel test robot

V7:
 Add R-b tag from Mathieu
 vdevbuffer->vdev0buffer in patch 1/10, 7/10
 correct err msg and shutdown seq per Mathieu's comments in patch 10/10
 Hope this version is ok to be merged.
 
V6:
 Add R-b tag from Mathieu
 Convert imx-rproc.txt to yaml and add dt-bindings support for i.MX8MQ/M, patch 1/10 2/10
 No other changes.

V5:
 Apply on Linux next
 Add V5 subject prefix
 Add R-b tag from Bjorn for 1/8, 2/8, 3/8
 https://patchwork.kernel.org/project/linux-remoteproc/cover/20201229033019.25899-1-peng.fan@nxp.com/

V4:
 According to Bjorn's comments, add is_iomem for da to va usage
 1/8, 2/8 is new patch
 3/8, follow Bjorn's comments to correct/update the err msg.
 6/8, new patch
 8/8, use dev_err_probe to simplify code, use queue_work instead schedule_delayed_work

V3:
 Since I was quite busy in the past days, V3 is late
 Rebased on Linux-next
 Add R-b tags
 1/7: Add R-b tag of Mathieu, add comments
 4/7: Typo fix
 5/7: Add R-b tag of Mathieu, drop index Per Mathieu's comments
 6/7: Add R-b tag of Mathieu
 7/7: Add comment for vqid << 16, drop unneeded timeout settings of mailbox
      Use queue_work instead of schedule_delayed_work
      free mbox channels when remove
 https://lkml.org/lkml/2020/12/4/82

V2:
 Rebased on linux-next
 Dropped early boot feature to make patchset simple.
 Drop rsc-da
 https://patchwork.kernel.org/project/linux-remoteproc/cover/20200927064131.24101-1-peng.fan@nxp.com/

V1:
 https://patchwork.kernel.org/cover/11682461/

This patchset is to support i.MX8MQ/M coproc.
The early boot feature was dropped to make the patchset small in V2.

Since i.MX specific TCM memory requirement, add elf platform hook.
Several patches have got reviewed by Oleksij and Mathieu in v1.


Peng Fan (10):
  dt-bindings: remoteproc: convert imx rproc bindings to json-schema
  dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
  remoteproc: introduce is_iomem to rproc_mem_entry
  remoteproc: add is_iomem to da_to_va
  remoteproc: imx_rproc: correct err message
  remoteproc: imx_rproc: use devm_ioremap
  remoteproc: imx_rproc: add i.MX specific parse fw hook
  remoteproc: imx_rproc: support i.MX8MQ/M
  remoteproc: imx_rproc: ignore mapping vdev regions
  remoteproc: imx_proc: enable virtio/mailbox

 .../bindings/remoteproc/fsl,imx-rproc.yaml    |  90 ++++++
 .../bindings/remoteproc/imx-rproc.txt         |  33 ---
 drivers/remoteproc/Kconfig                    |   6 +-
 drivers/remoteproc/imx_rproc.c                | 262 +++++++++++++++++-
 drivers/remoteproc/ingenic_rproc.c            |   2 +-
 drivers/remoteproc/keystone_remoteproc.c      |   2 +-
 drivers/remoteproc/mtk_scp.c                  |   6 +-
 drivers/remoteproc/omap_remoteproc.c          |   2 +-
 drivers/remoteproc/pru_rproc.c                |   2 +-
 drivers/remoteproc/qcom_q6v5_adsp.c           |   2 +-
 drivers/remoteproc/qcom_q6v5_pas.c            |   2 +-
 drivers/remoteproc/qcom_q6v5_wcss.c           |   2 +-
 drivers/remoteproc/qcom_wcnss.c               |   2 +-
 drivers/remoteproc/remoteproc_core.c          |   7 +-
 drivers/remoteproc/remoteproc_coredump.c      |   8 +-
 drivers/remoteproc/remoteproc_debugfs.c       |   2 +-
 drivers/remoteproc/remoteproc_elf_loader.c    |  21 +-
 drivers/remoteproc/remoteproc_internal.h      |   2 +-
 drivers/remoteproc/st_slim_rproc.c            |   2 +-
 drivers/remoteproc/ti_k3_dsp_remoteproc.c     |   2 +-
 drivers/remoteproc/ti_k3_r5_remoteproc.c      |   2 +-
 drivers/remoteproc/wkup_m3_rproc.c            |   2 +-
 include/linux/remoteproc.h                    |   4 +-
 23 files changed, 393 insertions(+), 72 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
 delete mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt

-- 
2.30.0


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

* [PATCH V13 01/10] dt-bindings: remoteproc: convert imx rproc bindings to json-schema
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 02/10] dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support peng.fan
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

Convert the imx rproc binding to DT schema format using json-schema.

Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 .../bindings/remoteproc/fsl,imx-rproc.yaml    | 61 +++++++++++++++++++
 .../bindings/remoteproc/imx-rproc.txt         | 33 ----------
 2 files changed, 61 insertions(+), 33 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
 delete mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
new file mode 100644
index 000000000000..54d2456530a6
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/remoteproc/fsl,imx-rproc.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: NXP iMX6SX/iMX7D Co-Processor Bindings
+
+description:
+  This binding provides support for ARM Cortex M4 Co-processor found on some NXP iMX SoCs.
+
+maintainers:
+  - Peng Fan <peng.fan@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - fsl,imx7d-cm4
+      - fsl,imx6sx-cm4
+
+  clocks:
+    maxItems: 1
+
+  syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to syscon block which provide access to System Reset Controller
+
+  memory-region:
+    description:
+      If present, a phandle for a reserved memory area that used for vdev buffer,
+      resource table, vring region and others used by remote processor.
+    minItems: 1
+    maxItems: 32
+
+required:
+  - compatible
+  - clocks
+  - syscon
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx7d-clock.h>
+    m4_reserved_sysmem1: cm4@80000000 {
+      reg = <0x80000000 0x80000>;
+    };
+
+    m4_reserved_sysmem2: cm4@81000000 {
+      reg = <0x81000000 0x80000>;
+    };
+
+    imx7d-cm4 {
+      compatible	= "fsl,imx7d-cm4";
+      memory-region	= <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>;
+      syscon		= <&src>;
+      clocks		= <&clks IMX7D_ARM_M4_ROOT_CLK>;
+    };
+
+...
diff --git a/Documentation/devicetree/bindings/remoteproc/imx-rproc.txt b/Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
deleted file mode 100644
index fbcefd965dc4..000000000000
--- a/Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-NXP iMX6SX/iMX7D Co-Processor Bindings
-----------------------------------------
-
-This binding provides support for ARM Cortex M4 Co-processor found on some
-NXP iMX SoCs.
-
-Required properties:
-- compatible		Should be one of:
-				"fsl,imx7d-cm4"
-				"fsl,imx6sx-cm4"
-- clocks		Clock for co-processor (See: ../clock/clock-bindings.txt)
-- syscon		Phandle to syscon block which provide access to
-			System Reset Controller
-
-Optional properties:
-- memory-region		list of phandels to the reserved memory regions.
-			(See: ../reserved-memory/reserved-memory.txt)
-
-Example:
-	m4_reserved_sysmem1: cm4@80000000 {
-		reg = <0x80000000 0x80000>;
-	};
-
-	m4_reserved_sysmem2: cm4@81000000 {
-		reg = <0x81000000 0x80000>;
-	};
-
-	imx7d-cm4 {
-		compatible	= "fsl,imx7d-cm4";
-		memory-region	= <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>;
-		syscon		= <&src>;
-		clocks		= <&clks IMX7D_ARM_M4_ROOT_CLK>;
-	};
-- 
2.30.0


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

* [PATCH V13 02/10] dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
  2021-03-06 11:24 ` [PATCH V13 01/10] dt-bindings: remoteproc: convert imx rproc bindings to json-schema peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-08 22:37   ` Rob Herring
  2021-03-06 11:24 ` [PATCH V13 03/10] remoteproc: introduce is_iomem to rproc_mem_entry peng.fan
                   ` (8 subsequent siblings)
  10 siblings, 1 reply; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

Add i.MX8MQ/M support, also include mailbox for rpmsg/virtio usage.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 .../bindings/remoteproc/fsl,imx-rproc.yaml    | 31 ++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
index 54d2456530a6..208a628f8d6c 100644
--- a/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
+++ b/Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
@@ -4,7 +4,7 @@
 $id: "http://devicetree.org/schemas/remoteproc/fsl,imx-rproc.yaml#"
 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
 
-title: NXP iMX6SX/iMX7D Co-Processor Bindings
+title: NXP i.MX Co-Processor Bindings
 
 description:
   This binding provides support for ARM Cortex M4 Co-processor found on some NXP iMX SoCs.
@@ -15,6 +15,8 @@ maintainers:
 properties:
   compatible:
     enum:
+      - fsl,imx8mq-cm4
+      - fsl,imx8mm-cm4
       - fsl,imx7d-cm4
       - fsl,imx6sx-cm4
 
@@ -26,6 +28,20 @@ properties:
     description:
       Phandle to syscon block which provide access to System Reset Controller
 
+  mbox-names:
+    items:
+      - const: tx
+      - const: rx
+      - const: rxdb
+
+  mboxes:
+    description:
+      This property is required only if the rpmsg/virtio functionality is used.
+      List of <&phandle type channel> - 1 channel for TX, 1 channel for RX, 1 channel for RXDB.
+      (see mailbox/fsl,mu.yaml)
+    minItems: 1
+    maxItems: 3
+
   memory-region:
     description:
       If present, a phandle for a reserved memory area that used for vdev buffer,
@@ -58,4 +74,17 @@ examples:
       clocks		= <&clks IMX7D_ARM_M4_ROOT_CLK>;
     };
 
+  - |
+    #include <dt-bindings/clock/imx8mm-clock.h>
+
+    imx8mm-cm4 {
+      compatible = "fsl,imx8mm-cm4";
+      clocks = <&clk IMX8MM_CLK_M4_DIV>;
+      mbox-names = "tx", "rx", "rxdb";
+      mboxes = <&mu 0 1
+                &mu 1 1
+                &mu 3 1>;
+      memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>, <&rsc_table>;
+      syscon = <&src>;
+    };
 ...
-- 
2.30.0


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

* [PATCH V13 03/10] remoteproc: introduce is_iomem to rproc_mem_entry
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
  2021-03-06 11:24 ` [PATCH V13 01/10] dt-bindings: remoteproc: convert imx rproc bindings to json-schema peng.fan
  2021-03-06 11:24 ` [PATCH V13 02/10] dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 04/10] remoteproc: add is_iomem to da_to_va peng.fan
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

Introduce is_iomem to indicate this piece memory is iomem or not.

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 include/linux/remoteproc.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
index f28ee75d1005..a5f6d2d9cde2 100644
--- a/include/linux/remoteproc.h
+++ b/include/linux/remoteproc.h
@@ -315,6 +315,7 @@ struct rproc;
 /**
  * struct rproc_mem_entry - memory entry descriptor
  * @va:	virtual address
+ * @is_iomem: io memory
  * @dma: dma address
  * @len: length, in bytes
  * @da: device address
@@ -329,6 +330,7 @@ struct rproc;
  */
 struct rproc_mem_entry {
 	void *va;
+	bool is_iomem;
 	dma_addr_t dma;
 	size_t len;
 	u32 da;
-- 
2.30.0


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

* [PATCH V13 04/10] remoteproc: add is_iomem to da_to_va
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (2 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 03/10] remoteproc: introduce is_iomem to rproc_mem_entry peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 05/10] remoteproc: imx_rproc: correct err message peng.fan
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

Introduce an extra parameter is_iomem to da_to_va, then the caller
could take the memory as normal memory or io mapped memory.

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/imx_rproc.c             |  2 +-
 drivers/remoteproc/ingenic_rproc.c         |  2 +-
 drivers/remoteproc/keystone_remoteproc.c   |  2 +-
 drivers/remoteproc/mtk_scp.c               |  6 +++---
 drivers/remoteproc/omap_remoteproc.c       |  2 +-
 drivers/remoteproc/pru_rproc.c             |  2 +-
 drivers/remoteproc/qcom_q6v5_adsp.c        |  2 +-
 drivers/remoteproc/qcom_q6v5_pas.c         |  2 +-
 drivers/remoteproc/qcom_q6v5_wcss.c        |  2 +-
 drivers/remoteproc/qcom_wcnss.c            |  2 +-
 drivers/remoteproc/remoteproc_core.c       |  7 +++++--
 drivers/remoteproc/remoteproc_coredump.c   |  8 ++++++--
 drivers/remoteproc/remoteproc_debugfs.c    |  2 +-
 drivers/remoteproc/remoteproc_elf_loader.c | 21 +++++++++++++++------
 drivers/remoteproc/remoteproc_internal.h   |  2 +-
 drivers/remoteproc/st_slim_rproc.c         |  2 +-
 drivers/remoteproc/ti_k3_dsp_remoteproc.c  |  2 +-
 drivers/remoteproc/ti_k3_r5_remoteproc.c   |  2 +-
 drivers/remoteproc/wkup_m3_rproc.c         |  2 +-
 include/linux/remoteproc.h                 |  2 +-
 20 files changed, 45 insertions(+), 29 deletions(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 8957ed271d20..6603e00bb6f4 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -208,7 +208,7 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da,
 	return -ENOENT;
 }
 
-static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct imx_rproc *priv = rproc->priv;
 	void *va = NULL;
diff --git a/drivers/remoteproc/ingenic_rproc.c b/drivers/remoteproc/ingenic_rproc.c
index e2618c36eaab..a356738160a4 100644
--- a/drivers/remoteproc/ingenic_rproc.c
+++ b/drivers/remoteproc/ingenic_rproc.c
@@ -121,7 +121,7 @@ static void ingenic_rproc_kick(struct rproc *rproc, int vqid)
 	writel(vqid, vpu->aux_base + REG_CORE_MSG);
 }
 
-static void *ingenic_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *ingenic_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct vpu *vpu = rproc->priv;
 	void __iomem *va = NULL;
diff --git a/drivers/remoteproc/keystone_remoteproc.c b/drivers/remoteproc/keystone_remoteproc.c
index cd266163a65f..54781f553f4e 100644
--- a/drivers/remoteproc/keystone_remoteproc.c
+++ b/drivers/remoteproc/keystone_remoteproc.c
@@ -246,7 +246,7 @@ static void keystone_rproc_kick(struct rproc *rproc, int vqid)
  * can be used either by the remoteproc core for loading (when using kernel
  * remoteproc loader), or by any rpmsg bus drivers.
  */
-static void *keystone_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *keystone_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct keystone_rproc *ksproc = rproc->priv;
 	void __iomem *va = NULL;
diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
index ce727598c41c..9679cc26895e 100644
--- a/drivers/remoteproc/mtk_scp.c
+++ b/drivers/remoteproc/mtk_scp.c
@@ -272,7 +272,7 @@ static int scp_elf_load_segments(struct rproc *rproc, const struct firmware *fw)
 		}
 
 		/* grab the kernel address for this device address */
-		ptr = (void __iomem *)rproc_da_to_va(rproc, da, memsz);
+		ptr = (void __iomem *)rproc_da_to_va(rproc, da, memsz, NULL);
 		if (!ptr) {
 			dev_err(dev, "bad phdr da 0x%x mem 0x%x\n", da, memsz);
 			ret = -EINVAL;
@@ -509,7 +509,7 @@ static void *mt8192_scp_da_to_va(struct mtk_scp *scp, u64 da, size_t len)
 	return NULL;
 }
 
-static void *scp_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *scp_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct mtk_scp *scp = (struct mtk_scp *)rproc->priv;
 
@@ -627,7 +627,7 @@ void *scp_mapping_dm_addr(struct mtk_scp *scp, u32 mem_addr)
 {
 	void *ptr;
 
-	ptr = scp_da_to_va(scp->rproc, mem_addr, 0);
+	ptr = scp_da_to_va(scp->rproc, mem_addr, 0, NULL);
 	if (!ptr)
 		return ERR_PTR(-EINVAL);
 
diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c
index d94b7391bf9d..43531caa1959 100644
--- a/drivers/remoteproc/omap_remoteproc.c
+++ b/drivers/remoteproc/omap_remoteproc.c
@@ -728,7 +728,7 @@ static int omap_rproc_stop(struct rproc *rproc)
  * Return: translated virtual address in kernel memory space on success,
  *         or NULL on failure.
  */
-static void *omap_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *omap_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct omap_rproc *oproc = rproc->priv;
 	int i;
diff --git a/drivers/remoteproc/pru_rproc.c b/drivers/remoteproc/pru_rproc.c
index 5fad787ba012..8df99318f18a 100644
--- a/drivers/remoteproc/pru_rproc.c
+++ b/drivers/remoteproc/pru_rproc.c
@@ -483,7 +483,7 @@ static void *pru_i_da_to_va(struct pru_rproc *pru, u32 da, size_t len)
  * core for any PRU client drivers. The PRU Instruction RAM access is restricted
  * only to the PRU loader code.
  */
-static void *pru_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *pru_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct pru_rproc *pru = rproc->priv;
 
diff --git a/drivers/remoteproc/qcom_q6v5_adsp.c b/drivers/remoteproc/qcom_q6v5_adsp.c
index e02450225e4a..8b0d8bbacd2e 100644
--- a/drivers/remoteproc/qcom_q6v5_adsp.c
+++ b/drivers/remoteproc/qcom_q6v5_adsp.c
@@ -281,7 +281,7 @@ static int adsp_stop(struct rproc *rproc)
 	return ret;
 }
 
-static void *adsp_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *adsp_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
 	int offset;
diff --git a/drivers/remoteproc/qcom_q6v5_pas.c b/drivers/remoteproc/qcom_q6v5_pas.c
index e635454d6170..ef85b5511dc9 100644
--- a/drivers/remoteproc/qcom_q6v5_pas.c
+++ b/drivers/remoteproc/qcom_q6v5_pas.c
@@ -242,7 +242,7 @@ static int adsp_stop(struct rproc *rproc)
 	return ret;
 }
 
-static void *adsp_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *adsp_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct qcom_adsp *adsp = (struct qcom_adsp *)rproc->priv;
 	int offset;
diff --git a/drivers/remoteproc/qcom_q6v5_wcss.c b/drivers/remoteproc/qcom_q6v5_wcss.c
index 78ebe1168b33..704cd63c9af4 100644
--- a/drivers/remoteproc/qcom_q6v5_wcss.c
+++ b/drivers/remoteproc/qcom_q6v5_wcss.c
@@ -410,7 +410,7 @@ static int q6v5_wcss_stop(struct rproc *rproc)
 	return 0;
 }
 
-static void *q6v5_wcss_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *q6v5_wcss_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct q6v5_wcss *wcss = rproc->priv;
 	int offset;
diff --git a/drivers/remoteproc/qcom_wcnss.c b/drivers/remoteproc/qcom_wcnss.c
index 2a6a23cb14ca..3a131163064c 100644
--- a/drivers/remoteproc/qcom_wcnss.c
+++ b/drivers/remoteproc/qcom_wcnss.c
@@ -320,7 +320,7 @@ static int wcnss_stop(struct rproc *rproc)
 	return ret;
 }
 
-static void *wcnss_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *wcnss_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct qcom_wcnss *wcnss = (struct qcom_wcnss *)rproc->priv;
 	int offset;
diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index ab150765d124..a1df4d7e5323 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -189,13 +189,13 @@ EXPORT_SYMBOL(rproc_va_to_pa);
  * here the output of the DMA API for the carveouts, which should be more
  * correct.
  */
-void *rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+void *rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct rproc_mem_entry *carveout;
 	void *ptr = NULL;
 
 	if (rproc->ops->da_to_va) {
-		ptr = rproc->ops->da_to_va(rproc, da, len);
+		ptr = rproc->ops->da_to_va(rproc, da, len, is_iomem);
 		if (ptr)
 			goto out;
 	}
@@ -217,6 +217,9 @@ void *rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
 
 		ptr = carveout->va + offset;
 
+		if (is_iomem)
+			*is_iomem = carveout->is_iomem;
+
 		break;
 	}
 
diff --git a/drivers/remoteproc/remoteproc_coredump.c b/drivers/remoteproc/remoteproc_coredump.c
index 81ec154a6a5e..aee657cc08c6 100644
--- a/drivers/remoteproc/remoteproc_coredump.c
+++ b/drivers/remoteproc/remoteproc_coredump.c
@@ -153,18 +153,22 @@ static void rproc_copy_segment(struct rproc *rproc, void *dest,
 			       size_t offset, size_t size)
 {
 	void *ptr;
+	bool is_iomem;
 
 	if (segment->dump) {
 		segment->dump(rproc, segment, dest, offset, size);
 	} else {
-		ptr = rproc_da_to_va(rproc, segment->da + offset, size);
+		ptr = rproc_da_to_va(rproc, segment->da + offset, size, &is_iomem);
 		if (!ptr) {
 			dev_err(&rproc->dev,
 				"invalid copy request for segment %pad with offset %zu and size %zu)\n",
 				&segment->da, offset, size);
 			memset(dest, 0xff, size);
 		} else {
-			memcpy(dest, ptr, size);
+			if (is_iomem)
+				memcpy_fromio(dest, ptr, size);
+			else
+				memcpy(dest, ptr, size);
 		}
 	}
 }
diff --git a/drivers/remoteproc/remoteproc_debugfs.c b/drivers/remoteproc/remoteproc_debugfs.c
index 7e5845376e9f..b5a1e3b697d9 100644
--- a/drivers/remoteproc/remoteproc_debugfs.c
+++ b/drivers/remoteproc/remoteproc_debugfs.c
@@ -132,7 +132,7 @@ static ssize_t rproc_trace_read(struct file *filp, char __user *userbuf,
 	char buf[100];
 	int len;
 
-	va = rproc_da_to_va(data->rproc, trace->da, trace->len);
+	va = rproc_da_to_va(data->rproc, trace->da, trace->len, NULL);
 
 	if (!va) {
 		len = scnprintf(buf, sizeof(buf), "Trace %s not available\n",
diff --git a/drivers/remoteproc/remoteproc_elf_loader.c b/drivers/remoteproc/remoteproc_elf_loader.c
index df68d87752e4..11423588965a 100644
--- a/drivers/remoteproc/remoteproc_elf_loader.c
+++ b/drivers/remoteproc/remoteproc_elf_loader.c
@@ -175,6 +175,7 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw)
 		u64 offset = elf_phdr_get_p_offset(class, phdr);
 		u32 type = elf_phdr_get_p_type(class, phdr);
 		void *ptr;
+		bool is_iomem;
 
 		if (type != PT_LOAD)
 			continue;
@@ -204,7 +205,7 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw)
 		}
 
 		/* grab the kernel address for this device address */
-		ptr = rproc_da_to_va(rproc, da, memsz);
+		ptr = rproc_da_to_va(rproc, da, memsz, &is_iomem);
 		if (!ptr) {
 			dev_err(dev, "bad phdr da 0x%llx mem 0x%llx\n", da,
 				memsz);
@@ -213,8 +214,12 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw)
 		}
 
 		/* put the segment where the remote processor expects it */
-		if (filesz)
-			memcpy(ptr, elf_data + offset, filesz);
+		if (filesz) {
+			if (is_iomem)
+				memcpy_fromio(ptr, (void __iomem *)(elf_data + offset), filesz);
+			else
+				memcpy(ptr, elf_data + offset, filesz);
+		}
 
 		/*
 		 * Zero out remaining memory for this segment.
@@ -223,8 +228,12 @@ int rproc_elf_load_segments(struct rproc *rproc, const struct firmware *fw)
 		 * did this for us. albeit harmless, we may consider removing
 		 * this.
 		 */
-		if (memsz > filesz)
-			memset(ptr + filesz, 0, memsz - filesz);
+		if (memsz > filesz) {
+			if (is_iomem)
+				memset_io((void __iomem *)(ptr + filesz), 0, memsz - filesz);
+			else
+				memset(ptr + filesz, 0, memsz - filesz);
+		}
 	}
 
 	return ret;
@@ -377,6 +386,6 @@ struct resource_table *rproc_elf_find_loaded_rsc_table(struct rproc *rproc,
 		return NULL;
 	}
 
-	return rproc_da_to_va(rproc, sh_addr, sh_size);
+	return rproc_da_to_va(rproc, sh_addr, sh_size, NULL);
 }
 EXPORT_SYMBOL(rproc_elf_find_loaded_rsc_table);
diff --git a/drivers/remoteproc/remoteproc_internal.h b/drivers/remoteproc/remoteproc_internal.h
index c34002888d2c..9ea37aa687d2 100644
--- a/drivers/remoteproc/remoteproc_internal.h
+++ b/drivers/remoteproc/remoteproc_internal.h
@@ -84,7 +84,7 @@ static inline void  rproc_char_device_remove(struct rproc *rproc)
 void rproc_free_vring(struct rproc_vring *rvring);
 int rproc_alloc_vring(struct rproc_vdev *rvdev, int i);
 
-void *rproc_da_to_va(struct rproc *rproc, u64 da, size_t len);
+void *rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem);
 phys_addr_t rproc_va_to_pa(void *cpu_addr);
 int rproc_trigger_recovery(struct rproc *rproc);
 
diff --git a/drivers/remoteproc/st_slim_rproc.c b/drivers/remoteproc/st_slim_rproc.c
index 09bcb4d8b9e0..22096adc1ad3 100644
--- a/drivers/remoteproc/st_slim_rproc.c
+++ b/drivers/remoteproc/st_slim_rproc.c
@@ -174,7 +174,7 @@ static int slim_rproc_stop(struct rproc *rproc)
 	return 0;
 }
 
-static void *slim_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *slim_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct st_slim_rproc *slim_rproc = rproc->priv;
 	void *va = NULL;
diff --git a/drivers/remoteproc/ti_k3_dsp_remoteproc.c b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
index 863c0214e0a8..fd4eb67a6681 100644
--- a/drivers/remoteproc/ti_k3_dsp_remoteproc.c
+++ b/drivers/remoteproc/ti_k3_dsp_remoteproc.c
@@ -354,7 +354,7 @@ static int k3_dsp_rproc_stop(struct rproc *rproc)
  * can be used either by the remoteproc core for loading (when using kernel
  * remoteproc loader), or by any rpmsg bus drivers.
  */
-static void *k3_dsp_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *k3_dsp_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct k3_dsp_rproc *kproc = rproc->priv;
 	void __iomem *va = NULL;
diff --git a/drivers/remoteproc/ti_k3_r5_remoteproc.c b/drivers/remoteproc/ti_k3_r5_remoteproc.c
index 62b5a4c29456..5cf8d030a1f0 100644
--- a/drivers/remoteproc/ti_k3_r5_remoteproc.c
+++ b/drivers/remoteproc/ti_k3_r5_remoteproc.c
@@ -590,7 +590,7 @@ static int k3_r5_rproc_stop(struct rproc *rproc)
  * present in a DSP or IPU device). The translated addresses can be used
  * either by the remoteproc core for loading, or by any rpmsg bus drivers.
  */
-static void *k3_r5_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *k3_r5_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct k3_r5_rproc *kproc = rproc->priv;
 	struct k3_r5_core *core = kproc->core;
diff --git a/drivers/remoteproc/wkup_m3_rproc.c b/drivers/remoteproc/wkup_m3_rproc.c
index 92d387dfc03b..484f7605823e 100644
--- a/drivers/remoteproc/wkup_m3_rproc.c
+++ b/drivers/remoteproc/wkup_m3_rproc.c
@@ -89,7 +89,7 @@ static int wkup_m3_rproc_stop(struct rproc *rproc)
 	return error;
 }
 
-static void *wkup_m3_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len)
+static void *wkup_m3_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
 {
 	struct wkup_m3_rproc *wkupm3 = rproc->priv;
 	void *va = NULL;
diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
index a5f6d2d9cde2..1b7d56c7a453 100644
--- a/include/linux/remoteproc.h
+++ b/include/linux/remoteproc.h
@@ -386,7 +386,7 @@ struct rproc_ops {
 	int (*stop)(struct rproc *rproc);
 	int (*attach)(struct rproc *rproc);
 	void (*kick)(struct rproc *rproc, int vqid);
-	void * (*da_to_va)(struct rproc *rproc, u64 da, size_t len);
+	void * (*da_to_va)(struct rproc *rproc, u64 da, size_t len, bool *is_iomem);
 	int (*parse_fw)(struct rproc *rproc, const struct firmware *fw);
 	int (*handle_rsc)(struct rproc *rproc, u32 rsc_type, void *rsc,
 			  int offset, int avail);
-- 
2.30.0


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

* [PATCH V13 05/10] remoteproc: imx_rproc: correct err message
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (3 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 04/10] remoteproc: add is_iomem to da_to_va peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 06/10] remoteproc: imx_rproc: use devm_ioremap peng.fan
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

It is using devm_ioremap, so not devm_ioremap_resource. Correct
the error message and print out sa/size.

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

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 6603e00bb6f4..2a093cea4997 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -268,7 +268,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 		priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev,
 						     att->sa, att->size);
 		if (!priv->mem[b].cpu_addr) {
-			dev_err(dev, "devm_ioremap_resource failed\n");
+			dev_err(dev, "failed to remap %#x bytes from %#x\n", att->size, att->sa);
 			return -ENOMEM;
 		}
 		priv->mem[b].sys_addr = att->sa;
@@ -298,7 +298,7 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 
 		priv->mem[b].cpu_addr = devm_ioremap_resource(&pdev->dev, &res);
 		if (IS_ERR(priv->mem[b].cpu_addr)) {
-			dev_err(dev, "devm_ioremap_resource failed\n");
+			dev_err(dev, "failed to remap %pr\n", &res);
 			err = PTR_ERR(priv->mem[b].cpu_addr);
 			return err;
 		}
-- 
2.30.0


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

* [PATCH V13 06/10] remoteproc: imx_rproc: use devm_ioremap
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (4 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 05/10] remoteproc: imx_rproc: correct err message peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 07/10] remoteproc: imx_rproc: add i.MX specific parse fw hook peng.fan
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

We might need to map an region multiple times, becaue the region might
be shared between remote processors, such i.MX8QM with dual M4 cores.
So use devm_ioremap, not devm_ioremap_resource.

Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com>
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, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 2a093cea4997..47fc1d06be6a 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -296,7 +296,8 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 		if (b >= IMX7D_RPROC_MEM_MAX)
 			break;
 
-		priv->mem[b].cpu_addr = devm_ioremap_resource(&pdev->dev, &res);
+		/* Not use resource version, because we might share region */
+		priv->mem[b].cpu_addr = devm_ioremap(&pdev->dev, res.start, resource_size(&res));
 		if (IS_ERR(priv->mem[b].cpu_addr)) {
 			dev_err(dev, "failed to remap %pr\n", &res);
 			err = PTR_ERR(priv->mem[b].cpu_addr);
-- 
2.30.0


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

* [PATCH V13 07/10] remoteproc: imx_rproc: add i.MX specific parse fw hook
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (5 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 06/10] remoteproc: imx_rproc: use devm_ioremap peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 08/10] remoteproc: imx_rproc: support i.MX8MQ/M peng.fan
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

The hook is used to parse memory-regions and load resource table
from the address the remote processor published.

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

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 47fc1d06be6a..5ae1f5209548 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -10,6 +10,7 @@
 #include <linux/mfd/syscon.h>
 #include <linux/module.h>
 #include <linux/of_address.h>
+#include <linux/of_reserved_mem.h>
 #include <linux/of_device.h>
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
@@ -241,10 +242,102 @@ static void *imx_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *i
 	return va;
 }
 
+static int imx_rproc_mem_alloc(struct rproc *rproc,
+			       struct rproc_mem_entry *mem)
+{
+	struct device *dev = rproc->dev.parent;
+	void *va;
+
+	dev_dbg(dev, "map memory: %p+%zx\n", &mem->dma, mem->len);
+	va = ioremap_wc(mem->dma, mem->len);
+	if (IS_ERR_OR_NULL(va)) {
+		dev_err(dev, "Unable to map memory region: %p+%zx\n",
+			&mem->dma, mem->len);
+		return -ENOMEM;
+	}
+
+	/* Update memory entry va */
+	mem->va = va;
+
+	return 0;
+}
+
+static int imx_rproc_mem_release(struct rproc *rproc,
+				 struct rproc_mem_entry *mem)
+{
+	dev_dbg(rproc->dev.parent, "unmap memory: %pa\n", &mem->dma);
+	iounmap(mem->va);
+
+	return 0;
+}
+
+static int imx_rproc_parse_memory_regions(struct rproc *rproc)
+{
+	struct imx_rproc *priv = rproc->priv;
+	struct device_node *np = priv->dev->of_node;
+	struct of_phandle_iterator it;
+	struct rproc_mem_entry *mem;
+	struct reserved_mem *rmem;
+	u32 da;
+
+	/* Register associated reserved memory regions */
+	of_phandle_iterator_init(&it, np, "memory-region", NULL, 0);
+	while (of_phandle_iterator_next(&it) == 0) {
+		/*
+		 * Ignore the first memory region which will be used vdev buffer.
+		 * No need to do extra handlings, rproc_add_virtio_dev will handle it.
+		 */
+		if (!strcmp(it.node->name, "vdev0buffer"))
+			continue;
+
+		rmem = of_reserved_mem_lookup(it.node);
+		if (!rmem) {
+			dev_err(priv->dev, "unable to acquire memory-region\n");
+			return -EINVAL;
+		}
+
+		/* No need to translate pa to da, i.MX use same map */
+		da = rmem->base;
+
+		/* Register memory region */
+		mem = rproc_mem_entry_init(priv->dev, NULL, (dma_addr_t)rmem->base, rmem->size, da,
+					   imx_rproc_mem_alloc, imx_rproc_mem_release,
+					   it.node->name);
+
+		if (mem)
+			rproc_coredump_add_segment(rproc, da, rmem->size);
+		else
+			return -ENOMEM;
+
+		rproc_add_carveout(rproc, mem);
+	}
+
+	return  0;
+}
+
+static int imx_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw)
+{
+	int ret = imx_rproc_parse_memory_regions(rproc);
+
+	if (ret)
+		return ret;
+
+	ret = rproc_elf_load_rsc_table(rproc, fw);
+	if (ret)
+		dev_info(&rproc->dev, "No resource table in elf\n");
+
+	return 0;
+}
+
 static const struct rproc_ops imx_rproc_ops = {
 	.start		= imx_rproc_start,
 	.stop		= imx_rproc_stop,
 	.da_to_va       = imx_rproc_da_to_va,
+	.load		= rproc_elf_load_segments,
+	.parse_fw	= imx_rproc_parse_fw,
+	.find_loaded_rsc_table = rproc_elf_find_loaded_rsc_table,
+	.sanity_check	= rproc_elf_sanity_check,
+	.get_boot_addr	= rproc_elf_get_boot_addr,
 };
 
 static int imx_rproc_addr_init(struct imx_rproc *priv,
-- 
2.30.0


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

* [PATCH V13 08/10] remoteproc: imx_rproc: support i.MX8MQ/M
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (6 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 07/10] remoteproc: imx_rproc: add i.MX specific parse fw hook peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 09/10] remoteproc: imx_rproc: ignore mapping vdev regions peng.fan
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

Add i.MX8MQ dev/sys addr map and configuration data structure
i.MX8MM share i.MX8MQ settings.

Reviewed-by: Richard Zhu <hongxing.zhu@nxp.com>
Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/remoteproc/Kconfig     |  6 ++---
 drivers/remoteproc/imx_rproc.c | 41 +++++++++++++++++++++++++++++++++-
 2 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index 15d1574d129b..7cf3d1b40c55 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -24,11 +24,11 @@ config REMOTEPROC_CDEV
 	  It's safe to say N if you don't want to use this interface.
 
 config IMX_REMOTEPROC
-	tristate "IMX6/7 remoteproc support"
+	tristate "i.MX remoteproc support"
 	depends on ARCH_MXC
 	help
-	  Say y here to support iMX's remote processors (Cortex M4
-	  on iMX7D) via the remote processor framework.
+	  Say y here to support iMX's remote processors via the remote
+	  processor framework.
 
 	  It's safe to say N here.
 
diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 5ae1f5209548..0124ebf69838 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -88,6 +88,34 @@ struct imx_rproc {
 	struct clk			*clk;
 };
 
+static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
+	/* dev addr , sys addr  , size	    , flags */
+	/* TCML - alias */
+	{ 0x00000000, 0x007e0000, 0x00020000, 0 },
+	/* OCRAM_S */
+	{ 0x00180000, 0x00180000, 0x00008000, 0 },
+	/* OCRAM */
+	{ 0x00900000, 0x00900000, 0x00020000, 0 },
+	/* OCRAM */
+	{ 0x00920000, 0x00920000, 0x00020000, 0 },
+	/* QSPI Code - alias */
+	{ 0x08000000, 0x08000000, 0x08000000, 0 },
+	/* DDR (Code) - alias */
+	{ 0x10000000, 0x80000000, 0x0FFE0000, 0 },
+	/* TCML */
+	{ 0x1FFE0000, 0x007E0000, 0x00020000, ATT_OWN },
+	/* TCMU */
+	{ 0x20000000, 0x00800000, 0x00020000, ATT_OWN },
+	/* OCRAM_S */
+	{ 0x20180000, 0x00180000, 0x00008000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20200000, 0x00900000, 0x00020000, ATT_OWN },
+	/* OCRAM */
+	{ 0x20220000, 0x00920000, 0x00020000, ATT_OWN },
+	/* DDR (Data) */
+	{ 0x40000000, 0x40000000, 0x80000000, 0 },
+};
+
 static const struct imx_rproc_att imx_rproc_att_imx7d[] = {
 	/* dev addr , sys addr  , size	    , flags */
 	/* OCRAM_S (M4 Boot code) - alias */
@@ -138,6 +166,15 @@ static const struct imx_rproc_att imx_rproc_att_imx6sx[] = {
 	{ 0x80000000, 0x80000000, 0x60000000, 0 },
 };
 
+static const struct imx_rproc_dcfg imx_rproc_cfg_imx8mq = {
+	.src_reg	= IMX7D_SRC_SCR,
+	.src_mask	= IMX7D_M4_RST_MASK,
+	.src_start	= IMX7D_M4_START,
+	.src_stop	= IMX7D_M4_STOP,
+	.att		= imx_rproc_att_imx8mq,
+	.att_size	= ARRAY_SIZE(imx_rproc_att_imx8mq),
+};
+
 static const struct imx_rproc_dcfg imx_rproc_cfg_imx7d = {
 	.src_reg	= IMX7D_SRC_SCR,
 	.src_mask	= IMX7D_M4_RST_MASK,
@@ -496,6 +533,8 @@ static int imx_rproc_remove(struct platform_device *pdev)
 static const struct of_device_id imx_rproc_of_match[] = {
 	{ .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 },
+	{ .compatible = "fsl,imx8mm-cm4", .data = &imx_rproc_cfg_imx8mq },
 	{},
 };
 MODULE_DEVICE_TABLE(of, imx_rproc_of_match);
@@ -512,5 +551,5 @@ static struct platform_driver imx_rproc_driver = {
 module_platform_driver(imx_rproc_driver);
 
 MODULE_LICENSE("GPL v2");
-MODULE_DESCRIPTION("IMX6SX/7D remote processor control driver");
+MODULE_DESCRIPTION("i.MX remote processor control driver");
 MODULE_AUTHOR("Oleksij Rempel <o.rempel@pengutronix.de>");
-- 
2.30.0


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

* [PATCH V13 09/10] remoteproc: imx_rproc: ignore mapping vdev regions
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (7 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 08/10] remoteproc: imx_rproc: support i.MX8MQ/M peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-06 11:24 ` [PATCH V13 10/10] remoteproc: imx_proc: enable virtio/mailbox peng.fan
  2021-03-08 16:08 ` [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M Mathieu Poirier
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

vdev regions are vdev0vring0, vdev0vring1, vdevbuffer and similar.
They are handled by remoteproc common code, no need to map in imx
rproc driver.

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 0124ebf69838..3685bbd135b0 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -417,6 +417,9 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 		struct resource res;
 
 		node = of_parse_phandle(np, "memory-region", a);
+		/* Not map vdev region */
+		if (!strcmp(node->name, "vdev"))
+			continue;
 		err = of_address_to_resource(node, 0, &res);
 		if (err) {
 			dev_err(dev, "unable to resolve memory region\n");
-- 
2.30.0


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

* [PATCH V13 10/10] remoteproc: imx_proc: enable virtio/mailbox
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (8 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 09/10] remoteproc: imx_rproc: ignore mapping vdev regions peng.fan
@ 2021-03-06 11:24 ` peng.fan
  2021-03-08 16:08 ` [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M Mathieu Poirier
  10 siblings, 0 replies; 16+ messages in thread
From: peng.fan @ 2021-03-06 11:24 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, paul, matthias.bgg, agross,
	patrice.chotard, Peng Fan

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

Use virtio/mailbox to build connection between Remote Proccessors
and Linux. Add work queue to handle incoming messages.

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

diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c
index 3685bbd135b0..90471790bb24 100644
--- a/drivers/remoteproc/imx_rproc.c
+++ b/drivers/remoteproc/imx_rproc.c
@@ -7,6 +7,7 @@
 #include <linux/err.h>
 #include <linux/interrupt.h>
 #include <linux/kernel.h>
+#include <linux/mailbox_client.h>
 #include <linux/mfd/syscon.h>
 #include <linux/module.h>
 #include <linux/of_address.h>
@@ -15,6 +16,9 @@
 #include <linux/platform_device.h>
 #include <linux/regmap.h>
 #include <linux/remoteproc.h>
+#include <linux/workqueue.h>
+
+#include "remoteproc_internal.h"
 
 #define IMX7D_SRC_SCR			0x0C
 #define IMX7D_ENABLE_M4			BIT(3)
@@ -86,6 +90,11 @@ struct imx_rproc {
 	const struct imx_rproc_dcfg	*dcfg;
 	struct imx_rproc_mem		mem[IMX7D_RPROC_MEM_MAX];
 	struct clk			*clk;
+	struct mbox_client		cl;
+	struct mbox_chan		*tx_ch;
+	struct mbox_chan		*rx_ch;
+	struct work_struct		rproc_work;
+	struct workqueue_struct		*workqueue;
 };
 
 static const struct imx_rproc_att imx_rproc_att_imx8mq[] = {
@@ -366,9 +375,33 @@ static int imx_rproc_parse_fw(struct rproc *rproc, const struct firmware *fw)
 	return 0;
 }
 
+static void imx_rproc_kick(struct rproc *rproc, int vqid)
+{
+	struct imx_rproc *priv = rproc->priv;
+	int err;
+	__u32 mmsg;
+
+	if (!priv->tx_ch) {
+		dev_err(priv->dev, "No initialized mbox tx channel\n");
+		return;
+	}
+
+	/*
+	 * Send the index of the triggered virtqueue as the mu payload.
+	 * Let remote processor know which virtqueue is used.
+	 */
+	mmsg = vqid << 16;
+
+	err = mbox_send_message(priv->tx_ch, (void *)&mmsg);
+	if (err < 0)
+		dev_err(priv->dev, "%s: failed (%d, err:%d)\n",
+			__func__, vqid, err);
+}
+
 static const struct rproc_ops imx_rproc_ops = {
 	.start		= imx_rproc_start,
 	.stop		= imx_rproc_stop,
+	.kick		= imx_rproc_kick,
 	.da_to_va       = imx_rproc_da_to_va,
 	.load		= rproc_elf_load_segments,
 	.parse_fw	= imx_rproc_parse_fw,
@@ -444,6 +477,66 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 	return 0;
 }
 
+static void imx_rproc_vq_work(struct work_struct *work)
+{
+	struct imx_rproc *priv = container_of(work, struct imx_rproc,
+					      rproc_work);
+
+	rproc_vq_interrupt(priv->rproc, 0);
+	rproc_vq_interrupt(priv->rproc, 1);
+}
+
+static void imx_rproc_rx_callback(struct mbox_client *cl, void *msg)
+{
+	struct rproc *rproc = dev_get_drvdata(cl->dev);
+	struct imx_rproc *priv = rproc->priv;
+
+	queue_work(priv->workqueue, &priv->rproc_work);
+}
+
+static int imx_rproc_xtr_mbox_init(struct rproc *rproc)
+{
+	struct imx_rproc *priv = rproc->priv;
+	struct device *dev = priv->dev;
+	struct mbox_client *cl;
+	int ret;
+
+	if (!of_get_property(dev->of_node, "mbox-names", NULL))
+		return 0;
+
+	cl = &priv->cl;
+	cl->dev = dev;
+	cl->tx_block = true;
+	cl->tx_tout = 100;
+	cl->knows_txdone = false;
+	cl->rx_callback = imx_rproc_rx_callback;
+
+	priv->tx_ch = mbox_request_channel_byname(cl, "tx");
+	if (IS_ERR(priv->tx_ch)) {
+		ret = PTR_ERR(priv->tx_ch);
+		return dev_err_probe(cl->dev, ret,
+				     "failed to request tx mailbox channel: %d\n", ret);
+	}
+
+	priv->rx_ch = mbox_request_channel_byname(cl, "rx");
+	if (IS_ERR(priv->rx_ch)) {
+		mbox_free_channel(priv->tx_ch);
+		ret = PTR_ERR(priv->rx_ch);
+		return dev_err_probe(cl->dev, ret,
+				     "failed to request rx mailbox channel: %d\n", ret);
+	}
+
+	return 0;
+}
+
+static void imx_rproc_free_mbox(struct rproc *rproc)
+{
+	struct imx_rproc *priv = rproc->priv;
+
+	mbox_free_channel(priv->tx_ch);
+	mbox_free_channel(priv->rx_ch);
+}
+
 static int imx_rproc_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -481,18 +574,28 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	priv->dev = dev;
 
 	dev_set_drvdata(dev, rproc);
+	priv->workqueue = create_workqueue(dev_name(dev));
+	if (!priv->workqueue) {
+		dev_err(dev, "cannot create workqueue\n");
+		ret = -ENOMEM;
+		goto err_put_rproc;
+	}
+
+	ret = imx_rproc_xtr_mbox_init(rproc);
+	if (ret)
+		goto err_put_wkq;
 
 	ret = imx_rproc_addr_init(priv, pdev);
 	if (ret) {
 		dev_err(dev, "failed on imx_rproc_addr_init\n");
-		goto err_put_rproc;
+		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_rproc;
+		goto err_put_mbox;
 	}
 
 	/*
@@ -502,9 +605,11 @@ static int imx_rproc_probe(struct platform_device *pdev)
 	ret = clk_prepare_enable(priv->clk);
 	if (ret) {
 		dev_err(&rproc->dev, "Failed to enable clock\n");
-		goto err_put_rproc;
+		goto err_put_mbox;
 	}
 
+	INIT_WORK(&(priv->rproc_work), imx_rproc_vq_work);
+
 	ret = rproc_add(rproc);
 	if (ret) {
 		dev_err(dev, "rproc_add failed\n");
@@ -515,6 +620,10 @@ static int imx_rproc_probe(struct platform_device *pdev)
 
 err_put_clk:
 	clk_disable_unprepare(priv->clk);
+err_put_mbox:
+	imx_rproc_free_mbox(rproc);
+err_put_wkq:
+	destroy_workqueue(priv->workqueue);
 err_put_rproc:
 	rproc_free(rproc);
 
@@ -528,6 +637,7 @@ static int imx_rproc_remove(struct platform_device *pdev)
 
 	clk_disable_unprepare(priv->clk);
 	rproc_del(rproc);
+	imx_rproc_free_mbox(rproc);
 	rproc_free(rproc);
 
 	return 0;
-- 
2.30.0


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

* Re: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
  2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
                   ` (9 preceding siblings ...)
  2021-03-06 11:24 ` [PATCH V13 10/10] remoteproc: imx_proc: enable virtio/mailbox peng.fan
@ 2021-03-08 16:08 ` Mathieu Poirier
  2021-03-11  1:26   ` Peng Fan (OSS)
  10 siblings, 1 reply; 16+ messages in thread
From: Mathieu Poirier @ 2021-03-08 16:08 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, paul, matthias.bgg, agross, patrice.chotard,
	Peng Fan

On Sat, Mar 06, 2021 at 07:24:15PM +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> V13:
>  Add R-b tag from Rob for patch 1.
>  Drop the reserved memory node from patch 2 per Rob's comment.
>  Mathieu, Bjorn
>   Only patch 2 not have R-b/A-b tag, but since Rob's only has a minor comment, and
>   addressed in this version, is it ok for you take into remoteproc next branch?
>   Thanks.

As much as I want to, there is no way to move forward without an acknowledgement
from Rob.

> 
> V12:
>  Add maxItems to avoid dt_bindings_check fail
>  Rebased on top of linux-next
> 
> V11:
>  Per Rob's comments, fix memory-region in patch 1/10
>  Rebased on top of Linux-next
> 
> V10:
>  Per Rob's comments, fix patch 1/10
> 
> V9:
>  Per Mathieu's comments,
>    update the tile of yaml in patch 2/10
>    update the Kconfig and MODULE_DESCRIPTION, I merge this change in patch 8/10,
>    since this is a minor change, I still keep Mathieu's R-b tag. If any objection, I could remove.
>    Add R-b tag in Patch 10/10
> 
>  Rob, please help review patch 1/10 and 2/10
> 
> V8:
>  Address sparse warning in patch 4/10 reported by kernel test robot
> 
> V7:
>  Add R-b tag from Mathieu
>  vdevbuffer->vdev0buffer in patch 1/10, 7/10
>  correct err msg and shutdown seq per Mathieu's comments in patch 10/10
>  Hope this version is ok to be merged.
>  
> V6:
>  Add R-b tag from Mathieu
>  Convert imx-rproc.txt to yaml and add dt-bindings support for i.MX8MQ/M, patch 1/10 2/10
>  No other changes.
> 
> V5:
>  Apply on Linux next
>  Add V5 subject prefix
>  Add R-b tag from Bjorn for 1/8, 2/8, 3/8
>  https://patchwork.kernel.org/project/linux-remoteproc/cover/20201229033019.25899-1-peng.fan@nxp.com/
> 
> V4:
>  According to Bjorn's comments, add is_iomem for da to va usage
>  1/8, 2/8 is new patch
>  3/8, follow Bjorn's comments to correct/update the err msg.
>  6/8, new patch
>  8/8, use dev_err_probe to simplify code, use queue_work instead schedule_delayed_work
> 
> V3:
>  Since I was quite busy in the past days, V3 is late
>  Rebased on Linux-next
>  Add R-b tags
>  1/7: Add R-b tag of Mathieu, add comments
>  4/7: Typo fix
>  5/7: Add R-b tag of Mathieu, drop index Per Mathieu's comments
>  6/7: Add R-b tag of Mathieu
>  7/7: Add comment for vqid << 16, drop unneeded timeout settings of mailbox
>       Use queue_work instead of schedule_delayed_work
>       free mbox channels when remove
>  https://lkml.org/lkml/2020/12/4/82
> 
> V2:
>  Rebased on linux-next
>  Dropped early boot feature to make patchset simple.
>  Drop rsc-da
>  https://patchwork.kernel.org/project/linux-remoteproc/cover/20200927064131.24101-1-peng.fan@nxp.com/
> 
> V1:
>  https://patchwork.kernel.org/cover/11682461/
> 
> This patchset is to support i.MX8MQ/M coproc.
> The early boot feature was dropped to make the patchset small in V2.
> 
> Since i.MX specific TCM memory requirement, add elf platform hook.
> Several patches have got reviewed by Oleksij and Mathieu in v1.
> 
> 
> Peng Fan (10):
>   dt-bindings: remoteproc: convert imx rproc bindings to json-schema
>   dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
>   remoteproc: introduce is_iomem to rproc_mem_entry
>   remoteproc: add is_iomem to da_to_va
>   remoteproc: imx_rproc: correct err message
>   remoteproc: imx_rproc: use devm_ioremap
>   remoteproc: imx_rproc: add i.MX specific parse fw hook
>   remoteproc: imx_rproc: support i.MX8MQ/M
>   remoteproc: imx_rproc: ignore mapping vdev regions
>   remoteproc: imx_proc: enable virtio/mailbox
> 
>  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  90 ++++++
>  .../bindings/remoteproc/imx-rproc.txt         |  33 ---
>  drivers/remoteproc/Kconfig                    |   6 +-
>  drivers/remoteproc/imx_rproc.c                | 262 +++++++++++++++++-
>  drivers/remoteproc/ingenic_rproc.c            |   2 +-
>  drivers/remoteproc/keystone_remoteproc.c      |   2 +-
>  drivers/remoteproc/mtk_scp.c                  |   6 +-
>  drivers/remoteproc/omap_remoteproc.c          |   2 +-
>  drivers/remoteproc/pru_rproc.c                |   2 +-
>  drivers/remoteproc/qcom_q6v5_adsp.c           |   2 +-
>  drivers/remoteproc/qcom_q6v5_pas.c            |   2 +-
>  drivers/remoteproc/qcom_q6v5_wcss.c           |   2 +-
>  drivers/remoteproc/qcom_wcnss.c               |   2 +-
>  drivers/remoteproc/remoteproc_core.c          |   7 +-
>  drivers/remoteproc/remoteproc_coredump.c      |   8 +-
>  drivers/remoteproc/remoteproc_debugfs.c       |   2 +-
>  drivers/remoteproc/remoteproc_elf_loader.c    |  21 +-
>  drivers/remoteproc/remoteproc_internal.h      |   2 +-
>  drivers/remoteproc/st_slim_rproc.c            |   2 +-
>  drivers/remoteproc/ti_k3_dsp_remoteproc.c     |   2 +-
>  drivers/remoteproc/ti_k3_r5_remoteproc.c      |   2 +-
>  drivers/remoteproc/wkup_m3_rproc.c            |   2 +-
>  include/linux/remoteproc.h                    |   4 +-
>  23 files changed, 393 insertions(+), 72 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
>  delete mode 100644 Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> 
> -- 
> 2.30.0
> 

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

* Re: [PATCH V13 02/10] dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
  2021-03-06 11:24 ` [PATCH V13 02/10] dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support peng.fan
@ 2021-03-08 22:37   ` Rob Herring
  0 siblings, 0 replies; 16+ messages in thread
From: Rob Herring @ 2021-03-08 22:37 UTC (permalink / raw)
  To: peng.fan
  Cc: kernel, matthias.bgg, Peng Fan, agross, linux-arm-kernel,
	robh+dt, o.rempel, mathieu.poirier, bjorn.andersson, devicetree,
	festevam, linux-kernel, s.hauer, paul, shawnguo, ohad,
	linux-remoteproc, patrice.chotard

On Sat, 06 Mar 2021 19:24:17 +0800, peng.fan@oss.nxp.com wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Add i.MX8MQ/M support, also include mailbox for rpmsg/virtio usage.
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  .../bindings/remoteproc/fsl,imx-rproc.yaml    | 31 ++++++++++++++++++-
>  1 file changed, 30 insertions(+), 1 deletion(-)
> 

Reviewed-by: Rob Herring <robh@kernel.org>

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

* RE: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
  2021-03-08 16:08 ` [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M Mathieu Poirier
@ 2021-03-11  1:26   ` Peng Fan (OSS)
  2021-03-11 17:38     ` Mathieu Poirier
  0 siblings, 1 reply; 16+ messages in thread
From: Peng Fan (OSS) @ 2021-03-11  1:26 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, paul, matthias.bgg, agross, patrice.chotard

Mathieu,

> Subject: Re: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
> 
> On Sat, Mar 06, 2021 at 07:24:15PM +0800, peng.fan@oss.nxp.com wrote:
> > From: Peng Fan <peng.fan@nxp.com>
> >
> > V13:
> >  Add R-b tag from Rob for patch 1.
> >  Drop the reserved memory node from patch 2 per Rob's comment.
> >  Mathieu, Bjorn
> >   Only patch 2 not have R-b/A-b tag, but since Rob's only has a minor
> comment, and
> >   addressed in this version, is it ok for you take into remoteproc next
> branch?
> >   Thanks.
> 
> As much as I want to, there is no way to move forward without an
> acknowledgement from Rob.

Rob has gave his R-b tag for patch 2/13, please help pick up this patchset.
I really wanna this feature in which has been for a long time. Then
I will move on to add new stuff.

Thanks,
Peng.


> 
> >
> > V12:
> >  Add maxItems to avoid dt_bindings_check fail  Rebased on top of
> > linux-next
> >
> > V11:
> >  Per Rob's comments, fix memory-region in patch 1/10  Rebased on top
> > of Linux-next
> >
> > V10:
> >  Per Rob's comments, fix patch 1/10
> >
> > V9:
> >  Per Mathieu's comments,
> >    update the tile of yaml in patch 2/10
> >    update the Kconfig and MODULE_DESCRIPTION, I merge this change in
> patch 8/10,
> >    since this is a minor change, I still keep Mathieu's R-b tag. If any
> objection, I could remove.
> >    Add R-b tag in Patch 10/10
> >
> >  Rob, please help review patch 1/10 and 2/10
> >
> > V8:
> >  Address sparse warning in patch 4/10 reported by kernel test robot
> >
> > V7:
> >  Add R-b tag from Mathieu
> >  vdevbuffer->vdev0buffer in patch 1/10, 7/10  correct err msg and
> > shutdown seq per Mathieu's comments in patch 10/10  Hope this version
> > is ok to be merged.
> >
> > V6:
> >  Add R-b tag from Mathieu
> >  Convert imx-rproc.txt to yaml and add dt-bindings support for
> > i.MX8MQ/M, patch 1/10 2/10  No other changes.
> >
> > V5:
> >  Apply on Linux next
> >  Add V5 subject prefix
> >  Add R-b tag from Bjorn for 1/8, 2/8, 3/8
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.kernel.org%2Fproject%2Flinux-remoteproc%2Fcover%2F20201229033
> 019
> > .25899-1-peng.fan%40nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%40n
> xp.com%7
> >
> C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> 01635%7
> >
> C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> MC4wLjAwMD
> >
> AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata
> =bwlT
> > uTk6iRuZke6SMhuyB2gxniStfxnX%2BKlVgm7MZuk%3D&amp;reserved=0
> >
> > V4:
> >  According to Bjorn's comments, add is_iomem for da to va usage  1/8,
> > 2/8 is new patch  3/8, follow Bjorn's comments to correct/update the
> > err msg.
> >  6/8, new patch
> >  8/8, use dev_err_probe to simplify code, use queue_work instead
> > schedule_delayed_work
> >
> > V3:
> >  Since I was quite busy in the past days, V3 is late  Rebased on
> > Linux-next  Add R-b tags
> >  1/7: Add R-b tag of Mathieu, add comments
> >  4/7: Typo fix
> >  5/7: Add R-b tag of Mathieu, drop index Per Mathieu's comments
> >  6/7: Add R-b tag of Mathieu
> >  7/7: Add comment for vqid << 16, drop unneeded timeout settings of
> mailbox
> >       Use queue_work instead of schedule_delayed_work
> >       free mbox channels when remove
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml
> > .org%2Flkml%2F2020%2F12%2F4%2F82&amp;data=04%7C01%7Cpeng.fan
> %40nxp.com
> > %7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd9
> 9c5c301635
> > %7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJ
> WIjoiMC4wLjAw
> >
> MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sd
> ata=xQ
> >
> ReFFdUT2ZLhWyT2Vt2v0frG0xKq2psP1ExnLx%2BLXw%3D&amp;reserved=0
> >
> > V2:
> >  Rebased on linux-next
> >  Dropped early boot feature to make patchset simple.
> >  Drop rsc-da
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.kernel.org%2Fproject%2Flinux-remoteproc%2Fcover%2F20200927064
> 131
> > .24101-1-peng.fan%40nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%40n
> xp.com%7
> >
> C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> 01635%7
> >
> C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> MC4wLjAwMD
> >
> AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata
> =BWGP
> >
> gbVtOjOa%2BriGryGp9sh2CSY%2BhMESdGD%2F7LvPJ6w%3D&amp;reserved
> =0
> >
> > V1:
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.kernel.org%2Fcover%2F11682461%2F&amp;data=04%7C01%7Cpeng.f
> an%40n
> >
> xp.com%7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa9
> 2cd99c5c
> >
> 301635%7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3
> d8eyJWIjoiMC
> >
> 4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&
> amp;sd
> >
> ata=XkGYIxBgrHLwV7R3bro87N6fL7777Wa5rOAZdVjCoZs%3D&amp;reserved
> =0
> >
> > This patchset is to support i.MX8MQ/M coproc.
> > The early boot feature was dropped to make the patchset small in V2.
> >
> > Since i.MX specific TCM memory requirement, add elf platform hook.
> > Several patches have got reviewed by Oleksij and Mathieu in v1.
> >
> >
> > Peng Fan (10):
> >   dt-bindings: remoteproc: convert imx rproc bindings to json-schema
> >   dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
> >   remoteproc: introduce is_iomem to rproc_mem_entry
> >   remoteproc: add is_iomem to da_to_va
> >   remoteproc: imx_rproc: correct err message
> >   remoteproc: imx_rproc: use devm_ioremap
> >   remoteproc: imx_rproc: add i.MX specific parse fw hook
> >   remoteproc: imx_rproc: support i.MX8MQ/M
> >   remoteproc: imx_rproc: ignore mapping vdev regions
> >   remoteproc: imx_proc: enable virtio/mailbox
> >
> >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  90 ++++++
> >  .../bindings/remoteproc/imx-rproc.txt         |  33 ---
> >  drivers/remoteproc/Kconfig                    |   6 +-
> >  drivers/remoteproc/imx_rproc.c                | 262
> +++++++++++++++++-
> >  drivers/remoteproc/ingenic_rproc.c            |   2 +-
> >  drivers/remoteproc/keystone_remoteproc.c      |   2 +-
> >  drivers/remoteproc/mtk_scp.c                  |   6 +-
> >  drivers/remoteproc/omap_remoteproc.c          |   2 +-
> >  drivers/remoteproc/pru_rproc.c                |   2 +-
> >  drivers/remoteproc/qcom_q6v5_adsp.c           |   2 +-
> >  drivers/remoteproc/qcom_q6v5_pas.c            |   2 +-
> >  drivers/remoteproc/qcom_q6v5_wcss.c           |   2 +-
> >  drivers/remoteproc/qcom_wcnss.c               |   2 +-
> >  drivers/remoteproc/remoteproc_core.c          |   7 +-
> >  drivers/remoteproc/remoteproc_coredump.c      |   8 +-
> >  drivers/remoteproc/remoteproc_debugfs.c       |   2 +-
> >  drivers/remoteproc/remoteproc_elf_loader.c    |  21 +-
> >  drivers/remoteproc/remoteproc_internal.h      |   2 +-
> >  drivers/remoteproc/st_slim_rproc.c            |   2 +-
> >  drivers/remoteproc/ti_k3_dsp_remoteproc.c     |   2 +-
> >  drivers/remoteproc/ti_k3_r5_remoteproc.c      |   2 +-
> >  drivers/remoteproc/wkup_m3_rproc.c            |   2 +-
> >  include/linux/remoteproc.h                    |   4 +-
> >  23 files changed, 393 insertions(+), 72 deletions(-)  create mode
> > 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
> >  delete mode 100644
> > Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> >
> > --
> > 2.30.0
> >

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

* Re: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
  2021-03-11  1:26   ` Peng Fan (OSS)
@ 2021-03-11 17:38     ` Mathieu Poirier
  2021-03-11 18:06       ` Bjorn Andersson
  0 siblings, 1 reply; 16+ messages in thread
From: Mathieu Poirier @ 2021-03-11 17:38 UTC (permalink / raw)
  To: Peng Fan (OSS)
  Cc: ohad, bjorn.andersson, o.rempel, robh+dt, devicetree, shawnguo,
	s.hauer, kernel, festevam, linux-remoteproc, linux-arm-kernel,
	linux-kernel, paul, matthias.bgg, agross, patrice.chotard

On Thu, Mar 11, 2021 at 01:26:25AM +0000, Peng Fan (OSS) wrote:
> Mathieu,
> 
> > Subject: Re: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
> > 
> > On Sat, Mar 06, 2021 at 07:24:15PM +0800, peng.fan@oss.nxp.com wrote:
> > > From: Peng Fan <peng.fan@nxp.com>
> > >
> > > V13:
> > >  Add R-b tag from Rob for patch 1.
> > >  Drop the reserved memory node from patch 2 per Rob's comment.
> > >  Mathieu, Bjorn
> > >   Only patch 2 not have R-b/A-b tag, but since Rob's only has a minor
> > comment, and
> > >   addressed in this version, is it ok for you take into remoteproc next
> > branch?
> > >   Thanks.
> > 
> > As much as I want to, there is no way to move forward without an
> > acknowledgement from Rob.
> 
> Rob has gave his R-b tag for patch 2/13, please help pick up this patchset.
> I really wanna this feature in which has been for a long time. Then
> I will move on to add new stuff.
>

This set looks good to me - Bjorn will likely pick it up shortly.
 
> Thanks,
> Peng.
> 
> 
> > 
> > >
> > > V12:
> > >  Add maxItems to avoid dt_bindings_check fail  Rebased on top of
> > > linux-next
> > >
> > > V11:
> > >  Per Rob's comments, fix memory-region in patch 1/10  Rebased on top
> > > of Linux-next
> > >
> > > V10:
> > >  Per Rob's comments, fix patch 1/10
> > >
> > > V9:
> > >  Per Mathieu's comments,
> > >    update the tile of yaml in patch 2/10
> > >    update the Kconfig and MODULE_DESCRIPTION, I merge this change in
> > patch 8/10,
> > >    since this is a minor change, I still keep Mathieu's R-b tag. If any
> > objection, I could remove.
> > >    Add R-b tag in Patch 10/10
> > >
> > >  Rob, please help review patch 1/10 and 2/10
> > >
> > > V8:
> > >  Address sparse warning in patch 4/10 reported by kernel test robot
> > >
> > > V7:
> > >  Add R-b tag from Mathieu
> > >  vdevbuffer->vdev0buffer in patch 1/10, 7/10  correct err msg and
> > > shutdown seq per Mathieu's comments in patch 10/10  Hope this version
> > > is ok to be merged.
> > >
> > > V6:
> > >  Add R-b tag from Mathieu
> > >  Convert imx-rproc.txt to yaml and add dt-bindings support for
> > > i.MX8MQ/M, patch 1/10 2/10  No other changes.
> > >
> > > V5:
> > >  Apply on Linux next
> > >  Add V5 subject prefix
> > >  Add R-b tag from Bjorn for 1/8, 2/8, 3/8
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > >
> > hwork.kernel.org%2Fproject%2Flinux-remoteproc%2Fcover%2F20201229033
> > 019
> > > .25899-1-peng.fan%40nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%40n
> > xp.com%7
> > >
> > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > 01635%7
> > >
> > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > MC4wLjAwMD
> > >
> > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata
> > =bwlT
> > > uTk6iRuZke6SMhuyB2gxniStfxnX%2BKlVgm7MZuk%3D&amp;reserved=0
> > >
> > > V4:
> > >  According to Bjorn's comments, add is_iomem for da to va usage  1/8,
> > > 2/8 is new patch  3/8, follow Bjorn's comments to correct/update the
> > > err msg.
> > >  6/8, new patch
> > >  8/8, use dev_err_probe to simplify code, use queue_work instead
> > > schedule_delayed_work
> > >
> > > V3:
> > >  Since I was quite busy in the past days, V3 is late  Rebased on
> > > Linux-next  Add R-b tags
> > >  1/7: Add R-b tag of Mathieu, add comments
> > >  4/7: Typo fix
> > >  5/7: Add R-b tag of Mathieu, drop index Per Mathieu's comments
> > >  6/7: Add R-b tag of Mathieu
> > >  7/7: Add comment for vqid << 16, drop unneeded timeout settings of
> > mailbox
> > >       Use queue_work instead of schedule_delayed_work
> > >       free mbox channels when remove
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml
> > > .org%2Flkml%2F2020%2F12%2F4%2F82&amp;data=04%7C01%7Cpeng.fan
> > %40nxp.com
> > > %7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd9
> > 9c5c301635
> > > %7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJ
> > WIjoiMC4wLjAw
> > >
> > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sd
> > ata=xQ
> > >
> > ReFFdUT2ZLhWyT2Vt2v0frG0xKq2psP1ExnLx%2BLXw%3D&amp;reserved=0
> > >
> > > V2:
> > >  Rebased on linux-next
> > >  Dropped early boot feature to make patchset simple.
> > >  Drop rsc-da
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > >
> > hwork.kernel.org%2Fproject%2Flinux-remoteproc%2Fcover%2F20200927064
> > 131
> > > .24101-1-peng.fan%40nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%40n
> > xp.com%7
> > >
> > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > 01635%7
> > >
> > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > MC4wLjAwMD
> > >
> > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata
> > =BWGP
> > >
> > gbVtOjOa%2BriGryGp9sh2CSY%2BhMESdGD%2F7LvPJ6w%3D&amp;reserved
> > =0
> > >
> > > V1:
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > >
> > hwork.kernel.org%2Fcover%2F11682461%2F&amp;data=04%7C01%7Cpeng.f
> > an%40n
> > >
> > xp.com%7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa9
> > 2cd99c5c
> > >
> > 301635%7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3
> > d8eyJWIjoiMC
> > >
> > 4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&
> > amp;sd
> > >
> > ata=XkGYIxBgrHLwV7R3bro87N6fL7777Wa5rOAZdVjCoZs%3D&amp;reserved
> > =0
> > >
> > > This patchset is to support i.MX8MQ/M coproc.
> > > The early boot feature was dropped to make the patchset small in V2.
> > >
> > > Since i.MX specific TCM memory requirement, add elf platform hook.
> > > Several patches have got reviewed by Oleksij and Mathieu in v1.
> > >
> > >
> > > Peng Fan (10):
> > >   dt-bindings: remoteproc: convert imx rproc bindings to json-schema
> > >   dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
> > >   remoteproc: introduce is_iomem to rproc_mem_entry
> > >   remoteproc: add is_iomem to da_to_va
> > >   remoteproc: imx_rproc: correct err message
> > >   remoteproc: imx_rproc: use devm_ioremap
> > >   remoteproc: imx_rproc: add i.MX specific parse fw hook
> > >   remoteproc: imx_rproc: support i.MX8MQ/M
> > >   remoteproc: imx_rproc: ignore mapping vdev regions
> > >   remoteproc: imx_proc: enable virtio/mailbox
> > >
> > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  90 ++++++
> > >  .../bindings/remoteproc/imx-rproc.txt         |  33 ---
> > >  drivers/remoteproc/Kconfig                    |   6 +-
> > >  drivers/remoteproc/imx_rproc.c                | 262
> > +++++++++++++++++-
> > >  drivers/remoteproc/ingenic_rproc.c            |   2 +-
> > >  drivers/remoteproc/keystone_remoteproc.c      |   2 +-
> > >  drivers/remoteproc/mtk_scp.c                  |   6 +-
> > >  drivers/remoteproc/omap_remoteproc.c          |   2 +-
> > >  drivers/remoteproc/pru_rproc.c                |   2 +-
> > >  drivers/remoteproc/qcom_q6v5_adsp.c           |   2 +-
> > >  drivers/remoteproc/qcom_q6v5_pas.c            |   2 +-
> > >  drivers/remoteproc/qcom_q6v5_wcss.c           |   2 +-
> > >  drivers/remoteproc/qcom_wcnss.c               |   2 +-
> > >  drivers/remoteproc/remoteproc_core.c          |   7 +-
> > >  drivers/remoteproc/remoteproc_coredump.c      |   8 +-
> > >  drivers/remoteproc/remoteproc_debugfs.c       |   2 +-
> > >  drivers/remoteproc/remoteproc_elf_loader.c    |  21 +-
> > >  drivers/remoteproc/remoteproc_internal.h      |   2 +-
> > >  drivers/remoteproc/st_slim_rproc.c            |   2 +-
> > >  drivers/remoteproc/ti_k3_dsp_remoteproc.c     |   2 +-
> > >  drivers/remoteproc/ti_k3_r5_remoteproc.c      |   2 +-
> > >  drivers/remoteproc/wkup_m3_rproc.c            |   2 +-
> > >  include/linux/remoteproc.h                    |   4 +-
> > >  23 files changed, 393 insertions(+), 72 deletions(-)  create mode
> > > 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
> > >  delete mode 100644
> > > Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> > >
> > > --
> > > 2.30.0
> > >

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

* Re: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
  2021-03-11 17:38     ` Mathieu Poirier
@ 2021-03-11 18:06       ` Bjorn Andersson
  0 siblings, 0 replies; 16+ messages in thread
From: Bjorn Andersson @ 2021-03-11 18:06 UTC (permalink / raw)
  To: Mathieu Poirier
  Cc: Peng Fan (OSS),
	ohad, o.rempel, robh+dt, devicetree, shawnguo, s.hauer, kernel,
	festevam, linux-remoteproc, linux-arm-kernel, linux-kernel, paul,
	matthias.bgg, agross, patrice.chotard

On Thu 11 Mar 11:38 CST 2021, Mathieu Poirier wrote:

> On Thu, Mar 11, 2021 at 01:26:25AM +0000, Peng Fan (OSS) wrote:
> > Mathieu,
> > 
> > > Subject: Re: [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M
> > > 
> > > On Sat, Mar 06, 2021 at 07:24:15PM +0800, peng.fan@oss.nxp.com wrote:
> > > > From: Peng Fan <peng.fan@nxp.com>
> > > >
> > > > V13:
> > > >  Add R-b tag from Rob for patch 1.
> > > >  Drop the reserved memory node from patch 2 per Rob's comment.
> > > >  Mathieu, Bjorn
> > > >   Only patch 2 not have R-b/A-b tag, but since Rob's only has a minor
> > > comment, and
> > > >   addressed in this version, is it ok for you take into remoteproc next
> > > branch?
> > > >   Thanks.
> > > 
> > > As much as I want to, there is no way to move forward without an
> > > acknowledgement from Rob.
> > 
> > Rob has gave his R-b tag for patch 2/13, please help pick up this patchset.
> > I really wanna this feature in which has been for a long time. Then
> > I will move on to add new stuff.
> >
> 
> This set looks good to me - Bjorn will likely pick it up shortly.
>  

Certainly, I'm just waiting for tuxbuild to get back with some build
results before I'm pushing the new branch(es).

Regards,
Bjorn

> > Thanks,
> > Peng.
> > 
> > 
> > > 
> > > >
> > > > V12:
> > > >  Add maxItems to avoid dt_bindings_check fail  Rebased on top of
> > > > linux-next
> > > >
> > > > V11:
> > > >  Per Rob's comments, fix memory-region in patch 1/10  Rebased on top
> > > > of Linux-next
> > > >
> > > > V10:
> > > >  Per Rob's comments, fix patch 1/10
> > > >
> > > > V9:
> > > >  Per Mathieu's comments,
> > > >    update the tile of yaml in patch 2/10
> > > >    update the Kconfig and MODULE_DESCRIPTION, I merge this change in
> > > patch 8/10,
> > > >    since this is a minor change, I still keep Mathieu's R-b tag. If any
> > > objection, I could remove.
> > > >    Add R-b tag in Patch 10/10
> > > >
> > > >  Rob, please help review patch 1/10 and 2/10
> > > >
> > > > V8:
> > > >  Address sparse warning in patch 4/10 reported by kernel test robot
> > > >
> > > > V7:
> > > >  Add R-b tag from Mathieu
> > > >  vdevbuffer->vdev0buffer in patch 1/10, 7/10  correct err msg and
> > > > shutdown seq per Mathieu's comments in patch 10/10  Hope this version
> > > > is ok to be merged.
> > > >
> > > > V6:
> > > >  Add R-b tag from Mathieu
> > > >  Convert imx-rproc.txt to yaml and add dt-bindings support for
> > > > i.MX8MQ/M, patch 1/10 2/10  No other changes.
> > > >
> > > > V5:
> > > >  Apply on Linux next
> > > >  Add V5 subject prefix
> > > >  Add R-b tag from Bjorn for 1/8, 2/8, 3/8
> > > >
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > > >
> > > hwork.kernel.org%2Fproject%2Flinux-remoteproc%2Fcover%2F20201229033
> > > 019
> > > > .25899-1-peng.fan%40nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%40n
> > > xp.com%7
> > > >
> > > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > > 01635%7
> > > >
> > > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > > MC4wLjAwMD
> > > >
> > > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata
> > > =bwlT
> > > > uTk6iRuZke6SMhuyB2gxniStfxnX%2BKlVgm7MZuk%3D&amp;reserved=0
> > > >
> > > > V4:
> > > >  According to Bjorn's comments, add is_iomem for da to va usage  1/8,
> > > > 2/8 is new patch  3/8, follow Bjorn's comments to correct/update the
> > > > err msg.
> > > >  6/8, new patch
> > > >  8/8, use dev_err_probe to simplify code, use queue_work instead
> > > > schedule_delayed_work
> > > >
> > > > V3:
> > > >  Since I was quite busy in the past days, V3 is late  Rebased on
> > > > Linux-next  Add R-b tags
> > > >  1/7: Add R-b tag of Mathieu, add comments
> > > >  4/7: Typo fix
> > > >  5/7: Add R-b tag of Mathieu, drop index Per Mathieu's comments
> > > >  6/7: Add R-b tag of Mathieu
> > > >  7/7: Add comment for vqid << 16, drop unneeded timeout settings of
> > > mailbox
> > > >       Use queue_work instead of schedule_delayed_work
> > > >       free mbox channels when remove
> > > >
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml
> > > > .org%2Flkml%2F2020%2F12%2F4%2F82&amp;data=04%7C01%7Cpeng.fan
> > > %40nxp.com
> > > > %7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd9
> > > 9c5c301635
> > > > %7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJ
> > > WIjoiMC4wLjAw
> > > >
> > > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sd
> > > ata=xQ
> > > >
> > > ReFFdUT2ZLhWyT2Vt2v0frG0xKq2psP1ExnLx%2BLXw%3D&amp;reserved=0
> > > >
> > > > V2:
> > > >  Rebased on linux-next
> > > >  Dropped early boot feature to make patchset simple.
> > > >  Drop rsc-da
> > > >
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > > >
> > > hwork.kernel.org%2Fproject%2Flinux-remoteproc%2Fcover%2F20200927064
> > > 131
> > > > .24101-1-peng.fan%40nxp.com%2F&amp;data=04%7C01%7Cpeng.fan%40n
> > > xp.com%7
> > > >
> > > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > > 01635%7
> > > >
> > > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > > MC4wLjAwMD
> > > >
> > > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata
> > > =BWGP
> > > >
> > > gbVtOjOa%2BriGryGp9sh2CSY%2BhMESdGD%2F7LvPJ6w%3D&amp;reserved
> > > =0
> > > >
> > > > V1:
> > > >
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > > >
> > > hwork.kernel.org%2Fcover%2F11682461%2F&amp;data=04%7C01%7Cpeng.f
> > > an%40n
> > > >
> > > xp.com%7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa9
> > > 2cd99c5c
> > > >
> > > 301635%7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3
> > > d8eyJWIjoiMC
> > > >
> > > 4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&
> > > amp;sd
> > > >
> > > ata=XkGYIxBgrHLwV7R3bro87N6fL7777Wa5rOAZdVjCoZs%3D&amp;reserved
> > > =0
> > > >
> > > > This patchset is to support i.MX8MQ/M coproc.
> > > > The early boot feature was dropped to make the patchset small in V2.
> > > >
> > > > Since i.MX specific TCM memory requirement, add elf platform hook.
> > > > Several patches have got reviewed by Oleksij and Mathieu in v1.
> > > >
> > > >
> > > > Peng Fan (10):
> > > >   dt-bindings: remoteproc: convert imx rproc bindings to json-schema
> > > >   dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support
> > > >   remoteproc: introduce is_iomem to rproc_mem_entry
> > > >   remoteproc: add is_iomem to da_to_va
> > > >   remoteproc: imx_rproc: correct err message
> > > >   remoteproc: imx_rproc: use devm_ioremap
> > > >   remoteproc: imx_rproc: add i.MX specific parse fw hook
> > > >   remoteproc: imx_rproc: support i.MX8MQ/M
> > > >   remoteproc: imx_rproc: ignore mapping vdev regions
> > > >   remoteproc: imx_proc: enable virtio/mailbox
> > > >
> > > >  .../bindings/remoteproc/fsl,imx-rproc.yaml    |  90 ++++++
> > > >  .../bindings/remoteproc/imx-rproc.txt         |  33 ---
> > > >  drivers/remoteproc/Kconfig                    |   6 +-
> > > >  drivers/remoteproc/imx_rproc.c                | 262
> > > +++++++++++++++++-
> > > >  drivers/remoteproc/ingenic_rproc.c            |   2 +-
> > > >  drivers/remoteproc/keystone_remoteproc.c      |   2 +-
> > > >  drivers/remoteproc/mtk_scp.c                  |   6 +-
> > > >  drivers/remoteproc/omap_remoteproc.c          |   2 +-
> > > >  drivers/remoteproc/pru_rproc.c                |   2 +-
> > > >  drivers/remoteproc/qcom_q6v5_adsp.c           |   2 +-
> > > >  drivers/remoteproc/qcom_q6v5_pas.c            |   2 +-
> > > >  drivers/remoteproc/qcom_q6v5_wcss.c           |   2 +-
> > > >  drivers/remoteproc/qcom_wcnss.c               |   2 +-
> > > >  drivers/remoteproc/remoteproc_core.c          |   7 +-
> > > >  drivers/remoteproc/remoteproc_coredump.c      |   8 +-
> > > >  drivers/remoteproc/remoteproc_debugfs.c       |   2 +-
> > > >  drivers/remoteproc/remoteproc_elf_loader.c    |  21 +-
> > > >  drivers/remoteproc/remoteproc_internal.h      |   2 +-
> > > >  drivers/remoteproc/st_slim_rproc.c            |   2 +-
> > > >  drivers/remoteproc/ti_k3_dsp_remoteproc.c     |   2 +-
> > > >  drivers/remoteproc/ti_k3_r5_remoteproc.c      |   2 +-
> > > >  drivers/remoteproc/wkup_m3_rproc.c            |   2 +-
> > > >  include/linux/remoteproc.h                    |   4 +-
> > > >  23 files changed, 393 insertions(+), 72 deletions(-)  create mode
> > > > 100644 Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
> > > >  delete mode 100644
> > > > Documentation/devicetree/bindings/remoteproc/imx-rproc.txt
> > > >
> > > > --
> > > > 2.30.0
> > > >

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

end of thread, other threads:[~2021-03-11 18:07 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-06 11:24 [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M peng.fan
2021-03-06 11:24 ` [PATCH V13 01/10] dt-bindings: remoteproc: convert imx rproc bindings to json-schema peng.fan
2021-03-06 11:24 ` [PATCH V13 02/10] dt-bindings: remoteproc: imx_rproc: add i.MX8MQ/M support peng.fan
2021-03-08 22:37   ` Rob Herring
2021-03-06 11:24 ` [PATCH V13 03/10] remoteproc: introduce is_iomem to rproc_mem_entry peng.fan
2021-03-06 11:24 ` [PATCH V13 04/10] remoteproc: add is_iomem to da_to_va peng.fan
2021-03-06 11:24 ` [PATCH V13 05/10] remoteproc: imx_rproc: correct err message peng.fan
2021-03-06 11:24 ` [PATCH V13 06/10] remoteproc: imx_rproc: use devm_ioremap peng.fan
2021-03-06 11:24 ` [PATCH V13 07/10] remoteproc: imx_rproc: add i.MX specific parse fw hook peng.fan
2021-03-06 11:24 ` [PATCH V13 08/10] remoteproc: imx_rproc: support i.MX8MQ/M peng.fan
2021-03-06 11:24 ` [PATCH V13 09/10] remoteproc: imx_rproc: ignore mapping vdev regions peng.fan
2021-03-06 11:24 ` [PATCH V13 10/10] remoteproc: imx_proc: enable virtio/mailbox peng.fan
2021-03-08 16:08 ` [PATCH V13 00/10] remoteproc: imx_rproc: support iMX8MQ/M Mathieu Poirier
2021-03-11  1:26   ` Peng Fan (OSS)
2021-03-11 17:38     ` Mathieu Poirier
2021-03-11 18:06       ` Bjorn Andersson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).