linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bin Liu <b-liu@ti.com>
To: Jack Pham <jackp@codeaurora.org>
Cc: <linux-usb@vger.kernel.org>, Felipe Balbi <balbi@kernel.org>
Subject: Re: configfs on dwc3: msc enum failed if three functions defined
Date: Tue, 2 Jul 2019 12:50:13 -0500	[thread overview]
Message-ID: <20190702175013.GB2724@uda0271908> (raw)
In-Reply-To: <20190702165122.GA15112@jackp-linux.qualcomm.com>

On Tue, Jul 02, 2019 at 09:51:22AM -0700, Jack Pham wrote:
> Hi Bin,
> 
> On Tue, Jul 02, 2019 at 09:48:42AM -0500, Bin Liu wrote:
> > Hi,
> > 
> > Sorry for the delay getting back on this. I was offline for quite some
> > time.
> > 
> > On Thu, Apr 25, 2019 at 03:44:57PM -0700, Jack Pham wrote:
> > > Hi Bin,
> > > 
> > > On Mon, Apr 22, 2019 at 08:43:57AM -0500, Bin Liu wrote:
> > > > Hi Felipe,
> > > > 
> > > > I am having an issue with dwc3 on TI AM57x device, and would like to ask
> > > > for your comments.
> > > > 
> > > > I use configfs to create a multi-function gadget on dwc3, mass_storage
> > > > is the last function, it seems if I create 3 functions, the mass_storage
> > > > enumeration will fail on the host. It works fine if only create 2
> > > > functions.
> > > > 
> > > > The dwc3 tracepoints log shows after all the ep0 transfers for
> > > > mass_storage, the very first epXin transfer is not complete - dwc3
> > > > programmed the urb, but never generates RX completion event. This also
> > > > matches the bus analyzer trace - dwc3 NAKs the very first IN token for
> > > > ever.
> > > > 
> > > > I use the attached script to create the gadget, The macro FUNCS in the
> > > > beginning of the script defines the functions to be created.
> > > > 
> > > > Any comments are appreciated.
> > > 
> > > A stab in the dark here but what is the value of GTXFIFOSIZ(X)[15:0]
> > > for epXin on your device? Is it at least wMaxPacketSize? Depending on
> > > the default hardware values it might be deficient as compared to the
> > > working endpoint that gets assigned in your 2-function config.
> > 
> > Jack,
> > 
> > thanks for the pointer, it is indeed the issue on AM57x device.  The
> > reset value of GTXFIFOSIZ for ep1~4 have size of 0x184, but ep5~15 have
> > only size of 0x13 (which is 120 bytes), which is not enough for
> > high-speed bulk xfers. I manually adjusted the fifo memory allocation,
> > now my test case works.
> 
> Cool! I'm glad my suggestion was on the right track.
>  
> > Felipe,
> > 
> > Is there anything the dwc3 gadget driver can do to better handle this
> > kind of devices, which don't have enough fifo buffers for all TX eps?
> 
> A long time ago...
> 
> commit bc5081617faeb3b2f0c126dc37264b87af7da47f
> Author: Felipe Balbi <felipe.balbi@linux.intel.com>
> Date:   Thu Feb 4 14:18:01 2016 +0200
> 
>     usb: dwc3: drop FIFO resizing logic
> 
>     That FIFO resizing logic was added to support OMAP5
>     ES1.0 which had a bogus default FIFO size. I can't
>     remember the exact size of default FIFO, but it was
>     less than one bulk superspeed packet (<1024) which
>     would prevent USB3 from ever working on OMAP5 ES1.0.
> 
>     However, OMAP5 ES1.0 support has been dropped by
>     commit aa2f4b16f830 ("ARM: OMAP5: id: Remove ES1.0
>     support") which renders FIFO resizing unnecessary.
> 
>     Tested-by: Kishon Vijay Abraham I <kishon@ti.com>
>     Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
> 
> Prior to this there was a function dwc3_gadget_resize_tx_fifo(),
> enabled via DT flag, which enumerated all the endpoints and
> recalculated the TX FIFO sizes based on the transfer type of the
> EPs' configuration.
> 
> Unfortunately some Qualcomm SoCs are still plagued by having
> insufficient defaults, so we resort to carrying this function on our
> downstream kernels. It seems TI AM57x still has this problem too?

Yes, it appears to be the case.

-Bin.

  reply	other threads:[~2019-07-02 17:50 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-22 13:43 configfs on dwc3: msc enum failed if three functions defined Bin Liu
2019-04-25 22:44 ` Jack Pham
2019-07-02 14:48   ` Bin Liu
2019-07-02 16:51     ` Jack Pham
2019-07-02 17:50       ` Bin Liu [this message]
2019-07-02 18:20         ` Bin Liu
2019-07-03  6:12           ` Felipe Balbi

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=20190702175013.GB2724@uda0271908 \
    --to=b-liu@ti.com \
    --cc=balbi@kernel.org \
    --cc=jackp@codeaurora.org \
    --cc=linux-usb@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).