* [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
* 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
* [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 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&data=04%7C01%7Cpeng.fan%40n
> xp.com%7
> >
> C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> 01635%7
> >
> C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> MC4wLjAwMD
> >
> AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata
> =bwlT
> > uTk6iRuZke6SMhuyB2gxniStfxnX%2BKlVgm7MZuk%3D&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&data=04%7C01%7Cpeng.fan
> %40nxp.com
> > %7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd9
> 9c5c301635
> > %7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJ
> WIjoiMC4wLjAw
> >
> MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sd
> ata=xQ
> >
> ReFFdUT2ZLhWyT2Vt2v0frG0xKq2psP1ExnLx%2BLXw%3D&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&data=04%7C01%7Cpeng.fan%40n
> xp.com%7
> >
> C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> 01635%7
> >
> C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> MC4wLjAwMD
> >
> AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata
> =BWGP
> >
> gbVtOjOa%2BriGryGp9sh2CSY%2BhMESdGD%2F7LvPJ6w%3D&reserved
> =0
> >
> > V1:
> >
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> >
> hwork.kernel.org%2Fcover%2F11682461%2F&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&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&data=04%7C01%7Cpeng.fan%40n
> > xp.com%7
> > >
> > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > 01635%7
> > >
> > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > MC4wLjAwMD
> > >
> > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata
> > =bwlT
> > > uTk6iRuZke6SMhuyB2gxniStfxnX%2BKlVgm7MZuk%3D&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&data=04%7C01%7Cpeng.fan
> > %40nxp.com
> > > %7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd9
> > 9c5c301635
> > > %7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJ
> > WIjoiMC4wLjAw
> > >
> > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sd
> > ata=xQ
> > >
> > ReFFdUT2ZLhWyT2Vt2v0frG0xKq2psP1ExnLx%2BLXw%3D&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&data=04%7C01%7Cpeng.fan%40n
> > xp.com%7
> > >
> > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > 01635%7
> > >
> > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > MC4wLjAwMD
> > >
> > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata
> > =BWGP
> > >
> > gbVtOjOa%2BriGryGp9sh2CSY%2BhMESdGD%2F7LvPJ6w%3D&reserved
> > =0
> > >
> > > V1:
> > >
> > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > >
> > hwork.kernel.org%2Fcover%2F11682461%2F&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&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&data=04%7C01%7Cpeng.fan%40n
> > > xp.com%7
> > > >
> > > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > > 01635%7
> > > >
> > > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > > MC4wLjAwMD
> > > >
> > > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata
> > > =bwlT
> > > > uTk6iRuZke6SMhuyB2gxniStfxnX%2BKlVgm7MZuk%3D&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&data=04%7C01%7Cpeng.fan
> > > %40nxp.com
> > > > %7C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd9
> > > 9c5c301635
> > > > %7C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJ
> > > WIjoiMC4wLjAw
> > > >
> > > MDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sd
> > > ata=xQ
> > > >
> > > ReFFdUT2ZLhWyT2Vt2v0frG0xKq2psP1ExnLx%2BLXw%3D&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&data=04%7C01%7Cpeng.fan%40n
> > > xp.com%7
> > > >
> > > C18c2709725e14cbab54408d8e24c6492%7C686ea1d3bc2b4c6fa92cd99c5c3
> > > 01635%7
> > > >
> > > C0%7C0%7C637508165016988280%7CUnknown%7CTWFpbGZsb3d8eyJWIjoi
> > > MC4wLjAwMD
> > > >
> > > AiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata
> > > =BWGP
> > > >
> > > gbVtOjOa%2BriGryGp9sh2CSY%2BhMESdGD%2F7LvPJ6w%3D&reserved
> > > =0
> > > >
> > > > V1:
> > > >
> > > > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatc
> > > >
> > > hwork.kernel.org%2Fcover%2F11682461%2F&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&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