rtc: isl1208: Fix incorrect logic in isl1208_set_xtoscb()
authorBiju Das <biju.das.jz@bp.renesas.com>
Thu, 17 Aug 2023 16:10:38 +0000 (17:10 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Sun, 27 Aug 2023 21:48:32 +0000 (23:48 +0200)
The XTOSCB bit is not bit 0, but xtosb_val is either 0 or 1. If it is 1,
test will never succeed. Fix this issue by using double negation.

While at it, remove unnecessary blank line from probe().

Reported-by: Pavel Machek <pavel@denx.de>
Closes: https://lore.kernel.org/all/ZN4BgzG2xmzOzdFZ@duo.ucw.cz/
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Pavel Machek <pavel@denx.de>
Link: https://lore.kernel.org/r/20230817161038.407960-1-biju.das.jz@bp.renesas.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-isl1208.c

index 712ca65..e50c23e 100644 (file)
@@ -188,7 +188,7 @@ isl1208_i2c_validate_client(struct i2c_client *client)
 static int isl1208_set_xtoscb(struct i2c_client *client, int sr, int xtosb_val)
 {
        /* Do nothing if bit is already set to desired value */
-       if ((sr & ISL1208_REG_SR_XTOSCB) == xtosb_val)
+       if (!!(sr & ISL1208_REG_SR_XTOSCB) == xtosb_val)
                return 0;
 
        if (xtosb_val)
@@ -944,7 +944,6 @@ isl1208_probe(struct i2c_client *client)
                rc = isl1208_setup_irq(client, client->irq);
                if (rc)
                        return rc;
-
        } else {
                clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, isl1208->rtc->features);
        }