[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2 20/33] xen/arm: Add generic UART to get the device in the device tree
On Wed, 2013-05-08 at 16:58 +0100, Julien Grall wrote: > On 05/08/2013 03:01 PM, Ian Campbell wrote: > > > On Wed, 2013-05-08 at 03:33 +0100, Julien Grall wrote: > >> This generic UART will find the right UART via xen command line > >> with dtuart=myserial. > > > > I suppose there way to determine sensible default, since it differs on > > every platform? > > > >> "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@xxxxxxxxxx> > > > > You need to CC code code maintainers when you change core code. Keir > > added. > >> > >> Changes in v2: > >> - Use dtuart parameter instead of com1. The first one is more arm > >> while the latter is more x86 > >> --- > >> xen/arch/arm/setup.c | 3 +- > >> xen/drivers/char/Makefile | 1 + > >> xen/drivers/char/arm-uart.c | 81 > >> ++++++++++++++++++++++++++++++++++++++++++ > >> xen/drivers/char/serial.c | 6 ++++ > >> xen/include/asm-arm/config.h | 2 +- > >> xen/include/xen/serial.h | 7 ++++ > >> 6 files changed, 98 insertions(+), 2 deletions(-) > >> create mode 100644 xen/drivers/char/arm-uart.c > >> > >> diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c > >> index e4228f7..7b2df8b 100644 > >> --- a/xen/arch/arm/setup.c > >> +++ b/xen/arch/arm/setup.c > >> @@ -435,8 +435,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..c76875e > >> --- /dev/null > >> +++ b/xen/drivers/char/arm-uart.c > >> @@ -0,0 +1,81 @@ > >> +/* > >> + * xen/drivers/char/arm-uart.c > >> + * > >> + * Generic ARM uart retrieved via the device tree > >> + * > >> + * Julien Grall <julien.grall@xxxxxxxxxx> > >> + * 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 UART port with a string: > >> + * alias > >> + * > >> + * @alias: alias used in the device tree for the UART > >> + * TODO: Implement config in each UART driver. > >> + */ > >> +static char __initdata opt_dtuart[30] = ""; > >> +string_param("dtuart", opt_dtuart); > >> + > >> +void __init arm_uart_init(void) > > > > This (and the file and struct serial_arm_defaults etc) could perhaps be > > better called dt_uart_init etc? There's nothing inherently ARM specific > > here. > > The FIXMAP_CONSOLE is ARM specific it can not works on x86. I'm > wondering if it's usefull to move FIXMAP_CONSOLE on each UART driver. I think I came to the same conclusion later in the series too, or more likely the uart drivers should use ioremap. > >> + if ( !strncmp(conf, "dtuart", 5) ) > >> + { > >> + handle = SERHND_COM1; > > > > Do you mean COM1 here? Or did you intend to add SERHND_DT? > > I mean COM1, I use the first serial slot for dtuart. I don't really see > why we need to extend the number of serial slot. I just dislike using things with one name for another purpose. Ultimately this bit is up to Keir though. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |