Halide 22.0.0 Halide compiler and libraries

Classes | Macros | Typedefs | Functions | Variables
mini_hexagon_dma.h File Reference

Go to the source code of this file.

## Classes
struct | stDmaWrapper_Roi
| Roi Properties. More...
struct | stDmaWrapper_FrameProp
| Frame Properties. More...
struct | stDmaWrapper_RoiAlignInfo
| Roi alignment. More...
struct | stDmaWrapper_DmaTransferSetup
| DmaTransferSetup Properties. More...

## Macros
#define | HALIDE_HEXAGON_ENUM enum __attribute__((aligned(4)))
| Format IDs. More...
#define | PW_MIN_SVS 0
| Power Corner vote. More...
#define | PW_SVS2 1
#define | PW_SVS 2
#define | PW_SVS_L1 3
#define | PW_NORMAL 4
#define | PW_NORMAL_L1 5
#define | PW_TURBO 6

## Typedefs
typedef uint16_t | uint16
typedef uint32_t | uint32
typedef int32_t | int32
typedef unsigned long | addr_t
typedef unsigned int | qurt_size_t
typedef unsigned int | qurt_mem_pool_t
typedef void * | t_stDmaWrapperDmaStats
| DMA status Currently not use, for future development. More...
typedef HALIDE_HEXAGON_ENUM | eDmaWrapper_TransationType
| Transfer type. More...
typedef struct stDmaWrapper_Roi | t_StDmaWrapper_Roi
| Roi Properties. More...
typedef struct stDmaWrapper_FrameProp | t_StDmaWrapper_FrameProp
| Frame Properties. More...
typedef struct stDmaWrapper_RoiAlignInfo | t_StDmaWrapper_RoiAlignInfo
| Roi alignment. More...
typedef struct stDmaWrapper_DmaTransferSetup | t_StDmaWrapper_DmaTransferSetup
| DmaTransferSetup Properties. More...
typedef void * | t_DmaWrapper_DmaEngineHandle
| Handle for wrapper DMA engine. More...

## Functions
void * | HAP_cache_lock (unsigned int size, void **paddr_ptr)
| Abstraction for allocation of memory in cache and lock. More...
int | HAP_cache_unlock (void *vaddr_ptr)
| Abstraction for deallocation of memory and unlock cache. More...
t_DmaWrapper_DmaEngineHandle | hDmaWrapper_AllocDma (void)
| Allocates a DMA Engine to be used by using the default wait type (polling). More...
int32 | nDmaWrapper_FreeDma (t_DmaWrapper_DmaEngineHandle hDmaHandle)
| Frees a DMA Engine that was previously allocated by AllocDma(). More...
int32 | nDmaWrapper_Move (t_DmaWrapper_DmaEngineHandle hDmaHandle)
| Starts a transfer on the provided DMA engine. More...
int32 | nDmaWrapper_Wait (t_DmaWrapper_DmaEngineHandle hDmaHandle)
| Blocks until all outstanding transfers on the DMA are complete. More...
int32 | nDmaWrapper_FinishFrame (t_DmaWrapper_DmaEngineHandle hDmaHandle)
| This call flushes the DMA buffers. More...
int32 | nDmaWrapper_GetRecommendedWalkSize (t_eDmaFmt eFmtId, bool bIsUbwc, t_StDmaWrapper_RoiAlignInfo *pStWalkSize)
| Get the recommended walk ROI width and height that should be used if walking the entire frame. More...
int32 | nDmaWrapper_GetDescbuffsize (t_eDmaFmt *aeFmtId, uint16 nsize)
| Calculates the HW descriptor buffer size based on the formats that will be used with the engine. More...
int32 | nDmaWrapper_GetRecommendedIntermBufStride (t_eDmaFmt eFmtId, t_StDmaWrapper_RoiAlignInfo *pStRoiSize, bool bIsUbwc)
| Get the recommended (minimum) intermediate buffer stride for the L2 Cache that is used transfer data from/to DDR. More...
int32 | nDmaWrapper_GetRecommendedIntermBufSize (t_eDmaFmt eFmtId, bool bUse16BitPaddingInL2, t_StDmaWrapper_RoiAlignInfo *pStRoiSize, bool bIsUbwc, uint16 u16IntermBufStride)
| Get the recommended intermediate buffer size for the L2 cache that is used to transfer data to/from DDR. More...
int32 | nDmaWrapper_DmaTransferSetup (t_DmaWrapper_DmaEngineHandle hDmaHandle, t_StDmaWrapper_DmaTransferSetup *stpDmaTransferParm)
| Setup Dma transfer parameters required to be ready to make DMA transfer. More...
int32 | nDmaWrapper_PowerVoting (uint32 cornercase)
| DMA power voting based on Cornercase. More...

