The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/cp/cpddk.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Cronyx Tau-PCI DDK definitions.
    3  *
    4  * Copyright (C) 1999-2003 Cronyx Engineering.
    5  * Author: Serge Vakulenko, <vak@cronyx.ru>
    6  *
    7  * Copyright (C) 2000-2004 Cronyx Engineering.
    8  * Author: Roman Kurakin, <rik@cronyx.ru>
    9  *
   10  * This software is distributed with NO WARRANTIES, not even the implied
   11  * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   12  *
   13  * Authors grant any other persons or organisations a permission to use,
   14  * modify and redistribute this software in source and binary forms,
   15  * as long as this message is kept with the software, all derivative
   16  * works or modified versions.
   17  *
   18  * $Cronyx: cpddk.h,v 1.8.4.20 2004/12/06 16:21:06 rik Exp $
   19  * $FreeBSD: releng/11.1/sys/dev/cp/cpddk.h 180132 2008-06-30 21:18:27Z rik $
   20  */
   21 #define NBRD            6       /* the maximum number of installed boards */
   22 #define NCHAN           4       /* the number of channels on the board */
   23 #define NRBUF           64      /* the number of receive buffers per channel,
   24                                    min 2 */
   25 #define NTBUF           4       /* the number of transmit buffers per channel */
   26 #define BUFSZ           1664    /* i/o buffer size (26*64, min 1601) */
   27 #define QSZ             128     /* intr queue size (multiple of 32, min 32) */
   28 
   29 #ifndef CPDDK_COBF_SAFE
   30 #pragma pack(4)
   31 
   32 typedef struct {
   33         unsigned long bpv;              /* bipolar violations */
   34         unsigned long fse;              /* frame sync errors */
   35         unsigned long crce;             /* CRC errors */
   36         unsigned long rcrce;            /* remote CRC errors (E-bit) */
   37         unsigned long uas;              /* unavailable seconds */
   38         unsigned long les;              /* line errored seconds */
   39         unsigned long es;               /* errored seconds */
   40         unsigned long bes;              /* bursty errored seconds */
   41         unsigned long ses;              /* severely errored seconds */
   42         unsigned long oofs;             /* out of frame seconds */
   43         unsigned long css;              /* controlled slip seconds */
   44         unsigned long dm;               /* degraded minutes */
   45 } cp_gstat_t;
   46 
   47 typedef struct {                        /* cross-connector parameters */
   48         unsigned char ts [32];          /* timeslot number */
   49         unsigned char link [32];        /* E1 link number */
   50 } cp_dxc_t;
   51 
   52 typedef struct {
   53         unsigned long len;              /* data buffer length, fe, hold, hi */
   54 #define DESC_FE         0x80000000
   55 #define DESC_HOLD       0x40000000
   56 #define DESC_HI         0x20000000
   57 #define DESC_LEN(v)     ((v) >> 16 & 0x1fff)
   58 
   59         unsigned long next;             /* next descriptor pointer */
   60         unsigned long data;             /* pointer to data buffer */
   61         unsigned long status;           /* complete, receive abort, fe, len */
   62 #define DESC_RA         0x00000200
   63 #define DESC_C          0x40000000
   64 
   65         unsigned long fe;               /* pointer to frame end descriptor */
   66 } cp_desc_t;
   67 
   68 typedef struct {
   69         cp_desc_t tdesc [NTBUF];        /* transmit buffer descriptors */
   70         cp_desc_t rdesc [NRBUF];        /* receive buffer descriptors */
   71         unsigned char tbuffer [NTBUF] [BUFSZ];  /* transmit buffers */
   72         unsigned char rbuffer [NRBUF] [BUFSZ];  /* receive buffers  */
   73 } cp_buf_t;
   74 
   75 typedef struct {
   76         unsigned long iqrx [NCHAN] [QSZ];       /* rx intr queue */
   77         unsigned long iqtx [NCHAN] [QSZ];       /* tx intr queue */
   78         unsigned long iqlx [QSZ];               /* LBI intr queue */
   79 } cp_qbuf_t;
   80 
   81 typedef struct _cp_chan_t {
   82         unsigned char *regs;    /* base addr of channel registers */
   83         volatile unsigned long *RXBAR, *TXBAR, *CFG;
   84         volatile unsigned long *BRDA, *FRDA, *LRDA, *BTDA, *FTDA, *LTDA;
   85         unsigned char CCR, CSR, GMD, GLS, E1CS, E1CR, E1EPS;
   86 
   87         unsigned char num;              /* channel number, 0..1 */
   88         unsigned char type;             /* channel type */
   89 #define T_NONE          0               /* no channel */
   90 #define T_SERIAL        1               /* V.35/RS */
   91 #define T_G703          2               /* G.703 */
   92 #define T_E1            3               /* E1 */
   93 #define T_E3            4               /* E3 */
   94 #define T_HSSI          5               /* HSSI */
   95 #define T_DATA          6               /* no physical interface */
   96 #define T_T3            7               /* T3 */
   97 #define T_STS1          8               /* STS1 */
   98 
   99         struct _cp_board_t *board;      /* board pointer */
  100 
  101         unsigned char dtr;              /* DTR signal value */
  102         unsigned char rts;              /* RTS signal value */
  103         unsigned long baud;             /* data rate, bps */
  104         unsigned char dpll;             /* dpll mode */
  105         unsigned char nrzi;             /* nrzi mode */
  106         unsigned char invtxc;           /* invert tx clock */
  107         unsigned char invrxc;           /* invert rx clock */
  108         unsigned char lloop;            /* local loopback mode */
  109         unsigned char rloop;            /* remote loopback mode */
  110         unsigned char gsyn;             /* G.703 clock mode */
  111 #define GSYN_INT        0               /* internal transmit clock source */
  112 #define GSYN_RCV        1               /* transmit clock source = receive */
  113 #define GSYN_RCV0       2               /* tclk = rclk from channel 0 */
  114 #define GSYN_RCV1       3               /* ...from channel 1 */
  115 #define GSYN_RCV2       4               /* ...from channel 2 */
  116 #define GSYN_RCV3       5               /* ...from channel 3 */
  117 
  118         unsigned char scrambler;        /* G.703 scrambler enable */
  119 
  120         unsigned long ts;               /* E1 timeslot mask */
  121         unsigned char higain;           /* E1 high gain mode */
  122         unsigned char use16;            /* E1 use ts 16 */
  123         unsigned char crc4;             /* E1 enable CRC4 */
  124         unsigned char phony;            /* E1 phony mode */
  125         unsigned char unfram;           /* E1 unframed mode */
  126         unsigned char monitor;          /* E1 monitoring mode */
  127         unsigned char dir;              /* E1 direction mode */
  128         cp_dxc_t dxc;                   /* E1 cross-connect params */
  129 
  130         unsigned char ais;              /* E3 AIS */
  131         unsigned char losais;           /* E3 AIS on LOS*/
  132         unsigned char ber;              /* E3 BER */
  133         unsigned char cablen;           /* E3 cable length */
  134         unsigned char e3cr1;            /* e3cr1 clone */
  135 
  136         unsigned char scc_ien;          /* SCC Interrupts enabled */
  137         unsigned char ds_ien;           /* DS Interrupts enabled */
  138 
  139         unsigned long imr;
  140         unsigned char ccr;              /* CCR image */
  141         unsigned long ccr0;             /* CCR0 clone */
  142         unsigned long ccr1;             /* CCR1 clone */
  143         unsigned long ccr2;             /* CCR2 clone */
  144         unsigned char gmd;              /* G.703 MDi register image */
  145         unsigned char e1cr;             /* E1 CR register image */
  146         unsigned char ds21x54;          /* new tranceiver flag */
  147 
  148         unsigned long rintr;            /* receive interrupts */
  149         unsigned long tintr;            /* transmit interrupts */
  150         ulong64 ibytes;                 /* input bytes */
  151         ulong64 obytes;                 /* output bytes */
  152         unsigned long ipkts;            /* input packets */
  153         unsigned long opkts;            /* output packets */
  154         unsigned long underrun;         /* output underrun errors */
  155         unsigned long overrun;          /* input overrun errors */
  156         unsigned long frame;            /* input frame errors */
  157         unsigned long crc;              /* input crc errors */
  158 
  159         unsigned short status;          /* E1/G.703 line status bit mask */
  160 #define ESTS_NOALARM    0x0001          /* no alarm present */
  161 #define ESTS_FARLOF     0x0002          /* receiving far loss of framing */
  162 #define ESTS_AIS        0x0008          /* receiving all ones */
  163 #define ESTS_LOF        0x0020          /* loss of framing */
  164 #define ESTS_LOS        0x0040          /* loss of signal */
  165 #define ESTS_AIS16      0x0100          /* receiving all ones in timeslot 16 */
  166 #define ESTS_FARLOMF    0x0200          /* receiving alarm in timeslot 16 */
  167 #define ESTS_LOMF       0x0400          /* loss of multiframe sync */
  168 #define ESTS_TSTREQ     0x0800          /* test code detected */
  169 #define ESTS_TSTERR     0x1000          /* test error */
  170 
  171         unsigned long totsec;           /* total seconds elapsed */
  172         unsigned long cursec;           /* current seconds elapsed */
  173         unsigned long degsec;           /* degraded seconds */
  174         unsigned long degerr;           /* errors during degraded seconds */
  175         cp_gstat_t currnt;              /* current 15-min interval data */
  176         cp_gstat_t total;               /* total statistics data */
  177         cp_gstat_t interval [48];       /* 12 hour period data */
  178         unsigned long e3status;         /* E3 status */
  179 #define E3STS_LOS       0x00000002      /* Lost of synchronization */
  180 #define E3STS_TXE       0x00000004      /* Transmit error */
  181 #define E3STS_AIS       0x00000008      /* Transmit error */
  182         unsigned long e3csec_5;         /* 1/5 of second counter */
  183         unsigned long e3tsec;           /* total seconds coounter */
  184         unsigned long e3ccv;            /* E3 current 15-min cv errors */
  185         unsigned long e3tcv;            /* E3 total cv errors */
  186         unsigned long e3icv[48];        /* E3 12 hour period cv errors */
  187 
  188         unsigned long *iqrx;            /* rx intr queue */
  189         unsigned long *iqtx;            /* tx intr queue */
  190         int irn, itn;
  191 
  192         unsigned char *tbuf [NTBUF];    /* transmit buffers */
  193         cp_desc_t *tdesc;               /* transmit buffer descriptors */
  194         unsigned long tphys [NTBUF];    /* transmit buffer phys address */
  195         unsigned long tdphys [NTBUF];   /* transmit descr phys addresses */
  196         int tn;                         /* first active transmit buffer */
  197         int te;                         /* first empty transmit buffer */
  198 
  199         unsigned char *rbuf [NRBUF];    /* receive buffers */
  200         cp_desc_t *rdesc;               /* receive buffer descriptors */
  201         unsigned long rphys [NRBUF];    /* receive buffer phys address */
  202         unsigned long rdphys [NRBUF];   /* receive descr phys addresses */
  203         int rn;                         /* first active receive buffer */
  204 
  205         void *tag [NTBUF];              /* system dependent data per buffer */
  206         void *sys;                      /* system dependent data per channel */
  207         unsigned char debug;            /* debug level, 0..2 */
  208         unsigned char debug_shadow;     /* debug shadow */
  209 
  210         void (*transmit) (struct _cp_chan_t *c, void *tag, int len);
  211         void (*receive) (struct _cp_chan_t *c, unsigned char *data, int len);
  212         void (*error) (struct _cp_chan_t *c, int reason);
  213 #define CP_FRAME         1
  214 #define CP_CRC           2
  215 #define CP_UNDERRUN      3
  216 #define CP_OVERRUN       4
  217 #define CP_OVERFLOW      5
  218 } cp_chan_t;
  219 
  220 typedef struct _cp_board_t {
  221         unsigned char *base;            /* base address of adapter registers */
  222         unsigned char num;              /* board number, 0..5 */
  223         unsigned char type;             /* board type Tau/TauE1/TauG703 */
  224 #define B_TAUPCI        1               /* 2 channels V.35/RS */
  225 #define B_TAUPCI_E3     2               /* 1 channel E3 */
  226 #define B_TAUPCI_HSSI   3               /* 1 channel HSSI */
  227 #define B_TAUPCI_G703   4               /* 2 channels G703 */
  228 #define B_TAUPCI_E1     5               /* 2 channels E1 */
  229 #define B_TAUPCI4       6               /* 4 channels V.35/RS */
  230 #define B_TAUPCI4_G703  7               /* 2 channels G.703 + 2 channels V.35/RS */
  231 #define B_TAUPCI4_4G703 8               /* 4 channels G.703 */
  232 #define B_TAUPCI_2E1    9               /* 2 channels E1, 4 data ports */
  233 #define B_TAUPCI4_E1    10              /* 2 channels E1 + 2 channels V.35/RS */
  234 #define B_TAUPCI4_4E1   11              /* 4 channels E1 */
  235 #define B_TAUPCI_L      12              /* 1 channel V.35/RS */
  236 
  237         unsigned long osc;              /* oscillator frequency */
  238         char name[16];                  /* board version name */
  239         cp_chan_t chan[NCHAN];          /* channel structures */
  240         unsigned char mux;              /* E1 mux mode */
  241         unsigned char dxc_cas;          /* CAS cross-connection */
  242         unsigned char bcr;              /* BCR image */
  243         unsigned char e1cfg;            /* E1 CFG register image */
  244         unsigned char gpidle;           /* idle bits of gp port */
  245         unsigned char E1DATA;
  246         unsigned long intr;             /* interrupt counter */
  247         unsigned long *iqlx;            /* LBI intr queue */
  248         int iln;
  249         unsigned char fw_type;          /* firmware type */
  250 #define FW_TAUPCI_NONE  0
  251 #define FW_TAUPCI_E3_B  1
  252 #define FW_TAUPCI_2E1_B 2
  253 #define FW_TAUPCI_2E1_A 3
  254 #define FW_TAUPCI_4E1_B 6
  255 #define FW_TAUPCI_4E1_A 7
  256         unsigned char *firmware[8];     /* external firmware */
  257         void *sys;
  258 } cp_board_t;
  259 
  260 #pragma pack()
  261 
  262 /* PCI device identifiers. */
  263 extern unsigned short cp_vendor_id;
  264 extern unsigned short cp_device_id;
  265 
  266 /* Initialization. */
  267 unsigned short cp_init (cp_board_t *b, int num, unsigned char *base);
  268 void cp_reset (cp_board_t *b, cp_qbuf_t *buf, unsigned long phys);
  269 void cp_hard_reset (cp_board_t *b);
  270 unsigned long cp_regio (cp_chan_t *c, int op, int reg, unsigned long val);
  271 #define REGIO_INB               0
  272 #define REGIO_IN                1
  273 #define REGIO_INS               2
  274 #define REGIO_INX               3
  275 #define REGIO_INB_OUTB          4
  276 #define REGIO_OUTB              5
  277 #define REGIO_OUTX              6
  278 #define REGIO_R_W               7
  279 #define REGIO_OUT_IN            8
  280 #define REGIO_OUTB_INB          9
  281 
  282 /* Callback registration. */
  283 void cp_register_transmit (cp_chan_t *c, void (*func) (cp_chan_t*, void*, int));
  284 void cp_register_receive (cp_chan_t *c, void (*func) (cp_chan_t*,
  285                                                         unsigned char*, int));
  286 void cp_register_error (cp_chan_t *c, void (*func) (cp_chan_t*, int));
  287 
  288 /* Data transmittion. */
  289 void cp_start_chan (cp_chan_t *c, int tx, int rx, cp_buf_t *cb, unsigned long phys);
  290 void cp_stop_chan (cp_chan_t *c);
  291 void cp_start_e1 (cp_chan_t *c);
  292 void cp_stop_e1 (cp_chan_t *c);
  293 int cp_transmit_space (cp_chan_t *c);
  294 int cp_send_packet (cp_chan_t *c, unsigned char *data, int len, void *tag);
  295 
  296 /* Interrupt control. */
  297 int cp_interrupt (cp_board_t *b);
  298 int cp_interrupt_poll (cp_board_t *b, int ack);
  299 void cp_handle_interrupt (cp_board_t *b);
  300 void cp_enable_interrupt (cp_board_t *b, int on);
  301 
  302 /* G.703 timer. */
  303 void cp_g703_timer (cp_chan_t *c);
  304 
  305 /* E1 timer. */
  306 void cp_e1_timer (cp_chan_t *c);
  307 
  308 /* E3 timer. */
  309 void cp_e3_timer (cp_chan_t *c);
  310 
  311 /* LED control. */
  312 void cp_led (cp_board_t *b, int on);
  313 
  314 /* Modem signals. */
  315 void cp_set_dtr (cp_chan_t *c, int on);
  316 void cp_set_rts (cp_chan_t *c, int on);
  317 int cp_get_dsr (cp_chan_t *c);
  318 int cp_get_cd (cp_chan_t *c);
  319 int cp_get_cts (cp_chan_t *c);
  320 int cp_get_txcerr (cp_chan_t *c);
  321 int cp_get_rxcerr (cp_chan_t *c);
  322 
  323 /* HDLC parameters. */
  324 void cp_set_baud (cp_chan_t *c, int baud);
  325 void cp_set_dpll (cp_chan_t *c, int on);
  326 void cp_set_nrzi (cp_chan_t *c, int on);
  327 void cp_set_invtxc (cp_chan_t *c, int on);
  328 void cp_set_invrxc (cp_chan_t *c, int on);
  329 void cp_set_lloop (cp_chan_t *c, int on);
  330 
  331 /* Channel status, cable type. */
  332 int cp_get_rloop (cp_chan_t *c);
  333 int cp_get_lq (cp_chan_t *c);
  334 int cp_get_cable (cp_chan_t *c);
  335 #define CABLE_RS232             0
  336 #define CABLE_V35               1
  337 #define CABLE_RS530             2
  338 #define CABLE_X21               3
  339 #define CABLE_RS485             4
  340 #define CABLE_NOT_ATTACHED      9
  341 #define CABLE_COAX              10
  342 #define CABLE_TP                11
  343 
  344 /* E1/G.703 parameters. */
  345 void cp_set_gsyn (cp_chan_t *c, int syn);
  346 void cp_set_ts (cp_chan_t *c, unsigned long ts);
  347 void cp_set_dir (cp_chan_t *c, int dir);
  348 void cp_set_mux (cp_board_t *b, int on);
  349 void cp_dxc_cas_enable (cp_board_t *b, int on);
  350 void cp_set_dxc (cp_chan_t *c, cp_dxc_t *param);
  351 void cp_set_higain (cp_chan_t *c, int on);
  352 void cp_set_use16 (cp_chan_t *c, int on);
  353 void cp_set_crc4 (cp_chan_t *c, int on);
  354 void cp_set_phony (cp_chan_t *c, int on);
  355 void cp_set_unfram (cp_chan_t *c, int on);
  356 void cp_set_scrambler (cp_chan_t *c, int on);
  357 void cp_set_monitor (cp_chan_t *c, int on);
  358 
  359 /* E3 parameters. */
  360 void cp_set_rloop (cp_chan_t *c, int on);
  361 void cp_set_ber (cp_chan_t *c, int on);
  362 void cp_set_cablen (cp_chan_t *c, int on);
  363 void cp_set_losais (cp_chan_t *c, int on);
  364 
  365 #endif /* CPDDK_COBF_SAFE */

Cache object: 0a8752ee5a9dc808203036ddb17bd5bf


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.