diff options
author | Ting Shen <phoenixshen@google.com> | 2019-12-11 18:14:51 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-12-27 08:52:13 +0000 |
commit | d15356206765437a27bc975c46175b055ff25af7 (patch) | |
tree | 4e70ddeef3e6871e7216550aeed5dd4da04b7b7d /common/led_pwm.c | |
parent | d158e276531acc1627bbf9b6872f391e54690ef4 (diff) | |
download | chrome-ec-d15356206765437a27bc975c46175b055ff25af7.tar.gz |
led_pwm: support different pwm modules
add enable() and set_duty() into struct pwm_led, to support PWMs other
than the default one.
BUG=b:135086465
TEST=verify led works on grunt
BRANCH=none
Change-Id: I1fd919d4990a145df272a7ee0b2072612f80cd44
Signed-off-by: Ting Shen <phoenixshen@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1963730
Reviewed-by: Eric Yilun Lin <yllin@chromium.org>
Commit-Queue: Ting Shen <phoenixshen@chromium.org>
Tested-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'common/led_pwm.c')
-rw-r--r-- | common/led_pwm.c | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/common/led_pwm.c b/common/led_pwm.c index dd8f33a137..b9aeb1e805 100644 --- a/common/led_pwm.c +++ b/common/led_pwm.c @@ -55,6 +55,7 @@ static int get_led_id_color(enum pwm_led_id id, int color) void set_pwm_led_color(enum pwm_led_id id, int color) { struct pwm_led duty = { 0 }; + const struct pwm_led *led = &pwm_leds[id]; if ((id >= CONFIG_LED_PWM_COUNT) || (id < 0) || (color >= EC_LED_COLOR_COUNT) || (color < -1)) @@ -66,12 +67,12 @@ void set_pwm_led_color(enum pwm_led_id id, int color) duty.ch2 = led_color_map[color].ch2; } - if (pwm_leds[id].ch0 != PWM_LED_NO_CHANNEL) - pwm_set_duty(pwm_leds[id].ch0, duty.ch0); - if (pwm_leds[id].ch1 != PWM_LED_NO_CHANNEL) - pwm_set_duty(pwm_leds[id].ch1, duty.ch1); - if (pwm_leds[id].ch2 != PWM_LED_NO_CHANNEL) - pwm_set_duty(pwm_leds[id].ch2, duty.ch2); + if (led->ch0 != PWM_LED_NO_CHANNEL) + led->set_duty(led->ch0, duty.ch0); + if (led->ch1 != PWM_LED_NO_CHANNEL) + led->set_duty(led->ch1, duty.ch1); + if (led->ch2 != PWM_LED_NO_CHANNEL) + led->set_duty(led->ch2, duty.ch2); } static void set_led_color(int color) @@ -92,15 +93,17 @@ static void set_led_color(int color) static void set_pwm_led_enable(enum pwm_led_id id, int enable) { + const struct pwm_led *led = &pwm_leds[id]; + if ((id >= CONFIG_LED_PWM_COUNT) || (id < 0)) return; - if (pwm_leds[id].ch0 != PWM_LED_NO_CHANNEL) - pwm_enable(pwm_leds[id].ch0, enable); - if (pwm_leds[id].ch1 != PWM_LED_NO_CHANNEL) - pwm_enable(pwm_leds[id].ch1, enable); - if (pwm_leds[id].ch2 != PWM_LED_NO_CHANNEL) - pwm_enable(pwm_leds[id].ch2, enable); + if (led->ch0 != PWM_LED_NO_CHANNEL) + led->enable(led->ch0, enable); + if (led->ch1 != PWM_LED_NO_CHANNEL) + led->enable(led->ch1, enable); + if (led->ch2 != PWM_LED_NO_CHANNEL) + led->enable(led->ch2, enable); } static void init_leds_off(void) |