diff options
author | Fabio Baltieri <fabiobaltieri@google.com> | 2022-04-04 13:46:33 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-04-07 13:37:36 +0000 |
commit | 045778d73461c40cd91b5ae12a071ad374a190f4 (patch) | |
tree | 10d1d73f4d70c2a8e881ecd8b3545d98b23a83a7 | |
parent | e40694df1dfa05596482573483bd4be45954d1cb (diff) | |
download | chrome-ec-045778d73461c40cd91b5ae12a071ad374a190f4.tar.gz |
zephyr: skyrim: convert PWM LED to cros-ec,pwm-leds
Skyrim LED should be able to use the cros-ec,pwm-leds driver and save
some board specific code.
BRANCH=none
BUG=b:217741090
TEST=zmake build skyrim
Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
Change-Id: I5c192e62a780c2fc7d5f699d2f68d07cbd6ba341
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3569762
Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r-- | zephyr/projects/skyrim/BUILD.py | 2 | ||||
-rw-r--r-- | zephyr/projects/skyrim/led.c | 73 | ||||
-rw-r--r-- | zephyr/projects/skyrim/prj.conf | 1 | ||||
-rw-r--r-- | zephyr/projects/skyrim/pwm.dts | 33 | ||||
-rw-r--r-- | zephyr/projects/skyrim/pwm_leds.dts | 46 |
5 files changed, 54 insertions, 101 deletions
diff --git a/zephyr/projects/skyrim/BUILD.py b/zephyr/projects/skyrim/BUILD.py index 21b4caded7..e206bdd0d5 100644 --- a/zephyr/projects/skyrim/BUILD.py +++ b/zephyr/projects/skyrim/BUILD.py @@ -17,7 +17,7 @@ def register_variant(project_name): here / "interrupts.dts", here / "keyboard.dts", here / "motionsense.dts", - here / "pwm.dts", + here / "pwm_leds.dts", here / "usbc.dts", # Project-specific DTS customizations. here / f"{project_name}.dts", diff --git a/zephyr/projects/skyrim/led.c b/zephyr/projects/skyrim/led.c index 6924956273..88feb75b66 100644 --- a/zephyr/projects/skyrim/led.c +++ b/zephyr/projects/skyrim/led.c @@ -1,30 +1,15 @@ /* Copyright 2021 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. - * - * Guybrush specific PWM LED settings. */ #include "common.h" -#include "led_onoff_states.h" #include "led_common.h" -#include "hooks.h" -#include "pwm.h" - -/* Note PWM LEDs are active low */ -#define LED_OFF_LVL 1 -#define LED_ON_LVL 0 - -/* Define our PWM_CH values for zephyr */ -#define PWM_CH_LED_CHRG PWM_CHANNEL(DT_NODELABEL(led_charge)) -#define PWM_CH_LED_FULL PWM_CHANNEL(DT_NODELABEL(led_full)) - -#define CPRINTS(format, args...) cprints(CC_PWM, format, ## args) +#include "led_onoff_states.h" +#include "led_pwm.h" __override const int led_charge_lvl_1 = 5; - __override const int led_charge_lvl_2 = 97; - __override struct led_descriptor led_bat_state_table[LED_NUM_STATES][LED_NUM_PHASES] = { [STATE_CHARGING_LVL_1] = {{EC_LED_COLOR_AMBER, LED_INDEFINITE} }, @@ -42,63 +27,17 @@ __override struct led_descriptor {EC_LED_COLOR_WHITE, 2 * LED_ONE_SEC} }, }; -const enum ec_led_id supported_led_ids[] = { - EC_LED_ID_BATTERY_LED, -}; - -const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids); - __override void led_set_color_battery(enum ec_led_colors color) { switch (color) { case EC_LED_COLOR_AMBER: - pwm_enable(PWM_CH_LED_CHRG, LED_ON_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_OFF_LVL); + set_pwm_led_color(EC_LED_ID_BATTERY_LED, EC_LED_COLOR_AMBER); break; case EC_LED_COLOR_WHITE: - pwm_enable(PWM_CH_LED_CHRG, LED_OFF_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_ON_LVL); - break; - case LED_OFF: - pwm_enable(PWM_CH_LED_CHRG, LED_OFF_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_OFF_LVL); + set_pwm_led_color(EC_LED_ID_BATTERY_LED, EC_LED_COLOR_WHITE); break; - default: /* Unsupported colors */ - CPRINTS("Unsupported LED color: %d", color); - pwm_enable(PWM_CH_LED_CHRG, LED_OFF_LVL); - pwm_enable(PWM_CH_LED_FULL, LED_OFF_LVL); + default: /* OFF or unsupported colors */ + set_pwm_led_color(EC_LED_ID_BATTERY_LED, -1); break; } } - -void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range) -{ - if (led_id == EC_LED_ID_BATTERY_LED) { - brightness_range[EC_LED_COLOR_AMBER] = 1; - brightness_range[EC_LED_COLOR_WHITE] = 1; - } -} - -int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness) -{ - if (led_id == EC_LED_ID_BATTERY_LED) { - if (brightness[EC_LED_COLOR_WHITE] != 0) - led_set_color_battery(EC_LED_COLOR_WHITE); - else if (brightness[EC_LED_COLOR_AMBER] != 0) - led_set_color_battery(EC_LED_COLOR_AMBER); - else - led_set_color_battery(LED_OFF); - } else { - CPRINTS("Unsupported LED set: %d", led_id); - return EC_ERROR_INVAL; - } - - return EC_SUCCESS; -} - -static void pwm_led_duty_init(void) -{ - pwm_set_duty(PWM_CH_LED_CHRG, 100); - pwm_set_duty(PWM_CH_LED_FULL, 100); -} -DECLARE_HOOK(HOOK_INIT, pwm_led_duty_init, HOOK_PRIO_POST_PWM); diff --git a/zephyr/projects/skyrim/prj.conf b/zephyr/projects/skyrim/prj.conf index 444c45f338..59c37b5150 100644 --- a/zephyr/projects/skyrim/prj.conf +++ b/zephyr/projects/skyrim/prj.conf @@ -56,6 +56,7 @@ CONFIG_TACH_NPCX=y # LEDs CONFIG_PLATFORM_EC_LED_COMMON=y CONFIG_PLATFORM_EC_LED_ONOFF_STATES=y +CONFIG_PLATFORM_EC_LED_PWM=y # Lid switch CONFIG_PLATFORM_EC_LID_ANGLE=y diff --git a/zephyr/projects/skyrim/pwm.dts b/zephyr/projects/skyrim/pwm.dts deleted file mode 100644 index 4c52b04859..0000000000 --- a/zephyr/projects/skyrim/pwm.dts +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2021 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -/ { - named-pwms { - compatible = "named-pwms"; - - led_charge: ec_pwm_led_chrg_l { - pwms = <&pwm2 0 PWM_POLARITY_NORMAL>; - frequency = <100>; - }; - led_full: ec_pwm_led_full_l { - pwms = <&pwm3 0 PWM_POLARITY_NORMAL>; - frequency = <100>; - }; - }; -}; - -/* Fan control */ - -/* Amber charging LED */ -&pwm2 { - status = "okay"; - clock-bus = "NPCX_CLOCK_BUS_LFCLK"; -}; - -/* Green full LED */ -&pwm3 { - status = "okay"; - clock-bus = "NPCX_CLOCK_BUS_LFCLK"; -}; diff --git a/zephyr/projects/skyrim/pwm_leds.dts b/zephyr/projects/skyrim/pwm_leds.dts new file mode 100644 index 0000000000..951edb0f09 --- /dev/null +++ b/zephyr/projects/skyrim/pwm_leds.dts @@ -0,0 +1,46 @@ +/* Copyright 2022 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/ { + pwmleds { + compatible = "pwm-leds"; + pwm_led0: pwm_led_0 { + pwms = <&pwm2 0 PWM_POLARITY_INVERTED + &pwm3 0 PWM_POLARITY_INVERTED>; + }; + }; + + cros-pwmleds { + compatible = "cros-ec,pwm-leds"; + + leds = <&pwm_led0>; + frequency = <100>; + + color-map-white = < 0 100>; + color-map-amber = <100 0>; + + brightness-range = <0 0 0 0 255 255>; + + #address-cells = <1>; + #size-cells = <0>; + + pwm_led_0@0 { + reg = <0>; + ec-led-name = "EC_LED_ID_BATTERY_LED"; + }; + }; +}; + +/* Amber "battery charging" LED */ +&pwm2 { + status = "okay"; + clock-bus = "NPCX_CLOCK_BUS_LFCLK"; +}; + +/* White "battery full" LED */ +&pwm3 { + status = "okay"; + clock-bus = "NPCX_CLOCK_BUS_LFCLK"; +}; |