@@ -159,7 +159,8 @@ static int thingm_init_rgb(struct thingm_rgb *rgb)
159
159
rgb -> red .ldev .brightness_set_blocking = thingm_led_set ;
160
160
rgb -> red .rgb = rgb ;
161
161
162
- err = led_classdev_register (& rgb -> tdev -> hdev -> dev , & rgb -> red .ldev );
162
+ err = devm_led_classdev_register (& rgb -> tdev -> hdev -> dev ,
163
+ & rgb -> red .ldev );
163
164
if (err )
164
165
return err ;
165
166
@@ -171,9 +172,10 @@ static int thingm_init_rgb(struct thingm_rgb *rgb)
171
172
rgb -> green .ldev .brightness_set_blocking = thingm_led_set ;
172
173
rgb -> green .rgb = rgb ;
173
174
174
- err = led_classdev_register (& rgb -> tdev -> hdev -> dev , & rgb -> green .ldev );
175
+ err = devm_led_classdev_register (& rgb -> tdev -> hdev -> dev ,
176
+ & rgb -> green .ldev );
175
177
if (err )
176
- goto unregister_red ;
178
+ return err ;
177
179
178
180
/* Register the blue diode */
179
181
snprintf (rgb -> blue .name , sizeof (rgb -> blue .name ),
@@ -183,28 +185,11 @@ static int thingm_init_rgb(struct thingm_rgb *rgb)
183
185
rgb -> blue .ldev .brightness_set_blocking = thingm_led_set ;
184
186
rgb -> blue .rgb = rgb ;
185
187
186
- err = led_classdev_register (& rgb -> tdev -> hdev -> dev , & rgb -> blue .ldev );
187
- if (err )
188
- goto unregister_green ;
189
-
190
- return 0 ;
191
-
192
- unregister_green :
193
- led_classdev_unregister (& rgb -> green .ldev );
194
-
195
- unregister_red :
196
- led_classdev_unregister (& rgb -> red .ldev );
197
-
188
+ err = devm_led_classdev_register (& rgb -> tdev -> hdev -> dev ,
189
+ & rgb -> blue .ldev );
198
190
return err ;
199
191
}
200
192
201
- static void thingm_remove_rgb (struct thingm_rgb * rgb )
202
- {
203
- led_classdev_unregister (& rgb -> red .ldev );
204
- led_classdev_unregister (& rgb -> green .ldev );
205
- led_classdev_unregister (& rgb -> blue .ldev );
206
- }
207
-
208
193
static int thingm_probe (struct hid_device * hdev , const struct hid_device_id * id )
209
194
{
210
195
struct thingm_device * tdev ;
@@ -259,11 +244,8 @@ static int thingm_probe(struct hid_device *hdev, const struct hid_device_id *id)
259
244
rgb -> tdev = tdev ;
260
245
rgb -> num = tdev -> fwinfo -> first + i ;
261
246
err = thingm_init_rgb (rgb );
262
- if (err ) {
263
- while (-- i >= 0 )
264
- thingm_remove_rgb (tdev -> rgb + i );
247
+ if (err )
265
248
goto stop ;
266
- }
267
249
}
268
250
269
251
return 0 ;
@@ -273,17 +255,6 @@ static int thingm_probe(struct hid_device *hdev, const struct hid_device_id *id)
273
255
return err ;
274
256
}
275
257
276
- static void thingm_remove (struct hid_device * hdev )
277
- {
278
- struct thingm_device * tdev = hid_get_drvdata (hdev );
279
- int i ;
280
-
281
- hid_hw_stop (hdev );
282
-
283
- for (i = 0 ; i < tdev -> fwinfo -> numrgb ; ++ i )
284
- thingm_remove_rgb (tdev -> rgb + i );
285
- }
286
-
287
258
static const struct hid_device_id thingm_table [] = {
288
259
{ HID_USB_DEVICE (USB_VENDOR_ID_THINGM , USB_DEVICE_ID_BLINK1 ) },
289
260
{ }
@@ -293,7 +264,6 @@ MODULE_DEVICE_TABLE(hid, thingm_table);
293
264
static struct hid_driver thingm_driver = {
294
265
.name = "thingm" ,
295
266
.probe = thingm_probe ,
296
- .remove = thingm_remove ,
297
267
.id_table = thingm_table ,
298
268
};
299
269
0 commit comments