Lines Matching refs:musb_ep
33 struct musb *musb, struct musb_ep *musb_ep)
40 if (!is_dma_capable() || !musb_ep->dma)
48 compatible = dma->is_compatible(musb_ep->dma,
49 musb_ep->packet_sz, request->request.buf,
86 struct musb_ep *musb_ep = request->ep;
88 if (!is_buffer_mapped(request) || !musb_ep->dma)
123 struct musb_ep *ep,
158 static void nuke(struct musb_ep *ep, const int status)
208 static inline int max_ep_writesize(struct musb *musb, struct musb_ep *ep)
226 struct musb_ep *musb_ep;
232 musb_ep = req->ep;
235 if (!musb_ep->desc) {
237 musb_ep->end_point.name);
242 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) {
251 fifo_count = min(max_ep_writesize(musb, musb_ep),
256 musb_ep->end_point.name, csr);
262 musb_ep->end_point.name, csr);
267 epnum, musb_ep->packet_sz, fifo_count,
277 musb_ep->dma->max_len);
284 if (request_size < musb_ep->packet_sz)
285 musb_ep->dma->desired_mode = 0;
287 musb_ep->dma->desired_mode = 1;
290 musb_ep->dma, musb_ep->packet_sz,
291 musb_ep->dma->desired_mode,
294 if (musb_ep->dma->desired_mode == 0) {
322 if (!musb_ep->hb_mult ||
324 musb_ep->type))
358 musb_ep->dma, musb_ep->packet_sz,
363 c->channel_release(musb_ep->dma);
364 musb_ep->dma = NULL;
371 musb_ep->dma, musb_ep->packet_sz,
385 musb_write_fifo(musb_ep->hw_ep, fifo_count,
395 musb_ep->end_point.name, use_dma ? "dma" : "pio",
412 struct musb_ep *musb_ep = &musb->endpoints[epnum].ep_in;
417 req = next_request(musb_ep);
421 musb_dbg(musb, "<== %s, txcsr %04x", musb_ep->end_point.name, csr);
423 dma = is_dma_capable() ? musb_ep->dma : NULL;
450 musb_dbg(musb, "%s dma still busy?", musb_ep->end_point.name);
465 request->actual += musb_ep->dma->actual_len;
467 epnum, csr, musb_ep->dma->actual_len, request);
475 && (request->length % musb_ep->packet_sz == 0)
491 musb_g_giveback(musb_ep, request, 0);
501 req = musb_ep->desc ? next_request(musb_ep) : NULL;
504 musb_ep->end_point.name);
522 struct musb_ep *musb_ep;
531 musb_ep = &hw_ep->ep_in;
533 musb_ep = &hw_ep->ep_out;
535 fifo_count = musb_ep->packet_sz;
538 if (!musb_ep->desc) {
540 musb_ep->end_point.name);
545 if (dma_channel_status(musb_ep->dma) == MUSB_DMA_STATUS_BUSY) {
552 musb_ep->end_point.name, csr);
558 struct dma_channel *channel = musb_ep->dma;
566 musb_ep->packet_sz,
592 if (request->short_not_ok && fifo_count == musb_ep->packet_sz)
608 channel = musb_ep->dma;
651 musb_ep->dma->desired_mode = 1;
653 if (!musb_ep->hb_mult &&
654 musb_ep->hw_ep->rx_double_buffered)
661 musb_ep->dma->desired_mode = 0;
666 musb_ep->packet_sz,
684 channel = musb_ep->dma;
687 if (fifo_count < musb_ep->packet_sz)
706 if (transfer_size <= musb_ep->packet_sz) {
707 musb_ep->dma->desired_mode = 0;
709 musb_ep->dma->desired_mode = 1;
716 musb_ep->packet_sz,
727 musb_ep->end_point.name,
729 musb_ep->packet_sz);
735 struct dma_channel *channel = musb_ep->dma;
740 musb_ep->packet_sz,
766 musb_read_fifo(musb_ep->hw_ep, fifo_count, (u8 *)
783 fifo_count < musb_ep->packet_sz)
784 musb_g_giveback(musb_ep, request, 0);
796 struct musb_ep *musb_ep;
802 musb_ep = &hw_ep->ep_in;
804 musb_ep = &hw_ep->ep_out;
808 req = next_request(musb_ep);
816 dma = is_dma_capable() ? musb_ep->dma : NULL;
818 musb_dbg(musb, "<== %s, rxcsr %04x%s %p", musb_ep->end_point.name,
833 musb_dbg(musb, "%s iso overrun on %p", musb_ep->name, request);
839 musb_dbg(musb, "%s, incomprx", musb_ep->end_point.name);
845 musb_ep->end_point.name, csr);
856 request->actual += musb_ep->dma->actual_len;
863 & (musb_ep->packet_sz - 1))) {
871 && (musb_ep->dma->actual_len
872 == musb_ep->packet_sz)) {
883 musb_g_giveback(musb_ep, request, 0);
894 req = next_request(musb_ep);
912 struct musb_ep *musb_ep;
925 musb_ep = to_musb_ep(ep);
926 hw_ep = musb_ep->hw_ep;
928 musb = musb_ep->musb;
930 epnum = musb_ep->current_epnum;
934 if (musb_ep->desc) {
938 musb_ep->type = usb_endpoint_type(desc);
958 musb_ep->hb_mult = tmp;
960 musb_ep->hb_mult = 0;
963 musb_ep->packet_sz = usb_endpoint_maxp(desc);
964 tmp = musb_ep->packet_sz * (musb_ep->hb_mult + 1);
973 musb_ep->is_in = 1;
974 if (!musb_ep->is_in)
991 if (can_bulk_split(musb, musb_ep->type))
992 musb_ep->hb_mult = (hw_ep->max_packet_sz_tx /
993 musb_ep->packet_sz) - 1;
994 musb_writew(regs, MUSB_TXMAXP, musb_ep->packet_sz
995 | (musb_ep->hb_mult << 11));
1001 if (musb_ep->type == USB_ENDPOINT_XFER_ISOC)
1012 musb_ep->is_in = 0;
1013 if (musb_ep->is_in)
1030 musb_writew(regs, MUSB_RXMAXP, musb_ep->packet_sz
1031 | (musb_ep->hb_mult << 11));
1041 if (musb_ep->type == USB_ENDPOINT_XFER_ISOC)
1043 else if (musb_ep->type == USB_ENDPOINT_XFER_INT)
1057 musb_ep->dma = c->channel_alloc(c, hw_ep,
1060 musb_ep->dma = NULL;
1062 musb_ep->desc = desc;
1063 musb_ep->busy = 0;
1064 musb_ep->wedged = 0;
1068 musb_driver_name, musb_ep->end_point.name,
1069 musb_ep_xfertype_string(musb_ep->type),
1070 musb_ep->is_in ? "IN" : "OUT",
1071 musb_ep->dma ? "dma, " : "",
1072 musb_ep->packet_sz);
1089 struct musb_ep *musb_ep;
1092 musb_ep = to_musb_ep(ep);
1093 musb = musb_ep->musb;
1094 epnum = musb_ep->current_epnum;
1101 if (musb_ep->is_in) {
1112 nuke(musb_ep, -ESHUTDOWN);
1114 musb_ep->desc = NULL;
1115 musb_ep->end_point.desc = NULL;
1121 musb_dbg(musb, "%s", musb_ep->end_point.name);
1132 struct musb_ep *musb_ep = to_musb_ep(ep);
1140 request->epnum = musb_ep->current_epnum;
1141 request->ep = musb_ep;
1193 struct musb_ep *musb_ep;
1204 musb_ep = to_musb_ep(ep);
1205 musb = musb_ep->musb;
1210 if (request->ep != musb_ep)
1229 request->epnum = musb_ep->current_epnum;
1230 request->tx = musb_ep->is_in;
1232 map_dma_buffer(request, musb, musb_ep);
1237 if (!musb_ep->desc) {
1246 list_add_tail(&request->list, &musb_ep->req_list);
1249 if (!musb_ep->busy && &request->list == musb_ep->req_list.next) {
1270 struct musb_ep *musb_ep = to_musb_ep(ep);
1275 struct musb *musb = musb_ep->musb;
1277 if (!ep || !request || req->ep != musb_ep)
1284 list_for_each_entry(r, &musb_ep->req_list, list) {
1296 if (musb_ep->req_list.next != &req->list || musb_ep->busy)
1297 musb_g_giveback(musb_ep, request, -ECONNRESET);
1300 else if (is_dma_capable() && musb_ep->dma) {
1303 musb_ep_select(musb->mregs, musb_ep->current_epnum);
1305 status = c->channel_abort(musb_ep->dma);
1309 musb_g_giveback(musb_ep, request, -ECONNRESET);
1314 musb_g_giveback(musb_ep, request, -ECONNRESET);
1330 struct musb_ep *musb_ep = to_musb_ep(ep);
1331 u8 epnum = musb_ep->current_epnum;
1332 struct musb *musb = musb_ep->musb;
1346 if ((USB_ENDPOINT_XFER_ISOC == musb_ep->type)) {
1353 request = next_request(musb_ep);
1362 if (musb_ep->is_in) {
1372 musb_ep->wedged = 0;
1376 if (musb_ep->is_in) {
1401 if (!musb_ep->busy && !value && request) {
1416 struct musb_ep *musb_ep = to_musb_ep(ep);
1421 musb_ep->wedged = 1;
1428 struct musb_ep *musb_ep = to_musb_ep(ep);
1429 void __iomem *epio = musb_ep->hw_ep->regs;
1432 if (musb_ep->desc && !musb_ep->is_in) {
1433 struct musb *musb = musb_ep->musb;
1434 int epnum = musb_ep->current_epnum;
1451 struct musb_ep *musb_ep = to_musb_ep(ep);
1452 struct musb *musb = musb_ep->musb;
1453 u8 epnum = musb_ep->current_epnum;
1467 if (musb_ep->is_in) {
1693 init_peripheral_ep(struct musb *musb, struct musb_ep *ep, u8 epnum, int is_in)