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

765 lines
33 KiB
C
Executable File

/**
@file dispdevctrl.h
@ingroup mISYSDisp
@brief Header file for Display Device control
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 _DEVCTRL_H
#define _DEVCTRL_H
#if defined __KERNEL__
#include "comm/sif_api.h"
#include "hdmitx.h"
#elif defined __FREERTOS
#include "comm/sif_api.h"
#include "hdmitx.h"
#else
#include "sif.h"
#include "hdmitx.h"
#include "top.h"
#endif
#include "dispcomn.h"
/**
@name Display Device Control Group
These definitions are used for display control API (DISP_OBJ.dev_ctrl) as the display device control portal.
The display device such as TV_PAL/TV_NTSC/HDMI/panel are controlled by this API.
*/
//@{
/**
Display Device rotation ID definition
This definition is used for the OP Code: "DISPDEV_SET_ROTATE" in the dev_ctrl API to specify
the display device rotation configuration.
*/
typedef enum {
DISPDEV_LCD_ROTATE_NONE, ///< Config panel Register to Set LCD None of rotation.
DISPDEV_LCD_ROTATE_180, ///< Config panel Register to Set LCD rotation 180 degrees.
ENUM_DUMMY4WORD(DISPDEV_LCD_ROTATE)
} DISPDEV_LCD_ROTATE;
/**
Project Releated display device specific control
This stucture is used to store project Releated display device specific control,
such as display backlight / power control.
*/
typedef struct {
ER(*DISPDEVBLCTRL)(UINT32 ui_param); ///< The Callback prototype for the LCD backlight control
ER(*DISPDEVPWRCTRL)(UINT32 ui_param); ///< The Callback prototype for the LCD Power control
ER(*DISPDEVUSERCTRL)(UINT32 ui_param); ///< The Callback prototype for the LCD user control
} DISPDEV_SPECIFIC_CTRL, *PDISPDEV_SPECIFIC_CTRL;
/**
Display Device ID definition
This definition is used for the OP Code: "DISPDEV_OPEN_DEVICE"/"HOOK_DEVICE_OBJECT" in the dev_ctrl API to specify
which of the display device would be controlled.
*/
typedef enum {
DISPDEV_ID_TVNTSC, ///< select display device: TV NTSC
DISPDEV_ID_TVPAL, ///< select display device: TV PAL
DISPDEV_ID_TVHDMI, ///< select display device: TV HDMI
DISPDEV_ID_PANEL, ///< select display device: panel
DISPDEV_ID_MIPIDSI, ///< select display device: MIPI DSI
DISPDEV_ID_MAX,
DISPDEV_ID_NULL, // Default value is none of display device
ENUM_DUMMY4WORD(DISPDEV_ID)
} DISPDEV_ID;
/**
Project Releated display device pre get size before open.
This stucture is used to get display device pre get size before open.
*/
typedef struct {
DISPDEV_ID ui_dev;
UINT32 ui_buf_width;
UINT32 ui_buf_height;
UINT32 ui_win_width;
UINT32 ui_win_height;
} DISPDEV_GET_PRESIZE, *PDISPDEV_GET_PRESIZE;
/**
Display Device Object Structure
This field is the display device object structure which is used to open/close display device
and also provides the interface to access the display device registers.
This structure is used by the DISPLAY Object driver in the driver design. Normal user should not access the
display device by the device object directly.
*/
typedef struct {
ER(*open)(void); ///< Open the display device
ER(*close)(void); ///< Close the display device
ER(*rotate)(DISPDEV_LCD_ROTATE rot); ///< select rotation from the display device
void (*reg_write)(UINT32 ui_ofs, UINT32 ui_val); ///< Display Device register WRITE
UINT32(*reg_read)(UINT32 ui_ofs); ///< Display Device register READ
ER(*get_pre_size)(DISPDEV_GET_PRESIZE *ui_size); ///< Get the display buffer size before open
void (*set_dev_io_ctrl)(FP); ///< Set Display Device IOCTRL API.
DISPDEV_SPECIFIC_CTRL specific_ctrl; ///< Device specific control, such as backlight/power pin control.
} DISPDEV_OBJ, *PDISPDEV_OBJ;
/**
Display Device control operation ID definition
This field is used as the first operand in the dev_ctrl API of the display object to specify
which of the display device control operation would be performed.
*/
typedef enum {
/* SET control group */
DISPDEV_OPEN_DEVICE = DISPCMDBASE_DISPDEV, ///< Open spcified display device.
DISPDEV_CLOSE_DEVICE, ///< Close current display active device.
DISPDEV_HOOK_DEVICE_OBJECT, ///< Hook panel object to display control object.
DISPDEV_HOOK_PANEL_ADJUST, ///< Hook panel adjustment callback when panel opened.
DISPDEV_SET_TVADJUST, ///< Specify the TV parameter with matched external resistance value.
DISPDEV_SET_REG_IF, ///< Set display Device(panel) Register Access Interface.
DISPDEV_REG_WRITE, ///< Write display Device(panel) Register.
DISPDEV_SET_HDMIMODE, ///< Change the HDMI Audio/Video mode.
DISPDEV_SET_ROTATE, ///< Set display Device rotation.
DISPDEV_SET_PANEL_BACKLIGHT, ///< Set the panel's backlight level.
DISPDEV_SET_PANEL_POWER, ///< Set the panel's power level.
DISPDEV_SET_LCDMODE, ///< Change the panel's mode
DISPDEV_SET_POWERDOWN, ///< Set Powerdown
DISPDEV_SET_TVPAR, ///< Set TV's parameter
DISPDEV_SET_OUTPUT_DRAM, ///< Set ide data output to dram(only available in IDE1 with VDO2 disable)
DISPDEV_SET_TVFULL, ///< Set TV full screen
DISPDEV_SET_LOGOMODE, ///< Set LOGO MODE
/* GET control group */
DISPDEV_GET_ACT_DEVICE, ///< Get current active device. (panel/TV/HDMI)
DISPDEV_GET_DISPSIZE, ///< Get display device optimal buffer/window size.
DISPDEV_GET_PANEL_ADJUST, ///< Get the panel adjustment callback.
DISPDEV_GET_TVADJUST, ///< Get the current TV adjustment configurations.
DISPDEV_GET_REG_IF, ///< Get display Device(panel) Register Access Interface.
DISPDEV_REG_READ, ///< Read display Device(panel) Register.
DISPDEV_GET_HDMIMODE, ///< Get the HDMI Audio/Video mode
DISPDEV_GET_PANEL_BACKLIGHT, ///< Get the panel's backlight level.
DISPDEV_GET_PANEL_POWER, ///< Get the panel's power level.
DISPDEV_GET_PREDISPSIZE, ///< Pre Get display device optimal buffer/window size before open device.
DISPDEV_GET_LCDMODE,
DISPDEV_GET_POWERDOWN, ///< Get Powerdown
DISPDEV_GET_TVPAR, ///< Get TV's parameter
DISPDEV_GET_LOGOMODE, ///< Get LOGO MODE
ENUM_DUMMY4WORD(DISPDEV_OP)
} DISPDEV_OP;
/**
TV NTSC/PAL adjustment resistor value
This field specifies the external HW resistor value in the TV output path.
This would change the TV internal parameters. This field is used for the OP code "DISPDEV_SET_TVADJUST" of the dev_ctrl API.
*/
typedef enum {
DISPDEV_TVADJUST_3_6_K, ///< TV use resistor 3.6K as loading
DISPDEV_TVADJUST_3_3_K, ///< TV use resistor 3.3K as loading
DISPDEV_TVADJUST_3_0_K, ///< TV use resistor 3.0K as loading
DISPDEV_TVADJUST_TOTAL,
DISPDEV_TVADJUST_DEFAULT = DISPDEV_TVADJUST_3_3_K, ///< Default optimal resistor value
ENUM_DUMMY4WORD(DISPDEV_TVADJUST)
} DISPDEV_TVADJUST;
/**
LCD Control Interface Selection
This field is used for the OP code "DISPDEV_SET_REG_IF" of the dev_ctrl API to specify the LCD(/panel) control interface.
If the control interface is GPIO, user must also assign the GPIO pins as sif_sen/sif_clk/sif_data according to external HW circuit layout.
*/
typedef enum {
DISPDEV_LCDCTRL_SIF, ///< LCD Control Interface use SIF engine. User must assign SIF channel number "ui_sif_ch".
DISPDEV_LCDCTRL_GPIO, ///< LCD Control Interface use SW controlled GPIO pins. User must assign SIF pins: "ui_gpio_sen/ui_gpio_clk/ui_gpio_data".
DISPDEV_LCDCTRL_MI, ///< LCD control Interface use Embedded MI engine.
DISPDEV_LCDCTRL_NONE, ///< Default value as None.
ENUM_DUMMY4WORD(DISPDEV_LCDCTRL)
} DISPDEV_LCDCTRL;
/**
DISPDEV LCD mode Selection
This field is used for the OP code "DISPDEV_SET_LCDMODE" of the dev_ctrl API to specify the LCD mode.
*/
typedef enum {
DISPDEV_LCDMODE_RGB_SERIAL = 0, ///< LCD mode is RGB Serial or UPS051
DISPDEV_LCDMODE_RGB_PARALL = 1, ///< LCD mode is RGB Parallel (888)
DISPDEV_LCDMODE_YUV640 = 2, ///< LCD mode is YUV640
DISPDEV_LCDMODE_YUV720 = 3, ///< LCD mode is YUV720
DISPDEV_LCDMODE_RGBD360 = 4, ///< LCD mode is RGB Dummy 360
DISPDEV_LCDMODE_RGBD320 = 5, ///< LCD mode is RGB Dummy 320
DISPDEV_LCDMODE_RGB_THROUGH = 6, ///< LCD mode is RGB through mode
DISPDEV_LCDMODE_CCIR601 = 7, ///< LCD mode is CCIR601
DISPDEV_LCDMODE_CCIR656 = 8, ///< LCD mode is CCIR656
DISPDEV_LCDMODE_RGB_PARALL666 = 9, ///< LCD mode is RGB Parallel 666
DISPDEV_LCDMODE_RGB_PARALL565 = 10, ///< LCD mode is RGB Parallel 565
DISPDEV_LCDMODE_RGB_PARALL_DELTA = 11, ///< LCD mode is RGB Parallel Delta
DISPDEV_LCDMODE_MIPI = 12, ///< LCD mode is MIPI Display
DISPDEV_LCDMODE_MI_OFFSET = 32, ///< Memory LCD mode offset
DISPDEV_LCDMODE_MI_FMT0 = 32 + 0, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT1 = 32 + 1, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT2 = 32 + 2, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT3 = 32 + 3, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT4 = 32 + 4, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT5 = 32 + 5, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT6 = 32 + 6, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT7 = 32 + 7, ///< LCD mode is Memory(Parallel Interface) 9bits
DISPDEV_LCDMODE_MI_FMT8 = 32 + 8, ///< LCD mode is Memory(Parallel Interface) 16bits
DISPDEV_LCDMODE_MI_FMT9 = 32 + 9, ///< LCD mode is Memory(Parallel Interface) 16bits
DISPDEV_LCDMODE_MI_FMT10 = 32 + 10, ///< LCD mode is Memory(Parallel Interface) 18bits
DISPDEV_LCDMODE_MI_FMT11 = 32 + 11, ///< LCD mode is Memory(Parallel Interface) 8bits
DISPDEV_LCDMODE_MI_FMT12 = 32 + 12, ///< LCD mode is Memory(Parallel Interface) 16bits
DISPDEV_LCDMODE_MI_FMT13 = 32 + 13, ///< LCD mode is Memory(Parallel Interface) 16bits
DISPDEV_LCDMODE_MI_FMT14 = 32 + 14, ///< LCD mode is Memory(Parallel Interface) 16bits
DISPDEV_LCDMODE_MI_SERIAL_BI = 32 + 20, ///< LCD mode is Serial Interface bi-direction
DISPDEV_LCDMODE_MI_SERIAL_SEP = 32 + 21, ///< LCD mode is Serial Interface separation
DISPDEV_LCDMODE_NO_CHANGE = 0xFF, ///< LCD mode use current setting
ENUM_DUMMY4WORD(DISPDEV_LCDMODE)
} DISPDEV_LCDMODE;
/**
Display Device Control Parameter Definition
This definition is used as the second operand in the dev_ctrl API to specify the display device control parameters
for each of the display device control opeation.
*/
typedef struct {
union {
/* SET control group */
/**
Open Display Device as specified dev_id
This structure is used for display device control operation code "DISPDEV_OPEN_DEVICE"
to open display device. This structure shuld be used like this:
\n DispDev.SEL.OPEN_DEVICE.dev_id = DISPDEV_ID_PANEL;
\n pDispObj->dev_ctrl(DISPDEV_OPEN_DEVICE, &DispDev);
*/
struct { // DISPDEV_OPEN_DEVICE
DISPDEV_ID dev_id; ///< Open specified display device.
BOOL user_data_en;
UINT32 user_data;
} OPEN_DEVICE;
// DISPDEV_CLOSE_DEVICE
/* No Parameters */
/**
Hook Display Device object
This structure is used for display device control operation code "DISPDEV_HOOK_DEVICE_OBJECT"
to hook specified dev_id's device object. This operation can be done at the systemInit phase.
This structure shuld be used like this:
\n DispDev.SEL.HOOK_DEVICE_OBJECT.dev_id = DISPDEV_ID_TVHDMI;
\n DispDev.SEL.HOOK_DEVICE_OBJECT.p_disp_dev_obj = the dispobj which to hook(ex: &DispDev_HdmiObj);
\n pDispObj->dev_ctrl(DISPDEV_OPEN_DEVICE, &DispDev);
*/
struct { // DISPDEV_HOOK_DEVICE_OBJECT
DISPDEV_ID dev_id; ///< select which Device ID of the device object
PDISPDEV_OBJ p_disp_dev_obj; ///< Hook Device object pointer for the dev_id
} HOOK_DEVICE_OBJECT;
/**
Hook panel Adjustment callback function
This is backward compatible operation for providing user interface to adjust the panel configuration by his own.
This structure is used for display device control operation code "DISPDEV_HOOK_PANEL_ADJUST"
to hook specified panel adjustment callback.
If this operation is performed, the adjustment in the panel device object would be invalid.
This operation can be done at the systemInit phase.
This structure shuld be used like this:
\n DispDev.SEL.HOOK_PANEL_ADJUST.fp_adjust = (Addess of the panel adjust function);
\n pDispObj->dev_ctrl(DISPDEV_HOOK_PANEL_ADJUST, &DispDev);
*/
struct { // DISPDEV_HOOK_PANEL_ADJUST
FP fp_adjust; ///< The callback function of the panel adjustment
} HOOK_PANEL_ADJUST;
/**
Set TV Device adjustment Resistor value
This structure is used for display device control operation code "DISPDEV_SET_TVADJUST"
to assign the tv adjustment paramter. This structure shuld be used like this:
\n DispDev.SEL.SET_TVADJUST.tv_adjust = DISPDEV_TVADJUST_DEFAULT;
\n pDispObj->dev_ctrl(DISPDEV_SET_TVADJUST, &DispDev);
*/
struct { // DISPDEV_SET_TVADJUST
DISPDEV_TVADJUST tv_adjust; ///< Assign the panel adjustment paramter.
} SET_TVADJUST;
/**
Set LCD Device control interface
This structure is used for display device control operation code "DISPDEV_SET_REG_IF"
to specify the LCD control interface. This structure shuld be used like this:
\n DispDev.SEL.SET_REG_IF.lcd_ctrl = DISPDEV_LCDCTRL_SIF;
\n DispDev.SEL.SET_REG_IF.ui_sif_ch = SIF_CH0;
\n pDispObj->dev_ctrl(DISPDEV_SET_REG_INTF, &DispDev);
\n Or Using like this:
\n DispDev.SEL.SET_REG_IF.lcd_ctrl = DISPDEV_LCDCTRL_GPIO;
\n DispDev.SEL.SET_REG_IF.ui_gpio_sen = P_GPIO_0;
\n DispDev.SEL.SET_REG_IF.ui_gpio_clk = P_GPIO_1;
\n DispDev.SEL.SET_REG_IF.ui_gpio_data = P_GPIO_2;
\n pDispObj->dev_ctrl(DISPDEV_SET_REG_IF, &DispDev);
\n Or Using like this:
\n DispDev.SEL.SET_REG_IF.lcd_ctrl = DISPDEV_LCDCTRL_MI;
\n pDispObj->dev_ctrl(DISPDEV_SET_REG_IF, &DispDev);
*/
struct { // DISPDEV_SET_REG_IF
DISPDEV_LCDCTRL lcd_ctrl; ///< select the LCD Control Interface.
SIF_CH ui_sif_ch; ///< If lcd_ctrl=DISPDEV_LCDCTRL_SIF, this field is the assigned SIF channel number.
UINT32 ui_gpio_sen; ///< If lcd_ctrl=DISPDEV_LCDCTRL_GPIO,this field is the assigned GPIO pin name for SIF SEN.
UINT32 ui_gpio_clk; ///< If lcd_ctrl=DISPDEV_LCDCTRL_GPIO,this field is the assigned GPIO pin name for SIF CLK.
UINT32 ui_gpio_data; ///< If lcd_ctrl=DISPDEV_LCDCTRL_GPIO,this field is the assigned GPIO pin name for SIF DATA.
} SET_REG_IF;
/**
Write Display Device register
This structure is used for display device control operation code "DISPDEV_REG_WRITE"
to write display device register. This structure shuld be used like this:
\n DispDev.SEL.REG_WRITE.ui_addr = 0x00;
\n DispDev.SEL.REG_WRITE.ui_value = 0x01;
\n pDispObj->dev_ctrl(DISPDEV_REG_WRITE, &DispDev);
*/
struct { // DISPDEV_REG_WRITE
UINT32 ui_addr; ///< LCD Register address
UINT32 ui_value; ///< The LCD register configuration value
} REG_WRITE;
/**
Set HDMI display Video and Audio mode
This structure is used for display device control operation code "DISPDEV_SET_HDMIMODE"
to configure the HDMI Video/Audio mode when HDMI cable connected.
If the TV do not support the selected video ID, the HDMI basic format would be displayed.(480P60)
This structure shuld be used like this:
\n DispDev.SEL.SET_HDMIMODE.video_id = HDMI_1280X720P60;
\n DispDev.SEL.SET_HDMIMODE.audio_id = HDMI_AUDIO32KHZ;
\n pDispObj->dev_ctrl(DISPDEV_SET_HDMIMODE, &DispDev);
*/
struct { // DISPDEV_SET_HDMIMODE
HDMI_VIDEOID video_id; ///< select HDMI default Video mode ID
HDMI_AUDIOFMT audio_id; ///< select HDMI default Audio mode ID
} SET_HDMIMODE;
/**
Set LCD mode
This structure is used for display device control operation code "DISPDEV_SET_LCDMODE"
to configure the LCD mode when change LCD mode
This structure shuld be used like this:
\n DispDev.SEL.SET_LCDMODE = PINMUX_LCDMODE_YUV640;
\n pDispObj->dev_ctrl(DISPDEV_SET_LCDMODE, &DispDev);
*/
struct { // DISPDEV_SET_LCDMODE
DISPDEV_LCDMODE mode; ///< select LCD mode
} SET_LCDMODE;
/**
Set Display Device rotation
This structure is used for display device control operation code "DISPDEV_SET_ROTATE"
to configure the display device(LCD) rotation configuration.
This structure shuld be used like this:
\n DispDev.SEL.SET_ROTATE.rot = DISPDEV_LCD_ROTATE_180;
\n pDispObj->dev_ctrl(DISPDEV_SET_ROTATE, &DispDev);
*/
struct { // DISPDEV_SET_ROTATE
DISPDEV_LCD_ROTATE rot; ///< select display device rotate
} SET_ROTATE;
/**
Set Display panel(LCD) Device backlight level
This structure is used for display device control operation code "DISPDEV_SET_PANEL_BACKLIGHT"
to set the Display panel(LCD) Device backlight level.
This structure shuld be used like this:
\n DispDev.SEL.SET_PANEL_BACKLIGHT.ui_bl_lvl = (project defined levels);
\n pDispObj->dev_ctrl(DISPDEV_SET_PANEL_BACKLIGHT, &DispDev);
*/
struct { // DISPDEV_SET_PANEL_BACKLIGHT
UINT32 ui_bl_lvl;
} SET_PANEL_BACKLIGHT;
/**
Set Display panel(LCD) Device power level
This structure is used for display device control operation code "DISPDEV_SET_PANEL_POWER"
to set the Display panel(LCD) Device backlight level.
This structure shuld be used like this:
\n DispDev.SEL.SET_PANEL_POWER.ui_pwr_lvl = (project defined levels);
\n pDispObj->dev_ctrl(DISPDEV_SET_PANEL_POWER, &DispDev);
*/
struct { // DISPDEV_SET_PANEL_POWER
UINT32 ui_pwr_lvl;
} SET_PANEL_POWER;
/**
Set PowerDown
This structure is used for display device control operation code "DISPDEV_SET_POWERDOWN"
to set the Device powerdown or not.
This structure shuld be used like this:
\n DispDev.SEL.SET_POWERDOWN.b_power_down = (project defined levels);
\n pDispObj->dev_ctrl(DISPDEV_SET_POWERDOWN, &DispDev);
*/
struct { // DISPDEV_SET_POWERDOWN
BOOL b_power_down;
} SET_POWERDOWN;
/**
Set TV parameter
This structure is used for display device control operation code "DISPDEV_SET_TVPAR"
to set the TV's parameters.
This structure shuld be used like this:
\n DispDev.SEL.SET_TVPAR.b_en_user = TRUE or FALSE;
\n DispDev.SEL.SET_TVPAR.ui_ntsc_bll = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_brl = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_setup = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_y_scaling = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_cb_scaling= (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_cr_scaling= (project defined levels);
\n pDispObj->dev_ctrl(DISPDEV_SET_TVPAR, &DispDev);
*/
struct { // DISPDEV_SET_TVPAR
BOOL b_en_user; ///< Enable/Disable user's setting value
UINT32 ui_ntsc_bll; ///< TV NTSC Blank Level(valid value:0~0xFF)
UINT32 ui_ntsc_brl; ///< TV NTSC Burst Level(valid value:0~0xFF)
UINT32 ui_ntsc_setup; ///< TV NTSC NTSC setup(valid value:0~0xFF)
UINT32 ui_ntsc_y_scaling; ///< TV NTSC Y Scale(valid value:0~0xFF)
UINT32 ui_ntsc_cb_scaling; ///< TV NTSC Cb Scale(valid value:0~0xFF)
UINT32 ui_ntsc_cr_scaling; ///< TV NTSC Cr Scale(valid value:0~0xFF)
UINT32 ui_pal_bll; ///< TV PAL Blank Level(valid value:0~0xFF)
UINT32 ui_pal_brl; ///< TV PAL Burst Level(valid value:0~0xFF)
UINT32 ui_pal_setup; ///< TV PAL setup(valid value:0~0xFF)
UINT32 ui_pal_y_scaling; ///< TV PAL Y Scale(valid value:0~0xFF)
UINT32 ui_pal_cb_scaling; ///< TV PAL Cb Scale(valid value:0~0xFF)
UINT32 ui_pal_cr_scaling; ///< TV PAL Cr Scale(valid value:0~0xFF)
} SET_TVPAR;
/**
Set output to dram parameter
This structure is used for output ide internal data output to dram via VDO2 channel.
So that VDO2 can not active at the same time
This structure shuld be used like this:
\n DispDev.SEL.SET_TVPAR.b_en_user = TRUE or FALSE;
\n DispDev.SEL.SET_TVPAR.ui_ntsc_bll = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_brl = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_setup = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_y_scaling = (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_cb_scaling= (project defined levels);
\n DispDev.SEL.SET_TVPAR.ui_ntsc_cr_scaling= (project defined levels);
\n pDispObj->dev_ctrl(DISPDEV_SET_TVPAR, &DispDev);
*/
struct { // DISPDEV_SET_OUTPUT_DRAM
UINT32 y_addr; ///< Output Y address
UINT32 uv_addr; ///< Output UV address
UINT32 output_width; ///< Output width
UINT32 output_height; ///< Output height
UINT32 output_line_ofs; ///< Output line offset(unit:byte)
BOOL is_yuv422; ///< output format (0:420/1:422)
} SET_OUTPUT_DRAM_PAR;
/**
Set TV Full screen
This structure is used for display device control operation code "DISPDEV_SET_TVFULL"
to set the TV's parameters.
This structure shuld be used like this:
\n DispDev.SEL.SET_TVFULL.b_en_full = TRUE or FALSE;
\n pDispObj->dev_ctrl(DISPDEV_SET_TVFULL, &DispDev);
*/
struct { // DISPDEV_SET_TVFULL
BOOL b_en_full; ///< Enable/Disable TV Full screen
} SET_TVFULL;
/**
Set LOGO mode
This structure is used for display device control operation code "DISPDEV_SET_LOGOMODE"
to set the parameters.
This structure shuld be used like this:
\n DispDev.SEL.SET_LOGOMODE.b_en_logo = TRUE or FALSE;
\n pDispObj->dev_ctrl(DISPDEV_SET_LOGOMODE, &DispDev);
*/
struct { // DISPDEV_SET_LOGOMODE
BOOL b_en_logo;
} SET_LOGOMODE;
/* GET control group */
/**
Get the current active Display Device ID
This structure is used for display device control operation code "DISPDEV_GET_ACT_DEVICE"
to get the current active display device of the display object. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_ACT_DEVICE, &DispDev);
\n "DispDev.SEL.GET_ACT_DEVICE.dev_id"
is the current active display device ID.
*/
struct { // DISPDEV_GET_ACT_DEVICE
DISPDEV_ID dev_id; ///< Current Active display device ID.
} GET_ACT_DEVICE;
/**
Get the current active Display optimal buffer/window size
This structure is used for display device control operation code "DISPDEV_GET_DISPSIZE"
to get the current active display's optimal buffer/window size. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_DISPSIZE, &DispDev);
\n "DispDev.SEL.GET_DISPSIZE.ui_buf_width"/"DispDev.SEL.GET_DISPSIZE.ui_buf_height"/"DispDev.SEL.GET_DISPSIZE.ui_win_width"/"DispDev.SEL.GET_DISPSIZE.ui_win_height"
are the display optimal buffer/window size
*/
struct { // DISPDEV_GET_DISPSIZE
UINT32 ui_buf_width; ///< Current Active display optimal buffer width.
UINT32 ui_buf_height; ///< Current Active display optimal buffer height.
UINT32 ui_win_width; ///< Current Active display optimal window width.
UINT32 ui_win_height; ///< Current Active display optimal window height.
} GET_DISPSIZE;
/**
Get the pre Display optimal buffer size
This structure is used for display device control operation code "DISPDEV_GET_PREDISPSIZE"
to get the current active display's optimal buffer size. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_PREDISPSIZE, &DispDev);
\n "DispDev.SEL.GET_PREDISPSIZE.ui_buf_width"/"DispDev.SEL.GET_PREDISPSIZE.ui_buf_height"
are the display optimal buffer size
*/
struct { // DISPDEV_GET_PREDISPSIZE
DISPDEV_ID dev_id; ///< Get specified display device.
UINT32 ui_buf_width; ///< Get display optimal buffer width.
UINT32 ui_buf_height; ///< Get display optimal buffer height.
UINT32 ui_win_width; ///< Get display optimal window width.
UINT32 ui_win_height; ///< Get display optimal window height.
} GET_PREDISPSIZE;
/**
Get the user defined panel adjustment callback
This structure is used for display device control operation code "DISPDEV_GET_PANEL_ADJUST"
to get the user defined panel adjustment callback. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_PANEL_ADJUST, &DispDev);
\n "DispDev.SEL.GET_PANEL_ADJUST.pfp_adjust"
is the user defined panel adjustment callback.
*/
struct { // DISPDEV_GET_PANEL_ADJUST
FP pfp_adjust; ///< Get the panel adjustment callback function
} GET_PANEL_ADJUST;
/**
Get the user assigned TV adjustment resistor value
This structure is used for display device control operation code "DISPDEV_GET_TVADJUST"
to get the user assigned TV adjustment resistor value. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_TVADJUST, &DispDev);
\n "DispDev.SEL.GET_TVADJUST.tv_adjust"
is the user assigned TV adjustment resistor value.
*/
struct { // DISPDEV_GET_TVADJUST
DISPDEV_TVADJUST tv_adjust; ///< Get the user assigned TV adjustment resistor value
} GET_TVADJUST;
/**
Get the user assigned LCD Control interface configurations
This structure is used for display device control operation code "DISPDEV_GET_REG_IF"
to get the user assigned LCD Control interface configurations. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_TVADJUST, &DispDev);
\n "DispDev.SEL.GET_REG_IF.lcd_ctrl"/"DispDev.SEL.GET_REG_IF.ui_sif_ch"/"DispDev.SEL.GET_REG_IF.ui_gpio_sen"/ ..
are the user assigned LCD Control interface configurations.
*/
struct { // DISPDEV_GET_REG_IF
DISPDEV_LCDCTRL lcd_ctrl; ///< Get LCD Control Interface select
SIF_CH ui_sif_ch; ///< If interface is SIF, this field is the assigned SIF CH number.
UINT32 ui_gpio_sen; ///< If interface is GPIO, this field is the assigned GPIO Pin ID for SIF SEN.
UINT32 ui_gpio_clk; ///< If interface is GPIO, this field is the assigned GPIO Pin ID for SIF CLK.
UINT32 ui_gpio_data; ///< If interface is GPIO, this field is the assigned GPIO Pin ID for SIF DATA.
} GET_REG_IF;
/**
Read Display Device register
This structure is used for display device control operation code "DISPDEV_REG_READ"
to read display device register. This structure shuld be used like this:
\n DispDev.SEL.REG_READ.ui_addr = 0x00;
\n pDispObj->dev_ctrl(DISPDEV_REG_READ, &DispDev);
\n "DispDev.SEL.REG_READ.ui_return" is the read back register value.
*/
struct { // DISPDEV_REG_READ
UINT32 ui_addr; ///< The panel register offset.
UINT32 ui_return; ///< The readback panel register value.
} REG_READ;
/**
Get HDMI Display VIDEO/AUDIO mode
This structure is used for display device control operation code "DISPDEV_GET_HDMIMODE"
to get the HDMI VIDEO/AUDIO mode. This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_HDMIMODE, &DispDev);
\n "DispDev.SEL.GET_HDMIMODE.video_id"/"DispDev.SEL.GET_HDMIMODE.audio_id"
are the HDMI VIDEO/AUDIO mode selection.
*/
struct { // DISPDEV_GET_HDMIMODE
HDMI_VIDEOID video_id; ///< HDMI VIDEO ID select
HDMI_AUDIOFMT audio_id; ///< HDMI AUDIO ID select
} GET_HDMIMODE;
/**
Get LCD mode
This structure is used for display device control operation code "DISPDEV_SET_LCDMODE"
to get the LCD mode.
This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_LCDMODE, &DispDev);
\n "DispDev.SEL.GET_LCDMODE.PinMuxMod" is the LCD pinmux mode selection
*/
struct { // DISPDEV_SET_LCDMODE
DISPDEV_LCDMODE mode; ///< select LCD mode
} GET_LCDMODE;
/**
Get Display panel(LCD) Device backlight level
This structure is used for display device control operation code "DISPDEV_GET_PANEL_BACKLIGHT"
to get the Display panel(LCD) Device backlight level.
This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_PANEL_BACKLIGHT, &DispDev);
\n "DispDev.SEL.GET_PANEL_BACKLIGHT.ui_bl_lvl" is the project defined backlight level
*/
struct { // DISPDEV_GET_PANEL_BACKLIGHT
UINT32 ui_bl_lvl;
} GET_PANEL_BACKLIGHT;
/**
Get Display panel(LCD) Device POWER level
This structure is used for display device control operation code "DISPDEV_GET_PANEL_POWER"
to get the Display panel(LCD) Device POWER level.
This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_PANEL_POWER, &DispDev);
\n "DispDev.SEL.GET_PANEL_POWER.ui_pwr_lvl" is the project defined POWER level
*/
struct { // DISPDEV_GET_PANEL_POWER
UINT32 ui_pwr_lvl;
} GET_PANEL_POWER;
/**
Get PowerDown
This structure is used for display device control operation code "DISPDEV_GET_POWERDOWN"
to get the Device powerdown or not.
This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_POWERDOWN, &DispDev);
\n "DispDev.SEL.GET_POWERDOWN.b_power_down" is the project defined POWER level
*/
struct { // DISPDEV_GET_ POWERDOWN
BOOL b_power_down;
} GET_POWERDOWN;
/**
Get TV parameter
This structure is used for display device control operation code "DISPDEV_GET_TVPAR"
to get the TV's parameters.
This structure shuld be used like this:
\n pDispObj->dev_ctrl(DISPDEV_GET_TVPAR, &DispDev);
\n "DispDev.SEL.GET_TVPAR.b_en_user" is Enable/Disable user define value
\n "DispDev.SEL.GET_TVPAR.ui_bll" is the TV's blank level
\n "DispDev.SEL.GET_TVPAR.ui_brl" is the TV's burst level
\n "DispDev.SEL.GET_TVPAR.ui_setup" is the TV's setup level
\n "DispDev.SEL.GET_TVPAR.uiYScale" is the TV's y scale level
\n "DispDev.SEL.GET_TVPAR.uiCbScale" is the TV's cb scale level
\n "DispDev.SEL.GET_TVPAR.uiCrScale" is the TV's cr scale level
*/
struct { // DISPDEV_GET_TVPAR
BOOL b_en_user; ///< Enable/Disable user's setting value
UINT32 ui_ntsc_bll; ///< TV NTSC Blank Level(valid value:0~0xFF)
UINT32 ui_ntsc_brl; ///< TV NTSC Burst Level(valid value:0~0xFF)
UINT32 ui_ntsc_setup; ///< TV NTSC setup(valid value:0~0xFF)
UINT32 ui_ntsc_y_scaling; ///< TV NTSC Y Scale(valid value:0~0xFF)
UINT32 ui_ntsc_cb_scaling; ///< TV NTSC Cb Scale(valid value:0~0xFF)
UINT32 ui_ntsc_cr_scaling; ///< TV NTSC Cr Scale(valid value:0~0xFF)
UINT32 ui_pal_bll; ///< TV PAL Blank Level(valid value:0~0xFF)
UINT32 ui_pal_brl; ///< TV PAL Burst Level(valid value:0~0xFF)
UINT32 ui_pal_setup; ///< TV PAL setup(valid value:0~0xFF)
UINT32 ui_pal_y_scaling; ///< TV PAL Y Scale(valid value:0~0xFF)
UINT32 ui_pal_cb_scaling; ///< TV PAL Cb Scale(valid value:0~0xFF)
UINT32 ui_pal_cr_scaling; ///< TV PAL Cr Scale(valid value:0~0xFF)
} GET_TVPAR;
/**
Get LOGO mode
This structure is used for display device control operation code "DISPDEV_GET_LOGOMODE"
to set the parameters.
This structure shuld be used like this:
\n DispDev.SEL.GET_LOGOMODE.b_en_logo = TRUE or FALSE;
\n pDispObj->dev_ctrl(DISPDEV_GET_LOGOMODE, &DispDev);
*/
struct { // DISPDEV_SET_LOGOMODE
BOOL b_en_logo;
} GET_LOGOMODE;
} SEL;
} DISPDEV_PARAM, *PDISPDEV_PARAM;
//@}
typedef ER(*DISPDEVCTRL)(DISPDEV_OP, PDISPDEV_PARAM);
//
// Exported Get Display Device Object API
//
//extern PDISPDEV_OBJ dispdev_get_tv_dev_obj(void);
//extern PDISPDEV_OBJ dispdev_get_hdmi_dev_obj(void);
extern PDISPDEV_OBJ dispdev_get_lcd1_dev_obj(void);
//extern PDISPDEV_OBJ dispdev_get_lcd2_dev_obj(void);
#endif
//@}