Lines Matching defs:zport
138 static u8 read_zsreg(struct zs_port *zport, int reg)
140 void __iomem *control = zport->port.membase + ZS_CHAN_IO_OFFSET;
153 static void write_zsreg(struct zs_port *zport, int reg, u8 value)
155 void __iomem *control = zport->port.membase + ZS_CHAN_IO_OFFSET;
167 static u8 read_zsdata(struct zs_port *zport)
169 void __iomem *data = zport->port.membase +
178 static void write_zsdata(struct zs_port *zport, u8 value)
180 void __iomem *data = zport->port.membase +
192 struct zs_port *zport;
196 zport = &zs_sccs[i / ZS_NUM_CHAN].zport[i % ZS_NUM_CHAN];
198 if (!zport->scc)
202 printk("W%-2d = 0x%02x\t", j, zport->regs[j]);
205 printk("R%-2d = 0x%02x\t", j, read_zsreg(zport, j));
228 static int zs_receive_drain(struct zs_port *zport)
232 while ((read_zsreg(zport, R0) & Rx_CH_AV) && --loops)
233 read_zsdata(zport);
237 static int zs_transmit_drain(struct zs_port *zport, int irq)
239 struct zs_scc *scc = zport->scc;
242 while (!(read_zsreg(zport, R0) & Tx_BUF_EMP) && --loops) {
250 static int zs_line_drain(struct zs_port *zport, int irq)
252 struct zs_scc *scc = zport->scc;
255 while (!(read_zsreg(zport, R1) & ALL_SNT) && --loops) {
264 static void load_zsregs(struct zs_port *zport, u8 *regs, int irq)
267 zs_line_drain(zport, irq);
269 write_zsreg(zport, R3, regs[3] & ~RxENABLE);
270 write_zsreg(zport, R5, regs[5] & ~TxENAB);
271 write_zsreg(zport, R4, regs[4]);
272 write_zsreg(zport, R9, regs[9]);
273 write_zsreg(zport, R1, regs[1]);
274 write_zsreg(zport, R2, regs[2]);
275 write_zsreg(zport, R10, regs[10]);
276 write_zsreg(zport, R14, regs[14] & ~BRENABL);
277 write_zsreg(zport, R11, regs[11]);
278 write_zsreg(zport, R12, regs[12]);
279 write_zsreg(zport, R13, regs[13]);
280 write_zsreg(zport, R14, regs[14]);
281 write_zsreg(zport, R15, regs[15]);
283 write_zsreg(zport, R3, regs[3]);
285 write_zsreg(zport, R5, regs[5]);
306 struct zs_port *zport = to_zport(uport);
307 struct zs_scc *scc = zport->scc;
312 status = read_zsreg(zport, R1);
335 static unsigned int zs_raw_get_mctrl(struct zs_port *zport)
337 struct zs_port *zport_a = &zport->scc->zport[ZS_CHAN_A];
339 return zport != zport_a ? zs_raw_get_ab_mctrl(zport_a, zport) : 0;
342 static unsigned int zs_raw_xor_mctrl(struct zs_port *zport)
344 struct zs_port *zport_a = &zport->scc->zport[ZS_CHAN_A];
348 if (zport == zport_a)
352 mask_b = zport->regs[15];
359 mctrl = zport->mctrl;
362 mctrl |= zs_raw_get_ab_mctrl(zport_a, zport) & mmask;
365 delta = mctrl ^ zport->mctrl;
367 zport->mctrl = mctrl;
374 struct zs_port *zport = to_zport(uport);
375 struct zs_scc *scc = zport->scc;
379 mctrl = zs_raw_get_mctrl(zport);
387 struct zs_port *zport = to_zport(uport);
388 struct zs_scc *scc = zport->scc;
389 struct zs_port *zport_a = &scc->zport[ZS_CHAN_A];
393 if (zport != zport_a) {
406 oldloop = zport->regs[14];
413 zport->regs[14] = newloop;
414 write_zsreg(zport, R14, zport->regs[14]);
419 static void zs_raw_stop_tx(struct zs_port *zport)
421 write_zsreg(zport, R0, RES_Tx_P);
422 zport->tx_stopped = 1;
427 struct zs_port *zport = to_zport(uport);
428 struct zs_scc *scc = zport->scc;
431 zs_raw_stop_tx(zport);
439 struct zs_port *zport = to_zport(uport);
440 struct zs_scc *scc = zport->scc;
443 if (zport->tx_stopped) {
444 zs_transmit_drain(zport, 0);
445 zport->tx_stopped = 0;
446 zs_raw_transmit_chars(zport);
453 struct zs_port *zport = to_zport(uport);
454 struct zs_scc *scc = zport->scc;
455 struct zs_port *zport_a = &scc->zport[ZS_CHAN_A];
458 zport->regs[15] &= ~BRKIE;
459 zport->regs[1] &= ~(RxINT_MASK | TxINT_ENAB);
460 zport->regs[1] |= RxINT_DISAB;
462 if (zport != zport_a) {
472 zport->regs[15] &= ~(DCDIE | CTSIE);
473 zport->regs[1] &= ~EXT_INT_ENAB;
476 if (!(zport->regs[15] & (DCDIE | SYNCIE)))
477 zport->regs[1] &= ~EXT_INT_ENAB;
480 write_zsreg(zport, R15, zport->regs[15]);
481 write_zsreg(zport, R1, zport->regs[1]);
487 struct zs_port *zport = to_zport(uport);
488 struct zs_scc *scc = zport->scc;
489 struct zs_port *zport_a = &scc->zport[ZS_CHAN_A];
491 if (zport == zport_a)
505 zport->regs[15] |= DCDIE | CTSIE;
507 zs_raw_xor_mctrl(zport);
511 write_zsreg(zport, R15, zport->regs[15]);
517 struct zs_port *zport = to_zport(uport);
518 struct zs_scc *scc = zport->scc;
523 zport->regs[5] |= SND_BRK;
525 zport->regs[5] &= ~SND_BRK;
526 write_zsreg(zport, R5, zport->regs[5]);
537 static void zs_receive_chars(struct zs_port *zport)
539 struct uart_port *uport = &zport->port;
540 struct zs_scc *scc = zport->scc;
548 avail = read_zsreg(zport, R0) & Rx_CH_AV;
554 status = read_zsreg(zport, R1) & (Rx_OVR | FRM_ERR | PAR_ERR);
555 ch = read_zsdata(zport);
565 status |= zport->tty_break;
568 zport->tty_break = 0;
573 write_zsreg(zport, R0, ERR_RES);
607 static void zs_raw_transmit_chars(struct zs_port *zport)
609 struct tty_port *tport = &zport->port.state->port;
613 if (zport->port.x_char) {
614 write_zsdata(zport, zport->port.x_char);
615 zport->port.icount.tx++;
616 zport->port.x_char = 0;
621 if (uart_tx_stopped(&zport->port) ||
622 !uart_fifo_get(&zport->port, &ch)) {
623 zs_raw_stop_tx(zport);
628 write_zsdata(zport, ch);
631 uart_write_wakeup(&zport->port);
635 zs_raw_stop_tx(zport);
638 static void zs_transmit_chars(struct zs_port *zport)
640 struct zs_scc *scc = zport->scc;
643 zs_raw_transmit_chars(zport);
647 static void zs_status_handle(struct zs_port *zport, struct zs_port *zport_a)
649 struct uart_port *uport = &zport->port;
650 struct zs_scc *scc = zport->scc;
657 status = read_zsreg(zport, R0);
659 if (zport->regs[15] & BRKIE) {
661 if (brk && !zport->brk) {
664 zport->tty_break = Rx_SYS;
666 zport->tty_break = Rx_BRK;
669 zport->brk = brk;
672 if (zport != zport_a) {
673 delta = zs_raw_xor_mctrl(zport);
678 zport->mctrl & TIOCM_CTS);
681 zport->mctrl & TIOCM_CAR);
694 write_zsreg(zport, R0, RES_EXT_INT);
705 struct zs_port *zport_a = &scc->zport[ZS_CHAN_A];
706 struct zs_port *zport_b = &scc->zport[ZS_CHAN_B];
755 struct zs_port *zport = to_zport(uport);
756 struct zs_scc *scc = zport->scc;
763 ret = request_irq(zport->port.irq, zs_interrupt,
768 zport->port.irq);
776 zs_receive_drain(zport);
779 write_zsreg(zport, R0, ERR_RES);
780 write_zsreg(zport, R0, RES_Tx_P);
782 if (!(zport->regs[1] & EXT_INT_ENAB))
783 write_zsreg(zport, R0, RES_EXT_INT);
786 zport->regs[1] &= ~RxINT_MASK;
787 zport->regs[1] |= RxINT_ALL | TxINT_ENAB | EXT_INT_ENAB;
788 zport->regs[3] |= RxENABLE;
789 zport->regs[15] |= BRKIE;
790 write_zsreg(zport, R1, zport->regs[1]);
791 write_zsreg(zport, R3, zport->regs[3]);
792 write_zsreg(zport, R5, zport->regs[5]);
793 write_zsreg(zport, R15, zport->regs[15]);
796 zport->mctrl = zs_raw_get_mctrl(zport);
797 zport->brk = read_zsreg(zport, R0) & BRK_ABRT;
799 zport->tx_stopped = 1;
808 struct zs_port *zport = to_zport(uport);
809 struct zs_scc *scc = zport->scc;
815 zport->regs[3] &= ~RxENABLE;
816 write_zsreg(zport, R5, zport->regs[5]);
817 write_zsreg(zport, R3, zport->regs[3]);
823 free_irq(zport->port.irq, scc);
827 static void zs_reset(struct zs_port *zport)
829 struct zs_scc *scc = zport->scc;
837 read_zsreg(zport, R0);
839 zs_line_drain(zport, irq);
840 write_zsreg(zport, R9, FHWRES);
842 write_zsreg(zport, R9, 0);
845 load_zsregs(zport, zport->regs, irq);
852 struct zs_port *zport = to_zport(uport);
853 struct zs_scc *scc = zport->scc;
854 struct zs_port *zport_a = &scc->zport[ZS_CHAN_A];
863 zport->regs[3] &= ~RxNBITS_MASK;
864 zport->regs[5] &= ~TxNBITS_MASK;
867 zport->regs[3] |= Rx5;
868 zport->regs[5] |= Tx5;
871 zport->regs[3] |= Rx6;
872 zport->regs[5] |= Tx6;
875 zport->regs[3] |= Rx7;
876 zport->regs[5] |= Tx7;
880 zport->regs[3] |= Rx8;
881 zport->regs[5] |= Tx8;
886 zport->regs[4] &= ~(XCLK_MASK | SB_MASK | PAR_ENA | PAR_EVEN);
888 zport->regs[4] |= SB2;
890 zport->regs[4] |= SB1;
892 zport->regs[4] |= PAR_ENA;
894 zport->regs[4] |= PAR_EVEN;
895 switch (zport->clk_mode) {
897 zport->regs[4] |= X64CLK;
900 zport->regs[4] |= X32CLK;
903 zport->regs[4] |= X16CLK;
906 zport->regs[4] |= X1CLK;
913 uport->uartclk / zport->clk_mode / 4);
915 brg = ZS_BPS_TO_BRG(baud, uport->uartclk / zport->clk_mode);
916 zport->regs[12] = brg & 0xff;
917 zport->regs[13] = (brg >> 8) & 0xff;
937 zport->regs[3] |= RxENABLE;
939 zport->regs[3] &= ~RxENABLE;
941 if (zport != zport_a) {
943 zport->regs[15] |= DCDIE;
945 zport->regs[15] &= ~DCDIE;
947 zport->regs[15] |= CTSIE;
949 zport->regs[15] &= ~CTSIE;
950 zs_raw_xor_mctrl(zport);
954 load_zsregs(zport, zport->regs, irq);
967 struct zs_port *zport = to_zport(uport);
970 zport->regs[5] |= TxENAB;
972 zport->regs[5] &= ~TxENAB;
973 write_zsreg(zport, R5, zport->regs[5]);
1019 struct zs_port *zport = to_zport(uport);
1027 zs_reset(zport);
1033 struct zs_port *zport = to_zport(uport);
1040 if (ser->baud_base != uport->uartclk / zport->clk_mode / 4)
1100 struct zs_port *zport = &zs_sccs[chip].zport[side];
1101 struct uart_port *uport = &zport->port;
1103 zport->scc = &zs_sccs[chip];
1104 zport->clk_mode = 16;
1119 zport->regs[i] = zs_init_regs[i];
1130 struct zs_port *zport = to_zport(uport);
1131 struct zs_scc *scc = zport->scc;
1137 if (zs_transmit_drain(zport, irq))
1138 write_zsdata(zport, ch);
1150 struct zs_port *zport = &zs_sccs[chip].zport[side];
1151 struct zs_scc *scc = zport->scc;
1158 txint = zport->regs[1];
1159 txenb = zport->regs[5];
1161 zport->regs[1] = txint & ~TxINT_ENAB;
1162 write_zsreg(zport, R1, zport->regs[1]);
1165 zport->regs[5] = txenb | TxENAB;
1166 write_zsreg(zport, R5, zport->regs[5]);
1170 uart_console_write(&zport->port, s, count, zs_console_putchar);
1175 zs_line_drain(zport, irq);
1177 zport->regs[5] &= ~TxENAB;
1178 write_zsreg(zport, R5, zport->regs[5]);
1181 zport->regs[1] |= TxINT_ENAB;
1182 write_zsreg(zport, R1, zport->regs[1]);
1185 if (!zport->tx_stopped)
1186 zs_raw_transmit_chars(zport);
1200 struct zs_port *zport = &zs_sccs[chip].zport[side];
1201 struct uart_port *uport = &zport->port;
1212 zs_reset(zport);
1281 struct zs_port *zport = &scc->zport[i % ZS_NUM_CHAN];
1282 struct uart_port *uport = &zport->port;
1284 if (zport->scc)
1297 struct zs_port *zport = &scc->zport[i % ZS_NUM_CHAN];
1298 struct uart_port *uport = &zport->port;
1300 if (zport->scc)