Difference between revisions of "Dmae.rpl"
Jump to navigation
Jump to search
m (Grammar things) |
(change functions that return a uint64_t to return a uint64_t) |
||
Line 3: | Line 3: | ||
==Functions== | ==Functions== | ||
− | + | All uint64_t values returned from functions are timestamps that can be used with DMAEWaitDone. | |
− | === | + | ===Timing=== |
{| class="wikitable" | {| class="wikitable" | ||
!Name | !Name | ||
Line 22: | Line 22: | ||
|- | |- | ||
|DMAEInitSemaphore | |DMAEInitSemaphore | ||
− | |<code> | + | |<code>uint64_t DMAEInitSemaphore(uint64_t *semaphoreAddr, uint64_t semaphoreCount)</code> |
|Initialize a Semaphore to synchronize DMA Engine to the GPU (GPU7) | |Initialize a Semaphore to synchronize DMA Engine to the GPU (GPU7) | ||
|- | |- | ||
|DMAESemaphore | |DMAESemaphore | ||
− | |<code> | + | |<code>uint64_t DMAESemaphore(u64 *semaphoreAddr, DMAESemaphoreAction semaphoreAction)</code> |
|Create a Semaphore at the specified address | |Create a Semaphore at the specified address | ||
|} | |} | ||
Line 36: | Line 36: | ||
|- | |- | ||
|DMAECopyMem | |DMAECopyMem | ||
− | |<code> | + | |<code>uint64_t DMAECopyMem(void *dst, const void *src, uint32_t size, DMAEEndian endian)</code> |
|Copy src to dst (high-level memcpy) | |Copy src to dst (high-level memcpy) | ||
|- | |- | ||
Line 44: | Line 44: | ||
|- | |- | ||
|DMAEFillMem | |DMAEFillMem | ||
− | |<code> | + | |<code>uint64_t DMAEFillMem(void *dst, uint32_t fillData, uint32_t size)</code> |
|Fill a virtual memory range with "fillData" (also has DMAEFillMemWait version) | |Fill a virtual memory range with "fillData" (also has DMAEFillMemWait version) | ||
|- | |- | ||
|DMAEFillMemPhys | |DMAEFillMemPhys | ||
− | |<code> | + | |<code>uint64_t DMAEFillMemPhys(uint32_t dst_pa, uint32_t fillData, uint32_t size</code> |
|Fill a physical memory range with "fillData" (also has DMAEFillMemPhysWait version) | |Fill a physical memory range with "fillData" (also has DMAEFillMemPhysWait version) | ||
|} | |} |
Revision as of 08:13, 18 August 2016
dmae.rpl is the system library that provides DMA (Direct Memory Access) functions.
Functions
All uint64_t values returned from functions are timestamps that can be used with DMAEWaitDone.
Timing
Name | Prototype | Description |
---|---|---|
DMAEWaitDone | bool DMAEWaitDone(uint64_t ts);
|
Return true if all goes normally, return false if a time-out occurred. Usage: DMAEWaitDone(DMAECopyMem(mem_ptr, 0, 0x100, DMAE_ENDIAN_8IN32)); |
Semaphore
Name | Prototype | Description |
---|---|---|
DMAEInitSemaphore | uint64_t DMAEInitSemaphore(uint64_t *semaphoreAddr, uint64_t semaphoreCount)
|
Initialize a Semaphore to synchronize DMA Engine to the GPU (GPU7) |
DMAESemaphore | uint64_t DMAESemaphore(u64 *semaphoreAddr, DMAESemaphoreAction semaphoreAction)
|
Create a Semaphore at the specified address |
Memory
Name | Prototype | Description |
---|---|---|
DMAECopyMem | uint64_t DMAECopyMem(void *dst, const void *src, uint32_t size, DMAEEndian endian)
|
Copy src to dst (high-level memcpy) |
DMAECopyMemWait | bool DMAECopyMemWait(void *dst, const void *src, uint32_t size, DMAEEndian endian)
|
Returns true when all goes normally, return false if a time-out occurred |
DMAEFillMem | uint64_t DMAEFillMem(void *dst, uint32_t fillData, uint32_t size)
|
Fill a virtual memory range with "fillData" (also has DMAEFillMemWait version) |
DMAEFillMemPhys | uint64_t DMAEFillMemPhys(uint32_t dst_pa, uint32_t fillData, uint32_t size
|
Fill a physical memory range with "fillData" (also has DMAEFillMemPhysWait version) |
Enumeration
Semaphore
Name | Prototype |
---|---|
DMAESemaphoreAction |
typedef enum _DMAESemaphoreAction {
DMAE_SEMAPHORE_WAIT = 0x00000000, ///< Wait before processing next command
DMAE_SEMAPHORE_SIGNAL = 0x00000001, ///< Signal after all previous work is done
} DMAESemaphoreAction; |
Endian
Name | Prototype |
---|---|
DMAEEndian |
typedef enum DMAEEndian {
DMAE_ENDIAN_NONE = 0x00000000, ///< do-nothing
DMAE_ENDIAN_8IN16 = 0x00000001, ///< 8IN16 swapping mode. Endian swap in 16-bit int buffer.
DMAE_ENDIAN_8IN32 = 0x00000002, ///< 8IN32 swapping mode. Endian swap in 32-bit int buffer.
DMAE_ENDIAN_8IN64 = 0x00000003, ///< 8IN64 swapping mode. Endian swap in 64-bit int buffer. /// Directly from the SDK
} DMAEEndian; |