HPM SDK
HPMicro Software Development Kit
hpm_lcdc_drv.h File Reference
#include "hpm_display_common.h"
#include "hpm_soc_feature.h"
#include "hpm_lcdc_regs.h"

Go to the source code of this file.

Data Structures

struct  lcdc_control
 
struct  lcdc_xsync_config
 
struct  lcdc_config
 
struct  lcdc_layer_config
 

Macros

#define LCDC_TEST_MODE_DISABLE   (0U)
 
#define LCDC_TEST_MODE_BACKGROUND   (1U)
 
#define LCDC_TEST_MODE_COLOR_BAR_COL   (2U)
 
#define LCDC_TEST_MODE_COLOR_BAR_ROW   (3U)
 

Typedefs

typedef enum lcdc_line_pattern lcdc_line_pattern_t
 
typedef enum lcdc_display_mode lcdc_display_mode_t
 
typedef enum lcdc_layer_max_bytes_per_transfer lcdc_layer_max_bytes_per_transfer_t
 
typedef struct lcdc_control lcdc_control_t
 
typedef struct lcdc_xsync_config lcdc_xsync_config_t
 
typedef struct lcdc_config lcdc_config_t
 
typedef struct lcdc_layer_config lcdc_layer_config_t
 

Enumerations

enum  { status_lcdc_no_active_layer_yet = ((uint32_t)( status_group_lcdc )*1000U + (uint32_t)( 1 )) , status_lcdc_layer_not_supported = ((uint32_t)( status_group_lcdc )*1000U + (uint32_t)( 2 )) }
 
enum  lcdc_line_pattern {
  lcdc_line_pattern_rgb = 0 , lcdc_line_pattern_rbg , lcdc_line_pattern_gbr , lcdc_line_pattern_grb ,
  lcdc_line_pattern_brg , lcdc_line_pattern_bgr
}
 
enum  lcdc_display_mode { lcdc_display_mode_normal = 0 , lcdc_display_mode_test_mode_1 , lcdc_display_mode_test_mode_2 , lcdc_display_mode_test_mode_3 }
 
enum  lcdc_layer_max_bytes_per_transfer {
  lcdc_layer_max_bytes_64 = 0 , lcdc_layer_max_bytes_128 , lcdc_layer_max_bytes_256 , lcdc_layer_max_bytes_512 ,
  lcdc_layer_max_bytes_1024
}
 

Functions

static void lcdc_software_reset (LCDC_Type *ptr)
 Layer config. More...
 
static void lcdc_enable_interrupt (LCDC_Type *ptr, uint32_t interrupt_mask)
 Enable interrupt according to the given mask. More...
 
static void lcdc_disable_interrupt (LCDC_Type *ptr, uint32_t interrupt_mask)
 Disable interrupt according to the given mask. More...
 
static void lcdc_clear_status (LCDC_Type *ptr, uint32_t mask)
 Clear specific status according to the given mask. More...
 
static bool lcdc_layer_control_shadow_loaded (LCDC_Type *ptr, uint8_t layer_index)
 Make layer control shadow registers take effect. More...
 
static uint32_t lcdc_get_dma_status (LCDC_Type *ptr)
 Get DMA status. More...
 
static bool lcdc_check_dma_status (LCDC_Type *ptr, uint32_t mask)
 Check DMA status against the given mask. More...
 
static void lcdc_clear_dma_status (LCDC_Type *ptr, uint32_t mask)
 Clear DMA status according to the given mask. More...
 
static uint32_t lcdc_get_status (LCDC_Type *ptr)
 Get status. More...
 
static bool lcdc_check_status (LCDC_Type *ptr, uint32_t mask)
 Check status against the given mask. More...
 
static void lcdc_layer_set_next_buffer (LCDC_Type *ptr, uint32_t layer_index, uint32_t buffer)
 Set next buffer for certain layer. More...
 
static void lcdc_layer_update_background (LCDC_Type *ptr, uint8_t layer_index, display_color_32b_t background)
 Update specific layer background. More...
 
static void lcdc_layer_update_position (LCDC_Type *ptr, uint8_t layer_index, uint16_t x, uint32_t y)
 Update specific layer position. More...
 
static void lcdc_layer_update_dimension (LCDC_Type *ptr, uint8_t layer_index, uint8_t width, uint8_t height)
 Update specific layer dimension. More...
 
static void lcdc_layer_set_region (LCDC_Type *ptr, uint8_t layer_index, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2)
 Update specific layer region. More...
 
static void lcdc_layer_update (LCDC_Type *ptr, uint8_t layer_index)
 Update specific layer configuration. More...
 
static void lcdc_layer_enable (LCDC_Type *ptr, uint32_t layer_index)
 Enable specific layer. More...
 
static void lcdc_layer_disable (LCDC_Type *ptr, uint32_t layer_index)
 Disable specific layer. More...
 
static void lcdc_set_testmode (LCDC_Type *ptr, uint8_t test_mode)
 Set test mode. More...
 
static void lcdc_set_background (LCDC_Type *ptr, display_color_32b_t color)
 Set background. More...
 
static void lcdc_enable_background_in_alpha_blender (LCDC_Type *ptr)
 enable background on alpha blender More...
 
static void lcdc_disable_background_in_alpha_blender (LCDC_Type *ptr)
 disable background on alpha blender More...
 
void lcdc_get_default_layer_config (LCDC_Type *ptr, lcdc_layer_config_t *layer, display_pixel_format_t pixel_format, uint8_t layer_index)
 Get default layer configuration value. More...
 
void lcdc_get_default_config (LCDC_Type *ptr, lcdc_config_t *config)
 Get default configuration value. More...
 
void lcdc_init (LCDC_Type *ptr, lcdc_config_t *config)
 Initialize LCD controller. More...
 
hpm_stat_t lcdc_config_layer (LCDC_Type *ptr, uint8_t layer_index, lcdc_layer_config_t *layer_config, bool enable_layer)
 Configure specific layer. More...
 
void lcdc_turn_on_display (LCDC_Type *ptr)
 Turn on display. More...
 
void lcdc_turn_off_display (LCDC_Type *ptr)
 Turn off display. More...