Message ID | 20120621135136.1e2ff338.akpm@linux-foundation.org |
---|---|
State | Accepted |
Headers | show |
Hi Andrew, Thanks a lot for the reply. :-) On Fri, Jun 22, 2012 at 2:21 AM, Andrew Morton <akpm@linux-foundation.org> wrote: > On Thu, 21 Jun 2012 12:34:40 +0530 > Looks OK. > > > I think the driver would be better if we were to do this: > > > From: Andrew Morton <akpm@linux-foundation.org> > Subject: drivers/rtc/rtc-r9701.c: check that r9701_set_datetime() succeeded > > When the driver detects that the clock time is invalid, it attempts to > write a sane time into the hardware. We curently assume that everything > is OK is those writes succeeded. But it is better to re-read the time > from the hardware to ensure that the new settings got there OK. > > Cc: Devendra Naga <devendra.aaru@gmail.com> > Cc: Alessandro Zummo <a.zummo@towertech.it> > Cc: Anatolij Gustschin <agust@denx.de> > Cc: Andreas Dumberger <andreas.dumberger@tqs.de> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > --- > > drivers/rtc/rtc-r9701.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff -puN drivers/rtc/rtc-r9701.c~a drivers/rtc/rtc-r9701.c > --- a/drivers/rtc/rtc-r9701.c~a > +++ a/drivers/rtc/rtc-r9701.c > @@ -147,7 +147,8 @@ static int __devinit r9701_probe(struct > dt.tm_mon = 0; > dt.tm_year = 100; > > - if (r9701_set_datetime(&spi->dev, &dt)) { > + if (r9701_set_datetime(&spi->dev, &dt) || > + r9701_get_datetime(&spi->dev, &dt)) { Yeah, agreed, crosschecking whether we have a valid time set at the hardware by the r9701_set_datetime. > dev_err(&spi->dev, "cannot repair RTC register\n"); > return -ENODEV; > } > _ > > > But I can't test this :( I also dont have the RTC-j9701 hardware :(. i was thinking of cases like setting / getting of time from ioctl. but there was no ioctl support inside the driver. i am really a newbie in kernel, pardon me if i told anything wrong ... Thanks, Devendra.
diff -puN drivers/rtc/rtc-r9701.c~a drivers/rtc/rtc-r9701.c --- a/drivers/rtc/rtc-r9701.c~a +++ a/drivers/rtc/rtc-r9701.c @@ -147,7 +147,8 @@ static int __devinit r9701_probe(struct dt.tm_mon = 0; dt.tm_year = 100; - if (r9701_set_datetime(&spi->dev, &dt)) { + if (r9701_set_datetime(&spi->dev, &dt) || + r9701_get_datetime(&spi->dev, &dt)) { dev_err(&spi->dev, "cannot repair RTC register\n"); return -ENODEV; }