summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Baltieri <fabiobaltieri@google.com>2022-04-04 13:46:33 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-04-07 13:37:36 +0000
commit045778d73461c40cd91b5ae12a071ad374a190f4 (patch)
tree10d1d73f4d70c2a8e881ecd8b3545d98b23a83a7
parente40694df1dfa05596482573483bd4be45954d1cb (diff)
downloadchrome-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.py2
-rw-r--r--zephyr/projects/skyrim/led.c73
-rw-r--r--zephyr/projects/skyrim/prj.conf1
-rw-r--r--zephyr/projects/skyrim/pwm.dts33
-rw-r--r--zephyr/projects/skyrim/pwm_leds.dts46
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";
+};