[PATCH v1] arm64: dts: freescale: imx95-toradex-smarc: Support Cortex M7

Emanuele Ghidoli ghidoliemanuele at gmail.com
Tue Mar 3 07:55:53 PST 2026



On 3/3/26 16:38, Frank Li wrote:
> On Tue, Mar 03, 2026 at 01:13:06PM +0100, Emanuele Ghidoli wrote:
>> From: Emanuele Ghidoli <emanuele.ghidoli at toradex.com>
>>
>> Enable Cortex M7, the vring nodes, a mailbox and reserve DDR memory for
>> the M7. The remoteproc framework is so capable to load and run the M7
>> firmware.
>>
>> Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli at toradex.com>
>> ---
>>  .../dts/freescale/imx95-toradex-smarc.dtsi    | 50 +++++++++++++++++++
>>  1 file changed, 50 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
>> index 5932ba238a8a..77c4a6dee098 100644
>> --- a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
>> +++ b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
>> @@ -42,6 +42,16 @@ clk_serdes_eth_ref: clock-eth-ref {
>>  		enable-gpios = <&som_gpio_expander_1 13 GPIO_ACTIVE_HIGH>;
>>  	};
>>
>> +	cm7: remoteproc-cm7 {
>> +		compatible = "fsl,imx95-cm7";
>> +		mbox-names = "tx", "rx", "rxdb";
>> +		mboxes = <&mu7 0 1
>> +			  &mu7 1 1
>> +			  &mu7 3 1>;
>> +		memory-region = <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>,
>> +				<&vdev1vring0>, <&vdev1vring1>, <&rsc_table>, <&m7_reserved>;
>> +	};
>> +
>>  	connector {
>>  		compatible = "gpio-usb-b-connector", "usb-b-connector";
>>  		/* SMARC P64 - USB0_OTG_ID */
>> @@ -156,6 +166,42 @@ linux_cma: linux,cma {
>>  			alloc-ranges = <0 0x80000000 0 0x7f000000>;
>>  			linux,cma-default;
>>  		};
>> +
>> +		m7_reserved: memory at 80000000 {
>> +			reg = <0 0x80000000 0 0x1000000>;
>> +			no-map;
>> +		};
>> +
>> +		rsc_table: memory at 88220000 {
> 
> I remember driver use hardcode rsc-table, I suggest fan pan to update
> driver to support memory-region-names to avoid use hidden ABI.
> 
> Fan peng, what's current status?
> 
> Frank
> 
>> +			reg = <0 0x88220000 0 0x1000>;
>> +			no-map;
>> +		};
>> +
>> +		vdev0vring0: memory at 88000000 {
>> +			reg = <0 0x88000000 0 0x8000>;
>> +			no-map;
>> +		};
>> +
>> +		vdev0vring1: memory at 88008000 {
>> +			reg = <0 0x88008000 0 0x8000>;
>> +			no-map;
>> +		};
>> +
>> +		vdev1vring0: memory at 88010000 {
>> +			reg = <0 0x88010000 0 0x8000>;
>> +			no-map;
>> +		};
>> +
>> +		vdev1vring1: memory at 88018000 {
>> +			reg = <0 0x88018000 0 0x8000>;
>> +			no-map;
>> +		};
>> +
>> +		vdevbuffer: memory at 88020000 {
>> +			compatible = "shared-dma-pool";
>> +			reg = <0 0x88020000 0 0x100000>;
>> +			no-map;
>> +		};
>>  	};
>>  };
>>
>> @@ -572,6 +618,10 @@ &lpuart3 {
>>  	pinctrl-0 = <&pinctrl_uart3>;
>>  };
>>
>> +&mu7 {
>> +	status = "okay";
>> +};
>> +
>>  /* SMARC MDIO, shared between all ethernet ports */
>>  &netc_emdio {
>>  	pinctrl-names = "default";
>> --
>> 2.43.0
>>

Thanks Frank. You’re right.
I spotted that my patch is not working as expected, due to a last minute
renaming on my side.
I’ll rework the patch accordingly and send a v2 to align to current expected
naming.

Emanuele



More information about the linux-arm-kernel mailing list