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_common_priv.h drivers: gicv3: fix getting rdist base address 2021-04-26 13:42:43 +02: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_gicv3_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_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_priv.h drivers/interrupt_controller: Get the IOAPIC RTEs dynamically 2021-03-12 09:23:08 -05:00
intc_ioapic.c pm: use enum for device PM states 2021-07-07 14:13:12 -04: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_spurious.S intc: loapic: mark data and functions as boot/pinned 2021-05-10 16:00:43 -05:00
intc_loapic.c pm: use enum for device PM states 2021-07-07 14:13:12 -04: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_priv.h
intc_sam0_eic.c drivers: interrupt_controller: remove usage of device_pm_control_nop 2021-04-28 10:55:49 -04: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
Kconfig.dw
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.multilevel.aggregator_template
Kconfig.npcx driver: npcx7: fixed typo in Kconfig.npcx files. 2020-12-07 12:11:17 -05:00
Kconfig.rv32m1
Kconfig.sam0
Kconfig.shared_irq drivers: interrupt_controller: intc_shared: clients array size from dts 2021-05-07 12:41:04 -05:00
Kconfig.stm32