[sw,sensor_ctrl] Create testutils function for ast_init_done

Signed-off-by: Guillermo Maturana <maturana@google.com>
diff --git a/sw/device/lib/testing/BUILD b/sw/device/lib/testing/BUILD
index ec512ce..a59d9d0 100644
--- a/sw/device/lib/testing/BUILD
+++ b/sw/device/lib/testing/BUILD
@@ -245,6 +245,18 @@
 )
 
 cc_library(
+    name = "sensor_ctrl_testutils",
+    srcs = ["sensor_ctrl_testutils.c"],
+    hdrs = ["sensor_ctrl_testutils.h"],
+    target_compatible_with = [OPENTITAN_CPU],
+    deps = [
+        "//sw/device/lib/dif:base",
+        "//sw/device/lib/dif:sensor_ctrl",
+        "//sw/device/lib/testing/test_framework:check",
+    ],
+)
+
+cc_library(
     name = "sram_ctrl_testutils",
     srcs = ["sram_ctrl_testutils.c"],
     hdrs = ["sram_ctrl_testutils.h"],
diff --git a/sw/device/lib/testing/sensor_ctrl_testutils.c b/sw/device/lib/testing/sensor_ctrl_testutils.c
new file mode 100644
index 0000000..7071cc4
--- /dev/null
+++ b/sw/device/lib/testing/sensor_ctrl_testutils.c
@@ -0,0 +1,14 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+#include "sw/device/lib/testing/sensor_ctrl_testutils.h"
+
+#include "sw/device/lib/dif/dif_sensor_ctrl.h"
+#include "sw/device/lib/testing/test_framework/check.h"
+
+bool sensor_ctrl_ast_init_done(const dif_sensor_ctrl_t *sensor_ctrl) {
+  dif_toggle_t init_st = kDifToggleDisabled;
+  CHECK_DIF_OK(dif_sensor_ctrl_get_ast_init_done_status(sensor_ctrl, &init_st));
+  return init_st == kDifToggleEnabled;
+}
diff --git a/sw/device/lib/testing/sensor_ctrl_testutils.h b/sw/device/lib/testing/sensor_ctrl_testutils.h
new file mode 100644
index 0000000..043fc33
--- /dev/null
+++ b/sw/device/lib/testing/sensor_ctrl_testutils.h
@@ -0,0 +1,21 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+#ifndef OPENTITAN_SW_DEVICE_LIB_TESTING_SENSOR_CTRL_TESTUTILS_H_
+#define OPENTITAN_SW_DEVICE_LIB_TESTING_SENSOR_CTRL_TESTUTILS_H_
+
+#include <assert.h>
+#include <stdint.h>
+
+#include "sw/device/lib/dif/dif_sensor_ctrl.h"
+
+/**
+ * Returns true if ast_init is done.
+ *
+ * @param sensor_ctrl A sensor_ctrl handle.
+ * @return True is ast_init is done.
+ */
+bool sensor_ctrl_ast_init_done(const dif_sensor_ctrl_t *sensor_ctrl);
+
+#endif  // OPENTITAN_SW_DEVICE_LIB_TESTING_SENSOR_CTRL_TESTUTILS_H_
diff --git a/sw/device/tests/BUILD b/sw/device/tests/BUILD
index 638f383..fa5cba7 100644
--- a/sw/device/tests/BUILD
+++ b/sw/device/tests/BUILD
@@ -402,6 +402,7 @@
         "//sw/device/lib/testing:aon_timer_testutils",
         "//sw/device/lib/testing:clkmgr_testutils",
         "//sw/device/lib/testing:rstmgr_testutils",
+        "//sw/device/lib/testing:sensor_ctrl_testutils",
         "//sw/device/lib/testing/test_framework:check",
         "//sw/device/lib/testing/test_framework:ottf_main",
     ],
@@ -431,6 +432,7 @@
         "//sw/device/lib/testing:isr_testutils",
         "//sw/device/lib/testing:pwrmgr_testutils",
         "//sw/device/lib/testing:rv_plic_testutils",
+        "//sw/device/lib/testing:sensor_ctrl_testutils",
         "//sw/device/lib/testing/test_framework:check",
         "//sw/device/lib/testing/test_framework:ottf_main",
     ],
@@ -1390,6 +1392,7 @@
         "//sw/device/lib/testing:aon_timer_testutils",
         "//sw/device/lib/testing:clkmgr_testutils",
         "//sw/device/lib/testing:pwrmgr_testutils",
+        "//sw/device/lib/testing:sensor_ctrl_testutils",
         "//sw/device/lib/testing/test_framework:check",
         "//sw/device/lib/testing/test_framework:ottf_main",
     ],
