diff options
author | Tom Marshall <tdm@cyngn.com> | 2016-07-05 13:33:47 -0700 |
---|---|---|
committer | Tom Marshall <tdm@cyngn.com> | 2016-07-06 09:02:11 -0700 |
commit | 5d90c85e977df6dd34443b6050db5c994570f410 (patch) | |
tree | 7400e8995302ab07b8206bc9ad9d48c1dc3144ce | |
parent | dd0866421e41fb2a38e22c8a94ee93e199599ec1 (diff) | |
download | system_core-5d90c85e977df6dd34443b6050db5c994570f410.zip system_core-5d90c85e977df6dd34443b6050db5c994570f410.tar.gz system_core-5d90c85e977df6dd34443b6050db5c994570f410.tar.bz2 |
healthd: Write to blink file to fix LED
Many devices (such as bacon) require touching a blink file before
changes to the LED are committed to hardware.
Jira: CYAN-7689
Change-Id: Ia18a62134d196a636352bcd1af924c407c19d5b4
-rw-r--r-- | healthd/Android.mk | 1 | ||||
-rw-r--r-- | healthd/healthd_mode_charger.cpp | 27 |
2 files changed, 28 insertions, 0 deletions
diff --git a/healthd/Android.mk b/healthd/Android.mk index 7db4ad5..f509ace 100644 --- a/healthd/Android.mk +++ b/healthd/Android.mk @@ -34,6 +34,7 @@ LOCAL_CFLAGS := -D__STDC_LIMIT_MACROS -Werror HEALTHD_CHARGER_DEFINES := RED_LED_PATH \ GREEN_LED_PATH \ BLUE_LED_PATH \ + BLINK_PATH \ BACKLIGHT_PATH \ CHARGING_ENABLED_PATH diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp index d6c31cf..6df9f12 100644 --- a/healthd/healthd_mode_charger.cpp +++ b/healthd/healthd_mode_charger.cpp @@ -82,6 +82,10 @@ char *locale; #define BLUE_LED_PATH "/sys/class/leds/blue/brightness" #endif +#ifndef BLINK_PATH +#define BLINK_PATH "/sys/class/leds/red/device/blink" +#endif + #define LOGE(x...) do { KLOG_ERROR("charger", x); } while (0) #define LOGW(x...) do { KLOG_WARNING("charger", x); } while (0) #define LOGV(x...) do { KLOG_DEBUG("charger", x); } while (0) @@ -214,6 +218,26 @@ static int char_height; static bool minui_inited; #ifndef NO_CHARGER_LED +static int set_blink(int val) +{ + int fd; + char buffer[10]; + + fd = open(BLINK_PATH, O_RDWR); + if (fd < 0) { + LOGE("Could not open blink file\n"); + return -1; + } + snprintf(buffer, sizeof(buffer), "%d\n", val); + if (write(fd, buffer, strlen(buffer)) < 0) { + LOGE("Could not write to blink file\n"); + close(fd); + return -1; + } + close(fd); + return 0; +} + static int set_tricolor_led(int on, int color) { int fd, i; @@ -258,6 +282,9 @@ static int set_battery_soc_leds(int soc) LOGV("soc = %d, set led color 0x%x\n", soc, soc_leds[i].color); } + /* This is required to commit the changes to hardware */ + set_blink(0); + return 0; } #endif |