Lines Matching refs:dport

77 	struct dz_port		dport[DZ_NB_PORT];  member
99 static u16 dz_in(struct dz_port *dport, unsigned offset) in dz_in() argument
101 void __iomem *addr = dport->port.membase + offset; in dz_in()
106 static void dz_out(struct dz_port *dport, unsigned offset, u16 value) in dz_out() argument
108 void __iomem *addr = dport->port.membase + offset; in dz_out()
125 struct dz_port *dport = to_dport(uport); in dz_stop_tx() local
126 u16 tmp, mask = 1 << dport->port.line; in dz_stop_tx()
128 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_stop_tx()
130 dz_out(dport, DZ_TCR, tmp); in dz_stop_tx()
135 struct dz_port *dport = to_dport(uport); in dz_start_tx() local
136 u16 tmp, mask = 1 << dport->port.line; in dz_start_tx()
138 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_start_tx()
140 dz_out(dport, DZ_TCR, tmp); in dz_start_tx()
145 struct dz_port *dport = to_dport(uport); in dz_stop_rx() local
147 dport->cflag &= ~DZ_RXENAB; in dz_stop_rx()
148 dz_out(dport, DZ_LPR, dport->cflag); in dz_stop_rx()
181 struct dz_port *dport = &mux->dport[0]; in dz_receive_chars() local
188 while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) { in dz_receive_chars()
189 dport = &mux->dport[LINE(status)]; in dz_receive_chars()
190 uport = &dport->port; in dz_receive_chars()
242 tty_flip_buffer_push(&mux->dport[i].port.state->port); in dz_receive_chars()
254 struct dz_port *dport = &mux->dport[0]; in dz_transmit_chars() local
259 status = dz_in(dport, DZ_CSR); in dz_transmit_chars()
260 dport = &mux->dport[LINE(status)]; in dz_transmit_chars()
261 xmit = &dport->port.state->xmit; in dz_transmit_chars()
263 if (dport->port.x_char) { /* XON/XOFF chars */ in dz_transmit_chars()
264 dz_out(dport, DZ_TDR, dport->port.x_char); in dz_transmit_chars()
265 dport->port.icount.tx++; in dz_transmit_chars()
266 dport->port.x_char = 0; in dz_transmit_chars()
270 if (uart_circ_empty(xmit) || uart_tx_stopped(&dport->port)) { in dz_transmit_chars()
271 spin_lock(&dport->port.lock); in dz_transmit_chars()
272 dz_stop_tx(&dport->port); in dz_transmit_chars()
273 spin_unlock(&dport->port.lock); in dz_transmit_chars()
282 dz_out(dport, DZ_TDR, tmp); in dz_transmit_chars()
283 uart_xmit_advance(&dport->port, 1); in dz_transmit_chars()
286 uart_write_wakeup(&dport->port); in dz_transmit_chars()
290 spin_lock(&dport->port.lock); in dz_transmit_chars()
291 dz_stop_tx(&dport->port); in dz_transmit_chars()
292 spin_unlock(&dport->port.lock); in dz_transmit_chars()
304 static inline void check_modem_status(struct dz_port *dport) in check_modem_status() argument
314 if (dport->port.line != DZ_MODEM) in check_modem_status()
317 status = dz_in(dport, DZ_MSR); in check_modem_status()
321 dport->port.icount.dsr++; in check_modem_status()
335 struct dz_port *dport = &mux->dport[0]; in dz_interrupt() local
339 status = dz_in(dport, DZ_CSR); in dz_interrupt()
361 struct dz_port *dport = to_dport(uport); in dz_get_mctrl() local
364 if (dport->port.line == DZ_MODEM) { in dz_get_mctrl()
365 if (dz_in(dport, DZ_MSR) & DZ_MODEM_DSR) in dz_get_mctrl()
377 struct dz_port *dport = to_dport(uport); in dz_set_mctrl() local
380 if (dport->port.line == DZ_MODEM) { in dz_set_mctrl()
381 tmp = dz_in(dport, DZ_TCR); in dz_set_mctrl()
386 dz_out(dport, DZ_TCR, tmp); in dz_set_mctrl()
399 struct dz_port *dport = to_dport(uport); in dz_startup() local
400 struct dz_mux *mux = dport->mux; in dz_startup()
410 ret = request_irq(dport->port.irq, dz_interrupt, in dz_startup()
414 printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq); in dz_startup()
418 spin_lock_irqsave(&dport->port.lock, flags); in dz_startup()
421 tmp = dz_in(dport, DZ_CSR); in dz_startup()
423 dz_out(dport, DZ_CSR, tmp); in dz_startup()
425 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_startup()
440 struct dz_port *dport = to_dport(uport); in dz_shutdown() local
441 struct dz_mux *mux = dport->mux; in dz_shutdown()
446 spin_lock_irqsave(&dport->port.lock, flags); in dz_shutdown()
447 dz_stop_tx(&dport->port); in dz_shutdown()
448 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_shutdown()
453 tmp = dz_in(dport, DZ_CSR); in dz_shutdown()
455 dz_out(dport, DZ_CSR, tmp); in dz_shutdown()
457 free_irq(dport->port.irq, mux); in dz_shutdown()
475 struct dz_port *dport = to_dport(uport); in dz_tx_empty() local
476 unsigned short tmp, mask = 1 << dport->port.line; in dz_tx_empty()
478 tmp = dz_in(dport, DZ_TCR); in dz_tx_empty()
490 struct dz_port *dport = to_dport(uport); in dz_break_ctl() local
492 unsigned short tmp, mask = 1 << dport->port.line; in dz_break_ctl()
495 tmp = dz_in(dport, DZ_TCR); in dz_break_ctl()
500 dz_out(dport, DZ_TCR, tmp); in dz_break_ctl()
543 static void dz_reset(struct dz_port *dport) in dz_reset() argument
545 struct dz_mux *mux = dport->mux; in dz_reset()
550 dz_out(dport, DZ_CSR, DZ_CLR); in dz_reset()
551 while (dz_in(dport, DZ_CSR) & DZ_CLR); in dz_reset()
555 dz_out(dport, DZ_CSR, DZ_MSE); in dz_reset()
563 struct dz_port *dport = to_dport(uport); in dz_set_termios() local
568 cflag = dport->port.line; in dz_set_termios()
611 spin_lock_irqsave(&dport->port.lock, flags); in dz_set_termios()
615 dz_out(dport, DZ_LPR, cflag); in dz_set_termios()
616 dport->cflag = cflag; in dz_set_termios()
619 dport->port.read_status_mask = DZ_OERR; in dz_set_termios()
621 dport->port.read_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
623 dport->port.read_status_mask |= DZ_BREAK; in dz_set_termios()
628 dport->port.ignore_status_mask |= DZ_OERR; in dz_set_termios()
630 dport->port.ignore_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
632 dport->port.ignore_status_mask |= DZ_BREAK; in dz_set_termios()
634 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_set_termios()
645 struct dz_port *dport = to_dport(uport); in dz_pm() local
648 spin_lock_irqsave(&dport->port.lock, flags); in dz_pm()
650 dz_start_tx(&dport->port); in dz_pm()
652 dz_stop_tx(&dport->port); in dz_pm()
653 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_pm()
715 struct dz_port *dport = to_dport(uport); in dz_config_port() local
723 dz_reset(dport); in dz_config_port()
776 struct dz_port *dport = &dz_mux.dport[line]; in dz_init_ports() local
777 struct uart_port *uport = &dport->port; in dz_init_ports()
779 dport->mux = &dz_mux; in dz_init_ports()
809 struct dz_port *dport = to_dport(uport); in dz_console_putchar() local
814 spin_lock_irqsave(&dport->port.lock, flags); in dz_console_putchar()
815 csr = dz_in(dport, DZ_CSR); in dz_console_putchar()
816 dz_out(dport, DZ_CSR, csr & ~DZ_TIE); in dz_console_putchar()
817 tcr = dz_in(dport, DZ_TCR); in dz_console_putchar()
818 tcr |= 1 << dport->port.line; in dz_console_putchar()
820 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
822 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_console_putchar()
825 trdy = dz_in(dport, DZ_CSR); in dz_console_putchar()
829 if (trdy == dport->port.line) in dz_console_putchar()
832 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
838 dz_out(dport, DZ_TDR, ch); in dz_console_putchar()
840 dz_out(dport, DZ_TCR, tcr); in dz_console_putchar()
841 dz_out(dport, DZ_CSR, csr); in dz_console_putchar()
856 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_print() local
860 uart_console_write(&dport->port, str, count, dz_console_putchar); in dz_console_print()
865 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_setup() local
866 struct uart_port *uport = &dport->port; in dz_console_setup()
877 spin_lock_init(&dport->port.lock); /* For dz_pm(). */ in dz_console_setup()
879 dz_reset(dport); in dz_console_setup()
885 return uart_set_options(&dport->port, co, baud, parity, bits, flow); in dz_console_setup()
942 uart_add_one_port(&dz_reg, &dz_mux.dport[i].port); in dz_init()