summaryrefslogtreecommitdiff
path: root/common/led_common.c
diff options
context:
space:
mode:
authorAseda Aboagye <aaboagye@google.com>2018-01-22 11:49:12 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-01-31 18:01:04 -0800
commiteb60e291e8c7c178e0814c5d2a5cbe6c207182d2 (patch)
tree1f253ef3dab7ee0240b3f8df83c973745b021210 /common/led_common.c
parente578304b9aa49ec7aaf0b9767235a8dc8ace5234 (diff)
downloadchrome-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.c15
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;
}