All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
To: Kevin Cernekee <cernekee@gmail.com>
Cc: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>,
	balbi@ti.com, ralf@linux-mips.org, stern@rowland.harvard.edu,
	linux-mips@linux-mips.org, linux-usb@vger.kernel.org
Subject: Re: [PATCH V3] usb: gadget: bcm63xx UDC driver
Date: Sun, 26 Aug 2012 21:30:14 +0200	[thread overview]
Message-ID: <20120826193014.GL3690@breakpoint.cc> (raw)
In-Reply-To: <CAJiQ=7Da5CdoQ2e=CutFt32xRXqUGHitCC+GJMzvbUUPC5yQzQ@mail.gmail.com>

On Sat, Aug 25, 2012 at 12:44:19PM -0700, Kevin Cernekee wrote:
> When bcm63xx_udc is in EP0_IN_FAKE_STATUS_PHASE, it won't issue any
> more setup() callbacks until the 0-byte reply arrives from the gadget
> driver.  If the host sends a setup request, the callback will be held
> off until after the (unused) status reply.  This keeps the gadget
> driver from getting confused by out-of-sequence events.

Okay. Then it works as requested :)

> > - What happens if the host is faster than the UDC. SetConfig returns in
> >   usb-storage with "DELAYED_STATUS". HW Acks this. Could the Host send another
> >   request before the gadget queues the ep0 request?
> 
> Could you please clarify if this is the sequence of events you are describing:
> 
> 1) Host sends a valid SET_CONFIGURATION request to a mass storage gadget
> 
> 2) Hardware instantly auto-acks the request, completing the status
> phase and allowing the host to proceed with another ep0 request
> 
> 3) bcm63xx_udc sends a spoofed SET_CONFIGURATION setup packet to the
> gadget driver
> 
> 4) setup() callback returns USB_GADGET_DELAYED_STATUS (0x7fff) but
> doesn't queue up a reply
> 
> 5) Host sends another setup packet before
> usb_composite_setup_continue() is called to send the 0-byte status
> reply

exactly 
 
> If so, the next steps should look like:
> 
> 6) bcm63xx_udc takes a data IRQ, and sets ep0_req_completed
> 
> 7) bcm63xx_udc stays in EP0_IN_FAKE_STATUS_PHASE until the 0-byte
> reply is received from usb_composite_setup_continue()
> 
> 8) usb_composite_setup_continue() eventually sends the 0-byte reply
> 
> 9) bcm63xx_udc returns to EP0_IDLE and notices that ep0_req_completed is now set
> 
> 10) bcm63xx_ep0_do_setup() looks at the new request, and performs the
> setup() callback for the new setup request

Okay. This sounds good.

> 11) Data/status phases are handled as usual

Please tell you HW vendor that this auto ack feature is complete non sense
unless you already have :)

Sebastian

      parent reply	other threads:[~2012-08-26 19:30 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-22  1:22 [PATCH V3] usb: gadget: bcm63xx UDC driver Kevin Cernekee
2012-08-22  7:48 ` Sebastian Andrzej Siewior
2012-08-25 19:44   ` Kevin Cernekee
2012-08-25 20:48     ` Alan Stern
2012-08-25 20:48       ` Alan Stern
2012-08-26 19:30     ` Sebastian Andrzej Siewior [this message]

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=20120826193014.GL3690@breakpoint.cc \
    --to=sebastian@breakpoint.cc \
    --cc=balbi@ti.com \
    --cc=cernekee@gmail.com \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=ralf@linux-mips.org \
    --cc=stern@rowland.harvard.edu \
    /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 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.