blob: 26c4844eda09b5ee9ba0a61e5ffe14a15b44960d [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef INC_AML_LCD_H
#define INC_AML_LCD_H
#include <common.h>
#include <linux/list.h>
#include <amlogic/media/vout/lcd/lcd_vout.h>
#include <amlogic/media/vout/lcd/aml_bl.h>
#ifdef CONFIG_AML_LCD_EXTERN
#include <amlogic/media/vout/lcd/lcd_extern.h>
#endif
#ifdef CONFIG_AML_BL_EXTERN
#include <amlogic/media/vout/lcd/bl_extern.h>
#endif
#define LCD_EXT_I2C_BUS_0 0 //A
#define LCD_EXT_I2C_BUS_1 1 //B
#define LCD_EXT_I2C_BUS_2 2 //C
#define LCD_EXT_I2C_BUS_3 3 //D
#define LCD_EXT_I2C_BUS_4 4 //AO
#define LCD_EXT_I2C_BUS_MAX 0xff
#define LCD_EXT_I2C_BUS_INVALID 0xff
#define LCD_EXT_I2C_ADDR_INVALID 0xff
#define LCD_EXT_GPIO_INVALID 0xff
#define LCD_EXT_SPI_CLK_FREQ_DFT 10 /* unit: KHz */
#define LCD_EXT_CMD_TYPE_CMD_DELAY 0x00
#define LCD_EXT_CMD_TYPE_CMD2_DELAY 0x01 /* for i2c device 2nd addr */
#define LCD_EXT_CMD_TYPE_CMD3_DELAY 0x02 /* for i2c device 3rd addr */
#define LCD_EXT_CMD_TYPE_CMD4_DELAY 0x03 /* for i2c device 4th addr */
#define LCD_EXT_CMD_TYPE_NONE 0x10
#define LCD_EXT_CMD_TYPE_CMD_BIN2 0xa0 /* with data offset and data_len */
#define LCD_EXT_CMD_TYPE_CMD2_BIN2 0xa1 /* for i2c device 2nd addr */
#define LCD_EXT_CMD_TYPE_CMD3_BIN2 0xa2 /* for i2c device 3rd addr */
#define LCD_EXT_CMD_TYPE_CMD4_BIN2 0xa3 /* for i2c device 4th addr */
#define LCD_EXT_CMD_TYPE_CMD_BIN 0xb0
#define LCD_EXT_CMD_TYPE_CMD2_BIN 0xb1 /* for i2c device 2nd addr */
#define LCD_EXT_CMD_TYPE_CMD3_BIN 0xb2 /* for i2c device 3rd addr */
#define LCD_EXT_CMD_TYPE_CMD4_BIN 0xb3 /* for i2c device 4th addr */
#define LCD_EXT_CMD_TYPE_CMD 0xc0
#define LCD_EXT_CMD_TYPE_CMD2 0xc1 /* for i2c device 2nd addr */
#define LCD_EXT_CMD_TYPE_CMD3 0xc2 /* for i2c device 3rd addr */
#define LCD_EXT_CMD_TYPE_CMD4 0xc3 /* for i2c device 4th addr */
#define LCD_EXT_CMD_TYPE_CMD_BIN_DATA 0xd0 /* without auto fill reg addr 0x0 */
#define LCD_EXT_CMD_TYPE_CMD2_BIN_DATA 0xd1 /* for i2c device 2nd addr */
#define LCD_EXT_CMD_TYPE_CMD3_BIN_DATA 0xd2 /* for i2c device 3rd addr */
#define LCD_EXT_CMD_TYPE_CMD4_BIN_DATA 0xd3 /* for i2c device 4th addr */
#define LCD_EXT_CMD_TYPE_GPIO 0xf0
#define LCD_EXT_CMD_TYPE_CHECK 0xfc
#define LCD_EXT_CMD_TYPE_DELAY 0xfd
#define LCD_EXT_CMD_TYPE_END 0xff
#define LCD_EXT_CMD_SIZE_DYNAMIC 0xff
#define LCD_EXT_DYNAMIC_SIZE_INDEX 1
#define Rsv_val 0xffffffff
struct ext_lcd_config_s {
const char panel_type[15];
unsigned int lcd_type; // LCD_TTL /LCD_LVDS/LCD_VBYONE
unsigned char lcd_bits;
unsigned short h_active;
unsigned short v_active;
unsigned short h_period;
unsigned short v_period;
unsigned short hsync_width;
unsigned short hsync_bp;
unsigned short hsync_pol;
unsigned short vsync_width;
unsigned short vsync_bp;
unsigned short vsync_pol;
unsigned int customer_val_0; //fr_adjust_type
unsigned int customer_val_1; //ss_level
unsigned int customer_val_2; //clk_auto_generate
unsigned int customer_val_3; //pixel clock(unit in Hz)
unsigned int customer_val_4;
unsigned int customer_val_5;
unsigned int customer_val_6;
unsigned int customer_val_7;
unsigned int customer_val_8;
unsigned int customer_val_9;
unsigned int lcd_spc_val0;
unsigned int lcd_spc_val1;
unsigned int lcd_spc_val2;
unsigned int lcd_spc_val3;
unsigned int lcd_spc_val4;
unsigned int lcd_spc_val5;
unsigned int lcd_spc_val6;
unsigned int lcd_spc_val7;
unsigned int lcd_spc_val8;
unsigned int lcd_spc_val9;
unsigned char *init_on;
unsigned char *init_off;
struct lcd_power_step_s *power_on_step;
struct lcd_power_step_s *power_off_step;
/* backlight */
unsigned int level_default;
unsigned int level_max;
unsigned int level_min;
unsigned int level_mid;
unsigned int level_mid_mapping;
unsigned int bl_method;
unsigned int bl_en_gpio;
unsigned short bl_en_gpio_on;
unsigned short bl_en_gpio_off;
unsigned short bl_power_on_delay;
unsigned short bl_power_off_delay;
unsigned int pwm_method;
unsigned int pwm_port;
unsigned int pwm_freq;
unsigned int pwm_duty_max;
unsigned int pwm_duty_min;
unsigned int pwm_gpio;
unsigned int pwm_gpio_off;
unsigned int pwm2_method;
unsigned int pwm2_port;
unsigned int pwm2_freq;
unsigned int pwm2_duty_max;
unsigned int pwm2_duty_min;
unsigned int pwm2_gpio;
unsigned int pwm2_gpio_off;
unsigned int pwm_level_max;
unsigned int pwm_level_min;
unsigned int pwm2_level_max;
unsigned int pwm2_level_min;
unsigned int pwm_on_delay;
unsigned int pwm_off_delay;
/* backlight extern */
unsigned int bl_ext_index;
};
#define LCD_NUM_MAX 20
#define LCD_PRBS_MODE_LVDS BIT(0)
#define LCD_PRBS_MODE_VX1 BIT(1)
#define LCD_PRBS_MODE_MAX 2
extern struct ext_lcd_config_s ext_lcd_config[LCD_NUM_MAX];
#endif /* INC_AML_LCD_H */