SOL Led: Sync set brightness call before blink set
On closed Oberon unit we saw SOL led not blinking due to sync issue of led_set_brightness with blink set. Add led_set_brightness_sync which is a blocking call till blink set. This will enable setting blink smoothly without conflict with brigtness. The patch will also use flush_work before setting brightness so no more delay required before new brigtness setting. Change-Id: I840cb3398b40725bd928816f4871cbdcba6759a1 Signed-off-by: Srihari Sathyanarayana <sriharis@motorola.com> Reviewed-on: https://gerrit.mot.com/2526344 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Vijayakumar Gn <vijaygn@motorola.com> Reviewed-by: Qing Chang <qing@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
1 parent
80770b4416
commit
9381d10c95
1 file changed
+6
-6
@@ -230,8 +230,8 @@ static int sol_led_update_status(const char *led_name, bool blink, unsigned int
|
||||
if(!strcmp(led_name, "charging_full") && !strcmp(led_cdev->name, "charging_full")) {
|
||||
dev_dbg(led_cdev->dev, "POWER_STATUS_FULL\n");
|
||||
led_trigger_event(&sol_led_trigger, LED_OFF);
|
||||
msleep(10); /* MMI_TODO <kernel>: set delay to sync led-trigger with core-led calls */
|
||||
led_set_brightness(led_cdev, brightness);
|
||||
flush_work(&led_cdev->set_brightness_work);
|
||||
led_set_brightness_sync(led_cdev, brightness);
|
||||
if(blink){
|
||||
led_blink_set(led_cdev, &sol_data->charging_delay_on, &sol_data->charging_delay_off);
|
||||
dev_dbg(led_cdev->dev, "SETTING DONE FOR charging full blink delay_on=%lu,delay_off=%lu\n",sol_data->charging_delay_on, sol_data->charging_delay_off);
|
||||
@@ -241,8 +241,8 @@ static int sol_led_update_status(const char *led_name, bool blink, unsigned int
|
||||
if(!strcmp(led_name, "charging") && !strcmp(led_cdev->name, "charging")) {
|
||||
dev_dbg(led_cdev->dev, "POWER_STATUS_CHARGING\n");
|
||||
led_trigger_event(&sol_led_trigger, LED_OFF);
|
||||
msleep(10); /* set delay to sync led-trigger with core-led calls */
|
||||
led_set_brightness(led_cdev, brightness);
|
||||
flush_work(&led_cdev->set_brightness_work);
|
||||
led_set_brightness_sync(led_cdev, brightness);
|
||||
if(blink){
|
||||
led_blink_set(led_cdev, &sol_data->charging_delay_on, &sol_data->charging_delay_off);
|
||||
dev_dbg(led_cdev->dev, "SETTING DONE FOR charging blink delay_on=%lu,delay_off=%lu\n",sol_data->charging_delay_on, sol_data->charging_delay_off);
|
||||
@@ -252,8 +252,8 @@ static int sol_led_update_status(const char *led_name, bool blink, unsigned int
|
||||
if(!strcmp(led_name, "charging_low") && !strcmp(led_cdev->name, "charging_low")) {
|
||||
dev_dbg(led_cdev->dev, "POWER_STATUS_LOW\n");
|
||||
led_trigger_event(&sol_led_trigger, LED_OFF);
|
||||
msleep(10); /* set delay to sync led-trigger with core-led calls */
|
||||
led_set_brightness(led_cdev, brightness);
|
||||
flush_work(&led_cdev->set_brightness_work);
|
||||
led_set_brightness_sync(led_cdev, brightness);
|
||||
if(blink){
|
||||
led_blink_set(led_cdev, &sol_data->low_cap_delay_on, &sol_data->low_cap_delay_off);
|
||||
dev_dbg(led_cdev->dev, "SETTING DONE FOR low cap blink delay_on= %lu,delay_off=%lu\n",sol_data->low_cap_delay_on,sol_data->low_cap_delay_off);
|
||||
|
||||
Reference in new issue
Block a user