aboutsummaryrefslogtreecommitdiff
path: root/drivers/serial
diff options
context:
space:
mode:
authorSimon Glass2017-06-12 06:21:58 -0600
committerSimon Glass2017-07-11 10:08:20 -0600
commitf93472a0221b6e1eb7acce8aee6c2eb335904f58 (patch)
treec7921174a82c26bf0f749bbf4cf489fa3a0c5535 /drivers/serial
parentd09608534cb4864d1fbde6459d3501129c344a0c (diff)
dm: serial: Add livetree support
Add support for a live device tree to the core serial uclass. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Tested-on: Beaver, Jetson-TK1
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/serial-uclass.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index 7e4290684c5..f3605346839 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -14,6 +14,7 @@
#include <watchdog.h>
#include <dm/lists.h>
#include <dm/device-internal.h>
+#include <dm/of_access.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -81,9 +82,20 @@ static void serial_find_console_or_panic(void)
return;
}
} else if (CONFIG_IS_ENABLED(OF_CONTROL) && blob) {
- if (!serial_check_stdout(blob, &dev)) {
- gd->cur_serial_dev = dev;
- return;
+ /* Live tree has support for stdout */
+ if (of_live_active()) {
+ struct device_node *np = of_get_stdout();
+
+ if (np && !uclass_get_device_by_ofnode(UCLASS_SERIAL,
+ np_to_ofnode(np), &dev)) {
+ gd->cur_serial_dev = dev;
+ return;
+ }
+ } else {
+ if (!serial_check_stdout(blob, &dev)) {
+ gd->cur_serial_dev = dev;
+ return;
+ }
}
}
if (!SPL_BUILD || !CONFIG_IS_ENABLED(OF_CONTROL) || !blob) {