summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorJack Halpin <jack.halpin@gmail.com>2010-03-22 06:09:08 +0000
committerJack Halpin <jack.halpin@gmail.com>2010-03-22 06:09:08 +0000
commitd2a264e7dae9f716dfbf8e6b2167e461d1a6bf5a (patch)
tree00d7781f09c177f70f19866a916130d403074343 /firmware
parent3ee301248d3eb6150f500b86412f3cf7667d17c4 (diff)
downloadrockbox-d2a264e7dae9f716dfbf8e6b2167e461d1a6bf5a.tar.gz
rockbox-d2a264e7dae9f716dfbf8e6b2167e461d1a6bf5a.zip
sd-as3525v2.c Use MCI_MASK instead of data_transfer flag to determine if data transfer is happening.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25284 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/target/arm/as3525/sd-as3525v2.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index b696908157..2fec4d9404 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -336,7 +336,6 @@ bool sd_enabled = false;
336 336
337static struct wakeup transfer_completion_signal; 337static struct wakeup transfer_completion_signal;
338static volatile bool retry; 338static volatile bool retry;
339static volatile bool data_transfer = false;
340 339
341#if defined(HAVE_MULTIDRIVE) 340#if defined(HAVE_MULTIDRIVE)
342int active_card = 0; 341int active_card = 0;
@@ -354,7 +353,7 @@ void INT_NAND(void)
354 if(status & MCI_DATA_ERROR) 353 if(status & MCI_DATA_ERROR)
355 retry = true; 354 retry = true;
356 355
357 if(data_transfer && status & (MCI_INT_DTO|MCI_DATA_ERROR)) 356 if( status & (MCI_INT_DTO|MCI_DATA_ERROR))
358 wakeup_signal(&transfer_completion_signal); 357 wakeup_signal(&transfer_completion_signal);
359 358
360 MCI_CTRL |= INT_ENABLE; 359 MCI_CTRL |= INT_ENABLE;
@@ -793,14 +792,12 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
793 goto sd_transfer_error; 792 goto sd_transfer_error;
794 } 793 }
795 794
796 795 MCI_MASK |= (MCI_DATA_ERROR | MCI_INT_DTO);
797 MCI_MASK = MCI_DATA_ERROR | MCI_INT_DTO;
798 MCI_CTRL |= DMA_ENABLE; 796 MCI_CTRL |= DMA_ENABLE;
799 797
800 MCI_FIFOTH &= MCI_FIFOTH_MASK; 798 MCI_FIFOTH &= MCI_FIFOTH_MASK;
801 MCI_FIFOTH |= 0x503f0080; 799 MCI_FIFOTH |= 0x503f0080;
802 800
803
804 int arg = start; 801 int arg = start;
805 if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */ 802 if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */
806 arg *= SD_BLOCK_SIZE; 803 arg *= SD_BLOCK_SIZE;
@@ -815,9 +812,9 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
815 dma_enable_channel(0, MCI_FIFO, dma_buf, DMA_PERI_SD, 812 dma_enable_channel(0, MCI_FIFO, dma_buf, DMA_PERI_SD,
816 DMAC_FLOWCTRL_PERI_PERI_TO_MEM, false, true, 0, DMA_S8, NULL); 813 DMAC_FLOWCTRL_PERI_PERI_TO_MEM, false, true, 0, DMA_S8, NULL);
817 814
818 data_transfer = true;
819 wakeup_wait(&transfer_completion_signal, TIMEOUT_BLOCK); 815 wakeup_wait(&transfer_completion_signal, TIMEOUT_BLOCK);
820 data_transfer = false; 816
817 MCI_MASK &= ~(MCI_DATA_ERROR | MCI_INT_DTO);
821 818
822 last_disk_activity = current_tick; 819 last_disk_activity = current_tick;
823 820