diff options
Diffstat (limited to 'drivers/leds/led-class.c')
| -rw-r--r-- | drivers/leds/led-class.c | 42 | 
1 files changed, 9 insertions, 33 deletions
| diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index 782f95822eab..69e7d86a5143 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c @@ -72,11 +72,14 @@ static ssize_t led_max_brightness_show(struct device *dev,  	return sprintf(buf, "%u\n", led_cdev->max_brightness);  } -static DEVICE_ATTR(brightness, 0644, led_brightness_show, led_brightness_store); -static DEVICE_ATTR(max_brightness, 0444, led_max_brightness_show, NULL); +static struct device_attribute led_class_attrs[] = { +	__ATTR(brightness, 0644, led_brightness_show, led_brightness_store), +	__ATTR(max_brightness, 0644, led_max_brightness_show, NULL),  #ifdef CONFIG_LEDS_TRIGGERS -static DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); +	__ATTR(trigger, 0644, led_trigger_show, led_trigger_store),  #endif +	__ATTR_NULL, +};  /**   * led_classdev_suspend - suspend an led_classdev. @@ -127,18 +130,11 @@ static int led_resume(struct device *dev)   */  int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)  { -	int rc; -  	led_cdev->dev = device_create(leds_class, parent, 0, led_cdev,  				      "%s", led_cdev->name);  	if (IS_ERR(led_cdev->dev))  		return PTR_ERR(led_cdev->dev); -	/* register the attributes */ -	rc = device_create_file(led_cdev->dev, &dev_attr_brightness); -	if (rc) -		goto err_out; -  #ifdef CONFIG_LEDS_TRIGGERS  	init_rwsem(&led_cdev->trigger_lock);  #endif @@ -150,36 +146,18 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev)  	if (!led_cdev->max_brightness)  		led_cdev->max_brightness = LED_FULL; -	rc = device_create_file(led_cdev->dev, &dev_attr_max_brightness); -	if (rc) -		goto err_out_attr_max; -  	led_update_brightness(led_cdev);  #ifdef CONFIG_LEDS_TRIGGERS -	rc = device_create_file(led_cdev->dev, &dev_attr_trigger); -	if (rc) -		goto err_out_led_list; -  	led_trigger_set_default(led_cdev);  #endif -	printk(KERN_INFO "Registered led device: %s\n", +	printk(KERN_DEBUG "Registered led device: %s\n",  			led_cdev->name);  	return 0; - -#ifdef CONFIG_LEDS_TRIGGERS -err_out_led_list: -	device_remove_file(led_cdev->dev, &dev_attr_max_brightness); -#endif -err_out_attr_max: -	device_remove_file(led_cdev->dev, &dev_attr_brightness); -	list_del(&led_cdev->node); -err_out: -	device_unregister(led_cdev->dev); -	return rc;  } +  EXPORT_SYMBOL_GPL(led_classdev_register);  /** @@ -190,10 +168,7 @@ EXPORT_SYMBOL_GPL(led_classdev_register);   */  void led_classdev_unregister(struct led_classdev *led_cdev)  { -	device_remove_file(led_cdev->dev, &dev_attr_max_brightness); -	device_remove_file(led_cdev->dev, &dev_attr_brightness);  #ifdef CONFIG_LEDS_TRIGGERS -	device_remove_file(led_cdev->dev, &dev_attr_trigger);  	down_write(&led_cdev->trigger_lock);  	if (led_cdev->trigger)  		led_trigger_set(led_cdev, NULL); @@ -215,6 +190,7 @@ static int __init leds_init(void)  		return PTR_ERR(leds_class);  	leds_class->suspend = led_suspend;  	leds_class->resume = led_resume; +	leds_class->dev_attrs = led_class_attrs;  	return 0;  } | 
