public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* OMAP USB - ISO data_flush errors not handled? (OMAP 5912)
@ 2007-11-06  2:37 Steve Poulsen
  0 siblings, 0 replies; only message in thread
From: Steve Poulsen @ 2007-11-06  2:37 UTC (permalink / raw)
  To: linux-omap-open-source

I have run into an issue where the ISO audio (OUT) will enter a state 
where it stops playing.  This problem occurs if a single packet is 
missed (1 ms).  What happens is the OMAP 5912 reports a DATA_FLUSH 
error, as expected, but it never clears.  As I understand this error 
condition, it occurs during the next good frame and lasts during that 
frame.  In other words, when the error condition occurs, it indicates 
that the previous frame was overwritten before it was processed.

Please refer to omap_udc.c, function omap_udc_iso_irq:

            else if (stat & UDC_DATA_FLUSH)
                status = -ENOSR;

            if (status)
            {
                /* done(ep, req, status) */;
            }
            else
                read_fifo(ep, req);

It is my believe that "read_fifo" should still be called for the 
UDC_DATA_FLUSH condition.  I have tested and it does solve my problem.  
Please confirm.

The problem can be reproduced by adding a delay() of more than 1 ms in 
the read_completion for this usb_request.  The 1 ms delay should be 
added just one time, and not continuously.  It would be expected that 
the single audio frame is lost and not all audio frames thereafter.

Steve

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-11-06  2:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-06  2:37 OMAP USB - ISO data_flush errors not handled? (OMAP 5912) Steve Poulsen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox