diff options
| author | Michal Simek <monstr@monstr.eu> | 2012-07-02 10:32:18 +0200 | 
|---|---|---|
| committer | Michal Simek <monstr@monstr.eu> | 2012-09-11 09:24:56 +0200 | 
| commit | 25239e12d9059d75c0ac12c26691a00321aad0cc (patch) | |
| tree | 7760580f05dbfb81e0da52092bbb81baea010e4d /drivers/serial/serial_xuartlite.c | |
| parent | 7636ebe1d27b6cf7bf3b64d695ef8f07b7629178 (diff) | |
| download | olio-uboot-2014.01-25239e12d9059d75c0ac12c26691a00321aad0cc.tar.xz olio-uboot-2014.01-25239e12d9059d75c0ac12c26691a00321aad0cc.zip | |
serial: uartlite: Init all uartlites for serial multi
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@monstr.eu>
Acked-by: Stephan Linz <linz@li-pro.net>
Diffstat (limited to 'drivers/serial/serial_xuartlite.c')
| -rw-r--r-- | 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 3a38f9e32..2bdb68ba4 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 */ |