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.

Afterwards 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 mailinglist
and are required to find the correct address of the metadata.

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

To: Tom Rini <tr...@konsulko.com>
To: Vignesh Raghavendra <vigne...@ti.com>
To: Bryan Brattlof <b...@ti.com>
To: Sumit Garg <sumit.g...@linaro.org>
Cc: u-boot@lists.denx.de

Cc: Vishal Mahaveer <vish...@ti.com>
Cc: Kevin Hilman <khil...@baylibre.com>
Cc: Dhruva Gole <d-g...@ti.com>
Cc: Sebin Francis <sebin.fran...@ti.com>
Cc: Kendall Willis <k-wil...@ti.com>
Cc: Akashdeep Kaur <a-k...@ti.com>

Signed-off-by: Markus Schneider-Pargmann <m...@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

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                          |   9 ++
 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-am62a-main.dtsi      |  12 ++
 dts/upstream/src/arm64/ti/k3-am62a-mcu.dtsi       |  25 ++++
 dts/upstream/src/arm64/ti/k3-am62a-wakeup.dtsi    |  25 ++++
 dts/upstream/src/arm64/ti/k3-am62a7-sk.dts        |  96 ++++++++++++-
 dts/upstream/src/arm64/ti/k3-am62p5-sk.dts        |  50 ++++++-
 dts/upstream/src/arm64/ti/k3-am62x-sk-common.dtsi |  35 ++++-
 include/linux/soc/ti/ti_sci_protocol.h            |   9 ++
 21 files changed, 721 insertions(+), 18 deletions(-)
---
base-commit: a517796cfa5d8f4ca2f0c11c78c24a08a102c047
change-id: 20250306-topic-am62-ioddr-v2025-04-rc1-0b3a0ffe92b1

Best regards,
-- 
Markus Schneider-Pargmann <m...@baylibre.com>

Reply via email to