Lines Matching refs:dport
81 struct dz_port dport[DZ_NB_PORT]; member
103 static u16 dz_in(struct dz_port *dport, unsigned offset) in dz_in() argument
105 void __iomem *addr = dport->port.membase + offset; in dz_in()
110 static void dz_out(struct dz_port *dport, unsigned offset, u16 value) in dz_out() argument
112 void __iomem *addr = dport->port.membase + offset; in dz_out()
129 struct dz_port *dport = to_dport(uport); in dz_stop_tx() local
130 u16 tmp, mask = 1 << dport->port.line; in dz_stop_tx()
132 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_stop_tx()
134 dz_out(dport, DZ_TCR, tmp); in dz_stop_tx()
139 struct dz_port *dport = to_dport(uport); in dz_start_tx() local
140 u16 tmp, mask = 1 << dport->port.line; in dz_start_tx()
142 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_start_tx()
144 dz_out(dport, DZ_TCR, tmp); in dz_start_tx()
149 struct dz_port *dport = to_dport(uport); in dz_stop_rx() local
151 dport->cflag &= ~DZ_RXENAB; in dz_stop_rx()
152 dz_out(dport, DZ_LPR, dport->cflag); in dz_stop_rx()
185 struct dz_port *dport = &mux->dport[0]; in dz_receive_chars() local
192 while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) { in dz_receive_chars()
193 dport = &mux->dport[LINE(status)]; in dz_receive_chars()
194 uport = &dport->port; in dz_receive_chars()
246 tty_flip_buffer_push(&mux->dport[i].port.state->port); in dz_receive_chars()
258 struct dz_port *dport = &mux->dport[0]; in dz_transmit_chars() local
263 status = dz_in(dport, DZ_CSR); in dz_transmit_chars()
264 dport = &mux->dport[LINE(status)]; in dz_transmit_chars()
265 xmit = &dport->port.state->xmit; in dz_transmit_chars()
267 if (dport->port.x_char) { /* XON/XOFF chars */ in dz_transmit_chars()
268 dz_out(dport, DZ_TDR, dport->port.x_char); in dz_transmit_chars()
269 dport->port.icount.tx++; in dz_transmit_chars()
270 dport->port.x_char = 0; in dz_transmit_chars()
274 if (uart_circ_empty(xmit) || uart_tx_stopped(&dport->port)) { in dz_transmit_chars()
275 spin_lock(&dport->port.lock); in dz_transmit_chars()
276 dz_stop_tx(&dport->port); in dz_transmit_chars()
277 spin_unlock(&dport->port.lock); in dz_transmit_chars()
287 dz_out(dport, DZ_TDR, tmp); in dz_transmit_chars()
288 dport->port.icount.tx++; in dz_transmit_chars()
291 uart_write_wakeup(&dport->port); in dz_transmit_chars()
295 spin_lock(&dport->port.lock); in dz_transmit_chars()
296 dz_stop_tx(&dport->port); in dz_transmit_chars()
297 spin_unlock(&dport->port.lock); in dz_transmit_chars()
309 static inline void check_modem_status(struct dz_port *dport) in check_modem_status() argument
319 if (dport->port.line != DZ_MODEM) in check_modem_status()
322 status = dz_in(dport, DZ_MSR); in check_modem_status()
326 dport->port.icount.dsr++; in check_modem_status()
340 struct dz_port *dport = &mux->dport[0]; in dz_interrupt() local
344 status = dz_in(dport, DZ_CSR); in dz_interrupt()
366 struct dz_port *dport = to_dport(uport); in dz_get_mctrl() local
369 if (dport->port.line == DZ_MODEM) { in dz_get_mctrl()
370 if (dz_in(dport, DZ_MSR) & DZ_MODEM_DSR) in dz_get_mctrl()
382 struct dz_port *dport = to_dport(uport); in dz_set_mctrl() local
385 if (dport->port.line == DZ_MODEM) { in dz_set_mctrl()
386 tmp = dz_in(dport, DZ_TCR); in dz_set_mctrl()
391 dz_out(dport, DZ_TCR, tmp); in dz_set_mctrl()
404 struct dz_port *dport = to_dport(uport); in dz_startup() local
405 struct dz_mux *mux = dport->mux; in dz_startup()
415 ret = request_irq(dport->port.irq, dz_interrupt, in dz_startup()
419 printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq); in dz_startup()
423 spin_lock_irqsave(&dport->port.lock, flags); in dz_startup()
426 tmp = dz_in(dport, DZ_CSR); in dz_startup()
428 dz_out(dport, DZ_CSR, tmp); in dz_startup()
430 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_startup()
445 struct dz_port *dport = to_dport(uport); in dz_shutdown() local
446 struct dz_mux *mux = dport->mux; in dz_shutdown()
451 spin_lock_irqsave(&dport->port.lock, flags); in dz_shutdown()
452 dz_stop_tx(&dport->port); in dz_shutdown()
453 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_shutdown()
458 tmp = dz_in(dport, DZ_CSR); in dz_shutdown()
460 dz_out(dport, DZ_CSR, tmp); in dz_shutdown()
462 free_irq(dport->port.irq, mux); in dz_shutdown()
480 struct dz_port *dport = to_dport(uport); in dz_tx_empty() local
481 unsigned short tmp, mask = 1 << dport->port.line; in dz_tx_empty()
483 tmp = dz_in(dport, DZ_TCR); in dz_tx_empty()
495 struct dz_port *dport = to_dport(uport); in dz_break_ctl() local
497 unsigned short tmp, mask = 1 << dport->port.line; in dz_break_ctl()
500 tmp = dz_in(dport, DZ_TCR); in dz_break_ctl()
505 dz_out(dport, DZ_TCR, tmp); in dz_break_ctl()
548 static void dz_reset(struct dz_port *dport) in dz_reset() argument
550 struct dz_mux *mux = dport->mux; in dz_reset()
555 dz_out(dport, DZ_CSR, DZ_CLR); in dz_reset()
556 while (dz_in(dport, DZ_CSR) & DZ_CLR); in dz_reset()
560 dz_out(dport, DZ_CSR, DZ_MSE); in dz_reset()
568 struct dz_port *dport = to_dport(uport); in dz_set_termios() local
573 cflag = dport->port.line; in dz_set_termios()
613 spin_lock_irqsave(&dport->port.lock, flags); in dz_set_termios()
617 dz_out(dport, DZ_LPR, cflag); in dz_set_termios()
618 dport->cflag = cflag; in dz_set_termios()
621 dport->port.read_status_mask = DZ_OERR; in dz_set_termios()
623 dport->port.read_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
625 dport->port.read_status_mask |= DZ_BREAK; in dz_set_termios()
630 dport->port.ignore_status_mask |= DZ_OERR; in dz_set_termios()
632 dport->port.ignore_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
634 dport->port.ignore_status_mask |= DZ_BREAK; in dz_set_termios()
636 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_set_termios()
647 struct dz_port *dport = to_dport(uport); in dz_pm() local
650 spin_lock_irqsave(&dport->port.lock, flags); in dz_pm()
652 dz_start_tx(&dport->port); in dz_pm()
654 dz_stop_tx(&dport->port); in dz_pm()
655 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_pm()
717 struct dz_port *dport = to_dport(uport); in dz_config_port() local
725 dz_reset(dport); in dz_config_port()
778 struct dz_port *dport = &dz_mux.dport[line]; in dz_init_ports() local
779 struct uart_port *uport = &dport->port; in dz_init_ports()
781 dport->mux = &dz_mux; in dz_init_ports()
810 struct dz_port *dport = to_dport(uport); in dz_console_putchar() local
815 spin_lock_irqsave(&dport->port.lock, flags); in dz_console_putchar()
816 csr = dz_in(dport, DZ_CSR); in dz_console_putchar()
817 dz_out(dport, DZ_CSR, csr & ~DZ_TIE); in dz_console_putchar()
818 tcr = dz_in(dport, DZ_TCR); in dz_console_putchar()
819 tcr |= 1 << dport->port.line; in dz_console_putchar()
821 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
823 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_console_putchar()
826 trdy = dz_in(dport, DZ_CSR); in dz_console_putchar()
830 if (trdy == dport->port.line) in dz_console_putchar()
833 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
839 dz_out(dport, DZ_TDR, ch); in dz_console_putchar()
841 dz_out(dport, DZ_TCR, tcr); in dz_console_putchar()
842 dz_out(dport, DZ_CSR, csr); in dz_console_putchar()
857 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_print() local
861 uart_console_write(&dport->port, str, count, dz_console_putchar); in dz_console_print()
866 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_setup() local
867 struct uart_port *uport = &dport->port; in dz_console_setup()
878 spin_lock_init(&dport->port.lock); /* For dz_pm(). */ in dz_console_setup()
880 dz_reset(dport); in dz_console_setup()
886 return uart_set_options(&dport->port, co, baud, parity, bits, flow); in dz_console_setup()
943 uart_add_one_port(&dz_reg, &dz_mux.dport[i].port); in dz_init()