Lines Matching refs:info
59 decode_vendor_and_product_identification (const uchar *edid, MonitorInfo *info) in decode_vendor_and_product_identification() argument
64 info->manufacturer_code[0] = get_bits (edid[0x08], 2, 6); in decode_vendor_and_product_identification()
65 info->manufacturer_code[1] = get_bits (edid[0x08], 0, 1) << 3; in decode_vendor_and_product_identification()
66 info->manufacturer_code[1] |= get_bits (edid[0x09], 5, 7); in decode_vendor_and_product_identification()
67 info->manufacturer_code[2] = get_bits (edid[0x09], 0, 4); in decode_vendor_and_product_identification()
68 info->manufacturer_code[3] = '\0'; in decode_vendor_and_product_identification()
70 info->manufacturer_code[0] += 'A' - 1; in decode_vendor_and_product_identification()
71 info->manufacturer_code[1] += 'A' - 1; in decode_vendor_and_product_identification()
72 info->manufacturer_code[2] += 'A' - 1; in decode_vendor_and_product_identification()
75 info->product_code = edid[0x0b] << 8 | edid[0x0a]; in decode_vendor_and_product_identification()
78 info->serial_number = in decode_vendor_and_product_identification()
86 info->production_week = -1; in decode_vendor_and_product_identification()
90 info->production_week = -1; in decode_vendor_and_product_identification()
95 info->production_week = edid[0x10]; in decode_vendor_and_product_identification()
101 info->production_year = -1; in decode_vendor_and_product_identification()
102 info->model_year = 1990 + edid[0x11]; in decode_vendor_and_product_identification()
106 info->production_year = 1990 + edid[0x11]; in decode_vendor_and_product_identification()
107 info->model_year = -1; in decode_vendor_and_product_identification()
114 decode_edid_version (const uchar *edid, MonitorInfo *info) in decode_edid_version() argument
116 info->major_version = edid[0x12]; in decode_edid_version()
117 info->minor_version = edid[0x13]; in decode_edid_version()
123 decode_display_parameters (const uchar *edid, MonitorInfo *info) in decode_display_parameters() argument
126 info->is_digital = get_bit (edid[0x14], 7); in decode_display_parameters()
128 if (info->is_digital) in decode_display_parameters()
143 info->ad.digital.bits_per_primary = bit_depth[bits]; in decode_display_parameters()
148 info->ad.digital.interface = interfaces[bits]; in decode_display_parameters()
150 info->ad.digital.interface = UNDEFINED; in decode_display_parameters()
164 info->ad.analog.video_signal_level = levels[bits][0]; in decode_display_parameters()
165 info->ad.analog.sync_signal_level = levels[bits][1]; in decode_display_parameters()
166 info->ad.analog.total_signal_level = levels[bits][2]; in decode_display_parameters()
168 info->ad.analog.blank_to_black = get_bit (edid[0x14], 4); in decode_display_parameters()
170 info->ad.analog.separate_hv_sync = get_bit (edid[0x14], 3); in decode_display_parameters()
171 info->ad.analog.composite_sync_on_h = get_bit (edid[0x14], 2); in decode_display_parameters()
172 info->ad.analog.composite_sync_on_green = get_bit (edid[0x14], 1); in decode_display_parameters()
174 info->ad.analog.serration_on_vsync = get_bit (edid[0x14], 0); in decode_display_parameters()
180 info->width_mm = -1; in decode_display_parameters()
181 info->height_mm = -1; in decode_display_parameters()
182 info->aspect_ratio = -1.0; in decode_display_parameters()
186 info->width_mm = -1; in decode_display_parameters()
187 info->height_mm = -1; in decode_display_parameters()
188 info->aspect_ratio = 100.0 / (edid[0x15] + 99); in decode_display_parameters()
192 info->width_mm = -1; in decode_display_parameters()
193 info->height_mm = -1; in decode_display_parameters()
194 info->aspect_ratio = 100.0 / (edid[0x16] + 99); in decode_display_parameters()
195 info->aspect_ratio = 1/info->aspect_ratio; /* portrait */ in decode_display_parameters()
199 info->width_mm = 10 * edid[0x15]; in decode_display_parameters()
200 info->height_mm = 10 * edid[0x16]; in decode_display_parameters()
205 info->gamma = -1.0; in decode_display_parameters()
207 info->gamma = (edid[0x17] + 100.0) / 100.0; in decode_display_parameters()
210 info->standby = get_bit (edid[0x18], 7); in decode_display_parameters()
211 info->suspend = get_bit (edid[0x18], 6); in decode_display_parameters()
212 info->active_off = get_bit (edid[0x18], 5); in decode_display_parameters()
214 if (info->is_digital) in decode_display_parameters()
216 info->ad.digital.rgb444 = TRUE; in decode_display_parameters()
218 info->ad.digital.ycrcb444 = 1; in decode_display_parameters()
220 info->ad.digital.ycrcb422 = 1; in decode_display_parameters()
230 info->ad.analog.color_type = color_type[bits]; in decode_display_parameters()
233 info->srgb_is_standard = get_bit (edid[0x18], 2); in decode_display_parameters()
236 info->preferred_timing_includes_native = get_bit (edid[0x18], 1); in decode_display_parameters()
239 info->continuous_frequency = get_bit (edid[0x18], 0); in decode_display_parameters()
258 decode_color_characteristics (const uchar *edid, MonitorInfo *info) in decode_color_characteristics() argument
260 info->red_x = decode_fraction (edid[0x1b], get_bits (edid[0x19], 6, 7)); in decode_color_characteristics()
261 info->red_y = decode_fraction (edid[0x1c], get_bits (edid[0x19], 5, 4)); in decode_color_characteristics()
262 info->green_x = decode_fraction (edid[0x1d], get_bits (edid[0x19], 2, 3)); in decode_color_characteristics()
263 info->green_y = decode_fraction (edid[0x1e], get_bits (edid[0x19], 0, 1)); in decode_color_characteristics()
264 info->blue_x = decode_fraction (edid[0x1f], get_bits (edid[0x1a], 6, 7)); in decode_color_characteristics()
265 info->blue_y = decode_fraction (edid[0x20], get_bits (edid[0x1a], 4, 5)); in decode_color_characteristics()
266 info->white_x = decode_fraction (edid[0x21], get_bits (edid[0x1a], 2, 3)); in decode_color_characteristics()
267 info->white_y = decode_fraction (edid[0x22], get_bits (edid[0x1a], 0, 1)); in decode_color_characteristics()
273 decode_established_timings (const uchar *edid, MonitorInfo *info) in decode_established_timings() argument
319 info->established[idx++] = established[i][j]; in decode_established_timings()
326 decode_standard_timings (const uchar *edid, MonitorInfo *info) in decode_standard_timings() argument
348 info->standard[i].width = w; in decode_standard_timings()
349 info->standard[i].height = h; in decode_standard_timings()
350 info->standard[i].frequency = get_bits (second, 0, 5) + 60; in decode_standard_timings()
382 MonitorInfo *info) in decode_display_descriptor() argument
387 decode_lf_string (desc + 5, 13, info->dsc_product_name); in decode_display_descriptor()
390 decode_lf_string (desc + 5, 13, info->dsc_serial_number); in decode_display_descriptor()
393 decode_lf_string (desc + 5, 13, info->dsc_string); in decode_display_descriptor()
482 decode_descriptors (const uchar *edid, MonitorInfo *info) in decode_descriptors() argument
495 decode_display_descriptor (edid + index, info); in decode_descriptors()
500 edid + index, &(info->detailed_timings[timing_idx++])); in decode_descriptors()
504 info->n_detailed_timings = timing_idx; in decode_descriptors()
511 MonitorInfo *info) in decode_check_sum() argument
519 info->checksum = check; in decode_check_sum()
525 MonitorInfo *info = calloc (1, sizeof (MonitorInfo)); in decode_edid() local
527 decode_check_sum (edid, info); in decode_edid()
530 !decode_vendor_and_product_identification (edid, info) || in decode_edid()
531 !decode_edid_version (edid, info) || in decode_edid()
532 !decode_display_parameters (edid, info) || in decode_edid()
533 !decode_color_characteristics (edid, info) || in decode_edid()
534 !decode_established_timings (edid, info) || in decode_edid()
535 !decode_standard_timings (edid, info) || in decode_edid()
536 !decode_descriptors (edid, info)) { in decode_edid()
537 free(info); in decode_edid()
541 return info; in decode_edid()
551 dump_monitor_info (MonitorInfo *info) in dump_monitor_info() argument
556 info->checksum, info->checksum? "incorrect" : "correct"); in dump_monitor_info()
557 printf ("Manufacturer Code: %s\n", info->manufacturer_code); in dump_monitor_info()
558 printf ("Product Code: 0x%x\n", info->product_code); in dump_monitor_info()
559 printf ("Serial Number: %u\n", info->serial_number); in dump_monitor_info()
561 if (info->production_week != -1) in dump_monitor_info()
562 printf ("Production Week: %d\n", info->production_week); in dump_monitor_info()
566 if (info->production_year != -1) in dump_monitor_info()
567 printf ("Production Year: %d\n", info->production_year); in dump_monitor_info()
571 if (info->model_year != -1) in dump_monitor_info()
572 printf ("Model Year: %d\n", info->model_year); in dump_monitor_info()
576 printf ("EDID revision: %d.%d\n", info->major_version, info->minor_version); in dump_monitor_info()
578 printf ("Display is %s\n", info->is_digital? "digital" : "analog"); in dump_monitor_info()
579 if (info->is_digital) in dump_monitor_info()
582 if (info->ad.digital.bits_per_primary != -1) in dump_monitor_info()
583 printf ("Bits Per Primary: %d\n", info->ad.digital.bits_per_primary); in dump_monitor_info()
587 switch (info->ad.digital.interface) in dump_monitor_info()
599 printf ("RGB 4:4:4: %s\n", yesno (info->ad.digital.rgb444)); in dump_monitor_info()
600 printf ("YCrCb 4:4:4: %s\n", yesno (info->ad.digital.ycrcb444)); in dump_monitor_info()
601 printf ("YCrCb 4:2:2: %s\n", yesno (info->ad.digital.ycrcb422)); in dump_monitor_info()
606 printf ("Video Signal Level: %f\n", info->ad.analog.video_signal_level); in dump_monitor_info()
607 printf ("Sync Signal Level: %f\n", info->ad.analog.sync_signal_level); in dump_monitor_info()
608 printf ("Total Signal Level: %f\n", info->ad.analog.total_signal_level); in dump_monitor_info()
611 yesno (info->ad.analog.blank_to_black)); in dump_monitor_info()
613 yesno (info->ad.analog.separate_hv_sync)); in dump_monitor_info()
615 yesno (info->ad.analog.composite_sync_on_h)); in dump_monitor_info()
617 yesno (info->ad.analog.serration_on_vsync)); in dump_monitor_info()
619 switch (info->ad.analog.color_type) in dump_monitor_info()
631 if (info->width_mm == -1) in dump_monitor_info()
634 printf ("Width: %d mm\n", info->width_mm); in dump_monitor_info()
636 if (info->height_mm == -1) in dump_monitor_info()
639 printf ("Height: %d mm\n", info->height_mm); in dump_monitor_info()
641 if (info->aspect_ratio > 0) in dump_monitor_info()
642 printf ("Aspect Ratio: %f\n", info->aspect_ratio); in dump_monitor_info()
646 if (info->gamma >= 0) in dump_monitor_info()
647 printf ("Gamma: %f\n", info->gamma); in dump_monitor_info()
651 printf ("Standby: %s\n", yesno (info->standby)); in dump_monitor_info()
652 printf ("Suspend: %s\n", yesno (info->suspend)); in dump_monitor_info()
653 printf ("Active Off: %s\n", yesno (info->active_off)); in dump_monitor_info()
655 printf ("SRGB is Standard: %s\n", yesno (info->srgb_is_standard)); in dump_monitor_info()
657 yesno (info->preferred_timing_includes_native)); in dump_monitor_info()
658 printf ("Continuous Frequency: %s\n", yesno (info->continuous_frequency)); in dump_monitor_info()
660 printf ("Red X: %f\n", info->red_x); in dump_monitor_info()
661 printf ("Red Y: %f\n", info->red_y); in dump_monitor_info()
662 printf ("Green X: %f\n", info->green_x); in dump_monitor_info()
663 printf ("Green Y: %f\n", info->green_y); in dump_monitor_info()
664 printf ("Blue X: %f\n", info->blue_x); in dump_monitor_info()
665 printf ("Blue Y: %f\n", info->blue_y); in dump_monitor_info()
666 printf ("White X: %f\n", info->white_x); in dump_monitor_info()
667 printf ("White Y: %f\n", info->white_y); in dump_monitor_info()
673 Timing *timing = &(info->established[i]); in dump_monitor_info()
686 Timing *timing = &(info->standard[i]); in dump_monitor_info()
695 for (i = 0; i < info->n_detailed_timings; ++i) in dump_monitor_info()
697 DetailedTiming *timing = &(info->detailed_timings[i]); in dump_monitor_info()
701 (i == 0 && info->preferred_timing_includes_native)? in dump_monitor_info()
750 printf (" Product Name: %s\n", info->dsc_product_name); in dump_monitor_info()
751 printf (" Serial Number: %s\n", info->dsc_serial_number); in dump_monitor_info()
752 printf (" Unspecified String: %s\n", info->dsc_string); in dump_monitor_info()