Hi, This series introduces necessary ti_sci driver functionality in preparation of supporting DeepSleep mode for suspend to mem on TI K3 AM62 [1]. This series applies on top of [2], which is also required for proper system suspend operation. Deep Sleep mode is described in section "5.2.4.4 DeepSleep" of the AM62 Technical Reference Manual: https://www.ti.com/lit/pdf/spruiv7 The kernel triggers entry to Deep Sleep mode through the mem suspend transition with the following: * Use a TF-A binary that supports PSCI_SYSTEM_SUSPEND call, which is enabled by the pending patches here [3]. This causes system to use PSCI system suspend as last step of mem sleep. * The firmware requires that the OS sends a TISCI_MSG_PREPARE_SLEEP message in order to provide details about suspend, so we must add the ability to send this message. (Patch 3) * A memory carveout address must be provided to the firmware using the above message, which is passed through device tree to the driver. (Patches 1 and 4) * System must load firmware to a specific location before Deep Sleep is entered, and this is accomplished using an lpm memory region in device tree to indicate where this firmware should be loaded, and also a "ti,lpm-firmware-name" property to indicate the name of the firmware to load. The ti_sci driver checks in its suspend handler to see if the firmware has been loaded and if not, loads it. (Patches 2 and 5) * Finally, the ti_sci driver must actually send TISCI_MSG_PREPARE_SLEEP message to firmware with the above information included, which it does during the driver suspend handler when PM_MEM_SUSPEND is the determined state being entered. (Patch 6) This is tested on am625-sk using a ramdisk with all devices disabled apart from cpu0, main_uart0, dmsc, and secure_proxy_main. Regards, Dave [1] https://lore.kernel.org/lkml/20220225120239.1303821-1-vigneshr@xxxxxx/ [2] https://lore.kernel.org/lkml/20220412192138.31189-1-d-gerlach@xxxxxx/ [3] https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/14714/3 Dave Gerlach (6): dt-bindings: ti,sci: Add ti,ctx-memory-region property dt-bindings: ti,sci: Add lpm region and ti,lpm-firmware-name firmware: ti_sci: Introduce Power Management Ops firmware: ti_sci: Introduce ti,ctx-memory-region for reserved LPM memory firmware: ti_sci: Use dt provided fw name and address to load at suspend time firmware: ti_sci: Introduce prepare system suspend call .../bindings/arm/keystone/ti,sci.yaml | 30 ++- drivers/firmware/ti_sci.c | 207 +++++++++++++++++- drivers/firmware/ti_sci.h | 32 ++- include/linux/soc/ti/ti_sci_protocol.h | 6 + 4 files changed, 269 insertions(+), 6 deletions(-) -- 2.35.0