Re: [PATCH v1 3/3] partitions: Introduce NVIDIA Tegra Partition Table

From: Stephen Warren
Date: Mon Feb 24 2020 - 19:20:11 EST


On 2/24/20 4:18 PM, Dmitry Osipenko wrote:
All NVIDIA Tegra devices use a special partition table format for the
internal storage partitioning. Most of Tegra devices have GPT partition
in addition to TegraPT, but some older Android consumer-grade devices do
not or GPT is placed in a wrong sector, and thus, the TegraPT is needed
in order to support these devices properly in the upstream kernel. This
patch adds support for NVIDIA Tegra Partition Table format that is used
at least by all NVIDIA Tegra20 and Tegra30 devices.

diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c

+static void __init tegra_boot_config_table_init(void)
+{
+ void __iomem *bct_base;
+ u16 pt_addr, pt_size;
+
+ bct_base = IO_ADDRESS(TEGRA_IRAM_BASE) + TEGRA_IRAM_BCT_OFFSET;

This shouldn't be hard-coded. IIRC, the boot ROM writes a BIT (Boot Information Table) to a fixed location in IRAM, and there's some value in the BIT that points to where the BCT is in IRAM. In practice, it might work out that the BCT is always at the same place in IRAM, but this certainly isn't guaranteed. I think there's code in U-Boot which extracts the BCT location from the BIT? Yes, see arch/arm/mach-tegra/ap.c:get_odmdata().