EDID 1.4: Decode additional CVT support information.
Table 3.28: Display Range Limits & CVT Support Definition
This commit is contained in:
parent
d1c48955f8
commit
31014d88af
|
@ -271,6 +271,39 @@
|
|||
#define K_2ND_GTF _K_2ND_GTF(c)
|
||||
#define _J_2ND_GTF(x) (x[17] / 2)
|
||||
#define J_2ND_GTF _J_2ND_GTF(c)
|
||||
#define _HAVE_CVT(x) (x[10] == 0x04)
|
||||
#define HAVE_CVT _HAVE_CVT(c)
|
||||
#define _MAX_CLOCK_KHZ(x) (x[12] >> 2)
|
||||
#define MAX_CLOCK_KHZ (MAX_CLOCK * 10000) - (_MAX_CLOCK_KHZ(c) * 250)
|
||||
#define _MAXWIDTH(x) ((x[13] == 0 ? 0 : x[13] + ((x[12] & 0x03) << 8)) * 8)
|
||||
#define MAXWIDTH _MAXWIDTH(c)
|
||||
#define _SUPPORTED_ASPECT(x) x[14]
|
||||
#define SUPPORTED_ASPECT _SUPPORTED_ASPECT(c)
|
||||
#define SUPPORTED_ASPECT_4_3 0x80
|
||||
#define SUPPORTED_ASPECT_16_9 0x40
|
||||
#define SUPPORTED_ASPECT_16_10 0x20
|
||||
#define SUPPORTED_ASPECT_5_4 0x10
|
||||
#define SUPPORTED_ASPECT_15_9 0x08
|
||||
#define _PREFERRED_ASPECT(x) ((x[15] & 0xe0) >> 5)
|
||||
#define PREFERRED_ASPECT _PREFERRED_ASPECT(c)
|
||||
#define PREFERRED_ASPECT_4_3 0
|
||||
#define PREFERRED_ASPECT_16_9 1
|
||||
#define PREFERRED_ASPECT_16_10 2
|
||||
#define PREFERRED_ASPECT_5_4 3
|
||||
#define PREFERRED_ASPECT_15_9 4
|
||||
#define _SUPPORTED_BLANKING(x) ((x[15] & 0x18) >> 3)
|
||||
#define SUPPORTED_BLANKING _SUPPORTED_BLANKING(c)
|
||||
#define CVT_STANDARD 0x01
|
||||
#define CVT_REDUCED 0x02
|
||||
#define _SUPPORTED_SCALING(x) ((x[16] & 0xf0) >> 4)
|
||||
#define SUPPORTED_SCALING _SUPPORTED_SCALING(c)
|
||||
#define SCALING_HSHRINK 0x08
|
||||
#define SCALING_HSTRETCH 0x04
|
||||
#define SCALING_VSHRINK 0x02
|
||||
#define SCALING_VSTRETCH 0x01
|
||||
#define _PREFERRED_REFRESH(x) x[17]
|
||||
#define PREFERRED_REFRESH _PREFERRED_REFRESH(c)
|
||||
|
||||
#define MONITOR_NAME 0xFC
|
||||
#define ADD_COLOR_POINT 0xFB
|
||||
#define WHITEX F_CC(I_CC((GET(D_BW_LOW)),(GET(D_WHITEX)),2))
|
||||
|
@ -447,12 +480,19 @@ struct monitor_ranges {
|
|||
int max_v;
|
||||
int min_h;
|
||||
int max_h;
|
||||
int max_clock;
|
||||
int max_clock; /* in mhz */
|
||||
int gtf_2nd_f;
|
||||
int gtf_2nd_c;
|
||||
int gtf_2nd_m;
|
||||
int gtf_2nd_k;
|
||||
int gtf_2nd_j;
|
||||
int max_clock_khz;
|
||||
int maxwidth; /* in pixels */
|
||||
char supported_aspect;
|
||||
char preferred_aspect;
|
||||
char supported_blanking;
|
||||
char supported_scaling;
|
||||
int preferred_refresh; /* in hz */
|
||||
};
|
||||
|
||||
struct whitePoints{
|
||||
|
@ -482,7 +522,7 @@ struct detailed_monitor_section {
|
|||
Uchar serial[13];
|
||||
Uchar ascii_data[13];
|
||||
Uchar name[13];
|
||||
struct monitor_ranges ranges; /* 40 */
|
||||
struct monitor_ranges ranges; /* 56 */
|
||||
struct std_timings std_t[5]; /* 80 */
|
||||
struct whitePoints wp[2]; /* 32 */
|
||||
/* color management data */
|
||||
|
|
|
@ -329,8 +329,21 @@ get_monitor_ranges(Uchar *c, struct monitor_ranges *r)
|
|||
r->gtf_2nd_m = M_2ND_GTF;
|
||||
r->gtf_2nd_k = K_2ND_GTF;
|
||||
r->gtf_2nd_j = J_2ND_GTF;
|
||||
} else
|
||||
} else {
|
||||
r->gtf_2nd_f = 0;
|
||||
}
|
||||
if (HAVE_CVT) {
|
||||
r->max_clock_khz = MAX_CLOCK_KHZ;
|
||||
r->max_clock = r->max_clock_khz / 1000;
|
||||
r->maxwidth = MAXWIDTH;
|
||||
r->supported_aspect = SUPPORTED_ASPECT;
|
||||
r->preferred_aspect = PREFERRED_ASPECT;
|
||||
r->supported_blanking = SUPPORTED_BLANKING;
|
||||
r->supported_scaling = SUPPORTED_SCALING;
|
||||
r->preferred_refresh = PREFERRED_REFRESH;
|
||||
} else {
|
||||
r->max_clock_khz = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in New Issue
Block a user