Merge tag 'Smack-for-5.11-io_uring-fix' of git://github.com/cschaufler/smack-next
[linux-2.6-microblaze.git] / drivers / rtc / rtc-pcf8523.c
index 57d351d..5e1e7b2 100644 (file)
 #define DRIVER_NAME "rtc-pcf8523"
 
 #define REG_CONTROL1 0x00
-#define REG_CONTROL1_CAP_SEL (1 << 7)
-#define REG_CONTROL1_STOP    (1 << 5)
+#define REG_CONTROL1_CAP_SEL BIT(7)
+#define REG_CONTROL1_STOP    BIT(5)
 
 #define REG_CONTROL3 0x02
-#define REG_CONTROL3_PM_BLD (1 << 7) /* battery low detection disabled */
-#define REG_CONTROL3_PM_VDD (1 << 6) /* switch-over disabled */
-#define REG_CONTROL3_PM_DSM (1 << 5) /* direct switching mode */
+#define REG_CONTROL3_PM_BLD BIT(7) /* battery low detection disabled */
+#define REG_CONTROL3_PM_VDD BIT(6) /* switch-over disabled */
+#define REG_CONTROL3_PM_DSM BIT(5) /* direct switching mode */
 #define REG_CONTROL3_PM_MASK 0xe0
-#define REG_CONTROL3_BLF (1 << 2) /* battery low bit, read-only */
+#define REG_CONTROL3_BLF BIT(2) /* battery low bit, read-only */
 
 #define REG_SECONDS  0x03
-#define REG_SECONDS_OS (1 << 7)
+#define REG_SECONDS_OS BIT(7)
 
 #define REG_MINUTES  0x04
 #define REG_HOURS    0x05
@@ -226,17 +226,6 @@ static int pcf8523_rtc_set_time(struct device *dev, struct rtc_time *tm)
        u8 regs[8];
        int err;
 
-       /*
-        * The hardware can only store values between 0 and 99 in it's YEAR
-        * register (with 99 overflowing to 0 on increment).
-        * After 2100-02-28 we could start interpreting the year to be in the
-        * interval [2100, 2199], but there is no path to switch in a smooth way
-        * because the chip handles YEAR=0x00 (and the out-of-spec
-        * YEAR=0xa0) as a leap year, but 2100 isn't.
-        */
-       if (tm->tm_year < 100 || tm->tm_year >= 200)
-               return -EINVAL;
-
        err = pcf8523_stop_rtc(client);
        if (err < 0)
                return err;
@@ -356,12 +345,15 @@ static int pcf8523_probe(struct i2c_client *client,
        if (err < 0)
                return err;
 
-       rtc = devm_rtc_device_register(&client->dev, DRIVER_NAME,
-                                      &pcf8523_rtc_ops, THIS_MODULE);
+       rtc = devm_rtc_allocate_device(&client->dev);
        if (IS_ERR(rtc))
                return PTR_ERR(rtc);
 
-       return 0;
+       rtc->ops = &pcf8523_rtc_ops;
+       rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
+       rtc->range_max = RTC_TIMESTAMP_END_2099;
+
+       return devm_rtc_register_device(rtc);
 }
 
 static const struct i2c_device_id pcf8523_id[] = {