diff options
Diffstat (limited to 'zephyr/drivers/cros_kblight/pwm_kblight.c')
-rw-r--r-- | zephyr/drivers/cros_kblight/pwm_kblight.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/zephyr/drivers/cros_kblight/pwm_kblight.c b/zephyr/drivers/cros_kblight/pwm_kblight.c index ca395f8dba..59b4ef20ef 100644 --- a/zephyr/drivers/cros_kblight/pwm_kblight.c +++ b/zephyr/drivers/cros_kblight/pwm_kblight.c @@ -5,27 +5,30 @@ #define DT_DRV_COMPAT cros_ec_kblight_pwm -#include "common.h" -#include "keyboard_backlight.h" -#include "util.h" - #include <zephyr/devicetree.h> #include <zephyr/drivers/pwm.h> #include <zephyr/logging/log.h> +#include "common.h" +#include "keyboard_backlight.h" +#include "util.h" + LOG_MODULE_REGISTER(kblight, LOG_LEVEL_ERR); BUILD_ASSERT(DT_NUM_INST_STATUS_OKAY(DT_DRV_COMPAT) == 1, "Exactly one instance of cros-ec,kblight-pwm should be defined."); -static const struct pwm_dt_spec kblight_pwm_dt = PWM_DT_SPEC_INST_GET(0); +#define KBLIGHT_PWM_NODE DT_INST_PWMS_CTLR(0) +#define KBLIGHT_PWM_CHANNEL DT_INST_PWMS_CHANNEL(0) +#define KBLIGHT_PWM_FLAGS DT_INST_PWMS_FLAGS(0) +#define KBLIGHT_PWM_PERIOD_NS DT_INST_PWMS_PERIOD(0) static bool kblight_enabled; static int kblight_percent; static void kblight_pwm_set_duty(int percent) { - const struct device *pwm_dev = kblight_pwm_dt.dev; + const struct device *pwm_dev = DEVICE_DT_GET(KBLIGHT_PWM_NODE); uint32_t pulse_ns; int rv; @@ -34,14 +37,15 @@ static void kblight_pwm_set_duty(int percent) return; } - pulse_ns = DIV_ROUND_NEAREST(kblight_pwm_dt.period * percent, 100); + pulse_ns = DIV_ROUND_NEAREST(KBLIGHT_PWM_PERIOD_NS * percent, 100); LOG_DBG("kblight PWM %s set percent (%d), pulse %d", pwm_dev->name, percent, pulse_ns); - rv = pwm_set_pulse_dt(&kblight_pwm_dt, pulse_ns); + rv = pwm_set(pwm_dev, KBLIGHT_PWM_CHANNEL, KBLIGHT_PWM_PERIOD_NS, + pulse_ns, KBLIGHT_PWM_FLAGS); if (rv) { - LOG_ERR("pwm_set_pulse_dt failed %s (%d)", pwm_dev->name, rv); + LOG_ERR("pwm_set() failed %s (%d)", pwm_dev->name, rv); } } @@ -52,6 +56,11 @@ static int kblight_pwm_set(int percent) return EC_SUCCESS; } +static int kblight_pwm_get(void) +{ + return kblight_percent; +} + static int kblight_pwm_enable(int enable) { kblight_enabled = enable; @@ -79,6 +88,7 @@ static int kblight_pwm_init(void) const struct kblight_drv kblight_pwm = { .init = kblight_pwm_init, .set = kblight_pwm_set, + .get = kblight_pwm_get, .enable = kblight_pwm_enable, .get_enabled = kblight_pwm_get_enabled, }; |