/* 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__
