#ifndef _IOKIT_MACRISC2_H
#define _IOKIT_MACRISC2_H
#include <IOKit/platform/ApplePlatformExpert.h>
enum
{
kMacRISC2TypePowerMac = 1,
kMacRISC2TypePowerBook,
};
class MacRISC2PE : public ApplePlatformExpert
{
OSDeclareDefaultStructors(MacRISC2PE);
friend class MacRISC2CPU;
private:
unsigned long *uniNBaseAddress;
unsigned long uniNVersion;
IOService * usb1;
IOService * usb2;
IOService * keylargoUSB1;
IOService * keylargoUSB2;
IOLock * mutex;
bool kDoFrameBufferDeepSleep;
virtual unsigned long readUniNReg(unsigned long offest);
virtual void writeUniNReg(unsigned long offest, unsigned long data);
void getDefaultBusSpeeds(long *numSpeeds, unsigned long **speedList);
void enableUniNEthernetClock(bool enable);
void enableUniNFireWireClock(bool enable);
void enableUniNFireWireCablePower(bool enable);
void PMInstantiatePowerDomains ( void );
void PMRegisterDevice(IOService * theNub, IOService * theDevice);
IORegistryEntry * retrievePowerMgtEntry (void);
public:
virtual bool start(IOService *provider);
virtual bool platformAdjustService(IOService *service);
virtual IOReturn callPlatformFunction(const OSSymbol *functionName,
bool waitForFunction,
void *param1, void *param2,
void *param3, void *param4);
};
#define kUniNVersion (0x0000)
#define kUniNVersion107 (0x0003)
#define kUniNVersion10A (0x0007)
#define kUniNClockControl (0x0020)
#define kUniNFirewireClockEnable (1 << 2)
#define kUniNEthernetClockEnable (1 << 1)
#define kUniNPCI2ClockEnable (1 << 0)
#define kUniNPowerMngmnt (0x0030)
#define kUniNNormal (0x00)
#define kUniNIdle2 (0x01)
#define kUniNSleep (0x02)
#define kUniNArbCtrl (0x0040)
#define kUniNArbCtrlQAckDelayShift (15)
#define kUniNArbCtrlQAckDelayMask (0x0e1f8000)
#define kUniNArbCtrlQAckDelay (0x30)
#define kUniNArbCtrlQAckDelay105 (0x00)
#define kUniNHWInitState (0x0070)
#define kUniNHWInitStateSleeping (0x01)
#define kUniNHWInitStateRunning (0x02)
#endif