Lines Matching refs:dport
77 struct dz_port dport[DZ_NB_PORT];
99 static u16 dz_in(struct dz_port *dport, unsigned offset)
101 void __iomem *addr = dport->port.membase + offset;
106 static void dz_out(struct dz_port *dport, unsigned offset, u16 value)
108 void __iomem *addr = dport->port.membase + offset;
125 struct dz_port *dport = to_dport(uport);
126 u16 tmp, mask = 1 << dport->port.line;
128 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */
130 dz_out(dport, DZ_TCR, tmp);
135 struct dz_port *dport = to_dport(uport);
136 u16 tmp, mask = 1 << dport->port.line;
138 tmp = dz_in(dport, DZ_TCR); /* read the TX flag */
140 dz_out(dport, DZ_TCR, tmp);
145 struct dz_port *dport = to_dport(uport);
147 dport->cflag &= ~DZ_RXENAB;
148 dz_out(dport, DZ_LPR, dport->cflag);
181 struct dz_port *dport = &mux->dport[0];
188 while ((status = dz_in(dport, DZ_RBUF)) & DZ_DVAL) {
189 dport = &mux->dport[LINE(status)];
190 uport = &dport->port;
242 tty_flip_buffer_push(&mux->dport[i].port.state->port);
254 struct dz_port *dport = &mux->dport[0];
259 status = dz_in(dport, DZ_CSR);
260 dport = &mux->dport[LINE(status)];
261 xmit = &dport->port.state->xmit;
263 if (dport->port.x_char) { /* XON/XOFF chars */
264 dz_out(dport, DZ_TDR, dport->port.x_char);
265 dport->port.icount.tx++;
266 dport->port.x_char = 0;
270 if (uart_circ_empty(xmit) || uart_tx_stopped(&dport->port)) {
271 spin_lock(&dport->port.lock);
272 dz_stop_tx(&dport->port);
273 spin_unlock(&dport->port.lock);
283 dz_out(dport, DZ_TDR, tmp);
284 dport->port.icount.tx++;
287 uart_write_wakeup(&dport->port);
291 spin_lock(&dport->port.lock);
292 dz_stop_tx(&dport->port);
293 spin_unlock(&dport->port.lock);
305 static inline void check_modem_status(struct dz_port *dport)
315 if (dport->port.line != DZ_MODEM)
318 status = dz_in(dport, DZ_MSR);
322 dport->port.icount.dsr++;
336 struct dz_port *dport = &mux->dport[0];
340 status = dz_in(dport, DZ_CSR);
362 struct dz_port *dport = to_dport(uport);
365 if (dport->port.line == DZ_MODEM) {
366 if (dz_in(dport, DZ_MSR) & DZ_MODEM_DSR)
378 struct dz_port *dport = to_dport(uport);
381 if (dport->port.line == DZ_MODEM) {
382 tmp = dz_in(dport, DZ_TCR);
387 dz_out(dport, DZ_TCR, tmp);
400 struct dz_port *dport = to_dport(uport);
401 struct dz_mux *mux = dport->mux;
411 ret = request_irq(dport->port.irq, dz_interrupt,
415 printk(KERN_ERR "dz: Cannot get IRQ %d!\n", dport->port.irq);
419 spin_lock_irqsave(&dport->port.lock, flags);
422 tmp = dz_in(dport, DZ_CSR);
424 dz_out(dport, DZ_CSR, tmp);
426 spin_unlock_irqrestore(&dport->port.lock, flags);
441 struct dz_port *dport = to_dport(uport);
442 struct dz_mux *mux = dport->mux;
447 spin_lock_irqsave(&dport->port.lock, flags);
448 dz_stop_tx(&dport->port);
449 spin_unlock_irqrestore(&dport->port.lock, flags);
454 tmp = dz_in(dport, DZ_CSR);
456 dz_out(dport, DZ_CSR, tmp);
458 free_irq(dport->port.irq, mux);
476 struct dz_port *dport = to_dport(uport);
477 unsigned short tmp, mask = 1 << dport->port.line;
479 tmp = dz_in(dport, DZ_TCR);
491 struct dz_port *dport = to_dport(uport);
493 unsigned short tmp, mask = 1 << dport->port.line;
496 tmp = dz_in(dport, DZ_TCR);
501 dz_out(dport, DZ_TCR, tmp);
544 static void dz_reset(struct dz_port *dport)
546 struct dz_mux *mux = dport->mux;
551 dz_out(dport, DZ_CSR, DZ_CLR);
552 while (dz_in(dport, DZ_CSR) & DZ_CLR);
556 dz_out(dport, DZ_CSR, DZ_MSE);
564 struct dz_port *dport = to_dport(uport);
569 cflag = dport->port.line;
609 spin_lock_irqsave(&dport->port.lock, flags);
613 dz_out(dport, DZ_LPR, cflag);
614 dport->cflag = cflag;
617 dport->port.read_status_mask = DZ_OERR;
619 dport->port.read_status_mask |= DZ_FERR | DZ_PERR;
621 dport->port.read_status_mask |= DZ_BREAK;
626 dport->port.ignore_status_mask |= DZ_OERR;
628 dport->port.ignore_status_mask |= DZ_FERR | DZ_PERR;
630 dport->port.ignore_status_mask |= DZ_BREAK;
632 spin_unlock_irqrestore(&dport->port.lock, flags);
643 struct dz_port *dport = to_dport(uport);
646 spin_lock_irqsave(&dport->port.lock, flags);
648 dz_start_tx(&dport->port);
650 dz_stop_tx(&dport->port);
651 spin_unlock_irqrestore(&dport->port.lock, flags);
713 struct dz_port *dport = to_dport(uport);
721 dz_reset(dport);
774 struct dz_port *dport = &dz_mux.dport[line];
775 struct uart_port *uport = &dport->port;
777 dport->mux = &dz_mux;
807 struct dz_port *dport = to_dport(uport);
812 spin_lock_irqsave(&dport->port.lock, flags);
813 csr = dz_in(dport, DZ_CSR);
814 dz_out(dport, DZ_CSR, csr & ~DZ_TIE);
815 tcr = dz_in(dport, DZ_TCR);
816 tcr |= 1 << dport->port.line;
818 dz_out(dport, DZ_TCR, mask);
820 spin_unlock_irqrestore(&dport->port.lock, flags);
823 trdy = dz_in(dport, DZ_CSR);
827 if (trdy == dport->port.line)
830 dz_out(dport, DZ_TCR, mask);
836 dz_out(dport, DZ_TDR, ch);
838 dz_out(dport, DZ_TCR, tcr);
839 dz_out(dport, DZ_CSR, csr);
854 struct dz_port *dport = &dz_mux.dport[co->index];
858 uart_console_write(&dport->port, str, count, dz_console_putchar);
863 struct dz_port *dport = &dz_mux.dport[co->index];
864 struct uart_port *uport = &dport->port;
875 spin_lock_init(&dport->port.lock); /* For dz_pm(). */
877 dz_reset(dport);
883 return uart_set_options(&dport->port, co, baud, parity, bits, flow);
940 uart_add_one_port(&dz_reg, &dz_mux.dport[i].port);