summaryrefslogtreecommitdiff
path: root/include/dma3.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/dma3.h')
-rw-r--r--include/dma3.h26
1 files changed, 25 insertions, 1 deletions
diff --git a/include/dma3.h b/include/dma3.h
index 381e1e322..266fa0716 100644
--- a/include/dma3.h
+++ b/include/dma3.h
@@ -6,6 +6,14 @@
// Maximum amount of data we will transfer in one operation
#define MAX_DMA_BLOCK_SIZE 0x1000
+#define DMA_REQUEST_COPY32 1
+#define DMA_REQUEST_FILL32 2
+#define DMA_REQUEST_COPY16 3
+#define DMA_REQUEST_FILL16 4
+
+#define DMA3_16BIT 0
+#define DMA3_32BIT 1
+
#define Dma3CopyLarge_(src, dest, size, bit) \
{ \
const void *_src = src; \
@@ -48,10 +56,26 @@
#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16)
#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32)
+// Cancel pending DMA3 requests
void ClearDma3Requests(void);
+
+// Handle pending DMA3 requests
void ProcessDma3Requests(void);
+
+// Copy size bytes from src to dest.
+// mode takes a DMA3_*BIT macro
+// Returns the request index
s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
+
+// Fill size bytes at dest with value.
+// mode takes a DMA3_*BIT macro
+// Returns the request index
s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
-s16 CheckForSpaceForDma3Request(s16 index);
+
+// index is the return value from RequestDma3*
+// if index = -1, will check if any request is pending
+// otherwise, checks if the specified request is pending
+// Returns -1 if pending, 0 otherwise
+s16 WaitDma3Request(s16 index);
#endif // GUARD_DMA3_H