Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

rtc: rework rtc_register_device() resource management

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

authored by

Bartosz Golaszewski and committed by
Alexandre Belloni
fdcfd854 6746bc09

+123 -127
+1
Documentation/driver-api/driver-model/devres.rst
··· 414 414 RTC 415 415 devm_rtc_device_register() 416 416 devm_rtc_allocate_device() 417 + devm_rtc_register_device() 417 418 devm_rtc_nvmem_register() 418 419 419 420 SERDEV
+1 -1
arch/alpha/kernel/rtc.c
··· 216 216 rtc->ops = &remote_rtc_ops; 217 217 #endif 218 218 219 - return rtc_register_device(rtc); 219 + return devm_rtc_register_device(rtc); 220 220 } 221 221 device_initcall(alpha_rtc_init);
+1 -1
drivers/mfd/menelaus.c
··· 1119 1119 menelaus_write_reg(MENELAUS_RTC_CTRL, m->rtc_control); 1120 1120 } 1121 1121 1122 - err = rtc_register_device(m->rtc); 1122 + err = devm_rtc_register_device(m->rtc); 1123 1123 if (err) { 1124 1124 if (alarm) { 1125 1125 menelaus_remove_irq_work(MENELAUS_RTCALM_IRQ);
+9 -10
drivers/rtc/class.c
··· 321 321 * 322 322 * @rtc: the RTC class device to destroy 323 323 */ 324 - static void rtc_device_unregister(struct rtc_device *rtc) 324 + static void devm_rtc_unregister_device(void *data) 325 325 { 326 + struct rtc_device *rtc = data; 327 + 326 328 mutex_lock(&rtc->ops_lock); 327 329 /* 328 330 * Remove innards of this RTC, then disable it, before ··· 341 339 { 342 340 struct rtc_device *rtc = *(struct rtc_device **)res; 343 341 344 - if (rtc->registered) 345 - rtc_device_unregister(rtc); 346 - else 347 - put_device(&rtc->dev); 342 + put_device(&rtc->dev); 348 343 } 349 344 350 345 struct rtc_device *devm_rtc_allocate_device(struct device *dev) ··· 382 383 } 383 384 EXPORT_SYMBOL_GPL(devm_rtc_allocate_device); 384 385 385 - int __rtc_register_device(struct module *owner, struct rtc_device *rtc) 386 + int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc) 386 387 { 387 388 struct rtc_wkalrm alrm; 388 389 int err; ··· 412 413 413 414 rtc_proc_add_device(rtc); 414 415 415 - rtc->registered = true; 416 416 dev_info(rtc->dev.parent, "registered as %s\n", 417 417 dev_name(&rtc->dev)); 418 418 ··· 420 422 rtc_hctosys(rtc); 421 423 #endif 422 424 423 - return 0; 425 + return devm_add_action_or_reset(rtc->dev.parent, 426 + devm_rtc_unregister_device, rtc); 424 427 } 425 - EXPORT_SYMBOL_GPL(__rtc_register_device); 428 + EXPORT_SYMBOL_GPL(__devm_rtc_register_device); 426 429 427 430 /** 428 431 * devm_rtc_device_register - resource managed rtc_device_register() ··· 453 454 454 455 rtc->ops = ops; 455 456 456 - err = __rtc_register_device(owner, rtc); 457 + err = __devm_rtc_register_device(owner, rtc); 457 458 if (err) 458 459 return ERR_PTR(err); 459 460
+1 -1
drivers/rtc/rtc-88pm80x.c
··· 294 294 info->rtc_dev->ops = &pm80x_rtc_ops; 295 295 info->rtc_dev->range_max = U32_MAX; 296 296 297 - ret = rtc_register_device(info->rtc_dev); 297 + ret = devm_rtc_register_device(info->rtc_dev); 298 298 if (ret) 299 299 goto out_rtc; 300 300
+1 -1
drivers/rtc/rtc-88pm860x.c
··· 307 307 info->rtc_dev->ops = &pm860x_rtc_ops; 308 308 info->rtc_dev->range_max = U32_MAX; 309 309 310 - ret = rtc_register_device(info->rtc_dev); 310 + ret = devm_rtc_register_device(info->rtc_dev); 311 311 if (ret) 312 312 return ret; 313 313
+1 -1
drivers/rtc/rtc-ab-b5ze-s3.c
··· 892 892 } 893 893 } 894 894 895 - ret = rtc_register_device(data->rtc); 895 + ret = devm_rtc_register_device(data->rtc); 896 896 897 897 err: 898 898 if (ret && data->irq)
+1 -1
drivers/rtc/rtc-ab-eoz9.c
··· 420 420 data->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 421 421 data->rtc->range_max = RTC_TIMESTAMP_END_2099; 422 422 423 - ret = rtc_register_device(data->rtc); 423 + ret = devm_rtc_register_device(data->rtc); 424 424 if (ret) 425 425 return ret; 426 426
+1 -1
drivers/rtc/rtc-ab3100.c
··· 238 238 239 239 platform_set_drvdata(pdev, rtc); 240 240 241 - return rtc_register_device(rtc); 241 + return devm_rtc_register_device(rtc); 242 242 } 243 243 244 244 static struct platform_driver ab3100_rtc_driver = {
+1 -1
drivers/rtc/rtc-ab8500.c
··· 404 404 if (err) 405 405 return err; 406 406 407 - return rtc_register_device(rtc); 407 + return devm_rtc_register_device(rtc); 408 408 } 409 409 410 410 static int ab8500_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-abx80x.c
··· 851 851 return err; 852 852 } 853 853 854 - return rtc_register_device(priv->rtc); 854 + return devm_rtc_register_device(priv->rtc); 855 855 } 856 856 857 857 static const struct i2c_device_id abx80x_id[] = {
+1 -1
drivers/rtc/rtc-ac100.c
··· 610 610 if (ret) 611 611 return ret; 612 612 613 - return rtc_register_device(chip->rtc); 613 + return devm_rtc_register_device(chip->rtc); 614 614 } 615 615 616 616 static int ac100_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-armada38x.c
··· 556 556 557 557 rtc->rtc_dev->range_max = U32_MAX; 558 558 559 - return rtc_register_device(rtc->rtc_dev); 559 + return devm_rtc_register_device(rtc->rtc_dev); 560 560 } 561 561 562 562 #ifdef CONFIG_PM_SLEEP
+1 -1
drivers/rtc/rtc-aspeed.c
··· 104 104 rtc->rtc_dev->range_min = RTC_TIMESTAMP_BEGIN_1900; 105 105 rtc->rtc_dev->range_max = 38814989399LL; /* 3199-12-31 23:59:59 */ 106 106 107 - return rtc_register_device(rtc->rtc_dev); 107 + return devm_rtc_register_device(rtc->rtc_dev); 108 108 } 109 109 110 110 static const struct of_device_id aspeed_rtc_match[] = {
+1 -1
drivers/rtc/rtc-at91rm9200.c
··· 538 538 539 539 rtc->range_min = RTC_TIMESTAMP_BEGIN_1900; 540 540 rtc->range_max = RTC_TIMESTAMP_END_2099; 541 - ret = rtc_register_device(rtc); 541 + ret = devm_rtc_register_device(rtc); 542 542 if (ret) 543 543 goto err_clk; 544 544
+1 -1
drivers/rtc/rtc-at91sam9.c
··· 431 431 dev_warn(&pdev->dev, "%s: SET TIME!\n", 432 432 dev_name(&rtc->rtcdev->dev)); 433 433 434 - return rtc_register_device(rtc->rtcdev); 434 + return devm_rtc_register_device(rtc->rtcdev); 435 435 436 436 err_clk: 437 437 clk_disable_unprepare(rtc->sclk);
+1 -1
drivers/rtc/rtc-au1xxx.c
··· 104 104 105 105 platform_set_drvdata(pdev, rtcdev); 106 106 107 - return rtc_register_device(rtcdev); 107 + return devm_rtc_register_device(rtcdev); 108 108 } 109 109 110 110 static struct platform_driver au1xrtc_driver = {
+1 -1
drivers/rtc/rtc-bd70528.c
··· 604 604 } 605 605 } 606 606 607 - return rtc_register_device(rtc); 607 + return devm_rtc_register_device(rtc); 608 608 } 609 609 610 610 static const struct platform_device_id bd718x7_rtc_id[] = {
+1 -1
drivers/rtc/rtc-brcmstb-waketimer.c
··· 252 252 timer->rtc->ops = &brcmstb_waketmr_ops; 253 253 timer->rtc->range_max = U32_MAX; 254 254 255 - ret = rtc_register_device(timer->rtc); 255 + ret = devm_rtc_register_device(timer->rtc); 256 256 if (ret) 257 257 goto err_notifier; 258 258
+1 -1
drivers/rtc/rtc-cadence.c
··· 336 336 writel(0, crtc->regs + CDNS_RTC_HMR); 337 337 writel(CDNS_RTC_KRTCR_KRTC, crtc->regs + CDNS_RTC_KRTCR); 338 338 339 - ret = rtc_register_device(crtc->rtc_dev); 339 + ret = devm_rtc_register_device(crtc->rtc_dev); 340 340 if (ret) 341 341 goto err_disable_wakeup; 342 342
+1 -1
drivers/rtc/rtc-cmos.c
··· 863 863 cmos_rtc.rtc->ops = &cmos_rtc_ops_no_alarm; 864 864 } 865 865 866 - retval = rtc_register_device(cmos_rtc.rtc); 866 + retval = devm_rtc_register_device(cmos_rtc.rtc); 867 867 if (retval) 868 868 goto cleanup2; 869 869
+1 -1
drivers/rtc/rtc-coh901331.c
··· 203 203 204 204 platform_set_drvdata(pdev, rtap); 205 205 206 - ret = rtc_register_device(rtap->rtc); 206 + ret = devm_rtc_register_device(rtap->rtc); 207 207 if (ret) 208 208 goto out_no_rtc; 209 209
+1 -1
drivers/rtc/rtc-cpcap.c
··· 301 301 /* ignore error and continue without wakeup support */ 302 302 } 303 303 304 - return rtc_register_device(rtc->rtc_dev); 304 + return devm_rtc_register_device(rtc->rtc_dev); 305 305 } 306 306 307 307 static const struct of_device_id cpcap_rtc_of_match[] = {
+1 -1
drivers/rtc/rtc-cros-ec.c
··· 350 350 cros_ec_rtc->rtc->ops = &cros_ec_rtc_ops; 351 351 cros_ec_rtc->rtc->range_max = U32_MAX; 352 352 353 - ret = rtc_register_device(cros_ec_rtc->rtc); 353 + ret = devm_rtc_register_device(cros_ec_rtc->rtc); 354 354 if (ret) 355 355 return ret; 356 356
+1 -1
drivers/rtc/rtc-da9052.c
··· 304 304 rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 305 305 rtc->rtc->range_max = RTC_TIMESTAMP_END_2063; 306 306 307 - ret = rtc_register_device(rtc->rtc); 307 + ret = devm_rtc_register_device(rtc->rtc); 308 308 if (ret) 309 309 return ret; 310 310
+1 -1
drivers/rtc/rtc-da9063.c
··· 494 494 dev_err(&pdev->dev, "Failed to request ALARM IRQ %d: %d\n", 495 495 irq_alarm, ret); 496 496 497 - return rtc_register_device(rtc->rtc_dev); 497 + return devm_rtc_register_device(rtc->rtc_dev); 498 498 } 499 499 500 500 static struct platform_driver da9063_rtc_driver = {
+1 -1
drivers/rtc/rtc-davinci.c
··· 484 484 485 485 device_init_wakeup(&pdev->dev, 0); 486 486 487 - return rtc_register_device(davinci_rtc->rtc); 487 + return devm_rtc_register_device(davinci_rtc->rtc); 488 488 } 489 489 490 490 static int __exit davinci_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-digicolor.c
··· 202 202 rtc->rtc_dev->ops = &dc_rtc_ops; 203 203 rtc->rtc_dev->range_max = U32_MAX; 204 204 205 - return rtc_register_device(rtc->rtc_dev); 205 + return devm_rtc_register_device(rtc->rtc_dev); 206 206 } 207 207 208 208 static const struct of_device_id dc_dt_ids[] = {
+1 -1
drivers/rtc/rtc-dm355evm.c
··· 132 132 rtc->ops = &dm355evm_rtc_ops; 133 133 rtc->range_max = U32_MAX; 134 134 135 - return rtc_register_device(rtc); 135 + return devm_rtc_register_device(rtc); 136 136 } 137 137 138 138 /*
+1 -1
drivers/rtc/rtc-ds1305.c
··· 694 694 ds1305->rtc->range_max = RTC_TIMESTAMP_END_2099; 695 695 696 696 ds1305_nvmem_cfg.priv = ds1305; 697 - status = rtc_register_device(ds1305->rtc); 697 + status = devm_rtc_register_device(ds1305->rtc); 698 698 if (status) 699 699 return status; 700 700
+1 -1
drivers/rtc/rtc-ds1307.c
··· 2001 2001 if (err) 2002 2002 return err; 2003 2003 2004 - err = rtc_register_device(ds1307->rtc); 2004 + err = devm_rtc_register_device(ds1307->rtc); 2005 2005 if (err) 2006 2006 return err; 2007 2007
+1 -1
drivers/rtc/rtc-ds1343.c
··· 408 408 dev_err(&spi->dev, 409 409 "unable to create sysfs entries for rtc ds1343\n"); 410 410 411 - res = rtc_register_device(priv->rtc); 411 + res = devm_rtc_register_device(priv->rtc); 412 412 if (res) 413 413 return res; 414 414
+1 -1
drivers/rtc/rtc-ds1347.c
··· 166 166 rtc->range_min = RTC_TIMESTAMP_BEGIN_0000; 167 167 rtc->range_max = RTC_TIMESTAMP_END_9999; 168 168 169 - return rtc_register_device(rtc); 169 + return devm_rtc_register_device(rtc); 170 170 } 171 171 172 172 static struct spi_driver ds1347_driver = {
+1 -1
drivers/rtc/rtc-ds1374.c
··· 508 508 ds1374->rtc->ops = &ds1374_rtc_ops; 509 509 ds1374->rtc->range_max = U32_MAX; 510 510 511 - ret = rtc_register_device(ds1374->rtc); 511 + ret = devm_rtc_register_device(ds1374->rtc); 512 512 if (ret) 513 513 return ret; 514 514
+1 -1
drivers/rtc/rtc-ds1511.c
··· 466 466 467 467 pdata->rtc->ops = &ds1511_rtc_ops; 468 468 469 - ret = rtc_register_device(pdata->rtc); 469 + ret = devm_rtc_register_device(pdata->rtc); 470 470 if (ret) 471 471 return ret; 472 472
+1 -1
drivers/rtc/rtc-ds1553.c
··· 295 295 296 296 pdata->rtc->ops = &ds1553_rtc_ops; 297 297 298 - ret = rtc_register_device(pdata->rtc); 298 + ret = devm_rtc_register_device(pdata->rtc); 299 299 if (ret) 300 300 return ret; 301 301
+1 -1
drivers/rtc/rtc-ds1672.c
··· 124 124 rtc->ops = &ds1672_rtc_ops; 125 125 rtc->range_max = U32_MAX; 126 126 127 - err = rtc_register_device(rtc); 127 + err = devm_rtc_register_device(rtc); 128 128 if (err) 129 129 return err; 130 130
+1 -1
drivers/rtc/rtc-ds1685.c
··· 1321 1321 if (ret) 1322 1322 return ret; 1323 1323 1324 - return rtc_register_device(rtc_dev); 1324 + return devm_rtc_register_device(rtc_dev); 1325 1325 } 1326 1326 1327 1327 /**
+1 -1
drivers/rtc/rtc-ds1742.c
··· 191 191 192 192 rtc->ops = &ds1742_rtc_ops; 193 193 194 - ret = rtc_register_device(rtc); 194 + ret = devm_rtc_register_device(rtc); 195 195 if (ret) 196 196 return ret; 197 197
+1 -1
drivers/rtc/rtc-ds2404.c
··· 234 234 chip->rtc->ops = &ds2404_rtc_ops; 235 235 chip->rtc->range_max = U32_MAX; 236 236 237 - retval = rtc_register_device(chip->rtc); 237 + retval = devm_rtc_register_device(chip->rtc); 238 238 if (retval) 239 239 return retval; 240 240
+1 -1
drivers/rtc/rtc-ep93xx.c
··· 145 145 if (err) 146 146 return err; 147 147 148 - return rtc_register_device(ep93xx_rtc->rtc); 148 + return devm_rtc_register_device(ep93xx_rtc->rtc); 149 149 } 150 150 151 151 static struct platform_driver ep93xx_rtc_driver = {
+1 -1
drivers/rtc/rtc-fsl-ftm-alarm.c
··· 290 290 if (ret) 291 291 dev_err(&pdev->dev, "failed to enable irq wake\n"); 292 292 293 - ret = rtc_register_device(rtc->rtc_dev); 293 + ret = devm_rtc_register_device(rtc->rtc_dev); 294 294 if (ret) { 295 295 dev_err(&pdev->dev, "can't register rtc device\n"); 296 296 return ret;
+1 -1
drivers/rtc/rtc-ftrtc010.c
··· 176 176 if (unlikely(ret)) 177 177 return ret; 178 178 179 - return rtc_register_device(rtc->rtc_dev); 179 + return devm_rtc_register_device(rtc->rtc_dev); 180 180 } 181 181 182 182 static int ftrtc010_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-goldfish.c
··· 194 194 if (err) 195 195 return err; 196 196 197 - return rtc_register_device(rtcdrv->rtc); 197 + return devm_rtc_register_device(rtcdrv->rtc); 198 198 } 199 199 200 200 static const struct of_device_id goldfish_rtc_of_match[] = {
+1 -1
drivers/rtc/rtc-imx-sc.c
··· 166 166 imx_sc_rtc->range_min = 0; 167 167 imx_sc_rtc->range_max = U32_MAX; 168 168 169 - ret = rtc_register_device(imx_sc_rtc); 169 + ret = devm_rtc_register_device(imx_sc_rtc); 170 170 if (ret) 171 171 return ret; 172 172
+1 -1
drivers/rtc/rtc-imxdi.c
··· 814 814 imxdi->rtc->ops = &dryice_rtc_ops; 815 815 imxdi->rtc->range_max = U32_MAX; 816 816 817 - rc = rtc_register_device(imxdi->rtc); 817 + rc = devm_rtc_register_device(imxdi->rtc); 818 818 if (rc) 819 819 goto err; 820 820
+1 -1
drivers/rtc/rtc-isl12026.c
··· 469 469 if (ret) 470 470 return ret; 471 471 472 - return rtc_register_device(priv->rtc); 472 + return devm_rtc_register_device(priv->rtc); 473 473 } 474 474 475 475 static int isl12026_remove(struct i2c_client *client)
+1 -1
drivers/rtc/rtc-isl1208.c
··· 894 894 if (rc) 895 895 return rc; 896 896 897 - return rtc_register_device(isl1208->rtc); 897 + return devm_rtc_register_device(isl1208->rtc); 898 898 } 899 899 900 900 static struct i2c_driver isl1208_driver = {
+1 -1
drivers/rtc/rtc-jz4740.c
··· 375 375 /* Each 1 Hz pulse should happen after (rate) ticks */ 376 376 jz4740_rtc_reg_write(rtc, JZ_REG_RTC_REGULATOR, rate - 1); 377 377 378 - ret = rtc_register_device(rtc->rtc); 378 + ret = devm_rtc_register_device(rtc->rtc); 379 379 if (ret) 380 380 return ret; 381 381
+1 -1
drivers/rtc/rtc-lpc32xx.c
··· 239 239 rtc->rtc->ops = &lpc32xx_rtc_ops; 240 240 rtc->rtc->range_max = U32_MAX; 241 241 242 - err = rtc_register_device(rtc->rtc); 242 + err = devm_rtc_register_device(rtc->rtc); 243 243 if (err) 244 244 return err; 245 245
+1 -1
drivers/rtc/rtc-ls1x.c
··· 176 176 rtcdev->range_min = RTC_TIMESTAMP_BEGIN_1900; 177 177 rtcdev->range_max = RTC_TIMESTAMP_END_2099; 178 178 179 - return rtc_register_device(rtcdev); 179 + return devm_rtc_register_device(rtcdev); 180 180 } 181 181 182 182 static struct platform_driver ls1x_rtc_driver = {
+1 -1
drivers/rtc/rtc-m41t80.c
··· 977 977 m41t80_sqw_register_clk(m41t80_data); 978 978 #endif 979 979 980 - rc = rtc_register_device(m41t80_data->rtc); 980 + rc = devm_rtc_register_device(m41t80_data->rtc); 981 981 if (rc) 982 982 return rc; 983 983
+1 -1
drivers/rtc/rtc-m48t59.c
··· 470 470 if (ret) 471 471 return ret; 472 472 473 - ret = rtc_register_device(m48t59->rtc); 473 + ret = devm_rtc_register_device(m48t59->rtc); 474 474 if (ret) 475 475 return ret; 476 476
+1 -1
drivers/rtc/rtc-m48t86.c
··· 255 255 256 256 info->rtc->ops = &m48t86_rtc_ops; 257 257 258 - err = rtc_register_device(info->rtc); 258 + err = devm_rtc_register_device(info->rtc); 259 259 if (err) 260 260 return err; 261 261
+1 -1
drivers/rtc/rtc-mc13xxx.c
··· 307 307 308 308 mc13xxx_unlock(mc13xxx); 309 309 310 - ret = rtc_register_device(priv->rtc); 310 + ret = devm_rtc_register_device(priv->rtc); 311 311 if (ret) { 312 312 mc13xxx_lock(mc13xxx); 313 313 goto err_irq_request;
+1 -1
drivers/rtc/rtc-meson-vrtc.c
··· 83 83 return PTR_ERR(vrtc->rtc); 84 84 85 85 vrtc->rtc->ops = &meson_vrtc_ops; 86 - return rtc_register_device(vrtc->rtc); 86 + return devm_rtc_register_device(vrtc->rtc); 87 87 } 88 88 89 89 static int __maybe_unused meson_vrtc_suspend(struct device *dev)
+1 -1
drivers/rtc/rtc-meson.c
··· 369 369 if (ret) 370 370 goto out_disable_vdd; 371 371 372 - ret = rtc_register_device(rtc->rtc); 372 + ret = devm_rtc_register_device(rtc->rtc); 373 373 if (ret) 374 374 goto out_disable_vdd; 375 375
+1 -1
drivers/rtc/rtc-mpc5121.c
··· 371 371 rtc->rtc->range_max = U32_MAX; 372 372 } 373 373 374 - err = rtc_register_device(rtc->rtc); 374 + err = devm_rtc_register_device(rtc->rtc); 375 375 if (err) 376 376 goto out_dispose2; 377 377
+1 -1
drivers/rtc/rtc-mrst.c
··· 361 361 } 362 362 } 363 363 364 - retval = rtc_register_device(mrst_rtc.rtc); 364 + retval = devm_rtc_register_device(mrst_rtc.rtc); 365 365 if (retval) 366 366 goto cleanup0; 367 367
+1 -1
drivers/rtc/rtc-mt2712.c
··· 352 352 mt2712_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 353 353 mt2712_rtc->rtc->range_max = MT2712_RTC_TIMESTAMP_END_2127; 354 354 355 - return rtc_register_device(mt2712_rtc->rtc); 355 + return devm_rtc_register_device(mt2712_rtc->rtc); 356 356 } 357 357 358 358 #ifdef CONFIG_PM_SLEEP
+1 -1
drivers/rtc/rtc-mt6397.c
··· 301 301 302 302 rtc->rtc_dev->ops = &mtk_rtc_ops; 303 303 304 - return rtc_register_device(rtc->rtc_dev); 304 + return devm_rtc_register_device(rtc->rtc_dev); 305 305 } 306 306 307 307 #ifdef CONFIG_PM_SLEEP
+1 -1
drivers/rtc/rtc-mv.c
··· 278 278 pdata->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 279 279 pdata->rtc->range_max = RTC_TIMESTAMP_END_2099; 280 280 281 - ret = rtc_register_device(pdata->rtc); 281 + ret = devm_rtc_register_device(pdata->rtc); 282 282 if (!ret) 283 283 return 0; 284 284 out:
+1 -1
drivers/rtc/rtc-mxc.c
··· 408 408 dev_err(&pdev->dev, "failed to enable irq wake\n"); 409 409 } 410 410 411 - ret = rtc_register_device(rtc); 411 + ret = devm_rtc_register_device(rtc); 412 412 413 413 return ret; 414 414 }
+1 -1
drivers/rtc/rtc-mxc_v2.c
··· 354 354 return ret; 355 355 } 356 356 357 - ret = rtc_register_device(pdata->rtc); 357 + ret = devm_rtc_register_device(pdata->rtc); 358 358 if (ret < 0) 359 359 clk_unprepare(pdata->clk); 360 360
+1 -1
drivers/rtc/rtc-omap.c
··· 886 886 goto err; 887 887 } 888 888 889 - ret = rtc_register_device(rtc->rtc); 889 + ret = devm_rtc_register_device(rtc->rtc); 890 890 if (ret) 891 891 goto err; 892 892
+1 -1
drivers/rtc/rtc-pcap.c
··· 163 163 if (err) 164 164 return err; 165 165 166 - return rtc_register_device(pcap_rtc->rtc); 166 + return devm_rtc_register_device(pcap_rtc->rtc); 167 167 } 168 168 169 169 static int __exit pcap_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-pcf2123.c
··· 434 434 rtc->range_max = RTC_TIMESTAMP_END_2099; 435 435 rtc->set_start_time = true; 436 436 437 - ret = rtc_register_device(rtc); 437 + ret = devm_rtc_register_device(rtc); 438 438 if (ret) 439 439 return ret; 440 440
+1 -1
drivers/rtc/rtc-pcf2127.c
··· 682 682 return ret; 683 683 } 684 684 685 - return rtc_register_device(pcf2127->rtc); 685 + return devm_rtc_register_device(pcf2127->rtc); 686 686 } 687 687 688 688 #ifdef CONFIG_OF
+1 -1
drivers/rtc/rtc-pcf85063.c
··· 614 614 pcf85063_clkout_register_clk(pcf85063); 615 615 #endif 616 616 617 - return rtc_register_device(pcf85063->rtc); 617 + return devm_rtc_register_device(pcf85063->rtc); 618 618 } 619 619 620 620 #ifdef CONFIG_OF
+1 -1
drivers/rtc/rtc-pcf85363.c
··· 418 418 pcf85363->rtc->ops = &rtc_ops_alarm; 419 419 } 420 420 421 - ret = rtc_register_device(pcf85363->rtc); 421 + ret = devm_rtc_register_device(pcf85363->rtc); 422 422 423 423 for (i = 0; i < config->num_nvram; i++) { 424 424 nvmem_cfg[i].priv = pcf85363;
+1 -1
drivers/rtc/rtc-pcf8563.c
··· 582 582 } 583 583 } 584 584 585 - err = rtc_register_device(pcf8563->rtc); 585 + err = devm_rtc_register_device(pcf8563->rtc); 586 586 if (err) 587 587 return err; 588 588
+1 -1
drivers/rtc/rtc-pic32.c
··· 338 338 pdata->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 339 339 pdata->rtc->range_max = RTC_TIMESTAMP_END_2099; 340 340 341 - ret = rtc_register_device(pdata->rtc); 341 + ret = devm_rtc_register_device(pdata->rtc); 342 342 if (ret) 343 343 goto err_nortc; 344 344
+1 -1
drivers/rtc/rtc-pl030.c
··· 121 121 if (ret) 122 122 goto err_irq; 123 123 124 - ret = rtc_register_device(rtc->rtc); 124 + ret = devm_rtc_register_device(rtc->rtc); 125 125 if (ret) 126 126 goto err_reg; 127 127
+1 -1
drivers/rtc/rtc-pl031.c
··· 370 370 ldata->rtc->range_min = vendor->range_min; 371 371 ldata->rtc->range_max = vendor->range_max; 372 372 373 - ret = rtc_register_device(ldata->rtc); 373 + ret = devm_rtc_register_device(ldata->rtc); 374 374 if (ret) 375 375 goto out; 376 376
+1 -1
drivers/rtc/rtc-pm8xxx.c
··· 508 508 return rc; 509 509 } 510 510 511 - return rtc_register_device(rtc_dd->rtc); 511 + return devm_rtc_register_device(rtc_dd->rtc); 512 512 } 513 513 514 514 #ifdef CONFIG_PM_SLEEP
+1 -1
drivers/rtc/rtc-ps3.c
··· 56 56 57 57 platform_set_drvdata(dev, rtc); 58 58 59 - return rtc_register_device(rtc); 59 + return devm_rtc_register_device(rtc); 60 60 } 61 61 62 62 static struct platform_driver ps3_rtc_driver = {
+1 -1
drivers/rtc/rtc-r9701.c
··· 127 127 rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 128 128 rtc->range_max = RTC_TIMESTAMP_END_2099; 129 129 130 - return rtc_register_device(rtc); 130 + return devm_rtc_register_device(rtc); 131 131 } 132 132 133 133 static struct spi_driver r9701_driver = {
+1 -1
drivers/rtc/rtc-rc5t619.c
··· 426 426 dev_warn(&pdev->dev, "rc5t619 interrupt is disabled\n"); 427 427 } 428 428 429 - return rtc_register_device(rtc->rtc); 429 + return devm_rtc_register_device(rtc->rtc); 430 430 } 431 431 432 432 static struct platform_driver rc5t619_rtc_driver = {
+1 -1
drivers/rtc/rtc-rk808.c
··· 447 447 return ret; 448 448 } 449 449 450 - return rtc_register_device(rk808_rtc->rtc); 450 + return devm_rtc_register_device(rk808_rtc->rtc); 451 451 } 452 452 453 453 static struct platform_driver rk808_rtc_driver = {
+1 -1
drivers/rtc/rtc-rp5c01.c
··· 259 259 if (error) 260 260 return error; 261 261 262 - return rtc_register_device(rtc); 262 + return devm_rtc_register_device(rtc); 263 263 } 264 264 265 265 static struct platform_driver rp5c01_rtc_driver = {
+1 -1
drivers/rtc/rtc-rs5c348.c
··· 197 197 198 198 rtc->ops = &rs5c348_rtc_ops; 199 199 200 - return rtc_register_device(rtc); 200 + return devm_rtc_register_device(rtc); 201 201 } 202 202 203 203 static struct spi_driver rs5c348_driver = {
+1 -1
drivers/rtc/rtc-rv3028.c
··· 886 886 rv3028->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 887 887 rv3028->rtc->range_max = RTC_TIMESTAMP_END_2099; 888 888 rv3028->rtc->ops = &rv3028_rtc_ops; 889 - ret = rtc_register_device(rv3028->rtc); 889 + ret = devm_rtc_register_device(rv3028->rtc); 890 890 if (ret) 891 891 return ret; 892 892
+1 -1
drivers/rtc/rtc-rv3029c2.c
··· 750 750 rv3029->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 751 751 rv3029->rtc->range_max = RTC_TIMESTAMP_END_2079; 752 752 753 - rc = rtc_register_device(rv3029->rtc); 753 + rc = devm_rtc_register_device(rv3029->rtc); 754 754 if (rc) 755 755 return rc; 756 756
+1 -1
drivers/rtc/rtc-rv3032.c
··· 885 885 rv3032->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 886 886 rv3032->rtc->range_max = RTC_TIMESTAMP_END_2099; 887 887 rv3032->rtc->ops = &rv3032_rtc_ops; 888 - ret = rtc_register_device(rv3032->rtc); 888 + ret = devm_rtc_register_device(rv3032->rtc); 889 889 if (ret) 890 890 return ret; 891 891
+1 -1
drivers/rtc/rtc-rv8803.c
··· 587 587 rv8803->rtc->ops = &rv8803_rtc_ops; 588 588 rv8803->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 589 589 rv8803->rtc->range_max = RTC_TIMESTAMP_END_2099; 590 - err = rtc_register_device(rv8803->rtc); 590 + err = devm_rtc_register_device(rv8803->rtc); 591 591 if (err) 592 592 return err; 593 593
+1 -1
drivers/rtc/rtc-rx8010.c
··· 419 419 rx8010->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 420 420 rx8010->rtc->range_max = RTC_TIMESTAMP_END_2099; 421 421 422 - return rtc_register_device(rx8010->rtc); 422 + return devm_rtc_register_device(rx8010->rtc); 423 423 } 424 424 425 425 static struct i2c_driver rx8010_driver = {
+1 -1
drivers/rtc/rtc-rx8581.c
··· 298 298 rx8581->rtc->start_secs = 0; 299 299 rx8581->rtc->set_start_time = true; 300 300 301 - ret = rtc_register_device(rx8581->rtc); 301 + ret = devm_rtc_register_device(rx8581->rtc); 302 302 303 303 for (i = 0; i < config->num_nvram; i++) { 304 304 nvmem_cfg[i].priv = rx8581;
+1 -1
drivers/rtc/rtc-s35390a.c
··· 497 497 if (status1 & S35390A_FLAG_INT2) 498 498 rtc_update_irq(s35390a->rtc, 1, RTC_AF); 499 499 500 - return rtc_register_device(s35390a->rtc); 500 + return devm_rtc_register_device(s35390a->rtc); 501 501 } 502 502 503 503 static struct i2c_driver s35390a_driver = {
+1 -1
drivers/rtc/rtc-sa1100.c
··· 205 205 info->rtc->max_user_freq = RTC_FREQ; 206 206 info->rtc->range_max = U32_MAX; 207 207 208 - ret = rtc_register_device(info->rtc); 208 + ret = devm_rtc_register_device(info->rtc); 209 209 if (ret) { 210 210 clk_disable_unprepare(info->clk); 211 211 return ret;
+1 -1
drivers/rtc/rtc-sc27xx.c
··· 618 618 rtc->rtc->ops = &sprd_rtc_ops; 619 619 rtc->rtc->range_min = 0; 620 620 rtc->rtc->range_max = 5662310399LL; 621 - ret = rtc_register_device(rtc->rtc); 621 + ret = devm_rtc_register_device(rtc->rtc); 622 622 if (ret) { 623 623 device_init_wakeup(&pdev->dev, 0); 624 624 return ret;
+1 -1
drivers/rtc/rtc-sd3078.c
··· 192 192 sd3078->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 193 193 sd3078->rtc->range_max = RTC_TIMESTAMP_END_2099; 194 194 195 - ret = rtc_register_device(sd3078->rtc); 195 + ret = devm_rtc_register_device(sd3078->rtc); 196 196 if (ret) 197 197 return ret; 198 198
+1 -1
drivers/rtc/rtc-sh.c
··· 607 607 rtc->rtc_dev->range_max = mktime64(2098, 12, 31, 23, 59, 59); 608 608 } 609 609 610 - ret = rtc_register_device(rtc->rtc_dev); 610 + ret = devm_rtc_register_device(rtc->rtc_dev); 611 611 if (ret) 612 612 goto err_unmap; 613 613
+1 -1
drivers/rtc/rtc-sirfsoc.c
··· 356 356 return err; 357 357 } 358 358 359 - return rtc_register_device(rtcdrv->rtc); 359 + return devm_rtc_register_device(rtcdrv->rtc); 360 360 } 361 361 362 362 #ifdef CONFIG_PM_SLEEP
+1 -1
drivers/rtc/rtc-snvs.c
··· 387 387 data->rtc->ops = &snvs_rtc_ops; 388 388 data->rtc->range_max = U32_MAX; 389 389 390 - return rtc_register_device(data->rtc); 390 + return devm_rtc_register_device(data->rtc); 391 391 } 392 392 393 393 static int __maybe_unused snvs_rtc_suspend_noirq(struct device *dev)
+1 -1
drivers/rtc/rtc-st-lpc.c
··· 250 250 rtc->rtc_dev->range_max = U64_MAX; 251 251 do_div(rtc->rtc_dev->range_max, rtc->clkrate); 252 252 253 - ret = rtc_register_device(rtc->rtc_dev); 253 + ret = devm_rtc_register_device(rtc->rtc_dev); 254 254 if (ret) { 255 255 clk_disable_unprepare(rtc->clk); 256 256 return ret;
+1 -1
drivers/rtc/rtc-starfire.c
··· 48 48 49 49 platform_set_drvdata(pdev, rtc); 50 50 51 - return rtc_register_device(rtc); 51 + return devm_rtc_register_device(rtc); 52 52 } 53 53 54 54 static struct platform_driver starfire_rtc_driver = {
+1 -1
drivers/rtc/rtc-stk17ta8.c
··· 317 317 if (ret) 318 318 return ret; 319 319 320 - return rtc_register_device(pdata->rtc); 320 + return devm_rtc_register_device(pdata->rtc); 321 321 } 322 322 323 323 /* work with hotplug and coldplug */
+1 -1
drivers/rtc/rtc-stmp3xxx.c
··· 366 366 rtc_data->rtc->ops = &stmp3xxx_rtc_ops; 367 367 rtc_data->rtc->range_max = U32_MAX; 368 368 369 - err = rtc_register_device(rtc_data->rtc); 369 + err = devm_rtc_register_device(rtc_data->rtc); 370 370 if (err) 371 371 return err; 372 372
+1 -1
drivers/rtc/rtc-sun4v.c
··· 86 86 rtc->range_max = U64_MAX; 87 87 platform_set_drvdata(pdev, rtc); 88 88 89 - return rtc_register_device(rtc); 89 + return devm_rtc_register_device(rtc); 90 90 } 91 91 92 92 static struct platform_driver sun4v_rtc_driver = {
+1 -1
drivers/rtc/rtc-sun6i.c
··· 726 726 chip->rtc->ops = &sun6i_rtc_ops; 727 727 chip->rtc->range_max = 2019686399LL; /* 2033-12-31 23:59:59 */ 728 728 729 - ret = rtc_register_device(chip->rtc); 729 + ret = devm_rtc_register_device(chip->rtc); 730 730 if (ret) 731 731 return ret; 732 732
+1 -1
drivers/rtc/rtc-sunxi.c
··· 470 470 471 471 chip->rtc->ops = &sunxi_rtc_ops; 472 472 473 - return rtc_register_device(chip->rtc); 473 + return devm_rtc_register_device(chip->rtc); 474 474 } 475 475 476 476 static struct platform_driver sunxi_rtc_driver = {
+1 -1
drivers/rtc/rtc-tegra.c
··· 329 329 goto disable_clk; 330 330 } 331 331 332 - ret = rtc_register_device(info->rtc); 332 + ret = devm_rtc_register_device(info->rtc); 333 333 if (ret) 334 334 goto disable_clk; 335 335
+1 -1
drivers/rtc/rtc-test.c
··· 139 139 timer_setup(&rtd->alarm, test_rtc_alarm_handler, 0); 140 140 rtd->alarm.expires = 0; 141 141 142 - return rtc_register_device(rtd->rtc); 142 + return devm_rtc_register_device(rtd->rtc); 143 143 } 144 144 145 145 static struct platform_driver test_driver = {
+1 -1
drivers/rtc/rtc-tps6586x.c
··· 280 280 goto fail_rtc_register; 281 281 } 282 282 283 - ret = rtc_register_device(rtc->rtc); 283 + ret = devm_rtc_register_device(rtc->rtc); 284 284 if (ret) 285 285 goto fail_rtc_register; 286 286
+1 -1
drivers/rtc/rtc-tps65910.c
··· 434 434 tps_rtc->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 435 435 tps_rtc->rtc->range_max = RTC_TIMESTAMP_END_2099; 436 436 437 - return rtc_register_device(tps_rtc->rtc); 437 + return devm_rtc_register_device(tps_rtc->rtc); 438 438 } 439 439 440 440 #ifdef CONFIG_PM_SLEEP
+1 -1
drivers/rtc/rtc-tx4939.c
··· 275 275 if (ret) 276 276 return ret; 277 277 278 - return rtc_register_device(rtc); 278 + return devm_rtc_register_device(rtc); 279 279 } 280 280 281 281 static int __exit tx4939_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-vr41xx.c
··· 335 335 336 336 dev_info(&pdev->dev, "Real Time Clock of NEC VR4100 series\n"); 337 337 338 - retval = rtc_register_device(rtc); 338 + retval = devm_rtc_register_device(rtc); 339 339 if (retval) 340 340 goto err_iounmap_all; 341 341
+1 -1
drivers/rtc/rtc-vt8500.c
··· 232 232 return ret; 233 233 } 234 234 235 - return rtc_register_device(vt8500_rtc->rtc); 235 + return devm_rtc_register_device(vt8500_rtc->rtc); 236 236 } 237 237 238 238 static int vt8500_rtc_remove(struct platform_device *pdev)
+1 -1
drivers/rtc/rtc-wilco-ec.c
··· 176 176 rtc->range_max = RTC_TIMESTAMP_END_2099; 177 177 rtc->owner = THIS_MODULE; 178 178 179 - return rtc_register_device(rtc); 179 + return devm_rtc_register_device(rtc); 180 180 } 181 181 182 182 static struct platform_driver wilco_ec_rtc_driver = {
+1 -1
drivers/rtc/rtc-wm831x.c
··· 429 429 wm831x_rtc->rtc->ops = &wm831x_rtc_ops; 430 430 wm831x_rtc->rtc->range_max = U32_MAX; 431 431 432 - ret = rtc_register_device(wm831x_rtc->rtc); 432 + ret = devm_rtc_register_device(wm831x_rtc->rtc); 433 433 if (ret) 434 434 return ret; 435 435
+1 -1
drivers/rtc/rtc-xgene.c
··· 185 185 pdata->rtc->ops = &xgene_rtc_ops; 186 186 pdata->rtc->range_max = U32_MAX; 187 187 188 - ret = rtc_register_device(pdata->rtc); 188 + ret = devm_rtc_register_device(pdata->rtc); 189 189 if (ret) { 190 190 clk_disable_unprepare(pdata->clk); 191 191 return ret;
+1 -1
drivers/rtc/rtc-zynqmp.c
··· 264 264 265 265 device_init_wakeup(&pdev->dev, 1); 266 266 267 - return rtc_register_device(xrtcdev->rtc); 267 + return devm_rtc_register_device(xrtcdev->rtc); 268 268 } 269 269 270 270 static int xlnx_rtc_remove(struct platform_device *pdev)
-2
drivers/rtc/sysfs.c
··· 317 317 size_t old_cnt = 0, add_cnt = 0, new_cnt; 318 318 const struct attribute_group **groups, **old; 319 319 320 - if (rtc->registered) 321 - return -EINVAL; 322 320 if (!grps) 323 321 return -EINVAL; 324 322
+3 -5
include/linux/rtc.h
··· 118 118 */ 119 119 long set_offset_nsec; 120 120 121 - bool registered; 122 - 123 121 time64_t range_min; 124 122 timeu64_t range_max; 125 123 time64_t start_secs; ··· 155 157 const struct rtc_class_ops *ops, 156 158 struct module *owner); 157 159 struct rtc_device *devm_rtc_allocate_device(struct device *dev); 158 - int __rtc_register_device(struct module *owner, struct rtc_device *rtc); 160 + int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc); 159 161 160 162 extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm); 161 163 extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm); ··· 232 234 return false; 233 235 } 234 236 235 - #define rtc_register_device(device) \ 236 - __rtc_register_device(THIS_MODULE, device) 237 + #define devm_rtc_register_device(device) \ 238 + __devm_rtc_register_device(THIS_MODULE, device) 237 239 238 240 #ifdef CONFIG_RTC_HCTOSYS_DEVICE 239 241 extern int rtc_hctosys_ret;