[U-Boot] [PATCH 2/2] serial: uartlite: Init all uartlites for serial multi
Stephan Linz
linz at li-pro.net
Tue Aug 7 23:15:27 CEST 2012
Am Dienstag, den 07.08.2012, 14:20 +0200 schrieb Michal Simek:
> Initialize all possible uartlites and return the first
> initialized port. For static configuration is initialization
> done in userial_ports array.
>
> Signed-off-by: Michal Simek <monstr at monstr.eu>
Acked-by: Stephan Linz <linz at li-pro.net>
Tested with AXI system on Avnet S6LX9 micro-evaluation.
> ---
> drivers/serial/serial_xuartlite.c | 34 +++++++++++++++++++---------------
> 1 files changed, 19 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/serial/serial_xuartlite.c b/drivers/serial/serial_xuartlite.c
> index 3a38f9e..2bdb68b 100644
> --- a/drivers/serial/serial_xuartlite.c
> +++ b/drivers/serial/serial_xuartlite.c
> @@ -89,11 +89,17 @@ int uartlite_serial_tstc(const int port)
> return in_be32(®s->status) & SR_RX_FIFO_VALID_DATA;
> }
>
> +static int uartlite_serial_init(const int port)
> +{
> + if (userial_ports[port])
> + return 0;
> + return -1;
> +}
> +
> #if !defined(CONFIG_SERIAL_MULTI)
> int serial_init(void)
> {
> - /* FIXME: Nothing for now. We should initialize fifo, etc */
> - return 0;
> + return uartlite_serial_init(0);
> }
>
> void serial_setbrg(void)
> @@ -126,7 +132,7 @@ int serial_tstc(void)
> /* Multi serial device functions */
> #define DECLARE_ESERIAL_FUNCTIONS(port) \
> int userial##port##_init(void) \
> - { return(0); } \
> + { return uartlite_serial_init(port); } \
> void userial##port##_setbrg(void) {} \
> int userial##port##_getc(void) \
> { return uartlite_serial_getc(port); } \
> @@ -163,17 +169,15 @@ struct serial_device uartlite_serial3_device =
>
> __weak struct serial_device *default_serial_console(void)
> {
> -# ifdef XILINX_UARTLITE_BASEADDR
> - return &uartlite_serial0_device;
> -# endif /* XILINX_UARTLITE_BASEADDR */
> -# ifdef XILINX_UARTLITE_BASEADDR1
> - return &uartlite_serial1_device;
> -# endif /* XILINX_UARTLITE_BASEADDR1 */
> -# ifdef XILINX_UARTLITE_BASEADDR2
> - return &uartlite_serial2_device;
> -# endif /* XILINX_UARTLITE_BASEADDR2 */
> -# ifdef XILINX_UARTLITE_BASEADDR3
> - return &uartlite_serial3_device;
> -# endif /* XILINX_UARTLITE_BASEADDR3 */
> + if (userial_ports[0])
> + return &uartlite_serial0_device;
> + if (userial_ports[1])
> + return &uartlite_serial1_device;
> + if (userial_ports[2])
> + return &uartlite_serial2_device;
> + if (userial_ports[3])
> + return &uartlite_serial3_device;
> +
> + return NULL;
> }
> #endif /* CONFIG_SERIAL_MULTI */
More information about the U-Boot
mailing list