X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/150bd0745008d57c273e65929515dd6bbe568d83..e7c99d92bf4e4d1189c904195ed317951f9a35ad:/iokit/Families/IONDRVSupport/IONDRVFramebuffer.cpp diff --git a/iokit/Families/IONDRVSupport/IONDRVFramebuffer.cpp b/iokit/Families/IONDRVSupport/IONDRVFramebuffer.cpp index 472e54d9e..18119f96d 100644 --- a/iokit/Families/IONDRVSupport/IONDRVFramebuffer.cpp +++ b/iokit/Families/IONDRVSupport/IONDRVFramebuffer.cpp @@ -46,6 +46,8 @@ #include +#define kAppleAudioVideoJackStateKey "AppleAudioVideoJackState" + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ class IOATINDRV : public IONDRVFramebuffer @@ -242,6 +244,12 @@ IOReturn IONDRVFramebuffer::enableController( void ) if( kIOReturnSuccess == err) do { + // find out about onboard audio/video jack state + // OSObject * notify = + addNotification( gIOPublishNotification, + resourceMatching(kAppleAudioVideoJackStateKey), + _videoJackStateChangeHandler, this, 0 ); + ignore_zero_fault( true ); err = checkDriver(); ignore_zero_fault( false ); @@ -273,6 +281,25 @@ IOReturn IONDRVFramebuffer::enableController( void ) return( err); } +bool IONDRVFramebuffer::_videoJackStateChangeHandler( void * target, void * ref, + IOService * resourceService ) +{ + IONDRVFramebuffer * self = (IONDRVFramebuffer *) target; + IOReturn err; + UInt32 jackData; + + OSObject * jackValue = resourceService->getProperty(kAppleAudioVideoJackStateKey); + if( !jackValue) + return( true ); + + jackData = (jackValue == kOSBooleanTrue); + + self->nub->setProperty( kAppleAudioVideoJackStateKey, &jackData, sizeof(jackData) ); + resourceService->removeProperty(kAppleAudioVideoJackStateKey); + + return( true ); +} + IODeviceMemory * IONDRVFramebuffer::getVRAMRange( void ) { if( vramMemory)