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