blob: a4d1e744fe217f3d01cd022be1cf248d5fa72a0c [file] [log] [blame] [edit]
/* 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"
#ifdef __cplusplus
extern "C" {
#endif
extern int handle_model_list(void);
extern int handle_model_sum(void);
#ifdef __cplusplus
}
#endif
#pragma pack (1)
enum lcd_type_e {
LCD_TTL = 0,
LCD_LVDS,
LCD_VBYONE,
LCD_MIPI,
LCD_MLVDS,
LCD_P2P,
LCD_TYPE_MAX,
};
enum bl_ctrl_method_e {
BL_CTRL_GPIO = 0,
BL_CTRL_PWM,
BL_CTRL_PWM_COMBO,
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_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_type;
unsigned char lcd_bits;
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;
unsigned short hsync_bp;
unsigned char hsync_pol;
unsigned short vsync_width;
unsigned short vsync_bp;
unsigned char vsync_pol;
};
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_swap[64]; //64byte //channel_swap
};
struct lcd_ctrl_s {
unsigned int ctrl_attr_flag; //4byte //each bit enable one attr behind
unsigned short ctrl_attr_0; //2byte //
unsigned short ctrl_attr_0_parm0; //2byte //
unsigned short ctrl_attr_0_parm1; //2byte //
unsigned short ctrl_attr_0_parm2; //2byte //
unsigned short ctrl_attr_0_parm3; //2byte //
unsigned short ctrl_attr_0_parm4; //2byte //
unsigned short ctrl_attr_0_parm5; //2byte //
unsigned short ctrl_attr_0_parm6; //2byte //
unsigned short ctrl_attr_0_parm7; //2byte //
unsigned short ctrl_attr_1; //2byte //
unsigned short ctrl_attr_1_parm0; //2byte //
unsigned short ctrl_attr_1_parm1; //2byte //
unsigned short ctrl_attr_1_parm2; //2byte //
unsigned short ctrl_attr_1_parm3; //2byte //
unsigned short ctrl_attr_1_parm4; //2byte //
unsigned short ctrl_attr_1_parm5; //2byte //
unsigned short ctrl_attr_1_parm6; //2byte //
unsigned short ctrl_attr_1_parm7; //2byte //
unsigned short ctrl_attr_2; //2byte //
unsigned short ctrl_attr_2_parm0; //2byte //
unsigned short ctrl_attr_2_parm1; //2byte //
unsigned short ctrl_attr_2_parm2; //2byte //
unsigned short ctrl_attr_2_parm3; //2byte //
unsigned short ctrl_attr_2_parm4; //2byte //
unsigned short ctrl_attr_2_parm5; //2byte //
unsigned short ctrl_attr_2_parm6; //2byte //
unsigned short ctrl_attr_2_parm7; //2byte //
unsigned short ctrl_attr_3; //2byte //
unsigned short ctrl_attr_3_parm0; //2byte //
unsigned short ctrl_attr_3_parm1; //2byte //
unsigned short ctrl_attr_3_parm2; //2byte //
unsigned short ctrl_attr_3_parm3; //2byte //
unsigned short ctrl_attr_3_parm4; //2byte //
unsigned short ctrl_attr_3_parm5; //2byte //
unsigned short ctrl_attr_3_parm6; //2byte //
unsigned short ctrl_attr_3_parm7; //2byte //
};
struct lcd_v2_attr_s {
struct lcd_header_s head;
struct lcd_phy_s phy;
struct lcd_ctrl_s ctrl;
};
#define CC_BL_NAME_LEN_MAX (30)
struct bl_header_s {
unsigned int crc32;
unsigned short data_len;
unsigned short version;
unsigned short rev;
};
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_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 bl_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
};
#define CC_LDIM_DEV_NAME_LEN_MAX (30)
struct ldim_dev_header_s {/* header (10Byte) */
unsigned int crc32;
unsigned short data_len;
unsigned short version;
unsigned short rev;
};
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 ldim_dev_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)
struct lcd_ext_header_s {
unsigned int crc32;
unsigned short data_len;
unsigned short version;
unsigned short rev;
};
#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)
#define LCD_EXTERN_INIT_CMD 0x00
#define LCD_EXTERN_INIT_CMD2 0x01 //only for special i2c device
#define LCD_EXTERN_INIT_NONE 0x10
#define LCD_EXTERN_INIT_GPIO 0xf0
#define LCD_EXTERN_INIT_END 0xff
struct lcd_ext_attr_s {
struct lcd_ext_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 panel_misc_s {
char version[8];
char outputmode[64];
char connector_type[64];
unsigned char panel_reverse;
};
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"
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__