no-OS
edid.h
Go to the documentation of this file.
1 /***************************************************************************/
40 #ifndef _EDID_H_
41 #define _EDID_H_
42 
43 /******************************************************************************/
44 /***************************** Include Files **********************************/
45 /******************************************************************************/
46 
47 #include <stdbool.h>
48 #include <stdint.h>
49 #include "wrapper.h"
50 
51 /******************************************************************************/
52 /********************** Macros and Constants Definitions **********************/
53 /******************************************************************************/
54 
55 /* when defined, SINK 3D is filtered by chip supported 3D formats */
56 #define EDID_MSG if(edid_msg_enable)DBG_MSG
57 #define STD_DESC_LEN sizeof(struct std_timing)
58 
59 /******************************************************************************/
60 /*************************** Types Declarations *******************************/
61 /******************************************************************************/
62 
63 struct std_timing {
64  uint8_t pixel_clk[2]; /* Divide by 100 to get MHZ */
65  uint8_t h_active; /* In pixels */
66  uint8_t h_blanking;
67  uint8_t h_act_blnk44;
68  uint8_t v_active; /* In lines */
69  uint8_t v_blanking;
70  uint8_t v_act_blnk44;
71  uint8_t h_sync_offs; /* In pixels */
72  uint8_t h_sync_width;
73  uint8_t v_offs_pulse; /* In lines */
74  uint8_t hv_offs_pulse; /* H offs: H sync width: V Offs: V sync width */
75  uint8_t h_sizemm;
76  uint8_t v_sizemm;
77  uint8_t hv_sizemm44;
78  uint8_t h_border;
79  uint8_t v_border;
80  uint8_t flags;
81 };
82 
83 struct strg_desc {
84  uint8_t zero_3[3];
85  uint8_t tag; /* 0xfc=MonName 0xfe=String 0xff=MonSerial */
86  uint8_t zero;
87  uint8_t string[13];
88 };
89 
91  uint8_t zero_3[3];
92  uint8_t tag_0xfd;
93  uint8_t zero;
94  uint8_t min_v_freq; /* Hz */
95  uint8_t max_v_freq;
96  uint8_t min_h_freq;
97  uint8_t max_h_freq;
98  uint8_t max_pix_clk; /* Multiply by 10 to get MHz */
99  uint8_t sec_timing_tag;
100  uint8_t sec_timing[7];
101 };
102 
103 struct vsdb_block {
104  uint8_t tag_len; /* b0-4=Len b5-7=Tag(3) */
105  uint8_t reg_id[3]; /* 0x03 0x0C 0x00 */
106  uint8_t spa[2]; /* AB:CD */
107  uint8_t deep_clr; /* If Len > 5 */
108  uint8_t max_tmds; /* If Len > 5 */
109  uint8_t latency_flags; /* If Len > 5 */
110 };
111 
112 /* Structure that maps an EDID block 0 */
113 struct edid_struct {
114  uint8_t header[8]; /* 0x00 */
115  uint8_t man_id[2]; /* 0x08 */
116  uint8_t prod_code[2];
117  uint8_t serial[4];
118  uint8_t man_week;
119  uint8_t man_year;
120  uint8_t edid_rev[2]; /* 0x12 */
121  uint8_t vid_inp_def; /* 0x14 */
122  uint8_t max_h_size_cm;
123  uint8_t max_v_size_cm;
124  uint8_t disp_gamma;
125  uint8_t feat_support;
126  uint8_t color_specs[10]; /* 0x19 */
127  uint8_t est_timing[3]; /* 0x23 */
128  uint8_t stnd_timing[16]; /* 0x26 */
129  uint8_t detailed_timing[72]; /* 0x36 */
130  uint8_t ext_blk_count; /* 0x7E */
131  uint8_t checksum; /* 0x7F */
132 };
133 
134 /* Structure that maps an EDID extension block (CEA block) */
135 struct cea_ext {
136  uint8_t tag;
137  uint8_t rev_num;
138  uint8_t desc_offs;
139  uint8_t res;
140  uint8_t data[123];
141  uint8_t checksum;
142 };
143 
144 struct edid_info {
145  uint8_t deep_color;
146  uint16_t spa_offset;
147  bool csum_err;
148  uint16_t svd_offset;
149 };
150 
152  uint8_t format;
153  uint8_t sample_rate;
154  uint8_t max_channels;
155  uint16_t bit;
156 };
157 
158 /******************************************************************************/
159 /************************ Functions Declarations ******************************/
160 /******************************************************************************/
161 
162 /* Parse and display the EDID message received. */
163 uint8_t ADIAPI_mw_edid_parse(uint8_t *edid_ptr, uint16_t *spa_offset,
164  uint8_t seg_num);
165 
166 /* Parse the EDID message received without displaying to the terminal. */
167 uint8_t ADIAPI_mw_edid_parse_silent(uint8_t *edid_ptr, uint16_t *spa_offset,
168  uint8_t seg_num);
169 
170 /* Get the information about the last parsed EDID. */
171 void ADIAPI_mw_edid_get_info(struct edid_info *info_ptr);
172 
173 /* Get the audio information about the last parsed EDID. */
174 void ADIAPI_mw_edid_get_audio_info(struct edid_audio_info *audio_info_ptr);
175 
176 /* Enable or disable EDID verbose output. */
177 void ADIAPI_mw_edid_enable_debug_msg(bool enable);
178 
179 #endif
edid_struct::color_specs
uint8_t color_specs[10]
Definition: edid.h:126
ADIAPI_mw_edid_get_audio_info
void ADIAPI_mw_edid_get_audio_info(struct edid_audio_info *audio_info_ptr)
Definition: edid.c:1012
edid_struct::est_timing
uint8_t est_timing[3]
Definition: edid.h:127
edid_struct::checksum
uint8_t checksum
Definition: edid.h:131
std_timing::h_sync_offs
uint8_t h_sync_offs
Definition: edid.h:71
ADIAPI_mw_edid_parse_silent
uint8_t ADIAPI_mw_edid_parse_silent(uint8_t *edid_ptr, uint16_t *spa_offset, uint8_t seg_num)
Definition: edid.c:977
std_timing::h_sync_width
uint8_t h_sync_width
Definition: edid.h:72
edid_struct::man_id
uint8_t man_id[2]
Definition: edid.h:115
cea_ext
Definition: edid.h:135
std_timing::v_active
uint8_t v_active
Definition: edid.h:68
mon_range_desc::max_h_freq
uint8_t max_h_freq
Definition: edid.h:97
vsdb_block
Definition: edid.h:103
strg_desc::string
uint8_t string[13]
Definition: edid.h:87
vsdb_block::deep_clr
uint8_t deep_clr
Definition: edid.h:107
mon_range_desc::sec_timing_tag
uint8_t sec_timing_tag
Definition: edid.h:99
mon_range_desc::max_v_freq
uint8_t max_v_freq
Definition: edid.h:95
edid_struct::serial
uint8_t serial[4]
Definition: edid.h:117
vsdb_block::latency_flags
uint8_t latency_flags
Definition: edid.h:109
wrapper.h
mon_range_desc::sec_timing
uint8_t sec_timing[7]
Definition: edid.h:100
edid_struct::man_week
uint8_t man_week
Definition: edid.h:118
vsdb_block::reg_id
uint8_t reg_id[3]
Definition: edid.h:105
ADIAPI_mw_edid_enable_debug_msg
void ADIAPI_mw_edid_enable_debug_msg(bool enable)
Definition: edid.c:1027
edid_info::csum_err
bool csum_err
Definition: edid.h:147
edid_struct::edid_rev
uint8_t edid_rev[2]
Definition: edid.h:120
edid_struct::detailed_timing
uint8_t detailed_timing[72]
Definition: edid.h:129
edid_audio_info::max_channels
uint8_t max_channels
Definition: edid.h:154
std_timing
Definition: edid.h:63
edid_struct::ext_blk_count
uint8_t ext_blk_count
Definition: edid.h:130
std_timing::h_active
uint8_t h_active
Definition: edid.h:65
edid_info
Definition: edid.h:144
EDID_MSG
#define EDID_MSG
Definition: edid.h:56
cea_ext::data
uint8_t data[123]
Definition: edid.h:140
std_timing::hv_sizemm44
uint8_t hv_sizemm44
Definition: edid.h:77
std_timing::v_act_blnk44
uint8_t v_act_blnk44
Definition: edid.h:70
vsdb_block::tag_len
uint8_t tag_len
Definition: edid.h:104
edid_struct::vid_inp_def
uint8_t vid_inp_def
Definition: edid.h:121
edid_audio_info::bit
uint16_t bit
Definition: edid.h:155
std_timing::v_border
uint8_t v_border
Definition: edid.h:79
std_timing::v_sizemm
uint8_t v_sizemm
Definition: edid.h:76
vsdb_block::spa
uint8_t spa[2]
Definition: edid.h:106
std_timing::v_offs_pulse
uint8_t v_offs_pulse
Definition: edid.h:73
edid_audio_info::sample_rate
uint8_t sample_rate
Definition: edid.h:153
ADIAPI_mw_edid_parse
uint8_t ADIAPI_mw_edid_parse(uint8_t *edid_ptr, uint16_t *spa_offset, uint8_t seg_num)
Definition: edid.c:902
std_timing::pixel_clk
uint8_t pixel_clk[2]
Definition: edid.h:64
cea_ext::tag
uint8_t tag
Definition: edid.h:136
edid_struct::max_v_size_cm
uint8_t max_v_size_cm
Definition: edid.h:123
strg_desc::zero
uint8_t zero
Definition: edid.h:86
ADIAPI_mw_edid_get_audio_info
void ADIAPI_mw_edid_get_audio_info(struct edid_audio_info *audio_info_ptr)
Definition: edid.c:1012
ADIAPI_mw_edid_parse_silent
uint8_t ADIAPI_mw_edid_parse_silent(uint8_t *edid_ptr, uint16_t *spa_offset, uint8_t seg_num)
Definition: edid.c:977
strg_desc
Definition: edid.h:83
mon_range_desc::min_h_freq
uint8_t min_h_freq
Definition: edid.h:96
edid_struct::feat_support
uint8_t feat_support
Definition: edid.h:125
edid_struct
Definition: edid.h:113
ADIAPI_mw_edid_get_info
void ADIAPI_mw_edid_get_info(struct edid_info *info_ptr)
Definition: edid.c:999
edid_struct::disp_gamma
uint8_t disp_gamma
Definition: edid.h:124
mon_range_desc::zero
uint8_t zero
Definition: edid.h:93
std_timing::flags
uint8_t flags
Definition: edid.h:80
edid_struct::stnd_timing
uint8_t stnd_timing[16]
Definition: edid.h:128
strg_desc::tag
uint8_t tag
Definition: edid.h:85
mon_range_desc::zero_3
uint8_t zero_3[3]
Definition: edid.h:91
edid_struct::prod_code
uint8_t prod_code[2]
Definition: edid.h:116
strg_desc::zero_3
uint8_t zero_3[3]
Definition: edid.h:84
ADIAPI_mw_edid_parse
uint8_t ADIAPI_mw_edid_parse(uint8_t *edid_ptr, uint16_t *spa_offset, uint8_t seg_num)
Definition: edid.c:902
std_timing::v_blanking
uint8_t v_blanking
Definition: edid.h:69
edid.h
EDID control module header.
cea_ext::checksum
uint8_t checksum
Definition: edid.h:141
edid_struct::max_h_size_cm
uint8_t max_h_size_cm
Definition: edid.h:122
std_timing::hv_offs_pulse
uint8_t hv_offs_pulse
Definition: edid.h:74
NULL
#define NULL
Definition: wrapper.h:64
vsdb_block::max_tmds
uint8_t max_tmds
Definition: edid.h:108
cea_ext::desc_offs
uint8_t desc_offs
Definition: edid.h:138
mon_range_desc::min_v_freq
uint8_t min_v_freq
Definition: edid.h:94
edid_info::spa_offset
uint16_t spa_offset
Definition: edid.h:146
mon_range_desc
Definition: edid.h:90
cea_ext::res
uint8_t res
Definition: edid.h:139
edid_struct::header
uint8_t header[8]
Definition: edid.h:114
ADIAPI_mw_edid_enable_debug_msg
void ADIAPI_mw_edid_enable_debug_msg(bool enable)
Definition: edid.c:1027
edid_struct::man_year
uint8_t man_year
Definition: edid.h:119
edid_audio_info
Definition: edid.h:151
mon_range_desc::max_pix_clk
uint8_t max_pix_clk
Definition: edid.h:98
std_timing::h_border
uint8_t h_border
Definition: edid.h:78
std_timing::h_act_blnk44
uint8_t h_act_blnk44
Definition: edid.h:67
std_timing::h_sizemm
uint8_t h_sizemm
Definition: edid.h:75
edid_info::deep_color
uint8_t deep_color
Definition: edid.h:145
edid_info::svd_offset
uint16_t svd_offset
Definition: edid.h:148
ADIAPI_mw_edid_get_info
void ADIAPI_mw_edid_get_info(struct edid_info *info_ptr)
Definition: edid.c:999
cea_ext::rev_num
uint8_t rev_num
Definition: edid.h:137
std_timing::h_blanking
uint8_t h_blanking
Definition: edid.h:66
mon_range_desc::tag_0xfd
uint8_t tag_0xfd
Definition: edid.h:92
edid_audio_info::format
uint8_t format
Definition: edid.h:152