Lines Matching refs:edid
147 static int check_edid(unsigned char *edid) in check_edid() argument
149 unsigned char *block = edid + ID_MANUFACTURER_NAME, manufacturer[4]; in check_edid()
172 if (edid[i] != edid_v1_header[i]) { in check_edid()
179 b = edid + EDID_STRUCT_DISPLAY; in check_edid()
186 b = edid + DETAILED_TIMING_DESCRIPTIONS_START; in check_edid()
209 static void fix_edid(unsigned char *edid, int fix) in fix_edid() argument
217 memcpy(edid, edid_v1_header, 8); in fix_edid()
221 b = edid + EDID_STRUCT_DISPLAY; in fix_edid()
223 edid[127] += 0x80; in fix_edid()
227 b = edid + DETAILED_TIMING_DESCRIPTIONS_START; in fix_edid()
251 csum += edid[i]; in fix_edid()
253 edid[127] = 256 - csum; in fix_edid()
258 static int edid_checksum(unsigned char *edid) in edid_checksum() argument
261 int i, err = 0, fix = check_edid(edid); in edid_checksum()
264 fix_edid(edid, fix); in edid_checksum()
267 csum += edid[i]; in edid_checksum()
268 all_null |= edid[i]; in edid_checksum()
279 static int edid_check_header(unsigned char *edid) in edid_check_header() argument
281 int i, err = 1, fix = check_edid(edid); in edid_check_header()
284 fix_edid(edid, fix); in edid_check_header()
287 if (edid[i] != edid_v1_header[i]) in edid_check_header()
618 static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize, in fb_create_modedb() argument
630 if (edid == NULL || !edid_checksum(edid) || in fb_create_modedb()
631 !edid_check_header(edid)) { in fb_create_modedb()
636 ver = edid[EDID_STRUCT_VERSION]; in fb_create_modedb()
637 rev = edid[EDID_STRUCT_REVISION]; in fb_create_modedb()
642 block = edid + DETAILED_TIMING_DESCRIPTIONS_START; in fb_create_modedb()
655 block = edid + ESTABLISHED_TIMING_1; in fb_create_modedb()
659 block = edid + STD_TIMING_DESCRIPTIONS_START; in fb_create_modedb()
663 block = edid + DETAILED_TIMING_DESCRIPTIONS_START; in fb_create_modedb()
697 static int fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *specs) in fb_get_monitor_limits() argument
702 block = edid + DETAILED_TIMING_DESCRIPTIONS_START; in fb_get_monitor_limits()
726 modes = fb_create_modedb(edid, &num_modes, specs); in fb_get_monitor_limits()
778 static void get_monspecs(unsigned char *edid, struct fb_monspecs *specs) in get_monspecs() argument
782 block = edid + EDID_STRUCT_DISPLAY; in get_monspecs()
784 fb_get_monitor_limits(edid, specs); in get_monspecs()
896 int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var) in fb_parse_edid() argument
901 if (edid == NULL || var == NULL) in fb_parse_edid()
904 if (!(edid_checksum(edid))) in fb_parse_edid()
907 if (!(edid_check_header(edid))) in fb_parse_edid()
910 block = edid + DETAILED_TIMING_DESCRIPTIONS_START; in fb_parse_edid()
939 void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) in fb_edid_to_monspecs() argument
944 if (edid == NULL) in fb_edid_to_monspecs()
947 if (!(edid_checksum(edid))) in fb_edid_to_monspecs()
950 if (!(edid_check_header(edid))) in fb_edid_to_monspecs()
955 specs->version = edid[EDID_STRUCT_VERSION]; in fb_edid_to_monspecs()
956 specs->revision = edid[EDID_STRUCT_REVISION]; in fb_edid_to_monspecs()
964 parse_vendor_block(edid + ID_MANUFACTURER_NAME, specs); in fb_edid_to_monspecs()
966 block = edid + DETAILED_TIMING_DESCRIPTIONS_START; in fb_edid_to_monspecs()
981 get_monspecs(edid, specs); in fb_edid_to_monspecs()
983 specs->modedb = fb_create_modedb(edid, &specs->modedb_len, specs); in fb_edid_to_monspecs()
1407 int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var) in fb_parse_edid() argument
1411 void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) in fb_edid_to_monspecs() argument
1497 unsigned char *edid = NULL; in fb_firmware_edid() local
1506 edid = edid_info.dummy; in fb_firmware_edid()
1508 return edid; in fb_firmware_edid()