Message ID | 20230817161038.407960-1-biju.das.jz@bp.renesas.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Geert Uytterhoeven |
Headers | show |
Series | rtc: isl1208: Fix incorrect logic in isl1208_set_xtoscb() | expand |
On Thu 2023-08-17 17:10:38, Biju Das wrote: > 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(). Reviewed-by: Pavel Machek <pavel@denx.de> Thank you! Best regards, Pavel > +++ b/drivers/rtc/rtc-isl1208.c > @@ -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); > }
On Thu, 17 Aug 2023 17:10:38 +0100, Biju Das wrote: > 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(). > > Applied, thanks! [1/1] rtc: isl1208: Fix incorrect logic in isl1208_set_xtoscb() commit: f45d32d2cd183c09b6c9aa8689a91d6f2760b557 Best regards,
diff --git a/drivers/rtc/rtc-isl1208.c b/drivers/rtc/rtc-isl1208.c index 712ca652d6d3..e50c23ee1646 100644 --- a/drivers/rtc/rtc-isl1208.c +++ b/drivers/rtc/rtc-isl1208.c @@ -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); }
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> --- drivers/rtc/rtc-isl1208.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)