From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Anthony Perard <anthony.perard@citrix.com>,
"patches@linaro.org" <patches@linaro.org>,
Stefano Stabellini <Stefano.Stabellini@eu.citrix.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [RFC 18/29] xen/arm: add generic UART to get the device in the device tree
Date: Mon, 29 Apr 2013 18:24:35 +0100 [thread overview]
Message-ID: <517EACD3.6060107@linaro.org> (raw)
In-Reply-To: <1367250707.3142.360.camel@zakaz.uk.xensource.com>
On 04/29/2013 04:51 PM, Ian Campbell wrote:
> On Mon, 2013-04-29 at 00:02 +0100, Julien Grall wrote:
>> This generic UART will find the right UART via xen command line
>> with com1=myserial.
>>
>> "myserial" is the alias of the UART in the device tree. Xen will retrieve
>> the information via the device tree and call the initialization function for
>> this specific UART thanks to the device API.
>>
>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
>> ---
>> xen/arch/arm/setup.c | 3 +-
>> xen/drivers/char/Makefile | 1 +
>> xen/drivers/char/arm-uart.c | 76 +++++++++++++++++++++++++++++++++++++++++++
>> xen/include/xen/serial.h | 8 +++++
>> 4 files changed, 87 insertions(+), 1 deletion(-)
>> create mode 100644 xen/drivers/char/arm-uart.c
>>
>> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c
>> index 51f4bba..e5d8724 100644
>> --- a/xen/arch/arm/setup.c
>> +++ b/xen/arch/arm/setup.c
>> @@ -434,8 +434,9 @@ void __init start_xen(unsigned long boot_phys_offset,
>> #ifdef EARLY_UART_ADDRESS
>> /* TODO Need to get device tree or command line for UART address */
>> pl011_init(0, FIXMAP_ADDR(FIXMAP_CONSOLE));
>> - console_init_preirq();
>> #endif
>> + arm_uart_init();
>> + console_init_preirq();
>>
>> /* FIXME: Do something smarter */
>> dt_switch_to_printk();
>> diff --git a/xen/drivers/char/Makefile b/xen/drivers/char/Makefile
>> index ab2246d..e68a54a 100644
>> --- a/xen/drivers/char/Makefile
>> +++ b/xen/drivers/char/Makefile
>> @@ -2,4 +2,5 @@ obj-y += console.o
>> obj-$(HAS_NS16550) += ns16550.o
>> obj-$(HAS_PL011) += pl011.o
>> obj-$(HAS_EHCI) += ehci-dbgp.o
>> +obj-$(CONFIG_ARM) += arm-uart.o
>> obj-y += serial.o
>> diff --git a/xen/drivers/char/arm-uart.c b/xen/drivers/char/arm-uart.c
>> new file mode 100644
>> index 0000000..e242ae2
>> --- /dev/null
>> +++ b/xen/drivers/char/arm-uart.c
>> @@ -0,0 +1,76 @@
>> +/*
>> + * xen/drivers/char/arm-uart.c
>> + *
>> + * Generic ARM uart retrieved via the device tree
>> + *
>> + * Julien Grall <julien.grall@linaro.org>
>> + * Copyright (c) 2013 Linaro Limited.
>> + *
>> + * This program is free software; you can redistribute it and/or modify
>> + * it under the terms of the GNU General Public License as published by
>> + * the Free Software Foundation; either version 2 of the License, or
>> + * (at your option) any later version.
>> + *
>> + * This program is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
>> + * GNU General Public License for more details.
>> + */
>> +
>> +#include <asm/device.h>
>> +#include <asm/early_printk.h>
>> +#include <asm/types.h>
>> +#include <xen/console.h>
>> +#include <xen/device_tree.h>
>> +#include <xen/mm.h>
>> +#include <xen/serial.h>
>> +
>> +/*
>> + * Configure serial port with string: devname
>> + * Where devname is the alias of the device in the device tree
>> + */
>> +static char __initdata opt_com1[30] = "";
>> +string_param("com1", opt_com1);
>
> com1 is a bit of an x86-ism. Can we use e.g. uart0 or does common code
> constrain us here?
>
> Better would be to arrange things such that console=myserial does the
> lookup. Then myserial=<foo> sets options for that device.
>
> I think you would need to add a call to dt_console_init to
> console_init_preirq(), in the "Where should console output go?" loop.
I don't see an easy solution with dt_console_init.
serial_parse_handle hardcodes the name of the serial, which only
supports com1, com2, dbgp. Sadly, the serial initialization is made in
the same function.
If I understand your suggestion, you suggest to use console=myserial
where *myserial* is the alias on the DTB, right? In this case the name
could clash with the hardcoded ones in Xen that is not good.
--
Julien
next prev parent reply other threads:[~2013-04-29 17:24 UTC|newest]
Thread overview: 123+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-28 23:01 [RFC 00/29] Support multiple ARM platforms in Xen Julien Grall
2013-04-28 23:01 ` [RFC 01/29] xen/arm: lr must be included in range [0-nr_lr[ Julien Grall
2013-04-29 14:55 ` Ian Campbell
2013-04-29 15:13 ` Julien Grall
2013-04-28 23:01 ` [RFC 02/29] xen/arm: don't allow dom0 to access to vpl011 UART0 memory range Julien Grall
2013-04-29 14:57 ` Ian Campbell
2013-04-29 15:19 ` Julien Grall
2013-04-28 23:01 ` [RFC 03/29] xen/arm: Remove duplicated GICD_ICPIDR2 definition Julien Grall
2013-04-29 14:58 ` Ian Campbell
2013-04-28 23:01 ` [RFC 04/29] xen/arm: Bump early printk internal buffer to 512 Julien Grall
2013-04-29 15:01 ` Ian Campbell
2013-04-29 15:22 ` Julien Grall
2013-04-28 23:01 ` [RFC 05/29] xen/arm: Fix early_panic when EARLY_PRINTK is disabled Julien Grall
2013-04-29 15:01 ` Ian Campbell
2013-04-28 23:01 ` [RFC 06/29] xen/arm: Load dtb after dom0 kernel Julien Grall
2013-04-29 15:07 ` Ian Campbell
2013-04-29 15:29 ` Julien Grall
2013-04-28 23:01 ` [RFC 07/29] xen/arm: Create a hierarchical device tree Julien Grall
2013-04-29 15:19 ` Ian Campbell
2013-04-29 15:32 ` Julien Grall
2013-04-28 23:01 ` [RFC 08/29] xen/arm: Add helpers to use the " Julien Grall
2013-04-29 15:23 ` Ian Campbell
2013-04-29 15:40 ` Julien Grall
2013-04-29 16:55 ` Ian Campbell
2013-04-29 18:23 ` Julien Grall
2013-04-30 9:22 ` Ian Campbell
2013-04-28 23:01 ` [RFC 09/29] xen/arm: Add helpers to retrieve an address from " Julien Grall
2013-04-28 23:01 ` [RFC 10/29] xen/arm: Add helpers to retrieve an interrupt description " Julien Grall
2013-04-29 15:28 ` Ian Campbell
2013-04-29 15:45 ` Julien Grall
2013-04-29 16:56 ` Ian Campbell
2013-04-28 23:01 ` [RFC 11/29] xen/arm: Introduce gic_route_dt_irq Julien Grall
2013-04-29 15:28 ` Ian Campbell
2013-04-28 23:01 ` [RFC 12/29] xen/arm: Introduce gic_irq_xlate Julien Grall
2013-04-29 15:31 ` Ian Campbell
2013-04-29 15:52 ` Julien Grall
2013-04-28 23:01 ` [RFC 13/29] xen/arm: Use hierarchical device tree to retrieve GIC information Julien Grall
2013-04-29 15:35 ` Ian Campbell
2013-04-29 16:30 ` Julien Grall
2013-04-29 20:42 ` Julien Grall
2013-04-30 9:34 ` Ian Campbell
2013-04-30 18:04 ` Julien Grall
2013-05-01 8:14 ` Ian Campbell
2013-04-28 23:01 ` [RFC 14/29] xen/arm: Retrieve timer interrupts from the device tree Julien Grall
2013-04-29 15:38 ` Ian Campbell
2013-04-29 20:23 ` Julien Grall
2013-04-28 23:01 ` [RFC 15/29] xen/arm: Don't hardcode VGIC informations Julien Grall
2013-04-29 15:41 ` Ian Campbell
2013-04-29 16:42 ` Julien Grall
2013-04-30 9:03 ` Ian Campbell
2013-04-28 23:01 ` [RFC 16/29] xen/arm: Introduce a generic way to use a device from the device tree Julien Grall
2013-04-29 15:44 ` Ian Campbell
2013-04-29 16:58 ` Julien Grall
2013-04-28 23:02 ` [RFC 17/29] xen/arm: New callback in uart_driver to get device tree interrupt structure Julien Grall
2013-04-29 15:46 ` Ian Campbell
2013-04-29 17:09 ` Julien Grall
2013-04-30 9:05 ` Ian Campbell
2013-04-28 23:02 ` [RFC 18/29] xen/arm: add generic UART to get the device in the device tree Julien Grall
2013-04-29 15:51 ` Ian Campbell
2013-04-29 17:24 ` Julien Grall [this message]
2013-04-30 9:09 ` Ian Campbell
2013-04-30 11:05 ` Julien Grall
2013-04-30 12:41 ` Ian Campbell
2013-04-30 13:37 ` Julien Grall
2013-04-28 23:02 ` [RFC 19/29] xen/arm: Use device tree API in pl011 UART driver Julien Grall
2013-04-29 15:54 ` Ian Campbell
2013-04-29 17:27 ` Julien Grall
2013-04-28 23:02 ` [RFC 20/29] xen/arm: Use the device tree to map the address range and IRQ to dom0 Julien Grall
2013-04-29 15:59 ` Ian Campbell
2013-04-29 17:30 ` Julien Grall
2013-04-28 23:02 ` [RFC 21/29] xen/arm: WORKAROUND 1:1 memory mapping for dom0 Julien Grall
2013-04-29 16:13 ` Ian Campbell
2013-04-29 17:43 ` Julien Grall
2013-04-30 9:12 ` Ian Campbell
2013-04-28 23:02 ` [RFC 22/29] xen/arm: Allow Xen to run on multiple platform without recompilation Julien Grall
2013-04-29 16:15 ` Ian Campbell
2013-04-29 17:44 ` Julien Grall
2013-05-01 11:51 ` Stefano Stabellini
2013-04-28 23:02 ` [RFC 23/29] xen/arm: Add versatile express platform Julien Grall
2013-04-29 16:27 ` Ian Campbell
2013-04-29 17:52 ` Julien Grall
2013-04-30 9:12 ` Ian Campbell
2013-04-28 23:02 ` [RFC 24/29] xen/arm: Don't use pl011 UART by default for early printk Julien Grall
2013-04-29 16:45 ` Ian Campbell
2013-04-29 18:12 ` Julien Grall
2013-04-30 9:18 ` Ian Campbell
[not found] ` <CAPnVf8zQ-xhOqab5wVWGenJPdcRgwcr9t50EzMT372HSuPupPQ@mail.gmail.com>
2013-04-30 11:21 ` Julien Grall
2013-04-30 12:44 ` Ian Campbell
2013-04-30 13:39 ` Julien Grall
2013-04-30 13:51 ` Ian Campbell
2013-04-30 13:57 ` Julien Grall
2013-04-30 14:09 ` Ian Campbell
2013-04-30 9:00 ` Ian Campbell
2013-04-30 11:24 ` Julien Grall
2013-04-28 23:02 ` [RFC 25/29] xen/arm: Add exynos 4210 UART support Julien Grall
2013-04-29 16:51 ` Ian Campbell
2013-04-29 18:12 ` Anthony PERARD
2013-04-29 18:21 ` Julien Grall
2013-04-30 9:22 ` Ian Campbell
2013-04-28 23:02 ` [RFC 26/29] xen/arm: Add Exynos 4210 UART support for early printk Julien Grall
2013-04-30 9:53 ` Ian Campbell
2013-05-01 17:17 ` Anthony PERARD
2013-05-02 7:58 ` Ian Campbell
2013-05-02 10:51 ` Anthony PERARD
2013-05-01 17:24 ` Anthony PERARD
2013-04-28 23:02 ` [RFC 27/29] xen/arm: Add platform specific code for the exynos5 Julien Grall
2013-04-30 10:00 ` Ian Campbell
2013-04-30 15:40 ` Julien Grall
2013-04-30 15:46 ` Ian Campbell
2013-04-30 16:11 ` Julien Grall
2013-04-28 23:02 ` [RFC 28/29] xen/arm: Support secondary cpus boot and switch to hypervisor " Julien Grall
2013-04-30 10:10 ` Ian Campbell
2013-04-30 11:52 ` Julien Grall
2013-04-28 23:02 ` [RFC 29/29] xen/arm64: Remove hardcoded value for gic in assembly code Julien Grall
2013-04-30 10:11 ` Ian Campbell
2013-04-29 10:17 ` [RFC 00/29] Support multiple ARM platforms in Xen Ian Campbell
2013-04-29 10:33 ` George Dunlap
2013-04-29 12:47 ` Julien Grall
2013-04-29 12:52 ` Ian Campbell
2013-04-29 12:45 ` Julien Grall
2013-04-29 16:13 ` Ian Campbell
2013-04-29 18:20 ` Julien Grall
2013-04-30 9:19 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=517EACD3.6060107@linaro.org \
--to=julien.grall@linaro.org \
--cc=Ian.Campbell@citrix.com \
--cc=Stefano.Stabellini@eu.citrix.com \
--cc=anthony.perard@citrix.com \
--cc=patches@linaro.org \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.