diff options
author | Nathan Lynch <ntl@pobox.com> | 2007-01-03 12:56:28 -0600 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-01-24 21:13:58 +1100 |
commit | f1f003330b4489f0e6502e1315bf9d764ed5f757 (patch) | |
tree | 84a9b5bac5ea65db00a4857a91fa2a5cf10d96a7 /arch/powerpc | |
parent | 9a3d6458e9dded0a060115b446531cfc77083ebb (diff) | |
download | op-kernel-dev-f1f003330b4489f0e6502e1315bf9d764ed5f757.zip op-kernel-dev-f1f003330b4489f0e6502e1315bf9d764ed5f757.tar.gz |
[POWERPC] maple: improve CPC9x5 host bridge detection
Identify CPC9x5 PCI Express, AGP, and HT host bridges using
device_type and compatible properties, which is a more flexible method
than using the name property (which can differ between firmwares and
models).
Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/maple/pci.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/maple/pci.c b/arch/powerpc/platforms/maple/pci.c index 3f6a69f..011f0f1 100644 --- a/arch/powerpc/platforms/maple/pci.c +++ b/arch/powerpc/platforms/maple/pci.c @@ -560,13 +560,16 @@ void __init maple_pci_init(void) return; } for (np = NULL; (np = of_get_next_child(root, np)) != NULL;) { - if (np->name == NULL) + if (!np->type) continue; - if (!strcmp(np->name, "pci") || !strcmp(np->name, "pcie")) { - if (add_bridge(np) == 0) - of_node_get(np); - } - if (strcmp(np->name, "ht") == 0) { + if (strcmp(np->type, "pci") && strcmp(np->type, "ht")) + continue; + if ((device_is_compatible(np, "u4-pcie") || + device_is_compatible(np, "u3-agp")) && + add_bridge(np) == 0) + of_node_get(np); + + if (device_is_compatible(np, "u3-ht")) { of_node_get(np); ht = np; } |