aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rtc
diff options
context:
space:
mode:
authorAndrea Scian <andrea.scian@dave.eu>2015-06-16 05:35:19 -0400
committerAlexandre Belloni <alexandre.belloni@free-electrons.com>2015-09-05 07:19:06 -0400
commit821f51c4da869706356ddecfeeac286bf4df9b98 (patch)
tree0f6fcc6f2dab3927ac712d24f0708f9d5b00328e /drivers/rtc
parent4ab82103131777b9aabb6ba31aead6e5b0293b32 (diff)
rtc: use rtc_valid_tm() error code when reading date/time
There's a wrong comment in some RTC drivers that say it's better to ignore rtc_valid_tm() when reading RTC timestamp. However this is wrong and is better to return to the userspace the error if timestamp is not valid. Signed-off-by: Andrea Scian <andrea.scian@dave.eu> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Diffstat (limited to 'drivers/rtc')
-rw-r--r--drivers/rtc/rtc-isl12022.c7
-rw-r--r--drivers/rtc/rtc-pcf2123.c8
-rw-r--r--drivers/rtc/rtc-pcf2127.c8
3 files changed, 3 insertions, 20 deletions
diff --git a/drivers/rtc/rtc-isl12022.c b/drivers/rtc/rtc-isl12022.c
index f9b082784b90..372627136786 100644
--- a/drivers/rtc/rtc-isl12022.c
+++ b/drivers/rtc/rtc-isl12022.c
@@ -151,12 +151,7 @@ static int isl12022_get_datetime(struct i2c_client *client, struct rtc_time *tm)
151 tm->tm_sec, tm->tm_min, tm->tm_hour, 151 tm->tm_sec, tm->tm_min, tm->tm_hour,
152 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); 152 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
153 153
154 /* The clock can give out invalid datetime, but we cannot return 154 return rtc_valid_tm(tm);
155 * -EINVAL otherwise hwclock will refuse to set the time on bootup. */
156 if (rtc_valid_tm(tm) < 0)
157 dev_err(&client->dev, "retrieved date and time is invalid.\n");
158
159 return 0;
160} 155}
161 156
162static int isl12022_set_datetime(struct i2c_client *client, struct rtc_time *tm) 157static int isl12022_set_datetime(struct i2c_client *client, struct rtc_time *tm)
diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
index 8a7556cbcb7f..1c47650fe624 100644
--- a/drivers/rtc/rtc-pcf2123.c
+++ b/drivers/rtc/rtc-pcf2123.c
@@ -165,13 +165,7 @@ static int pcf2123_rtc_read_time(struct device *dev, struct rtc_time *tm)
165 tm->tm_sec, tm->tm_min, tm->tm_hour, 165 tm->tm_sec, tm->tm_min, tm->tm_hour,
166 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); 166 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
167 167
168 /* the clock can give out invalid datetime, but we cannot return 168 return rtc_valid_tm(tm);
169 * -EINVAL otherwise hwclock will refuse to set the time on bootup.
170 */
171 if (rtc_valid_tm(tm) < 0)
172 dev_err(dev, "retrieved date/time is not valid.\n");
173
174 return 0;
175} 169}
176 170
177static int pcf2123_rtc_set_time(struct device *dev, struct rtc_time *tm) 171static int pcf2123_rtc_set_time(struct device *dev, struct rtc_time *tm)
diff --git a/drivers/rtc/rtc-pcf2127.c b/drivers/rtc/rtc-pcf2127.c
index 9bd842e97749..350c5c7cb678 100644
--- a/drivers/rtc/rtc-pcf2127.c
+++ b/drivers/rtc/rtc-pcf2127.c
@@ -88,13 +88,7 @@ static int pcf2127_get_datetime(struct i2c_client *client, struct rtc_time *tm)
88 tm->tm_sec, tm->tm_min, tm->tm_hour, 88 tm->tm_sec, tm->tm_min, tm->tm_hour,
89 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday); 89 tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
90 90
91 /* the clock can give out invalid datetime, but we cannot return 91 return rtc_valid_tm(tm);
92 * -EINVAL otherwise hwclock will refuse to set the time on bootup.
93 */
94 if (rtc_valid_tm(tm) < 0)
95 dev_err(&client->dev, "retrieved date/time is not valid.\n");
96
97 return 0;
98} 92}
99 93
100static int pcf2127_set_datetime(struct i2c_client *client, struct rtc_time *tm) 94static int pcf2127_set_datetime(struct i2c_client *client, struct rtc_time *tm)