Devicetree
 help / color / mirror / Atom feed
* [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