rtc: rework rtc_register_device() resource management
authorBartosz Golaszewski <bgolaszewski@baylibre.com>
Mon, 9 Nov 2020 16:34:08 +0000 (17:34 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 19 Nov 2020 11:50:12 +0000 (12:50 +0100)
rtc_register_device() is a managed interface but it doesn't use devres
by itself - instead it marks an rtc_device as "registered" and the devres
callback for devm_rtc_allocate_device() takes care of resource release.

This doesn't correspond with the design behind devres where managed
structures should not be aware of being managed. The correct solution
here is to register a separate devres callback for unregistering the
device.

While at it: rename rtc_register_device() to devm_rtc_register_device()
and add it to the list of managed interfaces in devres.rst. This way we
can avoid any potential confusion of driver developers who may expect
there to exist a corresponding unregister function.

Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20201109163409.24301-8-brgl@bgdev.pl
114 files changed:
Documentation/driver-api/driver-model/devres.rst
arch/alpha/kernel/rtc.c
drivers/mfd/menelaus.c
drivers/rtc/class.c
drivers/rtc/rtc-88pm80x.c
drivers/rtc/rtc-88pm860x.c
drivers/rtc/rtc-ab-b5ze-s3.c
drivers/rtc/rtc-ab-eoz9.c
drivers/rtc/rtc-ab3100.c
drivers/rtc/rtc-ab8500.c
drivers/rtc/rtc-abx80x.c
drivers/rtc/rtc-ac100.c
drivers/rtc/rtc-armada38x.c
drivers/rtc/rtc-aspeed.c
drivers/rtc/rtc-at91rm9200.c
drivers/rtc/rtc-at91sam9.c
drivers/rtc/rtc-au1xxx.c
drivers/rtc/rtc-bd70528.c
drivers/rtc/rtc-brcmstb-waketimer.c
drivers/rtc/rtc-cadence.c
drivers/rtc/rtc-cmos.c
drivers/rtc/rtc-coh901331.c
drivers/rtc/rtc-cpcap.c
drivers/rtc/rtc-cros-ec.c
drivers/rtc/rtc-da9052.c
drivers/rtc/rtc-da9063.c
drivers/rtc/rtc-davinci.c
drivers/rtc/rtc-digicolor.c
drivers/rtc/rtc-dm355evm.c
drivers/rtc/rtc-ds1305.c
drivers/rtc/rtc-ds1307.c
drivers/rtc/rtc-ds1343.c
drivers/rtc/rtc-ds1347.c
drivers/rtc/rtc-ds1374.c
drivers/rtc/rtc-ds1511.c
drivers/rtc/rtc-ds1553.c
drivers/rtc/rtc-ds1672.c
drivers/rtc/rtc-ds1685.c
drivers/rtc/rtc-ds1742.c
drivers/rtc/rtc-ds2404.c
drivers/rtc/rtc-ep93xx.c
drivers/rtc/rtc-fsl-ftm-alarm.c
drivers/rtc/rtc-ftrtc010.c
drivers/rtc/rtc-goldfish.c
drivers/rtc/rtc-imx-sc.c
drivers/rtc/rtc-imxdi.c
drivers/rtc/rtc-isl12026.c
drivers/rtc/rtc-isl1208.c
drivers/rtc/rtc-jz4740.c
drivers/rtc/rtc-lpc32xx.c
drivers/rtc/rtc-ls1x.c
drivers/rtc/rtc-m41t80.c
drivers/rtc/rtc-m48t59.c
drivers/rtc/rtc-m48t86.c
drivers/rtc/rtc-mc13xxx.c
drivers/rtc/rtc-meson-vrtc.c
drivers/rtc/rtc-meson.c
drivers/rtc/rtc-mpc5121.c
drivers/rtc/rtc-mrst.c
drivers/rtc/rtc-mt2712.c
drivers/rtc/rtc-mt6397.c
drivers/rtc/rtc-mv.c
drivers/rtc/rtc-mxc.c
drivers/rtc/rtc-mxc_v2.c
drivers/rtc/rtc-omap.c
drivers/rtc/rtc-pcap.c
drivers/rtc/rtc-pcf2123.c
drivers/rtc/rtc-pcf2127.c
drivers/rtc/rtc-pcf85063.c
drivers/rtc/rtc-pcf85363.c
drivers/rtc/rtc-pcf8563.c
drivers/rtc/rtc-pic32.c
drivers/rtc/rtc-pl030.c
drivers/rtc/rtc-pl031.c
drivers/rtc/rtc-pm8xxx.c
drivers/rtc/rtc-ps3.c
drivers/rtc/rtc-r9701.c
drivers/rtc/rtc-rc5t619.c
drivers/rtc/rtc-rk808.c
drivers/rtc/rtc-rp5c01.c
drivers/rtc/rtc-rs5c348.c
drivers/rtc/rtc-rv3028.c
drivers/rtc/rtc-rv3029c2.c
drivers/rtc/rtc-rv3032.c
drivers/rtc/rtc-rv8803.c
drivers/rtc/rtc-rx8010.c
drivers/rtc/rtc-rx8581.c
drivers/rtc/rtc-s35390a.c
drivers/rtc/rtc-sa1100.c
drivers/rtc/rtc-sc27xx.c
drivers/rtc/rtc-sd3078.c
drivers/rtc/rtc-sh.c
drivers/rtc/rtc-sirfsoc.c
drivers/rtc/rtc-snvs.c
drivers/rtc/rtc-st-lpc.c
drivers/rtc/rtc-starfire.c
drivers/rtc/rtc-stk17ta8.c
drivers/rtc/rtc-stmp3xxx.c
drivers/rtc/rtc-sun4v.c
drivers/rtc/rtc-sun6i.c
drivers/rtc/rtc-sunxi.c
drivers/rtc/rtc-tegra.c
drivers/rtc/rtc-test.c
drivers/rtc/rtc-tps6586x.c
drivers/rtc/rtc-tps65910.c
drivers/rtc/rtc-tx4939.c
drivers/rtc/rtc-vr41xx.c
drivers/rtc/rtc-vt8500.c
drivers/rtc/rtc-wilco-ec.c
drivers/rtc/rtc-wm831x.c
drivers/rtc/rtc-xgene.c
drivers/rtc/rtc-zynqmp.c
drivers/rtc/sysfs.c
include/linux/rtc.h

index 5df7ba54a4ba5142de97f9ceb3eef14ad2069917..cd8b6e657b94f1da63e88237b1a6690a9fbbb272 100644 (file)
@@ -414,6 +414,7 @@ RESET
 RTC
   devm_rtc_device_register()
   devm_rtc_allocate_device()
+  devm_rtc_register_device()
   devm_rtc_nvmem_register()
 
 SERDEV
index 1b1d5963ac550b6475a46c9159f42a363e4e0db8..ce3077946e1d941da4ed772eec08c79d8a045b4f 100644 (file)
@@ -216,6 +216,6 @@ alpha_rtc_init(void)
                rtc->ops = &remote_rtc_ops;
 #endif
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 device_initcall(alpha_rtc_init);
index b64d3315a5e13b58521b7d637b9868f89a3ea39c..07e0ca2e467cc2861f04d6ddeeabc02ca5e5cd7e 100644 (file)
@@ -1119,7 +1119,7 @@ static inline void menelaus_rtc_init(struct menelaus_chip *m)
                menelaus_write_reg(MENELAUS_RTC_CTRL, m->rtc_control);
        }
 
