menu "USB Function Support"
	depends on !USB_GADGET

config USB_MSM_OTG
	bool "OTG support for Qualcomm on-chip USB controller"
	depends on USB && USB_FUNCTION && USB_EHCI_MSM
	help
	  USB OTG driver.
	  This driver is required if you want to use USB in
	  Host mode and Device mode.

config USB_FUNCTION
	boolean "Support for USB Function Drivers"
	help
	   The USB Function framework is similar to the Gadget framework
	   but a little simpler and a little more plugable.  It trades
	   some flexibility in the framework for smaller and simpler
	   function drivers that can be combined into a composite driver.

choice
	prompt "USB Peripheral Controller"
	depends on USB_FUNCTION
	help
	  USB devices interfaces with the host using a controller.
	  Many controller drivers are platform-specific; these
	  often need board-specific hooks.

config USB_FUNCTION_MSM_HSUSB
	boolean "MSM Highspeed USB Peripheral Controller"
	depends on ARCH_MSM
	help
	  High speed USB device controller for Qualcomm chipsets using
	  USB Function framework. Controller supports IAD and
	  32 endpoints(16 IN and 16 OUT).

endchoice

config USB_FUNCTION_NULL
	boolean "Null Function -- eats packets"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	default n

config USB_FUNCTION_ZERO
	boolean "Zero Function -- generates packets"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	default n

config USB_FUNCTION_LOOPBACK
	boolean "Loopback Function -- returns packets"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	default n

config USB_FUNCTION_ADB
	tristate "ADB Transport Function"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	help
	  Function Driver for the Android ADB Protocol

	  Say "y" to link the driver statically, or "m" to build a
	  dynamically linked module called "adb"

	default USB_FUNCTION_MSM_HSUSB

config USB_FUNCTION_UMS
	boolean "USB Mass Storage Function (userspace)"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	default n

config USB_FUNCTION_MASS_STORAGE
	tristate "USB Mass Storage Function (kernel based)"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB && SWITCH
	help
	  The File-backed Storage function driver acts as a USB Mass Storage
	  disk drive.  As its storage repository it can use a regular
	  file or a block device specified as a module parameter. Initial
	  driver version is derived from Gadget framework and ported to
	  Function driver framework.

	  Say "y" to link the driver statically, or "m" to build a
	  dynamically linked module called "file_storage".

	default USB_FUNCTION_MSM_HSUSB

config USB_CSW_HACK
	boolean "USB Mass storage csw hack Feature"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MASS_STORAGE
	help
	 This csw hack feature is for increasing the performance of the mass
	 storage

	default n

config USB_FUNCTION_DIAG
	tristate "USB MSM Diag Function"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	help
	  Simple bridge driver between smd and debug client(host side)

	  Say "y" to link the driver statically, or "m" to build a
	  dynamically linked module called "diag".

	default USB_FUNCTION_MSM_HSUSB

config USB_FUNCTION_ETHER
	tristate "USB Ethernet Function"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	help
	  Implements the Ethernet style communication using CDC/ECM.

	  Say "y" to link the driver statically, or "m" to build a
	  dynamically linked module called "ether".

	default USB_FUNCTION_MSM_HSUSB

config USB_FUNCTION_SERIAL
	tristate "USB Serial Function"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	help
	  Implements serial communication using single interface; uses
	  two endpoints(bulk-in and bulk out) for data transfer and a
	  interrupt endpoint for control data transfer.

	  Say "y" to link the driver statically, or "m" to build a
	  dynamically linked module called "serial".

	default USB_FUNCTION_MSM_HSUSB

config USB_FUNCTION_RMNET
	bool "RmNet function driver"
	depends on USB_FUNCTION
	depends on USB_FUNCTION_MSM_HSUSB
	default n
	help
	  Implements Rmnet function.
	  Rmnet is an alternative to CDC-ECM and Windows RNDIS. It uses
	  QUALCOMM MSM Interface for control transfers. It acts like a
	  bridge between Host and modem found in MSM chipsets.

config RMNET_SMD_CTL_CHANNEL
	string "control SMD channel name"
	depends on USB_FUNCTION_RMNET
	default ""
	help
	  Control SMD channel for transferring QMI messages

config RMNET_SMD_DATA_CHANNEL
	string "Data SMD channel name"
	depends on USB_FUNCTION_RMNET
	default ""
	help
	  Data SMD channel for transferring network data

endmenu
