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#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
39
40typedef struct adapter_s ADAPTER;
41struct 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
81
82void pr_out(ADAPTER * a);
83byte pr_dpc(ADAPTER * a);
84byte scom_test_int(ADAPTER * a);
85void scom_clear_int(ADAPTER * a);
86
87
88
89void free_entity(ADAPTER * a, byte e_no);
90void assign_queue(ADAPTER * a, byte e_no, word ref);
91byte get_assign(ADAPTER * a, word ref);
92void req_queue(ADAPTER * a, byte e_no);
93byte look_req(ADAPTER * a);
94void next_req(ADAPTER * a);
95ENTITY * entity_ptr(ADAPTER * a, byte e_no);
96#if defined(DIVA_ISTREAM)
97struct _diva_xdi_stream_interface;
98void diva_xdi_provide_istream_info (ADAPTER* a,
99 struct _diva_xdi_stream_interface* pI);
100void pr_stream (ADAPTER * a);
101int diva_istream_write (void* context,
102 int Id,
103 void* data,
104 int length,
105 int final,
106 byte usr1,
107 byte usr2);
108int 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
119