diff options
author | marius <marius@FreeBSD.org> | 2007-01-16 20:42:21 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2007-01-16 20:42:21 +0000 |
commit | 026ed31f96609de8425e069de20ddd11c3222561 (patch) | |
tree | f3c925990d48d7f669566925850a1c141c0dc87d | |
parent | da0f11a7459b1595dd45c9d91868e48f92871207 (diff) | |
download | FreeBSD-src-026ed31f96609de8425e069de20ddd11c3222561.zip FreeBSD-src-026ed31f96609de8425e069de20ddd11c3222561.tar.gz |
Teach OF_decode_addr() about the bus space used for devices on the
nexus (which might or might not reflect an UPA interconnection bus;
accordingly UPA_BUS_SPACE should be renamed to NEXUS_BUS_SPACE at a
later point) and subordinate/slave UPA busses. This is part 1/4 of
allowing creator(4) to work in USIII machines (which have a UPA bus
hanging off from the Fireplane/Safari bus reflected by the nexus).
-rw-r--r-- | sys/sparc64/sparc64/ofw_machdep.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/sparc64/sparc64/ofw_machdep.c b/sys/sparc64/sparc64/ofw_machdep.c index 016b432..05c4437 100644 --- a/sys/sparc64/sparc64/ofw_machdep.c +++ b/sys/sparc64/sparc64/ofw_machdep.c @@ -244,10 +244,14 @@ OF_decode_addr(phandle_t node, int bank, int *space, bus_addr_t *addr) /* Done with mapping. Return the bus space as used by FreeBSD. */ *addr = start; + if (OF_parent(lbus) == 0) { + *space = UPA_BUS_SPACE; + return (0); + } if (OF_getprop(lbus, "name", name, sizeof(name)) == -1) return (ENXIO); name[sizeof(name) - 1] = '\0'; - if (strcmp(name, "central") == 0) { + if (strcmp(name, "central") == 0 || strcmp(name, "upa") == 0) { *space = UPA_BUS_SPACE; return (0); } else if (strcmp(name, "pci") == 0) { |