diff options
Diffstat (limited to 'drivers/rtc/rtc-pl030.c')
| -rw-r--r-- | drivers/rtc/rtc-pl030.c | 27 | 
1 files changed, 8 insertions, 19 deletions
diff --git a/drivers/rtc/rtc-pl030.c b/drivers/rtc/rtc-pl030.c index d4a5f8afafbc..ebe03eba8f5f 100644 --- a/drivers/rtc/rtc-pl030.c +++ b/drivers/rtc/rtc-pl030.c @@ -36,32 +36,24 @@ static int pl030_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)  {  	struct pl030_rtc *rtc = dev_get_drvdata(dev); -	rtc_time_to_tm(readl(rtc->base + RTC_MR), &alrm->time); +	rtc_time64_to_tm(readl(rtc->base + RTC_MR), &alrm->time);  	return 0;  }  static int pl030_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)  {  	struct pl030_rtc *rtc = dev_get_drvdata(dev); -	unsigned long time; -	int ret; -	/* -	 * At the moment, we can only deal with non-wildcarded alarm times. -	 */ -	ret = rtc_valid_tm(&alrm->time); -	if (ret == 0) -		ret = rtc_tm_to_time(&alrm->time, &time); -	if (ret == 0) -		writel(time, rtc->base + RTC_MR); -	return ret; +	writel(rtc_tm_to_time64(&alrm->time), rtc->base + RTC_MR); + +	return 0;  }  static int pl030_read_time(struct device *dev, struct rtc_time *tm)  {  	struct pl030_rtc *rtc = dev_get_drvdata(dev); -	rtc_time_to_tm(readl(rtc->base + RTC_DR), tm); +	rtc_time64_to_tm(readl(rtc->base + RTC_DR), tm);  	return 0;  } @@ -77,14 +69,10 @@ static int pl030_read_time(struct device *dev, struct rtc_time *tm)  static int pl030_set_time(struct device *dev, struct rtc_time *tm)  {  	struct pl030_rtc *rtc = dev_get_drvdata(dev); -	unsigned long time; -	int ret; -	ret = rtc_tm_to_time(tm, &time); -	if (ret == 0) -		writel(time + 1, rtc->base + RTC_LR); +	writel(rtc_tm_to_time64(tm) + 1, rtc->base + RTC_LR); -	return ret; +	return 0;  }  static const struct rtc_class_ops pl030_ops = { @@ -116,6 +104,7 @@ static int pl030_probe(struct amba_device *dev, const struct amba_id *id)  	}  	rtc->rtc->ops = &pl030_ops; +	rtc->rtc->range_max = U32_MAX;  	rtc->base = ioremap(dev->res.start, resource_size(&dev->res));  	if (!rtc->base) {  		ret = -ENOMEM;  |