On x86, INTRNG is not available so devices cannot consume interrupts
from sources that are not their parent in the device tree (e.g. I2C
touchpads on some laptops, which consume interrupts from a GPIO
controller which is not a direct ascendant in the device tree).
Add a simple request/provide mechanism as a stopgap (a.k.a. permanent)
solution:
- Consumers call acpi_cousin_intr_req() during attach to advertise they need an interrupt source.
- Providers call acpi_cousin_intr_provide() with the ACPI handle of the consumer to match requests and invoke setup callbacks.
- acpi_cousin_intr_trigger() dispatches interrupts to all registered consumers.
All guarded by x86_64 since ARM platforms should use INTRNG instead.
Sponsored by: The FreeBSD Foundation