diff options
Diffstat (limited to 'drivers/hid/hid-input.c')
| -rw-r--r-- | drivers/hid/hid-input.c | 51 | 
1 files changed, 24 insertions, 27 deletions
| diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index ff1784b5c2a4..f45f856a127f 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -595,13 +595,33 @@ static void hidinput_cleanup_battery(struct hid_device *dev)  	dev->battery = NULL;  } -static void hidinput_update_battery(struct hid_device *dev, int value) +static bool hidinput_update_battery_charge_status(struct hid_device *dev, +						  unsigned int usage, int value) +{ +	switch (usage) { +	case HID_BAT_CHARGING: +		dev->battery_charge_status = value ? +					     POWER_SUPPLY_STATUS_CHARGING : +					     POWER_SUPPLY_STATUS_DISCHARGING; +		return true; +	} + +	return false; +} + +static void hidinput_update_battery(struct hid_device *dev, unsigned int usage, +				    int value)  {  	int capacity;  	if (!dev->battery)  		return; +	if (hidinput_update_battery_charge_status(dev, usage, value)) { +		power_supply_changed(dev->battery); +		return; +	} +  	if (value == 0 || value < dev->battery_min || value > dev->battery_max)  		return; @@ -617,20 +637,6 @@ static void hidinput_update_battery(struct hid_device *dev, int value)  		power_supply_changed(dev->battery);  	}  } - -static bool hidinput_set_battery_charge_status(struct hid_device *dev, -					       unsigned int usage, int value) -{ -	switch (usage) { -	case HID_BAT_CHARGING: -		dev->battery_charge_status = value ? -					     POWER_SUPPLY_STATUS_CHARGING : -					     POWER_SUPPLY_STATUS_DISCHARGING; -		return true; -	} - -	return false; -}  #else  /* !CONFIG_HID_BATTERY_STRENGTH */  static int hidinput_setup_battery(struct hid_device *dev, unsigned report_type,  				  struct hid_field *field, bool is_percentage) @@ -642,14 +648,9 @@ static void hidinput_cleanup_battery(struct hid_device *dev)  {  } -static void hidinput_update_battery(struct hid_device *dev, int value) -{ -} - -static bool hidinput_set_battery_charge_status(struct hid_device *dev, -					       unsigned int usage, int value) +static void hidinput_update_battery(struct hid_device *dev, unsigned int usage, +				    int value)  { -	return false;  }  #endif	/* CONFIG_HID_BATTERY_STRENGTH */ @@ -1515,11 +1516,7 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct  		return;  	if (usage->type == EV_PWR) { -		bool handled = hidinput_set_battery_charge_status(hid, usage->hid, value); - -		if (!handled) -			hidinput_update_battery(hid, value); - +		hidinput_update_battery(hid, usage->hid, value);  		return;  	} | 
