Lines Matching refs:chan

69 				   struct dwc2_host_chan *chan)  in dwc2_dump_channel_info()  argument
80 if (chan == NULL) in dwc2_dump_channel_info()
83 hcchar = dwc2_readl(hsotg->regs + HCCHAR(chan->hc_num)); in dwc2_dump_channel_info()
84 hcsplt = dwc2_readl(hsotg->regs + HCSPLT(chan->hc_num)); in dwc2_dump_channel_info()
85 hctsiz = dwc2_readl(hsotg->regs + HCTSIZ(chan->hc_num)); in dwc2_dump_channel_info()
86 hc_dma = dwc2_readl(hsotg->regs + HCDMA(chan->hc_num)); in dwc2_dump_channel_info()
88 dev_dbg(hsotg->dev, " Assigned to channel %p:\n", chan); in dwc2_dump_channel_info()
94 chan->dev_addr, chan->ep_num, chan->ep_is_in); in dwc2_dump_channel_info()
95 dev_dbg(hsotg->dev, " ep_type: %d\n", chan->ep_type); in dwc2_dump_channel_info()
96 dev_dbg(hsotg->dev, " max_packet: %d\n", chan->max_packet); in dwc2_dump_channel_info()
97 dev_dbg(hsotg->dev, " data_pid_start: %d\n", chan->data_pid_start); in dwc2_dump_channel_info()
98 dev_dbg(hsotg->dev, " xfer_started: %d\n", chan->xfer_started); in dwc2_dump_channel_info()
99 dev_dbg(hsotg->dev, " halt_status: %d\n", chan->halt_status); in dwc2_dump_channel_info()
100 dev_dbg(hsotg->dev, " xfer_buf: %p\n", chan->xfer_buf); in dwc2_dump_channel_info()
102 (unsigned long)chan->xfer_dma); in dwc2_dump_channel_info()
103 dev_dbg(hsotg->dev, " xfer_len: %d\n", chan->xfer_len); in dwc2_dump_channel_info()
104 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh); in dwc2_dump_channel_info()
115 struct dwc2_host_chan *chan = hsotg->hc_ptr_array[i]; in dwc2_dump_channel_info() local
117 dev_dbg(hsotg->dev, " %2d: %p\n", i, chan); in dwc2_dump_channel_info()
554 struct dwc2_host_chan *chan, *chan_tmp; in dwc2_hcd_reinit() local
573 list_for_each_entry_safe(chan, chan_tmp, &hsotg->free_hc_list, in dwc2_hcd_reinit()
575 list_del_init(&chan->hc_list_entry); in dwc2_hcd_reinit()
579 chan = hsotg->hc_ptr_array[i]; in dwc2_hcd_reinit()
580 list_add_tail(&chan->hc_list_entry, &hsotg->free_hc_list); in dwc2_hcd_reinit()
581 dwc2_hc_cleanup(hsotg, chan); in dwc2_hcd_reinit()
589 struct dwc2_host_chan *chan, in dwc2_hc_init_split() argument
594 chan->do_split = 1; in dwc2_hc_init_split()
595 chan->xact_pos = qtd->isoc_split_pos; in dwc2_hc_init_split()
596 chan->complete_split = qtd->complete_split; in dwc2_hc_init_split()
598 chan->hub_addr = (u8)hub_addr; in dwc2_hc_init_split()
599 chan->hub_port = (u8)hub_port; in dwc2_hc_init_split()
603 struct dwc2_host_chan *chan, in dwc2_hc_init_xfer() argument
611 chan->ep_type = USB_ENDPOINT_XFER_CONTROL; in dwc2_hc_init_xfer()
616 chan->do_ping = 0; in dwc2_hc_init_xfer()
617 chan->ep_is_in = 0; in dwc2_hc_init_xfer()
618 chan->data_pid_start = DWC2_HC_PID_SETUP; in dwc2_hc_init_xfer()
620 chan->xfer_dma = urb->setup_dma; in dwc2_hc_init_xfer()
622 chan->xfer_buf = urb->setup_packet; in dwc2_hc_init_xfer()
623 chan->xfer_len = 8; in dwc2_hc_init_xfer()
629 chan->data_pid_start = qtd->data_toggle; in dwc2_hc_init_xfer()
639 chan->ep_is_in = 1; in dwc2_hc_init_xfer()
641 chan->ep_is_in = in dwc2_hc_init_xfer()
643 if (chan->ep_is_in) in dwc2_hc_init_xfer()
644 chan->do_ping = 0; in dwc2_hc_init_xfer()
645 chan->data_pid_start = DWC2_HC_PID_DATA1; in dwc2_hc_init_xfer()
646 chan->xfer_len = 0; in dwc2_hc_init_xfer()
648 chan->xfer_dma = hsotg->status_buf_dma; in dwc2_hc_init_xfer()
650 chan->xfer_buf = hsotg->status_buf; in dwc2_hc_init_xfer()
657 chan->ep_type = USB_ENDPOINT_XFER_BULK; in dwc2_hc_init_xfer()
661 chan->ep_type = USB_ENDPOINT_XFER_INT; in dwc2_hc_init_xfer()
665 chan->ep_type = USB_ENDPOINT_XFER_ISOC; in dwc2_hc_init_xfer()
673 chan->xfer_dma = urb->dma; in dwc2_hc_init_xfer()
674 chan->xfer_dma += frame_desc->offset + in dwc2_hc_init_xfer()
677 chan->xfer_buf = urb->buf; in dwc2_hc_init_xfer()
678 chan->xfer_buf += frame_desc->offset + in dwc2_hc_init_xfer()
682 chan->xfer_len = frame_desc->length - qtd->isoc_split_offset; in dwc2_hc_init_xfer()
686 (chan->xfer_dma & 0x3)) in dwc2_hc_init_xfer()
692 if (chan->xact_pos == DWC2_HCSPLT_XACTPOS_ALL) { in dwc2_hc_init_xfer()
693 if (chan->xfer_len <= 188) in dwc2_hc_init_xfer()
694 chan->xact_pos = DWC2_HCSPLT_XACTPOS_ALL; in dwc2_hc_init_xfer()
696 chan->xact_pos = DWC2_HCSPLT_XACTPOS_BEGIN; in dwc2_hc_init_xfer()
705 struct dwc2_host_chan *chan, in dwc2_hc_setup_align_buf() argument
713 if (chan->ep_type != USB_ENDPOINT_XFER_ISOC) in dwc2_hc_setup_align_buf()
725 if (chan->xfer_len) { in dwc2_hc_setup_align_buf()
736 if (!chan->ep_is_in) in dwc2_hc_setup_align_buf()
738 chan->xfer_len); in dwc2_hc_setup_align_buf()
746 chan->ep_is_in ? DMA_FROM_DEVICE : DMA_TO_DEVICE); in dwc2_hc_setup_align_buf()
749 chan->align_buf = 0; in dwc2_hc_setup_align_buf()
753 chan->align_buf = qh->dw_align_buf_dma; in dwc2_hc_setup_align_buf()
768 struct dwc2_host_chan *chan; in dwc2_assign_and_init_hc() local
786 chan = list_first_entry(&hsotg->free_hc_list, struct dwc2_host_chan, in dwc2_assign_and_init_hc()
790 list_del_init(&chan->hc_list_entry); in dwc2_assign_and_init_hc()
794 qh->channel = chan; in dwc2_assign_and_init_hc()
801 chan->dev_addr = dwc2_hcd_get_dev_addr(&urb->pipe_info); in dwc2_assign_and_init_hc()
802 chan->ep_num = dwc2_hcd_get_ep_num(&urb->pipe_info); in dwc2_assign_and_init_hc()
803 chan->speed = qh->dev_speed; in dwc2_assign_and_init_hc()
804 chan->max_packet = dwc2_max_packet(qh->maxp); in dwc2_assign_and_init_hc()
806 chan->xfer_started = 0; in dwc2_assign_and_init_hc()
807 chan->halt_status = DWC2_HC_XFER_NO_HALT_STATUS; in dwc2_assign_and_init_hc()
808 chan->error_state = (qtd->error_count > 0); in dwc2_assign_and_init_hc()
809 chan->halt_on_queue = 0; in dwc2_assign_and_init_hc()
810 chan->halt_pending = 0; in dwc2_assign_and_init_hc()
811 chan->requests = 0; in dwc2_assign_and_init_hc()
820 chan->ep_is_in = (dwc2_hcd_is_pipe_in(&urb->pipe_info) != 0); in dwc2_assign_and_init_hc()
821 if (chan->ep_is_in) in dwc2_assign_and_init_hc()
822 chan->do_ping = 0; in dwc2_assign_and_init_hc()
824 chan->do_ping = qh->ping_state; in dwc2_assign_and_init_hc()
826 chan->data_pid_start = qh->data_toggle; in dwc2_assign_and_init_hc()
827 chan->multi_count = 1; in dwc2_assign_and_init_hc()
834 chan->xfer_dma = urb->dma + urb->actual_length; in dwc2_assign_and_init_hc()
838 (chan->xfer_dma & 0x3)) in dwc2_assign_and_init_hc()
841 chan->xfer_buf = (u8 *)urb->buf + urb->actual_length; in dwc2_assign_and_init_hc()
844 chan->xfer_len = urb->length - urb->actual_length; in dwc2_assign_and_init_hc()
845 chan->xfer_count = 0; in dwc2_assign_and_init_hc()
849 dwc2_hc_init_split(hsotg, chan, qtd, urb); in dwc2_assign_and_init_hc()
851 chan->do_split = 0; in dwc2_assign_and_init_hc()
854 bufptr = dwc2_hc_init_xfer(hsotg, chan, qtd, bufptr); in dwc2_assign_and_init_hc()
859 if (dwc2_hc_setup_align_buf(hsotg, qh, chan, urb, bufptr)) { in dwc2_assign_and_init_hc()
864 chan->align_buf = 0; in dwc2_assign_and_init_hc()
865 chan->multi_count = 0; in dwc2_assign_and_init_hc()
866 list_add_tail(&chan->hc_list_entry, in dwc2_assign_and_init_hc()
873 chan->align_buf = 0; in dwc2_assign_and_init_hc()
876 if (chan->ep_type == USB_ENDPOINT_XFER_INT || in dwc2_assign_and_init_hc()
877 chan->ep_type == USB_ENDPOINT_XFER_ISOC) in dwc2_assign_and_init_hc()
882 chan->multi_count = dwc2_hb_mult(qh->maxp); in dwc2_assign_and_init_hc()
885 chan->desc_list_addr = qh->desc_list_dma; in dwc2_assign_and_init_hc()
887 dwc2_hc_init(hsotg, chan); in dwc2_assign_and_init_hc()
888 chan->qh = qh; in dwc2_assign_and_init_hc()
1003 struct dwc2_host_chan *chan, in dwc2_queue_transaction() argument
1010 if (!chan->xfer_started || in dwc2_queue_transaction()
1011 chan->ep_type == USB_ENDPOINT_XFER_ISOC) { in dwc2_queue_transaction()
1012 dwc2_hcd_start_xfer_ddma(hsotg, chan->qh); in dwc2_queue_transaction()
1013 chan->qh->ping_state = 0; in dwc2_queue_transaction()
1015 } else if (!chan->xfer_started) { in dwc2_queue_transaction()
1016 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1017 chan->qh->ping_state = 0; in dwc2_queue_transaction()
1019 } else if (chan->halt_pending) { in dwc2_queue_transaction()
1021 } else if (chan->halt_on_queue) { in dwc2_queue_transaction()
1022 dwc2_hc_halt(hsotg, chan, chan->halt_status); in dwc2_queue_transaction()
1023 } else if (chan->do_ping) { in dwc2_queue_transaction()
1024 if (!chan->xfer_started) in dwc2_queue_transaction()
1025 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1026 } else if (!chan->ep_is_in || in dwc2_queue_transaction()
1027 chan->data_pid_start == DWC2_HC_PID_SETUP) { in dwc2_queue_transaction()
1028 if ((fifo_dwords_avail * 4) >= chan->max_packet) { in dwc2_queue_transaction()
1029 if (!chan->xfer_started) { in dwc2_queue_transaction()
1030 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1033 retval = dwc2_hc_continue_transfer(hsotg, chan); in dwc2_queue_transaction()
1039 if (!chan->xfer_started) { in dwc2_queue_transaction()
1040 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1043 retval = dwc2_hc_continue_transfer(hsotg, chan); in dwc2_queue_transaction()
1933 struct dwc2_host_chan *chan; in dwc2_hcd_dump_state() local
1949 chan = hsotg->hc_ptr_array[i]; in dwc2_hcd_dump_state()
1953 chan->dev_addr, chan->ep_num, chan->ep_is_in); in dwc2_hcd_dump_state()
1954 dev_dbg(hsotg->dev, " speed: %d\n", chan->speed); in dwc2_hcd_dump_state()
1955 dev_dbg(hsotg->dev, " ep_type: %d\n", chan->ep_type); in dwc2_hcd_dump_state()
1956 dev_dbg(hsotg->dev, " max_packet: %d\n", chan->max_packet); in dwc2_hcd_dump_state()
1958 chan->data_pid_start); in dwc2_hcd_dump_state()
1959 dev_dbg(hsotg->dev, " multi_count: %d\n", chan->multi_count); in dwc2_hcd_dump_state()
1961 chan->xfer_started); in dwc2_hcd_dump_state()
1962 dev_dbg(hsotg->dev, " xfer_buf: %p\n", chan->xfer_buf); in dwc2_hcd_dump_state()
1964 (unsigned long)chan->xfer_dma); in dwc2_hcd_dump_state()
1965 dev_dbg(hsotg->dev, " xfer_len: %d\n", chan->xfer_len); in dwc2_hcd_dump_state()
1966 dev_dbg(hsotg->dev, " xfer_count: %d\n", chan->xfer_count); in dwc2_hcd_dump_state()
1968 chan->halt_on_queue); in dwc2_hcd_dump_state()
1970 chan->halt_pending); in dwc2_hcd_dump_state()
1971 dev_dbg(hsotg->dev, " halt_status: %d\n", chan->halt_status); in dwc2_hcd_dump_state()
1972 dev_dbg(hsotg->dev, " do_split: %d\n", chan->do_split); in dwc2_hcd_dump_state()
1974 chan->complete_split); in dwc2_hcd_dump_state()
1975 dev_dbg(hsotg->dev, " hub_addr: %d\n", chan->hub_addr); in dwc2_hcd_dump_state()
1976 dev_dbg(hsotg->dev, " hub_port: %d\n", chan->hub_port); in dwc2_hcd_dump_state()
1977 dev_dbg(hsotg->dev, " xact_pos: %d\n", chan->xact_pos); in dwc2_hcd_dump_state()
1978 dev_dbg(hsotg->dev, " requests: %d\n", chan->requests); in dwc2_hcd_dump_state()
1979 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh); in dwc2_hcd_dump_state()
1981 if (chan->xfer_started) { in dwc2_hcd_dump_state()
1996 if (!(chan->xfer_started && chan->qh)) in dwc2_hcd_dump_state()
1999 list_for_each_entry(qtd, &chan->qh->qtd_list, qtd_list_entry) { in dwc2_hcd_dump_state()
2932 struct dwc2_host_chan *chan = hsotg->hc_ptr_array[i]; in dwc2_hcd_free() local
2934 if (chan != NULL) { in dwc2_hcd_free()
2936 i, chan); in dwc2_hcd_free()
2938 kfree(chan); in dwc2_hcd_free()