AT91: Convert RTC and RTT drivers to be independent of processor base-address
From: Ryan Mallon <hidden>
Date: 2011-05-04 20:49:13
On 04/30/2011 07:41 AM, Andrew Victor wrote:
For supporting multiple AT91 processors in a single kernel image, the following changes to the RTC and RTT driver support: * pass base addresses via platform resources * replace calls to at91_sys_read() / at91_sys_write() * rename AT91_RTT/AT91_RTC to AT91xxx_RTT/AT91xxx_RTC to denote they are processor-specific. Signed-off-by: Andrew Victor <redacted>
Looks mostly good. Couple of minor comments below. ~Ryan
quoted hunk ↗ jump to hunk
diff --git a/drivers/rtc/rtc-at91rm9200.c b/drivers/rtc/rtc-at91rm9200.c index e39b77a..971271c 100644 --- a/drivers/rtc/rtc-at91rm9200.c +++ b/drivers/rtc/rtc-at91rm9200.c@@ -27,6 +27,7 @@ #include <linux/interrupt.h> #include <linux/ioctl.h> #include <linux/completion.h> +#include <linux/slab.h> #include <asm/uaccess.h>@@ -35,23 +36,33 @@ #define AT91_RTC_EPOCH 1900UL /* just like arch/arm/common/rtctime.c */ +struct at91_rtc { + struct rtc_device *rtcdev; + void __iomem *regbase; + unsigned int alarm_year; +}; + static DECLARE_COMPLETION(at91_rtc_updated); -static unsigned int at91_alarm_year = AT91_RTC_EPOCH; + +#define rtc_readl(rtc, reg) \ + __raw_readl((rtc)->regbase + (reg)) +#define rtc_writel(rtc, reg, value) \ + __raw_writel((value), (rtc)->regbase + (reg))
static inline unsigned rtc_readl(struct at91_rtc, unsigned reg)
{
return __raw_readl(rtc->regbase + reg);
}
static inline void rtc_writel(struct at91_rtc, unsigned reg,
unsigned value)
{
__raw_writel(valie, rtc->regbase + reg);
}
/* * Decode time/date into rtc_time structure */ -static void at91_rtc_decodetime(unsigned int timereg, unsigned int calreg, - struct rtc_time *tm) +static void at91_rtc_decodetime(struct at91_rtc* rtc,
Nitpick, should be: struct at91_rtc *rtc, -- Bluewater Systems Ltd - ARM Technology Solution Centre Ryan Mallon 5 Amuri Park, 404 Barbadoes St ryan at bluewatersys.com PO Box 13 889, Christchurch 8013 http://www.bluewatersys.com New Zealand Phone: +64 3 3779127 Freecall: Australia 1800 148 751 Fax: +64 3 3779135 USA 1800 261 2934