diff --git a/app/src/display/main.c b/app/src/display/main.c index 361f1fcaf070..f241c5bd50c5 100644 --- a/app/src/display/main.c +++ b/app/src/display/main.c @@ -13,6 +13,7 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include +#include #include #include "theme.h" @@ -22,6 +23,14 @@ LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); #include static const struct device *display = DEVICE_DT_GET(DT_CHOSEN(zephyr_display)); + +#if DT_HAS_CHOSEN(zmk_display_led) + +static const struct device *display_led = DEVICE_DT_GET(DT_PARENT(DT_CHOSEN(zmk_display_led))); +static const uint8_t display_led_idx = DT_NODE_CHILD_IDX(DT_CHOSEN(zmk_display_led)); + +#endif + static bool initialized = false; static lv_obj_t *screen; @@ -55,6 +64,9 @@ 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) { +#if DT_HAS_CHOSEN(zmk_display_led) + led_on(display_led, display_led_idx); +#endif display_blanking_off(display); #if !IS_ENABLED(CONFIG_ARCH_POSIX) k_timer_start(&display_timer, K_MSEC(TICK_MS), K_MSEC(TICK_MS)); @@ -68,6 +80,9 @@ void blank_display_cb(struct k_work *work) { k_timer_stop(&display_timer); #endif // !IS_ENABLED(CONFIG_ARCH_POSIX) display_blanking_on(display); +#if DT_HAS_CHOSEN(zmk_display_led) + led_off(display_led, display_led_idx); +#endif } K_WORK_DEFINE(blank_display_work, blank_display_cb); K_WORK_DEFINE(unblank_display_work, unblank_display_cb); diff --git a/docs/docs/config/displays.md b/docs/docs/config/displays.md index 96a0074a5248..229a202770f8 100644 --- a/docs/docs/config/displays.md +++ b/docs/docs/config/displays.md @@ -62,3 +62,12 @@ See the Devicetree bindings for your display. Here are the bindings for common d - [SSD1306 (spi)](https://docs.zephyrproject.org/3.5.0/build/dts/api/bindings/display/solomon,ssd1306fb-spi.html) A full list of drivers provided by Zephyr can be found in [Zephyr's Devicetree bindings index](https://docs.zephyrproject.org/3.5.0/build/dts/api/bindings.html). + +### Chosen nodes + +Applies to: [`/chosen` node](https://docs.zephyrproject.org/3.5.0/build/dts/intro-syntax-structure.html#aliases-and-chosen-nodes) + +| Property | Type | Description | +| ----------------- | ---- | -------------------------------------------------------------------------------------------------------- | +| `zephyr,display` | path | The display device to use. | +| `zmk,display-led` | path | The LED device to use for on/off blanking, if the hardware requires it. Can be a PWM or GPIO LED device. |