AppleEHCIListElement.h [plain text]
#ifndef _IOKIT_AppleEHCIListElement_H
#define _IOKIT_AppleEHCIListElement_H
#include <libkern/c++/OSObject.h>
#include <IOKit/usb/IOUSBControllerListElement.h>
#include "AppleUSBEHCI.h"
#include "USBEHCI.h"
class AppleEHCIIsochEndpoint;
class AppleEHCIQueueHead : public IOUSBControllerListElement
{
OSDeclareDefaultStructors(AppleEHCIQueueHead)
private:
public:
static AppleEHCIQueueHead *WithSharedMemory(EHCIQueueHeadSharedPtr sharedLogical, IOPhysicalAddress sharedPhysical);
virtual void SetPhysicalLink(IOPhysicalAddress next);
virtual IOPhysicalAddress GetPhysicalLink(void);
virtual IOPhysicalAddress GetPhysicalAddrWithType(void);
virtual void print(int level);
EHCIQueueHeadSharedPtr GetSharedLogical(void);
EHCIGeneralTransferDescriptorPtr _qTD;
EHCIGeneralTransferDescriptorPtr _TailTD;
UInt16 _maxPacketSize;
UInt8 _direction;
UInt8 _pollM1;
UInt8 _offset;
UInt8 _responseToStall;
UInt8 _queueType; UInt16 _functionNumber;
UInt8 _bandwidthUsed[8];
};
class AppleEHCIIsochTransferDescriptor : public IOUSBControllerIsochListElement
{
OSDeclareDefaultStructors(AppleEHCIIsochTransferDescriptor)
public:
static AppleEHCIIsochTransferDescriptor *WithSharedMemory(EHCIIsochTransferDescriptorSharedPtr sharedLogical, IOPhysicalAddress sharedPhysical);
virtual void SetPhysicalLink(IOPhysicalAddress next);
virtual IOPhysicalAddress GetPhysicalLink(void);
virtual IOPhysicalAddress GetPhysicalAddrWithType(void);
virtual IOReturn UpdateFrameList(AbsoluteTime timeStamp);
virtual IOReturn Deallocate(IOUSBControllerV2 *uim);
virtual void print(int level);
EHCIIsochTransferDescriptorSharedPtr GetSharedLogical(void);
private:
IOReturn mungeEHCIStatus(UInt32 status, UInt16 *transferLen, UInt32 maxPacketSize, UInt8 direction);
};
class AppleEHCISplitIsochTransferDescriptor : public IOUSBControllerIsochListElement
{
OSDeclareDefaultStructors(AppleEHCISplitIsochTransferDescriptor)
public:
static AppleEHCISplitIsochTransferDescriptor *WithSharedMemory(EHCISplitIsochTransferDescriptorSharedPtr sharedLogical, IOPhysicalAddress sharedPhysical);
virtual void SetPhysicalLink(IOPhysicalAddress next);
virtual IOPhysicalAddress GetPhysicalLink(void);
virtual IOPhysicalAddress GetPhysicalAddrWithType(void);
virtual IOReturn UpdateFrameList(AbsoluteTime timeStamp);
virtual IOReturn Deallocate(IOUSBControllerV2 *uim);
virtual void print(int level);
EHCISplitIsochTransferDescriptorSharedPtr GetSharedLogical(void);
bool _isDummySITD;
};
class AppleEHCIIsochEndpoint : public IOUSBControllerIsochEndpoint
{
OSDeclareDefaultStructors(AppleEHCIIsochEndpoint)
public:
virtual bool init();
void *hiPtr; short oneMPS; short mult; USBDeviceAddress highSpeedHub;
int highSpeedPort;
UInt8 bandwidthUsed[8]; UInt8 startSplitFlags;
UInt8 completeSplitFlags;
bool useBackPtr;
UInt8 isochINSSFrame; };
#endif