
menu "Partition Types"

config PARTITIONS
	bool "Enable Partition Labels (disklabels) support"
	default y
	help
	  Partition Labels (disklabels) Supported:
	  Zero or more of the following:
	  - CONFIG_MAC_PARTITION   Apple's MacOS partition table.
	  - CONFIG_DOS_PARTITION   MS Dos partition table, traditional on the
	                           Intel architecture, USB sticks, etc.
	  - CONFIG_ISO_PARTITION   ISO partition table, used on CDROM etc.
	  - CONFIG_EFI_PARTITION   GPT partition table, common when EFI is the
	                           bootloader.  Note 2TB partition limit; see
	                           disk/part_efi.c
	  - CONFIG_MTD_PARTITIONS  Memory Technology Device partition table.
	  If IDE or SCSI support is enabled (CONFIG_CMD_IDE or CONFIG_SCSI)
	  you must configure support for at least one non-MTD partition type
	  as well.

config MAC_PARTITION
	bool "Enable Apple's MacOS partition table"
	depends on PARTITIONS
	help
	  Say Y here if you would like to use device under U-Boot which
	  were partitioned on a Macintosh.

config SPL_MAC_PARTITION
	bool "Enable Apple's MacOS partition table for SPL"
	depends on SPL && PARTITIONS
	default y if MAC_PARTITION

config DOS_PARTITION
	bool "Enable MS Dos partition table"
	depends on PARTITIONS
	default y if DISTRO_DEFAULTS
	default y if x86 || CMD_FAT || USB_STORAGE
	help
	  traditional on the Intel architecture, USB sticks, etc.

config SPL_DOS_PARTITION
	bool "Enable MS Dos partition table for SPL"
	depends on SPL && PARTITIONS
	default y if DOS_PARTITION

config ISO_PARTITION
	bool "Enable ISO partition table"
	depends on PARTITIONS
	default y if DISTRO_DEFAULTS
	default y if MIPS || TEGRA

config SPL_ISO_PARTITION
	bool "Enable ISO partition table for SPL"
	depends on SPL && PARTITIONS

config AMIGA_PARTITION
	bool "Enable AMIGA partition table"
	depends on PARTITIONS
	help
	  Say Y here if you would like to use device under U-Boot which
	  were partitioned under AmigaOS.

config SPL_AMIGA_PARTITION
	bool "Enable AMIGA partition table for SPL"
	depends on SPL && PARTITIONS
	default y if AMIGA_PARTITION

config EFI_PARTITION
	bool "Enable EFI GPT partition table"
	depends on PARTITIONS
	default y if DISTRO_DEFAULTS
	default y if TEGRA
	select LIB_UUID
	help
	  Say Y here if you would like to use device under U-Boot which
	  were partitioned using EFI GPT.
	  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 56 if ARCH_SUNXI
	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
	default 0
	help
	  Specify an earliest location (in bytes) where the partition
	  entries may be located. This is meant to allow "punching a
	  hole into a device" to create a gap for an SPL, its payload
	  and the U-Boot environment.

	  If unsure, leave at 0 (which will locate the partition
	  entries at the first possible LBA following the GPT header).

config SPL_EFI_PARTITION
	bool "Enable EFI GPT partition table for SPL"
	depends on  SPL && PARTITIONS
	default y if EFI_PARTITION

config PARTITION_UUIDS
	bool "Enable support of UUID for partition"
	depends on PARTITIONS
	default y if DISTRO_DEFAULTS
	default y if EFI_PARTITION
	select LIB_UUID
	help
	  Activate the configuration of UUID for partition

config SPL_PARTITION_UUIDS
	bool "Enable support of UUID for partition in SPL"
	depends on SPL && PARTITIONS
	default y if SPL_EFI_PARTITION

config PARTITION_TYPE_GUID
	bool "Enable support of GUID for partition type"
	depends on PARTITIONS
	depends on EFI_PARTITION
	help
	  Activate the configuration of GUID type
	  for EFI partition

endmenu
