|
@@ -21,6 +21,8 @@
|
|
|
static void power_supply_update_bat_leds(struct power_supply *psy)
|
|
|
{
|
|
|
union power_supply_propval status;
|
|
|
+ unsigned long delay_on = 0;
|
|
|
+ unsigned long delay_off = 0;
|
|
|
|
|
|
if (psy->get_property(psy, POWER_SUPPLY_PROP_STATUS, &status))
|
|
|
return;
|
|
@@ -32,16 +34,22 @@ static void power_supply_update_bat_leds(struct power_supply *psy)
|
|
|
led_trigger_event(psy->charging_full_trig, LED_FULL);
|
|
|
led_trigger_event(psy->charging_trig, LED_OFF);
|
|
|
led_trigger_event(psy->full_trig, LED_FULL);
|
|
|
+ led_trigger_event(psy->charging_blink_full_solid_trig,
|
|
|
+ LED_FULL);
|
|
|
break;
|
|
|
case POWER_SUPPLY_STATUS_CHARGING:
|
|
|
led_trigger_event(psy->charging_full_trig, LED_FULL);
|
|
|
led_trigger_event(psy->charging_trig, LED_FULL);
|
|
|
led_trigger_event(psy->full_trig, LED_OFF);
|
|
|
+ led_trigger_blink(psy->charging_blink_full_solid_trig,
|
|
|
+ &delay_on, &delay_off);
|
|
|
break;
|
|
|
default:
|
|
|
led_trigger_event(psy->charging_full_trig, LED_OFF);
|
|
|
led_trigger_event(psy->charging_trig, LED_OFF);
|
|
|
led_trigger_event(psy->full_trig, LED_OFF);
|
|
|
+ led_trigger_event(psy->charging_blink_full_solid_trig,
|
|
|
+ LED_OFF);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -64,15 +72,24 @@ static int power_supply_create_bat_triggers(struct power_supply *psy)
|
|
|
if (!psy->full_trig_name)
|
|
|
goto full_failed;
|
|
|
|
|
|
+ psy->charging_blink_full_solid_trig_name = kasprintf(GFP_KERNEL,
|
|
|
+ "%s-charging-blink-full-solid", psy->name);
|
|
|
+ if (!psy->charging_blink_full_solid_trig_name)
|
|
|
+ goto charging_blink_full_solid_failed;
|
|
|
+
|
|
|
led_trigger_register_simple(psy->charging_full_trig_name,
|
|
|
&psy->charging_full_trig);
|
|
|
led_trigger_register_simple(psy->charging_trig_name,
|
|
|
&psy->charging_trig);
|
|
|
led_trigger_register_simple(psy->full_trig_name,
|
|
|
&psy->full_trig);
|
|
|
+ led_trigger_register_simple(psy->charging_blink_full_solid_trig_name,
|
|
|
+ &psy->charging_blink_full_solid_trig);
|
|
|
|
|
|
goto success;
|
|
|
|
|
|
+charging_blink_full_solid_failed:
|
|
|
+ kfree(psy->full_trig_name);
|
|
|
full_failed:
|
|
|
kfree(psy->charging_trig_name);
|
|
|
charging_failed:
|
|
@@ -88,6 +105,8 @@ static void power_supply_remove_bat_triggers(struct power_supply *psy)
|
|
|
led_trigger_unregister_simple(psy->charging_full_trig);
|
|
|
led_trigger_unregister_simple(psy->charging_trig);
|
|
|
led_trigger_unregister_simple(psy->full_trig);
|
|
|
+ led_trigger_unregister_simple(psy->charging_blink_full_solid_trig);
|
|
|
+ kfree(psy->charging_blink_full_solid_trig_name);
|
|
|
kfree(psy->full_trig_name);
|
|
|
kfree(psy->charging_trig_name);
|
|
|
kfree(psy->charging_full_trig_name);
|