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 const retry_data_max = 100; /* Generous, methinks */
|
||||
int retry_data;
|
||||
unsigned int real_numblocks;
|
||||
|
||||
mutex_lock(&sd_mtx);
|
||||
#ifndef BOOTLOADER
|
||||
|
@ -855,7 +856,13 @@ sd_transfer_retry_with_reinit:
|
|||
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;
|
||||
goto sd_transfer_error_no_dma;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue