All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Patches to add dr_mode for dwc2
@ 2014-08-04 13:45 Kever Yang
  2014-08-04 13:45 ` [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode Kever Yang
  2014-08-04 13:45 ` [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting Kever Yang
  0 siblings, 2 replies; 14+ messages in thread
From: Kever Yang @ 2014-08-04 13:45 UTC (permalink / raw)
  To: Paul Zimmerman
  Cc: dianders, Heiko Stuebner, linux-arm-kernel, addy.ke, cf, xjq,
	olof, sonnyrao, wulf, lyz, jg1.han, hj, huangtao, Kever Yang,
	devicetree, Matt Porter, Paul Zimmerman, linux-usb, Kumar Gala,
	Stephen Warren, linux-kernel, Ian Campbell, Rob Herring,
	Pawel Moll, Greg Kroah-Hartman, Felipe Balbi, Mark Rutland

These two patches enable the dr_mode for the dwc2 usb
controller.  These are split from the patch series adding
rk3288 dwc2 support.

Changes in v3:
- fix the odd spacing in dwc2_hsotg struct
- From Jingoo's suggestion:
    change the commit message

Changes in v2:
- Split out dr_mode and rk3288 bindings.
- put spaces around '+' operator
- expand the comment for dr_mode
- handle dr_mode is USB_DR_MODE_OTG

Kever Yang (2):
  Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
  usb: dwc2: add 'mode' which based on Kconfig select or dts setting

 Documentation/devicetree/bindings/usb/dwc2.txt |  2 ++
 drivers/usb/dwc2/core.c                        | 18 ++++++++++++++++++
 drivers/usb/dwc2/core.h                        |  5 +++++
 drivers/usb/dwc2/platform.c                    | 12 ++++++++++++
 4 files changed, 37 insertions(+)

-- 
1.9.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
  2014-08-04 13:45 [PATCH v3 0/2] Patches to add dr_mode for dwc2 Kever Yang
@ 2014-08-04 13:45 ` Kever Yang
  2014-08-04 16:20     ` Doug Anderson
       [not found]   ` <1407159942-7063-2-git-send-email-kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
  2014-08-04 13:45 ` [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting Kever Yang
  1 sibling, 2 replies; 14+ messages in thread
From: Kever Yang @ 2014-08-04 13:45 UTC (permalink / raw)
  To: Paul Zimmerman
  Cc: dianders, Heiko Stuebner, linux-arm-kernel, addy.ke, cf, xjq,
	olof, sonnyrao, wulf, lyz, jg1.han, hj, huangtao, Kever Yang,
	Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Greg Kroah-Hartman, Matt Porter, Paul Zimmerman, Felipe Balbi,
	Stephen Warren, devicetree, linux-kernel

Indicate that the generic dr_mode binding should be used for dwc2.

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
---

Changes in v3: None
Changes in v2:
- Split out dr_mode and rk3288 bindings.

 Documentation/devicetree/bindings/usb/dwc2.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/dwc2.txt b/Documentation/devicetree/bindings/usb/dwc2.txt
index 467ddd1..3cf92b6 100644
--- a/Documentation/devicetree/bindings/usb/dwc2.txt
+++ b/Documentation/devicetree/bindings/usb/dwc2.txt
@@ -15,6 +15,8 @@ Optional properties:
 - phys: phy provider specifier
 - phy-names: shall be "usb2-phy"
 Refer to phy/phy-bindings.txt for generic phy consumer properties
+- dr_mode: shall be one of "host", "peripheral" and "otg"
+  Refer to usb/generic.txt
 
 Example:
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting
  2014-08-04 13:45 [PATCH v3 0/2] Patches to add dr_mode for dwc2 Kever Yang
  2014-08-04 13:45 ` [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode Kever Yang
@ 2014-08-04 13:45 ` Kever Yang
  2014-08-04 16:34   ` Doug Anderson
  1 sibling, 1 reply; 14+ messages in thread
From: Kever Yang @ 2014-08-04 13:45 UTC (permalink / raw)
  To: Paul Zimmerman
  Cc: dianders, Heiko Stuebner, linux-arm-kernel, addy.ke, cf, xjq,
	olof, sonnyrao, wulf, lyz, jg1.han, hj, huangtao, Kever Yang,
	Greg Kroah-Hartman, linux-usb, linux-kernel

According to the "dr_mode", the otg controller can work as
device role during firmware period, and work as host role in
the kernel, without use of usb_id pin. As the commit "usb: dwc3:
set 'mode' based on selected Kconfig choices".

Signed-off-by: Kever Yang <kever.yang@rock-chips.com>

---

Changes in v3:
- fix the odd spacing in dwc2_hsotg struct
- From Jingoo's suggestion:
    change the commit message

Changes in v2:
- put spaces around '+' operator
- expand the comment for dr_mode
- handle dr_mode is USB_DR_MODE_OTG

 drivers/usb/dwc2/core.c     | 18 ++++++++++++++++++
 drivers/usb/dwc2/core.h     |  5 +++++
 drivers/usb/dwc2/platform.c | 12 ++++++++++++
 3 files changed, 35 insertions(+)

diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
index 27d2c9b..738bec2 100644
--- a/drivers/usb/dwc2/core.c
+++ b/drivers/usb/dwc2/core.c
@@ -118,6 +118,7 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
 {
 	u32 greset;
 	int count = 0;
+	u32 gusbcfg;
 
 	dev_vdbg(hsotg->dev, "%s()\n", __func__);
 
@@ -148,6 +149,23 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
 		}
 	} while (greset & GRSTCTL_CSFTRST);
 
+	if (hsotg->dr_mode == USB_DR_MODE_HOST) {
+		gusbcfg = readl(hsotg->regs + GUSBCFG);
+		gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
+		gusbcfg |= GUSBCFG_FORCEHOSTMODE;
+		writel(gusbcfg, hsotg->regs + GUSBCFG);
+	} else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) {
+		gusbcfg = readl(hsotg->regs + GUSBCFG);
+		gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
+		gusbcfg |= GUSBCFG_FORCEDEVMODE;
+		writel(gusbcfg, hsotg->regs + GUSBCFG);
+	} else if (hsotg->dr_mode == USB_DR_MODE_OTG) {
+		gusbcfg = readl(hsotg->regs + GUSBCFG);
+		gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
+		gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
+		writel(gusbcfg, hsotg->regs + GUSBCFG);
+	}
+
 	/*
 	 * NOTE: This long sleep is _very_ important, otherwise the core will
 	 * not stay in host mode after a connector ID change!
diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
index 1efd10c..52a4fd2 100644
--- a/drivers/usb/dwc2/core.h
+++ b/drivers/usb/dwc2/core.h
@@ -501,6 +501,10 @@ struct dwc2_hw_params {
  *                      a_peripheral and b_device=>b_host) this may not match
  *                      the core, but allows the software to determine
  *                      transitions
+ * @dr_mode:            Requested mode of operation, one of following:
+ *                      - USB_DR_MODE_PERIPHERAL
+ *                      - USB_DR_MODE_HOST
+ *                      - USB_DR_MODE_OTG
  * @queuing_high_bandwidth: True if multiple packets of a high-bandwidth
  *                      transfer are in process of being queued
  * @srp_success:        Stores status of SRP request in the case of a FS PHY
@@ -592,6 +596,7 @@ struct dwc2_hsotg {
 	/** Params to actually use */
 	struct dwc2_core_params *core_params;
 	enum usb_otg_state op_state;
+	enum usb_dr_mode dr_mode;
 
 	unsigned int queuing_high_bandwidth:1;
 	unsigned int srp_success:1;
diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index a10e7a3..4d2c738 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -42,6 +42,8 @@
 #include <linux/of_device.h>
 #include <linux/platform_device.h>
 
+#include <linux/usb/of.h>
+
 #include "core.h"
 #include "hcd.h"
 
@@ -171,6 +173,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
 	dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
 		(unsigned long)res->start, hsotg->regs);
 
+	hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node);
+
+	if (IS_ENABLED(CONFIG_USB_DWC2_HOST))
+		hsotg->dr_mode = USB_DR_MODE_HOST;
+	else if (IS_ENABLED(CONFIG_USB_DWC2_GADGET))
+		hsotg->dr_mode = USB_DR_MODE_PERIPHERAL;
+
+	if (hsotg->dr_mode == USB_DR_MODE_UNKNOWN)
+		hsotg->dr_mode = USB_DR_MODE_OTG;
+
 	retval = dwc2_hcd_init(hsotg, irq, params);
 	if (retval)
 		return retval;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
  2014-08-04 13:45 ` [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode Kever Yang
@ 2014-08-04 16:20     ` Doug Anderson
       [not found]   ` <1407159942-7063-2-git-send-email-kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
  1 sibling, 0 replies; 14+ messages in thread
From: Doug Anderson @ 2014-08-04 16:20 UTC (permalink / raw)
  To: Kever Yang
  Cc: Paul Zimmerman, Heiko Stuebner, linux-arm-kernel, Addy Ke,
	Eddie Cai, Jianqun Xu, Olof Johansson, Sonny Rao, wulf, lyz,
	Jingoo Han, han jiang, Tao Huang, Rob Herring, Pawel Moll,
	Mark Rutland, Ian Campbell, Kumar Gala, Greg Kroah-Hartman,
	Matt Porter, Paul Zimmerman, Felipe Balbi, Stephen Warren,
	devicetree, linux-kernel

Kever,

On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com> wrote:
> Indicate that the generic dr_mode binding should be used for dwc2.
>
> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> ---
>
> Changes in v3: None

Since I gave my Reviewed-by tag for v2 and you made no changes from v2
to v3, you should make sure you include my Reviewed-by tag in the new
version.

Reviewed-by: Doug Anderson <dianders@chromium.org>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
@ 2014-08-04 16:20     ` Doug Anderson
  0 siblings, 0 replies; 14+ messages in thread
From: Doug Anderson @ 2014-08-04 16:20 UTC (permalink / raw)
  To: Kever Yang
  Cc: Paul Zimmerman, Heiko Stuebner, linux-arm-kernel, Addy Ke,
	Eddie Cai, Jianqun Xu, Olof Johansson, Sonny Rao, wulf, lyz,
	Jingoo Han, han jiang, Tao Huang, Rob Herring, Pawel Moll,
	Mark Rutland, Ian Campbell, Kumar Gala, Greg Kroah-Hartman,
	Matt Porter, Paul Zimmerman, Felipe Balbi, Stephen Warren,
	devicetree

Kever,

On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com> wrote:
> Indicate that the generic dr_mode binding should be used for dwc2.
>
> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> ---
>
> Changes in v3: None

Since I gave my Reviewed-by tag for v2 and you made no changes from v2
to v3, you should make sure you include my Reviewed-by tag in the new
version.

Reviewed-by: Doug Anderson <dianders@chromium.org>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting
  2014-08-04 13:45 ` [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting Kever Yang
@ 2014-08-04 16:34   ` Doug Anderson
  2014-08-05  1:45     ` Kever Yang
  0 siblings, 1 reply; 14+ messages in thread
From: Doug Anderson @ 2014-08-04 16:34 UTC (permalink / raw)
  To: Kever Yang
  Cc: Paul Zimmerman, Heiko Stuebner, linux-arm-kernel, Addy Ke,
	Eddie Cai, Jianqun Xu, Olof Johansson, Sonny Rao, wulf, lyz,
	Jingoo Han, han jiang, Tao Huang, Greg Kroah-Hartman, linux-usb,
	linux-kernel

Kever,

On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com> wrote:
> According to the "dr_mode", the otg controller can work as
> device role during firmware period, and work as host role in
> the kernel, without use of usb_id pin. As the commit "usb: dwc3:
> set 'mode' based on selected Kconfig choices".

I don't think you need to mention firmware / kernel here.  Just say
that on some boards we always want to use host mode and on other
boards we want to use gadget mode.  ...and that we don't necessarily
have the ID pin hooked up to make this automatic.


> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>

Normally I'd say that you should have added Paul's "Acked-by" since
you fixed his nit and he told you to include his Acked-by when his nit
was fixed, but...


> ---
>
> Changes in v3:
> - fix the odd spacing in dwc2_hsotg struct
> - From Jingoo's suggestion:
>     change the commit message

You did more than just this.  You also added some (incorrect) Kconfig
things.  See below.


> Changes in v2:
> - put spaces around '+' operator
> - expand the comment for dr_mode
> - handle dr_mode is USB_DR_MODE_OTG
>
>  drivers/usb/dwc2/core.c     | 18 ++++++++++++++++++
>  drivers/usb/dwc2/core.h     |  5 +++++
>  drivers/usb/dwc2/platform.c | 12 ++++++++++++
>  3 files changed, 35 insertions(+)
>
> diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
> index 27d2c9b..738bec2 100644
> --- a/drivers/usb/dwc2/core.c
> +++ b/drivers/usb/dwc2/core.c
> @@ -118,6 +118,7 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>  {
>         u32 greset;
>         int count = 0;
> +       u32 gusbcfg;
>
>         dev_vdbg(hsotg->dev, "%s()\n", __func__);
>
> @@ -148,6 +149,23 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>                 }
>         } while (greset & GRSTCTL_CSFTRST);
>
> +       if (hsotg->dr_mode == USB_DR_MODE_HOST) {
> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
> +               gusbcfg |= GUSBCFG_FORCEHOSTMODE;
> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
> +       } else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) {
> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
> +               gusbcfg |= GUSBCFG_FORCEDEVMODE;
> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
> +       } else if (hsotg->dr_mode == USB_DR_MODE_OTG) {
> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
> +       }
> +
>         /*
>          * NOTE: This long sleep is _very_ important, otherwise the core will
>          * not stay in host mode after a connector ID change!
> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> index 1efd10c..52a4fd2 100644
> --- a/drivers/usb/dwc2/core.h
> +++ b/drivers/usb/dwc2/core.h
> @@ -501,6 +501,10 @@ struct dwc2_hw_params {
>   *                      a_peripheral and b_device=>b_host) this may not match
>   *                      the core, but allows the software to determine
>   *                      transitions
> + * @dr_mode:            Requested mode of operation, one of following:
> + *                      - USB_DR_MODE_PERIPHERAL
> + *                      - USB_DR_MODE_HOST
> + *                      - USB_DR_MODE_OTG
>   * @queuing_high_bandwidth: True if multiple packets of a high-bandwidth
>   *                      transfer are in process of being queued
>   * @srp_success:        Stores status of SRP request in the case of a FS PHY
> @@ -592,6 +596,7 @@ struct dwc2_hsotg {
>         /** Params to actually use */
>         struct dwc2_core_params *core_params;
>         enum usb_otg_state op_state;
> +       enum usb_dr_mode dr_mode;
>
>         unsigned int queuing_high_bandwidth:1;
>         unsigned int srp_success:1;
> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
> index a10e7a3..4d2c738 100644
> --- a/drivers/usb/dwc2/platform.c
> +++ b/drivers/usb/dwc2/platform.c
> @@ -42,6 +42,8 @@
>  #include <linux/of_device.h>
>  #include <linux/platform_device.h>
>
> +#include <linux/usb/of.h>
> +
>  #include "core.h"
>  #include "hcd.h"
>
> @@ -171,6 +173,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
>         dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
>                 (unsigned long)res->start, hsotg->regs);
>
> +       hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node);
> +
> +       if (IS_ENABLED(CONFIG_USB_DWC2_HOST))
> +               hsotg->dr_mode = USB_DR_MODE_HOST;
> +       else if (IS_ENABLED(CONFIG_USB_DWC2_GADGET))
> +               hsotg->dr_mode = USB_DR_MODE_PERIPHERAL;
> +
> +       if (hsotg->dr_mode == USB_DR_MODE_UNKNOWN)
> +               hsotg->dr_mode = USB_DR_MODE_OTG;
> +

