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