summaryrefslogtreecommitdiffstats
path: root/sys/sparc64
diff options
context:
space:
mode:
authormarius <marius@FreeBSD.org>2007-01-16 20:42:21 +0000
committermarius <marius@FreeBSD.org>2007-01-16 20:42:21 +0000
commit026ed31f96609de8425e069de20ddd11c3222561 (patch)
treef3c925990d48d7f669566925850a1c141c0dc87d /sys/sparc64
parentda0f11a7459b1595dd45c9d91868e48f92871207 (diff)
downloadFreeBSD-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).
Diffstat (limited to 'sys/sparc64')
-rw-r--r--sys/sparc64/sparc64/ofw_machdep.c6
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) {
OpenPOWER on IntegriCloud