-       err = rtc_register_device(m->rtc);
+       err = devm_rtc_register_device(m->rtc);
        if (err) {
                if (alarm) {
                        menelaus_remove_irq_work(MENELAUS_RTCALM_IRQ);
index a99b7d24b77c2b78fd696e99c2fefcfb0eab5ed3..b8a34ee039ad9af16981863f0cee898392e51801 100644 (file)
@@ -321,8 +321,10 @@ static void rtc_device_get_offset(struct rtc_device *rtc)
  *
  * @rtc: the RTC class device to destroy
  */
-static void rtc_device_unregister(struct rtc_device *rtc)
+static void devm_rtc_unregister_device(void *data)
 {
+       struct rtc_device *rtc = data;
+
        mutex_lock(&rtc->ops_lock);
        /*
         * Remove innards of this RTC, then disable it, before
@@ -339,10 +341,7 @@ static void devm_rtc_release_device(struct device *dev, void *res)
 {
        struct rtc_device *rtc = *(struct rtc_device **)res;
 
-       if (rtc->registered)
-               rtc_device_unregister(rtc);
-       else
-               put_device(&rtc->dev);
+       put_device(&rtc->dev);
 }
 
 struct rtc_device *devm_rtc_allocate_device(struct device *dev)
@@ -383,7 +382,7 @@ exit_ida:
 }
 EXPORT_SYMBOL_GPL(devm_rtc_allocate_device);
 
-int __rtc_register_device(struct module *owner, struct rtc_device *rtc)
+int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc)
 {
        struct rtc_wkalrm alrm;
        int err;
@@ -413,7 +412,6 @@ int __rtc_register_device(struct module *owner, struct rtc_device *rtc)
 
        rtc_proc_add_device(rtc);
 
-       rtc->registered = true;
        dev_info(rtc->dev.parent, "registered as %s\n",
                 dev_name(&rtc->dev));
 
@@ -422,9 +420,10 @@ int __rtc_register_device(struct module *owner, struct rtc_device *rtc)
                rtc_hctosys(rtc);
 #endif
 
-       return 0;
+       return devm_add_action_or_reset(rtc->dev.parent,
+                                       devm_rtc_unregister_device, rtc);
 }
-EXPORT_SYMBOL_GPL(__rtc_register_device);
+EXPORT_SYMBOL_GPL(__devm_rtc_register_device);
 
 /**
  * devm_rtc_device_register - resource managed rtc_device_register()
@@ -454,7 +453,7 @@ struct rtc_device *devm_rtc_device_register(struct device *dev,
 
        rtc->ops = ops;
 
-       err = __rtc_register_device(owner, rtc);
+       err = __devm_rtc_register_device(owner, rtc);
        if (err)
                return ERR_PTR(err);
 
index 75779e8501a30a21ca481fd51d53f2f38abaef20..6a3f44cf6ebe593b24c3c364a6e7a94a6bf7a0ce 100644 (file)
@@ -294,7 +294,7 @@ static int pm80x_rtc_probe(struct platform_device *pdev)
        info->rtc_dev->ops = &pm80x_rtc_ops;
        info->rtc_dev->range_max = U32_MAX;
 
-       ret = rtc_register_device(info->rtc_dev);
+       ret = devm_rtc_register_device(info->rtc_dev);
        if (ret)
                goto out_rtc;
 
index c90457d001e953d4615914ae57534e70e630026f..2c809a1a445e88e1ff4a731a5d23b0f52efeb93d 100644 (file)
@@ -307,7 +307,7 @@ static int pm860x_rtc_probe(struct platform_device *pdev)
        info->rtc_dev->ops = &pm860x_rtc_ops;
        info->rtc_dev->range_max = U32_MAX;
 
-       ret = rtc_register_device(info->rtc_dev);
+       ret = devm_rtc_register_device(info->rtc_dev);
        if (ret)
                return ret;
 
index 2370ac0cdb5f89ef164f3916dc51ecabee5029be..6e3e320dc727dbe04dd0d5480a23f7fc1322f77c 100644 (file)
@@ -892,7 +892,7 @@ static int abb5zes3_probe(struct i2c_client *client,
                }
        }
 
-       ret = rtc_register_device(data->rtc);
+       ret = devm_rtc_register_device(data->rtc);
 
 err:
        if (ret && data->irq)
index d690985caa4cfea22c2d1b7796219e7f66e98cf0..b20d8f26dcdb85a7fddc4f2f00e8b4290cf89235 100644 (file)
@@ -420,7 +420,7 @@ static int abeoz9_probe(struct i2c_client *client,
        data->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        data->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       ret = rtc_register_device(data->rtc);
+       ret = devm_rtc_register_device(data->rtc);
        if (ret)
                return ret;
 
index 2ed6def90975d345911ffcd35339dca21864b271..e4fd961e8bf67fc4fd27647987d4c5c6ab2bff8f 100644 (file)
@@ -238,7 +238,7 @@ static int __init ab3100_rtc_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, rtc);
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct platform_driver ab3100_rtc_driver = {
index 3d60f3283f11c37f218f92535d7ac590af6e4f15..b40048871295d12351e48b00e9f9a6014ace4d7b 100644 (file)
@@ -404,7 +404,7 @@ static int ab8500_rtc_probe(struct platform_device *pdev)
        if (err)
                return err;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static int ab8500_rtc_remove(struct platform_device *pdev)
index 803725b3a02c3a4a41e33534118ca3a2d050f1f6..6733bb0df6745afa51c9ce32bc919e20560f80ca 100644 (file)
@@ -851,7 +851,7 @@ static int abx80x_probe(struct i2c_client *client,
                return err;
        }
 
-       return rtc_register_device(priv->rtc);
+       return devm_rtc_register_device(priv->rtc);
 }
 
 static const struct i2c_device_id abx80x_id[] = {
index 29223931aba7216cfdf7df61592fbfea92224ccc..1ddbef99e38f2edccc48cb57f2e5cff11356b09c 100644 (file)
@@ -610,7 +610,7 @@ static int ac100_rtc_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       return rtc_register_device(chip->rtc);
+       return devm_rtc_register_device(chip->rtc);
 }
 
 static int ac100_rtc_remove(struct platform_device *pdev)
index 94d7c22fc4f3a89e0c9530904e93e97b8cc4cac8..807a79c07f084f96b7ae13b2d86ed2626bb57794 100644 (file)
@@ -556,7 +556,7 @@ static __init int armada38x_rtc_probe(struct platform_device *pdev)
 
        rtc->rtc_dev->range_max = U32_MAX;
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 #ifdef CONFIG_PM_SLEEP
index eacdd0637cce278309802add1f08125d1822df05..a93352ed3aec99f94612248a2b4a4d2a145a3615 100644 (file)
@@ -104,7 +104,7 @@ static int aspeed_rtc_probe(struct platform_device *pdev)
        rtc->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_1900;
        rtc->rtc_dev->range_max = 38814989399LL; /* 3199-12-31 23:59:59 */
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 static const struct of_device_id aspeed_rtc_match[] = {
index da24e68adccae556899e1f8f1db893f05ca0a845..fe396d27ebb7108cbbac9eb2053e6a4281ddc056 100644 (file)
@@ -538,7 +538,7 @@ static int __init at91_rtc_probe(struct platform_device *pdev)
 
        rtc->range_min = RTC_TIMESTAMP_BEGIN_1900;
        rtc->range_max = RTC_TIMESTAMP_END_2099;
-       ret = rtc_register_device(rtc);
+       ret = devm_rtc_register_device(rtc);
        if (ret)
                goto err_clk;
 
index e39e89867d293e104eaa6f1d30f4cdf643299395..2216be429ab727452871724543489609706cf45c 100644 (file)
@@ -431,7 +431,7 @@ static int at91_rtc_probe(struct platform_device *pdev)
                dev_warn(&pdev->dev, "%s: SET TIME!\n",
                         dev_name(&rtc->rtcdev->dev));
 
-       return rtc_register_device(rtc->rtcdev);
+       return devm_rtc_register_device(rtc->rtcdev);
 
 err_clk:
        clk_disable_unprepare(rtc->sclk);
index 791bebcb6f47f9822d9ceb6ba471a57af8c0dfab..e6428b27b5d41fe8757caca5bf2ec4feb80ec5d4 100644 (file)
@@ -104,7 +104,7 @@ static int au1xtoy_rtc_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, rtcdev);
 
-       return rtc_register_device(rtcdev);
+       return devm_rtc_register_device(rtcdev);
 }
 
 static struct platform_driver au1xrtc_driver = {
index 4492b770422c8f566a8e10e8fc3820c5a88e771d..17cb67f5bf6e2168b5e45653f4cb585b38b0d61d 100644 (file)
@@ -604,7 +604,7 @@ static int bd70528_probe(struct platform_device *pdev)
                }
        }
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static const struct platform_device_id bd718x7_rtc_id[] = {
index 375a9987a1d68c4ec5b9e1253f2f59aff31aca9e..0366e2ff04ae4de8b05067119961b0a2334864a3 100644 (file)
@@ -252,7 +252,7 @@ static int brcmstb_waketmr_probe(struct platform_device *pdev)
        timer->rtc->ops = &brcmstb_waketmr_ops;
        timer->rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(timer->rtc);
+       ret = devm_rtc_register_device(timer->rtc);
        if (ret)
                goto err_notifier;
 
index 595d5d252850a4a5315bd75fe93abebe3059a2dc..1edf7f16d73af5611f56fdbd4eb850d13caf95f6 100644 (file)
@@ -336,7 +336,7 @@ static int cdns_rtc_probe(struct platform_device *pdev)
        writel(0, crtc->regs + CDNS_RTC_HMR);
        writel(CDNS_RTC_KRTCR_KRTC, crtc->regs + CDNS_RTC_KRTCR);
 
-       ret = rtc_register_device(crtc->rtc_dev);
+       ret = devm_rtc_register_device(crtc->rtc_dev);
        if (ret)
                goto err_disable_wakeup;
 
index 766074c04b53d1be35b4eab3e6c6a721215b3096..83415600185c14f9b4437fba7f346809afbdf75c 100644 (file)
@@ -863,7 +863,7 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
                cmos_rtc.rtc->ops = &cmos_rtc_ops_no_alarm;
        }
 
-       retval = rtc_register_device(cmos_rtc.rtc);
+       retval = devm_rtc_register_device(cmos_rtc.rtc);
        if (retval)
                goto cleanup2;
 
index da59917c9ee8453cb30e6ca6da2aa650c62b239c..168ced87d93ae8eea4d9644c1ec0f25f01506e88 100644 (file)
@@ -203,7 +203,7 @@ static int __init coh901331_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, rtap);
 
