leds: Convert from struct class_device to struct device

Convert the LEDs class from struct class_device to struct device
since class_device is scheduled for removal.

Signed-off-by: Richard Purdie <rpurdie@rpsys.net>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>

+59 -65
+22 -27
drivers/leds/led-class.c
··· 2 2 * LED Class Core 3 3 * 4 4 * Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu> 5 - * Copyright (C) 2005-2006 Richard Purdie <rpurdie@openedhand.com> 5 + * Copyright (C) 2005-2007 Richard Purdie <rpurdie@openedhand.com> 6 6 * 7 7 * This program is free software; you can redistribute it and/or modify 8 8 * it under the terms of the GNU General Public License version 2 as ··· 24 24 25 25 static struct class *leds_class; 26 26 27 - static ssize_t led_brightness_show(struct class_device *dev, char *buf) 27 + static ssize_t led_brightness_show(struct device *dev, 28 + struct device_attribute *attr, char *buf) 28 29 { 29 - struct led_classdev *led_cdev = class_get_devdata(dev); 30 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 30 31 ssize_t ret = 0; 31 32 32 33 /* no lock needed for this */ ··· 37 36 return ret; 38 37 } 39 38 40 - static ssize_t led_brightness_store(struct class_device *dev, 41 - const char *buf, size_t size) 39 + static ssize_t led_brightness_store(struct device *dev, 40 + struct device_attribute *attr, const char *buf, size_t size) 42 41 { 43 - struct led_classdev *led_cdev = class_get_devdata(dev); 42 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 44 43 ssize_t ret = -EINVAL; 45 44 char *after; 46 45 unsigned long state = simple_strtoul(buf, &after, 10); ··· 57 56 return ret; 58 57 } 59 58 60 - static CLASS_DEVICE_ATTR(brightness, 0644, led_brightness_show, 61 - led_brightness_store); 59 + static DEVICE_ATTR(brightness, 0644, led_brightness_show, led_brightness_store); 62 60 #ifdef CONFIG_LEDS_TRIGGERS 63 - static CLASS_DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); 61 + static DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); 64 62 #endif 65 63 66 64 /** ··· 93 93 { 94 94 int rc; 95 95 96 - led_cdev->class_dev = class_device_create(leds_class, NULL, 0, 97 - parent, "%s", led_cdev->name); 98 - if (unlikely(IS_ERR(led_cdev->class_dev))) 99 - return PTR_ERR(led_cdev->class_dev); 96 + led_cdev->dev = device_create(leds_class, parent, 0, "%s", 97 + led_cdev->name); 98 + if (unlikely(IS_ERR(led_cdev->dev))) 99 + return PTR_ERR(led_cdev->dev); 100 100 101 - class_set_devdata(led_cdev->class_dev, led_cdev); 101 + dev_set_drvdata(led_cdev->dev, led_cdev); 102 102 103 103 /* register the attributes */ 104 - rc = class_device_create_file(led_cdev->class_dev, 105 - &class_device_attr_brightness); 104 + rc = device_create_file(led_cdev->dev, &dev_attr_brightness); 106 105 if (rc) 107 106 goto err_out; 108 107 ··· 113 114 #ifdef CONFIG_LEDS_TRIGGERS 114 115 rwlock_init(&led_cdev->trigger_lock); 115 116 116 - rc = class_device_create_file(led_cdev->class_dev, 117 - &class_device_attr_trigger); 117 + rc = device_create_file(led_cdev->dev, &dev_attr_trigger); 118 118 if (rc) 119 119 goto err_out_led_list; 120 120 ··· 121 123 #endif 122 124 123 125 printk(KERN_INFO "Registered led device: %s\n", 124 - led_cdev->class_dev->class_id); 126 + led_cdev->name); 125 127 126 128 return 0; 127 129 128 130 #ifdef CONFIG_LEDS_TRIGGERS 129 131 err_out_led_list: 130 - class_device_remove_file(led_cdev->class_dev, 131 - &class_device_attr_brightness); 132 + device_remove_file(led_cdev->dev, &dev_attr_brightness); 132 133 list_del(&led_cdev->node); 133 134 #endif 134 135 err_out: 135 - class_device_unregister(led_cdev->class_dev); 136 + device_unregister(led_cdev->dev); 136 137 return rc; 137 138 } 138 139 EXPORT_SYMBOL_GPL(led_classdev_register); ··· 144 147 */ 145 148 void led_classdev_unregister(struct led_classdev *led_cdev) 146 149 { 147 - class_device_remove_file(led_cdev->class_dev, 148 - &class_device_attr_brightness); 150 + device_remove_file(led_cdev->dev, &dev_attr_brightness); 149 151 #ifdef CONFIG_LEDS_TRIGGERS 150 - class_device_remove_file(led_cdev->class_dev, 151 - &class_device_attr_trigger); 152 + device_remove_file(led_cdev->dev, &dev_attr_trigger); 152 153 write_lock(&led_cdev->trigger_lock); 153 154 if (led_cdev->trigger) 154 155 led_trigger_set(led_cdev, NULL); 155 156 write_unlock(&led_cdev->trigger_lock); 156 157 #endif 157 158 158 - class_device_unregister(led_cdev->class_dev); 159 + device_unregister(led_cdev->dev); 159 160 160 161 write_lock(&leds_list_lock); 161 162 list_del(&led_cdev->node);
+7 -6
drivers/leds/led-triggers.c
··· 1 1 /* 2 2 * LED Triggers Core 3 3 * 4 - * Copyright 2005-2006 Openedhand Ltd. 4 + * Copyright 2005-2007 Openedhand Ltd. 5 5 * 6 6 * Author: Richard Purdie <rpurdie@openedhand.com> 7 7 * ··· 28 28 static DEFINE_RWLOCK(triggers_list_lock); 29 29 static LIST_HEAD(trigger_list); 30 30 31 - ssize_t led_trigger_store(struct class_device *dev, const char *buf, 32 - size_t count) 31 + ssize_t led_trigger_store(struct device *dev, struct device_attribute *attr, 32 + const char *buf, size_t count) 33 33 { 34 - struct led_classdev *led_cdev = class_get_devdata(dev); 34 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 35 35 char trigger_name[TRIG_NAME_MAX]; 36 36 struct led_trigger *trig; 37 37 size_t len; ··· 67 67 } 68 68 69 69 70 - ssize_t led_trigger_show(struct class_device *dev, char *buf) 70 + ssize_t led_trigger_show(struct device *dev, struct device_attribute *attr, 71 + char *buf) 71 72 { 72 - struct led_classdev *led_cdev = class_get_devdata(dev); 73 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 73 74 struct led_trigger *trig; 74 75 int len = 0; 75 76
+1 -1
drivers/leds/leds-locomo.c
··· 19 19 static void locomoled_brightness_set(struct led_classdev *led_cdev, 20 20 enum led_brightness value, int offset) 21 21 { 22 - struct locomo_dev *locomo_dev = LOCOMO_DEV(led_cdev->class_dev->dev); 22 + struct locomo_dev *locomo_dev = LOCOMO_DEV(led_cdev->dev); 23 23 unsigned long flags; 24 24 25 25 local_irq_save(flags);
+5 -3
drivers/leds/leds.h
··· 13 13 #ifndef __LEDS_H_INCLUDED 14 14 #define __LEDS_H_INCLUDED 15 15 16 + #include <linux/device.h> 16 17 #include <linux/leds.h> 17 18 18 19 static inline void led_set_brightness(struct led_classdev *led_cdev, ··· 38 37 #define led_trigger_set(x, y) do {} while(0) 39 38 #endif 40 39 41 - ssize_t led_trigger_store(struct class_device *dev, const char *buf, 42 - size_t count); 43 - ssize_t led_trigger_show(struct class_device *dev, char *buf); 40 + ssize_t led_trigger_store(struct device *dev, struct device_attribute *attr, 41 + const char *buf, size_t count); 42 + ssize_t led_trigger_show(struct device *dev, struct device_attribute *attr, 43 + char *buf); 44 44 45 45 #endif /* __LEDS_H_INCLUDED */
+23 -26
drivers/leds/ledtrig-timer.c
··· 52 52 mod_timer(&timer_data->timer, jiffies + msecs_to_jiffies(delay)); 53 53 } 54 54 55 - static ssize_t led_delay_on_show(struct class_device *dev, char *buf) 55 + static ssize_t led_delay_on_show(struct device *dev, 56 + struct device_attribute *attr, char *buf) 56 57 { 57 - struct led_classdev *led_cdev = class_get_devdata(dev); 58 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 58 59 struct timer_trig_data *timer_data = led_cdev->trigger_data; 59 60 60 61 sprintf(buf, "%lu\n", timer_data->delay_on); ··· 63 62 return strlen(buf) + 1; 64 63 } 65 64 66 - static ssize_t led_delay_on_store(struct class_device *dev, const char *buf, 67 - size_t size) 65 + static ssize_t led_delay_on_store(struct device *dev, 66 + struct device_attribute *attr, const char *buf, size_t size) 68 67 { 69 - struct led_classdev *led_cdev = class_get_devdata(dev); 68 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 70 69 struct timer_trig_data *timer_data = led_cdev->trigger_data; 71 70 int ret = -EINVAL; 72 71 char *after; ··· 85 84 return ret; 86 85 } 87 86 88 - static ssize_t led_delay_off_show(struct class_device *dev, char *buf) 87 + static ssize_t led_delay_off_show(struct device *dev, 88 + struct device_attribute *attr, char *buf) 89 89 { 90 - struct led_classdev *led_cdev = class_get_devdata(dev); 90 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 91 91 struct timer_trig_data *timer_data = led_cdev->trigger_data; 92 92 93 93 sprintf(buf, "%lu\n", timer_data->delay_off); ··· 96 94 return strlen(buf) + 1; 97 95 } 98 96 99 - static ssize_t led_delay_off_store(struct class_device *dev, const char *buf, 100 - size_t size) 97 + static ssize_t led_delay_off_store(struct device *dev, 98 + struct device_attribute *attr, const char *buf, size_t size) 101 99 { 102 - struct led_classdev *led_cdev = class_get_devdata(dev); 100 + struct led_classdev *led_cdev = dev_get_drvdata(dev); 103 101 struct timer_trig_data *timer_data = led_cdev->trigger_data; 104 102 int ret = -EINVAL; 105 103 char *after; ··· 118 116 return ret; 119 117 } 120 118 121 - static CLASS_DEVICE_ATTR(delay_on, 0644, led_delay_on_show, 122 - led_delay_on_store); 123 - static CLASS_DEVICE_ATTR(delay_off, 0644, led_delay_off_show, 124 - led_delay_off_store); 119 + static DEVICE_ATTR(delay_on, 0644, led_delay_on_show, led_delay_on_store); 120 + static DEVICE_ATTR(delay_off, 0644, led_delay_off_show, led_delay_off_store); 125 121 126 122 static void timer_trig_activate(struct led_classdev *led_cdev) 127 123 { ··· 136 136 timer_data->timer.function = led_timer_function; 137 137 timer_data->timer.data = (unsigned long) led_cdev; 138 138 139 - rc = class_device_create_file(led_cdev->class_dev, 140 - &class_device_attr_delay_on); 141 - if (rc) goto err_out; 142 - rc = class_device_create_file(led_cdev->class_dev, 143 - &class_device_attr_delay_off); 144 - if (rc) goto err_out_delayon; 139 + rc = device_create_file(led_cdev->dev, &dev_attr_delay_on); 140 + if (rc) 141 + goto err_out; 142 + rc = device_create_file(led_cdev->dev, &dev_attr_delay_off); 143 + if (rc) 144 + goto err_out_delayon; 145 145 146 146 return; 147 147 148 148 err_out_delayon: 149 - class_device_remove_file(led_cdev->class_dev, 150 - &class_device_attr_delay_on); 149 + device_remove_file(led_cdev->dev, &dev_attr_delay_on); 151 150 err_out: 152 151 led_cdev->trigger_data = NULL; 153 152 kfree(timer_data); ··· 157 158 struct timer_trig_data *timer_data = led_cdev->trigger_data; 158 159 159 160 if (timer_data) { 160 - class_device_remove_file(led_cdev->class_dev, 161 - &class_device_attr_delay_on); 162 - class_device_remove_file(led_cdev->class_dev, 163 - &class_device_attr_delay_off); 161 + device_remove_file(led_cdev->dev, &dev_attr_delay_on); 162 + device_remove_file(led_cdev->dev, &dev_attr_delay_off); 164 163 del_timer_sync(&timer_data->timer); 165 164 kfree(timer_data); 166 165 }
+1 -2
include/linux/leds.h
··· 16 16 #include <linux/spinlock.h> 17 17 18 18 struct device; 19 - struct class_device; 20 19 /* 21 20 * LED Core 22 21 */ ··· 37 38 void (*brightness_set)(struct led_classdev *led_cdev, 38 39 enum led_brightness brightness); 39 40 40 - struct class_device *class_dev; 41 + struct device *dev; 41 42 struct list_head node; /* LED Device list */ 42 43 char *default_trigger; /* Trigger to use */ 43 44