diff options
| -rw-r--r-- | drivers/rtc/rtc-s35390a.c | 14 |
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 | ||
| 404 | exit: | 405 | exit: |
| 405 | return err; | 406 | return err; |
| @@ -408,15 +409,12 @@ exit: | |||
| 408 | static int s35390a_remove(struct i2c_client *client) | 409 | static 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 | ||
