public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Tony Lindgren <tony@atomide.com>
To: "Hunter, Jon" <jon-hunter@ti.com>
Cc: David Brownell <david-b@pacbell.net>,
	linux-omap-open-source@linux.omap.com
Subject: Re: OMAP2430: MUSB: Ethernet Gadget Issue
Date: Mon, 17 Dec 2007 17:05:56 -0800	[thread overview]
Message-ID: <20071218010556.GX7388@atomide.com> (raw)
In-Reply-To: <5573C19A4BBDB441BED2A44157E9705302D6E61F@dlee12.ent.ti.com>

* Hunter, Jon <jon-hunter@ti.com> [071217 16:01]:
> > There what's odd is that nothing seems to have emptied the
> > FIFO.  I've not looked at the Mentor DMA engine, but I'd kind
> > of hope that it's more sane than CPPI ... so that one could
> > let it offload entire IEEE 802 packets without needing to
> > wake up the CPU after each packet.
> 
> 
> I do see from the driver that the Mentor DMA engine appears to have two
> modes of operation, namely mode 0 and mode 1. When the DMA is configured
> for Mode 0 then the DMA will only load/unload one packet at a time and
> so the CPU will be interrupted for each packet. Whereas in Mode 1 the
> DMA can load/unload all packets of the entire transfer. On the TX side
> it appears to use Mode 1 and on the RX side it uses Mode 0. I did find
> the following comment in the musb_gadget.c file:
> 
> /* We use DMA Req mode 0 in rx_csr, and DMA controller operates in
>  * mode 0 only. So we do not get endpoint interrupts due to DMA
>  * completion. We only get interrupts from DMA controller.
>  *
>  * We could operate in DMA mode 1 if we knew the size of the tranfer
>  * in advance. For mass storage class, request->length = what the host
>  * sends, so that'd work.  But for pretty much everything else,
>  * request->length is routinely more than what the host sends. For
>  * most these gadgets, end of is signified either by a short packet,
>  * or filling the last byte of the buffer.  (Sending extra data in
>  * that last pckate should trigger an overflow fault.)  But in mode 1,
>  * we don't get DMA completion interrrupt for short packets.
>  *
>  * Theoretically, we could enable DMAReq irq (MUSB_RXCSR_DMAMODE = 1),
>  * to get endpoint interrupt on every DMA req, but that didn't seem
>  * to work reliably.
>  *
>  * REVISIT an updated g_file_storage can set req->short_not_ok, which
>  * then becomes usable as a runtime "use mode 1" hint...
>  */
> 
> >From digging into this more, when the failure condition occurs, I see
> that the DMA channels for both RX and TX are configured and enabled. The
> strange thing is that neither DMA completes and so the driver is stuck
> waiting for an interrupt from both the RX and the TX side. The DMA
> registers do show that the DMA channels are configured to generate an
> interrupt but the INTR (interrupt status register) for DMA controller
> never shows an interrupt pending for either the RX or TX channel. It
> seems that the DMA is setup correctly but never transfer the data. 

The musb driver should be fixed to allow using mode 1 based on the fifo
interrupt. I never had much luck with mode 1 though on tusb :(

Tony

  reply	other threads:[~2007-12-18  1:05 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-21 17:08 OMAP2430: MUSB: Ethernet Gadget Issue Hunter, Jon
2007-11-23 20:26 ` David Brownell
2007-11-29 20:03   ` Foale, Jeff
2007-11-29 21:07     ` David Brownell
2007-12-07 20:55     ` Hunter, Jon
2007-12-07 20:38   ` Hunter, Jon
2007-12-10  5:34     ` David Brownell
2007-12-12 20:55       ` Hunter, Jon
2007-12-12 23:22         ` Hunter, Jon
2007-12-18  0:00       ` Hunter, Jon
2007-12-18  1:05         ` Tony Lindgren [this message]
  -- strict thread matches above, loose matches on Subject: below --
2007-12-05 22:10 Foale, Jeff
2007-12-06 16:17 ` David Brownell
2007-12-07 20:55   ` Hunter, Jon

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=20071218010556.GX7388@atomide.com \
    --to=tony@atomide.com \
    --cc=david-b@pacbell.net \
    --cc=jon-hunter@ti.com \
    --cc=linux-omap-open-source@linux.omap.com \
    /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