diff options
Diffstat (limited to 'drivers/rtc/rtc-goldfish.c')
| -rw-r--r-- | drivers/rtc/rtc-goldfish.c | 44 | 
1 files changed, 17 insertions, 27 deletions
diff --git a/drivers/rtc/rtc-goldfish.c b/drivers/rtc/rtc-goldfish.c index 7ab95d052644..59c0f38cc08d 100644 --- a/drivers/rtc/rtc-goldfish.c +++ b/drivers/rtc/rtc-goldfish.c @@ -10,18 +10,8 @@  #include <linux/of.h>  #include <linux/platform_device.h>  #include <linux/rtc.h> - -#define TIMER_TIME_LOW		0x00	/* get low bits of current time  */ -					/*   and update TIMER_TIME_HIGH  */ -#define TIMER_TIME_HIGH	0x04	/* get high bits of time at last */ -					/*   TIMER_TIME_LOW read         */ -#define TIMER_ALARM_LOW	0x08	/* set low bits of alarm and     */ -					/*   activate it                 */ -#define TIMER_ALARM_HIGH	0x0c	/* set high bits of next alarm   */ -#define TIMER_IRQ_ENABLED	0x10 -#define TIMER_CLEAR_ALARM	0x14 -#define TIMER_ALARM_STATUS	0x18 -#define TIMER_CLEAR_INTERRUPT	0x1c +#include <linux/goldfish.h> +#include <clocksource/timer-goldfish.h>  struct goldfish_rtc {  	void __iomem *base; @@ -41,8 +31,8 @@ static int goldfish_rtc_read_alarm(struct device *dev,  	rtcdrv = dev_get_drvdata(dev);  	base = rtcdrv->base; -	rtc_alarm_low = readl(base + TIMER_ALARM_LOW); -	rtc_alarm_high = readl(base + TIMER_ALARM_HIGH); +	rtc_alarm_low = gf_ioread32(base + TIMER_ALARM_LOW); +	rtc_alarm_high = gf_ioread32(base + TIMER_ALARM_HIGH);  	rtc_alarm = (rtc_alarm_high << 32) | rtc_alarm_low;  	do_div(rtc_alarm, NSEC_PER_SEC); @@ -50,7 +40,7 @@ static int goldfish_rtc_read_alarm(struct device *dev,  	rtc_time64_to_tm(rtc_alarm, &alrm->time); -	if (readl(base + TIMER_ALARM_STATUS)) +	if (gf_ioread32(base + TIMER_ALARM_STATUS))  		alrm->enabled = 1;  	else  		alrm->enabled = 0; @@ -71,18 +61,18 @@ static int goldfish_rtc_set_alarm(struct device *dev,  	if (alrm->enabled) {  		rtc_alarm64 = rtc_tm_to_time64(&alrm->time) * NSEC_PER_SEC; -		writel((rtc_alarm64 >> 32), base + TIMER_ALARM_HIGH); -		writel(rtc_alarm64, base + TIMER_ALARM_LOW); -		writel(1, base + TIMER_IRQ_ENABLED); +		gf_iowrite32((rtc_alarm64 >> 32), base + TIMER_ALARM_HIGH); +		gf_iowrite32(rtc_alarm64, base + TIMER_ALARM_LOW); +		gf_iowrite32(1, base + TIMER_IRQ_ENABLED);  	} else {  		/*  		 * if this function was called with enabled=0  		 * then it could mean that the application is  		 * trying to cancel an ongoing alarm  		 */ -		rtc_status_reg = readl(base + TIMER_ALARM_STATUS); +		rtc_status_reg = gf_ioread32(base + TIMER_ALARM_STATUS);  		if (rtc_status_reg) -			writel(1, base + TIMER_CLEAR_ALARM); +			gf_iowrite32(1, base + TIMER_CLEAR_ALARM);  	}  	return 0; @@ -98,9 +88,9 @@ static int goldfish_rtc_alarm_irq_enable(struct device *dev,  	base = rtcdrv->base;  	if (enabled) -		writel(1, base + TIMER_IRQ_ENABLED); +		gf_iowrite32(1, base + TIMER_IRQ_ENABLED);  	else -		writel(0, base + TIMER_IRQ_ENABLED); +		gf_iowrite32(0, base + TIMER_IRQ_ENABLED);  	return 0;  } @@ -110,7 +100,7 @@ static irqreturn_t goldfish_rtc_interrupt(int irq, void *dev_id)  	struct goldfish_rtc *rtcdrv = dev_id;  	void __iomem *base = rtcdrv->base; -	writel(1, base + TIMER_CLEAR_INTERRUPT); +	gf_iowrite32(1, base + TIMER_CLEAR_INTERRUPT);  	rtc_update_irq(rtcdrv->rtc, 1, RTC_IRQF | RTC_AF); @@ -128,8 +118,8 @@ static int goldfish_rtc_read_time(struct device *dev, struct rtc_time *tm)  	rtcdrv = dev_get_drvdata(dev);  	base = rtcdrv->base; -	time_low = readl(base + TIMER_TIME_LOW); -	time_high = readl(base + TIMER_TIME_HIGH); +	time_low = gf_ioread32(base + TIMER_TIME_LOW); +	time_high = gf_ioread32(base + TIMER_TIME_HIGH);  	time = (time_high << 32) | time_low;  	do_div(time, NSEC_PER_SEC); @@ -149,8 +139,8 @@ static int goldfish_rtc_set_time(struct device *dev, struct rtc_time *tm)  	base = rtcdrv->base;  	now64 = rtc_tm_to_time64(tm) * NSEC_PER_SEC; -	writel((now64 >> 32), base + TIMER_TIME_HIGH); -	writel(now64, base + TIMER_TIME_LOW); +	gf_iowrite32((now64 >> 32), base + TIMER_TIME_HIGH); +	gf_iowrite32(now64, base + TIMER_TIME_LOW);  	return 0;  }  | 
