162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig CRAMFS
362306a36Sopenharmony_ci	tristate "Compressed ROM file system support (cramfs)"
462306a36Sopenharmony_ci	select ZLIB_INFLATE
562306a36Sopenharmony_ci	help
662306a36Sopenharmony_ci	  Saying Y here includes support for CramFs (Compressed ROM File
762306a36Sopenharmony_ci	  System).  CramFs is designed to be a simple, small, and compressed
862306a36Sopenharmony_ci	  file system for ROM based embedded systems.  CramFs is read-only,
962306a36Sopenharmony_ci	  limited to 256MB file systems (with 16MB files), and doesn't support
1062306a36Sopenharmony_ci	  16/32 bits uid/gid, hard links and timestamps.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci	  See <file:Documentation/filesystems/cramfs.rst> and
1362306a36Sopenharmony_ci	  <file:fs/cramfs/README> for further information.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	  To compile this as a module, choose M here: the module will be called
1662306a36Sopenharmony_ci	  cramfs.  Note that the root file system (the one containing the
1762306a36Sopenharmony_ci	  directory /) cannot be compiled as a module.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	  This filesystem is limited in capabilities and performance on
2062306a36Sopenharmony_ci	  purpose to remain small and low on RAM usage. It is most suitable
2162306a36Sopenharmony_ci	  for small embedded systems. If you have ample RAM to spare, you may
2262306a36Sopenharmony_ci	  consider a more capable compressed filesystem such as SquashFS
2362306a36Sopenharmony_ci	  which is much better in terms of performance and features.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	  If unsure, say N.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciconfig CRAMFS_BLOCKDEV
2862306a36Sopenharmony_ci	bool "Support CramFs image over a regular block device" if EXPERT
2962306a36Sopenharmony_ci	depends on CRAMFS && BLOCK
3062306a36Sopenharmony_ci	default y
3162306a36Sopenharmony_ci	help
3262306a36Sopenharmony_ci	  This option allows the CramFs driver to load data from a regular
3362306a36Sopenharmony_ci	  block device such a disk partition or a ramdisk.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciconfig CRAMFS_MTD
3662306a36Sopenharmony_ci	bool "Support CramFs image directly mapped in physical memory"
3762306a36Sopenharmony_ci	depends on CRAMFS && CRAMFS <= MTD
3862306a36Sopenharmony_ci	default y if !CRAMFS_BLOCKDEV
3962306a36Sopenharmony_ci	help
4062306a36Sopenharmony_ci	  This option allows the CramFs driver to load data directly from
4162306a36Sopenharmony_ci	  a linear addressed memory range (usually non-volatile memory
4262306a36Sopenharmony_ci	  like flash) instead of going through the block device layer.
4362306a36Sopenharmony_ci	  This saves some memory since no intermediate buffering is
4462306a36Sopenharmony_ci	  necessary.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci	  The location of the CramFs image is determined by a
4762306a36Sopenharmony_ci	  MTD device capable of direct memory mapping e.g. from
4862306a36Sopenharmony_ci	  the 'physmap' map driver or a resulting MTD partition.
4962306a36Sopenharmony_ci	  For example, this would mount the cramfs image stored in
5062306a36Sopenharmony_ci	  the MTD partition named "xip_fs" on the /mnt mountpoint:
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	  mount -t cramfs mtd:xip_fs /mnt
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	  If unsure, say N.
55