18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ciconfig CRAMFS
38c2ecf20Sopenharmony_ci	tristate "Compressed ROM file system support (cramfs)"
48c2ecf20Sopenharmony_ci	select ZLIB_INFLATE
58c2ecf20Sopenharmony_ci	help
68c2ecf20Sopenharmony_ci	  Saying Y here includes support for CramFs (Compressed ROM File
78c2ecf20Sopenharmony_ci	  System).  CramFs is designed to be a simple, small, and compressed
88c2ecf20Sopenharmony_ci	  file system for ROM based embedded systems.  CramFs is read-only,
98c2ecf20Sopenharmony_ci	  limited to 256MB file systems (with 16MB files), and doesn't support
108c2ecf20Sopenharmony_ci	  16/32 bits uid/gid, hard links and timestamps.
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci	  See <file:Documentation/filesystems/cramfs.rst> and
138c2ecf20Sopenharmony_ci	  <file:fs/cramfs/README> for further information.
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci	  To compile this as a module, choose M here: the module will be called
168c2ecf20Sopenharmony_ci	  cramfs.  Note that the root file system (the one containing the
178c2ecf20Sopenharmony_ci	  directory /) cannot be compiled as a module.
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci	  This filesystem is limited in capabilities and performance on
208c2ecf20Sopenharmony_ci	  purpose to remain small and low on RAM usage. It is most suitable
218c2ecf20Sopenharmony_ci	  for small embedded systems. If you have ample RAM to spare, you may
228c2ecf20Sopenharmony_ci	  consider a more capable compressed filesystem such as SquashFS
238c2ecf20Sopenharmony_ci	  which is much better in terms of performance and features.
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci	  If unsure, say N.
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ciconfig CRAMFS_BLOCKDEV
288c2ecf20Sopenharmony_ci	bool "Support CramFs image over a regular block device" if EXPERT
298c2ecf20Sopenharmony_ci	depends on CRAMFS && BLOCK
308c2ecf20Sopenharmony_ci	default y
318c2ecf20Sopenharmony_ci	help
328c2ecf20Sopenharmony_ci	  This option allows the CramFs driver to load data from a regular
338c2ecf20Sopenharmony_ci	  block device such a disk partition or a ramdisk.
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciconfig CRAMFS_MTD
368c2ecf20Sopenharmony_ci	bool "Support CramFs image directly mapped in physical memory"
378c2ecf20Sopenharmony_ci	depends on CRAMFS && CRAMFS <= MTD
388c2ecf20Sopenharmony_ci	default y if !CRAMFS_BLOCKDEV
398c2ecf20Sopenharmony_ci	help
408c2ecf20Sopenharmony_ci	  This option allows the CramFs driver to load data directly from
418c2ecf20Sopenharmony_ci	  a linear adressed memory range (usually non volatile memory
428c2ecf20Sopenharmony_ci	  like flash) instead of going through the block device layer.
438c2ecf20Sopenharmony_ci	  This saves some memory since no intermediate buffering is
448c2ecf20Sopenharmony_ci	  necessary.
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	  The location of the CramFs image is determined by a
478c2ecf20Sopenharmony_ci	  MTD device capable of direct memory mapping e.g. from
488c2ecf20Sopenharmony_ci	  the 'physmap' map driver or a resulting MTD partition.
498c2ecf20Sopenharmony_ci	  For example, this would mount the cramfs image stored in
508c2ecf20Sopenharmony_ci	  the MTD partition named "xip_fs" on the /mnt mountpoint:
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	  mount -t cramfs mtd:xip_fs /mnt
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ci	  If unsure, say N.
55