# SPDX-License-Identifier: GPL-2.0
config EXFAT_FS
	tristate "exFAT fs support"
	depends on BLOCK
	select NLS
	help
	  This adds support for the exFAT file system.

config EXFAT_DONT_MOUNT_VFAT
	bool "Prohibit mounting of fat/vfat filesystems by exFAT"
	depends on EXFAT_FS
	default y
	help
	  By default, the exFAT driver will only mount exFAT filesystems, and refuse
	  to mount fat/vfat filesystems.  Set this to 'n' to allow the exFAT driver
	  to mount these filesystems.

config EXFAT_DISCARD
	bool "enable discard support"
	depends on EXFAT_FS
	default y

config EXFAT_DELAYED_SYNC
	bool "enable delayed sync"
	depends on EXFAT_FS
	default n

config EXFAT_KERNEL_DEBUG
	bool "enable kernel debug features via ioctl"
	depends on EXFAT_FS
	default n

config EXFAT_DEBUG_MSG
	bool "print debug messages"
	depends on EXFAT_FS
	default n

config EXFAT_DEFAULT_CODEPAGE
	int "Default codepage for exFAT"
	default 437
	depends on EXFAT_FS
	help
	  This option should be set to the codepage of your exFAT filesystems.

config EXFAT_DEFAULT_IOCHARSET
	string "Default iocharset for exFAT"
	default "utf8"
	depends on EXFAT_FS
	help
	  Set this to the default input/output character set you'd like exFAT to use.
