IOFramebufferPrivate.h [plain text]
void setupCursor(void);
void stopCursor( void );
IOReturn doSetup( bool full );
void findConsole(void);
IOReturn createSharedCursor( int shmemVersion,
int maxWidth, int maxHeight );
IOReturn setBoundingRect( IOGBounds * bounds );
IOReturn setUserRanges( void );
IOReturn getConnectFlagsForDisplayMode(
IODisplayModeID mode, IOIndex connection, UInt32 * flags );
static inline void StdFBDisplayCursor( IOFramebuffer * inst );
static inline void StdFBRemoveCursor( IOFramebuffer * inst );
static inline void RemoveCursor( IOFramebuffer * inst );
static inline void DisplayCursor( IOFramebuffer * inst );
static inline void SysHideCursor( IOFramebuffer * inst );
static inline void SysShowCursor( IOFramebuffer * inst );
static inline void CheckShield( IOFramebuffer * inst );
inline IOOptionBits _setCursorImage( UInt32 frame );
inline IOReturn _setCursorState( SInt32 x, SInt32 y, bool visible );
static void cursorWork( OSObject * p0, IOInterruptEventSource * evtSrc, int intCount );
static void StdFBDisplayCursor8P(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned char *vramPtr,
unsigned int cursStart,
unsigned int vramRow,
unsigned int cursRow,
int width,
int height );
static void StdFBDisplayCursor8G(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned char *vramPtr,
unsigned int cursStart,
unsigned int vramRow,
unsigned int cursRow,
int width,
int height );
static void StdFBDisplayCursor555(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned short *vramPtr,
unsigned int cursStart,
unsigned int vramRow,
unsigned int cursRow,
int width,
int height );
static void StdFBDisplayCursor30Axxx(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned int *vramPtr,
unsigned int cursStart,
unsigned int vramRow,
unsigned int cursRow,
int width,
int height );
static void StdFBDisplayCursor32Axxx(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned int *vramPtr,
unsigned int cursStart,
unsigned int vramRow,
unsigned int cursRow,
int width,
int height );
static void StdFBRemoveCursor8(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned char *vramPtr,
unsigned int vramRow,
int width,
int height );
static void StdFBRemoveCursor16(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned short *vramPtr,
unsigned int vramRow,
int width,
int height );
static void StdFBRemoveCursor32(
IOFramebuffer * inst,
StdFBShmem_t *shmem,
volatile unsigned int *vramPtr,
unsigned int vramRow,
int width,
int height );
static void deferredMoveCursor(IOFramebuffer * inst);
static void deferredCLUTSetInterrupt( OSObject * owner,
IOInterruptEventSource * evtSrc, int intCount );
static void deferredSpeedChangeEvent( OSObject * owner,
IOInterruptEventSource * evtSrc, int intCount );
static IOReturn pmSettingsChange(OSObject *target, const OSSymbol *type,
OSObject *val, uintptr_t refcon);
static void systemWork(OSObject * owner,
IOInterruptEventSource * evtSrc, int intCount);
static void controllerAsyncWork(OSObject * owner,
IOInterruptEventSource * evtSrc, int intCount);
static void startControllerThread(struct IOFBController * controller);
static void controllerDidWork(IOFBController * controller, IOOptionBits work);
static void startAsync(IOFBController * controller, uint32_t asyncWork);
static uint32_t controllerState(IOFBController * controller);
static IOOptionBits checkPowerWork(IOFBController * controller, IOOptionBits state);
static IOOptionBits checkConnectionWork(IOFBController * controller,
IOOptionBits state );
IOOptionBits checkPowerWork(IOOptionBits state);
void checkDeferredCLUTSet( void );
void updateCursorForCLUTSet( void );
IOReturn updateGammaTable( UInt32 channelCount, UInt32 dataCount,
UInt32 dataWidth, const void * data );
static void dpInterruptProc(OSObject * target, void * ref);
static void dpInterrupt(OSObject * owner, IOTimerEventSource * sender);
void dpProcessInterrupt(void);
void dpUpdateConnect(void);
static void delayedEvent(thread_call_param_t p0, thread_call_param_t p1);
static void resetClamshell(void);
static void updateVBL(OSObject * owner, IOTimerEventSource * sender);
static void deferredCLUTSetTimer(OSObject * owner, IOTimerEventSource * sender);
static void handleVBL(IOFramebuffer * inst, void * ref);
bool getTimeOfVBL(AbsoluteTime * deadline, uint32_t frames);
static void writePrefs( OSObject * owner, IOTimerEventSource * sender );
static void connectChangeInterrupt( IOFramebuffer * inst, void * ref );
void setNextDependent( IOFramebuffer * dependent );
IOFramebuffer * getNextDependent( void );
void setCaptured( bool isCaptured );
void setDimDisable( bool dimDisable );
bool getDimDisable( void );
IOReturn notifyServer( UInt8 state );
IOReturn _extEntry(bool system, bool allowOffline, const char * where);
void _extExit(bool system, IOReturn result, const char * where);
bool getIsUsable(void);
IOReturn postOpen(void);
IOReturn postWake(void);
static void checkConnectionChange(IOFBController * controller );
static void messageConnectionChange(IOFBController * controller );
static IOReturn processConnectChange(IOFBController * controller, IOOptionBits mode);
static IOReturn matchController(IOFBController * controller);
IOReturn extProcessConnectionChange(void);
IOReturn extEndConnectionChange(void);
IOReturn processConnectChange(IOOptionBits mode);
bool suspend(bool now);
bool updateOnline(void);
void displaysOnline(bool nowOnline);
static void startThread(bool highPri);
static void sleepWork( void * arg );
static void clamshellWork( thread_call_param_t p0, thread_call_param_t p1 );
void saveFramebuffer(void);
void restoreFramebuffer(void);
IOReturn deliverDisplayModeDidChangeNotification( void );
static IOReturn systemPowerChange( void * target, void * refCon,
UInt32 messageType, IOService * service,
void * messageArgument, vm_size_t argSize );
static IOReturn agcMessage( void * target, void * refCon,
UInt32 messageType, IOService * service,
void * messageArgument, vm_size_t argSize );
static bool clamshellHandler( void * target, void * ref,
IOService * resourceService, IONotifier * notifier );
static void readClamshellState(void);
static IOReturn probeAll( IOOptionBits options );
IOReturn selectTransform( UInt64 newTransform, bool generateChange );
void setTransform( UInt64 newTransform, bool generateChange );
UInt64 getTransform( void );
IOReturn checkMirrorSafe( UInt32 value, IOFramebuffer * other );
void transformLocation(StdFBShmem_t * shmem, IOGPoint * cursorLoc, IOGPoint * transformLoc);
void transformCursor(StdFBShmem_t * shmem, IOIndex frame);
bool deepFramebuffer( IOPixelInformation * pixelInfo );
bool validFramebuffer( IOPixelInformation * pixelInfo );
IOIndex closestDepth(IODisplayModeID mode, IOPixelInformation * pixelInfo);
IOReturn setDisplayAttributes(OSData * data);
IOReturn doSetDisplayMode(IODisplayModeID displayMode, IOIndex depth);
static IOReturn extCreateSharedCursor(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetPixelInformation(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetCurrentDisplayMode(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetStartupDisplayMode(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetGammaTable(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetDisplayModeCount(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetDisplayModes(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetDisplayMode(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetInformationForDisplayMode(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetVRAMMapOffset(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetBounds(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetNewCursor(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetCursorVisible(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetCursorPosition(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetColorConvertTable(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetCLUTWithEntries(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extSetAttribute(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extGetAttribute(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extValidateDetailedTiming(OSObject * target, void * reference, IOExternalMethodArguments * args);
static IOReturn extAcknowledgeNotification(OSObject * target, void * reference, IOExternalMethodArguments * args);
IOReturn extSetProperties( OSDictionary * dict );
IOReturn extRegisterNotificationPort(
mach_port_t port,
UInt32 type,
UInt32 refCon );
public:
void fbLock( void );
void fbUnlock( void );
static void displayOnline( IOOptionBits type, SInt32 delta );
static IOOptionBits clamshellState( void );
static IOReturn setPreferences( IOService * props, OSDictionary * prefs );
static OSObject * copyPreferences( void );
OSObject * copyPreference( class IODisplay * display, const OSSymbol * key );
bool getIntegerPreference( IODisplay * display, const OSSymbol * key, UInt32 * value );
bool setPreference( class IODisplay * display, const OSSymbol * key, OSObject * value );
bool setIntegerPreference( IODisplay * display, const OSSymbol * key, UInt32 value );
void getTransformPrefs( IODisplay * display );
IOReturn flushParameters(void);
protected:
IOReturn stopDDC1SendCommand(IOIndex bus, IOI2CBusTiming * timing);
void waitForDDCDataLine(IOIndex bus, IOI2CBusTiming * timing, UInt32 waitTime);
IOReturn readDDCBlock(IOIndex bus, IOI2CBusTiming * timing, UInt8 deviceAddress, UInt8 startAddress, UInt8 * data);
IOReturn i2cReadDDCciData(IOIndex bus, IOI2CBusTiming * timing, UInt8 deviceAddress, UInt8 count, UInt8 *buffer);
IOReturn i2cReadData(IOIndex bus, IOI2CBusTiming * timing, UInt8 deviceAddress, UInt8 count, UInt8 * buffer);
IOReturn i2cWriteData(IOIndex bus, IOI2CBusTiming * timing, UInt8 deviceAddress, UInt8 count, UInt8 * buffer);
void i2cStart(IOIndex bus, IOI2CBusTiming * timing);
void i2cStop(IOIndex bus, IOI2CBusTiming * timing);
void i2cSendAck(IOIndex bus, IOI2CBusTiming * timing);
void i2cSendNack(IOIndex bus, IOI2CBusTiming * timing);
IOReturn i2cWaitForAck(IOIndex bus, IOI2CBusTiming * timing);
void i2cSendByte(IOIndex bus, IOI2CBusTiming * timing, UInt8 data);
IOReturn i2cReadByte(IOIndex bus, IOI2CBusTiming * timing, UInt8 *data);
IOReturn i2cWaitForBus(IOIndex bus, IOI2CBusTiming * timing);
IOReturn i2cRead(IOIndex bus, IOI2CBusTiming * timing, UInt8 deviceAddress, UInt8 numberOfBytes, UInt8 * data);
IOReturn i2cWrite(IOIndex bus, IOI2CBusTiming * timing, UInt8 deviceAddress, UInt8 numberOfBytes, UInt8 * data);
void i2cSend9Stops(IOIndex bus, IOI2CBusTiming * timing);