summaryrefslogtreecommitdiff
path: root/board/strago/led.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/strago/led.c')
-rw-r--r--board/strago/led.c206
1 files changed, 0 insertions, 206 deletions
diff --git a/board/strago/led.c b/board/strago/led.c
deleted file mode 100644
index cb0c0c313f..0000000000
--- a/board/strago/led.c
+++ /dev/null
@@ -1,206 +0,0 @@
-/* Copyright 2015 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.
- *
- * Power/Battery LED control for Strago
- */
-
-#include "charge_state.h"
-#include "chipset.h"
-#include "console.h"
-#include "extpower.h"
-#include "gpio.h"
-#include "hooks.h"
-#include "led_common.h"
-#include "pwm.h"
-#include "registers.h"
-#include "util.h"
-
-#define CPRINTF(format, args...) cprintf(CC_PWM, format, ## args)
-#define CPRINTS(format, args...) cprints(CC_PWM, format, ## args)
-
-#define LED_TOTAL_TICKS 16
-#define LED_ON_TICKS 4
-
-static int led_debug;
-
-const enum ec_led_id supported_led_ids[] = {
- EC_LED_ID_POWER_LED, EC_LED_ID_BATTERY_LED};
-const int supported_led_ids_count = ARRAY_SIZE(supported_led_ids);
-
-enum led_color {
- LED_OFF = 0,
- LED_RED,
- LED_AMBER,
- LED_GREEN,
-
- /* Number of colors, not a color itself */
- LED_COLOR_COUNT
-};
-
-/* Brightness vs. color, in the order of off, red, amber, and green */
-static const uint8_t color_brightness[LED_COLOR_COUNT][3] = {
- /* {Red, Blue, Green}, */
- [LED_OFF] = { 0, 0, 0},
- [LED_RED] = {100, 0, 0},
- [LED_AMBER] = { 75, 0, 10},
- [LED_GREEN] = { 0, 0, 100},
-};
-
-/**
- * Set LED color
- *
- * @param color Enumerated color value
- */
-static void set_color(enum led_color color)
-{
- pwm_set_duty(PWM_CH_LED_RED, color_brightness[color][0]);
- pwm_set_duty(PWM_CH_LED_BLUE, color_brightness[color][1]);
- pwm_set_duty(PWM_CH_LED_GREEN, color_brightness[color][2]);
-}
-
-void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
-{
- brightness_range[EC_LED_COLOR_RED] = 100;
- brightness_range[EC_LED_COLOR_BLUE] = 100;
- brightness_range[EC_LED_COLOR_GREEN] = 100;
-}
-
-int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
-{
- pwm_set_duty(PWM_CH_LED_RED, brightness[EC_LED_COLOR_RED]);
- pwm_set_duty(PWM_CH_LED_BLUE, brightness[EC_LED_COLOR_BLUE]);
- pwm_set_duty(PWM_CH_LED_GREEN, brightness[EC_LED_COLOR_GREEN]);
- return EC_SUCCESS;
-}
-
-static void strago_led_set_power(void)
-{
- static int power_ticks;
- static int previous_state_suspend;
-
- power_ticks++;
-
- if (chipset_in_state(CHIPSET_STATE_SUSPEND)) {
- /* Reset ticks if entering suspend so LED turns amber
- * as soon as possible. */
- if (!previous_state_suspend)
- power_ticks = 0;
-
- /* Blink once every four seconds. */
- set_color(
- (power_ticks % LED_TOTAL_TICKS) < LED_ON_TICKS ?
- LED_AMBER : LED_OFF);
-
- previous_state_suspend = 1;
- return;
- }
-
- previous_state_suspend = 0;
-
- if (chipset_in_state(CHIPSET_STATE_ANY_OFF))
- set_color(LED_OFF);
- else if (chipset_in_state(CHIPSET_STATE_ON))
- set_color(LED_GREEN);
-}
-
-static void strago_led_set_battery(void)
-{
- static int battery_ticks;
-
- battery_ticks++;
-
- switch (charge_get_state()) {
- case PWR_STATE_CHARGE:
- set_color(LED_AMBER);
- break;
- case PWR_STATE_ERROR:
- set_color(LED_RED);
- break;
- case PWR_STATE_CHARGE_NEAR_FULL:
- case PWR_STATE_IDLE: /* External power connected in IDLE. */
- set_color(LED_GREEN);
- break;
- default:
- /* Other states don't alter LED behavior */
- break;
- }
-}
-
-static void led_init(void)
-{
- /*
- * Enable PWMs and set to 0% duty cycle. If they're disabled,
- * seems to ground the pins instead of letting them float.
- */
- pwm_enable(PWM_CH_LED_RED, 1);
- pwm_enable(PWM_CH_LED_GREEN, 1);
- pwm_enable(PWM_CH_LED_BLUE, 1);
-
- set_color(LED_OFF);
-}
-DECLARE_HOOK(HOOK_INIT, led_init, HOOK_PRIO_DEFAULT);
-
-/**
- * Called by hook task every 250 ms
- */
-static void led_tick(void)
-{
- if (led_debug)
- return;
-
- if (extpower_is_present()) {
- if (led_auto_control_is_enabled(EC_LED_ID_BATTERY_LED)) {
- strago_led_set_battery();
- return;
- }
- } else if (led_auto_control_is_enabled(EC_LED_ID_POWER_LED)) {
- strago_led_set_power();
- return;
- }
-
- set_color(LED_OFF);
-}
-DECLARE_HOOK(HOOK_TICK, led_tick, HOOK_PRIO_DEFAULT);
-
-static void dump_pwm_channels(void)
-{
- int ch;
- for (ch = 0; ch < 4; ch++) {
- CPRINTF("channel = %d\n", ch);
- CPRINTF("0x%04X 0x%04X 0x%04X\n",
- MEC1322_PWM_CFG(ch),
- MEC1322_PWM_ON(ch),
- MEC1322_PWM_OFF(ch));
- }
-}
-/******************************************************************/
-/* Console commands */
-static int command_led_color(int argc, char **argv)
-{
- if (argc > 1) {
- if (!strcasecmp(argv[1], "debug")) {
- led_debug ^= 1;
- CPRINTF("led_debug = %d\n", led_debug);
- } else if (!strcasecmp(argv[1], "off")) {
- set_color(LED_OFF);
- } else if (!strcasecmp(argv[1], "red")) {
- set_color(LED_RED);
- } else if (!strcasecmp(argv[1], "green")) {
- set_color(LED_GREEN);
- } else if (!strcasecmp(argv[1], "amber")) {
- set_color(LED_AMBER);
- } else {
- /* maybe handle charger_discharge_on_ac() too? */
- return EC_ERROR_PARAM1;
- }
- }
-
- if (led_debug == 1)
- dump_pwm_channels();
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(ledcolor, command_led_color,
- "[debug|red|green|amber|off]",
- "Change LED color");
-