return true;
}
+void IODMAEventSource::free()
+{
+ if (dmaCommandsCompletedLock != NULL) IOSimpleLockFree(dmaCommandsCompletedLock);
+ super::free();
+}
+
IODMAEventSource *IODMAEventSource::dmaEventSource(OSObject *inOwner,
IOService *inProvider,
Action inCompletion,
}
-IOByteCount IODMAEventSource::getFIFODepth()
+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->getFIFODepth(dmaIndex);
+ 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)
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;
}
}
-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);
}