119 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /*
 | |
|  *
 | |
|   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
 |