Lines Matching refs:qh

110 					 struct dwc2_qh *qh)  in dwc2_check_periodic_bandwidth()  argument
117 if (qh->dev_speed == USB_SPEED_HIGH || qh->do_split) { in dwc2_check_periodic_bandwidth()
122 max_claimed_usecs = 100 - qh->host_us; in dwc2_check_periodic_bandwidth()
128 max_claimed_usecs = 900 - qh->host_us; in dwc2_check_periodic_bandwidth()
134 __func__, hsotg->periodic_usecs, qh->host_us); in dwc2_check_periodic_bandwidth()
375 struct dwc2_qh *qh) in dwc2_get_ls_map() argument
380 if (WARN_ON(!qh->dwc_tt)) in dwc2_get_ls_map()
384 map = qh->dwc_tt->periodic_bitmaps; in dwc2_get_ls_map()
385 if (qh->dwc_tt->usb_tt->multi) in dwc2_get_ls_map()
386 map += DWC2_ELEMENTS_PER_LS_BITMAP * (qh->ttport - 1); in dwc2_get_ls_map()
493 struct dwc2_qh *qh; member
506 dwc2_sch_dbg(print_data->hsotg, "QH=%p ...%s\n", print_data->qh, str); in dwc2_qh_print()
516 struct dwc2_qh *qh) in dwc2_qh_schedule_print() argument
518 struct dwc2_qh_print_data print_data = { hsotg, qh }; in dwc2_qh_schedule_print()
527 if (qh->schedule_low_speed) { in dwc2_qh_schedule_print()
528 unsigned long *map = dwc2_get_ls_map(hsotg, qh); in dwc2_qh_schedule_print()
531 qh, qh->device_us, in dwc2_qh_schedule_print()
532 DWC2_ROUND_US_TO_SLICE(qh->device_us), in dwc2_qh_schedule_print()
533 DWC2_US_PER_SLICE * qh->ls_start_schedule_slice); in dwc2_qh_schedule_print()
538 qh, map); in dwc2_qh_schedule_print()
545 for (i = 0; i < qh->num_hs_transfers; i++) { in dwc2_qh_schedule_print()
546 struct dwc2_hs_transfer_time *trans_time = qh->hs_transfers + i; in dwc2_qh_schedule_print()
554 qh, i, trans_time->duration_us, uframe, rel_us); in dwc2_qh_schedule_print()
556 if (qh->num_hs_transfers) { in dwc2_qh_schedule_print()
557 dwc2_sch_dbg(hsotg, "QH=%p Whole high speed map now:\n", qh); in dwc2_qh_schedule_print()
566 struct dwc2_qh *qh) {}; in dwc2_qh_schedule_print() argument
584 static int dwc2_ls_pmap_schedule(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh, in dwc2_ls_pmap_schedule() argument
587 int slices = DIV_ROUND_UP(qh->device_us, DWC2_US_PER_SLICE); in dwc2_ls_pmap_schedule()
588 unsigned long *map = dwc2_get_ls_map(hsotg, qh); in dwc2_ls_pmap_schedule()
608 qh->device_interval, search_slice, false); in dwc2_ls_pmap_schedule()
613 qh->ls_start_schedule_slice = slice; in dwc2_ls_pmap_schedule()
624 struct dwc2_qh *qh) in dwc2_ls_pmap_unschedule() argument
626 int slices = DIV_ROUND_UP(qh->device_us, DWC2_US_PER_SLICE); in dwc2_ls_pmap_unschedule()
627 unsigned long *map = dwc2_get_ls_map(hsotg, qh); in dwc2_ls_pmap_unschedule()
634 DWC2_LS_SCHEDULE_FRAMES, slices, qh->device_interval, in dwc2_ls_pmap_unschedule()
635 qh->ls_start_schedule_slice); in dwc2_ls_pmap_unschedule()
658 static int dwc2_hs_pmap_schedule(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh, in dwc2_hs_pmap_schedule() argument
661 struct dwc2_hs_transfer_time *trans_time = qh->hs_transfers + index; in dwc2_hs_pmap_schedule()
667 qh->host_interval, trans_time->start_schedule_us, in dwc2_hs_pmap_schedule()
685 struct dwc2_qh *qh, int index) in dwc2_hs_pmap_unschedule() argument
687 struct dwc2_hs_transfer_time *trans_time = qh->hs_transfers + index; in dwc2_hs_pmap_unschedule()
692 qh->host_interval, trans_time->start_schedule_us); in dwc2_hs_pmap_unschedule()
709 struct dwc2_qh *qh) in dwc2_uframe_schedule_split() argument
711 int bytecount = qh->maxp_mult * qh->maxp; in dwc2_uframe_schedule_split()
720 host_interval_in_sched = gcd(qh->host_interval, in dwc2_uframe_schedule_split()
737 if (qh->ep_type == USB_ENDPOINT_XFER_ISOC && !qh->ep_is_in) in dwc2_uframe_schedule_split()
754 if (qh->schedule_low_speed) { in dwc2_uframe_schedule_split()
755 err = dwc2_ls_pmap_schedule(hsotg, qh, ls_search_slice); in dwc2_uframe_schedule_split()
774 start_s_uframe = qh->ls_start_schedule_slice / in dwc2_uframe_schedule_split()
789 if (qh->schedule_low_speed) in dwc2_uframe_schedule_split()
790 dwc2_ls_pmap_unschedule(hsotg, qh); in dwc2_uframe_schedule_split()
792 (qh->ls_start_schedule_slice / in dwc2_uframe_schedule_split()
832 if (qh->ep_type == USB_ENDPOINT_XFER_ISOC && !qh->ep_is_in) in dwc2_uframe_schedule_split()
839 DIV_ROUND_UP(188 * (qh->ls_start_schedule_slice % in dwc2_uframe_schedule_split()
861 if (!qh->ep_is_in && in dwc2_uframe_schedule_split()
865 qh, first_data_bytes, bytecount); in dwc2_uframe_schedule_split()
866 if (qh->schedule_low_speed) in dwc2_uframe_schedule_split()
867 dwc2_ls_pmap_unschedule(hsotg, qh); in dwc2_uframe_schedule_split()
874 qh->num_hs_transfers = 1 + DIV_ROUND_UP(other_data_bytes, 188); in dwc2_uframe_schedule_split()
881 if (qh->ep_type == USB_ENDPOINT_XFER_INT) { in dwc2_uframe_schedule_split()
883 qh->num_hs_transfers += 2; in dwc2_uframe_schedule_split()
885 qh->num_hs_transfers += 3; in dwc2_uframe_schedule_split()
887 if (qh->ep_is_in) { in dwc2_uframe_schedule_split()
906 if (qh->ep_is_in) { in dwc2_uframe_schedule_split()
910 qh->num_hs_transfers++; in dwc2_uframe_schedule_split()
913 last = rel_uframe + qh->num_hs_transfers + 1; in dwc2_uframe_schedule_split()
917 qh->num_hs_transfers += 2; in dwc2_uframe_schedule_split()
919 qh->num_hs_transfers += 1; in dwc2_uframe_schedule_split()
923 qh->num_hs_transfers--; in dwc2_uframe_schedule_split()
939 qh->hs_transfers[0].duration_us = HS_USECS_ISO(first_count); in dwc2_uframe_schedule_split()
940 for (i = 1; i < qh->num_hs_transfers - 1; i++) in dwc2_uframe_schedule_split()
941 qh->hs_transfers[i].duration_us = in dwc2_uframe_schedule_split()
943 if (qh->num_hs_transfers > 1) in dwc2_uframe_schedule_split()
944 qh->hs_transfers[qh->num_hs_transfers - 1].duration_us = in dwc2_uframe_schedule_split()
952 qh->hs_transfers[0].start_schedule_us = in dwc2_uframe_schedule_split()
954 for (i = 1; i < qh->num_hs_transfers; i++) in dwc2_uframe_schedule_split()
955 qh->hs_transfers[i].start_schedule_us = in dwc2_uframe_schedule_split()
961 for (i = 0; i < qh->num_hs_transfers; i++) { in dwc2_uframe_schedule_split()
962 err = dwc2_hs_pmap_schedule(hsotg, qh, true, i); in dwc2_uframe_schedule_split()
968 if (i == qh->num_hs_transfers) in dwc2_uframe_schedule_split()
972 dwc2_hs_pmap_unschedule(hsotg, qh, i); in dwc2_uframe_schedule_split()
974 if (qh->schedule_low_speed) in dwc2_uframe_schedule_split()
975 dwc2_ls_pmap_unschedule(hsotg, qh); in dwc2_uframe_schedule_split()
996 static int dwc2_uframe_schedule_hs(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_uframe_schedule_hs() argument
999 WARN_ON(qh->host_us != qh->device_us); in dwc2_uframe_schedule_hs()
1000 WARN_ON(qh->host_interval != qh->device_interval); in dwc2_uframe_schedule_hs()
1001 WARN_ON(qh->num_hs_transfers != 1); in dwc2_uframe_schedule_hs()
1004 qh->hs_transfers[0].start_schedule_us = 0; in dwc2_uframe_schedule_hs()
1005 qh->hs_transfers[0].duration_us = qh->host_us; in dwc2_uframe_schedule_hs()
1007 return dwc2_hs_pmap_schedule(hsotg, qh, false, 0); in dwc2_uframe_schedule_hs()
1019 static int dwc2_uframe_schedule_ls(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_uframe_schedule_ls() argument
1022 WARN_ON(qh->host_us != qh->device_us); in dwc2_uframe_schedule_ls()
1023 WARN_ON(qh->host_interval != qh->device_interval); in dwc2_uframe_schedule_ls()
1024 WARN_ON(!qh->schedule_low_speed); in dwc2_uframe_schedule_ls()
1027 return dwc2_ls_pmap_schedule(hsotg, qh, 0); in dwc2_uframe_schedule_ls()
1039 static int dwc2_uframe_schedule(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_uframe_schedule() argument
1043 if (qh->dev_speed == USB_SPEED_HIGH) in dwc2_uframe_schedule()
1044 ret = dwc2_uframe_schedule_hs(hsotg, qh); in dwc2_uframe_schedule()
1045 else if (!qh->do_split) in dwc2_uframe_schedule()
1046 ret = dwc2_uframe_schedule_ls(hsotg, qh); in dwc2_uframe_schedule()
1048 ret = dwc2_uframe_schedule_split(hsotg, qh); in dwc2_uframe_schedule()
1051 dwc2_sch_dbg(hsotg, "QH=%p Failed to schedule %d\n", qh, ret); in dwc2_uframe_schedule()
1053 dwc2_qh_schedule_print(hsotg, qh); in dwc2_uframe_schedule()
1064 static void dwc2_uframe_unschedule(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_uframe_unschedule() argument
1068 for (i = 0; i < qh->num_hs_transfers; i++) in dwc2_uframe_unschedule()
1069 dwc2_hs_pmap_unschedule(hsotg, qh, i); in dwc2_uframe_unschedule()
1071 if (qh->schedule_low_speed) in dwc2_uframe_unschedule()
1072 dwc2_ls_pmap_unschedule(hsotg, qh); in dwc2_uframe_unschedule()
1074 dwc2_sch_dbg(hsotg, "QH=%p Unscheduled\n", qh); in dwc2_uframe_unschedule()
1092 static void dwc2_pick_first_frame(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_pick_first_frame() argument
1119 if (qh->do_split) in dwc2_pick_first_frame()
1125 if (qh->dev_speed == USB_SPEED_HIGH || qh->do_split) { in dwc2_pick_first_frame()
1132 WARN_ON(qh->num_hs_transfers < 1); in dwc2_pick_first_frame()
1134 relative_frame = qh->hs_transfers[0].start_schedule_us / in dwc2_pick_first_frame()
1138 interval = gcd(qh->host_interval, DWC2_HS_SCHEDULE_UFRAMES); in dwc2_pick_first_frame()
1148 relative_frame = qh->ls_start_schedule_slice / in dwc2_pick_first_frame()
1150 interval = gcd(qh->host_interval, DWC2_LS_SCHEDULE_FRAMES); in dwc2_pick_first_frame()
1189 qh->next_active_frame = next_active_frame; in dwc2_pick_first_frame()
1190 qh->start_active_frame = next_active_frame; in dwc2_pick_first_frame()
1193 qh, frame_number, qh->next_active_frame); in dwc2_pick_first_frame()
1207 static int dwc2_do_reserve(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_do_reserve() argument
1212 status = dwc2_uframe_schedule(hsotg, qh); in dwc2_do_reserve()
1222 status = dwc2_check_periodic_bandwidth(hsotg, qh); in dwc2_do_reserve()
1237 hsotg->periodic_usecs += qh->host_us; in dwc2_do_reserve()
1239 dwc2_pick_first_frame(hsotg, qh); in dwc2_do_reserve()
1253 static void dwc2_do_unreserve(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_do_unreserve() argument
1257 WARN_ON(!qh->unreserve_pending); in dwc2_do_unreserve()
1260 qh->unreserve_pending = false; in dwc2_do_unreserve()
1262 if (WARN_ON(!list_empty(&qh->qh_list_entry))) in dwc2_do_unreserve()
1263 list_del_init(&qh->qh_list_entry); in dwc2_do_unreserve()
1266 hsotg->periodic_usecs -= qh->host_us; in dwc2_do_unreserve()
1269 dwc2_uframe_unschedule(hsotg, qh); in dwc2_do_unreserve()
1290 struct dwc2_qh *qh = from_timer(qh, t, unreserve_timer); in dwc2_unreserve_timer_fn() local
1291 struct dwc2_hsotg *hsotg = qh->hsotg; in dwc2_unreserve_timer_fn()
1304 if (timer_pending(&qh->unreserve_timer)) in dwc2_unreserve_timer_fn()
1318 if (qh->unreserve_pending) in dwc2_unreserve_timer_fn()
1319 dwc2_do_unreserve(hsotg, qh); in dwc2_unreserve_timer_fn()
1335 struct dwc2_qh *qh) in dwc2_check_max_xfer_size() argument
1341 max_xfer_size = qh->maxp * qh->maxp_mult; in dwc2_check_max_xfer_size()
1364 static int dwc2_schedule_periodic(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_schedule_periodic() argument
1368 status = dwc2_check_max_xfer_size(hsotg, qh); in dwc2_schedule_periodic()
1377 if (del_timer(&qh->unreserve_timer)) in dwc2_schedule_periodic()
1378 WARN_ON(!qh->unreserve_pending); in dwc2_schedule_periodic()
1387 if (!qh->unreserve_pending) { in dwc2_schedule_periodic()
1388 status = dwc2_do_reserve(hsotg, qh); in dwc2_schedule_periodic()
1398 if (dwc2_frame_num_le(qh->next_active_frame, in dwc2_schedule_periodic()
1400 dwc2_pick_first_frame(hsotg, qh); in dwc2_schedule_periodic()
1403 qh->unreserve_pending = 0; in dwc2_schedule_periodic()
1407 list_add_tail(&qh->qh_list_entry, &hsotg->periodic_sched_ready); in dwc2_schedule_periodic()
1410 list_add_tail(&qh->qh_list_entry, in dwc2_schedule_periodic()
1424 struct dwc2_qh *qh) in dwc2_deschedule_periodic() argument
1445 did_modify = mod_timer(&qh->unreserve_timer, in dwc2_deschedule_periodic()
1448 qh->unreserve_pending = 1; in dwc2_deschedule_periodic()
1450 list_del_init(&qh->qh_list_entry); in dwc2_deschedule_periodic()
1478 struct dwc2_qh *qh = container_of(t, struct dwc2_qh, wait_timer); in dwc2_wait_timer_fn() local
1479 struct dwc2_hsotg *hsotg = qh->hsotg; in dwc2_wait_timer_fn()
1488 if (!qh->wait_timer_cancel) { in dwc2_wait_timer_fn()
1491 qh->want_wait = false; in dwc2_wait_timer_fn()
1493 list_move(&qh->qh_list_entry, in dwc2_wait_timer_fn()
1514 static void dwc2_qh_init(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh, in dwc2_qh_init() argument
1532 qh->hsotg = hsotg; in dwc2_qh_init()
1533 timer_setup(&qh->unreserve_timer, dwc2_unreserve_timer_fn, 0); in dwc2_qh_init()
1534 hrtimer_init(&qh->wait_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); in dwc2_qh_init()
1535 qh->wait_timer.function = &dwc2_wait_timer_fn; in dwc2_qh_init()
1536 qh->ep_type = ep_type; in dwc2_qh_init()
1537 qh->ep_is_in = ep_is_in; in dwc2_qh_init()
1539 qh->data_toggle = DWC2_HC_PID_DATA0; in dwc2_qh_init()
1540 qh->maxp = maxp; in dwc2_qh_init()
1541 qh->maxp_mult = maxp_mult; in dwc2_qh_init()
1542 INIT_LIST_HEAD(&qh->qtd_list); in dwc2_qh_init()
1543 INIT_LIST_HEAD(&qh->qh_list_entry); in dwc2_qh_init()
1545 qh->do_split = do_split; in dwc2_qh_init()
1546 qh->dev_speed = dev_speed; in dwc2_qh_init()
1553 &qh->ttport); in dwc2_qh_init()
1556 qh->dwc_tt = dwc_tt; in dwc2_qh_init()
1558 qh->host_us = NS_TO_US(usb_calc_bus_time(host_speed, ep_is_in, in dwc2_qh_init()
1565 qh->device_us = NS_TO_US(device_ns); in dwc2_qh_init()
1567 qh->device_interval = urb->interval; in dwc2_qh_init()
1568 qh->host_interval = urb->interval * (do_split ? 8 : 1); in dwc2_qh_init()
1575 qh->schedule_low_speed = prtspd != HPRT0_SPD_HIGH_SPEED || in dwc2_qh_init()
1580 qh->num_hs_transfers = -1; in dwc2_qh_init()
1582 qh->num_hs_transfers = 1; in dwc2_qh_init()
1584 qh->num_hs_transfers = 0; in dwc2_qh_init()
1605 switch (qh->ep_type) { in dwc2_qh_init()
1623 dwc2_sch_dbg(hsotg, "QH=%p Init %s, %s speed, %d bytes:\n", qh, type, in dwc2_qh_init()
1625 dwc2_sch_dbg(hsotg, "QH=%p ...addr=%d, ep=%d, %s\n", qh, in dwc2_qh_init()
1632 qh, qh->host_us, qh->device_us); in dwc2_qh_init()
1634 qh, qh->host_interval, qh->device_interval); in dwc2_qh_init()
1635 if (qh->schedule_low_speed) in dwc2_qh_init()
1637 qh, dwc2_get_ls_map(hsotg, qh)); in dwc2_qh_init()
1655 struct dwc2_qh *qh; in dwc2_hcd_qh_create() local
1661 qh = kzalloc(sizeof(*qh), mem_flags); in dwc2_hcd_qh_create()
1662 if (!qh) in dwc2_hcd_qh_create()
1665 dwc2_qh_init(hsotg, qh, urb, mem_flags); in dwc2_hcd_qh_create()
1668 dwc2_hcd_qh_init_ddma(hsotg, qh, mem_flags) < 0) { in dwc2_hcd_qh_create()
1669 dwc2_hcd_qh_free(hsotg, qh); in dwc2_hcd_qh_create()
1673 return qh; in dwc2_hcd_qh_create()
1687 void dwc2_hcd_qh_free(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_hcd_qh_free() argument
1690 if (del_timer_sync(&qh->unreserve_timer)) { in dwc2_hcd_qh_free()
1694 dwc2_do_unreserve(hsotg, qh); in dwc2_hcd_qh_free()
1705 hrtimer_cancel(&qh->wait_timer); in dwc2_hcd_qh_free()
1707 dwc2_host_put_tt_info(hsotg, qh->dwc_tt); in dwc2_hcd_qh_free()
1709 if (qh->desc_list) in dwc2_hcd_qh_free()
1710 dwc2_hcd_qh_free_ddma(hsotg, qh); in dwc2_hcd_qh_free()
1711 else if (hsotg->unaligned_cache && qh->dw_align_buf) in dwc2_hcd_qh_free()
1712 kmem_cache_free(hsotg->unaligned_cache, qh->dw_align_buf); in dwc2_hcd_qh_free()
1714 kfree(qh); in dwc2_hcd_qh_free()
1727 int dwc2_hcd_qh_add(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_hcd_qh_add() argument
1733 if (dbg_qh(qh)) in dwc2_hcd_qh_add()
1736 if (!list_empty(&qh->qh_list_entry)) in dwc2_hcd_qh_add()
1741 if (dwc2_qh_is_non_per(qh)) { in dwc2_hcd_qh_add()
1743 qh->start_active_frame = hsotg->frame_number; in dwc2_hcd_qh_add()
1744 qh->next_active_frame = qh->start_active_frame; in dwc2_hcd_qh_add()
1746 if (qh->want_wait) { in dwc2_hcd_qh_add()
1747 list_add_tail(&qh->qh_list_entry, in dwc2_hcd_qh_add()
1749 qh->wait_timer_cancel = false; in dwc2_hcd_qh_add()
1751 hrtimer_start(&qh->wait_timer, delay, HRTIMER_MODE_REL); in dwc2_hcd_qh_add()
1753 list_add_tail(&qh->qh_list_entry, in dwc2_hcd_qh_add()
1759 status = dwc2_schedule_periodic(hsotg, qh); in dwc2_hcd_qh_add()
1779 void dwc2_hcd_qh_unlink(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh) in dwc2_hcd_qh_unlink() argument
1786 qh->wait_timer_cancel = true; in dwc2_hcd_qh_unlink()
1788 if (list_empty(&qh->qh_list_entry)) in dwc2_hcd_qh_unlink()
1792 if (dwc2_qh_is_non_per(qh)) { in dwc2_hcd_qh_unlink()
1793 if (hsotg->non_periodic_qh_ptr == &qh->qh_list_entry) in dwc2_hcd_qh_unlink()
1796 list_del_init(&qh->qh_list_entry); in dwc2_hcd_qh_unlink()
1800 dwc2_deschedule_periodic(hsotg, qh); in dwc2_hcd_qh_unlink()
1830 struct dwc2_qh *qh, u16 frame_number) in dwc2_next_for_periodic_split() argument
1832 u16 old_frame = qh->next_active_frame; in dwc2_next_for_periodic_split()
1843 if (old_frame == qh->start_active_frame && in dwc2_next_for_periodic_split()
1844 !(qh->ep_type == USB_ENDPOINT_XFER_ISOC && !qh->ep_is_in)) in dwc2_next_for_periodic_split()
1849 qh->next_active_frame = dwc2_frame_num_inc(old_frame, incr); in dwc2_next_for_periodic_split()
1859 if (dwc2_frame_num_gt(prev_frame_number, qh->next_active_frame)) { in dwc2_next_for_periodic_split()
1865 qh->next_active_frame); in dwc2_next_for_periodic_split()
1866 qh->next_active_frame = frame_number; in dwc2_next_for_periodic_split()
1893 struct dwc2_qh *qh, u16 frame_number) in dwc2_next_periodic_start() argument
1896 u16 interval = qh->host_interval; in dwc2_next_periodic_start()
1899 qh->start_active_frame = dwc2_frame_num_inc(qh->start_active_frame, in dwc2_next_periodic_start()
1939 if (qh->start_active_frame == qh->next_active_frame || in dwc2_next_periodic_start()
1940 dwc2_frame_num_gt(prev_frame_number, qh->start_active_frame)) { in dwc2_next_periodic_start()
1941 u16 ideal_start = qh->start_active_frame; in dwc2_next_periodic_start()
1948 if (qh->do_split || qh->dev_speed == USB_SPEED_HIGH) in dwc2_next_periodic_start()
1955 qh->start_active_frame = dwc2_frame_num_inc( in dwc2_next_periodic_start()
1956 qh->start_active_frame, interval); in dwc2_next_periodic_start()
1958 qh->start_active_frame)); in dwc2_next_periodic_start()
1960 missed = dwc2_frame_num_dec(qh->start_active_frame, in dwc2_next_periodic_start()
1965 qh->next_active_frame = qh->start_active_frame; in dwc2_next_periodic_start()
1983 void dwc2_hcd_qh_deactivate(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh, in dwc2_hcd_qh_deactivate() argument
1986 u16 old_frame = qh->next_active_frame; in dwc2_hcd_qh_deactivate()
1990 if (dbg_qh(qh)) in dwc2_hcd_qh_deactivate()
1993 if (dwc2_qh_is_non_per(qh)) { in dwc2_hcd_qh_deactivate()
1994 dwc2_hcd_qh_unlink(hsotg, qh); in dwc2_hcd_qh_deactivate()
1995 if (!list_empty(&qh->qtd_list)) in dwc2_hcd_qh_deactivate()
1997 dwc2_hcd_qh_add(hsotg, qh); in dwc2_hcd_qh_deactivate()
2010 missed = dwc2_next_for_periodic_split(hsotg, qh, frame_number); in dwc2_hcd_qh_deactivate()
2012 missed = dwc2_next_periodic_start(hsotg, qh, frame_number); in dwc2_hcd_qh_deactivate()
2016 qh, sched_next_periodic_split, frame_number, old_frame, in dwc2_hcd_qh_deactivate()
2017 qh->next_active_frame, in dwc2_hcd_qh_deactivate()
2018 dwc2_frame_num_dec(qh->next_active_frame, old_frame), in dwc2_hcd_qh_deactivate()
2021 if (list_empty(&qh->qtd_list)) { in dwc2_hcd_qh_deactivate()
2022 dwc2_hcd_qh_unlink(hsotg, qh); in dwc2_hcd_qh_deactivate()
2033 if (dwc2_frame_num_le(qh->next_active_frame, hsotg->frame_number)) in dwc2_hcd_qh_deactivate()
2034 list_move_tail(&qh->qh_list_entry, in dwc2_hcd_qh_deactivate()
2037 list_move_tail(&qh->qh_list_entry, in dwc2_hcd_qh_deactivate()
2085 struct dwc2_qh *qh) in dwc2_hcd_qtd_add() argument
2089 if (unlikely(!qh)) { in dwc2_hcd_qtd_add()
2095 retval = dwc2_hcd_qh_add(hsotg, qh); in dwc2_hcd_qtd_add()
2099 qtd->qh = qh; in dwc2_hcd_qtd_add()
2100 list_add_tail(&qtd->qtd_list_entry, &qh->qtd_list); in dwc2_hcd_qtd_add()