aboutsummaryrefslogtreecommitdiffstats
path: root/xen/drivers
diff options
context:
space:
mode:
authorJulien Grall <julien.grall@linaro.org>2013-08-28 15:47:15 +0100
committerIan Campbell <ian.campbell@citrix.com>2013-09-06 14:08:28 +0100
commite008e9119d03852020b93e1d4da9a80ec1af9c75 (patch)
tree6e73ffe2a454d03b84896e6cfa7daa597608b1ea /xen/drivers
parent5f2875739beef3a75c7a7e8579b6cbcb464e61b3 (diff)
downloadxen-e008e9119d03852020b93e1d4da9a80ec1af9c75.tar.gz
xen-e008e9119d03852020b93e1d4da9a80ec1af9c75.tar.bz2
xen-e008e9119d03852020b93e1d4da9a80ec1af9c75.zip
xen/char: dt-uart: Allow the user to give a path to the node
On some board, there is no alias to the UART. To avoid modification in the device tree, dt-uart should also search device by path. To distinguish an alias from a path, dt-uart will check the first character. If it's a / then it's path, otherwise it's an alias. Signed-off-by: Julien Grall <julien.grall@linaro.org> Acked-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'xen/drivers')
-rw-r--r--xen/drivers/char/dt-uart.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/xen/drivers/char/dt-uart.c b/xen/drivers/char/dt-uart.c
index 93bb0f5845..d7204fb4cd 100644
--- a/xen/drivers/char/dt-uart.c
+++ b/xen/drivers/char/dt-uart.c
@@ -26,9 +26,10 @@
/*
* Configure UART port with a string:
- * alias,options
+ * path,options
*
- * @alias: alias used in the device tree for the UART
+ * @path: full path used in the device tree for the UART. If the path
+ * doesn't start with '/', we assuming that it's an alias.
* @options: UART speficic options (see in each UART driver)
*/
static char __initdata opt_dtuart[30] = "";
@@ -38,7 +39,7 @@ void __init dt_uart_init(void)
{
struct dt_device_node *dev;
int ret;
- const char *devalias = opt_dtuart;
+ const char *devpath = opt_dtuart;
char *options;
if ( !console_has("dtuart") || !strcmp(opt_dtuart, "") )
@@ -53,12 +54,15 @@ void __init dt_uart_init(void)
else
options = "";
- early_printk("Looking for UART console %s\n", devalias);
- dev = dt_find_node_by_alias(devalias);
+ early_printk("Looking for UART console %s\n", devpath);
+ if ( *devpath == '/' )
+ dev = dt_find_node_by_path(devpath);
+ else
+ dev = dt_find_node_by_alias(devpath);
if ( !dev )
{
- early_printk("Unable to find device \"%s\"\n", devalias);
+ early_printk("Unable to find device \"%s\"\n", devpath);
return;
}