]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: ti: k3-am62a-ti-ipc-firmware: Refactor IPC cfg into new dtsi
authorBeleswar Padhi <b-padhi@ti.com>
Mon, 8 Sep 2025 14:28:24 +0000 (19:58 +0530)
committerNishanth Menon <nm@ti.com>
Fri, 12 Sep 2025 04:15:32 +0000 (09:45 +0530)
The TI K3 AM62A SoCs have multiple programmable remote processors like
R5F, C7x etc. The TI SDKs for AM62A SoCs offer sample firmwares which
could be run on these cores to demonstrate an "echo" IPC test. Those
firmware require certain memory carveouts to be reserved from system
memory, timers to be reserved, and certain mailbox configurations for
interrupt based messaging. These configurations could be different for a
different firmware.

While DT is not meant for system configurations, at least refactor these
configurations from board level DTS into a dtsi for now. This dtsi for
TI IPC firmware is board-independent and can be applied to all boards
from the same SoC Family. This gets rid of code duplication and allows
more freedom for users developing custom firmware (or no firmware) to
utilize system resources better; easily by swapping out this dtsi. To
maintain backward compatibility, the dtsi is included in all boards.

Signed-off-by: Beleswar Padhi <b-padhi@ti.com>
Tested-by: Judith Mendez <jm@ti.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Link: https://patch.msgid.link/20250908142826.1828676-33-b-padhi@ti.com
Signed-off-by: Nishanth Menon <nm@ti.com>
arch/arm64/boot/dts/ti/k3-am62a-phycore-som.dtsi
arch/arm64/boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi [new file with mode: 0644]
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts
arch/arm64/boot/dts/ti/k3-am62d2-evm.dts

index 0406a43ff7045ec499797f7305638ad5b4b2e9ba..b3d012a5a26aa72677b076db3c1b861dce138256 100644 (file)
                        linux,cma-default;
                };
 
-               c7x_0_dma_memory_region: memory@99800000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x99800000 0x00 0x100000>;
-                       no-map;
-               };
-
-               c7x_0_memory_region: memory@99900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x99900000 0x00 0xf00000>;
-                       no-map;
-               };
-
-               mcu_r5fss0_core0_dma_memory_region: memory@9b800000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9b800000 0x00 0x100000>;
-                       no-map;
-               };
-
-               mcu_r5fss0_core0_memory_region: memory@9b900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9b900000 0x00 0xf00000>;
-                       no-map;
-               };
-
                wkup_r5fss0_core0_dma_memory_region: memory@9c800000 {
                        compatible = "shared-dma-pool";
                        reg = <0x00 0x9c800000 0x00 0x100000>;
        };
 };
 
-&c7x_0 {
-       mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
-       memory-region = <&c7x_0_dma_memory_region>,
-                       <&c7x_0_memory_region>;
-       status = "okay";
-};
-
 &cpsw3g {
        pinctrl-names = "default";
        pinctrl-0 = <&main_rgmii1_pins_default>;
        status = "okay";
 };
 
-&mailbox0_cluster0 {
-       status = "okay";
-
-       mbox_r5_0: mbox-r5-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&mailbox0_cluster1 {
-       status = "okay";
-
-       mbox_c7x_0: mbox-c7x-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&mailbox0_cluster2 {
-       status = "okay";
-
-       mbox_mcu_r5_0: mbox-mcu-r5-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
 &main_i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        bootph-all;
 };
 
-/* main_rti4 is used by C7x DSP */
-&main_rti4 {
-       status = "reserved";
-};
-
-/* main_timer2 is used by C7x DSP */
-&main_timer2 {
-       status = "reserved";
-};
-
-&mcu_r5fss0 {
-       status = "okay";
-};
-
-&mcu_r5fss0_core0 {
-       mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
-       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
-                       <&mcu_r5fss0_core0_memory_region>;
-       status = "okay";
-};
-
 &ospi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
        status = "okay";
 };
 
-&wkup_r5fss0 {
-       status = "okay";
-};
-
-&wkup_r5fss0_core0 {
-       mboxes = <&mailbox0_cluster0  &mbox_r5_0>;
-       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
-                       <&wkup_r5fss0_core0_memory_region>;
-       status = "okay";
-};
+#include "k3-am62a-ti-ipc-firmware.dtsi"
diff --git a/arch/arm64/boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi b/arch/arm64/boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi
new file mode 100644 (file)
index 0000000..950f4f3
--- /dev/null
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/**
+ * Device Tree Source for enabling IPC using TI SDK firmware on AM62A SoCs
+ *
+ * Copyright (C) 2022-2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+&reserved_memory {
+       c7x_0_dma_memory_region: memory@99800000 {
+               compatible = "shared-dma-pool";
+               reg = <0x00 0x99800000 0x00 0x100000>;
+               no-map;
+       };
+
+       c7x_0_memory_region: memory@99900000 {
+               compatible = "shared-dma-pool";
+               reg = <0x00 0x99900000 0x00 0xf00000>;
+               no-map;
+       };
+
+       mcu_r5fss0_core0_dma_memory_region: memory@9b800000 {
+               compatible = "shared-dma-pool";
+               reg = <0x00 0x9b800000 0x00 0x100000>;
+               no-map;
+       };
+
+       mcu_r5fss0_core0_memory_region: memory@9b900000 {
+               compatible = "shared-dma-pool";
+               reg = <0x00 0x9b900000 0x00 0xf00000>;
+               no-map;
+       };
+};
+
+&mailbox0_cluster0 {
+       status = "okay";
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       status = "okay";
+
+       mbox_c7x_0: mbox-c7x-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       status = "okay";
+
+       mbox_mcu_r5_0: mbox-mcu-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0>, <&mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+       status = "okay";
+};
+
+&mcu_r5fss0 {
+       status = "okay";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster2>, <&mbox_mcu_r5_0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+       status = "okay";
+};
+
+&c7x_0 {
+       mboxes = <&mailbox0_cluster1>, <&mbox_c7x_0>;
+       memory-region = <&c7x_0_dma_memory_region>,
+                       <&c7x_0_memory_region>;
+       status = "okay";
+};
+
+/* main_rti4 is used by C7x DSP */
+&main_rti4 {
+       status = "reserved";
+};
+
+/* main_timer2 is used by C7x DSP */
+&main_timer2 {
+       status = "reserved";
+};
index 312bdab287846b10577a1b5c5fc11f6e85429fd6..9f148b89e74d89059786c609340698f8a57b2720 100644 (file)
                        linux,cma-default;
                };
 