## Variables
| HALIDE_HEXAGON_ENUM {QURT_EOK = 0}
| Format IDs. More...

## Macro Definition Documentation

## ◆ HALIDE_HEXAGON_ENUM

typedef HALIDE_HEXAGON_ENUM enum __attribute__((aligned(4)))

Format IDs.

Definition at line 17 of file mini_hexagon_dma.h.

## ◆ PW_MIN_SVS

#define PW_MIN_SVS 0

Power Corner vote.

Definition at line 28 of file mini_hexagon_dma.h.

## ◆ PW_SVS2

#define PW_SVS2 1

Definition at line 29 of file mini_hexagon_dma.h.

## ◆ PW_SVS

#define PW_SVS 2

Definition at line 30 of file mini_hexagon_dma.h.

## ◆ PW_SVS_L1

#define PW_SVS_L1 3

Definition at line 31 of file mini_hexagon_dma.h.

## ◆ PW_NORMAL

#define PW_NORMAL 4

Definition at line 32 of file mini_hexagon_dma.h.

## ◆ PW_NORMAL_L1

#define PW_NORMAL_L1 5

Definition at line 33 of file mini_hexagon_dma.h.

## ◆ PW_TURBO

#define PW_TURBO 6

Definition at line 34 of file mini_hexagon_dma.h.

## Typedef Documentation

## ◆ uint16

typedef uint16_t uint16

Definition at line 10 of file mini_hexagon_dma.h.

## ◆ uint32

typedef uint32_t uint32

Definition at line 11 of file mini_hexagon_dma.h.

## ◆ int32

typedef int32_t int32

Definition at line 12 of file mini_hexagon_dma.h.

## ◆ addr_t

typedef unsigned long addr_t

Definition at line 13 of file mini_hexagon_dma.h.

## ◆ qurt_size_t

typedef unsigned int qurt_size_t

Definition at line 15 of file mini_hexagon_dma.h.

## ◆ qurt_mem_pool_t

typedef unsigned int qurt_mem_pool_t

Definition at line 16 of file mini_hexagon_dma.h.

## ◆ t_stDmaWrapperDmaStats

typedef void* t_stDmaWrapperDmaStats

DMA status Currently not use, for future development.

Definition at line 61 of file mini_hexagon_dma.h.

## ◆ eDmaWrapper_TransationType

typedef HALIDE_HEXAGON_ENUM eDmaWrapper_TransationType

Initial value:
{
eDmaWrapper_DdrToL2,
eDmaWrapper_L2ToDdr,
} t_eDmaWrapper_TransationType

Transfer type.

Definition at line 66 of file mini_hexagon_dma.h.

## ◆ t_StDmaWrapper_Roi

typedef struct stDmaWrapper_Roi t_StDmaWrapper_Roi

Roi Properties.

## ◆ t_StDmaWrapper_FrameProp

typedef struct stDmaWrapper_FrameProp t_StDmaWrapper_FrameProp

Frame Properties.

## ◆ t_StDmaWrapper_RoiAlignInfo

typedef struct stDmaWrapper_RoiAlignInfo t_StDmaWrapper_RoiAlignInfo

Roi alignment.

## ◆ t_StDmaWrapper_DmaTransferSetup

typedef struct stDmaWrapper_DmaTransferSetup t_StDmaWrapper_DmaTransferSetup

DmaTransferSetup Properties.

## ◆ t_DmaWrapper_DmaEngineHandle

