Rev 4980 | Rev 4985 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4980 | Rev 4984 | ||
---|---|---|---|
Line 1... | Line -... | ||
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
2 | ;; ;; |
- | |
3 | ;; Copyright (C) KolibriOS team 2004-2014. All rights reserved. ;; |
- | |
4 | ;; Distributed under terms of the GNU General Public License ;; |
- | |
5 | ;; ;; |
- | |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
- | |
7 | - | ||
8 | ; standard driver stuff |
1 | ; standard driver stuff |
9 | format MS COFF |
2 | format MS COFF |
Line 10... | Line 3... | ||
10 | 3 | ||
Line 176... | Line 169... | ||
176 | stdcall USBGetParam, [.config_pipe], 0 |
169 | stdcall USBGetParam, [.config_pipe], 0 |
177 | DEBUGF 1,'K : Device detected Vendor: %x\n', [eax+usb_descr.idVendor] |
170 | DEBUGF 1,'K : Device detected Vendor: %x\n', [eax+usb_descr.idVendor] |
178 | cmp word[eax+usb_descr.idVendor], 0x0403 |
171 | cmp word[eax+usb_descr.idVendor], 0x0403 |
179 | jnz .notftdi |
172 | jnz .notftdi |
180 | DEBUGF 1,'K : FTDI USB device detected\n' |
173 | DEBUGF 1,'K : FTDI USB device detected\n' |
181 | mov eax, sizeof.ftdi_context |
174 | movi eax, sizeof.ftdi_context |
182 | call Kmalloc |
175 | call Kmalloc |
183 | test eax, eax |
176 | test eax, eax |
184 | jnz @f |
177 | jnz @f |
185 | mov esi, nomemory_msg |
178 | mov esi, nomemory_msg |
186 | call SysMsgBoardStr |
179 | call SysMsgBoardStr |
Line 230... | Line 223... | ||
230 | jz .version |
223 | jz .version |
231 | dec eax ;1 |
224 | dec eax ;1 |
232 | jz .ftdi_get_list |
225 | jz .ftdi_get_list |
233 | dec eax ;2 |
226 | dec eax ;2 |
234 | jz .ftdi_set_bitmode |
227 | jz .ftdi_set_bitmode |
- | 228 | dec eax ;3 |
|
- | 229 | jz .ftdi_setrtshigh |
|
- | 230 | dec eax ;4 |
|
- | 231 | jz .ftdi_setrtslow |
|
Line 235... | Line 232... | ||
235 | 232 | ||
236 | .version: |
233 | .version: |
237 | .endswitch: |
234 | .endswitch: |
238 | xor eax, eax |
235 | xor eax, eax |
Line 244... | Line 241... | ||
244 | xor esi, esi |
241 | xor esi, esi |
245 | call CreateEvent |
242 | call CreateEvent |
246 | mov edi, [ioctl] |
243 | mov edi, [ioctl] |
247 | mov [EventData], eax |
244 | mov [EventData], eax |
248 | mov [EventData+4], edx |
245 | mov [EventData+4], edx |
249 | mov dword[ConfPacket], (FTDI_DEVICE_IN_REQTYPE) + (SIO_SET_BITMODE_REQUEST shl 8) + (0x0000 shl 16) |
246 | mov word[ConfPacket], (FTDI_DEVICE_OUT_REQTYPE) + (SIO_SET_BITMODE_REQUEST shl 8) |
250 | mov edi, [edi+input] |
247 | mov edi, [edi+input] |
251 | mov dx, word[edi+4] |
248 | mov dx, word[edi+4] |
252 | mov word[ConfPacket+4], dx |
249 | mov word[ConfPacket+2], dx |
- | 250 | mov dword[ConfPacket+4], 0 |
|
- | 251 | DEBUGF 1,'K : ConfPacket %x %x\n', [ConfPacket], [ConfPacket+4] |
|
- | 252 | mov ebx, [edi] |
|
- | 253 | lea esi, [ConfPacket] |
|
- | 254 | lea edi, [EventData] |
|
- | 255 | stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, 0, 0, control_callback, edi, 0 |
|
- | 256 | DEBUGF 1, 'K : Returned value is %d\n', eax |
|
- | 257 | mov eax, [EventData] |
|
- | 258 | mov ebx, [EventData+4] |
|
- | 259 | call WaitEvent |
|
- | 260 | jmp .endswitch |
|
- | 261 | ||
- | 262 | .ftdi_setrtshigh: |
|
- | 263 | DEBUGF 1,'K : FTDI Setting RTS pin HIGH\n' |
|
- | 264 | xor ecx, ecx |
|
- | 265 | xor esi, esi |
|
- | 266 | call CreateEvent |
|
- | 267 | mov edi, [ioctl] |
|
- | 268 | mov [EventData], eax |
|
- | 269 | mov [EventData+4], edx |
|
- | 270 | mov dword[ConfPacket], (FTDI_DEVICE_OUT_REQTYPE) + (SIO_SET_MODEM_CTRL_REQUEST shl 8) + (SIO_SET_RTS_HIGH shl 16) |
|
- | 271 | mov dword[ConfPacket+4], 0 |
|
- | 272 | DEBUGF 1,'K : ConfPacket %x %x\n', [ConfPacket], [ConfPacket+4] |
|
- | 273 | mov edi, [edi+input] |
|
- | 274 | mov ebx, [edi] |
|
- | 275 | lea esi, [ConfPacket] |
|
- | 276 | lea edi, [EventData] |
|
- | 277 | stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, 0, 0, control_callback, edi, 0 |
|
- | 278 | DEBUGF 1, 'K : Returned value is %d\n', eax |
|
- | 279 | mov eax, [EventData] |
|
- | 280 | mov ebx, [EventData+4] |
|
- | 281 | call WaitEvent |
|
- | 282 | jmp .endswitch |
|
- | 283 | ||
- | 284 | .ftdi_setrtslow: |
|
- | 285 | DEBUGF 1,'K : FTDI Setting RTS pin HIGH\n' |
|
- | 286 | xor ecx, ecx |
|
- | 287 | xor esi, esi |
|
- | 288 | call CreateEvent |
|
- | 289 | mov edi, [ioctl] |
|
- | 290 | mov [EventData], eax |
|
- | 291 | mov [EventData+4], edx |
|
- | 292 | mov dword[ConfPacket], (FTDI_DEVICE_OUT_REQTYPE) + (SIO_SET_MODEM_CTRL_REQUEST shl 8) + (SIO_SET_RTS_LOW shl 16) |
|
- | 293 | mov dword[ConfPacket+4], 0 |
|
253 | DEBUGF 1,'K : ConfPacket %x %x\n', [ConfPacket], [ConfPacket+4] |
294 | DEBUGF 1,'K : ConfPacket %x %x\n', [ConfPacket], [ConfPacket+4] |
- | 295 | mov edi, [edi+input] |
|
254 | mov ebx, [edi] |
296 | mov ebx, [edi] |
255 | lea esi, [ConfPacket] |
297 | lea esi, [ConfPacket] |
256 | lea edi, [EventData] |
298 | lea edi, [EventData] |
257 | stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, 0, 0, control_callback, edi, 0 |
299 | stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, 0, 0, control_callback, edi, 0 |
258 | DEBUGF 1, 'K : Returned value is %d\n', eax |
300 | DEBUGF 1, 'K : Returned value is %d\n', eax |
Line 286... | Line 328... | ||
286 | restore output |
328 | restore output |
287 | restore out_size |
329 | restore out_size |
Line 288... | Line 330... | ||
288 | 330 | ||
289 | 331 | ||
Line -... | Line 332... | ||
- | 332 | align 4 |
|
290 | align 4 |
333 | proc control_callback stdcall uses ebx edi esi, .pipe:DWORD, .status:DWORD, .buffer:DWORD, .length:DWORD, .calldata:DWORD |
291 | proc control_callback stdcall uses ebx, edi, .pipe:DWORD, .status:DWORD, .buffer:DWORD, .length:DWORD, .calldata:DWORD |
334 | |
292 | 335 | DEBUGF 1, 'K : status is %d\n', [.status+24h] |
|
293 | mov ecx, [.calldata] |
336 | mov ecx, [.calldata] |
294 | mov eax, [ecx] |
337 | mov eax, [ecx] |
295 | mov ebx, [ecx+4] |
- | |
- | 338 | mov ebx, [ecx+4] |
|
296 | xor edx, edx |
339 | xor edx, edx |
297 | call RaiseEvent |
340 | call RaiseEvent |
Line 298... | Line 341... | ||
298 | DEBUGF 1, 'K : status is %d\n', [.status+24h] |
341 |