diff options
Diffstat (limited to 'arch/powerpc/kernel/legacy_serial.c')
-rw-r--r-- | arch/powerpc/kernel/legacy_serial.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/legacy_serial.c b/arch/powerpc/kernel/legacy_serial.c index 89f46f377922..325f490a10cc 100644 --- a/arch/powerpc/kernel/legacy_serial.c +++ b/arch/powerpc/kernel/legacy_serial.c | |||
@@ -124,6 +124,10 @@ static int __init add_legacy_soc_port(struct device_node *np, | |||
124 | if (get_property(np, "clock-frequency", NULL) == NULL) | 124 | if (get_property(np, "clock-frequency", NULL) == NULL) |
125 | return -1; | 125 | return -1; |
126 | 126 | ||
127 | /* if rtas uses this device, don't try to use it as well */ | ||
128 | if (get_property(np, "used-by-rtas", NULL) != NULL) | ||
129 | return -1; | ||
130 | |||
127 | /* Get the address */ | 131 | /* Get the address */ |
128 | addrp = of_get_address(soc_dev, 0, NULL, NULL); | 132 | addrp = of_get_address(soc_dev, 0, NULL, NULL); |
129 | if (addrp == NULL) | 133 | if (addrp == NULL) |
@@ -334,6 +338,17 @@ void __init find_legacy_serial_ports(void) | |||
334 | of_node_put(tsi); | 338 | of_node_put(tsi); |
335 | } | 339 | } |
336 | 340 | ||
341 | /* First fill our array with opb bus ports */ | ||
342 | for (np = NULL; (np = of_find_compatible_node(np, "serial", "ns16750")) != NULL;) { | ||
343 | struct device_node *opb = of_get_parent(np); | ||
344 | if (opb && !strcmp(opb->type, "opb")) { | ||
345 | index = add_legacy_soc_port(np, np); | ||
346 | if (index >= 0 && np == stdout) | ||
347 | legacy_serial_console = index; | ||
348 | } | ||
349 | of_node_put(opb); | ||
350 | } | ||
351 | |||
337 | #ifdef CONFIG_PCI | 352 | #ifdef CONFIG_PCI |
338 | /* Next, try to locate PCI ports */ | 353 | /* Next, try to locate PCI ports */ |
339 | for (np = NULL; (np = of_find_all_nodes(np));) { | 354 | for (np = NULL; (np = of_find_all_nodes(np));) { |