Lines Matching defs:pEd

1231 DECLINLINE(void) ohciReadEd(POHCI pThis, uint32_t EdAddr, POHCIED pEd)
1233 ohciGetDWords(pThis, EdAddr, (uint32_t *)pEd, sizeof(*pEd) >> 2);
1324 DECLINLINE(void) ohciWriteEd(POHCI pThis, uint32_t EdAddr, PCOHCIED pEd)
1333 hichg = EdOld.hwinfo ^ pEd->hwinfo;
1336 (hichg >> 0) & 0x7f ? "*" : "", (pEd->hwinfo >> 0) & 0x7f,
1337 (hichg >> 7) & 0xf ? "*" : "", (pEd->hwinfo >> 7) & 0xf,
1338 (hichg >> 11) & 3 ? "*" : "", (pEd->hwinfo >> 11) & 3,
1339 (hichg >> 13) & 1 ? "*" : "", (pEd->hwinfo >> 13) & 1,
1340 (hichg >> 14) & 1 ? "*" : "", (pEd->hwinfo >> 14) & 1,
1341 (hichg >> 15) & 1 ? "*" : "", (pEd->hwinfo >> 15) & 1,
1342 (hichg >> 24) &0x3ff ? "*" : "", (pEd->hwinfo >> 16) &0x3ff,
1343 EdOld.TailP != pEd->TailP ? "*" : "", pEd->TailP,
1344 (EdOld.HeadP & ~3) != (pEd->HeadP & ~3) ? "*" : "", pEd->HeadP & ~3,
1345 (EdOld.HeadP ^ pEd->HeadP) & 1 ? "*" : "", pEd->HeadP & 1,
1346 (EdOld.HeadP ^ pEd->HeadP) & 2 ? "*" : "", (pEd->HeadP >> 1) & 1,
1347 EdOld.NextED != pEd->NextED ? "*" : "", pEd->NextED));
1351 ohciPutDWords(pThis, EdAddr, (uint32_t *)pEd, sizeof(*pEd) >> 2);
1881 static bool ohciUnlinkIsochronousTdInList(POHCI pThis, uint32_t TdAddr, POHCIITD pITd, POHCIED pEd)
1883 const uint32_t LastTdAddr = pEd->TailP & ED_PTR_MASK;
1885 TdAddr, pEd->HeadP & ED_PTR_MASK, LastTdAddr));
1889 uint32_t CurTdAddr = pEd->HeadP & ED_PTR_MASK;
1913 static bool ohciUnlinkGeneralTdInList(POHCI pThis, uint32_t TdAddr, POHCITD pTd, POHCIED pEd)
1915 const uint32_t LastTdAddr = pEd->TailP & ED_PTR_MASK;
1917 TdAddr, pEd->HeadP & ED_PTR_MASK, LastTdAddr));
1921 uint32_t CurTdAddr = pEd->HeadP & ED_PTR_MASK;
1950 static bool ohciUnlinkTds(POHCI pThis, PVUSBURB pUrb, POHCIED pEd)
1971 if ((pEd->HeadP & ED_PTR_MASK) == ITdAddr)
1973 pEd->HeadP = (pITd->NextTD & ED_PTR_MASK) | (pEd->HeadP & ~ED_PTR_MASK);
1982 if (!ohciUnlinkIsochronousTdInList(pThis, ITdAddr, pITd, pEd))
2012 if ( !!(pEd->HeadP & ED_HEAD_CARRY) ) /** @todo r=bird: is it just me or doesn't this make sense at all? */
2013 pEd->HeadP |= ED_HEAD_CARRY;
2015 pEd->HeadP &= ~ED_HEAD_CARRY;
2023 if ((pEd->HeadP & ED_PTR_MASK) == TdAddr)
2025 pEd->HeadP = (pTd->NextTD & ED_PTR_MASK) | (pEd->HeadP & ~ED_PTR_MASK);
2038 if (!ohciUnlinkGeneralTdInList(pThis, TdAddr, pTd, pEd))
2064 * @param pEd The ED pointer (optional).
2066 static bool ohciHasUrbBeenCanceled(POHCI pThis, PVUSBURB pUrb, PCOHCIED pEd)
2076 if (!pEd)
2079 pEd = &Ed;
2092 == (pEd->TailP & ED_PTR_MASK))
2132 == (pEd->TailP & ED_PTR_MASK))
2249 static void ohciRhXferCompleteIsochronousURB(POHCI pThis, PVUSBURB pUrb, POHCIED pEd, int cFmAge)
2402 static void ohciRhXferCompleteGeneralURB(POHCI pThis, PVUSBURB pUrb, POHCIED pEd, int cFmAge)
2474 pEd->HeadP |= ED_HEAD_HALTED;
2525 if (pEd->HeadP & ED_HEAD_HALTED)
2686 static bool ohciServiceTd(POHCI pThis, VUSBXFERTYPE enmType, PCOHCIED pEd, uint32_t EdAddr, uint32_t TdAddr, uint32_t *pNextTdAddr, const char *pszListName)
2702 switch (pEd->hwinfo & ED_HWINFO_DIR)
2713 Log(("ohciServiceTd: Invalid direction!!!! Td.hwinfo=%#x Ed.hwdinfo=%#x\n", Td.hwinfo, pEd->hwinfo));
2725 PVUSBURB pUrb = VUSBIRhNewUrb(pThis->RootHub.pIRhConn, pEd->hwinfo & ED_HWINFO_FUNCTION, Buf.cbTotal, 1);
2731 pUrb->EndPt = (pEd->hwinfo & ED_HWINFO_ENDPOINT) >> ED_HWINFO_ENDPOINT_SHIFT;
2781 static bool ohciServiceHeadTd(POHCI pThis, VUSBXFERTYPE enmType, PCOHCIED pEd, uint32_t EdAddr, const char *pszListName)
2786 uint32_t TdAddr = pEd->HeadP & ED_PTR_MASK;
2792 return ohciServiceTd(pThis, enmType, pEd, EdAddr, TdAddr, &TdAddr, pszListName);
2799 static bool ohciServiceTdMultiple(POHCI pThis, VUSBXFERTYPE enmType, PCOHCIED pEd, uint32_t EdAddr,
2829 && (pTail->Td.NextTD & ED_PTR_MASK) != (pEd->TailP & ED_PTR_MASK)
2857 switch (pEd->hwinfo & ED_HWINFO_DIR)
2862 Log(("ohciServiceTdMultiple: WARNING! Ed.hwdinfo=%#x bulk or interrupt EP shouldn't rely on the TD for direction...\n", pEd->hwinfo));
2868 Log(("ohciServiceTdMultiple: Invalid direction!!!! Head.Td.hwinfo=%#x Ed.hwdinfo=%#x\n", Head.Td.hwinfo, pEd->hwinfo));
2880 PVUSBURB pUrb = VUSBIRhNewUrb(pThis->RootHub.pIRhConn, pEd->hwinfo & ED_HWINFO_FUNCTION, cbTotal, cTds);
2888 pUrb->EndPt = (pEd->hwinfo & ED_HWINFO_ENDPOINT) >> ED_HWINFO_ENDPOINT_SHIFT;
2946 static bool ohciServiceHeadTdMultiple(POHCI pThis, VUSBXFERTYPE enmType, PCOHCIED pEd, uint32_t EdAddr, const char *pszListName)
2951 uint32_t TdAddr = pEd->HeadP & ED_PTR_MASK;
2957 return ohciServiceTdMultiple(pThis, enmType, pEd, EdAddr, TdAddr, &TdAddr, pszListName);
2966 PVUSBURB pUrb, POHCIED pEd, uint32_t EdAddr)
2981 if (ohciHasUrbBeenCanceled(pThis, pUrbPrev, pEd)) /* ensures the copy is correct. */
2992 pEd->HeadP = (pEd->HeadP & ~ED_PTR_MASK) | ITdAddrNext;
2993 ohciWriteEd(pThis, EdAddr, pEd);
3003 if (ohciHasUrbBeenCanceled(pThis, pUrb, pEd)) /* ensures the copy is correct (paranoia). */
3032 static bool ohciServiceIsochronousTd(POHCI pThis, POHCIITD pITd, uint32_t ITdAddr, const unsigned R, PCOHCIED pEd, uint32_t EdAddr)
3038 switch (pEd->hwinfo & ED_HWINFO_DIR)
3043 Log(("ohciServiceIsochronousTd: Invalid direction!!!! Ed.hwdinfo=%#x\n", pEd->hwinfo));
3091 PVUSBURB pUrb = VUSBIRhNewUrb(pThis->RootHub.pIRhConn, pEd->hwinfo & ED_HWINFO_FUNCTION, cbTotal, 1);
3097 pUrb->EndPt = (pEd->hwinfo & ED_HWINFO_ENDPOINT) >> ED_HWINFO_ENDPOINT_SHIFT;
3169 static void ohciServiceIsochronousEndpoint(POHCI pThis, POHCIED pEd, uint32_t EdAddr)
3190 uint32_t ITdAddr = pEd->HeadP & ED_PTR_MASK;
3197 if ( ITdAddr == (pEd->TailP & ED_PTR_MASK)
3228 if (!ohciServiceIsochronousTd(pThis, &ITd, ITdAddr, R < 0 ? 0 : R, pEd, EdAddr))
3253 NULL, pEd, EdAddr))
3270 pEd, EdAddr))
3289 * @param pEd The endpoint data.
3291 DECLINLINE(bool) ohciIsEdReady(PCOHCIED pEd)
3293 return (pEd->HeadP & ED_PTR_MASK) != (pEd->TailP & ED_PTR_MASK)
3294 && !(pEd->HeadP & ED_HEAD_HALTED)
3295 && !(pEd->hwinfo & ED_HWINFO_SKIP);
3303 * @param pEd The endpoint data.
3305 DECLINLINE(bool) ohciIsEdPresent(PCOHCIED pEd)
3307 return (pEd->HeadP & ED_PTR_MASK) != (pEd->TailP & ED_PTR_MASK)
3308 && !(pEd->HeadP & ED_HEAD_HALTED);