Lines Matching full: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 tport = &dport->port.state->port; 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_tx_stopped(&dport->port) || in dz_transmit_chars()
271 !uart_fifo_get(&dport->port, &tmp)) { in dz_transmit_chars()
272 uart_port_lock(&dport->port); in dz_transmit_chars()
273 dz_stop_tx(&dport->port); in dz_transmit_chars()
274 uart_port_unlock(&dport->port); in dz_transmit_chars()
282 dz_out(dport, DZ_TDR, tmp); in dz_transmit_chars()
285 uart_write_wakeup(&dport->port); in dz_transmit_chars()
289 uart_port_lock(&dport->port); in dz_transmit_chars()
290 dz_stop_tx(&dport->port); in dz_transmit_chars()
291 uart_port_unlock(&dport->port); in dz_transmit_chars()
303 static inline void check_modem_status(struct dz_port *dport) in check_modem_status() argument
313 if (dport->port.line != DZ_MODEM) in check_modem_status()
316 status = dz_in(dport, DZ_MSR); in check_modem_status()
320 dport->port.icount.dsr++; in check_modem_status()
334 struct dz_port *dport = &mux->dport[0]; in dz_interrupt() local
338 status = dz_in(dport, DZ_CSR); in dz_interrupt()
360 struct dz_port *dport = to_dport(uport); in dz_get_mctrl() local
363 if (dport->port.line == DZ_MODEM) { in dz_get_mctrl()
364 if (dz_in(dport, DZ_MSR) & DZ_MODEM_DSR) in dz_get_mctrl()
376 struct dz_port *dport = to_dport(uport); in dz_set_mctrl() local
379 if (dport->port.line == DZ_MODEM) { in dz_set_mctrl()
380 tmp = dz_in(dport, DZ_TCR); in dz_set_mctrl()
385 dz_out(dport, DZ_TCR, tmp); in dz_set_mctrl()
398 struct dz_port *dport = to_dport(uport); in dz_startup() local
399 struct dz_mux *mux = dport->mux; in dz_startup()
409 ret = request_irq(dport->port.irq, dz_interrupt, in dz_startup()
413 printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq); in dz_startup()
417 uart_port_lock_irqsave(&dport->port, &flags); in dz_startup()
420 tmp = dz_in(dport, DZ_CSR); in dz_startup()
422 dz_out(dport, DZ_CSR, tmp); in dz_startup()
424 uart_port_unlock_irqrestore(&dport->port, flags); in dz_startup()
439 struct dz_port *dport = to_dport(uport); in dz_shutdown() local
440 struct dz_mux *mux = dport->mux; in dz_shutdown()
445 uart_port_lock_irqsave(&dport->port, &flags); in dz_shutdown()
446 dz_stop_tx(&dport->port); in dz_shutdown()
447 uart_port_unlock_irqrestore(&dport->port, flags); in dz_shutdown()
452 tmp = dz_in(dport, DZ_CSR); in dz_shutdown()
454 dz_out(dport, DZ_CSR, tmp); in dz_shutdown()
456 free_irq(dport->port.irq, mux); in dz_shutdown()
474 struct dz_port *dport = to_dport(uport); in dz_tx_empty() local
475 unsigned short tmp, mask = 1 << dport->port.line; in dz_tx_empty()
477 tmp = dz_in(dport, DZ_TCR); in dz_tx_empty()
489 struct dz_port *dport = to_dport(uport); in dz_break_ctl() local
491 unsigned short tmp, mask = 1 << dport->port.line; in dz_break_ctl()
494 tmp = dz_in(dport, DZ_TCR); in dz_break_ctl()
499 dz_out(dport, DZ_TCR, tmp); in dz_break_ctl()
542 static void dz_reset(struct dz_port *dport) in dz_reset() argument
544 struct dz_mux *mux = dport->mux; in dz_reset()
549 dz_out(dport, DZ_CSR, DZ_CLR); in dz_reset()
550 while (dz_in(dport, DZ_CSR) & DZ_CLR); in dz_reset()
554 dz_out(dport, DZ_CSR, DZ_MSE); in dz_reset()
562 struct dz_port *dport = to_dport(uport); in dz_set_termios() local
567 cflag = dport->port.line; in dz_set_termios()
610 uart_port_lock_irqsave(&dport->port, &flags); in dz_set_termios()
614 dz_out(dport, DZ_LPR, cflag); in dz_set_termios()
615 dport->cflag = cflag; in dz_set_termios()
618 dport->port.read_status_mask = DZ_OERR; in dz_set_termios()
620 dport->port.read_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
622 dport->port.read_status_mask |= DZ_BREAK; in dz_set_termios()
627 dport->port.ignore_status_mask |= DZ_OERR; in dz_set_termios()
629 dport->port.ignore_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
631 dport->port.ignore_status_mask |= DZ_BREAK; in dz_set_termios()
633 uart_port_unlock_irqrestore(&dport->port, flags); in dz_set_termios()
644 struct dz_port *dport = to_dport(uport); in dz_pm() local
647 uart_port_lock_irqsave(&dport->port, &flags); in dz_pm()
649 dz_start_tx(&dport->port); in dz_pm()
651 dz_stop_tx(&dport->port); in dz_pm()
652 uart_port_unlock_irqrestore(&dport->port, flags); in dz_pm()
714 struct dz_port *dport = to_dport(uport); in dz_config_port() local
722 dz_reset(dport); in dz_config_port()
775 struct dz_port *dport = &dz_mux.dport[line]; in dz_init_ports() local
776 struct uart_port *uport = &dport->port; in dz_init_ports()
778 dport->mux = &dz_mux; in dz_init_ports()
808 struct dz_port *dport = to_dport(uport); in dz_console_putchar() local
813 uart_port_lock_irqsave(&dport->port, &flags); in dz_console_putchar()
814 csr = dz_in(dport, DZ_CSR); in dz_console_putchar()
815 dz_out(dport, DZ_CSR, csr & ~DZ_TIE); in dz_console_putchar()
816 tcr = dz_in(dport, DZ_TCR); in dz_console_putchar()
817 tcr |= 1 << dport->port.line; in dz_console_putchar()
819 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
821 uart_port_unlock_irqrestore(&dport->port, flags); in dz_console_putchar()
824 trdy = dz_in(dport, DZ_CSR); in dz_console_putchar()
828 if (trdy == dport->port.line) in dz_console_putchar()
831 dz_out(dport, DZ_TCR, mask); in dz_console_putchar()
837 dz_out(dport, DZ_TDR, ch); in dz_console_putchar()
839 dz_out(dport, DZ_TCR, tcr); in dz_console_putchar()
840 dz_out(dport, DZ_CSR, csr); in dz_console_putchar()
855 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_print() local
859 uart_console_write(&dport->port, str, count, dz_console_putchar); in dz_console_print()
864 struct dz_port *dport = &dz_mux.dport[co->index]; in dz_console_setup() local
865 struct uart_port *uport = &dport->port; in dz_console_setup()
876 spin_lock_init(&dport->port.lock); /* For dz_pm(). */ in dz_console_setup()
878 dz_reset(dport); in dz_console_setup()
884 return uart_set_options(&dport->port, co, baud, parity, bits, flow); in dz_console_setup()
941 uart_add_one_port(&dz_reg, &dz_mux.dport[i].port); in dz_init()