EDID 1.4: Trivial support for new detailed sections.
Nothing actually decoded yet, but at least we print what they are. New in EDID 1.4: - Color Management Data (0xF9), Section 3.10.3.7 - CVT 3 Byte Code Descriptor (0xF8), Section 3.10.3.8 - Established Timings III Descriptor (0xF7), section 3.10.3.9 - Manufacturer-specified data tag (0x00 - 0x0F), section 3.10.3.12
This commit is contained in:
parent
bac3ecde39
commit
f6df66cc89
|
@ -286,6 +286,9 @@
|
||||||
#define _WHITE_GAMMA2(x) _GAMMA(x[14])
|
#define _WHITE_GAMMA2(x) _GAMMA(x[14])
|
||||||
#define WHITE_GAMMA2 _WHITE_GAMMA2(c)
|
#define WHITE_GAMMA2 _WHITE_GAMMA2(c)
|
||||||
#define ADD_STD_TIMINGS 0xFA
|
#define ADD_STD_TIMINGS 0xFA
|
||||||
|
#define COLOR_MANAGEMENT_DATA 0xF9
|
||||||
|
#define CVT_3BYTE_DATA 0xF8
|
||||||
|
#define ADD_EST_TIMINGS 0xF7
|
||||||
#define ADD_DUMMY 0x10
|
#define ADD_DUMMY 0x10
|
||||||
|
|
||||||
#define _NEXT_DT_MD_SECTION(x) (x = (x + DET_TIMING_INFO_LEN))
|
#define _NEXT_DT_MD_SECTION(x) (x = (x + DET_TIMING_INFO_LEN))
|
||||||
|
@ -418,8 +421,13 @@ struct detailed_timings {
|
||||||
#define DS_RANGES 0xFD
|
#define DS_RANGES 0xFD
|
||||||
#define DS_WHITE_P 0xFB
|
#define DS_WHITE_P 0xFB
|
||||||
#define DS_STD_TIMINGS 0xFA
|
#define DS_STD_TIMINGS 0xFA
|
||||||
|
#define DS_CMD 0xF9
|
||||||
|
#define DS_CVT 0xF8
|
||||||
|
#define DS_EST_III 0xF7
|
||||||
#define DS_DUMMY 0x10
|
#define DS_DUMMY 0x10
|
||||||
#define DS_UNKOWN 0x100 /* type is an int */
|
#define DS_UNKOWN 0x100 /* type is an int */
|
||||||
|
#define DS_VENDOR 0x101
|
||||||
|
#define DS_VENDOR_MAX 0x110
|
||||||
|
|
||||||
struct monitor_ranges {
|
struct monitor_ranges {
|
||||||
int min_v;
|
int min_v;
|
||||||
|
|
|
@ -1,8 +1,28 @@
|
||||||
|
/*
|
||||||
/* interpret_edid.c: interpret a primary EDID block
|
|
||||||
*
|
|
||||||
* Copyright 1998 by Egbert Eich <Egbert.Eich@Physik.TU-Darmstadt.DE>
|
* Copyright 1998 by Egbert Eich <Egbert.Eich@Physik.TU-Darmstadt.DE>
|
||||||
|
* Copyright 2007 Red Hat, Inc.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the "Software")
|
||||||
|
* to deal in the software without restriction, including without limitation
|
||||||
|
* on the rights to use, copy, modify, merge, publish, distribute, sub
|
||||||
|
* license, and/or sell copies of the Software, and to permit persons to whom
|
||||||
|
* them Software is furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the next
|
||||||
|
* paragraph) shall be included in all copies or substantial portions of the
|
||||||
|
* Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTIBILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
* THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER
|
||||||
|
* IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* interpret_edid.c: interpret a primary EDID block
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_XORG_CONFIG_H
|
#ifdef HAVE_XORG_CONFIG_H
|
||||||
#include <xorg-config.h>
|
#include <xorg-config.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -207,6 +227,15 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
|
||||||
det_mon[i].type = DS_STD_TIMINGS;
|
det_mon[i].type = DS_STD_TIMINGS;
|
||||||
get_dst_timing_section(c,det_mon[i].section.std_t, ver);
|
get_dst_timing_section(c,det_mon[i].section.std_t, ver);
|
||||||
break;
|
break;
|
||||||
|
case COLOR_MANAGEMENT_DATA:
|
||||||
|
det_mon[i].type = DS_CMD;
|
||||||
|
break;
|
||||||
|
case CVT_3BYTE_DATA:
|
||||||
|
det_mon[i].type = DS_CVT;
|
||||||
|
break;
|
||||||
|
case ADD_EST_TIMINGS:
|
||||||
|
det_mon[i].type = DS_EST_III;
|
||||||
|
break;
|
||||||
case ADD_DUMMY:
|
case ADD_DUMMY:
|
||||||
det_mon[i].type = DS_DUMMY;
|
det_mon[i].type = DS_DUMMY;
|
||||||
break;
|
break;
|
||||||
|
@ -214,6 +243,9 @@ get_dt_md_section(Uchar *c, struct edid_version *ver,
|
||||||
det_mon[i].type = DS_UNKOWN;
|
det_mon[i].type = DS_UNKOWN;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (c[3] <= 0x0F) {
|
||||||
|
det_mon[i].type = DS_VENDOR + c[3];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
det_mon[i].type = DT;
|
det_mon[i].type = DT;
|
||||||
get_detailed_timing_section(c,&det_mon[i].section.d_timings);
|
get_detailed_timing_section(c,&det_mon[i].section.d_timings);
|
||||||
|
|
|
@ -290,10 +290,27 @@ print_detailed_monitor_section(int scrnIndex,
|
||||||
m[i].section.wp[j].white_y,
|
m[i].section.wp[j].white_y,
|
||||||
m[i].section.wp[j].white_gamma);
|
m[i].section.wp[j].white_gamma);
|
||||||
break;
|
break;
|
||||||
|
case DS_CMD:
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Color management data: (not decoded)\n");
|
||||||
|
break;
|
||||||
|
case DS_CVT:
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"CVT 3-byte-code modes: (not decoded)\n");
|
||||||
|
break;
|
||||||
|
case DS_EST_III:
|
||||||
|
xf86DrvMsg(scrnIndex, X_INFO,
|
||||||
|
"Established timings III: (not decoded)\n");
|
||||||
|
break;
|
||||||
case DS_DUMMY:
|
case DS_DUMMY:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (m[i].type >= DS_VENDOR && m[i].type <= DS_VENDOR_MAX) {
|
||||||
|
xf86DrvMsg(scrnIndex, X_WARNING,
|
||||||
|
"Unknown vendor-specific block %hx\n",
|
||||||
|
m[i].type - DS_VENDOR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue