mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
rtc: ds1307: Fix wday settings for rx8130
rx8130 wday specifies the bit position, not BCD.
Fixes: ee0981be77
("rtc: ds1307: Add support for Epson RX8130CE")
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Link: https://lore.kernel.org/r/20210420023917.1949066-1-nobuhiro1.iwamatsu@toshiba.co.jp
This commit is contained in:
parent
a1cfe7cc38
commit
204756f016
@ -293,7 +293,11 @@ static int ds1307_get_time(struct device *dev, struct rtc_time *t)
|
|||||||
t->tm_min = bcd2bin(regs[DS1307_REG_MIN] & 0x7f);
|
t->tm_min = bcd2bin(regs[DS1307_REG_MIN] & 0x7f);
|
||||||
tmp = regs[DS1307_REG_HOUR] & 0x3f;
|
tmp = regs[DS1307_REG_HOUR] & 0x3f;
|
||||||
t->tm_hour = bcd2bin(tmp);
|
t->tm_hour = bcd2bin(tmp);
|
||||||
t->tm_wday = bcd2bin(regs[DS1307_REG_WDAY] & 0x07) - 1;
|
/* rx8130 is bit position, not BCD */
|
||||||
|
if (ds1307->type == rx_8130)
|
||||||
|
t->tm_wday = fls(regs[DS1307_REG_WDAY] & 0x7f);
|
||||||
|
else
|
||||||
|
t->tm_wday = bcd2bin(regs[DS1307_REG_WDAY] & 0x07) - 1;
|
||||||
t->tm_mday = bcd2bin(regs[DS1307_REG_MDAY] & 0x3f);
|
t->tm_mday = bcd2bin(regs[DS1307_REG_MDAY] & 0x3f);
|
||||||
tmp = regs[DS1307_REG_MONTH] & 0x1f;
|
tmp = regs[DS1307_REG_MONTH] & 0x1f;
|
||||||
t->tm_mon = bcd2bin(tmp) - 1;
|
t->tm_mon = bcd2bin(tmp) - 1;
|
||||||
@ -340,7 +344,11 @@ static int ds1307_set_time(struct device *dev, struct rtc_time *t)
|
|||||||
regs[DS1307_REG_SECS] = bin2bcd(t->tm_sec);
|
regs[DS1307_REG_SECS] = bin2bcd(t->tm_sec);
|
||||||
regs[DS1307_REG_MIN] = bin2bcd(t->tm_min);
|
regs[DS1307_REG_MIN] = bin2bcd(t->tm_min);
|
||||||
regs[DS1307_REG_HOUR] = bin2bcd(t->tm_hour);
|
regs[DS1307_REG_HOUR] = bin2bcd(t->tm_hour);
|
||||||
regs[DS1307_REG_WDAY] = bin2bcd(t->tm_wday + 1);
|
/* rx8130 is bit position, not BCD */
|
||||||
|
if (ds1307->type == rx_8130)
|
||||||
|
regs[DS1307_REG_WDAY] = 1 << t->tm_wday;
|
||||||
|
else
|
||||||
|
regs[DS1307_REG_WDAY] = bin2bcd(t->tm_wday + 1);
|
||||||
regs[DS1307_REG_MDAY] = bin2bcd(t->tm_mday);
|
regs[DS1307_REG_MDAY] = bin2bcd(t->tm_mday);
|
||||||
regs[DS1307_REG_MONTH] = bin2bcd(t->tm_mon + 1);
|
regs[DS1307_REG_MONTH] = bin2bcd(t->tm_mon + 1);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user