summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/as3525/sd-as3525v2.c
diff options
context:
space:
mode:
authorRafaël Carré <rafael.carre@gmail.com>2010-06-22 09:02:56 +0000
committerRafaël Carré <rafael.carre@gmail.com>2010-06-22 09:02:56 +0000
commit5a44e43870d6f172aebb9d659cec5427d587f587 (patch)
treeb9252e7a22db90249ed7c138b07196009db1e54a /firmware/target/arm/as3525/sd-as3525v2.c
parentac9287bdb5b94d575b5130ccdc2fe25c45ca395e (diff)
downloadrockbox-5a44e43870d6f172aebb9d659cec5427d587f587.tar.gz
rockbox-5a44e43870d6f172aebb9d659cec5427d587f587.zip
revert r26953 + r26954
test_disk says everything is alright but playback is buggy, especially when playing lossless files git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27044 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/as3525/sd-as3525v2.c')
-rw-r--r--firmware/target/arm/as3525/sd-as3525v2.c31
1 files changed, 6 insertions, 25 deletions
diff --git a/firmware/target/arm/as3525/sd-as3525v2.c b/firmware/target/arm/as3525/sd-as3525v2.c
index 238cd7a5eb..386b76e758 100644
--- a/firmware/target/arm/as3525/sd-as3525v2.c
+++ b/firmware/target/arm/as3525/sd-as3525v2.c
@@ -789,8 +789,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
#ifndef HAVE_MULTIDRIVE
const int drive = 0;
#endif
- bool aligned = !((uintptr_t)buf & (CACHEALIGN_SIZE - 1));
-
mutex_lock(&sd_mtx);
#ifndef BOOTLOADER
@@ -830,34 +828,17 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
last_disk_activity = current_tick;
dma_retain();
- if(aligned)
- {
- if(write)
- clean_dcache_range(buf, count * SECTOR_SIZE);
- else
- dump_dcache_range(buf, count * SECTOR_SIZE);
- }
-
const int cmd = write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK;
do
{
- void *dma_buf;
+ void *dma_buf = aligned_buffer;
unsigned int transfer = count;
+ if(transfer > UNALIGNED_NUM_SECTORS)
+ transfer = UNALIGNED_NUM_SECTORS;
- if(aligned)
- {
- dma_buf = AS3525_PHYSICAL_ADDR(buf);
- }
- else
- {
- dma_buf = aligned_buffer;
- if(transfer > UNALIGNED_NUM_SECTORS)
- transfer = UNALIGNED_NUM_SECTORS;
-
- if(write)
- memcpy(uncached_buffer, buf, transfer * SD_BLOCK_SIZE);
- }
+ if(write)
+ memcpy(uncached_buffer, buf, transfer * SD_BLOCK_SIZE);
/* Interrupt handler might set this to true during transfer */
retry = false;
@@ -912,7 +893,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
if(!retry)
{
- if(!write && !aligned)
+ if(!write)
memcpy(buf, uncached_buffer, transfer * SD_BLOCK_SIZE);
buf += transfer * SD_BLOCK_SIZE;
start += transfer;