From: Paul Bolle <pebolle@tiscali.nl>
To: dinguyen@opensource.altera.com
Cc: paulz@synopsys.com, balbi@ti.com, dinh.linux@gmail.com,
linux-kernel@vger.kernel.org, swarren@wwwdotorg.org,
b.zolnierkie@samsung.com, matthijs@stdin.nl,
r.baldyga@samsung.com, jg1.han@samsung.com,
sachin.kamat@linaro.org, ben-linux@fluff.org,
dianders@chromium.org, kever.yang@rock-chips.com,
linux-usb@vger.kernel.org
Subject: Re: [PATCHv5 7/7] usb: dwc2: Update Kconfig to support dual-role
Date: Mon, 20 Oct 2014 21:42:31 +0200 [thread overview]
Message-ID: <1413834151.2010.19.camel@x41> (raw)
In-Reply-To: <1413831126-24193-8-git-send-email-dinguyen@opensource.altera.com>
dinguyen@opensource.altera.com schreef op ma 20-10-2014 om 13:52
[-0500]:
> From: Dinh Nguyen <dinguyen@opensource.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, dwc2.ko is built for host,
> peripheral, and dual-role mode. The PCI bus interface will be called
> dwc2_pci.ko and the platform interface module will be called dwc2_platform.ko.
>
> Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com>
> Acked-by: Paul Zimmerman <paulz@synopsys.com>
> ---
> v5: dwc2.ko for all modes along with dwc2_platform.ko and dwc2_pci.ko will
> get built for kernel modules.
> 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 | 61 ++++++++++++++++++++++++++++-------------------
> drivers/usb/dwc2/Makefile | 32 ++++++++++++-------------
> 2 files changed, 53 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/usb/dwc2/Kconfig b/drivers/usb/dwc2/Kconfig
> index f93807b..1ea702e 100644
> --- a/drivers/usb/dwc2/Kconfig
> +++ b/drivers/usb/dwc2/Kconfig
> @@ -1,5 +1,5 @@
> config USB_DWC2
> - bool "DesignWare USB2 DRD Core Support"
> + tristate "DesignWare USB2 DRD Core Support"
> depends on USB
(Side note: drivers/usb/dwc2/Kconfig is sourced (in drivers/usb/Kconfig)
even if USB is _not_ set. But USB_DCW2 still depends on USB. Why is
that?)
> help
> Say Y here if your system has a Dual Role Hi-Speed USB
> @@ -10,31 +10,53 @@ config USB_DWC2
> 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.
> + dwc2_platform.ko. For all modes(host, gadget and dual-role), there
> + will be a single module called dwc2.ko.
>
> 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)
> +
Juggling kconfig tristate logic is still rather hard for me, but don't
the above three "if" rules all evaluate to non-zero if both USB and
USB_GADGET are 'm'? If that's correct perhaps USB_DWC2_DUAL_ROLE should
be the last default (assuming the last default wins, that is).
Besides, will the default USB_DWC2_PERIPHERAL ever trigger as !USB can't
be true at this point, can it?
> 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.
> + integrated into many SoCs. Select this option if you want the
> + driver to operate in Host-only mode.
> +
> +comment "Gadget/Dual-role mode requires USB Gadget support to be enabled"
> +
> +config USB_DWC2_PERIPHERAL
> + 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. 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
(I wonder how the dependencies of these three config entries interact
with the three defaults of this choice. Since we're dealing with three
options here this requires a piece of paper, a pencil, and clear mind to
figure out. Maybe I'll try that in a few days...)
> 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.
> + default y
You now have to default lines. Which one wins?
> + help
> + The Designware USB2.0 platform interface module for
> + controllers directly connected to the CPU.
>
> config USB_DWC2_PCI
> bool "DWC2 PCI"
> @@ -44,15 +66,6 @@ config USB_DWC2_PCI
> The Designware USB2.0 PCI interface module for controllers
> connected to a PCI bus. This is only used for host mode.
>
> -comment "Gadget mode requires USB Gadget support to be enabled"
> -
> -config USB_DWC2_PERIPHERAL
> - tristate "Gadget only mode"
> - depends on USB_GADGET
> - help
> - The Designware USB2.0 high-speed gadget controller
> - integrated into many SoCs.
> -
> config USB_DWC2_DEBUG
> bool "Enable Debugging Messages"
> help
> diff --git a/drivers/usb/dwc2/Makefile b/drivers/usb/dwc2/Makefile
> index b73d2a5..2175d93 100644
Paul Bolle
next prev parent reply other threads:[~2014-10-20 19:42 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-20 18:51 [PATCHv5 0/7] usb: dwc2: Add support for dual-role dinguyen
2014-10-20 18:52 ` [PATCHv5 1/7] usb: dwc2: Update the gadget driver to use common dwc2_hsotg structure dinguyen
2014-10-20 18:52 ` [PATCHv5 2/7] usb: dwc2: Move gadget probe function into platform code dinguyen
2014-10-22 11:16 ` Bartlomiej Zolnierkiewicz
2014-10-22 20:54 ` Paul Zimmerman
2014-10-23 19:08 ` Felipe Balbi
2014-10-20 18:52 ` [PATCHv5 3/7] usb: dwc2: Initialize the USB core for peripheral mode dinguyen
2014-10-20 18:52 ` [PATCHv5 4/7] usb: dwc2: Update common interrupt handler to call gadget interrupt handler dinguyen
2014-10-20 18:52 ` [PATCHv5 5/7] usb: dwc2: Add call_gadget functions for perpheral mode interrupts dinguyen
2014-10-20 18:52 ` [PATCHv5 6/7] usb: dwc2: gadget: Do not fail probe if there isn't a clock node dinguyen
2014-10-20 18:52 ` [PATCHv5 7/7] usb: dwc2: Update Kconfig to support dual-role dinguyen
2014-10-20 19:42 ` Paul Bolle [this message]
2014-10-21 20:47 ` Dinh Nguyen
2014-10-22 18:45 ` Paul Zimmerman
2014-10-22 20:27 ` Paul Bolle
2014-10-23 15:05 ` Dinh Nguyen
2014-10-23 17:10 ` Paul Bolle
2014-10-22 12:25 ` Bartlomiej Zolnierkiewicz
2014-10-22 12:29 ` Bartlomiej Zolnierkiewicz
2014-10-23 18:28 ` Paul Zimmerman
2014-10-23 18:26 ` Dinh Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1413834151.2010.19.camel@x41 \
--to=pebolle@tiscali.nl \
--cc=b.zolnierkie@samsung.com \
--cc=balbi@ti.com \
--cc=ben-linux@fluff.org \
--cc=dianders@chromium.org \
--cc=dinguyen@opensource.altera.com \
--cc=dinh.linux@gmail.com \
--cc=jg1.han@samsung.com \
--cc=kever.yang@rock-chips.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=matthijs@stdin.nl \
--cc=paulz@synopsys.com \
--cc=r.baldyga@samsung.com \
--cc=sachin.kamat@linaro.org \
--cc=swarren@wwwdotorg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox