From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH V1 17/29] xen/arm: Mark each device used by Xen as disabled in DOM0 FDT Date: Thu, 29 Aug 2013 13:20:51 +0100 Message-ID: <521F3CA3.9040707@linaro.org> References: <521F2E2E02000030000333EF@soto.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <521F2E2E02000030000333EF@soto.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Bamvor Jian Zhang Cc: stefano.stabellini@eu.citrix.com, patches@linaro.org, ian.campbell@citrix.com, andre.przywara@linaro.org, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 08/29/2013 02:19 AM, Bamvor Jian Zhang wrote: > Hi Julien Hi Bamvor, >> 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 >> Acked-by: Ian Cambell >> --- >> xen/drivers/char/dt-uart.c | 16 ++++++++++------ >> 1 file changed, 10 insertions(+), 6 deletions(-) >> >> diff --git a/xen/drivers/char/dt-uart.c b/xen/drivers/char/dt-uart.c >> index 93bb0f5..d7204fb 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 '/' start an alias, it should be >>From the ePAR (http://www.power.org/resources/downloads/Power_ePAPR_APPROVED_v1.0.pdf) section 3.3: an alias name must match the following pattern: [0-9a-z-]+ So we can't find '/' in the alias. > + if ( *devpath == '/' ) > + dev = dt_find_node_by_alias(devpath); > + else > + dev = dt_find_node_by_path(devpath); A path always start by '/'. With your solution, it won't be possible to get the UART by path. -- Julien Grall