aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/uart/uart_cpu_fdt.c
diff options
context:
space:
mode:
authorNathan Whitehorn <nwhitehorn@FreeBSD.org>2013-10-26 20:06:50 +0000
committerNathan Whitehorn <nwhitehorn@FreeBSD.org>2013-10-26 20:06:50 +0000
commit94f33b0ab65bc8e827f6ea2d4be2d2c5fa5f5805 (patch)
tree74af02da88caf414e4f78962ede46a442c05c2c9 /sys/dev/uart/uart_cpu_fdt.c
parentc2788c07bfa7d5e4a2febdb11a1f447dcb696c7b (diff)
Notes
Diffstat (limited to 'sys/dev/uart/uart_cpu_fdt.c')
-rw-r--r--sys/dev/uart/uart_cpu_fdt.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/sys/dev/uart/uart_cpu_fdt.c b/sys/dev/uart/uart_cpu_fdt.c
index 57ad6ec63773..49a49cea435f 100644
--- a/sys/dev/uart/uart_cpu_fdt.c
+++ b/sys/dev/uart/uart_cpu_fdt.c
@@ -139,14 +139,19 @@ uart_cpu_getdev(int devtype, struct uart_devinfo *di)
/*
* Retrieve /chosen/std{in,out}.
*/
- if ((chosen = OF_finddevice("/chosen")) == -1)
- return (ENXIO);
- for (name = propnames; *name != NULL; name++) {
- if (phandle_chosen_propdev(chosen, *name, &node) == 0)
- break;
+ node = -1;
+ if ((chosen = OF_finddevice("/chosen")) != -1) {
+ for (name = propnames; *name != NULL; name++) {
+ if (phandle_chosen_propdev(chosen, *name, &node) == 0)
+ break;
+ }
}
- if (*name == NULL)
+ if (chosen == -1 || *name == NULL)
+ node = OF_finddevice("serial0"); /* Last ditch */
+
+ if (node == -1) /* Can't find anything */
return (ENXIO);
+
/*
* Retrieve serial attributes.
*/