#
# USB notify configuration
#

comment "USB Notify features"
config USB_HOST_NOTIFY
	boolean "USB Host notify Driver"
	depends on USB_NOTIFY_LAYER
	help
	  Android framework needs uevents for usb host operation.
	  Host notify Driver serves uevent format
	  that is used by usb host or otg.

config USB_NOTIFY_LAYER
	boolean "USB notify layer"
	depends on USB
	help
	  Added usb notify layer on gadget,host,otg drivers.
          The usb notify layer controls otg mode and vbus draw
          and vbus detect irq.

config USB_NOTIFIER
	boolean "USB notifier"
	depends on USB_NOTIFY_LAYER
	help
	  Added platform driver to call usb notify.
	  The usb_notifier.c can be fixed for each models.

config USB_DEBUG_DETAILED_LOG
	boolean "USB detailed log for debugging"
	depends on USB
	help
	  Add detailed log for debugging.

config USB_STORAGE_DETECT
	boolean "USB storage detect function"
	depends on USB && SCSI
	depends on USB_STORAGE
	help
	  This feature enables to detect inserting or removing
          sd card in sd reader device.
          This must to be defined in /usb/storage/Kconfig 
          directory originally. But this feature is defined
          in this Kconfig to gather samsung feature about usb host.

config USB_HMT_SAMSUNG_INPUT
	boolean "USB HMT inputs for samsung hmt devices"
	depends on HID
	help
	  Some samsung smart phones support gear vr.
          The samsung gear vr need some special hid input codes.
          This feature enables special hid input codes.

config USB_EXTERNAL_NOTIFY
	boolean "USB external notify"
	depends on USB_NOTIFY_LAYER
	help
	  Added usb external notify.
	  The usb external notify broadcast special situation
	  to muic and charger.
	  
config USB_NOTIFY_PROC_LOG
	boolean "USB proc log"
	depends on USB_NOTIFY_LAYER
	depends on USB_HOST_NOTIFY
	help
	  Added proc usblog.
	  The USB STATE, The USB MODE, Cable event 
	  are saved in usblog heap.

config ENABLE_USB_SUSPEND_STATE
	bool "Enable USB suspend current state"
	default n
	help
	  Say Y to enable USB supend current state.

config USB_HOST_SAMSUNG_FEATURE
	boolean "USB Host Samsung Feature"
	depends on USB
	help
	  USB Host Samsung Feature.
	  It is different from LSI BSP code.

config USB_HW_PARAM
    boolean "USB H/W Parameter"
    depends on USB_NOTIFY_LAYER
    help
      Added USB H/W Parameter for DQA Agent.
      You need more works for USB PDIC driver.
