public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] HPET: handle multiple ACPI EXTENDED_IRQ resources
@ 2006-02-07 23:50 Bjorn Helgaas
  2006-02-12 22:55 ` Bob Picco
  0 siblings, 1 reply; 5+ messages in thread
From: Bjorn Helgaas @ 2006-02-07 23:50 UTC (permalink / raw)
  To: Bob Picco
  Cc: Venkatesh Pallipadi, linux-acpi, Len Brown, Adam Belay,
	Andrew Morton

When the _CRS for a single HPET contains multiple EXTENDED_IRQ
resources, we overwrote hdp->hd_nirqs every time we found one.

So the driver worked when all the IRQs were described in a
single EXTENDED_IRQ resource, but failed when multiple resources
were used.  (Strictly speaking, I think the latter is actually
more correct, but both styles have been used.)

Someday we should remove all the ACPI stuff from hpet.c and use
PNP driver registration instead.  But currently PNP_MAX_IRQ is 2,
and HPETs often have more IRQs.  Hint, hint, Adam :-)

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>

Index: work-mm4/drivers/char/hpet.c
===================================================================
--- work-mm4.orig/drivers/char/hpet.c	2006-02-07 16:18:46.000000000 -0700
+++ work-mm4/drivers/char/hpet.c	2006-02-07 16:29:00.000000000 -0700
@@ -953,22 +953,18 @@
 		}
 	} else if (res->type == ACPI_RESOURCE_TYPE_EXTENDED_IRQ) {
 		struct acpi_resource_extended_irq *irqp;
-		int i;
+		int i, irq;
 
 		irqp = &res->data.extended_irq;
 
-		if (irqp->interrupt_count > 0) {
-			hdp->hd_nirqs = irqp->interrupt_count;
+		for (i = 0; i < irqp->interrupt_count; i++) {
+			irq = acpi_register_gsi(irqp->interrupts[i],
+				      irqp->triggering, irqp->polarity);
+			if (irq < 0)
+				return AE_ERROR;
 
-			for (i = 0; i < hdp->hd_nirqs; i++) {
-				int rc =
-				    acpi_register_gsi(irqp->interrupts[i],
-						      irqp->triggering,
-						      irqp->polarity);
-				if (rc < 0)
-					return AE_ERROR;
-				hdp->hd_irq[i] = rc;
-			}
+			hdp->hd_irq[hdp->hd_nirqs] = irq;
+			hdp->hd_nirqs++;
 		}
 	}
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-02-13 21:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-07 23:50 [PATCH] HPET: handle multiple ACPI EXTENDED_IRQ resources Bjorn Helgaas
2006-02-12 22:55 ` Bob Picco
2006-02-13 21:24   ` Bjorn Helgaas
2006-02-13 21:49     ` Andrew Morton
2006-02-13 21:55       ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox