mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
7cad197849
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>
45 lines
992 B
C
45 lines
992 B
C
/*
|
|
* parport.h: platform-specific PC-style parport initialisation
|
|
*
|
|
* Copyright (C) 1999, 2000 Tim Waugh <tim@cyberelk.demon.co.uk>
|
|
*
|
|
* This file should only be included by drivers/parport/parport_pc.c.
|
|
*/
|
|
|
|
#ifndef _ASM_POWERPC_PARPORT_H
|
|
#define _ASM_POWERPC_PARPORT_H
|
|
#ifdef __KERNEL__
|
|
|
|
#include <asm/prom.h>
|
|
|
|
static int __devinit parport_pc_find_nonpci_ports (int autoirq, int autodma)
|
|
{
|
|
struct device_node *np;
|
|
const u32 *prop;
|
|
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];
|
|
|
|
virq = irq_of_parse_and_map(np, 0);
|
|
if (virq == NO_IRQ)
|
|
continue;
|
|
|
|
if (parport_pc_probe_port(io1, io2, virq, autodma, NULL, 0)
|
|
!= NULL)
|
|
count++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* !(_ASM_POWERPC_PARPORT_H) */
|