config ROMFS_FS
	tristate "ROM file system support"
	depends on BLOCK || MTD
	---help---
	  This is a very small read-only file system mainly intended for
	  initial ram disks of installation disks, but it could be used for
	  other read-only media as well.  Read
	  <file:Documentation/filesystems/romfs.txt> for details.

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

	  If you don't know whether you need it, then you don't need it:
	  answer N.

#
# Select the backing stores to be supported
#
choice
	prompt "RomFS backing stores"
	depends on ROMFS_FS
	default ROMFS_BACKED_BY_BLOCK
	help
	  Select the backing stores to be supported.

config ROMFS_BACKED_BY_BLOCK
	bool "Block device-backed ROM file system support"
	depends on BLOCK
	help
	  This permits ROMFS to use block devices buffered through the page
	  cache as the medium from which to retrieve data.  It does not allow
	  direct mapping of the medium.

	  If unsure, answer Y.

config ROMFS_BACKED_BY_MTD
	bool "MTD-backed ROM file system support"
	depends on MTD=y || (ROMFS_FS=m && MTD)
	help
	  This permits ROMFS to use MTD based devices directly, without the
	  intercession of the block layer (which may have been disabled).  It
	  also allows direct mapping of MTD devices through romfs files under
	  NOMMU conditions if the underlying device is directly addressable by
	  the CPU.

	  If unsure, answer Y.

config ROMFS_BACKED_BY_BOTH
	bool "Both the above"
	depends on BLOCK && (MTD=y || (ROMFS_FS=m && MTD))
endchoice


config ROMFS_ON_BLOCK
	bool
	default y if ROMFS_BACKED_BY_BLOCK || ROMFS_BACKED_BY_BOTH

config ROMFS_ON_MTD
	bool
	default y if ROMFS_BACKED_BY_MTD || ROMFS_BACKED_BY_BOTH
