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
intc_cavs.h
intc_dw_ace.c
intc_dw.c
intc_dw.h
intc_eirq_nxp_s32.c drivers: nxp_s32: add missing soc.h inclusion 2023-11-09 11:23:46 +01:00
intc_esp32.c
intc_esp32c3.c
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
intc_gic_common_priv.h
intc_gic.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_priv.h drivers: gic: Redistributor Power Register 2023-08-31 10:24:48 +02:00
intc_gicv3.c intc: gic: convert SYS_INIT to DEVICE_DT_INST_DEFINE 2023-09-22 09:22:55 +02:00
intc_intel_vtd.c
intc_intel_vtd.h
intc_ioapic_priv.h
intc_ioapic.c drivers: intc_ioapic: Fix get_vtd() 2023-12-06 09:17:08 +00: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_v2.c
intc_ite_it8xxx2.c
intc_ite_it8xxx2.h
intc_loapic_spurious.S
intc_loapic.c intc: intc_loapic: Remove unnecessary header 2023-10-27 10:51:14 +02: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_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
intc_sam0_eic_priv.h
intc_sam0_eic.c
intc_shared_irq.c
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
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
Kconfig drivers: interrupt_controller: Add driver for NXP's IRQ_STEER IP 2023-12-04 09:52:38 -06:00
Kconfig.cavs
Kconfig.clic drivers: intc: manage multi-level interrupt configs 2023-12-11 18:23:23 -05:00
Kconfig.dw
Kconfig.esp32
Kconfig.esp32c3
Kconfig.gd32_exti
Kconfig.gic
Kconfig.intel_vtd
Kconfig.it8xxx2
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
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
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
Kconfig.sam0
Kconfig.shared_irq
Kconfig.stm32
Kconfig.vim drivers: interrupt-controller: Add VIM Interrupt Controller support 2023-09-04 10:53:09 +02:00
Kconfig.xec
Kconfig.xmc4xxx
wuc_ite_it8xxx2.c