diff options
| author | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-10-12 18:09:27 +0100 | 
| commit | 79828b4fa835f73cdaf4bffa48696abdcbea9d02 (patch) | |
| tree | 5e0fa7156acb75ba603022bc807df8f2fedb97a8 /drivers/rtc/rtc-ds1511.c | |
| parent | 721b51fcf91898299d96f4b72cb9434cda29dce6 (diff) | |
| parent | 8c1a9d6323abf0fb1e5dad96cf3f1c783505ea5a (diff) | |
Merge remote-tracking branch 'asoc/fix/rt5645' into asoc-fix-rt5645
Diffstat (limited to 'drivers/rtc/rtc-ds1511.c')
| -rw-r--r-- | drivers/rtc/rtc-ds1511.c | 42 | 
1 files changed, 5 insertions, 37 deletions
diff --git a/drivers/rtc/rtc-ds1511.c b/drivers/rtc/rtc-ds1511.c index 7415c2b4d6e8..da3d04ce83bd 100644 --- a/drivers/rtc/rtc-ds1511.c +++ b/drivers/rtc/rtc-ds1511.c @@ -64,7 +64,7 @@ enum ds1511reg {  #define DS1511_KIE	0x04  #define DS1511_WDE	0x02  #define DS1511_WDS	0x01 -#define DS1511_RAM_MAX	0xff +#define DS1511_RAM_MAX	0x100  #define RTC_CMD		DS1511_CONTROL_B  #define RTC_CMD1	DS1511_CONTROL_A @@ -159,7 +159,7 @@ ds1511_wdog_set(unsigned long deciseconds)  	/*  	 * set wdog enable and wdog 'steering' bit to issue a reset  	 */ -	rtc_write(DS1511_WDE | DS1511_WDS, RTC_CMD); +	rtc_write(rtc_read(RTC_CMD) | DS1511_WDE | DS1511_WDS, RTC_CMD);  }  void @@ -407,26 +407,10 @@ ds1511_nvram_read(struct file *filp, struct kobject *kobj,  {  	ssize_t count; -	/* -	 * if count is more than one, turn on "burst" mode -	 * turn it off when you're done -	 */ -	if (size > 1) -		rtc_write((rtc_read(RTC_CMD) | DS1511_BME), RTC_CMD); - -	if (pos > DS1511_RAM_MAX) -		pos = DS1511_RAM_MAX; - -	if (size + pos > DS1511_RAM_MAX + 1) -		size = DS1511_RAM_MAX - pos + 1; -  	rtc_write(pos, DS1511_RAMADDR_LSB); -	for (count = 0; size > 0; count++, size--) +	for (count = 0; count < size; count++)  		*buf++ = rtc_read(DS1511_RAMDATA); -	if (count > 1) -		rtc_write((rtc_read(RTC_CMD) & ~DS1511_BME), RTC_CMD); -  	return count;  } @@ -437,26 +421,10 @@ ds1511_nvram_write(struct file *filp, struct kobject *kobj,  {  	ssize_t count; -	/* -	 * if count is more than one, turn on "burst" mode -	 * turn it off when you're done -	 */ -	if (size > 1) -		rtc_write((rtc_read(RTC_CMD) | DS1511_BME), RTC_CMD); - -	if (pos > DS1511_RAM_MAX) -		pos = DS1511_RAM_MAX; - -	if (size + pos > DS1511_RAM_MAX + 1) -		size = DS1511_RAM_MAX - pos + 1; -  	rtc_write(pos, DS1511_RAMADDR_LSB); -	for (count = 0; size > 0; count++, size--) +	for (count = 0; count < size; count++)  		rtc_write(*buf++, DS1511_RAMDATA); -	if (count > 1) -		rtc_write((rtc_read(RTC_CMD) & ~DS1511_BME), RTC_CMD); -  	return count;  } @@ -490,7 +458,7 @@ static int ds1511_rtc_probe(struct platform_device *pdev)  	/*  	 * turn on the clock and the crystal, etc.  	 */ -	rtc_write(0, RTC_CMD); +	rtc_write(DS1511_BME, RTC_CMD);  	rtc_write(0, RTC_CMD1);  	/*  	 * clear the wdog counter  |