diff options
author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-20 23:59:36 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-20 23:59:36 -0800 |
commit | 5576d187a0eef3bb3c47500eaab33fb5485bc352 (patch) | |
tree | 608ac1f1091eddf17b4930d59c3a61dad7994614 /arch/powerpc/kernel/prom_parse.c | |
parent | ee2fae03d68e702866a8661fbee7ff2f2f3754d7 (diff) | |
parent | 1c9bb1a01ac1bc92a0d98cf3e40a7922ee684dc0 (diff) | |
download | op-kernel-dev-5576d187a0eef3bb3c47500eaab33fb5485bc352.zip op-kernel-dev-5576d187a0eef3bb3c47500eaab33fb5485bc352.tar.gz |
Merge branch 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc
* 'merge' of master.kernel.org:/pub/scm/linux/kernel/git/paulus/powerpc:
[POWERPC] Fix register save area alignment for swapcontext syscall
[POWERPC] Fix PCI device channel state initialization
[POWERPC] Update MTD OF documentation
[POWERPC] Probe Efika platform before CHRP.
[POWERPC] Fix build of cell zImage.initrd
[POWERPC] iSeries: fix CONFIG_VIOPATH dependency
[POWERPC] iSeries: fix viocons init
[POWERPC] iSeries: fix viocd init
[POWERPC] iSeries: fix iseries_veth init
[POWERPC] iSeries: fix viotape init
[POWERPC] iSeries: fix viodasd init
[POWERPC] Workaround oldworld OF bug with IRQs & P2P bridges
[POWERPC] powerpc: add scanning of ebc bus to of_platform
[POWERPC] spufs: fix assignment of node numbers
[POWERPC] cell: Fix spufs with "new style" device-tree
[POWERPC] cell: Enable spider workarounds on all PCI buses
[POWERPC] cell: add forward struct declarations to spu.h
[POWERPC] cell: update cell_defconfig
Diffstat (limited to 'arch/powerpc/kernel/prom_parse.c')
-rw-r--r-- | arch/powerpc/kernel/prom_parse.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/prom_parse.c b/arch/powerpc/kernel/prom_parse.c index 0dfbe1c..12c51e4 100644 --- a/arch/powerpc/kernel/prom_parse.c +++ b/arch/powerpc/kernel/prom_parse.c @@ -920,9 +920,20 @@ static int of_irq_map_oldworld(struct device_node *device, int index, /* * Old machines just have a list of interrupt numbers - * and no interrupt-controller nodes. + * and no interrupt-controller nodes. We also have dodgy + * cases where the APPL,interrupts property is completely + * missing behind pci-pci bridges and we have to get it + * from the parent (the bridge itself, as apple just wired + * everything together on these) */ - ints = get_property(device, "AAPL,interrupts", &intlen); + while (device) { + ints = get_property(device, "AAPL,interrupts", &intlen); + if (ints != NULL) + break; + device = device->parent; + if (device && strcmp(device->type, "pci") != 0) + break; + } if (ints == NULL) return -EINVAL; intlen /= sizeof(u32); |