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

Merge tag 'rtc-5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux

Pull RTC updates from Alexandre Belloni:
"Subsystem:

- Remove nvram ABI. There was no complaints about the deprecation for
the last 3 years.

- Improve RTC device allocation and registration

- Now available for ARCH=um

Drivers:

- at91rm9200: correction and sam9x60 support

- ds1307: improve ACPI support

- mxc: now DT only

- pcf2127: watchdog support now needs the reset-source property

- pcf8523: set range

- rx6110: i2c support"

* tag 'rtc-5.11' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (43 commits)
rtc: pcf2127: only use watchdog when explicitly available
dt-bindings: rtc: add reset-source property
rtc: fix RTC removal
rtc: s3c: Remove dead code related to periodic tick handling
rtc: s3c: Disable all enable (RTC, tick) bits in the probe
rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time
rtc: test: remove debug message
rtc: mxc{,_v2}: enable COMPILE_TEST
rtc: enable RTC framework on ARCH=um
rtc: pcf8523: use BIT
rtc: pcf8523: set range
rtc: pcf8523: switch to devm_rtc_allocate_device
rtc: destroy mutex when releasing the device
rtc: shrink devm_rtc_allocate_device()
rtc: rework rtc_register_device() resource management
rtc: nvmem: emit an error message when nvmem registration fails
rtc: add devm_ prefix to rtc_nvmem_register()
rtc: nvmem: remove nvram ABI
Documentation: list RTC devres helpers in devres.rst
rtc: omap: use devm_pinctrl_register()
...

