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