|
|
|
@ -85,46 +85,41 @@ fat_register_device(block_dev_desc_t *dev_desc, int part_no) |
|
|
|
|
/* no signature found */ |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
if(!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET],"FAT",3)) { |
|
|
|
|
/* ok, we assume we are on a PBR only */ |
|
|
|
|
cur_part = 1; |
|
|
|
|
part_offset=0; |
|
|
|
|
} else { |
|
|
|
|
#if (defined(CONFIG_CMD_IDE) || \ |
|
|
|
|
defined(CONFIG_CMD_SCSI) || \
|
|
|
|
|
defined(CONFIG_CMD_USB) || \
|
|
|
|
|
(defined(CONFIG_MMC) && defined(CONFIG_LPC2292)) || \
|
|
|
|
|
defined(CONFIG_SYSTEMACE) ) |
|
|
|
|
/* First we assume, there is a MBR */ |
|
|
|
|
if (!get_partition_info (dev_desc, part_no, &info)) { |
|
|
|
|
part_offset = info.start; |
|
|
|
|
cur_part = part_no; |
|
|
|
|
} else if (!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET], "FAT", 3)) { |
|
|
|
|
/* ok, we assume we are on a PBR only */ |
|
|
|
|
cur_part = 1; |
|
|
|
|
part_offset = 0; |
|
|
|
|
} else { |
|
|
|
|
printf ("** Partition %d not valid on device %d **\n", |
|
|
|
|
defined(CONFIG_MMC) || \
|
|
|
|
|
defined(CONFIG_SYSTEMACE) ) |
|
|
|
|
/* First we assume, there is a MBR */ |
|
|
|
|
if (!get_partition_info (dev_desc, part_no, &info)) { |
|
|
|
|
part_offset = info.start; |
|
|
|
|
cur_part = part_no; |
|
|
|
|
} else if (!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET], "FAT", 3)) { |
|
|
|
|
/* ok, we assume we are on a PBR only */ |
|
|
|
|
cur_part = 1; |
|
|
|
|
part_offset = 0; |
|
|
|
|
} else { |
|
|
|
|
printf ("** Partition %d not valid on device %d **\n", |
|
|
|
|
part_no, dev_desc->dev); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#else |
|
|
|
|
if(!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET],"FAT",3)) { |
|
|
|
|
/* ok, we assume we are on a PBR only */ |
|
|
|
|
cur_part = 1; |
|
|
|
|
part_offset = 0; |
|
|
|
|
info.start = part_offset; |
|
|
|
|
} else { |
|
|
|
|
/* FIXME we need to determine the start block of the
|
|
|
|
|
* partition where the DOS FS resides. This can be done |
|
|
|
|
* by using the get_partition_info routine. For this |
|
|
|
|
* purpose the libpart must be included. |
|
|
|
|
*/ |
|
|
|
|
part_offset = 32; |
|
|
|
|
cur_part = 1; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
if (!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET],"FAT",3)) { |
|
|
|
|
/* ok, we assume we are on a PBR only */ |
|
|
|
|
cur_part = 1; |
|
|
|
|
part_offset = 0; |
|
|
|
|
info.start = part_offset; |
|
|
|
|
} else { |
|
|
|
|
/* FIXME we need to determine the start block of the
|
|
|
|
|
* partition where the DOS FS resides. This can be done |
|
|
|
|
* by using the get_partition_info routine. For this |
|
|
|
|
* purpose the libpart must be included. |
|
|
|
|
*/ |
|
|
|
|
part_offset = 32; |
|
|
|
|
cur_part = 1; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|