HPM SDK
HPMicro Software Development Kit
PDMA driver APIs

PDMA driver APIs. More...

Data Structures

struct  pdma_plane_config
 PDMA plane config. More...
 
struct  pdma_output_config
 PDMA output config. More...
 
struct  pdma_config
 PDMA config. More...
 
struct  pdma_plane_info
 PDMA plane info. More...
 
struct  pdma_blit_option
 

Macros

#define PDMA_MAKE_SCALE_SET(integer, fractional)    (((integer) & 0x3) << 12 | ((fractional) & 0xFFF))
 PDMA make scale value. More...
 

Typedefs

typedef enum pdma_plane pdma_plane_t
 PDMA plane. More...
 
typedef enum pdma_flip pdma_flip_t
 PDMA flip. More...
 
typedef enum pdma_rotate pdma_rotate_t
 PDMA rotate. More...
 
typedef enum pdma_decimation pdma_decimation_t
 PDMA decimation. More...
 
typedef enum pdma_blocksize pdma_blocksize_t
 PDMA block size. More...
 
typedef struct pdma_plane_config pdma_plane_config_t
 PDMA plane config. More...
 
typedef struct pdma_output_config pdma_output_config_t
 PDMA output config. More...
 
typedef struct pdma_config pdma_config_t
 PDMA config. More...
 
typedef struct pdma_plane_info pdma_plane_info_t
 PDMA plane info. More...
 
typedef struct pdma_blit_option pdma_blit_option_t
 

Enumerations

enum  { status_pdma_done = status_success , status_pdma_error = ((uint32_t)( status_group_pdma )*1000U + (uint32_t)( 1 )) , status_pdma_busy = ((uint32_t)( status_group_pdma )*1000U + (uint32_t)( 2 )) , status_pdma_idle = ((uint32_t)( status_group_pdma )*1000U + (uint32_t)( 3 )) }
 PDMA status. More...
 
enum  pdma_plane { pdma_plane_src = 0 , pdma_plane_dst = 1 , pdma_plane_both , pdma_plane_none }
 PDMA plane. More...
 
enum  pdma_flip { pdma_flip_none = 0 , pdma_flip_horizontal = 1 << 0 , pdma_flip_vertical = 1 << 1 , pdma_flip_both = pdma_flip_horizontal | pdma_flip_vertical }
 PDMA flip. More...
 
enum  pdma_rotate { pdma_rotate_0_degree = 0 , pdma_rotate_90_degree = 1 , pdma_rotate_180_degree = 2 , pdma_rotate_270_degree = 3 }
 PDMA rotate. More...
 
enum  pdma_decimation { pdma_decimation_by_1 = 0 , pdma_decimation_by_2 = 1 , pdma_decimation_by_4 = 2 , pdma_decimation_by_8 = 3 }
 PDMA decimation. More...
 
enum  pdma_blocksize { pdma_blocksize_16x16 , pdma_blocksize_8x8 }
 PDMA block size. More...
 

Functions

void pdma_get_default_config (PDMA_Type *ptr, pdma_config_t *config, display_pixel_format_t pixel_format)
 Get default configuration according to input pixel format. More...
 
void pdma_get_default_plane_config (PDMA_Type *ptr, pdma_plane_config_t *config, display_pixel_format_t pixel_format)
 Get default plane configuration according input pixel format. More...
 
void pdma_get_default_yuv2rgb_coef_config (PDMA_Type *ptr, display_yuv2rgb_coef_t *yuv2rgb_coef, display_pixel_format_t source_format)
 Get default YUV2RGB coefficient configuration according to input pixel format. More...
 
void pdma_get_default_output_config (PDMA_Type *ptr, pdma_output_config_t *config, display_pixel_format_t pixel_format)
 Get default output configuration. More...
 
void pdma_enable_irq (PDMA_Type *ptr, uint32_t mask, bool enable)
 PDMA enable/disable irq. More...
 
void pdma_config_output (PDMA_Type *ptr, pdma_output_config_t *config)
 PDMA config output. More...
 
void pdma_config_planes (PDMA_Type *ptr, void *plane_src_config, void *plane_dst_config, void *yuv2rgb_coef)
 Configure PDMA planes. More...
 
void pdma_init (PDMA_Type *ptr, pdma_config_t *config)
 PDMA initialization. More...
 
hpm_stat_t pdma_check_status (PDMA_Type *ptr, uint32_t *status)
 PDMA check status. More...
 
hpm_stat_t pdma_fill_color (PDMA_Type *ptr, uint32_t dst, uint32_t dst_width, uint32_t width, uint32_t height, uint32_t color, uint8_t alpha, display_pixel_format_t format, bool wait, uint32_t *status)
 PDMA fill color. More...
 
