]> xenbits.xensource.com Git - people/sstabellini/xen-unstable.git/.git/commitdiff
dt-uart: use ':' as separator between path and options
authorIan Campbell <ian.campbell@citrix.com>
Thu, 8 Jan 2015 11:53:55 +0000 (11:53 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 12 Jan 2015 16:04:54 +0000 (16:04 +0000)
',' is a valid character in a device-tree path (see ePAPR v1.1 Table
2-1), in fact ',' is actually pretty common in node names.

Using ',' as a separator breaks for example on fast models. If you use
the full path (/smb/motherboard/iofpga@3,00000000/uart@090000) rather
than the alias then earlyprintk gives:

(XEN) Looking for UART console /smb/motherboard/iofpga@3
(XEN) Unable to find device "/smb/motherboard/iofpga@3"
(XEN) Bad console= option 'dtuart'

I actually noticed this on Jetson where the uart is
"/serial@0,70006300" and there happened to be no alias defined.

Instead use ':' as the separator, it is defined to terminate the path
in the context of /chosen/stdout-path (Table 3-4) which is pretty
closely analogous to the dtuart= option and so makes a pretty good
choice (especially since the next patch adds support for stdout-path).

Since no DT aware driver current supports any options there is no
point in retaining support for ',' for backwards compatibility.

Additionally, expand the buffer for the dtuart option, a path can be
far longer than 30 characters (in fact the maximum size of a single
node name is 31, so it's not even necessarily enough for an alias).
128 is completely arbitrary and allows for paths at least 8 deep even
with worst case node names.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Reviewed-by: Julien Grall <julien.grall@linaro.org>
docs/misc/xen-command-line.markdown
xen/drivers/char/dt-uart.c

index 8bd75cd3d2112758a25bccf796f93aa388eac0b7..a061aa41b6e278257997f7e4d82d681c46115b39 100644 (file)
@@ -558,7 +558,7 @@ Pin dom0 vcpus to their respective pcpus
 Flag that makes a 64bit dom0 boot in PVH mode. No 32bit support at present.
 
 ### dtuart (ARM)
-> `= path [,options]`
+> `= path [:options]`
 
 > Default: `""`
 
index 04dbb9706a5aab0fc956f800593a940f16af8fdc..695fdaab363e7e8e332b3cca2c23d76cd39b3dbd 100644 (file)
 
 /*
  * Configure UART port with a string:
- * path,options
+ * path:options
  *
  * @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] = "";
+static char __initdata opt_dtuart[256] = "";
 string_param("dtuart", opt_dtuart);
 
 void __init dt_uart_init(void)
@@ -50,7 +50,7 @@ void __init dt_uart_init(void)
         return;
     }
 
-    options = strchr(opt_dtuart, ',');
+    options = strchr(opt_dtuart, ':');
     if ( options != NULL )
         *(options++) = '\0';
     else