1 /* $NetBSD: cyvar.h,v 1.9 2008/03/26 17:50:32 matt Exp $ */ 2 3 /* 4 * cy_var.h 5 * 6 * Driver for Cyclades Cyclom-8/16/32 multiport serial cards 7 * (currently not tested with Cyclom-32 cards) 8 * 9 * Timo Rossi, 1996 10 * 11 * Supports both ISA and PCI Cyclom cards 12 */ 13 14 /* #define CY_DEBUG */ 15 #define CY_DEBUG1 16 17 /* 18 * Maximum number of ports per card 19 */ 20 #define CY_MAX_PORTS (CD1400_NO_OF_CHANNELS * CY_MAX_CD1400s) 21 22 #define CY_RX_FIFO_THRESHOLD 6 23 24 /* 25 * Automatic RTS (or actually DTR, the RTS and DTR lines need to be 26 * exchanged) handshake threshold used if CY_HW_RTS is defined 27 */ 28 #define CY_RX_DTR_THRESHOLD 9 29 30 /* 31 * read/write cd1400 registers (when sc_softc-structure is available) 32 */ 33 #define cd_read_reg(sc,chip,reg) bus_space_read_1(sc->sc_memt, \ 34 sc->sc_bsh, sc->sc_cd1400_offs[chip] + \ 35 (((reg << 1)) << sc->sc_bustype)) 36 37 #define cd_write_reg(sc,chip,reg,val) bus_space_write_1(sc->sc_memt, \ 38 sc->sc_bsh, sc->sc_cd1400_offs[chip] + \ 39 (((reg << 1))<< sc->sc_bustype), (val)) 40 41 /* 42 * ibuf is a simple ring buffer. It is always used two 43 * bytes at a time (status and data) 44 */ 45 #define CY_IBUF_SIZE (2*512) 46 47 /* software state for one port */ 48 struct cy_port { 49 struct cy_softc *cy_softc; 50 int cy_port_num; 51 int cy_chip; 52 int cy_clock; 53 struct tty *cy_tty; 54 int cy_openflags; 55 int cy_fifo_overruns; 56 int cy_ibuf_overruns; 57 u_char cy_channel_control; /* last CCR channel control 58 * command bits */ 59 u_char cy_carrier_stat; /* copied from MSVR2 */ 60 u_char cy_flags; 61 u_char *cy_ibuf, *cy_ibuf_end; 62 u_char *cy_ibuf_rd_ptr, *cy_ibuf_wr_ptr; 63 #ifdef CY_DEBUG1 64 int cy_rx_int_count; 65 int cy_tx_int_count; 66 int cy_modem_int_count; 67 int cy_start_count; 68 #endif /* CY_DEBUG1 */ 69 }; 70 71 #define CY_F_CARRIER_CHANGED 0x01 72 #define CY_F_START_BREAK 0x02 73 #define CY_F_END_BREAK 0x04 74 #define CY_F_STOP 0x08 75 #define CY_F_SEND_NUL 0x10 76 #define CY_F_START 0x20 77 78 /* software state for one card */ 79 struct cy_softc { 80 device_t sc_dev; 81 void *sc_ih; 82 bus_space_tag_t sc_memt; 83 bus_space_handle_t sc_bsh; 84 int sc_bustype; 85 int sc_nchips; /* Number of cd1400's on this card */ 86 int sc_cd1400_offs[CY_MAX_CD1400s]; 87 struct cy_port sc_ports[CY_MAX_PORTS]; 88 int sc_nchannels; /* total number of ports */ 89 #ifdef CY_DEBUG1 90 int sc_poll_count1; 91 int sc_poll_count2; 92 #endif 93 }; 94 95 int cy_find(struct cy_softc *); 96 void cy_attach(struct cy_softc *); 97 int cy_intr(void *); 98