typedef void* t_DmaWrapper_DmaEngineHandle

Handle for wrapper DMA engine.

Definition at line 168 of file mini_hexagon_dma.h.

## Function Documentation

## ◆ HAP_cache_lock()

void * HAP_cache_lock | ( | unsigned int | size,
|  | void ** | paddr_ptr
| ) |  |

Abstraction for allocation of memory in cache and lock.

API for Cache Allocation

Returns
  NULL or Memory

## ◆ HAP_cache_unlock()

int HAP_cache_unlock | ( | void * | vaddr_ptr | ) |

Abstraction for deallocation of memory and unlock cache.

API for Free

Returns
  void

## ◆ hDmaWrapper_AllocDma()

t_DmaWrapper_DmaEngineHandle hDmaWrapper_AllocDma | ( | void |  | ) |

Allocates a DMA Engine to be used by using the default wait type (polling).

Allocates a DMA Engine to be used

Returns
  Success: Engine's DMA Handle
  Failure: NULL

## ◆ nDmaWrapper_FreeDma()

int32 nDmaWrapper_FreeDma | ( | t_DmaWrapper_DmaEngineHandle | hDmaHandle | ) |

Frees a DMA Engine that was previously allocated by AllocDma().

Frees a DMA Engine

Parameters

  [in] | hDmaHandle | - Engine's DMA Handle

Returns
  Success: OK
  Failure: ERR

## ◆ nDmaWrapper_Move()

int32 nDmaWrapper_Move | ( | t_DmaWrapper_DmaEngineHandle | hDmaHandle | ) |

Starts a transfer on the provided DMA engine.

The transfer is based on descriptors constructed in earlier nDmaWrapper_Prepare() and nDmaWrapper_Update() calls.

Starts a transfer request on the DMA engine

Parameters

  [in] | hDmaHandle | - Engine's DMA Handle

Returns
  Success: OK
  Failure: ERR

## ◆ nDmaWrapper_Wait()

int32 nDmaWrapper_Wait | ( | t_DmaWrapper_DmaEngineHandle | hDmaHandle | ) |

Blocks until all outstanding transfers on the DMA are complete.

The wait type is based on the type specified when allocating the engine.

Waits for all outstanding transfers on the DMA to complete

Parameters

  [in] | hDmaHandle | - Engine's DMA Handle

Returns
  Success: OK
  Failure: ERR

## ◆ nDmaWrapper_FinishFrame()

int32 nDmaWrapper_FinishFrame | ( | t_DmaWrapper_DmaEngineHandle | hDmaHandle | ) |

This call flushes the DMA buffers.

Blocks until the flush of the DMA is complete.

Cleans up all transfers and flushes DMA buffers

Parameters

  [in] | hDmaHandle | - Engine's DMA Handle

Returns
  Success: OK
  Failure: ERR

## ◆ nDmaWrapper_GetRecommendedWalkSize()

int32 nDmaWrapper_GetRecommendedWalkSize | ( | t_eDmaFmt | eFmtId,
|  | bool | bIsUbwc,
|  | t_StDmaWrapper_RoiAlignInfo * | pStWalkSize
| ) |  |

Get the recommended walk ROI width and height that should be used if walking the entire frame.

The ROI returned is always in terms of frame dimensions. This function is different from nDmaWrapper_GetRecommendedRoi() as coordinates are not used.

Get the recommended walk ROI width and height

Parameters

  [in] | eFmtId | - Format ID
  [in] | bIsUbwc | - Is the format UBWC (TRUE/FALSE)
  [in,out] | pStWalkSize | - Initial walk size, will be overwritten with the recommended walk size to align with DMA requirements

Returns
  Success: OK
  Failure: ERR

## ◆ nDmaWrapper_GetDescbuffsize()

int32 nDmaWrapper_GetDescbuffsize | ( | t_eDmaFmt * | aeFmtId,
|  | uint16 | nsize
| ) |  |

Calculates the HW descriptor buffer size based on the formats that will be used with the engine.

Get the HW descriptor buffer size per DMA engine

