On some SoCs, the SPL needs to be located right in the middle of the GPT
partition entries.

One way to work around that is to create partition entries for a smaller
number of partitions to accomodate with where the SPL will be. Create a
Kconfig option to allow to do that.

Signed-off-by: Maxime Ripard <maxime.rip...@free-electrons.com>
---
 disk/Kconfig       | 13 +++++++++++++
 include/part_efi.h |  2 +-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/disk/Kconfig b/disk/Kconfig
index 939656212065..f82beef6e689 100644
--- a/disk/Kconfig
+++ b/disk/Kconfig
@@ -78,6 +78,19 @@ config EFI_PARTITION
          common when EFI is the bootloader.  Note 2TB partition limit;
          see disk/part_efi.c
 
+config EFI_PARTITION_ENTRIES_NUMBERS
+       int "Number of the EFI partition entries"
+       depends on EFI_PARTITION
+       default 128
+       help
+         Specify the number of partition entries in the GPT. This is
+         meant to allow less than the standard specifies for devices
+         that might need to place their first-stage bootloader in the
+         middle of a regular GPT.
+
+         If unsure, leave at 128 entries, which is the standard
+         number.
+
 config EFI_PARTITION_ENTRIES_OFF
         int "Offset (in bytes) of the EFI partition entries"
        depends on EFI_PARTITION
diff --git a/include/part_efi.h b/include/part_efi.h
index 31e6bc6e140f..4c8f6cc473c8 100644
--- a/include/part_efi.h
+++ b/include/part_efi.h
@@ -27,7 +27,7 @@
 #define GPT_HEADER_SIGNATURE 0x5452415020494645ULL
 #define GPT_HEADER_REVISION_V1 0x00010000
 #define GPT_PRIMARY_PARTITION_TABLE_LBA 1ULL
-#define GPT_ENTRY_NUMBERS              128
+#define GPT_ENTRY_NUMBERS              CONFIG_EFI_PARTITION_ENTRIES_NUMBERS
 #define GPT_ENTRY_SIZE                 128
 
 #define PARTITION_SYSTEM_GUID \
-- 
2.14.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to