| |
| /* |
| * |
| 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 |