aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc/sysfs.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-05-09 17:46:33 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-09 17:46:33 -0400
commit8e4ff713ce313dcabbb60e6ede1ffc193e67631f (patch)
tree8efdfe4925570ec8608d40e229ed01a5432d901e /drivers/rtc/sysfs.c
parent45182e4e1f8ac04708ca7508c51d9103f07d81ab (diff)
parentdacb6a4035a010e41abaf81c1cfe2beadfb05ec8 (diff)
Merge tag 'rtc-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
Pull RTC updates from Alexandre Belloni: "A huge series from me this cycle. I went through many drivers to set the date and time range supported by the RTC which helps solving HW limitation when the time comes (as early as next year for some). This time, I focused on drivers using .set_mms and .set_mmss64, allowing me to remove those callbacks. About a third of the patches got reviews, I actually own the RTCs and I tested another third and the remaining one are unlikely to cause any issues. Other than that, a single new driver and the usual fixes here and there. Summary: Subsystem: - set_mmss and set_mmss64 rtc_ops removal - Fix timestamp value for RTC_TIMESTAMP_BEGIN_1900 - Use SPDX identifier for the core - validate upper bound of tm->tm_year New driver: - Aspeed BMC SoC RTC Drivers: - abx80x: use rtc_add_group - ds3232: nvram support - pcf85063: add alarm, nvram, offset correction and microcrystal rv8263 support - x1205: add of_match_table - Use set_time instead of set_mms/set_mmss64 for: ab3100, coh901331, digicolor, ds1672, ds2404, ep93xx, imxdi, jz4740, lpc32xx, mc13xxx, mxc, pcap, stmp3xxx, test, wm831x, xgene. - Set RTC range for: ab3100, at91sam9, coh901331, da9063, digicolor, dm355evm, ds1672, ds2404, ep39xx, goldfish, imxdi, jz4740, lpc32xx, mc13xxx, mv, mxc, omap, pcap, pcf85063, pcf85363, ps3, sh, stmp3xxx, sun4v, tegra, wm831x, xgene. - Switch to rtc_time64_to_tm/rtc_tm_to_time64 for the driver that properly set the RTC range. - Use dev_get_drvdata instead of multiple indirections" * tag 'rtc-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (177 commits) rtc: snvs: Use __maybe_unused instead of #if CONFIG_PM_SLEEP rtc: imxdi: remove unused variable rtc: drop set_mms and set_mmss64 rtc: pcap: convert to SPDX identifier rtc: pcap: use .set_time rtc: pcap: switch to rtc_time64_to_tm/rtc_tm_to_time64 rtc: pcap: set range rtc: digicolor: convert to SPDX identifier rtc: digicolor: use .set_time rtc: digicolor: set range rtc: digicolor: fix possible race condition rtc: jz4740: convert to SPDX identifier rtc: jz4740: rework invalid time detection rtc: jz4740: use dev_pm_set_wake_irq() to simplify code rtc: jz4740: use .set_time rtc: jz4740: remove useless check rtc: jz4740: switch to rtc_time64_to_tm/rtc_tm_to_time64 rtc: jz4740: set range rtc: 88pm860x: prevent use-after-free on device remove rtc: Use dev_get_drvdata() ...
Diffstat (limited to 'drivers/rtc/sysfs.c')
-rw-r--r--drivers/rtc/sysfs.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/rtc/sysfs.c b/drivers/rtc/sysfs.c
index a8f22ee726bb..be3531e7f868 100644
--- a/drivers/rtc/sysfs.c
+++ b/drivers/rtc/sysfs.c
@@ -1,20 +1,16 @@
1// SPDX-License-Identifier: GPL-2.0
1/* 2/*
2 * RTC subsystem, sysfs interface 3 * RTC subsystem, sysfs interface
3 * 4 *
4 * Copyright (C) 2005 Tower Technologies 5 * Copyright (C) 2005 Tower Technologies
5 * Author: Alessandro Zummo <a.zummo@towertech.it> 6 * Author: Alessandro Zummo <a.zummo@towertech.it>
6 * 7 */
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10*/
11 8
12#include <linux/module.h> 9#include <linux/module.h>
13#include <linux/rtc.h> 10#include <linux/rtc.h>
14 11
15#include "rtc-core.h" 12#include "rtc-core.h"
16 13
17
18/* device attributes */ 14/* device attributes */
19 15
20/* 16/*
@@ -86,7 +82,7 @@ max_user_freq_show(struct device *dev, struct device_attribute *attr, char *buf)
86 82
87static ssize_t 83static ssize_t
88max_user_freq_store(struct device *dev, struct device_attribute *attr, 84max_user_freq_store(struct device *dev, struct device_attribute *attr,
89 const char *buf, size_t n) 85 const char *buf, size_t n)
90{ 86{
91 struct rtc_device *rtc = to_rtc_device(dev); 87 struct rtc_device *rtc = to_rtc_device(dev);
92 unsigned long val; 88 unsigned long val;
@@ -116,12 +112,11 @@ hctosys_show(struct device *dev, struct device_attribute *attr, char *buf)
116{ 112{
117#ifdef CONFIG_RTC_HCTOSYS_DEVICE 113#ifdef CONFIG_RTC_HCTOSYS_DEVICE
118 if (rtc_hctosys_ret == 0 && 114 if (rtc_hctosys_ret == 0 &&
119 strcmp(dev_name(&to_rtc_device(dev)->dev), 115 strcmp(dev_name(&to_rtc_device(dev)->dev),
120 CONFIG_RTC_HCTOSYS_DEVICE) == 0) 116 CONFIG_RTC_HCTOSYS_DEVICE) == 0)
121 return sprintf(buf, "1\n"); 117 return sprintf(buf, "1\n");
122 else
123#endif 118#endif
124 return sprintf(buf, "0\n"); 119 return sprintf(buf, "0\n");
125} 120}
126static DEVICE_ATTR_RO(hctosys); 121static DEVICE_ATTR_RO(hctosys);
127 122
@@ -175,15 +170,15 @@ wakealarm_store(struct device *dev, struct device_attribute *attr,
175 if (*buf_ptr == '=') { 170 if (*buf_ptr == '=') {
176 buf_ptr++; 171 buf_ptr++;
177 push = 1; 172 push = 1;
178 } else 173 } else {
179 adjust = 1; 174 adjust = 1;
175 }
180 } 176 }
181 retval = kstrtos64(buf_ptr, 0, &alarm); 177 retval = kstrtos64(buf_ptr, 0, &alarm);
182 if (retval) 178 if (retval)
183 return retval; 179 return retval;
184 if (adjust) { 180 if (adjust)
185 alarm += now; 181 alarm += now;
186 }
187 if (alarm > now || push) { 182 if (alarm > now || push) {
188 /* Avoid accidentally clobbering active alarms; we can't 183 /* Avoid accidentally clobbering active alarms; we can't
189 * entirely prevent that here, without even the minimal 184 * entirely prevent that here, without even the minimal