mirror of
https://github.com/Doczom/SDHCI_driver_for_Kolibrios.git
synced 2025-09-21 02:50:10 +02:00
add set power voltage in function card_init
add set power voltage in function card_init and other update code
This commit is contained in:
86
sdhci.asm
86
sdhci.asm
@@ -584,7 +584,7 @@ struct SDHCI_CONTROLLER
|
|||||||
divider50MHz rd 1
|
divider50MHz rd 1
|
||||||
timeout_reg rd 1 ; offset 0x2e in reg map
|
timeout_reg rd 1 ; offset 0x2e in reg map
|
||||||
|
|
||||||
type_card rd 1 ; 0 - no card 1 - standart flash card 2 - MMC(eMMC) 3+ - other
|
type_card rd 1 ; 0 - no card 1 - SDIO 2 - MMC(eMMC) 4 - standart flash card 5+ - other
|
||||||
card_mode rd 1 ; 1 - spi 2 - sd bus 3+ - other
|
card_mode rd 1 ; 1 - spi 2 - sd bus 3+ - other
|
||||||
dma_mode rd 1 ; 0-no dma 1-sdma 2-adma1 3 adma2
|
dma_mode rd 1 ; 0-no dma 1-sdma 2-adma1 3 adma2
|
||||||
|
|
||||||
@@ -810,19 +810,21 @@ proc sdhci_init
|
|||||||
dec ecx
|
dec ecx
|
||||||
@@:
|
@@:
|
||||||
mov [esi + SDHCI_CONTROLLER.dma_mode], ecx
|
mov [esi + SDHCI_CONTROLLER.dma_mode], ecx
|
||||||
|
DEBUGF 1,"SDHCI: DMA mode: %x \n", [esi + SDHCI_CONTROLLER.dma_mode]
|
||||||
test ecx, ecx
|
test ecx, ecx
|
||||||
jz @f
|
jz @f
|
||||||
dec ecx
|
dec ecx
|
||||||
@@:
|
@@:
|
||||||
shl ecx, 3
|
shl ecx, 3
|
||||||
|
;and ecx, not 0x111 ;<3B><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> shl ecx,3 <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||||
or dword[eax + SDHC_CTRL1], ecx
|
or dword[eax + SDHC_CTRL1], ecx
|
||||||
DEBUGF 1,"SDHCI: DMA mode: %x \n", [esi + SDHCI_CONTROLLER.dma_mode]
|
; <20><><EFBFBD><EFBFBD> 0x28 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
push eax
|
push eax
|
||||||
mov eax, [esi + SDHCI_CONTROLLER.Capabilities]
|
mov eax, [esi + SDHCI_CONTROLLER.Capabilities]
|
||||||
shr eax, 8
|
shr eax, 8
|
||||||
and eax, 111111b ; 11 1111
|
and eax, 11111111b ; 1111 1111
|
||||||
mov ebx, 25
|
mov ebx, 25
|
||||||
xor edx, edx
|
xor edx, edx
|
||||||
div ebx ; 25 <20><><EFBFBD>
|
div ebx ; 25 <20><><EFBFBD>
|
||||||
@@ -857,8 +859,8 @@ proc sdhci_init
|
|||||||
pop eax
|
pop eax
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TODO: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TODO: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA
|
||||||
;mov eax, [esi + SDHCI_CONTROLLER.base_reg_map]
|
;mov eax, [esi + SDHCI_CONTROLLER.base_reg_map]
|
||||||
or dword[eax + SDHC_INT_MASK], -1
|
or dword[eax + SDHC_INT_MASK], 0x40 or 0x80
|
||||||
or word[eax + SDHC_SOG_MASK], -1
|
or word[eax + SDHC_SOG_MASK], 0x40 or 0x80
|
||||||
DEBUGF 1,'SDHCI: Set maximum int mask and mask signal\n'
|
DEBUGF 1,'SDHCI: Set maximum int mask and mask signal\n'
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Host Control Register
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Host Control Register
|
||||||
; <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -867,8 +869,11 @@ proc sdhci_init
|
|||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> host control 2
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> host control 2
|
||||||
;set 0x2e
|
;set 0x2e
|
||||||
|
|
||||||
|
;test
|
||||||
|
mov dword[eax + SDHC_INT_STATUS], 0x00
|
||||||
|
|
||||||
; set Wekeup_control
|
; set Wekeup_control
|
||||||
;or byte[Wekeup_control], 111b
|
or byte[Wekeup_control], 111b
|
||||||
; save and attach IRQ
|
; save and attach IRQ
|
||||||
invoke PciRead8, dword [esi + SDHCI_CONTROLLER.bus], dword [esi + SDHCI_CONTROLLER.dev], PCI_IRQ_LINE ;al=irq
|
invoke PciRead8, dword [esi + SDHCI_CONTROLLER.bus], dword [esi + SDHCI_CONTROLLER.dev], PCI_IRQ_LINE ;al=irq
|
||||||
;DEBUGF 1,'Attaching to IRQ %x\n',al
|
;DEBUGF 1,'Attaching to IRQ %x\n',al
|
||||||
@@ -879,9 +884,10 @@ proc sdhci_init
|
|||||||
invoke AttachIntHandler, eax, sdhc_irq, esi ;esi = pointre to controller
|
invoke AttachIntHandler, eax, sdhc_irq, esi ;esi = pointre to controller
|
||||||
|
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
mov eax, [esi + SDHCI_CONTROLLER.base_reg_map]
|
||||||
test dword[eax + SDHC_PRSNT_STATE], 0x10000 ; check 16 bit in SDHC_PRSNT_STATE.CARD_INS
|
test dword[eax + SDHC_PRSNT_STATE], 0x10000 ; check 16 bit in SDHC_PRSNT_STATE.CARD_INS
|
||||||
jz @f
|
jz @f
|
||||||
call card_init ; eax - REGISTER MAP esi - SDHCI_CONTROLLER
|
call card_detect ; eax - REGISTER MAP esi - SDHCI_CONTROLLER
|
||||||
@@:
|
@@:
|
||||||
|
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
@@ -893,11 +899,20 @@ proc sdhci_init
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
proc card_init
|
proc card_init
|
||||||
DEBUGF 1,'SDHCI: Card inserted\n'
|
DEBUGF 1,'SDHCI: Card init\n'
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (3.3<EFBFBD>)
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (3.3<EFBFBD> - <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
; <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
mov ebx, [esi + SDHCI_CONTROLLER.Capabilities]
|
||||||
|
shr ebx, 24
|
||||||
|
and ebx, 111b ;26bit - 1.8 25bit - 3.0 24bit - 3.3
|
||||||
|
bsf ecx, ebx
|
||||||
|
mov edx, 111b
|
||||||
|
sub edx, ecx
|
||||||
|
shr edx, 1
|
||||||
|
or edx, 0x01 ; <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
or dword[eax + SDHC_CTRL1], edx
|
||||||
; cmd0 - reset card
|
; cmd0 - reset card
|
||||||
|
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(sd bus, spi) - <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(sd bus, spi) - <20><> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
@@ -905,18 +920,33 @@ proc card_init
|
|||||||
; cmd8 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; cmd8 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
; cmd55 acmd41 - <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
; cmd55 acmd41 - <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
.spi:
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
proc card_detect
|
||||||
|
DEBUGF 1,'SDHCI: Card inserted\n'
|
||||||
|
call card_init
|
||||||
|
|
||||||
; <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
; <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SD memory, eMMC, SPI), <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, else set flag SDIO device
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
.memory_card:
|
||||||
|
call add_card_disk
|
||||||
|
|
||||||
|
ret
|
||||||
|
.SDIO:
|
||||||
|
mov [esi + SDHCI_CONTROLLER.type_card], 1 ; sdio card
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
proc card_destryct
|
proc card_destryct
|
||||||
DEBUGF 1,'SDHCI: Card removed\n'
|
DEBUGF 1,'SDHCI: Card removed\n'
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
|
test ebx, 110b
|
||||||
|
jz .no_memory_card
|
||||||
|
|
||||||
|
call del_card_disk
|
||||||
|
.no_memory_card:
|
||||||
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
ret
|
ret
|
||||||
@@ -933,7 +963,7 @@ proc sdhc_irq
|
|||||||
jz .no_card_inserted
|
jz .no_card_inserted
|
||||||
|
|
||||||
or dword[eax + SDHC_INT_STATUS], 0x40
|
or dword[eax + SDHC_INT_STATUS], 0x40
|
||||||
call card_init
|
call card_detect
|
||||||
.no_card_inserted:
|
.no_card_inserted:
|
||||||
test dword[eax + SDHC_INT_STATUS], 0x80
|
test dword[eax + SDHC_INT_STATUS], 0x80
|
||||||
jz .no_card_removed
|
jz .no_card_removed
|
||||||
@@ -941,16 +971,42 @@ proc sdhc_irq
|
|||||||
or dword[eax + SDHC_INT_STATUS], 0x80
|
or dword[eax + SDHC_INT_STATUS], 0x80
|
||||||
call card_destryct
|
call card_destryct
|
||||||
.no_card_removed:
|
.no_card_removed:
|
||||||
|
test dword[eax + SDHC_INT_STATUS], 0x01 ; check zero bit - Command Complete
|
||||||
|
jz .no_command_complate
|
||||||
|
|
||||||
|
or dword[eax + SDHC_INT_STATUS], 0x01
|
||||||
|
DEBUGF 1,"Get command complete, CLR flag stop running \n"
|
||||||
|
;and [esi + ], 0x00
|
||||||
|
.no_command_complate:
|
||||||
|
test dword[eax + SDHC_INT_STATUS], 0x02
|
||||||
|
jz .no_transfer_commplate
|
||||||
|
|
||||||
|
or dword[eax + SDHC_INT_STATUS], 0x02
|
||||||
|
DEBUGF 1,"Get transfer complete, CLR flag stop running \n"
|
||||||
|
;and [esi + ], 0x00
|
||||||
|
.no_transfer_commplate:
|
||||||
|
|
||||||
test dword[eax + SDHC_INT_STATUS], 0x8000 ; 15 bit
|
test dword[eax + SDHC_INT_STATUS], 0x8000 ; 15 bit
|
||||||
jnz .get_error
|
jnz .get_error
|
||||||
|
|
||||||
sti
|
|
||||||
ret
|
ret
|
||||||
.get_error:
|
.get_error:
|
||||||
DEBUGF 1,"SDHCI: get error irq, \n"
|
DEBUGF 1,"SDHCI: get error irq, \n"
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
proc add_card_disk
|
||||||
|
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
proc del_card_disk
|
||||||
|
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; This function for working drivers and programs worked
|
; This function for working drivers and programs worked
|
||||||
; with SDIO interface.
|
; with SDIO interface.
|
||||||
proc service_proc stdcall, ioctl:dword
|
proc service_proc stdcall, ioctl:dword
|
||||||
|
Reference in New Issue
Block a user