Hi Wolfgang, On Thu, Sep 8, 2011 at 12:11 PM, Lei Wen <lei...@marvell.com> wrote: > Previous output: > Marvell>> mmc part > > Partition Map for MMC device 1 -- Partition Type: EFI > > Part Start LBA End LBA > gpt1 0x8C00 0xCBFF > gpt2 0xCC00 0x57BFF > gpt3 0x57C00 0xA2BFF > gpt4 0xA2C00 0xECBFDE > > With the patch, the output becomes: > Marvell>> mmc part > > Partition Map for MMC device 1 -- Partition Type: EFI > > Part Name Start LBA End LBA > 1 ramdisk 0x00008C00 0x0000CBFF > 2 system 0x0000CC00 0x00057BFF > 3 userdata 0x00057C00 0x000A2BFF > 4 remaining 0x000A2C00 0x00ECBFDE > > Signed-off-by: Lei Wen <lei...@marvell.com> > --- > Changelog: > V1: align the efi part name output to the left > V2: correct patch description for this new alignment > V3: Remove the magic number definition, and reuse the same > number used by partition_name. Fix loop overflow issue. > > disk/part_efi.c | 24 ++++++++++++++++++++---- > disk/part_efi.h | 3 ++- > 2 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/disk/part_efi.c b/disk/part_efi.c > index 1b04c27..0a513c6 100644 > --- a/disk/part_efi.c > +++ b/disk/part_efi.c > @@ -35,6 +35,7 @@ > #include <ide.h> > #include <malloc.h> > #include "part_efi.h" > +#include <linux/ctype.h> > > #if defined(CONFIG_CMD_IDE) || \ > defined(CONFIG_CMD_MG_DISK) || \ > @@ -99,6 +100,20 @@ static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t > * dev_desc, > > static int is_pte_valid(gpt_entry * pte); > > +static char *print_efiname(gpt_entry *pte) > +{ > + static char name[PARTNAME_SZ + 1]; > + int i; > + for (i = 0; i < PARTNAME_SZ; i++) { > + u8 c; > + c = pte->partition_name[i] & 0xff; > + c = (c && !isprint(c)) ? '.' : c; > + name[i] = c; > + } > + name[PARTNAME_SZ] = 0; > + return name; > +} > + > /* > * Public Functions (include/part.h) > */ > @@ -122,12 +137,12 @@ void print_part_efi(block_dev_desc_t * dev_desc) > > debug("%s: gpt-entry at 0x%08X\n", __FUNCTION__, (unsigned > int)*pgpt_pte); > > - printf("Part Start LBA End LBA\n"); > + printf("Part\tName\t\t\tStart LBA\tEnd LBA\n"); > for (i = 0; i < le32_to_int(gpt_head.num_partition_entries); i++) { > > if (is_pte_valid(&(*pgpt_pte)[i])) { > - printf("%s%d 0x%llX 0x%llX\n", GPT_ENTRY_NAME, > - (i + 1), > + printf("%3d\t%-18s\t0x%08llX\t0x%08llX\n", (i + 1), > + print_efiname(&(*pgpt_pte)[i]), > le64_to_int((*pgpt_pte)[i].starting_lba), > le64_to_int((*pgpt_pte)[i].ending_lba)); > } else { > @@ -169,7 +184,8 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, > int part, > - info->start; > info->blksz = GPT_BLOCK_SIZE; > > - sprintf((char *)info->name, "%s%d", GPT_ENTRY_NAME, part); > + sprintf((char *)info->name, "%s", > + print_efiname(&(*pgpt_pte)[part - 1])); > sprintf((char *)info->type, "U-Boot"); > > debug("%s: start 0x%lX, size 0x%lX, name %s", __FUNCTION__, > diff --git a/disk/part_efi.h b/disk/part_efi.h > index 6bbb06b..5903e7c 100644 > --- a/disk/part_efi.h > +++ b/disk/part_efi.h > @@ -117,13 +117,14 @@ typedef struct _gpt_entry_attributes { > unsigned long long type_guid_specific:16; > } __attribute__ ((packed)) gpt_entry_attributes; > > +#define PARTNAME_SZ (72 / sizeof(efi_char16_t)) > typedef struct _gpt_entry { > efi_guid_t partition_type_guid; > efi_guid_t unique_partition_guid; > unsigned char starting_lba[8]; > unsigned char ending_lba[8]; > gpt_entry_attributes attributes; > - efi_char16_t partition_name[72 / sizeof(efi_char16_t)]; > + efi_char16_t partition_name[PARTNAME_SZ]; > } > __attribute__ ((packed)) gpt_entry; > > -- > 1.7.0.4 >
How about merge this patch included in 2011.09 release? :) Thanks, Lei _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot