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

