dragon-nx32: SPI: read out blk_op before mapping user process
authorTormod Volden <debian.tormod@gmail.com>
Fri, 6 Nov 2015 23:24:57 +0000 (00:24 +0100)
committerAlan Cox <alan@linux.intel.com>
Sat, 7 Nov 2015 20:07:25 +0000 (20:07 +0000)
I wish I had seen Brett's similar fix for IDE before debugging
this...

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

index ccf9fae..3824902 100644 (file)
@@ -103,13 +103,13 @@ _sd_spi_receive_sector:
        pshs y,dp
        lda #0xFF
        tfr a,dp
+       ldx _blk_op
+       leay 512,x
+       sty endspi
        lda _blk_op+2
        beq rdspi
        jsr map_process_always
-rdspi: ldx _blk_op
-       leay 512,x
-       sty endspi
-       lda #0x14               ; FRX on, external clock on
+rdspi: lda #0x14               ; FRX on, external clock on
        sta SPICTRL
 read8:
        lda <SPIDATA
@@ -135,12 +135,14 @@ _sd_spi_transmit_sector:
        pshs y,dp
        lda #0xFF
        tfr a,dp
+       ldx _blk_op
+       leay 512,x
+       sty endspi
        lda _blk_op+2
        beq wrspi
        jsr map_process_always
-wrspi: ldx _blk_op
-       leay 512,x
-       sty endspi
+wrspi: lda #0x14               ; FRX on, external clock on
+       sta SPICTRL
 write8:
        ldd ,x++
        sta <SPIDATA