Commit 599540a8 authored by Kalle Pokki's avatar Kalle Pokki Committed by Paul Mackerras

[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: default avatarKalle Pokki <kalle.pokki@iki.fi>
Signed-off-by: default avatarVitaly Bordug <vbordug@ru.mvista.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 621da0f8
...@@ -195,10 +195,8 @@ static void cpm_uart_start_tx(struct uart_port *port) ...@@ -195,10 +195,8 @@ static void cpm_uart_start_tx(struct uart_port *port)
if (cpm_uart_tx_pump(port) != 0) { if (cpm_uart_tx_pump(port) != 0) {
if (IS_SMC(pinfo)) { if (IS_SMC(pinfo)) {
smcp->smc_smcm |= SMCM_TX; smcp->smc_smcm |= SMCM_TX;
smcp->smc_smcmr |= SMCMR_TEN;
} else { } else {
sccp->scc_sccm |= UART_SCCM_TX; 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) ...@@ -421,9 +419,10 @@ static int cpm_uart_startup(struct uart_port *port)
/* Startup rx-int */ /* Startup rx-int */
if (IS_SMC(pinfo)) { if (IS_SMC(pinfo)) {
pinfo->smcp->smc_smcm |= SMCM_RX; pinfo->smcp->smc_smcm |= SMCM_RX;
pinfo->smcp->smc_smcmr |= SMCMR_REN; pinfo->smcp->smc_smcmr |= (SMCMR_REN | SMCMR_TEN);
} else { } else {
pinfo->sccp->scc_sccm |= UART_SCCM_RX; pinfo->sccp->scc_sccm |= UART_SCCM_RX;
pinfo->sccp->scc_gsmrl |= (SCC_GSMRL_ENR | SCC_GSMRL_ENT);
} }
if (!(pinfo->flags & FLAG_CONSOLE)) if (!(pinfo->flags & FLAG_CONSOLE))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment