1
0
Fork 0
forked from len0rd/rockbox

Enable boot from SD for Sansa e200

Change-Id: I0940f2cd5fc914d6d5061b5798b1a636009649b7
This commit is contained in:
Johannes Rauh 2020-08-15 18:04:47 +02:00 committed by William Wilgus
parent 8ee035b6c8
commit da190727e7
6 changed files with 199 additions and 23 deletions

View file

@ -131,7 +131,7 @@ int load_mi4_part(unsigned char* buf, struct partinfo* pinfo,
unsigned long sum;
/* Read header to find out how long the mi4 file is. */
storage_read_sectors(pinfo->start + PPMI_SECTOR_OFFSET,
storage_read_sectors(IF_MD(0,) pinfo->start + PPMI_SECTOR_OFFSET,
PPMI_SECTORS, &ppmi_header);
/* The first four characters at 0x80000 (sector 1024) should be PPMI*/
@ -141,7 +141,7 @@ int load_mi4_part(unsigned char* buf, struct partinfo* pinfo,
printf("BL mi4 size: %x", ppmi_header.length);
/* Read mi4 header of the OF */
storage_read_sectors(pinfo->start + PPMI_SECTOR_OFFSET + PPMI_SECTORS
storage_read_sectors(IF_MD(0,) pinfo->start + PPMI_SECTOR_OFFSET + PPMI_SECTORS
+ (ppmi_header.length/512), MI4_HEADER_SECTORS, &mi4header);
/* We don't support encrypted mi4 files yet */
@ -164,7 +164,7 @@ int load_mi4_part(unsigned char* buf, struct partinfo* pinfo,
printf("Binary type: %.4s", mi4header.type);
/* Load firmware */
storage_read_sectors(pinfo->start + PPMI_SECTOR_OFFSET + PPMI_SECTORS
storage_read_sectors(IF_MD(0,) pinfo->start + PPMI_SECTOR_OFFSET + PPMI_SECTORS
+ (ppmi_header.length/512) + MI4_HEADER_SECTORS,
(mi4header.mi4size-MI4_HEADER_SIZE)/512, buf);
@ -183,9 +183,9 @@ int load_mi4_part(unsigned char* buf, struct partinfo* pinfo,
printf("Disabling database rebuild");
storage_read_sectors(pinfo->start + 0x3c08, 1, block);
storage_read_sectors(IF_MD(0,) pinfo->start + 0x3c08, 1, block);
block[0xe1] = 0;
storage_write_sectors(pinfo->start + 0x3c08, 1, block);
storage_write_sectors(IF_MD(0,) pinfo->start + 0x3c08, 1, block);
}
#else
(void) disable_rebuild;
@ -287,7 +287,6 @@ static int handle_usb(int connect_timeout)
void* main(void)
{
char filename[MAX_PATH];
int i;
int btn;
int rc;
@ -400,9 +399,8 @@ void* main(void)
if((btn & BOOTLOADER_BOOT_OF) == 0)
{
printf("Loading Rockbox...");
snprintf(filename,sizeof(filename), BOOTDIR "/%s", BOOTFILE);
rc = load_mi4(loadbuffer, filename, MAX_LOADSIZE);
rc = load_mi4(loadbuffer, BOOTFILE, MAX_LOADSIZE);
if (rc <= EFILE_EMPTY)
{
bool old_verbose = verbose;