dragon-nx32: SPI fast sector read fixes
authorTormod Volden <debian.tormod@gmail.com>
Sun, 15 May 2016 11:19:55 +0000 (13:19 +0200)
committerAlan Cox <alan@etchedpixels.co.uk>
Mon, 16 May 2016 10:01:47 +0000 (11:01 +0100)
Disable FRX again when finished.

Use direct page addressing consistently.

Fix up the comment on the clock divisor, the effective divisor is
(register value + 1) x 2.

Signed-off-by: Tormod Volden <debian.tormod@gmail.com>
Kernel/platform-dragon-nx32/spi.s

index 3824902..3ba1774 100644 (file)
@@ -47,7 +47,7 @@ spigood:
 _sd_spi_clock:
        cmpb #0                 
        beq slow
-       ldd #0x0401             ; external 45MHz clock on, divide by 3
+       ldd #0x0401             ; external 45MHz clock on, divide by 4
        bra clkset
 slow:  ldd #0x0000             ; internal clock, phi/2 -> 0.89MHz/2 = 445kHz
 clkset:        std SPICTRL
@@ -110,7 +110,7 @@ _sd_spi_receive_sector:
        beq rdspi
        jsr map_process_always
 rdspi: lda #0x14               ; FRX on, external clock on
-       sta SPICTRL
+       sta <SPICTRL
 read8:
        lda <SPIDATA
        ldb <SPIDATA
@@ -128,7 +128,7 @@ read8:
        bne read8
        jsr map_kernel
        lda #0x04
-       sta SPICTRL             ; FRX off, external clock on
+       sta <SPICTRL            ; FRX off, external clock on
        puls y,dp,pc
 
 _sd_spi_transmit_sector:
@@ -141,7 +141,7 @@ _sd_spi_transmit_sector:
        lda _blk_op+2
        beq wrspi
        jsr map_process_always
-wrspi: lda #0x14               ; FRX on, external clock on
+wrspi: lda #0x04               ; ext clock, no FRX
        sta SPICTRL
 write8:
        ldd ,x++