aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial/pmac_zilog.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-12-28 19:54:33 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2008-12-28 19:54:33 -0500
commit3c92ec8ae91ecf59d88c798301833d7cf83f2179 (patch)
tree08a38cd3523c42bd49882f17cd501fd879e7ca1c /drivers/serial/pmac_zilog.c
parentc4c9f0183b7c4e97836e8fecbb67898b06c47e78 (diff)
parentca9153a3a2a7556d091dfe080e42b0e67881fff6 (diff)
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc
* 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (144 commits) powerpc/44x: Support 16K/64K base page sizes on 44x powerpc: Force memory size to be a multiple of PAGE_SIZE powerpc/32: Wire up the trampoline code for kdump powerpc/32: Add the ability for a classic ppc kernel to be loaded at 32M powerpc/32: Allow __ioremap on RAM addresses for kdump kernel powerpc/32: Setup OF properties for kdump powerpc/32/kdump: Implement crash_setup_regs() using ppc_save_regs() powerpc: Prepare xmon_save_regs for use with kdump powerpc: Remove default kexec/crash_kernel ops assignments powerpc: Make default kexec/crash_kernel ops implicit powerpc: Setup OF properties for ppc32 kexec powerpc/pseries: Fix cpu hotplug powerpc: Fix KVM build on ppc440 powerpc/cell: add QPACE as a separate Cell platform powerpc/cell: fix build breakage with CONFIG_SPUFS disabled powerpc/mpc5200: fix error paths in PSC UART probe function powerpc/mpc5200: add rts/cts handling in PSC UART driver powerpc/mpc5200: Make PSC UART driver update serial errors counters powerpc/mpc5200: Remove obsolete code from mpc5200 MDIO driver powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver ... Fix trivial conflict in drivers/char/Makefile as per Paul's directions
Diffstat (limited to 'drivers/serial/pmac_zilog.c')
-rw-r--r--drivers/serial/pmac_zilog.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/serial/pmac_zilog.c b/drivers/serial/pmac_zilog.c
index 317b061f7641..ad3488504010 100644
--- a/drivers/serial/pmac_zilog.c
+++ b/drivers/serial/pmac_zilog.c
@@ -1383,6 +1383,29 @@ static int pmz_verify_port(struct uart_port *port, struct serial_struct *ser)
1383 return -EINVAL; 1383 return -EINVAL;
1384} 1384}
1385 1385
1386#ifdef CONFIG_CONSOLE_POLL
1387
1388static int pmz_poll_get_char(struct uart_port *port)
1389{
1390 struct uart_pmac_port *uap = (struct uart_pmac_port *)port;
1391
1392 while ((read_zsreg(uap, R0) & Rx_CH_AV) == 0)
1393 udelay(5);
1394 return read_zsdata(uap);
1395}
1396
1397static void pmz_poll_put_char(struct uart_port *port, unsigned char c)
1398{
1399 struct uart_pmac_port *uap = (struct uart_pmac_port *)port;
1400
1401 /* Wait for the transmit buffer to empty. */
1402 while ((read_zsreg(uap, R0) & Tx_BUF_EMP) == 0)
1403 udelay(5);
1404 write_zsdata(uap, c);
1405}
1406
1407#endif
1408
1386static struct uart_ops pmz_pops = { 1409static struct uart_ops pmz_pops = {
1387 .tx_empty = pmz_tx_empty, 1410 .tx_empty = pmz_tx_empty,
1388 .set_mctrl = pmz_set_mctrl, 1411 .set_mctrl = pmz_set_mctrl,
@@ -1400,6 +1423,10 @@ static struct uart_ops pmz_pops = {
1400 .request_port = pmz_request_port, 1423 .request_port = pmz_request_port,
1401 .config_port = pmz_config_port, 1424 .config_port = pmz_config_port,
1402 .verify_port = pmz_verify_port, 1425 .verify_port = pmz_verify_port,
1426#ifdef CONFIG_CONSOLE_POLL
1427 .poll_get_char = pmz_poll_get_char,
1428 .poll_put_char = pmz_poll_put_char,
1429#endif
1403}; 1430};
1404 1431
1405/* 1432/*