765 lines
33 KiB
C
Executable File
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
|
|
//@}
|