Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4979 → Rev 4978

/drivers/usb/usbftdi/linkedlist.inc
1,7 → 1,13
head dd 0
head dd 1
node equ ftdi_context
node.next equ ftdi_context.next_context
linkedlist:
.init:
push eax
xor eax, eax
mov [head], eax
pop eax
ret
 
.add:
push ebx
46,4 → 52,4
ret
 
restore node
restore node.next
restore next
/drivers/usb/usbftdi/usbftdi.asm
10,7 → 10,7
include '../proc32.inc'
include '../imports.inc'
include '../fdo.inc'
include '../struct.inc'
include '../../struct.inc'
 
public START
public version
126,8 → 126,6
ends
 
struct usb_descr
bLength db ?
bDescriptorType db ?
bcdUSB dw ?
bDeviceClass db ?
bDeviceSubClass db ?
142,14 → 140,6
bNumConfigurations db ?
ends
 
struct conf_packet
bmRequestType db ?
bRequest db ?
wValue dw ?
wIndex dw ?
wLength dw ?
ends
 
section '.flat' code readable align 16
; The start procedure.
proc START stdcall, .reason:DWORD
157,10 → 147,11
xor eax, eax ; initialize return value
cmp [.reason], 1 ; compare the argument
jnz .nothing
call linkedlist.init
stdcall RegUSBDriver, my_driver, service_proc, usb_functions
 
.nothing:
ret
ret 4
endp
 
 
167,8 → 158,7
proc AddDevice stdcall uses ebx, .config_pipe:DWORD, .config_descr:DWORD, .interface:DWORD
stdcall USBGetParam, [.config_pipe], 0
DEBUGF 1,'K : Device detected Vendor: %x\n', [eax+usb_descr.idVendor]
cmp word[eax+usb_descr.idVendor], 0x0403
cmp [eax+usb_descr.idVendor], 0x0403
jnz .notftdi
DEBUGF 1,'K : FTDI USB device detected\n'
movi eax, sizeof.ftdi_context
233,43 → 223,38
 
.ftdi_set_bitmode:
DEBUGF 1,'K : FTDI Seting bitmode\n'
xor ecx, ecx
xor esi, esi
call CreateEvent
mov edi, [ioctl]
DEBUGF 1,'K : Event created %x %x\n' , eax, edx
mov [EventData], eax
mov [EventData+4], edx
mov dword[ConfPacket], (FTDI_DEVICE_IN_REQTYPE) + (SIO_SET_BITMODE_REQUEST shl 8) + (0x0000 shl 16)
mov [EventData+1], edx
mov si, (FTDI_DEVICE_IN_REQTYPE) + (SIO_SET_BITMODE_REQUEST shl 8)
mov word[ConfPacket], si
mov edi, [edi+input]
mov dx, word[edi+4]
mov word[ConfPacket+4], dx
DEBUGF 1,'K : ConfPacket %x %x\n', [ConfPacket], [ConfPacket+4]
mov si, word[edi+1]
DEBUGF 1,'K : Pin value is %x\n', si
mov word[ConfPacket+4], si
mov ebx, [edi]
lea esi, [ConfPacket]
lea edi, [EventData]
stdcall USBControlTransferAsync, [ebx + ftdi_context.nullP], esi, 0, 0, control_callback, edi, 0
DEBUGF 1, 'K : Returned value is %d\n', eax
mov eax, [EventData]
mov ebx, [EventData+4]
call WaitEvent
jmp .endswitch
 
.ftdi_read_pins:
DEBUGF 1,'K : FTDI Reading pins\n'
call CreateEvent
mov [EventData], eax
mov [EventData+4], edx
mov [EventData+1], edx
mov eax, FTDI_DEVICE_IN_REQTYPE + (SIO_READ_PINS_REQUEST shl 8)
mov dword[ConfPacket], eax
jmp .endswitch
 
.ftdi_get_list:
call linkedlist.gethead
DEBUGF 1, 'K : FTDI Device pointer %x\n' , eax
mov edi, [edi+output]
mov [edi], eax
DEBUGF 1, 'K : FTDI Device pointer %x\n', [edi]
mov edi, eax
mov eax, 4
mov edi, [ioctl]
mov [edi+out_size], eax
jmp .endswitch
endp
285,9 → 270,7
proc control_callback stdcall uses ebx, .pipe:DWORD, .status:DWORD, .buffer:DWORD, .length:DWORD, .calldata:DWORD
mov eax, [.calldata]
mov ebx, [.calldata+4]
DEBUGF 1,'K : EventData %x %x', [.calldata], [.calldata+4]
xor edx, edx
mov ebx, [.calldata+1]
call RaiseEvent
DEBUGF 1, 'K : status is %d\n', [.status+24h]
ret
298,8 → 281,7
 
DEBUGF 1, 'K : FTDI deleting device data\n'
mov eax, [.device_data]
call linkedlist.delete
ret
;call linkedlist.delete
endp
 
include 'linkedlist.inc'