Lines Matching defs:OHCI

18 /** @page pg_dev_ohci   OHCI - Open Host Controller Interface Emulation.
20 * This component implements an OHCI USB controller. It is split roughly in
22 * specification of USB OHCI and the second part maintains the root hub (which
25 * The OHCI registers are used for the usual stuff like enabling and disabling
64 * As for error handling OHCI allows for 3 retries before failing a transfer,
72 * requests so that the OHCI is never seen in an inconsistent state by the
122 * is the maximum defined by the OHCI spec.
134 /** Pointer to OHCI device data. */
135 typedef struct OHCI *POHCI;
136 /** Read-only pointer to the OHCI device data. */
137 typedef struct OHCI const *PCOHCI;
141 * An OHCI root hub port.
156 /** Pointer to an OHCI hub port. */
160 * The OHCI root hub.
198 /** Pointer to the OHCI root hub. */
220 * OHCI device data.
222 typedef struct OHCI
254 /* OHCI registers */
391 } OHCI;
393 /* Standard OHCI bus speed */
407 /** @name OHCI Endpoint Descriptor
425 * OHCI Endpoint Descriptor.
463 /** @name OHCI General transfer descriptor
501 * OHCI general transfer descriptor
518 /** @name OHCI isochronous transfer descriptor.
552 * OHCI isochronous transfer descriptor.
572 * OHCI register operator.
582 /* OHCI Local stuff */
753 * SSM descriptor table for the OHCI structure.
757 SSMFIELD_ENTRY( OHCI, SofTime),
758 SSMFIELD_ENTRY_CUSTOM( dpic+fno, RT_OFFSETOF(OHCI, SofTime) + RT_SIZEOFMEMB(OHCI, SofTime), 4),
759 SSMFIELD_ENTRY( OHCI, RootHub.status),
760 SSMFIELD_ENTRY( OHCI, RootHub.desc_a),
761 SSMFIELD_ENTRY( OHCI, RootHub.desc_b),
762 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[0].fReg),
763 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[1].fReg),
764 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[2].fReg),
765 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[3].fReg),
766 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[4].fReg),
767 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[5].fReg),
768 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[6].fReg),
769 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[7].fReg),
770 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[8].fReg),
771 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[9].fReg),
772 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[10].fReg),
773 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[11].fReg),
774 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[12].fReg),
775 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[13].fReg),
776 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[14].fReg),
777 SSMFIELD_ENTRY( OHCI, ctl),
778 SSMFIELD_ENTRY( OHCI, status),
779 SSMFIELD_ENTRY( OHCI, intr_status),
780 SSMFIELD_ENTRY( OHCI, intr),
781 SSMFIELD_ENTRY( OHCI, hcca),
782 SSMFIELD_ENTRY( OHCI, per_cur),
783 SSMFIELD_ENTRY( OHCI, ctrl_cur),
784 SSMFIELD_ENTRY( OHCI, ctrl_head),
785 SSMFIELD_ENTRY( OHCI, bulk_cur),
786 SSMFIELD_ENTRY( OHCI, bulk_head),
787 SSMFIELD_ENTRY( OHCI, done),
788 SSMFIELD_ENTRY_CUSTOM( fsmps+fit+fi+frt, RT_OFFSETOF(OHCI, done) + RT_SIZEOFMEMB(OHCI, done), 4),
789 SSMFIELD_ENTRY( OHCI, HcFmNumber),
790 SSMFIELD_ENTRY( OHCI, pstart),
883 POHCI pThis = RT_FROM_MEMBER(pInterface, OHCI, RootHub.IBase);
900 POHCI pThis = (POHCI)((uintptr_t)pInterface - RT_OFFSETOF(OHCI, RootHub.ILeds));
910 /** Converts a OHCI.roothub.IRhPort pointer to a POHCI. */
911 #define VUSBIROOTHUBPORT_2_OHCI(pInterface) ((POHCI)( (uintptr_t)(pInterface) - RT_OFFSETOF(OHCI, RootHub.IRhPort) ))
1043 LogRel(("OHCI: root hub reset completed with %Rrc\n", rc));
1264 * 0x00-0x0f is the OHCI TD.
1580 * @param pThis OHCI instance data.
1604 * @param pThis OHCI instance data.
1619 * @param pThis OHCI instance data.
1654 * @param pThis OHCI instance data.
1667 * @param pThis OHCI instance data.
1685 * @param pThis OHCI instance data.
1715 * @param pThis OHCI instance data.
1735 * @param pThis OHCI instance data.
1746 * @param pThis OHCI instance data.
1760 * @param pThis OHCI instance data.
1786 * @param pThis OHCI instance data.
1800 * OHCI Transport Buffer - represents a OHCI Transport Descriptor (TD).
1821 * Sets up a OHCI transport buffer.
1856 * Updates a OHCI transport buffer.
2062 * @param pThis The OHCI instance.
2183 * @param pThis The OHCI device data.
2521 * OHCI hardware will only deal with one TD at the time and it's therefore incorrect
2537 * @param pInterface Pointer to OHCI::ROOTHUB::IRhPort.
2621 * @param pInterface Pointer to OHCI::ROOTHUB::IRhPort.
2809 /** The associated OHCI buffer tracker. */
3609 * @param pThis The OHCI instance data.
4031 *pu32Value = 0x10; /* OHCI revision 1.0, no emulation. */
4090 LogRel(("OHCI: USB Operational\n"));
4095 LogRel(("OHCI: USB Suspended\n"));
4098 LogRel(("OHCI: USB Resume\n"));
4103 LogRel(("OHCI: USB Reset\n"));
4162 LogRel(("OHCI: Software reset\n"));
4422 pThis->bulk_head = val & ~7; /** @todo The ATI OHCI controller on my machine enforces 16-byte address alignment. */
5127 ohciMmioWrite, ohciMmioRead, "USB OHCI");
5217 * Saves the state of the OHCI device.
5277 * Prepare loading the state of the OHCI device.
5333 * Loads the state of the OHCI device.
5358 SSMFIELD_ENTRY( OHCI, SofTime),
5359 SSMFIELD_ENTRY_CUSTOM( dpic+fno, RT_OFFSETOF(OHCI, SofTime) + RT_SIZEOFMEMB(OHCI, SofTime), 4),
5360 SSMFIELD_ENTRY( OHCI, RootHub.status),
5361 SSMFIELD_ENTRY( OHCI, RootHub.desc_a),
5362 SSMFIELD_ENTRY( OHCI, RootHub.desc_b),
5363 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[0].fReg),
5364 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[1].fReg),
5365 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[2].fReg),
5366 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[3].fReg),
5367 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[4].fReg),
5368 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[5].fReg),
5369 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[6].fReg),
5370 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[7].fReg),
5371 SSMFIELD_ENTRY( OHCI, ctl),
5372 SSMFIELD_ENTRY( OHCI, status),
5373 SSMFIELD_ENTRY( OHCI, intr_status),
5374 SSMFIELD_ENTRY( OHCI, intr),
5375 SSMFIELD_ENTRY( OHCI, hcca),
5376 SSMFIELD_ENTRY( OHCI, per_cur),
5377 SSMFIELD_ENTRY( OHCI, ctrl_cur),
5378 SSMFIELD_ENTRY( OHCI, ctrl_head),
5379 SSMFIELD_ENTRY( OHCI, bulk_cur),
5380 SSMFIELD_ENTRY( OHCI, bulk_head),
5381 SSMFIELD_ENTRY( OHCI, done),
5382 SSMFIELD_ENTRY_CUSTOM( fsmps+fit+fi+frt, RT_OFFSETOF(OHCI, done) + RT_SIZEOFMEMB(OHCI, done), 4),
5383 SSMFIELD_ENTRY( OHCI, HcFmNumber),
5384 SSMFIELD_ENTRY( OHCI, pstart),
5408 SSMFIELD_ENTRY( OHCI, SofTime),
5409 SSMFIELD_ENTRY_CUSTOM( dpic+fno, RT_OFFSETOF(OHCI, SofTime) + RT_SIZEOFMEMB(OHCI, SofTime), 4),
5426 SSMFIELD_ENTRY( OHCI, RootHub.status),
5427 SSMFIELD_ENTRY( OHCI, RootHub.desc_a),
5428 SSMFIELD_ENTRY( OHCI, RootHub.desc_b),
5430 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[0].fReg),
5433 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[1].fReg),
5436 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[2].fReg),
5439 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[3].fReg),
5442 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[4].fReg),
5445 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[5].fReg),
5448 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[6].fReg),
5451 SSMFIELD_ENTRY( OHCI, RootHub.aPorts[7].fReg),
5455 SSMFIELD_ENTRY( OHCI, ctl),
5456 SSMFIELD_ENTRY( OHCI, status),
5457 SSMFIELD_ENTRY( OHCI, intr_status),
5458 SSMFIELD_ENTRY( OHCI, intr),
5459 SSMFIELD_ENTRY( OHCI, hcca),
5460 SSMFIELD_ENTRY( OHCI, per_cur),
5461 SSMFIELD_ENTRY( OHCI, ctrl_cur),
5462 SSMFIELD_ENTRY( OHCI, ctrl_head),
5463 SSMFIELD_ENTRY( OHCI, bulk_cur),
5464 SSMFIELD_ENTRY( OHCI, bulk_head),
5465 SSMFIELD_ENTRY( OHCI, done),
5466 SSMFIELD_ENTRY_CUSTOM( fsmps+fit+fi+frt, RT_OFFSETOF(OHCI, done) + RT_SIZEOFMEMB(OHCI, done), 4),
5467 SSMFIELD_ENTRY( OHCI, HcFmNumber),
5468 SSMFIELD_ENTRY( OHCI, pstart),
5527 TMTIMER_FLAGS_NO_CRIT_SECT, "OHCI reattach devices on load",
5611 * Info handler, device version. Dumps OHCI control registers.
5715 * @interface_method_impl{PDMDEVREG,pfnConstruct,OHCI constructor}
5732 PCIDevSetClassProg (&pThis->PciDev, 0x10); /* OHCI */
5767 N_("OHCI configuration error: failed to read Ports as integer"));
5771 N_("OHCI configuration error: Ports must be in range [%u,%u]"),
5865 rc = PDMDevHlpCritSectInit(pDevIns, &pThis->CsIrq, RT_SRC_POS, "OHCI#%uIrq", iInstance);
5879 N_("OHCI: Failed to create critical section"));
5885 N_("OHCI: Failed to create worker thread"));
5896 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatCanceledIsocUrbs, STAMTYPE_COUNTER, "/Devices/OHCI/CanceledIsocUrbs", STAMUNIT_OCCURENCES, "Detected canceled isochronous URBs.");
5897 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatCanceledGenUrbs, STAMTYPE_COUNTER, "/Devices/OHCI/CanceledGenUrbs", STAMUNIT_OCCURENCES, "Detected canceled general URBs.");
5898 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatDroppedUrbs, STAMTYPE_COUNTER, "/Devices/OHCI/DroppedUrbs", STAMUNIT_OCCURENCES, "Dropped URBs (endpoint halted, or URB canceled).");
5899 PDMDevHlpSTAMRegister(pDevIns, &pThis->StatTimer, STAMTYPE_PROFILE, "/Devices/OHCI/Timer", STAMUNIT_TICKS_PER_CALL, "Profiling ohciFrameBoundaryTimer.");
5905 PDMDevHlpDBGFInfoRegister(pDevIns, "ohci", "OHCI control registers.", ohciR3InfoRegs);
5928 "OHCI USB controller.\n",
5936 sizeof(OHCI),