Lines Matching full:dport
72 struct dz_port dport[DZ_NB_PORT]; member
95 static u16 dz_in(struct dz_port *dport, unsigned offset) in dz_in() argument
97 void __iomem *addr = dport->port.membase + offset; in dz_in()
102 static void dz_out(struct dz_port *dport, unsigned offset, u16 value) in dz_out() argument
104 void __iomem *addr = dport->port.membase + offset; in dz_out()
121 struct dz_port *dport = to_dport(uport); in dz_stop_tx() local
122 u16 tmp, mask = 1 << dport->port.line; in dz_stop_tx()
124 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_stop_tx()
126 dz_out(dport, DZ_TCR, tmp); in dz_stop_tx()
131 struct dz_port *dport = to_dport(uport); in dz_start_tx() local
132 u16 tmp, mask = 1 << dport->port.line; in dz_start_tx()
134 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_start_tx()
136 dz_out(dport, DZ_TCR, tmp); in dz_start_tx()
141 struct dz_port *dport = to_dport(uport); in dz_stop_rx() local
143 dport->cflag &= ~DZ_RXENAB; in dz_stop_rx()
144 dz_out(dport, DZ_LPR, dport->cflag); in dz_stop_rx()
177 struct dz_port *dport = &mux->dport[0]; in dz_receive_chars() local
184 while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) { in dz_receive_chars()
185 dport = &mux->dport[LINE(status)]; in dz_receive_chars()
186 uport = &dport->port; in dz_receive_chars()
238 tty_flip_buffer_push(&mux->dport[i].port.state->port); in dz_receive_chars()
250 struct dz_port *dport = &mux->dport[0]; in dz_transmit_chars() local
255 status = dz_in(dport, DZ_CSR); in dz_transmit_chars()
256 dport = &mux->dport[LINE(status)]; in dz_transmit_chars()
257 tport = &dport->port.state->port; in dz_transmit_chars()
259 if (dport->port.x_char) { /* XON/XOFF chars */ in dz_transmit_chars()
260 dz_out(dport, DZ_TDR, dport->port.x_char); in dz_transmit_chars()
261 dport->port.icount.tx++; in dz_transmit_chars()
262 dport->port.x_char = 0; in dz_transmit_chars()
266 if (uart_tx_stopped(&dport->port) || in dz_transmit_chars()
267 !uart_fifo_get(&dport->port, &tmp)) { in dz_transmit_chars()
268 uart_port_lock(&dport->port); in dz_transmit_chars()
269 dz_stop_tx(&dport->port); in dz_transmit_chars()
270 uart_port_unlock(&dport->port); in dz_transmit_chars()
278 dz_out(dport, DZ_TDR, tmp); in dz_transmit_chars()
281 uart_write_wakeup(&dport->port); in dz_transmit_chars()
285 uart_port_lock(&dport->port); in dz_transmit_chars()
286 dz_stop_tx(&dport->port); in dz_transmit_chars()
287 uart_port_unlock(&dport->port); in dz_transmit_chars()
299 static inline void check_modem_status(struct dz_port *dport) in check_modem_status() argument
309 if (dport->port.line != DZ_MODEM) in check_modem_status()
312 status = dz_in(dport, DZ_MSR); in check_modem_status()
316 dport->port.icount.dsr++; in check_modem_status()
330 struct dz_port *dport = &mux->dport[0]; in dz_interrupt() local
334 status = dz_in(dport, DZ_CSR); in dz_interrupt()
356 struct dz_port *dport = to_dport(uport); in dz_get_mctrl() local
359 if (dport->port.line == DZ_MODEM) { in dz_get_mctrl()
360 if (dz_in(dport, DZ_MSR) & DZ_MODEM_DSR) in dz_get_mctrl()
372 struct dz_port *dport = to_dport(uport); in dz_set_mctrl() local
375 if (dport->port.line == DZ_MODEM) { in dz_set_mctrl()
376 tmp = dz_in(dport, DZ_TCR); in dz_set_mctrl()
381 dz_out(dport, DZ_TCR, tmp); in dz_set_mctrl()
394 struct dz_port *dport = to_dport(uport); in dz_startup() local
395 struct dz_mux *mux = dport->mux; in dz_startup()
405 ret = request_irq(dport->port.irq, dz_interrupt, in dz_startup()
409 printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq); in dz_startup()
413 uart_port_lock_irqsave(&dport->port, &flags); in dz_startup()
416 tmp = dz_in(dport, DZ_CSR); in dz_startup()
418 dz_out(dport, DZ_CSR, tmp); in dz_startup()
420 uart_port_unlock_irqrestore(&dport->port, flags); in dz_startup()
435 struct dz_port *dport = to_dport(uport); in dz_shutdown() local
436 struct dz_mux *mux = dport->mux; in dz_shutdown()
441 uart_port_lock_irqsave(&dport->port, &flags); in dz_shutdown()
442 dz_stop_tx(&dport->port); in dz_shutdown()
443 uart_port_unlock_irqrestore(&dport->port, flags); in dz_shutdown()
448 tmp = dz_in(dport, DZ_CSR); in dz_shutdown()
450 dz_out(dport, DZ_CSR, tmp); in dz_shutdown()
452 free_irq(dport->port.irq, mux); in dz_shutdown()
470 struct dz_port *dport = to_dport(uport); in dz_tx_empty() local
471 unsigned short tmp, mask = 1 << dport->port.line; in dz_tx_empty()
473 tmp = dz_in(dport, DZ_TCR); in dz_tx_empty()
485 struct dz_port *dport = to_dport(uport); in dz_break_ctl() local
487 unsigned short tmp, mask = 1 << dport->port.line; in dz_break_ctl()
490 tmp = dz_in(dport, DZ_TCR); in dz_break_ctl()
495 dz_out(dport, DZ_TCR, tmp); in dz_break_ctl()
538 static void dz_reset(struct dz_port *dport) in dz_reset() argument
540 struct dz_mux *mux = dport->mux; in dz_reset()
547 tcr = dz_in(dport, DZ_TCR); in dz_reset()
550 if (dz_in(dport, DZ_CSR) & DZ_MSE) { in dz_reset()
555 csr = dz_in(dport, DZ_CSR); in dz_reset()
559 dz_out(dport, DZ_TCR, mask); in dz_reset()
566 dz_out(dport, DZ_CSR, DZ_CLR); in dz_reset()
567 while (dz_in(dport, DZ_CSR) & DZ_CLR); in dz_reset()
577 dz_out(dport, DZ_LPR, DZ_B9600 | DZ_CS8 | line); in dz_reset()
580 dz_out(dport, DZ_TCR, tcr); in dz_reset()
583 dz_out(dport, DZ_CSR, DZ_MSE); in dz_reset()
591 struct dz_port *dport = to_dport(uport); in dz_set_termios() local
596 cflag = dport->port.line; in dz_set_termios()
639 uart_port_lock_irqsave(&dport->port, &flags); in dz_set_termios()
643 dz_out(dport, DZ_LPR, cflag); in dz_set_termios()
644 dport->cflag = cflag; in dz_set_termios()
647 dport->port.read_status_mask = DZ_OERR; in dz_set_termios()
649 dport->port.read_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
651 dport->port.read_status_mask |= DZ_BREAK; in dz_set_termios()
656 dport->port.ignore_status_mask |= DZ_OERR; in dz_set_termios()
658 dport->port.ignore_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
660 dport->port.ignore_status_mask |= DZ_BREAK; in dz_set_termios()
662 uart_port_unlock_irqrestore(&dport->port, flags); in dz_set_termios()
721 struct dz_port *dport = to_dport(uport); in dz_config_port() local
729 dz_reset(dport); in dz_config_port()
776 struct dz_port *dport = &dz_mux.dport[line]; in dz_probe() local
777 struct uart_port *uport = &dport->port; in dz_probe()
779 dport->mux = &dz_mux; in dz_probe()
803 struct dz_port *dport = &dz_mux.dport[line]; in dz_remove() local
804 struct uart_port *uport = &dport->port; in dz_remove()
828 struct dz_port *dport = to_dport(uport); in dz_console_putchar() local
833 uart_port_lock_irqsave(&dport->port, &flags); in dz_console_putchar()
834 csr = dz_in(dport, DZ_CSR); in dz_console_putchar()
835 dz_out(dport, DZ_CSR, csr & ~DZ_TIE); in dz_console_putchar()
836 tcr = dz_in(dport, DZ_TCR); in dz_console_putchar()
837 tcr |= 1 << dport->port.line; in dz_console_putchar()
839 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
841 uart_port_unlock_irqrestore(&dport->port, flags); in dz_console_putchar()
844 trdy = dz_in(dport, DZ_CSR); in dz_console_putchar()
848 if (trdy == dport->port.line) in dz_console_putchar()
851 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
857 dz_out(dport, DZ_TDR, ch); in dz_console_putchar()
859 dz_out(dport, DZ_TCR, tcr); in dz_console_putchar()
860 dz_out(dport, DZ_CSR, csr); in dz_console_putchar()
875 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_print() local
879 uart_console_write(&dport->port, str, count, dz_console_putchar); in dz_console_print()
884 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_setup() local
885 struct uart_port *uport = &dport->port; in dz_console_setup()
891 if (!dport->mux) in dz_console_setup()