* [PATCH] rtc: ds1307: Fix wday settings for rx8130
@ 2021-04-20 1:24 Nobuhiro Iwamatsu
2021-04-20 2:37 ` Nobuhiro Iwamatsu
0 siblings, 1 reply; 2+ messages in thread
From: Nobuhiro Iwamatsu @ 2021-04-20 1:24 UTC (permalink / raw)
To: Alessandro Zummo, Alexandre Belloni
Cc: linux-rtc, Marek Vasut, Nobuhiro Iwamatsu
rx8130 wday specifies the bit position, not BCD.
Fixes: ee0981be7704 ("rtc: ds1307: Add support for Epson RX8130CE")
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
---
drivers/rtc/rtc-ds1307.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index cd8e438bc9c46b..aff3c41f7fa585 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -296,7 +296,11 @@ static int ds1307_get_time(struct device *dev, struct rtc_time *t)
t->tm_min = bcd2bin(regs[DS1307_REG_MIN] & 0x7f);
tmp = regs[DS1307_REG_HOUR] & 0x3f;
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);
tmp = regs[DS1307_REG_MONTH] & 0x1f;
t->tm_mon = bcd2bin(tmp) - 1;
@@ -343,7 +347,11 @@ static int ds1307_set_time(struct device *dev, struct rtc_time *t)
regs[DS1307_REG_SECS] = bin2bcd(t->tm_sec);
regs[DS1307_REG_MIN] = bin2bcd(t->tm_min);
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)
+ data[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_MONTH] = bin2bcd(t->tm_mon + 1);
--
2.30.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] rtc: ds1307: Fix wday settings for rx8130
2021-04-20 1:24 [PATCH] rtc: ds1307: Fix wday settings for rx8130 Nobuhiro Iwamatsu
@ 2021-04-20 2:37 ` Nobuhiro Iwamatsu
0 siblings, 0 replies; 2+ messages in thread
From: Nobuhiro Iwamatsu @ 2021-04-20 2:37 UTC (permalink / raw)
To: Alessandro Zummo, Alexandre Belloni; +Cc: linux-rtc, Marek Vasut
Sorry, I sent the wrong patch. Please ignore this version.
I will send the correct patch as v2.
Best regards,
Nobuhiro
On Tue, Apr 20, 2021 at 10:24:39AM +0900, Nobuhiro Iwamatsu wrote:
> rx8130 wday specifies the bit position, not BCD.
>
> Fixes: ee0981be7704 ("rtc: ds1307: Add support for Epson RX8130CE")
> Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
> ---
> drivers/rtc/rtc-ds1307.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
> index cd8e438bc9c46b..aff3c41f7fa585 100644
> --- a/drivers/rtc/rtc-ds1307.c
> +++ b/drivers/rtc/rtc-ds1307.c
> @@ -296,7 +296,11 @@ static int ds1307_get_time(struct device *dev, struct rtc_time *t)
> t->tm_min = bcd2bin(regs[DS1307_REG_MIN] & 0x7f);
> tmp = regs[DS1307_REG_HOUR] & 0x3f;
> 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);
> tmp = regs[DS1307_REG_MONTH] & 0x1f;
> t->tm_mon = bcd2bin(tmp) - 1;
> @@ -343,7 +347,11 @@ static int ds1307_set_time(struct device *dev, struct rtc_time *t)
> regs[DS1307_REG_SECS] = bin2bcd(t->tm_sec);
> regs[DS1307_REG_MIN] = bin2bcd(t->tm_min);
> 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)
> + data[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_MONTH] = bin2bcd(t->tm_mon + 1);
>
> --
> 2.30.0
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-04-20 2:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-20 1:24 [PATCH] rtc: ds1307: Fix wday settings for rx8130 Nobuhiro Iwamatsu
2021-04-20 2:37 ` Nobuhiro Iwamatsu
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.