zephyr/drivers/interrupt_controller
Dino Li cb307e2c64 driver: intc: it8xxx2: wait until two equal interrupt values are read
This change ensures the CPU won't get an interrupt number which is
being generated.

it8xxx2 has a limitation for interrupt vector register.
CPU may read incorrect interrupt number in ISR.

The following is an example that got incorrect interrupt number:
1. Register IVECT = 0x10. (no interrupt pending/IVECT_OFFSET_WITH_IRQ)
2. Chip INT6 interrupt occurs (IVECT = 0x16) and jump to ISR.
3. Read interrupt vector register to determine interrupt number.
4. Higher priority interrupt occurs (for example: INT158, IVECT = 0xAE)
while the CPU is reading the interrupt vector register for EC INT6,
CPU may end up with an incorrect interrupt number between 0x16 and 0xAE.

Signed-off-by: Dino Li <Dino.Li@ite.com.tw>
2021-07-09 12:45:01 -05:00
..
CMakeLists.txt drivers/interrupt: it8xxx2 driver interrupt-control 2020-12-16 08:47:36 -05:00
intc_arcv2_irq_unit.c pm: use enum for device PM states 2021-07-07 14:13:12 -04:00
intc_cavs.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04:00
intc_cavs.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
intc_dw.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04:00
intc_dw.h device: Const-ify all device driver instance pointers 2020-09-02 13:48:13 +02:00
intc_exti_stm32.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04:00
intc_gic.c intc: gic: Don't enable the interrupt routing to cores disable in DT 2021-04-27 13:32:55 -04:00
intc_gic_common_priv.h drivers: gicv3: fix getting rdist base address 2021-04-26 13:42:43 +02:00
intc_gicv3.c drivers: gicv3: fix getting rdist base address 2021-04-26 13:42:43 +02:00
intc_gicv3_priv.h drivers: gicv3: fix getting rdist base address 2021-04-26 13:42:43 +02:00
intc_intel_vtd.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04:00
intc_intel_vtd.h drivers/interrupt_controller: Add Intel VT-D interrupt remapping driver 2020-12-08 09:29:20 -05:00
intc_ioapic.c pm: use enum for device PM states 2021-07-07 14:13:12 -04:00
intc_ioapic_priv.h drivers/interrupt_controller: Get the IOAPIC RTEs dynamically 2021-03-12 09:23:08 -05:00
intc_irqmp.c intc: Add support for GRLIB IRQMP 2020-11-13 14:53:55 -08:00
intc_ite_it8xxx2.c driver: intc: it8xxx2: wait until two equal interrupt values are read 2021-07-09 12:45:01 -05:00
intc_ite_it8xxx2.h drivers: gpio: ite_it8xxx2: enable more gpio groups 2021-04-23 06:31:56 -04:00
intc_loapic.c pm: use enum for device PM states 2021-07-07 14:13:12 -04:00
intc_loapic_spurious.S intc: loapic: mark data and functions as boot/pinned 2021-05-10 16:00:43 -05:00
intc_miwu.c dts: npcx: replace series-prefix 'npcx7-' with famliy-prefix 'npcx-' 2021-06-04 16:14:48 -05:00
intc_plic.c isr: Normalize usage of device instance through ISR 2020-09-02 13:48:13 +02:00
intc_rv32m1_intmux.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04:00
intc_sam0_eic.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04:00
intc_sam0_eic_priv.h zephyr: replace zephyr integer types with C99 types 2020-06-08 08:23:57 -05:00
intc_shared_irq.c drivers: interrupt_controller: intc_shared: cond. forward sense cell 2021-05-07 12:41:04 -05:00
intc_swerv_pic.c isr: Normalize usage of device instance through ISR 2020-09-02 13:48:13 +02:00
intc_system_apic.c intc: system_apic: mark functions as boot/pinned 2021-05-10 16:00:43 -05:00
intc_vexriscv_litex.c drivers: gpio_litex: add support for litex_vexriscv GPIO interrupts 2021-06-04 16:24:52 -05:00
Kconfig drivers/interrupt: it8xxx2 driver interrupt-control 2020-12-16 08:47:36 -05:00
Kconfig.cavs intc: intc_cavs: Use DTS labels for device names 2020-04-22 04:59:22 -05:00
Kconfig.dw interrupt_controller/dw_ictl: need to be initialized earlier 2020-03-25 19:07:28 -04:00
Kconfig.gic drivers: gicv3: GIC with single secure mode 2021-04-13 07:47:44 -04:00
Kconfig.intel_vtd drivers/interrupt_controller: Add Intel VT-D interrupt remapping driver 2020-12-08 09:29:20 -05:00
Kconfig.it8xxx2 drivers/interrupt: it8xxx2 driver interrupt-control 2020-12-16 08:47:36 -05:00
Kconfig.loapic drivers/interrupt_controller: Get the IOAPIC RTEs dynamically 2021-03-12 09:23:08 -05:00
Kconfig.multilevel kconfig: Clean up header comments and make them consistent 2019-11-04 17:31:27 -05:00
Kconfig.multilevel.aggregator_template license: cleanup: add SPDX Apache-2.0 license identifier 2019-04-07 08:45:22 -04:00
Kconfig.npcx driver: npcx7: fixed typo in Kconfig.npcx files. 2020-12-07 12:11:17 -05:00
Kconfig.rv32m1 boards: riscv: rv32m1: enable BT related configuration 2019-11-08 15:38:57 +01:00
Kconfig.sam0 kconfig: Replace non-defconfig single-symbol 'if's with 'depends on' 2020-02-12 10:32:34 -06:00
Kconfig.shared_irq drivers: interrupt_controller: intc_shared: clients array size from dts 2021-05-07 12:41:04 -05:00
Kconfig.stm32 drivers/exti: stm32: Add support for STM32L5 series 2020-05-08 00:34:34 -05:00