reset: sti: rely on regmap_field_read_poll_timeout for ack wait
authorAlain Volmat <avolmat@me.com>
Fri, 10 Feb 2023 22:43:31 +0000 (23:43 +0100)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Mon, 8 May 2023 07:28:31 +0000 (09:28 +0200)
Use regmap_field_read_poll_timeout function when waiting for the
ack bit upon performing the reset control.

Signed-off-by: Alain Volmat <avolmat@me.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Link: https://lore.kernel.org/r/20230210224332.98482-1-avolmat@me.com
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/reset/sti/reset-syscfg.c

index b4b46e0..c1ba04f 100644 (file)
@@ -64,22 +64,12 @@ static int syscfg_reset_program_hw(struct reset_controller_dev *rcdev,
                return err;
 
        if (ch->ack) {
-               unsigned long timeout = jiffies + msecs_to_jiffies(1000);
                u32 ack_val;
 
-               while (true) {
-                       err = regmap_field_read(ch->ack, &ack_val);
-                       if (err)
-                               return err;
-
-                       if (ack_val == ctrl_val)
-                               break;
-
-                       if (time_after(jiffies, timeout))
-                               return -ETIME;
-
-                       cpu_relax();
-               }
+               err = regmap_field_read_poll_timeout(ch->ack, ack_val, (ack_val == ctrl_val),
+                                                    100, USEC_PER_SEC);
+               if (err)
+                       return err;
        }
 
        return 0;