
13 Sep
2012
13 Sep
'12
1:28 a.m.
Hi Marek,
On 09/12/2012 10:03 PM, Marek Vasut wrote:
Dear José Miguel Gonçalves,
+static inline void rtc_access_disable(void) +{
- s3c24xx_rtc *const rtc = s3c24xx_get_base_rtc();
- uchar rtccon;
- rtccon = readb(&rtc->rtccon);
- rtccon &= ~0x01;
Magic numbers, fix globally in the patchset
OK.
- writeb(rtccon, &rtc->rtccon);
+}
+/*
*/ + +int rtc_get(struct rtc_time *tmp) +{
- s3c24xx_rtc *const rtc = s3c24xx_get_base_rtc();
- uchar sec, min, hour, mday, wday, mon, year;
- int have_retried = 0;
- rtc_access_enable();
- /* Read RTC registers */
+retry_get_time:
- min = readb(&rtc->bcdmin);
- hour = readb(&rtc->bcdhour);
- mday = readb(&rtc->bcddate);
- wday = readb(&rtc->bcdday);
- mon = readb(&rtc->bcdmon);
- year = readb(&rtc->bcdyear);
- sec = readb(&rtc->bcdsec);
- /* The only way to work out whether the RTC was mid-update
* when we read it is to check the seconds counter.
* If it's zero, then we re-try the entire read.
*/
Wrong multiline comment style ... use ./tools/checkpatch.pl before resending
OK.
- if (rtc->bcdsec == 0 && !have_retried) {
I'm sure you can avoid the goto here ...besides, this rtc->bcdsec doesn't make much sense
I could do it with a do..while loop instead... this part was copied from the linux driver. And there is a bug... instead of 'rtc->bcdsec' it should be 'sec'!
Regards, José Gonçalves