blob: 7cb8e2895649e635670f48e6dd2b2b4fbb89cb31 [file] [log] [blame]
/*
* drivers/display/lcd/aml_lcd_unifykey.h
*
* Copyright (C) 2015 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
*/
#ifndef __AML_LCD_UNIFYKEY_H__
#define __AML_LCD_UNIFYKEY_H__
#define LCD_UKEY_RETRY_CNT_MAX 5
/*
lcd unifykey data struct: little-endian, for example:
4byte: d[0]=0x01, d[1]=0x02, d[2] = 0x03, d[3]= 0x04,
data = 0x04030201
*/
/* define lcd unifykey length */
#define LCD_UKEY_HEAD_SIZE 10
#define LCD_UKEY_HEAD_CRC32 4
#define LCD_UKEY_HEAD_DATA_LEN 2
#define LCD_UKEY_HEAD_VERSION 2
#define LCD_UKEY_HEAD_RESERVED 2
struct aml_lcd_unifykey_header_s {
unsigned int crc32;
unsigned short data_len;
unsigned short version;
unsigned short reserved;
};
/* ********************************
* lcd
* ********************************* */
#define LCD_UKEY_LCD_SIZE 265
/* header (10Byte) */
/* LCD_UKEY_HEAD_SIZE */
/* basic (36Byte) */
#define LCD_UKEY_MODEL_NAME 30
#define LCD_UKEY_INTERFACE 1
#define LCD_UKEY_LCD_BITS 1
#define LCD_UKEY_SCREEN_WIDTH 2
#define LCD_UKEY_SCREEN_HEIGHT 2
/* timing (18Byte) */
#define LCD_UKEY_H_ACTIVE 2
#define LCD_UKEY_V_ACTIVE 2
#define LCD_UKEY_H_PERIOD 2
#define LCD_UKEY_V_PERIOD 2
#define LCD_UKEY_HS_WIDTH 2
#define LCD_UKEY_HS_BP 2
#define LCD_UKEY_HS_POL 1
#define LCD_UKEY_VS_WIDTH 2
#define LCD_UKEY_VS_BP 2
#define LCD_UKEY_VS_POL 1
/* customer (31Byte) */
#define LCD_UKEY_FR_ADJ_TYPE 1
#define LCD_UKEY_SS_LEVEL 1
#define LCD_UKEY_CLK_AUTO_GEN 1
#define LCD_UKEY_PCLK 4
#define LCD_UKEY_H_PERIOD_MIN 2
#define LCD_UKEY_H_PERIOD_MAX 2
#define LCD_UKEY_V_PERIOD_MIN 2
#define LCD_UKEY_V_PERIOD_MAX 2
#define LCD_UKEY_PCLK_MIN 4
#define LCD_UKEY_PCLK_MAX 4
#define LCD_UKEY_CUST_VAL_8 4
#define LCD_UKEY_CUST_VAL_9 4
/* interface (20Byte) */
#define LCD_UKEY_IF_ATTR_0 2
#define LCD_UKEY_IF_ATTR_1 2
#define LCD_UKEY_IF_ATTR_2 2
#define LCD_UKEY_IF_ATTR_3 2
#define LCD_UKEY_IF_ATTR_4 2
#define LCD_UKEY_IF_ATTR_5 2
#define LCD_UKEY_IF_ATTR_6 2
#define LCD_UKEY_IF_ATTR_7 2
#define LCD_UKEY_IF_ATTR_8 2
#define LCD_UKEY_IF_ATTR_9 2
/* power (5Byte * n) */
#define LCD_UKEY_PWR_TYPE 1
#define LCD_UKEY_PWR_INDEX 1
#define LCD_UKEY_PWR_VAL 1
#define LCD_UKEY_PWR_DELAY 2
/* ********************************
* lcd extern
* ********************************* */
#define LCD_UKEY_LCD_EXT_SIZE 550
/* header (10Byte) */
/* LCD_UKEY_HEAD_SIZE */
/* basic (33Byte) */
#define LCD_UKEY_EXT_NAME 30
#define LCD_UKEY_EXT_INDEX 1
#define LCD_UKEY_EXT_TYPE 1
#define LCD_UKEY_EXT_STATUS 1
/* type (10Byte) */
#define LCD_UKEY_EXT_TYPE_VAL_0 1
#define LCD_UKEY_EXT_TYPE_VAL_1 1
#define LCD_UKEY_EXT_TYPE_VAL_2 1
#define LCD_UKEY_EXT_TYPE_VAL_3 1
#define LCD_UKEY_EXT_TYPE_VAL_4 1
#define LCD_UKEY_EXT_TYPE_VAL_5 1
#define LCD_UKEY_EXT_TYPE_VAL_6 1
#define LCD_UKEY_EXT_TYPE_VAL_7 1
#define LCD_UKEY_EXT_TYPE_VAL_8 1
#define LCD_UKEY_EXT_TYPE_VAL_9 1
/* init (cmd_size) */
#define LCD_UKEY_EXT_INIT_TYPE 1
/*#define LCD_UKEY_EXT_INIT_VAL 1 //not defined */
#define LCD_UKEY_EXT_INIT_DELAY 1
/* ********************************
* backlight
* ********************************* */
/* V1: 92 */
/* V2: 102 */
#define LCD_UKEY_BL_SIZE 102
/* header (10Byte) */
/* LCD_UKEY_HEAD_SIZE */
/* basic (30Byte) */
#define LCD_UKEY_BL_NAME 30
/* level (12Byte) */
#define LCD_UKEY_BL_LEVEL_UBOOT 2
#define LCD_UKEY_BL_LEVEL_KERNEL 2
#define LCD_UKEY_BL_LEVEL_MAX 2
#define LCD_UKEY_BL_LEVEL_MIN 2
#define LCD_UKEY_BL_LEVEL_MID 2
#define LCD_UKEY_BL_LEVEL_MID_MAP 2
/* method (8Byte) */
#define LCD_UKEY_BL_METHOD 1
#define LCD_UKEY_BL_EN_GPIO 1
#define LCD_UKEY_BL_EN_GPIO_ON 1
#define LCD_UKEY_BL_EN_GPIO_OFF 1
#define LCD_UKEY_BL_ON_DELAY 2
#define LCD_UKEY_BL_OFF_DELAY 2
/* pwm (32Byte) */
#define LCD_UKEY_BL_PWM_ON_DELAY 2
#define LCD_UKEY_BL_PWM_OFF_DELAY 2
#define LCD_UKEY_BL_PWM_METHOD 1
#define LCD_UKEY_BL_PWM_PORT 1
#define LCD_UKEY_BL_PWM_FREQ 4
#define LCD_UKEY_BL_PWM_DUTY_MAX 1
#define LCD_UKEY_BL_PWM_DUTY_MIN 1
#define LCD_UKEY_BL_PWM_GPIO 1
#define LCD_UKEY_BL_PWM_GPIO_OFF 1
#define LCD_UKEY_BL_PWM2_METHOD 1
#define LCD_UKEY_BL_PWM2_PORT 1
#define LCD_UKEY_BL_PWM2_FREQ 4
#define LCD_UKEY_BL_PWM2_DUTY_MAX 1
#define LCD_UKEY_BL_PWM2_DUTY_MIN 1
#define LCD_UKEY_BL_PWM2_GPIO 1
#define LCD_UKEY_BL_PWM2_GPIO_OFF 1
#define LCD_UKEY_BL_PWM_LEVEL_MAX 2
#define LCD_UKEY_BL_PWM_LEVEL_MIN 2
#define LCD_UKEY_BL_PWM2_LEVEL_MAX 2
#define LCD_UKEY_BL_PWM2_LEVEL_MIN 2
/* customer(10Byte) */ /* V2 */
#define LCD_UKEY_BL_CUST_VAL_0 2
#define LCD_UKEY_BL_CUST_VAL_1 2
#define LCD_UKEY_BL_CUST_VAL_2 2
#define LCD_UKEY_BL_CUST_VAL_3 2
#define LCD_UKEY_BL_CUST_VAL_4 2
/* ********************************
* API
* ********************************* */
extern int aml_lcd_unifykey_len_check(int key_len, int len);
extern int aml_lcd_unifykey_check(const char *key_name);
extern int aml_lcd_unifykey_header_check(unsigned char *buf, struct aml_lcd_unifykey_header_s *header);
extern int aml_lcd_unifykey_get(const char *key_name, unsigned char *buf, int *len);
extern void aml_lcd_unifykey_test(void);
extern void aml_lcd_unifykey_dump(void);
#endif