AppleUSBEHCIHubInfo.h [plain text]
#ifndef _APPLEEHCIHUBINFO_H
#define _APPLEEHCIHUBINFO_H
#include "AppleUSBEHCI.h"
#include "AppleEHCIListElement.h"
class AppleEHCIIsochEndpoint;
class AppleUSBEHCIHubInfo : public OSObject
{
OSDeclareDefaultStructors(AppleUSBEHCIHubInfo)
public:
static AppleUSBEHCIHubInfo *GetHubInfo(AppleUSBEHCIHubInfo **hubList, USBDeviceAddress hubAddress, int hubPort);
static AppleUSBEHCIHubInfo *NewHubInfoZero(AppleUSBEHCIHubInfo **hubList, USBDeviceAddress hubAddress, UInt32 flags);
static IOReturn DeleteHubInfoZero(AppleUSBEHCIHubInfo **hubList, USBDeviceAddress hubAddress);
UInt32 AvailableInterruptBandwidth();
UInt32 AvailableIsochBandwidth(UInt32 direction);
IOReturn AllocateInterruptBandwidth(AppleEHCIQueueHead *pQH, UInt32 maxPacketSize);
IOReturn DeallocateInterruptBandwidth(AppleEHCIQueueHead *pQH);
IOReturn AllocateIsochBandwidth(AppleEHCIIsochEndpoint* pEP, UInt32 maxPacketSize);
IOReturn DeallocateIsochBandwidth(AppleEHCIIsochEndpoint* pEP);
IOReturn ReallocateIsochBandwidth(AppleEHCIIsochEndpoint* pEP, UInt32 maxPacketSize);
private:
AppleUSBEHCIHubInfo *next;
UInt32 flags;
UInt8 hubAddr;
UInt8 hubPort;
UInt8 isochOUTUsed[8]; UInt8 isochINUsed[8]; UInt8 interruptUsed[8];
static AppleUSBEHCIHubInfo *FindHubInfo(AppleUSBEHCIHubInfo *hubList, USBDeviceAddress hubAddress, int hubPort);
static AppleUSBEHCIHubInfo *NewHubInfo(USBDeviceAddress hubAddress, int hubPort);
};
enum
{
kUSBEHCIFlagsMuliTT = 0x0001
};
#endif