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