aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/rtc/rtc-s35390a.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/rtc/rtc-s35390a.c b/drivers/rtc/rtc-s35390a.c
index 8a092325188d..f40afdd0e5f5 100644
--- a/drivers/rtc/rtc-s35390a.c
+++ b/drivers/rtc/rtc-s35390a.c
@@ -338,7 +338,8 @@ static int s35390a_probe(struct i2c_client *client,
338 goto exit; 338 goto exit;
339 } 339 }
340 340
341 s35390a = kzalloc(sizeof(struct s35390a), GFP_KERNEL); 341 s35390a = devm_kzalloc(&client->dev, sizeof(struct s35390a),
342 GFP_KERNEL);
342 if (!s35390a) { 343 if (!s35390a) {
343 err = -ENOMEM; 344 err = -ENOMEM;
344 goto exit; 345 goto exit;
@@ -386,8 +387,9 @@ static int s35390a_probe(struct i2c_client *client,
386 387
387 device_set_wakeup_capable(&client->dev, 1); 388 device_set_wakeup_capable(&client->dev, 1);
388 389
389 s35390a->rtc = rtc_device_register(s35390a_driver.driver.name, 390 s35390a->rtc = devm_rtc_device_register(&client->dev,
390 &client->dev, &s35390a_rtc_ops, THIS_MODULE); 391 s35390a_driver.driver.name,
392 &s35390a_rtc_ops, THIS_MODULE);
391 393
392 if (IS_ERR(s35390a->rtc)) { 394 if (IS_ERR(s35390a->rtc)) {
393 err = PTR_ERR(s35390a->rtc); 395 err = PTR_ERR(s35390a->rtc);
@@ -399,7 +401,6 @@ exit_dummy:
399 for (i = 1; i < 8; ++i) 401 for (i = 1; i < 8; ++i)
400 if (s35390a->client[i]) 402 if (s35390a->client[i])
401 i2c_unregister_device(s35390a->client[i]); 403 i2c_unregister_device(s35390a->client[i]);
402 kfree(s35390a);
403 404
404exit: 405exit:
405 return err; 406 return err;
@@ -408,15 +409,12 @@ exit:
408static int s35390a_remove(struct i2c_client *client) 409static int s35390a_remove(struct i2c_client *client)
409{ 410{
410 unsigned int i; 411 unsigned int i;
411
412 struct s35390a *s35390a = i2c_get_clientdata(client); 412 struct s35390a *s35390a = i2c_get_clientdata(client);
413
413 for (i = 1; i < 8; ++i) 414 for (i = 1; i < 8; ++i)
414 if (s35390a->client[i]) 415 if (s35390a->client[i])
415 i2c_unregister_device(s35390a->client[i]); 416 i2c_unregister_device(s35390a->client[i]);
416 417
417 rtc_device_unregister(s35390a->rtc);
418 kfree(s35390a);
419
420 return 0; 418 return 0;
421} 419}
422 420