Browse Source

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.
pull/283/head
Wayne Warthen 4 years ago
parent
commit
891893c0e5
  1. 18
      Source/HBIOS/sd.asm
  2. 2
      Source/ver.inc
  3. 2
      Source/ver.lib

18
Source/HBIOS/sd.asm

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

2
Source/ver.inc

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

2
Source/ver.lib

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

Loading…
Cancel
Save