hpm_stat_t pdma_flip_rotate (PDMA_Type *ptr, uint32_t dst, uint32_t dst_width, uint32_t src, uint32_t src_width, uint32_t x, uint32_t y, uint32_t width, uint32_t height, pdma_flip_t flip, pdma_rotate_t rotate, uint8_t alpha, display_pixel_format_t format, bool wait, uint32_t *status)
 PDMA flip rotate plane. More...
 
hpm_stat_t pdma_blit (PDMA_Type *ptr, uint32_t dst, uint32_t dst_width, uint32_t src, uint32_t src_width, uint32_t x, uint32_t y, uint32_t width, uint32_t height, uint8_t alpha, display_pixel_format_t format, bool wait, uint32_t *status)
 PDMA blit plane. More...
 
hpm_stat_t pdma_scale (PDMA_Type *ptr, uint32_t dst, uint32_t dst_width, uint32_t src, uint32_t src_width, uint32_t x, uint32_t y, uint32_t width, uint32_t height, uint32_t target_width, uint32_t target_height, uint8_t alpha, display_pixel_format_t format, bool wait, uint32_t *status)
 PDMA scale plane. More...
 
void pdma_get_default_blit_option (pdma_blit_option_t *op)
 PDMA get default blit option. More...
 
hpm_stat_t pdma_blit_ex (PDMA_Type *ptr, display_buf_t *dst, display_buf_t *src, pdma_blit_option_t *op, bool wait, uint32_t *status)
 PDMA blit plane by option. More...
 
void pdma_set_block_size (PDMA_Type *ptr, pdma_blocksize_t size)
 PDMA set block size. More...
 
void pdma_stop (PDMA_Type *ptr)
 PDMA stop. More...
 
static uint32_t pdma_get_status (PDMA_Type *ptr)
 PDMA stop. More...
 
static void pdma_start (PDMA_Type *ptr)
 PDMA start. More...
 
static void pdma_software_reset (PDMA_Type *ptr)
 PDMA software reset. More...
 
static void pdma_set_plane_colorkey (PDMA_Type *ptr, uint8_t plane_index, uint32_t key_high, uint32_t key_low)
 PDMA set plane color key limits. More...
 

Detailed Description

PDMA driver APIs.

Macro Definition Documentation

◆ PDMA_MAKE_SCALE_SET

#define PDMA_MAKE_SCALE_SET (   integer,
  fractional 
)     (((integer) & 0x3) << 12 | ((fractional) & 0xFFF))

#include <drivers/inc/hpm_pdma_drv.h>

PDMA make scale value.

Typedef Documentation

◆ pdma_blit_option_t

◆ pdma_blocksize_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA block size.

◆ pdma_config_t

typedef struct pdma_config pdma_config_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA config.

◆ pdma_decimation_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA decimation.

◆ pdma_flip_t

typedef enum pdma_flip pdma_flip_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA flip.

◆ pdma_output_config_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA output config.

◆ pdma_plane_config_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA plane config.

◆ pdma_plane_info_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA plane info.

◆ pdma_plane_t

typedef enum pdma_plane pdma_plane_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA plane.

◆ pdma_rotate_t

typedef enum pdma_rotate pdma_rotate_t

#include <drivers/inc/hpm_pdma_drv.h>

PDMA rotate.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_pdma_drv.h>

PDMA status.

Enumerator
status_pdma_done 
status_pdma_error 
status_pdma_busy 
status_pdma_idle 

◆ pdma_blocksize

#include <drivers/inc/hpm_pdma_drv.h>

PDMA block size.

Enumerator
pdma_blocksize_16x16 
pdma_blocksize_8x8 

◆ pdma_decimation

#include <drivers/inc/hpm_pdma_drv.h>

PDMA decimation.

Enumerator
pdma_decimation_by_1 
pdma_decimation_by_2 
pdma_decimation_by_4 
pdma_decimation_by_8 

◆ pdma_flip

enum pdma_flip

#include <drivers/inc/hpm_pdma_drv.h>

PDMA flip.

Enumerator
pdma_flip_none 
pdma_flip_horizontal 
pdma_flip_vertical 
pdma_flip_both 

◆ pdma_plane

enum pdma_plane

#include <drivers/inc/hpm_pdma_drv.h>

PDMA plane.

Enumerator
pdma_plane_src 
pdma_plane_dst 
pdma_plane_both 
pdma_plane_none 

◆ pdma_rotate

#include <drivers/inc/hpm_pdma_drv.h>

PDMA rotate.

Enumerator
pdma_rotate_0_degree 
pdma_rotate_90_degree 
pdma_rotate_180_degree 
pdma_rotate_270_degree 

Function Documentation

◆ pdma_blit()

