edt_ocm.h

00001 /*
00002 
00003  * register definition for OCM interface
00004  * Xilinx bitfile.
00005  */
00006 
00007 #ifndef _EDT_OCM_H
00008 #define _EDT_OCM_H
00009 
00010 
00011 /*
00012  * OCM definitions.
00013  */
00014 #define  OCM_CH0_CONFIG0            0x01010020
00015 #define  OCM_CH0_CONFIG1            0x01010021
00016 #define  OCM_CH0_STATUS             0x01010022
00017 #define  OCM_CH0_TRANSCEIVER        0x01010023
00018 #define  OCM_CH0_ENABLE             0x01010024
00019 #define  OCM_CH1_CONFIG0            0x01010030
00020 #define  OCM_CH1_CONFIG1            0x01010031
00021 #define  OCM_CH1_STATUS             0x01010032
00022 #define  OCM_CH1_TRANSCEIVER        0x01010033
00023 #define  OCM_CH1_ENABLE             0x01010034
00024 #define  OCM_FPGA0_LOAD             0x01010040
00025 #define  OCM_FPGA1_LOAD             0x01010041
00026 #define  OCM_FPGA2_LOAD             0x01010042
00027 #define  OCM_FPGA3_LOAD             0x01010043
00028 #define  OCM_CH0_RCV_FRAMING        0x01010080
00029 #define  OCM_CH0_XMT_FRAMING        0x01010081
00030 #define  OCM_CH0_XMT_NATIONAL       0x01010082
00031 #define  OCM_CH0_RCV_FILTER         0x01010083
00032 #define  OCM_CH0_XMT_TEST_DATA      0x04010084
00033 #define  OCM_CH0_RCV_STATUS         0x01010094
00034 #define  OCM_CH0_RCV_FRAME_STATUS   0x01010095
00035 #define  OCM_CH0_DEMUX_BITMAP       0x01010097
00036 #define  OCM_CH0_DEMUX_BITMAP_READ  0x01010098
00037 #define  OCM_CH0_TX_STATUS          0x01010099
00038 #define  OCM_CH0_BITFILE_VER        0x010100A0
00039 #define  OCM_CH1_RCV_FRAMING        0x010100C0
00040 #define  OCM_CH1_XMT_FRAMING        0x010100C1
00041 #define  OCM_CH1_XMT_NATIONAL       0x010100C2
00042 #define  OCM_CH1_RCV_FILTER         0x010100C3
00043 #define  OCM_CH1_XMT_TEST_DATA      0x040100C4
00044 #define  OCM_CH1_RCV_STATUS         0x010100D4
00045 #define  OCM_CH1_RCV_FRAME_STATUS   0x010100D5
00046 #define  OCM_CH1_DEMUX_BITMAP       0x010100D7
00047 #define  OCM_CH1_DEMUX_BITMAP_READ  0x010100D8
00048 #define  OCM_CH1_TX_STATUS          0x010100D9
00049 #define  OCM_CH1_BITFILE_VER        0x010100E0
00050 
00051 /*
00052  * OC192 definitions.
00053  */
00054 
00055 #define OC192_REF_CLOCK         0x0101002F
00056 #define OC192_XCVR_COM_PORT     0x01010031
00057 #define OC192_XCVR_CTL_STAT     0x01010032
00058 #define OC192_LIU_MDIO_BUS      0x01010033
00059 #define OC192_ENABLE            0x01010034
00060 #define OC192_LIU_STATUS        0x01010035
00061 #define OC192_FRAMING           0x01010037
00062 #define OC192_OUTPUT_DATA_SEL   0x0101003A
00063 #define OC192_CHAN_SELECT       0x0101004A
00064 #define OC192_RCV_FILTER        0x02010095
00065 #define OC192_DEMUX_BITMASK     0x02010097
00066 
00067 #define OC192_TAG_CTRL          0x010100A8
00068 
00069 /* single byte parts of oc192_demux_bitmask */
00070 
00071 #define OC192_DEMUX_BITMASK_LO  0x01010097
00072 #define OC192_DEMUX_BITMASK_HI  0x01010098
00073 
00074 #define OC192_DEMUX_MASK_ADDR   0x01010099
00075 
00076 #define OC192_DEMUX_BITMASK_RD  0x0201009A
00077 
00078 #define OC192_DEMUX_BITMASK_RD_LO       0x0101009A
00079 #define OC192_DEMUX_BITMASK_RD_HI       0x0101009B
00080 
00081 #define OC192_MEZZ_VERSION_STR  0x020100A0
00082 
00083 /*
00084  * registers 0 (PCD_CMD), 1 (PCD_DATA_PATH_STAT), 2 (OCD_FUNCT), 3 (PCD_STAT),  0xf (PCD_CONFIG),
00085  * 0x10 (SSD16_CHEN), 0x16 (SSD16_LSB), 0x18 (SSD16_UNDER) and 0x1b (SSD16_OVER) have
00086  * the regular address definition with the standard bit placement and definition as follows:
00087  * command - PCD_ENABLE bit 0x8 only, others are read/write but unused
00088  * data_path - bits are read/write but not used
00089  * funct - bits are read write but unused
00090  * status - bit 0 indicates the sysclk DCM on the Xilinx is locked to the clock from the OCM board
00091  */
00092 #define OCM_STAT_SYS_LOCKED             0x1
00093 
00094  /*
00095   * config - bit 0 is byteswap (PCD_BYTESWAP) and 3 is short swap (PCD_SHORTSWAP)
00096   * channel enable - bit 0 and 1 enable channel 0 and 1
00097   * lsb_first - bit 0 and 1 control channel 0 and 1
00098   * underflow - bit 0 and 1 report status, bit 2 to 15 are always 0.
00099   * overflow - bit 0 and 1 report status, bit 2 to 15 are always 0.
00100   */
00101 
00102  /*
00103   * OCM specific registers -
00104   * channel 0 registers are 0x20 - 0x24 have the same definitions as
00105   * channel 1 registers 0x30-0x34 except the channel does not have DDR memory fifo
00106   * so not bit to reset same.
00107   */
00108 #define OCM_CH0_CONFIGL 0x01010020
00109 #define OCM_CH0_CONFIGH 0x01010021
00110 #define OCM_CH0_STATUS  0x01010022
00111 #define OCM_CH0_XCVR    0x01010023
00112 #define OCM_CH0_ENABLE  0x01010024
00113 #define OCM_CH1_OFFSET  0x10
00114 
00115 /* channel enable bits in SSD16_CHEN */
00116 
00117 #define OCM_CH0_RX_ENABLE 0x1
00118 #define OCM_CH1_RX_ENABLE 0x2
00119 #define OCM_CH0_TX_ENABLE 0x4
00120 #define OCM_CH1_TX_ENABLE 0x8
00121 /* 
00122  * config register low bits
00123  * these bits directly control the SLK2511
00124  * the FRAME_EN bit also controls the framesync state machine for the channel
00125  */
00126 #define OCM_FRAME_EN    0x1
00127 #define OCM_LCKREF_L    0x2
00128 #define OCM_RSEL_MSK    0xC
00129 #define OCM_48                  0x0
00130 #define OCM_24                  0x4
00131 #define OCM_12                  0x8
00132 #define OCM_3                   0xC
00133 #define OCM_AUTODETECT  0x10
00134 #define OCM_RLOOP               0x20
00135 #define OCM_LLOOP               0x40
00136 #define OCM_PRBS_EN             0x80
00137 /*
00138  * config high bits
00139  */
00140 #define OCM_MODE_MSK    0x3
00141 #define OCM_MODE_FULL   0x0
00142 #define OCM_MODE_TX             0x1
00143 #define OCM_MODE_RX             0x2
00144 #define OCM_MODE_REP    0x3
00145 #define OCM_PRE_MSK             0xc
00146 #define OCM_PRE_DIS             0x0
00147 #define OCM_PRE_10              0x4
00148 #define OCM_PRE_20              0x8
00149 #define OCM_PRE_30              0xc
00150 #define OCM_LOOPTIME    0x10
00151 /*
00152  * adjust PLL phase delay to center clock in data eye. DCM in XIlinx is
00153  * used for this the ONE bit increments or decrements the delay based on the
00154  * INC bit.
00155  */
00156 #define OCM_PLL_INC   0x20
00157 #define OCM_PLL_ONE   0x40
00158 #define OCM_SPARE     0x80
00159 
00160 /*
00161  * program the Xilinx for channel 0  and 1 registers
00162  * the data register is loaded with the bit file data. It is a fifo which holds 15 bytes
00163  * the number of bytes in the fifo is read in the top 4 bist of the status register
00164  * The CONT register controls the PROGL and INIT pins of each Xilinx, bit 4 controls which
00165  * xilinx gets the data being loaded in the data register
00166  * The STAT register reflects the status of the DONE and INIT pins.
00167  * The constant register is written and read to determine if the ocm.bit file is loaded before
00168  * attempting to load the individual channel xilinx.
00169  */
00170 #define OCM_X_DATA        0x01010040
00171 #define OCM_X_CONT        0x01010041
00172 #define OCM_X_STAT        0x01010042
00173 #define OCM_X_CONST       0x01010043
00174 
00175 /* control register bits */
00176 #define OCM_CONT_CH0_INIT    0x1  /* one tristates INIT pin */
00177 #define OCM_CONT_CH0_PROG    0x2  /* one drives the PROG_L pin low (resets xilinx program) */
00178 #define OCM_CONT_CH1_INIT    0x4
00179 #define OCM_CONT_CH1_PROG    0x8
00180 #define OCM_CONT_PRG_CH1     0x10  /* directs data to channel 1 */
00181 #define OCM_CONT_ENABLE      0x20  /* enables the fifo, cclk and bit serializer */
00182 #define OCM_CONT_EN_FIFO     0x40  /* enables the fifo, cclk and bit serializer */
00183 
00184 /* status bits  */
00185 #define OCM_STAT_CH0_INIT       0x1     /* reads state of INIT pin */
00186 #define OCM_STAT_CH0_DONE       0x2     /* reads state of DONE pin */
00187 #define OCM_STAT_CH1_INIT       0x4     
00188 #define OCM_STAT_CH1_DONE       0x8     
00189 #define OCM_FCNT_MSK            0xf0
00190 #define OCM_FCNT_SHFT           4
00191 
00192 #define OCM_CONSTANT            0x0c    /* fixed pattern in OCM_X_CONST register */
00193 
00194 
00195 /*
00196  * SLK2511 LIU Configuration 0 Register
00197  */
00198 #define OCM_CH0_CONFIG0 0x01010020 
00199 #define OCM_CH1_CONFIG0 0x01010030 
00200 #define OFFSET_CH1_BASE 0x10
00201 #define NOT_USED        0x01
00202 #define LOCK_REF        0x02
00203 #define RX_SEL_MSK      0x0c
00204 #define OC48_STM16      0x00
00205 #define OC24            0x04
00206 #define OC12_STM4       0x08
00207 #define OC3_STM1        0x0c
00208 #define AUTO_DETECT     0x10
00209 #define REMOTE_LOOP     0x20
00210 #define LOCAL_LOOP      0x40
00211 #define PRBS_EN         0x80
00212 /*
00213  * SLK2511 LIU Configuration 1 Register
00214  */
00215 #define OCM_CH0_CONFIG1 0x01010021 
00216 #define OCM_CH1_CONFIG1 0x01010031 
00217 #define CONFIG2511_MSK  0x03
00218 #define PRE2511_MSK     0x0c
00219 #define LOOPTIME        0x10
00220 /*
00221  * SLK2511 LIU  Status
00222  */
00223 #define OCM_CH0_STATUS  0x01010022 
00224 #define OCM_CH1_STATUS  0x01010032 
00225 #define SPILL2511       0x01
00226 #define PRBSPASS        0x02
00227 #define RATE_DET_MSK    0x0c
00228 /* bit defines for rates are the same as the config register above */
00229 #define LOS             0x10
00230 #define LOL             0x20
00231 #define SIG_DET         0x80
00232 /*
00233  * Transceiver Control and serial acess register
00234  */
00235 #define OCM_CH0_XCVR    0x01010023 
00236 #define OCM_CH1_XCVR    0x01010033 
00237 #define DISABLE_TX      0x01
00238 #define XCVR_SCL        0x02
00239 #define XCVR_WDATA      0x04
00240 #define XCVR_TS         0x08
00241 #define XCVR_RDATA      0x10
00242 #define XCVR_PRES       0x20
00243 #define XCVR_FLT        0x40
00244 /*
00245  * Enable Registers
00246  */
00247 #define OCM_CH0_ENABLE  0x01010024 
00248 #define OCM_CH1_ENABLE  0x01010034 
00249 #define SLK_EN          0x01
00250 #define PLL_EN          0x02
00251 #define SYS_EN          0x04
00252 #define RAM_EN          0x08
00253 /* read status in top bits */
00254 #define SYS_LOCK        0x20
00255 #define RX_LOCK         0x40
00256 /*
00257  * the regular PCD_STAT register shows
00258  * the local Xilinx 100MHz sysclk lock
00259  * in bit 0.
00260  */
00261 #define LOCAL_SYS_LOCK  0x01
00262 /*
00263  * id string for ocm.bit
00264  */
00265 #define OCM_ID_STR      0x0101007d
00266 /*
00267  * id string for ocm mezzanine bit files
00268  */
00269 #define OCM_CH0_ID_STR  0x010100a0
00270 /*
00271  * both id registers can be written with the following commands
00272  */
00273 #define OCM_ID_SIZE             16
00274 
00275 /*
00276  * Receive Framer control register
00277  */
00278 #define OFFSET_CH1_MEZ  0x40
00279 #define OCM_RX_CTRL     0x01010080 
00280 #define RESET_FRM       0x01
00281 #define FRAME_EN        0x02
00282 #define RX_DATA_SRC_2G  0x04
00283 #define DISABLE_SCRAM   0x10
00284 #define SUSPEND_AQ      0x20
00285 #define EN_PAR_CNT      0x40
00286 #define EN_ERR_CNT      0x80
00287 /*
00288  * Configure Transmit Framer
00289  */
00290 #define OCM_TX_CONFIG   0x01010081 
00291 #define RESET_PTR       0x01
00292 #define TEST_DATA       0x02
00293 #define EN_TX_FRAME     0x04
00294 #define EN_IDLE         0x04
00295 #define CLOCK_SEL_MSK   0xC0
00296 #define CLK_125MHZ      0x00
00297 #define CLOCK_SEL_MSK   0xC0
00298 #define CLK_SONET_SDH   0x40
00299 #define CLK_GE          0x80
00300 #define CLK_FEC         0xC0
00301 /*
00302  * Configure Transmit Framer national byte
00303  */
00304 #define OCM_NAT_BYTE    0x01010082 
00305 /*
00306  * Receive filter
00307  */
00308 #define OCM_RX_FILTER   0x01010083 
00309 #define OVERHEAD_ONLY   0x01
00310 /*
00311  * Transmit test pattern 32 bit
00312  */
00313 #define TEST_DATA_REG   0x03010084 
00314 /*
00315  * Transmit test pattern 32 bit
00316  */
00317 #define OCM_RX_STATUS   0x01010094 
00318 #define FRAMED          0x01
00319 #define RX_LOCKED       0x01
00320 #define RATE12          0x02
00321 /*
00322  * Transmit test pattern 32 bit
00323  */
00324 #define FRAME_STATUS    0x01010095 
00325 #define BIT_SYNC        0x01
00326 #define BYTE_SYNC       0x02
00327 #define MATCH_CNT_MSK   0x0c
00328 #define MATCH_CNT_SHFT  2
00329 #define DROP_CNT_MSK    0x30
00330 #define DROP_CNT_SHFT   4
00331 #define FOUND           0x40
00332 #define LOCKED          0x80
00333 
00334 
00335 #define OCM_REG_CH0_MASK 0x01010097
00336 #define OCM_REG_CH0_MASK_READBACK 0x01010098
00337 
00338 /* Framing error registers */
00339 
00340 #define OCM_CH0_B1_ERROR_CNT    0x03010088
00341 #define OCM_CH0_B1_ERROR_MASK   0x0101008b
00342 #define OCM_CH1_B1_ERROR_CNT    0x030100c8
00343 #define OCM_CH1_B1_ERROR_MASK   0x010100cb
00344 
00345 #define OCM_CH0_B2_ERROR_CNT    0x0401008c
00346 #define OCM_CH1_B2_ERROR_CNT    0x040100cc
00347 
00348 #define OCM_CH0_M1_ERROR_CNT    0x03010090
00349 #define OCM_CH1_M2_ERROR_CNT    0x030100d0
00350 
00351 #define OCM_CH0_CNT_CTRL        0x01010093
00352 #define OCM_CH1_CNT_CTRL        0x010100D3
00353 
00354 #define OCM_CH0_LOF_CNT         0x0201009C
00355 #define OCM_CH1_LOF_CNT         0x020100DC
00356 
00357 #define OCM_CH0_FRM_PAT_CNT     0x0201009E
00358 #define OCM_CH1_FRM_PAT_CNT     0x020100DE
00359 
00360 #define OCM_CH0_FALSE_FRM_CNT   0x020100A4
00361 #define OCM_CH1_FALSE_FRM_CNT   0x020100E4
00362 
00363 
00364 /* Bit masks for OCM_CHX_CNT_CTRL */
00365 
00366 #define OCM_EN_ERROR_COUNT      0x80
00367 #define OCM_ERROR_COUNT_HOLD    0x1
00368 
00377 typedef enum {
00378 
00379 STM0_RATE =     0,
00380 GIGE_RATE  =    10,
00381 STM1_RATE =     1,
00382 STM4_RATE =     4,
00383 STM16_RATE =    16,
00384 STM64_RATE =    64,
00385 STM256_RATE =   256,
00386 OC3_RATE =      3,
00387 OC12_RATE =     12,
00388 OC48_RATE =     48,
00389 OC192_RATE =    192,
00390 OC768_RATE =    768
00391 
00392 } EdtLineRate;
00393 
00394 
00396 /* low three bits describe the bit and byte order */
00397 
00398 #define EDT_OCX_BYTE_SWAP   0x1
00399 #define EDT_OCX_SHORT_SWAP  0x2
00400 #define EDT_OCX_LSB_FIRST   0x4
00401 
00403 #define EDT_OCX_SWAP (EDT_OCX_BYTE_SWAP | EDT_OCX_SHORT_SWAP)
00404 
00405 #define EDT_OCX_ORDER_MASK  0x7
00406 
00408 #define EDT_OCX_FRAMED      0x8 
00409 
00410 #define EDT_OCX_DESCRAMBLE  0x10
00411 
00412 #define EDT_OCX_ENABLE_MEM  0x20
00413 
00414 #define EDT_OCX_OVHD_ONLY   0x40
00415 
00416 #define EDT_OCX_PRBS_EN     0x200
00417 
00418 #define EDT_OCX_SKIP_LOAD   0x400
00419 
00420 #define EDT_OCX_FULL_INIT   0x800
00421 
00422 #define EDT_OCX_LOOPBACK    0x2000
00423 
00424 #define EDT_OCX_REMOTE_LPBK 0x10000
00425 
00426 #define EDT_OCX_SCRAMBLE    0x1000
00427 
00428 #define EDT_OCX_INVERT      0x4000
00429 
00430 #define EDT_OCX_SET_DEMUX   0x8000
00431 
00432 #define EDT_OCX_RESYNCH     0x10000
00433 
00434 #define EDT_OCX_FORCE_LOAD  0x20000
00435 
00436 #define EDT_OCX_NO_SIG_DET  0x40000
00437 
00439 #define EDT_OCX_TAGGED_DATA 0x80000
00440 
00441 
00452 typedef struct  {
00453     EdtLineRate line_rate; 
00454     int timeout; 
00455     u_int flags; 
00477     edt_bitpath intfc; 
00478     edt_bitpath mezz_0; 
00479     edt_bitpath mezz_1; 
00480     char tributary[6];
00481     u_char demux_mask[192]; 
00482     int tagid;
00483 
00484 }  EdtOCConfig;
00485 
00497 typedef struct {
00498     u_int b1_errors;
00499     u_char b1_error_mask;
00500     u_int b2_errors;
00501     u_int m1_errors;
00502     u_int lof_errors;
00503     u_int frame_pattern_errors;
00504     u_int false_frame_errors;
00505 } EdtOCXFrameErrors;
00506 
00507 
00508 
00513 /* modes  for edt_oc192_set */
00514 #define EDT_OC192_LIU_NORMAL  0
00515 #define EDT_OC192_LIU_LOOPBACK  1
00516 #define EDT_OC192_LIU_BIST_RX 2
00517 #define EDT_OC192_LIU_BIST_TX 3
00518 #define EDT_OC192_LIU_BIST_TX_EXT 4
00519 #define EDT_OC192_LIU_RESET 5
00520 #define EDT_OC192_LIU_REMOTE_LPBK 6
00521 
00522 #define OC192_FRAME_EN  0x2
00523 #define OC192_DISABLE_SCRAM 0x10
00524 #define OC192_FRAME_LOCK 0x80
00525 
00526 #define SDATA_IN        0x10
00527 #define SDATA_OUT       0x1
00528 #define SCLK            0x2
00529 #define SDATA_TRI       0x8
00530 #define SCLK_TRI        0x4
00531 
00532 #define AMCC_RST        0x1
00533 
00534 #define OC192_TAG_ON    0x80
00535 #define OC192_TAGS_ONLY 0x40
00536 #define OC192_TAGS_XMIT 0x20
00537 
00538 #define OC192_TAG_MASK  0x3
00539 
00540 
00545 EDTAPI unsigned char 
00546 edt_oc192_mdio_read(EdtDev *edt_p, unsigned char address);
00547 
00548 EDTAPI void 
00549 edt_oc192_mdio_write(EdtDev *edt_p, 
00550                                                   unsigned char address, 
00551                                                   unsigned char value);
00552 EDTAPI void 
00553 edt_oc192_mdio_init(EdtDev *edt_p);
00554 
00555 EDTAPI void
00556 edt_oc192_reset_liu(EdtDev *edt_p);
00557 
00558 EDTAPI void
00559 edt_oc192_mdio_dump(EdtDev *edt_p);
00560 
00561 EDTAPI void
00562 edt_oc192_mdio_loopback(EdtDev *edt_p, int on);
00563 
00564 EDTAPI void
00565 edt_oc192_mdio_set_prbs23(EdtDev *edt_p, int on);
00566 
00567 EDTAPI void
00568 edt_oc192_mdio_set_prbs31(EdtDev *edt_p, int on);
00569 
00570 EDTAPI void
00571 edt_oc192_mdio_standard(EdtDev *edt_p);
00572 
00573 EDTAPI int
00574 edt_oc192_set_liu(EdtDev *edt_p, int mode);
00575 
00576 
00577 
00586 /***********************************************************/
00587 /* These functions are specific to the OCM mezzanine board */
00588 /***********************************************************/
00589 
00590 EDTAPI  int
00591 edt_ocm_lock_clocks(EdtDev *edt_p, int timeout);
00592 
00593 EDTAPI  char *
00594 edt_ocm_mezz_filename(EdtDev *edt_p, EdtLineRate line_rate);
00595 
00596 EDTAPI  int
00597 edt_ocm_load_default_mezzanine(EdtDev *edt_p, 
00598         EdtLineRate line_rate,
00599         char *mezz_0,
00600         char *mezz_1);
00601 
00602 EDTAPI  int
00603 edt_ocm_speed_capable(EdtDev *edt_p, EdtLineRate line_rate);
00604 
00605 EDTAPI  int
00606 edt_ocm_has_mezz_bitfile(EdtDev *edt_p, char *bitfile_name);
00607 
00608 EDTAPI  int
00609 edt_ocm_set_clock_select(EdtDev *edt_p, EdtLineRate line_rate);
00610 
00611 EDTAPI  int
00612 edt_ocm_channel_lock_frontend_pll(EdtDev *edt_p, EdtOCConfig *cfg);
00613 
00614 EDTAPI  int
00615 edt_ocm_channel_setup_read(EdtDev *edt_p, EdtOCConfig *cfg);
00616 
00617 EDTAPI  int
00618 edt_ocm_wait_for_frame(EdtDev *edt_p, int timeout);
00619 
00620 
00621 
00622 EDTAPI int
00623 edt_ocm_demux_set(EdtDev *edt_p, EdtLineRate line_rate, u_char *onoff);
00624 
00625 EDTAPI int
00626 edt_ocm_demux_get(EdtDev *edt_p, EdtLineRate line_rate, u_char *onoff);
00627 
00628 EDTAPI int
00629 edt_ocm_demux_chan_enable(EdtDev *edt_p, int channel, int enable);
00630 
00631 EDTAPI int
00632 edt_ocm_demux_get_chan_enabled(EdtDev *edt_p, int channel);
00633 
00634 
00643 /***************************************************/
00644 /* These functions are specific to the OC192 mezzanine board */
00645 /***************************************************/
00646 
00647 /* These functions have equivalent _ocm_ functions, 
00648    so they can be called directly or through the edt_ocx_
00649    generic functions */
00650 
00651 EDTAPI  int
00652 edt_oc192_lock_clocks(EdtDev *edt_p, int timeout);
00653 
00654 EDTAPI  char *
00655 edt_oc192_mezz_filename(EdtDev *edt_p, EdtLineRate line_rate);
00656 
00657 EDTAPI  int
00658 edt_oc192_load_default_mezzanine(EdtDev *edt_p, EdtLineRate line_rate,
00659         char *mezz_0, char *mezz_1);
00660 
00661 EDTAPI  int
00662 edt_oc192_speed_capable(EdtDev *edt_p, EdtLineRate line_rate);
00663 
00664 EDTAPI  int
00665 edt_oc192_has_mezz_bitfile(EdtDev *edt_p, char *bitfile_name);
00666 
00667 EDTAPI  int
00668 edt_oc192_set_clock_select(EdtDev *edt_p, EdtLineRate line_rate);
00669 
00670 EDTAPI  int
00671 edt_oc192_clear_demux(EdtDev *edt_p);
00672 
00673 EDTAPI  void
00674 edt_oc192_set_framer(EdtDev *edt_p, int flags);
00675 
00676 EDTAPI  int
00677 edt_oc192_channel_setup_read(EdtDev *edt_p, 
00678                      EdtOCConfig *cfg);
00679 
00680 EDTAPI  int
00681 edt_oc192_wait_for_frame(EdtDev *edt_p, int timeout);
00682 
00683 EDTAPI int
00684 edt_oc192_demux_set(EdtDev *edt_p, EdtLineRate line_rate, u_char *onoff);
00685 
00686 EDTAPI int
00687 edt_oc192_demux_get(EdtDev *edt_p, EdtLineRate line_rate, u_char *onoff);
00688 
00689 EDTAPI int
00690 edt_oc192_demux_chan_enable(EdtDev *edt_p, int channel, int enable);
00691 
00692 EDTAPI int
00693 edt_oc192_demux_get_chan_enabled(EdtDev *edt_p, int channel);
00694 
00695 EDTAPI int
00696 edt_oc192_set_tagging(EdtDev *edt_p, int state, int tagid);
00697 
00705 /*****************************************************/
00706 /* These functions will work for either OCM or OC192 */
00707 /* mezzanine boards                                  */
00708 /*****************************************************/
00709 
00710 EDTAPI  int
00711 edt_ocx_lock_local_clock(EdtDev *edt_p, int timeout);
00712 
00713 EDTAPI  void
00714 edt_ocx_enable_framing_errors(EdtDev *edt_p, int state);
00715 
00716 EDTAPI  int 
00717 edt_ocx_get_framing_errors(EdtDev *edt_p, EdtOCXFrameErrors *err_p);
00718 
00719 EDTAPI  int
00720 edt_ocx_lock_channel_clock(EdtDev *edt_p, int channel, int timeout);
00721 
00722 EDTAPI  char *
00723 edt_ocx_default_bitfile(int mezz_id);
00724 
00725 EDTAPI  int
00726 edt_ocx_check_interface(EdtDev *edt_p, char *target_file, int force_load);
00727 
00728 
00729 
00730 EDTAPI  int
00731 edt_ocx_lock_clocks(EdtDev *edt_p, int timeout);
00732 
00733 EDTAPI  int
00734 edt_ocx_load_default_mezzanine(EdtDev *edt_p, 
00735         EdtLineRate line_rate,
00736         char *mezz_0,
00737         char *mezz_1);
00738 
00739 EDTAPI  int
00740 edt_ocx_base_init(EdtDev *edt_p, 
00741                   EdtOCConfig *cfg);
00742 
00743 EDTAPI  int
00744 edt_ocx_speed_capable(EdtDev *edt_p, EdtLineRate line_rate);
00745 
00746 EDTAPI  int
00747 edt_ocx_has_mezz_bitfile(EdtDev *edt_p, char *bitfile_name);
00748 
00749 EDTAPI  char *
00750 edt_ocx_mezz_filename(EdtDev *edt_p, EdtLineRate line_rate);
00751 
00752 EDTAPI  int
00753 edt_ocx_check_mezz_bitfile(EdtDev *edt_p, 
00754                            EdtOCConfig *cfg);
00755 
00756 EDTAPI  int
00757 edt_ocx_set_clock_select(EdtDev *edt_p, EdtLineRate line_rate);
00758 
00759 EDTAPI  void
00760 edt_ocx_set_channel_enable(EdtDev *edt_p, int channel, int state);
00761 
00762 EDTAPI  void
00763 edt_ocx_set_lsbfirst(EdtDev *edt_p, int channel, int state);
00764 
00765 EDTAPI  void
00766 edt_ocx_reset_sys_en(EdtDev *edt_p, int channel);
00767 
00768 EDTAPI  int
00769 edt_ocx_channel_set_rate(EdtDev *edt_p, EdtOCConfig *cfg);
00770 
00771 EDTAPI  int
00772 edt_ocx_channel_setup(EdtDev *edt_p,
00773                    EdtOCConfig *cfg);
00774 
00775 EDTAPI  int
00776 edt_ocm_channel_lock_frontend_pll(EdtDev *edt_p, EdtOCConfig *cfg);
00777 
00778 EDTAPI  int
00779 edt_ocx_configure(EdtDev *edt_p, 
00780                   EdtOCConfig *cfg);
00781 
00782 EDTAPI  int
00783 edt_ocx_wait_for_frame(EdtDev *edt_p, int timeout);
00784 
00785 EDTAPI int
00786 edt_ocx_channel_start(EdtDev *edt_p);
00787 
00788 EDTAPI int
00789 edt_ocx_channel_signal_detect(EdtDev *edt_p);
00790 
00791 /* demux access functions */
00792 
00793 EDTAPI int
00794 edt_ocx_demux_set(EdtDev *edt_p, EdtLineRate line_rate, u_char *onoff);
00795 
00796 EDTAPI int
00797 edt_ocx_demux_get(EdtDev *edt_p, EdtLineRate line_rate, u_char *onoff);
00798 
00799 EDTAPI int
00800 edt_ocx_demux_chan_enable(EdtDev *edt_p, int channel, u_char state);
00801 
00802 EDTAPI int
00803 edt_ocx_demux_get_chan_enabled(EdtDev *edt_p, int channel);
00804 
00805 EDTAPI int
00806 edt_reg_set_bitmask(EdtDev *edt_p, u_int reg, u_int mask, int state);
00807 
00808 
00809 EDTAPI void
00810 edt_ocx_set_channel_direction(EdtDev *edt_p, int channel, int do_write);
00811 
00816 #endif

Generated on Mon May 12 16:38:52 2008 by  doxygen 1.5.1