-               c7x_0_dma_memory_region: memory@99800000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x99800000 0x00 0x100000>;
-                       no-map;
-               };
-
-               c7x_0_memory_region: memory@99900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x99900000 0x00 0xf00000>;
-                       no-map;
-               };
-
-               mcu_r5fss0_core0_dma_memory_region: memory@9b800000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9b800000 0x00 0x100000>;
-                       no-map;
-               };
-
-               mcu_r5fss0_core0_memory_region: memory@9b900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9b900000 0x00 0xf00000>;
-                       no-map;
-               };
-
                wkup_r5fss0_core0_dma_memory_region: memory@9c800000 {
                        compatible = "shared-dma-pool";
                        reg = <0x00 0x9c800000 0x00 0x100000>;
        status = "reserved";
 };
 
-/* main_timer2 is used by C7x DSP */
-&main_timer2 {
-       status = "reserved";
-};
-
 &usbss0 {
        status = "okay";
        ti,vbus-divider;
        status = "okay";
 };
 
-&mailbox0_cluster0 {
-       status = "okay";
-
-       mbox_r5_0: mbox-r5-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&mailbox0_cluster1 {
-       status = "okay";
-
-       mbox_c7x_0: mbox-c7x-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&mailbox0_cluster2 {
-       status = "okay";
-
-       mbox_mcu_r5_0: mbox-mcu-r5-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&wkup_r5fss0 {
-       status = "okay";
-};
-
-&wkup_r5fss0_core0 {
-       mboxes = <&mailbox0_cluster0>, <&mbox_r5_0>;
-       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
-                       <&wkup_r5fss0_core0_memory_region>;
-       status = "okay";
-};
-
-&mcu_r5fss0 {
-       status = "okay";
-};
-
-&mcu_r5fss0_core0 {
-       mboxes = <&mailbox0_cluster2>, <&mbox_mcu_r5_0>;
-       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
-                       <&mcu_r5fss0_core0_memory_region>;
-       status = "okay";
-};
-
-&c7x_0 {
-       mboxes = <&mailbox0_cluster1>, <&mbox_c7x_0>;
-       memory-region = <&c7x_0_dma_memory_region>,
-                       <&c7x_0_memory_region>;
-       status = "okay";
-};
-
-/* main_rti4 is used by C7x DSP */
-&main_rti4 {
-       status = "reserved";
-};
-
 &fss {
        status = "okay";
 };
                >;
        };
 };
+
+#include "k3-am62a-ti-ipc-firmware.dtsi"
index 289f52b3481faff866a9e60388a53def1f6ea7c9..c958a1c4a6578b666118592e0c90fd27afc77d67 100644 (file)
                        no-map;
                };
 
-               c7x_0_dma_memory_region: memory@99800000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x99800000 0x00 0x100000>;
-                       no-map;
-               };
-
-               c7x_0_memory_region: memory@99900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x99900000 0x00 0xf00000>;
-                       no-map;
-               };
-
-               mcu_r5fss0_core0_dma_memory_region: memory@9b800000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9b800000 0x00 0x100000>;
-                       no-map;
-               };
-
-               mcu_r5fss0_core0_memory_region: memory@9b900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9b900000 0x00 0xf00000>;
-                       no-map;
-               };
-
                wkup_r5fss0_core0_dma_memory_region: memory@9c800000 {
                        compatible = "shared-dma-pool";
                        reg = <0x00 0x9c800000 0x00 0x100000>;
        };
 };
 
-&mailbox0_cluster0 {
-       status = "okay";
-
-       mbox_r5_0: mbox-r5-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&mailbox0_cluster1 {
-       status = "okay";
-
-       mbox_c7x_0: mbox-c7x-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&mailbox0_cluster2 {
-       status = "okay";
-
-       mbox_mcu_r5_0: mbox-mcu-r5-0 {
-               ti,mbox-rx = <0 0 0>;
-               ti,mbox-tx = <1 0 0>;
-       };
-};
-
-&wkup_r5fss0 {
-       status = "okay";
-};
-
 &wkup_r5fss0_core0 {
-       mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
-       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
-                       <&wkup_r5fss0_core0_memory_region>;
-       status = "okay";
        bootph-pre-ram;
 };
 
-&mcu_r5fss0 {
-       status = "okay";
-};
-
 &mcu_r5fss0_core0 {
-       mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
-       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
-                       <&mcu_r5fss0_core0_memory_region>;
        firmware-name = "am62d-mcu-r5f0_0-fw";
-       status = "okay";
 };
 
 &c7x_0 {
-       mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
-       memory-region = <&c7x_0_dma_memory_region>,
-                       <&c7x_0_memory_region>;
        firmware-name = "am62d-c71_0-fw";
-       status = "okay";
 };
 
-/* main_rti4 is used by C7x DSP */
-&main_rti4 {
-       status = "reserved";
-};
+#include "k3-am62a-ti-ipc-firmware.dtsi"