2006-08-31 22:11:52

by Luc Van Oostenryck

[permalink] [raw]
Subject: [PATCH] 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]>
----

diff --git a/drivers/char/s3c2410-rtc.c b/drivers/char/s3c2410-rtc.c
index 5458ef1..e840adc 100644
--- a/drivers/char/s3c2410-rtc.c
+++ b/drivers/char/s3c2410-rtc.c
@@ -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 freq
unsigned 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 rt
unsigned 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 rt

writeb(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 r
struct 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 in

static 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 pl
return;

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 pla
rtc_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


2006-08-31 23:39:19

by Ben Dooks

[permalink] [raw]
Subject: Re: [PATCH] fix drivers/char/s3c2410-rtc.c: add missing base address

On Fri, Sep 01, 2006 at 12:11:39AM +0200, Luc Van Oostenryck wrote:
> 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]>

Thanks, but this driver is scheduled for removal, and a patch has
been submitted to remove the driver.

--
Ben

Q: What's a light-year?
A: One-third less calories than a regular year.