Work-around a timing problem with the ITE IT8513E now that the core
calls ns8250_bus_ipend() almost immediately after ns8250_bus_attach(). As it appears, a line break condition is being signalled for almost all received characters due to this. A delay of 150ms seems enough to allow the H/W to settle and to avoid the problem. More analysis is needed, but for now a regression has been addressed. Reported by: kevlo@ Tested by: kevlo@
This commit is contained in:
parent
e289e9f2ca
commit
4fc4997535
@ -453,7 +453,19 @@ ns8250_bus_attach(struct uart_softc *sc)
|
||||
ns8250->ier |= ns8250->ier_rxbits;
|
||||
uart_setreg(bas, REG_IER, ns8250->ier);
|
||||
uart_barrier(bas);
|
||||
|
||||
|
||||
/*
|
||||
* Timing of the H/W access was changed with r253161 of uart_core.c
|
||||
* It has been observed that an ITE IT8513E would signal a break
|
||||
* condition with pretty much every character it received, unless
|
||||
* it had enough time to settle between ns8250_bus_attach() and
|
||||
* ns8250_bus_ipend() -- which it accidentally had before r253161.
|
||||
* It's not understood why the UART chip behaves this way and it
|
||||
* could very well be that the DELAY make the H/W work in the same
|
||||
* accidental manner as before. More analysis is warranted, but
|
||||
* at least now we fixed a known regression.
|
||||
*/
|
||||
DELAY(150);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user