projects
/
platform
/
kernel
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'next' of ../next
[platform/kernel/u-boot.git]
/
disk
/
part.c
diff --git
a/disk/part.c
b/disk/part.c
index
316e254
..
b6bae17
100644
(file)
--- a/
disk/part.c
+++ b/
disk/part.c
@@
-35,6
+35,7
@@
#endif
#if (defined(CONFIG_CMD_IDE) || \
#endif
#if (defined(CONFIG_CMD_IDE) || \
+ defined(CONFIG_CMD_MG_DISK) || \
defined(CONFIG_CMD_SATA) || \
defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_CMD_USB) || \
defined(CONFIG_CMD_SATA) || \
defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_CMD_USB) || \
@@
-65,6
+66,9
@@
static const struct block_drvr block_drvr[] = {
#if defined(CONFIG_SYSTEMACE)
{ .name = "ace", .get_dev = systemace_get_dev, },
#endif
#if defined(CONFIG_SYSTEMACE)
{ .name = "ace", .get_dev = systemace_get_dev, },
#endif
+#if defined(CONFIG_CMD_MG_DISK)
+ { .name = "mgd", .get_dev = mg_disk_get_dev, },
+#endif
{ },
};
{ },
};
@@
-76,7
+80,10
@@
block_dev_desc_t *get_dev(char* ifname, int dev)
block_dev_desc_t* (*reloc_get_dev)(int dev);
while (drvr->name) {
block_dev_desc_t* (*reloc_get_dev)(int dev);
while (drvr->name) {
- reloc_get_dev = drvr->get_dev + gd->reloc_off;
+ reloc_get_dev = drvr->get_dev;
+#ifndef CONFIG_RELOC_FIXUP_WORKS
+ reloc_get_dev += gd->reloc_off;
+#endif
if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0)
return reloc_get_dev(dev);
drvr++;
if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0)
return reloc_get_dev(dev);
drvr++;
@@
-91,6
+98,7
@@
block_dev_desc_t *get_dev(char* ifname, int dev)
#endif
#if (defined(CONFIG_CMD_IDE) || \
#endif
#if (defined(CONFIG_CMD_IDE) || \
+ defined(CONFIG_CMD_MG_DISK) || \
defined(CONFIG_CMD_SATA) || \
defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_CMD_USB) || \
defined(CONFIG_CMD_SATA) || \
defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_CMD_USB) || \
@@
-109,7
+117,12
@@
void dev_print (block_dev_desc_t *dev_desc)
lbaint_t lba512;
#endif
lbaint_t lba512;
#endif
- switch (dev_desc->type) {
+ if (dev_desc->type == DEV_TYPE_UNKNOWN) {
+ puts ("not available\n");
+ return;
+ }
+
+ switch (dev_desc->if_type) {
case IF_TYPE_SCSI:
printf ("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n",
dev_desc->target,dev_desc->lun,
case IF_TYPE_SCSI:
printf ("(%d:%d) Vendor: %s Prod.: %s Rev: %s\n",
dev_desc->target,dev_desc->lun,
@@
-117,6
+130,7
@@
void dev_print (block_dev_desc_t *dev_desc)
dev_desc->product,
dev_desc->revision);
break;
dev_desc->product,
dev_desc->revision);
break;
+ case IF_TYPE_ATAPI:
case IF_TYPE_IDE:
case IF_TYPE_SATA:
printf ("Model: %s Firm: %s Ser#: %s\n",
case IF_TYPE_IDE:
case IF_TYPE_SATA:
printf ("Model: %s Firm: %s Ser#: %s\n",
@@
-124,9
+138,22
@@
void dev_print (block_dev_desc_t *dev_desc)
dev_desc->revision,
dev_desc->product);
break;
dev_desc->revision,
dev_desc->product);
break;
- case DEV_TYPE_UNKNOWN:
+ case IF_TYPE_SD:
+ case IF_TYPE_MMC:
+ case IF_TYPE_USB:
+ printf ("Vendor: %s Rev: %s Prod: %s\n",
+ dev_desc->vendor,
+ dev_desc->revision,
+ dev_desc->product);
+ break;
+ case IF_TYPE_DOC:
+ puts("device type DOC\n");
+ return;
+ case IF_TYPE_UNKNOWN:
+ puts("device type unknown\n");
+ return;
default:
default:
- p
uts ("not available\n"
);
+ p
rintf("Unhandled device type: %i\n", dev_desc->if_type
);
return;
}
puts (" Type: ");
return;
}
puts (" Type: ");
@@
-169,8
+196,8
@@
void dev_print (block_dev_desc_t *dev_desc)
if (dev_desc->lba48)
printf (" Supports 48-bit addressing\n");
#endif
if (dev_desc->lba48)
printf (" Supports 48-bit addressing\n");
#endif
-#if defined(C
FG_64BIT_LBA) && defined(CFG_64BIT_VSPRINTF
)
- printf (" Capacity: %ld.%ld MB = %ld.%ld GB (%
q
d x %ld)\n",
+#if defined(C
ONFIG_SYS_64BIT_LBA
)
+ printf (" Capacity: %ld.%ld MB = %ld.%ld GB (%
L
d x %ld)\n",
mb_quot, mb_rem,
gb_quot, gb_rem,
lba,
mb_quot, mb_rem,
gb_quot, gb_rem,
lba,
@@
-189,16
+216,18
@@
void dev_print (block_dev_desc_t *dev_desc)
#endif
#if (defined(CONFIG_CMD_IDE) || \
#endif
#if (defined(CONFIG_CMD_IDE) || \
+ defined(CONFIG_CMD_MG_DISK) || \
defined(CONFIG_CMD_SATA) || \
defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_CMD_USB) || \
defined(CONFIG_MMC) || \
defined(CONFIG_CMD_SATA) || \
defined(CONFIG_CMD_SCSI) || \
defined(CONFIG_CMD_USB) || \
defined(CONFIG_MMC) || \
- defined(CONFIG_SYSTEMACE)
)
+ defined(CONFIG_SYSTEMACE) )
#if defined(CONFIG_MAC_PARTITION) || \
defined(CONFIG_DOS_PARTITION) || \
defined(CONFIG_ISO_PARTITION) || \
#if defined(CONFIG_MAC_PARTITION) || \
defined(CONFIG_DOS_PARTITION) || \
defined(CONFIG_ISO_PARTITION) || \
- defined(CONFIG_AMIGA_PARTITION)
+ defined(CONFIG_AMIGA_PARTITION) || \
+ defined(CONFIG_EFI_PARTITION)
void init_part (block_dev_desc_t * dev_desc)
{
void init_part (block_dev_desc_t * dev_desc)
{
@@
-216,6
+245,14
@@
void init_part (block_dev_desc_t * dev_desc)
}
#endif
}
#endif
+/* must be placed before DOS partition detection */
+#ifdef CONFIG_EFI_PARTITION
+ if (test_part_efi(dev_desc) == 0) {
+ dev_desc->part_type = PART_TYPE_EFI;
+ return;
+ }
+#endif
+
#ifdef CONFIG_DOS_PARTITION
if (test_part_dos(dev_desc) == 0) {
dev_desc->part_type = PART_TYPE_DOS;
#ifdef CONFIG_DOS_PARTITION
if (test_part_dos(dev_desc) == 0) {
dev_desc->part_type = PART_TYPE_DOS;
@@
-272,6
+309,15
@@
int get_partition_info (block_dev_desc_t *dev_desc, int part
}
break;
#endif
}
break;
#endif
+
+#ifdef CONFIG_EFI_PARTITION
+ case PART_TYPE_EFI:
+ if (get_partition_info_efi(dev_desc,part,info) == 0) {
+ PRINTF ("## Valid EFI partition found ##\n");
+ return (0);
+ }
+ break;
+#endif
default:
break;
}
default:
break;
}
@@
-342,14
+388,23
@@
void print_part (block_dev_desc_t * dev_desc)
print_part_amiga (dev_desc);
return;
#endif
print_part_amiga (dev_desc);
return;
#endif
+
+#ifdef CONFIG_EFI_PARTITION
+ case PART_TYPE_EFI:
+ PRINTF ("## Testing for valid EFI partition ##\n");
+ print_part_header ("EFI", dev_desc);
+ print_part_efi (dev_desc);
+ return;
+#endif
}
puts ("## Unknown partition table\n");
}
}
puts ("## Unknown partition table\n");
}
-#else /* neither MAC nor DOS nor ISO partition configured */
+#else /* neither MAC nor DOS nor ISO
nor AMIGA nor EFI
partition configured */
# error neither CONFIG_MAC_PARTITION nor CONFIG_DOS_PARTITION
# error neither CONFIG_MAC_PARTITION nor CONFIG_DOS_PARTITION
-# error nor CONFIG_ISO_PARTITION configured!
+# error nor CONFIG_ISO_PARTITION nor CONFIG_AMIGA_PARTITION
+# error nor CONFIG_EFI_PARTITION configured!
#endif
#endif
#endif
#endif