libedt.h

Go to the documentation of this file.
00001 /* #pragma ident "@(#)libedt.h  1.302 04/03/08 EDT" */
00002 
00003 /* Copyright (c) 1995 by Engineering Design Team, Inc. */
00004 
00005 #ifndef INCLUDE_edtlib_h
00006 #define INCLUDE_edtlib_h
00007 
00013 #ifdef USB
00014 #include <usb.h>
00015 #endif
00016 
00225 #ifdef DOXYGEN_SHOW_UNDOC
00226 
00264 #endif
00265 
00266 
00267 #ifdef DOXYGEN_SHOW_UNDOC
00268 
00272 #endif
00273 #ifdef DOXYGEN_SHOW_UNDOC
00274  /* end dma_updown_internal group */
00275 #endif
00276 
00277 
00278 
00279 #ifdef DOXYGEN_SHOW_UNDOC
00280 
00284 #endif
00285 #ifdef DOXYGEN_SHOW_UNDOC
00286  /* end dma_fifo_internal group */
00287 #endif
00288 
00289 
00290 
00291 #ifdef DOXYGEN_SHOW_UNDOC
00292 
00296 #endif
00297 #ifdef DOXYGEN_SHOW_UNDOC
00298  /* end dma_inout_internal group */
00299 #endif
00300 
00301 
00302 
00303 #ifdef DOXYGEN_SHOW_UNDOC
00304 
00308 #endif
00309 #ifdef DOXYGEN_SHOW_UNDOC
00310  /* end dma_registers_internal group */
00311 #endif
00312 
00313 
00314 #ifdef DOXYGEN_SHOW_UNDOC
00315 
00319 #endif
00320 #ifdef DOXYGEN_SHOW_UNDOC
00321  /* end dma_utility_internal group */
00322 #endif
00323 
00324 
00325 
00326 #ifdef DOXYGEN_SHOW_UNDOC
00327 
00331 #endif
00332 #ifdef DOXYGEN_SHOW_UNDOC
00333  /* end dma_internal */
00334 #endif
00335 
00336 
00337 #define event_t HANDLE
00338 /*****************************************************
00339  * Kernel events                                     *
00340  *****************************************************/
00341 
00342 typedef char edt_version_string[128];
00343 
00344 /* undefined this to turn off event handling  */
00345 
00346 #define USE_EVENT_HANDLERS
00347 
00348 
00349 /* Event flags */
00350 /* These act as flag bits indicating our interest in these events */
00351 
00352 #define EDT_MAX_KERNEL_EVENTS           20
00353 #define EDT_BASE_EVENTS                 1
00354 
00355 #define EDT_EODMA_EVENT                 (EDT_BASE_EVENTS + 0)
00356 #define EDT_EODMA_EVENT_NAME            "edt_eodma"
00357 #define EV_EODMA                        EDT_EODMA_EVENT /* compat */
00358 
00359 #define EDT_EVENT_BUF                   (EDT_BASE_EVENTS + 1)
00360 #define EDT_BUF_EVENT_NAME              "edt_buf"
00361 
00362 #define EDT_EVENT_STAT                  (EDT_BASE_EVENTS + 2)
00363 #define EDT_STAT_EVENT_NAME             "edt_stat"
00364 
00365 #define EDT_EVENT_P16D_DINT             (EDT_BASE_EVENTS + 3)
00366 #define EDT_P16D_DINT_EVENT_NAME        "edt_p16dint"
00367 
00368 #define EDT_EVENT_P11W_ATTN             (EDT_BASE_EVENTS + 4)
00369 #define EDT_P11W_ATTN_EVENT_NAME        "edt_p11wattn"
00370 
00371 #define EDT_EVENT_P11W_CNT              (EDT_BASE_EVENTS + 5)
00372 #define EDT_P11W_CNT_EVENT_NAME         "edt_cnt"
00373 
00374 #define EDT_PDV_EVENT_ACQUIRE           (EDT_BASE_EVENTS + 6)
00375 #define EDT_EVENT_ACQUIRE               EDT_PDV_EVENT_ACQUIRE /* compat */
00376 #define EDT_PDV_ACQUIRE_EVENT_NAME      "edt_acquire"
00377 
00378 #define EDT_EVENT_PCD_STAT1             (EDT_BASE_EVENTS + 7)
00379 #define EDT_EVENT_PCD_STAT1_NAME        "edt_pcd_stat1"
00380 
00381 #define EDT_EVENT_PCD_STAT2             (EDT_BASE_EVENTS + 8)
00382 #define EDT_EVENT_PCD_STAT2_NAME        "edt_pcd_stat2"
00383 
00384 #define EDT_EVENT_PCD_STAT3             (EDT_BASE_EVENTS + 9)
00385 #define EDT_EVENT_PCD_STAT3_NAME        "edt_pcd_stat3"
00386 
00387 #define EDT_EVENT_PCD_STAT4             (EDT_BASE_EVENTS + 10)
00388 #define EDT_EVENT_PCD_STAT4_NAME        "edt_pcd_stat4"
00389 
00390 #define EDT_PDV_STROBE_EVENT            (EDT_BASE_EVENTS + 11)
00391 #define EDT_PDV_STROBE_EVENT_NAME       "edt_pdv_strobe"
00392 
00393 #define EDT_EVENT_P53B_SRQ              (EDT_BASE_EVENTS + 12)
00394 #define EDT_EVENT_P53B_SRQ_NAME         "edt_p53b_srq"
00395 
00396 #define EDT_EVENT_P53B_INTERVAL         (EDT_BASE_EVENTS + 13)
00397 #define EDT_EVENT_P53B_INTERVAL_NAME    "edt_p53b_interval"
00398 
00399 #define EDT_EVENT_P53B_MODECODE         (EDT_BASE_EVENTS + 14)
00400 #define EDT_EVENT_P53B_MODECODE_NAME    "edt_p53b_modecode"
00401 
00402 #define EDT_EVENT_P53B_DONE             (EDT_BASE_EVENTS + 15)
00403 #define EDT_EVENT_P53B_DONE_NAME        "edt_p53b_done"
00404 
00405 #define EDT_PDV_EVENT_FVAL              (EDT_BASE_EVENTS + 16)
00406 #define EDT_PDV_EVENT_FVAL_NAME         "edt_pdv_fval"
00407 
00408 #define EDT_PDV_EVENT_TRIGINT           (EDT_BASE_EVENTS + 17)
00409 #define EDT_PDV_EVENT_TRIGINT_NAME      "edt_pdv_trigint"
00410 
00411 #define EDT_EVENT_TEMP          (EDT_BASE_EVENTS + 18)
00412 #define EDT_EVENT_TEMP_NAME     "edt_temp_intr"
00413 
00414 #define EDT_MAX_EVENT_TYPES     (EDT_EVENT_TEMP + 1)
00415 
00416 /*
00417  * The EVENT_MODE controls the way the driver responds to events.
00418  * Mode 0 is similar to ACT_ONCE; mode 1 is similar to ACT_ALWAYS,
00419  * and mode 2 is similar to ACT_ALWAYS but disables the event
00420  * while user code is processing it to prevent OS lockups.
00421  */
00422 #define EDT_EVENT_MODE_MASK             0xFF000000
00423 #define EDT_EVENT_MODE_SHFT             24
00424 #define EDT_EVENT_MODE_ONCE             0
00425 #define EDT_EVENT_MODE_CONTINUOUS       1
00426 #define EDT_EVENT_MODE_SERIALIZE        2
00427 
00428 #if defined(WIN32) || defined(_NT_DRIVER_)
00429 typedef unsigned __int64 uint64_t ;
00430 typedef __int64 int64_t ;
00431 typedef unsigned int  uint32_t ;
00432 typedef int int32_t ;
00433 #endif
00434 
00435 /*
00436  * legal PCI proms for pciload and other prom detect code
00437  */
00438 #define PROM_UNKN       0
00439 #define AMD_4013E       1
00440 #define AMD_4013XLA     2
00441 #define AMD_4028XLA     3
00442 #define AMD_XC2S150     4
00443 #define AMD_XC2S200_4M  5
00444 #define AMD_XC2S200_8M  6
00445 #define AMD_XC2S100_8M  7
00446 #define AMD_XC2S300E    8
00447 #define SPI_XC3S1200E   9
00448 #define AMD_XC5VLX30T   10      /* WAS SPI_XC5VLX30T    */
00449 #define AMD_XC5VLX50T   11      /* WAS SPI_XC5VLX50T */
00450 #define AMD_EP2SGX30D   12
00451 
00452 /*
00453  * structure to set up phase locked loop parameters.
00454  * some of these values go into the AV9110-02 PLL chip
00455  * and others set up prescalars in the xilinx.
00456  */
00457 #ifdef USE_LONG_BUFCNT
00458 #if defined(_NT_) || defined(_NT_DRIVER_)
00459 typedef unsigned long long bufcnt_t ;
00460 #else
00461 typedef uint64_t bufcnt_t ;
00462 #endif
00463 #else
00464 typedef u_int bufcnt_t ;
00465 #endif
00466 
00467 typedef struct
00468 {
00469     int m; /* AV9110 refernce frequency divide range 3-127 */
00470     int n; /* AV9110 VCO feedback frequency divide range 3-127 */
00471     int v; /* AV9110 VCO feedback frequency prescalar range 1 or 8 */
00472     int r; /* AV9110 VCO output divider 1, 2, 4, 8 */
00473     int h; /* xilinx high speed divider (vco output) 1,3,5,7 */
00474     int l; /* xilinx divide by n 1-64 */
00475     int x; /* xilinx AV9110 prescale of 30MHz oscillator 1-256 */
00476 } edt_pll ;
00477 
00478 /*
00479  * Typedef for edt_bitpath to send and retrieve bitfile pathnames
00480  * from the driver.
00481  */
00482 typedef char edt_bitpath[128] ;
00483 
00484 /*
00485  * SBus Device struct
00486  */
00487 #define EDT_READ 0
00488 #define EDT_WRITE 1
00489 
00490 #ifndef TRUE
00491 
00492 #define TRUE 1
00493 #define FALSE 0
00494 
00495 #endif
00496 
00497 /* for edt_get_dma_info */
00498 typedef struct
00499 {
00500     uint_t      used_dma ;      /* dma started within current open/close */
00501     uint_t      alloc_dma ;     /* has allocated > 1 ring buffer */
00502     uint_t      active_dma ;    /* dma is currently active */
00503 } edt_dma_info ;
00504 
00505 /* defines for edt_set_kernel_buffers */
00506 #define EDT_USER_BUFS 0
00507 #define EDT_COPY_KBUFS 1
00508 #define EDT_MMAP_KBUFS  2
00509 #define EDT_PERSISTENT_KBUFS  4
00510 
00511 #define MAX_EXTENDED_WORDS 32
00512 typedef struct _EdtMezzDescriptor {
00513     int  id;
00514     int  n_extended_words;
00515     int  extended_rev;
00516     uint_t extended_data[MAX_EXTENDED_WORDS];
00517 } EdtMezzDescriptor;
00518 #ifndef _KERNEL
00519 /* Event callback stuff */
00520 
00521 
00522 typedef void (*EdtEventFunc)(void *); 
00523 
00524 typedef struct edt_event_handler {
00525     struct edt_event_handler *next; /* in case we want linked lists */
00526     EdtEventFunc    callback;       /* function to call when event occurs */
00527     struct edt_device *owner;           /* reflexive pointer */
00528     uint_t          event_type;
00529     void *          data;               /* closure pointer for callback */    
00530     u_char          active;             /* flag for a graceful death */
00531     u_char          continuous;         /* flag for continuing events */
00532 #ifdef _NT_
00533     thread_t        wait_thread;        /* thread handle */
00534     event_t         wait_event;         /* kernel event handle */
00535     event_t         closing_event;      /* abort event handle */
00536     uint_t          thrdid;             /* thread id # */
00537 #elif defined(__sun)
00538     thread_t        thrdid ;            /* thread handle and ID in Solaris */
00539     sema_t                      sema_thread ;   /* thread sync semaphore */
00540 #elif defined(__linux__) 
00541 
00542   
00543     thread_t thrdid;
00544 #elif defined(__APPLE__)
00545     pthread_t thrdid ;
00546 
00547 #endif /* _NT_ */
00548 
00549 } EdtEventHandler;
00550 
00551 
00552 /* An EdtBdFilterFunction ("Bd" = Board) function is used by
00553  * edt_detect_boards_filter() to determine if a board with the given
00554  * dev (e.g. "pcd"), unit number, and bd_id (eg.. PCD_ID) should be 
00555  * included with the results of the board detection function. 
00556  * This is used, for example, by hubload.c to do a detect of only "ltx"
00557  * boards which are those matching a small number of bd_ids. 
00558  * The data parameter is passed to edt_detect_boards_filter, and 
00559  * subsequently passed on to the filter function; it can be either NULL
00560  * or any data which the filter function wants to help it do its job. 
00561  * Returns true for matches, false otherwise. */
00562 typedef int (*EdtBdFilterFunction) (char *dev, int unit, int bd_id, void *data);
00563 
00564 typedef struct {
00565     char type[8]; /* board family e.g., "pcd" */
00566     int id; /* board unit number */
00567     int bd_id; /* board id, e.g. PCD_ID */
00568 } Edt_bdinfo ;
00569 
00570 
00571 /*
00572  * embedded info
00573  */
00574 typedef struct {
00575     int clock; /* 4 */
00576     char sn[11];        
00577     char pn[11];
00578     char opt[11];
00579     int  rev; /* 4 */
00580     char ifx[11];
00581 } Edt_embinfo;
00582 
00583 typedef struct {
00584         char  fpga[32];                                 /* MUST match a pkg directory name */
00585         char  promdesc[32];                             /* description may include size */
00586         char  busdesc[8];                               /* PCI, PCIe, ... */
00587         int   xtype;                                    /* XTYPE_X, XTYPE_BT, XTYPE_LTX, XTYPE_SPI */
00588         int   magic;                                    /* magic code (not the magic # itself but a code */
00589         u_int sectorsize;                               /* sector size in bytes */
00590         u_int sectsperseg;                              /* sectors per segment */
00591         int   defaultseg;                               /* default unprotected segment */
00592         u_int (*id_addr)(u_long, int);                  /* id address function pointer */
00593 #if 0 /* cool idea -- lets try to get this done, but filling in all the fields */
00594       /* will take some time and need lots of care, so commented out for now */
00595         struct sector_struct sector[16];                /* all sectors */
00596 #endif
00597 } Edt_prominfo ;
00598 
00599 #define MAX_DMA_BUFFERS 1024
00600 
00601 typedef struct {
00602 
00603     int size;
00604 
00605     int allocated_size;
00606 
00607 
00608 #if defined(__sun)
00609 
00610     thread_t ring_tid;
00611 
00612 #endif
00613 
00614     char write_flag;
00615 
00616  
00617     char owned;
00618 
00619 } EdtRingBuffer;
00620 
00621 typedef struct _dma_data_block {
00622     u_int buffernum;
00623     u_char *pointer;
00624     u_int  offset;
00625     u_int  length;
00626 } EdtDMADataBlock;
00627 
00628 #define EDT_SS_TYPE 1
00629 #define EDT_GS_TYPE 2
00630 #define EDT_CD_TYPE 3
00631 
00632 
00633 
00634 
00635 typedef struct _optionstr_fields {
00636    int  board_type;
00637     int  DMA_channels;
00638     char mezzanine_type[68];
00639     char filename[68];
00640     int  version_number;
00641     int  rev_number;
00642     char date[12];
00643     int  custom_DMA_channels;
00644     int  available_DMA_channels;
00645 } EdtOptionStringFields;
00646 
00647 typedef struct _EdtBitfileDescriptor {
00648     edt_bitpath bitfile_name;
00649     edt_bitpath mezz_name0;
00650     edt_bitpath mezz_name1;
00651     char optionstr[68];
00652     char mezz_optionstr0[32];
00653     char mezz_optionstr1[32];
00654 
00655     EdtOptionStringFields ostr;
00656 
00657     int  revision_register;
00658     int  string_type;
00659 
00660 } EdtBitfileDescriptor;
00661 
00662 typedef struct edt_device {
00663 #ifdef __APPLE__
00664     u_int               fd;
00665 #else
00666     HANDLE              fd ;           /* file descriptor of opened device     */
00667 #endif
00668     u_int               unit_no ;
00669     u_int               spi_reg_base ; /* Base address for SPI_ access registers (0 specifies default of 0x60) */
00670     uint_t              devid ;
00671     uint_t              devtype ;          /* 0 == PCI; 1 == USB; ... */
00672     uint_t              todo;          /* n buffers started            */
00673     uint_t              b_count;       /* per open byte counter for edt_read/write */
00674 
00675     /* flags for each ring buffer */
00676     EdtRingBuffer       rb_control[MAX_DMA_BUFFERS];
00677 
00678     /* addresses kept in own array for backward compatibility */
00679 
00680     unsigned char * ring_buffers[MAX_DMA_BUFFERS];
00681 
00682     unsigned char *     tmpbuf;          /* for interlace merging, etc. */
00683 
00684     uint_t              tmpbufsize;
00685 
00686     char                edt_devname[64] ;
00687     uint_t              cursample ;
00688     uint_t              minchunk ;
00689     bufcnt_t            donecount ;
00690     uint_t              nextwbuf ;     /* for edt_next_writebuf      */
00691 
00692     uint_t              ring_buffer_numbufs ;
00693     uint_t              ring_buffer_bufsize ;
00694     uint_t              ring_buffers_allocated ;
00695     uint_t              ring_buffers_configured ;
00696     uint_t              loops ;
00697     uint_t              ring_buffer_allocated_size ; /* if rounded up to page boundaries */
00698 
00699     uint_t              write_flag ;
00700 
00701     uint_t              foi_unit;
00702 
00703     uint_t              debug_level ;
00704     Dependent           *dd_p ;   /* device dependent struct        */
00705     void                *Pdma_p;  /* Pdma struct when Pdma used     */
00706 
00707     u_char *            data_end; /* end of base_buffer + 1 */
00708 
00709     /* For callback rountines */
00710 
00711     EdtEventHandler     event_funcs[EDT_MAX_KERNEL_EVENTS];
00712     u_int               use_RT_for_event_func ;
00713 
00714 
00715     u_int channel_no;
00716 
00717     /* Use this for allocating all ring-buffers in a single chunk (w/possible headers before or 
00718        after the ring-buffers). This is useful when trying to DMA into multiple ring-buffers which
00719        can be written/read as a block to a file*/
00720 
00721     unsigned char *     base_buffer;
00722 
00723     u_int               header_size;
00724     int                 header_offset;
00725 
00726     u_int               pending_samples; /* dma samples */
00727 
00728     int                 hubidx;
00729     volatile caddr_t    mapaddr;
00730 
00731     void *              pInterleaver; /* for post-processing data, such as deinterleaving image */
00732 
00733     unsigned char *output_base;
00734     unsigned char **output_buffers; /* for results from post-processing */
00735 
00736 #ifdef USB
00737     usb_dev_handle *usb_p ;
00738     int usb_bulk_read_endpoint ;
00739     int usb_bulk_write_endpoint ;
00740     int usb_rtimeout ;
00741     int usb_wtimeout ;
00742 #endif
00743 
00744     u_int buffer_granularity;
00745     u_int mmap_buffers;
00746     u_int totalsize;
00747     u_int               fullbufsize;
00748 
00749     /* low-latency dma routine fields
00750      * If we didn't need compatibility this could be a lot cleaner
00751     */
00752 
00753     EdtDMADataBlock     *blocks;
00754 
00755     double              last_buffer_time;
00756     double              next_sample;
00757     u_int               period;
00758      
00759     u_char *            last_sample_end;
00760 
00761     u_char              wait_mode;
00762     u_char              freerun;
00763 
00764     u_char              DMA_channels;
00765 
00766     EdtBitfileDescriptor bfd;
00767         EdtMezzDescriptor mezz;
00768 
00769     char                last_direction;
00770 
00771 } EdtDev;
00772 
00773 
00774 
00775 /* Function declarations for EdtDev */
00776 
00777 
00778 
00779 #ifdef _NT_
00780 
00781 #define EDTAPI __declspec(dllexport)
00782 
00783 #ifdef LIBDLL
00784 
00785 #define EDTIMPORT __declspec(dllimport)
00786 
00787 #else
00788 
00789 #define EDTIMPORT
00790 
00791 #endif
00792 
00793 #define strncasecmp strnicmp
00794 #define strcasecmp stricmp
00795 
00796 #else
00797 
00798 #define EDTAPI
00799 #define EDTIMPORT
00800 
00801 #endif
00802 
00803 /* Header file for functions exported by libedt */
00804 
00809 EDTAPI EdtDev *        edt_open(char *device_name, int unit) ;
00810 EDTAPI EdtDev *        edt_open_quiet(char *device_name, int unit) ;
00811 EDTAPI EdtDev *        edt_open_channel(char *device_name, int unit, int channel) ;
00812 EDTAPI int             edt_close(EdtDev *edt_p) ;
00813  /* end updown group */
00815 
00819 EDTAPI int             edt_read(EdtDev *edt_p, void *buf, uint_t size) ;
00820 EDTAPI int             edt_write(EdtDev *edt_p, void *buf, uint_t size) ;
00821 
00822 EDTAPI int             edt_configure_ring_buffers(EdtDev *edt_p, int bufsize, 
00823                                                   int numbufs, int write_flag, 
00824                                                   unsigned char **bufarray) ;
00825 
00826 EDTAPI int             edt_configure_block_buffers_mem(EdtDev *edt_p, int bufsize, 
00827                                                        int numbufs, int write_flag, 
00828                                                        int header_size, int header_before,
00829                                                        u_char *user_mem);
00830 EDTAPI int             edt_configure_block_buffers(EdtDev *edt_p, int bufsize, 
00831                                                    int numbufs, int write_flag, 
00832                                                    int header_size, int header_before);
00833                                            
00834 
00835 EDTAPI int             edt_disable_ring_buffers(EdtDev *edt_p) ;
00836 
00837 EDTAPI int              edt_get_numbufs(EdtDev *edt_p);
00838 
00839 EDTAPI int                              edt_reset_ring_buffers(EdtDev *edt_p, uint_t bufnum);
00840 EDTAPI int                              edt_abort_dma(EdtDev *edt_p);
00841 EDTAPI int                              edt_abort_current_dma(EdtDev *edt_p);
00842 EDTAPI int                              edt_stop_buffers(EdtDev *edt_p);
00843 EDTAPI int                              edt_start_buffers(EdtDev *edt_p, uint_t count);
00844 
00845 
00846 EDTAPI int     edt_set_buffer_size(EdtDev *edt_p,
00847                                    uint_t which_buf,
00848                                    uint_t size,
00849                                    uint_t write_flag);
00850 
00851 EDTAPI unsigned int             edt_allocated_size(EdtDev *edt_p, int bufnum);
00852 EDTAPI int              edt_get_total_bufsize(EdtDev *edt_p,
00853                                               int bufsize, 
00854                                               int header_size);
00855 
00856 EDTAPI unsigned char   *edt_wait_for_buffers(EdtDev *edt_p, int count) ;
00857 
00858 
00859 EDTAPI int                 edt_ref_tmstamp(EdtDev *edt_p, u_int val) ;
00860 EDTAPI int                         edt_get_timestamp(EdtDev *edt_p, u_int *timep, u_int bufnum) ;
00861 EDTAPI int                         edt_get_reftime(EdtDev *edt_p, u_int *timep) ;
00862 EDTAPI unsigned char   *edt_wait_for_next_buffer(EdtDev *edt_p);
00863 EDTAPI unsigned char   *edt_last_buffer_timed(EdtDev *edt_p, u_int *timep) ;
00864 EDTAPI unsigned char   *edt_last_buffer(EdtDev *edt_p) ;
00865 EDTAPI unsigned char   *edt_wait_buffers_timed(EdtDev *edt_p, int count, u_int *timep);
00866 EDTAPI int             edt_set_buffer(EdtDev *edt_p, uint_t bufnum) ;
00867 EDTAPI unsigned char*  edt_next_writebuf(EdtDev    *edt_p) ;
00868 EDTAPI unsigned char** edt_buffer_addresses(EdtDev *edt_p) ;
00869 EDTAPI unsigned char * edt_get_current_dma_buf(EdtDev * edt_p);
00870 
00871 EDTAPI bufcnt_t        edt_done_count(EdtDev   *edt_p) ;
00872 EDTAPI unsigned char * edt_check_for_buffers(EdtDev *edt_p, uint_t count);
00873 
00874 EDTAPI uint_t                   edt_get_bytecount(EdtDev *edt_p) ;
00875 EDTAPI uint_t                   edt_get_timecount(EdtDev *edt_p) ;
00876 EDTAPI void                             edt_set_direction(EdtDev *edt_p, int direction) ;
00877 EDTAPI uint_t edt_get_timeout_count(EdtDev *edt_p);
00878 EDTAPI unsigned short  edt_get_direction(EdtDev *edt_p) ;
00879 
00880 EDTAPI void            edt_startdma_reg(EdtDev *edt_p, uint_t  desc, uint_t val) ;
00881 EDTAPI void            edt_enddma_reg(EdtDev *edt_p, uint_t    desc, uint_t val) ;
00882 EDTAPI void            edt_startdma_action(EdtDev *edt_p, uint_t   val) ;
00883 EDTAPI void            edt_enddma_action(EdtDev *edt_p, uint_t val) ;
00884 
00885 EDTAPI void edt_read_start_action(EdtDev * edt_p, u_int enable, u_int reg_desc,
00886                     u_char set, u_char clear, u_char setclear, u_char clearset, int delay1, int delay2);
00887 EDTAPI void edt_read_end_action(EdtDev * edt_p, u_int enable, u_int reg_desc,
00888                     u_char set, u_char clear, u_char setclear, u_char clearset, int delay1, int delay2);
00889 EDTAPI void edt_write_start_action(EdtDev * edt_p, u_int enable, u_int reg_desc,
00890                     u_char set, u_char clear, u_char setclear, u_char clearset, int delay1, int delay2);
00891 EDTAPI void edt_write_end_action(EdtDev * edt_p, u_int enable, u_int reg_desc,
00892                     u_char set, u_char clear, u_char setclear, u_char clearset, int delay1, int delay2);
00893 
00894 EDTAPI int                              edt_set_timeout_action(EdtDev *edt_p, u_int action);
00895 EDTAPI int                      edt_get_timeout_goodbits(EdtDev *edt_p);
00896 EDTAPI int                      edt_get_goodbits(EdtDev *edt_p);
00897 
00898 EDTAPI int                              edt_set_event_func(EdtDev *edt_p, int event_type, EdtEventFunc f, void *data, int continuous) ;
00899 EDTAPI int                              edt_remove_event_func(EdtDev *edt_p, int event_type) ;
00900 
00901 EDTAPI uint_t           edt_get_todo(EdtDev *edt_p) ;
00902 EDTAPI int             edt_ring_buffer_overrun(EdtDev *edt_p) ;
00903  /* end dma_inout */
00905 
00906 /* Internal or obsolete, etc. - we don't want to document these. */
00907 EDTAPI int             edt_configure_channel_ring_buffers(EdtDev *edt_p,
00908                                                           int bufsize, int numbufs, int write_flag,
00909                                                           unsigned char **bufarray) ;
00910 EDTAPI int                              edt_disable_ring_buffer(EdtDev *edt_p, 
00911                                                                 int nIndex);
00912 EDTAPI int             edt_cancel_current_dma(EdtDev *edt_p) ;
00913 EDTAPI int             edt_user_dma_wakeup(EdtDev *edt_p);
00914 EDTAPI int             edt_had_user_dma_wakeup(EdtDev *edt_p);
00915 
00919 EDTAPI uint_t          edt_reg_read(EdtDev *edt_p, uint_t desc) ;
00920 EDTAPI void            edt_reg_write(EdtDev *edt_p, uint_t desc, uint_t val) ;
00921 EDTAPI uint_t          edt_reg_or(EdtDev *edt_p, uint_t desc, uint_t val) ;
00922 EDTAPI uint_t          edt_reg_and(EdtDev *edt_p, uint_t desc, uint_t val) ;
00923 EDTAPI void          edt_reg_clearset(EdtDev *edt_p, uint_t desc, uint_t val) ;
00924 EDTAPI void          edt_reg_setclear(EdtDev *edt_p, uint_t desc, uint_t val) ;
00925 EDTAPI void            edt_intfc_write(EdtDev *edt_p, uint_t offset, uchar_t val) ;
00926 EDTAPI uchar_t         edt_intfc_read(EdtDev *edt_p, uint_t    offset) ;
00927 EDTAPI void            edt_intfc_write_short(EdtDev *edt_p, uint_t offset, u_short val) ;
00928 EDTAPI u_short         edt_intfc_read_short(EdtDev *edt_p, uint_t offset) ;
00929 EDTAPI void            edt_intfc_write_32(EdtDev   *edt_p, uint_t offset,  uint_t val) ;
00930 EDTAPI uint_t          edt_intfc_read_32(EdtDev *edt_p, uint_t offset) ;
00931  /* end dma_control */
00936 EDTAPI void                             edt_flush_fifo(EdtDev *edt_p) ;
00937 EDTAPI int                              edt_set_firstflush(EdtDev *edt_p, int val)      ;
00938 EDTAPI int                              edt_get_firstflush(EdtDev *edt_p) ;
00939 EDTAPI void             edt_flush_channel(EdtDev * edt_p, int channel) ;
00940  /* end dma_fifo */
00942 
00943 
00944 EDTAPI int             edt_get_wait_status(EdtDev *edt_p);
00945 EDTAPI int             edt_set_timeout_ok(EdtDev *edt_p, int val);
00946 EDTAPI int             edt_get_timeout_ok(EdtDev *edt_p);
00947 
00948 
00949 /* for a while it was called "eodma_sig" */
00950 EDTAPI void                             pcd_set_funct(EdtDev *edt_p, uchar_t val)       ;
00951 EDTAPI int                              edt_set_eodma_int(EdtDev *edt_p, int sig) ;
00952 EDTAPI int                              edt_set_autodir(EdtDev  *edt_p, int     val) ;
00953 
00954 
00955 EDTAPI int             edt_send_msg(EdtDev *edt_p, int unit, char *msg, int size) ;
00956 EDTAPI int             edt_get_msg(EdtDev *edt_p, char *msgbuf, int maxsize) ;
00957 EDTAPI int             edt_get_msg_unit(EdtDev *edt_p, char *msgbuf, int maxsize, int unit) ;
00958 EDTAPI int             edt_serial_wait(EdtDev *edt_p, int size, int timeout) ;
00959 
00960 EDTAPI void            edt_send_dma(EdtDev *edt_p, int unit, uint_t    start_val) ;
00961 EDTAPI int             edt_wait_avail(EdtDev *edt_p) ;
00962 EDTAPI void            edt_init_mac8100(EdtDev *edt_p) ;
00963 EDTAPI u_short         edt_read_mac8100(EdtDev *edt_p, uint_t add) ;
00964 EDTAPI void            edt_write_mac8100(EdtDev *edt_p, uint_t add, u_short data) ;
00965 
00966 EDTAPI int             edt_get_dependent(EdtDev *edt_p, void *addr) ;
00967 EDTAPI int             edt_set_dependent(EdtDev *edt_p, void *addr) ;
00968 
00969 EDTAPI int             edt_flush_resp(EdtDev *edt_p) ;
00970 EDTAPI int             edt_get_tracebuf(EdtDev *edt_p, uint_t *addr)   ;
00971 EDTAPI int             edt_set_flush(EdtDev *edt_p, int val) ;
00975 EDTAPI int             edt_timeouts(EdtDev *edt_p) ; /* end dma_inout */
00977 
00978 
00979 EDTAPI void            edt_flush_mode(EdtDev *edt_p, uint_t    val) ;
00980 
00981 EDTAPI void            edt_check_foi(EdtDev *edt_p) ;
00982 EDTAPI void            edt_foi_autoconfig(EdtDev *edt_p) ;
00983 EDTAPI int             edt_set_foiunit(EdtDev *edt_p, int unit) ;
00984 EDTAPI int             edt_get_foiunit(EdtDev *edt_p) ;
00985 
00986 EDTAPI int             edt_set_rci_dma(EdtDev *edt_p, int unit, int channel) ;
00987 EDTAPI int             edt_get_rci_dma(EdtDev *edt_p, int unit) ;                       
00988 EDTAPI int             edt_set_rci_chan(EdtDev *edt_p, int unit, int channel) ;
00989 EDTAPI int             edt_get_rci_chan(EdtDev *edt_p, int unit) ;
00990 
00991 
00992 EDTAPI void            edt_reset_counts(EdtDev *edt_p) ;
00993 EDTAPI void            edt_reset_serial(EdtDev *edt_p) ;
00994 EDTAPI int             edt_set_foicount(EdtDev *edt_p, int count) ;
00995 EDTAPI int             edt_get_foicount(EdtDev *edt_p) ;
00996 
00997 
00998 EDTAPI int             edt_set_debug(EdtDev *edt_p, int count) ;
00999 EDTAPI int             edt_get_debug(EdtDev *edt_p) ;
01000 
01001 
01006 EDTAPI int             edt_set_burst_enable(EdtDev *edt_p, int on) ;
01007 EDTAPI int             edt_get_burst_enable(EdtDev *edt_p) ;
01008 
01009 EDTAPI int             edt_set_rtimeout(EdtDev *edt_p, int value) ;
01010 EDTAPI int             edt_set_wtimeout(EdtDev *edt_p, int value) ;
01011 
01012 EDTAPI int             edt_get_rtimeout(EdtDev *edt_p) ;
01013 EDTAPI int             edt_get_wtimeout(EdtDev *edt_p) ; /* end dma_inout */
01015 
01016 EDTAPI void            edt_set_out_clk(EdtDev *edt_p, edt_pll *clk_data) ;
01017 EDTAPI u_char          edt_set_funct_bit(EdtDev    *edt_p, u_char mask) ;
01018 EDTAPI u_char          edt_clr_funct_bit(EdtDev    *edt_p, u_char mask) ;
01019 EDTAPI u_char          edt_set_pllct_bit(EdtDev * edt_p, u_char mask);
01020 EDTAPI u_char          edt_clr_pllct_bit(EdtDev * edt_p, u_char mask);
01021 EDTAPI int             edt_set_ignore_signals(EdtDev *edt_p, int ignore);
01022 
01023 
01024 
01025 
01026 
01027 
01028 
01032 EDTAPI int             edt_device_id(EdtDev *edt_p);
01033 EDTAPI char *          edt_idstr(int id) ;
01034 EDTAPI uchar_t *       edt_alloc(int size) ;
01035 EDTAPI void            edt_free(uchar_t *ptr) ;
01036 EDTAPI int                         edt_access(char *fname, int perm) ;
01037 EDTAPI int                         edt_parse_unit(const char *str, char *dev, const char *default_dev) ;
01038 EDTAPI int                         edt_parse_unit_channel(const char *str, char *dev, 
01039                                                           const char *default_dev,
01040                                                           int *channel) ;
01041 EDTAPI int             edt_access(char *fname, int perm);
01042 EDTAPI void            edt_correct_slashes(char *str);
01043 EDTAPI void            edt_fwd_to_back(char *str);
01044 EDTAPI void            edt_back_to_fwd(char *str);
01045 EDTAPI int             edt_find_xpn(char *partnum, char *xilinx);
01046 EDTAPI uint_t          edt_overflow(EdtDev *edt_p) ;
01047 EDTAPI void            edt_perror(char *str) ;
01048 EDTAPI u_int           edt_errno(void) ;
01049 
01050 EDTAPI char *           edt_timestring(u_int *timep) ;
01051 EDTAPI int             edt_system(const char *cmdstr) ;
01052 EDTAPI int              edt_fix_millennium(char *str, int rollover);
01053 
01054 EDTAPI char             *edt_fmt_pn(char *pn, char *pn_str);
01055 EDTAPI int              edt_parse_esn(char *str, Edt_embinfo *ei);
01056 EDTAPI void             edt_get_sns(EdtDev *edt_p, char *esn, char *osn);
01057 EDTAPI void             edt_get_sns_sector(EdtDev *edt_p, char *esn, char *osn, int sector);
01058 EDTAPI void             edt_get_osn(EdtDev *edt_p, char *osn);
01059 EDTAPI void             edt_get_esn(EdtDev *edt_p, char *esn);
01060 
01061 EDTAPI DIRHANDLE edt_opendir(char *dirname);
01062 EDTAPI int edt_readdir(DIRHANDLE h, char *name);
01063 EDTAPI void edt_closedir(DIRHANDLE h);
01064 
01065 
01066 /* System time functions */
01067 EDTAPI double          edt_dtime(void);
01068 EDTAPI double          edt_timestamp(void);
01069 EDTAPI double          edt_elapsed(u_char reset);
01070 
01071 EDTAPI void            edt_msleep(int  msecs) ;
01072 EDTAPI void            edt_usleep(int  usecs) ;
01073 EDTAPI void             edt_usec_busywait(u_int usec);
01074 
01075 
01076 /* Subroutines to set driver last bitfile loaded; used in bitload */
01077 EDTAPI int             edt_set_bitpath(EdtDev *edt_p, const char *bitpath) ;
01078 EDTAPI int             edt_get_bitpath(EdtDev *edt_p, char *bitpath, int size) ;
01079 EDTAPI int             edt_set_mezz_chan_bitpath(EdtDev *edt_p, const char *bitpath, int channel) ;
01080 EDTAPI int             edt_get_mezz_chan_bitpath(EdtDev *edt_p, char *bitpath, int size, int channel) ;
01081 EDTAPI int             edt_set_mezz_bitpath(EdtDev *edt_p, const char *bitpath) ;
01082 EDTAPI int             edt_get_mezz_bitpath(EdtDev *edt_p, char *bitpath, int size) ;
01083 
01084 EDTAPI char *          edt_get_last_bitpath(EdtDev *edt_p);
01085 
01086 EDTAPI u_int           edt_get_full_board_id(EdtDev *edt_p,
01087                                                 int *extended_n,
01088                                                 int *rev_id,
01089                                                 u_int *extended_data);
01090 
01091 EDTAPI u_int           edt_get_board_id(EdtDev *edt_p);
01092 
01093 
01094 EDTAPI int         edt_get_driver_version(EdtDev *edt_p, 
01095                                           char *versionstr,
01096                                           int size);
01097 
01098 EDTAPI int         edt_get_driver_buildid(EdtDev *edt_p, 
01099                                           char *build, 
01100                                           int size);
01101 
01102 EDTAPI int         edt_get_library_version(EdtDev *edt_p, 
01103                                            char *versionstr,
01104                                            int size);
01105 
01106 EDTAPI int         edt_get_library_buildid(EdtDev *edt_p, 
01107                                            char *build, 
01108                                            int size);
01109 
01110 EDTAPI int      edt_check_version(EdtDev *edt_p); 
01111 EDTAPI int      edt_get_kernel_event(EdtDev *edt_p, int event_num);
01112 EDTAPI u_int    edt_get_dma_info(EdtDev * edt_p, edt_dma_info *dmainfo);
01113  /* end dma_utility */
01115 
01116 EDTAPI int      edt_pci_reboot(EdtDev *edt_p); 
01117 EDTAPI int      edt_set_merge(EdtDev * edt_p, u_int size, int span, u_int offset, u_int count) ;
01118 
01119 EDTAPI void            edt_set_buffer_granularity(EdtDev *edt_p, 
01120                                                   u_int granularity);
01121 
01122 EDTAPI void            edt_reset_fifo(EdtDev *) ;
01123 
01124 EDTAPI u_int           edt_set_sgbuf(EdtDev *edt_p, u_int sgbuf, u_int bufsize, 
01125                                      u_int bufdir, u_int verbose) ;
01126 EDTAPI u_int           edt_set_sglist(EdtDev *edt_p, u_int bufnum, 
01127                                       u_int *log_list, u_int log_entrys) ;
01128 
01129 EDTAPI int                              edt_lockoff(EdtDev *edt_p) ;
01130 
01131 EDTAPI int             edt_enable_event(EdtDev *edt_p, int event_type) ;
01132 EDTAPI int             edt_reset_event_counter(EdtDev * edt_p, int event_type) ;
01133 EDTAPI int             edt_wait_event(EdtDev *edt_p, int event_type, 
01134                                       int timeoutval) ;
01135 EDTAPI void            edt_dmasync_fordev(EdtDev *edt, int bufnum, int offset,
01136                                           int bytecount) ;
01137 EDTAPI void            edt_dmasync_forcpu(EdtDev *edt, int bufnum, int offset,
01138                                           int bytecount) ;
01139 EDTAPI u_int           edt_get_bufbytecount(EdtDev * edt_p, u_int *cur_buffer) ;
01140 EDTAPI int             edt_little_endian(void) ;
01141 /* deal with a hardware timeout */
01146 EDTAPI int             edt_do_timeout(EdtDev *edt_p); /* end dma_inout */
01148 EDTAPI int             edt_set_continuous(EdtDev *edt_p, int on) ;
01149 EDTAPI void            edt_resume(EdtDev *edt_p) ;
01150 EDTAPI void            edt_set_timetype(EdtDev *edt_p, u_int type) ;
01151 EDTAPI caddr_t         edt_mapmem(EdtDev *edt_p, u_int addr, int size) ;
01152 EDTAPI u_int           edt_get_mappable_size(EdtDev *edt_p); /* get the size of the second address space */
01153 EDTAPI u_int           edt_get_drivertype(EdtDev *edt_p) ;
01154 EDTAPI int             edt_set_drivertype(EdtDev *edt_p, u_int type) ;
01155 EDTAPI void            edt_set_abortintr(EdtDev *edt_p, u_int val) ;
01156 
01157 EDTAPI int edt_write_pio(EdtDev *edt_p, u_char *buf, int size);
01158 
01159 EDTAPI int edt_set_max_buffers(EdtDev *edt_p, int newmax);
01160 EDTAPI int edt_get_max_buffers(EdtDev *edt_p);
01161 
01162 EDTAPI int edt_set_kernel_buffers(EdtDev *edt_p, int onoff);
01163 EDTAPI int edt_get_kernel_buffers(EdtDev *edt_p);
01164 EDTAPI int edt_set_persistent_buffers(EdtDev *edt_p, int onoff);
01165 EDTAPI int edt_get_persistent_buffers(EdtDev *edt_p);
01166 EDTAPI int edt_set_mmap_buffers(EdtDev *edt_p, int onoff);
01167 EDTAPI int edt_get_mmap_buffers(EdtDev *edt_p);
01168 
01169 EDTAPI int edt_get_kernel_alloc(EdtDev *edt_p, int pool);
01170 
01171 EDTAPI void edt_set_dump_reg_access(int on);
01172 
01173 #ifdef __sun
01174 EDTAPI void            edt_set_RT(u_int pri) ;
01175 EDTAPI int             edt_use_umem_lock(EdtDev *edt_p, u_int use_lock) ;
01176 EDTAPI int             edt_get_umem_lock(EdtDev *edt_p) ;
01177 #endif
01178 
01179 EDTAPI void   edt_x_byte_program(EdtDev *edt_p, u_int addr, u_char data, int isbt);
01180 EDTAPI void   edt_x_block_program(EdtDev *edt_p, u_int addr, u_char *data, int nbytes, int xtype);
01181 EDTAPI void   edt_x_verify(EdtDev *edt_p, u_int addr, u_char *data, int nbytes, int xtype);
01182 EDTAPI void   edt_x_reset(EdtDev * edt_p, int isbt);
01183 EDTAPI void   edt_x_print16(EdtDev * edt_p, u_int addr, int xtype);
01184 EDTAPI int    edt_x_prom_detect(EdtDev *edt_p, u_char *stat, int verbose);
01185 EDTAPI Edt_prominfo *edt_get_prominfo(int promcode);
01186 EDTAPI int    edt_get_max_promcode();
01187 EDTAPI u_char edt_x_read(EdtDev * edt_p, u_int addr, int xtype);
01188 EDTAPI int    edt_ltx_hub(EdtDev *edt_p);
01189 EDTAPI void   edt_ltx_reboot(EdtDev *edt_p);
01190 EDTAPI int edt_check_ltx_hub(EdtDev *edt_p);
01191 EDTAPI void edt_set_ltx_hub(EdtDev *edt_p, int hub);
01192 EDTAPI u_int edt_get_id_addr(int promcode, int segment);
01193 EDTAPI u_int edt_get_id_addrs(EdtDev *edt_p, int promcode, int segment, u_int *osn_addr, u_int *esn_addr);
01194 EDTAPI int edt_program_xilinx(EdtDev *edt_p, const u_char *buf, int size, int do_sleep);
01195 int edt_program_xilinx_start(EdtDev *edt_p);
01196 void edt_program_xilinx_chunk(EdtDev *edt_p, const u_char *buf, int xfer, int do_sleep);
01197 int edt_program_xilinx_end(EdtDev *edt_p);
01198 EDTAPI long edt_get_x_file_header(char *fname, char *header, int *size);
01199 EDTAPI long edt_get_x_file_header_magic(char *fname, char *header, int *size, int *magic);
01200 EDTAPI int edt_get_x_array_header_rstat(u_char *ba, char *header, int *size);
01201 EDTAPI u_char *edt_get_x_array_header(u_char *ba, char *header, int *size);
01202 EDTAPI u_char *edt_get_x_array_header_magic(u_char *ba, char *header, int *size, int *magic);
01203 EDTAPI int edt_get_x_header_magic(FILE *fp, char *header, int *size, int *magic);
01204 EDTAPI void edt_readinfo(EdtDev *edt_p, int promcode, int segment, char *id, char *edtsn, char *oemsn);
01205 EDTAPI void edt_x_getname(EdtDev *edt_p, int promcode, char *name);
01206 EDTAPI void edt_x_getname_auto(EdtDev *edt_p, int promcode, char *name);
01207 EDTAPI int edt_ltx_prom_detect(EdtDev *edt_p, u_char *stat, u_int *frb, int verbose);
01208 EDTAPI Edt_bdinfo *edt_detect_boards(char *dev, int unit, int *nunits, int verbose);
01209 EDTAPI Edt_bdinfo *edt_detect_boards_id(char *dev, int unit, u_int id, int *nunits, int verbose);
01210 EDTAPI Edt_bdinfo *edt_detect_boards_ids(char *dev, int unit, u_int *ids, int *nunits, int verbose);
01211 EDTAPI Edt_bdinfo *edt_detect_boards_filter(EdtBdFilterFunction filter, void *data, int *nunits, int verbose);
01212 
01213 EDTAPI int edt_sector_erase(EdtDev *edt_p, u_int sector, u_int sec_size, int type);
01214 
01215 EDTAPI int edt_prom_detect(EdtDev *edt_p, u_char *stat, int verbose);
01216 
01217 /* routines to enable/disable register accesses tracing in the driver */
01218 
01219 EDTAPI void edt_set_trace_regs(EdtDev *edt_p, u_int reg_def, u_int state);
01220 
01221 EDTAPI void edt_trace_regs_enable(EdtDev *edt_p, u_int state);
01222 
01223 /*
01224  * routines for pciload instead of globals
01225  */
01226 EDTAPI void             edt_set_do_fast(int val) ;
01227 EDTAPI void             edt_set_force_slow(int val) ;
01228 EDTAPI int              edt_get_do_fast(void) ;
01229 EDTAPI int              edt_get_force_slow(void) ;
01230 EDTAPI int              edt_get_force(void) ;
01231 EDTAPI int              edt_get_debug_fast(void);
01232 EDTAPI int              edt_set_debug_fast(int val);
01233 EDTAPI u_char           edt_flipbits(u_char val);
01234 
01235 /* EDT_IOCTL definitions */
01236 EDTAPI int             edt_ioctl(EdtDev *, int code,   void *arg);
01237 EDTAPI int             edt_ioctl_nt(EdtDev *edt_p, int controlCode,
01238                                     void *inBuffer, int inSize, void *outBuffer,
01239                                     int outSize, int *bytesReturned) ;
01240 
01241 
01242 EDTAPI uchar_t          pcd_get_funct(EdtDev *edt_p) ;
01243 EDTAPI void             pcd_set_byteswap(EdtDev *edt_p, int val) ;
01244 EDTAPI int              pcd_set_statsig(EdtDev  *edt_p, int sig) ;
01245 EDTAPI uchar_t          pcd_get_stat(EdtDev *edt_p) ;
01246 EDTAPI uchar_t          pcd_get_stat_polarity(EdtDev *edt_p) ;
01247 EDTAPI void             pcd_set_stat_polarity(EdtDev *edt_p, uchar_t val)   ;
01248 EDTAPI unsigned char    pcd_get_cmd(EdtDev *edt_p) ;
01249 EDTAPI void             pcd_set_cmd(EdtDev *edt_p, uchar_t val) ;
01250 EDTAPI void             pcd_flush_channel(EdtDev * edt_p, int channel) ;
01251 
01252 #ifdef PCD
01253 EDTAPI u_char           pcd_get_option(EdtDev *edt_p) ;
01254 EDTAPI void             sse_shift(EdtDev *edt_p, int shift) ;
01255 EDTAPI double           sse_set_out_clk(EdtDev * edt_p, double fmhz) ;
01256 EDTAPI void             pcd_pio_init(EdtDev *edt_p) ;
01257 EDTAPI void             pcd_pio_flush_fifo(EdtDev * edt_p) ;
01258 EDTAPI int              pcd_pio_read(EdtDev *edt_p, u_char *buf, int size) ;
01259 EDTAPI int              pcd_pio_write(EdtDev *edt_p, u_char *buf, int size) ;
01260 EDTAPI void             pcd_pio_set_direction(EdtDev *edt_p, int direction) ;
01261 EDTAPI void             pcd_pio_intfc_write(EdtDev *, u_int, u_char)  ;
01262 EDTAPI u_char           pcd_pio_intfc_read(EdtDev *, u_int) ; 
01263 EDTAPI void             pcd_set_abortdma_onintr(EdtDev *edt_p, int flag) ;
01264 
01265 #endif /* PCD */
01266 
01267 #ifdef P16D
01268 EDTAPI void                     p16d_set_command(EdtDev *edt_p, u_short val) ;
01269 EDTAPI void                     p16d_set_config(EdtDev *edt_p, u_short val) ;
01270 EDTAPI u_short                  p16d_get_stat(EdtDev *edt_p) ;
01271 EDTAPI u_short                  p16d_get_command(EdtDev *edt_p) ;
01272 EDTAPI u_short                  p16d_get_config(EdtDev *edt_p) ;
01273 #endif /* P16D */
01274 
01275 #ifdef P11W
01276 EDTAPI void                     p11w_set_command(EdtDev *edt_p, u_short val) ;
01277 EDTAPI void                     p11w_set_config(EdtDev *edt_p, u_short val) ;
01278 EDTAPI void                     p11w_set_data(EdtDev *edt_p, u_short val) ;
01279 EDTAPI u_short                  p11w_get_command(EdtDev *edt_p) ;
01280 EDTAPI u_short                  p11w_get_config(EdtDev *edt_p) ;
01281 EDTAPI u_short                  p11w_get_stat(EdtDev *edt_p) ;
01282 EDTAPI u_short                  p11w_get_data(EdtDev *edt_p) ;
01283 EDTAPI u_int                    p11w_get_count(EdtDev *edt_p) ;
01284 EDTAPI void                     p11w_abortdma_onattn(EdtDev *edt_p, int flag) ;
01285 EDTAPI void             p11w_set_abortdma_onintr(EdtDev *edt_p, int flag) ;
01286 
01287 #endif /* P11W */
01288 
01289 #ifdef P53B
01290 EDTAPI EdtDev         *p53b_open(int unit, int bus_element_descriptor) ;
01291 EDTAPI EdtDev         *p53b_open_generic(int unit) ;
01292 EDTAPI EdtDev         *p53b_rtopen_notactive(int unit, int bus_element_descriptor) ;
01293 EDTAPI int             p53b_rtactive(EdtDev *p53b_p, int active) ;
01294 EDTAPI int             p53b_ioctl(EdtDev *p53b_p, int action, void *arg) ;
01295 EDTAPI int             p53b_write(EdtDev *p53b_p, void *buf, int size) ;
01296 EDTAPI int             p53b_read(EdtDev *p53b_p, void *buf, int size) ;
01297 EDTAPI int             p53b_bm_read(EdtDev *p53b_p, void *buf, int size) ;
01298 EDTAPI int             p53b_load(EdtDev *p53b_p, void *addr, int size, int offset) ;
01299 EDTAPI int             p53b_close(EdtDev *p53b_p) ;
01300 EDTAPI void            p53b_perror(char *str) ;
01301 EDTAPI void            p53b_msleep(int msecs) ;
01302 EDTAPI int             p53b_rt_blockwrite(EdtDev *p53b_p, int sa, int count, u_short *buf);
01303 EDTAPI int             p53b_rt_blockread(EdtDev *p53b_p, int sa, int count, u_short *buf);
01304 EDTAPI int             p53b_rt_prep_blockwrite(EdtDev *p53b_p, int sa) ;
01305 EDTAPI int             p53b_rt_prep_blockread(EdtDev *p53b_p, int sa) ;
01306 EDTAPI int             p53b_rt_flush_block_sa(EdtDev *p53b_p, u_int sa);
01307 EDTAPI int             p53b_rt_flush_block_rcv(EdtDev *p53b_p);
01308 
01309 
01310 #endif /* P53B */
01311 
01312 #if defined(VXWORKS) || defined(TEST_VXWORKS)
01313 EDTAPI int             edt_vx_system_register_func(const char *funcstr, int (funcptr)(char *));
01314 #endif
01315 
01316 
01317 #endif  /* KERNEL */
01318 
01319 #define edt_set_eodma_sig(p, s) edt_set_eodma_int(p, s)
01320 
01321 #define EDTIO_V0 0
01322 #define EIO_ACTION_MASK 0x000003ff      /* action is low 10 bits */
01323 #define EIO_SIZE_MASK   0x00fffc00      /* mask off bits 10-23 */
01324 #define EIO_SET         0x02000000  /* set is bit 25 */
01325 #define EIO_GET     0x01000000  /* get is bit 24 */
01326 #define EIO_SET_MASK    EIO_SET     /* set mask is same as set */
01327 #define EIO_GET_MASK    EIO_GET     /* get mask is same as get */
01328 #define EIO_SIZE_SHIFT  10      /* size -- shift down 10 bits */
01329 #define EIO_TYPE_SHIFT  24      /* to get type, shift down 22 bits */
01330 #define EIO_DECODE_ACTION(code) (code & EIO_ACTION_MASK)
01331 #define EIODA(code) EIO_DECODE_ACTION(code) /* shorthand, looks better in case stmts */
01332 #define EIO_DECODE_SIZE(code)   ((code & EIO_SIZE_MASK) >> EIO_SIZE_SHIFT)
01333 #define EIO_DECODE_SET(code)    ((code & EIO_SET_MASK) != 0)
01334 #define EIO_DECODE_GET(code)    ((code & EIO_GET_MASK) != 0)
01335 
01336 
01337 #if defined(__sun) || defined (_NT_) || defined(VXWORKS) || defined(__APPLE__)
01338 
01339 #define EDT_NT_IOCTL        0xf000f000
01340 
01341 #endif
01342 
01343 #ifdef __linux__
01344 
01345 #define EDT_IOC_MAGIC  'k'
01346 
01347 #define EDT_NT_IOCTL    _IOWR(EDT_IOC_MAGIC, 1, edt_ioctl_struct)
01348 #define EDT_NT_IOCTL32  _IOWR(EDT_IOC_MAGIC, 1, edt_ioctl_struct32)
01349 
01350 #define EDT_IOC_MAXNR   2
01351 
01352 #endif /* __linux__ */
01353 
01354 /*
01355  * This structure must correspond to the next edt_ioctl_struct
01356  * in order for 32-bit programs to run under 64-bit Linux.
01357  * This workaround was done for ioctl backwards compatibility purposes.
01358  * Mark Mason - Aug 2007
01359  */
01360 
01361 typedef struct {
01362 #ifdef __APPLE__
01363     uint_t device ;
01364 #else
01365     HANDLE device ;
01366 #endif
01367     uint_t controlCode  ;
01368     uint_t inSize   ;
01369     uint_t outSize ;
01370     uint_t bytesReturned ;
01371     uint32_t inBuffer ;      /* userspace address */
01372     uint32_t outBuffer ;     /* userspace address */
01373 #if defined(__APPLE__)
01374     u_short unit ;
01375     u_short channel ;
01376 #endif
01377 } edt_ioctl_struct32 ;
01378 
01379 /*
01380  * This structure must correspond to the above edt_ioctl_struct32
01381  * in order for 32-bit programs to run under 64-bit Linux.
01382  * Mark Mason - Aug 2007
01383  */
01384 typedef struct {
01385 #ifdef __APPLE__
01386     uint_t device ;
01387 #else
01388     HANDLE device ;
01389 #endif
01390     uint_t controlCode  ;
01391     uint_t inSize   ;
01392     uint_t outSize ;
01393     uint_t bytesReturned ;
01394     void *inBuffer ;
01395     void *outBuffer ;
01396 #if defined(__APPLE__)
01397     u_short unit ;
01398     u_short channel ;
01399 #endif
01400 } edt_ioctl_struct ;
01401 
01402 
01403 /* for passing 2 args */
01404 /* moved to long for 64-bit */
01405 typedef struct
01406 {
01407     /* must be multiple of 64 bits for amd64 */
01408     uint64_t    value;
01409     uint_t      desc;
01410     uint_t      flags ;
01411 } edt_buf;
01412 
01413 
01414 /* for serial read and write */
01415 #define EDT_SERBUF_SIZE 2048
01416 #define EDT_SERBUF_OVRHD 16      /* size of all but buf */
01417 /* flags for serial */
01418 #define EDT_SERIAL_WAITRESP     1
01419 #define EDT_SERIAL_SAVERESP     2
01420 typedef struct
01421 {
01422     uint_t      unit;
01423     uint_t      size;
01424     uint_t      misc;
01425     uint_t      flags;
01426     char        buf[EDT_SERBUF_SIZE];
01427 } ser_buf;
01428 
01429 /* for describing ring buffer */
01430 typedef struct
01431 {
01432     uint64_t    addr ;
01433     uint_t      index ;
01434     uint_t         size ;
01435     uint_t         writeflag ;
01436 } buf_args;
01437 
01438 /* for specifying merging data between multiple boards or channels */
01439 /* or for flipping or interleaving image */
01440 typedef struct
01441 {
01442     uint_t      line_size ;
01443     int         line_span ;     /* can be negative */
01444     uint_t      line_offset ;
01445     uint_t      line_count ;
01446 } edt_merge_args;
01447 
01448 
01449 
01450 typedef struct {
01451     u_int addr ;
01452     u_int size ;
01453     u_int inc  ;
01454     u_int cnt  ;
01455     u_int mask ;
01456 } p53b_test ;
01457 
01458 #define SIZED_DATASIZE (EDT_DEPSIZE - sizeof(u_int))
01459 
01460 typedef struct {
01461     u_int size;
01462     u_int data[SIZED_DATASIZE/4];
01463 } edt_sized_buffer;
01464 
01465 #define EDT_DEVICE_TYPE     0x8000
01466 #ifdef METHOD_BUFFERED
01467 #define EDT_MAKE_IOCTL(t,c)\
01468     (uint_t)CTL_CODE((t),   0x800+(c),  METHOD_BUFFERED, FILE_ANY_ACCESS)
01469 #else
01470 #define EDT_MAKE_IOCTL(t,c)\
01471     (uint_t)(c)
01472 #endif
01473 
01474 #define EIOC(action, type, size) (((uint_t)type)    \
01475                 | (((uint_t)size) << EIO_SIZE_SHIFT) \
01476                 | ((uint_t)action))
01477 
01478 #define EDTS_DEBUG              EIOC(10, EIO_SET, sizeof(uint_t))
01479 #define EDTG_DEBUG              EIOC(11, EIO_GET, sizeof(uint_t))
01480 #define EDTS_INTFC              EIOC(12, EIO_SET, sizeof(edt_buf))
01481 #define EDTG_INTFC              EIOC(13, EIO_GET|EIO_SET, sizeof(edt_buf))
01482 #define EDTS_REG                EIOC(14, EIO_SET, sizeof(edt_buf))
01483 #define EDTG_REG                EIOC(15, EIO_GET|EIO_SET, sizeof(edt_buf))
01484 #define EDTS_FLASH              EIOC(16, EIO_SET, sizeof(edt_buf))
01485 #define EDTG_FLASH              EIOC(17, EIO_GET|EIO_SET, sizeof(edt_buf))
01486 #define EDT_PFLASH              EIOC(18, EIO_SET, sizeof(edt_buf))
01487 #define EDTS_PROG               EIOC(19, EIO_SET, sizeof(uint_t))
01488 #define EDTG_PROG               EIOC(20, EIO_GET, sizeof(uint_t))
01489 #define EDTS_PROG_READBACK      EIOC(21, EIO_SET, sizeof(uint_t))
01490 #define EDTG_PROG_READBACK      EIOC(22, EIO_GET, sizeof(uint_t))
01491 #define EDTS_HEIGHT             EIOC(23, EIO_SET, sizeof(uint_t))
01492 #define EDTG_HEIGHT             EIOC(24, EIO_GET, sizeof(uint_t))
01493 #define EDTS_DEPTH              EIOC(25, EIO_SET, sizeof(uint_t))
01494 #define EDTG_DEPTH              EIOC(26, EIO_GET, sizeof(uint_t))
01495 #define EDTS_TYPE               EIOC(27, EIO_SET, sizeof(uint_t))
01496 #define EDTG_TYPE               EIOC(28, EIO_GET, sizeof(uint_t))
01497 #define EDTS_SERIAL             EIOC(29, EIO_SET, sizeof(uint_t))
01498 #define EDTG_SERIAL             EIOC(30, EIO_GET, sizeof(uint_t))
01499 #define EDTS_DEPENDENT          EIOC(31, EIO_SET, EDT_DEPSIZE)
01500 #define EDTG_DEPENDENT          EIOC(32, EIO_GET, EDT_DEPSIZE)
01501 #define EDTG_DEVID              EIOC(33, EIO_GET, sizeof(uint_t))
01502 #define EDTS_RTIMEOUT           EIOC(34, EIO_SET, sizeof(uint_t))
01503 #define EDTS_WTIMEOUT           EIOC(35, EIO_SET, sizeof(uint_t))
01504 #define EDTG_BUFDONE            EIOC(36, EIO_GET, sizeof(bufcnt_t))
01505 #define EDTS_NUMBUFS            EIOC(37, EIO_SET, sizeof(int))
01506 #define EDTS_BUF                EIOC(38, EIO_SET, sizeof(buf_args))
01507 #define EDTS_STARTBUF           EIOC(39, EIO_SET, sizeof(uint_t))
01508 #define EDTS_WAITBUF            EIOC(40, EIO_SET|EIO_GET, sizeof(uint_t))
01509 #define EDTS_FREEBUF            EIOC(41, EIO_SET, sizeof(uint_t))
01510 #define EDTS_STOPBUF            EIOC(42, EIO_SET, sizeof(uint_t))
01511 #define EDTG_BYTECOUNT          EIOC(44, EIO_GET, sizeof(uint_t))
01512 #define EDTS_SETBUF             EIOC(45, EIO_SET, sizeof(int))
01513 #define EDTG_DEBUGVAL           EIOC(46, EIO_GET, sizeof(int))
01514 #define EDTG_TIMEOUTS           EIOC(47, EIO_GET, sizeof(int))
01515 #define EDTG_TRACEBUF           EIOC(48, EIO_GET, (EDT_TRACESIZE  * sizeof(int)))
01516 #define EDTS_STARTDMA           EIOC(49, EIO_SET, sizeof(edt_buf))
01517 #define EDTS_ENDDMA             EIOC(50, EIO_SET, sizeof(edt_buf))
01518 #define EDTS_FOIUNIT            EIOC(51, EIO_SET, sizeof(int))
01519 #define EDTG_FOIUNIT            EIOC(52, EIO_GET, sizeof(int))
01520 #define EDTS_FOICOUNT           EIOC(53, EIO_SET, sizeof(int))
01521 #define EDTG_FOICOUNT           EIOC(54, EIO_GET, sizeof(int))
01522 #define EDTG_RTIMEOUT           EIOC(55, EIO_GET, sizeof(uint_t))
01523 #define EDTG_WTIMEOUT           EIOC(56, EIO_GET, sizeof(uint_t))
01524 #define EDTS_EODMA_SIG          EIOC(57, EIO_SET, sizeof(uint_t))
01525 #define EDTS_SERIALWAIT         EIOC(58, EIO_SET|EIO_GET, sizeof(edt_buf))
01526 #define EDTS_EVENT_SIG          EIOC(59, EIO_SET, sizeof(edt_buf))
01527 #define EDTG_OVERFLOW           EIOC(60, EIO_GET, sizeof(u_int))
01528 #define EDTS_AUTODIR            EIOC(61, EIO_SET, sizeof(u_int))
01529 #define EDTS_FIRSTFLUSH         EIOC(62, EIO_SET, sizeof(u_int))
01530 #define EDTG_CONFIG_COPY        EIOC(63, EIO_GET|EIO_SET, sizeof(edt_buf))
01531 #define EDTG_CONFIG             EIOC(64, EIO_GET|EIO_SET, sizeof(edt_buf))
01532 #define EDTS_CONFIG             EIOC(65, EIO_SET, sizeof(edt_buf))
01533 #define P53B_REGTEST            EIOC(66, EIO_SET, sizeof(p53b_test))
01534 #define EDTG_LONG               EIOC(67, EIO_GET|EIO_SET, sizeof(edt_buf))
01535 #define EDTS_LONG               EIOC(68, EIO_SET, sizeof(edt_buf))
01536 #define EDTG_SGTODO             EIOC(69, EIO_GET, (EDT_TRACESIZE *  4))
01537 #define EDTG_SGLIST             EIOC(70, EIO_SET|EIO_GET, sizeof(buf_args))
01538 #define EDTS_SGLIST             EIOC(71, EIO_SET, sizeof(buf_args))
01539 #define EDTG_SGINFO             EIOC(72, EIO_SET|EIO_GET, sizeof(edt_buf))
01540 #define EDTG_TIMECOUNT          EIOC(73, EIO_GET, sizeof(uint_t))
01541 #define EDTG_PADDR              EIOC(74, EIO_GET, sizeof(uint_t))
01542 #define EDTS_SYNC               EIOC(75, EIO_SET, sizeof(uint_t))
01543 #define EDTS_WAITN              EIOC(76, EIO_SET, sizeof(uint_t))
01544 #define EDTS_STARTACT           EIOC(77, EIO_SET, sizeof(uint_t))
01545 #define EDTS_ENDACT             EIOC(78, EIO_SET, sizeof(uint_t))
01546 #define EDTS_RESETCOUNT         EIOC(79, EIO_SET, sizeof(uint_t))
01547 #define EDTS_RESETSERIAL        EIOC(80, EIO_SET, sizeof(uint_t))
01548 #define EDTS_CLR_EVENT          EIOC(81, EIO_SET, sizeof(uint_t))
01549 #define EDTS_ADD_EVENT_FUNC     EIOC(82, EIO_SET, sizeof(uint_t))
01550 #define EDTS_DEL_EVENT_FUNC     EIOC(83, EIO_SET, sizeof(uint_t))
01551 #define EDTS_WAIT_EVENT_ONCE    EIOC(84, EIO_SET, sizeof(uint_t))
01552 #define EDTS_WAIT_EVENT             EIOC(85, EIO_SET, sizeof(uint_t))
01553 #define EDTS_CLEAR_WAIT_EVENT   EIOC(86, EIO_SET, sizeof(uint_t))
01554 #define EDTG_TMSTAMP            EIOC(87, EIO_SET|EIO_GET, sizeof(uint_t) * 3)
01555 #define EDTS_TIMEOUT_ACTION     EIOC(88, EIO_SET, sizeof(uint_t))
01556 #define EDTG_TIMEOUT_GOODBITS   EIOC(89, EIO_GET, sizeof(uint_t))
01557 #define EDTS_BAUDBITS           EIOC(90, EIO_SET, sizeof(uint_t))
01558 #define EDTG_REFTIME            EIOC(91, EIO_GET, sizeof(uint_t) * 2)
01559 #define EDTS_REFTIME            EIOC(92, EIO_SET, sizeof(uint_t) * 2)
01560 #define EDTS_REG_OR             EIOC(93, EIO_SET|EIO_GET, sizeof(edt_buf))
01561 #define EDTS_REG_AND            EIOC(94, EIO_SET|EIO_GET, sizeof(edt_buf))
01562 #define EDTG_GOODBITS                   EIOC(95, EIO_GET, sizeof(uint_t))
01563 #define EDTS_BURST_EN                   EIOC(96, EIO_SET, sizeof(uint_t))
01564 #define EDTG_BURST_EN                   EIOC(97, EIO_GET, sizeof(uint_t))
01565 #define EDTG_FIRSTFLUSH         EIOC(98, EIO_GET, sizeof(u_int))
01566 #define EDTS_ABORT_BP                   EIOC(99, EIO_SET, sizeof(uint_t))
01567 #define EDTS_DMASYNC_FORDEV     EIOC(100, EIO_SET, sizeof(uint_t) * 3)
01568 #define EDTS_DMASYNC_FORCPU     EIOC(101, EIO_SET, sizeof(uint_t) * 3)
01569 #define EDTG_BUFBYTECOUNT       EIOC(102, EIO_GET, sizeof(uint_t) * 2)
01570 #define EDTS_DOTIMEOUT          EIOC(103, EIO_SET, sizeof(uint_t))
01571 #define EDTS_REFTMSTAMP         EIOC(104, EIO_SET, sizeof(uint_t))
01572 #define EDTS_PDVCONT            EIOC(105, EIO_SET, sizeof(uint_t))
01573 #define EDTS_PDVDPATH           EIOC(106, EIO_SET, sizeof(uint_t))
01574 #define EDTS_RESET_EVENT_COUNTER        EIOC(107, EIO_SET, sizeof(uint_t))
01575 #define EDTS_DUMP_SGLIST        EIOC(108, EIO_SET, sizeof(uint_t))
01576 #define EDTG_TODO              EIOC(109, EIO_GET, sizeof(u_int))
01577 #define EDTS_RESUME            EIOC(110, EIO_SET, sizeof(u_int))
01578 #define EDTS_TIMETYPE          EIOC(111, EIO_SET, sizeof(u_int))
01579 #define EDTS_EVENT_HNDL        EIOC(112, EIO_SET, sizeof(edt_buf))
01580 #define EDTS_MAX_BUFFERS           EIOC(113, EIO_SET, sizeof(u_int))
01581 #define EDTG_MAX_BUFFERS           EIOC(114, EIO_GET, sizeof(u_int))
01582 #define EDTS_WRITE_PIO             EIOC(115, EIO_SET, sizeof(edt_sized_buffer))
01583 #define EDTS_PROG_XILINX           EIOC(116, EIO_SET, sizeof(edt_sized_buffer))
01584 #define EDTS_MAPMEM            EIOC(117, EIO_GET | EIO_SET, sizeof(edt_buf))
01585 #define EDTS_ETEC_ERASEBUF_INIT    EIOC(118, EIO_SET, sizeof(uint_t) * 2)
01586 #define EDTS_ETEC_ERASEBUF         EIOC(119, EIO_SET, sizeof(u_int))
01587 #define EDTG_DRIVER_TYPE         EIOC(120, EIO_GET, sizeof(u_int))
01588 #define EDTS_DRIVER_TYPE         EIOC(121, EIO_SET, sizeof(u_int))
01589 #define EDTS_DRV_BUFFER        EIOC(122, EIO_SET | EIO_GET, sizeof(u_int))
01590 #define EDTS_ABORTINTR         EIOC(123, EIO_SET, sizeof(u_int))
01591 #define EDTS_CUSTOMER          EIOC(124, EIO_SET, sizeof(u_int))
01592 #define EDTS_ETEC_SET_IDLE     EIOC(125, EIO_SET, sizeof(u_int) * 3)
01593 #define EDTS_SOLARIS_DMA_MODE  EIOC(126, EIO_SET, sizeof(u_int))
01594 #define EDTS_UMEM_LOCK         EIOC(127, EIO_SET, sizeof(u_int))
01595 #define EDTG_UMEM_LOCK         EIOC(128, EIO_GET, sizeof(u_int))
01596 #define EDTS_RCI_CHAN          EIOC(129, EIO_SET, sizeof(edt_buf))
01597 #define EDTG_RCI_CHAN          EIOC(130, EIO_SET|EIO_GET, sizeof(edt_buf))
01598 #define EDTS_BITPATH           EIOC(140, EIO_SET, sizeof(edt_bitpath))
01599 #define EDTG_BITPATH           EIOC(141, EIO_GET, sizeof(edt_bitpath))
01600 #define EDTG_VERSION           EIOC(142, EIO_GET, sizeof(edt_version_string))
01601 #define EDTG_BUILDID           EIOC(143, EIO_GET, sizeof(edt_version_string))
01602 #define EDTS_WAITCHAR          EIOC(144, EIO_SET, sizeof(edt_buf))
01603 #define EDTS_PDMA_MODE         EIOC(145, EIO_SET, sizeof(u_int))
01604 #define EDTG_MEMSIZE           EIOC(146, EIO_GET, sizeof(u_int))
01605 #define EDTS_DIRECTION         EIOC(147, EIO_SET, sizeof(u_int))
01606 #define EDTG_CLRCIFLAGS        EIOC(148, EIO_GET, sizeof(u_int))
01607 #define EDTS_CLRCIFLAGS        EIOC(149, EIO_SET, sizeof(u_int))
01608 #define EDTS_MERGEPARMS        EIOC(150, EIO_SET, sizeof(edt_merge_args))
01609 #define EDTS_ABORTDMA_ONINTR   EIOC(151, EIO_SET, sizeof(u_int))
01610 #define EDTS_FVAL_DONE        EIOC(152, EIO_SET, sizeof(u_char))
01611 #define EDTG_FVAL_DONE        EIOC(153, EIO_GET, sizeof(u_char))
01612 #define EDTG_LINES_XFERRED        EIOC(154, EIO_SET|EIO_GET, sizeof(u_int))
01613 #define EDTS_PROCESS_ISR        EIOC(155, EIO_SET|EIO_GET, sizeof(u_int))
01614 #define EDTS_CLEAR_DMAID        EIOC(156, EIO_SET, sizeof(u_int))
01615 #define EDTS_DRV_BUFFER_LEAD        EIOC(157, EIO_SET | EIO_GET, sizeof(u_int))
01616 #define EDTG_SERIAL_WRITE_AVAIL        EIOC(158, EIO_GET, sizeof(u_int))
01617 #define EDTS_USER_DMA_WAKEUP        EIOC(159, EIO_SET, sizeof(u_int))
01618 #define EDTG_USER_DMA_WAKEUP        EIOC(160, EIO_GET, sizeof(u_int))
01619 #define EDTG_WAIT_STATUS            EIOC(161, EIO_GET, sizeof(u_int))
01620 #define EDTS_WAIT_STATUS            EIOC(162, EIO_GET, sizeof(u_int))
01621 #define EDTS_TIMEOUT_OK             EIOC(163, EIO_SET, sizeof(u_int))
01622 #define EDTG_TIMEOUT_OK             EIOC(164, EIO_GET, sizeof(u_int))
01623 #define EDTS_MULTI_DONE             EIOC(165, EIO_GET, sizeof(u_int))
01624 #define EDTG_MULTI_DONE             EIOC(166, EIO_GET, sizeof(u_int))
01625 #define EDTS_TEST_LOCK_ON           EIOC(167, EIO_SET, sizeof(u_int))
01626 #define EDTG_FVAL_LOW        EIOC(168, EIO_SET|EIO_GET, sizeof(u_int))
01627 #define EDTS_BUF_MMAP                EIOC(169, EIO_SET, sizeof(buf_args))
01628 #define EDTS_MEZZ_BITPATH       EIOC(170, EIO_SET, sizeof(edt_bitpath))
01629 #define EDTG_MEZZ_BITPATH       EIOC(171, EIO_GET, sizeof(edt_bitpath))
01630 #define EDTG_DMA_INFO           EIOC(172, EIO_GET, sizeof(edt_dma_info))
01631 #define EDTS_USER_FUNC          EIOC(173, EIO_SET | EIO_GET, sizeof(edt_sized_buffer))
01632 #define EDTS_TEST_STATUS          EIOC(174, EIO_SET | EIO_GET, sizeof(u_int))
01633 #define EDTS_KERNEL_ALLOC          EIOC(175, EIO_SET | EIO_GET, sizeof(u_int))
01634 #define EDTG_RESERVED_PAGES          EIOC(176, EIO_GET, sizeof(u_int))
01635 #define EDTS_RAW_SGLIST             EIOC(177, EIO_SET, sizeof(buf_args))
01636 #define EDTS_IGNORE_SIGNALS          EIOC(178, EIO_SET, sizeof(u_int))
01637 #define EDTS_TRACE_REG             EIOC(179, EIO_SET, sizeof(u_int))
01638 #define EDTS_TIMESTAMP_LEVEL       EIOC(180, EIO_SET, sizeof(u_int))
01639 #define EDTS_REG_BIT_CLEARSET       EIOC(181, EIO_SET, sizeof(edt_buf))
01640 #define EDTS_REG_BIT_SETCLEAR       EIOC(182, EIO_SET, sizeof(edt_buf))
01641 #define EDTS_REG_READBACK           EIOC(183, EIO_SET, sizeof(u_int))
01642 #define EDTS_MEZZ_ID                EIOC(184, EIO_SET, sizeof(edt_buf))
01643 #define EDTG_MEZZ_ID                EIOC(185, EIO_SET|EIO_GET, sizeof(edt_buf))
01644 #define EDTG_NUMBUFS            EIOC(186, EIO_GET, sizeof(int))
01645 #define EDTS_READ_STARTACT      EIOC(187, EIO_SET, sizeof(edt_buf))
01646 #define EDTS_READ_ENDACT        EIOC(188, EIO_SET, sizeof(edt_buf))
01647 #define EDTS_WRITE_STARTACT     EIOC(189, EIO_SET, sizeof(edt_buf))
01648 #define EDTS_WRITE_ENDACT       EIOC(190, EIO_SET, sizeof(edt_buf))
01649 #define EDTS_READ_START_DELAYS  EIOC(191, EIO_SET, sizeof(u_int))
01650 #define EDTS_READ_END_DELAYS    EIOC(192, EIO_SET, sizeof(u_int))
01651 #define EDTS_WRITE_START_DELAYS EIOC(193, EIO_SET, sizeof(u_int))
01652 #define EDTS_WRITE_END_DELAYS   EIOC(194, EIO_SET, sizeof(u_int))
01653 
01654 
01655 /* defines for return from wait */
01656 #define EDT_WAIT_OK     0
01657 #define EDT_WAIT_TIMEOUT 1
01658 #define EDT_WAIT_OK_TIMEOUT 2
01659 #define EDT_WAIT_USER_WAKEUP 3
01660 
01661 /* defines for driver type */
01662 #define EDT_UNIX_DRIVER 0
01663 #define EDT_NT_DRIVER   1
01664 #define EDT_2K_DRIVER   2
01665 #define EDT_WDM_DRIVER  3
01666 
01667 /* defines for time type */
01668 #define EDT_TM_SEC_NSEC  0
01669 #define EDT_TM_CLICKS    1
01670 #define EDT_TM_COUNTER   2
01671 #define EDT_TM_FREQ      3
01672 #define EDT_TM_INTR      4
01673 
01674 
01675 /* defines for get DMA status */
01676 #define EDT_DMA_IDLE 0
01677 #define EDT_DMA_ACTIVE 1
01678 #define EDT_DMA_TIMEOUT 2
01679 #define EDT_DMA_ABORTED 3
01680 
01681 /* defines for SG ioctls */
01682 #define EDT_SGLIST_SIZE     1
01683 #define EDT_SGLIST_VIRTUAL  2
01684 #define EDT_SGLIST_PHYSICAL 3
01685 #define EDT_SGTODO_SIZE     4
01686 #define EDT_SGTODO_VIRTUAL  5
01687 #define EDT_SGTODO_FIRST_SG 6
01688 
01689 
01690 /* defines for flush, start, end dma action */
01691 #define EDT_ACT_NEVER       0
01692 #define EDT_ACT_ONCE        1
01693 #define EDT_ACT_ALWAYS      2
01694 #define EDT_ACT_ONELEFT     3
01695 #define EDT_ACT_CYCLE           4 
01696 #define EDT_ACT_KBS             5 
01697 #define EDT_ACT_ALWAYS_WRITEONLY                6
01698 
01699 /* ddefines for timeout action */
01700 #define EDT_TIMEOUT_NULL                0
01701 #define EDT_TIMEOUT_BIT_STROBE  0x1
01702 
01703 
01704 /* for kernel defines, use this shorthand */
01705 #define EMAPI(x) EDT_MAKE_IOCTL(EDT_DEVICE_TYPE,EIODA(x))
01706 
01707 #define ES_DEBUG             EMAPI(EDTS_DEBUG)
01708 #define EG_DEBUG             EMAPI(EDTG_DEBUG)
01709 #define ES_INTFC             EMAPI(EDTS_INTFC)
01710 #define EG_INTFC             EMAPI(EDTG_INTFC)
01711 #define ES_REG               EMAPI(EDTS_REG)
01712 #define EG_REG               EMAPI(EDTG_REG)
01713 #define ES_FLASH             EMAPI(EDTS_FLASH)
01714 #define EG_FLASH             EMAPI(EDTG_FLASH)
01715 #define E_PFLASH             EMAPI(EDT_PFLASH)
01716 #define ES_PROG              EMAPI(EDTS_PROG)
01717 #define EG_PROG              EMAPI(EDTG_PROG)
01718 #define ES_PROG_READBACK     EMAPI(EDTS_PROG_READBACK)
01719 #define EG_PROG_READBACK     EMAPI(EDTG_PROG_READBACK)
01720 #define ES_HEIGHT            EMAPI(EDTS_HEIGHT)
01721 #define EG_HEIGHT            EMAPI(EDTG_HEIGHT)
01722 #define ES_DEPTH             EMAPI(EDTS_DEPTH)
01723 #define EG_DEPTH             EMAPI(EDTG_DEPTH)
01724 #define ES_TYPE              EMAPI(EDTS_TYPE)
01725 #define EG_TYPE              EMAPI(EDTG_TYPE)
01726 #define ES_SERIAL            EMAPI(EDTS_SERIAL)
01727 #define EG_SERIAL            EMAPI(EDTG_SERIAL)
01728 #define ES_DEPENDENT         EMAPI(EDTS_DEPENDENT)
01729 #define EG_DEPENDENT         EMAPI(EDTG_DEPENDENT)
01730 #define EG_DEVID             EMAPI(EDTG_DEVID)
01731 #define ES_RTIMEOUT          EMAPI(EDTS_RTIMEOUT)
01732 #define ES_WTIMEOUT          EMAPI(EDTS_WTIMEOUT)
01733 #define EG_BUFDONE           EMAPI(EDTG_BUFDONE)
01734 #define ES_NUMBUFS           EMAPI(EDTS_NUMBUFS)
01735 #define ES_BUF               EMAPI(EDTS_BUF)
01736 #define ES_BUF_MMAP               EMAPI(EDTS_BUF_MMAP)
01737 #define ES_STARTBUF          EMAPI(EDTS_STARTBUF)
01738 #define ES_WAITBUF           EMAPI(EDTS_WAITBUF)
01739 #define ES_FREEBUF           EMAPI(EDTS_FREEBUF)
01740 #define ES_STOPBUF           EMAPI(EDTS_STOPBUF)
01741 #define EG_BYTECOUNT         EMAPI(EDTG_BYTECOUNT)
01742 #define ES_SETBUF            EMAPI(EDTS_SETBUF)
01743 #define EG_DEBUGVAL          EMAPI(EDTG_DEBUGVAL)
01744 #define EG_TIMEOUTS          EMAPI(EDTG_TIMEOUTS)
01745 #define EG_TRACEBUF          EMAPI(EDTG_TRACEBUF)
01746 #define ES_STARTDMA          EMAPI(EDTS_STARTDMA)
01747 #define ES_ENDDMA            EMAPI(EDTS_ENDDMA)
01748 #define ES_FOIUNIT           EMAPI(EDTS_FOIUNIT)
01749 #define EG_FOIUNIT           EMAPI(EDTG_FOIUNIT)
01750 #define ES_FOICOUNT          EMAPI(EDTS_FOICOUNT)
01751 #define EG_FOICOUNT          EMAPI(EDTG_FOICOUNT)
01752 #define EG_RTIMEOUT          EMAPI(EDTG_RTIMEOUT)
01753 #define EG_WTIMEOUT          EMAPI(EDTG_WTIMEOUT)
01754 #define ES_EODMA_SIG         EMAPI(EDTS_EODMA_SIG)
01755 #define ES_SERIALWAIT        EMAPI(EDTS_SERIALWAIT)
01756 #define ES_EVENT_SIG         EMAPI(EDTS_EVENT_SIG)
01757 #define EG_OVERFLOW          EMAPI(EDTG_OVERFLOW)
01758 #define ES_AUTODIR           EMAPI(EDTS_AUTODIR)
01759 #define ES_FIRSTFLUSH        EMAPI(EDTS_FIRSTFLUSH)
01760 #define EG_FIRSTFLUSH        EMAPI(EDTG_FIRSTFLUSH)
01761 #define EG_CONFIG_COPY       EMAPI(EDTG_CONFIG_COPY)
01762 #define ES_CONFIG            EMAPI(EDTS_CONFIG)
01763 #define EG_CONFIG            EMAPI(EDTG_CONFIG)
01764 #define P_REGTEST            EMAPI(P53B_REGTEST)
01765 #define ES_LONG              EMAPI(EDTS_LONG)
01766 #define EG_LONG              EMAPI(EDTG_LONG)
01767 #define EG_SGTODO            EMAPI(EDTG_SGTODO)
01768 #define EG_SGLIST            EMAPI(EDTG_SGLIST)
01769 #define ES_SGLIST            EMAPI(EDTS_SGLIST)
01770 #define EG_SGINFO            EMAPI(EDTG_SGINFO)
01771 #define EG_TIMECOUNT         EMAPI(EDTG_TIMECOUNT)
01772 #define EG_PADDR             EMAPI(EDTG_PADDR)
01773 #define ES_SYNC              EMAPI(EDTS_SYNC)
01774 #define ES_WAITN             EMAPI(EDTS_WAITN)
01775 #define ES_STARTACT          EMAPI(EDTS_STARTACT)
01776 #define ES_ENDACT            EMAPI(EDTS_ENDACT)
01777 #define ES_RESETCOUNT        EMAPI(EDTS_RESETCOUNT)
01778 #define ES_RESETSERIAL       EMAPI(EDTS_RESETSERIAL)
01779 #define ES_BAUDBITS          EMAPI(EDTS_BAUDBITS)
01780 #define ES_CLR_EVENT         EMAPI(EDTS_CLR_EVENT)
01781 #define ES_ADD_EVENT_FUNC    EMAPI(EDTS_ADD_EVENT_FUNC)
01782 #define ES_DEL_EVENT_FUNC    EMAPI(EDTS_DEL_EVENT_FUNC)
01783 #define ES_WAIT_EVENT_ONCE   EMAPI(EDTS_WAIT_EVENT_ONCE)
01784 #define ES_WAIT_EVENT        EMAPI(EDTS_WAIT_EVENT)
01785 #define EG_TMSTAMP           EMAPI(EDTG_TMSTAMP)
01786 #define ES_CLEAR_WAIT_EVENT  EMAPI(EDTS_CLEAR_WAIT_EVENT)
01787 #define ES_TIMEOUT_ACTION    EMAPI(EDTS_TIMEOUT_ACTION)
01788 #define EG_TIMEOUT_GOODBITS  EMAPI(EDTG_TIMEOUT_GOODBITS)
01789 #define EG_REFTIME                       EMAPI(EDTG_REFTIME)
01790 #define ES_REFTIME                       EMAPI(EDTS_REFTIME)
01791 #define ES_REG_OR                        EMAPI(EDTS_REG_OR)
01792 #define ES_REG_AND                       EMAPI(EDTS_REG_AND)
01793 #define EG_GOODBITS                      EMAPI(EDTG_GOODBITS)
01794 #define ES_BURST_EN                      EMAPI(EDTS_BURST_EN)
01795 #define EG_BURST_EN                      EMAPI(EDTG_BURST_EN)
01796 #define ES_ABORT_BP                      EMAPI(EDTS_ABORT_BP)
01797 #define ES_DOTIMEOUT             EMAPI(EDTS_DOTIMEOUT)
01798 #define ES_REFTMSTAMP           EMAPI(EDTS_REFTMSTAMP)
01799 #define ES_DMASYNC_FORDEV     EMAPI(EDTS_DMASYNC_FORDEV)
01800 #define ES_DMASYNC_FORCPU     EMAPI(EDTS_DMASYNC_FORCPU)
01801 #define EG_BUFBYTECOUNT       EMAPI(EDTG_BUFBYTECOUNT)
01802 #define ES_PDVCONT            EMAPI(EDTS_PDVCONT)
01803 #define ES_PDVDPATH           EMAPI(EDTS_PDVDPATH)
01804 #define ES_RESET_EVENT_COUNTER        EMAPI(EDTS_RESET_EVENT_COUNTER)
01805 #define ES_DUMP_SGLIST        EMAPI(EDTS_DUMP_SGLIST)
01806 #define EG_TODO                 EMAPI(EDTG_TODO)
01807 #define ES_RESUME                       EMAPI(EDTS_RESUME)
01808 #define ES_TIMETYPE            EMAPI(EDTS_TIMETYPE)
01809 #define ES_EVENT_HNDL          EMAPI(EDTS_EVENT_HNDL)
01810 #define ES_MAX_BUFFERS                 EMAPI(EDTS_MAX_BUFFERS)
01811 #define EG_MAX_BUFFERS                 EMAPI(EDTG_MAX_BUFFERS)
01812 #define ES_WRITE_PIO           EMAPI(EDTS_WRITE_PIO)
01813 #define ES_PROG_XILINX                 EMAPI(EDTS_PROG_XILINX)
01814 #define ES_MAPMEM              EMAPI(EDTS_MAPMEM)
01815 #define ES_ETEC_ERASEBUF_INIT    EMAPI(EDTS_ETEC_ERASEBUF_INIT)
01816 #define ES_ETEC_ERASEBUF         EMAPI(EDTS_ETEC_ERASEBUF)
01817 #define EG_DRIVER_TYPE         EMAPI(EDTG_DRIVER_TYPE)
01818 #define ES_DRIVER_TYPE         EMAPI(EDTS_DRIVER_TYPE)
01819 #define ES_DRV_BUFFER          EMAPI(EDTS_DRV_BUFFER)
01820 #define ES_ABORTINTR           EMAPI(EDTS_ABORTINTR)
01821 #define ES_CUSTOMER            EMAPI(EDTS_CUSTOMER)
01822 #define ES_ETEC_SET_IDLE       EMAPI(EDTS_ETEC_SET_IDLE)
01823 #define ES_SOLARIS_DMA_MODE    EMAPI(EDTS_SOLARIS_DMA_MODE)
01824 #define ES_UMEM_LOCK           EMAPI(EDTS_UMEM_LOCK)
01825 #define EG_UMEM_LOCK           EMAPI(EDTG_UMEM_LOCK)
01826 #define ES_RCI_CHAN            EMAPI(EDTS_RCI_CHAN)
01827 #define EG_RCI_CHAN            EMAPI(EDTG_RCI_CHAN)
01828 #define ES_BITPATH             EMAPI(EDTS_BITPATH)
01829 #define EG_BITPATH             EMAPI(EDTG_BITPATH)
01830 #define EG_VERSION         EMAPI(EDTG_VERSION)
01831 #define EG_BUILDID         EMAPI(EDTG_BUILDID)
01832 #define ES_WAITCHAR         EMAPI(EDTS_WAITCHAR)
01833 #define ES_PDMA_MODE           EMAPI(EDTS_PDMA_MODE)
01834 #define ES_DIRECTION           EMAPI(EDTS_DIRECTION)
01835 #define EG_MEMSIZE          EMAPI(EDTG_MEMSIZE)
01836 #define ES_CLRCIFLAGS         EMAPI(EDTS_CLRCIFLAGS)
01837 #define EG_CLRCIFLAGS         EMAPI(EDTG_CLRCIFLAGS)
01838 #define ES_MERGEPARMS        EMAPI(EDTS_MERGEPARMS)
01839 #define ES_ABORTDMA_ONINTR        EMAPI(EDTS_ABORTDMA_ONINTR)
01840 #define ES_FVAL_DONE         EMAPI(EDTS_FVAL_DONE)
01841 #define EG_FVAL_DONE         EMAPI(EDTG_FVAL_DONE)
01842 #define EG_LINES_XFERRED         EMAPI(EDTG_LINES_XFERRED)
01843 #define ES_PROCESS_ISR         EMAPI(EDTS_PROCESS_ISR)
01844 #define ES_CLEAR_DMAID         EMAPI(EDTS_CLEAR_DMAID)
01845 #define ES_DRV_BUFFER_LEAD        EMAPI(EDTS_DRV_BUFFER_LEAD)
01846 #define EG_SERIAL_WRITE_AVAIL        EMAPI(EDTG_SERIAL_WRITE_AVAIL)
01847 #define ES_USER_DMA_WAKEUP        EMAPI(EDTS_USER_DMA_WAKEUP)
01848 #define EG_USER_DMA_WAKEUP        EMAPI(EDTG_USER_DMA_WAKEUP)
01849 #define EG_WAIT_STATUS        EMAPI(EDTG_WAIT_STATUS)
01850 #define ES_WAIT_STATUS        EMAPI(EDTS_WAIT_STATUS)
01851 #define ES_TIMEOUT_OK        EMAPI(EDTS_TIMEOUT_OK)
01852 #define EG_TIMEOUT_OK        EMAPI(EDTG_TIMEOUT_OK)
01853 #define ES_MULTI_DONE        EMAPI(EDTS_MULTI_DONE)
01854 #define EG_MULTI_DONE        EMAPI(EDTG_MULTI_DONE)
01855 #define ES_TEST_LOCK_ON        EMAPI(EDTS_TEST_LOCK_ON)
01856 #define EG_FVAL_LOW        EMAPI(EDTG_FVAL_LOW)
01857 #define ES_MEZZ_BITPATH      EMAPI(EDTS_MEZZ_BITPATH)
01858 #define EG_MEZZ_BITPATH      EMAPI(EDTG_MEZZ_BITPATH)
01859 #define EG_DMA_INFO          EMAPI(EDTG_DMA_INFO)
01860 #define ES_USER_FUNC         EMAPI(EDTS_USER_FUNC)
01861 #define ES_TEST_STATUS         EMAPI(EDTS_TEST_STATUS)
01862 #define ES_KERNEL_ALLOC         EMAPI(EDTS_KERNEL_ALLOC)
01863 #define EG_RESERVED_PAGES       EMAPI(EDTG_RESERVED_PAGES)
01864 #define ES_RAW_SGLIST            EMAPI(EDTS_RAW_SGLIST)
01865 #define ES_IGNORE_SIGNALS            EMAPI(EDTS_IGNORE_SIGNALS)
01866 #define ES_TRACE_REG            EMAPI(EDTS_TRACE_REG)
01867 #define ES_TIMESTAMP_LEVEL            EMAPI(EDTS_TIMESTAMP_LEVEL)
01868 #define ES_REG_BIT_CLEARSET            EMAPI(EDTS_REG_BIT_CLEARSET)
01869 #define ES_REG_BIT_SETCLEAR            EMAPI(EDTS_REG_BIT_SETCLEAR)
01870 #define ES_REG_READBACK                EMAPI(EDTS_REG_READBACK)
01871 #define ES_MEZZ_ID                EMAPI(EDTS_MEZZ_ID)
01872 #define EG_MEZZ_ID                EMAPI(EDTG_MEZZ_ID)
01873 #define EG_NUMBUFS                EMAPI(EDTG_NUMBUFS)
01874 #define ES_READ_STARTACT        EMAPI(EDTS_READ_STARTACT)
01875 #define ES_READ_ENDACT          EMAPI(EDTS_READ_ENDACT)
01876 #define ES_WRITE_STARTACT       EMAPI(EDTS_WRITE_STARTACT)
01877 #define ES_WRITE_ENDACT         EMAPI(EDTS_WRITE_ENDACT)
01878 #define ES_READ_START_DELAYS    EMAPI(EDTS_READ_START_DELAYS)
01879 #define ES_READ_END_DELAYS      EMAPI(EDTS_READ_END_DELAYS)
01880 #define ES_WRITE_START_DELAYS   EMAPI(EDTS_WRITE_START_DELAYS)
01881 #define ES_WRITE_END_DELAYS     EMAPI(EDTS_WRITE_END_DELAYS)
01882 
01883 /* MUST BE EQUAL AT LEAST ONE GREATER THAN THE HIGHEST EDT IOCTL ABOVE */
01884 #define MIN_PCI_IOCTL 200
01885 #define PCIIOC(action, type, size) EIOC(action+MIN_PCI_IOCTL, type, size)
01886 
01887 /* signals for pcd */
01888 #define  PCD_STAT1_SIG      1
01889 #define  PCD_STAT2_SIG      2
01890 #define  PCD_STAT3_SIG      3
01891 #define  PCD_STAT4_SIG      4
01892 #define  PCD_STATX_SIG      5
01893 
01894 /* signals for p16d */
01895 #define P16_DINT_SIG        1
01896 
01897 /* signals for p11w */
01898 #define P11_ATT_SIG     1
01899 #define P11_CNT_SIG     2
01900 
01901 /* signals for p53b */
01902 #define P53B_SRQ_SIG       1
01903 #define P53B_INTERVAL_SIG  2
01904 #define P53B_MODECODE_SIG  3
01905 
01906 #define ID_IS_PCD(id) ((id == PCD20_ID) \
01907                         || (id == PCD40_ID) \
01908                         || (id == PCD60_ID) \
01909                         || (id == PGP20_ID) \
01910                         || (id == PGP40_ID) \
01911                         || (id == PGP60_ID) \
01912                         || (id == PGP_ECL_ID) \
01913                         || (id == PCDFCI_SIM_ID) \
01914                         || (id == PCDFCI_PCD_ID) \
01915                         || (id == PSS4_ID) \
01916                         || (id == PSS16_ID) \
01917                         || (id == PCDA_ID) \
01918                         || (id == PCDCL_ID) \
01919                         || (id == PCDA16_ID) \
01920                         || (id == PCD_16_ID) \
01921                         || (id == PCDFOX_ID) \
01922                         || (id == PGS4_ID) \
01923                         || (id == PGS16_ID) \
01924                         || (id == PE8LX1_ID) \
01925                         || (id == PE8LX4_ID) \
01926                         || (id == PE8LX16_ID) \
01927                         || (id == PGP_THARAS_ID))
01928 
01929 #define ID_IS_SS(id) ((id == PSS4_ID) \
01930                         || (id == PSS16_ID)) 
01931 
01932 #define ID_IS_GS(id) ((id == PGS4_ID) \
01933                         || (id == PGS16_ID)) 
01934 
01935 #define ID_IS_LX(id) ((id == PE8LX1_ID) \
01936                         || (id == PE8LX4_ID) \
01937                         || (id == PE8LX16_ID))
01938 
01939 #define ID_IS_PDV(id) ((id == PDV_ID) \
01940                         || (id == PDVK_ID) \
01941                         || (id == PDV44_ID) \
01942                         || (id == PDVAERO_ID) \
01943                         || (id == PDVCL_ID) \
01944                         || (id == PE4DVCL_ID) \
01945                         || (id == PE8DVCL_ID) \
01946                         || (id == PDVCL2_ID) \
01947                         || (id == PDVFOI_ID) \
01948                         || (id == PDVFCI_AIAG_ID) \
01949                         || (id == PDVFCI_USPS_ID) \
01950                         || (id == PDVA_ID) \
01951                         || (id == PDVFOX_ID) \
01952                         || (id == PE4DVFOX_ID) \
01953                         || (id == PE8DVFOX_ID) \
01954                         || (id == PDVA16_ID) \
01955                         || (id == PGP_RGB_ID) \
01956                         || (id == PE4DVFCI_ID) \
01957                         || (id == PE8DVFCI_ID))
01958 
01959 #define ID_IS_DVFOX(id) ((id == PDVFOX_ID) \
01960                         || (id == PE4DVFOX_ID) \
01961                         || (id == PE8DVFOX_ID))
01962 
01963 #define ID_IS_DVCL(id)  ((id == PDVCL_ID) \
01964                         || (id == PE4DVCL_ID) \
01965                         || (id == PE8DVCL_ID))
01966 
01967 #define ID_IS_DVCL2(id) ((id == PDVCL2_ID) \
01968                         || (id == PE4DVCL_ID) \
01969                         || (id == PE8DVCL_ID)) /* ALERT: also need check for SIM fw loaded */
01970 
01971 
01976 #define edt_is_pdv(edt_p) (ID_IS_PDV(edt_p->devid))
01977 #define edt_is_pcd(edt_p) (ID_IS_PCD(edt_p->devid))
01978 #define edt_is_dvfox(edt_p) (ID_IS_DVFOX(edt_p->devid))
01979 #define edt_is_dvcl(edt_p) (ID_IS_DVCL(edt_p->devid))
01980 #define edt_is_dvcl2(edt_p) (ID_IS_DVCL2(edt_p->devid))
01981 
01982 #define edt_is_dv_multichannel(edt_p) (edt_is_dvcl(edt_p) || edt_is_dvfox(edt_p) || edt_p->devid == PDVAERO_ID)
01983  /* end dma_utility */
01985  /* end weakgroup dma */
01987 
01988 #endif /* INCLUDE_edtlib_h */

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