blob: bd64b9b862f154f31e1aac8b5393ebd1cb51e178 [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef EDP_TX_H
#define EDP_TX_H
#define DPTX_EDID_READ_RETRY_MAX 5
#define DPTX_AUX_CMD_WRITE 0x8
#define DPTX_AUX_CMD_READ 0x9
#define DPTX_AUX_CMD_I2C_WRITE 0x0
#define DPTX_AUX_CMD_I2C_WRITE_MOT 0x4
#define DPTX_AUX_CMD_I2C_READ 0x1
#define DPTX_AUX_CMD_I2C_READ_MOT 0x5
#define DPTX_AUX_CMD_I2C_WRITE_STATUS 0x2
#define DPTX_AUX_REPLY_CODE_ACK 0
#define DPTX_AUX_REPLY_CODE_NACK BIT(0)
#define DPTX_AUX_REPLY_CODE_DEFER BIT(1)
#define DPTX_AUX_REPLY_CODE_I2C_NACK BIT(2)
#define DPTX_AUX_REPLY_CODE_I2C_DEFER BIT(3)
struct dptx_aux_req_s {
unsigned int cmd_code;
unsigned int cmd_state; /* 0:write, 1:read */
unsigned int address;
unsigned int byte_cnt;
unsigned char *data;
};
struct dptx_edid_timing_s {
unsigned int pclk;
unsigned short h_active;
unsigned short h_blank;
unsigned short v_active;
unsigned short v_blank;
unsigned short h_fp;
unsigned short h_pw;
unsigned short v_fp;
unsigned short v_pw;
unsigned int h_size;
unsigned int v_size;
unsigned short h_border;
unsigned short v_border;
unsigned int timing_ctrl;
};
struct dptx_edid_range_limit_s {
unsigned int min_vfreq;
unsigned int max_v_freq;
unsigned int min_hfreq;
unsigned int max_hfreq;
unsigned int max_pclk;
unsigned int GTF_ctrl;
unsigned int GTF_start_hfreq;
unsigned int GTF_C;
unsigned int GTF_M;
unsigned int GTF_K;
unsigned int GTF_J;
};
struct dptx_edid_s {
unsigned char manufacturer_id[4]; //[8:9]2byte
unsigned short product_id; //[10:11]2byte
unsigned int product_sn; //[12:15]4byte
unsigned char week; //[16]1byte
unsigned int year; //[17]1byte
unsigned short version; //[18:19]2byte
unsigned int established_timing; //[35:37]3byte
unsigned int standard_timing1; //[38:45]4byte
unsigned int standard_timing2; //[46:53]4byte
struct dptx_edid_timing_s preferred_timing;
unsigned int string_flag; //[2]serial_num, [1]asc_string, [0]name
unsigned char name[14]; //include "\0"
unsigned char serial_num[14];
unsigned char asc_string[14];
struct dptx_edid_range_limit_s range_limit;
unsigned char ext_flag; //[126]1byte
//[127]1byte, 256-(sum(byte0:126)%256) =? 0x100-(sum(byte0:126) & 0xff)
unsigned char checksum;
};
#endif