Mika Westerberg 204ebc0aa3 ACPI / resources: call acpi_get_override_irq() only for legacy IRQ resources
acpi_get_override_irq() was added because there was a problem with
buggy BIOSes passing wrong IRQ() resource for the RTC IRQ.  The
commit that added the workaround was 61fd47e0c8476 (ACPI: fix two
IRQ8 issues in IOAPIC mode).

With ACPI 5 enumerated devices there are typically one or more
extended IRQ resources per device (and these IRQs can be shared).
However, the acpi_get_override_irq() workaround forces all IRQs in
range 0 - 15 (the legacy ISA IRQs) to be edge triggered, active high
as can be seen from the dmesg below:

	ACPI: IRQ 6 override to edge, high
	ACPI: IRQ 7 override to edge, high
	ACPI: IRQ 7 override to edge, high
	ACPI: IRQ 13 override to edge, high

Also /proc/interrupts for the I2C controllers (INT33C2 and INT33C3) shows
the same thing:

	7:          4          0          0          0   IO-APIC-edge INT33C2:00, INT33C3:00

The _CSR method for INT33C2 (and INT33C3) device returns following
resource:

	Interrupt (ResourceConsumer, Level, ActiveLow, Shared,,, )
	{
		0x00000007,
	}

which states that this is supposed to be level triggered, active low,
shared IRQ instead.

Fix this by making sure that acpi_get_override_irq() gets only called
when we are dealing with legacy IRQ() or IRQNoFlags() descriptors.

While we are there, correct pr_warning() to print the right triggering
value.

This change turns out to be necessary to make DMA work correctly on
systems based on the Intel Lynxpoint PCH (Platform Controller Hub).

[rjw: Changelog]
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: 3.9+ <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2013-06-19 23:55:59 +02:00
..
2013-05-17 14:31:05 -04:00
2013-05-30 18:27:24 -07:00
2013-04-26 22:30:25 +02:00
2013-05-09 09:59:16 -07:00
2013-05-23 18:24:10 -07:00
2013-05-06 14:59:13 -07:00
2013-06-08 15:50:42 -07:00
2013-05-20 13:38:14 -07:00
2013-06-13 10:13:29 -07:00
2013-06-01 19:53:41 +09:00
2013-06-14 19:15:36 -10:00
2013-05-15 10:58:22 -07:00
2013-06-13 22:12:14 +01:00
2013-05-07 14:04:56 -07:00
2013-05-07 14:02:00 -07:00
2013-06-06 16:34:11 -07:00
2013-06-11 16:18:05 -07:00
2013-06-05 08:54:16 -06:00
2013-06-11 02:46:21 -07:00
2013-05-04 12:31:18 -07:00
2013-05-04 12:31:18 -07:00