mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 21:25:19 -05:00
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
This commit is contained in:
parent
ac9287bdb5
commit
5a44e43870
3 changed files with 12 additions and 53 deletions
|
|
@ -669,7 +669,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
#endif
|
#endif
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
unsigned loops = 0;
|
unsigned loops = 0;
|
||||||
bool aligned = !((uintptr_t)buf & (CACHEALIGN_SIZE - 1));
|
|
||||||
|
|
||||||
mutex_lock(&sd_mtx);
|
mutex_lock(&sd_mtx);
|
||||||
sd_enable(true);
|
sd_enable(true);
|
||||||
|
|
@ -701,14 +700,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
|
|
||||||
dma_retain();
|
dma_retain();
|
||||||
|
|
||||||
if(aligned)
|
|
||||||
{
|
|
||||||
if(write)
|
|
||||||
clean_dcache_range(buf, count * SECTOR_SIZE);
|
|
||||||
else
|
|
||||||
dump_dcache_range(buf, count * SECTOR_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
while(count)
|
while(count)
|
||||||
{
|
{
|
||||||
/* 128 * 512 = 2^16, and doesn't fit in the 16 bits of DATA_LENGTH
|
/* 128 * 512 = 2^16, and doesn't fit in the 16 bits of DATA_LENGTH
|
||||||
|
|
@ -749,19 +740,12 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */
|
if(!(card_info[drive].ocr & (1<<30))) /* not SDHC */
|
||||||
bank_start *= SD_BLOCK_SIZE;
|
bank_start *= SD_BLOCK_SIZE;
|
||||||
|
|
||||||
if(aligned)
|
|
||||||
{
|
|
||||||
dma_buf = AS3525_PHYSICAL_ADDR(buf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dma_buf = aligned_buffer;
|
dma_buf = aligned_buffer;
|
||||||
if(transfer > UNALIGNED_NUM_SECTORS)
|
if(transfer > UNALIGNED_NUM_SECTORS)
|
||||||
transfer = UNALIGNED_NUM_SECTORS;
|
transfer = UNALIGNED_NUM_SECTORS;
|
||||||
|
|
||||||
if(write)
|
if(write)
|
||||||
memcpy(uncached_buffer, buf, transfer * SD_BLOCK_SIZE);
|
memcpy(uncached_buffer, buf, transfer * SD_BLOCK_SIZE);
|
||||||
}
|
|
||||||
|
|
||||||
ret = sd_wait_for_tran_state(drive);
|
ret = sd_wait_for_tran_state(drive);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
|
|
@ -820,7 +804,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
|
|
||||||
if(!transfer_error[drive])
|
if(!transfer_error[drive])
|
||||||
{
|
{
|
||||||
if(!write && !aligned)
|
if(!write)
|
||||||
memcpy(buf, uncached_buffer, transfer * SD_BLOCK_SIZE);
|
memcpy(buf, uncached_buffer, transfer * SD_BLOCK_SIZE);
|
||||||
buf += transfer * SD_BLOCK_SIZE;
|
buf += transfer * SD_BLOCK_SIZE;
|
||||||
start += transfer;
|
start += transfer;
|
||||||
|
|
|
||||||
|
|
@ -789,8 +789,6 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
#ifndef HAVE_MULTIDRIVE
|
#ifndef HAVE_MULTIDRIVE
|
||||||
const int drive = 0;
|
const int drive = 0;
|
||||||
#endif
|
#endif
|
||||||
bool aligned = !((uintptr_t)buf & (CACHEALIGN_SIZE - 1));
|
|
||||||
|
|
||||||
|
|
||||||
mutex_lock(&sd_mtx);
|
mutex_lock(&sd_mtx);
|
||||||
#ifndef BOOTLOADER
|
#ifndef BOOTLOADER
|
||||||
|
|
@ -830,34 +828,17 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
last_disk_activity = current_tick;
|
last_disk_activity = current_tick;
|
||||||
dma_retain();
|
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;
|
const int cmd = write ? SD_WRITE_MULTIPLE_BLOCK : SD_READ_MULTIPLE_BLOCK;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
void *dma_buf;
|
void *dma_buf = aligned_buffer;
|
||||||
unsigned int transfer = count;
|
unsigned int transfer = count;
|
||||||
|
|
||||||
if(aligned)
|
|
||||||
{
|
|
||||||
dma_buf = AS3525_PHYSICAL_ADDR(buf);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dma_buf = aligned_buffer;
|
|
||||||
if(transfer > UNALIGNED_NUM_SECTORS)
|
if(transfer > UNALIGNED_NUM_SECTORS)
|
||||||
transfer = UNALIGNED_NUM_SECTORS;
|
transfer = UNALIGNED_NUM_SECTORS;
|
||||||
|
|
||||||
if(write)
|
if(write)
|
||||||
memcpy(uncached_buffer, buf, transfer * SD_BLOCK_SIZE);
|
memcpy(uncached_buffer, buf, transfer * SD_BLOCK_SIZE);
|
||||||
}
|
|
||||||
|
|
||||||
/* Interrupt handler might set this to true during transfer */
|
/* Interrupt handler might set this to true during transfer */
|
||||||
retry = false;
|
retry = false;
|
||||||
|
|
@ -912,7 +893,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
|
|
||||||
if(!retry)
|
if(!retry)
|
||||||
{
|
{
|
||||||
if(!write && !aligned)
|
if(!write)
|
||||||
memcpy(buf, uncached_buffer, transfer * SD_BLOCK_SIZE);
|
memcpy(buf, uncached_buffer, transfer * SD_BLOCK_SIZE);
|
||||||
buf += transfer * SD_BLOCK_SIZE;
|
buf += transfer * SD_BLOCK_SIZE;
|
||||||
start += transfer;
|
start += transfer;
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@
|
||||||
|
|
||||||
#include "clock-target.h" /* CPUFREQ_* are defined here */
|
#include "clock-target.h" /* CPUFREQ_* are defined here */
|
||||||
|
|
||||||
#define STORAGE_WANTS_ALIGN
|
|
||||||
|
|
||||||
/* We can use a interrupt-based mechanism on the fuzev2 */
|
/* We can use a interrupt-based mechanism on the fuzev2 */
|
||||||
#define INCREASED_SCROLLWHEEL_POLLING \
|
#define INCREASED_SCROLLWHEEL_POLLING \
|
||||||
(defined(HAVE_SCROLLWHEEL) && (CONFIG_CPU == AS3525))
|
(defined(HAVE_SCROLLWHEEL) && (CONFIG_CPU == AS3525))
|
||||||
|
|
@ -41,10 +39,6 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define AS3525_UNCACHED_ADDR(a) ((typeof(a)) ((uintptr_t)(a) + 0x10000000))
|
#define AS3525_UNCACHED_ADDR(a) ((typeof(a)) ((uintptr_t)(a) + 0x10000000))
|
||||||
#define AS3525_PHYSICAL_ADDR(a) \
|
|
||||||
((typeof(a)) ((((uintptr_t)(a)) & (MEM*0x100000)) \
|
|
||||||
? (((uintptr_t)(a)) - IRAM_ORIG) \
|
|
||||||
: ((uintptr_t)(a))))
|
|
||||||
|
|
||||||
#ifdef SANSA_C200V2
|
#ifdef SANSA_C200V2
|
||||||
/* 0: Backlight on A5, 1: Backlight on A7 */
|
/* 0: Backlight on A5, 1: Backlight on A7 */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue