svn commit: r366294 - head/sys/dev/acpica
Emmanuel Vadot
manu at FreeBSD.org
Wed Sep 30 17:09:18 UTC 2020
Author: manu
Date: Wed Sep 30 17:09:17 2020
New Revision: 366294
URL: https://svnweb.freebsd.org/changeset/base/366294
Log:
acpi_resource: support multiple IRQs
Some DSDT entries have multiple interrupts for one device.
Add support for it.
This fixes ahci on NXP LS2160 and genet on RPi4
Submitted by: Greg V <greg at unrelenting.technology>
Reviewed by: jhb
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D25145
Modified:
head/sys/dev/acpica/acpi_resource.c
Modified: head/sys/dev/acpica/acpi_resource.c
==============================================================================
--- head/sys/dev/acpica/acpi_resource.c Wed Sep 30 17:08:34 2020 (r366293)
+++ head/sys/dev/acpica/acpi_resource.c Wed Sep 30 17:09:17 2020 (r366294)
@@ -643,17 +643,13 @@ acpi_res_set_irq(device_t dev, void *context, uint8_t
int trig, int pol)
{
struct acpi_res_context *cp = (struct acpi_res_context *)context;
- rman_res_t intr;
+ int i;
if (cp == NULL || irq == NULL)
return;
- /* This implements no resource relocation. */
- if (count != 1)
- return;
-
- intr = *irq;
- bus_set_resource(dev, SYS_RES_IRQ, cp->ar_nirq++, intr, 1);
+ for (i = 0; i < count; i++)
+ bus_set_resource(dev, SYS_RES_IRQ, cp->ar_nirq++, irq[i], 1);
}
static void
@@ -661,17 +657,13 @@ acpi_res_set_ext_irq(device_t dev, void *context, uint
int trig, int pol)
{
struct acpi_res_context *cp = (struct acpi_res_context *)context;
- rman_res_t intr;
+ int i;
if (cp == NULL || irq == NULL)
return;
- /* This implements no resource relocation. */
- if (count != 1)
- return;
-
- intr = *irq;
- bus_set_resource(dev, SYS_RES_IRQ, cp->ar_nirq++, intr, 1);
+ for (i = 0; i < count; i++)
+ bus_set_resource(dev, SYS_RES_IRQ, cp->ar_nirq++, irq[i], 1);
}
static void
More information about the svn-src-head
mailing list