-       ret = rtc_register_device(rtap->rtc);
+       ret = devm_rtc_register_device(rtap->rtc);
        if (ret)
                goto out_no_rtc;
 
index 38d576b0c4faa77ee436ca8bd8c337a32a4ba90e..afc8fcba8f8885c15730e47fe0a9d3f681e3cba4 100644 (file)
@@ -301,7 +301,7 @@ static int cpcap_rtc_probe(struct platform_device *pdev)
                /* ignore error and continue without wakeup support */
        }
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 static const struct of_device_id cpcap_rtc_of_match[] = {
index f7343c289cab7347ade05ea4b3fba6a29cae9994..70626793ca6941ba96f5d6451f89b7893161d78a 100644 (file)
@@ -350,7 +350,7 @@ static int cros_ec_rtc_probe(struct platform_device *pdev)
        cros_ec_rtc->rtc->ops = &cros_ec_rtc_ops;
        cros_ec_rtc->rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(cros_ec_rtc->rtc);
+       ret = devm_rtc_register_device(cros_ec_rtc->rtc);
        if (ret)
                return ret;
 
index 58de10da37b1a3a0d4d32a8b07f3eee7a0d470c4..9ca99bd3570223e995f10ff4f93f224adb9ddf7d 100644 (file)
@@ -304,7 +304,7 @@ static int da9052_rtc_probe(struct platform_device *pdev)
        rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rtc->rtc->range_max = RTC_TIMESTAMP_END_2063;
 
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret)
                return ret;
 
index 6f0a3a7111356822b0257320630a11c20a2b6ddd..d4b72a9fa2ba85bf14432fb899575809b9f202ab 100644 (file)
@@ -494,7 +494,7 @@ static int da9063_rtc_probe(struct platform_device *pdev)
                dev_err(&pdev->dev, "Failed to request ALARM IRQ %d: %d\n",
                        irq_alarm, ret);
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 static struct platform_driver da9063_rtc_driver = {
index 73f87a17cdf39a3a67631b8ad9e39fa0b93e54d5..6bef0f2353da4b048d6da8a04ee4fc8a82f6786a 100644 (file)
@@ -484,7 +484,7 @@ static int __init davinci_rtc_probe(struct platform_device *pdev)
 
        device_init_wakeup(&pdev->dev, 0);
 
-       return rtc_register_device(davinci_rtc->rtc);
+       return devm_rtc_register_device(davinci_rtc->rtc);
 }
 
 static int __exit davinci_rtc_remove(struct platform_device *pdev)
