Lines Matching refs:pEhci

219 static int ms_ehci_halt (struct ehci_hcd *pEhci)  in ms_ehci_halt()  argument
221 U32 u32regv = hcd_reg_readl ((U32)&pEhci->op_regs->usbsts); in ms_ehci_halt()
230 u32regv = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_ehci_halt()
232 hcd_reg_writel (u32regv, (U32)&pEhci->op_regs->usbcmd); in ms_ehci_halt()
235 return ms_check_status (&pEhci->op_regs->usbsts, USBSTS_HALT, USBSTS_HALT, 16 * 125); in ms_ehci_halt()
238 static int ms_ehci_reset (struct ehci_hcd *pEhci) in ms_ehci_reset() argument
241 U32 u32regv = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_ehci_reset()
245 hcd_reg_writel (u32regv, (U32)&pEhci->op_regs->usbcmd); in ms_ehci_reset()
246 pEhci->hcd.state = HCD_STATE_HALT; in ms_ehci_reset()
248 retv = ms_check_status (&pEhci->op_regs->usbcmd, USBCMD_RESET, 0, 250 * 1000); in ms_ehci_reset()
253 U32 u32hcmisc = hcd_reg_readl ((U32)&pEhci->op_regs->hcmisc); in ms_ehci_reset()
254 hcd_reg_writel(u32hcmisc | BIT7, (U32)&pEhci->op_regs->hcmisc); in ms_ehci_reset()
262 static void ms_ehci_quiesce (struct ehci_hcd *pEhci) in ms_ehci_quiesce() argument
269 u32regv = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd) << 10; in ms_ehci_quiesce()
271 if (ms_check_status (&pEhci->op_regs->usbsts, USBSTS_ASS | USBSTS_PSS, in ms_ehci_quiesce()
275 ms_ehci_halt(pEhci); in ms_ehci_quiesce()
276 pEhci->hcd.state = HCD_STATE_HALT; in ms_ehci_quiesce()
280 u32regv = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_ehci_quiesce()
282 hcd_reg_writel (u32regv, (U32)&pEhci->op_regs->usbcmd); in ms_ehci_quiesce()
285 if (ms_check_status (&pEhci->op_regs->usbsts, USBSTS_ASS | USBSTS_PSS, in ms_ehci_quiesce()
290 ms_ehci_halt(pEhci); in ms_ehci_quiesce()
291 pEhci->hcd.state = HCD_STATE_HALT; in ms_ehci_quiesce()
308 struct ehci_hcd *pEhci, in ms_reset_complete() argument
342 struct ehci_hcd *pEhci = hcd_to_ehci (pHcd); in ms_hub_status_data() local
355 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_hub_status_data()
357 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->portsc[0]); in ms_hub_status_data()
372 (pEhci->u32ResetEnd[0] && ms_time_after_eq( in ms_hub_status_data()
373 jiffies, pEhci->u32ResetEnd[0]))) in ms_hub_status_data()
380 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); in ms_hub_status_data()
396 struct ehci_hcd *pEhci, in ms_get_roothub_desc() argument
400 int iPorts = HCS_N_PORTS (pEhci->hcs_params); in ms_get_roothub_desc()
416 if (HCS_PPC (pEhci->hcs_params)) in ms_get_roothub_desc()
418 if (HCS_P_INDICATOR (pEhci->hcs_params)) in ms_get_roothub_desc()
425 void ms_ehci_softrst(struct ehci_hcd *pEhci) in ms_ehci_softrst() argument
434 ms_ehci_halt(pEhci); in ms_ehci_softrst()
439 if ((pEhci->hcd.rh_disconn == 1) && in ms_ehci_softrst()
440 (pEhci->stAsync->hw_next_qh != QH_NEXT(pEhci->stAsync->qh_dma_addr))) in ms_ehci_softrst()
443 pEhci->stAsync->hw_next_qh); in ms_ehci_softrst()
444 pEhci->stAsync->hw_next_qh = QH_NEXT(pEhci->stAsync->qh_dma_addr); in ms_ehci_softrst()
446 if (!hcd_reg_readl((U32)&pEhci->op_regs->asynclistaddr)) in ms_ehci_softrst()
450 hcd_reg_writel ((U32)pEhci->stAsync->qh_dma_addr, (U32)&pEhci->op_regs->asynclistaddr); in ms_ehci_softrst()
452 regTmp[0] = hcd_reg_readl((U32)&pEhci->op_regs->usbcmd); in ms_ehci_softrst()
453 regTmp[1] = hcd_reg_readl((U32)&pEhci->op_regs->usbintr); in ms_ehci_softrst()
455 ms_ehci_reset(pEhci); in ms_ehci_softrst()
457 hcd_reg_writel(regTmp[1],(U32)&pEhci->op_regs->usbintr); in ms_ehci_softrst()
458 hcd_reg_writel(regTmp[0],(U32)&pEhci->op_regs->usbcmd); in ms_ehci_softrst()
459 pEhci->hcd.state = HCD_STATE_RUNNING; in ms_ehci_softrst()
490 struct ehci_hcd *pEhci = hcd_to_ehci (pHcd); in ms_hub_control() local
491 int iPorts = HCS_N_PORTS (pEhci->hcs_params); in ms_hub_control()
503 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_hub_control()
514 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
524 hcd_reg_writel (u32Temp & ~PORTSC_PE, (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
528 …hcd_reg_writel(hcd_reg_readl((U32)&pEhci->op_regs->usbcmd)&(~(USBCMD_ASE|USBCMD_PSE|USBCMD_IAAD)),… in ms_hub_control()
533 ms_host_halt(pEhci); in ms_hub_control()
534 ms_ehci_softrst(pEhci); in ms_hub_control()
539 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
545 if (HCS_PPC (pEhci->hcs_params)) in ms_hub_control()
547 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
551 if(pEhci->u32MoreCSC) in ms_hub_control()
554 pEhci->u32MoreCSC = false; in ms_hub_control()
557 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
561 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
569 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); /* unblock posted write */ in ms_hub_control()
572 ms_get_roothub_desc(pEhci, (struct usb_hub_descriptor *) in ms_hub_control()
585 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
602 else if(pEhci->u32MoreCSC) in ms_hub_control()
615 pEhci->u32ResetEnd [u16Index])) in ms_hub_control()
618 pEhci->u32ResetEnd [u16Index] = 0; // patch from Linux 2.6.28 in ms_hub_control()
627 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
629 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
649 ms_ehci_softrst(pEhci); in ms_hub_control()
651 u32Speed = (hcd_reg_readl((U32)&pEhci->op_regs->bus_control) >> 9) & 0x3; in ms_hub_control()
655 u32Temp2 = hcd_reg_readl((U32)&pEhci->op_regs->hcmisc) & 0xfffffff3; in ms_hub_control()
683 hcd_reg_writel (u32Temp2, (U32)&pEhci->op_regs->hcmisc); // misc, EOF1 in ms_hub_control()
687 u32Temp = ms_reset_complete (pEhci, u16Index, in ms_hub_control()
688 hcd_reg_readl ((U32)&pEhci->op_regs->portsc [u16Index])); in ms_hub_control()
693 pEhci->u32ResetEnd[u16Index] = 0; in ms_hub_control()
702 u32Bus_monitor=hcd_reg_readl ((U32)&pEhci->op_regs->bus_control); in ms_hub_control()
736 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
749 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
752 if (HCS_PPC (pEhci->hcs_params)) in ms_hub_control()
754 (U32)&pEhci->op_regs->portsc [u16Index]); in ms_hub_control()
761 ms_ehci_stoprun_setting(HOST20_Enable, pEhci); in ms_hub_control()
775 pEhci->u32ResetEnd [u16Index] = jiffies in ms_hub_control()
777 hcd_reg_writel (u32Temp, (U32)&pEhci->op_regs->portsc [u16Index]); // port reset in ms_hub_control()
789 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); /* unblock posted writes */ in ms_hub_control()
797 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); in ms_hub_control()
875 ms_qh_refresh (struct ehci_hcd *pEhci, struct ehci_qh *pQh) in ms_qh_refresh() argument
1051 ms_urb_done (struct ehci_hcd *pEhci, struct urb *pUrb, struct stPtRegs *pRegs) in ms_urb_done() argument
1057 ms_qh_put (pEhci, qh); in ms_urb_done()
1067 INCREASE (pEhci->stats.u32Complete); in ms_urb_done()
1072 INCREASE (pEhci->stats.u32Complete); in ms_urb_done()
1076 INCREASE(pEhci->stats.u32Unlink); in ms_urb_done()
1082 osapi_spin_unlock (&pEhci->tHcdLock); in ms_urb_done()
1084 osapi_spin_lock (&pEhci->tHcdLock); in ms_urb_done()
1100 ms_qh_completions (struct ehci_hcd *pEhci, struct ehci_qh *pQh, struct stPtRegs *pRegs) in ms_qh_completions() argument
1142 ms_urb_done (pEhci, pLast->urb, pRegs); in ms_qh_completions()
1145 ms_ehci_qtd_free (pEhci, pLast); in ms_qh_completions()
1184 else if(!iStopped && HCD_IS_RUNNING (pEhci->hcd.state)) in ms_qh_completions()
1246 ms_urb_done (pEhci, pLast->urb, pRegs); in ms_qh_completions()
1248 ms_ehci_qtd_free (pEhci, pLast); in ms_qh_completions()
1261 ms_qh_refresh(pEhci, pQh); 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()
1296 struct ehci_hcd *pEhci, in ms_qtd_register_free() argument
1309 ms_ehci_qtd_free (pEhci, pQtd); in ms_qtd_register_free()
1328 struct ehci_hcd *pEhci, in ms_qh_urb_process() argument
1341 pQtd = ms_ehci_qtd_alloc (pEhci, iFlags); in ms_qh_urb_process()
1364 pQtd = ms_ehci_qtd_alloc (pEhci, iFlags); in ms_qh_urb_process()
1412 pQtd->hw_alt_next_qtd = pEhci->stAsync->hw_alt_next_qtd; in ms_qh_urb_process()
1422 pQtd = ms_ehci_qtd_alloc (pEhci, iFlags); in ms_qh_urb_process()
1456 pQtd = ms_ehci_qtd_alloc (pEhci, iFlags); in ms_qh_urb_process()
1477 ms_qtd_register_free (pEhci, pHead); in ms_qh_urb_process()
1507 struct ehci_hcd *pEhci, in ms_qh_make() argument
1512 struct ehci_qh *pQh = ms_ehci_qh_alloc (pEhci, iFlags); in ms_qh_make()
1675 ms_qh_put (pEhci, pQh); in ms_qh_make()
1686 ms_qh_refresh(pEhci, 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
1710 pHead = pEhci->stAsync; in ms_qh_link_async()
1711 ms_timer_action_done (pEhci, TIMER_ASYNC_OFF); in ms_qh_link_async()
1715 U32 cmd = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_qh_link_async()
1719 (void) ms_check_status (&pEhci->op_regs->usbsts, USBSTS_ASS, 0, 150); in ms_qh_link_async()
1721 hcd_reg_writel (cmd, (U32)&pEhci->op_regs->usbcmd); in ms_qh_link_async()
1722 pEhci->hcd.state = HCD_STATE_RUNNING; in ms_qh_link_async()
1730 ms_qh_refresh(pEhci, pQh); in ms_qh_link_async()
1757 struct ehci_hcd *pEhci, in ms_qh_append_tds() argument
1771 pQh = ms_qh_make (pEhci, pUrb, GFP_ATOMIC); in ms_qh_append_tds()
1878 struct ehci_hcd *pEhci, in ms_submit_async() argument
1898 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_submit_async()
1899 pQh = ms_qh_append_tds (pEhci, pUrb, qtd_list, iEpNum, &pDev->ep [iEpNum]); in ms_submit_async()
1904 ms_qh_link_async (pEhci, ms_qh_get (pQh)); in ms_submit_async()
1909 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); in ms_submit_async()
1912 ms_qtd_register_free (pEhci, qtd_list); in ms_submit_async()
1921 static void ms_start_unlink_async (struct ehci_hcd *pEhci, struct ehci_qh *pQh);
1922 static void ms_end_unlink_async (struct ehci_hcd *pEhci, struct stPtRegs *pRegs) in ms_end_unlink_async() argument
1924 struct ehci_qh *pQh = pEhci->stReclaim; in ms_end_unlink_async()
1935 ms_iaa_watchdog_done(pEhci); in ms_end_unlink_async()
1941 ms_qh_put (pEhci, pQh); // pQh is directed to reclaim in ms_end_unlink_async()
1944 pEhci->stReclaim = pNext; in ms_end_unlink_async()
1948 ms_qh_completions (pEhci, pQh, pRegs); in ms_end_unlink_async()
1951 && HCD_IS_RUNNING (pEhci->hcd.state)) 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()
1957 if (HCD_IS_RUNNING (pEhci->hcd.state) in ms_end_unlink_async()
1958 && pEhci->stAsync->qh_next.qh == 0) in ms_end_unlink_async()
1959 ms_timer_action (pEhci, TIMER_ASYNC_OFF); in ms_end_unlink_async()
1964 pEhci->stReclaim = 0; in ms_end_unlink_async()
1965 ms_start_unlink_async (pEhci, pNext); 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
1972 int iUsbCmd = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_start_unlink_async()
1977 if (pEhci->stReclaim in ms_start_unlink_async()
1986 if (pQh == pEhci->stAsync) in ms_start_unlink_async()
1988 if (pEhci->hcd.state != HCD_STATE_HALT && !pEhci->stReclaim) in ms_start_unlink_async()
1991 hcd_reg_writel (iUsbCmd & ~USBCMD_ASE, (U32)&pEhci->op_regs->usbcmd); in ms_start_unlink_async()
1994 ms_timer_action_done (pEhci, TIMER_ASYNC_OFF); in ms_start_unlink_async()
2000 pEhci->stReclaim = pQh = ms_qh_get (pQh); in ms_start_unlink_async()
2002 pPrev = pEhci->stAsync; in ms_start_unlink_async()
2023 if (!HCD_IS_RUNNING(pEhci->hcd.state)) in ms_start_unlink_async()
2025 ms_end_unlink_async (pEhci, NULL); in ms_start_unlink_async()
2035 hcd_reg_writel (iUsbCmd, (U32)&pEhci->op_regs->usbcmd); in ms_start_unlink_async()
2039 ms_iaa_watchdog_begin(pEhci); in ms_start_unlink_async()
2043 static void ms_unlink_async (struct ehci_hcd *pEhci, struct ehci_qh *pQh) in ms_unlink_async() argument
2045 if (!HCD_IS_RUNNING (pEhci->hcd.state) && pEhci->stReclaim) in ms_unlink_async()
2046 ms_end_unlink_async (pEhci, NULL); in ms_unlink_async()
2050 else if (pEhci->stReclaim) in ms_unlink_async()
2054 for (pLast = pEhci->stReclaim; in ms_unlink_async()
2064 ms_start_unlink_async (pEhci, pQh); in ms_unlink_async()
2078 ms_scan_async (struct ehci_hcd *pEhci, struct stPtRegs *pRegs) in ms_scan_async() argument
2084 if (!++(pEhci->u32Stamp)) in ms_scan_async()
2085 pEhci->u32Stamp++; in ms_scan_async()
2086 ms_timer_action_done (pEhci, TIMER_ASYNC_SHRINK); in ms_scan_async()
2088 pQh = pEhci->stAsync->qh_next.qh; in ms_scan_async()
2095 && pQh->u32Stamp != pEhci->u32Stamp) 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()
2117 if (pQh->u32Stamp == pEhci->u32Stamp) in ms_scan_async()
2119 else if (!pEhci->stReclaim in ms_scan_async()
2121 ms_start_unlink_async (pEhci, pQh); in ms_scan_async()
2127 if (!pEhci->stReclaim 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()
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()
2152 ms_timer_action (pEhci, TIMER_ASYNC_SHRINK); in ms_scan_async()
2235 struct ehci_hcd *pEhci = (struct ehci_hcd *) u32Param; in ms_ehci_iaa_watchdog() local
2239 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_ehci_iaa_watchdog()
2243 if (pEhci->stReclaim in ms_ehci_iaa_watchdog()
2244 && !ms_timer_pending(&pEhci->stiaa_Watchdog) in ms_ehci_iaa_watchdog()
2245 && HCD_IS_RUNNING(pEhci->hcd.state)) { in ms_ehci_iaa_watchdog()
2248 u32Cmd = hcd_reg_readl((U32)&pEhci->op_regs->usbcmd); in ms_ehci_iaa_watchdog()
2251 (U32)&pEhci->op_regs->usbcmd); in ms_ehci_iaa_watchdog()
2253 u32Status = hcd_reg_readl((U32)&pEhci->op_regs->usbsts); in ms_ehci_iaa_watchdog()
2255 INCREASE (pEhci->stats.u32LostIAA); in ms_ehci_iaa_watchdog()
2258 hcd_reg_writel(USBSTS_IAA, (U32)&pEhci->op_regs->usbsts); in ms_ehci_iaa_watchdog()
2263 ms_end_unlink_async(pEhci, NULL); in ms_ehci_iaa_watchdog()
2266 osapi_spin_unlock_irqrestore(&pEhci->tHcdLock, u32Flags); in ms_ehci_iaa_watchdog()
2272 struct ehci_hcd *pEhci = (struct ehci_hcd *) u32Param; in ms_ehci_watchdog() local
2276 ms_debug_func("[%s] action: 0x%08X\n", __FUNCTION__, (U32)pEhci->u32Actions); in ms_ehci_watchdog()
2277 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_ehci_watchdog()
2281 if (pEhci->stReclaim) in ms_ehci_watchdog()
2283 U32 status = hcd_reg_readl ((U32)&pEhci->op_regs->usbsts); in ms_ehci_watchdog()
2287 INCREASE(pEhci->stats.u32LostIAA); in ms_ehci_watchdog()
2288 hcd_reg_writel (USBSTS_IAA, (U32)&pEhci->op_regs->usbsts); in ms_ehci_watchdog()
2289 pEhci->iReclaimReady = 1; in ms_ehci_watchdog()
2291 … else if ( (hcd_reg_readl((U32)&pEhci->op_regs->usbcmd)&USBCMD_IAAD) && !(status & USBSTS_IAA)) in ms_ehci_watchdog()
2294 pEhci->iReclaimReady = 1; in ms_ehci_watchdog()
2301 if (ms_test_bit (TIMER_ASYNC_OFF, &pEhci->u32Actions)) in ms_ehci_watchdog()
2302 ms_start_unlink_async (pEhci, pEhci->stAsync); in ms_ehci_watchdog()
2306 ms_ehci_work(pEhci, NULL); in ms_ehci_watchdog()
2308 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); in ms_ehci_watchdog()
2594 static void ms_ehci_work(struct ehci_hcd *pEhci, struct stPtRegs *regs) in ms_ehci_work() argument
2597 ms_timer_action_done (pEhci, TIMER_IO_WATCHDOG); in ms_ehci_work()
2602 if (pEhci->iReclaimReady) in ms_ehci_work()
2604 ms_end_unlink_async (pEhci, regs); in ms_ehci_work()
2605 ms_scan_async (pEhci, regs); in ms_ehci_work()
2610 if (pEhci->iScanning) in ms_ehci_work()
2612 pEhci->iScanning = 1; in ms_ehci_work()
2613 ms_scan_async (pEhci, regs); in ms_ehci_work()
2614 if (pEhci->iNextUframe != -1) in ms_ehci_work()
2615 ms_scan_periodic (pEhci, regs); in ms_ehci_work()
2616 pEhci->iScanning = 0; in ms_ehci_work()
2618 if (HCD_IS_RUNNING(pEhci->hcd.state) && in ms_ehci_work()
2619 ((pEhci->stAsync->qh_next.ptr != 0) || (pEhci->u32PeriodicSched != 0))) in ms_ehci_work()
2620 ms_timer_action (pEhci, TIMER_IO_WATCHDOG); in ms_ehci_work()
2635 struct ehci_hcd *pEhci= hcd_to_ehci (pHcd); in ms_ehci_irq() local
2640 osapi_spin_lock (&pEhci->tHcdLock); in ms_ehci_irq()
2642 int_status = u32Status = hcd_reg_readl ((U32)&pEhci->op_regs->usbsts); in ms_ehci_irq()
2653 …us: %x, intr_enable: %x\n", (unsigned int)int_status, hcd_reg_readw((U32)&pEhci->op_regs->usbintr)… in ms_ehci_irq()
2657 hcd_reg_writel (u32Status, (U32)&pEhci->op_regs->usbsts); in ms_ehci_irq()
2658 u32Cmd = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_ehci_irq()
2669 pEhci->iReclaimReady = 0; in ms_ehci_irq()
2670 int cmd = hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_ehci_irq()
2672 hcd_reg_writel (cmd, (U32)&pEhci->op_regs->usbcmd); in ms_ehci_irq()
2673 (void) hcd_reg_readl ((U32)&pEhci->op_regs->usbcmd); in ms_ehci_irq()
2678 INCREASE(pEhci->stats.u32Normal); in ms_ehci_irq()
2682 INCREASE(pEhci->stats.u32Error); in ms_ehci_irq()
2692 INCREASE(pEhci->stats.u32Reclaim); in ms_ehci_irq()
2693 pEhci->iReclaimReady = 1; in ms_ehci_irq()
2699 hcd_reg_writel (u32Cmd & ~USBCMD_IAAD, (U32)&pEhci->op_regs->usbcmd); in ms_ehci_irq()
2702 if (pEhci->stReclaim) in ms_ehci_irq()
2704 INCREASE(pEhci->stats.u32Reclaim); in ms_ehci_irq()
2705 ms_end_unlink_async(pEhci, pRegs); in ms_ehci_irq()
2718 iPsc = hcd_reg_readl((U32)&pEhci->op_regs->portsc [0]); in ms_ehci_irq()
2722 pEhci->u32ResetEnd[0] == pHcd->saved_ehci_state.reset_done && in ms_ehci_irq()
2726 ++pEhci->ehci_port_not_change_cnt; in ms_ehci_irq()
2727 if (pEhci->ehci_port_not_change_cnt > 7) in ms_ehci_irq()
2731 pEhci->ehci_port_not_change_cnt = 0; in ms_ehci_irq()
2733 pHcd->saved_ehci_state.reset_done = pEhci->u32ResetEnd[0]; in ms_ehci_irq()
2741 pEhci->u32MoreCSC = true; in ms_ehci_irq()
2743 ms_ehci_softrst(pEhci); in ms_ehci_irq()
2776 hcd_reg_writel(iPsc, (U32)&pEhci->op_regs->portsc[0]); in ms_ehci_irq()
2783 pEhci->u32ResetEnd[0] == 0)) in ms_ehci_irq()
2788 pEhci->u32ResetEnd [0] = jiffies + ((20 /* msec */ * HZ) / 1000); in ms_ehci_irq()
2790 ms_update_timer(&pHcd->roothub_timer, pEhci->u32ResetEnd[0], 0); in ms_ehci_irq()
2803 ms_ehci_softrst(pEhci); in ms_ehci_irq()
2809 …(pEhci->u32PeriodicSched != 0) //If we has periodic transactions in Schedule, we must scan periodi… in ms_ehci_irq()
2811 ms_ehci_work(pEhci, pRegs); in ms_ehci_irq()
2813 osapi_spin_unlock (&pEhci->tHcdLock); in ms_ehci_irq()
2835 struct ehci_hcd *pEhci = hcd_to_ehci (pHcd); in ms_urb_enqueue() local
2841 if( (hcd_reg_readl ((U32)&pEhci->op_regs->portsc[0])&PORTSC_CONNECT) == 0 ) in ms_urb_enqueue()
2853 if (!ms_qh_urb_process (pEhci, pUrb, &qtd_list, iMem_flags)) in ms_urb_enqueue()
2858 iRetVal = ms_submit_async (pEhci, pUrb, &qtd_list); in ms_urb_enqueue()
2862 if (!ms_qh_urb_process (pEhci, pUrb, &qtd_list, iMem_flags)) in ms_urb_enqueue()
2867 iRetVal = ms_intr_submit (pEhci, pUrb, &qtd_list); in ms_urb_enqueue()
2891 struct ehci_hcd *pEhci = hcd_to_ehci (pHcd); in ms_urb_dequeue() local
2900 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_urb_dequeue()
2920 ms_unlink_async(pEhci, pQh); in ms_urb_dequeue()
2933 && pEhci->stReclaim in ms_urb_dequeue()
2934 && HCD_IS_RUNNING (pEhci->hcd.state) in ms_urb_dequeue()
2939 for (pLast = pEhci->stReclaim; in ms_urb_dequeue()
2947 else if (!HCD_IS_RUNNING (pEhci->hcd.state) && pEhci->stReclaim) in ms_urb_dequeue()
2948 ms_end_unlink_async (pEhci, NULL); in ms_urb_dequeue()
2952 ms_start_unlink_async (pEhci, pQh); 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()
2995 ms_intr_deschedule (pEhci, pQh, 1); in ms_urb_dequeue()
2998 ms_qh_completions (pEhci, pQh, NULL); in ms_urb_dequeue()
3003 && HCD_IS_RUNNING (pEhci->hcd.state)) in ms_urb_dequeue()
3007 iStatus = ms_qh_schedule (pEhci, pQh); in ms_urb_dequeue()
3020 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); in ms_urb_dequeue()
3040 struct ehci_hcd *pEhci = hcd_to_ehci (pHcd); in ms_ehci_disable_ep() local
3052 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_ehci_disable_ep()
3057 if (!HCD_IS_RUNNING (pEhci->hcd.state)) in ms_ehci_disable_ep()
3062 for (tmp = pEhci->stAsync->qh_next.qh; in ms_ehci_disable_ep()
3069 ms_unlink_async(pEhci, pQh); in ms_ehci_disable_ep()
3074 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); 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()
3079 osapi_spin_lock_irqsave (&pEhci->tHcdLock, u32Flags); in ms_ehci_disable_ep()
3083 ms_qh_put (pEhci, pQh); in ms_ehci_disable_ep()
3099 osapi_spin_unlock_irqrestore (&pEhci->tHcdLock, u32Flags); in ms_ehci_disable_ep()
3148 struct ehci_hcd *pEhci = hcd_to_ehci (pHcd); in ms_qh_ehci_reinit() local
3152 if( pEhci->stAsync->qh_next.qh != 0 ) in ms_qh_ehci_reinit()
3154 … ms_debug_err("[reinit] MAY Not only cantain one qHD in asyn. scheduler (%p)\n", pEhci->stAsync); in ms_qh_ehci_reinit()
3155 ms_debug_err("[reinit] async hw_next_qh %x\n", pEhci->stAsync->hw_next_qh); in ms_qh_ehci_reinit()
3157 struct ehci_qh *pQh = pEhci->stAsync->qh_next.qh; in ms_qh_ehci_reinit()
3175 u32Temp = hcd_reg_readl ((U32)&pEhci->op_regs->portsc [0]); in ms_qh_ehci_reinit()
3177 hcd_reg_writel (u32Temp & ~PORTSC_PE, (U32)&pEhci->op_regs->portsc [0]); in ms_qh_ehci_reinit()
3179 …hcd_reg_writel(hcd_reg_readl((U32)&pEhci->op_regs->usbcmd)&(~(USBCMD_ASE|USBCMD_PSE|USBCMD_IAAD)),… in ms_qh_ehci_reinit()
3181 u32Temp = hcd_reg_readl((U32)&pEhci->op_regs->usbcmd); in ms_qh_ehci_reinit()
3184 hcd_reg_writel(u32Temp,(U32)&pEhci->op_regs->usbcmd); in ms_qh_ehci_reinit()
3186 if( pEhci->stAsync->qh_next.qh != 0 ) in ms_qh_ehci_reinit()
3188 struct ehci_qh *pQh = pEhci->stAsync->qh_next.qh; in ms_qh_ehci_reinit()
3197 ms_qh_put(pEhci, qh_rm); in ms_qh_ehci_reinit()
3201 pEhci->stAsync->qh_next.qh = NULL; in ms_qh_ehci_reinit()
3202 pEhci->stAsync->hw_next_qh = QH_NEXT (pEhci->stAsync->qh_dma_addr); in ms_qh_ehci_reinit()
3203 pEhci->stAsync->hw_ep_state1 = QH_H_BIT; in ms_qh_ehci_reinit()
3204 pEhci->stAsync->hw_token = QTD_STS_HALT; in ms_qh_ehci_reinit()
3205 pEhci->stAsync->hw_next_qtd = EHCI_LIST_END; in ms_qh_ehci_reinit()
3206 pEhci->stAsync->qh_status = QH_STS_LINKED; in ms_qh_ehci_reinit()
3207 pEhci->stAsync->hw_alt_next_qtd = (U32)(pEhci->stAsync->pDummyQtd->qtd_dma_addr); in ms_qh_ehci_reinit()
3214 struct ehci_hcd *pEhci = hcd_to_ehci (hcd); in ms_ehci_periodic_size_init() local
3218 u32Temp = hcd_reg_readl((U32)&pEhci->op_regs->usbcmd); in ms_ehci_periodic_size_init()
3221 hcd_reg_writel(u32Temp,(U32)&pEhci->op_regs->usbcmd); in ms_ehci_periodic_size_init()