| |
| /* |
| * 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 |
| * ********************************* */ |
| /* V1: 265 */ |
| /* V2: 319 */ |
| #define LCD_UKEY_LCD_SIZE 319 |
| |
| /* header (10Byte) */ |
| /* LCD_UKEY_HEAD_SIZE */ |
| /* basic (36Byte) */ |
| #define LCD_UKEY_MODEL_NAME (LCD_UKEY_HEAD_SIZE + 0) |
| #define LCD_UKEY_INTERFACE (LCD_UKEY_MODEL_NAME + 30) |
| #define LCD_UKEY_LCD_BITS (LCD_UKEY_MODEL_NAME + 31) |
| #define LCD_UKEY_SCREEN_WIDTH (LCD_UKEY_MODEL_NAME + 32) |
| #define LCD_UKEY_SCREEN_HEIGHT (LCD_UKEY_MODEL_NAME + 34) |
| /* timing (18Byte) */ |
| #define LCD_UKEY_H_ACTIVE (LCD_UKEY_MODEL_NAME + 36)/* +36 byte */ |
| #define LCD_UKEY_V_ACTIVE (LCD_UKEY_MODEL_NAME + 38) |
| #define LCD_UKEY_H_PERIOD (LCD_UKEY_MODEL_NAME + 40) |
| #define LCD_UKEY_V_PERIOD (LCD_UKEY_MODEL_NAME + 42) |
| #define LCD_UKEY_HS_WIDTH (LCD_UKEY_MODEL_NAME + 44) |
| #define LCD_UKEY_HS_BP (LCD_UKEY_MODEL_NAME + 46) |
| #define LCD_UKEY_HS_POL (LCD_UKEY_MODEL_NAME + 48) |
| #define LCD_UKEY_VS_WIDTH (LCD_UKEY_MODEL_NAME + 49) |
| #define LCD_UKEY_VS_BP (LCD_UKEY_MODEL_NAME + 51) |
| #define LCD_UKEY_VS_POL (LCD_UKEY_MODEL_NAME + 53) |
| /* customer (31Byte) */ |
| #define LCD_UKEY_FR_ADJ_TYPE (LCD_UKEY_MODEL_NAME + 54)/* +36+18 byte */ |
| #define LCD_UKEY_SS_LEVEL (LCD_UKEY_MODEL_NAME + 55) |
| #define LCD_UKEY_CLK_AUTO_GEN (LCD_UKEY_MODEL_NAME + 56) |
| #define LCD_UKEY_PCLK (LCD_UKEY_MODEL_NAME + 57) |
| #define LCD_UKEY_H_PERIOD_MIN (LCD_UKEY_MODEL_NAME + 61) |
| #define LCD_UKEY_H_PERIOD_MAX (LCD_UKEY_MODEL_NAME + 63) |
| #define LCD_UKEY_V_PERIOD_MIN (LCD_UKEY_MODEL_NAME + 65) |
| #define LCD_UKEY_V_PERIOD_MAX (LCD_UKEY_MODEL_NAME + 67) |
| #define LCD_UKEY_PCLK_MIN (LCD_UKEY_MODEL_NAME + 69) |
| #define LCD_UKEY_PCLK_MAX (LCD_UKEY_MODEL_NAME + 73) |
| #define LCD_UKEY_CUST_VAL_8 (LCD_UKEY_MODEL_NAME + 77) |
| #define LCD_UKEY_CUST_VAL_9 (LCD_UKEY_MODEL_NAME + 81) |
| /* interface (20Byte) */ |
| #define LCD_UKEY_IF_ATTR_0 (LCD_UKEY_MODEL_NAME + 85)/* +36+18+31 byte */ |
| #define LCD_UKEY_IF_ATTR_1 (LCD_UKEY_MODEL_NAME + 87) |
| #define LCD_UKEY_IF_ATTR_2 (LCD_UKEY_MODEL_NAME + 89) |
| #define LCD_UKEY_IF_ATTR_3 (LCD_UKEY_MODEL_NAME + 91) |
| #define LCD_UKEY_IF_ATTR_4 (LCD_UKEY_MODEL_NAME + 93) |
| #define LCD_UKEY_IF_ATTR_5 (LCD_UKEY_MODEL_NAME + 95) |
| #define LCD_UKEY_IF_ATTR_6 (LCD_UKEY_MODEL_NAME + 97) |
| #define LCD_UKEY_IF_ATTR_7 (LCD_UKEY_MODEL_NAME + 99) |
| #define LCD_UKEY_IF_ATTR_8 (LCD_UKEY_MODEL_NAME + 101) |
| #define LCD_UKEY_IF_ATTR_9 (LCD_UKEY_MODEL_NAME + 103) |
| /* ctrl (44Byte) */ /* V2 */ |
| #define LCD_UKEY_CTRL_FLAG (LCD_UKEY_MODEL_NAME + 105)/* +36+18+31+20 byte */ |
| #define LCD_UKEY_CTRL_ATTR_0 (LCD_UKEY_MODEL_NAME + 109) |
| #define LCD_UKEY_CTRL_ATTR_1 (LCD_UKEY_MODEL_NAME + 111) |
| #define LCD_UKEY_CTRL_ATTR_2 (LCD_UKEY_MODEL_NAME + 113) |
| #define LCD_UKEY_CTRL_ATTR_3 (LCD_UKEY_MODEL_NAME + 115) |
| #define LCD_UKEY_CTRL_ATTR_4 (LCD_UKEY_MODEL_NAME + 117) |
| #define LCD_UKEY_CTRL_ATTR_5 (LCD_UKEY_MODEL_NAME + 119) |
| #define LCD_UKEY_CTRL_ATTR_6 (LCD_UKEY_MODEL_NAME + 121) |
| #define LCD_UKEY_CTRL_ATTR_7 (LCD_UKEY_MODEL_NAME + 123) |
| #define LCD_UKEY_CTRL_ATTR_8 (LCD_UKEY_MODEL_NAME + 125) |
| #define LCD_UKEY_CTRL_ATTR_9 (LCD_UKEY_MODEL_NAME + 127) |
| #define LCD_UKEY_CTRL_ATTR_10 (LCD_UKEY_MODEL_NAME + 129) |
| #define LCD_UKEY_CTRL_ATTR_11 (LCD_UKEY_MODEL_NAME + 131) |
| #define LCD_UKEY_CTRL_ATTR_12 (LCD_UKEY_MODEL_NAME + 133) |
| #define LCD_UKEY_CTRL_ATTR_13 (LCD_UKEY_MODEL_NAME + 135) |
| #define LCD_UKEY_CTRL_ATTR_14 (LCD_UKEY_MODEL_NAME + 137) |
| #define LCD_UKEY_CTRL_ATTR_15 (LCD_UKEY_MODEL_NAME + 139) |
| #define LCD_UKEY_CTRL_ATTR_16 (LCD_UKEY_MODEL_NAME + 141) |
| #define LCD_UKEY_CTRL_ATTR_17 (LCD_UKEY_MODEL_NAME + 143) |
| #define LCD_UKEY_CTRL_ATTR_18 (LCD_UKEY_MODEL_NAME + 145) |
| #define LCD_UKEY_CTRL_ATTR_19 (LCD_UKEY_MODEL_NAME + 147) |
| /* phy (10Byte) */ /* V2 */ |
| #define LCD_UKEY_PHY_ATTR_0 (LCD_UKEY_MODEL_NAME + 149)/* +36+18+31+20+44 byte */ |
| #define LCD_UKEY_PHY_ATTR_1 (LCD_UKEY_MODEL_NAME + 150) |
| #define LCD_UKEY_PHY_ATTR_2 (LCD_UKEY_MODEL_NAME + 151) |
| #define LCD_UKEY_PHY_ATTR_3 (LCD_UKEY_MODEL_NAME + 152) |
| #define LCD_UKEY_PHY_ATTR_4 (LCD_UKEY_MODEL_NAME + 153) |
| #define LCD_UKEY_PHY_ATTR_5 (LCD_UKEY_MODEL_NAME + 154) |
| #define LCD_UKEY_PHY_ATTR_6 (LCD_UKEY_MODEL_NAME + 155) |
| #define LCD_UKEY_PHY_ATTR_7 (LCD_UKEY_MODEL_NAME + 156) |
| #define LCD_UKEY_PHY_ATTR_8 (LCD_UKEY_MODEL_NAME + 157) |
| #define LCD_UKEY_PHY_ATTR_9 (LCD_UKEY_MODEL_NAME + 158) |
| |
| #define LCD_UKEY_DATA_LEN_V1 (LCD_UKEY_MODEL_NAME + 105) |
| #define LCD_UKEY_DATA_LEN_V2 (LCD_UKEY_MODEL_NAME + 159) |
| /* power (5Byte * n) */ |
| /* v1/v2 p + offsite*/ |
| /* 10+36+18+31+20 byte */ |
| /* 10+36+18+31+20+44+10 byte */ |
| #define LCD_UKEY_PWR_TYPE (0) |
| #define LCD_UKEY_PWR_INDEX (1) |
| #define LCD_UKEY_PWR_VAL (2) |
| #define LCD_UKEY_PWR_DELAY (3) |
| |
| /* ******************************** |
| * lcd extern |
| * ********************************* */ |
| #define LCD_UKEY_LCD_EXT_SIZE 550 |
| |
| /* header (10Byte) */ |
| /* LCD_UKEY_HEAD_SIZE */ |
| /* basic (33Byte) */ |
| #define LCD_UKEY_EXT_NAME (LCD_UKEY_HEAD_SIZE + 0) |
| #define LCD_UKEY_EXT_INDEX (LCD_UKEY_EXT_NAME + 30) |
| #define LCD_UKEY_EXT_TYPE (LCD_UKEY_EXT_NAME + 31) |
| #define LCD_UKEY_EXT_STATUS (LCD_UKEY_EXT_NAME + 32) |
| /* type (10Byte) */ |
| #define LCD_UKEY_EXT_TYPE_VAL_0 (LCD_UKEY_EXT_NAME + 33)/* +33 byte */ |
| #define LCD_UKEY_EXT_TYPE_VAL_1 (LCD_UKEY_EXT_NAME + 34) |
| #define LCD_UKEY_EXT_TYPE_VAL_2 (LCD_UKEY_EXT_NAME + 35) |
| #define LCD_UKEY_EXT_TYPE_VAL_3 (LCD_UKEY_EXT_NAME + 36) |
| #define LCD_UKEY_EXT_TYPE_VAL_4 (LCD_UKEY_EXT_NAME + 37) |
| #define LCD_UKEY_EXT_TYPE_VAL_5 (LCD_UKEY_EXT_NAME + 38) |
| #define LCD_UKEY_EXT_TYPE_VAL_6 (LCD_UKEY_EXT_NAME + 39) |
| #define LCD_UKEY_EXT_TYPE_VAL_7 (LCD_UKEY_EXT_NAME + 40) |
| #define LCD_UKEY_EXT_TYPE_VAL_8 (LCD_UKEY_EXT_NAME + 41) |
| #define LCD_UKEY_EXT_TYPE_VAL_9 (LCD_UKEY_EXT_NAME + 42) |
| /* init (cmd_size) */ |
| #define LCD_UKEY_EXT_INIT (LCD_UKEY_EXT_NAME + 43)/* +33+10 byte */ |
| /*#define LCD_UKEY_EXT_INIT_TYPE (0)*/ |
| /*#define LCD_UKEY_EXT_INIT_VAL (1)*/ |
| /*#define LCD_UKEY_EXT_INIT_DELAY (n)*/ |
| |
| |
| /* ******************************** |
| * backlight |
| * ********************************* */ |
| /* V1: 92 */ |
| /* V2: 102 */ |
| #define LCD_UKEY_BL_SIZE 102 |
| |
| /* header (10Byte) */ |
| /* LCD_UKEY_HEAD_SIZE */ |
| /* basic (30Byte) */ |
| #define LCD_UKEY_BL_NAME (LCD_UKEY_HEAD_SIZE + 0) |
| /* level (12Byte) */ |
| #define LCD_UKEY_BL_LEVEL_UBOOT (LCD_UKEY_BL_NAME + 30)/* +30 byte */ |
| #define LCD_UKEY_BL_LEVEL_KERNEL (LCD_UKEY_BL_NAME + 32) |
| #define LCD_UKEY_BL_LEVEL_MAX (LCD_UKEY_BL_NAME + 34) |
| #define LCD_UKEY_BL_LEVEL_MIN (LCD_UKEY_BL_NAME + 36) |
| #define LCD_UKEY_BL_LEVEL_MID (LCD_UKEY_BL_NAME + 38) |
| #define LCD_UKEY_BL_LEVEL_MID_MAP (LCD_UKEY_BL_NAME + 40) |
| /* method (8Byte) */ |
| #define LCD_UKEY_BL_METHOD (LCD_UKEY_BL_NAME + 42)/* +30+12 byte */ |
| #define LCD_UKEY_BL_EN_GPIO (LCD_UKEY_BL_NAME + 43) |
| #define LCD_UKEY_BL_EN_GPIO_ON (LCD_UKEY_BL_NAME + 44) |
| #define LCD_UKEY_BL_EN_GPIO_OFF (LCD_UKEY_BL_NAME + 45) |
| #define LCD_UKEY_BL_ON_DELAY (LCD_UKEY_BL_NAME + 46) |
| #define LCD_UKEY_BL_OFF_DELAY (LCD_UKEY_BL_NAME + 48) |
| /* pwm (32Byte) */ |
| #define LCD_UKEY_BL_PWM_ON_DELAY (LCD_UKEY_BL_NAME + 50)/* +30+12+8 byte */ |
| #define LCD_UKEY_BL_PWM_OFF_DELAY (LCD_UKEY_BL_NAME + 52) |
| #define LCD_UKEY_BL_PWM_METHOD (LCD_UKEY_BL_NAME + 54) |
| #define LCD_UKEY_BL_PWM_PORT (LCD_UKEY_BL_NAME + 55) |
| #define LCD_UKEY_BL_PWM_FREQ (LCD_UKEY_BL_NAME + 56) |
| #define LCD_UKEY_BL_PWM_DUTY_MAX (LCD_UKEY_BL_NAME + 60) |
| #define LCD_UKEY_BL_PWM_DUTY_MIN (LCD_UKEY_BL_NAME + 61) |
| #define LCD_UKEY_BL_PWM_GPIO (LCD_UKEY_BL_NAME + 62) |
| #define LCD_UKEY_BL_PWM_GPIO_OFF (LCD_UKEY_BL_NAME + 63) |
| #define LCD_UKEY_BL_PWM2_METHOD (LCD_UKEY_BL_NAME + 64) |
| #define LCD_UKEY_BL_PWM2_PORT (LCD_UKEY_BL_NAME + 65) |
| #define LCD_UKEY_BL_PWM2_FREQ (LCD_UKEY_BL_NAME + 66) |
| #define LCD_UKEY_BL_PWM2_DUTY_MAX (LCD_UKEY_BL_NAME + 70) |
| #define LCD_UKEY_BL_PWM2_DUTY_MIN (LCD_UKEY_BL_NAME + 71) |
| #define LCD_UKEY_BL_PWM2_GPIO (LCD_UKEY_BL_NAME + 72) |
| #define LCD_UKEY_BL_PWM2_GPIO_OFF (LCD_UKEY_BL_NAME + 73) |
| #define LCD_UKEY_BL_PWM_LEVEL_MAX (LCD_UKEY_BL_NAME + 74) |
| #define LCD_UKEY_BL_PWM_LEVEL_MIN (LCD_UKEY_BL_NAME + 76) |
| #define LCD_UKEY_BL_PWM2_LEVEL_MAX (LCD_UKEY_BL_NAME + 78) |
| #define LCD_UKEY_BL_PWM2_LEVEL_MIN (LCD_UKEY_BL_NAME + 80) |
| /* customer(10Byte) */ /* V2 */ |
| #define LCD_UKEY_BL_CUST_VAL_0 (LCD_UKEY_BL_NAME + 82)/* +30+12+8+32 byte */ |
| #define LCD_UKEY_BL_CUST_VAL_1 (LCD_UKEY_BL_NAME + 84) |
| #define LCD_UKEY_BL_CUST_VAL_2 (LCD_UKEY_BL_NAME + 86) |
| #define LCD_UKEY_BL_CUST_VAL_3 (LCD_UKEY_BL_NAME + 88) |
| #define LCD_UKEY_BL_CUST_VAL_4 (LCD_UKEY_BL_NAME + 90) |
| |
| /* ******************************** |
| * tcon |
| * ********************************* */ |
| #define LCD_UKEY_TCON_SIZE 4096 |
| |
| |
| /* ******************************** |
| * debug flag |
| * ********************************* */ |
| #define LCD_UKEY_DEBUG_NORMAL (1 << 0) |
| #define LCD_UKEY_DEBUG_TCON (1 << 1) |
| |
| /* ******************************** |
| * API |
| * ********************************* */ |
| extern int aml_lcd_unifykey_len_check(int key_len, int len); |
| extern int aml_lcd_unifykey_header_check(unsigned char *buf, struct aml_lcd_unifykey_header_s *header); |
| extern int aml_lcd_unifykey_check(const char *key_name); |
| extern int aml_lcd_unifykey_get(const char *key_name, unsigned char *buf, int *len); |
| extern int aml_lcd_unifykey_check_no_header(const char *key_name); |
| extern int aml_lcd_unifykey_get_no_header(const char *key_name, unsigned char *buf, int *len); |
| |
| extern void aml_lcd_unifykey_test(void); |
| extern void aml_lcd_unifykey_tcon_test(int n); |
| extern void aml_lcd_unifykey_dump(int flag); |
| |
| #endif |