summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2019-04-17 15:54:50 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-04-19 14:45:29 -0700
commit9cdb714aa64ba36039b78e6d182e719088406f83 (patch)
treef796228e9f33abe56a6a82a36673962ab7fe07a1
parent8f0c15d3febd94f270f04c103c916ca59eedcdc2 (diff)
downloadchrome-ec-9cdb714aa64ba36039b78e6d182e719088406f83.tar.gz
Flapjack: Use PWM mode of MT6370 to control LED brightness
This patch makes EC use the PWM mode of MT6370 to control the brightness of the LEDs. This makes the colors match the requirements. Current is fixed at 4mA. Brightness is controlled by PWM duty only. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/130197491 BRANCH=none TEST=Verify the colors (amber, off, red, white) match the description. Change-Id: Iacce4cc75af9b278ef77dcb2ececaf67a7631143 Reviewed-on: https://chromium-review.googlesource.com/1572452 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
-rw-r--r--board/flapjack/led.c48
1 files changed, 33 insertions, 15 deletions
diff --git a/board/flapjack/led.c b/board/flapjack/led.c
index 513d45a9b9..2d170e45a4 100644
--- a/board/flapjack/led.c
+++ b/board/flapjack/led.c
@@ -53,18 +53,28 @@ static void led_set_battery(void)
*/
switch (chstate) {
case PWR_STATE_CHARGE:
- red = 0xf5;
- grn = 0xf1;
+ /* RGB(current, duty) = (4mA,10/32) (4mA,1/32) (0mA,) */
+ red = 1;
+ grn = 1;
+ mt6370_led_set_pwm_dim_duty(LED_RED, 9);
+ mt6370_led_set_pwm_dim_duty(LED_GRN, 0);
break;
case PWR_STATE_DISCHARGE:
+ /* RGB(current, duty) = (0mA,) (0mA,) (0mA,) */
break;
case PWR_STATE_ERROR:
- red = 0xff;
+ /* RGB(current, duty) = (4mA,8/32) (0mA,) (0mA,) */
+ red = 1;
+ mt6370_led_set_pwm_dim_duty(LED_RED, 7);
break;
case PWR_STATE_CHARGE_NEAR_FULL:
- red = 0xff;
- grn = 0xff;
- blu = 0xff;
+ /* RGB(current, duty) = (8mA,2/32) (8mA,1/32) (4mA,1/32) */
+ red = 2;
+ grn = 2;
+ blu = 1;
+ mt6370_led_set_pwm_dim_duty(LED_RED, 1);
+ mt6370_led_set_pwm_dim_duty(LED_GRN, 0);
+ mt6370_led_set_pwm_dim_duty(LED_BLU, 0);
break;
default:
/* Other states don't alter LED behavior */
@@ -78,32 +88,40 @@ static void led_set_battery(void)
void led_get_brightness_range(enum ec_led_id led_id, uint8_t *brightness_range)
{
+ /* Current is fixed at 4mA. Brightness is controlled by duty only. */
+ const uint8_t max = MT6370_LED_PWM_DIMDUTY_MAX;
if (led_id != EC_LED_ID_BATTERY_LED)
return;
-
- brightness_range[EC_LED_COLOR_GREEN] = MT6370_LED_BRIGHTNESS_MAX;
- brightness_range[EC_LED_COLOR_RED] = MT6370_LED_BRIGHTNESS_MAX;
- brightness_range[EC_LED_COLOR_BLUE] = MT6370_LED_BRIGHTNESS_MAX;
+ brightness_range[EC_LED_COLOR_GREEN] = max;
+ brightness_range[EC_LED_COLOR_RED] = max;
+ brightness_range[EC_LED_COLOR_BLUE] = max;
}
int led_set_brightness(enum ec_led_id led_id, const uint8_t *brightness)
{
if (led_id != EC_LED_ID_BATTERY_LED)
return EC_ERROR_INVAL;
-
- mt6370_led_set_brightness(LED_GRN, brightness[EC_LED_COLOR_GREEN]);
- mt6370_led_set_brightness(LED_RED, brightness[EC_LED_COLOR_RED]);
- mt6370_led_set_brightness(LED_BLU, brightness[EC_LED_COLOR_BLUE]);
+ /* Current is fixed at 4mA. Brightness is controlled by duty only. */
+ mt6370_led_set_brightness(LED_RED, 1);
+ mt6370_led_set_brightness(LED_GRN, 1);
+ mt6370_led_set_brightness(LED_BLU, 1);
+ mt6370_led_set_pwm_dim_duty(LED_RED, brightness[EC_LED_COLOR_RED]);
+ mt6370_led_set_pwm_dim_duty(LED_GRN, brightness[EC_LED_COLOR_GREEN]);
+ mt6370_led_set_pwm_dim_duty(LED_BLU, brightness[EC_LED_COLOR_BLUE]);
return EC_SUCCESS;
}
static void flapjack_led_init(void)
{
- const enum mt6370_led_dim_mode dim = MT6370_LED_DIM_MODE_REGISTER;
+ const enum mt6370_led_dim_mode dim = MT6370_LED_DIM_MODE_PWM;
+ const enum mt6370_led_pwm_freq freq = MT6370_LED_PWM_FREQ1000;
mt6370_led_set_color(LED_MASK_RED | LED_MASK_GRN | LED_MASK_BLU);
mt6370_led_set_dim_mode(LED_RED, dim);
mt6370_led_set_dim_mode(LED_GRN, dim);
mt6370_led_set_dim_mode(LED_BLU, dim);
+ mt6370_led_set_pwm_frequency(LED_RED, freq);
+ mt6370_led_set_pwm_frequency(LED_GRN, freq);
+ mt6370_led_set_pwm_frequency(LED_BLU, freq);
}
DECLARE_HOOK(HOOK_INIT, flapjack_led_init, HOOK_PRIO_DEFAULT);