162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig FAT_FS
362306a36Sopenharmony_ci	tristate
462306a36Sopenharmony_ci	select BUFFER_HEAD
562306a36Sopenharmony_ci	select NLS
662306a36Sopenharmony_ci	select LEGACY_DIRECT_IO
762306a36Sopenharmony_ci	help
862306a36Sopenharmony_ci	  If you want to use one of the FAT-based file systems (the MS-DOS and
962306a36Sopenharmony_ci	  VFAT (Windows 95) file systems), then you must say Y or M here
1062306a36Sopenharmony_ci	  to include FAT support. You will then be able to mount partitions or
1162306a36Sopenharmony_ci	  diskettes with FAT-based file systems and transparently access the
1262306a36Sopenharmony_ci	  files on them, i.e. MSDOS files will look and behave just like all
1362306a36Sopenharmony_ci	  other Unix files.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	  This FAT support is not a file system in itself, it only provides
1662306a36Sopenharmony_ci	  the foundation for the other file systems. You will have to say Y or
1762306a36Sopenharmony_ci	  M to at least one of "MSDOS fs support" or "VFAT fs support" in
1862306a36Sopenharmony_ci	  order to make use of it.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	  Another way to read and write MSDOS floppies and hard drive
2162306a36Sopenharmony_ci	  partitions from within Linux (but not transparently) is with the
2262306a36Sopenharmony_ci	  mtools ("man mtools") program suite. You don't need to say Y here in
2362306a36Sopenharmony_ci	  order to do that.
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	  If you need to move large files on floppies between a DOS and a
2662306a36Sopenharmony_ci	  Linux box, say Y here, mount the floppy under Linux with an MSDOS
2762306a36Sopenharmony_ci	  file system and use GNU tar's M option. GNU tar is a program
2862306a36Sopenharmony_ci	  available for Unix and DOS ("man tar" or "info tar").
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci	  The FAT support will enlarge your kernel by about 37 KB. If unsure,
3162306a36Sopenharmony_ci	  say Y.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  To compile this as a module, choose M here: the module will be called
3462306a36Sopenharmony_ci	  fat.  Note that if you compile the FAT support as a module, you
3562306a36Sopenharmony_ci	  cannot compile any of the FAT-based file systems into the kernel
3662306a36Sopenharmony_ci	  -- they will have to be modules as well.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciconfig MSDOS_FS
3962306a36Sopenharmony_ci	tristate "MSDOS fs support"
4062306a36Sopenharmony_ci	select FAT_FS
4162306a36Sopenharmony_ci	help
4262306a36Sopenharmony_ci	  This allows you to mount MSDOS partitions of your hard drive (unless
4362306a36Sopenharmony_ci	  they are compressed; to access compressed MSDOS partitions under
4462306a36Sopenharmony_ci	  Linux, you can either use the DOS emulator DOSEMU, described in the
4562306a36Sopenharmony_ci	  DOSEMU-HOWTO, available from
4662306a36Sopenharmony_ci	  <https://www.tldp.org/docs.html#howto>, or try dmsdosfs in
4762306a36Sopenharmony_ci	  <ftp://ibiblio.org/pub/Linux/system/filesystems/dosfs/>. If you
4862306a36Sopenharmony_ci	  intend to use dosemu with a non-compressed MSDOS partition, say Y
4962306a36Sopenharmony_ci	  here) and MSDOS floppies. This means that file access becomes
5062306a36Sopenharmony_ci	  transparent, i.e. the MSDOS files look and behave just like all
5162306a36Sopenharmony_ci	  other Unix files.
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	  If you have Windows 95 or Windows NT installed on your MSDOS
5462306a36Sopenharmony_ci	  partitions, you should use the VFAT file system (say Y to "VFAT fs
5562306a36Sopenharmony_ci	  support" below), or you will not be able to see the long filenames
5662306a36Sopenharmony_ci	  generated by Windows 95 / Windows NT.
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci	  This option will enlarge your kernel by about 7 KB. If unsure,
5962306a36Sopenharmony_ci	  answer Y. This will only work if you said Y to "DOS FAT fs support"
6062306a36Sopenharmony_ci	  as well. To compile this as a module, choose M here: the module will
6162306a36Sopenharmony_ci	  be called msdos.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciconfig VFAT_FS
6462306a36Sopenharmony_ci	tristate "VFAT (Windows-95) fs support"
6562306a36Sopenharmony_ci	select FAT_FS
6662306a36Sopenharmony_ci	help
6762306a36Sopenharmony_ci	  This option provides support for normal Windows file systems with
6862306a36Sopenharmony_ci	  long filenames.  That includes non-compressed FAT-based file systems
6962306a36Sopenharmony_ci	  used by Windows 95, Windows 98, Windows NT 4.0, and the Unix
7062306a36Sopenharmony_ci	  programs from the mtools package.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci	  The VFAT support enlarges your kernel by about 10 KB and it only
7362306a36Sopenharmony_ci	  works if you said Y to the "DOS FAT fs support" above.  Please read
7462306a36Sopenharmony_ci	  the file <file:Documentation/filesystems/vfat.rst> for details.  If
7562306a36Sopenharmony_ci	  unsure, say Y.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	  To compile this as a module, choose M here: the module will be called
7862306a36Sopenharmony_ci	  vfat.
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciconfig FAT_DEFAULT_CODEPAGE
8162306a36Sopenharmony_ci	int "Default codepage for FAT"
8262306a36Sopenharmony_ci	depends on FAT_FS
8362306a36Sopenharmony_ci	default 437
8462306a36Sopenharmony_ci	help
8562306a36Sopenharmony_ci	  This option should be set to the codepage of your FAT filesystems.
8662306a36Sopenharmony_ci	  It can be overridden with the "codepage" mount option.
8762306a36Sopenharmony_ci	  See <file:Documentation/filesystems/vfat.rst> for more information.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciconfig FAT_DEFAULT_IOCHARSET
9062306a36Sopenharmony_ci	string "Default iocharset for FAT"
9162306a36Sopenharmony_ci	depends on VFAT_FS
9262306a36Sopenharmony_ci	default "iso8859-1"
9362306a36Sopenharmony_ci	help
9462306a36Sopenharmony_ci	  Set this to the default input/output character set you'd
9562306a36Sopenharmony_ci	  like FAT to use. It should probably match the character set
9662306a36Sopenharmony_ci	  that most of your FAT filesystems use, and can be overridden
9762306a36Sopenharmony_ci	  with the "iocharset" mount option for FAT filesystems.
9862306a36Sopenharmony_ci	  Note that "utf8" is not recommended for FAT filesystems.
9962306a36Sopenharmony_ci	  If unsure, you shouldn't set "utf8" here - select the next option
10062306a36Sopenharmony_ci	  instead if you would like to use UTF-8 encoded file names by default.
10162306a36Sopenharmony_ci	  See <file:Documentation/filesystems/vfat.rst> for more information.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci	  Enable any character sets you need in File Systems/Native Language
10462306a36Sopenharmony_ci	  Support.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ciconfig FAT_DEFAULT_UTF8
10762306a36Sopenharmony_ci	bool "Enable FAT UTF-8 option by default"
10862306a36Sopenharmony_ci	depends on VFAT_FS
10962306a36Sopenharmony_ci	default n
11062306a36Sopenharmony_ci	help
11162306a36Sopenharmony_ci	  Set this if you would like to have "utf8" mount option set
11262306a36Sopenharmony_ci	  by default when mounting FAT filesystems.
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	  Even if you say Y here can always disable UTF-8 for
11562306a36Sopenharmony_ci	  particular mount by adding "utf8=0" to mount options.
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci	  Say Y if you use UTF-8 encoding for file names, N otherwise.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci	  See <file:Documentation/filesystems/vfat.rst> for more information.
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciconfig FAT_KUNIT_TEST
12262306a36Sopenharmony_ci	tristate "Unit Tests for FAT filesystems" if !KUNIT_ALL_TESTS
12362306a36Sopenharmony_ci	depends on KUNIT && FAT_FS
12462306a36Sopenharmony_ci	default KUNIT_ALL_TESTS
12562306a36Sopenharmony_ci	help
12662306a36Sopenharmony_ci	  This builds the FAT KUnit tests
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci	  For more information on KUnit and unit tests in general, please refer
12962306a36Sopenharmony_ci	  to the KUnit documentation in Documentation/dev-tools/kunit
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	  If unsure, say N
132