Implement board_quiesce_devices() to cleanup RPMH controllers
before booting the kernel. This ensures all RPMH TCS hardware
state is cleared, preventing timeout errors during kernel RPMH
driver initialization.

Signed-off-by: Aswin Murugan <[email protected]>
Signed-off-by: Balaji Selvanathan <[email protected]>
---
 arch/arm/mach-snapdragon/board.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/arch/arm/mach-snapdragon/board.c b/arch/arm/mach-snapdragon/board.c
index 5fb3240acc5..194318af228 100644
--- a/arch/arm/mach-snapdragon/board.c
+++ b/arch/arm/mach-snapdragon/board.c
@@ -32,6 +32,7 @@
 #include <usb.h>
 #include <sort.h>
 #include <time.h>
+#include <soc/qcom/rpmh.h>
 
 #include "qcom-priv.h"
 
@@ -709,6 +710,19 @@ static void carve_out_reserved_memory(void)
        }
 }
 
+/**
+ * board_quiesce_devices() - Quiesce devices before booting kernel
+ *
+ * Called by U-Boot before booting the kernel to ensure all devices
+ * are in a clean state. This is critical for RPMH to prevent kernel
+ * timeout issues during initialization.
+ */
+void board_quiesce_devices(void)
+{
+       /* Clear RPMH TCS configurations before kernel boot */
+       rpmh_rsc_cleanup_all();
+}
+
 /* This function open-codes setup_all_pgtables() so that we can
  * insert additional mappings *before* turning on the MMU.
  */
-- 
2.34.1

Reply via email to