mirror of
https://github.com/u-boot/u-boot.git
synced 2024-12-12 14:23:50 +08:00
serial/serial_arc: add work-around of ISS bug
Explanation is in in-lined comment. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc: Vineet Gupta <vgupta@synopsys.com> Cc: Noam Camus <noamc@ezchip.com> Cc: Tom Rini <trini@ti.com>
This commit is contained in:
parent
6853e6aa77
commit
1d568c7666
@ -39,7 +39,23 @@ static void arc_serial_setbrg(void)
|
||||
|
||||
arc_console_baud = gd->cpu_clk / (gd->baudrate * 4) - 1;
|
||||
writel(arc_console_baud & 0xff, ®s->baudl);
|
||||
|
||||
#ifdef CONFIG_ARC
|
||||
/*
|
||||
* UART ISS(Instruction Set simulator) emulation has a subtle bug:
|
||||
* A existing value of Baudh = 0 is used as a indication to startup
|
||||
* it's internal state machine.
|
||||
* Thus if baudh is set to 0, 2 times, it chokes.
|
||||
* This happens with BAUD=115200 and the formaula above
|
||||
* Until that is fixed, when running on ISS, we will set baudh to !0
|
||||
*/
|
||||
if (gd->arch.running_on_hw)
|
||||
writel((arc_console_baud & 0xff00) >> 8, ®s->baudh);
|
||||
else
|
||||
writel(1, ®s->baudh);
|
||||
#else
|
||||
writel((arc_console_baud & 0xff00) >> 8, ®s->baudh);
|
||||
#endif
|
||||
}
|
||||
|
||||
static int arc_serial_init(void)
|
||||
|
Loading…
Reference in New Issue
Block a user