if (ep_stat & FIFO_FULL) 
if (ep_stat & UDC_FIFO_FULL) 
static int read_fifo(struct omap_ep *ep, struct omap_req *req){	u8		*buf;	unsigned	count, avail;	int		is_last;	buf = req->req.buf + req->req.actual;	prefetchw(buf);	for (;;) {		u16	ep_stat = UDC_STAT_FLG_REG;		is_last = 0;		if (ep_stat & FIFO_EMPTY) {			if (!ep->double_buf)				break;			ep->fnf = 1;		}		if (ep_stat & UDC_EP_HALTED)			break;		if (ep_stat & FIFO_FULL)			avail = ep->ep.maxpacket;		else  {			avail = UDC_RXFSTAT_REG;			ep->fnf = ep->double_buf;		}		count = read_packet(buf, req, avail);		/* partial packet reads may not be errors */		if (count < ep->ep.maxpacket) {			is_last = 1;			/* overflowed this request?  flush extra data */			if (count != avail) {				req->req.status = -EOVERFLOW;				avail -= count;				while (avail--)					(void) *(volatile u8 *)&UDC_DATA_REG;			}		} else if (req->req.length == req->req.actual)			is_last = 1;		else			is_last = 0;		if (!ep->bEndpointAddress)			break;		if (is_last)			done(ep, req, 0);		break;	}	return is_last;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/313980c92724cf42877a7bdafdef439ee9d68ccb/omap_udc.c/clean/drivers/usb/gadget/omap_udc.c