disk: add TegraPT support

TegraPT is compatible with EFI part but it can't pass Protective MBR check.
Skip this check if CONFIG_TEGRA_PARTITION is enabled, storage uclass is MMC
and devnum is 0. Note, eMMC on supported devices MUST be aliased to mmc0.

Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
This commit is contained in:
Svyatoslav Ryhel 2024-07-31 11:22:54 +03:00
parent 93b9cd7920
commit 83b5f63679
2 changed files with 23 additions and 0 deletions

View file

@ -49,6 +49,16 @@ config SPL_MAC_PARTITION
default y if MAC_PARTITION
select SPL_PARTITIONS
config TEGRA_PARTITION
bool "Enable Nvidia Tegra partition table"
select PARTITIONS
select EFI_PARTITION
help
Say Y here if you would like to use U-Boot on a device that
is using the Nvidia Tegra partition table and cannot alter it.
If unsure, say N.
config DOS_PARTITION
bool "Enable MS Dos partition table"
default y if BOOT_DEFAULTS

View file

@ -318,6 +318,19 @@ static int part_test_efi(struct blk_desc *desc)
/* Read legacy MBR from block 0 and validate it */
if ((blk_dread(desc, 0, 1, (ulong *)legacymbr) != 1)
|| (is_pmbr_valid(legacymbr) != 1)) {
/*
* TegraPT is compatible with EFI part, but it
* cannot pass the Protective MBR check. Skip it
* if CONFIG_TEGRA_PARTITION is enabled and the
* device in question is eMMC.
*/
if (IS_ENABLED(CONFIG_TEGRA_PARTITION))
if (!is_pmbr_valid(legacymbr) &&
desc->uclass_id == UCLASS_MMC &&
!desc->devnum)
return 0;
return -1;
}
return 0;