Lines Matching refs:musb_ep
82 struct musb *musb, struct musb_ep *musb_ep) in map_dma_buffer() argument
89 if (!is_dma_capable() || !musb_ep->dma) in map_dma_buffer()
97 compatible = dma->is_compatible(musb_ep->dma, in map_dma_buffer()
98 musb_ep->packet_sz, request->request.buf, in map_dma_buffer()
155 struct musb *musb, struct musb_ep *musb_ep) in map_dma_buffer() argument
173 struct musb_ep *ep, in musb_g_giveback()
213 static void nuke(struct musb_ep *ep, const int status) in nuke()
264 static inline int max_ep_writesize(struct musb *musb, struct musb_ep *ep) in max_ep_writesize()
317 struct musb_ep *musb_ep; in txstate() local
323 musb_ep = req->ep; in txstate()
326 if (!musb_ep->desc) { in txstate()
328 musb_ep->end_point.name); in txstate()
333 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) { in txstate()
342 fifo_count = min(max_ep_writesize(musb, musb_ep), in txstate()
347 musb_ep->end_point.name, csr); in txstate()
353 musb_ep->end_point.name, csr); in txstate()
358 epnum, musb_ep->packet_sz, fifo_count, in txstate()
368 musb_ep->dma->max_len); in txstate()
376 if (request_size < musb_ep->packet_sz) in txstate()
377 musb_ep->dma->desired_mode = 0; in txstate()
379 musb_ep->dma->desired_mode = 1; in txstate()
382 musb_ep->dma, musb_ep->packet_sz, in txstate()
383 musb_ep->dma->desired_mode, in txstate()
386 if (musb_ep->dma->desired_mode == 0) { in txstate()
405 if (!musb_ep->hb_mult) in txstate()
437 musb_ep->dma, musb_ep->packet_sz, in txstate()
442 c->channel_release(musb_ep->dma); in txstate()
443 musb_ep->dma = NULL; in txstate()
450 musb_ep->dma, musb_ep->packet_sz, in txstate()
465 musb_write_fifo(musb_ep->hw_ep, fifo_count, in txstate()
475 musb_ep->end_point.name, use_dma ? "dma" : "pio", in txstate()
492 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_in; in musb_g_tx() local
497 req = next_request(musb_ep); in musb_g_tx()
501 dev_dbg(musb->controller, "<== %s, txcsr %04x\n", musb_ep->end_point.name, csr); in musb_g_tx()
503 dma = is_dma_capable() ? musb_ep->dma : NULL; in musb_g_tx()
530 dev_dbg(musb->controller, "%s dma still busy?\n", musb_ep->end_point.name); in musb_g_tx()
545 request->actual += musb_ep->dma->actual_len; in musb_g_tx()
547 epnum, csr, musb_ep->dma->actual_len, request); in musb_g_tx()
555 && (request->length % musb_ep->packet_sz == 0) in musb_g_tx()
560 (musb_ep->packet_sz - 1)))) in musb_g_tx()
577 musb_g_giveback(musb_ep, request, 0); in musb_g_tx()
587 req = musb_ep->desc ? next_request(musb_ep) : NULL; in musb_g_tx()
590 musb_ep->end_point.name); in musb_g_tx()
639 struct musb_ep *musb_ep; in rxstate() local
648 musb_ep = &hw_ep->ep_in; in rxstate()
650 musb_ep = &hw_ep->ep_out; in rxstate()
652 len = musb_ep->packet_sz; in rxstate()
655 if (!musb_ep->desc) { in rxstate()
657 musb_ep->end_point.name); in rxstate()
662 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) { in rxstate()
669 musb_ep->end_point.name, csr); in rxstate()
675 struct dma_channel *channel = musb_ep->dma; in rxstate()
683 musb_ep->packet_sz, in rxstate()
709 if (request->short_not_ok && len == musb_ep->packet_sz) in rxstate()
722 channel = musb_ep->dma; in rxstate()
762 if (!musb_ep->hb_mult && in rxstate()
763 musb_ep->hw_ep->rx_double_buffered) in rxstate()
774 musb_ep->dma->desired_mode = 1; in rxstate()
778 musb_ep->dma->desired_mode = 0; in rxstate()
783 musb_ep->packet_sz, in rxstate()
802 channel = musb_ep->dma; in rxstate()
805 if (len < musb_ep->packet_sz) in rxstate()
822 if (transfer_size <= musb_ep->packet_sz) { in rxstate()
823 musb_ep->dma->desired_mode = 0; in rxstate()
825 musb_ep->dma->desired_mode = 1; in rxstate()
832 musb_ep->packet_sz, in rxstate()
844 musb_ep->end_point.name, in rxstate()
846 musb_ep->packet_sz); in rxstate()
853 struct dma_channel *channel = musb_ep->dma; in rxstate()
858 musb_ep->packet_sz, in rxstate()
882 musb_read_fifo(musb_ep->hw_ep, fifo_count, (u8 *) in rxstate()
898 if (request->actual == request->length || len < musb_ep->packet_sz) in rxstate()
899 musb_g_giveback(musb_ep, request, 0); in rxstate()
911 struct musb_ep *musb_ep; in musb_g_rx() local
917 musb_ep = &hw_ep->ep_in; in musb_g_rx()
919 musb_ep = &hw_ep->ep_out; in musb_g_rx()
923 req = next_request(musb_ep); in musb_g_rx()
930 dma = is_dma_capable() ? musb_ep->dma : NULL; in musb_g_rx()
932 dev_dbg(musb->controller, "<== %s, rxcsr %04x%s %p\n", musb_ep->end_point.name, in musb_g_rx()
947 dev_dbg(musb->controller, "%s iso overrun on %p\n", musb_ep->name, request); in musb_g_rx()
953 dev_dbg(musb->controller, "%s, incomprx\n", musb_ep->end_point.name); in musb_g_rx()
959 musb_ep->end_point.name, csr); in musb_g_rx()
970 request->actual += musb_ep->dma->actual_len; in musb_g_rx()
975 musb_ep->dma->actual_len, request); in musb_g_rx()
982 & (musb_ep->packet_sz - 1))) { in musb_g_rx()
990 && (musb_ep->dma->actual_len in musb_g_rx()
991 == musb_ep->packet_sz)) { in musb_g_rx()
1002 musb_g_giveback(musb_ep, request, 0); in musb_g_rx()
1013 req = next_request(musb_ep); in musb_g_rx()
1031 struct musb_ep *musb_ep; in musb_gadget_enable() local
1044 musb_ep = to_musb_ep(ep); in musb_gadget_enable()
1045 hw_ep = musb_ep->hw_ep; in musb_gadget_enable()
1047 musb = musb_ep->musb; in musb_gadget_enable()
1049 epnum = musb_ep->current_epnum; in musb_gadget_enable()
1053 if (musb_ep->desc) { in musb_gadget_enable()
1057 musb_ep->type = usb_endpoint_type(desc); in musb_gadget_enable()
1077 musb_ep->hb_mult = (tmp >> 11) & 3; in musb_gadget_enable()
1079 musb_ep->hb_mult = 0; in musb_gadget_enable()
1082 musb_ep->packet_sz = tmp & 0x7ff; in musb_gadget_enable()
1083 tmp = musb_ep->packet_sz * (musb_ep->hb_mult + 1); in musb_gadget_enable()
1093 musb_ep->is_in = 1; in musb_gadget_enable()
1094 if (!musb_ep->is_in) in musb_gadget_enable()
1114 musb_writew(regs, MUSB_TXMAXP, musb_ep->packet_sz in musb_gadget_enable()
1115 | (musb_ep->hb_mult << 11)); in musb_gadget_enable()
1121 if (musb_ep->type == USB_ENDPOINT_XFER_ISOC) in musb_gadget_enable()
1133 musb_ep->is_in = 0; in musb_gadget_enable()
1134 if (musb_ep->is_in) in musb_gadget_enable()
1154 musb_writew(regs, MUSB_RXMAXP, musb_ep->packet_sz in musb_gadget_enable()
1155 | (musb_ep->hb_mult << 11)); in musb_gadget_enable()
1165 if (musb_ep->type == USB_ENDPOINT_XFER_ISOC) in musb_gadget_enable()
1167 else if (musb_ep->type == USB_ENDPOINT_XFER_INT) in musb_gadget_enable()
1181 musb_ep->dma = c->channel_alloc(c, hw_ep, in musb_gadget_enable()
1184 musb_ep->dma = NULL; in musb_gadget_enable()
1186 musb_ep->desc = desc; in musb_gadget_enable()
1187 musb_ep->busy = 0; in musb_gadget_enable()
1188 musb_ep->wedged = 0; in musb_gadget_enable()
1192 musb_driver_name, musb_ep->end_point.name, in musb_gadget_enable()
1193 ({ char *s; switch (musb_ep->type) { in musb_gadget_enable()
1198 musb_ep->is_in ? "IN" : "OUT", in musb_gadget_enable()
1199 musb_ep->dma ? "dma, " : "", in musb_gadget_enable()
1200 musb_ep->packet_sz); in musb_gadget_enable()
1217 struct musb_ep *musb_ep; in musb_gadget_disable() local
1221 musb_ep = to_musb_ep(ep); in musb_gadget_disable()
1222 musb = musb_ep->musb; in musb_gadget_disable()
1223 epnum = musb_ep->current_epnum; in musb_gadget_disable()
1230 if (musb_ep->is_in) { in musb_gadget_disable()
1242 musb_ep->desc = NULL; in musb_gadget_disable()
1244 musb_ep->end_point.desc = NULL; in musb_gadget_disable()
1248 nuke(musb_ep, -ESHUTDOWN); in musb_gadget_disable()
1254 dev_dbg(musb->controller, "%s\n", musb_ep->end_point.name); in musb_gadget_disable()
1265 struct musb_ep *musb_ep = to_musb_ep(ep); in musb_alloc_request() local
1266 struct musb *musb = musb_ep->musb; in musb_alloc_request()
1276 request->epnum = musb_ep->current_epnum; in musb_alloc_request()
1277 request->ep = musb_ep; in musb_alloc_request()
1319 struct musb_ep *musb_ep; in musb_gadget_queue() local
1330 musb_ep = to_musb_ep(ep); in musb_gadget_queue()
1331 musb = musb_ep->musb; in musb_gadget_queue()
1336 if (request->ep != musb_ep) in musb_gadget_queue()
1344 request->epnum = musb_ep->current_epnum; in musb_gadget_queue()
1345 request->tx = musb_ep->is_in; in musb_gadget_queue()
1347 map_dma_buffer(request, musb, musb_ep); in musb_gadget_queue()
1352 if (!musb_ep->desc) { in musb_gadget_queue()
1360 list_add_tail(&request->list, &musb_ep->req_list); in musb_gadget_queue()
1363 if (!musb_ep->busy && &request->list == musb_ep->req_list.next) in musb_gadget_queue()
1373 struct musb_ep *musb_ep = to_musb_ep(ep); in musb_gadget_dequeue() local
1378 struct musb *musb = musb_ep->musb; in musb_gadget_dequeue()
1380 if (!ep || !request || to_musb_request(request)->ep != musb_ep) in musb_gadget_dequeue()
1385 list_for_each_entry(r, &musb_ep->req_list, list) { in musb_gadget_dequeue()
1396 if (musb_ep->req_list.next != &req->list || musb_ep->busy) in musb_gadget_dequeue()
1397 musb_g_giveback(musb_ep, request, -ECONNRESET); in musb_gadget_dequeue()
1400 else if (is_dma_capable() && musb_ep->dma) { in musb_gadget_dequeue()
1403 musb_ep_select(musb->mregs, musb_ep->current_epnum); in musb_gadget_dequeue()
1405 status = c->channel_abort(musb_ep->dma); in musb_gadget_dequeue()
1409 musb_g_giveback(musb_ep, request, -ECONNRESET); in musb_gadget_dequeue()
1414 musb_g_giveback(musb_ep, request, -ECONNRESET); in musb_gadget_dequeue()
1430 struct musb_ep *musb_ep = to_musb_ep(ep); in musb_gadget_set_halt() local
1431 u8 epnum = musb_ep->current_epnum; in musb_gadget_set_halt()
1432 struct musb *musb = musb_ep->musb; in musb_gadget_set_halt()
1446 if ((USB_ENDPOINT_XFER_ISOC == musb_ep->type)) { in musb_gadget_set_halt()
1453 request = next_request(musb_ep); in musb_gadget_set_halt()
1462 if (musb_ep->is_in) { in musb_gadget_set_halt()
1471 musb_ep->wedged = 0; in musb_gadget_set_halt()
1475 if (musb_ep->is_in) { in musb_gadget_set_halt()
1500 if (!musb_ep->busy && !value && request) { in musb_gadget_set_halt()
1516 struct musb_ep *musb_ep = to_musb_ep(ep); in musb_gadget_set_wedge() local
1521 musb_ep->wedged = 1; in musb_gadget_set_wedge()
1529 struct musb_ep *musb_ep = to_musb_ep(ep); in musb_gadget_fifo_status() local
1530 void __iomem *epio = musb_ep->hw_ep->regs; in musb_gadget_fifo_status()
1533 if (musb_ep->desc && !musb_ep->is_in) { in musb_gadget_fifo_status()
1534 struct musb *musb = musb_ep->musb; in musb_gadget_fifo_status()
1535 int epnum = musb_ep->current_epnum; in musb_gadget_fifo_status()
1552 struct musb_ep *musb_ep = to_musb_ep(ep); in musb_gadget_fifo_flush() local
1553 struct musb *musb = musb_ep->musb; in musb_gadget_fifo_flush()
1554 u8 epnum = musb_ep->current_epnum; in musb_gadget_fifo_flush()
1569 if (musb_ep->is_in) { in musb_gadget_fifo_flush()
1813 init_peripheral_ep(struct musb *musb, struct musb_ep *ep, u8 epnum, int is_in) in init_peripheral_ep()