index 200d85b01e8bc205825cfd85f8c14b7c226c9c44..4fdfa5b6feb27074cdedef322be62b03e0b6bda7 100644 (file)
@@ -202,7 +202,7 @@ static int __init dc_rtc_probe(struct platform_device *pdev)
        rtc->rtc_dev->ops = &dc_rtc_ops;
        rtc->rtc_dev->range_max = U32_MAX;
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 static const struct of_device_id dc_dt_ids[] = {
index cd947a20843b360f4b09d962a55448eac41b2180..94fb16ac3e0fa30c101f165eaf4890f8a60b2d8e 100644 (file)
@@ -132,7 +132,7 @@ static int dm355evm_rtc_probe(struct platform_device *pdev)
        rtc->ops = &dm355evm_rtc_ops;
        rtc->range_max = U32_MAX;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 /*
index a4e768261b4318c81d5827a9df65fd4aaaa836f4..8c2ab29c3d912c2ab17f1971ce382bf07c995c50 100644 (file)
@@ -694,7 +694,7 @@ static int ds1305_probe(struct spi_device *spi)
        ds1305->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
        ds1305_nvmem_cfg.priv = ds1305;
-       status = rtc_register_device(ds1305->rtc);
+       status = devm_rtc_register_device(ds1305->rtc);
        if (status)
                return status;
 
index 216bc5d9b716e3bf42c5062f4225de73b5564570..183cf7c01364cb8726444771d81a3cdf1aa1cdd0 100644 (file)
@@ -2001,7 +2001,7 @@ static int ds1307_probe(struct i2c_client *client,
        if (err)
                return err;
 
-       err = rtc_register_device(ds1307->rtc);
+       err = devm_rtc_register_device(ds1307->rtc);
        if (err)
                return err;
 
index ea663e24a34c4db38033bbcf0d6ba74cda0a6a68..f14ed6c96437b44d6ccf42651d37edca41fab699 100644 (file)
@@ -408,7 +408,7 @@ static int ds1343_probe(struct spi_device *spi)
                dev_err(&spi->dev,
                        "unable to create sysfs entries for rtc ds1343\n");
 
-       res = rtc_register_device(priv->rtc);
+       res = devm_rtc_register_device(priv->rtc);
        if (res)
                return res;
 
index 7025cf3fb9f8df8e31ecece54df76cd80a8f8a7f..157bf5209ac40bc468717285182f857ade1f0a4c 100644 (file)
@@ -166,7 +166,7 @@ static int ds1347_probe(struct spi_device *spi)
        rtc->range_min = RTC_TIMESTAMP_BEGIN_0000;
        rtc->range_max = RTC_TIMESTAMP_END_9999;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct spi_driver ds1347_driver = {
index 177d870bda0d343ba016f19e2dda24e808a8cb7e..fab79921a7122c1358c257b20035c28ee884bda4 100644 (file)
@@ -508,7 +508,7 @@ static int ds1374_probe(struct i2c_client *client,
        ds1374->rtc->ops = &ds1374_rtc_ops;
        ds1374->rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(ds1374->rtc);
+       ret = devm_rtc_register_device(ds1374->rtc);
        if (ret)
                return ret;
 
index d5f48216e851d86bd2d1951453134a5729696bee..bda8843330821eaaf579501231022008f3651a2f 100644 (file)
@@ -466,7 +466,7 @@ static int ds1511_rtc_probe(struct platform_device *pdev)
 
        pdata->rtc->ops = &ds1511_rtc_ops;
 
-       ret = rtc_register_device(pdata->rtc);
+       ret = devm_rtc_register_device(pdata->rtc);
        if (ret)
                return ret;
 
index bb40ea8b63735ecd7fee545fbd238ec142baf6bb..dbff5b621ef5cc2ce6c09cc62a24104fa329e092 100644 (file)
@@ -295,7 +295,7 @@ static int ds1553_rtc_probe(struct platform_device *pdev)
 
        pdata->rtc->ops = &ds1553_rtc_ops;
 
-       ret = rtc_register_device(pdata->rtc);
+       ret = devm_rtc_register_device(pdata->rtc);
        if (ret)
                return ret;
 
index 9da84df9f15209943948d41d6e9a4ef2a602d12a..630493759d15de4a100472af2b207a631876cf27 100644 (file)
@@ -124,7 +124,7 @@ static int ds1672_probe(struct i2c_client *client,
        rtc->ops = &ds1672_rtc_ops;
        rtc->range_max = U32_MAX;
 
-       err = rtc_register_device(rtc);
+       err = devm_rtc_register_device(rtc);
        if (err)
                return err;
 
index bef588fce26602fdab6d8a8b822e10af4bbb9429..d69c807af29b69cbc3d7f72b16769fad298c7a3d 100644 (file)
@@ -1321,7 +1321,7 @@ ds1685_rtc_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       return rtc_register_device(rtc_dev);
+       return devm_rtc_register_device(rtc_dev);
 }
 
 /**
index 39c6c3a85b347f95b363ffde3040fced2f948b06..13d45c697da68ee7b814d43537547c6e568ab1b4 100644 (file)
@@ -191,7 +191,7 @@ static int ds1742_rtc_probe(struct platform_device *pdev)
 
        rtc->ops = &ds1742_rtc_ops;
 
-       ret = rtc_register_device(rtc);
+       ret = devm_rtc_register_device(rtc);
        if (ret)
                return ret;
 
index 9df0c44512b8acb10b3c4d599775eeea65402d5d..0480f592307e9a56f00959511a27f12ac79a6ce5 100644 (file)
@@ -234,7 +234,7 @@ static int rtc_probe(struct platform_device *pdev)
        chip->rtc->ops = &ds2404_rtc_ops;
        chip->rtc->range_max = U32_MAX;
 
-       retval = rtc_register_device(chip->rtc);
+       retval = devm_rtc_register_device(chip->rtc);
        if (retval)
                return retval;
 
index 8ec9ea1ca72e1913d3789fc664eda0e417a249e3..9a5a15cbcd9b78ae32d70015207be7a6fdb86987 100644 (file)
@@ -145,7 +145,7 @@ static int ep93xx_rtc_probe(struct platform_device *pdev)
        if (err)
                return err;
 
-       return rtc_register_device(ep93xx_rtc->rtc);
+       return devm_rtc_register_device(ep93xx_rtc->rtc);
 }
 
 static struct platform_driver ep93xx_rtc_driver = {
index 48d3b38ea34800cfa378079192d1f94277d26386..57cc09d0a8067fd42656903d9600758ed61e89f2 100644 (file)
@@ -290,7 +290,7 @@ static int ftm_rtc_probe(struct platform_device *pdev)
        if (ret)
                dev_err(&pdev->dev, "failed to enable irq wake\n");
 
-       ret = rtc_register_device(rtc->rtc_dev);
+       ret = devm_rtc_register_device(rtc->rtc_dev);
        if (ret) {
                dev_err(&pdev->dev, "can't register rtc device\n");
                return ret;
index 0919f7dc94a347d7dccd0f80ba2c3035a6080141..ad3add5db4c82d493aa84b09c828e170ddae95ce 100644 (file)
@@ -176,7 +176,7 @@ static int ftrtc010_rtc_probe(struct platform_device *pdev)
        if (unlikely(ret))
                return ret;
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 static int ftrtc010_rtc_remove(struct platform_device *pdev)
index 6349d2cd3680559caf8217def01db2582e036770..7ab95d05264402b74dd411befc7d639f3d51d828 100644 (file)
@@ -194,7 +194,7 @@ static int goldfish_rtc_probe(struct platform_device *pdev)
        if (err)
                return err;
 
-       return rtc_register_device(rtcdrv->rtc);
+       return devm_rtc_register_device(rtcdrv->rtc);
 }
 
 static const struct of_device_id goldfish_rtc_of_match[] = {
index a5f59e6f862e017d3ed81b962941f31f5f11f733..cc9fbab499994e901aa341653656ed7db7057987 100644 (file)
@@ -166,7 +166,7 @@ static int imx_sc_rtc_probe(struct platform_device *pdev)
        imx_sc_rtc->range_min = 0;
        imx_sc_rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(imx_sc_rtc);
+       ret = devm_rtc_register_device(imx_sc_rtc);
        if (ret)
                return ret;
 
index 8d141d8a5490bb5b912114fd8efcde0af907aa53..c2692da74e098e43c3d7aa4594af663ce572b147 100644 (file)
@@ -814,7 +814,7 @@ static int __init dryice_rtc_probe(struct platform_device *pdev)
        imxdi->rtc->ops = &dryice_rtc_ops;
        imxdi->rtc->range_max = U32_MAX;
 
-       rc = rtc_register_device(imxdi->rtc);
+       rc = devm_rtc_register_device(imxdi->rtc);
        if (rc)
                goto err;
 
index fff8d8253669824ff4215c584509a4fe4654028e..1fc6627d854d375ba0b57ef38691612eb94ef98e 100644 (file)
@@ -469,7 +469,7 @@ static int isl12026_probe_new(struct i2c_client *client)
        if (ret)
                return ret;
 
-       return rtc_register_device(priv->rtc);
+       return devm_rtc_register_device(priv->rtc);
 }
 
 static int isl12026_remove(struct i2c_client *client)
index 08d778b10e9ecc8c50bac823b96e1f0b9692c1c5..563a6d9c9fcfd62b83cded9cfaf98b1f1b847eed 100644 (file)
@@ -894,7 +894,7 @@ isl1208_probe(struct i2c_client *client, const struct i2c_device_id *id)
        if (rc)
                return rc;
 
-       return rtc_register_device(isl1208->rtc);
+       return devm_rtc_register_device(isl1208->rtc);
 }
 
 static struct i2c_driver isl1208_driver = {
index 9607e6b6e0b32e584528c8d40f6e12e0d61a495f..6e51df72fd658147f5e3b033ea1c331962492809 100644 (file)
@@ -375,7 +375,7 @@ static int jz4740_rtc_probe(struct platform_device *pdev)
        /* Each 1 Hz pulse should happen after (rate) ticks */
        jz4740_rtc_reg_write(rtc, JZ_REG_RTC_REGULATOR, rate - 1);
 
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret)
                return ret;
 
index 15d8abda81fe50bfb2705f9ad7b7e5a0bd6b22ed..76ad7031a13dd7f37911ea4f655f6219ce8ba283 100644 (file)
@@ -239,7 +239,7 @@ static int lpc32xx_rtc_probe(struct platform_device *pdev)
        rtc->rtc->ops = &lpc32xx_rtc_ops;
        rtc->rtc->range_max = U32_MAX;
 
-       err = rtc_register_device(rtc->rtc);
+       err = devm_rtc_register_device(rtc->rtc);
        if (err)
                return err;
 
