Subversion Repositories Kolibri OS

Rev

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