zephyr/drivers/interrupt_controller
Conor Paxton 4e825f572c drivers: intc_plic: enable contexts for all harts on a platform
The plic uses contexts to seperate irq enables, threshold priority and
claim complete registers from each core for a given platform. As well as
this, each privilege level has its own context.
for multi-core platform's, we need to be able to enable/ disable a
global interrupt for all the cores that are associated with Zephyr.

To do this, we need to make some assumptions:
1. The privilege contexts are contiguous
2. M mode context is first, followed by S mode.

We know how many cpus are used in an application and each cpu's hartid,
thanks to some very handy inline functions. So we iterate through each
cpu and use the hartid of a cpu in the calculation of the context.

While we are at it, In an effort to make the driver more readable,
allign with the macro naming convention outlined in Linux's PLIC driver

Signed-off-by: Conor Paxton <conor.paxton@microchip.com>
2023-12-12 10:56:20 +01:00
..
CMakeLists.txt drivers: interrupt_controller: Add driver for NXP's IRQ_STEER IP 2023-12-04 09:52:38 -06:00
intc_arcv2_irq_unit.c intc: arcv2: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_cavs.c drivers: remove references to old CAVS platforms 2023-04-06 18:51:56 +02:00
intc_cavs.h
intc_dw.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
intc_dw.h drivers: intc_dw: fixed misnumbered value of reserved slots in structure 2022-10-17 13:37:09 -04:00
intc_dw_ace.c smp: Move for loops to use arch_num_cpus instead of CONFIG_MP_NUM_CPUS 2022-10-21 13:14:58 +02:00
intc_eirq_nxp_s32.c drivers: nxp_s32: add missing soc.h inclusion 2023-11-09 11:23:46 +01:00
intc_esp32.c interrupt_controller: intc_esp32: Convert CONFIG_MP_NUM_CPUS handling 2022-10-26 12:00:45 +02:00
intc_esp32c3.c includes: prefer <zephyr/kernel.h> over <zephyr/zephyr.h> 2022-09-05 16:31:47 +02:00
intc_exti_stm32.c drivers: stm32-exti: do not lock hwsem on irq disable 2023-10-20 15:15:15 +02:00
intc_gd32_exti.c include: add missing irq.h include 2022-10-11 18:05:17 +02:00
intc_gic.c intc: gic: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_gic_common_priv.h drivers: gicv3: fix getting rdist base address 2021-04-26 13:42:43 +02:00
intc_gicv3.c intc: gic: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_gicv3_its.c intc_gicv3_its: anticipate initialization priority 2023-07-12 09:25:35 +02:00
intc_gicv3_priv.h drivers: gic: Redistributor Power Register 2023-08-31 10:24:48 +02:00
intc_intel_vtd.c drivers/interrupt_controller: Move VT-D to new cache API 2023-02-06 10:07:53 +01:00
intc_intel_vtd.h drivers/interrupt_controller: Add VT-D context cache invalidation 2022-01-07 10:47:27 -05:00
intc_ioapic.c drivers: intc_ioapic: Fix get_vtd() 2023-12-06 09:17:08 +00:00
intc_ioapic_priv.h drivers/interrupt_controller: Make IOAPIC VT-D aware when relevant 2022-01-07 10:47:27 -05:00
intc_irqmp.c intc: irqmp: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_ite_it8xxx2.c ITE drivers/interrupt_controller: add intc_ite_it8xxx2_v2 driver 2023-04-19 03:48:38 -04:00
intc_ite_it8xxx2.h it8xxx2: generalize ILM support 2022-10-21 20:31:47 +02:00
intc_ite_it8xxx2_v2.c ITE drivers/interrupt_controller: add intc_ite_it8xxx2_v2 driver 2023-04-19 03:48:38 -04:00
intc_loapic.c intc: intc_loapic: Remove unnecessary header 2023-10-27 10:51:14 +02:00
intc_loapic_spurious.S asm: update files with <zephyr/...> include prefix 2022-05-09 12:45:29 -04:00
intc_mchp_ecia_xec.c modules: cmsis: move glue code to modules/cmsis 2023-08-24 13:20:21 +02:00
intc_miwu.c intc: miwu: npcx: improve interrupt latency of miwu input events 2023-05-17 09:48:54 +02:00
intc_nuclei_eclic.c irq: relocate multi-level irq out of irq.h 2023-10-30 11:43:39 -04:00
intc_nxp_irqsteer.c drivers: interrupt_controller: Add driver for NXP's IRQ_STEER IP 2023-12-04 09:52:38 -06:00
intc_nxp_pint.c intc: intc_nxp_pint: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_plic.c drivers: intc_plic: enable contexts for all harts on a platform 2023-12-12 10:56:20 +01:00
intc_ra_icu.c drivers: interrupt_controller: Add icu driver for Renesas RA series 2023-11-01 10:56:46 +00:00
intc_rv32m1_intmux.c devices: constify device pointers initialized at compile time 2022-08-22 17:08:26 +02:00
intc_sam0_eic.c include: add missing irq.h include 2022-10-11 18:05:17 +02:00
intc_sam0_eic_priv.h include: add missing errno.h include 2022-10-11 18:05:17 +02:00
intc_shared_irq.c include: add missing zephyr/irq.h include 2022-10-17 22:57:39 +09:00
intc_swerv_pic.c intc: swerv_pic: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_system_apic.c drivers: migrate includes to <zephyr/...> 2022-05-06 19:58:21 +02:00
intc_vexriscv_litex.c intc: vexriscv_litex: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_vim.c include: arch: arm: Remove aarch32 directory 2023-09-13 10:08:05 +01:00
intc_wkpu_nxp_s32.c intc: add NXP S32 WKPU interrupt controller driver 2023-10-11 16:38:34 +01:00
intc_xmc4xxx.c drivers: interrupt_controller: Add XMC4XXX ERU driver 2022-12-12 10:51:29 +01:00
Kconfig drivers: interrupt_controller: Add driver for NXP's IRQ_STEER IP 2023-12-04 09:52:38 -06:00
Kconfig.cavs drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.clic drivers: intc: manage multi-level interrupt configs 2023-12-11 18:23:23 -05:00
Kconfig.dw drivers: intc_dw_ace: use CONFIG_DW_ICTL_ACE 2022-10-11 12:50:05 -04:00
Kconfig.esp32 soc: xtensa,riscv: esp32xx: refactor folder structure 2023-07-25 18:12:33 +02:00
Kconfig.esp32c3 soc: xtensa,riscv: esp32xx: refactor folder structure 2023-07-25 18:12:33 +02:00
Kconfig.gd32_exti drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.gic dts: bindings: interrupt-controller: GIC: Allow specifying version in DT 2023-06-17 08:01:46 -04:00
Kconfig.intel_vtd drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.it8xxx2 ITE drivers/interrupt_controller: add intc_ite_it8xxx2_v2 driver 2023-04-19 03:48:38 -04:00
Kconfig.loapic drivers: loapic: add device tree support for loapic 2023-09-01 16:36:18 +02:00
Kconfig.multilevel drivers: intc: manage multi-level interrupt configs 2023-12-11 18:23:23 -05:00
Kconfig.multilevel.aggregator_template
Kconfig.npcx drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.nxp_irqsteer drivers: interrupt_controller: Add driver for NXP's IRQ_STEER IP 2023-12-04 09:52:38 -06:00
Kconfig.nxp_pint drivers: interrupt_controller: introduce PINT driver 2023-04-18 16:14:57 -05:00
Kconfig.nxp_s32 intc: add NXP S32 WKPU interrupt controller driver 2023-10-11 16:38:34 +01:00
Kconfig.plic drivers: intc: plic: add shell cmd to get irq stats for debugging 2023-11-24 09:23:33 +01:00
Kconfig.ra drivers: interrupt_controller: Add icu driver for Renesas RA series 2023-11-01 10:56:46 +00:00
Kconfig.rv32m1 drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.sam0 drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.shared_irq drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.stm32 drivers: interrupt_controller: stm32: Generate irq_table and isr from dt 2023-01-19 17:20:48 +00:00
Kconfig.vim drivers: interrupt-controller: Add VIM Interrupt Controller support 2023-09-04 10:53:09 +02:00
Kconfig.xec drivers: intc: Update drivers to use devicetree Kconfig symbol 2022-09-01 10:25:36 +02:00
Kconfig.xmc4xxx drivers: interrupt_controller: Add XMC4XXX ERU driver 2022-12-12 10:51:29 +01:00
wuc_ite_it8xxx2.c device: remove redundant init functions 2023-04-19 10:00:25 +02:00