hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/rtc/rtc-tx4939.c
....@@ -1,10 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0
12 /*
23 * TX4939 internal RTC driver
34 * Based on RBTX49xx patch from CELF patch archive.
4
- *
5
- * This file is subject to the terms and conditions of the GNU General Public
6
- * License. See the file "COPYING" in the main directory of this archive
7
- * for more details.
85 *
96 * (C) Copyright TOSHIBA CORPORATION 2005-2007
107 */
....@@ -45,11 +42,6 @@
4542 spinlock_t lock;
4643 };
4744
48
-static struct tx4939rtc_plat_data *get_tx4939rtc_plat_data(struct device *dev)
49
-{
50
- return platform_get_drvdata(to_platform_device(dev));
51
-}
52
-
5345 static int tx4939_rtc_cmd(struct tx4939_rtc_reg __iomem *rtcreg, int cmd)
5446 {
5547 int i = 0;
....@@ -65,10 +57,11 @@
6557 return 0;
6658 }
6759
68
-static int tx4939_rtc_set_mmss(struct device *dev, unsigned long secs)
60
+static int tx4939_rtc_set_time(struct device *dev, struct rtc_time *tm)
6961 {
70
- struct tx4939rtc_plat_data *pdata = get_tx4939rtc_plat_data(dev);
62
+ struct tx4939rtc_plat_data *pdata = dev_get_drvdata(dev);
7163 struct tx4939_rtc_reg __iomem *rtcreg = pdata->rtcreg;
64
+ unsigned long secs = rtc_tm_to_time64(tm);
7265 int i, ret;
7366 unsigned char buf[6];
7467
....@@ -91,7 +84,7 @@
9184
9285 static int tx4939_rtc_read_time(struct device *dev, struct rtc_time *tm)
9386 {
94
- struct tx4939rtc_plat_data *pdata = get_tx4939rtc_plat_data(dev);
87
+ struct tx4939rtc_plat_data *pdata = dev_get_drvdata(dev);
9588 struct tx4939_rtc_reg __iomem *rtcreg = pdata->rtcreg;
9689 int i, ret;
9790 unsigned long sec;
....@@ -111,26 +104,19 @@
111104 spin_unlock_irq(&pdata->lock);
112105 sec = ((unsigned long)buf[5] << 24) | (buf[4] << 16) |
113106 (buf[3] << 8) | buf[2];
114
- rtc_time_to_tm(sec, tm);
107
+ rtc_time64_to_tm(sec, tm);
115108 return 0;
116109 }
117110
118111 static int tx4939_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
119112 {
120
- struct tx4939rtc_plat_data *pdata = get_tx4939rtc_plat_data(dev);
113
+ struct tx4939rtc_plat_data *pdata = dev_get_drvdata(dev);
121114 struct tx4939_rtc_reg __iomem *rtcreg = pdata->rtcreg;
122115 int i, ret;
123116 unsigned long sec;
124117 unsigned char buf[6];
125118
126
- if (alrm->time.tm_sec < 0 ||
127
- alrm->time.tm_min < 0 ||
128
- alrm->time.tm_hour < 0 ||
129
- alrm->time.tm_mday < 0 ||
130
- alrm->time.tm_mon < 0 ||
131
- alrm->time.tm_year < 0)
132
- return -EINVAL;
133
- rtc_tm_to_time(&alrm->time, &sec);
119
+ sec = rtc_tm_to_time64(&alrm->time);
134120 buf[0] = 0;
135121 buf[1] = 0;
136122 buf[2] = sec;
....@@ -149,7 +135,7 @@
149135
150136 static int tx4939_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
151137 {
152
- struct tx4939rtc_plat_data *pdata = get_tx4939rtc_plat_data(dev);
138
+ struct tx4939rtc_plat_data *pdata = dev_get_drvdata(dev);
153139 struct tx4939_rtc_reg __iomem *rtcreg = pdata->rtcreg;
154140 int i, ret;
155141 unsigned long sec;
....@@ -173,13 +159,13 @@
173159 spin_unlock_irq(&pdata->lock);
174160 sec = ((unsigned long)buf[5] << 24) | (buf[4] << 16) |
175161 (buf[3] << 8) | buf[2];
176
- rtc_time_to_tm(sec, &alrm->time);
162
+ rtc_time64_to_tm(sec, &alrm->time);
177163 return rtc_valid_tm(&alrm->time);
178164 }
179165
180166 static int tx4939_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled)
181167 {
182
- struct tx4939rtc_plat_data *pdata = get_tx4939rtc_plat_data(dev);
168
+ struct tx4939rtc_plat_data *pdata = dev_get_drvdata(dev);
183169
184170 spin_lock_irq(&pdata->lock);
185171 tx4939_rtc_cmd(pdata->rtcreg,
....@@ -191,7 +177,7 @@
191177
192178 static irqreturn_t tx4939_rtc_interrupt(int irq, void *dev_id)
193179 {
194
- struct tx4939rtc_plat_data *pdata = get_tx4939rtc_plat_data(dev_id);
180
+ struct tx4939rtc_plat_data *pdata = dev_get_drvdata(dev_id);
195181 struct tx4939_rtc_reg __iomem *rtcreg = pdata->rtcreg;
196182 unsigned long events = RTC_IRQF;
197183
....@@ -210,7 +196,7 @@
210196 .read_time = tx4939_rtc_read_time,
211197 .read_alarm = tx4939_rtc_read_alarm,
212198 .set_alarm = tx4939_rtc_set_alarm,
213
- .set_mmss = tx4939_rtc_set_mmss,
199
+ .set_time = tx4939_rtc_set_time,
214200 .alarm_irq_enable = tx4939_rtc_alarm_irq_enable,
215201 };
216202
....@@ -250,7 +236,6 @@
250236 {
251237 struct rtc_device *rtc;
252238 struct tx4939rtc_plat_data *pdata;
253
- struct resource *res;
254239 int irq, ret;
255240 struct nvmem_config nvmem_cfg = {
256241 .name = "tx4939_nvram",
....@@ -267,8 +252,7 @@
267252 return -ENOMEM;
268253 platform_set_drvdata(pdev, pdata);
269254
270
- res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
271
- pdata->rtcreg = devm_ioremap_resource(&pdev->dev, res);
255
+ pdata->rtcreg = devm_platform_ioremap_resource(pdev, 0);
272256 if (IS_ERR(pdata->rtcreg))
273257 return PTR_ERR(pdata->rtcreg);
274258
....@@ -283,6 +267,7 @@
283267
284268 rtc->ops = &tx4939_rtc_ops;
285269 rtc->nvram_old_abi = true;
270
+ rtc->range_max = U32_MAX;
286271
287272 pdata->rtc = rtc;
288273
....@@ -315,5 +300,5 @@
315300
316301 MODULE_AUTHOR("Atsushi Nemoto <anemo@mba.ocn.ne.jp>");
317302 MODULE_DESCRIPTION("TX4939 internal RTC driver");
318
-MODULE_LICENSE("GPL");
303
+MODULE_LICENSE("GPL v2");
319304 MODULE_ALIAS("platform:tx4939rtc");