Lines Matching defs:pipe
297 static void set_pipe_reg_addr(struct r8a66597_pipe *pipe, u8 dma_ch)
299 u16 pipenum = pipe->info.pipenum;
307 pipe->fifoaddr = fifoaddr[dma_ch];
308 pipe->fifosel = fifosel[dma_ch];
309 pipe->fifoctr = fifoctr[dma_ch];
312 pipe->pipectr = DCPCTR;
314 pipe->pipectr = get_pipectr_addr(pipenum);
317 pipe->pipetre = get_pipetre_addr(pipenum);
318 pipe->pipetrn = get_pipetrn_addr(pipenum);
320 pipe->pipetre = 0;
321 pipe->pipetrn = 0;
328 if (usb_pipedevice(urb->pipe) == 0)
338 int usb_address = urb->setup_packet[2]; /* urb->pipe is address 0 */
452 static void pipe_start(struct r8a66597 *r8a66597, struct r8a66597_pipe *pipe)
456 tmp = r8a66597_read(r8a66597, pipe->pipectr) & PID;
457 if ((pipe->info.pipenum != 0) & ((tmp & PID_STALL) != 0)) /* stall? */
458 r8a66597_mdfy(r8a66597, PID_NAK, PID, pipe->pipectr);
459 r8a66597_mdfy(r8a66597, PID_BUF, PID, pipe->pipectr);
463 static void pipe_stop(struct r8a66597 *r8a66597, struct r8a66597_pipe *pipe)
467 tmp = r8a66597_read(r8a66597, pipe->pipectr) & PID;
469 r8a66597_mdfy(r8a66597, PID_STALL, PID, pipe->pipectr);
470 r8a66597_mdfy(r8a66597, PID_NAK, PID, pipe->pipectr);
471 r8a66597_reg_wait(r8a66597, pipe->pipectr, PBUSY, 0);
476 struct r8a66597_pipe *pipe)
478 if (!pipe || pipe->info.pipenum == 0)
481 pipe_stop(r8a66597, pipe);
482 r8a66597_bset(r8a66597, ACLRM, pipe->pipectr);
483 r8a66597_read(r8a66597, pipe->pipectr);
484 r8a66597_read(r8a66597, pipe->pipectr);
485 r8a66597_read(r8a66597, pipe->pipectr);
486 r8a66597_bclr(r8a66597, ACLRM, pipe->pipectr);
491 struct r8a66597_pipe *pipe, int toggle)
494 r8a66597_bset(r8a66597, SQSET, pipe->pipectr);
496 r8a66597_bset(r8a66597, SQCLR, pipe->pipectr);
518 struct r8a66597_pipe *pipe)
526 r8a66597_mdfy(r8a66597, mbw | pipe->info.pipenum, mbw | CURPIPE,
527 pipe->fifosel);
528 r8a66597_reg_wait(r8a66597, pipe->fifosel, CURPIPE, pipe->info.pipenum);
533 struct r8a66597_pipe *pipe = hep->hcpriv;
535 if (usb_pipeendpoint(urb->pipe) == 0)
538 return pipe->info.pipenum;
545 return (usb_pipedevice(urb->pipe) == 0) ? 0 : dev->address;
559 struct r8a66597_pipe *pipe,
563 unsigned char endpoint = usb_pipeendpoint(urb->pipe);
564 unsigned short *toggle = get_toggle_pointer(dev, urb->pipe);
577 struct r8a66597_pipe *pipe,
580 if (r8a66597_read(r8a66597, pipe->pipectr) & SQMON)
581 pipe_toggle_set(r8a66597, pipe, urb, 1);
583 pipe_toggle_set(r8a66597, pipe, urb, 0);
588 struct r8a66597_pipe *pipe,
592 unsigned char endpoint = usb_pipeendpoint(urb->pipe);
593 unsigned short *toggle = get_toggle_pointer(dev, urb->pipe);
598 r8a66597_pipe_toggle(r8a66597, pipe, *toggle & (1 << endpoint));
634 info = &td->pipe->info;
638 if (!usb_gettoggle(urb->dev, usb_pipeendpoint(urb->pipe),
639 usb_pipeout(urb->pipe)) &&
640 !usb_pipecontrol(urb->pipe)) {
641 r8a66597_pipe_toggle(r8a66597, td->pipe, 0);
642 pipe_toggle_set(r8a66597, td->pipe, urb, 0);
643 clear_all_buffer(r8a66597, td->pipe);
644 usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe),
645 usb_pipeout(urb->pipe), 1);
647 pipe_toggle_restore(r8a66597, td->pipe, urb);
755 struct r8a66597_pipe *pipe,
759 struct r8a66597_pipe_info *info = &pipe->info;
762 /* pipe dma is only for external controlles */
766 if ((pipe->info.pipenum != 0) && (info->type != R8A66597_INT)) {
773 "DMA FIFO\n", usb_pipedevice(urb->pipe),
780 set_pipe_reg_addr(pipe, i);
783 r8a66597_mdfy(r8a66597, mbw | pipe->info.pipenum,
784 mbw | CURPIPE, pipe->fifosel);
786 r8a66597_reg_wait(r8a66597, pipe->fifosel, CURPIPE,
787 pipe->info.pipenum);
788 r8a66597_bset(r8a66597, BCLR, pipe->fifoctr);
800 struct r8a66597_pipe *pipe = hep->hcpriv;
804 pipe->info = *info;
805 set_pipe_reg_addr(pipe, R8A66597_PIPE_NO_DMA);
806 r8a66597->pipe_cnt[pipe->info.pipenum]++;
807 dev->pipe_cnt[pipe->info.pipenum]++;
809 enable_r8a66597_pipe_dma(r8a66597, dev, pipe, urb);
817 if (usb_pipein(urb->pipe) && usb_pipetype(urb->pipe) != PIPE_CONTROL) {
918 if (usb_pipeisoc(urb->pipe))
972 if (pipenum == 0 && usb_pipeout(urb->pipe))
977 if (!usb_pipeisoc(urb->pipe))
1088 if (usb_pipecontrol(urb->pipe)) {
1093 r8a66597_pipe_toggle(r8a66597, td->pipe, 1);
1097 pipe_start(r8a66597, td->pipe);
1103 pipe_stop(r8a66597, td->pipe);
1106 if (td->pipe->pipetre) {
1108 td->pipe->pipetre);
1113 td->pipe->pipetrn);
1115 td->pipe->pipetre);
1118 pipe_start(r8a66597, td->pipe);
1131 if (usb_pipecontrol(urb->pipe)) {
1132 pipe_stop(r8a66597, td->pipe);
1137 r8a66597_pipe_toggle(r8a66597, td->pipe, 1);
1143 if (td->pipe->pipetre)
1144 r8a66597_bclr(r8a66597, TRENB, td->pipe->pipetre);
1148 fifo_change_from_pipe(r8a66597, td->pipe);
1149 tmp = r8a66597_read(r8a66597, td->pipe->fifoctr);
1154 pipe_start(r8a66597, td->pipe);
1163 r8a66597_pipe_toggle(r8a66597, td->pipe, 1);
1164 pipe_stop(r8a66597, td->pipe);
1181 pipe_start(r8a66597, td->pipe);
1228 if (usb_pipeisoc(urb->pipe)) {
1249 !usb_pipecontrol(td->urb->pipe) && usb_pipein(td->urb->pipe)) {
1251 switch (usb_pipetype(td->urb->pipe)) {
1280 pipe_toggle_save(r8a66597, td->pipe, urb);
1289 if (usb_pipeisoc(urb->pipe))
1319 fifo_change_from_pipe(r8a66597, td->pipe);
1320 tmp = r8a66597_read(r8a66597, td->pipe->fifoctr);
1322 pipe_stop(r8a66597, td->pipe);
1331 if (usb_pipeisoc(urb->pipe)) {
1355 if (usb_pipeisoc(urb->pipe)) {
1364 pipe_stop(r8a66597, td->pipe);
1372 r8a66597_write(r8a66597, BCLR, td->pipe->fifoctr);
1374 r8a66597_read_fifo(r8a66597, td->pipe->fifoaddr,
1394 fifo_change_from_pipe(r8a66597, td->pipe);
1395 tmp = r8a66597_read(r8a66597, td->pipe->fifoctr);
1397 pipe_stop(r8a66597, td->pipe);
1406 if (usb_pipeisoc(urb->pipe)) {
1421 r8a66597_write_fifo(r8a66597, td->pipe, buf, size);
1422 if (!usb_pipebulk(urb->pipe) || td->maxpacket != size)
1423 r8a66597_write(r8a66597, BVAL, td->pipe->fifoctr);
1428 if (usb_pipeisoc(urb->pipe)) {
1438 if (!usb_pipeisoc(urb->pipe))
1464 else if (usb_pipeout(urb->pipe))
1485 u16 pid = r8a66597_read(r8a66597, td->pipe->pipectr) & PID;
1556 tmp = r8a66597_read(r8a66597, td->pipe->pipectr);
1594 pipe_stop(r8a66597, td->pipe);
1752 struct r8a66597_pipe *pipe;
1772 pipe = td->pipe;
1773 pipe_stop(r8a66597, pipe);
1786 td->pipe->info.epnum == new_td->pipe->info.epnum);
1841 unsigned int usb_address = usb_pipedevice(urb->pipe);
1867 td->pipe = hep->hcpriv;
1870 td->maxpacket = usb_maxpacket(urb->dev, urb->pipe);
1871 if (usb_pipecontrol(urb->pipe))
1873 else if (usb_pipein(urb->pipe))
1910 if (usb_pipeendpoint(urb->pipe))
1929 if (td->pipe->info.timer_interval) {
1933 td->pipe->info.timer_interval));
1967 pipe_stop(r8a66597, td->pipe);
1983 struct r8a66597_pipe *pipe = (struct r8a66597_pipe *)hep->hcpriv;
1989 if (pipe == NULL)
1991 pipenum = pipe->info.pipenum;
2001 pipe_stop(r8a66597, pipe);