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 |