104 lines
4.0 KiB
C
Executable File
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
|