mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
If other i2c traffic happens around the time the light bar is initialized, the i2c bus is wedged. Instead of waiting 500ms in the motion task loop for the tap sequence to complete, set under i2c lock the lp power and init sequence. BRANCH=smaug, samus BUG=chrome-os-partner:45223 TEST=With msleep(500) removed and With lb_power + lb_init + 100ms, I don't see the wedge at TAP sequence. Change-Id: I931eb25bcc5e3237b6c569f2330f72f9fc415964 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/299543 Reviewed-by: Bill Richardson <wfrichar@google.com>
42 lines
1.5 KiB
C
42 lines
1.5 KiB
C
/*
|
|
* Copyright (c) 2014 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.
|
|
*/
|
|
|
|
/* Lightbar IC interface */
|
|
|
|
#ifndef __CROS_EC_LB_COMMON_H
|
|
#define __CROS_EC_LB_COMMON_H
|
|
|
|
#include "ec_commands.h"
|
|
|
|
/* How many (logical) LEDs do we have? */
|
|
#define NUM_LEDS 4
|
|
|
|
/* Set the color of one LED (or all if the LED number is too large) */
|
|
void lb_set_rgb(unsigned int led, int red, int green, int blue);
|
|
/* Get the current color of one LED. Fails if the LED number is too large. */
|
|
int lb_get_rgb(unsigned int led, uint8_t *red, uint8_t *green, uint8_t *blue);
|
|
/* Set the overall brightness level. */
|
|
void lb_set_brightness(unsigned int newval);
|
|
/* Get the overall brighness level. */
|
|
uint8_t lb_get_brightness(void);
|
|
/* Initialize the IC controller registers to sane values. */
|
|
void lb_init(int use_lock);
|
|
/* Disable the LED current off (the IC stays on). */
|
|
void lb_off(void);
|
|
/* Enable the LED current. */
|
|
void lb_on(void);
|
|
/* Fill in the response fields for the LIGHTBAR_CMD_DUMP command. */
|
|
void lb_hc_cmd_dump(struct ec_response_lightbar *out);
|
|
/* Write the IC controller register given by the LIGHTBAR_CMD_REG command. */
|
|
void lb_hc_cmd_reg(const struct ec_params_lightbar *in);
|
|
/*
|
|
* Optional (see config.h). Request that the lightbar power rails be on or off.
|
|
* Returns true if a change to the rails was made, false if it wasn't.
|
|
*/
|
|
int lb_power(int enabled);
|
|
|
|
#endif /* __CROS_EC_LB_COMMON_H */
|