Re: [PATCH 00/33] Refactor TI IPC DT configs into dtsi
From: Beleswar Prasad Padhi
Date: Fri Aug 22 2025 - 13:01:48 EST
Hi Wadim,
On 8/15/2025 11:19 AM, Wadim Egorov wrote:
Hi Beleswar,
On 8/15/25 1:38 AM, Beleswar Padhi wrote:
The TI K3 SoCs have multiple programmable remote processors like
R5F, M4F, C6x/C7x etc. The TI SDKs for these SoCs offer sample firmware
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.
Refactor these firmware dependent 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 (>50%) 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 existing boards.
I remember I asked myself the same question on how to represent the
relation between used FW and memory carveouts+others when adding our
first K3 board.
This change comes quite late so I am wondering if there is any other
motivation besides code reduction / more freedom for custom FW behind it?
Sorry for the delay in response,
The main motivation is to provide more freedom for custom firmwares.
Besides, we were observing some bugs where peripherals like mailbox,
rprocs are enabled at the SoC level dtsi without the proper IRQ/carveout
assignment respectively. This was failing the device probe and throwing
out errors. So we put up this cleanup series to make things more
maintainable & modular.
DTSI vs Overlay:
1. I chose DTSI over overlay as both the ways required including the
refactored file in existing board-level files to maintain backward
compatibility, so didn't see the advantage of using overlays here.
2. If we do down the overlay path, existing board-level file names have
to be changed to indicate they are without the IPC support; so that
they can be combined with the overlay to generate the same-named DTBs.
For example:
k3-am69-sk.dtb := k3-am69-sk-sans-ipc.dtb k3-j784s4-ti-ipc-firmware.dtbo
~~~~~~~~
While it's a good idea to keep backward compatibility for older
devices, have you considered using overlays for new/upcoming devices?
Yes, and this is the first step towards it. IMO, future devices should put
everything firmware related as an overlay. This allows the same base
board to work with multiple firmwares, even at runtime!
Thanks,
Beleswar
Regards,
Wadim
I am not sure if this renaming of files is ideal?
Testing Done:
1. Tested Boot across all TI K3 EVM/SK boards.
2. Tested IPC on all TI K3 J7* EVM/SK boards (& AM62x SK).
3. Tested that each patch in the series generates no new
warnings/errors.
4. HELP needed: Boot/IPC test on vendor boards utilizing TI K3 SoCs.
Note for vendors:
1. This series streamlines all boards(external vendors included) to
use the
TI IPC DTSI config. In the process, several new nodes related to remote
processors have been added/enabled in the final DTS. Need vendors
help in
performing a sanity boot & IPC functionality test with the changes
included
(More info in indivdual patch)
2. If you wish to not include all of the TI IPC DTSI configs and
leave the
board files as it is currently, just let me know so and I will drop
those
patches in the next revision.
Cc: Robert Nelson <robertcnelson@xxxxxxxxx>
Cc: Jo_o Paulo Gon_alves <joao.goncalves@xxxxxxxxxxx>
Cc: Parth Pancholi <parth.pancholi@xxxxxxxxxxx>
Cc: Emanuele Ghidoli <emanuele.ghidoli@xxxxxxxxxxx>
Cc: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx>
Cc: Matthias Schiffer <matthias.schiffer@xxxxxxxxxxxxxxx>
Cc: Logan Bristol <logan.bristol@xxxxxxxxxx>
Cc: Josua Mayer <josua@xxxxxxxxxxxxx>
Cc: John Ma <jma@xxxxxxxxxx>
Cc: Nathan Morrisson <nmorrisson@xxxxxxxxxx>
Cc: Garrett Giordano <ggiordano@xxxxxxxxxx>
Cc: Matt McKee <mmckee@xxxxxxxxxx>
Cc: Wadim Egorov <w.egorov@xxxxxxxxx>
Cc: Andrejs Cainikovs <andrejs.cainikovs@xxxxxxxxxxx>
Cc: Max Krummenacher <max.krummenacher@xxxxxxxxxxx>
Cc: Stefan Eichenberger <stefan.eichenberger@xxxxxxxxxxx>
Cc: Hiago De Franco <hiago.franco@xxxxxxxxxxx>
Thanks,
Beleswar
Beleswar Padhi (33):
arm64: dts: ti: k3-j7200: Enable remote processors at board level
arm64: dts: ti: k3-j7200-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
Revert "arm64: dts: ti: k3-j721e-sk: Fix reversed C6x carveout
locations"
Revert "arm64: dts: ti: k3-j721e-beagleboneai64: Fix reversed C6x
carveout locations"
arm64: dts: ti: k3-j721e: Enable remote processors at board level
arm64: dts: ti: k3-j721e-beagleboneai64: Add missing cfg for TI
IPC FW
arm64: dts: ti: k3-j721e-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-j721s2: Enable remote processors at board level
arm64: dts: ti: k3-j721s2-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-j784s4-j742s2: Enable remote processors at board
level
arm64: dts: ti: k3-j784s4-j742s2-ti-ipc-firmware-common: Refactor IPC
cfg into new dtsi
arm64: dts: ti: k3-j784s4-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-am62p-j722s: Enable remote processors at board
level
arm64: dts: ti: k3-j722s-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-am6*-boards: Add label to reserved-memory node
arm64: dts: ti: k3-am62p-verdin: Add missing cfg for TI IPC Firmware
arm64: dts: ti: k3-am62p-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-am62-verdin: Add missing cfg for TI IPC Firmware
arm64: dts: ti: k3-am62-pocketbeagle2: Add missing cfg for TI IPC
Firmware
arm64: dts: ti: k3-am62: Enable Mailbox nodes at the board level
arm64: dts: ti: k3-am62: Enable remote processors at board level
arm64: dts: ti: k3-am62-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-am62a: Enable Mailbox nodes at the board level
arm64: dts: ti: k3-am62a: Enable remote processors at board level
arm64: dts: ti: k3-am62a-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-am64: Enable remote processors at board level
arm64: dts: ti: k3-am642-sr-som: Add missing cfg for TI IPC Firmware
arm64: dts: ti: k3-am64-phycore-som: Add missing cfg for TI IPC
Firmware
arm64: dts: ti: k3-am642-tqma64xxl: Add missing cfg for TI IPC
Firmware
arm64: dts: ti: k3-am64-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-am65: Enable remote processors at board level
arm64: dts: ti: k3-am65-ti-ipc-firmware: Refactor IPC cfg into new
dtsi
arm64: dts: ti: k3-j7*-ti-ipc-firmware: Switch MCU R5F cluster to
Split-mode
arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 1 +
.../boot/dts/ti/k3-am62-phycore-som.dtsi | 43 +--
.../boot/dts/ti/k3-am62-pocketbeagle2.dts | 36 +-
.../boot/dts/ti/k3-am62-ti-ipc-firmware.dtsi | 52 +++
arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi | 31 +-
arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 4 +
arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi | 1 +
.../boot/dts/ti/k3-am62a-phycore-som.dtsi | 90 +----
.../boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi | 98 +++++
arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi | 1 +
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 92 +----
arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 77 +---
.../dts/ti/k3-am62p-j722s-common-mcu.dtsi | 1 +
.../dts/ti/k3-am62p-j722s-common-wakeup.dtsi | 1 +
.../boot/dts/ti/k3-am62p-ti-ipc-firmware.dtsi | 60 +++
arch/arm64/boot/dts/ti/k3-am62p-verdin.dtsi | 42 ++-
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 54 +--
.../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 47 +--
arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 6 +
.../boot/dts/ti/k3-am64-phycore-som.dtsi | 124 +------
.../boot/dts/ti/k3-am64-ti-ipc-firmware.dtsi | 162 ++++++++
arch/arm64/boot/dts/ti/k3-am642-evm.dts | 146 +-------
arch/arm64/boot/dts/ti/k3-am642-sk.dts | 146 +-------
arch/arm64/boot/dts/ti/k3-am642-sr-som.dtsi | 92 +----
.../arm64/boot/dts/ti/k3-am642-tqma64xxl.dtsi | 107 +-----
.../boot/dts/ti/k3-am65-iot2050-common.dtsi | 58 +--
arch/arm64/boot/dts/ti/k3-am65-mcu.dtsi | 3 +
.../boot/dts/ti/k3-am65-ti-ipc-firmware.dtsi | 64 ++++
.../arm64/boot/dts/ti/k3-am654-base-board.dts | 54 +--
.../arm64/boot/dts/ti/k3-am67a-beagley-ai.dts | 152 +-------
.../boot/dts/ti/k3-am68-phycore-som.dtsi | 235 +-----------
arch/arm64/boot/dts/ti/k3-am68-sk-som.dtsi | 229 +-----------
arch/arm64/boot/dts/ti/k3-am69-sk.dts | 348 +----------------
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 3 +
.../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi | 3 +
arch/arm64/boot/dts/ti/k3-j7200-som-p0.dtsi | 115 +-----
.../boot/dts/ti/k3-j7200-ti-ipc-firmware.dtsi | 131 +++++++
.../boot/dts/ti/k3-j721e-beagleboneai64.dts | 229 +-----------
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 6 +
.../boot/dts/ti/k3-j721e-mcu-wakeup.dtsi | 3 +
arch/arm64/boot/dts/ti/k3-j721e-sk.dts | 266 +------------
arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi | 266 +------------
.../boot/dts/ti/k3-j721e-ti-ipc-firmware.dtsi | 289 ++++++++++++++
arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi | 6 +
.../boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi | 3 +
arch/arm64/boot/dts/ti/k3-j721s2-som-p0.dtsi | 231 +-----------
.../dts/ti/k3-j721s2-ti-ipc-firmware.dtsi | 250 +++++++++++++
arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 154 +-------
arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 1 +
.../boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi | 163 ++++++++
arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 26 +-
.../dts/ti/k3-j784s4-j742s2-evm-common.dtsi | 337 +----------------
.../dts/ti/k3-j784s4-j742s2-main-common.dtsi | 9 +
.../k3-j784s4-j742s2-mcu-wakeup-common.dtsi | 3 +
...-j784s4-j742s2-ti-ipc-firmware-common.dtsi | 351 ++++++++++++++++++
.../dts/ti/k3-j784s4-ti-ipc-firmware.dtsi | 34 ++
57 files changed, 1820 insertions(+), 3717 deletions(-)
create mode 100644 arch/arm64/boot/dts/ti/k3-am62-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-am62p-ti-ipc-firmware.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am64-ti-ipc-firmware.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am65-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-j7200-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-j721e-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-j721s2-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-j784s4-j742s2-ti-ipc-firmware-common.dtsi
create mode 100644
arch/arm64/boot/dts/ti/k3-j784s4-ti-ipc-firmware.dtsi