+579 -790
+5
Documentation/devicetree/bindings/rtc/rtc.yaml
··· 63 63 description: 64 64 Enables wake up of host system on alarm. 65 65 66 + reset-source: 67 + $ref: /schemas/types.yaml#/definitions/flag 68 + description: 69 + The RTC is able to reset the machine. 70 + 66 71 additionalProperties: true 67 72 68 73 ...
+6
Documentation/driver-api/driver-model/devres.rst
··· 411 411 devm_reset_control_get() 412 412 devm_reset_controller_register() 413 413 414 + RTC 415 + devm_rtc_device_register() 416 + devm_rtc_allocate_device() 417 + devm_rtc_register_device() 418 + devm_rtc_nvmem_register() 419 + 414 420 SERDEV 415 421 devm_serdev_device_open() 416 422
+1 -1
MAINTAINERS
··· 1183 1183 F: drivers/irqchip/irq-goldfish-pic.c 1184 1184 1185 1185 ANDROID GOLDFISH RTC DRIVER 1186 - M: Miodrag Dinic <miodrag.dinic@mips.com> 1186 + M: Jiaxun Yang <jiaxun.yang@flygoat.com> 1187 1187 S: Supported 1188 1188 F: Documentation/devicetree/bindings/rtc/google,goldfish-rtc.txt 1189 1189 F: drivers/rtc/rtc-goldfish.c
+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);
+20 -13
drivers/rtc/Kconfig
··· 13 13 menuconfig RTC_CLASS 14 14 bool "Real Time Clock" 15 15 default n 16 - depends on !S390 && !UML 16 + depends on !S390 17 17 select RTC_LIB 18 18 help 19 19 Generic RTC class support. If you say yes here, you will ··· 817 817 This driver can also be built as a module. If so the module 818 818 will be called rtc-rx4581. 819 819 820 - config RTC_DRV_RX6110 821 - tristate "Epson RX-6110" 822 - select REGMAP_SPI 823 - help 824 - If you say yes here you will get support for the Epson RX-6610. 825 - 826 - This driver can also be built as a module. If so the module 827 - will be called rtc-rx6110. 828 - 829 820 config RTC_DRV_RS5C348 830 821 tristate "Ricoh RS5C348A/B" 831 822 help ··· 927 936 Say Y here if you want to expose temperature sensor data on 928 937 rtc-rv3029. 929 938 939 + config RTC_DRV_RX6110 940 + tristate "Epson RX-6110" 941 + depends on RTC_I2C_AND_SPI 942 + select REGMAP_SPI if SPI_MASTER 943 + select REGMAP_I2C if I2C 944 + help 945 + If you say yes here you will get support for the Epson RX-6110. 946 + 947 + This driver can also be built as a module. If so the module 948 + will be called rtc-rx6110. 949 + 930 950 comment "Platform RTC drivers" 931 951 932 952 # this 'CMOS' RTC driver is arch dependent because it requires ··· 1019 1017 1020 1018 config RTC_DRV_DS1685_FAMILY 1021 1019 tristate "Dallas/Maxim DS1685 Family" 1020 + depends on HAS_IOMEM 1022 1021 help 1023 1022 If you say yes here you get support for the Dallas/Maxim DS1685 1024 1023 family of real time chips. This family includes the DS1685/DS1687, ··· 1153 1150 1154 1151 config RTC_DRV_M48T86 1155 1152 tristate "ST M48T86/Dallas DS12887" 1153 + depends on HAS_IOMEM 1156 1154 help 1157 1155 If you say Y here you will get support for the 1158 1156 ST M48T86 and Dallas DS12887 RTC chips. ··· 1756 1752 1757 1753 config RTC_DRV_MXC 1758 1754 tristate "Freescale MXC Real Time Clock" 1759 - depends on ARCH_MXC 1755 + depends on ARCH_MXC || COMPILE_TEST 1756 + depends on HAS_IOMEM 1757 + depends on OF 1760 1758 help 1761 1759 If you say yes here you get support for the Freescale MXC 1762 1760 RTC module. ··· 1768 1762 1769 1763 config RTC_DRV_MXC_V2 1770 1764 tristate "Freescale MXC Real Time Clock for i.MX53" 1771 - depends on ARCH_MXC 1765 + depends on ARCH_MXC || COMPILE_TEST 1766 + depends on HAS_IOMEM 1767 + depends on OF 1772 1768 help 1773 1769 If you say yes here you get support for the Freescale MXC 1774 1770 SRTC module in i.MX53 processor. ··· 1943 1935 config RTC_DRV_GOLDFISH 1944 1936 tristate "Goldfish Real Time Clock" 1945 1937 depends on OF && HAS_IOMEM 1946 - depends on GOLDFISH || COMPILE_TEST 1947 1938 help 1948 1939 Say yes to enable RTC driver for the Goldfish based virtual platform. 1949 1940
+19 -33
drivers/rtc/class.c
··· 28 28 struct rtc_device *rtc = to_rtc_device(dev); 29 29 30 30 ida_simple_remove(&rtc_ida, rtc->id); 31 + mutex_destroy(&rtc->ops_lock); 31 32 kfree(rtc); 32 33 } 33 34 ··· 327 326 * 328 327 * @rtc: the RTC class device to destroy 329 328 */ 330 - static void rtc_device_unregister(struct rtc_device *rtc) 329 + static void devm_rtc_unregister_device(void *data) 331 330 { 331 + struct rtc_device *rtc = data; 332 + 332 333 mutex_lock(&rtc->ops_lock); 333 334 /* 334 335 * Remove innards of this RTC, then disable it, before ··· 340 337 cdev_device_del(&rtc->char_dev, &rtc->dev); 341 338 rtc->ops = NULL; 342 339 mutex_unlock(&rtc->ops_lock); 343 - put_device(&rtc->dev); 344 340 } 345 341 346 - static void devm_rtc_release_device(struct device *dev, void *res) 342 + static void devm_rtc_release_device(void *res) 347 343 { 348 - struct rtc_device *rtc = *(struct rtc_device **)res; 344 + struct rtc_device *rtc = res; 349 345 350 - rtc_nvmem_unregister(rtc); 351 - 352 - if (rtc->registered) 353 - rtc_device_unregister(rtc); 354 - else 355 - put_device(&rtc->dev); 346 + put_device(&rtc->dev); 356 347 } 357 348 358 349 struct rtc_device *devm_rtc_allocate_device(struct device *dev) 359 350 { 360 - struct rtc_device **ptr, *rtc; 351 + struct rtc_device *rtc; 361 352 int id, err; 362 353 363 354 id = rtc_device_get_id(dev); 364 355 if (id < 0) 365 356 return ERR_PTR(id); 366 357 367 - ptr = devres_alloc(devm_rtc_release_device, sizeof(*ptr), GFP_KERNEL); 368 - if (!ptr) { 369 - err = -ENOMEM; 370 - goto exit_ida; 371 - } 372 - 373 358 rtc = rtc_allocate_device(); 374 359 if (!rtc) { 375 - err = -ENOMEM; 376 - goto exit_devres; 360 + ida_simple_remove(&rtc_ida, id); 361 + return ERR_PTR(-ENOMEM); 377 362 } 378 - 379 - *ptr = rtc; 380 - devres_add(dev, ptr); 381 363 382 364 rtc->id = id; 383 365 rtc->dev.parent = dev; 384 366 dev_set_name(&rtc->dev, "rtc%d", id); 385 367 386 - return rtc; 368 + err = devm_add_action_or_reset(dev, devm_rtc_release_device, rtc); 369 + if (err) 370 + return ERR_PTR(err); 387 371 388 - exit_devres: 389 - devres_free(ptr); 390 - exit_ida: 391 - ida_simple_remove(&rtc_ida, id); 392 - return ERR_PTR(err); 372 + return rtc; 393 373 } 394 374 EXPORT_SYMBOL_GPL(devm_rtc_allocate_device); 395 375 396 - int __rtc_register_device(struct module *owner, struct rtc_device *rtc) 376 + int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc) 397 377 { 398 378 struct rtc_wkalrm alrm; 399 379 int err; ··· 406 420 407 421 rtc_proc_add_device(rtc); 408 422 409 - rtc->registered = true; 410 423 dev_info(rtc->dev.parent, "registered as %s\n", 411 424 dev_name(&rtc->dev)); 412 425 ··· 414 429 rtc_hctosys(rtc); 415 430 #endif 416 431 417 - return 0; 432 + return devm_add_action_or_reset(rtc->dev.parent, 433 + devm_rtc_unregister_device, rtc); 418 434 } 419 - EXPORT_SYMBOL_GPL(__rtc_register_device); 435 + EXPORT_SYMBOL_GPL(__devm_rtc_register_device); 420 436 421 437 /** 422 438 * devm_rtc_device_register - resource managed rtc_device_register() ··· 447 461 448 462 rtc->ops = ops; 449 463 450 - err = __rtc_register_device(owner, rtc); 464 + err = __devm_rtc_register_device(owner, rtc); 451 465 if (err) 452 466 return ERR_PTR(err); 453 467
+7 -84
drivers/rtc/nvmem.c
··· 9 9 #include <linux/types.h> 10 10 #include <linux/nvmem-consumer.h> 11 11 #include <linux/rtc.h> 12 - #include <linux/slab.h> 13 - #include <linux/sysfs.h> 14 12 15 - /* 16 - * Deprecated ABI compatibility, this should be removed at some point 17 - */ 18 - 19 - static const char nvram_warning[] = "Deprecated ABI, please use nvmem"; 20 - 21 - static ssize_t 22 - rtc_nvram_read(struct file *filp, struct kobject *kobj, 23 - struct bin_attribute *attr, 24 - char *buf, loff_t off, size_t count) 25 - { 26 - dev_warn_once(kobj_to_dev(kobj), nvram_warning); 27 - 28 - return nvmem_device_read(attr->private, off, count, buf); 29 - } 30 - 31 - static ssize_t 32 - rtc_nvram_write(struct file *filp, struct kobject *kobj, 33 - struct bin_attribute *attr, 34 - char *buf, loff_t off, size_t count) 35 - { 36 - dev_warn_once(kobj_to_dev(kobj), nvram_warning); 37 - 38 - return nvmem_device_write(attr->private, off, count, buf); 39 - } 40 - 41 - static int rtc_nvram_register(struct rtc_device *rtc, 42 - struct nvmem_device *nvmem, size_t size) 43 - { 44 - int err; 45 - 46 - rtc->nvram = kzalloc(sizeof(*rtc->nvram), GFP_KERNEL); 47 - if (!rtc->nvram) 48 - return -ENOMEM; 49 - 50 - rtc->nvram->attr.name = "nvram"; 51 - rtc->nvram->attr.mode = 0644; 52 - rtc->nvram->private = nvmem; 53 - 54 - sysfs_bin_attr_init(rtc->nvram); 55 - 56 - rtc->nvram->read = rtc_nvram_read; 57 - rtc->nvram->write = rtc_nvram_write; 58 - rtc->nvram->size = size; 59 - 60 - err = sysfs_create_bin_file(&rtc->dev.parent->kobj, 61 - rtc->nvram); 62 - if (err) { 63 - kfree(rtc->nvram); 64 - rtc->nvram = NULL; 65 - } 66 - 67 - return err; 68 - } 69 - 70 - static void rtc_nvram_unregister(struct rtc_device *rtc) 71 - { 72 - sysfs_remove_bin_file(&rtc->dev.parent->kobj, rtc->nvram); 73 - kfree(rtc->nvram); 74 - rtc->nvram = NULL; 75 - } 76 - 77 - /* 78 - * New ABI, uses nvmem 79 - */ 80 - int rtc_nvmem_register(struct rtc_device *rtc, 13 + int devm_rtc_nvmem_register(struct rtc_device *rtc, 81 14 struct nvmem_config *nvmem_config) 82 15 { 16 + struct device *dev = rtc->dev.parent; 83 17 struct nvmem_device *nvmem; 84 18 85 19 if (!nvmem_config) 86 20 return -ENODEV; 87 21 88 - nvmem_config->dev = rtc->dev.parent; 22 + nvmem_config->dev = dev; 89 23 nvmem_config->owner = rtc->owner; 90 - nvmem = devm_nvmem_register(rtc->dev.parent, nvmem_config); 24 + nvmem = devm_nvmem_register(dev, nvmem_config); 91 25 if (IS_ERR(nvmem)) 92 - return PTR_ERR(nvmem); 26 + dev_err(dev, "failed to register nvmem device for RTC\n"); 93 27 94 - /* Register the old ABI */ 95 - if (rtc->nvram_old_abi) 96 - rtc_nvram_register(rtc, nvmem, nvmem_config->size); 97 - 98 - return 0; 28 + return PTR_ERR_OR_ZERO(nvmem); 99 29 } 100 - EXPORT_SYMBOL_GPL(rtc_nvmem_register); 101 - 102 - void rtc_nvmem_unregister(struct rtc_device *rtc) 103 - { 104 - /* unregister the old ABI */ 105 - if (rtc->nvram) 106 - rtc_nvram_unregister(rtc); 107 - } 30 + EXPORT_SYMBOL_GPL(devm_rtc_nvmem_register);
+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[] = {
+103 -5
drivers/rtc/rtc-at91rm9200.c
··· 36 36 #define AT91_RTC_UPDCAL BIT(1) /* Update Request Calendar Register */ 37 37 38 38 #define AT91_RTC_MR 0x04 /* Mode Register */ 39 + #define AT91_RTC_HRMOD BIT(0) /* 12/24 hour mode */ 40 + #define AT91_RTC_NEGPPM BIT(4) /* Negative PPM correction */ 41 + #define AT91_RTC_CORRECTION GENMASK(14, 8) /* Slow clock correction */ 42 + #define AT91_RTC_HIGHPPM BIT(15) /* High PPM correction */ 39 43 40 44 #define AT91_RTC_TIMR 0x08 /* Time Register */ 41 45 #define AT91_RTC_SEC GENMASK(6, 0) /* Current Second */ ··· 81 77 #define AT91_RTC_NVTIMALR BIT(2) /* Non valid Time Alarm */ 82 78 #define AT91_RTC_NVCALALR BIT(3) /* Non valid Calendar Alarm */ 83 79 80 + #define AT91_RTC_CORR_DIVIDEND 3906000 81 + #define AT91_RTC_CORR_LOW_RATIO 20 82 + 84 83 #define at91_rtc_read(field) \ 85 84 readl_relaxed(at91_rtc_regs + field) 86 85 #define at91_rtc_write(field, val) \ ··· 91 84 92 85 struct at91_rtc_config { 93 86 bool use_shadow_imr; 87 + bool has_correction; 94 88 }; 95 89 96 90 static const struct at91_rtc_config *at91_rtc_config; ··· 301 293 return 0; 302 294 } 303 295 296 + static int at91_rtc_readoffset(struct device *dev, long *offset) 297 + { 298 + u32 mr = at91_rtc_read(AT91_RTC_MR); 299 + long val = FIELD_GET(AT91_RTC_CORRECTION, mr); 300 + 301 + if (!val) { 302 + *offset = 0; 303 + return 0; 304 + } 305 + 306 + val++; 307 + 308 + if (!(mr & AT91_RTC_NEGPPM)) 309 + val = -val; 310 + 311 + if (!(mr & AT91_RTC_HIGHPPM)) 312 + val *= AT91_RTC_CORR_LOW_RATIO; 313 + 314 + *offset = DIV_ROUND_CLOSEST(AT91_RTC_CORR_DIVIDEND, val); 315 + 316 + return 0; 317 + } 318 + 319 + static int at91_rtc_setoffset(struct device *dev, long offset) 320 + { 321 + long corr; 322 + u32 mr; 323 + 324 + if (offset > AT91_RTC_CORR_DIVIDEND / 2) 325 + return -ERANGE; 326 + if (offset < -AT91_RTC_CORR_DIVIDEND / 2) 327 + return -ERANGE; 328 + 329 + mr = at91_rtc_read(AT91_RTC_MR); 330 + mr &= ~(AT91_RTC_NEGPPM | AT91_RTC_CORRECTION | AT91_RTC_HIGHPPM); 331 + 332 + if (offset > 0) 333 + mr |= AT91_RTC_NEGPPM; 334 + else 335 + offset = -offset; 336 + 337 + /* offset less than 764 ppb, disable correction*/ 338 + if (offset < 764) { 339 + at91_rtc_write(AT91_RTC_MR, mr & ~AT91_RTC_NEGPPM); 340 + 341 + return 0; 342 + } 343 + 344 + /* 345 + * 29208 ppb is the perfect cutoff between low range and high range 346 + * low range values are never better than high range value after that. 347 + */ 348 + if (offset < 29208) { 349 + corr = DIV_ROUND_CLOSEST(AT91_RTC_CORR_DIVIDEND, offset * AT91_RTC_CORR_LOW_RATIO); 350 + } else { 351 + corr = DIV_ROUND_CLOSEST(AT91_RTC_CORR_DIVIDEND, offset); 352 + mr |= AT91_RTC_HIGHPPM; 353 + } 354 + 355 + if (corr > 128) 356 + corr = 128; 357 + 358 + mr |= FIELD_PREP(AT91_RTC_CORRECTION, corr - 1); 359 + 360 + at91_rtc_write(AT91_RTC_MR, mr); 361 + 362 + return 0; 363 + } 364 + 304 365 /* 305 366 * IRQ handler for the RTC 306 367 */ ··· 420 343 .use_shadow_imr = true, 421 344 }; 422 345 346 + static const struct at91_rtc_config sama5d4_config = { 347 + .has_correction = true, 348 + }; 349 + 423 350 static const struct of_device_id at91_rtc_dt_ids[] = { 424 351 { 425 352 .compatible = "atmel,at91rm9200-rtc", ··· 433 352 .data = &at91sam9x5_config, 434 353 }, { 435 354 .compatible = "atmel,sama5d4-rtc", 436 - .data = &at91rm9200_config, 355 + .data = &sama5d4_config, 437 356 }, { 438 357 .compatible = "atmel,sama5d2-rtc", 439 - .data = &at91rm9200_config, 358 + .data = &sama5d4_config, 359 + }, { 360 + .compatible = "microchip,sam9x60-rtc", 361 + .data = &sama5d4_config, 440 362 }, { 441 363 /* sentinel */ 442 364 } ··· 452 368 .read_alarm = at91_rtc_readalarm, 453 369 .set_alarm = at91_rtc_setalarm, 454 370 .alarm_irq_enable = at91_rtc_alarm_irq_enable, 371 + }; 372 + 373 + static const struct rtc_class_ops sama5d4_rtc_ops = { 374 + .read_time = at91_rtc_readtime, 375 + .set_time = at91_rtc_settime, 376 + .read_alarm = at91_rtc_readalarm, 377 + .set_alarm = at91_rtc_setalarm, 378 + .alarm_irq_enable = at91_rtc_alarm_irq_enable, 379 + .set_offset = at91_rtc_setoffset, 380 + .read_offset = at91_rtc_readoffset, 455 381 }; 456 382 457 383 /* ··· 510 416 } 511 417 512 418 at91_rtc_write(AT91_RTC_CR, 0); 513 - at91_rtc_write(AT91_RTC_MR, 0); /* 24 hour mode */ 419 + at91_rtc_write(AT91_RTC_MR, at91_rtc_read(AT91_RTC_MR) & ~AT91_RTC_HRMOD); 514 420 515 421 /* Disable all interrupts */ 516 422 at91_rtc_write_idr(AT91_RTC_ACKUPD | AT91_RTC_ALARM | ··· 531 437 if (!device_can_wakeup(&pdev->dev)) 532 438 device_init_wakeup(&pdev->dev, 1); 533 439 534 - rtc->ops = &at91_rtc_ops; 440 + if (at91_rtc_config->has_correction) 441 + rtc->ops = &sama5d4_rtc_ops; 442 + else 443 + rtc->ops = &at91_rtc_ops; 444 + 535 445 rtc->range_min = RTC_TIMESTAMP_BEGIN_1900; 536 446 rtc->range_max = RTC_TIMESTAMP_END_2099; 537 - ret = rtc_register_device(rtc); 447 + ret = devm_rtc_register_device(rtc); 538 448 if (ret) 539 449 goto err_clk; 540 450
+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[] = {
+2 -3
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 ··· 264 264 unregister_reboot_notifier(&timer->reboot_notifier); 265 265 266 266 err_clk: 267 - if (timer->clk) 268 - clk_disable_unprepare(timer->clk); 267 + clk_disable_unprepare(timer->clk); 269 268 270 269 return ret; 271 270 }
+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
+2 -4
drivers/rtc/rtc-cmos.c
··· 863 863 cmos_rtc.rtc->ops = &cmos_rtc_ops_no_alarm; 864 864 } 865 865 866 - cmos_rtc.rtc->nvram_old_abi = true; 867 - retval = rtc_register_device(cmos_rtc.rtc); 866 + retval = devm_rtc_register_device(cmos_rtc.rtc); 868 867 if (retval) 869 868 goto cleanup2; 870 869 ··· 872 873 873 874 /* export at least the first block of NVRAM */ 874 875 nvmem_cfg.size = address_space - NVRAM_OFFSET; 875 - if (rtc_nvmem_register(cmos_rtc.rtc, &nvmem_cfg)) 876 - dev_err(dev, "nvmem registration failed\n"); 876 + devm_rtc_nvmem_register(cmos_rtc.rtc, &nvmem_cfg); 877 877 878 878 dev_info(dev, "%s%s, %d bytes nvram%s\n", 879 879 !is_valid_irq(rtc_irq) ? "no alarms" :
+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
+5 -3
drivers/rtc/rtc-cpcap.c
··· 269 269 270 270 rtc->alarm_irq = platform_get_irq(pdev, 0); 271 271 err = devm_request_threaded_irq(dev, rtc->alarm_irq, NULL, 272 - cpcap_rtc_alarm_irq, IRQF_TRIGGER_NONE, 272 + cpcap_rtc_alarm_irq, 273 + IRQF_TRIGGER_NONE | IRQF_ONESHOT, 273 274 "rtc_alarm", rtc); 274 275 if (err) { 275 276 dev_err(dev, "Could not request alarm irq: %d\n", err); ··· 286 285 */ 287 286 rtc->update_irq = platform_get_irq(pdev, 1); 288 287 err = devm_request_threaded_irq(dev, rtc->update_irq, NULL, 289 - cpcap_rtc_update_irq, IRQF_TRIGGER_NONE, 288 + cpcap_rtc_update_irq, 289 + IRQF_TRIGGER_NONE | IRQF_ONESHOT, 290 290 "rtc_1hz", rtc); 291 291 if (err) { 292 292 dev_err(dev, "Could not request update irq: %d\n", err); ··· 301 299 /* ignore error and continue without wakeup support */ 302 300 } 303 301 304 - return rtc_register_device(rtc->rtc_dev); 302 + return devm_rtc_register_device(rtc->rtc_dev); 305 303 } 306 304 307 305 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
+2 -2
drivers/rtc/rtc-da9063.c
··· 243 243 al_secs = rtc_tm_to_time64(&rtc->alarm_time); 244 244 245 245 /* handle the rtc synchronisation delay */ 246 - if (rtc->rtc_sync == true && al_secs - tm_secs == 1) 246 + if (rtc->rtc_sync && al_secs - tm_secs == 1) 247 247 memcpy(tm, &rtc->alarm_time, sizeof(struct rtc_time)); 248 248 else 249 249 rtc->rtc_sync = false; ··· 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 /*
+2 -3
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 - ds1305->rtc->nvram_old_abi = true; 698 - status = rtc_register_device(ds1305->rtc); 697 + status = devm_rtc_register_device(ds1305->rtc); 699 698 if (status) 700 699 return status; 701 700 702 - rtc_nvmem_register(ds1305->rtc, &ds1305_nvmem_cfg); 701 + devm_rtc_nvmem_register(ds1305->rtc, &ds1305_nvmem_cfg); 703 702 704 703 /* Maybe set up alarm IRQ; be ready to handle it triggering right 705 704 * away. NOTE that we don't share this. The signal is active low,
+25 -58
drivers/rtc/rtc-ds1307.c
··· 8 8 * Copyright (C) 2012 Bertrand Achard (nvram access fixes) 9 9 */ 10 10 11 - #include <linux/acpi.h> 12 11 #include <linux/bcd.h> 13 12 #include <linux/i2c.h> 14 13 #include <linux/init.h> 14 + #include <linux/mod_devicetable.h> 15 15 #include <linux/module.h> 16 - #include <linux/of_device.h> 16 + #include <linux/property.h> 17 17 #include <linux/rtc/ds1307.h> 18 18 #include <linux/rtc.h> 19 19 #include <linux/slab.h> ··· 31 31 * That's a natural job for a factory or repair bench. 32 32 */ 33 33 enum ds_type { 34 + unknown_ds_type, /* always first and 0 */ 34 35 ds_1307, 35 36 ds_1308, 36 37 ds_1337, ··· 1091 1090 }; 1092 1091 MODULE_DEVICE_TABLE(i2c, ds1307_id); 1093 1092 1094 - #ifdef CONFIG_OF 1095 1093 static const struct of_device_id ds1307_of_match[] = { 1096 1094 { 1097 1095 .compatible = "dallas,ds1307", ··· 1167 1167 { } 1168 1168 }; 1169 1169 MODULE_DEVICE_TABLE(of, ds1307_of_match); 1170 - #endif 1171 - 1172 - #ifdef CONFIG_ACPI 1173 - static const struct acpi_device_id ds1307_acpi_ids[] = { 1174 - { .id = "DS1307", .driver_data = ds_1307 }, 1175 - { .id = "DS1308", .driver_data = ds_1308 }, 1176 - { .id = "DS1337", .driver_data = ds_1337 }, 1177 - { .id = "DS1338", .driver_data = ds_1338 }, 1178 - { .id = "DS1339", .driver_data = ds_1339 }, 1179 - { .id = "DS1388", .driver_data = ds_1388 }, 1180 - { .id = "DS1340", .driver_data = ds_1340 }, 1181 - { .id = "DS1341", .driver_data = ds_1341 }, 1182 - { .id = "DS3231", .driver_data = ds_3231 }, 1183 - { .id = "M41T0", .driver_data = m41t0 }, 1184 - { .id = "M41T00", .driver_data = m41t00 }, 1185 - { .id = "M41T11", .driver_data = m41t11 }, 1186 - { .id = "MCP7940X", .driver_data = mcp794xx }, 1187 - { .id = "MCP7941X", .driver_data = mcp794xx }, 1188 - { .id = "PT7C4338", .driver_data = ds_1307 }, 1189 - { .id = "RX8025", .driver_data = rx_8025 }, 1190 - { .id = "ISL12057", .driver_data = ds_1337 }, 1191 - { .id = "RX8130", .driver_data = rx_8130 }, 1192 - { } 1193 - }; 1194 - MODULE_DEVICE_TABLE(acpi, ds1307_acpi_ids); 1195 - #endif 1196 1170 1197 1171 /* 1198 1172 * The ds1337 and ds1339 both have two alarms, but we only use the first ··· 1600 1626 .recalc_rate = ds3231_clk_32khz_recalc_rate, 1601 1627 }; 1602 1628 1629 + static const char *ds3231_clks_names[] = { 1630 + [DS3231_CLK_SQW] = "ds3231_clk_sqw", 1631 + [DS3231_CLK_32KHZ] = "ds3231_clk_32khz", 1632 + }; 1633 + 1603 1634 static struct clk_init_data ds3231_clks_init[] = { 1604 1635 [DS3231_CLK_SQW] = { 1605 - .name = "ds3231_clk_sqw", 1606 1636 .ops = &ds3231_clk_sqw_ops, 1607 1637 }, 1608 1638 [DS3231_CLK_32KHZ] = { 1609 - .name = "ds3231_clk_32khz", 1610 1639 .ops = &ds3231_clk_32khz_ops, 1611 1640 }, 1612 1641 }; ··· 1630 1653 if (!onecell->clks) 1631 1654 return -ENOMEM; 1632 1655 1656 + /* optional override of the clockname */ 1657 + device_property_read_string_array(ds1307->dev, "clock-output-names", 1658 + ds3231_clks_names, 1659 + ARRAY_SIZE(ds3231_clks_names)); 1660 + 1633 1661 for (i = 0; i < ARRAY_SIZE(ds3231_clks_init); i++) { 1634 1662 struct clk_init_data init = ds3231_clks_init[i]; 1635 1663 ··· 1645 1663 if (i == DS3231_CLK_SQW && test_bit(HAS_ALARM, &ds1307->flags)) 1646 1664 continue; 1647 1665 1648 - /* optional override of the clockname */ 1649 - of_property_read_string_index(node, "clock-output-names", i, 1650 - &init.name); 1666 + init.name = ds3231_clks_names[i]; 1651 1667 ds1307->clks[i].init = &init; 1652 1668 1653 1669 onecell->clks[i] = devm_clk_register(ds1307->dev, ··· 1654 1674 return PTR_ERR(onecell->clks[i]); 1655 1675 } 1656 1676 1657 - if (!node) 1658 - return 0; 1659 - 1660 - of_clk_add_provider(node, of_clk_src_onecell_get, onecell); 1677 + if (node) 1678 + of_clk_add_provider(node, of_clk_src_onecell_get, onecell); 1661 1679 1662 1680 return 0; 1663 1681 } ··· 1739 1761 const struct i2c_device_id *id) 1740 1762 { 1741 1763 struct ds1307 *ds1307; 1764 + const void *match; 1742 1765 int err = -ENODEV; 1743 1766 int tmp; 1744 1767 const struct chip_desc *chip; ··· 1765 1786 1766 1787 i2c_set_clientdata(client, ds1307); 1767 1788 1768 - if (client->dev.of_node) { 1769 - ds1307->type = (enum ds_type) 1770 - of_device_get_match_data(&client->dev); 1789 + match = device_get_match_data(&client->dev); 1790 + if (match) { 1791 + ds1307->type = (enum ds_type)match; 1771 1792 chip = &chips[ds1307->type]; 1772 1793 } else if (id) { 1773 1794 chip = &chips[id->driver_data]; 1774 1795 ds1307->type = id->driver_data; 1775 1796 } else { 1776 - const struct acpi_device_id *acpi_id; 1777 - 1778 - acpi_id = acpi_match_device(ACPI_PTR(ds1307_acpi_ids), 1779 - ds1307->dev); 1780 - if (!acpi_id) 1781 - return -ENODEV; 1782 - chip = &chips[acpi_id->driver_data]; 1783 - ds1307->type = acpi_id->driver_data; 1797 + return -ENODEV; 1784 1798 } 1785 1799 1786 1800 want_irq = client->irq > 0 && chip->alarm; ··· 1791 1819 trickle_charger_setup); 1792 1820 } 1793 1821 1794 - #ifdef CONFIG_OF 1795 1822 /* 1796 1823 * For devices with no IRQ directly connected to the SoC, the RTC chip 1797 1824 * can be forced as a wakeup source by stating that explicitly in ··· 1799 1828 * This will guarantee the 'wakealarm' sysfs entry is available on the device, 1800 1829 * if supported by the RTC. 1801 1830 */ 1802 - if (chip->alarm && of_property_read_bool(client->dev.of_node, 1803 - "wakeup-source")) 1831 + if (chip->alarm && device_property_read_bool(&client->dev, "wakeup-source")) 1804 1832 ds1307_can_wakeup_device = true; 1805 - #endif 1806 1833 1807 1834 switch (ds1307->type) { 1808 1835 case ds_1337: ··· 2001 2032 if (err) 2002 2033 return err; 2003 2034 2004 - err = rtc_register_device(ds1307->rtc); 2035 + err = devm_rtc_register_device(ds1307->rtc); 2005 2036 if (err) 2006 2037 return err; 2007 2038 ··· 2016 2047 .priv = ds1307, 2017 2048 }; 2018 2049 2019 - ds1307->rtc->nvram_old_abi = true; 2020 - rtc_nvmem_register(ds1307->rtc, &nvmem_cfg); 2050 + devm_rtc_nvmem_register(ds1307->rtc, &nvmem_cfg); 2021 2051 } 2022 2052 2023 2053 ds1307_hwmon_register(ds1307); ··· 2032 2064 static struct i2c_driver ds1307_driver = { 2033 2065 .driver = { 2034 2066 .name = "rtc-ds1307", 2035 - .of_match_table = of_match_ptr(ds1307_of_match), 2036 - .acpi_match_table = ACPI_PTR(ds1307_acpi_ids), 2067 + .of_match_table = ds1307_of_match, 2037 2068 }, 2038 2069 .probe = ds1307_probe, 2039 2070 .id_table = ds1307_id,
+2 -3
drivers/rtc/rtc-ds1343.c
··· 399 399 if (IS_ERR(priv->rtc)) 400 400 return PTR_ERR(priv->rtc); 401 401 402 - priv->rtc->nvram_old_abi = true; 403 402 priv->rtc->ops = &ds1343_rtc_ops; 404 403 priv->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 405 404 priv->rtc->range_max = RTC_TIMESTAMP_END_2099; ··· 408 409 dev_err(&spi->dev, 409 410 "unable to create sysfs entries for rtc ds1343\n"); 410 411 411 - res = rtc_register_device(priv->rtc); 412 + res = devm_rtc_register_device(priv->rtc); 412 413 if (res) 413 414 return res; 414 415 415 416 nvmem_cfg.priv = priv; 416 - rtc_nvmem_register(priv->rtc, &nvmem_cfg); 417 + devm_rtc_nvmem_register(priv->rtc, &nvmem_cfg); 417 418 418 419 priv->irq = spi->irq; 419 420
+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
+2 -4
drivers/rtc/rtc-ds1511.c
··· 466 466 467 467 pdata->rtc->ops = &ds1511_rtc_ops; 468 468 469 - pdata->rtc->nvram_old_abi = true; 470 - 471 - ret = rtc_register_device(pdata->rtc); 469 + ret = devm_rtc_register_device(pdata->rtc); 472 470 if (ret) 473 471 return ret; 474 472 475 - rtc_nvmem_register(pdata->rtc, &ds1511_nvmem_cfg); 473 + devm_rtc_nvmem_register(pdata->rtc, &ds1511_nvmem_cfg); 476 474 477 475 /* 478 476 * if the platform has an interrupt in mind for this device,
+2 -4
drivers/rtc/rtc-ds1553.c
··· 294 294 return PTR_ERR(pdata->rtc); 295 295 296 296 pdata->rtc->ops = &ds1553_rtc_ops; 297 - pdata->rtc->nvram_old_abi = true; 298 297 299 - ret = rtc_register_device(pdata->rtc); 298 + ret = devm_rtc_register_device(pdata->rtc); 300 299 if (ret) 301 300 return ret; 302 301 ··· 309 310 } 310 311 } 311 312 312 - if (rtc_nvmem_register(pdata->rtc, &nvmem_cfg)) 313 - dev_err(&pdev->dev, "unable to register nvmem\n"); 313 + devm_rtc_nvmem_register(pdata->rtc, &nvmem_cfg); 314 314 315 315 return 0; 316 316 }
+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
+2 -3
drivers/rtc/rtc-ds1685.c
··· 1316 1316 if (ret) 1317 1317 return ret; 1318 1318 1319 - rtc_dev->nvram_old_abi = true; 1320 1319 nvmem_cfg.priv = rtc; 1321 - ret = rtc_nvmem_register(rtc_dev, &nvmem_cfg); 1320 + ret = devm_rtc_nvmem_register(rtc_dev, &nvmem_cfg); 1322 1321 if (ret) 1323 1322 return ret; 1324 1323 1325 - return rtc_register_device(rtc_dev); 1324 + return devm_rtc_register_device(rtc_dev); 1326 1325 } 1327 1326 1328 1327 /**
+2 -4
drivers/rtc/rtc-ds1742.c
··· 190 190 return PTR_ERR(rtc); 191 191 192 192 rtc->ops = &ds1742_rtc_ops; 193 - rtc->nvram_old_abi = true; 194 193 195 - ret = rtc_register_device(rtc); 194 + ret = devm_rtc_register_device(rtc); 196 195 if (ret) 197 196 return ret; 198 197 199 - if (rtc_nvmem_register(rtc, &nvmem_cfg)) 200 - dev_err(&pdev->dev, "Unable to register nvmem\n"); 198 + devm_rtc_nvmem_register(rtc, &nvmem_cfg); 201 199 202 200 return 0; 203 201 }
+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-ds3232.c
··· 518 518 if (IS_ERR(ds3232->rtc)) 519 519 return PTR_ERR(ds3232->rtc); 520 520 521 - ret = rtc_nvmem_register(ds3232->rtc, &nvmem_cfg); 521 + ret = devm_rtc_nvmem_register(ds3232->rtc, &nvmem_cfg); 522 522 if(ret) 523 523 return ret; 524 524
+4 -4
drivers/rtc/rtc-ep93xx.c
··· 33 33 static int ep93xx_rtc_get_swcomp(struct device *dev, unsigned short *preload, 34 34 unsigned short *delete) 35 35 { 36 - struct ep93xx_rtc *ep93xx_rtc = dev_get_platdata(dev); 36 + struct ep93xx_rtc *ep93xx_rtc = dev_get_drvdata(dev); 37 37 unsigned long comp; 38 38 39 39 comp = readl(ep93xx_rtc->mmio_base + EP93XX_RTC_SWCOMP); ··· 51 51 52 52 static int ep93xx_rtc_read_time(struct device *dev, struct rtc_time *tm) 53 53 { 54 - struct ep93xx_rtc *ep93xx_rtc = dev_get_platdata(dev); 54 + struct ep93xx_rtc *ep93xx_rtc = dev_get_drvdata(dev); 55 55 unsigned long time; 56 56 57 57 time = readl(ep93xx_rtc->mmio_base + EP93XX_RTC_DATA); ··· 62 62 63 63 static int ep93xx_rtc_set_time(struct device *dev, struct rtc_time *tm) 64 64 { 65 - struct ep93xx_rtc *ep93xx_rtc = dev_get_platdata(dev); 65 + struct ep93xx_rtc *ep93xx_rtc = dev_get_drvdata(dev); 66 66 unsigned long secs = rtc_tm_to_time64(tm); 67 67 68 68 writel(secs + 1, ep93xx_rtc->mmio_base + EP93XX_RTC_LOAD); ··· 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[] = {
+5 -2
drivers/rtc/rtc-hym8563.c
··· 527 527 hym8563->client = client; 528 528 i2c_set_clientdata(client, hym8563); 529 529 530 - device_set_wakeup_capable(&client->dev, true); 531 - 532 530 ret = hym8563_init_device(client); 533 531 if (ret) { 534 532 dev_err(&client->dev, "could not init device, %d\n", ret); ··· 543 545 client->irq, ret); 544 546 return ret; 545 547 } 548 + } 549 + 550 + if (client->irq > 0 || 551 + device_property_read_bool(&client->dev, "wakeup-source")) { 552 + device_init_wakeup(&client->dev, true); 546 553 } 547 554 548 555 /* check state of calendar information */
+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
+2 -2
drivers/rtc/rtc-isl12026.c
··· 465 465 466 466 priv->rtc->ops = &isl12026_rtc_ops; 467 467 nvm_cfg.priv = priv; 468 - ret = rtc_nvmem_register(priv->rtc, &nvm_cfg); 468 + ret = devm_rtc_nvmem_register(priv->rtc, &nvm_cfg); 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)
+2 -2
drivers/rtc/rtc-isl1208.c
··· 890 890 if (rc) 891 891 return rc; 892 892 893 - rc = rtc_nvmem_register(isl1208->rtc, &isl1208->nvmem_config); 893 + rc = devm_rtc_nvmem_register(isl1208->rtc, &isl1208->nvmem_config); 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
+2 -3
drivers/rtc/rtc-m48t59.c
··· 463 463 if (IS_ERR(m48t59->rtc)) 464 464 return PTR_ERR(m48t59->rtc); 465 465 466 - m48t59->rtc->nvram_old_abi = true; 467 466 m48t59->rtc->ops = ops; 468 467 469 468 nvmem_cfg.size = pdata->offset; 470 - ret = rtc_nvmem_register(m48t59->rtc, &nvmem_cfg); 469 + ret = devm_rtc_nvmem_register(m48t59->rtc, &nvmem_cfg); 471 470 if (ret) 472 471 return ret; 473 472 474 - ret = rtc_register_device(m48t59->rtc); 473 + ret = devm_rtc_register_device(m48t59->rtc); 475 474 if (ret) 476 475 return ret; 477 476
+2 -3
drivers/rtc/rtc-m48t86.c
··· 254 254 return PTR_ERR(info->rtc); 255 255 256 256 info->rtc->ops = &m48t86_rtc_ops; 257 - info->rtc->nvram_old_abi = true; 258 257 259 - err = rtc_register_device(info->rtc); 258 + err = devm_rtc_register_device(info->rtc); 260 259 if (err) 261 260 return err; 262 261 263 - rtc_nvmem_register(info->rtc, &m48t86_nvmem_cfg); 262 + devm_rtc_nvmem_register(info->rtc, &m48t86_nvmem_cfg); 264 263 265 264 /* read battery status */ 266 265 reg = m48t86_readb(&pdev->dev, M48T86_D);
+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)
+2 -2
drivers/rtc/rtc-meson.c
··· 365 365 } 366 366 367 367 meson_rtc_nvmem_config.priv = rtc; 368 - ret = rtc_nvmem_register(rtc->rtc, &meson_rtc_nvmem_config); 368 + ret = devm_rtc_nvmem_register(rtc->rtc, &meson_rtc_nvmem_config); 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:
+2 -23
drivers/rtc/rtc-mxc.c
··· 70 70 enum imx_rtc_type devtype; 71 71 }; 72 72 73 - static const struct platform_device_id imx_rtc_devtype[] = { 74 - { 75 - .name = "imx1-rtc", 76 - .driver_data = IMX1_RTC, 77 - }, { 78 - .name = "imx21-rtc", 79 - .driver_data = IMX21_RTC, 80 - }, { 81 - /* sentinel */ 82 - } 83 - }; 84 - MODULE_DEVICE_TABLE(platform, imx_rtc_devtype); 85 - 86 - #ifdef CONFIG_OF 87 73 static const struct of_device_id imx_rtc_dt_ids[] = { 88 74 { .compatible = "fsl,imx1-rtc", .data = (const void *)IMX1_RTC }, 89 75 { .compatible = "fsl,imx21-rtc", .data = (const void *)IMX21_RTC }, 90 76 {} 91 77 }; 92 78 MODULE_DEVICE_TABLE(of, imx_rtc_dt_ids); 93 - #endif 94 79 95 80 static inline int is_imx1_rtc(struct rtc_plat_data *data) 96 81 { ··· 307 322 u32 reg; 308 323 unsigned long rate; 309 324 int ret; 310 - const struct of_device_id *of_id; 311 325 312 326 pdata = devm_kzalloc(&pdev->dev, sizeof(*pdata), GFP_KERNEL); 313 327 if (!pdata) 314 328 return -ENOMEM; 315 329 316 - of_id = of_match_device(imx_rtc_dt_ids, &pdev->dev); 317 - if (of_id) 318 - pdata->devtype = (enum imx_rtc_type)of_id->data; 319 - else 320 - pdata->devtype = pdev->id_entry->driver_data; 330 + pdata->devtype = (enum imx_rtc_type)of_device_get_match_data(&pdev->dev); 321 331 322 332 pdata->ioaddr = devm_platform_ioremap_resource(pdev, 0); 323 333 if (IS_ERR(pdata->ioaddr)) ··· 408 428 dev_err(&pdev->dev, "failed to enable irq wake\n"); 409 429 } 410 430 411 - ret = rtc_register_device(rtc); 431 + ret = devm_rtc_register_device(rtc); 412 432 413 433 return ret; 414 434 } ··· 418 438 .name = "mxc_rtc", 419 439 .of_match_table = of_match_ptr(imx_rtc_dt_ids), 420 440 }, 421 - .id_table = imx_rtc_devtype, 422 441 .probe = mxc_rtc_probe, 423 442 }; 424 443
+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
+4 -9
drivers/rtc/rtc-omap.c
··· 879 879 /* Support ext_wakeup pinconf */ 880 880 rtc_pinctrl_desc.name = dev_name(&pdev->dev); 881 881 882 - rtc->pctldev = pinctrl_register(&rtc_pinctrl_desc, &pdev->dev, rtc); 882 + rtc->pctldev = devm_pinctrl_register(&pdev->dev, &rtc_pinctrl_desc, rtc); 883 883 if (IS_ERR(rtc->pctldev)) { 884 884 dev_err(&pdev->dev, "Couldn't register pinctrl driver\n"); 885 885 ret = PTR_ERR(rtc->pctldev); 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 - goto err_deregister_pinctrl; 891 + goto err; 892 892 893 - rtc_nvmem_register(rtc->rtc, &omap_rtc_nvmem_config); 893 + devm_rtc_nvmem_register(rtc->rtc, &omap_rtc_nvmem_config); 894 894 895 895 if (rtc->is_pmic_controller) { 896 896 if (!pm_power_off) { ··· 901 901 902 902 return 0; 903 903 904 - err_deregister_pinctrl: 905 - pinctrl_unregister(rtc->pctldev); 906 904 err: 907 905 clk_disable_unprepare(rtc->clk); 908 906 device_init_wakeup(&pdev->dev, false); ··· 942 944 /* Disable the clock/module */ 943 945 pm_runtime_put_sync(&pdev->dev); 944 946 pm_runtime_disable(&pdev->dev); 945 - 946 - /* Remove ext_wakeup pinconf */ 947 - pinctrl_unregister(rtc->pctldev); 948 947 949 948 return 0; 950 949 }
+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
+38 -35
drivers/rtc/rtc-pcf2127.c
··· 243 243 if (ret) 244 244 return ret; 245 245 246 - ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD, 247 - val, bytes); 248 - 249 - return ret ?: bytes; 246 + return regmap_bulk_read(pcf2127->regmap, PCF2127_REG_RAM_RD_CMD, 247 + val, bytes); 250 248 } 251 249 252 250 static int pcf2127_nvmem_write(void *priv, unsigned int offset, ··· 259 261 if (ret) 260 262 return ret; 261 263 262 - ret = regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD, 263 - val, bytes); 264 - 265 - return ret ?: bytes; 264 + return regmap_bulk_write(pcf2127->regmap, PCF2127_REG_RAM_WRT_CMD, 265 + val, bytes); 266 266 } 267 267 268 268 /* watchdog driver */ ··· 330 334 .ping = pcf2127_wdt_ping, 331 335 .set_timeout = pcf2127_wdt_set_timeout, 332 336 }; 337 + 338 + static int pcf2127_watchdog_init(struct device *dev, struct pcf2127 *pcf2127) 339 + { 340 + u32 wdd_timeout; 341 + int ret; 342 + 343 + if (!IS_ENABLED(CONFIG_WATCHDOG) || 344 + !device_property_read_bool(dev, "reset-source")) 345 + return 0; 346 + 347 + pcf2127->wdd.parent = dev; 348 + pcf2127->wdd.info = &pcf2127_wdt_info; 349 + pcf2127->wdd.ops = &pcf2127_watchdog_ops; 350 + pcf2127->wdd.min_timeout = PCF2127_WD_VAL_MIN; 351 + pcf2127->wdd.max_timeout = PCF2127_WD_VAL_MAX; 352 + pcf2127->wdd.timeout = PCF2127_WD_VAL_DEFAULT; 353 + pcf2127->wdd.min_hw_heartbeat_ms = 500; 354 + pcf2127->wdd.status = WATCHDOG_NOWAYOUT_INIT_STATUS; 355 + 356 + watchdog_set_drvdata(&pcf2127->wdd, pcf2127); 357 + 358 + /* Test if watchdog timer is started by bootloader */ 359 + ret = regmap_read(pcf2127->regmap, PCF2127_REG_WD_VAL, &wdd_timeout); 360 + if (ret) 361 + return ret; 362 + 363 + if (wdd_timeout) 364 + set_bit(WDOG_HW_RUNNING, &pcf2127->wdd.status); 365 + 366 + return devm_watchdog_register_device(dev, &pcf2127->wdd); 367 + } 333 368 334 369 /* Alarm */ 335 370 static int pcf2127_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) ··· 563 536 int alarm_irq, const char *name, bool has_nvmem) 564 537 { 565 538 struct pcf2127 *pcf2127; 566 - u32 wdd_timeout; 567 539 int ret = 0; 568 540 569 541 dev_dbg(dev, "%s\n", __func__); ··· 601 575 pcf2127->rtc->ops = &pcf2127_rtc_alrm_ops; 602 576 } 603 577 604 - pcf2127->wdd.parent = dev; 605 - pcf2127->wdd.info = &pcf2127_wdt_info; 606 - pcf2127->wdd.ops = &pcf2127_watchdog_ops; 607 - pcf2127->wdd.min_timeout = PCF2127_WD_VAL_MIN; 608 - pcf2127->wdd.max_timeout = PCF2127_WD_VAL_MAX; 609 - pcf2127->wdd.timeout = PCF2127_WD_VAL_DEFAULT; 610 - pcf2127->wdd.min_hw_heartbeat_ms = 500; 611 - pcf2127->wdd.status = WATCHDOG_NOWAYOUT_INIT_STATUS; 612 - 613 - watchdog_set_drvdata(&pcf2127->wdd, pcf2127); 614 - 615 578 if (has_nvmem) { 616 579 struct nvmem_config nvmem_cfg = { 617 580 .priv = pcf2127, ··· 609 594 .size = 512, 610 595 }; 611 596 612 - ret = rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg); 597 + ret = devm_rtc_nvmem_register(pcf2127->rtc, &nvmem_cfg); 613 598 } 614 599 615 600 /* ··· 630 615 return ret; 631 616 } 632 617 633 - /* Test if watchdog timer is started by bootloader */ 634 - ret = regmap_read(pcf2127->regmap, PCF2127_REG_WD_VAL, &wdd_timeout); 635 - if (ret) 636 - return ret; 637 - 638 - if (wdd_timeout) 639 - set_bit(WDOG_HW_RUNNING, &pcf2127->wdd.status); 640 - 641 - #ifdef CONFIG_WATCHDOG 642 - ret = devm_watchdog_register_device(dev, &pcf2127->wdd); 643 - if (ret) 644 - return ret; 645 - #endif /* CONFIG_WATCHDOG */ 618 + pcf2127_watchdog_init(dev, pcf2127); 646 619 647 620 /* 648 621 * Disable battery low/switch-over timestamp and interrupts. ··· 683 680 return ret; 684 681 } 685 682 686 - return rtc_register_device(pcf2127->rtc); 683 + return devm_rtc_register_device(pcf2127->rtc); 687 684 } 688 685 689 686 #ifdef CONFIG_OF
+2 -2
drivers/rtc/rtc-pcf85063.c
··· 607 607 } 608 608 609 609 nvmem_cfg.priv = pcf85063->regmap; 610 - rtc_nvmem_register(pcf85063->rtc, &nvmem_cfg); 610 + devm_rtc_nvmem_register(pcf85063->rtc, &nvmem_cfg); 611 611 612 612 #ifdef CONFIG_COMMON_CLK 613 613 /* register clk in common clk framework */ 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
+13 -21
drivers/rtc/rtc-pcf8523.c
··· 12 12 #define DRIVER_NAME "rtc-pcf8523" 13 13 14 14 #define REG_CONTROL1 0x00 15 - #define REG_CONTROL1_CAP_SEL (1 << 7) 16 - #define REG_CONTROL1_STOP (1 << 5) 15 + #define REG_CONTROL1_CAP_SEL BIT(7) 16 + #define REG_CONTROL1_STOP BIT(5) 17 17 18 18 #define REG_CONTROL3 0x02 19 - #define REG_CONTROL3_PM_BLD (1 << 7) /* battery low detection disabled */ 20 - #define REG_CONTROL3_PM_VDD (1 << 6) /* switch-over disabled */ 21 - #define REG_CONTROL3_PM_DSM (1 << 5) /* direct switching mode */ 19 + #define REG_CONTROL3_PM_BLD BIT(7) /* battery low detection disabled */ 20 + #define REG_CONTROL3_PM_VDD BIT(6) /* switch-over disabled */ 21 + #define REG_CONTROL3_PM_DSM BIT(5) /* direct switching mode */ 22 22 #define REG_CONTROL3_PM_MASK 0xe0 23 - #define REG_CONTROL3_BLF (1 << 2) /* battery low bit, read-only */ 23 + #define REG_CONTROL3_BLF BIT(2) /* battery low bit, read-only */ 24 24 25 25 #define REG_SECONDS 0x03 26 - #define REG_SECONDS_OS (1 << 7) 26 + #define REG_SECONDS_OS BIT(7) 27 27 28 28 #define REG_MINUTES 0x04 29 29 #define REG_HOURS 0x05 ··· 226 226 u8 regs[8]; 227 227 int err; 228 228 229 - /* 230 - * The hardware can only store values between 0 and 99 in it's YEAR 231 - * register (with 99 overflowing to 0 on increment). 232 - * After 2100-02-28 we could start interpreting the year to be in the 233 - * interval [2100, 2199], but there is no path to switch in a smooth way 234 - * because the chip handles YEAR=0x00 (and the out-of-spec 235 - * YEAR=0xa0) as a leap year, but 2100 isn't. 236 - */ 237 - if (tm->tm_year < 100 || tm->tm_year >= 200) 238 - return -EINVAL; 239 - 240 229 err = pcf8523_stop_rtc(client); 241 230 if (err < 0) 242 231 return err; ··· 345 356 if (err < 0) 346 357 return err; 347 358 348 - rtc = devm_rtc_device_register(&client->dev, DRIVER_NAME, 349 - &pcf8523_rtc_ops, THIS_MODULE); 359 + rtc = devm_rtc_allocate_device(&client->dev); 350 360 if (IS_ERR(rtc)) 351 361 return PTR_ERR(rtc); 352 362 353 - return 0; 363 + rtc->ops = &pcf8523_rtc_ops; 364 + rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 365 + rtc->range_max = RTC_TIMESTAMP_END_2099; 366 + 367 + return devm_rtc_register_device(rtc); 354 368 } 355 369 356 370 static const struct i2c_device_id pcf8523_id[] = {
+2 -2
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; 425 - rtc_nvmem_register(pcf85363->rtc, &nvmem_cfg[i]); 425 + devm_rtc_nvmem_register(pcf85363->rtc, &nvmem_cfg[i]); 426 426 } 427 427 428 428 return ret;
+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
+5 -3
drivers/rtc/rtc-pl031.c
··· 361 361 362 362 device_init_wakeup(&adev->dev, true); 363 363 ldata->rtc = devm_rtc_allocate_device(&adev->dev); 364 - if (IS_ERR(ldata->rtc)) 365 - return PTR_ERR(ldata->rtc); 364 + if (IS_ERR(ldata->rtc)) { 365 + ret = PTR_ERR(ldata->rtc); 366 + goto out; 367 + } 366 368 367 369 ldata->rtc->ops = ops; 368 370 ldata->rtc->range_min = vendor->range_min; 369 371 ldata->rtc->range_max = vendor->range_max; 370 372 371 - ret = rtc_register_device(ldata->rtc); 373 + ret = devm_rtc_register_device(ldata->rtc); 372 374 if (ret) 373 375 goto out; 374 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 = {
+2 -3
drivers/rtc/rtc-rp5c01.c
··· 251 251 return PTR_ERR(rtc); 252 252 253 253 rtc->ops = &rp5c01_rtc_ops; 254 - rtc->nvram_old_abi = true; 255 254 256 255 priv->rtc = rtc; 257 256 258 257 nvmem_cfg.priv = priv; 259 - error = rtc_nvmem_register(rtc, &nvmem_cfg); 258 + error = devm_rtc_nvmem_register(rtc, &nvmem_cfg); 260 259 if (error) 261 260 return error; 262 261 263 - return rtc_register_device(rtc); 262 + return devm_rtc_register_device(rtc); 264 263 } 265 264 266 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 = {
+3 -3
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 893 893 nvmem_cfg.priv = rv3028->regmap; 894 - rtc_nvmem_register(rv3028->rtc, &nvmem_cfg); 894 + devm_rtc_nvmem_register(rv3028->rtc, &nvmem_cfg); 895 895 eeprom_cfg.priv = rv3028; 896 - rtc_nvmem_register(rv3028->rtc, &eeprom_cfg); 896 + devm_rtc_nvmem_register(rv3028->rtc, &eeprom_cfg); 897 897 898 898 rv3028->rtc->max_user_freq = 1; 899 899
+2 -2
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 757 757 nvmem_cfg.priv = rv3029->regmap; 758 - rtc_nvmem_register(rv3029->rtc, &nvmem_cfg); 758 + devm_rtc_nvmem_register(rv3029->rtc, &nvmem_cfg); 759 759 760 760 return 0; 761 761 }
+4 -4
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 892 - nvmem_cfg.priv = rv3032; 893 - rtc_nvmem_register(rv3032->rtc, &nvmem_cfg); 892 + nvmem_cfg.priv = rv3032->regmap; 893 + devm_rtc_nvmem_register(rv3032->rtc, &nvmem_cfg); 894 894 eeprom_cfg.priv = rv3032; 895 - rtc_nvmem_register(rv3032->rtc, &eeprom_cfg); 895 + devm_rtc_nvmem_register(rv3032->rtc, &eeprom_cfg); 896 896 897 897 rv3032->rtc->max_user_freq = 1; 898 898
+2 -3
drivers/rtc/rtc-rv8803.c
··· 585 585 } 586 586 587 587 rv8803->rtc->ops = &rv8803_rtc_ops; 588 - rv8803->rtc->nvram_old_abi = true; 589 588 rv8803->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; 590 589 rv8803->rtc->range_max = RTC_TIMESTAMP_END_2099; 591 - err = rtc_register_device(rv8803->rtc); 590 + err = devm_rtc_register_device(rv8803->rtc); 592 591 if (err) 593 592 return err; 594 593 595 - rtc_nvmem_register(rv8803->rtc, &nvmem_cfg); 594 + devm_rtc_nvmem_register(rv8803->rtc, &nvmem_cfg); 596 595 597 596 rv8803->rtc->max_user_freq = 1; 598 597
+142 -23
drivers/rtc/rtc-rx6110.c
··· 16 16 #include <linux/of.h> 17 17 #include <linux/of_device.h> 18 18 #include <linux/spi/spi.h> 19 + #include <linux/i2c.h> 19 20 20 21 /* RX-6110 Register definitions */ 21 22 #define RX6110_REG_SEC 0x10 ··· 311 310 .set_time = rx6110_set_time, 312 311 }; 313 312 313 + static int rx6110_probe(struct rx6110_data *rx6110, struct device *dev) 314 + { 315 + int err; 316 + 317 + rx6110->rtc = devm_rtc_device_register(dev, 318 + RX6110_DRIVER_NAME, 319 + &rx6110_rtc_ops, THIS_MODULE); 320 + 321 + if (IS_ERR(rx6110->rtc)) 322 + return PTR_ERR(rx6110->rtc); 323 + 324 + err = rx6110_init(rx6110); 325 + if (err) 326 + return err; 327 + 328 + rx6110->rtc->max_user_freq = 1; 329 + 330 + return 0; 331 + } 332 + 333 + #ifdef CONFIG_SPI_MASTER 314 334 static struct regmap_config regmap_spi_config = { 315 335 .reg_bits = 8, 316 336 .val_bits = 8, ··· 340 318 }; 341 319 342 320 /** 343 - * rx6110_probe - initialize rtc driver 321 + * rx6110_spi_probe - initialize rtc driver 344 322 * @spi: pointer to spi device 345 323 */ 346 - static int rx6110_probe(struct spi_device *spi) 324 + static int rx6110_spi_probe(struct spi_device *spi) 347 325 { 348 326 struct rx6110_data *rx6110; 349 - int err; 350 327 351 328 if ((spi->bits_per_word && spi->bits_per_word != 8) || 352 329 (spi->max_speed_hz > 2000000) || ··· 367 346 368 347 spi_set_drvdata(spi, rx6110); 369 348 370 - rx6110->rtc = devm_rtc_device_register(&spi->dev, 371 - RX6110_DRIVER_NAME, 372 - &rx6110_rtc_ops, THIS_MODULE); 373 - 374 - if (IS_ERR(rx6110->rtc)) 375 - return PTR_ERR(rx6110->rtc); 376 - 377 - err = rx6110_init(rx6110); 378 - if (err) 379 - return err; 380 - 381 - rx6110->rtc->max_user_freq = 1; 382 - 383 - return 0; 349 + return rx6110_probe(rx6110, &spi->dev); 384 350 } 385 351 386 - static const struct spi_device_id rx6110_id[] = { 352 + static const struct spi_device_id rx6110_spi_id[] = { 387 353 { "rx6110", 0 }, 388 354 { } 389 355 }; 390 - MODULE_DEVICE_TABLE(spi, rx6110_id); 356 + MODULE_DEVICE_TABLE(spi, rx6110_spi_id); 391 357 392 358 static const struct of_device_id rx6110_spi_of_match[] = { 393 359 { .compatible = "epson,rx6110" }, ··· 382 374 }; 383 375 MODULE_DEVICE_TABLE(of, rx6110_spi_of_match); 384 376 385 - static struct spi_driver rx6110_driver = { 377 + static struct spi_driver rx6110_spi_driver = { 386 378 .driver = { 387 379 .name = RX6110_DRIVER_NAME, 388 380 .of_match_table = of_match_ptr(rx6110_spi_of_match), 389 381 }, 390 - .probe = rx6110_probe, 391 - .id_table = rx6110_id, 382 + .probe = rx6110_spi_probe, 383 + .id_table = rx6110_spi_id, 392 384 }; 393 385 394 - module_spi_driver(rx6110_driver); 386 + static int rx6110_spi_register(void) 387 + { 388 + return spi_register_driver(&rx6110_spi_driver); 389 + } 390 + 391 + static void rx6110_spi_unregister(void) 392 + { 393 + spi_unregister_driver(&rx6110_spi_driver); 394 + } 395 + #else 396 + static int rx6110_spi_register(void) 397 + { 398 + return 0; 399 + } 400 + 401 + static void rx6110_spi_unregister(void) 402 + { 403 + } 404 + #endif /* CONFIG_SPI_MASTER */ 405 + 406 + #ifdef CONFIG_I2C 407 + static struct regmap_config regmap_i2c_config = { 408 + .reg_bits = 8, 409 + .val_bits = 8, 410 + .max_register = RX6110_REG_IRQ, 411 + .read_flag_mask = 0x80, 412 + }; 413 + 414 + static int rx6110_i2c_probe(struct i2c_client *client, 415 + const struct i2c_device_id *id) 416 + { 417 + struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); 418 + struct rx6110_data *rx6110; 419 + 420 + if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA 421 + | I2C_FUNC_SMBUS_I2C_BLOCK)) { 422 + dev_err(&adapter->dev, 423 + "doesn't support required functionality\n"); 424 + return -EIO; 425 + } 426 + 427 + rx6110 = devm_kzalloc(&client->dev, sizeof(*rx6110), GFP_KERNEL); 428 + if (!rx6110) 429 + return -ENOMEM; 430 + 431 + rx6110->regmap = devm_regmap_init_i2c(client, &regmap_i2c_config); 432 + if (IS_ERR(rx6110->regmap)) { 433 + dev_err(&client->dev, "regmap init failed for rtc rx6110\n"); 434 + return PTR_ERR(rx6110->regmap); 435 + } 436 + 437 + i2c_set_clientdata(client, rx6110); 438 + 439 + return rx6110_probe(rx6110, &client->dev); 440 + } 441 + 442 + static const struct i2c_device_id rx6110_i2c_id[] = { 443 + { "rx6110", 0 }, 444 + { } 445 + }; 446 + MODULE_DEVICE_TABLE(i2c, rx6110_i2c_id); 447 + 448 + static struct i2c_driver rx6110_i2c_driver = { 449 + .driver = { 450 + .name = RX6110_DRIVER_NAME, 451 + }, 452 + .probe = rx6110_i2c_probe, 453 + .id_table = rx6110_i2c_id, 454 + }; 455 + 456 + static int rx6110_i2c_register(void) 457 + { 458 + return i2c_add_driver(&rx6110_i2c_driver); 459 + } 460 + 461 + static void rx6110_i2c_unregister(void) 462 + { 463 + i2c_del_driver(&rx6110_i2c_driver); 464 + } 465 + #else 466 + static int rx6110_i2c_register(void) 467 + { 468 + return 0; 469 + } 470 + 471 + static void rx6110_i2c_unregister(void) 472 + { 473 + } 474 + #endif /* CONFIG_I2C */ 475 + 476 + static int __init rx6110_module_init(void) 477 + { 478 + int ret; 479 + 480 + ret = rx6110_spi_register(); 481 + if (ret) 482 + return ret; 483 + 484 + ret = rx6110_i2c_register(); 485 + if (ret) 486 + rx6110_spi_unregister(); 487 + 488 + return ret; 489 + } 490 + module_init(rx6110_module_init); 491 + 492 + static void __exit rx6110_module_exit(void) 493 + { 494 + rx6110_spi_unregister(); 495 + rx6110_i2c_unregister(); 496 + } 497 + module_exit(rx6110_module_exit); 395 498 396 499 MODULE_AUTHOR("Val Krutov <val.krutov@erd.epson.com>"); 397 500 MODULE_DESCRIPTION("RX-6110 SA RTC driver");
+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 = {
+2 -2
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; 305 - rtc_nvmem_register(rx8581->rtc, &nvmem_cfg[i]); 305 + devm_rtc_nvmem_register(rx8581->rtc, &nvmem_cfg[i]); 306 306 } 307 307 308 308 return ret;
+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 = {
+6 -224
drivers/rtc/rtc-s3c.c
··· 42 42 const struct s3c_rtc_data *data; 43 43 44 44 int irq_alarm; 45 - int irq_tick; 46 - 47 - spinlock_t pie_lock; 48 45 spinlock_t alarm_lock; 49 46 50 - int ticnt_save; 51 - int ticnt_en_save; 52 47 bool wake_en; 53 48 }; 54 49 55 50 struct s3c_rtc_data { 56 - int max_user_freq; 57 51 bool needs_src_clk; 58 52 59 53 void (*irq_handler) (struct s3c_rtc *info, int mask); 60 - void (*set_freq) (struct s3c_rtc *info, int freq); 61 - void (*enable_tick) (struct s3c_rtc *info, struct seq_file *seq); 62 - void (*select_tick_clk) (struct s3c_rtc *info); 63 - void (*save_tick_cnt) (struct s3c_rtc *info); 64 - void (*restore_tick_cnt) (struct s3c_rtc *info); 65 54 void (*enable) (struct s3c_rtc *info); 66 55 void (*disable) (struct s3c_rtc *info); 67 56 }; ··· 80 91 clk_disable(info->rtc_clk); 81 92 } 82 93 83 - /* IRQ Handlers */ 84 - static irqreturn_t s3c_rtc_tickirq(int irq, void *id) 85 - { 86 - struct s3c_rtc *info = (struct s3c_rtc *)id; 87 - 88 - if (info->data->irq_handler) 89 - info->data->irq_handler(info, S3C2410_INTP_TIC); 90 - 91 - return IRQ_HANDLED; 92 - } 93 - 94 + /* IRQ Handler */ 94 95 static irqreturn_t s3c_rtc_alarmirq(int irq, void *id) 95 96 { 96 97 struct s3c_rtc *info = (struct s3c_rtc *)id; ··· 125 146 s3c_rtc_disable_clk(info); 126 147 127 148 return ret; 128 - } 129 - 130 - /* Set RTC frequency */ 131 - static int s3c_rtc_setfreq(struct s3c_rtc *info, int freq) 132 - { 133 - int ret; 134 - 135 - if (!is_power_of_2(freq)) 136 - return -EINVAL; 137 - 138 - ret = s3c_rtc_enable_clk(info); 139 - if (ret) 140 - return ret; 141 - spin_lock_irq(&info->pie_lock); 142 - 143 - if (info->data->set_freq) 144 - info->data->set_freq(info, freq); 145 - 146 - spin_unlock_irq(&info->pie_lock); 147 - s3c_rtc_disable_clk(info); 148 - 149 - return 0; 150 149 } 151 150 152 151 /* Time read/write */ ··· 305 348 return 0; 306 349 } 307 350 308 - static int s3c_rtc_proc(struct device *dev, struct seq_file *seq) 309 - { 310 - struct s3c_rtc *info = dev_get_drvdata(dev); 311 - int ret; 312 - 313 - ret = s3c_rtc_enable_clk(info); 314 - if (ret) 315 - return ret; 316 - 317 - if (info->data->enable_tick) 318 - info->data->enable_tick(info, seq); 319 - 320 - s3c_rtc_disable_clk(info); 321 - 322 - return 0; 323 - } 324 - 325 351 static const struct rtc_class_ops s3c_rtcops = { 326 352 .read_time = s3c_rtc_gettime, 327 353 .set_time = s3c_rtc_settime, 328 354 .read_alarm = s3c_rtc_getalarm, 329 355 .set_alarm = s3c_rtc_setalarm, 330 - .proc = s3c_rtc_proc, 331 356 .alarm_irq_enable = s3c_rtc_setaie, 332 357 }; 333 358 ··· 389 450 if (!info) 390 451 return -ENOMEM; 391 452 392 - /* find the IRQs */ 393 - info->irq_tick = platform_get_irq(pdev, 1); 394 - if (info->irq_tick < 0) 395 - return info->irq_tick; 396 - 397 453 info->dev = &pdev->dev; 398 454 info->data = of_device_get_match_data(&pdev->dev); 399 455 if (!info->data) { 400 456 dev_err(&pdev->dev, "failed getting s3c_rtc_data\n"); 401 457 return -EINVAL; 402 458 } 403 - spin_lock_init(&info->pie_lock); 404 459 spin_lock_init(&info->alarm_lock); 405 460 406 461 platform_set_drvdata(pdev, info); ··· 403 470 if (info->irq_alarm < 0) 404 471 return info->irq_alarm; 405 472 406 - dev_dbg(&pdev->dev, "s3c2410_rtc: tick irq %d, alarm irq %d\n", 407 - info->irq_tick, info->irq_alarm); 473 + dev_dbg(&pdev->dev, "s3c2410_rtc: alarm irq %d\n", info->irq_alarm); 408 474 409 475 /* get the memory region */ 410 476 info->base = devm_platform_ioremap_resource(pdev, 0); ··· 434 502 if (ret) 435 503 goto err_src_clk; 436 504 } 505 + 506 + /* disable RTC enable bits potentially set by the bootloader */ 507 + if (info->data->disable) 508 + info->data->disable(info); 437 509 438 510 /* check to see if everything is setup correctly */ 439 511 if (info->data->enable) ··· 478 542 goto err_nortc; 479 543 } 480 544 481 - ret = devm_request_irq(&pdev->dev, info->irq_tick, s3c_rtc_tickirq, 482 - 0, "s3c2410-rtc tick", info); 483 - if (ret) { 484 - dev_err(&pdev->dev, "IRQ%d error %d\n", info->irq_tick, ret); 485 - goto err_nortc; 486 - } 487 - 488 - if (info->data->select_tick_clk) 489 - info->data->select_tick_clk(info); 490 - 491 - s3c_rtc_setfreq(info, 1); 492 - 493 545 s3c_rtc_disable_clk(info); 494 546 495 547 return 0; ··· 505 581 if (ret) 506 582 return ret; 507 583 508 - /* save TICNT for anyone using periodic interrupts */ 509 - if (info->data->save_tick_cnt) 510 - info->data->save_tick_cnt(info); 511 - 512 584 if (info->data->disable) 513 585 info->data->disable(info); 514 586 ··· 524 604 525 605 if (info->data->enable) 526 606 info->data->enable(info); 527 - 528 - if (info->data->restore_tick_cnt) 529 - info->data->restore_tick_cnt(info); 530 607 531 608 s3c_rtc_disable_clk(info); 532 609 ··· 548 631 writeb(mask, info->base + S3C2410_INTP); 549 632 } 550 633 551 - static void s3c2410_rtc_setfreq(struct s3c_rtc *info, int freq) 552 - { 553 - unsigned int tmp = 0; 554 - int val; 555 - 556 - tmp = readb(info->base + S3C2410_TICNT); 557 - tmp &= S3C2410_TICNT_ENABLE; 558 - 559 - val = (info->rtc->max_user_freq / freq) - 1; 560 - tmp |= val; 561 - 562 - writel(tmp, info->base + S3C2410_TICNT); 563 - } 564 - 565 - static void s3c2416_rtc_setfreq(struct s3c_rtc *info, int freq) 566 - { 567 - unsigned int tmp = 0; 568 - int val; 569 - 570 - tmp = readb(info->base + S3C2410_TICNT); 571 - tmp &= S3C2410_TICNT_ENABLE; 572 - 573 - val = (info->rtc->max_user_freq / freq) - 1; 574 - 575 - tmp |= S3C2443_TICNT_PART(val); 576 - writel(S3C2443_TICNT1_PART(val), info->base + S3C2443_TICNT1); 577 - 578 - writel(S3C2416_TICNT2_PART(val), info->base + S3C2416_TICNT2); 579 - 580 - writel(tmp, info->base + S3C2410_TICNT); 581 - } 582 - 583 - static void s3c2443_rtc_setfreq(struct s3c_rtc *info, int freq) 584 - { 585 - unsigned int tmp = 0; 586 - int val; 587 - 588 - tmp = readb(info->base + S3C2410_TICNT); 589 - tmp &= S3C2410_TICNT_ENABLE; 590 - 591 - val = (info->rtc->max_user_freq / freq) - 1; 592 - 593 - tmp |= S3C2443_TICNT_PART(val); 594 - writel(S3C2443_TICNT1_PART(val), info->base + S3C2443_TICNT1); 595 - 596 - writel(tmp, info->base + S3C2410_TICNT); 597 - } 598 - 599 - static void s3c6410_rtc_setfreq(struct s3c_rtc *info, int freq) 600 - { 601 - int val; 602 - 603 - val = (info->rtc->max_user_freq / freq) - 1; 604 - writel(val, info->base + S3C2410_TICNT); 605 - } 606 - 607 - static void s3c24xx_rtc_enable_tick(struct s3c_rtc *info, struct seq_file *seq) 608 - { 609 - unsigned int ticnt; 610 - 611 - ticnt = readb(info->base + S3C2410_TICNT); 612 - ticnt &= S3C2410_TICNT_ENABLE; 613 - 614 - seq_printf(seq, "periodic_IRQ\t: %s\n", ticnt ? "yes" : "no"); 615 - } 616 - 617 - static void s3c2416_rtc_select_tick_clk(struct s3c_rtc *info) 618 - { 619 - unsigned int con; 620 - 621 - con = readw(info->base + S3C2410_RTCCON); 622 - con |= S3C2443_RTCCON_TICSEL; 623 - writew(con, info->base + S3C2410_RTCCON); 624 - } 625 - 626 - static void s3c6410_rtc_enable_tick(struct s3c_rtc *info, struct seq_file *seq) 627 - { 628 - unsigned int ticnt; 629 - 630 - ticnt = readw(info->base + S3C2410_RTCCON); 631 - ticnt &= S3C64XX_RTCCON_TICEN; 632 - 633 - seq_printf(seq, "periodic_IRQ\t: %s\n", ticnt ? "yes" : "no"); 634 - } 635 - 636 - static void s3c24xx_rtc_save_tick_cnt(struct s3c_rtc *info) 637 - { 638 - info->ticnt_save = readb(info->base + S3C2410_TICNT); 639 - } 640 - 641 - static void s3c24xx_rtc_restore_tick_cnt(struct s3c_rtc *info) 642 - { 643 - writeb(info->ticnt_save, info->base + S3C2410_TICNT); 644 - } 645 - 646 - static void s3c6410_rtc_save_tick_cnt(struct s3c_rtc *info) 647 - { 648 - info->ticnt_en_save = readw(info->base + S3C2410_RTCCON); 649 - info->ticnt_en_save &= S3C64XX_RTCCON_TICEN; 650 - info->ticnt_save = readl(info->base + S3C2410_TICNT); 651 - } 652 - 653 - static void s3c6410_rtc_restore_tick_cnt(struct s3c_rtc *info) 654 - { 655 - unsigned int con; 656 - 657 - writel(info->ticnt_save, info->base + S3C2410_TICNT); 658 - if (info->ticnt_en_save) { 659 - con = readw(info->base + S3C2410_RTCCON); 660 - writew(con | info->ticnt_en_save, info->base + S3C2410_RTCCON); 661 - } 662 - } 663 - 664 634 static struct s3c_rtc_data const s3c2410_rtc_data = { 665 - .max_user_freq = 128, 666 635 .irq_handler = s3c24xx_rtc_irq, 667 - .set_freq = s3c2410_rtc_setfreq, 668 - .enable_tick = s3c24xx_rtc_enable_tick, 669 - .save_tick_cnt = s3c24xx_rtc_save_tick_cnt, 670 - .restore_tick_cnt = s3c24xx_rtc_restore_tick_cnt, 671 636 .enable = s3c24xx_rtc_enable, 672 637 .disable = s3c24xx_rtc_disable, 673 638 }; 674 639 675 640 static struct s3c_rtc_data const s3c2416_rtc_data = { 676 - .max_user_freq = 32768, 677 641 .irq_handler = s3c24xx_rtc_irq, 678 - .set_freq = s3c2416_rtc_setfreq, 679 - .enable_tick = s3c24xx_rtc_enable_tick, 680 - .select_tick_clk = s3c2416_rtc_select_tick_clk, 681 - .save_tick_cnt = s3c24xx_rtc_save_tick_cnt, 682 - .restore_tick_cnt = s3c24xx_rtc_restore_tick_cnt, 683 642 .enable = s3c24xx_rtc_enable, 684 643 .disable = s3c24xx_rtc_disable, 685 644 }; 686 645 687 646 static struct s3c_rtc_data const s3c2443_rtc_data = { 688 - .max_user_freq = 32768, 689 647 .irq_handler = s3c24xx_rtc_irq, 690 - .set_freq = s3c2443_rtc_setfreq, 691 - .enable_tick = s3c24xx_rtc_enable_tick, 692 - .select_tick_clk = s3c2416_rtc_select_tick_clk, 693 - .save_tick_cnt = s3c24xx_rtc_save_tick_cnt, 694 - .restore_tick_cnt = s3c24xx_rtc_restore_tick_cnt, 695 648 .enable = s3c24xx_rtc_enable, 696 649 .disable = s3c24xx_rtc_disable, 697 650 }; 698 651 699 652 static struct s3c_rtc_data const s3c6410_rtc_data = { 700 - .max_user_freq = 32768, 701 653 .needs_src_clk = true, 702 654 .irq_handler = s3c6410_rtc_irq, 703 - .set_freq = s3c6410_rtc_setfreq, 704 - .enable_tick = s3c6410_rtc_enable_tick, 705 - .save_tick_cnt = s3c6410_rtc_save_tick_cnt, 706 - .restore_tick_cnt = s3c6410_rtc_restore_tick_cnt, 707 655 .enable = s3c24xx_rtc_enable, 708 656 .disable = s3c6410_rtc_disable, 709 657 };
+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;
+4 -38
drivers/rtc/rtc-sc27xx.c
··· 299 299 sts_mask); 300 300 } 301 301 302 - static int sprd_rtc_read_aux_alarm(struct device *dev, struct rtc_wkalrm *alrm) 303 - { 304 - struct sprd_rtc *rtc = dev_get_drvdata(dev); 305 - time64_t secs; 306 - u32 val; 307 - int ret; 308 - 309 - ret = sprd_rtc_get_secs(rtc, SPRD_RTC_AUX_ALARM, &secs); 310 - if (ret) 311 - return ret; 312 - 313 - rtc_time64_to_tm(secs, &alrm->time); 314 - 315 - ret = regmap_read(rtc->regmap, rtc->base + SPRD_RTC_INT_EN, &val); 316 - if (ret) 317 - return ret; 318 - 319 - alrm->enabled = !!(val & SPRD_RTC_AUXALM_EN); 320 - 321 - ret = regmap_read(rtc->regmap, rtc->base + SPRD_RTC_INT_RAW_STS, &val); 322 - if (ret) 323 - return ret; 324 - 325 - alrm->pending = !!(val & SPRD_RTC_AUXALM_EN); 326 - return 0; 327 - } 328 - 329 302 static int sprd_rtc_set_aux_alarm(struct device *dev, struct rtc_wkalrm *alrm) 330 303 { 331 304 struct sprd_rtc *rtc = dev_get_drvdata(dev); ··· 388 415 u32 val; 389 416 390 417 /* 391 - * Before RTC device is registered, it will check to see if there is an 392 - * alarm already set in RTC hardware, and we always read the normal 393 - * alarm at this time. 394 - * 395 - * Or if aie_timer is enabled, we should get the normal alarm time. 396 - * Otherwise we should get auxiliary alarm time. 418 + * The RTC core checks to see if there is an alarm already set in RTC 419 + * hardware, and we always read the normal alarm at this time. 397 420 */ 398 - if (rtc->rtc && rtc->rtc->registered && rtc->rtc->aie_timer.enabled == 0) 399 - return sprd_rtc_read_aux_alarm(dev, alrm); 400 - 401 421 ret = sprd_rtc_get_secs(rtc, SPRD_RTC_ALARM, &secs); 402 422 if (ret) 403 423 return ret; ··· 529 563 * means the RTC has been powered down, so the RTC time values are 530 564 * invalid. 531 565 */ 532 - rtc->valid = val == SPRD_RTC_POWER_RESET_VALUE ? false : true; 566 + rtc->valid = val != SPRD_RTC_POWER_RESET_VALUE; 533 567 return 0; 534 568 } 535 569 ··· 618 652 rtc->rtc->ops = &sprd_rtc_ops; 619 653 rtc->rtc->range_min = 0; 620 654 rtc->rtc->range_max = 5662310399LL; 621 - ret = rtc_register_device(rtc->rtc); 655 + ret = devm_rtc_register_device(rtc->rtc); 622 656 if (ret) { 623 657 device_init_wakeup(&pdev->dev, 0); 624 658 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
+25 -44
drivers/rtc/rtc-snvs.c
··· 151 151 unsigned long time; 152 152 int ret; 153 153 154 - if (data->clk) { 155 - ret = clk_enable(data->clk); 156 - if (ret) 157 - return ret; 158 - } 154 + ret = clk_enable(data->clk); 155 + if (ret) 156 + return ret; 159 157 160 158 time = rtc_read_lp_counter(data); 161 159 rtc_time64_to_tm(time, tm); 162 160 163 - if (data->clk) 164 - clk_disable(data->clk); 161 + clk_disable(data->clk); 165 162 166 163 return 0; 167 164 } ··· 169 172 unsigned long time = rtc_tm_to_time64(tm); 170 173 int ret; 171 174 172 - if (data->clk) { 173 - ret = clk_enable(data->clk); 174 - if (ret) 175 - return ret; 176 - } 175 + ret = clk_enable(data->clk); 176 + if (ret) 177 + return ret; 177 178 178 179 /* Disable RTC first */ 179 180 ret = snvs_rtc_enable(data, false); ··· 185 190 /* Enable RTC again */ 186 191 ret = snvs_rtc_enable(data, true); 187 192 188 - if (data->clk) 189 - clk_disable(data->clk); 193 + clk_disable(data->clk); 190 194 191 195 return ret; 192 196 } ··· 196 202 u32 lptar, lpsr; 197 203 int ret; 198 204 199 - if (data->clk) { 200 - ret = clk_enable(data->clk); 201 - if (ret) 202 - return ret; 203 - } 205 + ret = clk_enable(data->clk); 206 + if (ret) 207 + return ret; 204 208 205 209 regmap_read(data->regmap, data->offset + SNVS_LPTAR, &lptar); 206 210 rtc_time64_to_tm(lptar, &alrm->time); ··· 206 214 regmap_read(data->regmap, data->offset + SNVS_LPSR, &lpsr); 207 215 alrm->pending = (lpsr & SNVS_LPSR_LPTA) ? 1 : 0; 208 216 209 - if (data->clk) 210 - clk_disable(data->clk); 217 + clk_disable(data->clk); 211 218 212 219 return 0; 213 220 } ··· 216 225 struct snvs_rtc_data *data = dev_get_drvdata(dev); 217 226 int ret; 218 227 219 - if (data->clk) { 220 - ret = clk_enable(data->clk); 221 - if (ret) 222 - return ret; 223 - } 228 + ret = clk_enable(data->clk); 229 + if (ret) 230 + return ret; 224 231 225 232 regmap_update_bits(data->regmap, data->offset + SNVS_LPCR, 226 233 (SNVS_LPCR_LPTA_EN | SNVS_LPCR_LPWUI_EN), ··· 226 237 227 238 ret = rtc_write_sync_lp(data); 228 239 229 - if (data->clk) 230 - clk_disable(data->clk); 240 + clk_disable(data->clk); 231 241 232 242 return ret; 233 243 } ··· 237 249 unsigned long time = rtc_tm_to_time64(&alrm->time); 238 250 int ret; 239 251 240 - if (data->clk) { 241 - ret = clk_enable(data->clk); 242 - if (ret) 243 - return ret; 244 - } 252 + ret = clk_enable(data->clk); 253 + if (ret) 254 + return ret; 245 255 246 256 regmap_update_bits(data->regmap, data->offset + SNVS_LPCR, SNVS_LPCR_LPTA_EN, 0); 247 257 ret = rtc_write_sync_lp(data); ··· 250 264 /* Clear alarm interrupt status bit */ 251 265 regmap_write(data->regmap, data->offset + SNVS_LPSR, SNVS_LPSR_LPTA); 252 266 253 - if (data->clk) 254 - clk_disable(data->clk); 267 + clk_disable(data->clk); 255 268 256 269 return snvs_rtc_alarm_irq_enable(dev, alrm->enabled); 257 270 } ··· 270 285 u32 lpsr; 271 286 u32 events = 0; 272 287 273 - if (data->clk) 274 - clk_enable(data->clk); 288 + clk_enable(data->clk); 275 289 276 290 regmap_read(data->regmap, data->offset + SNVS_LPSR, &lpsr); 277 291 ··· 286 302 /* clear interrupt status */ 287 303 regmap_write(data->regmap, data->offset + SNVS_LPSR, lpsr); 288 304 289 - if (data->clk) 290 - clk_disable(data->clk); 305 + clk_disable(data->clk); 291 306 292 307 return events ? IRQ_HANDLED : IRQ_NONE; 293 308 } ··· 299 316 300 317 static void snvs_rtc_action(void *data) 301 318 { 302 - if (data) 303 - clk_disable_unprepare(data); 319 + clk_disable_unprepare(data); 304 320 } 305 321 306 322 static int snvs_rtc_probe(struct platform_device *pdev) ··· 387 405 data->rtc->ops = &snvs_rtc_ops; 388 406 data->rtc->range_max = U32_MAX; 389 407 390 - return rtc_register_device(data->rtc); 408 + return devm_rtc_register_device(data->rtc); 391 409 } 392 410 393 411 static int __maybe_unused snvs_rtc_suspend_noirq(struct device *dev) 394 412 { 395 413 struct snvs_rtc_data *data = dev_get_drvdata(dev); 396 414 397 - if (data->clk) 398 - clk_disable(data->clk); 415 + clk_disable(data->clk); 399 416 400 417 return 0; 401 418 }
+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 = {
+2 -3
drivers/rtc/rtc-stk17ta8.c
··· 311 311 return PTR_ERR(pdata->rtc); 312 312 313 313 pdata->rtc->ops = &stk17ta8_rtc_ops; 314 - pdata->rtc->nvram_old_abi = true; 315 314 316 315 nvmem_cfg.priv = pdata; 317 - ret = rtc_nvmem_register(pdata->rtc, &nvmem_cfg); 316 + ret = devm_rtc_nvmem_register(pdata->rtc, &nvmem_cfg); 318 317 if (ret) 319 318 return ret; 320 319 321 - return rtc_register_device(pdata->rtc); 320 + return devm_rtc_register_device(pdata->rtc); 322 321 } 323 322 324 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 = {
+6 -4
drivers/rtc/rtc-sun6i.c
··· 272 272 300000000); 273 273 if (IS_ERR(rtc->int_osc)) { 274 274 pr_crit("Couldn't register the internal oscillator\n"); 275 - return; 275 + goto err; 276 276 } 277 277 278 278 parents[0] = clk_hw_get_name(rtc->int_osc); ··· 290 290 rtc->losc = clk_register(NULL, &rtc->hw); 291 291 if (IS_ERR(rtc->losc)) { 292 292 pr_crit("Couldn't register the LOSC clock\n"); 293 - return; 293 + goto err_register; 294 294 } 295 295 296 296 of_property_read_string_index(node, "clock-output-names", 1, ··· 301 301 &rtc->lock); 302 302 if (IS_ERR(rtc->ext_losc)) { 303 303 pr_crit("Couldn't register the LOSC external gate\n"); 304 - return; 304 + goto err_register; 305 305 } 306 306 307 307 clk_data->num = 2; ··· 314 314 of_clk_add_hw_provider(node, of_clk_hw_onecell_get, clk_data); 315 315 return; 316 316 317 + err_register: 318 + clk_hw_unregister_fixed_rate(rtc->int_osc); 317 319 err: 318 320 kfree(clk_data); 319 321 } ··· 726 724 chip->rtc->ops = &sun6i_rtc_ops; 727 725 chip->rtc->range_max = 2019686399LL; /* 2033-12-31 23:59:59 */ 728 726 729 - ret = rtc_register_device(chip->rtc); 727 + ret = devm_rtc_register_device(chip->rtc); 730 728 if (ret) 731 729 return ret; 732 730
+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 -2
drivers/rtc/rtc-test.c
··· 50 50 if (expires > U32_MAX) 51 51 expires = U32_MAX; 52 52 53 - pr_err("ABE: %s +%d %s\n", __FILE__, __LINE__, __func__); 54 53 rtd->alarm.expires = expires; 55 54 56 55 if (alrm->enabled) ··· 138 139 timer_setup(&rtd->alarm, test_rtc_alarm_handler, 0); 139 140 rtd->alarm.expires = 0; 140 141 141 - return rtc_register_device(rtd->rtc); 142 + return devm_rtc_register_device(rtd->rtc); 142 143 } 143 144 144 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
+2 -3
drivers/rtc/rtc-tx4939.c
··· 266 266 return PTR_ERR(rtc); 267 267 268 268 rtc->ops = &tx4939_rtc_ops; 269 - rtc->nvram_old_abi = true; 270 269 rtc->range_max = U32_MAX; 271 270 272 271 pdata->rtc = rtc; 273 272 274 273 nvmem_cfg.priv = pdata; 275 - ret = rtc_nvmem_register(rtc, &nvmem_cfg); 274 + ret = devm_rtc_nvmem_register(rtc, &nvmem_cfg); 276 275 if (ret) 277 276 return ret; 278 277 279 - return rtc_register_device(rtc); 278 + return devm_rtc_register_device(rtc); 280 279 } 281 280 282 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
+7 -15
include/linux/rtc.h
··· 141 141 */ 142 142 unsigned long set_offset_nsec; 143 143 144 - bool registered; 145 - 146 - /* Old ABI support */ 147 - bool nvram_old_abi; 148 - struct bin_attribute *nvram; 149 - 150 144 time64_t range_min; 151 145 timeu64_t range_max; 152 146 time64_t start_secs; ··· 178 184 const struct rtc_class_ops *ops, 179 185 struct module *owner); 180 186 struct rtc_device *devm_rtc_allocate_device(struct device *dev); 181 - int __rtc_register_device(struct module *owner, struct rtc_device *rtc); 187 + int __devm_rtc_register_device(struct module *owner, struct rtc_device *rtc); 182 188 183 189 extern int rtc_read_time(struct rtc_device *rtc, struct rtc_time *tm); 184 190 extern int rtc_set_time(struct rtc_device *rtc, struct rtc_time *tm); ··· 221 227 return (!(year % 4) && (year % 100)) || !(year % 400); 222 228 } 223 229 224 - #define rtc_register_device(device) \ 225 - __rtc_register_device(THIS_MODULE, device) 230 + #define devm_rtc_register_device(device) \ 231 + __devm_rtc_register_device(THIS_MODULE, device) 226 232 227 233 #ifdef CONFIG_RTC_HCTOSYS_DEVICE 228 234 extern int rtc_hctosys_ret; ··· 231 237 #endif 232 238 233 239 #ifdef CONFIG_RTC_NVMEM 234 - int rtc_nvmem_register(struct rtc_device *rtc, 235 - struct nvmem_config *nvmem_config); 236 - void rtc_nvmem_unregister(struct rtc_device *rtc); 240 + int devm_rtc_nvmem_register(struct rtc_device *rtc, 241 + struct nvmem_config *nvmem_config); 237 242 #else 238 - static inline int rtc_nvmem_register(struct rtc_device *rtc, 239 - struct nvmem_config *nvmem_config) 243 + static inline int devm_rtc_nvmem_register(struct rtc_device *rtc, 244 + struct nvmem_config *nvmem_config) 240 245 { 241 246 return 0; 242 247 } 243 - static inline void rtc_nvmem_unregister(struct rtc_device *rtc) {} 244 248 #endif 245 249 246 250 #ifdef CONFIG_RTC_INTF_SYSFS