Hi Dinh,

On 08/08/2014 11:13 PM, [email protected] wrote:
> From: Dinh Nguyen <[email protected]>
> 
> Update DWC2 kconfig and makefile to support dual-role mode. The platform
> file will always get compiled for the case where the controller is directly
> connected to the CPU. So for loadable modules, only dwc2.ko is needed.
> 
> Signed-off-by: Dinh Nguyen <[email protected]>
> ---
> v3: Add USB_GADGET=y and USB_GADGET=USB_DWC2 for peripheral and dual-role
>     config options.
> v2: Remove reference to dwc2_gadget
> ---
>  drivers/usb/dwc2/Kconfig  | 63 
> +++++++++++++++++++++++++++--------------------
>  drivers/usb/dwc2/Makefile | 21 ++++++++--------
>  2 files changed, 47 insertions(+), 37 deletions(-)
> 
> diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig
> index f93807b..4396a1f 100644
> --- a/drivers/usb/dwc2/Kconfig
> +++ b/drivers/usb/dwc2/Kconfig
> @@ -1,40 +1,29 @@
>  config USB_DWC2
> -     bool "DesignWare USB2 DRD Core Support"
> +     tristate "DesignWare USB2 DRD Core Support"
>       depends on USB
>       help
>         Say Y here if your system has a Dual Role Hi-Speed USB
>         controller based on the DesignWare HSOTG IP Core.
>  
> -       For host mode, if you choose to build the driver as dynamically
> -       linked modules, the core module will be called dwc2.ko, the PCI
> -       bus interface module (if you have a PCI bus system) will be
> -       called dwc2_pci.ko, and the platform interface module (for
> -       controllers directly connected to the CPU) will be called
> -       dwc2_platform.ko. For gadget mode, there will be a single
> -       module called dwc2_gadget.ko.
> -
> -       NOTE: The s3c-hsotg driver is now renamed to dwc2_gadget. The
> -       host and gadget drivers are still currently separate drivers.
> -       There are plans to merge the dwc2_gadget driver with the dwc2
> -       host driver in the near future to create a dual-role driver.
> +       If you choose to build the driver as dynamically
> +       linked modules, a single dwc2.ko(regardless of mode of operation)
> +       will get built for both platform IPs and PCI.
>  
>  if USB_DWC2
>  
> +choice
> +     bool "DWC2 Mode Selection"
> +     default USB_DWC2_DUAL_ROLE if (USB && USB_GADGET)
> +     default USB_DWC2_HOST if (USB && !USB_GADGET)
> +     default USB_DWC2_PERIPHERAL if (!USB && USB_GADGET)
> +
>  config USB_DWC2_HOST
> -     tristate "Host only mode"
> +     bool "Host only mode"
>       depends on USB
>       help
>         The Designware USB2.0 high-speed host controller
> -       integrated into many SoCs.
> -
> -config USB_DWC2_PLATFORM
> -     bool "DWC2 Platform"
> -     depends on USB_DWC2_HOST
> -     default USB_DWC2_HOST
> -     help
> -       The Designware USB2.0 platform interface module for
> -       controllers directly connected to the CPU. This is only
> -       used for host mode.
> +       integrated into many SoCs. Select this option if you want the
> +       driver to operate in Host-only mode.
>  
>  config USB_DWC2_PCI
>       bool "DWC2 PCI"
> @@ -47,11 +36,31 @@ config USB_DWC2_PCI
>  comment "Gadget mode requires USB Gadget support to be enabled"
>  
>  config USB_DWC2_PERIPHERAL
> -     tristate "Gadget only mode"
> -     depends on USB_GADGET
> +     bool "Gadget only mode"
> +     depends on USB_GADGET=y || USB_GADGET=USB_DWC2
>       help
>         The Designware USB2.0 high-speed gadget controller
> -       integrated into many SoCs.
> +       integrated into many SoCs. Select this option if you want the
> +       driver to operate in Peripheral-only mode. This option requires
> +       USB_GADGET=y.
> +
> +config USB_DWC2_DUAL_ROLE
> +     bool "Dual Role mode"
> +     depends on ((USB=y || USB=USB_DWC2) && (USB_GADGET=y || 
> USB_GADGET=USB_DWC2))
> +     help
> +       Select this option if you want the driver to work in a dual-role
> +       mode. In this mode both host and gadget features are enabled, and
> +       the role will be determined by the cable that gets plugged-in. This
> +       option requires USB_GADGET=y.
> +endchoice
> +
> +config USB_DWC2_PLATFORM
> +     bool
> +        depends on !PCI
> +        default y
> +        help
> +          The Designware USB2.0 platform interface module for
> +          controllers directly connected to the CPU.
>  
>  config USB_DWC2_DEBUG
>       bool "Enable Debugging Messages"
> diff --git a/drivers/usb/dwc2/Makefile b/drivers/usb/dwc2/Makefile
> index b73d2a5..3026135 100644
> --- a/drivers/usb/dwc2/Makefile
> +++ b/drivers/usb/dwc2/Makefile
> @@ -1,10 +1,17 @@
>  ccflags-$(CONFIG_USB_DWC2_DEBUG)     += -DDEBUG
>  ccflags-$(CONFIG_USB_DWC2_VERBOSE)   += -DVERBOSE_DEBUG
>  
> -obj-$(CONFIG_USB_DWC2_HOST)          += dwc2.o
> +obj-$(CONFIG_USB_DWC2)                       += dwc2.o
>  dwc2-y                                       := core.o core_intr.o
> -dwc2-y                                       += hcd.o hcd_intr.o
> -dwc2-y                                       += hcd_queue.o hcd_ddma.o
> +
> +ifneq ($(filter y,$(CONFIG_USB_DWC2_HOST) $(CONFIG_USB_DWC2_DUAL_ROLE)),)
> +     dwc2-y                          += hcd.o hcd_intr.o
> +     dwc2-y                          += hcd_queue.o hcd_ddma.o
> +endif
> +
> +ifneq ($(filter y,$(CONFIG_USB_DWC2_PERIPHERAL) 
> $(CONFIG_USB_DWC2_DUAL_ROLE)),)
> +     dwc2-y                          += gadget.o
> +endif
>  
>  # NOTE: The previous s3c-hsotg peripheral mode only driver has been moved to
>  # this location and renamed gadget.c. When building for dynamically linked
> @@ -19,10 +26,4 @@ ifneq ($(CONFIG_USB_DWC2_PCI),)
>       dwc2_pci-y                      := pci.o
>  endif
>  
> -ifneq ($(CONFIG_USB_DWC2_PLATFORM),)
> -     obj-$(CONFIG_USB_DWC2_HOST)     += dwc2_platform.o
> -     dwc2_platform-y                 := platform.o
> -endif
> -
> -obj-$(CONFIG_USB_DWC2_PERIPHERAL)    += dwc2_gadget.o
> -dwc2_gadget-y                                := gadget.o
> +dwc2-$(CONFIG_USB_DWC2_PLATFORM) += platform.o
> 

This patch causes build break for me. I suppose it should be at the end
of series to keep bisectability.

I see it's already in Greg's tree, so I will prepare revert.

Best regards
Robert Baldyga
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to