|
|
|
@ -72,22 +72,19 @@ static int pl01x_tstc(struct pl01x_regs *regs) |
|
|
|
|
static int pl01x_generic_serial_init(struct pl01x_regs *regs, |
|
|
|
|
enum pl01x_type type) |
|
|
|
|
{ |
|
|
|
|
switch (type) { |
|
|
|
|
case TYPE_PL010: |
|
|
|
|
/* disable everything */ |
|
|
|
|
writel(0, ®s->pl010_cr); |
|
|
|
|
break; |
|
|
|
|
case TYPE_PL011: |
|
|
|
|
#ifdef CONFIG_PL011_SERIAL_FLUSH_ON_INIT |
|
|
|
|
if (type == TYPE_PL011) { |
|
|
|
|
/* Empty RX fifo if necessary */ |
|
|
|
|
if (readl(®s->pl011_cr) & UART_PL011_CR_UARTEN) { |
|
|
|
|
while (!(readl(®s->fr) & UART_PL01x_FR_RXFE)) |
|
|
|
|
readl(®s->dr); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
switch (type) { |
|
|
|
|
case TYPE_PL010: |
|
|
|
|
/* disable everything */ |
|
|
|
|
writel(0, ®s->pl010_cr); |
|
|
|
|
break; |
|
|
|
|
case TYPE_PL011: |
|
|
|
|
/* disable everything */ |
|
|
|
|
writel(0, ®s->pl011_cr); |
|
|
|
|
break; |
|
|
|
|