summaryrefslogtreecommitdiff
path: root/QemuVGADriver/src/DriverQDCalls.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2016-08-14 20:41:28 +1000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2016-08-14 20:41:28 +1000
commitd4e7d7ac663fcb55f1b93575445fcbca372f17a7 (patch)
tree012b30bf8012a4ce71f46220f058f2c258e920eb /QemuVGADriver/src/DriverQDCalls.c
parenta0349607f72d1a3d177750be0fb6793011d71df2 (diff)
downloadQemuMacDrivers-d4e7d7ac663fcb55f1b93575445fcbca372f17a7.zip
QemuMacDrivers-d4e7d7ac663fcb55f1b93575445fcbca372f17a7.tar.gz
QemuMacDrivers-d4e7d7ac663fcb55f1b93575445fcbca372f17a7.tar.bz2
Add blanking support (GetSync/SetSync calls)
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'QemuVGADriver/src/DriverQDCalls.c')
-rw-r--r--[-rwxr-xr-x]QemuVGADriver/src/DriverQDCalls.c45
1 files changed, 43 insertions, 2 deletions
diff --git a/QemuVGADriver/src/DriverQDCalls.c b/QemuVGADriver/src/DriverQDCalls.c
index f33a76e..80f8d2c 100755..100644
--- a/QemuVGADriver/src/DriverQDCalls.c
+++ b/QemuVGADriver/src/DriverQDCalls.c
@@ -272,11 +272,39 @@ GraphicsCoreGetInterrupt(VDFlagRecord *flagRecord)
OSStatus
GraphicsCoreSetSync(VDSyncInfoRec *syncInfo)
{
+ UInt8 sync, mask;
+
Trace(GraphicsCoreSetSync);
CHECK_OPEN( controlErr );
- return paramErr;
+ sync = syncInfo->csMode;
+ mask = syncInfo->csFlags;
+
+ /* Unblank shortcut */
+ if (sync == 0 && mask == 0) {
+ sync = 0;
+ mask = kDPMSSyncMask;
+ }
+ /* Blank shortcut */
+ if (sync == 0xff && mask == 0xff) {
+ sync = 0x7;
+ mask = kDPMSSyncMask;
+ }
+
+ lprintf("SetSync req: sync=%x mask=%x\n", sync, mask);
+
+ /* Only care about the DPMS mode */
+ if ((mask & kDPMSSyncMask) == 0)
+ return noErr;
+
+ /* If any sync is disabled, blank */
+ if (sync & kDPMSSyncMask)
+ QemuVga_Blank(true);
+ else
+ QemuVga_Blank(false);
+
+ return noErr;
}
OSStatus
@@ -284,7 +312,20 @@ GraphicsCoreGetSync(VDSyncInfoRec *syncInfo)
{
Trace(GraphicsCoreGetSync);
- return paramErr;
+ if (syncInfo->csMode == 0xff) {
+ /* Return HW caps */
+ syncInfo->csMode = (1 << kDisableHorizontalSyncBit) |
+ (1 << kDisableVerticalSyncBit) |
+ (1 << kDisableCompositeSyncBit) |
+ (1 << kNoSeparateSyncControlBit);
+ } else if (syncInfo->csMode == 0x00){
+ syncInfo->csMode = GLOBAL.blanked ? kDPMSSyncMask : 0;
+ } else
+ return statusErr;
+
+ syncInfo->csFlags = 0;
+
+ return noErr;
}
OSStatus