diff options
Diffstat (limited to 'drivers/rtc/rtc-rv3029c2.c')
-rw-r--r-- | drivers/rtc/rtc-rv3029c2.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/rtc/rtc-rv3029c2.c b/drivers/rtc/rtc-rv3029c2.c index f8ee8ad7825e..5032c24ec159 100644 --- a/drivers/rtc/rtc-rv3029c2.c +++ b/drivers/rtc/rtc-rv3029c2.c | |||
@@ -395,9 +395,8 @@ static int rv3029c2_probe(struct i2c_client *client, | |||
395 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_EMUL)) | 395 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_EMUL)) |
396 | return -ENODEV; | 396 | return -ENODEV; |
397 | 397 | ||
398 | rtc = rtc_device_register(client->name, | 398 | rtc = devm_rtc_device_register(&client->dev, client->name, |
399 | &client->dev, &rv3029c2_rtc_ops, | 399 | &rv3029c2_rtc_ops, THIS_MODULE); |
400 | THIS_MODULE); | ||
401 | 400 | ||
402 | if (IS_ERR(rtc)) | 401 | if (IS_ERR(rtc)) |
403 | return PTR_ERR(rtc); | 402 | return PTR_ERR(rtc); |
@@ -407,23 +406,14 @@ static int rv3029c2_probe(struct i2c_client *client, | |||
407 | rc = rv3029c2_i2c_get_sr(client, buf); | 406 | rc = rv3029c2_i2c_get_sr(client, buf); |
408 | if (rc < 0) { | 407 | if (rc < 0) { |
409 | dev_err(&client->dev, "reading status failed\n"); | 408 | dev_err(&client->dev, "reading status failed\n"); |
410 | goto exit_unregister; | 409 | return rc; |
411 | } | 410 | } |
412 | 411 | ||
413 | return 0; | 412 | return 0; |
414 | |||
415 | exit_unregister: | ||
416 | rtc_device_unregister(rtc); | ||
417 | |||
418 | return rc; | ||
419 | } | 413 | } |
420 | 414 | ||
421 | static int rv3029c2_remove(struct i2c_client *client) | 415 | static int rv3029c2_remove(struct i2c_client *client) |
422 | { | 416 | { |
423 | struct rtc_device *rtc = i2c_get_clientdata(client); | ||
424 | |||
425 | rtc_device_unregister(rtc); | ||
426 | |||
427 | return 0; | 417 | return 0; |
428 | } | 418 | } |
429 | 419 | ||