diff options
Diffstat (limited to 'drivers/rtc/rtc-vt8500.c')
| -rw-r--r-- | drivers/rtc/rtc-vt8500.c | 19 | 
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/rtc/rtc-vt8500.c b/drivers/rtc/rtc-vt8500.c index 14e2d8cfcc8..2730533e2d2 100644 --- a/drivers/rtc/rtc-vt8500.c +++ b/drivers/rtc/rtc-vt8500.c @@ -70,7 +70,7 @@  				| ALARM_SEC_BIT)  #define VT8500_RTC_CR_ENABLE	(1 << 0)	/* Enable RTC */ -#define VT8500_RTC_CR_24H	(1 << 1)	/* 24h time format */ +#define VT8500_RTC_CR_12H	(1 << 1)	/* 12h time format */  #define VT8500_RTC_CR_SM_ENABLE	(1 << 2)	/* Enable periodic irqs */  #define VT8500_RTC_CR_SM_SEC	(1 << 3)	/* 0: 1Hz/60, 1: 1Hz */  #define VT8500_RTC_CR_CALIB	(1 << 4)	/* Enable calibration */ @@ -119,7 +119,7 @@ static int vt8500_rtc_read_time(struct device *dev, struct rtc_time *tm)  	tm->tm_min = bcd2bin((time & TIME_MIN_MASK) >> TIME_MIN_S);  	tm->tm_hour = bcd2bin((time & TIME_HOUR_MASK) >> TIME_HOUR_S);  	tm->tm_mday = bcd2bin(date & DATE_DAY_MASK); -	tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S); +	tm->tm_mon = bcd2bin((date & DATE_MONTH_MASK) >> DATE_MONTH_S) - 1;  	tm->tm_year = bcd2bin((date & DATE_YEAR_MASK) >> DATE_YEAR_S)  			+ ((date >> DATE_CENTURY_S) & 1 ? 200 : 100);  	tm->tm_wday = (time & TIME_DOW_MASK) >> TIME_DOW_S; @@ -137,9 +137,10 @@ static int vt8500_rtc_set_time(struct device *dev, struct rtc_time *tm)  		return -EINVAL;  	} -	writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S) -		| (bin2bcd(tm->tm_mon) << DATE_MONTH_S) -		| (bin2bcd(tm->tm_mday)), +	writel((bin2bcd(tm->tm_year % 100) << DATE_YEAR_S) +		| (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S) +		| (bin2bcd(tm->tm_mday)) +		| ((tm->tm_year >= 200) << DATE_CENTURY_S),  		vt8500_rtc->regbase + VT8500_RTC_DS);  	writel((bin2bcd(tm->tm_wday) << TIME_DOW_S)  		| (bin2bcd(tm->tm_hour) << TIME_HOUR_S) @@ -205,7 +206,7 @@ static const struct rtc_class_ops vt8500_rtc_ops = {  	.alarm_irq_enable = vt8500_alarm_irq_enable,  }; -static int __devinit vt8500_rtc_probe(struct platform_device *pdev) +static int vt8500_rtc_probe(struct platform_device *pdev)  {  	struct vt8500_rtc *vt8500_rtc;  	int ret; @@ -247,7 +248,7 @@ static int __devinit vt8500_rtc_probe(struct platform_device *pdev)  	}  	/* Enable RTC and set it to 24-hour mode */ -	writel(VT8500_RTC_CR_ENABLE | VT8500_RTC_CR_24H, +	writel(VT8500_RTC_CR_ENABLE,  	       vt8500_rtc->regbase + VT8500_RTC_CR);  	vt8500_rtc->rtc = rtc_device_register("vt8500-rtc", &pdev->dev, @@ -279,7 +280,7 @@ err_release:  	return ret;  } -static int __devexit vt8500_rtc_remove(struct platform_device *pdev) +static int vt8500_rtc_remove(struct platform_device *pdev)  {  	struct vt8500_rtc *vt8500_rtc = platform_get_drvdata(pdev); @@ -305,7 +306,7 @@ static const struct of_device_id wmt_dt_ids[] = {  static struct platform_driver vt8500_rtc_driver = {  	.probe		= vt8500_rtc_probe, -	.remove		= __devexit_p(vt8500_rtc_remove), +	.remove		= vt8500_rtc_remove,  	.driver		= {  		.name	= "vt8500-rtc",  		.owner	= THIS_MODULE,  |