index 8bd34056fea0a4fdeff3480fc1fad5d7a278dde4..5af26dc5c2a39e46b3db12fd9f6597cf2903d820 100644 (file)
@@ -176,7 +176,7 @@ static int ls1x_rtc_probe(struct platform_device *pdev)
        rtcdev->range_min = RTC_TIMESTAMP_BEGIN_1900;
        rtcdev->range_max = RTC_TIMESTAMP_END_2099;
 
-       return rtc_register_device(rtcdev);
+       return devm_rtc_register_device(rtcdev);
 }
 
 static struct platform_driver  ls1x_rtc_driver = {
index 8a89bc52b0d45122e968e29941ce85c3a16a2384..160dcf68e64ebdf0fae40b57075b3d7e1a207b1d 100644 (file)
@@ -977,7 +977,7 @@ static int m41t80_probe(struct i2c_client *client,
                m41t80_sqw_register_clk(m41t80_data);
 #endif
 
-       rc = rtc_register_device(m41t80_data->rtc);
+       rc = devm_rtc_register_device(m41t80_data->rtc);
        if (rc)
                return rc;
 
index e966a66ab2d35266eb24c6f9b8bb83333da24c9e..5f5898d3b055c12f982dac5788a6a6b77c743715 100644 (file)
@@ -470,7 +470,7 @@ static int m48t59_rtc_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       ret = rtc_register_device(m48t59->rtc);
+       ret = devm_rtc_register_device(m48t59->rtc);
        if (ret)
                return ret;
 
index 182cfe59e4e045e07ca8dc52b1e2049bb13a28ca..481c9525b1ddbfdf709165d87e911f9cfa34b295 100644 (file)
@@ -255,7 +255,7 @@ static int m48t86_rtc_probe(struct platform_device *pdev)
 
        info->rtc->ops = &m48t86_rtc_ops;
 
-       err = rtc_register_device(info->rtc);
+       err = devm_rtc_register_device(info->rtc);
        if (err)
                return err;
 
index d6802e6191cbe73dd721ce15a9885e98c5eb651e..d4234e78497e0c1c7be0fd585f6aedaa187db112 100644 (file)
@@ -307,7 +307,7 @@ static int __init mc13xxx_rtc_probe(struct platform_device *pdev)
 
        mc13xxx_unlock(mc13xxx);
 
-       ret = rtc_register_device(priv->rtc);
+       ret = devm_rtc_register_device(priv->rtc);
        if (ret) {
                mc13xxx_lock(mc13xxx);
                goto err_irq_request;
index e6bd0808a092b59d0b6c4654463d1d3b7c7013b4..1463c86215615a6b27b4b91ed33db659cce83054 100644 (file)
@@ -83,7 +83,7 @@ static int meson_vrtc_probe(struct platform_device *pdev)
                return PTR_ERR(vrtc->rtc);
 
        vrtc->rtc->ops = &meson_vrtc_ops;
-       return rtc_register_device(vrtc->rtc);
+       return devm_rtc_register_device(vrtc->rtc);
 }
 
 static int __maybe_unused meson_vrtc_suspend(struct device *dev)
index 938267713a4dcdcd4c32b13e38209f0c8acda41b..8642c06565ea016157a2357ed7b3e0f0188c431e 100644 (file)
@@ -369,7 +369,7 @@ static int meson_rtc_probe(struct platform_device *pdev)
        if (ret)
                goto out_disable_vdd;
 
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret)
                goto out_disable_vdd;
 
index 5c2ce71aa044db36b29d4170a9f94729195cf477..bb2ea9bc56f2c51cebdb238b3b5f327fc459169c 100644 (file)
@@ -371,7 +371,7 @@ static int mpc5121_rtc_probe(struct platform_device *op)
                rtc->rtc->range_max = U32_MAX;
        }
 
-       err = rtc_register_device(rtc->rtc);
+       err = devm_rtc_register_device(rtc->rtc);
        if (err)
                goto out_dispose2;
 
index 17bf5394e1e5161c1eebcfdbc273c4227601d33d..421b3b6071b6961cd18d2865808be94cc518dd9c 100644 (file)
@@ -361,7 +361,7 @@ static int vrtc_mrst_do_probe(struct device *dev, struct resource *iomem,
                }
        }
 
-       retval = rtc_register_device(mrst_rtc.rtc);
+       retval = devm_rtc_register_device(mrst_rtc.rtc);
        if (retval)
                goto cleanup0;
 
index d5f691c8a0358efb665cc4da5861779531e11047..cd92a9788351dcc57011dda991cd5a2add3dce6f 100644 (file)
@@ -352,7 +352,7 @@ static int mt2712_rtc_probe(struct platform_device *pdev)
        mt2712_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        mt2712_rtc->rtc->range_max = MT2712_RTC_TIMESTAMP_END_2127;
 
-       return rtc_register_device(mt2712_rtc->rtc);
+       return devm_rtc_register_device(mt2712_rtc->rtc);
 }
 
 #ifdef CONFIG_PM_SLEEP
index 1894aded4c85775f2c939fc46398678e1d00db71..6655035e5164d7877ef9e7f26dfd7d4a30075c5e 100644 (file)
@@ -301,7 +301,7 @@ static int mtk_rtc_probe(struct platform_device *pdev)
 
        rtc->rtc_dev->ops = &mtk_rtc_ops;
 
-       return rtc_register_device(rtc->rtc_dev);
+       return devm_rtc_register_device(rtc->rtc_dev);
 }
 
 #ifdef CONFIG_PM_SLEEP
index d5f190e578e4dfeb50f3eda8387564aeae8f0c40..f8e2ecea1d8df76a43e9dfb70b669a8f60f4b785 100644 (file)
@@ -278,7 +278,7 @@ static int __init mv_rtc_probe(struct platform_device *pdev)
        pdata->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        pdata->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       ret = rtc_register_device(pdata->rtc);
+       ret = devm_rtc_register_device(pdata->rtc);
        if (!ret)
                return 0;
 out:
index 0d253ce3a8f5e39a46eb842a34d958300de41349..65b29b0fa54805e35d607a680980bc9ff5221932 100644 (file)
@@ -408,7 +408,7 @@ static int mxc_rtc_probe(struct platform_device *pdev)
                        dev_err(&pdev->dev, "failed to enable irq wake\n");
        }
 
-       ret = rtc_register_device(rtc);
+       ret = devm_rtc_register_device(rtc);
 
        return ret;
 }
index 91534560fe2a2d33e1128a28497c27741aab6a10..0d73f6f0cf9e4721e9fc0a12175f5d0af3b2df82 100644 (file)
@@ -354,7 +354,7 @@ static int mxc_rtc_probe(struct platform_device *pdev)
                return ret;
        }
 
-       ret = rtc_register_device(pdata->rtc);
+       ret = devm_rtc_register_device(pdata->rtc);
        if (ret < 0)
                clk_unprepare(pdata->clk);
 
index e65f79fc77180829e169aac5320cd9b1a3a84cba..dc7db2477f883c7173f73bdc73416c0c9a82e630 100644 (file)
@@ -886,7 +886,7 @@ static int omap_rtc_probe(struct platform_device *pdev)
                goto err;
        }
 
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret)
                goto err;
 
index 178bfb1dea2140540fa78dff951ebfc64816087f..8c7a98a5452c6a2020d326499696fb4f84c9a97e 100644 (file)
@@ -163,7 +163,7 @@ static int __init pcap_rtc_probe(struct platform_device *pdev)
        if (err)
                return err;
 
-       return rtc_register_device(pcap_rtc->rtc);
+       return devm_rtc_register_device(pcap_rtc->rtc);
 }
 
 static int __exit pcap_rtc_remove(struct platform_device *pdev)
index c3691fa4210e544b030d0246d0a46f23c87c318a..534ffc91eec1508bf7cab0942a2a8e627a083288 100644 (file)
@@ -434,7 +434,7 @@ static int pcf2123_probe(struct spi_device *spi)
        rtc->range_max = RTC_TIMESTAMP_END_2099;
        rtc->set_start_time = true;
 
