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