| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 |  | 
 | 2 | /* | 
 | 3 |  * | 
 | 4 |   Copyright (c) Eicon Networks, 2002. | 
 | 5 |  * | 
 | 6 |   This source file is supplied for the use with | 
 | 7 |   Eicon Networks range of DIVA Server Adapters. | 
 | 8 |  * | 
 | 9 |   Eicon File Revision :    2.1 | 
 | 10 |  * | 
 | 11 |   This program is free software; you can redistribute it and/or modify | 
 | 12 |   it under the terms of the GNU General Public License as published by | 
 | 13 |   the Free Software Foundation; either version 2, or (at your option) | 
 | 14 |   any later version. | 
 | 15 |  * | 
 | 16 |   This program is distributed in the hope that it will be useful, | 
 | 17 |   but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY | 
 | 18 |   implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
 | 19 |   See the GNU General Public License for more details. | 
 | 20 |  * | 
 | 21 |   You should have received a copy of the GNU General Public License | 
 | 22 |   along with this program; if not, write to the Free Software | 
 | 23 |   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
 | 24 |  * | 
 | 25 |  */ | 
 | 26 | /* | 
 | 27 |  *  some macros for detailed trace management | 
 | 28 |  */ | 
 | 29 | #include "di_dbg.h" | 
 | 30 | /*****************************************************************************/ | 
 | 31 | #define XMOREC 0x1f | 
 | 32 | #define XMOREF 0x20 | 
 | 33 | #define XBUSY  0x40 | 
 | 34 | #define RMORE  0x80 | 
 | 35 | #define DIVA_MISC_FLAGS_REMOVE_PENDING    0x01 | 
 | 36 | #define DIVA_MISC_FLAGS_NO_RC_CANCELLING  0x02 | 
 | 37 | #define DIVA_MISC_FLAGS_RX_DMA            0x04 | 
 | 38 |         /* structure for all information we have to keep on a per   */ | 
 | 39 |         /* adapater basis                                           */ | 
 | 40 | typedef struct adapter_s ADAPTER; | 
 | 41 | struct adapter_s { | 
 | 42 |   void * io; | 
 | 43 |   byte IdTable[256]; | 
 | 44 |   byte IdTypeTable[256]; | 
 | 45 |   byte FlowControlIdTable[256]; | 
 | 46 |   byte FlowControlSkipTable[256]; | 
 | 47 |   byte ReadyInt; | 
 | 48 |   byte RcExtensionSupported; | 
 | 49 |   byte misc_flags_table[256]; | 
 | 50 |   dword protocol_capabilities; | 
 | 51 |   byte ( * ram_in)(ADAPTER * a, void * adr); | 
 | 52 |   word ( * ram_inw)(ADAPTER * a, void * adr); | 
 | 53 |   void (* ram_in_buffer)(ADAPTER * a, void * adr, void  * P, word length); | 
 | 54 |   void (* ram_look_ahead)(ADAPTER * a, PBUFFER * RBuffer, ENTITY  * e); | 
 | 55 |   void ( * ram_out)(ADAPTER * a, void * adr, byte data); | 
 | 56 |   void ( * ram_outw)(ADAPTER * a, void * adr, word data); | 
 | 57 |   void (* ram_out_buffer)(ADAPTER * a, void * adr, void  * P, word length); | 
 | 58 |   void ( * ram_inc)(ADAPTER * a, void * adr); | 
 | 59 | #if defined(DIVA_ISTREAM) | 
 | 60 |   dword rx_stream[256]; | 
 | 61 |   dword tx_stream[256]; | 
 | 62 |   word tx_pos[256]; | 
 | 63 |   word rx_pos[256]; | 
 | 64 |   byte stream_buffer[2512]; | 
 | 65 |   dword ( * ram_offset)(ADAPTER * a); | 
 | 66 |   void ( * ram_out_dw) (ADAPTER *a, | 
 | 67 |                                     void *addr, | 
 | 68 |                                     const dword* data, | 
 | 69 |                                     int dwords); | 
 | 70 |   void ( * ram_in_dw) (ADAPTER *a, | 
 | 71 |                                    void *addr, | 
 | 72 |                                    dword* data, | 
 | 73 |                                    int dwords); | 
 | 74 |   void ( * istream_wakeup)(ADAPTER* a); | 
 | 75 | #else | 
 | 76 |   byte stream_buffer[4]; | 
 | 77 | #endif | 
 | 78 | }; | 
 | 79 | /*------------------------------------------------------------------*/ | 
 | 80 | /* public functions of IDI common code                              */ | 
 | 81 | /*------------------------------------------------------------------*/ | 
 | 82 | void pr_out(ADAPTER * a); | 
 | 83 | byte pr_dpc(ADAPTER * a); | 
 | 84 | byte scom_test_int(ADAPTER * a); | 
 | 85 | void scom_clear_int(ADAPTER * a); | 
 | 86 | /*------------------------------------------------------------------*/ | 
 | 87 | /* OS specific functions used by IDI common code                    */ | 
 | 88 | /*------------------------------------------------------------------*/ | 
 | 89 | void free_entity(ADAPTER * a, byte e_no); | 
 | 90 | void assign_queue(ADAPTER * a, byte e_no, word ref); | 
 | 91 | byte get_assign(ADAPTER * a, word ref); | 
 | 92 | void req_queue(ADAPTER * a, byte e_no); | 
 | 93 | byte look_req(ADAPTER * a); | 
 | 94 | void next_req(ADAPTER * a); | 
 | 95 | ENTITY  * entity_ptr(ADAPTER * a, byte e_no); | 
 | 96 | #if defined(DIVA_ISTREAM) | 
 | 97 | struct _diva_xdi_stream_interface; | 
 | 98 | void diva_xdi_provide_istream_info (ADAPTER* a, | 
 | 99 |                                     struct _diva_xdi_stream_interface* pI); | 
 | 100 | void pr_stream (ADAPTER * a); | 
 | 101 | int diva_istream_write (void* context, | 
 | 102 |                         int Id, | 
 | 103 |                         void* data, | 
 | 104 |                         int length, | 
 | 105 |                         int final, | 
 | 106 |                         byte usr1, | 
 | 107 |                         byte usr2); | 
 | 108 | int diva_istream_read (void* context, | 
 | 109 |                         int Id, | 
 | 110 |                         void* data, | 
 | 111 |                         int max_length, | 
 | 112 |                         int* final, | 
 | 113 |                         byte* usr1, | 
 | 114 |                         byte* usr2); | 
 | 115 | #if defined(DIVA_IDI_RX_DMA) | 
 | 116 | #include "diva_dma.h" | 
 | 117 | #endif | 
 | 118 | #endif |