[rtc-linux] [PATCH 3/3] rtc: rtc-s3c: Add BCD register initialization codes
Wan ZongShun
mcuos.com at gmail.com
Fri Jul 23 05:28:07 EDT 2010
2010/7/23 Kukjin Kim <kgene.kim at samsung.com>:
> Wan ZongShun wrote:
>>
>> 2010/7/21 Kukjin Kim <kgene.kim at samsung.com>:
>> > From: Taekgyun Ko <taeggyun.ko at samsung.com>
>> >
>> > RTC needs to be initialized when BCD registers have invalid value.
>>
>> Do you mean that the hardware register does not have default value?
>> Any results if no initialized value here?
>>
> Hi,
>
> Yes..I mean that it has no default value.
> As you know, it has to be keep the previous time value after reset..and the reset value is not defined.
>
So, reset is no use to this RTC BCD registers, it still keep previous
time value.
> So added check that functionality, because if it has no valid BCD value, RTC time does not move on.
> Of course, if we set time at that time, RTC works well...I mean just need initialize that.
>
Okay,good patch.:)
In addtion,For making sure to get valid value, it is much better to
use also 'rtc_valid_tm(tm)' to check returning time value in your
s3c_rtc_gettime() and s3c_rtc_getalarm(() functions.
>> >
>> > Signed-off-by: Taekgyun Ko <taeggyun.ko at samsung.com>
>> > Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>
>> > ---
>> > drivers/rtc/rtc-s3c.c | 14 ++++++++++++--
>> > 1 files changed, 12 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c
>> > index 2040017..e96e109 100644
>> > --- a/drivers/rtc/rtc-s3c.c
>> > +++ b/drivers/rtc/rtc-s3c.c
>> > @@ -536,10 +536,20 @@ static int __devinit s3c_rtc_probe(struct
>> platform_device *pdev)
>> >
>> > s3c_rtc_cpu_type = platform_get_device_id(pdev)->driver_data;
>> >
>> > - if (s3c_rtc_cpu_type == TYPE_S3C64XX)
>> > + if (s3c_rtc_cpu_type == TYPE_S3C64XX) {
>> > rtc->max_user_freq = 32768;
>> > - else
>> > +
>> > + /* Check RTC Time */
>> > +
>> > + for (i = S3C2410_RTCSEC; i <= S3C2410_RTCYEAR; i += 0x4) {
>> > + tmp = readb(s3c_rtc_base + i);
>> > +
>> > + if (((tmp & 0xf) > 0x9) || (((tmp >> 4) & 0xf) > 0x9))
>> > + writeb(0, s3c_rtc_base + i);
>> > + }
>> > + } else {
>> > rtc->max_user_freq = 128;
>> > + }
>> >
>> > platform_set_drvdata(pdev, rtc);
>> >
>> > --
>> > 1.6.2.5
>> >
>
>
> Thanks.
>
> Best regards,
> Kgene.
> --
> Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
> SW Solution Development Team, Samsung Electronics Co., Ltd.
>
> --
> You received this message because you are subscribed to "rtc-linux".
> Membership options at http://groups.google.com/group/rtc-linux .
> Please read http://groups.google.com/group/rtc-linux/web/checklist
> before submitting a driver.
--
*linux-arm-kernel mailing list
mail addr:linux-arm-kernel at lists.infradead.org
you can subscribe by:
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
* linux-arm-NUC900 mailing list
mail addr:NUC900 at googlegroups.com
main web: https://groups.google.com/group/NUC900
you can subscribe it by sending me mail:
mcuos.com at gmail.com
More information about the linux-arm-kernel
mailing list