@ -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 )
{
unsigned char buffer [ dev_desc - > blksz ] ;
disk_partition_t info ;
if ( ! dev_desc - > block_read )
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_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 ) = = 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
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 ;
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