rtc: pcf2127: bulk read only date and time registers.
Read control registers one by one and bulk read time registers. This fixes when the clock is read, the watchdog counter register is zeroed. Signed-off-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
This commit is contained in:
		
							parent
							
								
									34f54f579a
								
							
						
					
					
						commit
						3769a375ab
					
				| @ -52,9 +52,20 @@ static int pcf2127_rtc_read_time(struct device *dev, struct rtc_time *tm) | ||||
| 	struct pcf2127 *pcf2127 = dev_get_drvdata(dev); | ||||
| 	unsigned char buf[10]; | ||||
| 	int ret; | ||||
| 	int i; | ||||
| 
 | ||||
| 	ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_CTRL1, buf, | ||||
| 				sizeof(buf)); | ||||
| 	for (i = 0; i <= PCF2127_REG_CTRL3; i++) { | ||||
| 		ret = regmap_read(pcf2127->regmap, PCF2127_REG_CTRL1 + i, | ||||
| 				  (unsigned int *)(buf + i)); | ||||
| 		if (ret) { | ||||
| 			dev_err(dev, "%s: read error\n", __func__); | ||||
| 			return ret; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	ret = regmap_bulk_read(pcf2127->regmap, PCF2127_REG_SC, | ||||
| 			       (buf + PCF2127_REG_SC), | ||||
| 			       ARRAY_SIZE(buf) - PCF2127_REG_SC); | ||||
| 	if (ret) { | ||||
| 		dev_err(dev, "%s: read error\n", __func__); | ||||
| 		return ret; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user