-       ret = rtc_register_device(rtc);
+       ret = devm_rtc_register_device(rtc);
        if (ret)
                return ret;
 
index 432cd627359b3c25fec98a30ac253b11a46d1c87..33fa8b17b79c4324d881218ca7180035b4c4e376 100644 (file)
@@ -682,7 +682,7 @@ static int pcf2127_probe(struct device *dev, struct regmap *regmap,
                return ret;
        }
 
-       return rtc_register_device(pcf2127->rtc);
+       return devm_rtc_register_device(pcf2127->rtc);
 }
 
 #ifdef CONFIG_OF
index c19f139e9b8dbd66b1bd6a43c1420eeb327817c0..e19cf2adbc355cba0684bd31b75b1a3b9b635e94 100644 (file)
@@ -614,7 +614,7 @@ static int pcf85063_probe(struct i2c_client *client)
        pcf85063_clkout_register_clk(pcf85063);
 #endif
 
-       return rtc_register_device(pcf85063->rtc);
+       return devm_rtc_register_device(pcf85063->rtc);
 }
 
 #ifdef CONFIG_OF
index 23cf14ca2c96e1af75759201ad71ac7023dbe602..a574c8d15a5c30e828b99d3fd582af3d57377f22 100644 (file)
@@ -418,7 +418,7 @@ static int pcf85363_probe(struct i2c_client *client,
                        pcf85363->rtc->ops = &rtc_ops_alarm;
        }
 
-       ret = rtc_register_device(pcf85363->rtc);
+       ret = devm_rtc_register_device(pcf85363->rtc);
 
        for (i = 0; i < config->num_nvram; i++) {
                nvmem_cfg[i].priv = pcf85363;
index 2dc30eafa63961fa69835bb159f24b10427db755..de3e6c355f2e6cefaa548371ca99f240c3df65e2 100644 (file)
@@ -582,7 +582,7 @@ static int pcf8563_probe(struct i2c_client *client,
                }
        }
 
-       err = rtc_register_device(pcf8563->rtc);
+       err = devm_rtc_register_device(pcf8563->rtc);
        if (err)
                return err;
 
index 2b69467446548da3d515fdb820ce89397dedb41b..7fb9145c43bd532f312078d3c8234c3a76b38e96 100644 (file)
@@ -338,7 +338,7 @@ static int pic32_rtc_probe(struct platform_device *pdev)
        pdata->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        pdata->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       ret = rtc_register_device(pdata->rtc);
+       ret = devm_rtc_register_device(pdata->rtc);
        if (ret)
                goto err_nortc;
 
index ebe03eba8f5ffafa19823082cfe198e8ea658cdb..5a880516f3e81bd9b8aa2a36ef2a828a082da0fc 100644 (file)
@@ -121,7 +121,7 @@ static int pl030_probe(struct amba_device *dev, const struct amba_id *id)
        if (ret)
                goto err_irq;
 
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret)
                goto err_reg;
 
index d4b2ab7861266e367ce87a590fb3f4fd8611318d..224bbf0962622a7ac5ac44c430f6969206346051 100644 (file)
@@ -370,7 +370,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id)
        ldata->rtc->range_min = vendor->range_min;
        ldata->rtc->range_max = vendor->range_max;
 
-       ret = rtc_register_device(ldata->rtc);
+       ret = devm_rtc_register_device(ldata->rtc);
        if (ret)
                goto out;
 
index b45ee2cb2c0449cbb9e5a12524864bee6491665a..0d9dd6faabbaabd2029f75277ba625c0e06e8d79 100644 (file)
@@ -508,7 +508,7 @@ static int pm8xxx_rtc_probe(struct platform_device *pdev)
                return rc;
        }
 
-       return rtc_register_device(rtc_dd->rtc);
+       return devm_rtc_register_device(rtc_dd->rtc);
 }
 
 #ifdef CONFIG_PM_SLEEP
index f0336d691e6cf9b6a96719ebd1454bcac403d94e..6b098734c7155f35ed5d29e2b58b30491d0768f6 100644 (file)
@@ -56,7 +56,7 @@ static int __init ps3_rtc_probe(struct platform_device *dev)
 
        platform_set_drvdata(dev, rtc);
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct platform_driver ps3_rtc_driver = {
index 7ceb968f0e4459c45a4d9c6a9d8627ee96922726..60a3c3d7499b08479308aa483678229133b1fd4b 100644 (file)
@@ -127,7 +127,7 @@ static int r9701_probe(struct spi_device *spi)
        rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct spi_driver r9701_driver = {
index dd1a20977478efb734b4ea97a0134da8e2082b82..e73102a39f1b88bf788017a091923ca5a03dc284 100644 (file)
@@ -426,7 +426,7 @@ static int rc5t619_rtc_probe(struct platform_device *pdev)
                dev_warn(&pdev->dev, "rc5t619 interrupt is disabled\n");
        }
 
-       return rtc_register_device(rtc->rtc);
+       return devm_rtc_register_device(rtc->rtc);
 }
 
 static struct platform_driver rc5t619_rtc_driver = {
index c0334c602e88efe022a3e78976ceb91c034536f0..e920da8c08da198260f926dee63febda8f1c21c7 100644 (file)
@@ -447,7 +447,7 @@ static int rk808_rtc_probe(struct platform_device *pdev)
                return ret;
        }
 
