Lines Matching refs:dport
80 struct dz_port dport[DZ_NB_PORT]; member
102 static u16 dz_in(struct dz_port *dport, unsigned offset) in dz_in() argument
104 void __iomem *addr = dport->port.membase + offset; in dz_in()
109 static void dz_out(struct dz_port *dport, unsigned offset, u16 value) in dz_out() argument
111 void __iomem *addr = dport->port.membase + offset; in dz_out()
128 struct dz_port *dport = to_dport(uport); in dz_stop_tx() local
129 u16 tmp, mask = 1 << dport->port.line; in dz_stop_tx()
131 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_stop_tx()
133 dz_out(dport, DZ_TCR, tmp); in dz_stop_tx()
138 struct dz_port *dport = to_dport(uport); in dz_start_tx() local
139 u16 tmp, mask = 1 << dport->port.line; in dz_start_tx()
141 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */ in dz_start_tx()
143 dz_out(dport, DZ_TCR, tmp); in dz_start_tx()
148 struct dz_port *dport = to_dport(uport); in dz_stop_rx() local
150 dport->cflag &= ~DZ_RXENAB; in dz_stop_rx()
151 dz_out(dport, DZ_LPR, dport->cflag); in dz_stop_rx()
184 struct dz_port *dport = &mux->dport[0]; in dz_receive_chars() local
191 while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) { in dz_receive_chars()
192 dport = &mux->dport[LINE(status)]; in dz_receive_chars()
193 uport = &dport->port; in dz_receive_chars()
245 tty_flip_buffer_push(&mux->dport[i].port.state->port); in dz_receive_chars()
257 struct dz_port *dport = &mux->dport[0]; in dz_transmit_chars() local
262 status = dz_in(dport, DZ_CSR); in dz_transmit_chars()
263 dport = &mux->dport[LINE(status)]; in dz_transmit_chars()
264 xmit = &dport->port.state->xmit; in dz_transmit_chars()
266 if (dport->port.x_char) { /* XON/XOFF chars */ in dz_transmit_chars()
267 dz_out(dport, DZ_TDR, dport->port.x_char); in dz_transmit_chars()
268 dport->port.icount.tx++; in dz_transmit_chars()
269 dport->port.x_char = 0; in dz_transmit_chars()
273 if (uart_circ_empty(xmit) || uart_tx_stopped(&dport->port)) { in dz_transmit_chars()
274 spin_lock(&dport->port.lock); in dz_transmit_chars()
275 dz_stop_tx(&dport->port); in dz_transmit_chars()
276 spin_unlock(&dport->port.lock); in dz_transmit_chars()
286 dz_out(dport, DZ_TDR, tmp); in dz_transmit_chars()
287 dport->port.icount.tx++; in dz_transmit_chars()
290 uart_write_wakeup(&dport->port); in dz_transmit_chars()
294 spin_lock(&dport->port.lock); in dz_transmit_chars()
295 dz_stop_tx(&dport->port); in dz_transmit_chars()
296 spin_unlock(&dport->port.lock); in dz_transmit_chars()
308 static inline void check_modem_status(struct dz_port *dport) in check_modem_status() argument
318 if (dport->port.line != DZ_MODEM) in check_modem_status()
321 status = dz_in(dport, DZ_MSR); in check_modem_status()
325 dport->port.icount.dsr++; in check_modem_status()
339 struct dz_port *dport = &mux->dport[0]; in dz_interrupt() local
343 status = dz_in(dport, DZ_CSR); in dz_interrupt()
365 struct dz_port *dport = to_dport(uport); in dz_get_mctrl() local
368 if (dport->port.line == DZ_MODEM) { in dz_get_mctrl()
369 if (dz_in(dport, DZ_MSR) & DZ_MODEM_DSR) in dz_get_mctrl()
381 struct dz_port *dport = to_dport(uport); in dz_set_mctrl() local
384 if (dport->port.line == DZ_MODEM) { in dz_set_mctrl()
385 tmp = dz_in(dport, DZ_TCR); in dz_set_mctrl()
390 dz_out(dport, DZ_TCR, tmp); in dz_set_mctrl()
403 struct dz_port *dport = to_dport(uport); in dz_startup() local
404 struct dz_mux *mux = dport->mux; in dz_startup()
414 ret = request_irq(dport->port.irq, dz_interrupt, in dz_startup()
418 printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq); in dz_startup()
422 spin_lock_irqsave(&dport->port.lock, flags); in dz_startup()
425 tmp = dz_in(dport, DZ_CSR); in dz_startup()
427 dz_out(dport, DZ_CSR, tmp); in dz_startup()
429 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_startup()
444 struct dz_port *dport = to_dport(uport); in dz_shutdown() local
445 struct dz_mux *mux = dport->mux; in dz_shutdown()
450 spin_lock_irqsave(&dport->port.lock, flags); in dz_shutdown()
451 dz_stop_tx(&dport->port); in dz_shutdown()
452 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_shutdown()
457 tmp = dz_in(dport, DZ_CSR); in dz_shutdown()
459 dz_out(dport, DZ_CSR, tmp); in dz_shutdown()
461 free_irq(dport->port.irq, mux); in dz_shutdown()
479 struct dz_port *dport = to_dport(uport); in dz_tx_empty() local
480 unsigned short tmp, mask = 1 << dport->port.line; in dz_tx_empty()
482 tmp = dz_in(dport, DZ_TCR); in dz_tx_empty()
494 struct dz_port *dport = to_dport(uport); in dz_break_ctl() local
496 unsigned short tmp, mask = 1 << dport->port.line; in dz_break_ctl()
499 tmp = dz_in(dport, DZ_TCR); in dz_break_ctl()
504 dz_out(dport, DZ_TCR, tmp); in dz_break_ctl()
547 static void dz_reset(struct dz_port *dport) in dz_reset() argument
549 struct dz_mux *mux = dport->mux; in dz_reset()
554 dz_out(dport, DZ_CSR, DZ_CLR); in dz_reset()
555 while (dz_in(dport, DZ_CSR) & DZ_CLR); in dz_reset()
559 dz_out(dport, DZ_CSR, DZ_MSE); in dz_reset()
567 struct dz_port *dport = to_dport(uport); in dz_set_termios() local
572 cflag = dport->port.line; in dz_set_termios()
612 spin_lock_irqsave(&dport->port.lock, flags); in dz_set_termios()
616 dz_out(dport, DZ_LPR, cflag); in dz_set_termios()
617 dport->cflag = cflag; in dz_set_termios()
620 dport->port.read_status_mask = DZ_OERR; in dz_set_termios()
622 dport->port.read_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
624 dport->port.read_status_mask |= DZ_BREAK; in dz_set_termios()
629 dport->port.ignore_status_mask |= DZ_OERR; in dz_set_termios()
631 dport->port.ignore_status_mask |= DZ_FERR | DZ_PERR; in dz_set_termios()
633 dport->port.ignore_status_mask |= DZ_BREAK; in dz_set_termios()
635 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_set_termios()
646 struct dz_port *dport = to_dport(uport); in dz_pm() local
649 spin_lock_irqsave(&dport->port.lock, flags); in dz_pm()
651 dz_start_tx(&dport->port); in dz_pm()
653 dz_stop_tx(&dport->port); in dz_pm()
654 spin_unlock_irqrestore(&dport->port.lock, flags); in dz_pm()
716 struct dz_port *dport = to_dport(uport); in dz_config_port() local
724 dz_reset(dport); in dz_config_port()
777 struct dz_port *dport = &dz_mux.dport[line]; in dz_init_ports() local
778 struct uart_port *uport = &dport->port; in dz_init_ports()
780 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()