edid-decode: add support for DisplayID tags 0x09 and 0x0a
Support Video Timing Range Limits and Product Serial Number.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Hans Verkuil
4 years ago
376 | 376 | print_timings(" ", t, suffix); |
377 | 377 | } |
378 | 378 | |
379 | // tag 0x0b | |
380 | ||
381 | static void parse_displayid_gp_string(const unsigned char *x) | |
379 | // tag 0x09 | |
380 | ||
381 | static void parse_displayid_video_timing_range_limits(const unsigned char *x) | |
382 | { | |
383 | check_displayid_datablock_revision(x); | |
384 | ||
385 | if (!check_displayid_datablock_length(x, 15, 15)) | |
386 | return; | |
387 | printf(" Pixel Clock: %.3f-%.3f MHz\n", | |
388 | (double)(x[3] | (x[4] << 8) | (x[5] << 16)) / 100.0, | |
389 | (double)(x[6] | (x[7] << 8) | (x[8] << 16)) / 100.0); | |
390 | printf(" Horizontal Frequency: %u-%u kHz\n", x[9], x[10]); | |
391 | printf(" Minimum Horizontal Blanking: %u pixels\n", x[11] | (x[12] << 8)); | |
392 | printf(" Vertical Refresh: %u-%u Hz\n", x[13], x[14]); | |
393 | printf(" Minimum Vertical Blanking: %u lines\n", x[15] | (x[16] << 8)); | |
394 | if (x[17] & 0x80) | |
395 | printf(" Supports Interlaced\n"); | |
396 | if (x[17] & 0x40) | |
397 | printf(" Supports CVT\n"); | |
398 | if (x[17] & 0x20) | |
399 | printf(" Supports CVT Reduced Blanking\n"); | |
400 | if (x[17] & 0x10) | |
401 | printf(" Discrete frequency display device\n"); | |
402 | } | |
403 | ||
404 | // tag 0x0a and 0x0b | |
405 | ||
406 | static void parse_displayid_string(const unsigned char *x) | |
382 | 407 | { |
383 | 408 | check_displayid_datablock_revision(x); |
384 | 409 | if (check_displayid_datablock_length(x)) |
916 | 941 | print_timings(" ", find_vic_id(i + 1), suffix); |
917 | 942 | } |
918 | 943 | break; |
919 | case 0x0b: parse_displayid_gp_string(x + offset); break; | |
944 | case 0x09: parse_displayid_video_timing_range_limits(x + offset); break; | |
945 | case 0x0a: | |
946 | case 0x0b: parse_displayid_string(x + offset); break; | |
920 | 947 | case 0x0e: parse_displayid_transfer_characteristics(x + offset); break; |
921 | 948 | case 0x11: |
922 | 949 | for (i = 0; i < len / 7; i++) |