697,6 → 697,36 |
ret |
endp |
|
; Part of API for drivers, see documentation for USBGetParam. |
proc usb_get_param |
virtual at esp |
dd ? ; return address |
.pipe dd ? |
.param dd ? |
end virtual |
mov edx, [.param] |
mov ecx, [.pipe] |
mov eax, [ecx+usb_pipe.DeviceData] |
test edx, edx |
jz .get_device_descriptor |
dec edx |
jz .get_config_descriptor |
dec edx |
jz .get_speed |
or eax, -1 |
ret 8 |
.get_device_descriptor: |
add eax, usb_device_data.DeviceDescriptor |
ret 8 |
.get_config_descriptor: |
movzx ecx, [eax+usb_device_data.DeviceDescrSize] |
lea eax, [eax+ecx+usb_device_data.DeviceDescriptor] |
ret 8 |
.get_speed: |
movzx eax, [eax+usb_device_data.Speed] |
ret 8 |
endp |
|
; Initialize software part of usb_gtd. Called from controller-specific code |
; somewhere in AllocTransfer with eax -> next (inactive) usb_gtd, |
; ebx -> usb_pipe, ebp frame from call to AllocTransfer with [.td] -> |