[POWERPC] Open Firmware serial port driver
This can be used for serial ports that are connected to an OF platform bus but are not autodetected by the lecacy serial support. It will automatically take over devices that come from the legacy serial detection, which usually is only one device. In some cases, rtas may be set up to use the serial port in the firmware, which allows easier debugging before probing the serial ports. In this case, the "used-by-rtas" property must be set by the firmware. This patch also adds code to the legacy serial driver to check for this. Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
775aeff447
commit
8d38a5b2fa
@@ -124,6 +124,10 @@ static int __init add_legacy_soc_port(struct device_node *np,
|
||||
if (get_property(np, "clock-frequency", NULL) == NULL)
|
||||
return -1;
|
||||
|
||||
/* if rtas uses this device, don't try to use it as well */
|
||||
if (get_property(np, "used-by-rtas", NULL) != NULL)
|
||||
return -1;
|
||||
|
||||
/* Get the address */
|
||||
addrp = of_get_address(soc_dev, 0, NULL, NULL);
|
||||
if (addrp == NULL)
|
||||
@@ -334,6 +338,17 @@ void __init find_legacy_serial_ports(void)
|
||||
of_node_put(tsi);
|
||||
}
|
||||
|
||||
/* First fill our array with opb bus ports */
|
||||
for (np = NULL; (np = of_find_compatible_node(np, "serial", "ns16750")) != NULL;) {
|
||||
struct device_node *opb = of_get_parent(np);
|
||||
if (opb && !strcmp(opb->type, "opb")) {
|
||||
index = add_legacy_soc_port(np, np);
|
||||
if (index >= 0 && np == stdout)
|
||||
legacy_serial_console = index;
|
||||
}
|
||||
of_node_put(opb);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
/* Next, try to locate PCI ports */
|
||||
for (np = NULL; (np = of_find_all_nodes(np));) {
|
||||
|
Reference in New Issue
Block a user