]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/IOKit/IODMAEventSource.h
xnu-2422.90.20.tar.gz
[apple/xnu.git] / iokit / IOKit / IODMAEventSource.h
index ce68f6f8607c27485fdbce3c87a894bcffca6417..58d851bf90b89a2411a2554cf58dfe24e76d3e56 100644 (file)
@@ -34,6 +34,8 @@
 #include <IOKit/IODMAController.h>
 #include <IOKit/IOEventSource.h>
 
+class IODMAController;
+
 class IODMAEventSource : public IOEventSource
 {
   OSDeclareDefaultStructors(IODMAEventSource);
@@ -41,12 +43,12 @@ class IODMAEventSource : public IOEventSource
   friend class IODMAController;
   
  public:
-  typedef void (*Action)(OSObject *owner, IODMAEventSource *dmaES, IODMACommand *dmaCommand, IOReturn status, IOByteCount actualByteCount);
+  typedef void (*Action)(OSObject *owner, IODMAEventSource *dmaES, IODMACommand *dmaCommand, IOReturn status, IOByteCount actualByteCount, AbsoluteTime timeStamp);
 #define IODMAEventAction IODMAEventSource::Action
   
  protected:
   virtual void completeDMACommand(IODMACommand *dmaCommand);
-  virtual void notifyDMACommand(IODMACommand *dmaCommand, IOReturn status, IOByteCount actualByteCount);
+  virtual void notifyDMACommand(IODMACommand *dmaCommand, IOReturn status, IOByteCount actualByteCount, AbsoluteTime timeStamp);
   
  public:
   static IODMAEventSource *dmaEventSource(OSObject *owner,
@@ -56,9 +58,16 @@ class IODMAEventSource : public IOEventSource
                                          UInt32 dmaIndex = 0);
   
   virtual IOReturn startDMACommand(IODMACommand *dmaCommand, IODirection direction, IOByteCount byteCount = 0, IOByteCount byteOffset = 0);
-  virtual IOReturn stopDMACommand(bool flush = false, mach_timespec_t *timeout = 0);
-  
+  virtual IOReturn stopDMACommand(bool flush = false, uint64_t timeout = UINT64_MAX);
+
   virtual IOReturn queryDMACommand(IODMACommand **dmaCommand, IOByteCount *transferCount, bool waitForIdle = false);
+
+  virtual IOByteCount getFIFODepth(IODirection direction = kIODirectionNone);
+  virtual IOReturn setFIFODepth(IOByteCount depth);
+  virtual IOByteCount validFIFODepth(IOByteCount depth, IODirection direction);
+
+  virtual IOReturn setDMAConfig(UInt32 dmaIndex);
+  virtual bool validDMAConfig(UInt32 dmaIndex);
   
  private:
   IOService       *dmaProvider;
@@ -76,6 +85,7 @@ class IODMAEventSource : public IOEventSource
                    Action notification = 0,
                    UInt32 dmaIndex = 0);
   virtual bool checkForWork(void);
+  virtual void free(void);
 };
 
 #endif /* _IOKIT_IODMAEVENTSOURCE_H */