Parameters

  [in] | aeFmtId | - Array of format IDs, such as eDmaFmt_NV12, eDmaFmt_NV12_Y, eDmaFmt_NV12_UV etc..
  [in] | nsize | - Number of format IDs provided

Returns
  Descriptor buffer size in bytes

## ◆ nDmaWrapper_GetRecommendedIntermBufStride()

int32 nDmaWrapper_GetRecommendedIntermBufStride | ( | t_eDmaFmt | eFmtId,
|  | t_StDmaWrapper_RoiAlignInfo * | pStRoiSize,
|  | bool | bIsUbwc
| ) |  |

Get the recommended (minimum) intermediate buffer stride for the L2 Cache that is used transfer data from/to DDR.

The stride is greater than or equal to the width and must be a multiple of 256.

Get the recommended intermediate buffer stride.

Parameters

  [in] | eFmtId | - Format ID
  [in] | pStRoiSize | - The ROI that will be used (should be aligned with the DMA requirements for the format)
  [in] | bIsUbwc | - Is the format UBWC (TRUE/FALSE)

Returns
  Success: The intermediate buffer stride in pixels
  Failure: ERR

## ◆ nDmaWrapper_GetRecommendedIntermBufSize()

int32 nDmaWrapper_GetRecommendedIntermBufSize | ( | t_eDmaFmt | eFmtId,
|  | bool | bUse16BitPaddingInL2,
|  | t_StDmaWrapper_RoiAlignInfo * | pStRoiSize,
|  | bool | bIsUbwc,
|  | uint16 | u16IntermBufStride
| ) |  |

Get the recommended intermediate buffer size for the L2 cache that is used to transfer data to/from DDR.

Get the recommended intermediate buffer size

Parameters

  [in] | eFmtId | - Format ID
  [in] | bUse16BitPaddingInL2 | - Is padding to 16 bits done in the L2 (TRUE/FALSE)
  [in] | pStRoiSize | - The ROI that will be used (should be aligned with DMA requirements for the format). The Chroma ROI must follow the standing convention that the provided width and height must be specified in terms of the Luma plane also such that when the width is divided by 2 it specifies the number of interleaved Chroma pixels.
  [in] | bIsUbwc | - Is the format UBWC (TRUE/FALSE), note that this should be set to TRUE if either the DDR input or output will be UBWC
  [in] | u16IntermBufStride | - The stride (in pixels) to use, the minimum stride may be obtained by calling nDmaWrapper_GetRecommendedIntermBufStride

Returns
  Success: The intermediate buffer size in bytes
  Failure: ERR

## ◆ nDmaWrapper_DmaTransferSetup()

int32 nDmaWrapper_DmaTransferSetup | ( | t_DmaWrapper_DmaEngineHandle | hDmaHandle,
|  | t_StDmaWrapper_DmaTransferSetup * | stpDmaTransferParm
| ) |  |

Setup Dma transfer parameters required to be ready to make DMA transfer.

call this API multiple to create a descriptor link list

Dma transfer parameters per HW descriptor

Parameters

  [in] | hDmaHandle | - Wrapper's DMA Handle. Represents t_StDmaWrapper_DmaEngine.
  [in] | stpDmaTransferParm | - Dma Transfer parameters. Each element describes complete Frame/ROI details for this Dma transfer

Returns
  Success: OK Failure: ERR

## ◆ nDmaWrapper_PowerVoting()

int32 nDmaWrapper_PowerVoting | ( | uint32 | cornercase | ) |

DMA power voting based on Cornercase.

DMA power voting based on Cornercase

Parameters

  [in] | cornercase | #define PW_MIN_SVS 0 #define PW_SVS2 1 #define PW_SVS 2 #define PW_SVS_L1 3 #define PW_NORMAL 4 #define PW_NORMAL_L1 5 #define PW_TURBO 6

Returns
  Success: OK
  Failure: ERR

## Variable Documentation

## ◆ HALIDE_HEXAGON_ENUM

typedef HALIDE_HEXAGON_ENUM {QURT_EOK = 0}

Format IDs.

Definition at line 23 of file mini_hexagon_dma.h.