IOUSBControllerV2.h [plain text]
#ifndef _IOKIT_IOUSBCONTROLLERV2_H
#define _IOKIT_IOUSBCONTROLLERV2_H
#include <IOKit/usb/IOUSBControllerListElement.h>
#include <IOKit/usb/IOUSBController.h>
enum
{
kUSBHSHubCommandAddHub = 1,
kUSBHSHubCommandRemoveHub = 2,
kUSBHSHubFlagsMultiTT = 1
};
class IOUSBControllerV2 : public IOUSBController
{
OSDeclareAbstractStructors(IOUSBControllerV2)
protected:
UInt8 _highSpeedHub[128];
UInt8 _highSpeedPort[128];
struct V2ExpansionData {
UInt8 _multiTT[128];
IOUSBCommand *ClearTTCommand;
IOUSBControllerIsochEndpoint *_isochEPList; IOUSBControllerIsochEndpoint *_freeIsochEPList; thread_call_t _returnIsochDoneQueueThread;
};
V2ExpansionData *_v2ExpansionData;
#define _freeUSBCommandPool _expansionData->freeUSBCommandPool
#define _freeUSBIsocCommandPool _expansionData->freeUSBIsocCommandPool
#define _watchdogUSBTimer _expansionData->watchdogUSBTimer
#define _controllerTerminating _expansionData->_terminating
#define _watchdogTimerActive _expansionData->_watchdogTimerActive
#define _pcCardEjected _expansionData->_pcCardEjected
#define _busNumber _expansionData->_busNumber
#define _currentSizeOfCommandPool _expansionData->_currentSizeOfCommandPool
#define _currentSizeOfIsocCommandPool _expansionData->_currentSizeOfIsocCommandPool
#define _controllerSpeed _expansionData->_controllerSpeed
#define _activeIsochTransfers _expansionData->_activeIsochTransfers
#define _isochEPList _v2ExpansionData->_isochEPList
#define _freeIsochEPList _v2ExpansionData->_freeIsochEPList
#define _returnIsochDoneQueueThread _v2ExpansionData->_returnIsochDoneQueueThread
virtual bool init( OSDictionary * propTable );
virtual bool start( IOService * provider );
virtual void free();
static IOReturn DoCreateEP(OSObject *owner,
void *arg0, void *arg1,
void *arg2, void *arg3);
static void clearTTHandler(
OSObject * target,
void * parameter,
IOReturn status,
UInt32 bufferSizeRemaining );
public:
virtual IOReturn OpenPipe( USBDeviceAddress address,
UInt8 speed,
Endpoint * endpoint );
virtual IOReturn CreateDevice( IOUSBDevice *newDevice,
USBDeviceAddress deviceAddress,
UInt8 maxPacketSize,
UInt8 speed,
UInt32 powerAvailable,
USBDeviceAddress hub,
int port);
virtual IOReturn ConfigureDeviceZero(UInt8 maxPacketSize, UInt8 speed, USBDeviceAddress hub, int port);
virtual IOReturn UIMCreateControlEndpoint(
UInt8 functionNumber,
UInt8 endpointNumber,
UInt16 maxPacketSize,
UInt8 speed,
USBDeviceAddress highSpeedHub,
int highSpeedPort) = 0;
virtual IOReturn UIMCreateBulkEndpoint(
UInt8 functionNumber,
UInt8 endpointNumber,
UInt8 direction,
UInt8 speed,
UInt16 maxPacketSize,
USBDeviceAddress highSpeedHub,
int highSpeedPort) = 0;
virtual IOReturn UIMCreateInterruptEndpoint(
short functionAddress,
short endpointNumber,
UInt8 direction,
short speed,
UInt16 maxPacketSize,
short pollingRate,
USBDeviceAddress highSpeedHub,
int highSpeedPort) = 0;
virtual IOReturn UIMCreateIsochEndpoint(
short functionAddress,
short endpointNumber,
UInt32 maxPacketSize,
UInt8 direction,
USBDeviceAddress highSpeedHub,
int highSpeedPort) = 0;
static void ReturnIsochDoneQueueEntry(OSObject *target, thread_call_param_t endpointPtr);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 0);
virtual IOReturn AddHSHub(USBDeviceAddress highSpeedHub, UInt32 flags);
static IOReturn DOHSHubMaintenance(OSObject *owner, void *arg0, void *arg1, void *arg2, void *arg3);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 1);
virtual IOReturn UIMHubMaintenance(USBDeviceAddress highSpeedHub, UInt32 highSpeedPort, UInt32 command, UInt32 flags);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 2);
virtual IOReturn RemoveHSHub(USBDeviceAddress highSpeedHub);
static IOReturn DOSetTestMode(OSObject *owner, void *arg0, void *arg1, void *arg2, void *arg3);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 3);
virtual IOReturn SetTestMode(UInt32 mode, UInt32 port);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 4);
virtual IOReturn UIMSetTestMode(UInt32 mode, UInt32 port);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 5);
virtual UInt64 GetMicroFrameNumber( void );
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 6);
virtual void ClearTT(USBDeviceAddress addr, UInt8 endpt, Boolean IN);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 7);
virtual IOReturn ReadV2( IOMemoryDescriptor * buffer,
USBDeviceAddress address,
Endpoint * endpoint,
IOUSBCompletionWithTimeStamp * completion,
UInt32 noDataTimeout,
UInt32 completionTimeout,
IOByteCount reqCount );
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 8);
virtual IOReturn UIMCreateIsochEndpoint( short functionAddress,
short endpointNumber,
UInt32 maxPacketSize,
UInt8 direction,
USBDeviceAddress highSpeedHub,
int highSpeedPort,
UInt8 interval);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 9);
virtual IOUSBControllerIsochEndpoint* IOUSBControllerV2::AllocateIsochEP(void);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 10);
virtual IOReturn IOUSBControllerV2::DeallocateIsochEP(IOUSBControllerIsochEndpoint *pEP);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 11);
virtual IOUSBControllerIsochEndpoint* FindIsochronousEndpoint(short functionNumber, short endpointNumber, short direction, IOUSBControllerIsochEndpoint* *pEDBack);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 12);
virtual IOUSBControllerIsochEndpoint* CreateIsochronousEndpoint(short functionNumber, short endpointNumber, short direction);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 13);
virtual void PutTDonToDoList(IOUSBControllerIsochEndpoint* pED, IOUSBControllerIsochListElement *pTD);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 14);
virtual IOUSBControllerIsochListElement *GetTDfromToDoList(IOUSBControllerIsochEndpoint* pED);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 15);
virtual void PutTDonDeferredQueue(IOUSBControllerIsochEndpoint* pED, IOUSBControllerIsochListElement *pTD);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 16);
virtual IOUSBControllerIsochListElement *GetTDfromDeferredQueue(IOUSBControllerIsochEndpoint* pED);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 17);
virtual void PutTDonDoneQueue(IOUSBControllerIsochEndpoint* pED, IOUSBControllerIsochListElement *pTD, bool checkDeferred);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 18);
virtual IOUSBControllerIsochListElement *GetTDfromDoneQueue(IOUSBControllerIsochEndpoint* pED);
OSMetaClassDeclareReservedUsed(IOUSBControllerV2, 19);
virtual void ReturnIsochDoneQueue(IOUSBControllerIsochEndpoint*);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 20);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 21);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 22);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 23);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 24);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 25);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 26);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 27);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 28);
OSMetaClassDeclareReservedUnused(IOUSBControllerV2, 29);
};
#endif