On 11/3/2026 3:25 PM, Markus Schneider-Pargmann (TI) wrote: > 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. > > This was tested on am62p. > > Best, > Markus > > Signed-off-by: Markus Schneider-Pargmann (TI) <[email protected]> > --- > Changes in v10: > - Rebase to v2027.01-rc1 > - Drop the two DT patches adding bootph-pre-ram flags. These are now > part of upstream DT. Also pick memory region size fixes from the same > merged series. > - Cherry picked upstream DT patches for splitting the memory regions to > be able to reference the relevant section directly > - Use "lpm-metadata" memory region name to lookup the correct memory > region instead of a hardcoded memory offset and index > - Do not read the address in u-boot code, but pass a pointer to the > address to the tifs restore > - Added all patches from the series: > IO+DDR low power mode bugfixes for AM62P and AM62A > https://lore.kernel.org/all/[email protected]/ > - Link to v9: > https://lore.kernel.org/r/20260105-topic-am62-ioddr-v2025-04-rc1-v9-0-7e33f2c77...@baylibre.com > > Changes in v9: > - Swap setup_qos() and spl_enable_cache() in am62p5_init.c and > am62a7_init.c. setup_qos() is still required for lpm resume but > spl_enable_cache() is not. There should be no dependency between the > two. > - Link to v8: > https://lore.kernel.org/r/20251222-topic-am62-ioddr-v2025-04-rc1-v8-0-e70fed16b...@baylibre.com > > Changes in v8: > - Create and use am62xx-lpm-common for am62xx lpm common functions > - Create platform dependent functions in k3-ddrss in k3_ddrss_data > - Align am62a and am62p initialization regarding caches and QoS > - Link to v7: > https://lore.kernel.org/r/20251210-topic-am62-ioddr-v2025-04-rc1-v7-0-f113b156f...@baylibre.com > > Changes in v7: > - Removed parent nodes bootph-pre-ram properties as not necessary > anymore. > - Added missing new line in > arm: mach-k3: common: Helper for LPM meta data address from DT > - Split off LPM specific ddr code into its own file k3-ddrss-lpm > - Rename lpm_ops->restore_context to lpm_ops->min_context_restore > - Pulled patch to add wakeup check helpers before the IO isolation > removal to remove later cleanup of > wkup_ctrl_remove_can_io_isolation_if_set() > - Some reviewed-bys and tested-bys removed due to changes in the > patches > - Link to v6: > https://lore.kernel.org/r/20251120-topic-am62-ioddr-v2025-04-rc1-v6-0-6dd99a727...@baylibre.com > > Changes in v6: > - Add comment for last part of removing can io isolation > - Only mention a single kconfig symbol in the commit message > - Add defines for timeouts in k3-ddrss > - Link to v5: > https://lore.kernel.org/r/20251110-topic-am62-ioddr-v2025-04-rc1-v5-0-980ee0036...@baylibre.com > > Changes in v5: > - Fixed compile warnings > - Link to v4: > https://lore.kernel.org/r/20251030-topic-am62-ioddr-v2025-04-rc1-v4-0-4cef18af0...@baylibre.com > > Changes in v4: > - Copy lpm_meta_data into the stack to be able to debug unstable memory > issues > - Add missing comments about ctx_lo and ctx_hi > - Use absolute addresses for k3-ddrss CANUART_WAKE_STAT1 and > CANUART_WAKE_OFF_MODE_STAT to avoid using addresses outside of the > range given in the devicetree > - Remove the cherry picked devicetree patches as they are already > included now > - In lpm_resume_from_ddr() print upper and lower 32bit of the meta data > values separately. > - Link to v3: > https://lore.kernel.org/r/20250623-topic-am62-ioddr-v2025-04-rc1-v3-0-a4da322c1...@baylibre.com > > Changes in v3: > - Use wait_for_bit helpers in k3-ddrss where possible and add panic > messages for easier debugging > - Link to v2: > https://lore.kernel.org/r/20250613-topic-am62-ioddr-v2025-04-rc1-v2-0-3d233aaea...@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 > > To: [email protected] > Cc: Sumit Garg <[email protected]> > Cc: Tom Rini <[email protected]> > Cc: "Markus Schneider-Pargmann (TI)" <[email protected]> > Cc: Nishanth Menon <[email protected]> > Cc: Stefano Radaelli <[email protected]> > Cc: Ilias Apalodimas <[email protected]> > Cc: Paresh Bhagat <[email protected]> > Cc: Akashdeep Kaur <[email protected]> > Cc: Vignesh Raghavendra <[email protected]> > Cc: Bryan Brattlof <[email protected]> > Cc: Bin Liu <[email protected]> > Cc: Kendall Willis <[email protected]> > Cc: Udit Kumar <[email protected]> > Cc: Neha Malcom Francis <[email protected]> > > --- > Akashdeep Kaur (4): > ram: k3-ddrss: Add workaround sequence for errata i2487 > arm: mach-k3: am62xx-lpm: Add 32kHz LFOSC enable function declaration > arm: mach-k3: am62px: Enable 32kHz LFOSC during LPM resume > arm: mach-k3: am62ax: Enable 32kHz LFOSC during LPM resume > > Markus Schneider-Pargmann (TI) (20): > arm64: dts: ti: k3-am62a-phycore-som: Fix wkup R5F memory region size > arm64: dts: ti: k3-am62d2-evm: Fix wkup R5F memory region size > arm64: dts: ti: k3-am62a7-sk: Fix wkup R5F memory region size > arm64: dts: ti: k3-am62p-verdin: Fix wkup R5F memory region size > arm64: dts: ti: k3-am62p5-sk: Fix wkup R5F memory region size > arm64: dts: ti: var-som-am62p: Fix wkup R5F memory region size > arm64: dts: ti: k3-am62a: Split r5f memory region > arm64: dts: ti: k3-am62p: Split r5f memory region > arm64: dts: ti: k3-am62*: Add wkup R5F nodes to pre-ram bootphase > arm: mach-k3: Kconfig: Add symbol for IO+DDR Low Power Mode > arm: mach-k3: am62xx-lpm-common: Add CANUART wakeup check helpers > arm: mach-k3: Remove CANUART IO isolation > ram: k3-ddrss: Add support for DDR in self-refresh > firmware: ti_sci: Add TI_SCI_MSG_MIN_CONTEXT_RESTORE > arm: mach-k3: am62xx-lpm-common: Add lpm_resume_from_ddr > arm: mach-k3: am62xx-lpm-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 > configs: am62ax_evm_r5: Enable IODDR resume support > configs: am62p_evm_r5_defconfig: Enable IODDR resume support > > arch/arm/mach-k3/Kconfig | 9 + > arch/arm/mach-k3/Makefile | 3 + > arch/arm/mach-k3/am62ax/am62a7_init.c | 24 +- > arch/arm/mach-k3/am62px/am62p5_init.c | 20 +- > arch/arm/mach-k3/am62x/am625_init.c | 5 + > arch/arm/mach-k3/am62xx-lpm-common.c | 240 +++++++++++++++++++ > arch/arm/mach-k3/am62xx-lpm-common.h | 20 ++ > configs/am62ax_evm_r5_defconfig | 1 + > configs/am62px_evm_r5_defconfig | 1 + > drivers/firmware/ti_sci.c | 38 +++ > drivers/firmware/ti_sci.h | 16 ++ > drivers/ram/k3-ddrss/Makefile | 1 + > drivers/ram/k3-ddrss/k3-ddrss-lpm.c | 261 > +++++++++++++++++++++ > drivers/ram/k3-ddrss/k3-ddrss-lpm.h | 21 ++ > drivers/ram/k3-ddrss/k3-ddrss.c | 31 ++- > .../src/arm64/ti/k3-am62a-phycore-som.dtsi | 29 ++- > .../src/arm64/ti/k3-am62a-ti-ipc-firmware.dtsi | 11 +- > dts/upstream/src/arm64/ti/k3-am62a7-sk.dts | 29 ++- > dts/upstream/src/arm64/ti/k3-am62d2-evm.dts | 32 ++- > .../src/arm64/ti/k3-am62p-ti-ipc-firmware.dtsi | 11 +- > dts/upstream/src/arm64/ti/k3-am62p-verdin.dtsi | 29 ++- > dts/upstream/src/arm64/ti/k3-am62p5-sk.dts | 29 ++- > dts/upstream/src/arm64/ti/k3-am62p5-var-som.dtsi | 29 ++- > include/linux/soc/ti/ti_sci_protocol.h | 9 + > 24 files changed, 874 insertions(+), 25 deletions(-) > --- > base-commit: dfcfc4c9f78d1743f490a497082a4ec8e058aae8 > change-id: 20250306-topic-am62-ioddr-v2025-04-rc1-0b3a0ffe92b1 > > Best regards, > -- > Markus Schneider-Pargmann (TI) <[email protected]>
Tested-by: Akashdeep Kaur <[email protected]> Regards, Akashdeep Kaur
