# SPDX-License-Identifier: GPL-2.0
#
# USB/ATM DSL configuration
#

menuconfig USB_ATM
	tristate "USB DSL modem support"
	depends on ATM
	select CRC32
	help
	  Say Y here if you want to connect a USB Digital Subscriber Line (DSL)
	  modem to your computer's USB port.  You will then need to choose your
	  modem from the list below.

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

if USB_ATM

config USB_SPEEDTOUCH
	tristate "Speedtouch USB support"
	select FW_LOADER
	help
	  Say Y here if you have an SpeedTouch USB or SpeedTouch 330
	  modem.  In order to use your modem you will need to install the 
	  two parts of the firmware, extracted by the user space tools; see
	  <http://www.linux-usb.org/SpeedTouch/> for details.

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

config USB_CXACRU
	tristate "Conexant AccessRunner USB support"
	select FW_LOADER
	help
	  Say Y here if you have an ADSL USB modem based on the Conexant
	  AccessRunner chipset.  In order to use your modem you will need to
	  install the firmware, extracted by the user space tools; see
	  <http://accessrunner.sourceforge.net/> for details.

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

config USB_UEAGLEATM
	tristate "ADI 930 and eagle USB DSL modem"
	select FW_LOADER
	help
	  Say Y here if you have an ADSL USB modem based on the ADI 930
	  or eagle chipset. In order to use your modem you will need to
	  install firmwares and CMV (Command Management Variables); see
	  <https://gna.org/projects/ueagleatm/> for details.

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

config USB_XUSBATM
	tristate "Other USB DSL modem support"
	help
	  Say Y here if you have a DSL USB modem not explicitly supported by
	  another USB DSL drivers.  In order to use your modem you will need to
	  pass the vendor ID, product ID, and endpoint numbers for transmission
	  and reception as module parameters.  You may need to initialize
	  the modem using a user space utility (a firmware loader for example).

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

endif # USB_ATM
