IOI2CInterfacePrivate.h [plain text]
#ifndef _IOKIT_IOI2CINTERFACEPRIVATE_H
#define _IOKIT_IOI2CINTERFACEPRIVATE_H
#ifdef KERNEL
#include <IOKit/IOLib.h>
#include <IOKit/IOUserClient.h>
#include <IOKit/ndrvsupport/IONDRVFramebuffer.h>
#endif
#include <IOKit/i2c/IOI2CInterface.h>
enum { kIOI2CInlineBufferBytes = 1024 };
struct IOI2CBuffer
{
IOI2CRequest request;
UInt8 inlineBuffer[ kIOI2CInlineBufferBytes ];
};
#ifdef KERNEL
#pragma pack(push, 4)
struct IOI2CRequest_10_5_0
{
UInt64 __reservedA;
IOReturn result;
uint32_t completion;
IOOptionBits commFlags;
uint64_t minReplyDelay;
uint8_t sendAddress;
uint8_t sendSubAddress;
uint8_t __reservedB[2];
IOOptionBits sendTransactionType;
uint32_t sendBuffer;
uint32_t sendBytes;
uint8_t replyAddress;
uint8_t replySubAddress;
uint8_t __reservedC[2];
IOOptionBits replyTransactionType;
uint32_t replyBuffer;
uint32_t replyBytes;
uint32_t __reservedD[16];
#ifdef __ppc__
uint32_t __reservedE;
#endif
};
#pragma pack(pop)
class IOI2CInterfaceUserClient : public IOUserClient
{
OSDeclareDefaultStructors(IOI2CInterfaceUserClient)
protected:
task_t fTask;
public:
virtual IOReturn clientClose( void );
virtual IOService * getService( void );
virtual IOExternalMethod * getTargetAndMethodForIndex(
IOService ** targetP, UInt32 index );
static IOI2CInterfaceUserClient * withTask( task_t owningTask );
virtual bool start( IOService * provider );
virtual IOReturn setProperties( OSObject * properties );
virtual IOReturn extAcquireBus( void );
virtual IOReturn extReleaseBus( void );
virtual IOReturn extIO( void * inStruct, void * outStruct,
IOByteCount inSize, IOByteCount * outSize );
};
#endif
#endif