Lines Matching refs:block

100 static int edid_is_serial_block(unsigned char *block)
102 if ((block[0] == 0x00) && (block[1] == 0x00) &&
103 (block[2] == 0x00) && (block[3] == 0xff) &&
104 (block[4] == 0x00))
110 static int edid_is_ascii_block(unsigned char *block)
112 if ((block[0] == 0x00) && (block[1] == 0x00) &&
113 (block[2] == 0x00) && (block[3] == 0xfe) &&
114 (block[4] == 0x00))
120 static int edid_is_limits_block(unsigned char *block)
122 if ((block[0] == 0x00) && (block[1] == 0x00) &&
123 (block[2] == 0x00) && (block[3] == 0xfd) &&
124 (block[4] == 0x00))
130 static int edid_is_monitor_block(unsigned char *block)
132 if ((block[0] == 0x00) && (block[1] == 0x00) &&
133 (block[2] == 0x00) && (block[3] == 0xfc) &&
134 (block[4] == 0x00))
140 static int edid_is_timing_block(unsigned char *block)
142 if ((block[0] != 0x00) || (block[1] != 0x00) ||
143 (block[2] != 0x00) || (block[4] != 0x00))
151 unsigned char *block = edid + ID_MANUFACTURER_NAME, manufacturer[4];
156 manufacturer[0] = ((block[0] & 0x7c) >> 2) + '@';
157 manufacturer[1] = ((block[0] & 0x03) << 3) +
158 ((block[1] & 0xe0) >> 5) + '@';
159 manufacturer[2] = (block[1] & 0x1f) + '@';
161 model = block[2] + (block[3] << 8);
296 static void parse_vendor_block(unsigned char *block, struct fb_monspecs *specs)
298 specs->manufacturer[0] = ((block[0] & 0x7c) >> 2) + '@';
299 specs->manufacturer[1] = ((block[0] & 0x03) << 3) +
300 ((block[1] & 0xe0) >> 5) + '@';
301 specs->manufacturer[2] = (block[1] & 0x1f) + '@';
303 specs->model = block[2] + (block[3] << 8);
304 specs->serial = block[4] + (block[5] << 8) +
305 (block[6] << 16) + (block[7] << 24);
306 specs->year = block[9] + 1990;
307 specs->week = block[8];
330 static void get_chroma(unsigned char *block, struct fb_monspecs *specs)
336 tmp = ((block[5] & (3 << 6)) >> 6) | (block[0x7] << 2);
342 tmp = ((block[5] & (3 << 4)) >> 4) | (block[0x8] << 2);
348 tmp = ((block[5] & (3 << 2)) >> 2) | (block[0x9] << 2);
354 tmp = (block[5] & 3) | (block[0xa] << 2);
360 tmp = ((block[6] & (3 << 6)) >> 6) | (block[0xb] << 2);
366 tmp = ((block[6] & (3 << 4)) >> 4) | (block[0xc] << 2);
372 tmp = ((block[6] & (3 << 2)) >> 2) | (block[0xd] << 2);
378 tmp = (block[6] & 3) | (block[0xe] << 2);
413 static int get_est_timing(unsigned char *block, struct fb_videomode *mode)
418 c = block[0];
455 c = block[1];
489 c = block[2];
498 static int get_std_timing(unsigned char *block, struct fb_videomode *mode,
503 xres = (block[0] + 31) * 8;
507 ratio = (block[1] & 0xc0) >> 6;
526 refresh = (block[1] & 0x3f) + 60;
542 static int get_dst_timing(unsigned char *block,
547 for (j = 0; j < 6; j++, block += STD_TIMING_DESCRIPTION_SIZE)
548 num += get_std_timing(block, &mode[num], ver, rev);
553 static void get_detailed_timing(unsigned char *block,
607 unsigned char *block;
627 block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
628 for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) {
629 if (!(block[0] == 0x00 && block[1] == 0x00)) {
630 get_detailed_timing(block, &mode[num]);
640 block = edid + ESTABLISHED_TIMING_1;
641 num += get_est_timing(block, &mode[num]);
644 block = edid + STD_TIMING_DESCRIPTIONS_START;
645 for (i = 0; i < STD_TIMING; i++, block += STD_TIMING_DESCRIPTION_SIZE)
646 num += get_std_timing(block, &mode[num], ver, rev);
648 block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
649 for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) {
650 if (block[0] == 0x00 && block[1] == 0x00 && block[3] == 0xfa)
651 num += get_dst_timing(block + 5, &mode[num], ver, rev);
684 unsigned char *block;
686 block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
690 for (i = 0; i < 4; i++, block += DETAILED_TIMING_DESCRIPTION_SIZE) {
691 if (edid_is_limits_block(block)) {
764 unsigned char c, *block;
766 block = edid + EDID_STRUCT_DISPLAY;
770 c = block[0] & 0x80;
777 switch ((block[0] & 0x60) >> 5) {
797 c = block[0] & 0x10;
800 c = block[0] & 0x0f;
823 specs->max_x = block[1];
824 specs->max_y = block[2];
836 c = block[3];
841 get_dpms_capabilities(block[4], specs);
843 switch ((block[4] & 0x18) >> 3) {
862 get_chroma(block, specs);
865 c = block[4] & 0x7;
883 unsigned char *block;
894 block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
896 for (i = 0; i < 4; i++, block += DETAILED_TIMING_DESCRIPTION_SIZE) {
897 if (edid_is_timing_block(block)) {
925 unsigned char *block;
950 block = edid + DETAILED_TIMING_DESCRIPTIONS_START;
951 for (i = 0; i < 4; i++, block += DETAILED_TIMING_DESCRIPTION_SIZE) {
952 if (edid_is_serial_block(block)) {
953 copy_string(block, specs->serial_no);
955 } else if (edid_is_ascii_block(block)) {
956 copy_string(block, specs->ascii);
958 } else if (edid_is_monitor_block(block)) {
959 copy_string(block, specs->monitor);
989 * @edid: 128 byte array with an E-EDID block
994 unsigned char *block;
1014 pr_debug("Data block %u of %u bytes\n", type, len);
1032 block = edid + edid[2];
1037 i++, block += DETAILED_TIMING_DESCRIPTION_SIZE)
1039 edt[num++] = block - edid;
1565 * We need to ensure that the EDID block is only returned for