opnsense-src/sys/arm
Kornel Duleba 986bbba9a6 arm/mv: Don't rely on firmware MSI mapping in ICU
On Armada8k boards various peripherals (e.g. USB) have interrupt lines
connected to on of the ICU interrupt controllers.
After an interrupt is detected it triggers MSI to a given address,
with a programmed value. This in turn triggers an SPI interrupt.
Normally MSI vector should be allocated by ICUs parent and set
during interrupt allocation.
Instead of doing that we relied on the ICU being pre-configured in firmware.
This worked with EDK2 and older versions of U-Boot, but in the newer
ones that is no longer the case.
Extend ICU msi-parents - GICP and SEI to support MSI interface
and use it during interrupt allocation.
This allows us to boot on Armada 7k/8k SoCs independent from the
firmware configuration and successfully use modern U-Boot + device tree.

For SATA interrupts we need to apply a WA previously done in firmware.
We have two SATA ports connected to one controller.
Each ports gets its own interrupt, but only one of them is
described in dts, also ahci_generic driver expects only one irq too.
Fix it by mapping both interrupts to the same MSI when one of them
is allocated, which allows us to use both SATA ports.

Reviewed by: mmel, mw
Obtained from: Semihalf
Sponsored by: Marvell
Differential Revision: https://reviews.freebsd.org/D28803
2021-07-20 23:24:42 +02:00
..
allwinner armv7: allwinner: Add aw_r_intc driver 2021-07-05 11:38:23 +02:00
altera/socfpga arm: clean up empty lines in .c and .h files 2020-09-01 21:17:24 +00:00
annapurna/alpine Remove versatile support 2021-04-12 06:16:31 +00:00
arm arm: retire bcopy 2021-07-19 09:53:02 +00:00
broadcom/bcm2835 rpi_ft5406: Recognize raspberrypi,firmware-ts touchscreen 2021-05-09 12:13:19 +02:00
cloudabi32 Pass the syscall number to capsicum permission-denied signals 2021-07-16 18:06:44 +01:00
conf arm: remove fslsdma from GENERIC 2021-07-09 11:21:40 -06:00
freescale newbus: Move from bus_child_{pnpinfo,location}_src to bus_child_{pnpinfo,location} with sbuf 2021-06-22 20:52:06 -06:00
include arm: dedup counter(9) address calculation 2021-07-19 10:46:25 +00:00
linux linux(4): Regen for linux_poll system call. 2021-06-22 08:09:55 +03:00
mv arm/mv: Don't rely on firmware MSI mapping in ICU 2021-07-20 23:24:42 +02:00
nvidia tegra_pcie: use switch instead of if in tegra_pcib_pex_ctrl 2021-07-01 20:09:46 +02:00
qemu arm: Add kern_clocksource.c directly in files.arm 2019-04-16 20:04:22 +00:00
rockchip Add support for RK3288 SoC. 2020-12-04 16:24:44 +00:00
ti arm: TI AM335x fix gpio_pin numbers in lookup table. 2021-07-18 13:06:26 +02:00
xilinx arm: clean up empty lines in .c and .h files 2020-09-01 21:17:24 +00:00