Message ID | 1258009987-11317-1-git-send-email-linus.walleij@stericsson.com |
---|---|
State | Accepted, archived |
Headers | show |
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
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 --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}, };
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(-)