Fix SOF timer bug
This commit is contained in:
parent
828822c695
commit
ea164dd769
|
@ -139,7 +139,7 @@ void OHCI::OHCI_FrameBoundaryWorker()
|
|||
}
|
||||
|
||||
// Do SOF stuff here
|
||||
OHCI_SOF();
|
||||
OHCI_SOF(false);
|
||||
|
||||
// Writeback HCCA
|
||||
if (OHCI_WriteHCCA(m_Registers.HcHCCA, &hcca)) {
|
||||
|
@ -243,7 +243,7 @@ void OHCI::OHCI_BusStart()
|
|||
DbgPrintf("Ohci: Operational mode event\n");
|
||||
|
||||
// SOF event
|
||||
OHCI_SOF();
|
||||
OHCI_SOF(true);
|
||||
}
|
||||
|
||||
void OHCI::OHCI_BusStop()
|
||||
|
@ -255,10 +255,16 @@ void OHCI::OHCI_BusStop()
|
|||
m_pEOFtimer = nullptr;
|
||||
}
|
||||
|
||||
void OHCI::OHCI_SOF()
|
||||
void OHCI::OHCI_SOF(bool bCreate)
|
||||
{
|
||||
m_SOFtime = GetTime_NS(m_pEOFtimer); // set current SOF time
|
||||
Timer_Start(m_pEOFtimer, m_SOFtime + m_UsbFrameTime); // make timer expire at SOF + 1 virtual ms from now
|
||||
// set current SOF time
|
||||
m_SOFtime = GetTime_NS(m_pEOFtimer);
|
||||
|
||||
// make timer expire at SOF + 1 virtual ms from now
|
||||
if (bCreate) {
|
||||
Timer_Start(m_pEOFtimer, m_UsbFrameTime);
|
||||
}
|
||||
|
||||
OHCI_SetInterrupt(OHCI_INTR_SF);
|
||||
}
|
||||
|
||||
|
|
|
@ -236,7 +236,7 @@ class OHCI
|
|||
// stop sending SOF tokens across the usb bus
|
||||
void OHCI_BusStop();
|
||||
// generate a SOF event, and start a timer for EOF
|
||||
void OHCI_SOF();
|
||||
void OHCI_SOF(bool bCreate);
|
||||
// change interrupt status
|
||||
void OHCI_UpdateInterrupt();
|
||||
// fire an interrupt
|
||||
|
@ -259,9 +259,9 @@ class OHCI
|
|||
// if not set ConnectStatusChange flag; if flag is enabled return 1
|
||||
int OHCI_PortSetIfConnected(int i, uint32_t Value);
|
||||
// read the HCCA structure in memory
|
||||
bool OHCI_ReadHCCA(uint32_t Paddr, OHCI_HCCA* Hcca);
|
||||
bool OHCI_ReadHCCA(xbaddr Paddr, OHCI_HCCA* Hcca);
|
||||
// write the HCCA structure in memory
|
||||
bool OHCI_WriteHCCA(uint32_t Paddr, OHCI_HCCA* Hcca);
|
||||
bool OHCI_WriteHCCA(xbaddr Paddr, OHCI_HCCA* Hcca);
|
||||
|
||||
// register a port with the HC
|
||||
void USB_RegisterPort(USBPort* Port, int Index, int SpeedMask);
|
||||
|
|
Loading…
Reference in New Issue