Skip to content

Commit

Permalink
powerpc: Correct parport interrupt parsing
Browse files Browse the repository at this point in the history
Currently the parsing of the device tree in
arch/powerpc/include/asm/parport.h assumes that the interrupt provided in
the parallel port node is a valid virtual irq. The values for the
interrupts provided in the device tree should have meaning in the context
of the driver for the specific interrupt controller to which the interrupt
is connected and irq_of_parse_and_map() should be used to determine the
correct virtual irq.

Signed-off-by: Martyn Welch <martyn.welch@ge.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
Martyn Welch authored and Benjamin Herrenschmidt committed May 6, 2010
1 parent 75c1d53 commit 7cad197
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions arch/powerpc/include/asm/parport.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,22 @@ static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma)
u32 io1, io2;
int propsize;
int count = 0;
int virq;

for (np = NULL; (np = of_find_compatible_node(np,
"parallel",
"pnpPNP,400")) != NULL;) {
prop = of_get_property(np, "reg", &propsize);
if (!prop || propsize > 6*sizeof(u32))
continue;
io1 = prop[1]; io2 = prop[2];
prop = of_get_property(np, "interrupts", NULL);
if (!prop)

virq = irq_of_parse_and_map(np, 0);
if (virq == NO_IRQ)
continue;
if (parport_pc_probe_port(io1, io2, prop[0], autodma, NULL, 0) != NULL)

if (parport_pc_probe_port(io1, io2, virq, autodma, NULL, 0)
!= NULL)
count++;
}
return count;
Expand Down

0 comments on commit 7cad197

Please sign in to comment.