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/ce/ceddk.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  * Middle-level code for Cronyx Tau32-PCI adapters.
    3  *
    4  * Copyright (C) 2004 Cronyx Engineering
    5  * Copyright (C) 2004 Roman Kurakin <rik@FreeBSD.org>
    6  *
    7  * This software is distributed with NO WARRANTIES, not even the implied
    8  * warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    9  *
   10  * Authors grant any other persons or organisations a permission to use,
   11  * modify and redistribute this software in source and binary forms,
   12  * as long as this message is kept with the software, all derivative
   13  * works or modified versions.
   14  *
   15  * $Cronyx: ceddk.h,v 1.2.6.1 2005/11/09 13:01:39 rik Exp $
   16  * $FreeBSD: releng/9.0/sys/dev/ce/ceddk.h 180132 2008-06-30 21:18:27Z rik $
   17  */
   18 
   19 #define TAU32_UserContext_Add   void    *sys;
   20 #define TAU32_UserRequest_Add   void    *sys; TAU32_UserRequest *next;
   21 
   22 #include <dev/ce/tau32-ddk.h>
   23 
   24 #define NCHAN   TAU32_CHANNELS
   25 #ifndef NBRD
   26 #   define NBRD 6
   27 #endif
   28 #if NBRD != 6
   29 #   error "NBRD != 6"
   30 #endif
   31 
   32 #define BUFSZ   1664
   33 
   34 typedef struct _ce_buf_item_t {
   35         TAU32_UserRequest req;
   36         unsigned char buf [BUFSZ+4];
   37         unsigned long phys;
   38 } ce_buf_item_t;
   39 
   40 typedef struct _ce_buf_t {
   41         ce_buf_item_t tx_item[TAU32_IO_QUEUE];
   42         ce_buf_item_t rx_item[TAU32_IO_QUEUE];
   43 } ce_buf_t;
   44 
   45 typedef struct {
   46         unsigned long bpv;              /* bipolar violations */
   47         unsigned long fse;              /* frame sync errors */
   48         unsigned long crce;             /* CRC errors */
   49         unsigned long rcrce;            /* remote CRC errors (E-bit) */
   50         unsigned long uas;              /* unavailable seconds */
   51         unsigned long les;              /* line errored seconds */
   52         unsigned long es;               /* errored seconds */
   53         unsigned long bes;              /* bursty errored seconds */
   54         unsigned long ses;              /* severely errored seconds */
   55         unsigned long oofs;             /* out of frame seconds */
   56         unsigned long css;              /* controlled slip seconds */
   57         unsigned long dm;               /* degraded minutes */
   58 } ce_gstat_t;
   59 
   60 typedef struct _ce_chan_t {
   61         unsigned char num;
   62         unsigned char type;
   63 #define T_NONE          0               /* no channel */
   64 #define T_E1            3               /* E1 */
   65 #define T_DATA          6               /* no physical interface */
   66         
   67         struct _ce_board_t *board;
   68         unsigned char dtr;
   69         unsigned char rts;
   70         ce_buf_item_t *tx_item;
   71         ce_buf_item_t *rx_item;
   72         TAU32_UserRequest *rx_queue;
   73         TAU32_UserRequest *tx_queue;
   74         unsigned char debug;
   75         unsigned char debug_shadow;
   76         void (*transmit) (struct _ce_chan_t*, void*, int);
   77         void (*receive) (struct _ce_chan_t*, unsigned char*, int);
   78         void (*error) (struct _ce_chan_t*, int);
   79 #define CE_FRAME         1
   80 #define CE_CRC           2
   81 #define CE_UNDERRUN      3
   82 #define CE_OVERRUN       4
   83 #define CE_OVERFLOW      5
   84         int tx_pending;
   85         int rx_pending;
   86         unsigned long rintr;
   87         unsigned long tintr;
   88         ulong64 ibytes;
   89         ulong64 obytes;
   90         unsigned long ipkts;
   91         unsigned long opkts;
   92         unsigned long underrun;
   93         unsigned long overrun;
   94         unsigned long frame;
   95         unsigned long crc;
   96 
   97         unsigned short status;          /* E1/G.703 line status bit mask */
   98 #define ESTS_NOALARM    0x0001          /* no alarm present */
   99 #define ESTS_FARLOF     0x0002          /* receiving far loss of framing */
  100 #define ESTS_AIS        0x0008          /* receiving all ones */
  101 #define ESTS_LOF        0x0020          /* loss of framing */
  102 #define ESTS_LOS        0x0040          /* loss of signal */
  103 #define ESTS_AIS16      0x0100          /* receiving all ones in timeslot 16 */
  104 #define ESTS_FARLOMF    0x0200          /* receiving alarm in timeslot 16 */
  105 #define ESTS_LOMF       0x0400          /* loss of multiframe sync */
  106 #define ESTS_TSTREQ     0x0800          /* test code detected */
  107 #define ESTS_TSTERR     0x1000          /* test error */
  108 
  109         unsigned long totsec;           /* total seconds elapsed */
  110         unsigned long cursec;           /* current seconds elapsed */
  111         unsigned long degsec;           /* degraded seconds */
  112         unsigned long degerr;           /* errors during degraded seconds */
  113         ce_gstat_t currnt;              /* current 15-min interval data */
  114         ce_gstat_t total;               /* total statistics data */
  115         ce_gstat_t interval [48];       /* 12 hour period data */
  116 
  117         unsigned int acc_status;
  118         unsigned long config;
  119         unsigned long baud;
  120         unsigned long ts;
  121         unsigned long ts_mask;
  122         unsigned char dir;
  123         unsigned char lloop;
  124         unsigned char rloop;
  125         unsigned char higain;
  126         unsigned char phony;
  127         unsigned char scrambler;
  128         unsigned char unfram;
  129         unsigned char monitor;
  130         unsigned char crc4;
  131         unsigned char use16;
  132         unsigned char gsyn;             /* G.703 clock mode */
  133 #define GSYN_INT        0               /* internal transmit clock source */
  134 #define GSYN_RCV        1               /* transmit clock source = receive */
  135 #define GSYN_RCV0       2               /* tclk = rclk from channel 0 */
  136 #define GSYN_RCV1       3               /* ...from channel 1 */
  137         unsigned long mtu;
  138         void *sys;
  139 } ce_chan_t;
  140 
  141 #define CONFREQSZ       128
  142 typedef struct _ce_conf_req {
  143         TAU32_UserRequest req[CONFREQSZ+10];
  144         TAU32_UserRequest *queue;
  145         int     pending;
  146 } ce_conf_req;
  147 
  148 typedef struct _ce_board_t {
  149         TAU32_UserContext       ddk;
  150         ce_chan_t               chan[NCHAN];
  151         int                     num;
  152         int                     mux;
  153 #define TAU32_BASE_NAME         "Tau-PCI-32"
  154 #define TAU32_LITE_NAME         "Tau-PCI-32/Lite"
  155 #define TAU32_ADPCM_NAME        "Tau-PCI-32/ADPCM"
  156 #define TAU32_UNKNOWN_NAME      "Unknown Tau-PCI-32"
  157         char                    name [32];
  158         ce_conf_req             cr;
  159         TAU32_CrossMatrix       dxc;
  160         unsigned long           pmask;
  161         void *sys;
  162 } ce_board_t;
  163 
  164 void ce_set_dtr (ce_chan_t *c, int on);
  165 void ce_set_rts (ce_chan_t *c, int on);
  166 int ce_get_cd (ce_chan_t *c);
  167 int ce_get_cts (ce_chan_t *c);
  168 int ce_get_dsr (ce_chan_t *c);
  169 
  170 int ce_transmit_space (ce_chan_t *c);
  171 int ce_send_packet (ce_chan_t *c, unsigned char *buf, int len, void *tag);
  172 void ce_start_chan (ce_chan_t *c, int tx, int rx, ce_buf_t *cb, unsigned long phys);
  173 void ce_stop_chan (ce_chan_t *c);
  174 void ce_register_transmit (ce_chan_t *c, void (*func) (ce_chan_t*, void*, int));
  175 void ce_register_receive (ce_chan_t *c, void (*func) (ce_chan_t*,
  176                                                         unsigned char*, int));
  177 void ce_register_error (ce_chan_t *c, void (*func) (ce_chan_t*, int));
  178 
  179 void TAU32_CALLBACK_TYPE
  180         ce_error_callback(TAU32_UserContext *pContext, int Item,
  181                           unsigned NotifyBits);
  182 void TAU32_CALLBACK_TYPE
  183         ce_status_callback(TAU32_UserContext *pContext, int Item,
  184                           unsigned NotifyBits);
  185 
  186 void ce_set_baud (ce_chan_t *c, unsigned long baud);
  187 void ce_set_lloop (ce_chan_t *c, unsigned char on);
  188 void ce_set_rloop (ce_chan_t *c, unsigned char on);
  189 void ce_set_higain (ce_chan_t *c, unsigned char on);
  190 void ce_set_unfram (ce_chan_t *c, unsigned char on);
  191 void ce_set_ts (ce_chan_t *c, unsigned long ts);
  192 void ce_set_phony (ce_chan_t *c, unsigned char on);
  193 void ce_set_scrambler (ce_chan_t *c, unsigned char on);
  194 void ce_set_monitor (ce_chan_t *c, unsigned char on);
  195 void ce_set_use16 (ce_chan_t *c, unsigned char on);
  196 void ce_set_crc4 (ce_chan_t *c, unsigned char on);
  197 void ce_set_gsyn (ce_chan_t *c, int syn);
  198 #define CABLE_TP                11
  199 int ce_get_cable (ce_chan_t *c);
  200 void ce_set_dir (ce_chan_t *c, int dir);
  201 void ce_e1_timer (ce_chan_t *c);
  202 void ce_init_board (ce_board_t *b);

Cache object: 209da6003b53fbbc98678b22798512cf


[ 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.