[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