# SPDX-License-Identifier: GPL-2.0-only
#
# Tablet driver configuration
#
menuconfig INPUT_TABLET
	bool "Tablets"
	help
	  Say Y here, and a list of supported tablets will be displayed.
	  This option doesn't affect the kernel.

	  If unsure, say Y.

if INPUT_TABLET

config TABLET_USB_ACECAD
	tristate "Acecad Flair tablet support (USB)"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use the USB version of the Acecad Flair
	  tablet.  Make sure to say Y to "Mouse support"
	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
	  (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called acecad.

config TABLET_USB_AIPTEK
	tristate "Aiptek 6000U/8000U and Genius G_PEN tablet support (USB)"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use the USB version of the Aiptek 6000U,
	  Aiptek 8000U or Genius G-PEN 560 tablet.  Make sure to say Y to
	  "Mouse support" (CONFIG_INPUT_MOUSEDEV) and/or "Event interface
	  support" (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called aiptek.

config TABLET_USB_HANWANG
	tristate "Hanwang Art Master III tablet support (USB)"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use the USB version of the Hanwang Art
	  Master III tablet.

	  To compile this driver as a module, choose M here: the
	  module will be called hanwang.

config TABLET_USB_KBTAB
	tristate "KB Gear JamStudio tablet support (USB)"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use the USB version of the KB Gear
	  JamStudio tablet.  Make sure to say Y to "Mouse support"
	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
	  (CONFIG_INPUT_EVDEV) as well.

	  To compile this driver as a module, choose M here: the
	  module will be called kbtab.

config TABLET_USB_PEGASUS
	tristate "Pegasus Mobile Notetaker Pen input tablet support"
	depends on USB_ARCH_HAS_HCD
	select USB
	help
	  Say Y here if you want to use the Pegasus Mobile Notetaker,
	  also known as:
	  Genie e-note The Notetaker,
	  Staedtler Digital ballpoint pen 990 01,
	  IRISnotes Express or
	  NEWLink Digital Note Taker.

	  To compile this driver as a module, choose M here: the
	  module will be called pegasus_notetaker.

config TABLET_SERIAL_WACOM4
	tristate "Wacom protocol 4 serial tablet support"
	select SERIO
	help
	  Say Y here if you want to use Wacom protocol 4 serial tablets.
	  E.g. serial versions of the Cintiq, Graphire or Penpartner.

	  To compile this driver as a module, choose M here: the
	  module will be called wacom_serial4.

endif