hpm_stat_t pdma_blit ( PDMA_Type ptr,
uint32_t  dst,
uint32_t  dst_width,
uint32_t  src,
uint32_t  src_width,
uint32_t  x,
uint32_t  y,
uint32_t  width,
uint32_t  height,
uint8_t  alpha,
display_pixel_format_t  format,
bool  wait,
uint32_t *  status 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA blit plane.

Parameters
[in]ptrPDMA base address
[in]dsttarget buff address
[in]dst_widthtarget buff pixel width
[in]srcsource buff address
[in]src_widthsource buff pixel width
[in]xx coordinate n buffer
[in]yy coordinate n buffer
[in]widthoutput image width
[in]heightoutput image height
[in]alphaalpha value
[in]formatdisplay_pixel_format_t
[in]waitwait for execution to complete
[out]statuspdma status
Return values
hpm_stat_tstatus_success if flip and rotate plane without any error

◆ pdma_blit_ex()

hpm_stat_t pdma_blit_ex ( PDMA_Type ptr,
display_buf_t dst,
display_buf_t src,
pdma_blit_option_t op,
bool  wait,
uint32_t *  status 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA blit plane by option.

Parameters
ptrPDMA base address
dsttarget buff address
srcsource buff address
opoption of blit
waitwait for execution to complete
statuspdma status
Return values
hpm_stat_tstatus_success if flip and rotate plane without any error

◆ pdma_check_status()

hpm_stat_t pdma_check_status ( PDMA_Type ptr,
uint32_t *  status 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA check status.

Parameters
[in]ptrPDMA base address
[out]statuspdma status

◆ pdma_config_output()

void pdma_config_output ( PDMA_Type ptr,
pdma_output_config_t config 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA config output.

Parameters
[in]ptrPDMA base address
[in]configpdma_output_config_t

◆ pdma_config_planes()

void pdma_config_planes ( PDMA_Type ptr,
void *  plane_src_config,
void *  plane_dst_config,
void *  yuv2rgb_coef 
)

#include <drivers/inc/hpm_pdma_drv.h>

Configure PDMA planes.

Note: The plane_src and plane_dst share one YUV2RGB_COEF, so not support convert one plane YUV422 format and another plane YCbCr422 format at same time

Parameters
[in]ptrPDMA base address
[in]plane_src_configPointer to plane_src configuration structure
[in]plane_dst_configPointer to plan_dst configuration structure
[in]yuv2rgb_coefPointer to yuv2rgb_coef configuration structure

◆ pdma_enable_irq()

void pdma_enable_irq ( PDMA_Type ptr,
uint32_t  mask,
bool  enable 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA enable/disable irq.

Parameters
[in]ptrPDMA base address
[in]maskirq mask
[in]enable:
  • true: enable
  • false: disable

◆ pdma_fill_color()

hpm_stat_t pdma_fill_color ( PDMA_Type ptr,
uint32_t  dst,
uint32_t  dst_width,
uint32_t  width,
uint32_t  height,
uint32_t  color,
uint8_t  alpha,
display_pixel_format_t  format,
bool  wait,
uint32_t *  status 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA fill color.

Parameters
[in]ptrPDMA base address
[in]dsttarget buff address
[in]dst_widthtarget buff pixel width
[in]widthoutput image width
[in]heightoutput image height
[in]colorcolor value
[in]alphaalpha value
[in]formatdisplay_pixel_format_t
[in]waitwait for execution to complete
[out]statuspdma status
Return values
hpm_stat_tstatus_success if flip and rotate plane without any error

◆ pdma_flip_rotate()

hpm_stat_t pdma_flip_rotate ( PDMA_Type ptr,
uint32_t  dst,
uint32_t  dst_width,
uint32_t  src,
uint32_t  src_width,
uint32_t  x,
uint32_t  y,
uint32_t  width,
uint32_t  height,
pdma_flip_t  flip,
pdma_rotate_t  rotate,
uint8_t  alpha,
display_pixel_format_t  format,
bool  wait,
uint32_t *  status 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA flip rotate plane.

Parameters
[in]ptrPDMA base address
[in]dsttarget buff address
[in]dst_widthtarget buff pixel width
[in]srcsource buff address
[in]src_widthsource buff pixel width
[in]xx coordinate n buffer
[in]yy coordinate n buffer
[in]widthoutput image width
[in]heightoutput image height
[in]flippdma_flip_t
[in]rotatepdma_rotate_t
[in]alphaalpha value
[in]formatdisplay_pixel_format_t
[in]waitwait for execution to complete
[out]statuspdma status
Return values
hpm_stat_tstatus_success if flip and rotate plane without any error

◆ pdma_get_default_blit_option()

void pdma_get_default_blit_option ( pdma_blit_option_t op)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA get default blit option.

Parameters
opoption of blit

◆ pdma_get_default_config()

void pdma_get_default_config ( PDMA_Type ptr,
pdma_config_t config,
display_pixel_format_t  pixel_format 
)

#include <drivers/inc/hpm_pdma_drv.h>

Get default configuration according to input pixel format.

Parameters
[in]ptrPDMA base address
[out]configpdma_config_t
[in]pixel_formatdisplay_pixel_format_t

◆ pdma_get_default_output_config()

void pdma_get_default_output_config ( PDMA_Type ptr,
pdma_output_config_t config,
display_pixel_format_t  pixel_format 
)

#include <drivers/inc/hpm_pdma_drv.h>

Get default output configuration.

Parameters
[in]ptrPDMA base address
[out]configpdma_output_config_t
[in]pixel_formatoutput data pixel format

◆ pdma_get_default_plane_config()

void pdma_get_default_plane_config ( PDMA_Type ptr,
pdma_plane_config_t config,
display_pixel_format_t  pixel_format 
)

#include <drivers/inc/hpm_pdma_drv.h>

Get default plane configuration according input pixel format.

Parameters
[in]ptrPDMA base address
[out]configpdma_plane_config_t
[in]pixel_formatdisplay_pixel_format_t

◆ pdma_get_default_yuv2rgb_coef_config()

void pdma_get_default_yuv2rgb_coef_config ( PDMA_Type ptr,
display_yuv2rgb_coef_t yuv2rgb_coef,
display_pixel_format_t  source_format 
)

#include <drivers/inc/hpm_pdma_drv.h>

Get default YUV2RGB coefficient configuration according to input pixel format.

Note
The two plane share one YUV2RGB_COEF, so not support convert one plane YUV422 format and another plane YCbCr422 format at same time
Parameters
[in]ptrPDMA base address
[out]yuv2rgb_coefdisplay_yuv2rgb_coef_t
[in]source_formatthe YUV2RGB input source pixel format

◆ pdma_get_status()

static uint32_t pdma_get_status ( PDMA_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdma_drv.h>

PDMA stop.

Parameters
[in]ptrPDMA base address
Return values
STATregister value

◆ pdma_init()

void pdma_init ( PDMA_Type ptr,
pdma_config_t config 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA initialization.

Parameters
[in]ptrPDMA base address
[in]configpdma_output_config_t

◆ pdma_scale()

hpm_stat_t pdma_scale ( PDMA_Type ptr,
uint32_t  dst,
uint32_t  dst_width,
uint32_t  src,
uint32_t  src_width,
uint32_t  x,
uint32_t  y,
uint32_t  width,
uint32_t  height,
uint32_t  target_width,
uint32_t  target_height,
uint8_t  alpha,
display_pixel_format_t  format,
bool  wait,
uint32_t *  status 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA scale plane.

Parameters
[in]ptrPDMA base address
[in]dsttarget buff address
[in]dst_widthtarget buff pixel width
[in]srcsource buff address
[in]src_widthsource buff pixel width
[in]xx coordinate n buffer
[in]yy coordinate n buffer
[in]widthinput image width
[in]heightinput image height
[in]target_widthoutput image width
[in]target_heightoutput image height
[in]alphaalpha value
[in]formatdisplay_pixel_format_t
[in]waitwait for execution to complete
[out]statuspdma status
Return values
hpm_stat_tstatus_success if flip and rotate plane without any error

◆ pdma_set_block_size()

void pdma_set_block_size ( PDMA_Type ptr,
pdma_blocksize_t  size 
)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA set block size.

Parameters
[in]ptrPDMA base address
[in]sizepdma_blocksize_t

◆ pdma_set_plane_colorkey()

static void pdma_set_plane_colorkey ( PDMA_Type ptr,
uint8_t  plane_index,
uint32_t  key_high,
uint32_t  key_low 
)
inlinestatic

#include <drivers/inc/hpm_pdma_drv.h>

PDMA set plane color key limits.

Parameters
[in]ptrPDMA base address
[in]plane_indexplane index
[in]key_highcolor key high limits
[in]key_lowcolor key low limits

◆ pdma_software_reset()

static void pdma_software_reset ( PDMA_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdma_drv.h>

PDMA software reset.

Parameters
[in]ptrPDMA base address

◆ pdma_start()

static void pdma_start ( PDMA_Type ptr)
inlinestatic

#include <drivers/inc/hpm_pdma_drv.h>

PDMA start.

Parameters
[in]ptrPDMA base address

◆ pdma_stop()

void pdma_stop ( PDMA_Type ptr)

#include <drivers/inc/hpm_pdma_drv.h>

PDMA stop.

Parameters
[in]ptrPDMA base address