rtc: isl1208: Fix unintended clear of SR bits
After successful sr = isl1208_i2c_set_regs(client, 0, regs, ISL1208_RTC_SECTION_LEN); sr will be 0. As a result sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr & ~ISL1208_REG_SR_WRTC); is equal to sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, 0); which clears all flags in SR. Add an additional read of SR, to have value of SR in sr again. Signed-off-by: Denis Osterland <Denis.Osterland@diehl.com> Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
Родитель
dd888c61c9
Коммит
5b9fc795f9
|
@ -459,6 +459,11 @@ isl1208_i2c_set_time(struct i2c_client *client, struct rtc_time const *tm)
|
|||
}
|
||||
|
||||
/* clear WRTC again */
|
||||
sr = isl1208_i2c_get_sr(client);
|
||||
if (sr < 0) {
|
||||
dev_err(&client->dev, "%s: reading SR failed\n", __func__);
|
||||
return sr;
|
||||
}
|
||||
sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR,
|
||||
sr & ~ISL1208_REG_SR_WRTC);
|
||||
if (sr < 0) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче