cm: charger: Add support for double backlight displays
* Some devices using AMS AS36xx LEDs controllers are using 2 backlight paths to light the display, mostly on Sony Huashan and Sony Blue board devices * Although most of the displays have interlaced backlights and the half dark path can be hard to see, other displays have a top / bottom path that make half the screen on / off * Control the backlight level of both path if the device does have BACKLIGHT_PATH set, and if present, SECONDARY_BACKLIGHT_PATH * Leave the HEALTD_BACKLIGHT_LEVEL config accessible to override the default 100 / 255 brightness used in healthd Change-Id: If774c3e66acedddf7ba676581e7c88b7e83a66b6 Signed-off-by: Adrian DC <radian.dc@gmail.com>
This commit is contained in:
parent
7595620750
commit
cadd0be089
@ -7,6 +7,15 @@ LOCAL_CFLAGS := -Werror
|
|||||||
LOCAL_C_INCLUDES := \
|
LOCAL_C_INCLUDES := \
|
||||||
system/core/healthd \
|
system/core/healthd \
|
||||||
bootable/recovery
|
bootable/recovery
|
||||||
|
ifneq ($(BACKLIGHT_PATH),)
|
||||||
|
LOCAL_CFLAGS += -DHEALTHD_BACKLIGHT_PATH=\"$(BACKLIGHT_PATH)\"
|
||||||
|
endif
|
||||||
|
ifneq ($(SECONDARY_BACKLIGHT_PATH),)
|
||||||
|
LOCAL_CFLAGS += -DHEALTHD_SECONDARY_BACKLIGHT_PATH=\"$(SECONDARY_BACKLIGHT_PATH)\"
|
||||||
|
endif
|
||||||
|
ifneq ($(HEALTHD_BACKLIGHT_LEVEL),)
|
||||||
|
LOCAL_CFLAGS += -DHEALTHD_BACKLIGHT_LEVEL=$(HEALTHD_BACKLIGHT_LEVEL)
|
||||||
|
endif
|
||||||
include $(BUILD_STATIC_LIBRARY)
|
include $(BUILD_STATIC_LIBRARY)
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
@ -365,9 +365,49 @@ void healthd_board_mode_charger_battery_update(
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HEALTHD_BACKLIGHT_PATH
|
||||||
|
#ifndef HEALTHD_BACKLIGHT_LEVEL
|
||||||
|
#define HEALTHD_BACKLIGHT_LEVEL 100
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void healthd_board_mode_charger_set_backlight(bool on)
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
char buffer[10];
|
||||||
|
|
||||||
|
memset(buffer, '\0', sizeof(buffer));
|
||||||
|
fd = open(HEALTHD_BACKLIGHT_PATH, O_RDWR);
|
||||||
|
if (fd < 0) {
|
||||||
|
LOGE("Could not open backlight node : %s\n", strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LOGV("Enabling backlight\n");
|
||||||
|
snprintf(buffer, sizeof(buffer), "%d\n", on ? HEALTHD_BACKLIGHT_LEVEL : 0);
|
||||||
|
if (write(fd, buffer, strlen(buffer)) < 0) {
|
||||||
|
LOGE("Could not write to backlight : %s\n", strerror(errno));
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
#ifdef HEALTHD_SECONDARY_BACKLIGHT_PATH
|
||||||
|
fd = open(HEALTHD_SECONDARY_BACKLIGHT_PATH, O_RDWR);
|
||||||
|
if (fd < 0) {
|
||||||
|
LOGE("Could not open second backlight node : %s\n", strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LOGV("Enabling secondary backlight\n");
|
||||||
|
if (write(fd, buffer, strlen(buffer)) < 0) {
|
||||||
|
LOGE("Could not write to second backlight : %s\n", strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
void healthd_board_mode_charger_set_backlight(bool)
|
void healthd_board_mode_charger_set_backlight(bool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void healthd_board_mode_charger_init(void)
|
void healthd_board_mode_charger_init(void)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user