[PATCH v4 00/13] am62: IO+DDR resume support
Markus Schneider-Pargmann (TI.com)
msp at baylibre.com
Thu Oct 30 10:59:18 CET 2025
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.
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.
I tested this on am62a.
Best,
Markus
Signed-off-by: Markus Schneider-Pargmann (TI.com) <msp at 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-a4da322c16af@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-3d233aaea355@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-666de9c105cb@baylibre.com
---
Markus Schneider-Pargmann (TI.com) (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 | 166 +++++++++++++++++++++++++++++
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 | 16 +++
drivers/ram/k3-ddrss/k3-ddrss.c | 177 +++++++++++++++++++++++++++++++
include/linux/soc/ti/ti_sci_protocol.h | 9 ++
15 files changed, 513 insertions(+)
---
base-commit: e34d01d23e45e007368685ffa6dfd674b6dd7b17
change-id: 20250306-topic-am62-ioddr-v2025-04-rc1-0b3a0ffe92b1
Best regards,
--
Markus Schneider-Pargmann (TI.com) <msp at baylibre.com>
More information about the U-Boot
mailing list