summaryrefslogtreecommitdiff
path: root/common/led_pwm.c
diff options
context:
space:
mode:
authorTing Shen <phoenixshen@google.com>2019-12-11 18:14:51 +0800
committerCommit Bot <commit-bot@chromium.org>2019-12-27 08:52:13 +0000
commitd15356206765437a27bc975c46175b055ff25af7 (patch)
tree4e70ddeef3e6871e7216550aeed5dd4da04b7b7d /common/led_pwm.c
parentd158e276531acc1627bbf9b6872f391e54690ef4 (diff)
downloadchrome-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.c27
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)