Hi, this series introduces support to resume from IO+DDR. IO+DDR is a low power mode of am62a and am62p in which nearly everything is powered off except DDR which is in self-refresh and a few pins which detect activity and can wakeup the system again.
On resume uboot SPL is loaded and checks if this is a IO+DDR resume. If it is, the DDR initialization sequence in k3-ddrss differs slightly as it has to get the DDR out of the self-refresh. Afterward a specific address determined from DT is used to get the metadata that stores relevant context addresses. The context is restored using the tisci message TI_SCI_MSG_MIN_CONTEXT_RESTORE. At the end all further initializations are skipped and uboot SPL directly jumps into the DM resume address which takes care of the rest. The devicetree R5F related patches were picked up from the devicetree repository tag v6.16-rc1-dts and are required to find the correct address of the metadata. I picked some additional patches to avoid conflicts. k3-ddrss is using absolute register accesses at the moment. I am trying to submit syscon DT patches upstream to access these through syscon, unfortunately there is ongoing discussion regarding syscon. This series is based on next. I tested this on am62a. Best, Markus Signed-off-by: Markus Schneider-Pargmann <m...@baylibre.com> --- Changes in v2: - Remove 'default n' from K3_IODDR - Pick devicetree patches from upstream instead of mailinglist - Link to v1: https://lore.kernel.org/r/20250311-topic-am62-ioddr-v2025-04-rc1-v1-0-666de9c10...@baylibre.com --- Devarsh Thakkar (3): arm64: dts: ti: k3-am62a-wakeup: Add R5F device node arm64: dts: ti: k3-am62a7-sk: Enable IPC with remote processors arm64: dts: ti: k3-am62p5-sk: Enable IPC with remote processors Hari Nagalla (2): arm64: dts: ti: k3-am62a-mcu: Add R5F remote proc node arm64: dts: ti: k3-am62x-sk-common: Enable IPC with remote processors Jai Luthra (1): arm64: dts: ti: k3-am62a-main: Add C7xv device node Judith Mendez (3): arm64: dts: ti: k3-am62a7-sk: Enable PWM arm64: dts: ti: k3-am6*: Add boot phase flag to support MMC boot arm64: dts: ti: k3-am6*: Remove disable-wp for eMMC Markus Schneider-Pargmann (13): arm: mach-k3: Remove CANUART IO isolation arm: mach-k3: Kconfig: Add symbols for IO+DDR Low Power Mode ram: k3-ddrss: Add support for DDR in self-refresh firmware: ti_sci: Add TI_SCI_MSG_MIN_CONTEXT_RESTORE arm: mach-k3: common: Add CANUART wakeup check helpers arm: mach-k3: common: Add lpm_resume_from_ddr arm: mach-k3: common: Helper for LPM meta data address from DT arm: mach-k3: am62a7_init: Resume on LPM exit arm: mach-k3: am62p5_init: Resume on LPM exit arm: dts: k3-am62a: Add r5 device nodes arm: dts: k3-am62p: Add r5 device nodes configs: am62ax_evm_r5: Enable IODDR resume support configs: am62p_evm_r5_defconfig: Enable IODDR resume support arch/arm/dts/k3-am62a7-sk-u-boot.dtsi | 16 ++ arch/arm/dts/k3-am62p5-sk-u-boot.dtsi | 20 +++ arch/arm/mach-k3/Kconfig | 8 + arch/arm/mach-k3/am62ax/am62a7_init.c | 11 ++ arch/arm/mach-k3/am62px/am62p5_init.c | 12 ++ arch/arm/mach-k3/am62x/am625_init.c | 2 + arch/arm/mach-k3/common.c | 162 ++++++++++++++++++++ arch/arm/mach-k3/common.h | 4 + arch/arm/mach-k3/include/mach/hardware.h | 32 ++++ configs/am62ax_evm_r5_defconfig | 1 + configs/am62px_evm_r5_defconfig | 1 + drivers/firmware/ti_sci.c | 38 +++++ drivers/firmware/ti_sci.h | 14 ++ drivers/ram/k3-ddrss/k3-ddrss.c | 165 +++++++++++++++++++++ dts/upstream/src/arm64/ti/k3-am62-lp-sk.dts | 12 ++ dts/upstream/src/arm64/ti/k3-am62-phycore-som.dtsi | 1 - dts/upstream/src/arm64/ti/k3-am625-beagleplay.dts | 1 - dts/upstream/src/arm64/ti/k3-am62a-main.dtsi | 12 ++ dts/upstream/src/arm64/ti/k3-am62a-mcu.dtsi | 25 ++++ .../src/arm64/ti/k3-am62a-phycore-som.dtsi | 1 - dts/upstream/src/arm64/ti/k3-am62a-wakeup.dtsi | 25 ++++ dts/upstream/src/arm64/ti/k3-am62a7-sk.dts | 139 ++++++++++++++++- dts/upstream/src/arm64/ti/k3-am62p5-sk.dts | 51 ++++++- dts/upstream/src/arm64/ti/k3-am62x-sk-common.dtsi | 35 ++++- dts/upstream/src/arm64/ti/k3-am642-evm.dts | 1 - dts/upstream/src/arm64/ti/k3-am654-base-board.dts | 1 - .../ti/k3-am6548-iot2050-advanced-common.dtsi | 1 - dts/upstream/src/arm64/ti/k3-am69-sk.dts | 1 - include/linux/soc/ti/ti_sci_protocol.h | 9 ++ 29 files changed, 774 insertions(+), 27 deletions(-) --- base-commit: 548d997229b7929bd7f0782415952d5a85eb7e64 change-id: 20250306-topic-am62-ioddr-v2025-04-rc1-0b3a0ffe92b1 Best regards, -- Markus Schneider-Pargmann <m...@baylibre.com>