diff options
author | Jack Halpin <jack.halpin@gmail.com> | 2010-03-22 06:09:08 +0000 |
---|---|---|
committer | Jack Halpin <jack.halpin@gmail.com> | 2010-03-22 06:09:08 +0000 |
commit | d2a264e7dae9f716dfbf8e6b2167e461d1a6bf5a (patch) | |
tree | 00d7781f09c177f70f19866a916130d403074343 /firmware/target/arm | |
parent | 3ee301248d3eb6150f500b86412f3cf7667d17c4 (diff) | |
download | rockbox-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/target/arm')
-rw-r--r-- | firmware/target/arm/as3525/sd-as3525v2.c | 11 |
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 | ||
337 | static struct wakeup transfer_completion_signal; | 337 | static struct wakeup transfer_completion_signal; |
338 | static volatile bool retry; | 338 | static volatile bool retry; |
339 | static volatile bool data_transfer = false; | ||
340 | 339 | ||
341 | #if defined(HAVE_MULTIDRIVE) | 340 | #if defined(HAVE_MULTIDRIVE) |
342 | int active_card = 0; | 341 | int 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 | ||