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 = readl(hsotg->regs + HCCHAR(chan->hc_num)); in dwc2_dump_channel_info()
84 hcsplt = readl(hsotg->regs + HCSPLT(chan->hc_num)); in dwc2_dump_channel_info()
85 hctsiz = readl(hsotg->regs + HCTSIZ(chan->hc_num)); in dwc2_dump_channel_info()
86 hc_dma = 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()
559 struct dwc2_host_chan *chan, *chan_tmp; in dwc2_hcd_reinit() local
578 list_for_each_entry_safe(chan, chan_tmp, &hsotg->free_hc_list, in dwc2_hcd_reinit()
580 list_del_init(&chan->hc_list_entry); in dwc2_hcd_reinit()
584 chan = hsotg->hc_ptr_array[i]; in dwc2_hcd_reinit()
585 list_add_tail(&chan->hc_list_entry, &hsotg->free_hc_list); in dwc2_hcd_reinit()
586 dwc2_hc_cleanup(hsotg, chan); in dwc2_hcd_reinit()
594 struct dwc2_host_chan *chan, in dwc2_hc_init_split() argument
599 chan->do_split = 1; in dwc2_hc_init_split()
600 chan->xact_pos = qtd->isoc_split_pos; in dwc2_hc_init_split()
601 chan->complete_split = qtd->complete_split; in dwc2_hc_init_split()
603 chan->hub_addr = (u8)hub_addr; in dwc2_hc_init_split()
604 chan->hub_port = (u8)hub_port; in dwc2_hc_init_split()
608 struct dwc2_host_chan *chan, in dwc2_hc_init_xfer() argument
616 chan->ep_type = USB_ENDPOINT_XFER_CONTROL; in dwc2_hc_init_xfer()
621 chan->do_ping = 0; in dwc2_hc_init_xfer()
622 chan->ep_is_in = 0; in dwc2_hc_init_xfer()
623 chan->data_pid_start = DWC2_HC_PID_SETUP; in dwc2_hc_init_xfer()
625 chan->xfer_dma = urb->setup_dma; in dwc2_hc_init_xfer()
627 chan->xfer_buf = urb->setup_packet; in dwc2_hc_init_xfer()
628 chan->xfer_len = 8; in dwc2_hc_init_xfer()
634 chan->data_pid_start = qtd->data_toggle; in dwc2_hc_init_xfer()
644 chan->ep_is_in = 1; in dwc2_hc_init_xfer()
646 chan->ep_is_in = in dwc2_hc_init_xfer()
648 if (chan->ep_is_in) in dwc2_hc_init_xfer()
649 chan->do_ping = 0; in dwc2_hc_init_xfer()
650 chan->data_pid_start = DWC2_HC_PID_DATA1; in dwc2_hc_init_xfer()
651 chan->xfer_len = 0; in dwc2_hc_init_xfer()
653 chan->xfer_dma = hsotg->status_buf_dma; in dwc2_hc_init_xfer()
655 chan->xfer_buf = hsotg->status_buf; in dwc2_hc_init_xfer()
662 chan->ep_type = USB_ENDPOINT_XFER_BULK; in dwc2_hc_init_xfer()
666 chan->ep_type = USB_ENDPOINT_XFER_INT; in dwc2_hc_init_xfer()
670 chan->ep_type = USB_ENDPOINT_XFER_ISOC; in dwc2_hc_init_xfer()
678 chan->xfer_dma = urb->dma; in dwc2_hc_init_xfer()
679 chan->xfer_dma += frame_desc->offset + in dwc2_hc_init_xfer()
682 chan->xfer_buf = urb->buf; in dwc2_hc_init_xfer()
683 chan->xfer_buf += frame_desc->offset + in dwc2_hc_init_xfer()
687 chan->xfer_len = frame_desc->length - qtd->isoc_split_offset; in dwc2_hc_init_xfer()
691 (chan->xfer_dma & 0x3)) in dwc2_hc_init_xfer()
697 if (chan->xact_pos == DWC2_HCSPLT_XACTPOS_ALL) { in dwc2_hc_init_xfer()
698 if (chan->xfer_len <= 188) in dwc2_hc_init_xfer()
699 chan->xact_pos = DWC2_HCSPLT_XACTPOS_ALL; in dwc2_hc_init_xfer()
701 chan->xact_pos = DWC2_HCSPLT_XACTPOS_BEGIN; in dwc2_hc_init_xfer()
710 struct dwc2_host_chan *chan, in dwc2_hc_setup_align_buf() argument
718 if (chan->ep_type != USB_ENDPOINT_XFER_ISOC) in dwc2_hc_setup_align_buf()
732 if (chan->xfer_len) { in dwc2_hc_setup_align_buf()
743 if (!chan->ep_is_in) in dwc2_hc_setup_align_buf()
745 chan->xfer_len); in dwc2_hc_setup_align_buf()
751 chan->align_buf = qh->dw_align_buf_dma; in dwc2_hc_setup_align_buf()
766 struct dwc2_host_chan *chan; in dwc2_assign_and_init_hc() local
784 chan = list_first_entry(&hsotg->free_hc_list, struct dwc2_host_chan, in dwc2_assign_and_init_hc()
788 list_del_init(&chan->hc_list_entry); in dwc2_assign_and_init_hc()
792 qh->channel = chan; in dwc2_assign_and_init_hc()
799 chan->dev_addr = dwc2_hcd_get_dev_addr(&urb->pipe_info); in dwc2_assign_and_init_hc()
800 chan->ep_num = dwc2_hcd_get_ep_num(&urb->pipe_info); in dwc2_assign_and_init_hc()
801 chan->speed = qh->dev_speed; in dwc2_assign_and_init_hc()
802 chan->max_packet = dwc2_max_packet(qh->maxp); in dwc2_assign_and_init_hc()
804 chan->xfer_started = 0; in dwc2_assign_and_init_hc()
805 chan->halt_status = DWC2_HC_XFER_NO_HALT_STATUS; in dwc2_assign_and_init_hc()
806 chan->error_state = (qtd->error_count > 0); in dwc2_assign_and_init_hc()
807 chan->halt_on_queue = 0; in dwc2_assign_and_init_hc()
808 chan->halt_pending = 0; in dwc2_assign_and_init_hc()
809 chan->requests = 0; in dwc2_assign_and_init_hc()
818 chan->ep_is_in = (dwc2_hcd_is_pipe_in(&urb->pipe_info) != 0); in dwc2_assign_and_init_hc()
819 if (chan->ep_is_in) in dwc2_assign_and_init_hc()
820 chan->do_ping = 0; in dwc2_assign_and_init_hc()
822 chan->do_ping = qh->ping_state; in dwc2_assign_and_init_hc()
824 chan->data_pid_start = qh->data_toggle; in dwc2_assign_and_init_hc()
825 chan->multi_count = 1; in dwc2_assign_and_init_hc()
832 chan->xfer_dma = urb->dma + urb->actual_length; in dwc2_assign_and_init_hc()
836 (chan->xfer_dma & 0x3)) in dwc2_assign_and_init_hc()
839 chan->xfer_buf = (u8 *)urb->buf + urb->actual_length; in dwc2_assign_and_init_hc()
842 chan->xfer_len = urb->length - urb->actual_length; in dwc2_assign_and_init_hc()
843 chan->xfer_count = 0; in dwc2_assign_and_init_hc()
847 dwc2_hc_init_split(hsotg, chan, qtd, urb); in dwc2_assign_and_init_hc()
849 chan->do_split = 0; in dwc2_assign_and_init_hc()
852 bufptr = dwc2_hc_init_xfer(hsotg, chan, qtd, bufptr); in dwc2_assign_and_init_hc()
857 if (dwc2_hc_setup_align_buf(hsotg, qh, chan, urb, bufptr)) { in dwc2_assign_and_init_hc()
862 chan->align_buf = 0; in dwc2_assign_and_init_hc()
863 chan->multi_count = 0; in dwc2_assign_and_init_hc()
864 list_add_tail(&chan->hc_list_entry, in dwc2_assign_and_init_hc()
871 chan->align_buf = 0; in dwc2_assign_and_init_hc()
874 if (chan->ep_type == USB_ENDPOINT_XFER_INT || in dwc2_assign_and_init_hc()
875 chan->ep_type == USB_ENDPOINT_XFER_ISOC) in dwc2_assign_and_init_hc()
880 chan->multi_count = dwc2_hb_mult(qh->maxp); in dwc2_assign_and_init_hc()
883 chan->desc_list_addr = qh->desc_list_dma; in dwc2_assign_and_init_hc()
885 dwc2_hc_init(hsotg, chan); in dwc2_assign_and_init_hc()
886 chan->qh = qh; in dwc2_assign_and_init_hc()
1001 struct dwc2_host_chan *chan, in dwc2_queue_transaction() argument
1008 if (!chan->xfer_started || in dwc2_queue_transaction()
1009 chan->ep_type == USB_ENDPOINT_XFER_ISOC) { in dwc2_queue_transaction()
1010 dwc2_hcd_start_xfer_ddma(hsotg, chan->qh); in dwc2_queue_transaction()
1011 chan->qh->ping_state = 0; in dwc2_queue_transaction()
1013 } else if (!chan->xfer_started) { in dwc2_queue_transaction()
1014 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1015 chan->qh->ping_state = 0; in dwc2_queue_transaction()
1017 } else if (chan->halt_pending) { in dwc2_queue_transaction()
1019 } else if (chan->halt_on_queue) { in dwc2_queue_transaction()
1020 dwc2_hc_halt(hsotg, chan, chan->halt_status); in dwc2_queue_transaction()
1021 } else if (chan->do_ping) { in dwc2_queue_transaction()
1022 if (!chan->xfer_started) in dwc2_queue_transaction()
1023 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1024 } else if (!chan->ep_is_in || in dwc2_queue_transaction()
1025 chan->data_pid_start == DWC2_HC_PID_SETUP) { in dwc2_queue_transaction()
1026 if ((fifo_dwords_avail * 4) >= chan->max_packet) { in dwc2_queue_transaction()
1027 if (!chan->xfer_started) { in dwc2_queue_transaction()
1028 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1031 retval = dwc2_hc_continue_transfer(hsotg, chan); in dwc2_queue_transaction()
1037 if (!chan->xfer_started) { in dwc2_queue_transaction()
1038 dwc2_hc_start_transfer(hsotg, chan); in dwc2_queue_transaction()
1041 retval = dwc2_hc_continue_transfer(hsotg, chan); in dwc2_queue_transaction()
1883 struct dwc2_host_chan *chan; in dwc2_hcd_dump_state() local
1899 chan = hsotg->hc_ptr_array[i]; in dwc2_hcd_dump_state()
1903 chan->dev_addr, chan->ep_num, chan->ep_is_in); in dwc2_hcd_dump_state()
1904 dev_dbg(hsotg->dev, " speed: %d\n", chan->speed); in dwc2_hcd_dump_state()
1905 dev_dbg(hsotg->dev, " ep_type: %d\n", chan->ep_type); in dwc2_hcd_dump_state()
1906 dev_dbg(hsotg->dev, " max_packet: %d\n", chan->max_packet); in dwc2_hcd_dump_state()
1908 chan->data_pid_start); in dwc2_hcd_dump_state()
1909 dev_dbg(hsotg->dev, " multi_count: %d\n", chan->multi_count); in dwc2_hcd_dump_state()
1911 chan->xfer_started); in dwc2_hcd_dump_state()
1912 dev_dbg(hsotg->dev, " xfer_buf: %p\n", chan->xfer_buf); in dwc2_hcd_dump_state()
1914 (unsigned long)chan->xfer_dma); in dwc2_hcd_dump_state()
1915 dev_dbg(hsotg->dev, " xfer_len: %d\n", chan->xfer_len); in dwc2_hcd_dump_state()
1916 dev_dbg(hsotg->dev, " xfer_count: %d\n", chan->xfer_count); in dwc2_hcd_dump_state()
1918 chan->halt_on_queue); in dwc2_hcd_dump_state()
1920 chan->halt_pending); in dwc2_hcd_dump_state()
1921 dev_dbg(hsotg->dev, " halt_status: %d\n", chan->halt_status); in dwc2_hcd_dump_state()
1922 dev_dbg(hsotg->dev, " do_split: %d\n", chan->do_split); in dwc2_hcd_dump_state()
1924 chan->complete_split); in dwc2_hcd_dump_state()
1925 dev_dbg(hsotg->dev, " hub_addr: %d\n", chan->hub_addr); in dwc2_hcd_dump_state()
1926 dev_dbg(hsotg->dev, " hub_port: %d\n", chan->hub_port); in dwc2_hcd_dump_state()
1927 dev_dbg(hsotg->dev, " xact_pos: %d\n", chan->xact_pos); in dwc2_hcd_dump_state()
1928 dev_dbg(hsotg->dev, " requests: %d\n", chan->requests); in dwc2_hcd_dump_state()
1929 dev_dbg(hsotg->dev, " qh: %p\n", chan->qh); in dwc2_hcd_dump_state()
1931 if (chan->xfer_started) { in dwc2_hcd_dump_state()
1946 if (!(chan->xfer_started && chan->qh)) in dwc2_hcd_dump_state()
1949 list_for_each_entry(qtd, &chan->qh->qtd_list, qtd_list_entry) { in dwc2_hcd_dump_state()
2710 struct dwc2_host_chan *chan = hsotg->hc_ptr_array[i]; in dwc2_hcd_free() local
2712 if (chan != NULL) { in dwc2_hcd_free()
2714 i, chan); in dwc2_hcd_free()
2716 kfree(chan); in dwc2_hcd_free()