Re: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
On 8/1/14, 4:41 PM, Dinh Nguyen wrote: On Fri, 2014-08-01 at 20:42 +, Paul Zimmerman wrote: From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM 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 dingu...@altera.com --- v2: Remove reference to dwc2_gadget --- drivers/usb/dwc2/Kconfig | 59 + drivers/usb/dwc2/Makefile | 21 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig index f93807b..3d69928 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,29 @@ config USB_DWC2_PCI comment Gadget mode requires USB Gadget support to be enabled config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. I think it was an oversight on my part and there's not reason why USB_GADGET can't be modular. I went back to look this for v3 and it appears that I need USB_GADGET=y to avoid a build error when building the new driver for Gadget or Dual-role. drivers/built-in.o: In function `dwc2_gadget_init': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3516: undefined reference to `usb_add_gadget_udc' drivers/built-in.o: In function `s3c_hsotg_remove': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3543: undefined reference to `usb_del_gadget_udc' /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3549: undefined reference to `usb_gadget_unregister_driver' So just like the DWC3 driver, I need to add a dependency on USB_GADGET=y. I'll add a note to the help text. Dinh -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
From: Dinh Nguyen [mailto:dinh.li...@gmail.com] Sent: Thursday, August 07, 2014 5:12 AM On 8/1/14, 4:41 PM, Dinh Nguyen wrote: On Fri, 2014-08-01 at 20:42 +, Paul Zimmerman wrote: From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM ... config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. I think it was an oversight on my part and there's not reason why USB_GADGET can't be modular. I went back to look this for v3 and it appears that I need USB_GADGET=y to avoid a build error when building the new driver for Gadget or Dual-role. drivers/built-in.o: In function `dwc2_gadget_init': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3516: undefined reference to `usb_add_gadget_udc' drivers/built-in.o: In function `s3c_hsotg_remove': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3543: undefined reference to `usb_del_gadget_udc' /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3549: undefined reference to `usb_gadget_unregister_driver' I don't see why that shouldn't work. usb_add_gadget_udc is defined in udc-core.c, which gets built if CONFIG_USB_GADGET is set. What Kconfig line did you use when you got this build error? I think it should be: config USB_DWC2_DUAL_ROLE bool Dual Role mode depends on (USB=y || USB=USB_DWC2) (USB_GADGET=y || USB_GADGET=USB_DWC2) -- Paul
Re: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
On Thu, Aug 7, 2014 at 3:55 PM, Paul Zimmerman paul.zimmer...@synopsys.com wrote: From: Dinh Nguyen [mailto:dinh.li...@gmail.com] Sent: Thursday, August 07, 2014 5:12 AM On 8/1/14, 4:41 PM, Dinh Nguyen wrote: On Fri, 2014-08-01 at 20:42 +, Paul Zimmerman wrote: From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM ... config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. I think it was an oversight on my part and there's not reason why USB_GADGET can't be modular. I went back to look this for v3 and it appears that I need USB_GADGET=y to avoid a build error when building the new driver for Gadget or Dual-role. drivers/built-in.o: In function `dwc2_gadget_init': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3516: undefined reference to `usb_add_gadget_udc' drivers/built-in.o: In function `s3c_hsotg_remove': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3543: undefined reference to `usb_del_gadget_udc' /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3549: undefined reference to `usb_gadget_unregister_driver' I don't see why that shouldn't work. usb_add_gadget_udc is defined in udc-core.c, which gets built if CONFIG_USB_GADGET is set. What Kconfig line did you use when you got this build error? I think it should be: config USB_DWC2_DUAL_ROLE bool Dual Role mode depends on (USB=y || USB=USB_DWC2) (USB_GADGET=y || USB_GADGET=USB_DWC2) Right, I think your original comment was why I had USB_GADGET=y as a dependency for DWC2_DUAL_ROLE. If I replace USB_GADGET=y with just USB_GADGET, and make USB_GADGET a module. This is fine if I build DWC as module, but If I build DWC2 into the kernel, then the driver cannot link those gadget functions in. Dinh -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
From: Dinh Nguyen [mailto:dinh.li...@gmail.com] Sent: Thursday, August 07, 2014 2:01 PM On Thu, Aug 7, 2014 at 3:55 PM, Paul Zimmerman paul.zimmer...@synopsys.com wrote: From: Dinh Nguyen [mailto:dinh.li...@gmail.com] Sent: Thursday, August 07, 2014 5:12 AM On 8/1/14, 4:41 PM, Dinh Nguyen wrote: On Fri, 2014-08-01 at 20:42 +, Paul Zimmerman wrote: From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM ... config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. I think it was an oversight on my part and there's not reason why USB_GADGET can't be modular. I went back to look this for v3 and it appears that I need USB_GADGET=y to avoid a build error when building the new driver for Gadget or Dual-role. drivers/built-in.o: In function `dwc2_gadget_init': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3516: undefined reference to `usb_add_gadget_udc' drivers/built-in.o: In function `s3c_hsotg_remove': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3543: undefined reference to `usb_del_gadget_udc' /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3549: undefined reference to `usb_gadget_unregister_driver' I don't see why that shouldn't work. usb_add_gadget_udc is defined in udc-core.c, which gets built if CONFIG_USB_GADGET is set. What Kconfig line did you use when you got this build error? I think it should be: config USB_DWC2_DUAL_ROLE bool Dual Role mode depends on (USB=y || USB=USB_DWC2) (USB_GADGET=y || USB_GADGET=USB_DWC2) Right, I think your original comment was why I had USB_GADGET=y as a dependency for DWC2_DUAL_ROLE. If I replace USB_GADGET=y with just USB_GADGET, and make USB_GADGET a module. This is fine if I build DWC as module, but If I build DWC2 into the kernel, then the driver cannot link those gadget functions in. I don't think just USB_GADGET will work. Please try it with the line I showed above. -- Paul
Re: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
On Thu, Aug 7, 2014 at 4:04 PM, Paul Zimmerman paul.zimmer...@synopsys.com wrote: From: Dinh Nguyen [mailto:dinh.li...@gmail.com] Sent: Thursday, August 07, 2014 2:01 PM On Thu, Aug 7, 2014 at 3:55 PM, Paul Zimmerman paul.zimmer...@synopsys.com wrote: From: Dinh Nguyen [mailto:dinh.li...@gmail.com] Sent: Thursday, August 07, 2014 5:12 AM On 8/1/14, 4:41 PM, Dinh Nguyen wrote: On Fri, 2014-08-01 at 20:42 +, Paul Zimmerman wrote: From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM ... config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. I think it was an oversight on my part and there's not reason why USB_GADGET can't be modular. I went back to look this for v3 and it appears that I need USB_GADGET=y to avoid a build error when building the new driver for Gadget or Dual-role. drivers/built-in.o: In function `dwc2_gadget_init': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3516: undefined reference to `usb_add_gadget_udc' drivers/built-in.o: In function `s3c_hsotg_remove': /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3543: undefined reference to `usb_del_gadget_udc' /home/dinguyen/linux_dev/linux-socfpga/drivers/usb/dwc2/gadget.c:3549: undefined reference to `usb_gadget_unregister_driver' I don't see why that shouldn't work. usb_add_gadget_udc is defined in udc-core.c, which gets built if CONFIG_USB_GADGET is set. What Kconfig line did you use when you got this build error? I think it should be: config USB_DWC2_DUAL_ROLE bool Dual Role mode depends on (USB=y || USB=USB_DWC2) (USB_GADGET=y || USB_GADGET=USB_DWC2) Right, I think your original comment was why I had USB_GADGET=y as a dependency for DWC2_DUAL_ROLE. If I replace USB_GADGET=y with just USB_GADGET, and make USB_GADGET a module. This is fine if I build DWC as module, but If I build DWC2 into the kernel, then the driver cannot link those gadget functions in. I don't think just USB_GADGET will work. Please try it with the line I showed above. Yes, your suggestion works fine. It's an additional USB_GADGET=USB_DWC2 from what I had in v2. Thanks, Dinh -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM 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 dingu...@altera.com --- v2: Remove reference to dwc2_gadget --- drivers/usb/dwc2/Kconfig | 59 + drivers/usb/dwc2/Makefile | 21 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig index f93807b..3d69928 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,29 @@ config USB_DWC2_PCI comment Gadget mode requires USB Gadget support to be enabled config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. -- Paul -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
On Fri, 2014-08-01 at 20:42 +, Paul Zimmerman wrote: From: linux-usb-ow...@vger.kernel.org [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of dingu...@altera.com Sent: Wednesday, July 30, 2014 8:21 AM 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 dingu...@altera.com --- v2: Remove reference to dwc2_gadget --- drivers/usb/dwc2/Kconfig | 59 + drivers/usb/dwc2/Makefile | 21 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig index f93807b..3d69928 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,29 @@ config USB_DWC2_PCI comment Gadget mode requires USB Gadget support to be enabled config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) Hi Dinh, I just noticed that for dual-role mode, you are not allowing USB_GADGET to be modular. Is there a reason for that? If so, please mention it in the commit message. It should also be explained in the help text. Or maybe add another comment line saying Dual-role mode requires USB Gadget = y or something like that. I think it was an oversight on my part and there's not reason why USB_GADGET can't be modular. Dinh -- To unsubscribe from this list: send the line unsubscribe linux-usb in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCHv2 01/13] usb: dwc2: Update Kconfig to support dual-role
From: Dinh Nguyen dingu...@altera.com 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 dingu...@altera.com --- v2: Remove reference to dwc2_gadget --- drivers/usb/dwc2/Kconfig | 59 + drivers/usb/dwc2/Makefile | 21 2 files changed, 44 insertions(+), 36 deletions(-) diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig index f93807b..3d69928 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,29 @@ config USB_DWC2_PCI comment Gadget mode requires USB Gadget support to be enabled config USB_DWC2_PERIPHERAL - tristate Gadget only mode + bool Gadget only mode depends on USB_GADGET 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. + +config USB_DWC2_DUAL_ROLE + bool Dual Role mode + depends on ((USB=y || USB=USB_DWC2) (USB_GADGET=y)) + 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. +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