1
0
Fork 0
forked from len0rd/rockbox

Commit whole Creative Zen Vision:M target tree + all related firmware/

changes.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17241 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Maurus Cuelenaere 2008-04-24 20:08:28 +00:00
parent 46b4928611
commit 95167e0177
41 changed files with 2940 additions and 75 deletions

View file

@ -26,6 +26,7 @@
#include "file.h" /* for release_files() */
#endif
#include "disk.h"
#include <string.h>
/* Partition table entry layout:
-----------------------
@ -66,8 +67,8 @@ struct partinfo* disk_init(IF_MV_NONVOID(int drive))
struct partinfo* pinfo = part;
#endif
ata_read_sectors(IF_MV2(drive,) 0,1,&sector);
ata_read_sectors(IF_MV2(drive,) 0,1, &sector);
#ifndef CREATIVE_ZVM
/* check that the boot sector is initialized */
if ( (sector[510] != 0x55) ||
(sector[511] != 0xaa)) {
@ -90,7 +91,46 @@ struct partinfo* disk_init(IF_MV_NONVOID(int drive))
/* not handled yet */
}
}
#else
struct partition_struct
{
unsigned int end;
unsigned int start;
char name[8];
};
struct hdd_struct
{
unsigned char MBLK[4];
int sector_size;
long long total_disk_size;
struct partition_struct partitions[4];
};
struct hdd_struct* hdd_struct = (struct hdd_struct*)sector;
if(hdd_struct->MBLK[0] != 0x4B ||
hdd_struct->MBLK[1] != 0x4C ||
hdd_struct->MBLK[2] != 0x42 ||
hdd_struct->MBLK[3] != 0x4D) /* 0x4B4C424D = KLBM */
{
DEBUGF("Bad boot sector signature\n");
return NULL;
}
else
{
/* parse partitions */
for ( i=0; i<4; i++ ) {
if(hdd_struct->partitions[i].name[0] != 0)
{
pinfo[i].type = ( strcmp(hdd_struct->partitions[i].name, "cfs") == 0 ? PARTITION_TYPE_FAT32_LBA : 0);
pinfo[i].start = hdd_struct->partitions[i].start;
pinfo[i].size = (hdd_struct->partitions[i].end - hdd_struct->partitions[i].start);
DEBUGF("Part%d: Type %02x, start: %08lx size: %08lx\n",
i,pinfo[i].type,pinfo[i].start,pinfo[i].size);
}
}
}
#endif
return pinfo;
}
@ -147,7 +187,7 @@ int disk_mount(int drive)
{
return 0;
}
#ifdef TOSHIBA_GIGABEAT_S
#if defined(TOSHIBA_GIGABEAT_S) ||defined(CREATIVE_ZVM)
int i = 1; /* For the Gigabeat S, we mount the second partition */
#else
int i = 0;