mirror of
https://github.com/Doczom/SDHCI_driver_for_Kolibrios.git
synced 2025-09-21 02:50:10 +02:00
add function for send command on card
add function for send command on card
This commit is contained in:
110
sdhc_cmd.inc
110
sdhc_cmd.inc
@@ -1,28 +1,128 @@
|
|||||||
;; Copyright (C) 2022, Michail Frolov(aka Doczom)
|
;; Copyright (C) 2022, Michail Frolov(aka Doczom)
|
||||||
;; SDHC commands
|
;; SDHC commands
|
||||||
|
|
||||||
|
; in: eax - reg map, esi - struct controller
|
||||||
|
; ebx - arg 32 bit <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ecx - write/read edx - command reg with flags
|
||||||
|
proc send_sdhc_command
|
||||||
|
@@:
|
||||||
|
test dword[eax + SDHC_PRSNT_STATE], 0x07 ; check cmd_inhid_cmd + cmd_inhibit_dat + DAT Line Active
|
||||||
|
jnz @b
|
||||||
|
mov dword[eax + SDHC_CMD_ARG], ebx
|
||||||
|
;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
shl ecx, 4
|
||||||
|
shl edx, 16
|
||||||
|
add edx, ecx
|
||||||
|
mov dword[esi + SDHCI_CONTROLLER.flag_command_copmlate], -1
|
||||||
|
DEBUGF 1,"SDHCI: Command send\n"
|
||||||
|
mov dword[eax + SDHC_CMD_TRN], edx ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
@@:
|
||||||
|
;test dword[esi + SDHCI_CONTROLLER.flag_command_copmlate], -1
|
||||||
|
test dword[eax + SDHC_INT_STATUS], 0x01
|
||||||
|
jnz @b
|
||||||
|
or dword[eax + SDHC_INT_STATUS], 0x01
|
||||||
|
DEBUGF 1,"SDHCI: Command is out\n"
|
||||||
|
DEBUGF 1,"SDHCI: resp1=%x resp2=%x \n", [eax + SDHC_RESP1_0], [eax + SDHC_RESP3_2]
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
;basic commands
|
;basic commands
|
||||||
|
|
||||||
;cmd0 - Resets all cards to idle state
|
;cmd0 - Resets all cards to idle state
|
||||||
proc GO_IDLE_SATTE
|
proc GO_IDLE_SATTE
|
||||||
|
xor ebx, ebx
|
||||||
|
mov ecx, 0x00
|
||||||
|
mov edx, 0x00
|
||||||
|
call send_sdhc_command
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd2 - Asks any card to send the CID numbers on the CMD line
|
||||||
|
;resp = R2
|
||||||
|
proc ALL_SEND_CID
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
;cmd2 -
|
;cmd3 - Ask the card to publish a new relative address(RCA)
|
||||||
proc cmd2
|
;resp = R6
|
||||||
|
proc SEND_RCA
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
proc cmd3
|
;cmd4 - programs the DSR of all cards
|
||||||
|
proc SET_DSR
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
proc cmd4
|
proc cmd7
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd8 -
|
||||||
|
;resp = R7
|
||||||
|
proc SEND_IF_COUND
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
||||||
|
;acmd41 -
|
||||||
|
;resp = R3
|
||||||
|
proc SD_SEND_OP_COND
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
; block read/write
|
||||||
|
|
||||||
|
;cmd16 -
|
||||||
|
;arg = 0-31 - block Length
|
||||||
|
;resp = R1
|
||||||
|
proc SET_BLOCKLEN
|
||||||
|
ret
|
||||||
|
endp
|
||||||
; block read
|
; block read
|
||||||
|
|
||||||
|
;cmd17 -
|
||||||
|
;arg = 0-31 - data address
|
||||||
|
;resp = R1
|
||||||
|
proc READ_SIGLE_BLOCK
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd18 -
|
||||||
|
;arg = 0-31 - data address
|
||||||
|
;resp = R1
|
||||||
|
proc READ_MULTIPLE_BLOCK
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
|
||||||
; block write
|
; block write
|
||||||
|
|
||||||
|
;cmd24 -
|
||||||
|
;arg = 0-31 - data address
|
||||||
|
;resp = R1
|
||||||
|
proc WRITE_BLOCK
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd25 -
|
||||||
|
;arg = 0-31 - data address
|
||||||
|
;resp = R1
|
||||||
|
proc WRITE_MULTIPLE_BLOCK
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd27 - Programming of the programmable bits of the CSD
|
||||||
|
;resp = R1
|
||||||
|
proc PROGRAM_CSD
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
; SDIO mode
|
||||||
|
|
||||||
|
;cmd5 - <EFBFBD><EFBFBD><EFBFBD> ACMD41 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> SDIO
|
||||||
|
proc IO_SEND_OP_COND
|
||||||
|
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd52 -
|
||||||
|
proc IO_RW_DIRECT
|
||||||
|
|
||||||
|
ret
|
||||||
|
endp
|
||||||
|
;cmd53 -
|
||||||
|
proc IO_RW_EXTENDED
|
||||||
|
|
||||||
|
ret
|
||||||
|
endp
|
50
sdhci.asm
50
sdhci.asm
@@ -560,6 +560,8 @@ include 'drivers/macros.inc'
|
|||||||
include 'drivers/peimport.inc'
|
include 'drivers/peimport.inc'
|
||||||
include 'drivers/fdo.inc'
|
include 'drivers/fdo.inc'
|
||||||
|
|
||||||
|
|
||||||
|
include 'sdhc_cmd.inc'
|
||||||
; structures
|
; structures
|
||||||
struct SDHCI_CONTROLLER
|
struct SDHCI_CONTROLLER
|
||||||
fd rd 1 ; next controller
|
fd rd 1 ; next controller
|
||||||
@@ -620,7 +622,7 @@ list_controllers:
|
|||||||
tmp_void: dd 0
|
tmp_void: dd 0
|
||||||
|
|
||||||
proc START c, state:dword, cmdline:dword
|
proc START c, state:dword, cmdline:dword
|
||||||
cmp [state],1
|
cmp [state], DRV_ENTRY
|
||||||
jne .stop_drv
|
jne .stop_drv
|
||||||
|
|
||||||
;detect controller
|
;detect controller
|
||||||
@@ -691,8 +693,8 @@ proc START c, state:dword, cmdline:dword
|
|||||||
; free memory for DMA
|
; free memory for DMA
|
||||||
|
|
||||||
|
|
||||||
DEBUGF 1,"SDHCI: Stop working driver\n"
|
DEBUGF 1, "SDHCI: Stop working driver\n"
|
||||||
mov eax, 0
|
xor eax, eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;DEBUGF 1,"Controller found: class:=%x bus:=%x devfn:=%x \n",[eax + PCIDEV.class],[bus],[dev]
|
;DEBUGF 1,"Controller found: class:=%x bus:=%x devfn:=%x \n",[eax + PCIDEV.class],[bus],[dev]
|
||||||
@@ -770,6 +772,7 @@ proc sdhci_init
|
|||||||
test eax, eax
|
test eax, eax
|
||||||
jz .fail
|
jz .fail
|
||||||
|
|
||||||
|
DEBUGF 1,"SDHCI: base address = %x \n", eax
|
||||||
mov [esi + SDHCI_CONTROLLER.base_reg_map], eax
|
mov [esi + SDHCI_CONTROLLER.base_reg_map], eax
|
||||||
mov cl, [eax + SPEC_VERSION] ; get specification version
|
mov cl, [eax + SPEC_VERSION] ; get specification version
|
||||||
mov [esi + SDHCI_CONTROLLER.ver_spec], cl
|
mov [esi + SDHCI_CONTROLLER.ver_spec], cl
|
||||||
@@ -904,7 +907,7 @@ endp
|
|||||||
; eax - map reg
|
; eax - map reg
|
||||||
; ebx - divider Clock base
|
; ebx - divider Clock base
|
||||||
proc set_SD_clock
|
proc set_SD_clock
|
||||||
and dword[eax + SDHC_CTRL2], 0xffffffff - 0x04
|
and dword[eax + SDHC_CTRL2], 0xffffffff - 0x04 ; stop clock
|
||||||
|
|
||||||
|
|
||||||
and dword[eax + SDHC_CTRL2], 0xffff004f ; clear
|
and dword[eax + SDHC_CTRL2], 0xffff004f ; clear
|
||||||
@@ -933,7 +936,9 @@ endp
|
|||||||
; out: ebx = type card 0 - unknow card 1 - sdio 2 - sd card(ver1 ver2 ver2-hsp ), 4 - spi(MMC, eMMC)
|
; out: ebx = type card 0 - unknow card 1 - sdio 2 - sd card(ver1 ver2 ver2-hsp ), 4 - spi(MMC, eMMC)
|
||||||
proc card_init
|
proc card_init
|
||||||
DEBUGF 1,'SDHCI: Card init\n'
|
DEBUGF 1,'SDHCI: Card init\n'
|
||||||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0<>01
|
||||||
|
or dword[eax + SDHC_INT_MASK], 0xFFFF0001
|
||||||
|
or dword[eax + SDHC_SOG_MASK], 0xFFFF0001
|
||||||
; <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><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>
|
; <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]
|
mov ebx, [esi + SDHCI_CONTROLLER.Capabilities]
|
||||||
@@ -952,24 +957,31 @@ proc card_init
|
|||||||
mov ebx, [esi + SDHCI_CONTROLLER.divider400KHz]
|
mov ebx, [esi + SDHCI_CONTROLLER.divider400KHz]
|
||||||
call set_SD_clock
|
call set_SD_clock
|
||||||
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDHC_CTRL1
|
; <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SDHC_CTRL1
|
||||||
and dword[eax + SDHC_CTRL1], 11000b + 0x0f00 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dma <20><><EFBFBD><EFBFBD><EFBFBD> b power control
|
and dword[eax + SDHC_CTRL1], 11000b + 0x0f00 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dma <20><><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> power control
|
||||||
; cmd0 - reset card
|
|
||||||
|
|
||||||
|
;; !!! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> !!!
|
||||||
|
|
||||||
|
; cmd0 - reset card
|
||||||
|
call GO_IDLE_SATTE
|
||||||
;<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>
|
||||||
|
|
||||||
; 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>
|
||||||
|
call SEND_IF_COUND
|
||||||
; cmd5 voltage window = 0 - check sdio
|
; cmd5 voltage window = 0 - check sdio
|
||||||
|
call IO_SEND_OP_COND
|
||||||
; if SDIO initialization (cmd5)set voltage window
|
; if SDIO initialization (cmd5)set voltage window
|
||||||
|
|
||||||
; acmd41 voltage window = 0
|
; acmd41 voltage window = 0
|
||||||
|
call SD_SEND_OP_COND
|
||||||
;if card supported 2 spec, acmd41 + set hsp=1
|
;if card supported 2 spec, acmd41 + set hsp=1
|
||||||
|
|
||||||
; cmd55 acmd41 - <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
; cmd55 acmd41 - <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
; for no sdio card : cmd2 - get_CID
|
; for no sdio card : cmd2 - get_CID
|
||||||
|
call ALL_SEND_CID
|
||||||
; for all init card : cmd3 - get RCA
|
; for all init card : cmd3 - get RCA
|
||||||
|
call SEND_RCA
|
||||||
|
|
||||||
ret
|
ret
|
||||||
.spi:
|
.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>
|
||||||
@@ -978,19 +990,20 @@ endp
|
|||||||
|
|
||||||
proc thread_card_detect
|
proc thread_card_detect
|
||||||
;get event with data
|
;get event with data
|
||||||
invoke Kmalloc, 6*4
|
invoke Kmalloc, 6*4 ; 6*Dword
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .no_malloc
|
jz .no_malloc
|
||||||
mov edi, eax
|
mov edi, eax
|
||||||
push edi
|
push edi
|
||||||
invoke GetEvent
|
invoke GetEvent
|
||||||
pop edi
|
pop edi
|
||||||
DEBUGF 1,'SDHCI: Get event code=%x [edi + 4]=%x, [edi + 8]=%x\n', [edi], [edi + 4], [edi + 8]
|
;DEBUGF 1,'SDHCI: Get event code=%x [edi + 4]=%x, [edi + 8]=%x\n', [edi], [edi + 4], [edi + 8]
|
||||||
mov ecx,[edi + 4] ; reg map
|
push dword[edi + 4] ; reg map
|
||||||
mov esi,[edi + 8] ;controller struct
|
push dword[edi + 8] ;controller struct
|
||||||
mov eax, edi
|
mov eax, edi
|
||||||
invoke Kfree
|
invoke Kfree
|
||||||
mov eax, ecx
|
pop esi
|
||||||
|
pop eax
|
||||||
call card_detect
|
call card_detect
|
||||||
.no_malloc:
|
.no_malloc:
|
||||||
; destryct thread
|
; destryct thread
|
||||||
@@ -999,6 +1012,7 @@ proc thread_card_detect
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
proc card_detect
|
proc card_detect
|
||||||
|
DEBUGF 1,'SDHCI: eax=%x esi=%x\n', eax, esi
|
||||||
DEBUGF 1,'SDHCI: Card inserted\n'
|
DEBUGF 1,'SDHCI: Card inserted\n'
|
||||||
call card_init
|
call card_init
|
||||||
mov [esi + SDHCI_CONTROLLER.type_card], ebx
|
mov [esi + SDHCI_CONTROLLER.type_card], ebx
|
||||||
@@ -1036,7 +1050,6 @@ endp
|
|||||||
|
|
||||||
proc sdhc_irq
|
proc sdhc_irq
|
||||||
pusha
|
pusha
|
||||||
DEBUGF 1,"SDHCI: call sdhc_irq, esp=%x \n", esp
|
|
||||||
mov esi, [esp + 4 + 32] ;stdcall
|
mov esi, [esp + 4 + 32] ;stdcall
|
||||||
DEBUGF 1,"SDHCI: get_irq \n"
|
DEBUGF 1,"SDHCI: get_irq \n"
|
||||||
mov eax,[esi + SDHCI_CONTROLLER.base_reg_map]
|
mov eax,[esi + SDHCI_CONTROLLER.base_reg_map]
|
||||||
@@ -1063,11 +1076,11 @@ proc sdhc_irq
|
|||||||
mov [.event_struct + 4], ebx ; reg map
|
mov [.event_struct + 4], ebx ; reg map
|
||||||
mov [.event_struct + 8], ecx ; sdhci_controller struct
|
mov [.event_struct + 8], ecx ; sdhci_controller struct
|
||||||
mov esi, .event_struct
|
mov esi, .event_struct
|
||||||
DEBUGF 1,"SDHCI: send event tid=%x code[1]=%x code[2]=%x \n", eax, [.event_struct + 4], [.event_struct + 8]
|
;DEBUGF 1,"SDHCI: send event tid=%x code[1]=%x code[2]=%x \n", eax, [.event_struct + 4], [.event_struct + 8]
|
||||||
push ecx
|
push ecx
|
||||||
push ebx
|
push ebx
|
||||||
invoke SendEvent
|
invoke SendEvent
|
||||||
DEBUGF 1,"SDHCI: Evend sended, eax=%x uid=%x \n", eax, ebx
|
;DEBUGF 1,"SDHCI: Evend sended, eax=%x uid=%x \n", eax, ebx
|
||||||
pop eax
|
pop eax
|
||||||
pop esi
|
pop esi
|
||||||
.no_card_inserted:
|
.no_card_inserted:
|
||||||
@@ -1095,7 +1108,7 @@ proc sdhc_irq
|
|||||||
test dword[eax + SDHC_INT_STATUS], 0x8000 ; 15 bit
|
test dword[eax + SDHC_INT_STATUS], 0x8000 ; 15 bit
|
||||||
jnz .get_error
|
jnz .get_error
|
||||||
|
|
||||||
DEBUGF 1,"SDHCI: ret sdhc_irq, esp=%x \n", esp
|
;DEBUGF 1,"SDHCI: ret sdhc_irq, esp=%x \n", esp
|
||||||
popa
|
popa
|
||||||
ret
|
ret
|
||||||
.get_error:
|
.get_error:
|
||||||
@@ -1130,6 +1143,7 @@ endp
|
|||||||
drv_name: db 'SDHCI',0
|
drv_name: db 'SDHCI',0
|
||||||
|
|
||||||
sdcard_disk_name: db 'sdcard00',0
|
sdcard_disk_name: db 'sdcard00',0
|
||||||
|
mmccard_disk_name: db 'MMCcard00',0
|
||||||
|
|
||||||
;base_reg_map: dd 0;pointer on base registers comntroller
|
;base_reg_map: dd 0;pointer on base registers comntroller
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user