fix drivers/char/s3c2410-rtc.c: add missing base address
Subsystems (2)
PATCH 1/1 fix drivers/char/s3c2410-rtc.c: add missing base address
Apply to drivers/char/s3c2410-rtc.c the same fix the commit 9a654518e1b774b8e8f74a819fd12a931e7672c9 did on drivers/rtc/rtc-s3c.c:
prefix all the readb()/writeb() with the base address returned by ioremap()
Signed-off-by Luc Van Oostenryck <[email protected]>
----
drivers/char/s3c2410-rtc.c +49 -49
@@ -72,7 +72,7 @@ static void s3c2410_rtc_setaie(int to)pr_debug ("%s: aie=%d\n" , __FUNCTION__, to); - tmp =readb (S3C2410_RTCALM ); + tmp =readb (s3c2410_rtc_base +S3C2410_RTCALM );if (to) tmp |=S3C2410_RTCALM_ALMEN ;
@@ -80,7 +80,7 @@ static void s3c2410_rtc_setaie(int to) tmp &= ~S3C2410_RTCALM_ALMEN ; -writeb (tmp,S3C2410_RTCALM ); +writeb (tmp, s3c2410_rtc_base +S3C2410_RTCALM ); }static void s3c2410_rtc_setpie (int to)
@@ -90,12 +90,12 @@ static void s3c2410_rtc_setpie(int to)pr_debug ("%s: pie=%d\n" , __FUNCTION__, to);spin_lock_irq (&s3c2410_rtc_pie_lock); - tmp =readb (S3C2410_TICNT ) & ~S3C2410_TICNT_ENABLE ; + tmp =readb (s3c2410_rtc_base +S3C2410_TICNT ) & ~S3C2410_TICNT_ENABLE ;if (to) tmp |=S3C2410_TICNT_ENABLE ; -writeb (tmp,S3C2410_TICNT ); +writeb (tmp, s3c2410_rtc_base +S3C2410_TICNT );spin_unlock_irq (&s3c2410_rtc_pie_lock); }
@@ -104,13 +104,13 @@ static void s3c2410_rtc_setfreq(int frequnsigned int tmp;spin_lock_irq (&s3c2410_rtc_pie_lock); - tmp =readb (S3C2410_TICNT ) &S3C2410_TICNT_ENABLE ; + tmp =readb (s3c2410_rtc_base +S3C2410_TICNT ) &S3C2410_TICNT_ENABLE ; s3c2410_rtc_freq = freq; tmp |= (128 / freq)-1 ; -writeb (tmp,S3C2410_TICNT ); +writeb (tmp, s3c2410_rtc_base +S3C2410_TICNT );spin_unlock_irq (&s3c2410_rtc_pie_lock); }
@@ -121,12 +121,12 @@ static int s3c2410_rtc_gettime(struct rtunsigned int have_retried =0 ; retry_get_time: - rtc_tm->tm_min =readb (S3C2410_RTCMIN ); - rtc_tm->tm_hour =readb (S3C2410_RTCHOUR ); - rtc_tm->tm_mday =readb (S3C2410_RTCDATE ); - rtc_tm->tm_mon =readb (S3C2410_RTCMON ); - rtc_tm->tm_year =readb (S3C2410_RTCYEAR ); - rtc_tm->tm_sec =readb (S3C2410_RTCSEC ); + rtc_tm->tm_min =readb (s3c2410_rtc_base +S3C2410_RTCMIN ); + rtc_tm->tm_hour =readb (s3c2410_rtc_base +S3C2410_RTCHOUR ); + rtc_tm->tm_mday =readb (s3c2410_rtc_base +S3C2410_RTCDATE ); + rtc_tm->tm_mon =readb (s3c2410_rtc_base +S3C2410_RTCMON ); + rtc_tm->tm_year =readb (s3c2410_rtc_base +S3C2410_RTCYEAR ); + rtc_tm->tm_sec =readb (s3c2410_rtc_base +S3C2410_RTCSEC );/* the only way to work out wether the system was mid-update * when we read it is to check the second counter, and if it
@@ -165,10 +165,10 @@ static int s3c2410_rtc_settime(struct rtwriteb (BIN2BCD (tm->tm_sec),S3C2410_RTCSEC );writeb (BIN2BCD (tm->tm_min),S3C2410_RTCMIN ); -writeb (BIN2BCD (tm->tm_hour),S3C2410_RTCHOUR ); -writeb (BIN2BCD (tm->tm_mday),S3C2410_RTCDATE ); -writeb (BIN2BCD (tm->tm_mon +1 ),S3C2410_RTCMON ); -writeb (BIN2BCD (tm->tm_year -100 ),S3C2410_RTCYEAR ); +writeb (BIN2BCD (tm->tm_hour), s3c2410_rtc_base +S3C2410_RTCHOUR ); +writeb (BIN2BCD (tm->tm_mday), s3c2410_rtc_base +S3C2410_RTCDATE ); +writeb (BIN2BCD (tm->tm_mon +1 ), s3c2410_rtc_base +S3C2410_RTCMON ); +writeb (BIN2BCD (tm->tm_year -100 ), s3c2410_rtc_base +S3C2410_RTCYEAR );return 0 ; }
@@ -178,14 +178,14 @@ static int s3c2410_rtc_getalarm(struct rstruct rtc_time *alm_tm = &alrm->time;unsigned int alm_en; - alm_tm->tm_sec =readb (S3C2410_ALMSEC ); - alm_tm->tm_min =readb (S3C2410_ALMMIN ); - alm_tm->tm_hour =readb (S3C2410_ALMHOUR ); - alm_tm->tm_mon =readb (S3C2410_ALMMON ); - alm_tm->tm_mday =readb (S3C2410_ALMDATE ); - alm_tm->tm_year =readb (S3C2410_ALMYEAR ); + alm_tm->tm_sec =readb (s3c2410_rtc_base +S3C2410_ALMSEC ); + alm_tm->tm_min =readb (s3c2410_rtc_base +S3C2410_ALMMIN ); + alm_tm->tm_hour =readb (s3c2410_rtc_base +S3C2410_ALMHOUR ); + alm_tm->tm_mon =readb (s3c2410_rtc_base +S3C2410_ALMMON ); + alm_tm->tm_mday =readb (s3c2410_rtc_base +S3C2410_ALMDATE ); + alm_tm->tm_year =readb (s3c2410_rtc_base +S3C2410_ALMYEAR ); - alm_en =readb (S3C2410_RTCALM ); + alm_en =readb (s3c2410_rtc_base +S3C2410_RTCALM ); pr_debug("read alarm %02x %02x.%02x.%02x %02x/%02x/%02x\n", alm_en,
@@ -248,32 +248,32 @@ static int s3c2410_rtc_setalarm(struct r tm->tm_hour & 0xff, tm->tm_min & 0xff, tm->tm_sec);if (alrm->enabled ||1 ) { - alrm_en =readb (S3C2410_RTCALM ) &S3C2410_RTCALM_ALMEN ; -writeb (0x00 ,S3C2410_RTCALM ); + alrm_en =readb (s3c2410_rtc_base +S3C2410_RTCALM ) &S3C2410_RTCALM_ALMEN ; +writeb (0x00 , s3c2410_rtc_base +S3C2410_RTCALM );if (tm->tm_sec <60 && tm->tm_sec >=0 ) { alrm_en |=S3C2410_RTCALM_SECEN ; -writeb (BIN2BCD (tm->tm_sec),S3C2410_ALMSEC ); +writeb (BIN2BCD (tm->tm_sec), s3c2410_rtc_base +S3C2410_ALMSEC ); }if (tm->tm_min <60 && tm->tm_min >=0 ) { alrm_en |=S3C2410_RTCALM_MINEN ; -writeb (BIN2BCD (tm->tm_min),S3C2410_ALMMIN ); +writeb (BIN2BCD (tm->tm_min), s3c2410_rtc_base +S3C2410_ALMMIN ); }if (tm->tm_hour <24 && tm->tm_hour >=0 ) { alrm_en |=S3C2410_RTCALM_HOUREN ; -writeb (BIN2BCD (tm->tm_hour),S3C2410_ALMHOUR ); +writeb (BIN2BCD (tm->tm_hour), s3c2410_rtc_base +S3C2410_ALMHOUR ); }pr_debug ("setting S3C2410_RTCALM to %08x\n" , alrm_en); -writeb (alrm_en,S3C2410_RTCALM ); +writeb (alrm_en, s3c2410_rtc_base +S3C2410_RTCALM );enable_irq_wake (s3c2410_rtc_alarmno); }else { - alrm_en =readb (S3C2410_RTCALM ); + alrm_en =readb (s3c2410_rtc_base +S3C2410_RTCALM ); alrm_en &= ~S3C2410_RTCALM_ALMEN ; -writeb (alrm_en,S3C2410_RTCALM ); +writeb (alrm_en, s3c2410_rtc_base +S3C2410_RTCALM );disable_irq_wake (s3c2410_rtc_alarmno); }
@@ -323,7 +323,7 @@ static int s3c2410_rtc_ioctl(unsigned instatic int s3c2410_rtc_proc (char *buf) { -unsigned int rtcalm =readb (S3C2410_RTCALM ); +unsigned int rtcalm =readb (s3c2410_rtc_base +S3C2410_RTCALM );unsigned int ticnt =readb (S3C2410_TICNT );char *p = buf;
@@ -390,33 +390,33 @@ static void s3c2410_rtc_enable(struct plreturn ;if (!en) { - tmp =readb (S3C2410_RTCCON ); -writeb (tmp & ~S3C2410_RTCCON_RTCEN ,S3C2410_RTCCON ); + tmp =readb (s3c2410_rtc_base +S3C2410_RTCCON ); +writeb (tmp & ~S3C2410_RTCCON_RTCEN , s3c2410_rtc_base +S3C2410_RTCCON ); - tmp =readb (S3C2410_TICNT ); -writeb (tmp & ~S3C2410_TICNT_ENABLE ,S3C2410_TICNT ); + tmp =readb (s3c2410_rtc_base +S3C2410_TICNT ); +writeb (tmp & ~S3C2410_TICNT_ENABLE , s3c2410_rtc_base +S3C2410_TICNT ); }else {/* re-enable the device, and check it is ok */ -if ((readb (S3C2410_RTCCON ) &S3C2410_RTCCON_RTCEN ) ==0 ){ +if ((readb (s3c2410_rtc_base +S3C2410_RTCCON ) &S3C2410_RTCCON_RTCEN ) ==0 ){dev_info (&pdev->dev,"rtc disabled, re-enabling\n" ); - tmp =readb (S3C2410_RTCCON ); -writeb (tmp |S3C2410_RTCCON_RTCEN ,S3C2410_RTCCON ); + tmp =readb (s3c2410_rtc_base +S3C2410_RTCCON ); +writeb (tmp |S3C2410_RTCCON_RTCEN , s3c2410_rtc_base +S3C2410_RTCCON ); } -if ((readb (S3C2410_RTCCON ) &S3C2410_RTCCON_CNTSEL )){ +if ((readb (s3c2410_rtc_base +S3C2410_RTCCON ) &S3C2410_RTCCON_CNTSEL )){dev_info (&pdev->dev,"removing S3C2410_RTCCON_CNTSEL\n" ); - tmp =readb (S3C2410_RTCCON ); -writeb (tmp& ~S3C2410_RTCCON_CNTSEL ,S3C2410_RTCCON ); + tmp =readb (s3c2410_rtc_base +S3C2410_RTCCON ); +writeb (tmp& ~S3C2410_RTCCON_CNTSEL , s3c2410_rtc_base +S3C2410_RTCCON ); } -if ((readb (S3C2410_RTCCON ) &S3C2410_RTCCON_CLKRST )){ +if ((readb (s3c2410_rtc_base +S3C2410_RTCCON ) &S3C2410_RTCCON_CLKRST )){dev_info (&pdev->dev,"removing S3C2410_RTCCON_CLKRST\n" ); - tmp =readb (S3C2410_RTCCON ); -writeb (tmp & ~S3C2410_RTCCON_CLKRST ,S3C2410_RTCCON ); + tmp =readb (s3c2410_rtc_base +S3C2410_RTCCON ); +writeb (tmp & ~S3C2410_RTCCON_CLKRST , s3c2410_rtc_base +S3C2410_RTCCON ); } } }
@@ -489,13 +489,13 @@ static int s3c2410_rtc_probe(struct plat s3c2410_rtc_mem = res;pr_debug ("s3c2410_rtc_base=%p\n" , s3c2410_rtc_base); -pr_debug ("s3c2410_rtc: RTCCON=%02x\n" ,readb (S3C2410_RTCCON )); +pr_debug ("s3c2410_rtc: RTCCON=%02x\n" ,readb (s3c2410_rtc_base +S3C2410_RTCCON ));/* check to see if everything is setup correctly */ s3c2410_rtc_enable (pdev,1 ); -pr_debug ("s3c2410_rtc: RTCCON=%02x\n" ,readb (S3C2410_RTCCON )); +pr_debug ("s3c2410_rtc: RTCCON=%02x\n" ,readb (s3c2410_rtc_base +S3C2410_RTCCON ));s3c2410_rtc_setfreq (s3c2410_rtc_freq);
@@ -527,7 +527,7 @@ static int s3c2410_rtc_suspend(struct pl/* save TICNT for anyone using periodic interrupts */ - ticnt_save =readb (S3C2410_TICNT ); + ticnt_save =readb (s3c2410_rtc_base +S3C2410_TICNT );/* calculate time delta for suspend */
@@ -551,7 +551,7 @@ static int s3c2410_rtc_resume(struct plartc_tm_to_time (&tm, &time.tv_sec);restore_time_delta (&s3c2410_rtc_delta, &time); -writeb (ticnt_save,S3C2410_TICNT ); +writeb (ticnt_save, s3c2410_rtc_base +S3C2410_TICNT ); return 0; }#else
Quoted 5 lines · Luc Van Oostenryck
Apply to
drivers/char/s3c2410-rtc.cthe same fix the commit9a654518e1b774b8e8f74a819fd12a931e7672c9did ondrivers/rtc/rtc-s3c.c:
prefix all the readb()/writeb() with the base address returned byioremap()Signed-off-by Luc Van Oostenryck <[email protected]>
Thanks, but this driver is scheduled for removal, and a patch has been submitted to remove the driver.
Signature · 4 lines
Ben Q: What's a light-year? A: One-third less calories than a regular year.