#
# USB Class driver configuration
#
comment "USB Device Class drivers"
	depends on USB

config USB_ACM
	tristate "USB Modem (CDC ACM) support"
	depends on USB && TTY
	---help---
	  This driver supports USB modems and ISDN adapters which support the
	  Communication Device Class Abstract Control Model interface.
	  Please read <file:Documentation/usb/acm.txt> for details.

	  If your modem only reports "Cls=ff(vend.)" in the descriptors in
	  /proc/bus/usb/devices, then your modem will not work with this
	  driver.

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

config USB_PRINTER
	tristate "USB Printer support"
	depends on USB
	help
	  Say Y here if you want to connect a USB printer to your computer's
	  USB port.

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

config USB_WDM
	tristate "USB Wireless Device Management support"
	depends on USB
	---help---
	  This driver supports the WMC Device Management functionality
	  of cell phones compliant to the CDC WMC specification. You can use
	  AT commands over this device.

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

config USB_TMC
	tristate "USB Test and Measurement Class support"
	depends on USB
	help
	  Say Y here if you want to connect a USB device that follows
	  the USB.org specification for USB Test and Measurement devices
	  to your computer's USB port.

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