[RFC PATCH 2/4] rtc: sysfs: Export the valid range supported by RTC hardware

From: Baolin Wang
Date: Tue Jan 02 2018 - 00:10:49 EST


We have introduced one interface to get the RTC range, so this patch
exports the valid range supported by RTC hardware to userspace.

Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxx>
---
Documentation/rtc.txt | 2 ++
drivers/rtc/rtc-sysfs.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 32 insertions(+)

diff --git a/Documentation/rtc.txt b/Documentation/rtc.txt
index c0c9774..4fe437b 100644
--- a/Documentation/rtc.txt
+++ b/Documentation/rtc.txt
@@ -164,6 +164,8 @@ offset The amount which the rtc clock has been adjusted in firmware.
which are added to or removed from the rtc's base clock per
billion ticks. A positive value makes a day pass more slowly,
longer, and a negative value makes a day pass more quickly.
+range_max The maximum time values in seconds supported by RTC hardware.
+range_min The minimum time values in seconds supported by RTC hardware.
*/nvmem The non volatile storage exported as a raw file, as described
in Documentation/nvmem/nvmem.txt
================ ==============================================================
diff --git a/drivers/rtc/rtc-sysfs.c b/drivers/rtc/rtc-sysfs.c
index 92ff2ed..60e1f6c 100644
--- a/drivers/rtc/rtc-sysfs.c
+++ b/drivers/rtc/rtc-sysfs.c
@@ -248,6 +248,34 @@
}
static DEVICE_ATTR_RW(offset);

+static ssize_t
+range_max_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ ssize_t retval;
+ time64_t max_hw_secs, min_hw_secs;
+
+ retval = rtc_read_range(to_rtc_device(dev), &max_hw_secs, &min_hw_secs);
+ if (retval == 0)
+ retval = sprintf(buf, "%lld\n", max_hw_secs);
+
+ return retval;
+}
+static DEVICE_ATTR_RO(range_max);
+
+static ssize_t
+range_min_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+ ssize_t retval;
+ time64_t max_hw_secs, min_hw_secs;
+
+ retval = rtc_read_range(to_rtc_device(dev), &max_hw_secs, &min_hw_secs);
+ if (retval == 0)
+ retval = sprintf(buf, "%lld\n", min_hw_secs);
+
+ return retval;
+}
+static DEVICE_ATTR_RO(range_min);
+
static struct attribute *rtc_attrs[] = {
&dev_attr_name.attr,
&dev_attr_date.attr,
@@ -257,6 +285,8 @@
&dev_attr_hctosys.attr,
&dev_attr_wakealarm.attr,
&dev_attr_offset.attr,
+ &dev_attr_range_max.attr,
+ &dev_attr_range_min.attr,
NULL,
};

--
1.7.9.5