2222static void power_supply_update_bat_leds (struct power_supply * psy )
2323{
2424 union power_supply_propval status ;
25+ unsigned int intensity_green [3 ] = { 0 , 255 , 0 };
26+ unsigned int intensity_orange [3 ] = { 255 , 128 , 0 };
2527
2628 if (power_supply_get_property (psy , POWER_SUPPLY_PROP_STATUS , & status ))
2729 return ;
@@ -36,19 +38,29 @@ static void power_supply_update_bat_leds(struct power_supply *psy)
3638 /* Going from blink to LED on requires a LED_OFF event to stop blink */
3739 led_trigger_event (psy -> charging_blink_full_solid_trig , LED_OFF );
3840 led_trigger_event (psy -> charging_blink_full_solid_trig , LED_FULL );
41+ led_mc_trigger_event (psy -> charging_orange_full_green_trig ,
42+ intensity_green ,
43+ ARRAY_SIZE (intensity_green ),
44+ LED_FULL );
3945 break ;
4046 case POWER_SUPPLY_STATUS_CHARGING :
4147 led_trigger_event (psy -> charging_full_trig , LED_FULL );
4248 led_trigger_event (psy -> charging_trig , LED_FULL );
4349 led_trigger_event (psy -> full_trig , LED_OFF );
4450 led_trigger_blink (psy -> charging_blink_full_solid_trig , 0 , 0 );
51+ led_mc_trigger_event (psy -> charging_orange_full_green_trig ,
52+ intensity_orange ,
53+ ARRAY_SIZE (intensity_orange ),
54+ LED_FULL );
4555 break ;
4656 default :
4757 led_trigger_event (psy -> charging_full_trig , LED_OFF );
4858 led_trigger_event (psy -> charging_trig , LED_OFF );
4959 led_trigger_event (psy -> full_trig , LED_OFF );
5060 led_trigger_event (psy -> charging_blink_full_solid_trig ,
5161 LED_OFF );
62+ led_trigger_event (psy -> charging_orange_full_green_trig ,
63+ LED_OFF );
5264 break ;
5365 }
5466}
@@ -74,6 +86,11 @@ static int power_supply_create_bat_triggers(struct power_supply *psy)
7486 if (!psy -> charging_blink_full_solid_trig_name )
7587 goto charging_blink_full_solid_failed ;
7688
89+ psy -> charging_orange_full_green_trig_name = kasprintf (GFP_KERNEL ,
90+ "%s-charging-orange-full-green" , psy -> desc -> name );
91+ if (!psy -> charging_orange_full_green_trig_name )
92+ goto charging_red_full_green_failed ;
93+
7794 led_trigger_register_simple (psy -> charging_full_trig_name ,
7895 & psy -> charging_full_trig );
7996 led_trigger_register_simple (psy -> charging_trig_name ,
@@ -82,9 +99,13 @@ static int power_supply_create_bat_triggers(struct power_supply *psy)
8299 & psy -> full_trig );
83100 led_trigger_register_simple (psy -> charging_blink_full_solid_trig_name ,
84101 & psy -> charging_blink_full_solid_trig );
102+ led_trigger_register_simple (psy -> charging_orange_full_green_trig_name ,
103+ & psy -> charging_orange_full_green_trig );
85104
86105 return 0 ;
87106
107+ charging_red_full_green_failed :
108+ kfree (psy -> charging_blink_full_solid_trig_name );
88109charging_blink_full_solid_failed :
89110 kfree (psy -> full_trig_name );
90111full_failed :
@@ -101,10 +122,12 @@ static void power_supply_remove_bat_triggers(struct power_supply *psy)
101122 led_trigger_unregister_simple (psy -> charging_trig );
102123 led_trigger_unregister_simple (psy -> full_trig );
103124 led_trigger_unregister_simple (psy -> charging_blink_full_solid_trig );
125+ led_trigger_unregister_simple (psy -> charging_orange_full_green_trig );
104126 kfree (psy -> charging_blink_full_solid_trig_name );
105127 kfree (psy -> full_trig_name );
106128 kfree (psy -> charging_trig_name );
107129 kfree (psy -> charging_full_trig_name );
130+ kfree (psy -> charging_orange_full_green_trig_name );
108131}
109132
110133/* Generated power specific LEDs triggers. */
0 commit comments