oled ext pwr: Apply ddudek OLED ext pwr patch
This commit properly reinitializes the OLED display after ext power is re-enabled. It requires a patch pn zephyr itself. Until the patch is implemented in zephyr, it can be applied in your zmk-config’s github build action. More info here: https://github.com/zmkfirmware/zmk/issues/674 Original code by ddudek can also be found in the above issue.
This commit is contained in:
parent
35e73d40f5
commit
6e24fa200b
1 changed files with 16 additions and 0 deletions
|
@ -13,6 +13,9 @@
|
||||||
#include <settings/settings.h>
|
#include <settings/settings.h>
|
||||||
#include <drivers/gpio.h>
|
#include <drivers/gpio.h>
|
||||||
#include <drivers/ext_power.h>
|
#include <drivers/ext_power.h>
|
||||||
|
#include <drivers/display.h>
|
||||||
|
|
||||||
|
#define ZMK_DISPLAY_NAME CONFIG_LVGL_DISPLAY_DEV_NAME
|
||||||
|
|
||||||
#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
|
#if DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT)
|
||||||
|
|
||||||
|
@ -59,6 +62,16 @@ int ext_power_save_state() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void drivers_update_power_state(bool power) {
|
||||||
|
LOG_DBG("drivers_update_power_state: %s", power?"true":"false");
|
||||||
|
static const struct device *display;
|
||||||
|
display = device_get_binding(ZMK_DISPLAY_NAME);
|
||||||
|
|
||||||
|
if (display != NULL) {
|
||||||
|
display_update_ext_power(display, power);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int ext_power_generic_enable(const struct device *dev) {
|
static int ext_power_generic_enable(const struct device *dev) {
|
||||||
struct ext_power_generic_data *data = dev->data;
|
struct ext_power_generic_data *data = dev->data;
|
||||||
const struct ext_power_generic_config *config = dev->config;
|
const struct ext_power_generic_config *config = dev->config;
|
||||||
|
@ -68,6 +81,7 @@ static int ext_power_generic_enable(const struct device *dev) {
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
data->status = true;
|
data->status = true;
|
||||||
|
drivers_update_power_state(true);
|
||||||
return ext_power_save_state();
|
return ext_power_save_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,6 +94,8 @@ static int ext_power_generic_disable(const struct device *dev) {
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
data->status = false;
|
data->status = false;
|
||||||
|
|
||||||
|
drivers_update_power_state(false);
|
||||||
return ext_power_save_state();
|
return ext_power_save_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue