|
@@ -71,7 +71,6 @@ static int disk_read (__u32 startblock, __u32 getsize, __u8 * bufptr)
|
|
int fat_register_device (block_dev_desc_t * dev_desc, int part_no)
|
|
int fat_register_device (block_dev_desc_t * dev_desc, int part_no)
|
|
{
|
|
{
|
|
unsigned char buffer[dev_desc->blksz];
|
|
unsigned char buffer[dev_desc->blksz];
|
|
- disk_partition_t info;
|
|
|
|
|
|
|
|
if (!dev_desc->block_read)
|
|
if (!dev_desc->block_read)
|
|
return -1;
|
|
return -1;
|
|
@@ -95,28 +94,32 @@ int fat_register_device (block_dev_desc_t * dev_desc, int part_no)
|
|
defined(CONFIG_CMD_USB) || \
|
|
defined(CONFIG_CMD_USB) || \
|
|
defined(CONFIG_MMC) || \
|
|
defined(CONFIG_MMC) || \
|
|
defined(CONFIG_SYSTEMACE) )
|
|
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) == 0) ||
|
|
|
|
- (strncmp((char *)&buffer[DOS_FS32_TYPE_OFFSET], "FAT32", 5) == 0)) {
|
|
|
|
- /* 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;
|
|
|
|
|
|
+ {
|
|
|
|
+ disk_partition_t info;
|
|
|
|
+
|
|
|
|
+ /* 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) == 0) ||
|
|
|
|
+ (strncmp((char *)&buffer[DOS_FS32_TYPE_OFFSET],
|
|
|
|
+ "FAT32", 5) == 0)) {
|
|
|
|
+ /* 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;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-
|
|
|
|
#else
|
|
#else
|
|
if ((strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET], "FAT", 3) == 0) ||
|
|
if ((strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET], "FAT", 3) == 0) ||
|
|
(strncmp((char *)&buffer[DOS_FS32_TYPE_OFFSET], "FAT32", 5) == 0)) {
|
|
(strncmp((char *)&buffer[DOS_FS32_TYPE_OFFSET], "FAT32", 5) == 0)) {
|
|
/* ok, we assume we are on a PBR only */
|
|
/* ok, we assume we are on a PBR only */
|
|
cur_part = 1;
|
|
cur_part = 1;
|
|
part_offset = 0;
|
|
part_offset = 0;
|
|
- info.start = part_offset;
|
|
|
|
} else {
|
|
} else {
|
|
/* FIXME we need to determine the start block of the
|
|
/* FIXME we need to determine the start block of the
|
|
* partition where the DOS FS resides. This can be done
|
|
* partition where the DOS FS resides. This can be done
|