From 6c1d6fb3e45ab7ba7ea12c69900b3c4caa342792 Mon Sep 17 00:00:00 2001 From: Peter Johanson Date: Sun, 23 Apr 2023 07:02:11 +0000 Subject: [PATCH] feat(display): Add device runtime PM handling. * Properly get/put the display device as needed when we start/ stop using it as part of our high level app logic. --- app/src/display/main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/app/src/display/main.c b/app/src/display/main.c index e15e2de0..870945c3 100644 --- a/app/src/display/main.c +++ b/app/src/display/main.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -55,7 +56,16 @@ void display_timer_cb() { k_work_submit_to_queue(zmk_display_work_q(), &display_ K_TIMER_DEFINE(display_timer, display_timer_cb, NULL); void unblank_display_cb(struct k_work *work) { + int err = pm_device_runtime_get(display); + if (err < 0) { + LOG_ERR("Failed to get the display device PM (%d)", err); + return; + } + display_blanking_off(display); + + lv_obj_invalidate(lv_scr_act()); + k_timer_start(&display_timer, K_MSEC(TICK_MS), K_MSEC(TICK_MS)); } @@ -64,6 +74,7 @@ void unblank_display_cb(struct k_work *work) { void blank_display_cb(struct k_work *work) { k_timer_stop(&display_timer); display_blanking_on(display); + pm_device_runtime_put(display); } K_WORK_DEFINE(blank_display_work, blank_display_cb); K_WORK_DEFINE(unblank_display_work, unblank_display_cb);