mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-14 02:27:39 -04:00
SD AMSv2: Restore access to the last 0xF000 sectors of internal drive
Fixes FS#11965 and FS#12001. Backports r29625, r29637, r29638. Repairs r29169. Thanks to saratoga and funman! git-svn-id: svn://svn.rockbox.org/rockbox/branches/v3_8@29641 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
90df1b4a76
commit
0b2894e2ec
1 changed files with 8 additions and 1 deletions
|
@ -826,6 +826,7 @@ static int sd_transfer_sectors(IF_MD2(int drive,) unsigned long start,
|
||||||
int retry_all = 0;
|
int retry_all = 0;
|
||||||
int const retry_data_max = 100; /* Generous, methinks */
|
int const retry_data_max = 100; /* Generous, methinks */
|
||||||
int retry_data;
|
int retry_data;
|
||||||
|
unsigned int real_numblocks;
|
||||||
|
|
||||||
mutex_lock(&sd_mtx);
|
mutex_lock(&sd_mtx);
|
||||||
#ifndef BOOTLOADER
|
#ifndef BOOTLOADER
|
||||||
|
@ -855,7 +856,13 @@ sd_transfer_retry_with_reinit:
|
||||||
goto sd_transfer_error_no_dma;
|
goto sd_transfer_error_no_dma;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((start+count) > card_info[drive].numblocks)
|
/* Check the real block size after the card has been initialized */
|
||||||
|
real_numblocks = card_info[drive].numblocks;
|
||||||
|
/* 'start' represents the real (physical) starting sector
|
||||||
|
* so we must compare it to the real (physical) number of sectors */
|
||||||
|
if (drive == INTERNAL_AS3525)
|
||||||
|
real_numblocks += AMS_OF_SIZE;
|
||||||
|
if ((start+count) > real_numblocks)
|
||||||
{
|
{
|
||||||
ret = -19;
|
ret = -19;
|
||||||
goto sd_transfer_error_no_dma;
|
goto sd_transfer_error_no_dma;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue