Fixed bug in RTL8169 driver

git-svn-id: svn://kolibrios.org@2918 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
hidnplayr 2012-08-09 20:27:09 +00:00
parent 26aeed8f84
commit 68230a94d8

View File

@ -305,7 +305,7 @@ macro WRITE_GMII_REG RegAddr, value {
end if end if
out dx, eax out dx, eax
call PHY_WAIT call PHY_WAIT_WRITE
} }
macro READ_GMII_REG RegAddr { macro READ_GMII_REG RegAddr {
@ -316,7 +316,7 @@ local .error, .done
mov eax, RegAddr shl 16 mov eax, RegAddr shl 16
out dx, eax out dx, eax
call PHY_WAIT call PHY_WAIT_READ
jz .error jz .error
in eax, dx in eax, dx
@ -329,7 +329,25 @@ local .error, .done
} }
align 4 align 4
PHY_WAIT: ; io addr must already be set to REG_PHYAR PHY_WAIT_READ: ; io addr must already be set to REG_PHYAR
udelay 1 ;;;1000
push ecx
mov ecx, 2000
; Check if the RTL8169 has completed writing/reading to the specified MII register
@@:
in eax, dx
test eax, 0x80000000
jnz .exit
udelay 1 ;;;100
loop @b
.exit:
pop ecx
ret
align 4
PHY_WAIT_WRITE: ; io addr must already be set to REG_PHYAR
udelay 1 ;;;1000 udelay 1 ;;;1000