44 */
55
66#include <linux/delay.h>
7+ #include <linux/devm-helpers.h>
78#include <linux/err.h>
89#include <linux/i2c.h>
910#include <linux/leds.h>
@@ -318,11 +319,12 @@ static int chagall_battery_probe(struct i2c_client *client)
318319
319320 cg -> battery = devm_power_supply_register (& client -> dev , & chagall_battery_desc , & cfg );
320321 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" );
322324
323325 if (power_supply_get_battery_info (cg -> battery , & cg -> batt_info ))
324326 dev_warn (& client -> dev ,
325- "No monitored battery, some properties will be missing\n" );
327+ "no monitored battery, some properties will be missing\n" );
326328
327329 cg -> amber_led .name = "power::amber" ;
328330 cg -> amber_led .max_brightness = 1 ;
@@ -332,7 +334,7 @@ static int chagall_battery_probe(struct i2c_client *client)
332334 ret = devm_led_classdev_register (& client -> dev , & cg -> amber_led );
333335 if (ret )
334336 return dev_err_probe (& client -> dev , ret ,
335- "can't register AMBER LED\n" );
337+ "failed to register amber LED\n" );
336338
337339 cg -> white_led .name = "power::white" ;
338340 cg -> white_led .max_brightness = 1 ;
@@ -342,27 +344,22 @@ static int chagall_battery_probe(struct i2c_client *client)
342344 ret = devm_led_classdev_register (& client -> dev , & cg -> white_led );
343345 if (ret )
344346 return dev_err_probe (& client -> dev , ret ,
345- "can't register WHITE LED\n" );
347+ "failed to register white LED\n" );
346348
347349 led_set_brightness (& cg -> amber_led , LED_OFF );
348350 led_set_brightness (& cg -> white_led , LED_OFF );
349351
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+
351357 schedule_delayed_work (& cg -> poll_work ,
352358 msecs_to_jiffies (CHAGALL_BATTERY_DATA_REFRESH ));
353359
354360 return 0 ;
355361}
356362
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-
366363static int __maybe_unused chagall_battery_suspend (struct device * dev )
367364{
368365 struct i2c_client * client = to_i2c_client (dev );
@@ -400,7 +397,6 @@ static struct i2c_driver chagall_battery_driver = {
400397 .of_match_table = chagall_match ,
401398 },
402399 .probe_new = chagall_battery_probe ,
403- .remove = chagall_battery_remove ,
404400};
405401module_i2c_driver (chagall_battery_driver );
406402
0 commit comments