《Kernel中 解析HDMI EDID信息》

news/2024/11/15 0:34:44/

 

  • EDID详解
#define EDID_DEBUG(fmt, args...) printk(fmt, ## args)#define         EDID_LENGTH                     0x80
#define         EDID_HEADER                     0x00                                                                      
#define         EDID_HEADER_END     0x07#define UNKNOWN_DESCRIPTOR      						-1
#define DETAILED_TIMING_BLOCK   						-2
#define DETAILED_TIMING_DESCRIPTIONS_START         		0x36
#define DETAILED_TIMING_DESCRIPTION_SIZE        		18
#define TOTAL_NUM_DETAILED_TIMING_DESCRIPTIONS          4
#define MONITOR_LIMITS	    							0xFD
#define MONITOR_NAME	    							0xFC#define AUDIO_TYPE 				0
#define VIDEO_TYPE				1#define MAX_EDID_BLOCKS_SUPPORT		8
#define EDID_BLOCK_SIZE				128
#define HDMI_FLAG_VIDEO_UPDATE		0x00000001
#define HDMI2USR_EDID_READY_MSG		0x00000001
#define HDMI2USR_HOTPLUG_IN_MSG		0x00000002
#define HDMI2USR_HOTPLUG_OUT_MSG	0x00000004
#define HDMI2USR_CEC_MSG			0x00000008
#define HDMI2USR_HDCP_MSG			0x00000010typedef struct VENDOR_PRODUCT_BLOCK
{unsigned char manufacturer_name[4];unsigned short product_id; unsigned int serial_number; unsigned char week_manufacturer;  unsigned short year_manufacturer;struct VENDOR_PRODUCT_BLOCK * next;	
}VENDOR_PRODUCT_BLOCK_t;typedef struct DETAILED_TIMING_DESCRIPTOR
{unsigned short pixel_clock_div_10000;unsigned short h_active;unsigned short h_blanking;unsigned short v_active;unsigned short v_blanking;unsigned short h_sync_offset;unsigned short h_sync_pulse_w;unsigned char v_sync_offset;unsigned char v_sync_pulse_w;unsigned short h_image_size;unsigned short v_image_size;unsigned char h_border;unsigned char v_border;unsigned char interlaced;//0-- non-interlaced; 1 -- interlacedstruct DETAILED_TIMING_DESCRIPTOR * next;	
}DETAILED_TIMING_DESCRIPTOR_t;static struct DETAILED_TIMING_DESCRIPTOR	*detailed_timing_descriptor = NULL;void parse_timing_description(unsigned char* dtd)
{DETAILED_TIMING_DESCRIPTOR_t  *detailed_descriptor = detailed_timing_descriptor;DETAILED_TIMING_DESCRIPTOR_t  *tmp=NULL;while (detailed_descriptor!=NULL){tmp=detailed_descriptor;detailed_descriptor=detailed_descriptor->next;detailed_descriptor=(DETAILED_TIMING_DESCRIPTOR_t *)kmalloc(sizeof(DETAILED_TIMING_DESCRIPTOR_t),GFP_KERNEL);if (NULL==detailed_descriptor)return ;memset(detailed_descriptor,0,(sizeof(DETAILED_TIMING_DESCRIPTOR_t)));detailed_descriptor->next = NULL;if (NULL!=tmp)tmp->next=detailed_descriptor;elsedetailed_timing_descriptor = detailed_descriptor;detailed_descriptor->pixel_clock_div_10000 = (dtd[1]<<8)|(dtd[0]);detailed_descriptor->h_active           = (unsigned short) (( ((dtd[4]&0xF0) << 4) | dtd[2]) ); // 12 bitsdetailed_descriptor->h_blanking         = (unsigned short) (( ((dtd[4]&0x0F) << 8) | dtd[3]) ); // 12 bitsdetailed_descriptor->v_active           = (unsigned short) (( ((dtd[7]&0xF0) << 4) | dtd[5]) ); // 12 bitsdetailed_descriptor->v_blanking         = (unsigned short) (( ((dtd[7]&0x0F) << 8) | dtd[6]) ); // 12 bits      detailed_descriptor->h_sync_offset      = (unsigned short) (( ((dtd[11]&0xC0) << 2) | dtd[8]) ); // 10 bitsdetailed_descriptor->h_sync_pulse_w     = (unsigned short) (( ((dtd[11]&0x30) << 4) | dtd[9]) ); // 10 bits     detailed_descriptor->v_sync_offset      =  (unsigned char) ((dtd[11]&0x0C)<<2) | ((dtd[10]&0xF0) >>4);  // 6 bitsdetailed_descriptor->v_image_size       = (unsigned short) (( ((dtd[14]&0x0F) << 8) | dtd[13]) ); // 12 bits    detailed_descriptor->h_border = dtd[15];        detailed_descriptor->v_border = dtd[16];        detailed_descriptor->interlaced = (dtd[17]>>7);EDID_DEBUG( "\tHorizontal active (pixels): %d\n", detailed_descriptor->h_active);       EDID_DEBUG( "\tHorizontal blanking (pixels):  %d\n", detailed_descriptor->h_blanking);EDID_DEBUG( "\tVertical active (lines):  %d\n", detailed_descriptor->v_active); EDID_DEBUG( "\tVertical blanking (lines):  %d\n", detailed_descriptor->v_blanking);EDID_DEBUG( "\tHorizontal Sync offset (pixels):  %d\n", detailed_descriptor->h_sync_offset);    EDID_DEBUG( "\tHorizontal Sync pulse width (pixels):  %d\n", detailed_descriptor->h_sync_pulse_w);      EDID_DEBUG( "\tVertical Sync offset (lines):  %d\n", detailed_descriptor->v_sync_offset);       EDID_DEBUG( "\tVertical Sync pulse width (lines):  %d\n", detailed_descriptor->v_sync_pulse_w);EDID_DEBUG("\tHorizontal image size (mm): %d\n",detailed_descriptor->h_image_size);EDID_DEBUG("\tVertical image size (mm): %d\n",detailed_descriptor->v_image_size);EDID_DEBUG("\tScanning mode: %s\n", (detailed_descriptor->interlaced) ? "Interlaced":"Non-interlaced"); EDID_DEBUG("\tStereo: ");       switch(((dtd[17] & 0x60)>>4)|(dtd[17] & 0x01)){case 0:case 1:         EDID_DEBUG( "Normal display, no stereo.\n");                                                            break;case 2:         EDID_DEBUG( "Field sequential stereo, right image when stereo sync. = 1\n");    break;case 3:         EDID_DEBUG( "Field sequential stereo, left image when stereo sync. = 1y\n");    break;          case 4:         EDID_DEBUG( "2-way interleaved stereo, right image on even lines\n");                   break;case 5:         EDID_DEBUG( "2-way interleaved stereo, left image on even lines\n");                    break;case 6:         EDID_DEBUG( "4-way interleaved stereo\n");                                                              break;}EDID_DEBUG("\tSync mode: ");    switch((dtd[17] & 0x18)>>3){case 0:EDID_DEBUG( "Analog composite\n");                                                              break;case 1:EDID_DEBUG( "Bipolar analog composite\n");                                                              break;case 2:EDID_DEBUG( "Digital composite\n");                                                             break;case 3:EDID_DEBUG( "Digital separate, ");      EDID_DEBUG( "VSYNC polarity %c, ", (dtd[17] & 0x04) ? '+':'-'); EDID_DEBUG( "HSYNC polarity %c\n", (dtd[17] & 0x02) ? '+':'-');break;                  }return;
}int hdmi_edid_parse_std(unsigned char *edid)
{unsigned int i, j;unsigned char* block;unsigned char edid_v1_header[] = {0x00, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0x00};	
//	char monitor_alt_name[100];unsigned char checksum = 0;unsigned int detail_timing_block_type;
//	int ret = 0;bool edid_head_same;VENDOR_PRODUCT_BLOCK_t *vendor_product_id = vendor_product_block;vendor_product_id = (VENDOR_PRODUCT_BLOCK_t *)kmalloc(sizeof(VENDOR_PRODUCT_BLOCK_t), GFP_KERNEL);if(NULL == vendor_product_id)return 0;memset(vendor_product_id, 0, (sizeof(VENDOR_PRODUCT_BLOCK_t)));vendor_product_block = vendor_product_id;for( i = 0; i < EDID_LENGTH; i++)checksum += edid[ i ];if(memcmp( edid+EDID_HEADER, edid_v1_header, EDID_HEADER_END+1 ) == 0)edid_head_same = true;elseedid_head_same = false;if(checksum != 0){if(edid_head_same){EDID_DEBUG( "%s in:EDID checksum failed - data is corrupt. Continuing anyway.\n" ,__FUNCTION__);return 0;}checksum = 0;for(i=0; i<8;i++)checksum += edid_v1_header[i];for(i=8; i<EDID_LENGTH;i++)checksum += edid[ i ];if(checksum != 0){EDID_DEBUG( "%s in:EDID checksum failed - data is corrupt. Continuing anyway.\n",__FUNCTION__);return 0;}}else if(!edid_head_same ){EDID_DEBUG( "%s in:8 byte pattern header (0x00, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0x0) not match!!\n",__FUNCTION__);return 0;}EDID_DEBUG("\nVendor and Product ID\n");	EDID_DEBUG("\tManufacturer Name: %c%c%c\n", (edid[0x08] >>2)+'A'-1, (((edid[0x08] <<3) | (edid[0x09] >>5)) & 0x1f)+'A'-1, (edid[0x09] & 0x1f)+'A'-1);	EDID_DEBUG("\tProduct Code: %d\n", edid[0x0B]<<8|edid[0x0A]);EDID_DEBUG("\tSerial Number: %d\n", edid[0x0F]<<24|edid[0x0E]<<16|edid[0x0D]<<8|edid[0x0C]);	EDID_DEBUG("\tWeek of Manufacture: %d\n", edid[0x10]);	EDID_DEBUG("\tYear of Manufacture: %d\n", edid[0x11]+1990);	vendor_product_id->manufacturer_name[0] = (edid[0x08] >>2)+'A'-1;vendor_product_id->manufacturer_name[1] = (((edid[0x08] <<3) |(edid[0x09] >>5)) & 0x1f)+'A'-1;vendor_product_id->manufacturer_name[2] = (edid[0x09] & 0x1f)+'A'-1;vendor_product_id->product_id = edid[0x0B]<<8|edid[0x0A];vendor_product_id->serial_number = edid[0x0F]<<24|edid[0x0E]<<16|edid[0x0D]<<8|edid[0x0C];vendor_product_id->week_manufacturer = edid[0x10];vendor_product_id->year_manufacturer = (edid[0x11]+1990);EDID_DEBUG("\nEDID Structure\n");	EDID_DEBUG( "\tVersion no.: %d\n" , edid[0x12]);EDID_DEBUG( "\tRevision no.: %d\n", edid[0x13]);EDID_DEBUG("\nBasic Display Parameters and Features\n");EDID_DEBUG( "\tVideo Input Signal Type: %s\n" , (edid[0x14]>>7) ? "Digital": "Analog");if(edid[0x14]>>7) {// DigitalEDID_DEBUG("\tVESA DFP 1.X default: %s\n", (edid[0x14]&0x01) ? "Compatible": "Not Compatible");	}EDID_DEBUG( "\tMax Horz Size (in cm): %d\n", edid[0x15]);EDID_DEBUG( "\tMax Vert Size (in cm): %d\n", edid[0x16]);if(edid[0x17] == 0xFF)EDID_DEBUG( "\tGamma Value: Not defined\n");elseEDID_DEBUG( "\tGamma Value: %d.%d\n", (edid[0x17]+100)/100, (edid[0x17]+100)%100);EDID_DEBUG( "\tFeature Support (DPMS)\n");EDID_DEBUG( "\t\t Standby Mode: %s \n", (edid[0x18]&0x80) ? "Supported": "Not Supported");EDID_DEBUG( "\t\t Suspend Mode: %s \n", (edid[0x18]&0x40) ? "Supported": "Not Supported");EDID_DEBUG( "\t\t Active Off Mode: %s \n", (edid[0x18]&0x20) ? "Supported": "Not Supported");EDID_DEBUG( "\t\t Display Type: ");switch((edid[0x18]&0x18)>>3){case 0:		EDID_DEBUG( "Monochrome display\n");		break;case 1:		EDID_DEBUG( "RGB color display\n");			break;case 2:		EDID_DEBUG( "Non-RGB multicolor display\n");	break;case 3:		EDID_DEBUG( "Undefined display\n");			break;			}EDID_DEBUG( "\t\t Color Space: %s \n", (edid[0x18]&0x04) ? "sRGB": "Alternate");EDID_DEBUG( "\t\t Preferred Timing: %s \n", (edid[0x18]&0x02) ? "1st DTD": "Non indicated");EDID_DEBUG( "\t\t GTF Timing: %s \n", (edid[0x18]&0x01) ? "Supported": "Not Supported");EDID_DEBUG("\nPhosphor or Filter Chromaticity\n");	EDID_DEBUG( "\tRed_x: 0.%.3d\n" 	,((edid[0x1B]<<2)  | ((edid[0x19]>>6)&0x03))*1000/1024);	EDID_DEBUG( "\tRed_y: 0.%.3d\n" 	,((edid[0x1C]<<2)  | ((edid[0x19]>>4)&0x03))*1000/1024);EDID_DEBUG( "\tGreen_x: 0.%.3d\n",((edid[0x1D]<<2)  | ((edid[0x19]>>2)&0x03))*1000/1024);EDID_DEBUG( "\tGreen_y: 0.%.3d\n",((edid[0x1E]<<2) | (edid[0x19]&0x03))*1000/1024);EDID_DEBUG( "\tBlue_x: 0.%.3d\n" 	,((edid[0x1F]<<2)  | ((edid[0x1A]>>6)&0x03))*1000/1024);EDID_DEBUG( "\tBlue_y: 0.%.3d\n" 	,((edid[0x20]<<2)  | ((edid[0x1A]>>4)&0x03))*1000/1024);EDID_DEBUG( "\tWhite_x: 0.%.3d\n" ,((edid[0x21]<<2)  | ((edid[0x1A]>>2)&0x03))*1000/1024);EDID_DEBUG( "\tWhite_y: 0.%.3d\n" ,((edid[0x22]<<2)  | (edid[0x1A]&0x03))*1000/1024);EDID_DEBUG("\nEstablished Timings\n");	EDID_DEBUG( "\tEstablished Timings I \n");if(edid[0x23]&0x80)	EDID_DEBUG( "\t\t 720 x 400 @ 70Hz IBM, VGA\n");if(edid[0x23]&0x40)	EDID_DEBUG( "\t\t 720 x 400 @ 88Hz IBM, XGA2\n");if(edid[0x23]&0x20)	EDID_DEBUG( "\t\t 640 x 480 @ 60Hz IBM, VGA\n");if(edid[0x23]&0x10)	EDID_DEBUG( "\t\t 640 x 480 @ 67Hz Apple, Mac II\n");if(edid[0x23]&0x08)	EDID_DEBUG( "\t\t 640 x 480 @ 72Hz VESA\n");if(edid[0x23]&0x04)	EDID_DEBUG( "\t\t 640 x 480 @ 75Hz VESA\n");if(edid[0x23]&0x02)	EDID_DEBUG( "\t\t 800 x 600 @ 56Hz VESA\n");if(edid[0x23]&0x01)	EDID_DEBUG( "\t\t 800 x 600 @ 60Hz VESA\n");	if(edid[0x23]== 0x00)	EDID_DEBUG( "\t\t None\n");	EDID_DEBUG( "\tEstablished Timings II \n");if(edid[0x24]&0x80)	EDID_DEBUG( "\t\t 800 x 600 @ 72Hz VESA\n");if(edid[0x24]&0x40)	EDID_DEBUG( "\t\t 800 x 600 @ 75Hz VESA\n");if(edid[0x24]&0x20)	EDID_DEBUG( "\t\t 832 x 624 @ 75Hz Apple, Mac II\n");if(edid[0x24]&0x10)	EDID_DEBUG( "\t\t 1024 x 768 @ 87Hz IBM\n");if(edid[0x24]&0x08)	EDID_DEBUG( "\t\t 1024 x 768 @ 60Hz VESA\n");if(edid[0x24]&0x04)	EDID_DEBUG( "\t\t 1024 x 768 @ 70Hz VESA\n");if(edid[0x24]&0x02)	EDID_DEBUG( "\t\t 1024 x 768 @ 75Hz VESA\n");if(edid[0x24]&0x01)	EDID_DEBUG( "\t\t 1280 x 1024 @ 75Hz VESA\n");	if(edid[0x24]== 0x00)	EDID_DEBUG( "\t\t None\n");		EDID_DEBUG( "\tManufacturer's Timings\n");if(edid[0x25]&0x80)	EDID_DEBUG( "\t\t 1152 x 870 @ 75Hz Apple, Mac II\n");else					EDID_DEBUG( "\t\t None\n");	EDID_DEBUG("\nStandard Timings\n");	for(i = 0; i < 8; i++){EDID_DEBUG( "\tStandard Timing %d\n", i+1);	if(edid[0x26+i*2] == 0x01 && edid[0x26+i*2+1] == 0x01 )EDID_DEBUG( "\t\t Unused\n");	else{EDID_DEBUG( "\t\t Horizontal active pixels: %d\n", (edid[0x26+i*2]+31)*8);			EDID_DEBUG( "\t\t Image Aspect ratio: ");	switch((edid[0x26+i*2+1]&0xC0)>>6){case 0:		EDID_DEBUG( "16:10\n");			break;case 1:		EDID_DEBUG( "4:3\n");			break;case 2:		EDID_DEBUG( "5:4\n");			break;case 3:		EDID_DEBUG( "16:9\n");			break;			}	EDID_DEBUG( "\t\t Refresh Rate: %d Hz\n", (edid[0x26+i*2+1]&0x3F)+60);			}}block = edid + DETAILED_TIMING_DESCRIPTIONS_START;for( i = 0; i < TOTAL_NUM_DETAILED_TIMING_DESCRIPTIONS; i++, block += DETAILED_TIMING_DESCRIPTION_SIZE){if(!memcmp(edid_v1_descriptor_flag, block, 2 ) ){/* descriptor */if(block[2] != 0)detail_timing_block_type = UNKNOWN_DESCRIPTOR;elsedetail_timing_block_type = block[3];}elsedetail_timing_block_type = DETAILED_TIMING_BLOCK; /* detailed timing block */EDID_DEBUG("\nDetailed Timing Descriptor %d\n", i+1);switch(detail_timing_block_type){case DETAILED_TIMING_BLOCK:parse_timing_description(block);break;case MONITOR_NAME:			 for(j = 5; j<18; j++){     monitor_name[j-5] = block[j];if(block[j] == 0x0A){
#if 0 // Marlboro Debug; effect EDID checksumblock[j] = 0x00;
#endifmonitor_name[j-5] = 0x00;break;}}EDID_DEBUG( "\tMonitor name: %s\n", monitor_name);	break;case MONITOR_LIMITS:EDID_DEBUG( "\tMin. Vertical rate (Hz): %d\n", block[5]);EDID_DEBUG( "\tMax. Vertical rate (Hz): %d\n", block[6]);			EDID_DEBUG( "\tMin. Horizontal rate (KHz): %d\n", block[7]);EDID_DEBUG( "\tMax. Horizontal rate (KHz): %d\n", block[8]);			EDID_DEBUG( "\tMax. Supported Pixel Clock rate (KHz): %d\n", block[9]*10);					if(block[10] == 0x00)EDID_DEBUG( "\tNo secondary timing supported\n");					else if(block[10] == 0x02){EDID_DEBUG( "\tSecondary GTF  supported\n");						}break;	default:	break;				}}if(hdmi_drv->edid.block[0][0x7E] > MAX_EDID_BLOCKS_SUPPORT-1){EDID_DEBUG("HDMI Driver: MAX_EDID_BLOCKS_SUPPORT(%d) not enouth!\n", MAX_EDID_BLOCKS_SUPPORT);  hdmi_drv->edid.number_of_extension_block =  MAX_EDID_BLOCKS_SUPPORT-1;}elsehdmi_drv->edid.number_of_extension_block =  hdmi_drv->edid.block[0][0x7E];return 1;
}
  • 测试SHARP电视HDMI信息:
EDID 1.3 Content: 
00 ff ff ff ff ff ff 00 4d 10 04 10 01 01 01 01 
00 11 01 03 80 2c 19 78 0a ef ca a3 55 47 9a 24 
12 47 49 00 00 00 01 01 01 01 01 01 01 01 01 01 
01 01 01 01 01 01 01 1d 80 18 71 1c 16 20 58 2c 
25 00 b8 fa 10 00 00 9e 01 1d 00 72 51 d0 1e 20 
6e 28 55 00 b8 fa 10 00 00 1e 00 00 00 fc 00 53 
48 41 52 50 20 48 44 4d 49 0a 20 20 00 00 00 fd 
00 31 3d 1f 2e 08 00 0a 20 20 20 20 20 20 01 00 Vendor and Product IDManufacturer Name: SHPProduct Code: 4100Serial Number: 16843009Week of Manufacture: 0Year of Manufacture: 2007EDID StructureVersion no.: 1Revision no.: 3Basic Display Parameters and FeaturesVideo Input Signal Type: DigitalVESA DFP 1.X default: Not CompatibleMax Horz Size (in cm): 44Max Vert Size (in cm): 25Gamma Value: 2.20Feature Support (DPMS)Standby Mode: Not Supported Suspend Mode: Not Supported Active Off Mode: Not Supported Display Type: RGB color displayColor Space: Alternate Preferred Timing: 1st DTD GTF Timing: Not Supported Phosphor or Filter ChromaticityRed_x: 0.639Red_y: 0.333Green_x: 0.280Green_y: 0.604Blue_x: 0.143Blue_y: 0.070White_x: 0.279White_y: 0.287Established TimingsEstablished Timings I NoneEstablished Timings II NoneManufacturer's TimingsNoneStandard TimingsStandard Timing 1UnusedStandard Timing 2UnusedStandard Timing 3UnusedStandard Timing 4UnusedStandard Timing 5UnusedStandard Timing 6UnusedStandard Timing 7UnusedStandard Timing 8UnusedDetailed Timing Descriptor 1Pixel clock (MHz): 74.25Horizontal active (pixels): 1920Horizontal blanking (pixels):  280Vertical active (lines):  540Vertical blanking (lines):  22Horizontal Sync offset (pixels):  88Horizontal Sync pulse width (pixels):  44Vertical Sync offset (lines):  2Vertical Sync pulse width (lines):  5Horizontal image size (mm): 440Vertical image size (mm): 250Scanning mode: InterlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity +, HSYNC polarity +Detailed Timing Descriptor 2Pixel clock (MHz): 74.25Horizontal active (pixels): 1280Horizontal blanking (pixels):  370Vertical active (lines):  720Vertical blanking (lines):  30Horizontal Sync offset (pixels):  110Horizontal Sync pulse width (pixels):  40Vertical Sync offset (lines):  5Vertical Sync pulse width (lines):  5Horizontal image size (mm): 440Vertical image size (mm): 250Scanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity +, HSYNC polarity +Detailed Timing Descriptor 3Monitor name: SHARP HDMIDetailed Timing Descriptor 4Min. Vertical rate (Hz): 49Max. Vertical rate (Hz): 61Min. Horizontal rate (KHz): 31Max. Horizontal rate (KHz): 46Max. Supported Pixel Clock rate (KHz): 80No secondary timing supported
EDID Extension Block(1): 
02 03 19 71 45 85 04 03 02 01 23 09 07 07 83 01 
00 00 66 03 0c 00 10 00 80 8c 0a d0 8a 20 e0 2d 
10 10 3e 96 80 b8 fa 10 00 00 18 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6f 
Tag: 2
Revision 3
Underscan: Not Supported
Basic audio: Supported
RGB and YCbCr444: Supported
RGB and YCbCr422: Supported
Total number of native DTDs: 1
Data Block Collection
Video Data Block:
[HDMI native]   VIC = 05 VIC = 05,Native 1920x1080i      59.94Hz/60Hz    16:9VIC = 04,       1280x720p       59.94Hz/60Hz    16:9VIC = 03,       720x480p        59.94Hz/60Hz    16:9VIC = 02,       720x480p        59.94Hz/60Hz    4:3VIC = 01,       640x480p        59.94Hz/60Hz    4:3
Audio Data Block:Audio format code: Linear PCM (e.g., IEC60958)Maximum number of channels: 2Audio code: Linear PCM (e.g., IEC60958)Maximum number of channels: 2Sample Rate: 48KHz 44.1KHz 32KHz Sample Size: 24bit 20bit 16bit
Speaker Allocation Data Block:FL/FR 
VSDB Data Block:
HDMI DEVICE:IEEE registration ID: 0x000c03 (HDMI device)Physical address:  1.0.0.0Sink Support ACP, ISRC1, ISRC2 packet
Detailed Timing #0Pixel clock: 27.00MHzHorizontal active: 720 pixelsHorizontal blanking: 138 pixelsVertical active:  480 linesVertical blanking: 45 linesHorizontal Sync offset: 528 pixelsHorizontal Sync pulse width: 62 pixelsVertical Sync offset: 9 linesVertical Sync pulse width: 6 linesHorizontal image size: 440 mmVertical image size: 250 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity -, HSYNC polarity -
Detailed Timing #1Pixel clock: 0.00MHzHorizontal active: 0 pixelsHorizontal blanking: 0 pixelsVertical active:  0 linesVertical blanking: 0 linesHorizontal Sync offset: 0 pixelsHorizontal Sync pulse width: 0 pixelsVertical Sync offset: 0 linesVertical Sync pulse width: 0 linesHorizontal image size: 0 mmVertical image size: 0 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Analog composite
Detailed Timing #2Pixel clock: 0.00MHzHorizontal active: 0 pixelsHorizontal blanking: 0 pixelsVertical active:  0 linesVertical blanking: 0 linesHorizontal Sync offset: 0 pixelsHorizontal Sync pulse width: 0 pixelsVertical Sync offset: 0 linesVertical Sync pulse width: 0 linesHorizontal image size: 0 mmVertical image size: 0 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Analog composite
Detailed Timing #3Pixel clock: 0.00MHzHorizontal active: 0 pixelsHorizontal blanking: 0 pixelsVertical active:  0 linesVertical blanking: 0 linesHorizontal Sync offset: 0 pixelsHorizontal Sync pulse width: 0 pixelsVertical Sync offset: 0 linesVertical Sync pulse width: 0 linesHorizontal image size: 0 mmVertical image size: 0 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Analog composite
Detailed Timing #4Pixel clock: 0.00MHzHorizontal active: 0 pixelsHorizontal blanking: 0 pixelsVertical active:  0 linesVertical blanking: 0 linesHorizontal Sync offset: 0 pixelsHorizontal Sync pulse width: 0 pixelsVertical Sync offset: 0 linesVertical Sync pulse width: 0 linesHorizontal image size: 0 mmVertical image size: 0 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Analog composite
hdmi_edid_clear 
  • 测试Haier电视HDMI信息:
EDID 1.3 Content: 
00 ff ff ff ff ff ff 00 22 45 01 00 01 01 01 01 
0a 10 01 03 80 73 41 96 0a cf 74 a3 57 4c b0 23 
09 48 4c 2f ce 00 31 40 45 40 61 40 01 01 01 01 
01 01 01 01 01 01 64 19 00 40 41 00 26 30 18 88 
36 00 00 d0 52 00 00 18 00 00 00 fd 00 38 55 1f 
3c 08 00 0a 20 20 20 20 20 20 00 00 00 fc 00 48 
41 49 45 52 20 54 56 0a 20 20 20 20 00 00 00 fc 
00 0a 20 20 20 20 20 20 20 20 20 20 20 20 01 b6 Vendor and Product IDManufacturer Name: HREProduct Code: 1Serial Number: 16843009Week of Manufacture: 10Year of Manufacture: 2006EDID StructureVersion no.: 1Revision no.: 3Basic Display Parameters and FeaturesVideo Input Signal Type: DigitalVESA DFP 1.X default: Not CompatibleMax Horz Size (in cm): 115Max Vert Size (in cm): 65Gamma Value: 2.50Feature Support (DPMS)Standby Mode: Not Supported Suspend Mode: Not Supported Active Off Mode: Not Supported Display Type: RGB color displayColor Space: Alternate Preferred Timing: 1st DTD GTF Timing: Not Supported Phosphor or Filter ChromaticityRed_x: 0.639Red_y: 0.339Green_x: 0.299Green_y: 0.690Blue_x: 0.137Blue_y: 0.038White_x: 0.282White_y: 0.296Established TimingsEstablished Timings I 640 x 480 @ 60Hz IBM, VGA640 x 480 @ 72Hz VESA640 x 480 @ 75Hz VESA800 x 600 @ 56Hz VESA800 x 600 @ 60Hz VESAEstablished Timings II 800 x 600 @ 72Hz VESA800 x 600 @ 75Hz VESA1024 x 768 @ 60Hz VESA1024 x 768 @ 70Hz VESA1024 x 768 @ 75Hz VESAManufacturer's TimingsNoneStandard TimingsStandard Timing 1Horizontal active pixels: 640Image Aspect ratio: 4:3Refresh Rate: 60 HzStandard Timing 2Horizontal active pixels: 800Image Aspect ratio: 4:3Refresh Rate: 60 HzStandard Timing 3Horizontal active pixels: 1024Image Aspect ratio: 4:3Refresh Rate: 60 HzStandard Timing 4UnusedStandard Timing 5UnusedStandard Timing 6UnusedStandard Timing 7UnusedStandard Timing 8UnusedDetailed Timing Descriptor 1Pixel clock (MHz): 65.00Horizontal active (pixels): 1024Horizontal blanking (pixels):  320Vertical active (lines):  768Vertical blanking (lines):  38Horizontal Sync offset (pixels):  24Horizontal Sync pulse width (pixels):  136Vertical Sync offset (lines):  3Vertical Sync pulse width (lines):  6Horizontal image size (mm): 1280Vertical image size (mm): 720Scanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity -, HSYNC polarity -Detailed Timing Descriptor 2Min. Vertical rate (Hz): 56Max. Vertical rate (Hz): 85Min. Horizontal rate (KHz): 31Max. Horizontal rate (KHz): 60Max. Supported Pixel Clock rate (KHz): 80No secondary timing supportedDetailed Timing Descriptor 3Monitor name: HAIER TVDetailed Timing Descriptor 4Monitor name: 
EDID Extension Block(1): 
02 03 17 f1 44 84 05 03 02 23 09 07 07 83 01 00 
00 65 03 0c 00 10 00 01 1d 00 72 51 d0 1e 20 6e 
28 55 00 c4 8e 21 00 00 1e 01 1d 80 18 71 1c 16 
20 58 2c 25 00 c4 8e 21 00 00 9e 8c 0a d0 8a 20 
e0 2d 10 10 3e 96 00 c4 8e 21 00 00 18 8c 0a d0 
8a 20 e0 2d 10 10 3e 96 00 13 8e 21 00 00 18 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ba 
Tag: 2
Revision 3
Underscan: Supported
Basic audio: Supported
RGB and YCbCr444: Supported
RGB and YCbCr422: Supported
Total number of native DTDs: 1
Data Block Collection
Video Data Block:
[HDMI native]   VIC = 04 VIC = 04,Native 1280x720p       59.94Hz/60Hz    16:9VIC = 05,       1920x1080i      59.94Hz/60Hz    16:9VIC = 03,       720x480p        59.94Hz/60Hz    16:9VIC = 02,       720x480p        59.94Hz/60Hz    4:3
Audio Data Block:Audio format code: Linear PCM (e.g., IEC60958)Maximum number of channels: 2Audio code: Linear PCM (e.g., IEC60958)Maximum number of channels: 2Sample Rate: 48KHz 44.1KHz 32KHz Sample Size: 24bit 20bit 16bit
Speaker Allocation Data Block:FL/FR 
VSDB Data Block:
HDMI DEVICE:IEEE registration ID: 0x000c03 (HDMI device)Physical address:  1.0.0.0
Detailed Timing #0Pixel clock: 74.25MHzHorizontal active: 1280 pixelsHorizontal blanking: 370 pixelsVertical active:  720 linesVertical blanking: 30 linesHorizontal Sync offset: 110 pixelsHorizontal Sync pulse width: 40 pixelsVertical Sync offset: 5 linesVertical Sync pulse width: 5 linesHorizontal image size: 708 mmVertical image size: 398 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity +, HSYNC polarity +
Detailed Timing #1Pixel clock: 74.25MHzHorizontal active: 1920 pixelsHorizontal blanking: 280 pixelsVertical active:  540 linesVertical blanking: 22 linesHorizontal Sync offset: 88 pixelsHorizontal Sync pulse width: 44 pixelsVertical Sync offset: 2 linesVertical Sync pulse width: 5 linesHorizontal image size: 708 mmVertical image size: 398 mmScanning mode: InterlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity +, HSYNC polarity +
Detailed Timing #2Pixel clock: 27.00MHzHorizontal active: 720 pixelsHorizontal blanking: 138 pixelsVertical active:  480 linesVertical blanking: 45 linesHorizontal Sync offset: 16 pixelsHorizontal Sync pulse width: 62 pixelsVertical Sync offset: 9 linesVertical Sync pulse width: 6 linesHorizontal image size: 708 mmVertical image size: 398 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity -, HSYNC polarity -
Detailed Timing #3Pixel clock: 27.00MHzHorizontal active: 720 pixelsHorizontal blanking: 138 pixelsVertical active:  480 linesVertical blanking: 45 linesHorizontal Sync offset: 16 pixelsHorizontal Sync pulse width: 62 pixelsVertical Sync offset: 9 linesVertical Sync pulse width: 6 linesHorizontal image size: 531 mmVertical image size: 398 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Digital separate, VSYNC polarity -, HSYNC polarity -
Detailed Timing #4Pixel clock: 0.00MHzHorizontal active: 0 pixelsHorizontal blanking: 0 pixelsVertical active:  0 linesVertical blanking: 0 linesHorizontal Sync offset: 0 pixelsHorizontal Sync pulse width: 0 pixelsVertical Sync offset: 0 linesVertical Sync pulse width: 0 linesHorizontal image size: 0 mmVertical image size: 0 mmScanning mode: Non-interlacedStereo: Normal display, no stereo.Sync mode: Analog composite

 


http://www.ppmy.cn/news/740936.html

相关文章

HDMI之EDID多块篇

MultiBlocks EDID EDID每个Block大小为128字节。部分古老设备(HDMI 1.4之前)可能只使用1个Block(BASE EDID Structure),Block0EDID[126]等于0。使用最广泛的是2个Block,Block0EDID[126]等于1。 HDMI 2.1a出来之前,sink设备如要使用多个Block,第二个Block(也就是Bloc…

HDMI之EDID使用说明

Q1: 为什么要写这篇文章&#xff1f; A1&#xff1a;在最近的工作中遇到了不少问题&#xff0c;其中很多都是和EDID相关的。可以说&#xff0c;作为一家以“显示”为生的企业&#xff0c;我们时时刻刻在与EDID打交道。EDID这东西很简单&#xff0c;但是如果不了解其基本原理和…

HDMI之EDID

HDMI(HighDefinitionMultimediaInterface)&#xff0c;作为新一代数字多媒体接口&#xff0c;能够传输高速率无压缩的数字音频、视频数据&#xff0c;HDMl1.2像素时钟可达165MHz&#xff0c;数据速率达到4.95Gbps&#xff0c;而HDMl1.3像素时钟则高达340MHz&#xff0c;数据速率…

LT8641UXE HDMI2.0 4进1出4K60Hz方案介绍

1. Features  HDMI2.0 Receiver  Compliant with HDMI2.0b, HDMI1.4 and DVI1.0  Compliant with HDCP2.3, HDCP2.2 and HDCP1.4  Data rate up to 6Gbps  Support up to 4Kx2K60Hz  Adaptive receiver equalization  AC and DC couple capable  Support 3D a…

HDMI/type-c一线通EDP驱动板|应用高清便携显示器支持2K/1080P

一线通,便携显示屏应用 输入端1080P、4K30、4K60HZ这三种规格&#xff0c;输入端HDMI 由4路信号数据通道组成&#xff0c;支持1.62Gbps、2.7Gbps、5.4Gbps链路速率。内置可选SSC功能可降低EMI的干扰状况。 输出端点EDP屏&#xff0c;支持1080P/2K 设计HDMI转EDP成品的如下&am…

HDMI EDID解读

现在的显示设备比如显示器,电视等都HDMI接口,那通常每个HDMI接口都保留有一份EDID数据,这个数据可以存在程序里面由系统启动过程中来初始化,更常见的做法是每个HDMI口会有一个EEPROM来保存这份数据,这个EEPROM也只是有256bytes大小。外接设备如DVD播放器在HDMI热插拔的时候…

HDMI设计2----EDID and E-EDID

1,EDID是什么&#xff1f;有什么用&#xff1f; 图1 应用场景 如图1所示的应用场景&#xff0c;PC将视频信号发送 到我们的设备上&#xff0c;经过一系列的传输和切换&#xff0c;设备将视频信号发送到显示器或者投影机上&#xff0c;也就是说&#xff0c;我们的设备位于PC和显…

HDMI EDID详细解析

HDMI EDID详细解析 HDMI EDID的长度一般是256字节,分成2个Block,分别是Block0和Block1 PS:VGA和DVI接口的EDID,是只有一个Block而已,即Block0,共128字节 如果想了解更多EDID的知识,可以参考这篇文章 https://www.cnblogs.com/fire909090/p/10523604.html quantum dat…