1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #ifndef UEAGLE_OPTN0
22 #define UEAGLE_OPTN0 0x80020066
23 #endif
24 #ifndef UEAGLE_OPTN2
25 #define UEAGLE_OPTN2 0x23700000
26 #endif
27 #ifndef UEAGLE_OPTN7
28 #define UEAGLE_OPTN7 0x02cd8044
29 #endif
30
31 #define UEAGLE_CONFIG_NO 1
32
33 #define UEAGLE_INTR_IFACE_NO 0
34 #define UEAGLE_US_IFACE_NO 1
35 #define UEAGLE_DS_IFACE_NO 2
36
37 #define UEAGLE_ESISTR 4
38
39 #define UEAGLE_TX_PIPE 0x02
40 #define UEAGLE_IDMA_PIPE 0x04
41 #define UEAGLE_INTR_PIPE 0x84
42 #define UEAGLE_RX_PIPE 0x88
43
44 #define UEAGLE_REQUEST 0
45
46 #define UEAGLE_SETBLOCK 0x0001
47 #define UEAGLE_SETMODE 0x0003
48 #define UEAGLE_SET2183DATA 0x0004
49
50 #define UEAGLE_LOOPBACKOFF 0x0002
51 #define UEAGLE_LOOPBACKON 0x0003
52 #define UEAGLE_BOOTIDMA 0x0006
53 #define UEAGLE_STARTRESET 0x0007
54 #define UEAGLE_ENDRESET 0x0008
55 #define UEAGLE_SWAPMAILBOX 0x7fcd
56 #define UEAGLE_MPTXSTART 0x7fce
57 #define UEAGLE_MPTXMAILBOX 0x7fd6
58 #define UEAGLE_MPRXMAILBOX 0x7fdf
59
60
61 struct ueagle_block_info {
62 uWord wHdr;
63 #define UEAGLE_BLOCK_INFO_HDR 0xabcd
64
65 uWord wAddress;
66 uWord wSize;
67 uWord wOvlOffset;
68 uWord wOvl;
69 uWord wLast;
70 } __packed;
71
72
73 struct ueagle_cmv {
74 uWord wPreamble;
75 #define UEAGLE_CMV_PREAMBLE 0x535c
76
77 uByte bDst;
78 #define UEAGLE_HOST 0x01
79 #define UEAGLE_MODEM 0x10
80
81 uByte bFunction;
82 #define UEAGLE_CR 0x10
83 #define UEAGLE_CW 0x11
84 #define UEAGLE_CR_ACK 0x12
85 #define UEAGLE_CW_ACK 0x13
86 #define UEAGLE_MODEMREADY 0x71
87
88 uWord wIndex;
89 uDWord dwSymbolicAddress;
90 #define UEAGLE_MAKESA(a, b, c, d) ((c) << 24 | (d) << 16 | (a) << 8 | (b))
91 #define UEAGLE_CMV_CNTL UEAGLE_MAKESA('C', 'N', 'T', 'L')
92 #define UEAGLE_CMV_DIAG UEAGLE_MAKESA('D', 'I', 'A', 'G')
93 #define UEAGLE_CMV_INFO UEAGLE_MAKESA('I', 'N', 'F', 'O')
94 #define UEAGLE_CMV_OPTN UEAGLE_MAKESA('O', 'P', 'T', 'N')
95 #define UEAGLE_CMV_RATE UEAGLE_MAKESA('R', 'A', 'T', 'E')
96 #define UEAGLE_CMV_STAT UEAGLE_MAKESA('S', 'T', 'A', 'T')
97
98 uWord wOffsetAddress;
99 uDWord dwData;
100 #define UGETDATA(w) ((w)[2] | (w)[3] << 8 | (w)[0] << 16 | (w)[1] << 24)
101 #define USETDATA(w, v) \
102 ((w)[2] = (uint8_t)(v), \
103 (w)[3] = (uint8_t)((v) >> 8), \
104 (w)[0] = (uint8_t)((v) >> 16), \
105 (w)[1] = (uint8_t)((v) >> 24))
106 } __packed;
107
108 struct ueagle_swap {
109 uByte bPageNo;
110 uByte bOvl;
111 } __packed;
112
113 struct ueagle_intr {
114 uByte bType;
115 uByte bNotification;
116 uWord wValue;
117 uWord wIndex;
118 uWord wLength;
119 uWord wInterrupt;
120 #define UEAGLE_INTR_SWAP 1
121 #define UEAGLE_INTR_CMV 2
122 } __packed;
123
124 #define UEAGLE_INTR_MAXSIZE 28