quick fix for active IDE interrupts at boot stage

git-svn-id: svn://kolibrios.org@4578 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
CleverMouse 2014-02-20 13:01:13 +00:00
parent 898fe08869
commit 85d31dcef6
2 changed files with 33 additions and 0 deletions

View File

@ -1183,3 +1183,35 @@ IDE_BAR2_val dw ?
IDE_BAR3_val dw ?
endg
;-----------------------------------------------------------------------------
proc clear_pci_ide_interrupts
mov esi, pcidev_list
.loop:
mov esi, [esi+PCIDEV.fd]
cmp esi, pcidev_list
jz .done
cmp [esi+PCIDEV.class], 0x01018F
jnz .loop
mov ah, [esi+PCIDEV.bus]
mov al, 2
mov bh, [esi+PCIDEV.devfn]
mov bl, 0x20
call pci_read_reg
and eax, 0FFFCh
mov edx, eax
add edx, 2
in al, dx
DEBUGF 1,'K : clear_pci_ide_interrupts: port[%x] = %x ',dx,al
out dx, al
in al, dx
DEBUGF 1,'-> %x; ',al
add edx, 8
in al, dx
DEBUGF 1,'port[%x] = %x ',dx,al
out dx, al
in al, dx
DEBUGF 1,'-> %x\n',al
jmp .loop
.done:
ret
endp

View File

@ -1027,6 +1027,7 @@ end if
mov [pci_access_enabled], 1
call pci_enum
call clear_pci_ide_interrupts
include "detect/vortex86.inc" ; Vortex86 SoC detection code