finish_out_dma(ep, req, 0); 
finish_out_dma(ep, req, 0, dman_stat & UDC_DMA_RX_SB); 
static void dma_irq(struct omap_udc *udc, u16 irq_src){	u16		dman_stat = UDC_DMAN_STAT_REG;	struct omap_ep	*ep;	struct omap_req	*req;	/* IN dma: tx to host */	if (irq_src & UDC_TXN_DONE) {		ep = &udc->ep[16 + UDC_DMA_TX_SRC(dman_stat)];		ep->irqs++;		/* can see TXN_DONE after dma abort */		if (!list_empty(&ep->queue)) {			req = container_of(ep->queue.next,						struct omap_req, queue);			finish_in_dma(ep, req, 0);		}		UDC_IRQ_SRC_REG = UDC_TXN_DONE;		if (!list_empty (&ep->queue)) {			req = container_of(ep->queue.next,					struct omap_req, queue);			next_in_dma(ep, req);		}	}	/* OUT dma: rx from host */	if (irq_src & UDC_RXN_EOT) {		ep = &udc->ep[UDC_DMA_RX_SRC(dman_stat)];		ep->irqs++;		/* can see RXN_EOT after dma abort */		if (!list_empty(&ep->queue)) {			req = container_of(ep->queue.next,					struct omap_req, queue);			finish_out_dma(ep, req, 0);		}		UDC_IRQ_SRC_REG = UDC_RXN_EOT;		if (!list_empty (&ep->queue)) {			req = container_of(ep->queue.next,					struct omap_req, queue);			next_out_dma(ep, req);		}	}	if (irq_src & UDC_RXN_CNT) {		ep = &udc->ep[UDC_DMA_RX_SRC(dman_stat)];		ep->irqs++;		/* omap15xx does this unasked... */		VDBG("%s, RX_CNT irq?\n", ep->ep.name);		UDC_IRQ_SRC_REG = UDC_RXN_CNT;	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/cb97c5c9d0789d65d7ec42a80946fa9eb2ec5182/omap_udc.c/clean/drivers/usb/gadget/omap_udc.c