4
4
*/
5
5
6
6
#include <linux/delay.h>
7
+ #include <linux/devm-helpers.h>
7
8
#include <linux/err.h>
8
9
#include <linux/i2c.h>
9
10
#include <linux/leds.h>
@@ -318,11 +319,12 @@ static int chagall_battery_probe(struct i2c_client *client)
318
319
319
320
cg -> battery = devm_power_supply_register (& client -> dev , & chagall_battery_desc , & cfg );
320
321
if (IS_ERR (cg -> battery ))
321
- return PTR_ERR (cg -> battery );
322
+ return dev_err_probe (& client -> dev , PTR_ERR (cg -> battery ),
323
+ "failed to register power supply\n" );
322
324
323
325
if (power_supply_get_battery_info (cg -> battery , & cg -> batt_info ))
324
326
dev_warn (& client -> dev ,
325
- "No monitored battery, some properties will be missing\n" );
327
+ "no monitored battery, some properties will be missing\n" );
326
328
327
329
cg -> amber_led .name = "power::amber" ;
328
330
cg -> amber_led .max_brightness = 1 ;
@@ -332,7 +334,7 @@ static int chagall_battery_probe(struct i2c_client *client)
332
334
ret = devm_led_classdev_register (& client -> dev , & cg -> amber_led );
333
335
if (ret )
334
336
return dev_err_probe (& client -> dev , ret ,
335
- "can't register AMBER LED\n" );
337
+ "failed to register amber LED\n" );
336
338
337
339
cg -> white_led .name = "power::white" ;
338
340
cg -> white_led .max_brightness = 1 ;
@@ -342,27 +344,22 @@ static int chagall_battery_probe(struct i2c_client *client)
342
344
ret = devm_led_classdev_register (& client -> dev , & cg -> white_led );
343
345
if (ret )
344
346
return dev_err_probe (& client -> dev , ret ,
345
- "can't register WHITE LED\n" );
347
+ "failed to register white LED\n" );
346
348
347
349
led_set_brightness (& cg -> amber_led , LED_OFF );
348
350
led_set_brightness (& cg -> white_led , LED_OFF );
349
351
350
- INIT_DELAYED_WORK (& cg -> poll_work , chagall_battery_poll_work );
352
+ ret = devm_delayed_work_autocancel (& client -> dev , & cg -> poll_work ,
353
+ chagall_battery_poll_work );
354
+ if (ret )
355
+ return ret ;
356
+
351
357
schedule_delayed_work (& cg -> poll_work ,
352
358
msecs_to_jiffies (CHAGALL_BATTERY_DATA_REFRESH ));
353
359
354
360
return 0 ;
355
361
}
356
362
357
- static int chagall_battery_remove (struct i2c_client * client )
358
- {
359
- struct chagall_battery_data * cg = i2c_get_clientdata (client );
360
-
361
- cancel_delayed_work_sync (& cg -> poll_work );
362
-
363
- return 0 ;
364
- }
365
-
366
363
static int __maybe_unused chagall_battery_suspend (struct device * dev )
367
364
{
368
365
struct i2c_client * client = to_i2c_client (dev );
@@ -400,7 +397,6 @@ static struct i2c_driver chagall_battery_driver = {
400
397
.of_match_table = chagall_match ,
401
398
},
402
399
.probe_new = chagall_battery_probe ,
403
- .remove = chagall_battery_remove ,
404
400
};
405
401
module_i2c_driver (chagall_battery_driver );
406
402
0 commit comments