linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
To: Marek Vasut <marex@denx.de>,
	Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>
Cc: Amelie Delaunay <amelie.delaunay@st.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Subject: Re: [PATCH] [RFC] usb: dwc2: Run the core connect in dwc2_hcd_init()
Date: Fri, 15 May 2020 07:41:45 +0000	[thread overview]
Message-ID: <4bfffaf9-fffd-57bc-6d45-ba43c46cd136@synopsys.com> (raw)
In-Reply-To: <d67d69a6-651f-f214-5119-bbbd68b4c2d5@denx.de>

Hi Marek,

On 5/14/2020 4:10 AM, Marek Vasut wrote:
> On 4/22/20 4:21 PM, Marek Vasut wrote:
>> On 4/22/20 3:45 PM, Minas Harutyunyan wrote:
>>> Hi,
>>
>> Hi,
>>
>>> On 4/20/2020 4:09 PM, Marek Vasut wrote:
>>>> On 4/17/20 11:00 AM, Minas Harutyunyan wrote:
>>>>> Hi,
>>>>
>>>> Hi,
>>>>
>>>>> On 4/16/2020 6:31 PM, Marek Vasut wrote:
>>>>>> On 4/16/20 3:37 PM, Minas Harutyunyan wrote:
>>>>>
>>> Looks like I found cause of issue. According to your logs GINTMSK set
>>> host masks, at least USB Reset not unmasked which required for device mode.
>>> Why it happen. During dwc2 driver probe first initialized device part
>>> then host part. Because of your g_zero is builtin in Kernel it
>>> immediately bound to dwc2, as result called main device initialization
>>> dwc2_hsotg_core_init_disconnected() which at least set GINTMSK for
>>> device mode. After gadget side initialization done, dwc2 go to host
>>> initialization hcd_init() and reset GINTMSK to host masks. In this case
>>> connecting cable to host will ignore USBReset and stacked. Your initial
>>> patch including call to function dwc2_hsotg_core_init_disconnected(),
>>> which allow to restore device mode masks and on cable connect start
>>> working as device.
>>> First to check my assumption, please build g_zero as module and modprobe
>>> it after dwc2 modprobe will be done. If the tests will pass then will
>>> think how resolve issue with builtin functions.
>>
>> Using g_zero as a module seems to work too, so please proceed.
> 
> Any news on using g_zero as built-in ?
> 
Could you please test with this patch.

diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index 12b98b466287..7faf5f8c056d 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -4920,12 +4920,6 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg)
  					  epnum, 0);
  	}

-	ret = usb_add_gadget_udc(dev, &hsotg->gadget);
-	if (ret) {
-		dwc2_hsotg_ep_free_request(&hsotg->eps_out[0]->ep,
-					   hsotg->ctrl_req);
-		return ret;
-	}
  	dwc2_hsotg_dump(hsotg);

  	return 0;
diff --git a/drivers/usb/dwc2/platform.c b/drivers/usb/dwc2/platform.c
index 8ea4a24637fa..603b85cd8ed3 100644
--- a/drivers/usb/dwc2/platform.c
+++ b/drivers/usb/dwc2/platform.c
@@ -537,6 +537,16 @@ static int dwc2_driver_probe(struct platform_device 
*dev)
  	if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL)
  		dwc2_lowlevel_hw_disable(hsotg);

+	/* Postponed adding a new gadget to the udc class driver list */
+	if (hsotg->gadget_enabled) {
+		retval = usb_add_gadget_udc(hsotg->dev, &hsotg->gadget);
+		if (retval) {
+			dwc2_hsotg_remove(hsotg);
+			goto error_init;
+		}
+
+	}
+
  	return 0;

  error_init:



Thanks,
Minas

  reply	other threads:[~2020-05-15  7:41 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-13 14:31 [PATCH] [RFC] usb: dwc2: Run the core connect in dwc2_hcd_init() Marek Vasut
2020-04-13 14:45 ` Minas Harutyunyan
2020-04-13 14:54   ` Marek Vasut
2020-04-13 15:27     ` Minas Harutyunyan
2020-04-13 17:00       ` Marek Vasut
2020-04-14  7:14         ` Minas Harutyunyan
2020-04-14 12:18           ` Marek Vasut
2020-04-15  8:37             ` Minas Harutyunyan
2020-04-15 14:55               ` Marek Vasut
2020-04-15 15:10                 ` Minas Harutyunyan
2020-04-16  9:46                   ` Marek Vasut
2020-04-16 13:37                     ` Minas Harutyunyan
2020-04-16 14:31                       ` Marek Vasut
2020-04-17  9:00                         ` Minas Harutyunyan
2020-04-20 12:09                           ` Marek Vasut
2020-04-22 13:45                             ` Minas Harutyunyan
2020-04-22 14:21                               ` Marek Vasut
2020-05-14  0:10                                 ` Marek Vasut
2020-05-15  7:41                                   ` Minas Harutyunyan [this message]
2020-05-27  6:17                                     ` Minas Harutyunyan
2020-05-28 22:35                                       ` Marek Vasut

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=4bfffaf9-fffd-57bc-6d45-ba43c46cd136@synopsys.com \
    --to=minas.harutyunyan@synopsys.com \
    --cc=amelie.delaunay@st.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=marex@denx.de \
    /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;
as well as URLs for NNTP newsgroup(s).