Please remove this whole chunk.  Specifically:

* CONFIG_USB_DWC2_GADGET is not a config option and is nowhere in any
KConfig files.

* CONFIG_USB_DWC2_HOST claims in Kconfig that we'll be in "host only"
mode, but I don't think that's right.  The only way you'll get any
host functionality is if CONFIG_USB_DWC2_HOST is defined, so we'd need
that defined even for OTG mode.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting
  2014-08-04 16:34   ` Doug Anderson
@ 2014-08-05  1:45     ` Kever Yang
  2014-08-05  3:55       ` Doug Anderson
  2014-08-05 20:08       ` Paul Zimmerman
  0 siblings, 2 replies; 14+ messages in thread
From: Kever Yang @ 2014-08-05  1:45 UTC (permalink / raw)
  To: Doug Anderson
  Cc: Paul Zimmerman, Heiko Stuebner, Addy Ke, Eddie Cai, Jianqun Xu,
	Olof Johansson, Sonny Rao, wulf, lyz, Jingoo Han, han jiang,
	Tao Huang, Greg Kroah-Hartman, linux-usb, linux-kernel

Doug,

On 08/05/2014 12:34 AM, Doug Anderson wrote:
> Kever,
>
> On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com> wrote:
>> According to the "dr_mode", the otg controller can work as
>> device role during firmware period, and work as host role in
>> the kernel, without use of usb_id pin. As the commit "usb: dwc3:
>> set 'mode' based on selected Kconfig choices".
> I don't think you need to mention firmware / kernel here.  Just say
> that on some boards we always want to use host mode and on other
> boards we want to use gadget mode.  ...and that we don't necessarily
> have the ID pin hooked up to make this automatic.
OK, I'll change this message again, I just don't know how to describe
to make everyone understand what I'm doing.
>
>
>> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> Normally I'd say that you should have added Paul's "Acked-by" since
> you fixed his nit and he told you to include his Acked-by when his nit
> was fixed, but...
There are some more changes than Paul's suggestion, so I'm not sure
if Paul need more review to give me the "Acked-by", I get it now.
>
>
>> ---
>>
>> Changes in v3:
>> - fix the odd spacing in dwc2_hsotg struct
>> - From Jingoo's suggestion:
>>      change the commit message
> You did more than just this.  You also added some (incorrect) Kconfig
> things.  See below.
>
>
>> Changes in v2:
>> - put spaces around '+' operator
>> - expand the comment for dr_mode
>> - handle dr_mode is USB_DR_MODE_OTG
>>
>>   drivers/usb/dwc2/core.c     | 18 ++++++++++++++++++
>>   drivers/usb/dwc2/core.h     |  5 +++++
>>   drivers/usb/dwc2/platform.c | 12 ++++++++++++
>>   3 files changed, 35 insertions(+)
>>
>> diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
>> index 27d2c9b..738bec2 100644
>> --- a/drivers/usb/dwc2/core.c
>> +++ b/drivers/usb/dwc2/core.c
>> @@ -118,6 +118,7 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>>   {
>>          u32 greset;
>>          int count = 0;
>> +       u32 gusbcfg;
>>
>>          dev_vdbg(hsotg->dev, "%s()\n", __func__);
>>
>> @@ -148,6 +149,23 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>>                  }
>>          } while (greset & GRSTCTL_CSFTRST);
>>
>> +       if (hsotg->dr_mode == USB_DR_MODE_HOST) {
>> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
>> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
>> +               gusbcfg |= GUSBCFG_FORCEHOSTMODE;
>> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
>> +       } else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) {
>> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
>> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>> +               gusbcfg |= GUSBCFG_FORCEDEVMODE;
>> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
>> +       } else if (hsotg->dr_mode == USB_DR_MODE_OTG) {
>> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
>> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
>> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
>> +       }
>> +
>>          /*
>>           * NOTE: This long sleep is _very_ important, otherwise the core will
>>           * not stay in host mode after a connector ID change!
>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
>> index 1efd10c..52a4fd2 100644
>> --- a/drivers/usb/dwc2/core.h
>> +++ b/drivers/usb/dwc2/core.h
>> @@ -501,6 +501,10 @@ struct dwc2_hw_params {
>>    *                      a_peripheral and b_device=>b_host) this may not match
>>    *                      the core, but allows the software to determine
>>    *                      transitions
>> + * @dr_mode:            Requested mode of operation, one of following:
>> + *                      - USB_DR_MODE_PERIPHERAL
>> + *                      - USB_DR_MODE_HOST
>> + *                      - USB_DR_MODE_OTG
>>    * @queuing_high_bandwidth: True if multiple packets of a high-bandwidth
>>    *                      transfer are in process of being queued
>>    * @srp_success:        Stores status of SRP request in the case of a FS PHY
>> @@ -592,6 +596,7 @@ struct dwc2_hsotg {
>>          /** Params to actually use */
>>          struct dwc2_core_params *core_params;
>>          enum usb_otg_state op_state;
>> +       enum usb_dr_mode dr_mode;
>>
>>          unsigned int queuing_high_bandwidth:1;
>>          unsigned int srp_success:1;
>> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
>> index a10e7a3..4d2c738 100644
>> --- a/drivers/usb/dwc2/platform.c
>> +++ b/drivers/usb/dwc2/platform.c
>> @@ -42,6 +42,8 @@
>>   #include <linux/of_device.h>
>>   #include <linux/platform_device.h>
>>
>> +#include <linux/usb/of.h>
>> +
>>   #include "core.h"
>>   #include "hcd.h"
>>
>> @@ -171,6 +173,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
>>          dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
>>                  (unsigned long)res->start, hsotg->regs);
>>
>> +       hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node);
>> +
>> +       if (IS_ENABLED(CONFIG_USB_DWC2_HOST))
>> +               hsotg->dr_mode = USB_DR_MODE_HOST;
>> +       else if (IS_ENABLED(CONFIG_USB_DWC2_GADGET))
>> +               hsotg->dr_mode = USB_DR_MODE_PERIPHERAL;
>> +
>> +       if (hsotg->dr_mode == USB_DR_MODE_UNKNOWN)
>> +               hsotg->dr_mode = USB_DR_MODE_OTG;
>> +
> Please remove this whole chunk.  Specifically:
>
> * CONFIG_USB_DWC2_GADGET is not a config option and is nowhere in any
> KConfig files.
This should be USB_DWC2_PERIPHERAL, and I just copy it wrong from dwc3.
>
> * CONFIG_USB_DWC2_HOST claims in Kconfig that we'll be in "host only"
> mode, but I don't think that's right.  The only way you'll get any
> host functionality is if CONFIG_USB_DWC2_HOST is defined, so we'd need
> that defined even for OTG mode.
Yeap, I add the chunk above because I'm confused by "Host only mode" for
CONFIG_USB_DWC2_HOST in Kconfig. If it's the "Host only mode", I should
add the dr_mode for it to make sure the controller works in host mode.

Maybe dwc2 is refer to the Kconfig in dwc3 for there is a choice from
one of "Host only mode", "Gadget only mode" and "Dual Role mode",
which means the role is decided by the Kconfig.

In my opinion, there maybe more than one controller in a Soc, and for 
different
usage, the mode select should not be done in Kconfig, it's better to do that
in dts file.
I agree with you that the CONFIG_USB_DWC2_HOST should defined for host
functionality, not for role definition.

Paul: what do you think?
>
>
>



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting
  2014-08-05  1:45     ` Kever Yang
@ 2014-08-05  3:55       ` Doug Anderson
  2014-08-05 20:08       ` Paul Zimmerman
  1 sibling, 0 replies; 14+ messages in thread
From: Doug Anderson @ 2014-08-05  3:55 UTC (permalink / raw)
  To: Kever Yang
  Cc: Paul Zimmerman, Heiko Stuebner, Addy Ke, Eddie Cai, Jianqun Xu,
	Olof Johansson, Sonny Rao, wulf, lyz, Jingoo Han, han jiang,
	Tao Huang, Greg Kroah-Hartman, linux-usb, linux-kernel

Kever,

On Mon, Aug 4, 2014 at 6:45 PM, Kever Yang <kever.yang@rock-chips.com> wrote:
> Doug,
>
>
> On 08/05/2014 12:34 AM, Doug Anderson wrote:
>>
>> Kever,
>>
>> On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com>
>> wrote:
>>>
>>> According to the "dr_mode", the otg controller can work as
>>> device role during firmware period, and work as host role in
>>> the kernel, without use of usb_id pin. As the commit "usb: dwc3:
>>> set 'mode' based on selected Kconfig choices".
>>
>> I don't think you need to mention firmware / kernel here.  Just say
>> that on some boards we always want to use host mode and on other
>> boards we want to use gadget mode.  ...and that we don't necessarily
>> have the ID pin hooked up to make this automatic.
>
> OK, I'll change this message again, I just don't know how to describe
> to make everyone understand what I'm doing.
>
>>
>>
>>> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
>>
>> Normally I'd say that you should have added Paul's "Acked-by" since
>> you fixed his nit and he told you to include his Acked-by when his nit
>> was fixed, but...
>
> There are some more changes than Paul's suggestion, so I'm not sure
> if Paul need more review to give me the "Acked-by", I get it now.
>
>>
>>
>>> ---
>>>
>>> Changes in v3:
>>> - fix the odd spacing in dwc2_hsotg struct
>>> - From Jingoo's suggestion:
>>>      change the commit message
>>
>> You did more than just this.  You also added some (incorrect) Kconfig
>> things.  See below.
>>
>>
>>> Changes in v2:
>>> - put spaces around '+' operator
>>> - expand the comment for dr_mode
>>> - handle dr_mode is USB_DR_MODE_OTG
>>>
>>>   drivers/usb/dwc2/core.c     | 18 ++++++++++++++++++
>>>   drivers/usb/dwc2/core.h     |  5 +++++
>>>   drivers/usb/dwc2/platform.c | 12 ++++++++++++
>>>   3 files changed, 35 insertions(+)
>>>
>>> diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
>>> index 27d2c9b..738bec2 100644
>>> --- a/drivers/usb/dwc2/core.c
>>> +++ b/drivers/usb/dwc2/core.c
>>> @@ -118,6 +118,7 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>>>   {
>>>          u32 greset;
>>>          int count = 0;
>>> +       u32 gusbcfg;
>>>
>>>          dev_vdbg(hsotg->dev, "%s()\n", __func__);
>>>
>>> @@ -148,6 +149,23 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
>>>                  }
>>>          } while (greset & GRSTCTL_CSFTRST);
>>>
>>> +       if (hsotg->dr_mode == USB_DR_MODE_HOST) {
>>> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
>>> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
>>> +               gusbcfg |= GUSBCFG_FORCEHOSTMODE;
>>> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
>>> +       } else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) {
>>> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
>>> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>>> +               gusbcfg |= GUSBCFG_FORCEDEVMODE;
>>> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
>>> +       } else if (hsotg->dr_mode == USB_DR_MODE_OTG) {
>>> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
>>> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
>>> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
>>> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
>>> +       }
>>> +
>>>          /*
>>>           * NOTE: This long sleep is _very_ important, otherwise the core
>>> will
>>>           * not stay in host mode after a connector ID change!
>>> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
>>> index 1efd10c..52a4fd2 100644
>>> --- a/drivers/usb/dwc2/core.h
>>> +++ b/drivers/usb/dwc2/core.h
>>> @@ -501,6 +501,10 @@ struct dwc2_hw_params {
>>>    *                      a_peripheral and b_device=>b_host) this may not
>>> match
>>>    *                      the core, but allows the software to determine
>>>    *                      transitions
>>> + * @dr_mode:            Requested mode of operation, one of following:
>>> + *                      - USB_DR_MODE_PERIPHERAL
>>> + *                      - USB_DR_MODE_HOST
>>> + *                      - USB_DR_MODE_OTG
>>>    * @queuing_high_bandwidth: True if multiple packets of a
>>> high-bandwidth
>>>    *                      transfer are in process of being queued
>>>    * @srp_success:        Stores status of SRP request in the case of a
>>> FS PHY
>>> @@ -592,6 +596,7 @@ struct dwc2_hsotg {
>>>          /** Params to actually use */
>>>          struct dwc2_core_params *core_params;
>>>          enum usb_otg_state op_state;
>>> +       enum usb_dr_mode dr_mode;
>>>
>>>          unsigned int queuing_high_bandwidth:1;
>>>          unsigned int srp_success:1;
>>> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
>>> index a10e7a3..4d2c738 100644
>>> --- a/drivers/usb/dwc2/platform.c
>>> +++ b/drivers/usb/dwc2/platform.c
>>> @@ -42,6 +42,8 @@
>>>   #include <linux/of_device.h>
>>>   #include <linux/platform_device.h>
>>>
>>> +#include <linux/usb/of.h>
>>> +
>>>   #include "core.h"
>>>   #include "hcd.h"
>>>
>>> @@ -171,6 +173,16 @@ static int dwc2_driver_probe(struct platform_device
>>> *dev)
>>>          dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
>>>                  (unsigned long)res->start, hsotg->regs);
>>>
>>> +       hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node);
>>> +
>>> +       if (IS_ENABLED(CONFIG_USB_DWC2_HOST))
>>> +               hsotg->dr_mode = USB_DR_MODE_HOST;
>>> +       else if (IS_ENABLED(CONFIG_USB_DWC2_GADGET))
>>> +               hsotg->dr_mode = USB_DR_MODE_PERIPHERAL;
>>> +
>>> +       if (hsotg->dr_mode == USB_DR_MODE_UNKNOWN)
>>> +               hsotg->dr_mode = USB_DR_MODE_OTG;
>>> +
>>
>> Please remove this whole chunk.  Specifically:
>>
>> * CONFIG_USB_DWC2_GADGET is not a config option and is nowhere in any
>> KConfig files.
>
> This should be USB_DWC2_PERIPHERAL, and I just copy it wrong from dwc3.

OK.  ...so if both are defined then how does your code handle it?  I'm
pretty sure both can be defined.


>> * CONFIG_USB_DWC2_HOST claims in Kconfig that we'll be in "host only"
>> mode, but I don't think that's right.  The only way you'll get any
>> host functionality is if CONFIG_USB_DWC2_HOST is defined, so we'd need
>> that defined even for OTG mode.
>
> Yeap, I add the chunk above because I'm confused by "Host only mode" for
> CONFIG_USB_DWC2_HOST in Kconfig. If it's the "Host only mode", I should
> add the dr_mode for it to make sure the controller works in host mode.
>
> Maybe dwc2 is refer to the Kconfig in dwc3 for there is a choice from
> one of "Host only mode", "Gadget only mode" and "Dual Role mode",
> which means the role is decided by the Kconfig.
>
> In my opinion, there maybe more than one controller in a Soc, and for
> different
> usage, the mode select should not be done in Kconfig, it's better to do that
> in dts file.
> I agree with you that the CONFIG_USB_DWC2_HOST should defined for host
> functionality, not for role definition.

Right.  In DWC3 you choose HOST, GADGET, or DUAL.  ...but in DWC2 it
appears that you can enable HOST and GADGET separately and if you
enable both you get dual mode.  That means that the wording in the
dwc2 Kconfig file is just wrong.  You could send up a patch to fix it.
;)

I think it would be fine to totally drop this chunk of code and add
Paul's Ack back in.  Then your patch can land.  You could code up two
separate patches if you want.

1. Add a new patch that fixes the wording in the KConfig

2. Add a new patch that says that if HOST is configured but not GADGET
then it behaves like dr_mode=host.  ...and if GADGET is configured but
not host it behaves like dr_mode=gadget.  Personally I don't think
this patch is really useful (a single device might have some gadget
ports and some host ports, or you might want a mutliplatform kernel),
but you could put it up there and see if others want it.

-Doug

^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting
  2014-08-05  1:45     ` Kever Yang
  2014-08-05  3:55       ` Doug Anderson
@ 2014-08-05 20:08       ` Paul Zimmerman
  2014-08-06 22:13         ` Doug Anderson
  1 sibling, 1 reply; 14+ messages in thread
From: Paul Zimmerman @ 2014-08-05 20:08 UTC (permalink / raw)
  To: Kever Yang, Doug Anderson
  Cc: Heiko Stuebner, Addy Ke, Eddie Cai, Jianqun Xu, Olof Johansson,
	Sonny Rao, wulf, lyz, Jingoo Han, han jiang, Tao Huang,
	Greg Kroah-Hartman, linux-usb, linux-kernel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="utf-8", Size: 6313 bytes --]

> From: Kever Yang [mailto:kever.yang@rock-chips.com]
> Sent: Monday, August 04, 2014 6:46 PM
> 
> On 08/05/2014 12:34 AM, Doug Anderson wrote:
> 
> > Normally I'd say that you should have added Paul's "Acked-by" since
> > you fixed his nit and he told you to include his Acked-by when his nit
> > was fixed, but...
> There are some more changes than Paul's suggestion, so I'm not sure
> if Paul need more review to give me the "Acked-by", I get it now.

Yes, you did the right thing by leaving off my ack (although you should
have mentioned the additional changes in your email).

> >> diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c
> >> index 27d2c9b..738bec2 100644
> >> --- a/drivers/usb/dwc2/core.c
> >> +++ b/drivers/usb/dwc2/core.c
> >> @@ -118,6 +118,7 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
> >>   {
> >>          u32 greset;
> >>          int count = 0;
> >> +       u32 gusbcfg;
> >>
> >>          dev_vdbg(hsotg->dev, "%s()\n", __func__);
> >>
> >> @@ -148,6 +149,23 @@ static int dwc2_core_reset(struct dwc2_hsotg *hsotg)
> >>                  }
> >>          } while (greset & GRSTCTL_CSFTRST);
> >>
> >> +       if (hsotg->dr_mode == USB_DR_MODE_HOST) {
> >> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
> >> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
> >> +               gusbcfg |= GUSBCFG_FORCEHOSTMODE;
> >> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
> >> +       } else if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) {
> >> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
> >> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
> >> +               gusbcfg |= GUSBCFG_FORCEDEVMODE;
> >> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
> >> +       } else if (hsotg->dr_mode == USB_DR_MODE_OTG) {
> >> +               gusbcfg = readl(hsotg->regs + GUSBCFG);
> >> +               gusbcfg &= ~GUSBCFG_FORCEHOSTMODE;
> >> +               gusbcfg &= ~GUSBCFG_FORCEDEVMODE;
> >> +               writel(gusbcfg, hsotg->regs + GUSBCFG);
> >> +       }
> >> +
> >>          /*
> >>           * NOTE: This long sleep is _very_ important, otherwise the core will
> >>           * not stay in host mode after a connector ID change!
> >> diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h
> >> index 1efd10c..52a4fd2 100644
> >> --- a/drivers/usb/dwc2/core.h
> >> +++ b/drivers/usb/dwc2/core.h
> >> @@ -501,6 +501,10 @@ struct dwc2_hw_params {
> >>    *                      a_peripheral and b_device=>b_host) this may not match
> >>    *                      the core, but allows the software to determine
> >>    *                      transitions
> >> + * @dr_mode:            Requested mode of operation, one of following:
> >> + *                      - USB_DR_MODE_PERIPHERAL
> >> + *                      - USB_DR_MODE_HOST
> >> + *                      - USB_DR_MODE_OTG
> >>    * @queuing_high_bandwidth: True if multiple packets of a high-bandwidth
> >>    *                      transfer are in process of being queued
> >>    * @srp_success:        Stores status of SRP request in the case of a FS PHY
> >> @@ -592,6 +596,7 @@ struct dwc2_hsotg {
> >>          /** Params to actually use */
> >>          struct dwc2_core_params *core_params;
> >>          enum usb_otg_state op_state;
> >> +       enum usb_dr_mode dr_mode;
> >>
> >>          unsigned int queuing_high_bandwidth:1;
> >>          unsigned int srp_success:1;
> >> diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
> >> index a10e7a3..4d2c738 100644
> >> --- a/drivers/usb/dwc2/platform.c
> >> +++ b/drivers/usb/dwc2/platform.c
> >> @@ -42,6 +42,8 @@
> >>   #include <linux/of_device.h>
> >>   #include <linux/platform_device.h>
> >>
> >> +#include <linux/usb/of.h>
> >> +
> >>   #include "core.h"
> >>   #include "hcd.h"
> >>
> >> @@ -171,6 +173,16 @@ static int dwc2_driver_probe(struct platform_device *dev)
> >>          dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
> >>                  (unsigned long)res->start, hsotg->regs);
> >>
> >> +       hsotg->dr_mode = of_usb_get_dr_mode(dev->dev.of_node);
> >> +
> >> +       if (IS_ENABLED(CONFIG_USB_DWC2_HOST))
> >> +               hsotg->dr_mode = USB_DR_MODE_HOST;
> >> +       else if (IS_ENABLED(CONFIG_USB_DWC2_GADGET))
> >> +               hsotg->dr_mode = USB_DR_MODE_PERIPHERAL;
> >> +
> >> +       if (hsotg->dr_mode == USB_DR_MODE_UNKNOWN)
> >> +               hsotg->dr_mode = USB_DR_MODE_OTG;
> >> +
> > Please remove this whole chunk.  Specifically:
> >
> > * CONFIG_USB_DWC2_GADGET is not a config option and is nowhere in any
> > KConfig files.
> This should be USB_DWC2_PERIPHERAL, and I just copy it wrong from dwc3.
> >
> > * CONFIG_USB_DWC2_HOST claims in Kconfig that we'll be in "host only"
> > mode, but I don't think that's right.  The only way you'll get any
> > host functionality is if CONFIG_USB_DWC2_HOST is defined, so we'd need
> > that defined even for OTG mode.
> Yeap, I add the chunk above because I'm confused by "Host only mode" for
> CONFIG_USB_DWC2_HOST in Kconfig. If it's the "Host only mode", I should
> add the dr_mode for it to make sure the controller works in host mode.
> 
> Maybe dwc2 is refer to the Kconfig in dwc3 for there is a choice from
> one of "Host only mode", "Gadget only mode" and "Dual Role mode",
> which means the role is decided by the Kconfig.
> 
> In my opinion, there maybe more than one controller in a Soc, and for
> different
> usage, the mode select should not be done in Kconfig, it's better to do that
> in dts file.
> I agree with you that the CONFIG_USB_DWC2_HOST should defined for host
> functionality, not for role definition.
> 
> Paul: what do you think?

I'm confused about how your dual-role mode implementation is supposed
to work. Right now, the host and peripheral modes are compiled as
separate drivers, and there is no dual-role mode in the Kconfig. So I
don't see how your code can work. Have you tested it?

Dinh Nguyen is working on a patch series to add dual-role support, I
think you have seen that, right? That adds the Kconfig options for all
three modes. Maybe you should build on top of that?

-- 
Paul

ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting
  2014-08-05 20:08       ` Paul Zimmerman
@ 2014-08-06 22:13         ` Doug Anderson
  0 siblings, 0 replies; 14+ messages in thread
From: Doug Anderson @ 2014-08-06 22:13 UTC (permalink / raw)
  To: Paul Zimmerman
  Cc: Kever Yang, Heiko Stuebner, Addy Ke, Eddie Cai, Jianqun Xu,
	Olof Johansson, Sonny Rao, wulf, lyz, Jingoo Han, han jiang,
	Tao Huang, Greg Kroah-Hartman, linux-usb, linux-kernel

Paul,

On Tue, Aug 5, 2014 at 1:08 PM, Paul Zimmerman
<Paul.Zimmerman@synopsys.com> wrote:
>> Maybe dwc2 is refer to the Kconfig in dwc3 for there is a choice from
>> one of "Host only mode", "Gadget only mode" and "Dual Role mode",
>> which means the role is decided by the Kconfig.
>>
>> In my opinion, there maybe more than one controller in a Soc, and for
>> different
>> usage, the mode select should not be done in Kconfig, it's better to do that
>> in dts file.
>> I agree with you that the CONFIG_USB_DWC2_HOST should defined for host
>> functionality, not for role definition.
>>
>> Paul: what do you think?
>
> I'm confused about how your dual-role mode implementation is supposed
> to work. Right now, the host and peripheral modes are compiled as
> separate drivers, and there is no dual-role mode in the Kconfig. So I
> don't see how your code can work. Have you tested it?

Ah, interesting.  I just assumed that since you could compile both in
that dual mode was there, but I clearly was confused.

I don't think Kever had tested dual_role mode.


> Dinh Nguyen is working on a patch series to add dual-role support, I
> think you have seen that, right? That adds the Kconfig options for all
> three modes. Maybe you should build on top of that?

I hadn't personally seen it, but now I have!  I guess this is the
newest <https://www.mail-archive.com/linux-usb@vger.kernel.org/msg46103.html>.

I haven't done a thorough review, but I think Kever's patch v4
<https://patchwork.kernel.org/patch/4682711/> is still relevant since
I don't see anything parsing the dr_mode in Dinh's patches.

-Doug

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
  2014-08-04 13:45 ` [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode Kever Yang
@ 2014-09-08 18:50       ` Doug Anderson
       [not found]   ` <1407159942-7063-2-git-send-email-kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
  1 sibling, 0 replies; 14+ messages in thread
From: Doug Anderson @ 2014-09-08 18:50 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Paul Zimmerman, Heiko Stuebner,
	linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA, Addy Ke, Eddie Cai,
	Jianqun Xu, Olof Johansson, Sonny Rao, wulf, lyz, Jingoo Han,
	han jiang, Tao Huang, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Matt Porter, Paul Zimmerman,
	Felipe Balbi, Stephen Warren, devicetree-u79uwXL29TY76Z2rM5mHXA,
	Kever Yang

Greg,

On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote:
> Indicate that the generic dr_mode binding should be used for dwc2.
>
> Signed-off-by: Kever Yang <kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
> ---
>
> Changes in v3: None
> Changes in v2:
> - Split out dr_mode and rk3288 bindings.
>
>  Documentation/devicetree/bindings/usb/dwc2.txt | 2 ++
>  1 file changed, 2 insertions(+)

Are there any other changes you'd like for this patch (and the next
one that goes with it) before landing?

Thanks!

-Doug
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
@ 2014-09-08 18:50       ` Doug Anderson
  0 siblings, 0 replies; 14+ messages in thread
From: Doug Anderson @ 2014-09-08 18:50 UTC (permalink / raw)
  To: linux-arm-kernel

Greg,

On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com> wrote:
> Indicate that the generic dr_mode binding should be used for dwc2.
>
> Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> ---
>
> Changes in v3: None
> Changes in v2:
> - Split out dr_mode and rk3288 bindings.
>
>  Documentation/devicetree/bindings/usb/dwc2.txt | 2 ++
>  1 file changed, 2 insertions(+)

Are there any other changes you'd like for this patch (and the next
one that goes with it) before landing?

Thanks!

-Doug

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
  2014-09-08 18:50       ` Doug Anderson
@ 2014-09-08 21:31           ` Greg Kroah-Hartman
  -1 siblings, 0 replies; 14+ messages in thread
From: Greg Kroah-Hartman @ 2014-09-08 21:31 UTC (permalink / raw)
  To: Doug Anderson
  Cc: Paul Zimmerman, Heiko Stuebner,
	linux-arm-kernel-u79uwXL29TY76Z2rM5mHXA, Addy Ke, Eddie Cai,
	Jianqun Xu, Olof Johansson, Sonny Rao, wulf, lyz, Jingoo Han,
	han jiang, Tao Huang, Rob Herring, Pawel Moll, Mark Rutland,
	Ian Campbell, Kumar Gala, Matt Porter, Paul Zimmerman,
	Felipe Balbi, Stephen Warren, devicetree-u79uwXL29TY76Z2rM5mHXA,
	Kever Yang

On Mon, Sep 08, 2014 at 11:50:25AM -0700, Doug Anderson wrote:
> Greg,
> 
> On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org> wrote:
> > Indicate that the generic dr_mode binding should be used for dwc2.
> >
> > Signed-off-by: Kever Yang <kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
> > ---
> >
> > Changes in v3: None
> > Changes in v2:
> > - Split out dr_mode and rk3288 bindings.
> >
> >  Documentation/devicetree/bindings/usb/dwc2.txt | 2 ++
> >  1 file changed, 2 insertions(+)
> 
> Are there any other changes you'd like for this patch (and the next
> one that goes with it) before landing?

No idea, please resend.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode
@ 2014-09-08 21:31           ` Greg Kroah-Hartman
  0 siblings, 0 replies; 14+ messages in thread
