zephyr/boards
Andrew Boie e98ac235e6 x86: declare internal API for interrupt controllers
Originally, x86 just supported APIC. Then later support
for the Mint Valley Interrupt Controller was added. This
controller is mostly similar to the APIC with some differences,
but was integrated in a somewhat hacked-up fashion.

Now we define irq_controller.h, which is a layer of abstraction
between the core arch code and the interrupt controller
implementation.

Contents of the API:

- Controllers with a fixed irq-to-vector mapping define
_IRQ_CONTROLLER_VECTOR_MAPPING(irq) to obtain a compile-time
map between the two.

- _irq_controller_program() notifies the interrupt controller
what vector will be used for a particular IRQ along with triggering
flags

- _irq_controller_isr_vector_get() reports the vector number of
the IRQ currently being serviced

- In assembly language domain, _irq_controller_eoi implements
EOI handling.

- Since triggering options can vary, some common defines for
triggering IRQ_TRIGGER_EDGE, IRQ_TRIGGER_LEVEL, IRQ_POLARITY_HIGH,
IRQ_POLARITY_LOW introduced.

Specific changes made:

- New Kconfig X86_FIXED_IRQ_MAPPING for those interrupt controllers
that have a fixed relationship between IRQ lines and IDT vectors.

- MVIC driver rewritten per the HAS instead of the tortuous methods
used to get it to behave like LOAPIC. We are no longer writing values
to reserved registers. Additional assertions added.

- Some cleanup in the loapic_timer driver to make the MVIC differences
clearer.

- Unused APIs removed, or folded into calling code when used just once.

- MVIC doesn't bother to write a -1 to the intList priority field since
it gets ignored anyway

Issue: ZEP-48
Change-Id: I071a477ea68c36e00c3d0653ce74b3583454154d
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-09-06 18:35:47 +00:00
..
altera_max10 altera_max10: default to UFM flashing 2016-07-28 22:25:48 +00:00
arduino_101 quark_se: disable IPM and enable UART0 on the sensor subsystem 2016-08-31 16:31:04 +00:00
arduino_101_sss quark_se: disable IPM and enable UART0 on the sensor subsystem 2016-08-31 16:31:04 +00:00
arduino_due arduino_due: Remove empty board file 2016-07-28 16:22:17 +00:00
basic_cortex_m3
basic_minuteia basic_minuteia: Remove empty board file 2016-07-28 16:22:15 +00:00
em_starterkit
frdm_k64f nxp_kinetis: Add Kconfig options to configure clocks 2016-08-30 19:39:09 +00:00
galileo boards: galileo: Only show galileo pinmux options when the board is chosen 2016-08-01 17:34:23 +00:00
minnowboard minnowboard: Remove empty board file 2016-07-28 16:22:15 +00:00
nrf52_nitrogen board: nitrogen: Add support for the Nitrogen board 2016-07-29 14:08:06 +00:00
nrf52_pca10040
nucleo_f103rb
olimexino_stm32
qemu_cortex_m3 qemu_cortex_m3: Remove empty board file 2016-07-28 16:22:16 +00:00
qemu_nios2
qemu_x86 qemu_x86: Remove empty board file 2016-07-28 16:22:16 +00:00
quark_d2000_crb x86: declare internal API for interrupt controllers 2016-09-06 18:35:47 +00:00
quark_se_devboard quark_se: disable IPM and enable UART0 on the sensor subsystem 2016-08-31 16:31:04 +00:00
quark_se_sss_devboard quark_se: disable IPM and enable UART0 on the sensor subsystem 2016-08-31 16:31:04 +00:00
stm32_mini_a15
Kconfig
Makefile