* [PATCH v3] arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc
@ 2026-10-22 14:22 Ernest Van Hoecke
2026-10-22 14:34 ` sashiko-bot
0 siblings, 1 reply; 3+ messages in thread
From: Ernest Van Hoecke @ 2026-10-22 14:22 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, imx, linux-arm-kernel, linux-kernel,
Ernest Van Hoecke
From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Describe the Cortex-M7 remote processor available on the Verdin iMX8M
Plus SoM.
Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
---
This patch was previously part of the Verdin iMX8M OV5640 series and is
now sent separately, as requested on v2.
---
Changes in v3:
- Split out of the Verdin iMX8M OV5640 series (Frank)
- Move the UART_4 overlay to the shared Toradex Cortex-M UART series:
https://lore.kernel.org/r/20261022-v1-imx95-overlays-v2-0-c769d6eb54fd@toradex.com
- Link to v2: https://lore.kernel.org/r/20261001-verdin-imx8mp-hmp-camera-ready-v2-0-7d1343ecd3ec@toradex.com
Changes in v2:
- Rebase
- Link to v1: https://lore.kernel.org/r/20260910-verdin-imx8mp-hmp-camera-ready-v1-0-3c9349ecdb9f@toradex.com
---
arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi | 33 ++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
index 9fee2cf9ef54..45a4713c260f 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
@@ -77,6 +77,18 @@ key-wakeup {
};
};
+ imx8mp-cm7 {
+ compatible = "fsl,imx8mp-cm7";
+ clocks = <&clk IMX8MP_CLK_M7_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>;
+ };
+
sound_hdmi: sound-hdmi {
compatible = "fsl,imx-audio-hdmi";
model = "audio-hdmi";
@@ -185,6 +197,27 @@ reserved-memory {
/* Use the kernel configuration settings instead */
/delete-node/ linux,cma;
+
+ vdev0vring0: vdev0vring0@55000000 {
+ reg = <0 0x55000000 0 0x8000>;
+ no-map;
+ };
+
+ vdev0vring1: vdev0vring1@55008000 {
+ reg = <0 0x55008000 0 0x8000>;
+ no-map;
+ };
+
+ rsc_table: rsc-table@550ff000 {
+ reg = <0 0x550ff000 0 0x1000>;
+ no-map;
+ };
+
+ vdev0buffer: vdev0buffer@55400000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0x55400000 0 0x100000>;
+ no-map;
+ };
};
};
---
base-commit: 7f47e8eafbf55a2ad0697e5d28f5e6cff2fa42f9
change-id: 20261020-verdin-imx8mp-m7-a69e26868741
Best regards,
--
Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3] arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc
2026-10-22 14:22 [PATCH v3] arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc Ernest Van Hoecke
@ 2026-10-22 14:34 ` sashiko-bot
2026-10-22 15:06 ` Frank Li
0 siblings, 1 reply; 3+ messages in thread
From: sashiko-bot @ 2026-10-22 14:34 UTC (permalink / raw)
To: Ernest Van Hoecke; +Cc: devicetree, imx, robh, conor+dt, Frank.Li
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] arm64: dts: imx8mp-verdin: unregistered IMX8MP_CLK_M7_DIV clock in imx8mp-cm7
--
commit 37e821a019361403bc773ac48a7bf68be6a133ac
Author: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc
This commit adds the Cortex-M7 remoteproc node and its associated
reserved-memory regions to the Verdin iMX8M Plus device tree.
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
> index 9fee2cf9ef546..45a4713c260f4 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
> @@ -77,6 +77,18 @@ key-wakeup {
> };
> };
>
> + imx8mp-cm7 {
> + compatible = "fsl,imx8mp-cm7";
> + clocks = <&clk IMX8MP_CLK_M7_DIV>;
[Severity: High]
Should this clock specifier be IMX8MP_CLK_M7_CORE instead of
IMX8MP_CLK_M7_DIV?
In drivers/clk/imx/clk-imx8mp.c, commit 8c83a8ff4dd9 ("clk: imx8mp: use
imx8m_clk_hw_composite_core to simplify code") replaced
hws[IMX8MP_CLK_M7_DIV] in imx8mp_clocks_probe() with
hws[IMX8MP_CLK_M7_CORE] without keeping an alias at IMX8MP_CLK_M7_DIV:
hws[IMX8MP_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mp_a53_sels, ccm_base + 0x8000);
hws[IMX8MP_CLK_A53_SRC] = hws[IMX8MP_CLK_A53_DIV];
hws[IMX8MP_CLK_A53_CG] = hws[IMX8MP_CLK_A53_DIV];
hws[IMX8MP_CLK_M7_CORE] = imx8m_clk_hw_composite_core("m7_core", imx8mp_m7_sels, ccm_base + 0x8080);
Because clk_hw_data is zero-allocated, hws[IMX8MP_CLK_M7_DIV] remains
NULL. When imx_rproc_probe() in drivers/remoteproc/imx_rproc.c requests
the clock for "fsl,imx8mp-cm7" (which sets IMX_RPROC_NEED_CLKS in
imx_rproc_cfg_imx8mn):
if (dcfg->flags & IMX_RPROC_NEED_CLKS) {
priv->clk = devm_clk_get_enabled(dev, NULL);
if (IS_ERR(priv->clk))
return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to enable clock\n");
}
of_clk_hw_onecell_get() returns NULL for hw_data->hws[IMX8MP_CLK_M7_DIV],
causing devm_clk_get_enabled() to return NULL without an error. As a
result, m7_core is never prepared or enabled by imx_rproc_probe(), and
clk_disable_unused() can gate it off at late boot when the Cortex-M7 was
not pre-booted by the bootloader, leaving the core unclocked when
imx_rproc accesses TCM or starts the remote processor.
Other i.MX8MP Cortex-M7 device tree descriptions such as
arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc-overlay-cm7.dtso
use IMX8MP_CLK_M7_CORE:
imx8mp-cm7 {
compatible = "fsl,imx8mp-cm7-mmio";
clocks = <&clk IMX8MP_CLK_M7_CORE>;
> + mbox-names = "tx", "rx", "rxdb";
> + mboxes = <&mu 0 1
> + &mu 1 1
> + &mu 3 1>;
> + memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>,
> + <&rsc_table>;
> + syscon = <&src>;
> + };
> +
> sound_hdmi: sound-hdmi {
> compatible = "fsl,imx-audio-hdmi";
> model = "audio-hdmi";
[ ... ]
>
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-verdin-imx8mp-m7-v3-1-af284e28531d@toradex.com?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3] arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc
2026-10-22 14:34 ` sashiko-bot
@ 2026-10-22 15:06 ` Frank Li
0 siblings, 0 replies; 3+ messages in thread
From: Frank Li @ 2026-10-22 15:06 UTC (permalink / raw)
To: sashiko-reviews
Cc: Ernest Van Hoecke, devicetree, imx, robh, conor+dt, Frank.Li
On Thu, Oct 22, 2026 at 02:34:25PM +0000, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] arm64: dts: imx8mp-verdin: unregistered IMX8MP_CLK_M7_DIV clock in imx8mp-cm7
> --
>
> commit 37e821a019361403bc773ac48a7bf68be6a133ac
> Author: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
>
> arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc
>
> This commit adds the Cortex-M7 remoteproc node and its associated
> reserved-memory regions to the Verdin iMX8M Plus device tree.
>
> > diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
> > index 9fee2cf9ef546..45a4713c260f4 100644
> > --- a/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
> > +++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi
> > @@ -77,6 +77,18 @@ key-wakeup {
> > };
> > };
> >
> > + imx8mp-cm7 {
> > + compatible = "fsl,imx8mp-cm7";
> > + clocks = <&clk IMX8MP_CLK_M7_DIV>;
>
> [Severity: High]
> Should this clock specifier be IMX8MP_CLK_M7_CORE instead of
> IMX8MP_CLK_M7_DIV?
look like make sense.
Frank
>
> In drivers/clk/imx/clk-imx8mp.c, commit 8c83a8ff4dd9 ("clk: imx8mp: use
> imx8m_clk_hw_composite_core to simplify code") replaced
> hws[IMX8MP_CLK_M7_DIV] in imx8mp_clocks_probe() with
> hws[IMX8MP_CLK_M7_CORE] without keeping an alias at IMX8MP_CLK_M7_DIV:
>
> hws[IMX8MP_CLK_A53_DIV] = imx8m_clk_hw_composite_core("arm_a53_div", imx8mp_a53_sels, ccm_base + 0x8000);
> hws[IMX8MP_CLK_A53_SRC] = hws[IMX8MP_CLK_A53_DIV];
> hws[IMX8MP_CLK_A53_CG] = hws[IMX8MP_CLK_A53_DIV];
> hws[IMX8MP_CLK_M7_CORE] = imx8m_clk_hw_composite_core("m7_core", imx8mp_m7_sels, ccm_base + 0x8080);
>
> Because clk_hw_data is zero-allocated, hws[IMX8MP_CLK_M7_DIV] remains
> NULL. When imx_rproc_probe() in drivers/remoteproc/imx_rproc.c requests
> the clock for "fsl,imx8mp-cm7" (which sets IMX_RPROC_NEED_CLKS in
> imx_rproc_cfg_imx8mn):
>
> if (dcfg->flags & IMX_RPROC_NEED_CLKS) {
> priv->clk = devm_clk_get_enabled(dev, NULL);
> if (IS_ERR(priv->clk))
> return dev_err_probe(dev, PTR_ERR(priv->clk), "Failed to enable clock\n");
> }
>
> of_clk_hw_onecell_get() returns NULL for hw_data->hws[IMX8MP_CLK_M7_DIV],
> causing devm_clk_get_enabled() to return NULL without an error. As a
> result, m7_core is never prepared or enabled by imx_rproc_probe(), and
> clk_disable_unused() can gate it off at late boot when the Cortex-M7 was
> not pre-booted by the bootloader, leaving the core unclocked when
> imx_rproc accesses TCM or starts the remote processor.
>
> Other i.MX8MP Cortex-M7 device tree descriptions such as
> arch/arm64/boot/dts/freescale/imx8mp-data-modul-edm-sbc-overlay-cm7.dtso
> use IMX8MP_CLK_M7_CORE:
>
> imx8mp-cm7 {
> compatible = "fsl,imx8mp-cm7-mmio";
> clocks = <&clk IMX8MP_CLK_M7_CORE>;
>
> > + mbox-names = "tx", "rx", "rxdb";
> > + mboxes = <&mu 0 1
> > + &mu 1 1
> > + &mu 3 1>;
> > + memory-region = <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>,
> > + <&rsc_table>;
> > + syscon = <&src>;
> > + };
> > +
> > sound_hdmi: sound-hdmi {
> > compatible = "fsl,imx-audio-hdmi";
> > model = "audio-hdmi";
>
> [ ... ]
>
> >
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20261022-verdin-imx8mp-m7-v3-1-af284e28531d@toradex.com?part=1
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-10-22 15:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-22 14:22 [PATCH v3] arm64: dts: freescale: imx8mp-verdin: Add Cortex-M7 remoteproc Ernest Van Hoecke
2026-10-22 14:34 ` sashiko-bot
2026-10-22 15:06 ` Frank Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox