Lines Matching refs:cy

253 #define	CY_BOARD(cy)		((cy)->cy_softc)  argument
283 struct cy_port *cy; in cyopen() local
287 cy = CY_PORT(dev); in cyopen()
288 if (cy == NULL) in cyopen()
290 sc = CY_BOARD(cy); in cyopen()
293 if (cy->cy_tty == NULL) { in cyopen()
294 if ((cy->cy_tty = tty_alloc()) == NULL) { in cyopen()
298 cy->cy_port_num); in cyopen()
301 tty_attach(cy->cy_tty); in cyopen()
305 tp = cy->cy_tty; in cyopen()
318 if (ISSET(cy->cy_openflags, TIOCFLAG_CLOCAL)) in cyopen()
320 if (ISSET(cy->cy_openflags, TIOCFLAG_CRTSCTS)) in cyopen()
322 if (ISSET(cy->cy_openflags, TIOCFLAG_MDMBUF)) in cyopen()
332 if (cy->cy_ibuf == NULL) { in cyopen()
333 cy->cy_ibuf = malloc(CY_IBUF_SIZE, M_DEVBUF, M_WAITOK); in cyopen()
334 cy->cy_ibuf_end = cy->cy_ibuf + CY_IBUF_SIZE; in cyopen()
337 cy->cy_ibuf_rd_ptr = cy->cy_ibuf_wr_ptr = cy->cy_ibuf; in cyopen()
340 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, in cyopen()
341 cy->cy_port_num & CD1400_CAR_CHAN); in cyopen()
343 cd1400_channel_cmd(sc, cy, CD1400_CCR_CMDRESET); in cyopen()
346 cd_write_reg(sc, cy->cy_chip, CD1400_LIVR, in cyopen()
347 cy->cy_port_num << 3); in cyopen()
349 cy->cy_channel_control = 0; in cyopen()
362 cy_modem_control(sc, cy, TIOCM_RTS, DMBIS); in cyopen()
364 cy->cy_carrier_stat = in cyopen()
365 cd_read_reg(sc, cy->cy_chip, CD1400_MSVR2); in cyopen()
368 cd_write_reg(sc, cy->cy_chip, CD1400_SRER, in cyopen()
372 ISSET(cy->cy_openflags, TIOCFLAG_SOFTCAR) || in cyopen()
374 ISSET(cy->cy_carrier_stat, CD1400_MSVR2_CD)) in cyopen()
407 struct cy_port *cy; in cyclose() local
411 cy = CY_PORT(dev); in cyclose()
412 sc = CY_BOARD(cy); in cyclose()
413 tp = cy->cy_tty; in cyclose()
419 !ISSET(cy->cy_openflags, TIOCFLAG_SOFTCAR)) { in cyclose()
424 cy_modem_control(sc, cy, 0, DMSET); in cyclose()
444 struct cy_port *cy; in cyread() local
447 cy = CY_PORT(dev); in cyread()
448 tp = cy->cy_tty; in cyread()
459 struct cy_port *cy; in cywrite() local
462 cy = CY_PORT(dev); in cywrite()
463 tp = cy->cy_tty; in cywrite()
474 struct cy_port *cy; in cypoll() local
477 cy = CY_PORT(dev); in cypoll()
478 tp = cy->cy_tty; in cypoll()
489 struct cy_port *cy; in cytty() local
491 cy = CY_PORT(dev); in cytty()
493 return (cy->cy_tty); in cytty()
503 struct cy_port *cy; in cyioctl() local
507 cy = CY_PORT(dev); in cyioctl()
508 sc = CY_BOARD(cy); in cyioctl()
509 tp = cy->cy_tty; in cyioctl()
523 SET(cy->cy_flags, CY_F_START_BREAK); in cyioctl()
524 cy_enable_transmitter(sc, cy); in cyioctl()
528 SET(cy->cy_flags, CY_F_END_BREAK); in cyioctl()
529 cy_enable_transmitter(sc, cy); in cyioctl()
533 cy_modem_control(sc, cy, TIOCM_DTR, DMBIS); in cyioctl()
537 cy_modem_control(sc, cy, TIOCM_DTR, DMBIC); in cyioctl()
541 cy_modem_control(sc, cy, *((int *) data), DMSET); in cyioctl()
545 cy_modem_control(sc, cy, *((int *) data), DMBIS); in cyioctl()
549 cy_modem_control(sc, cy, *((int *) data), DMBIC); in cyioctl()
553 *((int *) data) = cy_modem_control(sc, cy, 0, DMGET); in cyioctl()
557 *((int *) data) = cy->cy_openflags | in cyioctl()
567 cy->cy_openflags = *((int *) data) & in cyioctl()
586 struct cy_port *cy; in cystart() local
589 cy = CY_PORT(tp->t_dev); in cystart()
590 sc = cy->cy_softc; in cystart()
595 cy->cy_start_count++; in cystart()
602 cy_enable_transmitter(sc, cy); in cystart()
615 struct cy_port *cy; in cystop() local
618 cy = CY_PORT(tp->t_dev); in cystop()
629 SET(cy->cy_flags, CY_F_STOP); in cystop()
642 struct cy_port *cy; in cyparam() local
646 cy = CY_PORT(tp->t_dev); in cyparam()
647 sc = CY_BOARD(cy); in cyparam()
649 if (t->c_ospeed != 0 && cy_speed(t->c_ospeed, &o_clk_opt, &obpr, cy->cy_clock) < 0) in cyparam()
652 if (t->c_ispeed != 0 && cy_speed(t->c_ispeed, &i_clk_opt, &ibpr, cy->cy_clock) < 0) in cyparam()
658 cy_modem_control(sc, cy, TIOCM_DTR, (t->c_ospeed == 0 ? DMBIC : DMBIS)); in cyparam()
662 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, port & CD1400_CAR_CHAN); in cyparam()
667 cd_write_reg(sc, cy->cy_chip, CD1400_TCOR, o_clk_opt); in cyparam()
668 cd_write_reg(sc, cy->cy_chip, CD1400_TBPR, obpr); in cyparam()
672 cd_write_reg(sc, cy->cy_chip, CD1400_RCOR, i_clk_opt); in cyparam()
673 cd_write_reg(sc, cy->cy_chip, CD1400_RBPR, ibpr); in cyparam()
678 if (opt != cy->cy_channel_control) { in cyparam()
679 cy->cy_channel_control = opt; in cyparam()
680 cd1400_channel_cmd(sc, cy, opt); in cyparam()
713 cd_write_reg(sc, cy->cy_chip, CD1400_COR1, opt); in cyparam()
725 cd_write_reg(sc, cy->cy_chip, CD1400_COR2, in cyparam()
729 cd_write_reg(sc, cy->cy_chip, CD1400_COR3, CY_RX_FIFO_THRESHOLD); in cyparam()
731 cd1400_channel_cmd(sc, cy, CD1400_CCR_CMDCORCHG | in cyparam()
734 cd_write_reg(sc, cy->cy_chip, CD1400_COR4, CD1400_COR4_PFO_EXCEPTION); in cyparam()
735 cd_write_reg(sc, cy->cy_chip, CD1400_COR5, 0); in cyparam()
744 if (cy->cy_clock == CY_CLOCK_60) { in cyparam()
745 cd_write_reg(sc, cy->cy_chip, CD1400_MCOR1, CD1400_MCOR1_CDzd | in cyparam()
748 cd_write_reg(sc, cy->cy_chip, CD1400_MCOR1, CD1400_MCOR1_CDzd); in cyparam()
751 cd_write_reg(sc, cy->cy_chip, CD1400_MCOR2, CD1400_MCOR2_CDod); in cyparam()
758 cd_write_reg(sc, cy->cy_chip, CD1400_RTPR, 2); in cyparam()
775 cy_modem_control(struct cy_softc *sc, struct cy_port *cy, int bits, int howto) in cy_modem_control() argument
777 struct tty *tp = cy->cy_tty; in cy_modem_control()
783 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, in cy_modem_control()
784 cy->cy_port_num & CD1400_CAR_CHAN); in cy_modem_control()
790 if (cy->cy_channel_control & CD1400_CCR_RCVEN) in cy_modem_control()
792 msvr = cd_read_reg(sc, cy->cy_chip, CD1400_MSVR2); in cy_modem_control()
793 if (cy->cy_clock == CY_CLOCK_60) { in cy_modem_control()
794 if (cd_read_reg(sc, cy->cy_chip, CD1400_MSVR1) & in cy_modem_control()
800 if (cd_read_reg(sc, cy->cy_chip, CD1400_MSVR1) & in cy_modem_control()
819 if (cy->cy_clock == CY_CLOCK_60) { in cy_modem_control()
821 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR2, in cy_modem_control()
823 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR1, in cy_modem_control()
827 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR1, in cy_modem_control()
829 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR2, in cy_modem_control()
835 if (cy->cy_clock == CY_CLOCK_60) { in cy_modem_control()
838 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR2, in cy_modem_control()
841 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR1, in cy_modem_control()
846 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR1, in cy_modem_control()
849 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR2, in cy_modem_control()
855 if (cy->cy_clock == CY_CLOCK_60) { in cy_modem_control()
857 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR2, 0); in cy_modem_control()
859 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR1, 0); in cy_modem_control()
862 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR1, 0); in cy_modem_control()
864 cd_write_reg(sc, cy->cy_chip, CD1400_MSVR2, 0); in cy_modem_control()
881 struct cy_port *cy; in cy_poll() local
907 cy = &sc->sc_ports[port]; in cy_poll()
908 if ((tp = cy->cy_tty) == NULL || cy->cy_ibuf == NULL || in cy_poll()
915 while (cy->cy_ibuf_rd_ptr != cy->cy_ibuf_wr_ptr) { in cy_poll()
919 line_stat = cy->cy_ibuf_rd_ptr[0]; in cy_poll()
920 chr = cy->cy_ibuf_rd_ptr[1]; in cy_poll()
942 if ((cy->cy_ibuf_rd_ptr += 2) == in cy_poll()
943 cy->cy_ibuf_end) in cy_poll()
944 cy->cy_ibuf_rd_ptr = cy->cy_ibuf; in cy_poll()
962 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, in cy_poll()
965 if (cy->cy_clock == CY_CLOCK_60) { in cy_poll()
966 if ((cd_read_reg(sc, cy->cy_chip, in cy_poll()
968 cd_write_reg(sc, cy->cy_chip, in cy_poll()
975 if ((cd_read_reg(sc, cy->cy_chip, in cy_poll()
977 cd_write_reg(sc, cy->cy_chip, in cy_poll()
990 if (ISSET(cy->cy_flags, CY_F_CARRIER_CHANGED)) { in cy_poll()
993 CLR(cy->cy_flags, CY_F_CARRIER_CHANGED); in cy_poll()
996 carrier = ((cy->cy_carrier_stat & in cy_poll()
1006 cy_modem_control(sc, cy, in cy_poll()
1016 if (ISSET(cy->cy_flags, CY_F_START)) { in cy_poll()
1017 CLR(cy->cy_flags, CY_F_START); in cy_poll()
1029 if (cy->cy_fifo_overruns) { in cy_poll()
1030 cy->cy_fifo_overruns = 0; in cy_poll()
1038 if (cy->cy_ibuf_overruns) { in cy_poll()
1039 cy->cy_ibuf_overruns = 0; in cy_poll()
1063 struct cy_port *cy; in cy_intr() local
1088 cy = &sc->sc_ports[serv_type >> 3]; in cy_intr()
1091 cy->cy_rx_int_count++; in cy_intr()
1094 buf_p = cy->cy_ibuf_wr_ptr; in cy_intr()
1097 line_stat = cd_read_reg(sc, cy->cy_chip, in cy_intr()
1099 recv_data = cd_read_reg(sc, cy->cy_chip, in cy_intr()
1102 if (cy->cy_tty == NULL || in cy_intr()
1103 !ISSET(cy->cy_tty->t_state, TS_ISOPEN)) in cy_intr()
1111 cy->cy_port_num, line_stat, recv_data); in cy_intr()
1114 cy->cy_fifo_overruns++; in cy_intr()
1118 if (buf_p == cy->cy_ibuf_end) in cy_intr()
1119 buf_p = cy->cy_ibuf; in cy_intr()
1121 if (buf_p == cy->cy_ibuf_rd_ptr) { in cy_intr()
1122 if (buf_p == cy->cy_ibuf) in cy_intr()
1123 buf_p = cy->cy_ibuf_end; in cy_intr()
1125 cy->cy_ibuf_overruns++; in cy_intr()
1129 n_chars = cd_read_reg(sc, cy->cy_chip, in cy_intr()
1133 if (cy->cy_tty == NULL || in cy_intr()
1134 !ISSET(cy->cy_tty->t_state, TS_ISOPEN)) { in cy_intr()
1137 cy->cy_chip, CD1400_RDSR); in cy_intr()
1144 cy->cy_port_num, n_chars); in cy_intr()
1150 cy->cy_chip, CD1400_RDSR); in cy_intr()
1151 if (buf_p == cy->cy_ibuf_end) in cy_intr()
1152 buf_p = cy->cy_ibuf; in cy_intr()
1153 if (buf_p == cy->cy_ibuf_rd_ptr) { in cy_intr()
1154 if (buf_p == cy->cy_ibuf) in cy_intr()
1155 buf_p = cy->cy_ibuf_end; in cy_intr()
1157 cy->cy_ibuf_overruns++; in cy_intr()
1164 cy->cy_ibuf_wr_ptr = buf_p; in cy_intr()
1167 if (ISSET(cy->cy_tty->t_cflag, CRTSCTS)) { in cy_intr()
1170 bf = buf_p - cy->cy_ibuf_rd_ptr; in cy_intr()
1176 if (cy->cy_clock == CY_CLOCK_60) in cy_intr()
1180 cd_write_reg(sc, cy->cy_chip, msvr, 0); in cy_intr()
1186 cd_write_reg(sc, cy->cy_chip, CD1400_RIR, in cy_intr()
1188 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, save_car); in cy_intr()
1200 cy = &sc->sc_ports[serv_type >> 3]; in cy_intr()
1203 cy->cy_modem_int_count++; in cy_intr()
1206 modem_stat = cd_read_reg(sc, cy->cy_chip, CD1400_MSVR2); in cy_intr()
1211 cy->cy_port_num, modem_stat); in cy_intr()
1213 if (ISSET((cy->cy_carrier_stat ^ modem_stat), CD1400_MSVR2_CD)) { in cy_intr()
1214 SET(cy->cy_flags, CY_F_CARRIER_CHANGED); in cy_intr()
1217 cy->cy_carrier_stat = modem_stat; in cy_intr()
1220 cd_write_reg(sc, cy->cy_chip, CD1400_MIR, save_mir & 0x3f); in cy_intr()
1221 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, save_car); in cy_intr()
1235 cy = &sc->sc_ports[serv_type >> 3]; in cy_intr()
1238 cy->cy_tx_int_count++; in cy_intr()
1242 cy->cy_port_num); in cy_intr()
1246 tp = cy->cy_tty; in cy_intr()
1247 if (tp == NULL || ISSET(cy->cy_flags, CY_F_STOP)) in cy_intr()
1251 if (ISSET(cy->cy_flags, CY_F_SEND_NUL)) { in cy_intr()
1252 cd_write_reg(sc, cy->cy_chip, CD1400_TDR, 0); in cy_intr()
1253 cd_write_reg(sc, cy->cy_chip, CD1400_TDR, 0); in cy_intr()
1255 CLR(cy->cy_flags, CY_F_SEND_NUL); in cy_intr()
1269 SET(cy->cy_flags, CY_F_SEND_NUL); in cy_intr()
1272 cd_write_reg(sc, cy->cy_chip, in cy_intr()
1276 cd_write_reg(sc, cy->cy_chip, in cy_intr()
1289 if (ISSET(cy->cy_flags, CY_F_START_BREAK)) { in cy_intr()
1290 cd_write_reg(sc, cy->cy_chip, in cy_intr()
1292 cd_write_reg(sc, cy->cy_chip, in cy_intr()
1294 CLR(cy->cy_flags, CY_F_START_BREAK); in cy_intr()
1296 if (ISSET(cy->cy_flags, CY_F_END_BREAK)) { in cy_intr()
1297 cd_write_reg(sc, cy->cy_chip, in cy_intr()
1299 cd_write_reg(sc, cy->cy_chip, in cy_intr()
1301 CLR(cy->cy_flags, CY_F_END_BREAK); in cy_intr()
1311 cd_write_reg(sc, cy->cy_chip, CD1400_SRER, in cy_intr()
1312 cd_read_reg(sc, cy->cy_chip, CD1400_SRER) in cy_intr()
1314 CLR(cy->cy_flags, CY_F_STOP); in cy_intr()
1318 SET(cy->cy_flags, CY_F_START); in cy_intr()
1322 cd_write_reg(sc, cy->cy_chip, CD1400_TIR, save_tir & 0x3f); in cy_intr()
1323 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, save_car); in cy_intr()
1338 cy_enable_transmitter(struct cy_softc *sc, struct cy_port *cy) in cy_enable_transmitter() argument
1341 cd_write_reg(sc, cy->cy_chip, CD1400_CAR, in cy_enable_transmitter()
1342 cy->cy_port_num & CD1400_CAR_CHAN); in cy_enable_transmitter()
1343 cd_write_reg(sc, cy->cy_chip, CD1400_SRER, in cy_enable_transmitter()
1344 cd_read_reg(sc, cy->cy_chip, CD1400_SRER) | CD1400_SRER_TXRDY); in cy_enable_transmitter()
1352 cd1400_channel_cmd(struct cy_softc *sc, struct cy_port *cy, int cmd) in cd1400_channel_cmd() argument
1357 printf("c1400_channel_cmd cy %p command 0x%x\n", cy, cmd); in cd1400_channel_cmd()
1361 while (cd_read_reg(sc, cy->cy_chip, CD1400_CCR) != 0 && waitcnt-- > 0); in cd1400_channel_cmd()
1367 cd_write_reg(sc, cy->cy_chip, CD1400_CCR, cmd); in cd1400_channel_cmd()