diff options
Diffstat (limited to 'arch/sparc64')
-rw-r--r-- | arch/sparc64/kernel/of_device.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c index e427086e3b58..c15bcdf75c0d 100644 --- a/arch/sparc64/kernel/of_device.c +++ b/arch/sparc64/kernel/of_device.c | |||
@@ -438,8 +438,17 @@ static int __init use_1to1_mapping(struct device_node *pp) | |||
438 | 438 | ||
439 | /* If the parent is the dma node of an ISA bus, pass | 439 | /* If the parent is the dma node of an ISA bus, pass |
440 | * the translation up to the root. | 440 | * the translation up to the root. |
441 | * | ||
442 | * Some SBUS devices use intermediate nodes to express | ||
443 | * hierarchy within the device itself. These aren't | ||
444 | * real bus nodes, and don't have a 'ranges' property. | ||
445 | * But, we should still pass the translation work up | ||
446 | * to the SBUS itself. | ||
441 | */ | 447 | */ |
442 | if (!strcmp(pp->name, "dma")) | 448 | if (!strcmp(pp->name, "dma") || |
449 | !strcmp(pp->name, "espdma") || | ||
450 | !strcmp(pp->name, "ledma") || | ||
451 | !strcmp(pp->name, "lebuffer")) | ||
443 | return 0; | 452 | return 0; |
444 | 453 | ||
445 | /* Similarly for all PCI bridges, if we get this far | 454 | /* Similarly for all PCI bridges, if we get this far |