config CRAMFS
	tristate "Compressed ROM file system support (cramfs)"
	select ZLIB_INFLATE
	help
	  Saying Y here includes support for CramFs (Compressed ROM File
	  System).  CramFs is designed to be a simple, small, and compressed
	  file system for ROM based embedded systems.  CramFs is read-only,
	  limited to 256MB file systems (with 16MB files), and doesn't support
	  16/32 bits uid/gid, hard links and timestamps.

	  See <file:Documentation/filesystems/cramfs.txt> and
	  <file:fs/cramfs/README> for further information.

	  To compile this as a module, choose M here: the module will be called
	  cramfs.  Note that the root file system (the one containing the
	  directory /) cannot be compiled as a module.

	  This filesystem is limited in capabilities and performance on
	  purpose to remain small and low on RAM usage. It is most suitable
	  for small embedded systems. If you have ample RAM to spare, you may
	  consider a more capable compressed filesystem such as SquashFS
	  which is much better in terms of performance and features.

	  If unsure, say N.

config CRAMFS_BLOCKDEV
	bool "Support CramFs image over a regular block device" if EXPERT
	depends on CRAMFS && BLOCK
	default y
	help
	  This option allows the CramFs driver to load data from a regular
	  block device such a disk partition or a ramdisk.

config CRAMFS_MTD
	bool "Support CramFs image directly mapped in physical memory"
	depends on CRAMFS && MTD
	default y if !CRAMFS_BLOCKDEV
	help
	  This option allows the CramFs driver to load data directly from
	  a linear adressed memory range (usually non volatile memory
	  like flash) instead of going through the block device layer.
	  This saves some memory since no intermediate buffering is
	  necessary.

	  The location of the CramFs image is determined by a
	  MTD device capable of direct memory mapping e.g. from
	  the 'physmap' map driver or a resulting MTD partition.
	  For example, this would mount the cramfs image stored in
	  the MTD partition named "xip_fs" on the /mnt mountpoint:

	  mount -t cramfs mtd:xip_fs /mnt

	  If unsure, say N.
