[U-Boot] [PATCH v2 1/2] Support for devices with FAT32 PBR

Signed-off-by: Igor Luri iluri@aotek.es --- disk/part_dos.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/disk/part_dos.c b/disk/part_dos.c index 887b75e..d91f773 100644 --- a/disk/part_dos.c +++ b/disk/part_dos.c @@ -77,7 +77,8 @@ static int test_block_type(unsigned char *buffer) (buffer[DOS_PART_MAGIC_OFFSET + 1] != 0xaa) ) { return (-1); } /* no DOS Signature at all */ - if(strncmp((char *)&buffer[DOS_PBR_FSTYPE_OFFSET],"FAT",3)==0) + if((strncmp((char *)&buffer[DOS_PBR_FSTYPE_OFFSET],"FAT",3)==0) || + (strncmp((char *)&buffer[DOS_PBR_FAT32_FSTYPE_OFFSET],"FAT32",5)==0) ) return DOS_PBR; /* is PBR */ return DOS_MBR; /* Is MBR */ }

Signed-off-by: Igor Luri iluri@aotek.es --- fs/fat/fat.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/fs/fat/fat.c b/fs/fat/fat.c index 2445f1e..4da4351 100644 --- a/fs/fat/fat.c +++ b/fs/fat/fat.c @@ -50,6 +50,7 @@ static int cur_part = 1; #define DOS_PART_TBL_OFFSET 0x1be #define DOS_PART_MAGIC_OFFSET 0x1fe #define DOS_FS_TYPE_OFFSET 0x36 +#define DOS_FS_FAT32_TYPE_OFFSET 0x52
int disk_read (__u32 startblock, __u32 getsize, __u8 * bufptr) { @@ -94,7 +95,8 @@ fat_register_device(block_dev_desc_t *dev_desc, int part_no) 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)) { + } else if (!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET], "FAT", 3) || + !strncmp((char *)&buffer[DOS_FS_FAT32_TYPE_OFFSET], "FAT32", 5)) { /* ok, we assume we are on a PBR only */ cur_part = 1; part_offset = 0; @@ -105,7 +107,8 @@ fat_register_device(block_dev_desc_t *dev_desc, int part_no) }
#else - if (!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET],"FAT",3)) { + if (!strncmp((char *)&buffer[DOS_FS_TYPE_OFFSET],"FAT",3) || + !strncmp((char *)&buffer[DOS_FS_FAT32_TYPE_OFFSET], "FAT32", 5) ) { /* ok, we assume we are on a PBR only */ cur_part = 1; part_offset = 0;

Dear Igor Luri,
In message 1273491334-10693-2-git-send-email-iluri@aotek.es you wrote:
Signed-off-by: Igor Luri iluri@aotek.es
fs/fat/fat.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-)
It makes no sense to split these patches. Please merge them into one, as Sergei asked before.
Also, I doubt that this fixes all current problems with FAT32 code. Did you - just for example - try reading a long directory (say, more than 128 entries) ?
Best regards,
Wolfgang Denk

Dear Wolfgang,
El lun, 10-05-2010 a las 13:54 +0200, Wolfgang Denk escribió:
It makes no sense to split these patches. Please merge them into one, as Sergei asked before.
Sorry, I'll do it inmediately.
Also, I doubt that this fixes all current problems with FAT32 code. Did you - just for example - try reading a long directory (say, more than 128 entries) ?
With this patch aplied, only detects correctly this type of devices, making posible reading files from this kinf of devices. Otherwaise it detects as a MBR device, reading a bogus partition table and imposible to read device contents.
Best regards.
participants (2)
-
Igor Luri
-
Wolfgang Denk