diff options
author | Aseda Aboagye <aaboagye@google.com> | 2018-01-22 11:49:12 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-01-31 18:01:04 -0800 |
commit | eb60e291e8c7c178e0814c5d2a5cbe6c207182d2 (patch) | |
tree | 1f253ef3dab7ee0240b3f8df83c973745b021210 /common/led_common.c | |
parent | e578304b9aa49ec7aaf0b9767235a8dc8ace5234 (diff) | |
download | chrome-ec-eb60e291e8c7c178e0814c5d2a5cbe6c207182d2.tar.gz |
led: Only report auto control for supported LEDs.
BUG=None
BRANCH=None
TEST=make -j buildall
Change-Id: I6508d2bfa01919c89a9b5c1129af35919deb1557
Signed-off-by: Aseda Aboagye <aaboagye@google.com>
Reviewed-on: https://chromium-review.googlesource.com/888219
Commit-Ready: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'common/led_common.c')
-rw-r--r-- | common/led_common.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/common/led_common.c b/common/led_common.c index 24c8dfe814..bd1c35816a 100644 --- a/common/led_common.c +++ b/common/led_common.c @@ -19,12 +19,16 @@ static uint32_t led_auto_control_flags = ~0x00; static int led_is_supported(enum ec_led_id led_id) { int i; + static int supported_leds = -1; - for (i = 0; i < supported_led_ids_count; i++) - if (led_id == supported_led_ids[i]) - return 1; + if (supported_leds == -1) { + supported_leds = 0; - return 0; + for (i = 0; i < supported_led_ids_count; i++) + supported_leds |= (1 << supported_led_ids[i]); + } + + return ((1 << (int)led_id) & supported_leds); } void led_auto_control(enum ec_led_id led_id, int enable) @@ -37,6 +41,9 @@ void led_auto_control(enum ec_led_id led_id, int enable) int led_auto_control_is_enabled(enum ec_led_id led_id) { + if (!led_is_supported(led_id)) + return 0; + return (led_auto_control_flags & LED_AUTO_CONTROL_FLAG(led_id)) != 0; } |