Fix DSD Driver

- Dual SD support in sd.asm was broken for two cards when the SC126 dual SD card support was added.  This should fix all scenarios.
This commit is contained in:
Wayne Warthen
2021-11-09 20:25:38 -08:00
parent e15a1cb972
commit 891893c0e5
3 changed files with 14 additions and 8 deletions

View File

@@ -1742,26 +1742,32 @@ SD_SELECT:
; CALL SD_WAITTX
;#ENDIF
;
#IF (SDMODE == SDMODE_SC)
LD A,(IY+SD_DEV) ; GET CURRENT DEVICE
OR A ; SET FLAGS
LD A,(SD_OPRVAL) ; GET CURRENT OPRVAL BACK
JR NZ,SD_SELECT1 ; IF NOT ZERO, DO SECONDARY
; ASSERT PRIMARY CS, DEASSERT SECONDARY (IF ANY)
OR SD_CS0
#IF (SD_DEVCNT > 1)
#IF (SD_DEVCNT > 1)
AND ~SD_CS1
#ENDIF
#ENDIF
JR SD_SELECT2
SD_SELECT1:
; DEASSERT PRIMARY CS, ASSERT SECONDARY (IF ANY)
AND ~SD_CS0
#IF (SD_DEVCNT > 1)
#IF (SD_DEVCNT > 1)
OR SD_CS1
#ENDIF
#ELSE
LD A,(SD_OPRVAL) ; GET CURRENT OPRVAL BACK
OR SD_CS0
#ENDIF
;
SD_SELECT2:
; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS
#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC))
#IF (SD_DEVCNT > 1)
#IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1))
XOR SD_CS0 | SD_CS1
#ELSE
XOR SD_CS0
@@ -1794,14 +1800,14 @@ SD_DESELECT:
#ENDIF
;
LD A,(SD_OPRVAL)
#IF (SD_DEVCNT > 1)
#IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1))
AND ~(SD_CS0 | SD_CS1)
#ELSE
AND ~SD_CS0
#ENDIF
; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS
#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC))
#IF (SD_DEVCNT > 1)
#IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1))
XOR SD_CS0 | SD_CS1
#ELSE
XOR SD_CS0

View File

@@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.137"
#DEFINE BIOSVER "3.1.1-pre.138"

View File

@@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.137"
db "3.1.1-pre.138"
endm