Wolfgang Denk schrieb: > Dear "Reinhard Meyer (-VC)", > > In message <[email protected]> you wrote: >> cmd_data.c codes the following: > ... >> rcode = rtc_get (&tm); >> >> if(!rcode) { >> /* insert new date & time */ >> if (mk_date (argv[1], &tm) != 0) { >> puts ("## Bad date format\n"); >> break; >> } >> /* and write to RTC */ >> rcode = rtc_set (&tm); >> if(rcode) >> puts("## Set date failed\n"); >> } else { >> puts("## Get date failed\n"); >> } > ... >> Now I have implemented rtc_get() such that it returns an error code >> when the time is corrupt/has never been set. > > It is considered kind of "normal" that a RTC may return "corrupt" > data. This is not an error, as it will be fixed when setting the date. > An error condition is something that really makes the RTC unusable, > like non-functioning communication on the I2C bus (if your RTC is > connected to that), or reading a Low Voltage error status from the RTC > status register, etc. > >> However the "if(!rcode)" then prevents the time to be set! > > Well, if you cannot eliably communicate with the RTC when reading, > there is little sense trying to write to it - on contrary, this might > even be dangerous. > >> Is that intentional and rtc_get() should never return an error ?? >> Or is it an oversight, and a patch would be welcome ? > > The behaviour is intentional, but rtc_get() can of course return > error codes - only your expectation when this is the case is > different from mine. > Dear Wolfgang,
of course that depends on what is considered an error.
As well as there is a difference between read error and file not found,
there well might be a difference in clock nonfunctional and time invalid...
But alas, I will make rtc_get not return an error and zero out the tm
structure instead when the driver KNOWS the date is not correct.
And btw. a low voltage status error from the clock does not necessaryly
mean the clock cannot be set again, that status (and thats exactly what
I intended to return) just could mean that the backup voltage was too low
during a system unpowered time to guarantee a proper date but since
(in our case) the backup power comes from a GoldCap a new set of the
clock would heal that status.
And if the clock really would be defective
/* and write to RTC */
rcode = rtc_set (&tm);
if(rcode)
puts("## Set date failed\n");
would still give a proper error message!
Reinhard
<<attachment: reinhard_meyer.vcf>>
_______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

