rtc: ds2404: set range
authorAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 19 Apr 2019 08:24:56 +0000 (10:24 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Fri, 19 Apr 2019 20:37:16 +0000 (22:37 +0200)
The real-time clock is a 5-byte binary counter. It is incremented 256 times
per second. The least significant byte is a count of fractional seconds.
The upper four bytes are a count of seconds. The realtime clock can
accumulate 136 years of seconds before rolling over.

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-ds2404.c

index b886b6a5c1785835f3d934500e31e0e2d61a15fc..7b36c09bed103f7e56ffec6dd2d1e90f62c55d0d 100644 (file)
@@ -234,6 +234,10 @@ static int rtc_probe(struct platform_device *pdev)
 
        chip->ops = &ds2404_gpio_ops;
 
+       chip->rtc = devm_rtc_allocate_device(&pdev->dev);
+       if (IS_ERR(chip->rtc))
+               return PTR_ERR(chip->rtc);
+
        retval = chip->ops->map_io(chip, pdev, pdata);
        if (retval)
                goto err_chip;
@@ -244,12 +248,12 @@ static int rtc_probe(struct platform_device *pdev)
 
        platform_set_drvdata(pdev, chip);
 
-       chip->rtc = devm_rtc_device_register(&pdev->dev, "ds2404",
-                                       &ds2404_rtc_ops, THIS_MODULE);
-       if (IS_ERR(chip->rtc)) {
-               retval = PTR_ERR(chip->rtc);
+       chip->rtc->ops = &ds2404_rtc_ops;
+       chip->rtc->range_max = U32_MAX;
+
+       retval = rtc_register_device(chip->rtc);
+       if (retval)
                goto err_io;
-       }
 
        ds2404_enable_osc(&pdev->dev);
        return 0;