# SPDX-License-Identifier: GPL-2.0

menu "USB Support"

config AMLOGIC_USB
	bool "Amlogic USB controller support"
	default n
	select USB_PHY
	depends on USB
	help
	  DWC_OTG
	  USB
	  host
	  controller.

config AMLOGIC_COMMON_USB
	bool "It is used to cover the USB modification for common dir."
	default n
	depends on AMLOGIC_USB
	depends on AMLOGIC_BREAK_GKI_20
	help
	  DWC_OTG
	  USB
	  host
	  controller.

config AMLOGIC_USB_SUPPORT
	tristate "USB Host controller and phy support"
	depends on AMLOGIC_USB
	help
	  USB Host
	  controller
	  dwc_otg
	  support

config AMLOGIC_USB_DWC_OTG_HCD
	tristate "USB Host controller dwc_otg support"
	depends on AMLOGIC_USB
	help
	  USB Host
	  controller
	  dwc_otg
	  support

config AMLOGIC_CRG
        bool "USB Host controller corigine support"
        depends on AMLOGIC_USB
        help
          USB Host
          controller
          corigine
          support

config AMLOGIC_USBPHY
	bool "Amlogic USB PHY Driver"
	depends on AMLOGIC_USB
	help
	  Enable this to support Amlogic USB phy helper driver for Amlogic SoCs.
	  This driver provides common interface to interact, for Amlogic USB 2.0 PHY
	  driver and later for Amlogic USB 3.0 PHY driver.

	  This driver supports GXBABYTV and G9TV.

          To compile this driver as a module, choose M here: the
          module will be called phy-aml-usb.

config AMLOGIC_USB2PHY
	bool "Amlogic USB 2.0 PHY controller Driver"
	depends on AMLOGIC_USBPHY
	help
	  Enable this to support Amlogic USB 2.0 (High Speed) PHY controller
	  for Amlogic SoCs.

	  This driver supports GXBABYTV and G9TV.

	  To compile this driver as a module, choose M here: the
          module will be called phy-aml-usb.

config AMLOGIC_USB3PHY
	bool "Amlogic USB 3.0 PHY controller Driver"
	depends on AMLOGIC_USBPHY
	help
	  Enable this to support Amlogic USB 3.0 (Super Speed) phy controller
	  for Amlogic SoCs.

	  This driver supports GXBABYTV and G9TV.

          To compile this driver as a module, choose M here: the
          module will be called phy-aml-usb.

config AMLOGIC_USBPHYC2
	bool "Amlogic C2 USB PHY controller Driver"
	depends on AMLOGIC_USBPHY
	help
	  Enable this to support Amlogic USB phy controller
	  for Amlogic SoCs.

	  This driver supports GXBABYTV and G9TV.

	  To compile this driver as a module, choose M here: the
	  module will be called phy-aml-usb.

config AMLOGIC_BC
        bool "Amlogic BC detect Driver"
        depends on AMLOGIC_USB
        help
          Enable this to support Amlogic BC detect for Amlogic SoCs.

          This driver supports C2.

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

config AMLOGIC_CC
        bool "Amlogic CC detect Driver"
        depends on AMLOGIC_USB
        help
          Enable this to support Amlogic CC detect for Amlogic SoCs.

          This driver supports C2.

          To compile this driver as a module, choose M here: the
          module will be called amlogic-cc.
endmenu
