diff mbox

Remove __raw_* accessors from PL031 RTC

Message ID 1258009987-11317-1-git-send-email-linus.walleij@stericsson.com
State Accepted, archived
Headers show

Commit Message

Linus Walleij Nov. 12, 2009, 7:13 a.m. UTC
This switches __raw_[read|write]l() for plain [read|write]l in
the PL031 RTC driver. The sister driver for PL030 use the simple
accessors as most PrimeCell drivers.

Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
---
 drivers/rtc/rtc-pl031.c |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

Comments

Uwe Kleine-König Nov. 15, 2009, 9:35 p.m. UTC | #1
Hello,

On Thu, Nov 12, 2009 at 08:13:07AM +0100, Linus Walleij wrote:
> This switches __raw_[read|write]l() for plain [read|write]l in
> the PL031 RTC driver. The sister driver for PL030 use the simple
> accessors as most PrimeCell drivers.
> 
> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
> ---
>  drivers/rtc/rtc-pl031.c |   23 ++++++++++++-----------
>  1 files changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
> index f41873f..0264b11 100644
> --- a/drivers/rtc/rtc-pl031.c
> +++ b/drivers/rtc/rtc-pl031.c
> @@ -51,10 +51,10 @@ static int pl031_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
>  
>  	switch (cmd) {
>  	case RTC_AIE_OFF:
> -		__raw_writel(1, ldata->base + RTC_MIS);
> +		writel(1, ldata->base + RTC_MIS);
arch/arm/include/asm/io.h defines writel like so:

	#define writel(v,c)		__raw_writel((__force __u32) \
						cpu_to_le32(v),__mem_pci(c))

So this change isn't a noop on big-endian systems that define __mem_pci.
I don't know how many of these exist though.

Best regards
Uwe
Linus Walleij Nov. 15, 2009, 10:09 p.m. UTC | #2
2009/11/15 Uwe Kleine-König <u.kleine-koenig@pengutronix.de>:

> arch/arm/include/asm/io.h defines writel like so:
>
>        #define writel(v,c)             __raw_writel((__force __u32) \
>                                                cpu_to_le32(v),__mem_pci(c))
>
> So this change isn't a noop on big-endian systems that define __mem_pci.
> I don't know how many of these exist though.

Yeah it's not supposed to be a noop, it's supposed to be a bugfix, all
other PrimeCell drivers use readl()/writel(). The assumption is that PrimeCell
registers shall always be accessed LE, and AFAICT that's what the above
macro does.

Linus

--~--~---------~--~----~------------~-------~--~----~
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.
-~----------~----~----~----~------~----~------~--~---
diff mbox

Patch

diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c
index f41873f..0264b11 100644
--- a/drivers/rtc/rtc-pl031.c
+++ b/drivers/rtc/rtc-pl031.c
@@ -51,10 +51,10 @@  static int pl031_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
 
 	switch (cmd) {
 	case RTC_AIE_OFF:
-		__raw_writel(1, ldata->base + RTC_MIS);
+		writel(1, ldata->base + RTC_MIS);
 		return 0;
 	case RTC_AIE_ON:
-		__raw_writel(0, ldata->base + RTC_MIS);
+		writel(0, ldata->base + RTC_MIS);
 		return 0;
 	}
 
@@ -65,7 +65,7 @@  static int pl031_read_time(struct device *dev, struct rtc_time *tm)
 {
 	struct pl031_local *ldata = dev_get_drvdata(dev);
 
-	rtc_time_to_tm(__raw_readl(ldata->base + RTC_DR), tm);
+	rtc_time_to_tm(readl(ldata->base + RTC_DR), tm);
 
 	return 0;
 }
@@ -76,7 +76,7 @@  static int pl031_set_time(struct device *dev, struct rtc_time *tm)
 	struct pl031_local *ldata = dev_get_drvdata(dev);
 
 	rtc_tm_to_time(tm, &time);
-	__raw_writel(time, ldata->base + RTC_LR);
+	writel(time, ldata->base + RTC_LR);
 
 	return 0;
 }
@@ -85,9 +85,9 @@  static int pl031_read_alarm(struct device *dev, struct rtc_wkalrm *alarm)
 {
 	struct pl031_local *ldata = dev_get_drvdata(dev);
 
-	rtc_time_to_tm(__raw_readl(ldata->base + RTC_MR), &alarm->time);
-	alarm->pending = __raw_readl(ldata->base + RTC_RIS);
-	alarm->enabled = __raw_readl(ldata->base + RTC_IMSC);
+	rtc_time_to_tm(readl(ldata->base + RTC_MR), &alarm->time);
+	alarm->pending = readl(ldata->base + RTC_RIS);
+	alarm->enabled = readl(ldata->base + RTC_IMSC);
 
 	return 0;
 }
@@ -99,8 +99,8 @@  static int pl031_set_alarm(struct device *dev, struct rtc_wkalrm *alarm)
 
 	rtc_tm_to_time(&alarm->time, &time);
 
-	__raw_writel(time, ldata->base + RTC_MR);
-	__raw_writel(!alarm->enabled, ldata->base + RTC_MIS);
+	writel(time, ldata->base + RTC_MR);
+	writel(!alarm->enabled, ldata->base + RTC_MIS);
 
 	return 0;
 }
@@ -180,8 +180,9 @@  err_req:
 
 static struct amba_id pl031_ids[] __initdata = {
 	{
-		 .id = 0x00041031,
-	 	.mask = 0x000fffff, },
+		.id = 0x00041031,
+		.mask = 0x000fffff,
+	},
 	{0, 0},
 };