zephyr/drivers
Zide Chen e8b6b86704 interrupt_controller: device driver can configure IO APIC delivery mode
Currently all IO APIC interrupts are configured at fixed delivery mode,
which is good for HEPT timer interrupt but it imposes burdens to
device drivers to properly handle the repeated interrupt sent to all
processors.

This patch makes it more flexible so that device drivers can specify
the delivery mode it desires in the IRQ connect APIs.

- Don't hard code IOAPIC_FIXED in z_ioapic_irq_set(), meaning the
  IRQ delivery mode is passed in from the 'flags' argument and
  individual device driver needs to choose delivery mode for its own
  IO APIC interrupt.

- To support different delivery mode in different IO APIC interrupts,
  need to save and restore RTE[10:8] during IOAPIC suspend and resume.

If device driver doesn't pass either IOAPIC_FIXED or IOAPIC_LOWEST
in IRQ_CONNECT()/irq_connect_dynamic() alike APIs, the delivery mode
bit fields in the target RTE register are '0' which implies fixed mode.
If the device driver wants the interrupt to be delivered to one CPU
only, it needs to explicitly specify IOAPIC_LOWEST in one of the IRQ
connect APIs.

Signed-off-by: Zide Chen <zide.chen@intel.com>
2020-05-08 22:32:39 -04:00
..
adc devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
audio devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
bluetooth bluetooth: hci_rpmsg: check SHM_SIZE against shared mem size using DT 2020-05-07 10:07:00 +02:00
can devicetree: DT_NODE_HAS_COMPAT_STATUS_OKAY -> DT_NODE_HAS_COMPAT_STATUS 2020-05-08 19:37:18 -05:00
clock_control devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
console device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
counter devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
crypto device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
dac devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
debug tracing: cleanup and split segger/rtt configuration options 2020-02-07 15:58:05 -05:00
display device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
dma devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
eeprom devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
entropy device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
espi device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
ethernet device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
flash device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
gpio devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
hwinfo drivers: hwinfo: fix ESP32 implementation 2020-04-28 15:32:53 -04:00
i2c devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
i2s device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
ieee802154 devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
interrupt_controller interrupt_controller: device driver can configure IO APIC delivery mode 2020-05-08 22:32:39 -04:00
ipm device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
kscan device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
led devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
led_strip devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
lora drivers: lora: Add a shell for LoRa testing 2020-05-07 14:49:06 +02:00
modem device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
net device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
neural_net device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
pcie global: Remove leading/trailing blank lines in files 2019-12-11 19:17:27 +01:00
peci drivers: microchip: Convert microchip drivers to new DT_INST macros 2020-03-26 16:31:52 -05:00
pinmux devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
ps2 device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
ptp_clock
pwm devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
sensor devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
serial devicetree: DT_NODE_HAS_COMPAT_STATUS_OKAY -> DT_NODE_HAS_COMPAT_STATUS 2020-05-08 19:37:18 -05:00
spi devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
timer util.h: Remove INLINE definition and user 2020-05-08 08:37:21 -04:00
usb devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
video device: Fix structure attributes access 2020-05-08 23:07:44 +02:00
watchdog devicetree: allow access to all nodes 2020-05-08 19:37:18 -05:00
wifi coccinelle: run int_ms_to_timeout conversion semantic patch 2020-05-07 19:46:03 +02:00
CMakeLists.txt drivers: dac: Add API for DAC peripherals 2020-04-20 17:41:48 +02:00
Kconfig drivers: dac: Add API for DAC peripherals 2020-04-20 17:41:48 +02:00