config MTD_PARSER_TRX
	tristate "Parser for TRX format partitions"
	depends on MTD && (BCM47XX || ARCH_BCM_5301X || COMPILE_TEST)
	help
	  TRX is a firmware format used by Broadcom on their devices. It
	  may contain up to 3/4 partitions (depending on the version).
	  This driver will parse TRX header and report at least two partitions:
	  kernel and rootfs.

config MTD_SHARPSL_PARTS
	tristate "Sharp SL Series NAND flash partition parser"
	depends on MTD_NAND_SHARPSL || MTD_NAND_TMIO || COMPILE_TEST
	help
	  This provides the read-only FTL logic necessary to read the partition
	  table from the NAND flash of Sharp SL Series (Zaurus) and the MTD
	  partition parser using this code.

config MTD_REDBOOT_PARTS
	tristate "RedBoot partition table parsing"
	help
	  RedBoot is a ROM monitor and bootloader which deals with multiple
	  'images' in flash devices by putting a table one of the erase
	  blocks on the device, similar to a partition table, which gives
	  the offsets, lengths and names of all the images stored in the
	  flash.

	  If you need code which can detect and parse this table, and register
	  MTD 'partitions' corresponding to each image in the table, enable
	  this option.

	  You will still need the parsing functions to be called by the driver
	  for your particular device. It won't happen automatically. The
	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
	  example.

if MTD_REDBOOT_PARTS

config MTD_REDBOOT_DIRECTORY_BLOCK
	int "Location of RedBoot partition table"
	default "-1"
	help
	  This option is the Linux counterpart to the
	  CYGNUM_REDBOOT_FIS_DIRECTORY_BLOCK RedBoot compile time
	  option.

	  The option specifies which Flash sectors holds the RedBoot
	  partition table.  A zero or positive value gives an absolute
	  erase block number. A negative value specifies a number of
	  sectors before the end of the device.

	  For example "2" means block number 2, "-1" means the last
	  block and "-2" means the penultimate block.

config MTD_REDBOOT_PARTS_UNALLOCATED
	bool "Include unallocated flash regions"
	help
	  If you need to register each unallocated flash region as a MTD
	  'partition', enable this option.

config MTD_REDBOOT_PARTS_READONLY
	bool "Force read-only for RedBoot system images"
	help
	  If you need to force read-only for 'RedBoot', 'RedBoot Config' and
	  'FIS directory' images, enable this option.

endif # MTD_REDBOOT_PARTS
