This allows further improvement of the driver.

Signed-off-by: Alexandre Belloni <[email protected]>
---
 drivers/rtc/rtc-pcf2123.c | 24 +++++++++++++++---------
 1 file changed, 15 insertions(+), 9 deletions(-)

diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
index e8100af789ef..29e09ff57f89 100644
--- a/drivers/rtc/rtc-pcf2123.c
+++ b/drivers/rtc/rtc-pcf2123.c
@@ -411,14 +411,9 @@ static int pcf2123_probe(struct spi_device *spi)
                        (spi->max_speed_hz + 500) / 1000);
 
        /* Finalize the initialization */
-       rtc = devm_rtc_device_register(&spi->dev, pcf2123_driver.driver.name,
-                       &pcf2123_rtc_ops, THIS_MODULE);
-
-       if (IS_ERR(rtc)) {
-               dev_err(&spi->dev, "failed to register.\n");
-               ret = PTR_ERR(rtc);
-               goto kfree_exit;
-       }
+       rtc = devm_rtc_allocate_device(&spi->dev);
+       if (IS_ERR(rtc))
+               return PTR_ERR(rtc);
 
        pdata->rtc = rtc;
 
@@ -438,7 +433,18 @@ static int pcf2123_probe(struct spi_device *spi)
         * support to this driver to generate interrupts more than once
         * per minute.
         */
-       pdata->rtc->uie_unsupported = 1;
+       rtc->uie_unsupported = 1;
+       rtc->ops = &pcf2123_rtc_ops;
+
+       ret = rtc_register_device(rtc);
+       if (ret)
+               return ret;
+
+       if (IS_ERR(rtc)) {
+               dev_err(&spi->dev, "failed to register.\n");
+               ret = PTR_ERR(rtc);
+               goto kfree_exit;
+       }
 
        return 0;
 
-- 
2.21.0

Reply via email to