10 #include "hpm_soc_feature.h"
12 #include "hpm_pdma_regs.h"
82 #define PDMA_MAKE_SCALE_SET(integer, fractional) \
83 (((integer) & 0x3) << 12 | ((fractional) & 0xFFF))
276 uint32_t width, uint32_t height,
277 uint32_t color, uint8_t alpha,
279 bool wait, uint32_t *status);
302 uint32_t src, uint32_t src_width, uint32_t x, uint32_t y,
303 uint32_t width, uint32_t height,
306 bool wait, uint32_t *status);
327 uint32_t dst, uint32_t dst_width,
328 uint32_t src, uint32_t src_width,
329 uint32_t x, uint32_t y, uint32_t width, uint32_t height,
332 bool wait, uint32_t *status);
355 uint32_t dst, uint32_t dst_width,
356 uint32_t src, uint32_t src_width,
357 uint32_t x, uint32_t y, uint32_t width, uint32_t height,
358 uint32_t target_width, uint32_t target_height,
361 bool wait, uint32_t *status);
384 bool wait, uint32_t *status);
421 __asm
volatile (
"" : :
"r" (ptr->
CTRL));
433 __asm
volatile (
"" : :
"r" (ptr->
CTRL));
#define PDMA_SOC_PS_MAX_COUNT
Definition: hpm_soc_feature.h:66
#define PDMA_CTRL_PDMA_SFTRST_MASK
Definition: hpm_pdma_regs.h:162
#define PDMA_PS_CLRKEY_LOW_LIMIT_SET(x)
Definition: hpm_pdma_regs.h:656
#define PDMA_CTRL_PDMA_EN_MASK
Definition: hpm_pdma_regs.h:172
#define PDMA_PS_CLRKEY_HIGH_LIMIT_SET(x)
Definition: hpm_pdma_regs.h:667
enum display_pixel_format display_pixel_format_t
display pixel format
enum display_alphablend_mode display_alphablend_mode_t
display alphablend mode
enum display_byteorder display_byteorder_t
display data byte order
uint32_t hpm_stat_t
Definition: hpm_common.h:123
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:132
@ status_success
Definition: hpm_common.h:177
@ status_group_pdma
Definition: hpm_common.h:151
static void size
Definition: hpm_math.h:6899
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.
Definition: hpm_pdma_drv.h:444
pdma_plane
PDMA plane.
Definition: hpm_pdma_drv.h:34
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.
Definition: hpm_pdma_drv.c:442
void pdma_enable_irq(PDMA_Type *ptr, uint32_t mask, bool enable)
PDMA enable/disable irq.
Definition: hpm_pdma_drv.c:48
void pdma_get_default_output_config(PDMA_Type *ptr, pdma_output_config_t *config, display_pixel_format_t pixel_format)
Get default output configuration.
Definition: hpm_pdma_drv.c:151
struct pdma_output_config pdma_output_config_t
PDMA output config.
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.
Definition: hpm_pdma_drv.c:75
void pdma_config_planes(PDMA_Type *ptr, void *plane_src_config, void *plane_dst_config, void *yuv2rgb_coef)
Configure PDMA planes.
Definition: hpm_pdma_drv.c:271
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.
Definition: hpm_pdma_drv.c:594
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.
Definition: hpm_pdma_drv.c:698
struct pdma_config pdma_config_t
PDMA config.
hpm_stat_t pdma_check_status(PDMA_Type *ptr, uint32_t *status)
PDMA check status.
Definition: hpm_pdma_drv.c:420
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.
Definition: hpm_pdma_drv.c:509
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.
Definition: hpm_pdma_drv.c:115
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.
Definition: hpm_pdma_drv.c:58
enum pdma_flip pdma_flip_t
PDMA flip.
struct pdma_plane_config pdma_plane_config_t
PDMA plane config.
void pdma_init(PDMA_Type *ptr, pdma_config_t *config)
PDMA initialization.
Definition: hpm_pdma_drv.c:228
pdma_rotate
PDMA rotate.
Definition: hpm_pdma_drv.h:54
struct pdma_blit_option pdma_blit_option_t
pdma_decimation
PDMA decimation.
Definition: hpm_pdma_drv.h:64
static void pdma_software_reset(PDMA_Type *ptr)
PDMA software reset.
Definition: hpm_pdma_drv.h:429
pdma_flip
PDMA flip.
Definition: hpm_pdma_drv.h:44
enum pdma_decimation pdma_decimation_t
PDMA decimation.
struct pdma_plane_info pdma_plane_info_t
PDMA plane info.
void pdma_stop(PDMA_Type *ptr)
PDMA stop.
Definition: hpm_pdma_drv.c:221
enum pdma_blocksize pdma_blocksize_t
PDMA block size.
void pdma_set_block_size(PDMA_Type *ptr, pdma_blocksize_t size)
PDMA set block size.
Definition: hpm_pdma_drv.c:15
pdma_blocksize
PDMA block size.
Definition: hpm_pdma_drv.h:74
enum pdma_rotate pdma_rotate_t
PDMA rotate.
static void pdma_start(PDMA_Type *ptr)
PDMA start.
Definition: hpm_pdma_drv.h:418
void pdma_config_output(PDMA_Type *ptr, pdma_output_config_t *config)
PDMA config output.
Definition: hpm_pdma_drv.c:368
void pdma_get_default_blit_option(pdma_blit_option_t *op)
PDMA get default blit option.
Definition: hpm_pdma_drv.c:819
enum pdma_plane pdma_plane_t
PDMA plane.
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.
Definition: hpm_pdma_drv.c:830
static uint32_t pdma_get_status(PDMA_Type *ptr)
PDMA stop.
Definition: hpm_pdma_drv.h:408
@ pdma_plane_both
Definition: hpm_pdma_drv.h:37
@ pdma_plane_src
Definition: hpm_pdma_drv.h:35
@ pdma_plane_none
Definition: hpm_pdma_drv.h:38
@ pdma_plane_dst
Definition: hpm_pdma_drv.h:36
@ status_pdma_busy
Definition: hpm_pdma_drv.h:27
@ status_pdma_idle
Definition: hpm_pdma_drv.h:28
@ status_pdma_done
Definition: hpm_pdma_drv.h:25
@ status_pdma_error
Definition: hpm_pdma_drv.h:26
@ pdma_rotate_270_degree
Definition: hpm_pdma_drv.h:58
@ pdma_rotate_90_degree
Definition: hpm_pdma_drv.h:56
@ pdma_rotate_180_degree
Definition: hpm_pdma_drv.h:57
@ pdma_rotate_0_degree
Definition: hpm_pdma_drv.h:55
@ pdma_decimation_by_8
Definition: hpm_pdma_drv.h:68
@ pdma_decimation_by_4
Definition: hpm_pdma_drv.h:67
@ pdma_decimation_by_1
Definition: hpm_pdma_drv.h:65
@ pdma_decimation_by_2
Definition: hpm_pdma_drv.h:66
@ pdma_flip_horizontal
Definition: hpm_pdma_drv.h:46
@ pdma_flip_none
Definition: hpm_pdma_drv.h:45
@ pdma_flip_vertical
Definition: hpm_pdma_drv.h:47
@ pdma_flip_both
Definition: hpm_pdma_drv.h:48
@ pdma_blocksize_8x8
Definition: hpm_pdma_drv.h:76
@ pdma_blocksize_16x16
Definition: hpm_pdma_drv.h:75
Definition: hpm_pdma_regs.h:12
__RW uint32_t CTRL
Definition: hpm_pdma_regs.h:13
__RW uint32_t CLRKEY_HIGH
Definition: hpm_pdma_regs.h:34
__RW uint32_t STAT
Definition: hpm_pdma_regs.h:14
__RW uint32_t CLRKEY_LOW
Definition: hpm_pdma_regs.h:33
struct PDMA_Type::@520 PS[2]
display data alphablend option
Definition: hpm_display_common.h:102
display yuv to rgb format conversion coefficient
Definition: hpm_display_common.h:113
Definition: hpm_display_common.h:162
display rgb to yuv format conversion config
Definition: hpm_display_common.h:135
Definition: hpm_pdma_drv.h:154
struct pdma_blit_option::@168 translate
pdma_rotate_t rotate
Definition: hpm_pdma_drv.h:161
struct pdma_blit_option::@169 scale
float y
Definition: hpm_pdma_drv.h:164
uint16_t x
Definition: hpm_pdma_drv.h:157
uint16_t y
Definition: hpm_pdma_drv.h:158
pdma_flip_t flip
Definition: hpm_pdma_drv.h:160
float x
Definition: hpm_pdma_drv.h:163
display_alphablend_mode_t blend
Definition: hpm_pdma_drv.h:155
PDMA config.
Definition: hpm_pdma_drv.h:135
pdma_blocksize_t block_size
Definition: hpm_pdma_drv.h:137
display_byteorder_t byteorder
Definition: hpm_pdma_drv.h:136
pdma_plane_t enable_plane
Definition: hpm_pdma_drv.h:138
PDMA output config.
Definition: hpm_pdma_drv.h:116
uint16_t pitch
Definition: hpm_pdma_drv.h:129
uint16_t width
Definition: hpm_pdma_drv.h:124
uint16_t height
Definition: hpm_pdma_drv.h:125
uint16_t x
Definition: hpm_pdma_drv.h:122
display_alphablend_option_t alphablend
Definition: hpm_pdma_drv.h:117
uint16_t y
Definition: hpm_pdma_drv.h:123
display_pixel_format_t pixel_format
Definition: hpm_pdma_drv.h:118
uint32_t buffer
Definition: hpm_pdma_drv.h:120
struct pdma_output_config::@167 plane[PDMA_SOC_PS_MAX_COUNT]
display_rgb2yuv_config_t rgb2yuv_config
Definition: hpm_pdma_drv.h:119
PDMA plane config.
Definition: hpm_pdma_drv.h:88
pdma_flip_t flip
Definition: hpm_pdma_drv.h:95
display_byteorder_t byteorder
Definition: hpm_pdma_drv.h:94
uint16_t y_scale
Definition: hpm_pdma_drv.h:105
uint16_t x_scale
Definition: hpm_pdma_drv.h:104
pdma_decimation_t x_dec
Definition: hpm_pdma_drv.h:97
uint16_t width
Definition: hpm_pdma_drv.h:109
pdma_decimation_t y_dec
Definition: hpm_pdma_drv.h:98
uint32_t colorkey_low
Definition: hpm_pdma_drv.h:103
bool bypass_colorspace_conversion
Definition: hpm_pdma_drv.h:92
uint32_t colorkey_high
Definition: hpm_pdma_drv.h:102
display_pixel_format_t pixel_format
Definition: hpm_pdma_drv.h:99
bool use_background_as_clear
Definition: hpm_pdma_drv.h:90
uint16_t height
Definition: hpm_pdma_drv.h:110
bool swap_byte3_byte1
Definition: hpm_pdma_drv.h:89
uint32_t buffer
Definition: hpm_pdma_drv.h:100
pdma_rotate_t rotate
Definition: hpm_pdma_drv.h:96
uint16_t pitch
Definition: hpm_pdma_drv.h:106
uint32_t background
Definition: hpm_pdma_drv.h:101
bool byte_swap
Definition: hpm_pdma_drv.h:93
uint16_t x_offset
Definition: hpm_pdma_drv.h:107
uint16_t y_offset
Definition: hpm_pdma_drv.h:108
bool ycbcr_mode
Definition: hpm_pdma_drv.h:91
PDMA plane info.
Definition: hpm_pdma_drv.h:144
display_pixel_format_t format
Definition: hpm_pdma_drv.h:150
uint32_t height
Definition: hpm_pdma_drv.h:149
uint32_t x
Definition: hpm_pdma_drv.h:146
uint32_t width
Definition: hpm_pdma_drv.h:148
uint32_t buffer
Definition: hpm_pdma_drv.h:145
uint32_t y
Definition: hpm_pdma_drv.h:147