hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/rtc/rtc-sirfsoc.c
....@@ -1,9 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * SiRFSoC Real Time Clock interface for Linux
34 *
45 * Copyright (c) 2013 Cambridge Silicon Radio Limited, a CSR plc group company.
5
- *
6
- * Licensed under GPLv2 or later.
76 */
87
98 #include <linux/module.h>
....@@ -91,13 +90,13 @@
9190 */
9291 /* if alarm is in next overflow cycle */
9392 if (rtc_count > rtc_alarm)
94
- rtc_time_to_tm((rtcdrv->overflow_rtc + 1)
95
- << (BITS_PER_LONG - RTC_SHIFT)
96
- | rtc_alarm >> RTC_SHIFT, &(alrm->time));
93
+ rtc_time64_to_tm((rtcdrv->overflow_rtc + 1)
94
+ << (BITS_PER_LONG - RTC_SHIFT)
95
+ | rtc_alarm >> RTC_SHIFT, &alrm->time);
9796 else
98
- rtc_time_to_tm(rtcdrv->overflow_rtc
99
- << (BITS_PER_LONG - RTC_SHIFT)
100
- | rtc_alarm >> RTC_SHIFT, &(alrm->time));
97
+ rtc_time64_to_tm(rtcdrv->overflow_rtc
98
+ << (BITS_PER_LONG - RTC_SHIFT)
99
+ | rtc_alarm >> RTC_SHIFT, &alrm->time);
101100 if (sirfsoc_rtc_readl(rtcdrv, RTC_STATUS) & SIRFSOC_RTC_AL0E)
102101 alrm->enabled = 1;
103102
....@@ -114,7 +113,7 @@
114113 rtcdrv = dev_get_drvdata(dev);
115114
116115 if (alrm->enabled) {
117
- rtc_tm_to_time(&(alrm->time), &rtc_alarm);
116
+ rtc_alarm = rtc_tm_to_time64(&alrm->time);
118117
119118 spin_lock_irq(&rtcdrv->lock);
120119
....@@ -182,8 +181,8 @@
182181 cpu_relax();
183182 } while (tmp_rtc != sirfsoc_rtc_readl(rtcdrv, RTC_CN));
184183
185
- rtc_time_to_tm(rtcdrv->overflow_rtc << (BITS_PER_LONG - RTC_SHIFT) |
186
- tmp_rtc >> RTC_SHIFT, tm);
184
+ rtc_time64_to_tm(rtcdrv->overflow_rtc << (BITS_PER_LONG - RTC_SHIFT)
185
+ | tmp_rtc >> RTC_SHIFT, tm);
187186 return 0;
188187 }
189188
....@@ -194,7 +193,7 @@
194193 struct sirfsoc_rtc_drv *rtcdrv;
195194 rtcdrv = dev_get_drvdata(dev);
196195
197
- rtc_tm_to_time(tm, &rtc_time);
196
+ rtc_time = rtc_tm_to_time64(tm);
198197
199198 rtcdrv->overflow_rtc = rtc_time >> (BITS_PER_LONG - RTC_SHIFT);
200199
....@@ -279,7 +278,7 @@
279278 {},
280279 };
281280
282
-const struct regmap_config sysrtc_regmap_config = {
281
+static const struct regmap_config sysrtc_regmap_config = {
283282 .reg_bits = 32,
284283 .val_bits = 32,
285284 .fast_io = true,
....@@ -342,35 +341,22 @@
342341 rtcdrv->overflow_rtc =
343342 sirfsoc_rtc_readl(rtcdrv, RTC_SW_VALUE);
344343
345
- rtcdrv->rtc = devm_rtc_device_register(&pdev->dev, pdev->name,
346
- &sirfsoc_rtc_ops, THIS_MODULE);
347
- if (IS_ERR(rtcdrv->rtc)) {
348
- err = PTR_ERR(rtcdrv->rtc);
349
- dev_err(&pdev->dev, "can't register RTC device\n");
350
- return err;
351
- }
344
+ rtcdrv->rtc = devm_rtc_allocate_device(&pdev->dev);
345
+ if (IS_ERR(rtcdrv->rtc))
346
+ return PTR_ERR(rtcdrv->rtc);
347
+
348
+ rtcdrv->rtc->ops = &sirfsoc_rtc_ops;
349
+ rtcdrv->rtc->range_max = (1ULL << 60) - 1;
352350
353351 rtcdrv->irq = platform_get_irq(pdev, 0);
354
- err = devm_request_irq(
355
- &pdev->dev,
356
- rtcdrv->irq,
357
- sirfsoc_rtc_irq_handler,
358
- IRQF_SHARED,
359
- pdev->name,
360
- rtcdrv);
352
+ err = devm_request_irq(&pdev->dev, rtcdrv->irq, sirfsoc_rtc_irq_handler,
353
+ IRQF_SHARED, pdev->name, rtcdrv);
361354 if (err) {
362355 dev_err(&pdev->dev, "Unable to register for the SiRF SOC RTC IRQ\n");
363356 return err;
364357 }
365358
366
- return 0;
367
-}
368
-
369
-static int sirfsoc_rtc_remove(struct platform_device *pdev)
370
-{
371
- device_init_wakeup(&pdev->dev, 0);
372
-
373
- return 0;
359
+ return rtc_register_device(rtcdrv->rtc);
374360 }
375361
376362 #ifdef CONFIG_PM_SLEEP
....@@ -451,7 +437,6 @@
451437 .of_match_table = sirfsoc_rtc_of_match,
452438 },
453439 .probe = sirfsoc_rtc_probe,
454
- .remove = sirfsoc_rtc_remove,
455440 };
456441 module_platform_driver(sirfsoc_rtc_driver);
457442