]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/Kernel/IODMAEventSource.cpp
xnu-3789.41.3.tar.gz
[apple/xnu.git] / iokit / Kernel / IODMAEventSource.cpp
index eeaf70c8a98e1ab999937d7d277d31c6dc53cef1..6875e0c429107c4637b993defa0c82f70536d5c1 100644 (file)
@@ -65,6 +65,12 @@ bool IODMAEventSource::init(OSObject *inOwner,
   return true;
 }
 
+void IODMAEventSource::free()
+{
+    if (dmaCommandsCompletedLock != NULL) IOSimpleLockFree(dmaCommandsCompletedLock);
+    super::free();
+}
+
 IODMAEventSource *IODMAEventSource::dmaEventSource(OSObject *inOwner,
                                                   IOService *inProvider,
                                                   Action inCompletion,
@@ -103,7 +109,7 @@ IOReturn IODMAEventSource::startDMACommand(IODMACommand *dmaCommand, IODirection
   return kIOReturnSuccess;
 }
 
-IOReturn IODMAEventSource::stopDMACommand(bool flush, mach_timespec_t *timeout)
+IOReturn IODMAEventSource::stopDMACommand(bool flush, uint64_t timeout)
 {
   if ((dmaController == 0) || (dmaIndex == 0xFFFFFFFF)) return kIOReturnError;
   
@@ -119,6 +125,37 @@ IOReturn IODMAEventSource::queryDMACommand(IODMACommand **dmaCommand, IOByteCoun
 }
 
 
+IOByteCount IODMAEventSource::getFIFODepth(IODirection direction)
+{
+  if ((dmaController == 0) || (dmaIndex == 0xFFFFFFFF)) return 0;
+  
+  return dmaController->getFIFODepth(dmaIndex, direction);
+}
+
+
+IOReturn IODMAEventSource::setFIFODepth(IOByteCount depth)
+{
+  if ((dmaController == 0) || (dmaIndex == 0xFFFFFFFF)) return kIOReturnError;
+  
+  return dmaController->setFIFODepth(dmaIndex, depth);
+}
+
+
+IOByteCount IODMAEventSource::validFIFODepth(IOByteCount depth, IODirection direction)
+{
+  if ((dmaController == 0) || (dmaIndex == 0xFFFFFFFF)) return kIOReturnError;
+  
+  return dmaController->validFIFODepth(dmaIndex, depth, direction);
+}
+
+
+IOReturn IODMAEventSource::setFrameSize(UInt8 byteCount)
+{
+  if ((dmaController == 0) || (dmaIndex == 0xFFFFFFFF)) return kIOReturnError;
+  
+  return dmaController->setFrameSize(dmaIndex, byteCount);
+}
+
 // protected
 
 bool IODMAEventSource::checkForWork(void)
@@ -137,7 +174,7 @@ bool IODMAEventSource::checkForWork(void)
   IOSimpleLockUnlock(dmaCommandsCompletedLock);
 
   if (work) {
-    (*dmaCompletionAction)(owner, this, dmaCommand, dmaCommand->reserved->fStatus, dmaCommand->reserved->fActualByteCount);
+    (*dmaCompletionAction)(owner, this, dmaCommand, dmaCommand->reserved->fStatus, dmaCommand->reserved->fActualByteCount, dmaCommand->reserved->fTimeStamp);
   }
   
   return again;
@@ -157,10 +194,21 @@ void IODMAEventSource::completeDMACommand(IODMACommand *dmaCommand)
   }
 }
 
-void IODMAEventSource::notifyDMACommand(IODMACommand *dmaCommand, IOReturn status, IOByteCount actualByteCount)
+void IODMAEventSource::notifyDMACommand(IODMACommand *dmaCommand, IOReturn status, IOByteCount actualByteCount, AbsoluteTime timeStamp)
 {
   dmaCommand->reserved->fStatus = status;
-  dmaCommand->reserved->fActualByteCount = actualByteCount;  
+  dmaCommand->reserved->fActualByteCount = actualByteCount;
+  dmaCommand->reserved->fTimeStamp = timeStamp;
   
-  if (dmaNotificationAction != 0) (*dmaNotificationAction)(owner, this, dmaCommand, status, actualByteCount);
+  if (dmaNotificationAction != 0) (*dmaNotificationAction)(owner, this, dmaCommand, status, actualByteCount, timeStamp);
+}
+
+IOReturn IODMAEventSource::setDMAConfig(UInt32 newReqIndex)
+{
+  return dmaController->setDMAConfig(dmaIndex, dmaProvider, newReqIndex);
+}
+
+bool IODMAEventSource::validDMAConfig(UInt32 newReqIndex)
+{
+  return dmaController->validDMAConfig(dmaIndex, dmaProvider, newReqIndex);
 }