Issue:
    - hwclock -w
      hwclock: RTC_SET_TIME: Invalid argument

Why:
    - Relative patch: https://lkml.org/lkml/2019/4/3/55 , this patch
      will always check for unwritable registers, it will compare reg
      with max_register in regmap_writeable.
    - In drivers/rtc/rtc-pcf85363.c, CTRL_STOP_EN is 0x2e, but DT_100THS
      is 0, max_regiter is 0x2f, then reg will be equal to 0x30,
      0x30 < 0x2f is false,so regmap_writeable will return false.

How:
    - increase max_register to skip failed
      when checking max_register.

Signed-off-by: Biwen Li <biwen...@nxp.com>
---
Change in v3:
        - replace old scheme with new scheme:
          increase max_register.

Change in v2:
        - add Why and How into commit message.

 drivers/rtc/rtc-pcf85363.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-pcf85363.c b/drivers/rtc/rtc-pcf85363.c
index a075e77617dc..e9d4ef59febd 100644
--- a/drivers/rtc/rtc-pcf85363.c
+++ b/drivers/rtc/rtc-pcf85363.c
@@ -336,7 +336,8 @@ static const struct pcf85x63_config pcf_85263_config = {
        .regmap = {
                .reg_bits = 8,
                .val_bits = 8,
-               .max_register = 0x2f,
+               .max_register = 0x2f * 2, /* skip failed when
+                                            checking max_register */
        },
        .num_nvram = 1
 };
-- 
2.17.1

Reply via email to