diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2006-10-26 01:31:06 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-10-26 01:39:15 -0400 |
commit | 4130a4b206e7c628482aa12ec30949382c8cdc5e (patch) | |
tree | bae99205682ec6db943fc8271dddc980646254d8 /arch/sparc64/kernel/central.c | |
parent | 291b58d663862c3d42d2e8092f8b0dd3f15a94f8 (diff) |
[SPARC64]: Fix central/FHC bus handling on Ex000 systems.
1) probe_other_fhcs() wants to see only non-central FHC
busses, so skip FHCs that don't sit off the root
2) Like SBUS, FHC can lack the appropriate address and
size cell count properties, so add an of_busses[]
entry and handlers for that.
3) Central FHC irq translator probing was buggy. We
were trying to use dp->child in irq_trans_init but
that linkage is not setup at this point.
So instead, pass in the parent of "dp" and look for
the child "fhc" with parent "central".
Thanks to the tireless assistence of Ben Collins in tracking
down these problems and testing out these fixes.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/central.c')
-rw-r--r-- | arch/sparc64/kernel/central.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/central.c b/arch/sparc64/kernel/central.c index b66336db00ee..e724c54af029 100644 --- a/arch/sparc64/kernel/central.c +++ b/arch/sparc64/kernel/central.c | |||
@@ -126,6 +126,10 @@ static void probe_other_fhcs(void) | |||
126 | int board; | 126 | int board; |
127 | u32 tmp; | 127 | u32 tmp; |
128 | 128 | ||
129 | if (dp->parent && | ||
130 | dp->parent->parent != NULL) | ||
131 | continue; | ||
132 | |||
129 | fhc = (struct linux_fhc *) | 133 | fhc = (struct linux_fhc *) |
130 | central_alloc_bootmem(sizeof(struct linux_fhc)); | 134 | central_alloc_bootmem(sizeof(struct linux_fhc)); |
131 | if (fhc == NULL) | 135 | if (fhc == NULL) |