702 lines
18 KiB
C
702 lines
18 KiB
C
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
|
|
/*
|
|
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __PAEL_INI_H__
|
|
#define __PAEL_INI_H__
|
|
#include "ini_size_define.h"
|
|
#include <amlogic/aml_model.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifndef u32
|
|
#define u32 unsigned int
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#pragma pack (1)
|
|
|
|
#define DEBUG_NORMAL BIT(0)
|
|
#define DEBUG_LCD BIT(1)
|
|
#define DEBUG_LCD_EXTERN BIT(2)
|
|
#define DEBUG_BACKLIGHT BIT(3)
|
|
#define DEBUG_MISC BIT(4)
|
|
#define DEBUG_TCON BIT(5)
|
|
#define DEBUG_LCD_CUS_CTRL BIT(6)
|
|
#define DEBUG_LCD_OPTICAL BIT(7)
|
|
|
|
#define CC_PARAM_CHECK_OK (0)
|
|
#define CC_PARAM_CHECK_ERROR_NEED_UPDATE_PARAM (-1)
|
|
#define CC_PARAM_CHECK_ERROR_NOT_NEED_UPDATE_PARAM (-2)
|
|
|
|
enum lcd_type_e {
|
|
LCD_RGB = 0,
|
|
LCD_LVDS,
|
|
LCD_VBYONE,
|
|
LCD_MIPI,
|
|
LCD_MLVDS,
|
|
LCD_P2P,
|
|
LCD_EDP,
|
|
LCD_BT656,
|
|
LCD_BT1120,
|
|
LCD_TYPE_MAX,
|
|
};
|
|
|
|
enum bl_ctrl_method_e {
|
|
BL_CTRL_GPIO = 0,
|
|
BL_CTRL_PWM,
|
|
BL_CTRL_PWM_COMBO,
|
|
BL_CTRL_PWM_ARRAY,
|
|
BL_CTRL_LOCAL_DIMMING,
|
|
BL_CTRL_EXTERN,
|
|
BL_CTRL_MAX,
|
|
};
|
|
|
|
enum bl_pwm_method_e {
|
|
BL_PWM_NEGATIVE = 0,
|
|
BL_PWM_POSITIVE,
|
|
BL_PWM_METHOD_MAX,
|
|
};
|
|
|
|
enum bl_pwm_port_e {
|
|
BL_PWM_A = 0,
|
|
BL_PWM_B,
|
|
BL_PWM_C,
|
|
BL_PWM_D,
|
|
BL_PWM_E,
|
|
BL_PWM_F,
|
|
BL_PWM_G,
|
|
BL_PWM_H,
|
|
BL_PWM_I,
|
|
BL_PWM_J,
|
|
BL_PWM_AO_A = 0x50,
|
|
BL_PWM_AO_B,
|
|
BL_PWM_AO_C,
|
|
BL_PWM_AO_D,
|
|
BL_PWM_AO_E,
|
|
BL_PWM_AO_F,
|
|
BL_PWM_AO_G,
|
|
BL_PWM_AO_H,
|
|
BL_PWM_VS = 0xa0,
|
|
BL_PWM_MAX = 0xff,
|
|
};
|
|
|
|
enum lcd_ldim_mode_e {
|
|
LDIM_MODE_LR_SIDE = 0,
|
|
LDIM_MODE_TB_SIDE,
|
|
LDIM_MODE_DIRECT,
|
|
LDIM_MODE_MAX,
|
|
};
|
|
|
|
enum ldim_dev_type_e {
|
|
LDIM_DEV_TYPE_NORMAL = 0,
|
|
LDIM_DEV_TYPE_SPI,
|
|
LDIM_DEV_TYPE_I2C,
|
|
LDIM_DEV_TYPE_MAX,
|
|
};
|
|
|
|
enum lcd_extern_type_e {
|
|
LCD_EXTERN_I2C = 0,
|
|
LCD_EXTERN_SPI,
|
|
LCD_EXTERN_MIPI,
|
|
LCD_EXTERN_SIMPLE,
|
|
LCD_EXTERN_MAX,
|
|
};
|
|
#define LCD_EXTERN_I2C_BUS_INVALID 0xff
|
|
|
|
#define CC_LCD_NAME_LEN_MAX (30)
|
|
|
|
struct lcd_header_s {
|
|
unsigned int crc32;
|
|
unsigned short data_len;
|
|
unsigned char version;
|
|
unsigned char block_next_flag;
|
|
unsigned short block_cur_size;
|
|
};
|
|
|
|
struct lcd_basic_s {
|
|
char model_name[CC_LCD_NAME_LEN_MAX];
|
|
unsigned char lcd_if_chk; /*[5:0]interface, [7:6]:config_check*/
|
|
unsigned char lcd_bits_cfmt;/*bit[5:0]lcd_bits, bit[7:6]input_cfmt*/
|
|
unsigned short screen_width; /* screen physical width in "mm" unit */
|
|
unsigned short screen_height; /* screen physical height in "mm" unit */
|
|
};
|
|
|
|
struct lcd_timming_s {
|
|
unsigned short h_active; /* Horizontal display area */
|
|
unsigned short v_active; /* Vertical display area */
|
|
unsigned short h_period; /* Horizontal total period time */
|
|
unsigned short v_period; /* Vertical total period time */
|
|
unsigned short hsync_width_pol;/*bit[11:0]hs_width, bit[15:12]hs_pol*/
|
|
unsigned short hsync_bp;
|
|
unsigned char pre_de_h;
|
|
unsigned short vsync_width_pol;/*bit[11:0]vs_width, bit[15:12]vs_pol*/
|
|
unsigned short vsync_bp;
|
|
unsigned char pre_de_v;
|
|
};
|
|
|
|
struct lcd_customer_s {
|
|
unsigned char fr_adjust_type;
|
|
unsigned char ss_level;
|
|
unsigned char custom_val0;
|
|
unsigned int pixel_clk;
|
|
unsigned short h_period_min;
|
|
unsigned short h_period_max;
|
|
unsigned short v_period_min;
|
|
unsigned short v_period_max;
|
|
unsigned int pixel_clk_min;
|
|
unsigned int pixel_clk_max;
|
|
unsigned char vlock_val_0;
|
|
unsigned char vlock_val_1;
|
|
unsigned char vlock_val_2;
|
|
unsigned char vlock_val_3;
|
|
unsigned char custom_val1;
|
|
unsigned char fr_auto_cus;
|
|
unsigned char frame_rate_min;
|
|
unsigned char frame_rate_max;
|
|
};
|
|
|
|
struct lcd_interface_s {
|
|
unsigned short if_attr_0; //vbyone_attr lane_count
|
|
unsigned short if_attr_1; //vbyone_attr region_num
|
|
unsigned short if_attr_2; //vbyone_attr byte_mode
|
|
unsigned short if_attr_3; //vbyone_attr color_fmt
|
|
unsigned short if_attr_4; //phy_attr vswing_level
|
|
unsigned short if_attr_5; //phy_attr preemphasis_level
|
|
unsigned short if_attr_6; //reversed
|
|
unsigned short if_attr_7; //reversed
|
|
unsigned short if_attr_8; //reversed
|
|
unsigned short if_attr_9; //reversed
|
|
};
|
|
|
|
#define CC_LCD_PWR_ITEM_CNT (4)
|
|
struct lcd_pwr_s {
|
|
unsigned char pwr_step_type;
|
|
unsigned char pwr_step_index;
|
|
unsigned char pwr_step_val;
|
|
unsigned short pwr_step_delay;
|
|
};
|
|
|
|
#define CC_MAX_PWR_SEQ_CNT (50)
|
|
|
|
struct lcd_attr_s {
|
|
struct lcd_header_s head;
|
|
struct lcd_basic_s basic;
|
|
struct lcd_timming_s timming;
|
|
struct lcd_customer_s customer;
|
|
struct lcd_interface_s interface;
|
|
struct lcd_pwr_s pwr[CC_MAX_PWR_SEQ_CNT];
|
|
};
|
|
|
|
struct lcd_phy_s {
|
|
unsigned int phy_attr_flag; //each bit enable one attr behind
|
|
unsigned short phy_attr_0; //2byte //vswing
|
|
unsigned short phy_attr_1; //2byte //vcm
|
|
unsigned short phy_attr_2; //2byte //ref bias switch
|
|
unsigned short phy_attr_3; //2byte //odt
|
|
unsigned short phy_attr_4; //2byte //current/voltage mode
|
|
unsigned short phy_attr_5; //2byte //reserved
|
|
unsigned short phy_attr_6; //2byte //reserved
|
|
unsigned short phy_attr_7; //2byte //reserved
|
|
unsigned short phy_attr_8; //2byte //reserved
|
|
unsigned short phy_attr_9; //2byte //reserved
|
|
unsigned short phy_attr_10; //2byte //reserved
|
|
unsigned short phy_attr_11; //2byte //reserved
|
|
unsigned int phy_lane_ctrl[64]; //64 *2byte lane_reg //
|
|
unsigned char phy_lane_pn_swap[8]; //64bit //pn_swap
|
|
unsigned char phy_lane_sel[64]; //64byte //channel_swap
|
|
};
|
|
|
|
#define LCD_CUS_CTRL_ATTR_CNT_MAX 32
|
|
|
|
#define LCD_CUS_CTRL_TYPE_UFR 0x00
|
|
#define LCD_CUS_CTRL_TYPE_DFR 0x01
|
|
#define LCD_CUS_CTRL_TYPE_EXTEND_TMG 0x02
|
|
#define LCD_CUS_CTRL_TYPE_CLK_ADV 0x03
|
|
#define LCD_CUS_CTRL_TYPE_TUNING_ATTR 0x0a
|
|
#define LCD_CUS_CTRL_TYPE_TCON_SW_POL 0x10
|
|
#define LCD_CUS_CTRL_TYPE_TCON_SW_PDF 0x11
|
|
#define LCD_CUS_CTRL_TYPE_MAX 0xff
|
|
|
|
struct lcd_dfr_timing_s {
|
|
unsigned short vtotal;
|
|
unsigned short vtotal_min;
|
|
unsigned short vtotal_max;
|
|
unsigned short vpw;
|
|
unsigned short vbp;
|
|
};
|
|
|
|
struct lcd_cus_ctrl_extend_tmg_s {
|
|
unsigned short hactive;
|
|
unsigned short vactive;
|
|
unsigned short htotal;
|
|
unsigned short vtotal;
|
|
|
|
unsigned short hpw_pol;//[15:12]hs_pol, [11:0]hpw
|
|
unsigned short hbp;
|
|
unsigned short vpw_pol;//[15:12]vs_pol, [11:0]vpw
|
|
unsigned short vbp_clk_mode;//[15:12]clk_mode, [11:0]vbp
|
|
unsigned char fr_adjust_type;
|
|
unsigned int pixel_clk;
|
|
|
|
unsigned short htotal_min;
|
|
unsigned short htotal_max;
|
|
unsigned short vtotal_min;
|
|
unsigned short vtotal_max;
|
|
unsigned short frame_rate_min;
|
|
unsigned short frame_rate_max;
|
|
unsigned int pclk_min;
|
|
unsigned int pclk_max;
|
|
};
|
|
|
|
struct lcd_tuning_ch_sel_s {
|
|
unsigned char pn_phase; //[4:1]phase sel, [0:0]pn swap
|
|
unsigned char sel;
|
|
};
|
|
|
|
struct lcd_tuning_s {
|
|
unsigned short phy_clk;
|
|
unsigned short phy_clk_min; //reserved
|
|
unsigned short phy_clk_max; //reserved
|
|
unsigned short ss_level;
|
|
unsigned short ss_freq;
|
|
unsigned short ss_mode;
|
|
unsigned short mlvds_clk_phase;
|
|
unsigned short phy_vswing;
|
|
unsigned short phy_vcm;
|
|
unsigned short phy_ref_bias;
|
|
unsigned short phy_odt;
|
|
unsigned short phy_cv_mode;
|
|
unsigned short phy_attr_5; //2byte //reserved
|
|
unsigned short phy_attr_6; //2byte //reserved
|
|
unsigned short phy_attr_7; //2byte //reserved
|
|
unsigned short phy_attr_8; //2byte //reserved
|
|
unsigned short phy_attr_9; //2byte //reserved
|
|
unsigned short phy_attr_10; //2byte //reserved
|
|
unsigned short phy_attr_11; //2byte //reserved
|
|
};
|
|
|
|
struct lcd_tuning_phy_ch_s {
|
|
unsigned short preem;
|
|
unsigned short amp;
|
|
};
|
|
|
|
#define SWPDF_MAX_BLOCK 16
|
|
#define SWPDF_MAX_ACT 16
|
|
struct lcd_cus_swpdf_block_s {
|
|
unsigned short x;
|
|
unsigned short y;
|
|
unsigned char w;
|
|
unsigned char h;
|
|
unsigned int mat_val0;
|
|
unsigned int mat_val1;
|
|
unsigned int mat_val2;
|
|
unsigned int mat_val3;
|
|
};
|
|
|
|
struct lcd_cus_swpdf_act_s {
|
|
unsigned int reg;
|
|
unsigned int mask;
|
|
unsigned int val;
|
|
unsigned char bus;
|
|
};
|
|
|
|
#define LCD_CUS_CTRL_MAX 18244
|
|
#define LCD_CUS_CTRL_DATA_MAX 18240
|
|
struct lcd_cus_ctrl_s {
|
|
unsigned int ctrl_attr_en; //4byte //each bit enable one attr behind
|
|
unsigned char data[LCD_CUS_CTRL_DATA_MAX];
|
|
};
|
|
|
|
#define LCD_NEXT_ATTR_MAX 20480
|
|
//struct lcd_v2_attr_s {
|
|
// struct lcd_header_s head;
|
|
// struct lcd_phy_s phy;
|
|
// struct lcd_cus_ctrl_s cus_ctrl;
|
|
//};
|
|
|
|
#define CC_BL_NAME_LEN_MAX (30)
|
|
|
|
struct bl_basic_s {
|
|
char bl_name[CC_BL_NAME_LEN_MAX];
|
|
};
|
|
|
|
struct bl_level_s {
|
|
unsigned short bl_level_uboot;
|
|
unsigned short bl_level_kernel;
|
|
unsigned short bl_level_max;
|
|
unsigned short bl_level_min;
|
|
unsigned short bl_level_mid;
|
|
unsigned short bl_level_mid_mapping;
|
|
};
|
|
|
|
struct bl_method_s {
|
|
unsigned char bl_method;
|
|
unsigned char bl_en_gpio;
|
|
unsigned char bl_en_gpio_on;
|
|
unsigned char bl_en_gpio_off;
|
|
unsigned short bl_on_delay;
|
|
unsigned short bl_off_delay;
|
|
};
|
|
|
|
struct bl_pwm_array_s { // 24 bytes
|
|
unsigned char pwm_method;
|
|
unsigned char pwm_port;
|
|
unsigned int pwm_freq;
|
|
unsigned int pwm_duty_max;
|
|
unsigned int pwm_duty_min;
|
|
unsigned char pwm_gpio;
|
|
unsigned char pwm_gpio_off;
|
|
|
|
unsigned int pwm_level_max;
|
|
unsigned int pwm_level_min;
|
|
};
|
|
|
|
struct bl_pwm_s {
|
|
unsigned short pwm_on_delay;
|
|
unsigned short pwm_off_delay;
|
|
|
|
unsigned char pwm_method;
|
|
unsigned char pwm_port;
|
|
unsigned int pwm_freq;
|
|
unsigned char pwm_duty_max;
|
|
unsigned char pwm_duty_min;
|
|
unsigned char pwm_gpio;
|
|
unsigned char pwm_gpio_off;
|
|
|
|
unsigned char pwm2_method;
|
|
unsigned char pwm2_port;
|
|
unsigned int pwm2_freq;
|
|
unsigned char pwm2_duty_max;
|
|
unsigned char pwm2_duty_min;
|
|
unsigned char pwm2_gpio;
|
|
unsigned char pwm2_gpio_off;
|
|
|
|
unsigned short pwm_level_max;
|
|
unsigned short pwm_level_min;
|
|
unsigned short pwm2_level_max;
|
|
unsigned short pwm2_level_min;
|
|
};
|
|
|
|
struct bl_ldim_s {
|
|
unsigned char ldim_row;
|
|
unsigned char ldim_col;
|
|
unsigned char ldim_mode;
|
|
unsigned char ldim_dev_index;
|
|
|
|
unsigned short ldim_attr_4;
|
|
unsigned short ldim_attr_5;
|
|
unsigned short ldim_attr_6;
|
|
unsigned short ldim_attr_7;
|
|
unsigned short ldim_attr_8;
|
|
unsigned short ldim_attr_9;
|
|
};
|
|
|
|
struct bl_custome_s {
|
|
unsigned short custome_val_0;
|
|
unsigned short custome_val_1;
|
|
unsigned short custome_val_2;
|
|
unsigned short custome_val_3;
|
|
unsigned short custome_val_4;
|
|
};
|
|
|
|
struct bl_attr_s {
|
|
struct lcd_header_s head;
|
|
struct bl_basic_s basic;
|
|
struct bl_level_s level;
|
|
struct bl_method_s method;
|
|
struct bl_pwm_s pwm;
|
|
struct bl_ldim_s ldim; //v2
|
|
struct bl_custome_s custome; //v2
|
|
struct bl_pwm_array_s pwm_array[4]; //v2, for BL_CTRL_PWM_ARRAY
|
|
};
|
|
|
|
#define CC_LDIM_DEV_NAME_LEN_MAX (30)
|
|
|
|
struct ldim_dev_basic_s {/* basic (30Byte) */
|
|
char dev_name[CC_LDIM_DEV_NAME_LEN_MAX];
|
|
unsigned int reserved;
|
|
};
|
|
|
|
struct ldim_dev_if_s {/* interface (25Byte) */
|
|
unsigned char type;
|
|
unsigned int freq;
|
|
unsigned short if_attr_0;
|
|
unsigned short if_attr_1;
|
|
unsigned short if_attr_2;
|
|
unsigned short if_attr_3;
|
|
unsigned short if_attr_4;
|
|
unsigned short if_attr_5;
|
|
unsigned short if_attr_6;
|
|
unsigned short if_attr_7;
|
|
unsigned short if_attr_8;
|
|
unsigned short if_attr_9;
|
|
};
|
|
|
|
struct ldim_dev_pwm_s {/* pwm (48Byte) */
|
|
unsigned char pwm_vs_port;
|
|
unsigned char pwm_vs_pol;
|
|
unsigned int pwm_vs_freq;
|
|
unsigned short pwm_vs_duty;
|
|
unsigned short pwm_vs_attr_0;
|
|
unsigned short pwm_vs_attr_1;
|
|
unsigned short pwm_vs_attr_2;
|
|
unsigned short pwm_vs_attr_3;
|
|
unsigned char pwm_hs_port;
|
|
unsigned char pwm_hs_pol;
|
|
unsigned int pwm_hs_freq;
|
|
unsigned short pwm_hs_duty;
|
|
unsigned short pwm_hs_attr_0;
|
|
unsigned short pwm_hs_attr_1;
|
|
unsigned short pwm_hs_attr_2;
|
|
unsigned short pwm_hs_attr_3;
|
|
unsigned char pwm_adj_port;
|
|
unsigned char pwm_adj_pol;
|
|
unsigned int pwm_adj_freq;
|
|
unsigned short pwm_adj_duty;
|
|
unsigned short pwm_adj_attr_0;
|
|
unsigned short pwm_adj_attr_1;
|
|
unsigned short pwm_adj_attr_2;
|
|
unsigned short pwm_adj_attr_3;
|
|
char pinmux_sel[30];
|
|
};
|
|
|
|
struct ldim_dev_ctrl_s {/* ctrl (271Byte) */
|
|
unsigned char en_gpio;
|
|
unsigned char en_gpio_on;
|
|
unsigned char en_gpio_off;
|
|
unsigned short on_delay;
|
|
unsigned short off_delay;
|
|
unsigned char err_gpio;
|
|
unsigned char write_check;
|
|
unsigned short dim_max;
|
|
unsigned short dim_min;
|
|
unsigned short chip_cnt;
|
|
char zone_map_path[256];
|
|
};
|
|
|
|
struct ldim_dev_profile_s {/* profile (273Byte) */
|
|
unsigned char profile_mode;
|
|
char profile_path[256];
|
|
unsigned short profile_attr_0;
|
|
unsigned short profile_attr_1;
|
|
unsigned short profile_attr_2;
|
|
unsigned short profile_attr_3;
|
|
unsigned short profile_attr_4;
|
|
unsigned short profile_attr_5;
|
|
unsigned short profile_attr_6;
|
|
unsigned short profile_attr_7;
|
|
};
|
|
|
|
#define LDIM_PARAM_MAX 32
|
|
struct ldim_dev_custom_s {/* custom (40Byte) + 129Bytes */
|
|
unsigned int custome_attr_0;
|
|
unsigned int custome_attr_1;
|
|
unsigned int custome_attr_2;
|
|
unsigned int custome_attr_3;
|
|
unsigned int custome_attr_4;
|
|
unsigned int custome_attr_5;
|
|
unsigned int custome_attr_6;
|
|
unsigned int custome_attr_7;
|
|
unsigned int custome_attr_8;
|
|
unsigned int custome_attr_9;
|
|
unsigned char custome_param_size;
|
|
unsigned int custome_param[32];
|
|
};
|
|
|
|
#define LDIM_INIT_ON_MAX 1000
|
|
#define LDIM_INIT_OFF_MAX 24
|
|
struct ldim_dev_init_s {
|
|
unsigned char cmd_size;
|
|
unsigned char cmd_data[LDIM_INIT_ON_MAX + LDIM_INIT_OFF_MAX];
|
|
};
|
|
|
|
struct ldim_dev_attr_s {
|
|
struct lcd_header_s head;
|
|
struct ldim_dev_basic_s basic;
|
|
struct ldim_dev_if_s interface;
|
|
struct ldim_dev_pwm_s pwm;
|
|
struct ldim_dev_ctrl_s ctrl;
|
|
struct ldim_dev_profile_s profile;
|
|
struct ldim_dev_custom_s custome;
|
|
struct ldim_dev_init_s init;
|
|
};
|
|
|
|
#define CC_LCD_EXT_NAME_LEN_MAX (30)
|
|
|
|
#define LCD_EXTERN_CMD_SIZE_DYNAMIC 0xff
|
|
#define LCD_EXTERN_INIT_ON_MAX 3000
|
|
#define LCD_EXTERN_INIT_OFF_MAX 100
|
|
|
|
struct lcd_ext_basic_s {
|
|
char ext_name[CC_LCD_EXT_NAME_LEN_MAX];
|
|
unsigned char ext_index; // set it as 0
|
|
unsigned char ext_type; // LCD_EXTERN_I2C, LCD_EXTERN_SPI, LCD_EXTERN_MIPI
|
|
unsigned char ext_status; // 1 is okay, 0 is disable
|
|
};
|
|
|
|
struct lcd_ext_type_s {
|
|
unsigned char value_0; //i2c_addr //spi_gpio_cs
|
|
unsigned char value_1; //i2c_second_addr //spi_gpio_clk
|
|
unsigned char value_2; //i2c_bus //spi_gpio_data
|
|
unsigned char value_3; //cmd_size //spi_clk_freq[bit 7:0] //unit: hz
|
|
unsigned char value_4; //spi_clk_freq[bit 15:8]
|
|
unsigned char value_5; //spi_clk_freq[bit 23:16]
|
|
unsigned char value_6; //spi_clk_freq[bit 31:24]
|
|
unsigned char value_7; //spi_clk_pol
|
|
unsigned char value_8; //cmd_size
|
|
unsigned char value_9; //reserved for future usage
|
|
};
|
|
|
|
#define CC_EXT_CMD_MAX_CNT (300)
|
|
|
|
//special cmd for different parse
|
|
#define LCD_EXT_CMD_TYPE_MULTI_LIST_FR 0x21 /* dlg fr multi list, 1byte frame rate*/
|
|
#define LCD_EXT_CMD_TYPE_MULTI_LIST_UFR 0x2f /* ufr fr multi list, 2byte frame rate*/
|
|
#define LCD_EXT_CMD_TYPE_CMD_BIN2 0xa0 /* replace data with offset by reg_addr */
|
|
#define LCD_EXT_CMD_TYPE_CMD_BIN 0xb0 /* auto fill reg addr 0x0, and data */
|
|
#define LCD_EXT_CMD_TYPE_CMD 0xc0
|
|
#define LCD_EXT_CMD_TYPE_CMD_BIN_DATA 0xd0 /* nonexistent reg_addr, all data replace */
|
|
#define LCD_EXT_CMD_TYPE_CMD_MULTI 0xe0
|
|
#define LCD_EXT_CMD_TYPE_CMD2_MULTI 0xe1
|
|
#define LCD_EXT_CMD_TYPE_CMD3_MULTI 0xe2
|
|
#define LCD_EXT_CMD_TYPE_CMD4_MULTI 0xe3
|
|
#define LCD_EXT_CMD_TYPE_MULTI_CMD 0xec /* cmd for multi list matching*/
|
|
#define LCD_EXT_CMD_TYPE_MULTI_DFT_CMD 0xed /* cmd for multi list matching,
|
|
* as default setting will bypass when power on
|
|
*/
|
|
#define LCD_EXT_CMD_TYPE_GPIO 0xf0
|
|
#define LCD_EXT_CMD_TYPE_WAIT_GPIO 0xf4
|
|
#define LCD_EXT_CMD_TYPE_DELAY 0xfd
|
|
#define LCD_EXT_CMD_TYPE_END 0xff
|
|
|
|
struct lcd_ext_attr_s {
|
|
struct lcd_header_s head;
|
|
struct lcd_ext_basic_s basic;
|
|
struct lcd_ext_type_s type;
|
|
unsigned char cmd_data[LCD_EXTERN_INIT_ON_MAX+LCD_EXTERN_INIT_OFF_MAX];
|
|
};
|
|
|
|
struct lcd_tcon_bin_path_header_s {
|
|
unsigned int crc32;
|
|
unsigned int data_size;
|
|
unsigned char version;
|
|
unsigned char data_load_level;
|
|
unsigned char init_load;
|
|
unsigned char ready;
|
|
unsigned int mem_total_size;
|
|
unsigned int block_cnt;
|
|
unsigned char reserved[12];
|
|
};
|
|
|
|
struct lcd_tcon_spi_header_s {
|
|
unsigned int crc32;
|
|
unsigned int data_size;
|
|
unsigned short version;
|
|
unsigned short load_level;
|
|
unsigned short reserved;
|
|
unsigned short block_cnt;
|
|
};
|
|
|
|
struct lcd_tcon_spi_block_s {
|
|
unsigned short data_type;
|
|
unsigned short data_index;
|
|
unsigned int data_flag;
|
|
unsigned int spi_offset;
|
|
unsigned int spi_size;
|
|
unsigned int param_cnt;
|
|
};
|
|
|
|
struct lcd_optical_attr_s {
|
|
struct lcd_header_s head;
|
|
unsigned int hdr_support;
|
|
unsigned int features;
|
|
unsigned int primaries_r_x;
|
|
unsigned int primaries_r_y;
|
|
unsigned int primaries_g_x;
|
|
unsigned int primaries_g_y;
|
|
unsigned int primaries_b_x;
|
|
unsigned int primaries_b_y;
|
|
unsigned int white_point_x;
|
|
unsigned int white_point_y;
|
|
unsigned int luma_max;
|
|
unsigned int luma_min;
|
|
unsigned int luma_avg;
|
|
unsigned char ldim_support;
|
|
unsigned char adv_flag_1;
|
|
unsigned char adv_flag_2;
|
|
unsigned char adv_flag_3;
|
|
unsigned int luma_peak;
|
|
unsigned int adv_val[8];
|
|
};
|
|
|
|
#define CC_MAX_SUPPORT_PANEL_CNT (128)
|
|
|
|
#define CC_MAX_PANEL_ALL_INFO_TAG_SIZE (16)
|
|
#define CS_PANEL_ALL_INFO_TAG_CONTENT "panel_all_info"
|
|
|
|
struct all_info_header_s {
|
|
unsigned int crc32;
|
|
unsigned short data_len;
|
|
unsigned short version;
|
|
unsigned char tag[CC_MAX_PANEL_ALL_INFO_TAG_SIZE];
|
|
unsigned int max_panel_cnt;
|
|
unsigned int cur_panel_cnt;
|
|
unsigned int sec_off;
|
|
unsigned int sec_cnt;
|
|
unsigned int sec_size;
|
|
unsigned int sec_len;
|
|
unsigned int item_head_off;
|
|
unsigned int item_head_cnt;
|
|
unsigned int item_head_size;
|
|
unsigned int item_head_len;
|
|
unsigned int def_flag;
|
|
unsigned char rev[12];
|
|
};
|
|
|
|
#define CC_MAX_PANEL_ALL_ONE_SEC_TAG_SIZE (16)
|
|
#define CC_MAX_PANEL_ALL_ONE_SEC_TAG_CONTENT "panel_all_data0"
|
|
|
|
extern int model_debug_flag;
|
|
extern unsigned int g_clk_mode;
|
|
|
|
struct dccd_info_s {
|
|
unsigned char *data_buf;
|
|
unsigned int data_size;
|
|
unsigned short calc_chksum; //calculated checksum, need bit[7:0] = 0x00
|
|
unsigned char checksum; //checksum byte inside dccd buffer
|
|
unsigned char is_dccd; //check support dccd
|
|
|
|
unsigned char has_tcon_file; //check TCON_BIN_PATH
|
|
unsigned int is_dccd_flow; //check need to run dccd flow
|
|
};
|
|
|
|
struct dccd_info_s *get_dccd_info(void);
|
|
|
|
int trans_buffer_data(const char *data_str, unsigned int data_buf[]);
|
|
int handle_read_bin_file(const char *file_name, unsigned long max_len);
|
|
|
|
#ifdef CONFIG_AML_LCD
|
|
int check_param_valid(int mode, int parse_len, unsigned char parse_buf[],
|
|
int ori_len, unsigned char ori_buf[]);
|
|
|
|
extern int glcd_cus_ctrl_cnt;
|
|
int handle_lcd_cus_ctrl(unsigned char *p_attr, unsigned char version);
|
|
|
|
#ifdef CONFIG_AML_LCD_TCON
|
|
int handle_tcon_bin(void);
|
|
int handle_tcon_path(void);
|
|
#endif
|
|
#endif
|
|
|
|
unsigned char model_data_checksum(unsigned char *buf, unsigned int len);
|
|
unsigned char model_data_lrc(unsigned char *buf, unsigned int len);
|
|
|
|
#endif //__PAEL_INI_H__
|