Lines Matching refs:ehciInstance
83 static void USB_HostBandwidthFslsHostComputeCurrent(usb_host_ehci_instance_t *ehciInstance,
95 static void USB_HostBandwidthHsHostComputeCurrentFsls(usb_host_ehci_instance_t *ehciInstance,
107 static void USB_HostBandwidthHsHostComputeCurrentHsAll(usb_host_ehci_instance_t *ehciInstance,
121 static usb_status_t USB_HostBandwidthHsHostAllocateHsCommon(usb_host_ehci_instance_t *ehciInstance,
134 static usb_status_t USB_HostBandwidthHsHostAllocateInterrupt(usb_host_ehci_instance_t *ehciInstance,
145 static usb_status_t USB_HostBandwidthFslsHostAllocate(usb_host_ehci_instance_t *ehciInstance,
176 static void USB_HostEhciStartAsync(usb_host_ehci_instance_t *ehciInstance);
183 static void USB_HostEhciStopAsync(usb_host_ehci_instance_t *ehciInstance);
190 static void USB_HostEhciStartPeriodic(usb_host_ehci_instance_t *ehciInstance);
197 static void USB_HostEhciStopPeriodic(usb_host_ehci_instance_t *ehciInstance);
208 static usb_status_t USB_HostEhciQhQtdListInit(usb_host_ehci_instance_t *ehciInstance,
221 static uint32_t USB_HostEhciQtdListRelease(usb_host_ehci_instance_t *ehciInstance,
234 static usb_status_t USB_HostEhciQhQtdListDeinit(usb_host_ehci_instance_t *ehciInstance,
248 static usb_status_t USB_HostEhciTransferQtdListDeinit(usb_host_ehci_instance_t *ehciInstance,
260 static usb_status_t USB_HostEhciQhInit(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe_t…
270 static usb_status_t USB_HostEhciQhDeinit(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe…
280 static void USB_HostEhciAddQhToFrame(usb_host_ehci_instance_t *ehciInstance,
292 static void USB_HostEhciRemoveFromFrame(usb_host_ehci_instance_t *ehciInstance,
304 static void USB_HostEhciLinkSitd(usb_host_ehci_instance_t *ehciInstance,
315 static usb_status_t USB_HostEhciSitdArrayInit(usb_host_ehci_instance_t *ehciInstance,
328 static uint32_t USB_HostEhciSitdArrayRelease(usb_host_ehci_instance_t *ehciInstance,
341 static usb_status_t USB_HostEhciSitdArrayDeinit(usb_host_ehci_instance_t *ehciInstance,
356 static uint32_t USB_HostEhciGetItdLinkFrame(usb_host_ehci_instance_t *ehciInstance,
371 static usb_status_t USB_HostEhciItdArrayInit(usb_host_ehci_instance_t *ehciInstance,
384 static uint32_t USB_HostEhciItdArrayRelease(usb_host_ehci_instance_t *ehciInstance,
397 static usb_status_t USB_HostEhciItdArrayDeinit(usb_host_ehci_instance_t *ehciInstance,
409 static usb_status_t USB_HostEhciOpenControlBulk(usb_host_ehci_instance_t *ehciInstance,
420 static usb_status_t USB_HostEhciCloseControlBulk(usb_host_ehci_instance_t *ehciInstance,
431 static usb_status_t USB_HostEhciOpenInterrupt(usb_host_ehci_instance_t *ehciInstance,
442 static usb_status_t USB_HostEhciCloseInterrupt(usb_host_ehci_instance_t *ehciInstance,
455 static usb_status_t USB_HostEhciOpenIso(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe_…
465 static usb_status_t USB_HostEhciCloseIso(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe…
475 static usb_status_t USB_HostBandwidthHsHostAllocateIso(usb_host_ehci_instance_t *ehciInstance,
487 static usb_status_t USB_HostEhciResetIP(usb_host_ehci_instance_t *ehciInstance);
496 static usb_status_t USB_HostEhciStartIP(usb_host_ehci_instance_t *ehciInstance);
507 static usb_status_t USB_HostEhciCancelPipe(usb_host_ehci_instance_t *ehciInstance,
519 static usb_status_t USB_HostEhciControlBus(usb_host_ehci_instance_t *ehciInstance, uint8_t busContr…
526 void USB_HostEhciTransactionDone(usb_host_ehci_instance_t *ehciInstance);
533 static void USB_HostEhciPortChange(usb_host_ehci_instance_t *ehciInstance);
541 static void USB_HostEhciTimer0(usb_host_ehci_instance_t *ehciInstance);
550 static void USB_HostEhciTimer1(usb_host_ehci_instance_t *ehciInstance);
558 static void USB_HostEhciCompletedLPM(usb_host_ehci_instance_t *ehciInstance);
569 static void USB_HostEhciSuspendBus(usb_host_ehci_instance_t *ehciInstance);
576 static void USB_HostEhciResumeBus(usb_host_ehci_instance_t *ehciInstance);
668 usb_status_t USB_HostEhciTestSetMode(usb_host_ehci_instance_t *ehciInstance, uint32_t testMode) in USB_HostEhciTestSetMode() argument
672 ehciPortSC = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciTestSetMode()
675 ehciInstance->ehciIpBase->PORTSC1 = ehciPortSC; in USB_HostEhciTestSetMode()
679 static void USB_HostEhciTestSuspendResume(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciTestSuspendResume() argument
685 USB_HostEhciDelay(ehciInstance->ehciIpBase, 1000U); in USB_HostEhciTestSuspendResume()
687 USB_HostEhciSuspendBus(ehciInstance); in USB_HostEhciTestSuspendResume()
691 USB_HostEhciDelay(ehciInstance->ehciIpBase, 1000U); in USB_HostEhciTestSuspendResume()
694 USB_HostEhciResumeBus(ehciInstance); in USB_HostEhciTestSuspendResume()
702 static void USB_HostEhciTestSingleStepGetDeviceDesc(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciTestSingleStepGetDeviceDesc() argument
711 USB_HostEhciStopPeriodic(ehciInstance); in USB_HostEhciTestSingleStepGetDeviceDesc()
717 USB_HostEhciDelay(ehciInstance->ehciIpBase, 1000U); in USB_HostEhciTestSingleStepGetDeviceDesc()
721 if (USB_HostMallocTransfer(ehciInstance->hostHandle, &transfer) != kStatus_USB_Success) in USB_HostEhciTestSingleStepGetDeviceDesc()
736 transfer->callbackParam = ehciInstance->hostHandle; in USB_HostEhciTestSingleStepGetDeviceDesc()
745 static usb_status_t USB_HostEhciSingleStepQtdListInit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciSingleStepQtdListInit() argument
764 if (qtdNumber <= ehciInstance->ehciQtdNumber) in USB_HostEhciSingleStepQtdListInit()
766 ehciInstance->ehciQtdNumber -= qtdNumber; in USB_HostEhciSingleStepQtdListInit()
772 qtdPointer->nextQtdPointer = (uint32_t)ehciInstance->ehciQtdHead; in USB_HostEhciSingleStepQtdListInit()
774 qtdPointer = ehciInstance->ehciQtdHead; in USB_HostEhciSingleStepQtdListInit()
775 ehciInstance->ehciQtdHead = (usb_host_ehci_qtd_t *)qtdPointer->nextQtdPointer; in USB_HostEhciSingleStepQtdListInit()
872 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciSingleStepQtdListInit()
878 static void USB_HostEhciTestSingleStepGetDeviceDescData(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciTestSingleStepGetDeviceDescData() argument
886 USB_HostEhciStopPeriodic(ehciInstance); in USB_HostEhciTestSingleStepGetDeviceDescData()
889 if (USB_HostMallocTransfer(ehciInstance->hostHandle, &transfer) != kStatus_USB_Success) in USB_HostEhciTestSingleStepGetDeviceDescData()
894 transfer->callbackParam = ehciInstance->hostHandle; in USB_HostEhciTestSingleStepGetDeviceDescData()
900 …USB_HostEhciSingleStepQtdListInit(ehciInstance, (usb_host_ehci_pipe_t *)(deviceInstance->controlPi… in USB_HostEhciTestSingleStepGetDeviceDescData()
905 USB_HostEhciDelay(ehciInstance->ehciIpBase, 1000U); in USB_HostEhciTestSingleStepGetDeviceDescData()
908 if (USB_HostMallocTransfer(ehciInstance->hostHandle, &transfer) != kStatus_USB_Success) in USB_HostEhciTestSingleStepGetDeviceDescData()
913 transfer->callbackParam = ehciInstance->hostHandle; in USB_HostEhciTestSingleStepGetDeviceDescData()
916 …USB_HostEhciSingleStepQtdListInit(ehciInstance, (usb_host_ehci_pipe_t *)(deviceInstance->controlPi… in USB_HostEhciTestSingleStepGetDeviceDescData()
918 if (USB_HostMallocTransfer(ehciInstance->hostHandle, &transfer) != kStatus_USB_Success) in USB_HostEhciTestSingleStepGetDeviceDescData()
923 transfer->callbackParam = ehciInstance->hostHandle; in USB_HostEhciTestSingleStepGetDeviceDescData()
926 …USB_HostEhciSingleStepQtdListInit(ehciInstance, (usb_host_ehci_pipe_t *)(deviceInstance->controlPi… in USB_HostEhciTestSingleStepGetDeviceDescData()
931 USB_HostEhciDelay(ehciInstance->ehciIpBase, 1000U); in USB_HostEhciTestSingleStepGetDeviceDescData()
943 usb_host_ehci_instance_t *ehciInstance = in USB_HostEhciTestModeInit() local
953 USB_HostEhciTestSetMode(ehciInstance, USB_HOST_EHCI_PORTSC_PTC_SE0_NAK); in USB_HostEhciTestModeInit()
956 USB_HostEhciTestSetMode(ehciInstance, USB_HOST_EHCI_PORTSC_PTC_J_STATE); in USB_HostEhciTestModeInit()
959 USB_HostEhciTestSetMode(ehciInstance, USB_HOST_EHCI_PORTSC_PTC_K_STATE); in USB_HostEhciTestModeInit()
962 USB_HostEhciTestSetMode(ehciInstance, USB_HOST_EHCI_PORTSC_PTC_PACKET); in USB_HostEhciTestModeInit()
966 USB_HostEhciTestSetMode(ehciInstance, USB_HOST_EHCI_PORTSC_PTC_FORCE_ENABLE_HS); in USB_HostEhciTestModeInit()
969 USB_HostEhciTestSuspendResume(ehciInstance); in USB_HostEhciTestModeInit()
973 USB_HostEhciTestSingleStepGetDeviceDesc(ehciInstance, deviceHandle); in USB_HostEhciTestModeInit()
977 USB_HostEhciTestSingleStepGetDeviceDescData(ehciInstance, deviceHandle); in USB_HostEhciTestModeInit()
987 static void USB_HostEhciSuspendBus(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciSuspendBus() argument
992 ehciPortSC = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciSuspendBus()
995 ehciPortSC = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciSuspendBus()
997 ehciInstance->ehciIpBase->PORTSC1 = (ehciPortSC | USBHS_PORTSC1_SUSP_MASK); in USB_HostEhciSuspendBus()
1002 static void USB_HostEhciResumeBus(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciResumeBus() argument
1008 ehciPortSC = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciResumeBus()
1012 ehciInstance->ehciIpBase->PORTSC1 = (ehciPortSC | USBHS_PORTSC1_FPR_MASK); in USB_HostEhciResumeBus()
1081 static void USB_HostBandwidthFslsHostComputeCurrent(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthFslsHostComputeCurrent() argument
1090 ehciPipePointer = ehciInstance->ehciRunningPipeList; in USB_HostBandwidthFslsHostComputeCurrent()
1110 static void USB_HostBandwidthHsHostComputeCurrentFsls(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthHsHostComputeCurrentFsls() argument
1125 ehciPipePointer = ehciInstance->ehciRunningPipeList; in USB_HostBandwidthHsHostComputeCurrentFsls()
1183 static void USB_HostBandwidthHsHostComputeCurrentHsAll(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthHsHostComputeCurrentHsAll() argument
1197 ehciPipePointer = ehciInstance->ehciRunningPipeList; in USB_HostBandwidthHsHostComputeCurrentHsAll()
1279 static usb_status_t USB_HostBandwidthHsHostAllocateHsCommon(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthHsHostAllocateHsCommon() argument
1295 …ehciInstance, frameIndex, frameTimes); /* compute the allocated bandwidths in the frameIndex frame… in USB_HostBandwidthHsHostAllocateHsCommon()
1306 ehciInstance, frameIndex, in USB_HostBandwidthHsHostAllocateHsCommon()
1335 static usb_status_t USB_HostBandwidthHsHostAllocateIso(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthHsHostAllocateIso() argument
1367 …status = USB_HostBandwidthHsHostAllocateHsCommon(ehciInstance, ehciPipePointer->ufram… in USB_HostBandwidthHsHostAllocateIso()
1432 … USB_HostBandwidthHsHostComputeCurrentHsAll(ehciInstance, frameIndex, frameTimes); in USB_HostBandwidthHsHostAllocateIso()
1472 … USB_HostBandwidthHsHostComputeCurrentFsls(ehciInstance, hubNumber, frameIndex, frameTimes); in USB_HostBandwidthHsHostAllocateIso()
1566 static usb_status_t USB_HostBandwidthHsHostAllocateInterrupt(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthHsHostAllocateInterrupt() argument
1598 …status = USB_HostBandwidthHsHostAllocateHsCommon(ehciInstance, ehciPipePointer->ufram… in USB_HostBandwidthHsHostAllocateInterrupt()
1661 … USB_HostBandwidthHsHostComputeCurrentFsls(ehciInstance, hubNumber, frameIndex, frameTimes); in USB_HostBandwidthHsHostAllocateInterrupt()
1676 … USB_HostBandwidthHsHostComputeCurrentHsAll(ehciInstance, frameIndex, frameTimes); in USB_HostBandwidthHsHostAllocateInterrupt()
1738 static usb_status_t USB_HostBandwidthFslsHostAllocate(usb_host_ehci_instance_t *ehciInstance, in USB_HostBandwidthFslsHostAllocate() argument
1764 USB_HostBandwidthFslsHostComputeCurrent(ehciInstance, frameIndex, &frameTime); in USB_HostBandwidthFslsHostAllocate()
1862 static void USB_HostEhciStartAsync(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciStartAsync() argument
1866 if (0U == (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_AS_MASK)) in USB_HostEhciStartAsync()
1871 stateSync = ((ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_AS_MASK) | in USB_HostEhciStartAsync()
1872 (ehciInstance->ehciIpBase->USBCMD & USBHS_USBCMD_ASE_MASK)); in USB_HostEhciStartAsync()
1875 …ehciInstance->ehciIpBase->ASYNCLISTADDR = (uint32_t)USB_HOST_MEMORY_CPU_2_DMA(ehciInstance->shedFi… in USB_HostEhciStartAsync()
1877 ehciInstance->ehciIpBase->ASYNCLISTADDR = (uint32_t)(ehciInstance->shedFirstQh); in USB_HostEhciStartAsync()
1879 ehciInstance->ehciIpBase->USBCMD |= USBHS_USBCMD_ASE_MASK; in USB_HostEhciStartAsync()
1880 while (0U == (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_AS_MASK)) in USB_HostEhciStartAsync()
1886 static void USB_HostEhciStopAsync(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciStopAsync() argument
1893 stateSync = ((ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_AS_MASK) | in USB_HostEhciStopAsync()
1894 (ehciInstance->ehciIpBase->USBCMD & USBHS_USBCMD_ASE_MASK)); in USB_HostEhciStopAsync()
1897 …ehciInstance->ehciIpBase->USBCMD &= (uint32_t)(~(uint32_t)USBHS_USBCMD_ASE_MASK); /* disable async… in USB_HostEhciStopAsync()
1898 while (0U != (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_AS_MASK)) in USB_HostEhciStopAsync()
1903 static void USB_HostEhciStartPeriodic(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciStartPeriodic() argument
1907 if (0U == (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_PS_MASK)) in USB_HostEhciStartPeriodic()
1912 stateSync = ((ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_PS_MASK) | in USB_HostEhciStartPeriodic()
1913 (ehciInstance->ehciIpBase->USBCMD & USBHS_USBCMD_PSE_MASK)); in USB_HostEhciStartPeriodic()
1916 …ehciInstance->ehciIpBase->PERIODICLISTBASE = (uint32_t)USB_HOST_MEMORY_CPU_2_DMA(ehciInstance->ehc… in USB_HostEhciStartPeriodic()
1918 ehciInstance->ehciIpBase->PERIODICLISTBASE = (uint32_t)(ehciInstance->ehciFrameList); in USB_HostEhciStartPeriodic()
1920 if (0U == (ehciInstance->ehciIpBase->USBCMD & USBHS_USBCMD_PSE_MASK)) in USB_HostEhciStartPeriodic()
1922 ehciInstance->ehciIpBase->USBCMD |= USBHS_USBCMD_PSE_MASK; /* start periodic schedule */ in USB_HostEhciStartPeriodic()
1924 while (0U == (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_PS_MASK)) in USB_HostEhciStartPeriodic()
1931 static void USB_HostEhciStopPeriodic(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciStopPeriodic() argument
1938 stateSync = ((ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_PS_MASK) | in USB_HostEhciStopPeriodic()
1939 (ehciInstance->ehciIpBase->USBCMD & USBHS_USBCMD_PSE_MASK)); in USB_HostEhciStopPeriodic()
1942 ehciInstance->ehciIpBase->USBCMD &= (~USBHS_USBCMD_PSE_MASK); /* stop periodic schedule */ in USB_HostEhciStopPeriodic()
1943 while (0U != (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_PS_MASK)) in USB_HostEhciStopPeriodic()
1948 static usb_status_t USB_HostEhciQhQtdListInit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciQhQtdListInit() argument
1991 if (qtdNumber <= ehciInstance->ehciQtdNumber) in USB_HostEhciQhQtdListInit()
1993 ehciInstance->ehciQtdNumber -= (uint8_t)qtdNumber; in USB_HostEhciQhQtdListInit()
1994 BaseQtdPointer = ehciInstance->ehciQtdHead; in USB_HostEhciQhQtdListInit()
2001 … qtdPointer->nextQtdPointer = (uint32_t)USB_HOST_MEMORY_CPU_2_DMA(ehciInstance->ehciQtdHead); in USB_HostEhciQhQtdListInit()
2003 qtdPointer->nextQtdPointer = (uint32_t)ehciInstance->ehciQtdHead; in USB_HostEhciQhQtdListInit()
2006 qtdPointer = ehciInstance->ehciQtdHead; in USB_HostEhciQhQtdListInit()
2008 …ehciInstance->ehciQtdHead = (usb_host_ehci_qtd_t *)USB_HOST_MEMORY_DMA_2_CPU(qtdPointer->nextQtdPo… in USB_HostEhciQhQtdListInit()
2010 ehciInstance->ehciQtdHead = (usb_host_ehci_qtd_t *)qtdPointer->nextQtdPointer; in USB_HostEhciQhQtdListInit()
2015 if (ehciInstance->ehciQtdNumber == 0U) in USB_HostEhciQhQtdListInit()
2017 ehciInstance->ehciQtdTail = NULL; in USB_HostEhciQhQtdListInit()
2223 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciQhQtdListInit()
2229 static uint32_t USB_HostEhciQtdListRelease(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciQtdListRelease() argument
2255 if (ehciInstance->ehciQtdNumber == 0U) in USB_HostEhciQtdListRelease()
2257 ehciInstance->ehciQtdHead = ehciQtdStart; in USB_HostEhciQtdListRelease()
2258 ehciInstance->ehciQtdTail = ehciQtdEnd; in USB_HostEhciQtdListRelease()
2262 ehciInstance->ehciQtdTail->nextQtdPointer = (uint32_t)ehciQtdStart; in USB_HostEhciQtdListRelease()
2263 ehciInstance->ehciQtdTail = ehciQtdEnd; in USB_HostEhciQtdListRelease()
2268 ehciInstance->ehciQtdNumber++; in USB_HostEhciQtdListRelease()
2275 ehciInstance->ehciQtdNumber++; in USB_HostEhciQtdListRelease()
2281 static usb_status_t USB_HostEhciQhQtdListDeinit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciQhQtdListDeinit() argument
2326 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciQhQtdListDeinit()
2333 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciQhQtdListDeinit()
2348 … USB_HostEhciQtdListRelease(ehciInstance, (usb_host_ehci_qtd_t *)(transfer->union1.unitHead), in USB_HostEhciQhQtdListDeinit()
2361 static usb_status_t USB_HostEhciTransferQtdListDeinit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciTransferQtdListDeinit() argument
2392 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciTransferQtdListDeinit()
2398 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciTransferQtdListDeinit()
2452 USB_HostEhciQtdListRelease(ehciInstance, (usb_host_ehci_qtd_t *)(transfer->union1.unitHead), in USB_HostEhciTransferQtdListDeinit()
2470 static usb_status_t USB_HostEhciQhInit(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe_t… in USB_HostEhciQhInit() argument
2483 if (ehciInstance->ehciQhList != NULL) in USB_HostEhciQhInit()
2485 qhPointer = (usb_host_ehci_qh_t *)ehciInstance->ehciQhList; in USB_HostEhciQhInit()
2486 ehciInstance->ehciQhList = in USB_HostEhciQhInit()
2487 …(usb_host_ehci_qh_t *)(ehciInstance->ehciQhList->horizontalLinkPointer & EHCI_HOST_POINTER_ADDRESS… in USB_HostEhciQhInit()
2575 static usb_status_t USB_HostEhciQhDeinit(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe… in USB_HostEhciQhDeinit() argument
2581 (void)USB_HostEhciQhQtdListDeinit(ehciInstance, ehciPipePointer); in USB_HostEhciQhDeinit()
2585 qhPointer->horizontalLinkPointer = (uint32_t)ehciInstance->ehciQhList; in USB_HostEhciQhDeinit()
2586 ehciInstance->ehciQhList = qhPointer; in USB_HostEhciQhDeinit()
2592 static void USB_HostEhciAddQhToFrame(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciAddQhToFrame() argument
2605 temp = (void *)ehciInstance->ehciFrameList; in USB_HostEhciAddQhToFrame()
2654 static void USB_HostEhciRemoveFromFrame(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciRemoveFromFrame() argument
2662 temp = (void *)ehciInstance->ehciFrameList; in USB_HostEhciRemoveFromFrame()
2696 static void USB_HostEhciLinkSitd(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciLinkSitd() argument
2716 … currentFrame = ((ehciInstance->ehciIpBase->FRINDEX & USB_HOST_EHCI_MAX_MICRFRAME_VALUE) >> 3U); in USB_HostEhciLinkSitd()
2738 … currentFrame = ((ehciInstance->ehciIpBase->FRINDEX & USB_HOST_EHCI_MAX_MICRFRAME_VALUE) >> 3U); in USB_HostEhciLinkSitd()
2787 temp = (void *)ehciInstance->ehciFrameList; in USB_HostEhciLinkSitd()
2800 sitdPointer = &(ehciInstance->ehciSitdIndexBase[sitdPointerIndex]); /* next sitd */ in USB_HostEhciLinkSitd()
2817 static usb_status_t USB_HostEhciSitdArrayInit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciSitdArrayInit() argument
2841 if (ehciInstance->ehciSitdNumber >= sitdNumber) in USB_HostEhciSitdArrayInit()
2843 sitdPointer = ehciInstance->ehciSitdList; in USB_HostEhciSitdArrayInit()
2849 ehciInstance->ehciSitdIndexBase); in USB_HostEhciSitdArrayInit()
2854 … ehciInstance->ehciSitdList = (usb_host_ehci_sitd_t *)(sitdPointer->nextLinkPointer & 0xFFFFFFFEU); in USB_HostEhciSitdArrayInit()
2855 ehciInstance->ehciSitdNumber -= (uint8_t)sitdNumber; in USB_HostEhciSitdArrayInit()
2895 if (ehciInstance->firstDeviceSpeed == USB_SPEED_HIGH) in USB_HostEhciSitdArrayInit()
2914 sitdPointer = (ehciInstance->ehciSitdIndexBase + sitdPointer->nextSitdIndex); in USB_HostEhciSitdArrayInit()
2939 USB_HostEhciLinkSitd(ehciInstance, ehciPipePointer, (void *)temp); in USB_HostEhciSitdArrayInit()
2944 static uint32_t USB_HostEhciSitdArrayRelease(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciSitdArrayRelease() argument
2956 USB_HostEhciRemoveFromFrame(ehciInstance, (uint32_t)sitdPointer, in USB_HostEhciSitdArrayRelease()
2962 …sitdPointer->nextLinkPointer = (((uint32_t)ehciInstance->ehciSitdList) | EHCI_HOST_T_INVALID_VALUE… in USB_HostEhciSitdArrayRelease()
2963 ehciInstance->ehciSitdList = sitdPointer; in USB_HostEhciSitdArrayRelease()
2964 ehciInstance->ehciSitdNumber++; in USB_HostEhciSitdArrayRelease()
2972 sitdPointer = &(ehciInstance->ehciSitdIndexBase[sitdPointer->nextSitdIndex]); in USB_HostEhciSitdArrayRelease()
2978 static usb_status_t USB_HostEhciSitdArrayDeinit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciSitdArrayDeinit() argument
2997 transfer->transferLength - USB_HostEhciSitdArrayRelease(ehciInstance, in USB_HostEhciSitdArrayDeinit()
3011 static uint32_t USB_HostEhciGetItdLinkFrame(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciGetItdLinkFrame() argument
3027 currentUframe = (ehciInstance->ehciIpBase->FRINDEX & USB_HOST_EHCI_MAX_MICRFRAME_VALUE); in USB_HostEhciGetItdLinkFrame()
3062 currentUframe = (ehciInstance->ehciIpBase->FRINDEX & USB_HOST_EHCI_MAX_MICRFRAME_VALUE); in USB_HostEhciGetItdLinkFrame()
3081 static usb_status_t USB_HostEhciItdArrayInit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciItdArrayInit() argument
3115 if (maxItdNumber > ehciInstance->ehciItdNumber) in USB_HostEhciItdArrayInit()
3139 ehciInstance, isoPointer->lastLinkFrame, in USB_HostEhciItdArrayInit()
3149 itdHead = ehciInstance->ehciItdList; in USB_HostEhciItdArrayInit()
3153 tmpItdPointer = ehciInstance->ehciItdList; in USB_HostEhciItdArrayInit()
3158 ehciInstance->ehciItdList = (usb_host_ehci_itd_t *)tmpItdPointer->nextItdPointer; in USB_HostEhciItdArrayInit()
3159 ehciInstance->ehciItdNumber -= 1U; in USB_HostEhciItdArrayInit()
3235 void *temp = (void *)ehciInstance->ehciFrameList; in USB_HostEhciItdArrayInit()
3281 static uint32_t USB_HostEhciItdArrayRelease(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciItdArrayRelease() argument
3299 USB_HostEhciRemoveFromFrame(ehciInstance, (uint32_t)itdPointer, in USB_HostEhciItdArrayRelease()
3307 itdPointer->nextItdPointer = (usb_host_ehci_itd_t *)ehciInstance->ehciItdList; in USB_HostEhciItdArrayRelease()
3308 ehciInstance->ehciItdList = itdPointer; in USB_HostEhciItdArrayRelease()
3309 ehciInstance->ehciItdNumber++; in USB_HostEhciItdArrayRelease()
3322 static usb_status_t USB_HostEhciItdArrayDeinit(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciItdArrayDeinit() argument
3342 …doneLength = USB_HostEhciItdArrayRelease(ehciInstance, (usb_host_ehci_itd_t *)transfer->union1.uni… in USB_HostEhciItdArrayDeinit()
3362 static usb_status_t USB_HostEhciOpenControlBulk(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciOpenControlBulk() argument
3370 …if (USB_HostEhciQhInit(ehciInstance, ehciPipePointer) != kStatus_USB_Success) /* initialize contro… in USB_HostEhciOpenControlBulk()
3380 (uint32_t)USB_HOST_MEMORY_CPU_2_DMA(ehciInstance->shedFirstQh->horizontalLinkPointer); in USB_HostEhciOpenControlBulk()
3382 ehciInstance->shedFirstQh->horizontalLinkPointer = (convert_addr | EHCI_HOST_POINTER_TYPE_QH); in USB_HostEhciOpenControlBulk()
3384 …qhPointer->horizontalLinkPointer = ehciInstance->shedFirstQh->horizontalLinkPointe… in USB_HostEhciOpenControlBulk()
3385 …ehciInstance->shedFirstQh->horizontalLinkPointer = ((uint32_t)qhPointer | EHCI_HOST_POINTER_TYPE_Q… in USB_HostEhciOpenControlBulk()
3391 static usb_status_t USB_HostEhciCloseControlBulk(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciCloseControlBulk() argument
3404 …convert_addr = (uint32_t)USB_HOST_MEMORY_DMA_2_CPU(ehciInstance->shedFirstQh->horizontalLinkPointe… in USB_HostEhciCloseControlBulk()
3407 if ((ehciInstance->shedFirstQh->horizontalLinkPointer & EHCI_HOST_POINTER_ADDRESS_MASK) == in USB_HostEhciCloseControlBulk()
3412 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciCloseControlBulk()
3413 ehciInstance->shedFirstQh->horizontalLinkPointer = in USB_HostEhciCloseControlBulk()
3415 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciCloseControlBulk()
3421 vltPrevQhPointer = ehciInstance->shedFirstQh; in USB_HostEhciCloseControlBulk()
3431 … ((horizontalLinkValue & EHCI_HOST_POINTER_ADDRESS_MASK) == (uint32_t)ehciInstance->shedFirstQh)) in USB_HostEhciCloseControlBulk()
3446 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciCloseControlBulk()
3449 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciCloseControlBulk()
3455 … return USB_HostEhciQhDeinit(ehciInstance, ehciPipePointer); /* de-initialize qh and release qh */ in USB_HostEhciCloseControlBulk()
3458 static usb_status_t USB_HostEhciOpenInterrupt(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciOpenInterrupt() argument
3466 if (ehciInstance->firstDeviceSpeed == USB_SPEED_HIGH) in USB_HostEhciOpenInterrupt()
3468 …status = USB_HostBandwidthHsHostAllocateInterrupt(ehciInstance, ehciPipePointer); /* host works as… in USB_HostEhciOpenInterrupt()
3472 status = USB_HostBandwidthFslsHostAllocate(ehciInstance, in USB_HostEhciOpenInterrupt()
3480 if (USB_HostEhciQhInit(ehciInstance, ehciPipePointer) != kStatus_USB_Success) in USB_HostEhciOpenInterrupt()
3490 …USB_HostEhciAddQhToFrame(ehciInstance, (uint32_t)temp, (uint16_t)frameIndex, ehciPipePointer->ufra… in USB_HostEhciOpenInterrupt()
3496 static usb_status_t USB_HostEhciCloseInterrupt(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciCloseInterrupt() argument
3506 USB_HostEhciRemoveFromFrame(ehciInstance, (uint32_t)temp, (uint16_t)frameIndex); in USB_HostEhciCloseInterrupt()
3511 return USB_HostEhciQhDeinit(ehciInstance, ehciPipePointer); /* de-initilaze qh and release qh */ in USB_HostEhciCloseInterrupt()
3517 static usb_status_t USB_HostEhciOpenIso(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe_… in USB_HostEhciOpenIso() argument
3522 if (ehciInstance->firstDeviceSpeed == USB_SPEED_HIGH) in USB_HostEhciOpenIso()
3525 … ehciInstance, ehciPipePointer); /* allocate iso bandwidth when host works as high-speed */ in USB_HostEhciOpenIso()
3530 …ehciInstance, ehciPipePointer); /* allocate iso bandwidth when host works as full-speed or low-spe… in USB_HostEhciOpenIso()
3539 if (ehciInstance->ehciIsoList == NULL) in USB_HostEhciOpenIso()
3544 isoPointer = ehciInstance->ehciIsoList; in USB_HostEhciOpenIso()
3545 ehciInstance->ehciIsoList = ehciInstance->ehciIsoList->next; in USB_HostEhciOpenIso()
3553 static usb_status_t USB_HostEhciCloseIso(usb_host_ehci_instance_t *ehciInstance, usb_host_ehci_pipe… in USB_HostEhciCloseIso() argument
3567 …(void)USB_HostEhciItdArrayDeinit(ehciInstance, ehciPipePointer); /* de-initialize itd list and fre… in USB_HostEhciCloseIso()
3573 (void)USB_HostEhciSitdArrayDeinit(ehciInstance, in USB_HostEhciCloseIso()
3581 isoPointer->next = ehciInstance->ehciIsoList; in USB_HostEhciCloseIso()
3582 ehciInstance->ehciIsoList = isoPointer; in USB_HostEhciCloseIso()
3589 static usb_status_t USB_HostEhciResetIP(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciResetIP() argument
3593 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciResetIP()
3597 ehciInstance->ehciIpBase->USBCMD = USBHS_USBCMD_RST_MASK; in USB_HostEhciResetIP()
3598 while (0U != (ehciInstance->ehciIpBase->USBCMD & USBHS_USBCMD_RST_MASK)) in USB_HostEhciResetIP()
3605 ehciInstance->ehciIpBase->USBMODE |= 0x03U; in USB_HostEhciResetIP()
3607 ehciInstance->ehciIpBase->USBMODE |= (0x03U | (0x01U << USBHS_USBMODE_ES_SHIFT)); in USB_HostEhciResetIP()
3610 if (0U == (ehciInstance->ehciIpBase->HCCPARAMS & USBHS_HCCPARAMS_PFL_MASK)) in USB_HostEhciResetIP()
3622 static usb_status_t USB_HostEhciStartIP(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciStartIP() argument
3626 …if (0U != (ehciInstance->ehciIpBase->HCSPARAMS & USBHS_HCSPARAMS_PPC_MASK)) /* Ports have power po… in USB_HostEhciStartIP()
3629 tmp = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciStartIP()
3631 ehciInstance->ehciIpBase->PORTSC1 = (tmp | USBHS_PORTSC1_PP_MASK); /* turn on port power */ in USB_HostEhciStartIP()
3635 if (0U != (ehciInstance->ehciIpBase->HCCPARAMS & USBHS_HCCPARAMS_PFL_MASK)) in USB_HostEhciStartIP()
3638 ehciInstance->ehciIpBase->USBCMD |= (USBHS_USBCMD_FS2_MASK); in USB_HostEhciStartIP()
3640 ehciInstance->ehciIpBase->USBCMD |= (0x00U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3642 ehciInstance->ehciIpBase->USBCMD |= (0x01U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3644 ehciInstance->ehciIpBase->USBCMD |= (0x02U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3646 ehciInstance->ehciIpBase->USBCMD |= (0x03U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3650 ehciInstance->ehciIpBase->USBCMD |= (0x00U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3652 ehciInstance->ehciIpBase->USBCMD |= (0x01U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3654 ehciInstance->ehciIpBase->USBCMD |= (0x02U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3656 ehciInstance->ehciIpBase->USBCMD |= (0x03U << USBHS_USBCMD_FS_SHIFT); in USB_HostEhciStartIP()
3661 ehciInstance->ehciIpBase->USBCMD &= ~USBHS_USBCMD_ITC_MASK; in USB_HostEhciStartIP()
3663 ehciInstance->ehciIpBase->USBCMD |= USBHS_USBCMD_RS_MASK; in USB_HostEhciStartIP()
3665 ehciInstance->ehciIpBase->GPTIMER0LD = (100U * 1000U - 1U); /* 100ms */ in USB_HostEhciStartIP()
3669 ehciInstance->ehciIpBase->USBINTR |= (0x1000037U); in USB_HostEhciStartIP()
3672 ehciInstance->ehciIpBase->USBINTR |= USB_USBINTR_LPM_HST_COMPIE_MASK; in USB_HostEhciStartIP()
3673 ehciInstance->registerNcBase->LPM_CSR0 |= USBNC_LPM_CSR0_LPM_EN_MASK; in USB_HostEhciStartIP()
3680 static usb_status_t USB_HostEhciCancelPipe(usb_host_ehci_instance_t *ehciInstance, in USB_HostEhciCancelPipe() argument
3720 … (void)USB_HostEhciQhQtdListDeinit(ehciInstance, ehciPipePointer); /* release all the qtd */ in USB_HostEhciCancelPipe()
3724 (void)USB_HostEhciTransferQtdListDeinit(ehciInstance, ehciPipePointer, transfer); in USB_HostEhciCancelPipe()
3742 … (void)USB_HostEhciItdArrayDeinit(ehciInstance, ehciPipePointer); /* de-initialize itd */ in USB_HostEhciCancelPipe()
3748 … (void)USB_HostEhciSitdArrayDeinit(ehciInstance, ehciPipePointer); /* de-initialize sitd */ in USB_HostEhciCancelPipe()
3762 static usb_status_t USB_HostEhciControlBus(usb_host_ehci_instance_t *ehciInstance, uint8_t busContr… in USB_HostEhciControlBus() argument
3771 portScRegister = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciControlBus()
3773 ehciInstance->ehciIpBase->PORTSC1 = (portScRegister | USBHS_PORTSC1_PR_MASK); in USB_HostEhciControlBus()
3774 while (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_PR_MASK)) in USB_HostEhciControlBus()
3780 ehciInstance->deviceAttached = (uint8_t)kEHCIDeviceDetached; in USB_HostEhciControlBus()
3781 …ehciInstance->ehciIpBase->USBINTR |= (USBHS_USBINTR_PCE_MASK); /* enable ehci port change interrup… in USB_HostEhciControlBus()
3785 if (ehciInstance->deviceAttached == (uint8_t)kEHCIDeviceDetached) in USB_HostEhciControlBus()
3787 …ehciInstance->ehciIpBase->USBINTR |= (USBHS_USBINTR_PCE_MASK); /* enable ehci port change interrup… in USB_HostEhciControlBus()
3792 …ehciInstance->ehciIpBase->USBINTR &= (~USBHS_USBINTR_PCE_MASK); /* disable ehci port change interr… in USB_HostEhciControlBus()
3796 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciControlBus()
3799 ehciInstance->ehciIpBase->GPTIMER1LD = (1 * 1000); /* 1ms */ in USB_HostEhciControlBus()
3800 ehciInstance->ehciIpBase->GPTIMER1CTL |= in USB_HostEhciControlBus()
3803 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciControlBus()
3804 USB_HostEhciStopPeriodic(ehciInstance); in USB_HostEhciControlBus()
3806 … while (0U != (ehciInstance->ehciIpBase->USBSTS & (USBHS_USBSTS_PS_MASK | USBHS_USBSTS_AS_MASK))) in USB_HostEhciControlBus()
3810 ehciInstance->ehciIpBase->PORTSC1 &= ~USBHS_PORTSC1_WKCN_MASK; in USB_HostEhciControlBus()
3811 ehciInstance->ehciIpBase->PORTSC1 |= USBHS_PORTSC1_WKDS_MASK; in USB_HostEhciControlBus()
3812 … ehciInstance->ehciIpBase->PORTSC1 |= (USBHS_PORTSC1_SUSP_MASK); /* Suspend the device */ in USB_HostEhciControlBus()
3816 ehciInstance->matchTick = 0U; in USB_HostEhciControlBus()
3817 ehciInstance->ehciIpBase->USBINTR |= (USBHS_USBINTR_TIE1_MASK); in USB_HostEhciControlBus()
3818 ehciInstance->busSuspendStatus = kBus_EhciStartSuspend; in USB_HostEhciControlBus()
3826 ehciInstance->ehciIpBase->PORTSC1 &= ~(USBHS_PORTSC1_SUSP_MASK); /* Clear Suspend bit */ in USB_HostEhciControlBus()
3827 ehciInstance->ehciIpBase->PORTSC1 &= ~USBHS_PORTSC1_PHCD_MASK; in USB_HostEhciControlBus()
3828 if (ehciInstance->deviceAttached != (uint8_t)kEHCIDeviceDetached) in USB_HostEhciControlBus()
3830 ehciInstance->busSuspendStatus = kBus_EhciStartResume; in USB_HostEhciControlBus()
3832 ehciInstance->registerNcBase->USB_OTGn_CTRL &= ~USBNC_USB_OTGn_CTRL_WIE_MASK; in USB_HostEhciControlBus()
3836 ehciInstance->ehciIpBase->USBGENCTRL &= ~USBHS_USBGENCTRL_WU_IE_MASK; in USB_HostEhciControlBus()
3839 ehciInstance->ehciIpBase->USBCMD |= (USBHS_USBCMD_RS_MASK); in USB_HostEhciControlBus()
3840 … ehciInstance->ehciIpBase->PORTSC1 |= (USBHS_PORTSC1_FPR_MASK); /* Resume the device */ in USB_HostEhciControlBus()
3850 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciControlBus()
3855 ehciInstance->ehciIpBase->GPTIMER1LD = (1 * 1000); /* 1ms */ in USB_HostEhciControlBus()
3856 ehciInstance->ehciIpBase->GPTIMER1CTL |= in USB_HostEhciControlBus()
3859 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciControlBus()
3860 USB_HostEhciStopPeriodic(ehciInstance); in USB_HostEhciControlBus()
3862 … while (0U != (ehciInstance->ehciIpBase->USBSTS & (USBHS_USBSTS_PS_MASK | USBHS_USBSTS_AS_MASK))) in USB_HostEhciControlBus()
3866 ehciInstance->ehciIpBase->PORTSC1 &= ~USBHS_PORTSC1_WKCN_MASK; in USB_HostEhciControlBus()
3867 ehciInstance->ehciIpBase->PORTSC1 |= USBHS_PORTSC1_WKDS_MASK; in USB_HostEhciControlBus()
3868 ehciInstance->matchTick = 0U; in USB_HostEhciControlBus()
3869 ehciInstance->ehciIpBase->USBINTR |= (USBHS_USBINTR_TIE1_MASK); in USB_HostEhciControlBus()
3870 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciControlBus()
3871 portScRegister = ehciInstance->registerNcBase->LPM_CSR2; in USB_HostEhciControlBus()
3874 ((uint32_t)ehciInstance->hirdValue << USBNC_LPM_CSR2_LPM_HST_BESL_SHIFT) | in USB_HostEhciControlBus()
3875 … ((uint32_t)ehciInstance->L1remoteWakeupEnable << USBNC_LPM_CSR2_LPM_HST_RWKEN_SHIFT)); in USB_HostEhciControlBus()
3876 ehciInstance->registerNcBase->LPM_CSR2 = portScRegister; in USB_HostEhciControlBus()
3880 ehciInstance->busSuspendStatus = kBus_EhciL1StartSleep; in USB_HostEhciControlBus()
3884 ehciInstance->ehciIpBase->USBSTS |= USB_USBSTS_SRI_MASK; in USB_HostEhciControlBus()
3886 … while ((0U == (ehciInstance->ehciIpBase->USBSTS & USB_USBSTS_SRI_MASK)) && (0U != lpm_count)) in USB_HostEhciControlBus()
3890 … ehciInstance->registerNcBase->LPM_CSR2 |= ((uint32_t)USBNC_LPM_CSR2_LPM_HST_SEND_MASK | in USB_HostEhciControlBus()
3903 ehciInstance->ehciIpBase->PORTSC1 &= ~(USBHS_PORTSC1_SUSP_MASK); /* Clear Suspend bit */ in USB_HostEhciControlBus()
3904 ehciInstance->ehciIpBase->PORTSC1 &= ~USBHS_PORTSC1_PHCD_MASK; in USB_HostEhciControlBus()
3905 if (ehciInstance->deviceAttached != (uint8_t)kEHCIDeviceDetached) in USB_HostEhciControlBus()
3907 ehciInstance->busSuspendStatus = kBus_EhciL1StartResume; in USB_HostEhciControlBus()
3908 ehciInstance->registerNcBase->USB_OTGn_CTRL &= ~USBNC_USB_OTGn_CTRL_WIE_MASK; in USB_HostEhciControlBus()
3909 ehciInstance->ehciIpBase->USBCMD |= (USBHS_USBCMD_RS_MASK); in USB_HostEhciControlBus()
3910 … ehciInstance->ehciIpBase->PORTSC1 |= (USBHS_PORTSC1_FPR_MASK); /* Resume the device */ in USB_HostEhciControlBus()
3937 void USB_HostEhciTransactionDone(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciTransactionDone() argument
3964 ehciPipePointer = ehciInstance->ehciRunningPipeList; /* check all the running pipes */ in USB_HostEhciTransactionDone()
3986 … USB_HostEhciQtdListRelease(ehciInstance, (usb_host_ehci_qtd_t *)(transfer->union1.unitHead), in USB_HostEhciTransactionDone()
4022 ehciClearPipePointer = ehciInstance->ehciRunningPipeList; in USB_HostEhciTransactionDone()
4106 ehciInstance, (usb_host_ehci_qtd_t *)(transfer->union1.unitHead), in USB_HostEhciTransactionDone()
4161 dataLength = USB_HostEhciItdArrayRelease(ehciInstance, in USB_HostEhciTransactionDone()
4187 ehciInstance, (usb_host_ehci_sitd_t *)transfer->union1.unitHead, in USB_HostEhciTransactionDone()
4220 static void USB_HostEhciPortChange(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciPortChange() argument
4223 uint32_t portScRegister = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciPortChange()
4230 sofStart = (ehciInstance->ehciIpBase->FRINDEX & EHCI_MAX_UFRAME_VALUE); in USB_HostEhciPortChange()
4235 portScRegister = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciPortChange()
4239 portScRegister = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciPortChange()
4241 ehciInstance->ehciIpBase->PORTSC1 = (portScRegister | USBHS_PORTSC1_CSC_MASK); in USB_HostEhciPortChange()
4243 sofCount = (ehciInstance->ehciIpBase->FRINDEX & EHCI_MAX_UFRAME_VALUE); in USB_HostEhciPortChange()
4253 portScRegister = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciPortChange()
4256 if ((ehciInstance->deviceAttached == (uint8_t)kEHCIDevicePhyAttached) || in USB_HostEhciPortChange()
4257 (ehciInstance->deviceAttached == (uint8_t)kEHCIDeviceAttached)) in USB_HostEhciPortChange()
4262 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciPortChange()
4263 ehciInstance->ehciIpBase->USBINTR &= ~(USBHS_USBINTR_TIE1_MASK); in USB_HostEhciPortChange()
4267 USB_HostEhciDelay(ehciInstance->ehciIpBase, 1); in USB_HostEhciPortChange()
4268 if (0U == (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciPortChange()
4275 ehciInstance->deviceAttached = (uint8_t)kEHCIDeviceDetached; in USB_HostEhciPortChange()
4279 portScRegister = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciPortChange()
4281 ehciInstance->ehciIpBase->PORTSC1 = (portScRegister | USBHS_PORTSC1_PR_MASK); in USB_HostEhciPortChange()
4282 while (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_PR_MASK)) in USB_HostEhciPortChange()
4285 ehciInstance->firstDeviceSpeed = in USB_HostEhciPortChange()
4286 …(uint8_t)((ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_PSPD_MASK) >> USBHS_PORTSC1_PSPD_SHIF… in USB_HostEhciPortChange()
4290 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciPortChange()
4293 if (ehciInstance->firstDeviceSpeed == USB_SPEED_HIGH) in USB_HostEhciPortChange()
4295 USB_EhcihostPhyDisconnectDetectCmd(ehciInstance->controllerId, 1); in USB_HostEhciPortChange()
4301 USB_HostEhciDelay(ehciInstance->ehciIpBase, USB_HOST_EHCI_PORT_RESET_DELAY); in USB_HostEhciPortChange()
4303 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_DEVICE_ATTACH); in USB_HostEhciPortChange()
4305 ehciInstance->ehciIpBase->GPTIMER0CTL |= in USB_HostEhciPortChange()
4307 ehciInstance->deviceAttached = (uint8_t)kEHCIDevicePhyAttached; in USB_HostEhciPortChange()
4311 if ((ehciInstance->deviceAttached == (uint8_t)kEHCIDevicePhyAttached) || in USB_HostEhciPortChange()
4312 (ehciInstance->deviceAttached == (uint8_t)kEHCIDeviceAttached)) in USB_HostEhciPortChange()
4315 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciPortChange()
4316 ehciInstance->ehciIpBase->USBINTR &= ~(USBHS_USBINTR_TIE1_MASK); in USB_HostEhciPortChange()
4321 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciPortChange()
4324 USB_EhcihostPhyDisconnectDetectCmd(ehciInstance->controllerId, 0); in USB_HostEhciPortChange()
4329 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciPortChange()
4330 USB_HostEhciStopPeriodic(ehciInstance); in USB_HostEhciPortChange()
4332 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_DEVICE_DETACH); in USB_HostEhciPortChange()
4337 static void USB_HostEhciTimer0(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciTimer0() argument
4347 usb_host_ehci_pipe_t *ehciPipePointer = ehciInstance->ehciRunningPipeList; in USB_HostEhciTimer0()
4362 if (ehciInstance->deviceAttached != (uint8_t)kEHCIDeviceAttached) in USB_HostEhciTimer0()
4407 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciTimer0()
4411 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciTimer0()
4418 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciTimer0()
4458 … USB_HostEhciQtdListRelease(ehciInstance, (usb_host_ehci_qtd_t *)(transfer->union1.unitHead), in USB_HostEhciTimer0()
4481 static void USB_HostEhciTimer1(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciTimer1() argument
4483 if (ehciInstance->deviceAttached != (uint8_t)kEHCIDeviceDetached) in USB_HostEhciTimer1()
4485 if (kBus_EhciStartSuspend == ehciInstance->busSuspendStatus) in USB_HostEhciTimer1()
4487 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciTimer1()
4489 if (0U == ehciInstance->matchTick) in USB_HostEhciTimer1()
4491 ehciInstance->matchTick = hostPointer->hwTick; in USB_HostEhciTimer1()
4495 if ((hostPointer->hwTick - ehciInstance->matchTick) >= 5U) in USB_HostEhciTimer1()
4497 ehciInstance->ehciIpBase->USBCMD &= ~USBHS_USBCMD_RS_MASK; in USB_HostEhciTimer1()
4498 ehciInstance->ehciIpBase->USBSTS |= USBHS_USBSTS_SRI_MASK; in USB_HostEhciTimer1()
4501 ehciInstance->registerPhyBase->CTRL |= USBPHY_CTRL_ENVBUSCHG_WKUP_MASK in USB_HostEhciTimer1()
4510 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciTimer1()
4513 ehciInstance->registerPhyBase->USB1_VBUS_DETECT_SET |= in USB_HostEhciTimer1()
4517 ehciInstance->ehciIpBase->PORTSC1 |= USBHS_PORTSC1_PHCD_MASK; in USB_HostEhciTimer1()
4520 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciTimer1()
4523 ehciInstance->registerPhyBase->PWD = 0xFFFFFFFFU; in USB_HostEhciTimer1()
4525 … while (0U != (ehciInstance->registerPhyBase->CTRL & (USBPHY_CTRL_UTMI_SUSPENDM_MASK))) in USB_HostEhciTimer1()
4533 … ehciInstance->registerNcBase->USB_OTGn_CTRL |= USBNC_USB_OTGn_CTRL_WKUP_VBUS_EN_MASK | in USB_HostEhciTimer1()
4536 … ehciInstance->registerNcBase->USB_OTGn_CTRL |= USBNC_USB_OTGn_CTRL_WKUP_ID_EN_MASK | in USB_HostEhciTimer1()
4540 ehciInstance->registerNcBase->USB_OTGn_CTRL |= USBNC_USB_OTGn_CTRL_WIE_MASK; in USB_HostEhciTimer1()
4544 ehciInstance->ehciIpBase->USBGENCTRL = USBHS_USBGENCTRL_WU_IE_MASK; in USB_HostEhciTimer1()
4549 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciTimer1()
4552 ehciInstance->registerPhyBase->CTRL |= USBPHY_CTRL_CLKGATE_MASK; in USB_HostEhciTimer1()
4557 ehciInstance->busSuspendStatus = kBus_EhciSuspended; in USB_HostEhciTimer1()
4561 else if (kBus_EhciStartResume == ehciInstance->busSuspendStatus) in USB_HostEhciTimer1()
4563 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciTimer1()
4564 if (0U == (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_FPR_MASK)) in USB_HostEhciTimer1()
4566 ehciInstance->ehciIpBase->PORTSC1 &= ~USBHS_PORTSC1_WKDS_MASK; in USB_HostEhciTimer1()
4567 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciTimer1()
4570 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciTimer1()
4571 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciTimer1()
4577 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciTimer1()
4578 ehciInstance->ehciIpBase->USBINTR &= ~(USBHS_USBINTR_TIE1_MASK); in USB_HostEhciTimer1()
4582 else if (kBus_EhciL1StartResume == ehciInstance->busSuspendStatus) in USB_HostEhciTimer1()
4584 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciTimer1()
4585 if (0U == (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_FPR_MASK)) in USB_HostEhciTimer1()
4587 while (!(ehciInstance->ehciIpBase->USBSTS & USB_USBSTS_LPM_L1_EXITI_MASK)) in USB_HostEhciTimer1()
4592 ehciInstance->ehciIpBase->USBSTS |= USB_USBSTS_LPM_L1_EXITI_MASK; in USB_HostEhciTimer1()
4593 ehciInstance->ehciIpBase->PORTSC1 &= ~USBHS_PORTSC1_WKDS_MASK; in USB_HostEhciTimer1()
4594 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciTimer1()
4597 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciTimer1()
4598 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciTimer1()
4604 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciTimer1()
4605 ehciInstance->ehciIpBase->USBINTR &= ~(USBHS_USBINTR_TIE1_MASK); in USB_HostEhciTimer1()
4615 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciTimer1()
4616 ehciInstance->ehciIpBase->USBINTR &= ~(USBHS_USBINTR_TIE1_MASK); in USB_HostEhciTimer1()
4621 static void USB_HostEhciCompletedLPM(usb_host_ehci_instance_t *ehciInstance) in USB_HostEhciCompletedLPM() argument
4626 portStatus = ehciInstance->ehciIpBase->PORTSC1; in USB_HostEhciCompletedLPM()
4627 portNcStatus = ehciInstance->registerNcBase->LPM_CSR2; in USB_HostEhciCompletedLPM()
4631 if (((uint8_t)kBus_EhciL1StartSleep == ehciInstance->busSuspendStatus)) in USB_HostEhciCompletedLPM()
4633 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciCompletedLPM()
4637 while (!(ehciInstance->ehciIpBase->USBSTS & USB_USBSTS_LPM_L1_ENTRYI_MASK)) in USB_HostEhciCompletedLPM()
4641 ehciInstance->ehciIpBase->USBSTS |= USB_USBSTS_LPM_L1_ENTRYI_MASK; in USB_HostEhciCompletedLPM()
4643 portStatus = ehciInstance->ehciIpBase->USBCMD; in USB_HostEhciCompletedLPM()
4645 ehciInstance->ehciIpBase->USBCMD = portStatus; in USB_HostEhciCompletedLPM()
4646 ehciInstance->ehciIpBase->USBSTS |= USBHS_USBSTS_SRI_MASK; in USB_HostEhciCompletedLPM()
4649 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciCompletedLPM()
4652 ehciInstance->registerPhyBase->USB1_VBUS_DETECT_SET |= in USB_HostEhciCompletedLPM()
4659 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciCompletedLPM()
4662 ehciInstance->registerPhyBase->PWD = 0xFFFFFFFFU; in USB_HostEhciCompletedLPM()
4664 … while (0U != (ehciInstance->registerPhyBase->CTRL & (USBPHY_CTRL_UTMI_SUSPENDM_MASK))) in USB_HostEhciCompletedLPM()
4672 … ehciInstance->registerNcBase->USB_OTGn_CTRL |= USBNC_USB_OTGn_CTRL_WKUP_VBUS_EN_MASK | in USB_HostEhciCompletedLPM()
4675 ehciInstance->registerNcBase->USB_OTGn_CTRL |= USBNC_USB_OTGn_CTRL_WKUP_ID_EN_MASK | in USB_HostEhciCompletedLPM()
4679 ehciInstance->registerNcBase->USB_OTGn_CTRL |= USBNC_USB_OTGn_CTRL_WIE_MASK; in USB_HostEhciCompletedLPM()
4684 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciCompletedLPM()
4687 ehciInstance->registerPhyBase->CTRL |= USBPHY_CTRL_CLKGATE_MASK; in USB_HostEhciCompletedLPM()
4693 ehciInstance->busSuspendStatus = kBus_EhciL1Sleeped; in USB_HostEhciCompletedLPM()
4697 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciCompletedLPM()
4705 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciCompletedLPM()
4714 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciCompletedLPM()
4721 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciCompletedLPM()
4743 usb_host_ehci_instance_t *ehciInstance; in USB_HostEhciCreate() local
4760 ehciInstance = (usb_host_ehci_instance_t *)OSA_MemoryAllocate( in USB_HostEhciCreate()
4762 if (ehciInstance == NULL) in USB_HostEhciCreate()
4766 ehciInstance->controllerId = controllerId; in USB_HostEhciCreate()
4767 ehciInstance->hostHandle = upperLayerHandle; in USB_HostEhciCreate()
4768 ehciInstance->deviceAttached = (uint8_t)kEHCIDeviceDetached; in USB_HostEhciCreate()
4769 ehciInstance->ehciIpBase = (USBHS_Type *) in USB_HostEhciCreate()
4772 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciCreate()
4777 if (0U == (uint32_t)FSL_FEATURE_USBHS_SUPPORT_EUSBn(ehciInstance->ehciIpBase)) in USB_HostEhciCreate()
4780 ehciInstance->registerPhyBase = (USBPHY_Type *)USB_EhciPhyGetBase(controllerId); in USB_HostEhciCreate()
4784 ehciInstance->registerNcBase = (USBNC_Type *)USB_EhciNCGetBase(controllerId); in USB_HostEhciCreate()
4791 if ((USB_HostEhciResetIP(ehciInstance) != kStatus_USB_Success) || in USB_HostEhciCreate()
4792 ((ehciInstance->controllerId < (uint8_t)kUSB_ControllerEhci0))) /* reset ehci ip */ in USB_HostEhciCreate()
4794 OSA_MemoryFree(ehciInstance); in USB_HostEhciCreate()
4803 ehciInstance->ehciFrameList = &s_UsbHostEhciFrameList1[0]; in USB_HostEhciCreate()
4810 ehciInstance->ehciFrameList = &s_UsbHostEhciFrameList1[0]; in USB_HostEhciCreate()
4816 ehciInstance->ehciFrameList = &s_UsbHostEhciFrameList2[0]; in USB_HostEhciCreate()
4823 if (ehciInstance->ehciFrameList == NULL) in USB_HostEhciCreate()
4825 OSA_MemoryFree(ehciInstance); in USB_HostEhciCreate()
4839 ehciInstance->ehciUnitBase = (uint32_t *)(temp); in USB_HostEhciCreate()
4841 ehciInstance->ehciQhList = (usb_host_ehci_qh_t *)((uint32_t)(ehciInstance->ehciUnitBase)); in USB_HostEhciCreate()
4842 ehciInstance->ehciQtdHead = (usb_host_ehci_qtd_t *)((uint32_t)ehciInstance->ehciQhList + in USB_HostEhciCreate()
4844 ehciInstance->ehciItdList = (usb_host_ehci_itd_t *)((uint32_t)ehciInstance->ehciQtdHead + in USB_HostEhciCreate()
4850 index = ((((((uint32_t)(ehciInstance->ehciItdList)) + 4095U) & 0xFFFFF000U) - in USB_HostEhciCreate()
4851 ((uint32_t)(ehciInstance->ehciItdList))) >> in USB_HostEhciCreate()
4855 …ehciInstance->ehciItdList = (usb_host_ehci_itd_t *)(((uint32_t)(ehciInstance->ehciItdList)) + 32U); in USB_HostEhciCreate()
4858 ehciInstance->ehciSitdIndexBase = in USB_HostEhciCreate()
4859 (usb_host_ehci_sitd_t *)((uint32_t)ehciInstance->ehciItdList + in USB_HostEhciCreate()
4861 ehciInstance->ehciSitdList = ehciInstance->ehciSitdIndexBase; in USB_HostEhciCreate()
4862 ehciInstance->ehciIsoList = (usb_host_ehci_iso_t *)((uint32_t)ehciInstance->ehciSitdList + in USB_HostEhciCreate()
4864 ehciInstance->ehciPipeIndexBase = in USB_HostEhciCreate()
4865 (usb_host_ehci_pipe_t *)((uint32_t)ehciInstance->ehciIsoList + in USB_HostEhciCreate()
4869 …ehciInstance->ehciQhList[index - 1U].horizontalLinkPointer = (uint32_t)(&ehciInstance->ehciQhList[… in USB_HostEhciCreate()
4871 ehciInstance->ehciQhList[USB_HOST_CONFIG_EHCI_MAX_QH - 1U].horizontalLinkPointer = 0U; in USB_HostEhciCreate()
4874 …ehciInstance->ehciQtdHead[index - 1U].nextQtdPointer = (uint32_t)(&ehciInstance->ehciQtdHead[index… in USB_HostEhciCreate()
4876 …ehciInstance->ehciQtdNumber = USB_HOST_CONFIG_EHCI… in USB_HostEhciCreate()
4877 ehciInstance->ehciQtdHead[USB_HOST_CONFIG_EHCI_MAX_QTD - 1U].nextQtdPointer = 0U; in USB_HostEhciCreate()
4878 ehciInstance->ehciQtdTail = &ehciInstance->ehciQtdHead[USB_HOST_CONFIG_EHCI_MAX_QTD - 1U]; in USB_HostEhciCreate()
4883 ehciInstance->ehciItdList[index - 1U].nextItdPointer = in USB_HostEhciCreate()
4884 (usb_host_ehci_itd_t *)(&ehciInstance->ehciItdList[index]); in USB_HostEhciCreate()
4886 …ehciInstance->ehciItdNumber = USB_HOST_CONFIG_EHCI… in USB_HostEhciCreate()
4887 ehciInstance->ehciItdList[USB_HOST_CONFIG_EHCI_MAX_ITD - 1U].nextItdPointer = NULL; in USB_HostEhciCreate()
4893 …ehciInstance->ehciSitdList[index - 1U].nextLinkPointer = (uint32_t)(&ehciInstance->ehciSitdList[in… in USB_HostEhciCreate()
4895 …ehciInstance->ehciSitdNumber = USB_HOST_CONFIG_E… in USB_HostEhciCreate()
4896 ehciInstance->ehciSitdList[USB_HOST_CONFIG_EHCI_MAX_SITD - 1U].nextLinkPointer = 0U; in USB_HostEhciCreate()
4902 ehciInstance->ehciIsoList[index - 1U].next = &ehciInstance->ehciIsoList[index]; in USB_HostEhciCreate()
4904 ehciInstance->ehciIsoList[USB_HOST_EHCI_ISO_NUMBER - 1U].next = NULL; in USB_HostEhciCreate()
4908 ehciInstance->ehciPipeList = ehciInstance->ehciPipeIndexBase; in USB_HostEhciCreate()
4911 …temp = (void *)&ehciInstance->ehciPipeList[index… in USB_HostEhciCreate()
4912 ehciInstance->ehciPipeList[index - 1U].pipeCommon.next = (usb_host_pipe_t *)temp; in USB_HostEhciCreate()
4915 ehciInstance->ehciMutex = (osa_mutex_handle_t)(&ehciInstance->mutexBuffer[0]); in USB_HostEhciCreate()
4916 osaStatus = OSA_MutexCreate(ehciInstance->ehciMutex); in USB_HostEhciCreate()
4922 OSA_MemoryFree(ehciInstance); in USB_HostEhciCreate()
4926 ehciInstance->taskEventHandle = (osa_event_handle_t)&ehciInstance->taskEventHandleBuffer[0]; in USB_HostEhciCreate()
4927 osaStatus = OSA_EventCreate(ehciInstance->taskEventHandle, 1); in USB_HostEhciCreate()
4933 (void)OSA_MutexDestroy(ehciInstance->ehciMutex); in USB_HostEhciCreate()
4934 OSA_MemoryFree(ehciInstance); in USB_HostEhciCreate()
4939 ehciInstance->shedFirstQh = ehciInstance->ehciQhList; in USB_HostEhciCreate()
4940 ehciInstance->ehciQhList = in USB_HostEhciCreate()
4941 …(usb_host_ehci_qh_t *)(ehciInstance->ehciQhList->horizontalLinkPointer & EHCI_HOST_POINTER_ADDRESS… in USB_HostEhciCreate()
4942 …ehciInstance->shedFirstQh->staticEndpointStates[0] |= (1UL << EHCI_HOST_QH_H_SHIFT); /* first qh */ in USB_HostEhciCreate()
4943 ehciInstance->shedFirstQh->horizontalLinkPointer = EHCI_HOST_T_INVALID_VALUE; in USB_HostEhciCreate()
4944 ehciInstance->shedFirstQh->currentQtdPointer = EHCI_HOST_T_INVALID_VALUE; in USB_HostEhciCreate()
4945 ehciInstance->shedFirstQh->nextQtdPointer = EHCI_HOST_T_INVALID_VALUE; in USB_HostEhciCreate()
4946 ehciInstance->shedFirstQh->alternateNextQtdPointer = EHCI_HOST_T_INVALID_VALUE; in USB_HostEhciCreate()
4948 ehciInstance->shedFirstQh->horizontalLinkPointer = in USB_HostEhciCreate()
4949 …(uint32_t)USB_HOST_MEMORY_CPU_2_DMA(((uint32_t)(ehciInstance->shedFirstQh) | EHCI_HOST_POINTER_TYP… in USB_HostEhciCreate()
4951 ehciInstance->shedFirstQh->horizontalLinkPointer = in USB_HostEhciCreate()
4952 (uint32_t)((uint32_t)(ehciInstance->shedFirstQh) | EHCI_HOST_POINTER_TYPE_QH); in USB_HostEhciCreate()
4956 temp = (void *)ehciInstance->ehciFrameList; in USB_HostEhciCreate()
4963 (void)USB_HostEhciStartIP(ehciInstance); /* start ehci ip */ in USB_HostEhciCreate()
4965 *controllerHandle = ehciInstance; in USB_HostEhciCreate()
4972 usb_host_ehci_instance_t *ehciInstance = (usb_host_ehci_instance_t *)controllerHandle; in USB_HostEhciDestory() local
4975 ehciInstance->ehciIpBase->USBINTR = 0; in USB_HostEhciDestory()
4977 ehciInstance->ehciIpBase->USBCMD = 0; in USB_HostEhciDestory()
4980 if (ehciInstance->ehciFrameList == &s_UsbHostEhciFrameList1[0]) in USB_HostEhciDestory()
4985 if (ehciInstance->ehciFrameList == &s_UsbHostEhciFrameList1[0]) in USB_HostEhciDestory()
4989 else if (ehciInstance->ehciFrameList == &s_UsbHostEhciFrameList2[0]) in USB_HostEhciDestory()
4998 (void)OSA_MutexDestroy(ehciInstance->ehciMutex); in USB_HostEhciDestory()
4999 (void)OSA_EventDestroy(ehciInstance->taskEventHandle); in USB_HostEhciDestory()
5000 OSA_MemoryFree(ehciInstance); in USB_HostEhciDestory()
5012 usb_host_ehci_instance_t *ehciInstance = (usb_host_ehci_instance_t *)controllerHandle; in USB_HostEhciOpenPipe() local
5016 if (ehciInstance->ehciPipeList != NULL) in USB_HostEhciOpenPipe()
5018 ehciPipePointer = ehciInstance->ehciPipeList; in USB_HostEhciOpenPipe()
5020 ehciInstance->ehciPipeList = (usb_host_ehci_pipe_t *)temp; in USB_HostEhciOpenPipe()
5088 status = USB_HostEhciOpenControlBulk(ehciInstance, ehciPipePointer); in USB_HostEhciOpenPipe()
5094 status = USB_HostEhciOpenIso(ehciInstance, ehciPipePointer); in USB_HostEhciOpenPipe()
5099 status = USB_HostEhciOpenInterrupt(ehciInstance, ehciPipePointer); in USB_HostEhciOpenPipe()
5111 temp = (void *)ehciInstance->ehciPipeList; in USB_HostEhciOpenPipe()
5113 ehciInstance->ehciPipeList = ehciPipePointer; in USB_HostEhciOpenPipe()
5120 temp = (void *)ehciInstance->ehciRunningPipeList; in USB_HostEhciOpenPipe()
5122 ehciInstance->ehciRunningPipeList = ehciPipePointer; in USB_HostEhciOpenPipe()
5131 usb_host_ehci_instance_t *ehciInstance = (usb_host_ehci_instance_t *)controllerHandle; in USB_HostEhciClosePipe() local
5141 (void)USB_HostEhciCloseControlBulk(ehciInstance, ehciPipePointer); in USB_HostEhciClosePipe()
5145 (void)USB_HostEhciCloseInterrupt(ehciInstance, ehciPipePointer); in USB_HostEhciClosePipe()
5151 (void)USB_HostEhciCloseIso(ehciInstance, ehciPipePointer); in USB_HostEhciClosePipe()
5162 temp = (void *)ehciInstance->ehciRunningPipeList; in USB_HostEhciClosePipe()
5168 ehciInstance->ehciRunningPipeList = (usb_host_ehci_pipe_t *)(temp); in USB_HostEhciClosePipe()
5190 temp = (void *)ehciInstance->ehciPipeList; in USB_HostEhciClosePipe()
5192 ehciInstance->ehciPipeList = ehciPipePointer; in USB_HostEhciClosePipe()
5202 usb_host_ehci_instance_t *ehciInstance = (usb_host_ehci_instance_t *)controllerHandle; in USB_HostEhciWritePipe() local
5226 status = USB_HostEhciQhQtdListInit(ehciInstance, ehciPipePointer, in USB_HostEhciWritePipe()
5238 status = USB_HostEhciItdArrayInit(ehciInstance, ehciPipePointer, in USB_HostEhciWritePipe()
5245 status = USB_HostEhciSitdArrayInit(ehciInstance, ehciPipePointer, in USB_HostEhciWritePipe()
5269 usb_host_ehci_instance_t *ehciInstance = (usb_host_ehci_instance_t *)controllerHandle; in USB_HostEhciIoctl() local
5290 …status = USB_HostEhciCancelPipe(ehciInstance, (usb_host_ehci_pipe_t *)param->pipeHandle, param->tr… in USB_HostEhciIoctl()
5297 ehciInstance->hirdValue = (*lpmParam) & 0xFU; in USB_HostEhciIoctl()
5298 ehciInstance->L1remoteWakeupEnable = (((*lpmParam) & 0x80U) >> 7); in USB_HostEhciIoctl()
5304 status = USB_HostEhciControlBus(ehciInstance, *((uint8_t *)ioctlParam)); in USB_HostEhciIoctl()
5308 … *((uint32_t *)ioctlParam) = ((ehciInstance->ehciIpBase->FRINDEX & EHCI_MAX_UFRAME_VALUE) >> 3); in USB_HostEhciIoctl()
5318 USB_HostEhciDelay(ehciInstance->ehciIpBase, 2U); in USB_HostEhciIoctl()
5325 if (0U != (ehciInstance->ehciIpBase->USBSTS & USBHS_USBSTS_AS_MASK)) in USB_HostEhciIoctl()
5327 USB_HostEhciStopAsync(ehciInstance); in USB_HostEhciIoctl()
5332 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciIoctl()
5357 usb_host_ehci_instance_t *ehciInstance; in USB_HostEhciTaskFunction() local
5365 … ehciInstance = (usb_host_ehci_instance_t *)((usb_host_instance_t *)hostHandle)->controllerHandle; in USB_HostEhciTaskFunction()
5367 if (OSA_EventWait(ehciInstance->taskEventHandle, 0xFF, 0, USB_OSA_WAIT_TIMEOUT, &bitSet) == in USB_HostEhciTaskFunction()
5372 USB_HostEhciPortChange(ehciInstance); in USB_HostEhciTaskFunction()
5377 USB_HostEhciTimer0(ehciInstance); in USB_HostEhciTaskFunction()
5383 USB_HostEhciTimer1(ehciInstance); in USB_HostEhciTaskFunction()
5388 USB_HostEhciCompletedLPM(ehciInstance); in USB_HostEhciTaskFunction()
5393 if ((ehciInstance->deviceAttached == (uint8_t)kEHCIDeviceAttached)) in USB_HostEhciTaskFunction()
5397 USB_HostEhciTransactionDone(ehciInstance); in USB_HostEhciTaskFunction()
5402 ehciInstance->ehciIpBase->USBINTR &= in USB_HostEhciTaskFunction()
5404 ehciInstance->deviceAttached = (uint8_t)kEHCIDeviceDetached; in USB_HostEhciTaskFunction()
5405 (void)USB_HostDetachDevice(ehciInstance->hostHandle, 0, 0); in USB_HostEhciTaskFunction()
5408 else if (ehciInstance->deviceAttached != (uint8_t)kEHCIDeviceAttached) in USB_HostEhciTaskFunction()
5413 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciTaskFunction()
5414 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciTaskFunction()
5417 … if (USB_HostAttachDevice(ehciInstance->hostHandle, ehciInstance->firstDeviceSpeed, 0, 0, 1, in USB_HostEhciTaskFunction()
5420 ehciInstance->deviceAttached = (uint8_t)kEHCIDeviceAttached; in USB_HostEhciTaskFunction()
5433 usb_host_ehci_instance_t *ehciInstance; in USB_HostEhciIsrFunction() local
5441 … ehciInstance = (usb_host_ehci_instance_t *)((usb_host_instance_t *)hostHandle)->controllerHandle; in USB_HostEhciIsrFunction()
5446 if (0U != (ehciInstance->registerNcBase->USB_OTGn_CTRL & USBNC_USB_OTGn_CTRL_WIE_MASK)) in USB_HostEhciIsrFunction()
5448 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciIsrFunction()
5449 ehciInstance->registerNcBase->USB_OTGn_CTRL &= ~USBNC_USB_OTGn_CTRL_WIE_MASK; in USB_HostEhciIsrFunction()
5453 …while (0U == (ehciInstance->registerNcBase->USB_OTGn_PHY_CTRL_0 & USBNC_USB_OTGn_PHY_CTRL_0_UTMI_C… in USB_HostEhciIsrFunction()
5457 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciIsrFunction()
5459 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciIsrFunction()
5460 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciIsrFunction()
5462 ehciInstance->ehciIpBase->USBCMD |= (USBHS_USBCMD_RS_MASK); in USB_HostEhciIsrFunction()
5463 if ((kBus_EhciSuspended == ehciInstance->busSuspendStatus)) in USB_HostEhciIsrFunction()
5466 ehciInstance->busSuspendStatus = kBus_EhciStartResume; in USB_HostEhciIsrFunction()
5469 else if ((kBus_EhciL1Sleeped == ehciInstance->busSuspendStatus)) in USB_HostEhciIsrFunction()
5471 ehciInstance->busSuspendStatus = kBus_EhciL1StartResume; in USB_HostEhciIsrFunction()
5486 if (0U != (ehciInstance->ehciIpBase->USBGENCTRL & USBHS_USBGENCTRL_WU_IE_MASK)) in USB_HostEhciIsrFunction()
5488 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciIsrFunction()
5496 ehciInstance->ehciIpBase->USBGENCTRL |= USBHS_USBGENCTRL_WU_INT_CLR_MASK; in USB_HostEhciIsrFunction()
5497 ehciInstance->ehciIpBase->USBGENCTRL &= ~USBHS_USBGENCTRL_WU_IE_MASK; in USB_HostEhciIsrFunction()
5498 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciIsrFunction()
5500 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciIsrFunction()
5501 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciIsrFunction()
5503 ehciInstance->ehciIpBase->USBCMD |= (USBHS_USBCMD_RS_MASK); in USB_HostEhciIsrFunction()
5504 if ((kBus_EhciSuspended == ehciInstance->busSuspendStatus)) in USB_HostEhciIsrFunction()
5506 ehciInstance->busSuspendStatus = kBus_EhciStartResume; in USB_HostEhciIsrFunction()
5522 interruptStatus = ehciInstance->ehciIpBase->USBSTS; in USB_HostEhciIsrFunction()
5523 interruptStatus &= ehciInstance->ehciIpBase->USBINTR; in USB_HostEhciIsrFunction()
5526 ehciInstance->ehciIpBase->USBSTS = interruptStatus; /* clear interrupt */ in USB_HostEhciIsrFunction()
5539 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_TRANSACTION_DONE); in USB_HostEhciIsrFunction()
5545 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciIsrFunction()
5546 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_FPR_MASK)) in USB_HostEhciIsrFunction()
5548 if (kBus_EhciStartSuspend == ehciInstance->busSuspendStatus) in USB_HostEhciIsrFunction()
5550 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciIsrFunction()
5552 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciIsrFunction()
5553 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciIsrFunction()
5558 ehciInstance->busSuspendStatus = kBus_EhciIdle; in USB_HostEhciIsrFunction()
5559 ehciInstance->ehciIpBase->USBINTR &= ~(USBHS_USBINTR_TIE1_MASK); in USB_HostEhciIsrFunction()
5567 if ((kBus_EhciSuspended == ehciInstance->busSuspendStatus)) in USB_HostEhciIsrFunction()
5569 usb_host_instance_t *hostPointer = (usb_host_instance_t *)ehciInstance->hostHandle; in USB_HostEhciIsrFunction()
5578 if (0U != (ehciInstance->ehciIpBase->PORTSC1 & USBHS_PORTSC1_CCS_MASK)) in USB_HostEhciIsrFunction()
5580 USB_HostEhciStartAsync(ehciInstance); in USB_HostEhciIsrFunction()
5581 USB_HostEhciStartPeriodic(ehciInstance); in USB_HostEhciIsrFunction()
5583 ehciInstance->ehciIpBase->USBCMD |= (USBHS_USBCMD_RS_MASK); in USB_HostEhciIsrFunction()
5584 ehciInstance->busSuspendStatus = kBus_EhciStartResume; in USB_HostEhciIsrFunction()
5588 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_PORT_CHANGE); in USB_HostEhciIsrFunction()
5593 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_TIMER0); in USB_HostEhciIsrFunction()
5599 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_TIMER1); in USB_HostEhciIsrFunction()
5604 (void)OSA_EventSet(ehciInstance->taskEventHandle, EHCI_TASK_EVENT_HOST_COMPLETED_LPM); in USB_HostEhciIsrFunction()
5609 interruptStatus = ehciInstance->ehciIpBase->USBSTS; in USB_HostEhciIsrFunction()
5610 interruptStatus &= ehciInstance->ehciIpBase->USBINTR; in USB_HostEhciIsrFunction()