From: Greg Kroah-Hartman @ 2014-09-08 21:31 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Sep 08, 2014 at 11:50:25AM -0700, Doug Anderson wrote:
> Greg,
> 
> On Mon, Aug 4, 2014 at 6:45 AM, Kever Yang <kever.yang@rock-chips.com> wrote:
> > Indicate that the generic dr_mode binding should be used for dwc2.
> >
> > Signed-off-by: Kever Yang <kever.yang@rock-chips.com>
> > ---
> >
> > Changes in v3: None
> > Changes in v2:
> > - Split out dr_mode and rk3288 bindings.
> >
> >  Documentation/devicetree/bindings/usb/dwc2.txt | 2 ++
> >  1 file changed, 2 insertions(+)
> 
> Are there any other changes you'd like for this patch (and the next
> one that goes with it) before landing?

No idea, please resend.

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2014-09-08 21:31 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-04 13:45 [PATCH v3 0/2] Patches to add dr_mode for dwc2 Kever Yang
2014-08-04 13:45 ` [PATCH v3 1/2] Documentation: dt-bindings: add dt binding info for dwc2 dr_mode Kever Yang
2014-08-04 16:20   ` Doug Anderson
2014-08-04 16:20     ` Doug Anderson
     [not found]   ` <1407159942-7063-2-git-send-email-kever.yang-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2014-09-08 18:50     ` Doug Anderson
2014-09-08 18:50       ` Doug Anderson
     [not found]       ` <CAD=FV=WDv9Pxe+jSqsfARPvjxMWPfcVpPMk1wHCgOO8ePiCh3g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-09-08 21:31         ` Greg Kroah-Hartman
2014-09-08 21:31           ` Greg Kroah-Hartman
2014-08-04 13:45 ` [PATCH v3 2/2] usb: dwc2: add 'mode' which based on Kconfig select or dts setting Kever Yang
2014-08-04 16:34   ` Doug Anderson
2014-08-05  1:45     ` Kever Yang
2014-08-05  3:55       ` Doug Anderson
2014-08-05 20:08       ` Paul Zimmerman
2014-08-06 22:13         ` Doug Anderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.