diff options
author | H. Peter Anvin <hpa@zytor.com> | 2009-05-23 19:42:19 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-05-23 19:42:19 -0400 |
commit | ee0736627d3347be0be2769fa7b26431f9726c9d (patch) | |
tree | 203e2204daaec4cf005463fdf2c7bf380d6eef36 /arch/sparc/kernel/of_device_64.c | |
parent | cf9972a921470b0a2da7906104bcd540b20e33bf (diff) | |
parent | 0af48f42df15b97080b450d24219dd95db7b929a (diff) |
Merge branch 'x86/urgent' into x86/setup
Resolved conflicts:
arch/x86/boot/memory.c
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/sparc/kernel/of_device_64.c')
-rw-r--r-- | arch/sparc/kernel/of_device_64.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/arch/sparc/kernel/of_device_64.c b/arch/sparc/kernel/of_device_64.c index 27381f1baffc..5ac287ac03de 100644 --- a/arch/sparc/kernel/of_device_64.c +++ b/arch/sparc/kernel/of_device_64.c | |||
@@ -300,8 +300,25 @@ static unsigned long of_bus_pci_get_flags(const u32 *addr, unsigned long flags) | |||
300 | 300 | ||
301 | static int of_bus_sbus_match(struct device_node *np) | 301 | static int of_bus_sbus_match(struct device_node *np) |
302 | { | 302 | { |
303 | return !strcmp(np->name, "sbus") || | 303 | struct device_node *dp = np; |
304 | !strcmp(np->name, "sbi"); | 304 | |
305 | while (dp) { | ||
306 | if (!strcmp(dp->name, "sbus") || | ||
307 | !strcmp(dp->name, "sbi")) | ||
308 | return 1; | ||
309 | |||
310 | /* Have a look at use_1to1_mapping(). We're trying | ||
311 | * to match SBUS if that's the top-level bus and we | ||
312 | * don't have some intervening real bus that provides | ||
313 | * ranges based translations. | ||
314 | */ | ||
315 | if (of_find_property(dp, "ranges", NULL) != NULL) | ||
316 | break; | ||
317 | |||
318 | dp = dp->parent; | ||
319 | } | ||
320 | |||
321 | return 0; | ||
305 | } | 322 | } |
306 | 323 | ||
307 | static void of_bus_sbus_count_cells(struct device_node *child, | 324 | static void of_bus_sbus_count_cells(struct device_node *child, |