mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-04-13 14:21:40 +01:00
lib: sbi_irqchip: Allow registering interrupt handlers
To handle external interrupts in M-mode, the sbi_irqchip framework must allow registering interrupt handlers from device drivers. Signed-off-by: Anup Patel <anup.patel@oss.qualcomm.com> Link: https://lore.kernel.org/r/20260213055342.3124872-9-anup.patel@oss.qualcomm.com Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
@@ -346,9 +346,17 @@ int imsic_data_check(struct imsic_data *imsic)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int imsic_hwirq_setup(struct sbi_irqchip_device *chip, u32 hwirq)
|
||||
{
|
||||
if (!hwirq || hwirq == IMSIC_IPI_ID)
|
||||
return SBI_ENOTSUPP;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct sbi_irqchip_device imsic_device = {
|
||||
.warm_init = imsic_warm_irqchip_init,
|
||||
.process_hwirqs = imsic_process_hwirqs,
|
||||
.hwirq_setup = imsic_hwirq_setup,
|
||||
};
|
||||
|
||||
int imsic_cold_irqchip_init(struct imsic_data *imsic)
|
||||
@@ -392,6 +400,7 @@ int imsic_cold_irqchip_init(struct imsic_data *imsic)
|
||||
|
||||
/* Register irqchip device */
|
||||
imsic_device.id = imsic->unique_id;
|
||||
imsic_device.num_hwirq = imsic->num_ids + 1;
|
||||
sbi_hartmask_set_all(&imsic_device.target_harts);
|
||||
rc = sbi_irqchip_add_device(&imsic_device);
|
||||
if (rc)
|
||||
|
||||
Reference in New Issue
Block a user