Lines Matching refs:pQh

875 ms_qh_refresh (struct ehci_hcd *pEhci, struct ehci_qh *pQh)  in ms_qh_refresh()  argument
880 pQtd = entry_to_container(pQh->qtd_list.next, struct ehci_qtd, qtd_list); in ms_qh_refresh()
882 if (pQh->hw_token & QTD_STS_ACT) in ms_qh_refresh()
884 ms_debug_debug("[USB] QTD_STS_ACT, (%x,%x)\n", pQh->hw_next_qtd, pQtd->hw_next_qtd); in ms_qh_refresh()
885 pQh->hw_next_qtd = pQtd->hw_next_qtd; in ms_qh_refresh()
888 if (pQh->qh_status != QH_STS_IDLE) in ms_qh_refresh()
890 pQh->hw_next_qtd = (U32)(pQtd->qtd_dma_addr); in ms_qh_refresh()
891 pQh->hw_alt_next_qtd = EHCI_LIST_END; in ms_qh_refresh()
893 if (!(pQh->hw_ep_state1 & QH_DTC_BIT)) { in ms_qh_refresh()
897 epnum = (pQh->hw_ep_state1 >> 8) & 0x0f; in ms_qh_refresh()
898 if (!usb_gettoggle (pQh->dev, epnum, is_out)) { in ms_qh_refresh()
899 pQh->hw_token &= ~QTD_TOGGLE; in ms_qh_refresh()
900 usb_settoggle (pQh->dev, epnum, is_out, 1); in ms_qh_refresh()
904 pQh->hw_token &= (QTD_TOGGLE | QTD_STS_PERR); in ms_qh_refresh()
922 ms_qh_update_link (struct ehci_qh *pQh, struct ehci_qtd *pQtd) in ms_qh_update_link() argument
925 pQh->hw_next_qtd = (U32)(pQtd->qtd_dma_addr); in ms_qh_update_link()
926 pQh->hw_alt_next_qtd = EHCI_LIST_END; in ms_qh_update_link()
930 pQh->hw_token &= (QTD_TOGGLE | QTD_STS_PERR); in ms_qh_update_link()
1100 ms_qh_completions (struct ehci_hcd *pEhci, struct ehci_qh *pQh, struct stPtRegs *pRegs) in ms_qh_completions() argument
1102 struct ehci_qtd *pLast = 0, *pEnd = pQh->pDummyQtd; in ms_qh_completions()
1111 if (ms_is_empty_list (&pQh->qtd_list)) in ms_qh_completions()
1117 u8State = pQh->qh_status; in ms_qh_completions()
1118 pQh->qh_status = QH_STS_COMPLETING; in ms_qh_completions()
1121 list_for_loop_ex (entry, tmp, &pQh->qtd_list) in ms_qh_completions()
1164 --pQh->xacterrs > 0 /*&& !urb->unlinked*/) { in ms_qh_completions()
1169 pQh->hw_token = u32Token; in ms_qh_completions()
1205 == pQh->hw_current_qtd) in ms_qh_completions()
1206 u32Token = pQh->hw_token; in ms_qh_completions()
1208 if ((HALT_BIT & pQh->hw_token) == 0) in ms_qh_completions()
1211 pQh->hw_token |= HALT_BIT; in ms_qh_completions()
1232 if (iStopped && pQtd->qtd_list.prev != &pQh->qtd_list) { in ms_qh_completions()
1241 pQh->xacterrs = QH_MAX_XACTRTT_RETRY; in ms_qh_completions()
1252 pQh->qh_status = u8State; in ms_qh_completions()
1256 || pQh->hw_next_qtd == EHCI_LIST_END) in ms_qh_completions()
1261 ms_qh_refresh(pEhci, pQh); in ms_qh_completions()
1264 if ((pQh->hw_ep_state2 & QH_SMASK) != 0) { in ms_qh_completions()
1265 ms_intr_deschedule(pEhci, pQh); in ms_qh_completions()
1266 ms_qh_schedule(pEhci, pQh); in ms_qh_completions()
1269 ms_unlink_async(pEhci, pQh); in ms_qh_completions()
1272 if (ms_is_empty_list (&pQh->qtd_list)) in ms_qh_completions()
1273 pEnd = pQh->pDummyQtd; in ms_qh_completions()
1276 pEnd = entry_to_container (pQh->qtd_list.next,struct ehci_qtd, qtd_list); in ms_qh_completions()
1277 if (pEnd->qtd_dma_addr == pQh->hw_current_qtd) in ms_qh_completions()
1281 ms_qh_update_link (pQh, pEnd); in ms_qh_completions()
1512 struct ehci_qh *pQh = ms_ehci_qh_alloc (pEhci, iFlags); in ms_qh_make() local
1518 if (!pQh) in ms_qh_make()
1521 return pQh; in ms_qh_make()
1539 pQh->u8Usecs = NS_2_US(ms_usb_calc_bus_time (USB_HIGH_SPEED, iIsInput, in ms_qh_make()
1542 pQh->u16Start = NO_FRAME; in ms_qh_make()
1546 pQh->c_usecs = 0; in ms_qh_make()
1547 pQh->u8Gap_uf = 0; in ms_qh_make()
1550 pQh->u16Period = pUrb->u32Interval >> 3; in ms_qh_make()
1553 if (pQh->u16Period == 1 && pUrb->u32Interval != 1) in ms_qh_make()
1563 pQh->u8Gap_uf = 1 + ms_usb_calc_bus_time (pUrb->dev->eSpeed, in ms_qh_make()
1569 pQh->c_usecs = pQh->u8Usecs + HIGHSPEED_US (0); in ms_qh_make()
1570 pQh->u8Usecs = (U8)HIGHSPEED_US (1); in ms_qh_make()
1574 pQh->u8Usecs += HIGHSPEED_US (1); in ms_qh_make()
1575 pQh->c_usecs = (U8)HIGHSPEED_US (0); in ms_qh_make()
1577 pQh->u16Period = pUrb->u32Interval; in ms_qh_make()
1583 pQh->dev = pUrb->dev; in ms_qh_make()
1675 ms_qh_put (pEhci, pQh); in ms_qh_make()
1680 pQh->qh_status = QH_STS_IDLE; in ms_qh_make()
1681 pQh->hw_ep_state1 = u32Info1; in ms_qh_make()
1682 pQh->hw_ep_state2 = u32Info2; in ms_qh_make()
1686 ms_qh_refresh(pEhci, pQh); in ms_qh_make()
1688 ms_qh_update_link (pQh, pQh->pDummyQtd); // replaced by ms_qh_refresh() in ms_qh_make()
1691 return pQh; in ms_qh_make()
1704 static void ms_qh_link_async (struct ehci_hcd *pEhci, struct ehci_qh *pQh) in ms_qh_link_async() argument
1706 U32 u32DmaAddr = QH_NEXT (pQh->qh_dma_addr); in ms_qh_link_async()
1729 if (pQh->qh_status == QH_STS_IDLE) in ms_qh_link_async()
1730 ms_qh_refresh(pEhci, pQh); in ms_qh_link_async()
1733 if(pQh->hw_token & HALT_BIT) in ms_qh_link_async()
1734 pQh->hw_token &= ~HALT_BIT; in ms_qh_link_async()
1737 pQh->qh_next = pHead->qh_next; in ms_qh_link_async()
1738 pQh->hw_next_qh = pHead->hw_next_qh; in ms_qh_link_async()
1741 pHead->qh_next.qh = pQh; in ms_qh_link_async()
1746 pQh->xacterrs = QH_MAX_XACTRTT_RETRY; // maximum xacterr retry count in ms_qh_link_async()
1747 pQh->qh_status = QH_STS_LINKED; in ms_qh_link_async()
1764 struct ehci_qh *pQh = 0; in ms_qh_append_tds() local
1768 pQh = (struct ehci_qh *) *ptr; in ms_qh_append_tds()
1769 if (pQh == 0) in ms_qh_append_tds()
1771 pQh = ms_qh_make (pEhci, pUrb, GFP_ATOMIC); in ms_qh_append_tds()
1772 *ptr = pQh; in ms_qh_append_tds()
1775 if (pQh != 0) in ms_qh_append_tds()
1792 if (!(pQh->hw_ep_state1 & (0x3 << 12))) in ms_qh_append_tds()
1797 hw_maxp = max_packet(pQh->hw_ep_state1 >> 16); in ms_qh_append_tds()
1803 U32 u32Info = pQh->hw_ep_state1; in ms_qh_append_tds()
1807 pQh->hw_ep_state1 = u32Info; in ms_qh_append_tds()
1813 pQh->hw_ep_state1 &= ~QH_ADDR_MASK; in ms_qh_append_tds()
1815 else if ((pQh->hw_ep_state1 & QH_ADDR_MASK) == 0) { in ms_qh_append_tds()
1817 pQh->hw_ep_state1 |= usb_pipedevice (pUrb->u32Pipe); in ms_qh_append_tds()
1844 dummy = pQh->pDummyQtd; in ms_qh_append_tds()
1852 ms_list_join (qtd_list, pQh->qtd_list.prev); in ms_qh_append_tds()
1855 pQh->pDummyQtd = pQtd; in ms_qh_append_tds()
1859 pQtd = entry_to_container (pQh->qtd_list.prev, struct ehci_qtd, qtd_list); in ms_qh_append_tds()
1868 pUrb->hcpriv = ms_qh_get (pQh); in ms_qh_append_tds()
1872 return pQh; in ms_qh_append_tds()
1887 struct ehci_qh *pQh = 0; in ms_submit_async() local
1899 pQh = ms_qh_append_tds (pEhci, pUrb, qtd_list, iEpNum, &pDev->ep [iEpNum]); in ms_submit_async()
1901 if (pQh != 0) in ms_submit_async()
1903 if (pQh->qh_status == QH_STS_IDLE) in ms_submit_async()
1904 ms_qh_link_async (pEhci, ms_qh_get (pQh)); in ms_submit_async()
1910 if (pQh == 0) in ms_submit_async()
1921 static void ms_start_unlink_async (struct ehci_hcd *pEhci, struct ehci_qh *pQh);
1924 struct ehci_qh *pQh = pEhci->stReclaim; in ms_end_unlink_async() local
1928 if(pQh == NULL) in ms_end_unlink_async()
1939 pQh->qh_status = QH_STS_IDLE; in ms_end_unlink_async()
1940 pQh->qh_next.qh = 0; in ms_end_unlink_async()
1941 ms_qh_put (pEhci, pQh); // pQh is directed to reclaim in ms_end_unlink_async()
1943 pNext = pQh->pReclaimQh; in ms_end_unlink_async()
1946 pQh->pReclaimQh = 0; in ms_end_unlink_async()
1948 ms_qh_completions (pEhci, pQh, pRegs); in ms_end_unlink_async()
1950 if (!ms_is_empty_list (&pQh->qtd_list) in ms_end_unlink_async()
1952 ms_qh_link_async (pEhci, pQh); in ms_end_unlink_async()
1955 ms_qh_put (pEhci, pQh); // pQh is directed from async list in ms_end_unlink_async()
1970 static void ms_start_unlink_async (struct ehci_hcd *pEhci, struct ehci_qh *pQh) in ms_start_unlink_async() argument
1978 || (pQh->qh_status != QH_STS_LINKED in ms_start_unlink_async()
1979 && pQh->qh_status != QH_STS_UNLINK_WAIT) in ms_start_unlink_async()
1986 if (pQh == pEhci->stAsync) in ms_start_unlink_async()
1999 pQh->qh_status = QH_STS_UNLINK; in ms_start_unlink_async()
2000 pEhci->stReclaim = pQh = ms_qh_get (pQh); in ms_start_unlink_async()
2003 while (pPrev->qh_next.qh != pQh) in ms_start_unlink_async()
2008 m_BDMA_write(pQh->qh_dma_addr, pPrev->qh_dma_addr); in ms_start_unlink_async()
2009 USB_ASSERT(pPrev->hw_next_qh == pQh->hw_next_qh, in ms_start_unlink_async()
2013 pPrev->hw_next_qh = pQh->hw_next_qh; in ms_start_unlink_async()
2015 pPrev->hw_next_qh = pQh->hw_next_qh; in ms_start_unlink_async()
2017 pPrev->qh_next = pQh->qh_next; in ms_start_unlink_async()
2043 static void ms_unlink_async (struct ehci_hcd *pEhci, struct ehci_qh *pQh) in ms_unlink_async() argument
2048 if (pQh->qh_status != QH_STS_LINKED) in ms_unlink_async()
2058 pQh->qh_status = QH_STS_UNLINK_WAIT; in ms_unlink_async()
2059 pLast->pReclaimQh = pQh; in ms_unlink_async()
2064 ms_start_unlink_async (pEhci, pQh); in ms_unlink_async()
2080 struct ehci_qh *pQh; in ms_scan_async() local
2088 pQh = pEhci->stAsync->qh_next.qh; in ms_scan_async()
2089 if (pQh != 0) in ms_scan_async()
2094 if (!ms_is_empty_list (&pQh->qtd_list) in ms_scan_async()
2095 && pQh->u32Stamp != pEhci->u32Stamp) in ms_scan_async()
2099 pQh = ms_qh_get (pQh); in ms_scan_async()
2100 pQh->u32Stamp = pEhci->u32Stamp; in ms_scan_async()
2101 temp = ms_qh_completions (pEhci, pQh, pRegs); in ms_scan_async()
2102 ms_qh_put (pEhci, pQh); in ms_scan_async()
2115 if (ms_is_empty_list (&pQh->qtd_list)) in ms_scan_async()
2117 if (pQh->u32Stamp == pEhci->u32Stamp) in ms_scan_async()
2120 && pQh->qh_status == QH_STS_LINKED) in ms_scan_async()
2121 ms_start_unlink_async (pEhci, pQh); in ms_scan_async()
2125 if (ms_is_empty_list (&pQh->qtd_list) && (pQh->qh_status == QH_STS_LINKED)) in ms_scan_async()
2128 && ((pEhci->u32Stamp - pQh->u32Stamp) & 0x1fff) >= MS_QH_SHRINK_FRAMES * 8) in ms_scan_async()
2132 ms_start_unlink_async (pEhci, pQh); in ms_scan_async()
2142 if (ms_is_empty_list (&pQh->qtd_list)) in ms_scan_async()
2144 if (!pEhci->stReclaim && pQh->qh_status == QH_STS_LINKED) in ms_scan_async()
2145 ms_start_unlink_async (pEhci, pQh); in ms_scan_async()
2148 pQh = pQh->qh_next.qh; in ms_scan_async()
2149 } while (pQh); in ms_scan_async()
2892 struct ehci_qh *pQh = (struct ehci_qh *) pUrb->hcpriv; in ms_urb_dequeue() local
2896 if (!pQh) in ms_urb_dequeue()
2909 switch (pQh->qh_status) { in ms_urb_dequeue()
2920 ms_unlink_async(pEhci, pQh); in ms_urb_dequeue()
2932 if (pQh->qh_status == QH_STS_LINKED in ms_urb_dequeue()
2943 pQh->qh_status = QH_STS_UNLINK_WAIT; in ms_urb_dequeue()
2944 pLast->pReclaimQh = pQh; in ms_urb_dequeue()
2951 if (pQh->qh_status == QH_STS_LINKED) in ms_urb_dequeue()
2952 ms_start_unlink_async (pEhci, pQh); in ms_urb_dequeue()
2975 switch (pQh->qh_status) in ms_urb_dequeue()
2979 ms_intr_deschedule (pEhci, pQh); in ms_urb_dequeue()
2983 ms_qh_completions (pEhci, pQh, NULL); in ms_urb_dequeue()
2987 pQh, pQh->qh_status); in ms_urb_dequeue()
2992 if (pQh->qh_status == QH_STS_LINKED) in ms_urb_dequeue()
2995 ms_intr_deschedule (pEhci, pQh, 1); in ms_urb_dequeue()
2998 ms_qh_completions (pEhci, pQh, NULL); in ms_urb_dequeue()
3002 if (!ms_is_empty_list (&pQh->qtd_list) in ms_urb_dequeue()
3007 iStatus = ms_qh_schedule (pEhci, pQh); in ms_urb_dequeue()
3012 ms_debug_err ("can't reschedule pQh %p, err %d", pQh, iStatus); in ms_urb_dequeue()
3043 struct ehci_qh *pQh, *tmp; in ms_ehci_disable_ep() local
3053 pQh = (struct ehci_qh *) pDev->ep[iEpnum]; in ms_ehci_disable_ep()
3054 if (!pQh) in ms_ehci_disable_ep()
3058 pQh->qh_status = QH_STS_IDLE; in ms_ehci_disable_ep()
3059 switch (pQh->qh_status) in ms_ehci_disable_ep()
3063 tmp && tmp != pQh; tmp = tmp->qh_next.qh) in ms_ehci_disable_ep()
3069 ms_unlink_async(pEhci, pQh); in ms_ehci_disable_ep()
3078 …diag_printf("[UM-DEP] rescan 100 times, qh state %d, HCD state %x\n", pQh->qh_status, pEhci->hcd.s… in ms_ehci_disable_ep()
3081 if (ms_is_empty_list (&pQh->qtd_list)) in ms_ehci_disable_ep()
3083 ms_qh_put (pEhci, pQh); in ms_ehci_disable_ep()
3091 __FUNCTION__, pQh, iEpnum, pQh->qh_status, in ms_ehci_disable_ep()
3092 ms_is_empty_list (&pQh->qtd_list) ? "" : "(has tds)"); in ms_ehci_disable_ep()
3157 struct ehci_qh *pQh = pEhci->stAsync->qh_next.qh; in ms_qh_ehci_reinit()
3158 while(pQh) { in ms_qh_ehci_reinit()
3159 ms_debug_err("qh %p\n=============\n", pQh); in ms_qh_ehci_reinit()
3160 ms_debug_err("[UM] status %d\n", pQh->qh_status); in ms_qh_ehci_reinit()
3161 ms_debug_err("[UM] hw ep %d\n", (pQh->hw_ep_state1 >> 8) & 0xf); in ms_qh_ehci_reinit()
3162 ms_debug_err("[UM] qtd_list %s\n", !ms_is_empty_list (&pQh->qtd_list) ? "there": "none"); in ms_qh_ehci_reinit()
3163 ms_debug_err("[UM] refcnt %d\n", pQh->tRefCnt); in ms_qh_ehci_reinit()
3164 if (ms_is_empty_list (&pQh->qtd_list)) in ms_qh_ehci_reinit()
3166 pQh = pQh->qh_next.qh; in ms_qh_ehci_reinit()
3188 struct ehci_qh *pQh = pEhci->stAsync->qh_next.qh; in ms_qh_ehci_reinit() local
3193 qh_rm = pQh; in ms_qh_ehci_reinit()
3194 pQh = pQh->qh_next.qh; in ms_qh_ehci_reinit()
3198 } while(pQh); in ms_qh_ehci_reinit()