serial: zynq: Add support for slow emulation platform

On slow platforms not all baudrate setting is valid.
Check it directly in the driver and setup maximum possible
frequency.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
Michal Simek 2015-04-15 13:05:06 +02:00
parent caacb33fd1
commit 04bc5c939a
1 changed files with 7 additions and 1 deletions

View File

@ -48,10 +48,16 @@ static void uart_zynq_serial_setbrg(const int port)
/* Calculation results. */
unsigned int calc_bauderror, bdiv, bgen;
unsigned long calc_baud = 0;
unsigned long baud = gd->baudrate;
unsigned long baud;
unsigned long clock = get_uart_clk(port);
struct uart_zynq *regs = uart_zynq_ports[port];
/* Covering case where input clock is so slow */
if (clock < 1000000 && gd->baudrate > 4800)
gd->baudrate = 4800;
baud = gd->baudrate;
/* master clock
* Baud rate = ------------------
* bgen * (bdiv + 1)