#include <sbi/riscv_io.h>
#include <sbi/riscv_encoding.h>
#include <sbi/sbi_console.h>
+#include <sbi/sbi_csr_detect.h>
#include <sbi/sbi_domain.h>
#include <sbi/sbi_ipi.h>
#include <sbi/sbi_irqchip.h>
void imsic_local_irqchip_init(void)
{
+ struct sbi_trap_info trap = { 0 };
+
/*
* This function is expected to be called from:
* 1) nascent_init() platform callback which is called
* in boot-up path.
*/
+ /* If Smaia not available then do nothing */
+ csr_read_allowed(CSR_MTOPI, (ulong)&trap);
+ if (trap.cause)
+ return;
+
/* Setup threshold to allow all enabled interrupts */
imsic_csr_write(IMSIC_EITHRESHOLD, IMSIC_ENABLE_EITHRESHOLD);