1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) 2012 Regents of the University of California
4 * Copyright (C) 2017 SiFive
7 #ifndef _ASM_RISCV_IRQ_H
8 #define _ASM_RISCV_IRQ_H
10 #include <linux/interrupt.h>
11 #include <linux/linkage.h>
13 #include <asm-generic/irq.h>
15 #define INVALID_CONTEXT UINT_MAX
18 void arch_trigger_cpumask_backtrace(const cpumask_t
*mask
, int exclude_cpu
);
19 #define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
22 void riscv_set_intc_hwnode_fn(struct fwnode_handle
*(*fn
)(void));
24 struct fwnode_handle
*riscv_get_intc_hwnode(void);
28 enum riscv_irqchip_type
{
29 ACPI_RISCV_IRQCHIP_INTC
= 0x00,
30 ACPI_RISCV_IRQCHIP_IMSIC
= 0x01,
31 ACPI_RISCV_IRQCHIP_PLIC
= 0x02,
32 ACPI_RISCV_IRQCHIP_APLIC
= 0x03,
35 int riscv_acpi_get_gsi_info(struct fwnode_handle
*fwnode
, u32
*gsi_base
,
36 u32
*id
, u32
*nr_irqs
, u32
*nr_idcs
);
37 struct fwnode_handle
*riscv_acpi_get_gsi_domain_id(u32 gsi
);
38 unsigned long acpi_rintc_index_to_hartid(u32 index
);
39 unsigned long acpi_rintc_ext_parent_to_hartid(unsigned int plic_id
, unsigned int ctxt_idx
);
40 unsigned int acpi_rintc_get_plic_nr_contexts(unsigned int plic_id
);
41 unsigned int acpi_rintc_get_plic_context(unsigned int plic_id
, unsigned int ctxt_idx
);
42 int __init
acpi_rintc_get_imsic_mmio_info(u32 index
, struct resource
*res
);
45 static inline int riscv_acpi_get_gsi_info(struct fwnode_handle
*fwnode
, u32
*gsi_base
,
46 u32
*id
, u32
*nr_irqs
, u32
*nr_idcs
)
51 static inline unsigned long acpi_rintc_index_to_hartid(u32 index
)
53 return INVALID_HARTID
;
56 static inline unsigned long acpi_rintc_ext_parent_to_hartid(unsigned int plic_id
,
57 unsigned int ctxt_idx
)
59 return INVALID_HARTID
;
62 static inline unsigned int acpi_rintc_get_plic_nr_contexts(unsigned int plic_id
)
64 return INVALID_CONTEXT
;
67 static inline unsigned int acpi_rintc_get_plic_context(unsigned int plic_id
, unsigned int ctxt_idx
)
69 return INVALID_CONTEXT
;
72 static inline int __init
acpi_rintc_get_imsic_mmio_info(u32 index
, struct resource
*res
)
77 #endif /* CONFIG_ACPI */
79 #endif /* _ASM_RISCV_IRQ_H */