Browse Source

SD Card Driver Compatibility Improvement

Handle SD Cards that do not support ACMD41 by using CMD1 instead.
pull/199/head
Wayne Warthen 5 years ago
parent
commit
49de66fb85
  1. 2
      Source/HBIOS/Makefile
  2. 9
      Source/HBIOS/sd.asm

2
Source/HBIOS/Makefile

@ -3,7 +3,7 @@ ifndef ROM_CONFIG
endif
ifdef ROM_PLATFORM
OBJECTS = ${ROM_PLATFORM}_${ROM_CONFIG}.rom ${ROM_PLATFORM}_${ROM_CONFIG}.com
OBJECTS = ${ROM_PLATFORM}_${ROM_CONFIG}.rom ${ROM_PLATFORM}_${ROM_CONFIG}.com ${ROM_PLATFORM}_${ROM_CONFIG}.upd
else
OBJECTS += DYNO_std.rom DYNO_std.com DYNO_std.upd
OBJECTS += EZZ80_std.rom EZZ80_std.com EZZ80_std.upd

9
Source/HBIOS/sd.asm

@ -946,7 +946,16 @@ SD_INITCARD3:
LD A,$40 ; P0 = $40 INDICATES WE SUPPORT V2 CARDS
LD (SD_CMDP0),A ; SET COMMAND PARM 0
CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA RETURNED
;RET NZ ; ABORT ON ERROR
JR Z,SD_INITCARD3AA ; IF GOOD SKIP AHEAD
; SOME CARDS DON'T SUPPORT ACMD41, SO TRY CMD1 AS ALTERNATIVE
LD A,SD_CMD_SEND_OP_COND ; SD_CMD_SEND_OP_COND
CALL SD_INITCMD ; SETUP COMMAND BUFFER
LD A,$40 ; P0 = $40 INDICATES WE SUPPORT V2 CARDS
LD (SD_CMDP0),A ; SET COMMAND PARM 0
CALL SD_EXECCMDND ; EXEC COMMAND W/ NO DATA RETURNED
RET NZ ; ABORT ON ERROR
SD_INITCARD3AA:
; CHECK FOR IDLE, EXIT LOOP IF IDLE CLEARED
LD A,(SD_RC) ; GET CARD RESULT CODE
OR A ; SET FLAGS

Loading…
Cancel
Save