coreboot/src
Tim Wawrzynczak b59980b54e soc/intel/common: Add new IRQ module
The Intel FSP provides a default set of IO-APIC IRQs for PCI devices, if
the DevIntConfigPtr UPD is not filled in. However, the FSP has a list of
rules that the input IRQ table must conform to:
1) One entry per slot/function
2) Functions using PIRQs must use IOxAPIC IRQs 16-23
3) Single-function devices must use INTA
4) Each slot must have consistent INTx<->PIRQy mappings
5) Some functions have special interrupt pin requirements
6) PCI Express RPs must be assigned in a special way (FIXED_INT_PIN)
7) Some functions require a unique IRQ number
8) PCI functions must avoid sharing an IRQ with a GPIO pad which routes
   its IRQ through IO-APIC.

Since the FSP has no visibility into the actual GPIOs used on the board
when GpioOverride is selected, IRQ conflicts can occur between PCI
devices and GPIOs. This patch gives SoC code the ability to generate a
table of PCI IRQs that will meet the BWG/FSP rules and also not conflict
with GPIO IRQs.

BUG=b:130217151, b:171580862, b:176858827
TEST=Boot with patch series on volteer, verify IO-APIC IRQs in
`/proc/interrupts` match what is expected. No `GSI INT` or
`could not derive routing` messages seen in `dmesg` output.
Verified TPM, touchpad, touchscreen IRQs all function as expected.

Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Change-Id: I0c22a08ce589fa80d0bb1e637422304a3af2045c
Reviewed-on: https://review.coreboot.org/c/coreboot/+/49408
Reviewed-by: Furquan Shaikh <furquan@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
2021-06-29 21:50:45 +00:00
..
acpi ACPI: Refactor use of global and device NVS 2021-06-14 19:45:56 +00:00
arch arch/x86/bootblock.ld: Align the bottom of the bootblock to 64 bytes 2021-06-24 11:22:54 +00:00
commonlib helpers: Introduce retry macro 2021-06-26 10:09:06 +00:00
console Asm code: Use NO_EARLY_BOOTBLOCK_POSTCODES to remove Asm port80s 2021-06-25 15:51:20 +00:00
cpu Asm code: Use NO_EARLY_BOOTBLOCK_POSTCODES to remove Asm port80s 2021-06-25 15:51:20 +00:00
device src/device/dram: Add terminating new lines to printk strings 2021-06-28 04:29:57 +00:00
drivers drivers/intel/mipi_camera: Change type for gpio_num to uint16_t 2021-06-21 05:34:58 +00:00
ec ec/google/wilco: Fix comment about enclosure type 2021-06-21 05:43:52 +00:00
include Asm code: Use NO_EARLY_BOOTBLOCK_POSTCODES to remove Asm port80s 2021-06-25 15:51:20 +00:00
lib nvs: Add Chrome OS NVS (CNVS) information to coreboot tables 2021-06-18 18:38:14 +00:00
mainboard mb/google/guybrush: Initialize WWAN for USB if requested 2021-06-29 18:06:30 +00:00
northbridge nb/intel/haswell/pcie.c: Avoid needless death 2021-06-22 04:47:20 +00:00
security security/intel/cbnt: Fix logging 2021-06-28 04:25:23 +00:00
soc soc/intel/common: Add new IRQ module 2021-06-29 21:50:45 +00:00
southbridge southbridge/intel/common: Move invalid PIRQ value to 0 2021-06-29 21:50:35 +00:00
superio src: Retype option API to use unsigned integers 2021-05-06 14:48:15 +00:00
vendorcode vendorcode/intel/fsp: Remove deprecated header 2021-06-26 10:06:52 +00:00
Kconfig option: Allow mainboards to implement the API 2021-05-28 11:37:25 +00:00