From 41d81801ed11a1dca918c9c0088351856e4e1808 Mon Sep 17 00:00:00 2001 From: Peter Johanson Date: Mon, 25 Mar 2024 09:37:14 +0000 Subject: [PATCH] fix(pm): Use Zephyr created device slots. * Avoid overwriting random memory by using iterable section created by Zephyr PM. --- app/CMakeLists.txt | 4 ---- app/include/linker/zmk-pm-devices.ld | 9 --------- app/src/pm.c | 6 +++--- 3 files changed, 3 insertions(+), 16 deletions(-) delete mode 100644 app/include/linker/zmk-pm-devices.ld diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 2744f53d..0b681ea9 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -8,10 +8,6 @@ set(ZEPHYR_EXTRA_MODULES "${ZMK_EXTRA_MODULES};${CMAKE_CURRENT_SOURCE_DIR}/modul find_package(Zephyr REQUIRED HINTS ../zephyr) project(zmk) -if(CONFIG_ZMK_PM_DEVICE_SUSPEND_RESUME) - zephyr_linker_sources(SECTIONS include/linker/zmk-pm-devices.ld) -endif() - zephyr_linker_sources(SECTIONS include/linker/zmk-behaviors.ld) zephyr_linker_sources(RODATA include/linker/zmk-events.ld) diff --git a/app/include/linker/zmk-pm-devices.ld b/app/include/linker/zmk-pm-devices.ld deleted file mode 100644 index 93ec5025..00000000 --- a/app/include/linker/zmk-pm-devices.ld +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2023 The ZMK Contributors - * - * SPDX-License-Identifier: MIT - */ - -#include - -ITERABLE_SECTION_RAM(zmk_pm_device_slots, 4) diff --git a/app/src/pm.c b/app/src/pm.c index 4f151875..447eb351 100644 --- a/app/src/pm.c +++ b/app/src/pm.c @@ -21,7 +21,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); // TODO: Tweak this to smarter runtime PM of subsystems on sleep. #ifdef CONFIG_ZMK_PM_DEVICE_SUSPEND_RESUME -TYPE_SECTION_START_EXTERN(const struct device *, zmk_pm_device_slots); +TYPE_SECTION_START_EXTERN(const struct device *, pm_device_slots); #if !defined(CONFIG_PM_DEVICE_RUNTIME_EXCLUSIVE) /* Number of devices successfully suspended. */ @@ -57,7 +57,7 @@ int zmk_pm_suspend_devices(void) { return ret; } - TYPE_SECTION_START(zmk_pm_device_slots)[zmk_num_susp] = dev; + TYPE_SECTION_START(pm_device_slots)[zmk_num_susp] = dev; zmk_num_susp++; } @@ -66,7 +66,7 @@ int zmk_pm_suspend_devices(void) { void zmk_pm_resume_devices(void) { for (int i = (zmk_num_susp - 1); i >= 0; i--) { - pm_device_action_run(TYPE_SECTION_START(zmk_pm_device_slots)[i], PM_DEVICE_ACTION_RESUME); + pm_device_action_run(TYPE_SECTION_START(pm_device_slots)[i], PM_DEVICE_ACTION_RESUME); } zmk_num_susp = 0;