diff options
Diffstat (limited to 'drivers/input/input-leds.c')
| -rw-r--r-- | drivers/input/input-leds.c | 16 | 
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/input/input-leds.c b/drivers/input/input-leds.c index 074a65ed17bb..766bf2660116 100644 --- a/drivers/input/input-leds.c +++ b/drivers/input/input-leds.c @@ -71,6 +71,18 @@ static void input_leds_event(struct input_handle *handle, unsigned int type,  {  } +static int input_leds_get_count(struct input_dev *dev) +{ +	unsigned int led_code; +	int count = 0; + +	for_each_set_bit(led_code, dev->ledbit, LED_CNT) +		if (input_led_info[led_code].name) +			count++; + +	return count; +} +  static int input_leds_connect(struct input_handler *handler,  			      struct input_dev *dev,  			      const struct input_device_id *id) @@ -81,7 +93,7 @@ static int input_leds_connect(struct input_handler *handler,  	int led_no;  	int error; -	num_leds = bitmap_weight(dev->ledbit, LED_CNT); +	num_leds = input_leds_get_count(dev);  	if (!num_leds)  		return -ENXIO; @@ -112,7 +124,7 @@ static int input_leds_connect(struct input_handler *handler,  		led->handle = &leds->handle;  		led->code = led_code; -		if (WARN_ON(!input_led_info[led_code].name)) +		if (!input_led_info[led_code].name)  			continue;  		led->cdev.name = kasprintf(GFP_KERNEL, "%s::%s",  |