mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 00:34:20 +08:00
[POWERPC] CPM_UART: Fix non-console transmit
The SMC and SCC hardware transmitter is enabled at the wrong place. Simply writing twice to the non-console port, like $ echo asdf > /dev/ttyCPM1 $ echo asdf > /dev/ttyCPM1 puts the shell into endless uninterruptible sleep, since the transmitter is stopped after the first write, and is not enabled before the shutdown function of the second write. Thus the transmit buffers are never emptied. Signed-off-by: Kalle Pokki <kalle.pokki@iki.fi> Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
621da0f8af
commit
599540a855
@ -195,10 +195,8 @@ static void cpm_uart_start_tx(struct uart_port *port)
|
||||
if (cpm_uart_tx_pump(port) != 0) {
|
||||
if (IS_SMC(pinfo)) {
|
||||
smcp->smc_smcm |= SMCM_TX;
|
||||
smcp->smc_smcmr |= SMCMR_TEN;
|
||||
} else {
|
||||
sccp->scc_sccm |= UART_SCCM_TX;
|
||||
pinfo->sccp->scc_gsmrl |= SCC_GSMRL_ENT;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -421,9 +419,10 @@ static int cpm_uart_startup(struct uart_port *port)
|
||||
/* Startup rx-int */
|
||||
if (IS_SMC(pinfo)) {
|
||||
pinfo->smcp->smc_smcm |= SMCM_RX;
|
||||
pinfo->smcp->smc_smcmr |= SMCMR_REN;
|
||||
pinfo->smcp->smc_smcmr |= (SMCMR_REN | SMCMR_TEN);
|
||||
} else {
|
||||
pinfo->sccp->scc_sccm |= UART_SCCM_RX;
|
||||
pinfo->sccp->scc_gsmrl |= (SCC_GSMRL_ENR | SCC_GSMRL_ENT);
|
||||
}
|
||||
|
||||
if (!(pinfo->flags & FLAG_CONSOLE))
|
||||
|
Loading…
Reference in New Issue
Block a user