# SPDX-License-Identifier: GPL-2.0-only
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 && 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.