-       return rtc_register_device(rk808_rtc->rtc);
+       return devm_rtc_register_device(rk808_rtc->rtc);
 }
 
 static struct platform_driver rk808_rtc_driver = {
index 8bc476c0905f216b86afddc1cf1bc8b10bbcdd47..44afa6d996e74c0798a35cee82995d75f214da50 100644 (file)
@@ -259,7 +259,7 @@ static int __init rp5c01_rtc_probe(struct platform_device *dev)
        if (error)
                return error;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct platform_driver rp5c01_rtc_driver = {
index 47c13678449e2f681386024ddfc7dc43424ba321..fec633f80789ddddeeffd7840a6326b0a52bdebf 100644 (file)
@@ -197,7 +197,7 @@ static int rs5c348_probe(struct spi_device *spi)
 
        rtc->ops = &rs5c348_rtc_ops;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct spi_driver rs5c348_driver = {
index f788df9797504d0f3844af4c52f066cd8fd9061c..979407a51c7a9c81f003d5be3b2519611541d5ce 100644 (file)
@@ -886,7 +886,7 @@ static int rv3028_probe(struct i2c_client *client)
        rv3028->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rv3028->rtc->range_max = RTC_TIMESTAMP_END_2099;
        rv3028->rtc->ops = &rv3028_rtc_ops;
-       ret = rtc_register_device(rv3028->rtc);
+       ret = devm_rtc_register_device(rv3028->rtc);
        if (ret)
                return ret;
 
index ad359b3b74b259acfa5a51a6e376eaa6d13d4d2f..dc1bda62095e68608b3fd5f3d7ec31c7ec7198e1 100644 (file)
@@ -750,7 +750,7 @@ static int rv3029_probe(struct device *dev, struct regmap *regmap, int irq,
        rv3029->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rv3029->rtc->range_max = RTC_TIMESTAMP_END_2079;
 
-       rc = rtc_register_device(rv3029->rtc);
+       rc = devm_rtc_register_device(rv3029->rtc);
        if (rc)
                return rc;
 
index ed9cba3292e6855d14a781876e3e62faffe37676..c9bcea7277579a7413ae818dc77697c4cb4af627 100644 (file)
@@ -885,7 +885,7 @@ static int rv3032_probe(struct i2c_client *client)
        rv3032->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rv3032->rtc->range_max = RTC_TIMESTAMP_END_2099;
        rv3032->rtc->ops = &rv3032_rtc_ops;
-       ret = rtc_register_device(rv3032->rtc);
+       ret = devm_rtc_register_device(rv3032->rtc);
        if (ret)
                return ret;
 
index 44e1818a751cc6e53696ecd7816a8106bf39e5fd..d4ea6db51b26309a8de12cee596173460267dbbd 100644 (file)
@@ -587,7 +587,7 @@ static int rv8803_probe(struct i2c_client *client,
        rv8803->rtc->ops = &rv8803_rtc_ops;
        rv8803->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rv8803->rtc->range_max = RTC_TIMESTAMP_END_2099;
-       err = rtc_register_device(rv8803->rtc);
+       err = devm_rtc_register_device(rv8803->rtc);
        if (err)
                return err;
 
index dca41a2a39b23dde2920e478c8f174be1ac8d3b5..8340ab47a05976e123f6ea643876dd7def9fc5c1 100644 (file)
@@ -419,7 +419,7 @@ static int rx8010_probe(struct i2c_client *client)
        rx8010->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        rx8010->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       return rtc_register_device(rx8010->rtc);
+       return devm_rtc_register_device(rx8010->rtc);
 }
 
 static struct i2c_driver rx8010_driver = {
index 017f74721cc06dd03cd400a28d9e8563fd797261..de109139529b423b1ed4b241d72b5bc200a1c7d1 100644 (file)
@@ -298,7 +298,7 @@ static int rx8581_probe(struct i2c_client *client,
        rx8581->rtc->start_secs = 0;
        rx8581->rtc->set_start_time = true;
 
-       ret = rtc_register_device(rx8581->rtc);
+       ret = devm_rtc_register_device(rx8581->rtc);
 
        for (i = 0; i < config->num_nvram; i++) {
                nvmem_cfg[i].priv = rx8581;
index 03672a2463569db9be4724ab072f7060bb885f5b..ea15d0392bb9cabb6188b3364f73d99ae0364a1d 100644 (file)
@@ -497,7 +497,7 @@ static int s35390a_probe(struct i2c_client *client,
        if (status1 & S35390A_FLAG_INT2)
                rtc_update_irq(s35390a->rtc, 1, RTC_AF);
 
-       return rtc_register_device(s35390a->rtc);
+       return devm_rtc_register_device(s35390a->rtc);
 }
 
 static struct i2c_driver s35390a_driver = {
index 9ccc97cf5e09557947e960ffbb8519b4268efe45..1250887e4382765f4f8fa0ee417e027b8376b5c3 100644 (file)
@@ -205,7 +205,7 @@ int sa1100_rtc_init(struct platform_device *pdev, struct sa1100_rtc *info)
        info->rtc->max_user_freq = RTC_FREQ;
        info->rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(info->rtc);
+       ret = devm_rtc_register_device(info->rtc);
        if (ret) {
                clk_disable_unprepare(info->clk);
                return ret;
index a953bc0a5a5ba0b1c047dac31145f362c5e334ba..187aa955b79cf7a1e58395a6cb141e1382383e31 100644 (file)
@@ -618,7 +618,7 @@ static int sprd_rtc_probe(struct platform_device *pdev)
        rtc->rtc->ops = &sprd_rtc_ops;
        rtc->rtc->range_min = 0;
        rtc->rtc->range_max = 5662310399LL;
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret) {
                device_init_wakeup(&pdev->dev, 0);
                return ret;
index a7aa943c11837a9b4188db80ca5c19bf9c0abcd6..f6bee69ba017c5aaa647483ccbe1f2ee37b31af5 100644 (file)
@@ -192,7 +192,7 @@ static int sd3078_probe(struct i2c_client *client,
        sd3078->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        sd3078->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       ret = rtc_register_device(sd3078->rtc);
+       ret = devm_rtc_register_device(sd3078->rtc);
        if (ret)
                return ret;
 
index 9167b48014a1584c0b5a2f965e2ba9f2daf3e7b7..cd146b5741431f0c72448af9d1ad8f170800c7c2 100644 (file)
@@ -607,7 +607,7 @@ static int __init sh_rtc_probe(struct platform_device *pdev)
                rtc->rtc_dev->range_max = mktime64(2098, 12, 31, 23, 59, 59);
        }
 
-       ret = rtc_register_device(rtc->rtc_dev);
+       ret = devm_rtc_register_device(rtc->rtc_dev);
        if (ret)
                goto err_unmap;
 
index abf19435dbad0bb14b21467783da2467a828174d..03a6cca23201a30a8c2387232e8f9f5fb6e26c81 100644 (file)
@@ -356,7 +356,7 @@ static int sirfsoc_rtc_probe(struct platform_device *pdev)
                return err;
        }
 
-       return rtc_register_device(rtcdrv->rtc);
+       return devm_rtc_register_device(rtcdrv->rtc);
 }
 
 #ifdef CONFIG_PM_SLEEP
index a7d39a49b74860ee62d5cae8ba78f18fce8c855a..bd929b0e7d7defdd94335cca248a8526ee24d1e0 100644 (file)
@@ -387,7 +387,7 @@ static int snvs_rtc_probe(struct platform_device *pdev)
        data->rtc->ops = &snvs_rtc_ops;
        data->rtc->range_max = U32_MAX;
 
-       return rtc_register_device(data->rtc);
+       return devm_rtc_register_device(data->rtc);
 }
 
 static int __maybe_unused snvs_rtc_suspend_noirq(struct device *dev)
index 0c65448b85eef9bf0f8b8fa0b424ca8984277c33..bdb20f63254e26cafdeea10330b4ecf3d944b543 100644 (file)
@@ -250,7 +250,7 @@ static int st_rtc_probe(struct platform_device *pdev)
        rtc->rtc_dev->range_max = U64_MAX;
        do_div(rtc->rtc_dev->range_max, rtc->clkrate);
 
-       ret = rtc_register_device(rtc->rtc_dev);
+       ret = devm_rtc_register_device(rtc->rtc_dev);
        if (ret) {
                clk_disable_unprepare(rtc->clk);
                return ret;
index 37a26279e10729f2ca13df55ad80cd96eeb1110e..fbd1ed41cbf1e6b1d74efcf54d11ce05366c3c74 100644 (file)
@@ -48,7 +48,7 @@ static int __init starfire_rtc_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, rtc);
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct platform_driver starfire_rtc_driver = {
index ad616bce7bca3ae217b9ab66b8eb19a91a63b274..7cb6be1b7815109e9216538d8d884207bde93817 100644 (file)
@@ -317,7 +317,7 @@ static int stk17ta8_rtc_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       return rtc_register_device(pdata->rtc);
+       return devm_rtc_register_device(pdata->rtc);
 }
 
 /* work with hotplug and coldplug */
index 0a969af80af7c0ae96485df94b11190d650e12b8..40c0f7ed36e0685e489d07a16706e81db3de2c8f 100644 (file)
@@ -366,7 +366,7 @@ static int stmp3xxx_rtc_probe(struct platform_device *pdev)
        rtc_data->rtc->ops = &stmp3xxx_rtc_ops;
        rtc_data->rtc->range_max = U32_MAX;
 
-       err = rtc_register_device(rtc_data->rtc);
+       err = devm_rtc_register_device(rtc_data->rtc);
        if (err)
                return err;
 
index 036463dfa103a771ddb08fe0e45631075956cf3d..a86e27de8c06ff7ac17ac751246185bd688ab767 100644 (file)
@@ -86,7 +86,7 @@ static int __init sun4v_rtc_probe(struct platform_device *pdev)
        rtc->range_max = U64_MAX;
        platform_set_drvdata(pdev, rtc);
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct platform_driver sun4v_rtc_driver = {
index f2818cdd11d82eca83cd500b3d8056cf980baeb8..adec1b14a8deb162b39d103699568d52ba24bf13 100644 (file)
@@ -726,7 +726,7 @@ static int sun6i_rtc_probe(struct platform_device *pdev)
        chip->rtc->ops = &sun6i_rtc_ops;
        chip->rtc->range_max = 2019686399LL; /* 2033-12-31 23:59:59 */
 
-       ret = rtc_register_device(chip->rtc);
+       ret = devm_rtc_register_device(chip->rtc);
        if (ret)
                return ret;
 
index f5d7f44550ce96d4759594bd997670aec3b1c136..5d019e3a835ad6f490e0476b39404f2c5640bbd6 100644 (file)
@@ -470,7 +470,7 @@ static int sunxi_rtc_probe(struct platform_device *pdev)
 
        chip->rtc->ops = &sunxi_rtc_ops;
 
-       return rtc_register_device(chip->rtc);
+       return devm_rtc_register_device(chip->rtc);
 }
 
 static struct platform_driver sunxi_rtc_driver = {
index 7fbb1741692f64c5b13ff2b2963d90413a9aba0e..8925015cc698c3aaae5af7ae987fafe4d73e5ce7 100644 (file)
@@ -329,7 +329,7 @@ static int tegra_rtc_probe(struct platform_device *pdev)
                goto disable_clk;
        }
 
-       ret = rtc_register_device(info->rtc);
+       ret = devm_rtc_register_device(info->rtc);
        if (ret)
                goto disable_clk;
 
index 74b3a0603b738df99e552ede729534e9625ed76d..b092a1648513924ddfeca028dadae0fff42c90b4 100644 (file)
@@ -139,7 +139,7 @@ static int test_probe(struct platform_device *plat_dev)
        timer_setup(&rtd->alarm, test_rtc_alarm_handler, 0);
        rtd->alarm.expires = 0;
 
-       return rtc_register_device(rtd->rtc);
+       return devm_rtc_register_device(rtd->rtc);
 }
 
 static struct platform_driver test_driver = {
index e39af2d670510ff0de46c09ed114f77cc84ca96e..a980337c306589375c2ed2e1a81e58d62e5c508f 100644 (file)
@@ -280,7 +280,7 @@ static int tps6586x_rtc_probe(struct platform_device *pdev)
                goto fail_rtc_register;
        }
 
-       ret = rtc_register_device(rtc->rtc);
+       ret = devm_rtc_register_device(rtc->rtc);
        if (ret)
                goto fail_rtc_register;
 
index e3840386f430c188286eb2f7ad7271da64dcee53..2d87b62826a8352fc4a1815b9562699a30d65b37 100644 (file)
@@ -434,7 +434,7 @@ static int tps65910_rtc_probe(struct platform_device *pdev)
        tps_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
        tps_rtc->rtc->range_max = RTC_TIMESTAMP_END_2099;
 
-       return rtc_register_device(tps_rtc->rtc);
+       return devm_rtc_register_device(tps_rtc->rtc);
 }
 
 #ifdef CONFIG_PM_SLEEP
index 11f46272bad34003db3955ad3c75ca2bd3dd86e9..c3309db5448d87a4ecf4d2268f24c263cb050ace 100644 (file)
@@ -275,7 +275,7 @@ static int __init tx4939_rtc_probe(struct platform_device *pdev)
        if (ret)
                return ret;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static int __exit tx4939_rtc_remove(struct platform_device *pdev)
index c3671043ace76768207def0a73384438f7511ce1..5a9f9ad86d32f4b94dabdba7ff546d01ff41c8d7 100644 (file)
@@ -335,7 +335,7 @@ static int rtc_probe(struct platform_device *pdev)
 
        dev_info(&pdev->dev, "Real Time Clock of NEC VR4100 series\n");
 
-       retval = rtc_register_device(rtc);
+       retval = devm_rtc_register_device(rtc);
        if (retval)
                goto err_iounmap_all;
 
index e2588625025fdab6115c879e2cd32153ef53ed3e..197b649cd6293958e36bfff887a62a0789f4d738 100644 (file)
@@ -232,7 +232,7 @@ static int vt8500_rtc_probe(struct platform_device *pdev)
                return ret;
        }
 
-       return rtc_register_device(vt8500_rtc->rtc);
+       return devm_rtc_register_device(vt8500_rtc->rtc);
 }
 
 static int vt8500_rtc_remove(struct platform_device *pdev)
index ff46066a68a4c8bd080d74a7de4f38b907b01e89..2a205a64645213574ed82413221e120bb721d040 100644 (file)
@@ -176,7 +176,7 @@ static int wilco_ec_rtc_probe(struct platform_device *pdev)
        rtc->range_max = RTC_TIMESTAMP_END_2099;
        rtc->owner = THIS_MODULE;
 
-       return rtc_register_device(rtc);
+       return devm_rtc_register_device(rtc);
 }
 
 static struct platform_driver wilco_ec_rtc_driver = {
index ccef887d2690112f736365912993a02de8b6938a..640833e210575205b985e8295acf65e123386791 100644 (file)
@@ -429,7 +429,7 @@ static int wm831x_rtc_probe(struct platform_device *pdev)
        wm831x_rtc->rtc->ops = &wm831x_rtc_ops;
        wm831x_rtc->rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(wm831x_rtc->rtc);
+       ret = devm_rtc_register_device(wm831x_rtc->rtc);
        if (ret)
                return ret;
 
index 96db441f92b3ee03b4b4e0e6e7c032287d834251..cf68a9b1c9ebbc64cb37620ecc0331dfb2481d76 100644 (file)
@@ -185,7 +185,7 @@ static int xgene_rtc_probe(struct platform_device *pdev)
        pdata->rtc->ops = &xgene_rtc_ops;
        pdata->rtc->range_max = U32_MAX;
 
-       ret = rtc_register_device(pdata->rtc);
+       ret = devm_rtc_register_device(pdata->rtc);
        if (ret) {
                clk_disable_unprepare(pdata->clk);
                return ret;
index 4b1077e2f826e3587c441ae66b2f1aa75346340e..f440bb52be92712917556d025f261ac5fd6c4977 100644 (file)
@@ -264,7 +264,7 @@ static int xlnx_rtc_probe(struct platform_device *pdev)
 
        device_init_wakeup(&pdev->dev, 1);
 
-       return rtc_register_device(xrtcdev->rtc);
+       return devm_rtc_register_device(xrtcdev->rtc);
 }
 
 static int xlnx_rtc_remove(struct platform_device *pdev)
index 950fac0d41ff9aef0050b5f75679ef46b05f665f..8a957d31a1a4a77d8771b583ae32163cf840580e 100644 (file)
@@ -317,8 +317,6 @@ int rtc_add_groups(struct rtc_device *rtc, const struct attribute_group **grps)
        size_t old_cnt = 0, add_cnt = 0, new_cnt;
        const struct attribute_group **groups, **old;
 
-       if (rtc->registered)
-               return -EINVAL;
        if (!grps)
                return -EINVAL;
 
index cbca651d8ca4d61b03484e07b4f51e15ae922b84..55e7beed066c76a43c87bc51b3399e1248a3ffa6 100644 (file)
@@ -118,8 +118,6 @@ struct rtc_device {
         */
        long set_offset_nsec;
 
-       bool registered;
-
        time64_t range_min;
        timeu64_t range_max;
        time64_t start_secs;
@@ -157,7 +155,7 @@ extern struct rtc_device *devm_rtc_device_register(struct device *dev,
                                        const struct rtc_class_ops *ops,
                                        struct module *owner);
 struct rtc_device *devm_rtc_allocate_device(struct device *dev);
-int __rtc_register_device(struct module *owner, struct rtc_device *rtc);
+int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc);
 
 extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm);
 extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm);
@@ -234,8 +232,8 @@ static inline bool rtc_tv_nsec_ok(s64 set_offset_nsec,
        return false;
 }
 
-#define rtc_register_device(device) \
-       __rtc_register_device(THIS_MODULE, device)
+#define devm_rtc_register_device(device) \
+       __devm_rtc_register_device(THIS_MODULE, device)
 
 #ifdef CONFIG_RTC_HCTOSYS_DEVICE
 extern int rtc_hctosys_ret;