IOPMUADBController.h [plain text]
#include <IOKit/adb/IOADBController.h>
#include <IOKit/IODeviceTreeSupport.h>
#include <IOKit/IOPlatformExpert.h>
#include <IOKit/IOSyncer.h>
class IOPMUADBController : public IOADBController
{
OSDeclareDefaultStructors(IOPMUADBController)
private:
enum {
kPMUNoError = 0,
kPMUInitError = 1, kPMUParameterError = 2, kPMUNotSupported = 3, kPMUIOError = 4 };
enum {
kPMUpMgrADB = 0x20, kPMUpMgrADBoff = 0x21, kPMUreadADB = 0x28, kPMUpMgrADBInt = 0x2F, };
enum {
kPMUADBAddressField = 4
};
enum {
kPMUResetADBBus = 0x00,
kPMUFlushADB = 0x01,
kPMUWriteADB = 0x08,
kPMUReadADB = 0x0C,
kPMURWMaskADB = 0x0C
};
enum { kPMUADBint = 0x10,
kPMUenvironmentInt = 0x40, kPMUwaitinglsc = 0x01, kPMUautoSRQpolling = 0x02, kPMUautopoll = 0x04 };
typedef struct SendMiscCommandParameterBlock {
int command;
IOByteCount sLength;
UInt8 *sBuffer;
IOByteCount *rLength;
UInt8 *rBuffer;
} SendMiscCommandParameterBlock;
typedef SendMiscCommandParameterBlock *SendMiscCommandParameterBlockPtr;
IOService *PMUdriver;
UInt32 pollList; bool autopollOn; bool clamshellOpen;
UInt32 dataLen; UInt8 dataBuffer[256]; IOSyncer *waitingForData;
static void handleADBInterrupt(IOService *client, UInt8 matchingMask, UInt32 length, UInt8 *buffer);
IOLock *requestMutexLock;
IOReturn localSendMiscCommand(int command, IOByteCount sLength, UInt8 *sBuffer);
public:
IOService *probe( IOService * nub, SInt32 * score );
bool start ( IOService * );
void free ();
IOReturn setAutoPollPeriod ( int microseconds );
IOReturn getAutoPollPeriod ( int * microseconds );
IOReturn setAutoPollList ( UInt16 activeAddressMask );
IOReturn getAutoPollList ( UInt16 * activeAddressMask );
IOReturn setAutoPollEnable ( bool enable );
IOReturn resetBus ( void );
IOReturn cancelAllIO ( void );
IOReturn flushDevice ( IOADBAddress address );
IOReturn readFromDevice ( IOADBAddress address, IOADBRegister adbRegister, UInt8 * data, IOByteCount * length );
IOReturn writeToDevice ( IOADBAddress address, IOADBRegister adbRegister, UInt8 * data, IOByteCount * length );
};