diff --git a/sw/device/tests/ast_clk_outs_test.c b/sw/device/tests/ast_clk_outs_test.c
index d8974c4..4ec1792 100644
--- a/sw/device/tests/ast_clk_outs_test.c
+++ b/sw/device/tests/ast_clk_outs_test.c
@@ -8,6 +8,7 @@
 #include "sw/device/lib/testing/aon_timer_testutils.h"
 #include "sw/device/lib/testing/clkmgr_testutils.h"
 #include "sw/device/lib/testing/pwrmgr_testutils.h"
+#include "sw/device/lib/testing/sensor_ctrl_testutils.h"
 #include "sw/device/lib/testing/test_framework/check.h"
 #include "sw/device/lib/testing/test_framework/ottf_main.h"
 
@@ -56,20 +57,10 @@
   CHECK_DIF_OK(dif_aon_timer_init(
       mmio_region_from_addr(TOP_EARLGREY_AON_TIMER_AON_BASE_ADDR), &aon_timer));
 
-  // TODO(#13611) Uncomment when fixed
-  /*
   LOG_INFO("TEST: wait for ast init");
-  dif_toggle_t init_st = kDifToggleDisabled;
-
-  while (init_st == kDifToggleDisabled) {
-    CHECK_DIF_OK(
-        dif_sensor_ctrl_get_ast_init_done_status(&sensor_ctrl, &init_st));
-
-    busy_spin_micros(kWaitForCSRPollingUs);
-  }
-
+  IBEX_SPIN_FOR(sensor_ctrl_ast_init_done(&sensor_ctrl), 1000);
   LOG_INFO("TEST: done ast init");
-  */
+
   if (pwrmgr_testutils_is_wakeup_reason(&pwrmgr, 0)) {
     // At POR.
     LOG_INFO("Run clock measurements right after POR");
diff --git a/sw/device/tests/clkmgr_reset_frequency_test.c b/sw/device/tests/clkmgr_reset_frequency_test.c
index 9dfb677..bbcdf1b 100644
--- a/sw/device/tests/clkmgr_reset_frequency_test.c
+++ b/sw/device/tests/clkmgr_reset_frequency_test.c
@@ -8,6 +8,7 @@
 #include "sw/device/lib/testing/aon_timer_testutils.h"
 #include "sw/device/lib/testing/clkmgr_testutils.h"
 #include "sw/device/lib/testing/rstmgr_testutils.h"
+#include "sw/device/lib/testing/sensor_ctrl_testutils.h"
 #include "sw/device/lib/testing/test_framework/check.h"
 #include "sw/device/lib/testing/test_framework/ottf_main.h"
 
@@ -50,15 +51,7 @@
       mmio_region_from_addr(TOP_EARLGREY_RSTMGR_AON_BASE_ADDR), &rstmgr));
 
   LOG_INFO("TEST: wait for ast init");
-  dif_toggle_t init_st = kDifToggleDisabled;
-
-  while (init_st == kDifToggleDisabled) {
-    CHECK_DIF_OK(
-        dif_sensor_ctrl_get_ast_init_done_status(&sensor_ctrl, &init_st));
-
-    busy_spin_micros(kWaitForCSRPolling);
-  }
-
+  IBEX_SPIN_FOR(sensor_ctrl_ast_init_done(&sensor_ctrl), 1000);
   LOG_INFO("TEST: done ast init");
 
   if (rstmgr_testutils_reset_info_any(&rstmgr, kDifRstmgrResetInfoPor)) {
diff --git a/sw/device/tests/clkmgr_sleep_frequency_test.c b/sw/device/tests/clkmgr_sleep_frequency_test.c
index c912b9c..4fb373c 100644
--- a/sw/device/tests/clkmgr_sleep_frequency_test.c
+++ b/sw/device/tests/clkmgr_sleep_frequency_test.c
@@ -11,6 +11,7 @@
 #include "sw/device/lib/testing/clkmgr_testutils.h"
 #include "sw/device/lib/testing/pwrmgr_testutils.h"
 #include "sw/device/lib/testing/rv_plic_testutils.h"
+#include "sw/device/lib/testing/sensor_ctrl_testutils.h"
 #include "sw/device/lib/testing/test_framework/check.h"
 #include "sw/device/lib/testing/test_framework/ottf_main.h"
 
@@ -91,15 +92,7 @@
       mmio_region_from_addr(TOP_EARLGREY_RV_PLIC_BASE_ADDR), &rv_plic));
 
   LOG_INFO("TEST: wait for ast init");
-  dif_toggle_t init_st = kDifToggleDisabled;
-
-  while (init_st == kDifToggleDisabled) {
-    CHECK_DIF_OK(
-        dif_sensor_ctrl_get_ast_init_done_status(&sensor_ctrl, &init_st));
-
-    busy_spin_micros(kWaitForCSRPollingMicros);
-  }
-
+  IBEX_SPIN_FOR(sensor_ctrl_ast_init_done(&sensor_ctrl), 1000);
   LOG_INFO("TEST: done ast init");
 
   CHECK(pwrmgr_testutils_is_wakeup_reason(&pwrmgr, 0));