msm8976-common: Update lights hal
This commit is contained in:
parent
b90fa7c2d8
commit
64a352525a
|
@ -20,7 +20,7 @@ include $(CLEAR_VARS)
|
|||
LOCAL_SRC_FILES := lights.c
|
||||
LOCAL_MODULE_RELATIVE_PATH := hw
|
||||
LOCAL_SHARED_LIBRARIES := liblog
|
||||
LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdlights\"
|
||||
LOCAL_CFLAGS := $(common_flags) -DLOG_TAG=\"qdlights\" -Wall -Werror
|
||||
LOCAL_MODULE := lights.$(TARGET_BOARD_PLATFORM)
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
|
||||
|
|
|
@ -37,33 +37,12 @@
|
|||
|
||||
static pthread_once_t g_init = PTHREAD_ONCE_INIT;
|
||||
static pthread_mutex_t g_lock = PTHREAD_MUTEX_INITIALIZER;
|
||||
static struct light_state_t g_notification;
|
||||
static struct light_state_t g_battery;
|
||||
static int g_attention = 0;
|
||||
|
||||
char const*const RED_LED_FILE
|
||||
= "/sys/class/leds/red/brightness";
|
||||
|
||||
char const*const GREEN_LED_FILE
|
||||
= "/sys/class/leds/green/brightness";
|
||||
|
||||
char const*const BLUE_LED_FILE
|
||||
= "/sys/class/leds/blue/brightness";
|
||||
|
||||
char const*const LCD_FILE
|
||||
char const *const LCD_FILE
|
||||
= "/sys/class/leds/lcd-backlight/brightness";
|
||||
|
||||
char const*const BUTTON_FILE
|
||||
= "/sys/class/leds/button-backlight/brightness";
|
||||
|
||||
char const*const RED_BLINK_FILE
|
||||
= "/sys/class/leds/red/blink";
|
||||
|
||||
char const*const GREEN_BLINK_FILE
|
||||
= "/sys/class/leds/green/blink";
|
||||
|
||||
char const*const BLUE_BLINK_FILE
|
||||
= "/sys/class/leds/blue/blink";
|
||||
char const *const BUTTON_FILE
|
||||
= "/sys/class/sec/sec_touchkey/brightness";
|
||||
|
||||
/**
|
||||
* device methods
|
||||
|
@ -97,12 +76,6 @@ write_int(char const* path, int value)
|
|||
}
|
||||
}
|
||||
|
||||
static int
|
||||
is_lit(struct light_state_t const* state)
|
||||
{
|
||||
return state->color & 0x00ffffff;
|
||||
}
|
||||
|
||||
static int
|
||||
rgb_to_brightness(struct light_state_t const* state)
|
||||
{
|
||||
|
@ -126,126 +99,6 @@ set_light_backlight(struct light_device_t* dev,
|
|||
return err;
|
||||
}
|
||||
|
||||
static int
|
||||
set_speaker_light_locked(struct light_device_t* dev,
|
||||
struct light_state_t const* state)
|
||||
{
|
||||
int red, green, blue;
|
||||
int blink;
|
||||
int onMS, offMS;
|
||||
unsigned int colorRGB;
|
||||
|
||||
if(!dev) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch (state->flashMode) {
|
||||
case LIGHT_FLASH_TIMED:
|
||||
onMS = state->flashOnMS;
|
||||
offMS = state->flashOffMS;
|
||||
break;
|
||||
case LIGHT_FLASH_NONE:
|
||||
default:
|
||||
onMS = 0;
|
||||
offMS = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
colorRGB = state->color;
|
||||
|
||||
#if 0
|
||||
ALOGD("set_speaker_light_locked mode %d, colorRGB=%08X, onMS=%d, offMS=%d\n",
|
||||
state->flashMode, colorRGB, onMS, offMS);
|
||||
#endif
|
||||
|
||||
red = (colorRGB >> 16) & 0xFF;
|
||||
green = (colorRGB >> 8) & 0xFF;
|
||||
blue = colorRGB & 0xFF;
|
||||
|
||||
if (onMS > 0 && offMS > 0) {
|
||||
/*
|
||||
* if ON time == OFF time
|
||||
* use blink mode 2
|
||||
* else
|
||||
* use blink mode 1
|
||||
*/
|
||||
if (onMS == offMS)
|
||||
blink = 2;
|
||||
else
|
||||
blink = 1;
|
||||
} else {
|
||||
blink = 0;
|
||||
}
|
||||
|
||||
if (blink) {
|
||||
if (red) {
|
||||
if (write_int(RED_BLINK_FILE, blink))
|
||||
write_int(RED_LED_FILE, 0);
|
||||
}
|
||||
if (green) {
|
||||
if (write_int(GREEN_BLINK_FILE, blink))
|
||||
write_int(GREEN_LED_FILE, 0);
|
||||
}
|
||||
if (blue) {
|
||||
if (write_int(BLUE_BLINK_FILE, blink))
|
||||
write_int(BLUE_LED_FILE, 0);
|
||||
}
|
||||
} else {
|
||||
write_int(RED_LED_FILE, red);
|
||||
write_int(GREEN_LED_FILE, green);
|
||||
write_int(BLUE_LED_FILE, blue);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
handle_speaker_battery_locked(struct light_device_t* dev)
|
||||
{
|
||||
if (is_lit(&g_battery)) {
|
||||
set_speaker_light_locked(dev, &g_battery);
|
||||
} else {
|
||||
set_speaker_light_locked(dev, &g_notification);
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
set_light_battery(struct light_device_t* dev,
|
||||
struct light_state_t const* state)
|
||||
{
|
||||
pthread_mutex_lock(&g_lock);
|
||||
g_battery = *state;
|
||||
handle_speaker_battery_locked(dev);
|
||||
pthread_mutex_unlock(&g_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
set_light_notifications(struct light_device_t* dev,
|
||||
struct light_state_t const* state)
|
||||
{
|
||||
pthread_mutex_lock(&g_lock);
|
||||
g_notification = *state;
|
||||
handle_speaker_battery_locked(dev);
|
||||
pthread_mutex_unlock(&g_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
set_light_attention(struct light_device_t* dev,
|
||||
struct light_state_t const* state)
|
||||
{
|
||||
pthread_mutex_lock(&g_lock);
|
||||
if (state->flashMode == LIGHT_FLASH_HARDWARE) {
|
||||
g_attention = state->flashOnMS;
|
||||
} else if (state->flashMode == LIGHT_FLASH_NONE) {
|
||||
g_attention = 0;
|
||||
}
|
||||
handle_speaker_battery_locked(dev);
|
||||
pthread_mutex_unlock(&g_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
set_light_buttons(struct light_device_t* dev,
|
||||
struct light_state_t const* state)
|
||||
|
@ -286,14 +139,8 @@ static int open_lights(const struct hw_module_t* module, char const* name,
|
|||
|
||||
if (0 == strcmp(LIGHT_ID_BACKLIGHT, name))
|
||||
set_light = set_light_backlight;
|
||||
else if (0 == strcmp(LIGHT_ID_BATTERY, name))
|
||||
set_light = set_light_battery;
|
||||
else if (0 == strcmp(LIGHT_ID_NOTIFICATIONS, name))
|
||||
set_light = set_light_notifications;
|
||||
else if (0 == strcmp(LIGHT_ID_BUTTONS, name))
|
||||
set_light = set_light_buttons;
|
||||
else if (0 == strcmp(LIGHT_ID_ATTENTION, name))
|
||||
set_light = set_light_attention;
|
||||
else
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -182,17 +182,6 @@ on boot
|
|||
# Allow access for CCID command/response timeout configuration
|
||||
chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout
|
||||
|
||||
# LED
|
||||
chmod 0666 /sys/class/leds/led:torch_0/brightness
|
||||
chmod 0666 /sys/class/leds/led:torch_1/brightness
|
||||
chmod 0666 /sys/class/leds/led:switch/brightness
|
||||
chown system system /sys/class/leds/red/blink
|
||||
chown system system /sys/class/leds/green/blink
|
||||
chown system system /sys/class/leds/blue/blink
|
||||
chown system system /sys/class/leds/red/led_time
|
||||
chown system system /sys/class/leds/green/led_time
|
||||
chown system system /sys/class/leds/blue/led_time
|
||||
|
||||
# Permissions for Camera
|
||||
chown system system /sys/class/camera/rear/isp_core
|
||||
chown system system /sys/class/camera/rear/rear_camfw_full
|
||||
|
@ -228,19 +217,7 @@ on boot
|
|||
chown system system /sys/class/timed_output/vibrator/intensity
|
||||
|
||||
# Permissions for Leds
|
||||
chown system system /sys/class/leds/keyboard-backlight/brightness
|
||||
chown system system /sys/class/leds/lcd-backlight/brightness
|
||||
chown system system /sys/class/leds/button-backlight/brightness
|
||||
chown system system /sys/class/leds/jogball-backlight/brightness
|
||||
chown system system /sys/class/leds/red/brightness
|
||||
chown system system /sys/class/leds/red/blink
|
||||
chown system system /sys/class/leds/green/brightness
|
||||
chown system system /sys/class/leds/green/blink
|
||||
chown system system /sys/class/leds/blue/brightness
|
||||
chown system system /sys/class/leds/blue/blink
|
||||
chown system system /sys/class/leds/red/device/grpfreq
|
||||
chown system system /sys/class/leds/red/device/grppwm
|
||||
chown system system /sys/class/leds/red/device/blink
|
||||
|
||||
# Permissions for LCD
|
||||
chown system system /sys/class/lcd/panel/adaptive_control
|
||||
|
|
Loading…
Reference in New Issue