Commit f8a7c6fe14f556ca8eeddce258cb21392d0c3a2f
1 parent
f9f451d9ca
Exists in
master
and in
20 other branches
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>
Showing 6 changed files with 59 additions and 65 deletions Side-by-side Diff
drivers/leds/led-class.c
... | ... | @@ -2,7 +2,7 @@ |
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 |
9 | 9 | |
... | ... | @@ -24,9 +24,10 @@ |
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 */ |
33 | 34 | |
... | ... | @@ -36,10 +37,10 @@ |
36 | 37 | return ret; |
37 | 38 | } |
38 | 39 | |
39 | -static ssize_t led_brightness_store(struct class_device *dev, | |
40 | - const char *buf, size_t size) | |
40 | +static ssize_t led_brightness_store(struct device *dev, | |
41 | + struct device_attribute *attr, const char *buf, size_t size) | |
41 | 42 | { |
42 | - struct led_classdev *led_cdev = class_get_devdata(dev); | |
43 | + struct led_classdev *led_cdev = dev_get_drvdata(dev); | |
43 | 44 | ssize_t ret = -EINVAL; |
44 | 45 | char *after; |
45 | 46 | unsigned long state = simple_strtoul(buf, &after, 10); |
46 | 47 | |
... | ... | @@ -56,10 +57,9 @@ |
56 | 57 | return ret; |
57 | 58 | } |
58 | 59 | |
59 | -static CLASS_DEVICE_ATTR(brightness, 0644, led_brightness_show, | |
60 | - led_brightness_store); | |
60 | +static DEVICE_ATTR(brightness, 0644, led_brightness_show, led_brightness_store); | |
61 | 61 | #ifdef CONFIG_LEDS_TRIGGERS |
62 | -static CLASS_DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); | |
62 | +static DEVICE_ATTR(trigger, 0644, led_trigger_show, led_trigger_store); | |
63 | 63 | #endif |
64 | 64 | |
65 | 65 | /** |
66 | 66 | |
67 | 67 | |
... | ... | @@ -93,16 +93,15 @@ |
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 | |
... | ... | @@ -114,8 +113,7 @@ |
114 | 113 | #ifdef CONFIG_LEDS_TRIGGERS |
115 | 114 | rwlock_init(&led_cdev->trigger_lock); |
116 | 115 | |
117 | - rc = class_device_create_file(led_cdev->class_dev, | |
118 | - &class_device_attr_trigger); | |
116 | + rc = device_create_file(led_cdev->dev, &dev_attr_trigger); | |
119 | 117 | if (rc) |
120 | 118 | goto err_out_led_list; |
121 | 119 | |
122 | 120 | |
123 | 121 | |
... | ... | @@ -123,18 +121,17 @@ |
123 | 121 | #endif |
124 | 122 | |
125 | 123 | printk(KERN_INFO "Registered led device: %s\n", |
126 | - led_cdev->class_dev->class_id); | |
124 | + led_cdev->name); | |
127 | 125 | |
128 | 126 | return 0; |
129 | 127 | |
130 | 128 | #ifdef CONFIG_LEDS_TRIGGERS |
131 | 129 | err_out_led_list: |
132 | - class_device_remove_file(led_cdev->class_dev, | |
133 | - &class_device_attr_brightness); | |
130 | + device_remove_file(led_cdev->dev, &dev_attr_brightness); | |
134 | 131 | list_del(&led_cdev->node); |
135 | 132 | #endif |
136 | 133 | err_out: |
137 | - class_device_unregister(led_cdev->class_dev); | |
134 | + device_unregister(led_cdev->dev); | |
138 | 135 | return rc; |
139 | 136 | } |
140 | 137 | EXPORT_SYMBOL_GPL(led_classdev_register); |
141 | 138 | |
142 | 139 | |
... | ... | @@ -147,18 +144,16 @@ |
147 | 144 | */ |
148 | 145 | void led_classdev_unregister(struct led_classdev *led_cdev) |
149 | 146 | { |
150 | - class_device_remove_file(led_cdev->class_dev, | |
151 | - &class_device_attr_brightness); | |
147 | + device_remove_file(led_cdev->dev, &dev_attr_brightness); | |
152 | 148 | #ifdef CONFIG_LEDS_TRIGGERS |
153 | - class_device_remove_file(led_cdev->class_dev, | |
154 | - &class_device_attr_trigger); | |
149 | + device_remove_file(led_cdev->dev, &dev_attr_trigger); | |
155 | 150 | write_lock(&led_cdev->trigger_lock); |
156 | 151 | if (led_cdev->trigger) |
157 | 152 | led_trigger_set(led_cdev, NULL); |
158 | 153 | write_unlock(&led_cdev->trigger_lock); |
159 | 154 | #endif |
160 | 155 | |
161 | - class_device_unregister(led_cdev->class_dev); | |
156 | + device_unregister(led_cdev->dev); | |
162 | 157 | |
163 | 158 | write_lock(&leds_list_lock); |
164 | 159 | list_del(&led_cdev->node); |
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 | * |
8 | 8 | |
... | ... | @@ -28,10 +28,10 @@ |
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; |
38 | 38 | |
... | ... | @@ -67,9 +67,10 @@ |
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 |
drivers/leds/leds-locomo.c
... | ... | @@ -19,7 +19,7 @@ |
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); |
drivers/leds/leds.h
... | ... | @@ -13,6 +13,7 @@ |
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, |
... | ... | @@ -37,9 +38,10 @@ |
37 | 38 | #define led_trigger_set(x, y) do {} while(0) |
38 | 39 | #endif |
39 | 40 | |
40 | -ssize_t led_trigger_store(struct class_device *dev, const char *buf, | |
41 | - size_t count); | |
42 | -ssize_t led_trigger_show(struct class_device *dev, char *buf); | |
41 | +ssize_t led_trigger_store(struct device *dev, struct device_attribute *attr, | |
42 | + const char *buf, size_t count); | |
43 | +ssize_t led_trigger_show(struct device *dev, struct device_attribute *attr, | |
44 | + char *buf); | |
43 | 45 | |
44 | 46 | #endif /* __LEDS_H_INCLUDED */ |
drivers/leds/ledtrig-timer.c
... | ... | @@ -52,9 +52,10 @@ |
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); |
61 | 62 | |
... | ... | @@ -62,10 +63,10 @@ |
62 | 63 | return strlen(buf) + 1; |
63 | 64 | } |
64 | 65 | |
65 | -static ssize_t led_delay_on_store(struct class_device *dev, const char *buf, | |
66 | - size_t size) | |
66 | +static ssize_t led_delay_on_store(struct device *dev, | |
67 | + struct device_attribute *attr, const char *buf, size_t size) | |
67 | 68 | { |
68 | - struct led_classdev *led_cdev = class_get_devdata(dev); | |
69 | + struct led_classdev *led_cdev = dev_get_drvdata(dev); | |
69 | 70 | struct timer_trig_data *timer_data = led_cdev->trigger_data; |
70 | 71 | int ret = -EINVAL; |
71 | 72 | char *after; |
72 | 73 | |
... | ... | @@ -84,9 +85,10 @@ |
84 | 85 | return ret; |
85 | 86 | } |
86 | 87 | |
87 | -static ssize_t led_delay_off_show(struct class_device *dev, char *buf) | |
88 | +static ssize_t led_delay_off_show(struct device *dev, | |
89 | + struct device_attribute *attr, char *buf) | |
88 | 90 | { |
89 | - struct led_classdev *led_cdev = class_get_devdata(dev); | |
91 | + struct led_classdev *led_cdev = dev_get_drvdata(dev); | |
90 | 92 | struct timer_trig_data *timer_data = led_cdev->trigger_data; |
91 | 93 | |
92 | 94 | sprintf(buf, "%lu\n", timer_data->delay_off); |
93 | 95 | |
... | ... | @@ -94,10 +96,10 @@ |
94 | 96 | return strlen(buf) + 1; |
95 | 97 | } |
96 | 98 | |
97 | -static ssize_t led_delay_off_store(struct class_device *dev, const char *buf, | |
98 | - size_t size) | |
99 | +static ssize_t led_delay_off_store(struct device *dev, | |
100 | + struct device_attribute *attr, const char *buf, size_t size) | |
99 | 101 | { |
100 | - struct led_classdev *led_cdev = class_get_devdata(dev); | |
102 | + struct led_classdev *led_cdev = dev_get_drvdata(dev); | |
101 | 103 | struct timer_trig_data *timer_data = led_cdev->trigger_data; |
102 | 104 | int ret = -EINVAL; |
103 | 105 | char *after; |
... | ... | @@ -116,10 +118,8 @@ |
116 | 118 | return ret; |
117 | 119 | } |
118 | 120 | |
119 | -static CLASS_DEVICE_ATTR(delay_on, 0644, led_delay_on_show, | |
120 | - led_delay_on_store); | |
121 | -static CLASS_DEVICE_ATTR(delay_off, 0644, led_delay_off_show, | |
122 | - led_delay_off_store); | |
121 | +static DEVICE_ATTR(delay_on, 0644, led_delay_on_show, led_delay_on_store); | |
122 | +static DEVICE_ATTR(delay_off, 0644, led_delay_off_show, led_delay_off_store); | |
123 | 123 | |
124 | 124 | static void timer_trig_activate(struct led_classdev *led_cdev) |
125 | 125 | { |
126 | 126 | |
... | ... | @@ -136,18 +136,17 @@ |
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); |
... | ... | @@ -158,10 +157,8 @@ |
158 | 157 | struct timer_trig_data *timer_data = led_cdev->trigger_data; |
159 | 158 | |
160 | 159 | if (timer_data) { |
161 | - class_device_remove_file(led_cdev->class_dev, | |
162 | - &class_device_attr_delay_on); | |
163 | - class_device_remove_file(led_cdev->class_dev, | |
164 | - &class_device_attr_delay_off); | |
160 | + device_remove_file(led_cdev->dev, &dev_attr_delay_on); | |
161 | + device_remove_file(led_cdev->dev, &dev_attr_delay_off); | |
165 | 162 | del_timer_sync(&timer_data->timer); |
166 | 163 | kfree(timer_data); |
167 | 164 | } |
include/linux/leds.h
... | ... | @@ -16,7 +16,6 @@ |
16 | 16 | #include <linux/spinlock.h> |
17 | 17 | |
18 | 18 | struct device; |
19 | -struct class_device; | |
20 | 19 | /* |
21 | 20 | * LED Core |
22 | 21 | */ |
... | ... | @@ -38,7 +37,7 @@ |
38 | 37 | void (*brightness_set)(struct led_classdev *led_cdev, |
39 | 38 | enum led_brightness brightness); |
40 | 39 | |
41 | - struct class_device *class_dev; | |
40 | + struct device *dev; | |
42 | 41 | struct list_head node; /* LED Device list */ |
43 | 42 | char *default_trigger; /* Trigger to use */ |
44 | 43 |