/kernel/trunk/drivers/sis.asm |
---|
693,6 → 693,11 |
counter dd ? |
endl |
mov edx, CTRL_STAT |
call [ctrl.ctrl_read32] |
test eax, CTRL_ST_CREADY |
jnz .ready |
call reset_codec |
and eax, eax |
jz .err |
710,7 → 715,7 |
call [ctrl.codec_read16] |
and eax, 0x0F |
cmp eax, 0x0F |
jz .ready |
je .ready |
mov eax, 5000 ; wait 5 ms |
call StallExec |
804,8 → 809,11 |
counter dd ? |
endl |
xor eax, eax |
mov edx, GLOB_CTRL |
call [ctrl.ctrl_read32] |
and eax, not 0x08 |
or eax, 0x02 |
mov edx, GLOB_CTRL |
call [ctrl.ctrl_write32] |
if DEBUG |
813,13 → 821,6 |
call SysMsgBoardStr |
end if |
mov eax, 1000000 ; wait 1 s |
call StallExec |
mov eax, 2 |
mov edx, GLOB_CTRL |
call [ctrl.ctrl_write32] |
mov [counter], 10 ; total 10*100 ms = 1s |
.wait: |
mov eax, 100000 ; wait 100 ms |
836,6 → 837,7 |
mov esi, msgCRFail |
call SysMsgBoardStr |
end if |
.fail: |
stc |
ret |
.ok: |
845,9 → 847,6 |
jz .fail |
clc |
ret |
.fail: |
stc |
ret |
endp |
align 4 |
1039,7 → 1038,7 |
rdtsc |
sub eax, ebx |
sbb edx, ecx |
jb @B |
js @B |
pop eax |
pop ebx |