nt9856x/code/hdal/drivers/k_driver/include/rtos_na51089/display.h
2023-03-28 15:07:53 +08:00

104 lines
4.0 KiB
C
Executable File

/**
@file display.h
@ingroup mISYSDisp
@brief Header file for Display control object
This file is the header file that define the API and data type
for Display control object
@note Nothing.
Copyright Novatek Microelectronics Corp. 2011. All rights reserved.
*/
/** \addtogroup mISYSDisp*/
//@{
#ifndef _DISPLAY_H
#define _DISPLAY_H
#include "dispcomn.h"
#include "displyr.h"
#include "dispctrl.h"
#include "dispdevctrl.h"
#if !(defined __UITRON || defined __ECOS || defined __FREERTOS)
#include <linux/fb.h>
#endif
/**
Display Control Object
The display control object which provides unified interface for display device/engine control.
The user can get the display object by API: disp_get_display_object() first, and then access the display engine through the
display object. The disp_ctrl/disp_lyr_ctrl/dev_ctrl would not set load to activate the configurations, the user must set load
after all the settings is done.
*/
typedef struct {
const DISP_ID disp_id; ///< DISPAY object ID: DISP_1 or DISP_2.
const PDISP_CAP(*get_disp_cap)(void); ///< Display object capabilities.
ER(*open)(void); ///< Open display object.
ER(*close)(void); ///< Close display object.
BOOL (*is_opened)(void); ///< Check if display object is opened or not.
DISPCTRL disp_ctrl; ///< Control interface for common functions of physical display engine.
DISPLYRCTRL disp_lyr_ctrl; ///< Control interface for layer function control of physical display engine.
DISPDEVCTRL dev_ctrl; ///< Display device control such as device open/close/register_access and hook DISPDEV_OBJ.
void (*load)(BOOL b_wait_done); ///< Set Load to activate the display configurations.
void (*wait_frm_end)(BOOL is_block); ///< Wait the display device frame end.
void (*wait_out_dram_done)(void); ///< Wait output dram done
PDISPDEV_OBJ (*dev_callback)(void); ///< Callback for lcd device to register dev obj.
} DISP_OBJ, *PDISP_OBJ;
typedef struct _gamma_t_{
BOOL enable;
UINT8 gamma_r[33];
UINT8 gamma_g[33];
UINT8 gamma_b[33];
} gamma_t;
typedef struct _cc_t_{
BOOL enable;
INT8 sat_ofs;
INT8 int_ofs;
UINT8 ycon;
UINT8 ccon;
} cc_t;
//
// Export Display Object API
//
extern PDISP_OBJ disp_get_display_object(DISP_ID disp_id);
#define disp_getDisplayObject(disp_id) disp_get_display_object(disp_id)
#if defined __FREERTOS
extern int display_read_cfg(gamma_t *gamma_cfg, cc_t *color_control_cfg, unsigned int id);
#else
extern int display_read_cfg(char *file_name, unsigned int id);
#endif
#if !(defined __UITRON || defined __ECOS || defined __FREERTOS)
int display_obj_set_video1_blank(DISP_ID id, unsigned int blank_mode);
int display_obj_set_video2_blank(DISP_ID id, unsigned int blank_mode);
int display_obj_set_osd_blank(DISP_ID id, unsigned int blank_mode);
int display_obj_set_osd_palette(DISP_ID id, unsigned int regno, unsigned int val);
int display_obj_get_video1_buf_addr(DISP_ID id, unsigned long *phys_addr, char __iomem **virt_addr, unsigned int *buffer_len);
int display_obj_get_video2_buf_addr(DISP_ID id, unsigned long *phys_addr, char __iomem **virt_addr, unsigned int *buffer_len);
int display_obj_get_osd_buf_addr(DISP_ID id, unsigned long *phys_addr, char __iomem **virt_addr, unsigned int *buffer_len);
int display_obj_get_video1_param(DISP_ID id, struct fb_var_screeninfo *var, struct fb_fix_screeninfo *fix);
int display_obj_get_video2_param(DISP_ID id, struct fb_var_screeninfo *var, struct fb_fix_screeninfo *fix);
int display_obj_get_osd_param(DISP_ID id, struct fb_var_screeninfo *var, struct fb_fix_screeninfo *fix);
int display_obj_set_osd_addr(DISP_ID id, unsigned int addr, bool load);
int display_obj_get_layer_support(DISP_ID id, DISPLAYER layer);
#define A_ADDR(osd_buf_size, rgb_addr) ALIGN_CEIL_16(rgb_addr + osd_buf_size) //osd_buf_size = osd buf (line offset * height)
#endif
//@}
#endif