[PATCH v3 00/22] am62: IO+DDR resume support
Markus Schneider-Pargmann
msp at baylibre.com
Mon Jun 23 14:08:23 CEST 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.
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 <msp at 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
---
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 | 177 +++++++++++++++++++++
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, 786 insertions(+), 27 deletions(-)
---
base-commit: dbf7fd557a73ded3141db3c2cf5c572989378825
change-id: 20250306-topic-am62-ioddr-v2025-04-rc1-0b3a0ffe92b1
Best regards,
--
Markus Schneider-Pargmann <msp at baylibre.com>
More information about the U-Boot
mailing list