static u32 _mxc_ep_recv_data(u8 epnum, struct ep_queue_item *tqi) { struct usb_endpoint_instance *epi = mxc_get_epi(epnum); struct urb *urb; u32 len = 0; if (!epi) return 0; invalidate_dcache_range((unsigned long)tqi, CACHE_ALIGNED_END(tqi, sizeof(struct ep_queue_item))); urb = epi->rcv_urb; if (urb) { u8 *data = urb->buffer + urb->actual_length; int remain_len = (tqi->info >> 16) & (0xefff); len = tqi->reserved[0] - remain_len; DBG("recv len %d-%d-%d\n", len, tqi->reserved[0], remain_len); invalidate_dcache_range((unsigned long)tqi->page_vir, CACHE_ALIGNED_END(tqi->page_vir, len)); memcpy(data, (void *)tqi->page_vir, len); _dump_buf(data, len); } return len; }
static u32 _mxc_ep_recv_data(u8 epnum, struct ep_queue_item *tqi) { struct usb_endpoint_instance *epi = mxc_get_epi(epnum); struct urb *urb; u32 len = 0; if (!epi) return 0; urb = epi->rcv_urb; if (urb) { u8 *data = urb->buffer + urb->actual_length; int remain_len = (tqi->info >> 16) & (0xefff); len = tqi->reserved[0] - remain_len; DBG("recv len %d-%d-%d\n", len, tqi->reserved[0], remain_len); memcpy(data, (void *)tqi->page_vir, len); } return len; }