Lines Matching refs:fifo

237 				   struct usbhs_fifo *fifo)
241 usbhs_bset(priv, fifo->ctr, BVAL, BVAL);
245 struct usbhs_fifo *fifo)
251 if (usbhs_read(priv, fifo->ctr) & FRDY)
261 struct usbhs_fifo *fifo)
266 usbhsf_fifo_barrier(priv, fifo);
268 usbhs_write(priv, fifo->ctr, BCLR);
272 struct usbhs_fifo *fifo)
274 return usbhs_read(priv, fifo->ctr) & DTLN_MASK;
278 struct usbhs_fifo *fifo)
283 usbhs_write(priv, fifo->sel, 0);
287 struct usbhs_fifo *fifo,
297 usbhsf_fifo_is_busy(fifo))
308 if (usbhs_get_dparam(priv, has_sudmac) && !usbhsf_is_cfifo(priv, fifo))
309 usbhs_write(priv, fifo->sel, base);
311 usbhs_write(priv, fifo->sel, base | MBW_32);
315 if (base == (mask & usbhs_read(priv, fifo->sel))) {
316 usbhs_pipe_select_fifo(pipe, fifo);
322 dev_err(dev, "fifo select error\n");
334 struct usbhs_fifo *fifo = usbhsf_get_cfifo(priv); /* CFIFO */
340 ret = usbhsf_fifo_select(pipe, fifo, 1);
348 usbhsf_fifo_clear(pipe, fifo);
349 usbhsf_send_terminator(pipe, fifo);
351 usbhsf_fifo_unselect(pipe, fifo);
363 struct usbhs_fifo *fifo = usbhsf_get_cfifo(priv); /* CFIFO */
369 ret = usbhsf_fifo_select(pipe, fifo, 0);
376 usbhsf_fifo_clear(pipe, fifo);
378 usbhsf_fifo_unselect(pipe, fifo);
441 struct usbhs_fifo *fifo = usbhsf_get_cfifo(priv);
449 * - clear fifo
456 usbhsf_fifo_select(pipe, fifo, 0);
457 usbhsf_fifo_clear(pipe, fifo);
458 usbhsf_fifo_unselect(pipe, fifo);
480 struct usbhs_fifo *fifo = usbhsf_get_cfifo(priv); /* CFIFO */
481 void __iomem *addr = priv->base + fifo->port;
491 ret = usbhsf_fifo_select(pipe, fifo, 1);
502 ret = usbhsf_fifo_barrier(priv, fifo);
543 usbhsf_send_terminator(pipe, fifo);
560 usbhsf_fifo_unselect(pipe, fifo);
565 usbhsf_fifo_unselect(pipe, fifo);
608 struct usbhs_fifo *fifo = usbhsf_get_cfifo(priv); /* CFIFO */
609 void __iomem *addr = priv->base + fifo->port;
617 ret = usbhsf_fifo_select(pipe, fifo, 0);
621 ret = usbhsf_fifo_barrier(priv, fifo);
625 rcv_len = usbhsf_fifo_rcv_len(priv, fifo);
654 usbhsf_fifo_clear(pipe, fifo);
683 usbhsf_fifo_unselect(pipe, fifo);
711 * DMA fifo functions
713 static struct dma_chan *usbhsf_dma_chan_get(struct usbhs_fifo *fifo,
717 return fifo->tx_chan;
720 return fifo->rx_chan;
728 struct usbhs_fifo *fifo;
731 fifo = usbhsf_get_d0fifo(priv);
732 if (usbhsf_dma_chan_get(fifo, pkt) &&
733 !usbhsf_fifo_is_busy(fifo))
734 return fifo;
737 fifo = usbhsf_get_d1fifo(priv);
738 if (usbhsf_dma_chan_get(fifo, pkt) &&
739 !usbhsf_fifo_is_busy(fifo))
740 return fifo;
748 struct usbhs_fifo *fifo,
753 usbhs_bset(priv, fifo->sel, DREQE, dreqe);
772 struct usbhs_fifo *fifo = usbhs_pipe_to_fifo(pipe);
776 struct dma_chan *chan = usbhsf_dma_chan_get(fifo, pkt);
804 fifo->name, usbhs_pipe_number(pipe), pkt->length, pkt->zero);
806 usbhsf_dma_start(pipe, fifo);
817 struct usbhs_fifo *fifo;
835 /* get enable DMA fifo */
836 fifo = usbhsf_get_dma_fifo(priv, pkt);
837 if (!fifo)
843 ret = usbhsf_fifo_select(pipe, fifo, 0);
873 usbhsf_dma_stop(pipe, pipe->fifo);
875 usbhsf_fifo_unselect(pipe, pipe->fifo);
892 struct usbhs_fifo *fifo;
901 /* get enable DMA fifo */
902 fifo = usbhsf_get_dma_fifo(priv, pkt);
903 if (!fifo)
909 ret = usbhsf_fifo_select(pipe, fifo, 0);
914 len = usbhsf_fifo_rcv_len(priv, fifo);
922 ret = usbhsf_fifo_barrier(priv, fifo);
946 usbhsf_fifo_unselect(pipe, fifo);
962 usbhsf_dma_stop(pipe, pipe->fifo);
964 usbhsf_fifo_unselect(pipe, pipe->fifo);
1005 static void usbhsf_dma_quit(struct usbhs_priv *priv, struct usbhs_fifo *fifo)
1007 if (fifo->tx_chan)
1008 dma_release_channel(fifo->tx_chan);
1009 if (fifo->rx_chan)
1010 dma_release_channel(fifo->rx_chan);
1012 fifo->tx_chan = NULL;
1013 fifo->rx_chan = NULL;
1017 struct usbhs_fifo *fifo)
1024 fifo->tx_chan = dma_request_channel(mask, usbhsf_dma_filter,
1025 &fifo->tx_slave);
1029 fifo->rx_chan = dma_request_channel(mask, usbhsf_dma_filter,
1030 &fifo->rx_slave);
1032 if (fifo->tx_chan || fifo->rx_chan)
1034 fifo->name,
1035 fifo->tx_chan ? "[TX]" : " ",
1036 fifo->rx_chan ? "[RX]" : " ");
1116 * fifo init
1161 struct usbhs_fifo *fifo;
1164 fifo = usbhsf_get_cfifo(priv);
1165 fifo->name = "CFIFO";
1166 fifo->port = CFIFO;
1167 fifo->sel = CFIFOSEL;
1168 fifo->ctr = CFIFOCTR;
1171 fifo = usbhsf_get_d0fifo(priv);
1172 fifo->name = "D0FIFO";
1173 fifo->port = D0FIFO;
1174 fifo->sel = D0FIFOSEL;
1175 fifo->ctr = D0FIFOCTR;
1176 fifo->tx_slave.slave_id = usbhs_get_dparam(priv, d0_tx_id);
1177 fifo->rx_slave.slave_id = usbhs_get_dparam(priv, d0_rx_id);
1180 fifo = usbhsf_get_d1fifo(priv);
1181 fifo->name = "D1FIFO";
1182 fifo->port = D1FIFO;
1183 fifo->sel = D1FIFOSEL;
1184 fifo->ctr = D1FIFOCTR;
1185 fifo->tx_slave.slave_id = usbhs_get_dparam(priv, d1_tx_id);
1186 fifo->rx_slave.slave_id = usbhs_get_dparam(priv, d1_rx_id);