Patent Publication Number: US-8531352-B2

Title: Dynamic EDID generation

Description:
BACKGROUND 
     1. Technical Field 
     The present invention is related to a monitor control system and, in particular, a monitor control system that dynamically generates the EDID. 
     2. Discussion of Related Art 
     It is becoming more common to utilize multiple monitors. According to a survey by Jon Peddie Research cited in The New York Times, Apr. 20, 2006, it is estimated that use of multiple monitors can increase worker efficiency between 20 to 30 percent. Utilization of multiple monitors can also greatly enhance entertainment such as video gaming or movies. 
     However, obtaining multiple monitors typically requires multiple video graphics drivers, one for each monitor. Desktop computers, for example, may have multiple graphics cards or a graphics card with multiple drivers on the card. Notebook computers may include a PCMIA cardbus card or such to drive multiple monitors. Further, USB ports may be utilized to drive additional monitors. 
     However, these options are expensive to implement, require hardware upgrades for addition of each extra monitor, and usually consume large amounts of power. USB ports may also not have enough bandwidth, especially if other devices are also utilizing the port, to provide good resolution to the monitors. 
     Further, interfaces between video sources and one or more monitors are increasingly difficult with the speed and complexity of the video data being transmitted. 
     Therefore, there is a need for systems that provide interfaces between a video source and one or more monitors. 
     SUMMARY 
     In accordance with some embodiments of the present invention, a multi-monitor driver can include a processor coupled to an EDID memory; at least one monitor interface coupled to the processor; wherein the processor reads EDID data from one or more monitors coupled to the plurality of monitor interfaces, determines a consolidated EDID data based on the EDID data from the one or more monitors, and writes the consolidated EDID data into the EDID memory. 
     A method of providing EDID data according to some embodiments of the present invention includes reading EDID data from one or more monitors through at least one monitor interface; determining a compatible timing option among the EDID data for the one or more monitors; determining a consolidated timing option based on the compatible timing option; and storing a consolidated EDID data that includes the consolidated timing option in an EDID memory. 
     These and other embodiments will be described in further detail below with respect to the following figures. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  illustrates a monitor with an EDID memory. 
         FIG. 2  illustrates a driver according to some embodiments of the present invention. 
         FIG. 3  illustrates a process for compiling EDID data according to some embodiments of the present invention. 
         FIG. 4  illustrates a process for compiling EDID data according to some embodiments of the present invention. 
     
    
    
     In the drawings, elements having the same designation have the same or similar functions. 
     DETAILED DESCRIPTION 
     In the following description specific details are set forth describing certain embodiments of the invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without some or all of these specific details. The specific embodiments presented are meant to be illustrative of the present invention, but not limiting. One skilled in the art may realize other material that, although not specifically described herein, is within the scope and spirit of this disclosure. 
       FIG. 1  illustrates a monitor  100  that is typical of many monitors in the market. Monitor  100  includes a video display  160  that is driven by video driver  150 . Video driver  150  is controlled by a processor  120 . Processor  120  receives control data and video data from an outside source (not shown) through interface  110 . Processor  120  also communicates with memory  140  and Extended Display Identification Data (EDID) memory  130 . Memory  140  may include both volatile memory such as random access memory for the temporary storage of data and operating parameters and read-only memory such as FLASH or EEPROM for storage of programming instructions. EDID memory  130  is read-only memory that holds EDID data. 
     EDID data represents a method of defining the capabilities of a monitor such as monitor  100  to a source device. As such, EDID data includes information regarding the horizontal and vertical sizing of monitor  100  as well as defining the supported timing characteristics. Further EDID data can define multiple sets of parameters that are supported by monitor  100 , one of which can be chosen by the source through interface  110  to be used for a particular transmission. 
     For exemplary purposes only, the VESA EDID standard 1.3 will be discussed in some detail. The invention should not be considered to be limited only to this standard. Many modern display devices adhere to the VESA EDID standard, but embodiments of the invention can be utilized with other standards. 
     The standard for EDID data is set by the Video Electronics Standards Association (VESA), 860 Hillview Court, Suite 150, Milpitas, Calif. 95035. EDID standard 1.3 provides for a 128 byte data field defining the compatible modes of operation of monitor  100 . Extended EDID (E-EDID) provides for multiple 128 byte data files defining the compatible modes of operation for monitor  100 . In  FIG. 1 , EDID memory  130  may include multiple separate 128 byte EDID fields EDID  1  through EDID N for holding the modes of operation that are compatible with the operation of monitor  100 . In general, EDID memory  130  may include data fields in any format that define the compatible modes of operation of monitor  100 . 
     Table 1 shows the EDID data structure compatible with the VESA standard 1.3. As shown in Table 1, bytes  0 - 7  are a fixed header set at “00h FFh FFh FFh FFh FFh FFh 00h”. Bytes  8 - 17  provide product information, including manufacturer, serial number, and date of manufacture. Bytes  18 - 19  provide the EDID standard version and revision (“01h 03h” for version 1.3). 
     Bytes  20 - 24  provide basic display parameters, including whether the monitor accepts analog or digital inputs, sync types, maximum horizontal and vertical size, gamma transfer characteristics, power management capabilities, color space, and default video timing. In particular, bit  7  of byte  20  defines whether the input is analog or digital. Bits  5 - 6  of byte  20  define the video levels (“00”=0.7, 0.3; “01”=0.714, 0.286; “10”=1, 0.4; and “11”=0.7, 0). Bit  4  of byte  20  indicates a blank-to-black setup when set to 1; bits  1 - 3  of byte  20  indicate syncing mode (with separate syncs indicated when bit  3  is set, composite sync indicated when bit  2  is set, sync on green set when bit  1  is set. Bit  0  of byte  20  indicates serration vsync or DFP 1.x compatible vsync modes. Byte  21  indicates the maximum horizontal image size in centimeters. Byte  22  indicates the maximum vertical image size in centimeters. Byte  23  indicates the display gamma. Byte  24  indicates power management and support features, with bit  0  indicating whether the default Generalized Timing Formula (GTF) is supported, bit  1  indicating whether the preferred timing mode is provided, bit  2  indicating whether the standard color space is supported, bits  3  and  4  indicating color (“00”=monochrome, “01”=RGB, “10”=non-RGB, and “11”=undefined), bit  5  indicating whether active off/low power is supported, bit  6  indicating whether a suspend state is supported, and bit  7  indicating whether a standby power is supported. 
     Bytes  25 - 34  define the RGB color space conversion technique used by the monitor. Byte  25  indicates the low significant bits for Red X (bits  7 - 6 ), Red Y (bits  5 - 4 ), Green X (bits  3 - 2 ), and Green Y (bits  1 - 0 ). Byte  26  indicates the low significant bits for Blue X (bits  7 - 6 ), Blue Y (bits  5 - 4 ), White X (bits  3 - 2 ), and White Y (bits  1 - 0 ). Bytes  27 - 34  indicate the high significant bits for Red X, Red Y, Green X, Green Y, Blue X, Blue Y, White X and White Y, respectively. Actual values are between 0.000 and 0.999 with encoded values between 000h and 3FFh. 
     Bytes  35  and  36  define the VESA-established video resolutions and timings that are supported by the monitor. Each bit represents an established timing. As is typical, a notation of a video resolution and timing (referred to as a timing option), can be designated as H_Active x V_Active @ frame frequency (in Hz). In particular, byte  35  indicates 720×400@70 Hz (bit  7 ), 720×400@88 Hz (bit  6 ), 640×480@60 Hz (bit  5 ), 640×480@72 Hz (bit  4 ), 640×480@75 Hz (bit  3 ), 800×600@75 Hz (bit  2 ), 800×600@56 Hz (bit  1 ), and 800×600@60 Hz (bit  0 ). Byte  36  indicates 800×600@72 Hz (bit  7 ), 800×600@75 Hz (bit  6 ), 832×624@75 Hz (bit  5 ), 1024×768@87 Hz (Interlaced) (bit  4 ), 1024×768@60 Hz (bit  3 ), 1024×768@70 Hz (bit  2 ), 1024×768@75 Hz (bit  1 ), and 1280×1024@75 Hz (bit  0 ). Byte  37  indicates manufacturer&#39;s reserved timing, if any are defined, for example setting bit  7  may indicate an 1152×870@75 Hz timing supported by Apple. 
     Bytes  38 - 53  indicate up to eight additional video resolutions that adhere to the VESA defined timings that are supported by the monitor, with each definition being made in two sequential bytes. The first byte indicates the horizontal resolution, which is determined by multiplying the value of the first byte by 8 and adding 248. The second byte indicates the aspect ratio and vertical frequency. Bits  7 - 6  indicate the aspect ration, with “00”=16:10; “01”=4:3; “10”=5:4; and “11”=16:9. Bits  5 - 0  indicate the vertical frequency, with the actual vertical frequency determined by addition  60  to the value. 
     Bytes  54 - 125  are organized into four 18-byte blocks that describe additional video resolutions in detail so that custom video timings and resolutions can be supported. The first 18-byte block can be utilized to describe the preferred video timing for the monitor. Timing data can be structured according to the VESA Generalized Timing Formula. Using Descriptor Block  1 , bytes  54 - 71 , as an example, the pixel clock is provided in bytes  54  and  55  with byte  55  providing the most-significant bits and byte  54  providing the least significant bits. If the pixel clock provided in bytes  54 - 55  are non-null, then byte  56  provides the horizontal active pixels LSB, byte  57  provides the horizontal blanking in pixels LSB, byte  58  in the 4 upper bits provides the horizontal active pixels MSB and the 4 lower bits provide the horizontal blanking MSB. Similarly, byte  59  provides the LSB vertical active lines, byte  60  provides the LSB vertical blanking while byte  61  in the four upper bits provides the MSB of the vertical active lines and the four lower bits provide the MSB of the vertical blanking. Byte  62  provides the LSB of the horizontal sync offset in pixels. Byte  63  provides the LSB of the horizontal sync pulse width in pixels. Byte  64  provides the LSB of the vertical sync offset in the four upper bits and the LSB of the vertical sync pulse width in the four lower bits. Byte  65  provides the MSB of the horizontal sync offset in bits  7 - 6 , the MSB of the horizontal sync pulse width in bits  5 - 4 , the MSB of the vertical sync offset in bits  3 - 2 , and the MSB of the vertical sync pulse width in bits  1 - 0 . The LSB of the horizontal image size in millimeters is provided in byte  66  while the LSB of the vertical image size in millimeters is provided in byte  67 . Byte  68  provides the MSB of the horizontal image size in the four upper bits and the MSB of the vertical image size in the four lower bits. Byte  69  provides the horizontal border in pixels. Byte  70  provides the vertical border in lines. Byte  71  provides parameter information: interlaced or not in bit  7 , stereo or not in bits  6 - 5 , separate sync or not in bits  4 - 3 , vertical sync positive or not in bit  2 , horizontal sync positive in not in bit  1 , stereo mode in bit  0 . 
     If the pixel clock designated in bytes  54 - 55  are 0, then the designations for bytes  56 - 71  are different. In that case, byte  56  is set to 0. Byte  57  indicates the block type: “FFh”=monitor serial number, “FEh”=ASCII string, “FDh”=Monitor Range Limits, “FCh”=Monitor name, “FBh”=color point data, “FAh”=standard timing data, “F9h”=undefined, and “0Fh”=manufacturer defined. Byte  58  is set to 0. If the block type is “FFh”, “FEh”, or FCh”, then blocks  59 - 71  holds a text string. If the block type is “FDh” then bytes  59 - 63  hold the minimum vertical frequency, maximum vertical frequency, minimum horizontal frequency, maximum horizontal frequency, and the pixel clock; bytes  64 - 65  provide a secondary GTF toggle indicating which of bytes  59 - 63  or bytes  67 - 71  to utilize for timing information; byte  66  provides a start horizontal frequency in kHz; byte  67  provides the value C; bytes  68 - 69  provides the value M with the LSB stored in byte  68 ; byte  70  provides the value K; and byte  71  provides the value J. The parameters C, M, K, and J refer to parameters in a secondary timing curve that is utilized to specify some timing optionsIf the block type is “FBh,” then bytes  59 - 71  are utilized for color data. Byte  59  indicates W index  0  and, if set to 0, then bytes  60 - 63  are unused but if set to 1, then bytes  61 - 63  are assigned to a white point index # 1 . Similarly, byte  64  also represents W index  1  and, if set to 0, then bytes  65 - 68  are unused and if set to 2, then bytes  65 - 68  are assigned to white point index # 2 . The white point index structure is as follows: First byte, bits  3 - 2  are the LSB of White X and bits  1 - 0  are the LSB of White Y; the Second to Third bytes are the MSB significant bits of White X and White Y; the Fourth byte indicates Gamma. 
     If the block type is “FAh”, then bytes  59 - 70  indicate standard timing identification with two bytes for each record as is indicated with bytes  38 - 53  above. Descriptor blocks  2 ,  3 , and  4 , corresponding to bytes  72 - 89 ,  90 - 107 , and  108 - 125 , respectively, follow the same format as described above for descriptor block  1  in bytes  54 - 71 . 
     Byte  126  is an extension flag and is utilized to indicate how many additional 128 byte EDID records follow the current data. Byte  127  is a Checksum byte and is set such that the sum of all 128 bytes in the EDID data is summed to “00h”. 
     Extension data, for example EDID  2  through EDID M shown in EDID data  130  in  FIG. 1 , may, for example, adhere to the CEA EDID Timing Extension Version 3 data format. In accordance with the CEA EDID timing extension, byte  00  is an extension flag where “02h” indicates the CEA EDID standard. Byte  01  indicates the revision number, currently “03h” for Version 3. Byte  02  identifies the byte number for the start of the 18 byte detailed timing descriptor (DTD) blocks, which are coded in the format discussed above. If byte  02  is “00h”, then the extension block includes no DTD data. Byte  3  includes further parameter data: bit  7  indicates whether or not the monitor supports underscan; bit  6  indicates whether or not the monitor supports basic audio; bit  5  is set if the monitor supports YCbCr 4:4:4 formatted data; bit  4  is set if the monitor supports YCbCr 4:2:2 formatted data; bits 3:0 indicate the total number of DTD blocks included in the current EDID data block. 
     If byte  2  is set to “04h”, then 18 byte DTD blocks start with byte  04 . The format for the 18 byte blocks is discussed above with respect to bytes  54 - 71  of the first EDID data block discussed above. 
     If byte  2  is not set to “04h”, then byte  04  starts a data block collection that includes one or more data blocks detailing video, audio, and speaker placement information about the monitor. The blocks can be placed in any order, and the initial byte of each block defines both its type and its length. Data collection blocks continue until the block designated by byte  2 , which begins the 18 byte DTD blocks, or until all of the data collection blocks are included. The first byte in each data collection block, therefore, is arranged as follows: Bits 7:5 defines the block type tag (1 for audio, 2 for video, 3 is vendor specific, 4 is for speaker allocation); and Bits 4:0 provides the total number of bytes in the block following the first byte. Once one data block has ended, the next byte is assumed to be the beginning of the next data block. 
     An audio data block contains one or more 3-byte short audio descriptors (SADs). Each SAD details audio format, channel number, and bitrate/resolution capabilities of the display. SAD byte  1  defines the format and number of channels. Bit  7  of SAD byte  1  is reserved ( 0 ) while bits 6:3 of SAD byte  1  indicate the audio format code as follows: 1=Linear Pulse Code Modulation (LPCM); 2=AC-3; 3=MPEG1 (layers  1  and  2 ); 4=MP3; 5=MPEG2; 6=AAC; 7=DTS; 8=ATRAC; 9=One-bit audio aka SACD; 10=DD+; 11=DTS-HD; 12=MLP/Dolby True HD; 13=DST Audio; and 14=Microsoft SMA Pro. Bits 2:0 indicate the number of channels minus 1 (i.e. “000h”=1 channel and “111h” is eight channels). 
     SAD Byte  2  indicates the supported sampling frequencies (bit  7  is reserved; bit  6  indicates 192 kHz; bit  5  indicates 176 kHz; bit  4  indicates 96 kHz; bit  3  indicates 88 kHz; bit  2  indicates 48 kHz; bit  1  indicates 44 kHz; and bit  0  indicates 32 kHz). SAD Byte  3  indicates the bit rate. For LPCM, bits 7:3 of byte  3  are reserved; bit  2  indicates 24 bit; bit  1  indicates 20 bit; and bit  0  indicates 16 bit. For other formats, bits 7:0 designate the maximum supported bitrate divided by 8 kHz. 
     A Video Data Block includes one or more 1-byte short video descriptors (SVDs). Bit  7  of the SVD byte being 1 designates that the SVD should be considered a “native” resolution and bit  7  being 0 indicating non-native resolutions. Bits 6:0 of SVD  1  is an index value to a table of standard resolutions and timings defined by CEA/EIE-861E as indicated in Table 2 
     Designations for the values 0 and 64-127 are reserved. Additionally, short video descriptors  20  and  39  differ in the number of vertical total lines, which are 1125 and 1250, respectively. In Table 2, parentheses indicate where pixels are repeated to meet the minimum speed requirements of the interface. In designations  10  and  11  ((2880)X480i), the number of pixels on each line, and thus the number of times that those pixels are repeated, is variable, and is sent to the monitor by the source device. Increased Hactive expressions include “2×” and “4×” indicate two and four times the reference resolution, respectively. 
     Table 2 illustrates the CEA/EIA-861/E VESA standard. CEA/EIA-861/A standard includes only designations  1 - 7  and designations  17 - 22  above, which are considered primary video format timings. Short video descriptors as defined in Table 2 where introduced in CEA/EIA-861B. The CEA/EIA-861B also defined designations  8 - 16  and  23 - 34  so that it included the first 34 short video descriptors described in Table 2. The CEA/EIA-861D standard included the first 59 short video descriptors above. HDMI 1.0 to HDMI 1.2a uses the CEA-861-B video standard, HDMI 1.3 to HDMI 1.3c uses the CEA-861-D video standard, and HDMI 1.4 uses the CEA/EIA-861E video standard. 
     A Vendor Specific Data Block contains as its first three bytes the vendor&#39;s IEEE 24-bit registration number, LSB first. For example, with HDMI vendors, the first three bytes contain “00h 0Ch 03h” for HDMI Licensing, LLC. The next two bytes provide a source physical address, LSB first, which provides the CEC physical address for upstream CEC devices. It is followed by a two byte source physical address, LSB first. The source physical address provides the CEC physical address for upstream CEC devices. The remainder of the Vendor Specific Data Block is the “data payload”, which can be anything the vendor considers worthy of inclusion in this EDID extension block. 
     If a Speaker Allocation Data Block is present, it will consist of three bytes. The second and third are Reserved (all 0), but the first byte contains information about which speakers are present in the display device: bit  7  is Reserved ( 0 ); bit  6  indicates the presence of rear left center and rear right center speakers; bit  5  indicates the presence of front left center and front right center speakers; bit  4  indicates the presence of rear center speaker; bit  3  indicates the presence of rear left and rear right speakers; bit  2  indicates the presence of a front center present speaker; bit  1  indicates the presence of LFE; and bit  0  indicates the presence of front left and front right speakers. 
     At the completion of all block of data, the extension block is padded with “00h” until byte  126 . In each block, bytes  126  and  127  are as defined above with the first EDID block. 
     Although on particular EDID data structure was discussed in some detail above, embodiments of the present invention can operate with any formatted EDID data. As such, the present invention is not limited to operation with the VESA EDID standard discussed above. Instead, embodiments of the present invention may operate with any EDID data. 
       FIG. 2  illustrates a driver  200  according to some embodiments of the present invention. Driver  200  communicates with an outside source  202  through interface  210 , which provides signals to processor  220 . Embodiments of interface  210  can communicate with any outside source  202 . In some embodiments, the outside source  202  and driver  200  are compatible with the DisplayPort standard (the “DP standard”). The VESA DisplayPort Standard, Version 1, Revision 1a, released Jan. 11, 2008, which is available from the Video Electronics Standard Association (VESA), 860 Hillview Court, Suite 150, Milpitas, Calif. 95035, is herein incorporated by reference in its entirety. In accordance with the DisplayPort standard, data is transmitted between the source and interface  210  through three data links: a main link, an auxiliary channel, and a hot plug detect. Main link may include 1, 2, or 4 data lanes. 
     The DP standard currently provides for up to 10.8 Gbps (giga bits per second) through main link, which may support greater than QXGA (2048×1536) pixel formats, and greater than 24 bit color depths. Further, the DP standard currently provides for variable color depth transmissions of 6, 8, 10, 12, or 16 bits per component. In accordance with the DP standard, bi-directional auxiliary channel provides for up to 1 Mbps (mega bit per second) with a maximum latency of 500 micro-seconds. Furthermore, a hot-plug detection channel is provided. The DP standard provides for a minimum transmission of 1080p lines at 24 bpp at 50/60 Hz over 4 lanes at 15 meters. 
     Additionally, the DP standard supports reading of the extended display identification data (EDID) whenever the hot plug detecting channel indicates to the outside sink is connected. Further, the DP standard supports display data channel/command interface (DDC/CI) and monitor command and controls set (MMCS) command transmission. Further, the DP standard supports configurations that do not include scaling, a discrete display controller, or on screen display (OSD) functions. 
     The DP standard supports various audio and visual content standards. For example, the DP standard supports the feature sets defined in CEA-861-C for transmission of high quality uncompressed audio-video content, and CEA-931-B for the transport of remote control commands between a sink, such as multi-monitor driver  200 , and an outside source. Although support of audio aspects is not important to embodiments of the present invention, the DP standard supports up to eight channels of linear pulse code modulation (LPCM) audio at 192 kHz with a 24 bit sample size. The DP standard also supports variable video formats based on flexible aspect, pixel format, and refresh rate combinations based on the VESA DMT and CVT timing standards and those timing modes listed in the CEA-861-C standard. Further, the DP standard supports industry standard colorimetry specifications for consumer electronics devices, including RGB and YCbCr 4:2:2 and YCbCr 4:4:4. 
     Processor  220  provides data for presentation on one or more multiple monitors through monitor interfaces  250 - 1  through  250 -M, where M can be any integer greater than or equal to one. Monitor interfaces  250 - 1  through  250 -M each act as individual sources to the monitors coupled to them, monitors  100 - 1  through  100 -M, respectively. As indicated in  FIG. 2 , each of monitor interfaces  250 - 1  through  250 -M is coupled to a corresponding one of monitors  100 - 1  trough  100 -M. Each of mMonitors  100 - 1  through  100 -M can be similar to monitor  100  as shown in  FIG. 1 , but each may have different EDID characteristics as indicated in the EDID memories of each of the monitors. Processor  220  can read the EDID data from each of monitors  100 - 1  through  100 -M through monitor interface  250 - 1 -monitor interface  250 -M. 
     Processor  220  is further coupled to an EDID memory  230  and a memory  240 . Memory  240  can include both RAM and ROM memories. Programming instructions and operating parameters, for example, may be stored in ROM memory. EDID memory  230 , which may be combined with the RAM portion of memory  240 , holds the EDID data that is provided to an outside video source  202  by processor  220  through decoder/encoder  210 . In some embodiments, the EDID data produced by processor  220  is consolidated data considering the EDID data from each of monitors  100 - 1  through  100 -M and follows the VESA EDID convention as discussed above. However, other conventions can be utilized. 
     Whenever monitor driver  200  is started, or in some cases whenever a new one of monitors  100 - 1  through  100 -M is plugged into driver  200 , processor  220  receives the EDID identifications from each of monitors  100 - 1  through  100 -M through interfaces  250 - 1  through  250 -M, respectively, and generates consolidated EDID data for storage in EDID memory  230 . Video source  202  reads the EDID information stored in EDID memory  230  through decoder/encoder  210 . 
     The EDID data stored in EDID memory  230  provides source  202  with the operating parameters for a conglomerate of monitors  100 - 1  through  100 -M. For example, the horizontal and vertical dimensions presented to the source represents the overall physical dimensions spanned by the monitors attached to monitor interfaces  250 - 1  through  250 -M. As such, to source  202 , driver  200  appears to be a video sink of the consolidated dimensions and video timing characteristics stored in EDID memory  230 . Further, to each of monitors  100 - 1  through  100 -M, driver  200  appears as a source providing video data at dimensions and video timing characteristics compatible with each individual monitor. Splitting DisplayPort compatible video data for distribution across multiple monitors is described, for example, in U.S. patent application Ser. No. 12/353,132, filed on Jan. 13, 2009; U.S. patent application Ser. No. 12/755,253, filed on Apr. 6, 2010; U.S. patent application Ser. No. 12/634,571, filed on Dec. 9, 2009; Taiwanese Application No. 99100666, filed Jan. 12, 2010, each of which is incorporated herein by reference in its entirety. As discussed above, driver  200  may communicate with source  202  utilizing any standard and may communicate with monitors  100 - 1  through  100 -M using any standard. One such standard is the DisplayPort standard discussed above. 
     Monitors  100 - 1  through  100 -M, attached to monitor interfaces  250 - 1  through  250 -M, may be arranged in any way. For example, all of monitors  100 - 1  through  100 -M may be physically positioned in a row of monitors, or in some other physical arrangement. Or, monitors  100 - 1  through  100 -M may be physically positioned in a two-dimensional grid of monitors. In some embodiments, processor  220  may receive a user-input parameter through a user interface  260 . User interface  260  may take any form, for example a touchscreen, a video screen or lighted indicators with associated mechanical switches, or even one or more toggle switches with no indicators to input a pre-determined code that determines user settable operating parameters for driver  200 . For example, user settable operating parameters may indicate the physical relationship between the monitors attached to monitor interface  250 - 1  through  250 -M. 
     In some embodiments, user interface  260  may not be present, in which case driver  200  can be configured by outside source  202  through decoder/encoder  210 . In some embodiments, driver  200  may default to an assumed monitor physical layout, for example all monitors aligned in one row or all monitors arranged in a two-dimensional rectangle. 
     The consolidated EDID data written into EDID memory  230  reflects the physical positioning of the monitors. Further, the consolidated EDID data written into EDID memory reflects the pixel sizes and the pixel speeds and dimensions of the individual ones of the monitors attached to monitor interfaces  250 - 1  through  250 -M. Additionally, the consolidated EDID data can be written into EDID memory  230  in a standard format such as the VESA EDID format described above to be compatibly read by source  202  through decoder/encoder  210 . 
       FIG. 3  illustrates a flow chart of a process  300 , executed by processor  220 , for generating consolidated EDID data for storage in EDID memory  230 . Process  300  can be indicated by program instructions stored in memory  240 , which may be executed by processor  220 . Start  310  is executed upon startup of driver  200  or when a new one of monitors  100 - 1  through  100 -M is attached to driver  200 . From start  310 , process  300  proceeds to step  320 . In step  320 , the EDID data is read from each one of the attached monitors  100 - 1  through  100 -M. In some embodiments, when a new monitor is attached to driver  200 , only the EDID data from the new monitor is read. However, in some embodiments all of the monitors are read so that a full set of EDID data is obtained. In some embodiments, EDID data from each of the monitors may be stored in memory  240  for processing. Process  300  then proceeds to step  330 . 
     In step  330 , the EDID data for each of the monitors is compared to determine a set of operating parameters (e.g., pixel sizes and pixel timing) that is compatible between the monitors. When one is found, it is included in the consolidated EDID data that will be stored in EDID memory  230 . In some embodiments, compatible operating parameters are those that are the same. In that case, step  330  determines a set of supported operating parameters that are common amongst all of monitors  100 - 1  through  100 -M. In some embodiments, compatible operating parameters involve a determination of each monitor&#39;s physical size and pixel density so that compatible resolutions can be determined. Embodiments providing for various compatible relationships between individual sets of parameters can be implemented according to the present invention. 
     In step  340 , a consolidated EDID data is provided that includes the compatible data found in step  330 . Consolidated EDID data includes the EDID data formatted as described above. Individual EDID data for each of the monitors  100 - 1  through  100 -M upon which the consolidated EDID data is based may also be stored in EDID memory  230 . For example, in the case where all of the monitors are in a single row and a compatible EDID data is one where all have the same physical size, pixel dimensions, and timing, then the consolidated EDID data would have a horizontal dimension equal to M times the individual horizontal dimension, horizontal pixel dimension equal to M times the individual monitor pixel dimension, and vertical pixel dimension equal to the vertical pixel dimension of each of the monitors. In that case, the consolidated EDID data and the individual EDID data for each monitor may be stored. 
     When step  340  is completed, process  300  checks to see if EDID memory  230  is full or if all of the sets of operating parameters have been compared for compatibility in step  350 . If not, then process  300  returns to step  330  to find another compatible set of operating parameters. If finished, process  300  ends at step  350 . 
     After step  350 , driver  200  can proceed to receive video data according to one of the sets of consolidated operating parameters in the consolidated EDID data selected by source  202 . Driver  202  distributes data according to the corresponding individual sets of operating parameters for each of monitors  100 - 1  through  100 -M that correspond to the consolidated operating parameters chosen by source  202 . 
     In some embodiments, steps  320  and  330  may be combined so that, as the EDID data from each monitor is read, only the sets of parameters that are compatible are retained and incompatible sets are discarded. In that case, when the last monitor is read the compatible sets of data are already determined. Further, in some cases, when a new monitor is plugged into driver  200 , its EDID data can be readily compared with the compatible sets stored with the consolidated EDID data instead of obtaining all of the individual EDID data from each monitor again. 
       FIG. 4  illustrates process  400 , which is an example of process  300  in the case where the monitors are arranged in a single row and where compatible sets of operating parameters are determined when the operating parameters are common. As indicated, process  400  starts in step  402  when driver  200  is started or when a new monitor is plugged into driver  200 . From step  402 , process  400  proceeds to step  404  where EDID data is read from one of monitors  100 - 1  through  100 -M. In step  406 , the EDID data read in step  404  is analyzed to determine supported sets of operating parameters for that monitor. As indicated above, supported sets of operating parameters include determination of resolution and timings that are supported by that monitor. In step  408 , process  400  determines whether all of monitors  100 - 1  through  100 -M have been read. If not, then process  400  repeats steps  404  and  406  until the EDID data from all of the monitors have been read and the timing options for each of them determined. When the EDID data from all of monitors  100 - 1  through  100 -M have been read, then process  400  proceeds to step  410 . 
     In step  410 , the timing options for each of monitors  100 - 1  through  100 -M are compared for compatibility. In this embodiment, when a timing option that is common between all of monitors  100 - 1  through  100 -M is determined or if no common timing parameter is found, the process  400  proceeds to step  412 . In other embodiments, other standards for determining whether timing options are compatible may be utilized. In some embodiments, the first few timing options (for example the first eight) that are found can be set as the standard timing settings. 
     In step  412 , if a new common timing option is found in step  410 , then that timing entry is utilized to determine a consolidated timing entry in step  414 . In particular, in the example where all of the monitors are arranged in a row, and there is a common timing option, the horizontal pixel resolution is set to M times the individual monitor pixel resolution and the vertical pixel resolution is set to the individual monitor pixel resolution. In the notation used above, the consolidated timing entry corresponds to (M*H Active) x V_active@Frame Frequency. Blanking information in the consolidated timing entry can be kept the same as in the common timing entry. The consolidated timing entry can be entered into the EDID data in the fashion described above to provide a VESA compatible EDID data that can be read by source  202 . 
     In step  416 , in some embodiments process  400  determines whether the consolidated timing entry is greater than an allowable limit. In some cases, the timing entry may be greater than the storage allocated for holding that parameter. For example, in the 18 byte detailed timing block described above, the horizontal resolution can be limited to 4096. In some embodiments, other limits may be checked to insure that the new consolidated timing entry falls within acceptable limits. 
     If the consolidated timing entry is acceptable, then it is added to the EDID data in step  418 . In many cases, the timing entry is not a standard timing entry and therefore is added as an 18 byte detail timing block in the VESA EDID standard. Other standards may utilize a different formatting for a timing entry. In accordance with the standards set above, a limited number of 18 byte detail timing block entries can be made between the EDID block and the extension block. For example, in some embodiments up to nine detail timing block entries can be included, with three saved in the EDID base block and six saved in the EDID extension block. The timing entry in the first detailed timing block can be the preferred timing block for driver  200 . 
     Once the new timing entry is added to the EDID data, then process  400  proceeds to step  420 . In step  420 , process  400  determines whether there is room for another timing entry. If not, the process ends in step  422  when the consolidated EDID data that has been compiled is written into EDID memory  230 . If not, then process  400  returns to step  410  to determine if there is another possible timing entry that qualifies. 
     In step  412 , if no further compatible timing entries are found in step  410  then process  400  proceeds to step  424 . Additionally, if step  416  determines that one of the parameters has been exceeded, the process  400  proceeds to step  424 . In step  424 , if there are other timing entries already included in the EDID data, then process  400  ends in step  422 . Otherwise, a default timing entry is determined in step  426 . For example, the default timing entry can be set as 3840×V_Active@ Frame Frequency, where V_Active, the Frame Frequency, and the blanking information is chosen from a timing entry of one of the monitors. In step  428 , the default timing entry is entered into the consolidated EDID data. Process  400  then ends in step  422 . 
     The examples provided above are exemplary only and are not intended to be limiting. One skilled in the art may readily devise other multi-monitor systems consistent with embodiments of the present invention which are intended to be within the scope of this disclosure. As such, the application is limited only by the following claims. 
     
       
         
           
               
               
               
             
               
                 TABLE 1 
               
               
                   
               
               
                 Bytes 
                 Data 
                 Description 
               
               
                   
               
             
            
               
                 0-7 
                 Header 
                 Fixed: “00h FFh FFh FFh FFh 
               
               
                   
                   
                 FFh FFh 00h” 
               
               
                 8-9 
                 Manufacturer ID 
                 Product Identification 
               
               
                 10-11 
                 Product ID code 
               
               
                 12-15 
                 Serial Number 
               
               
                 16-17 
                 Manufacture Date 
               
               
                 18 
                 EDID Version # 
                 EDID Version Information 
               
               
                 19 
                 EDID Revision # 
               
               
                 20 
                 Video Input Type 
                 Basic Display Parameters 
               
               
                 21 
                 Horizontal Size (cm) 
               
               
                 22 
                 Vertical Size (cm) 
               
               
                 23 
                 Display Gamma 
               
               
                 24 
                 Supported Features 
               
               
                 25-34 
                 Color Characteristics 
                 Color Space Definition 
               
               
                 35-36 
                 Established Supported 
                 Timing information for all 
               
               
                   
                 Timings 
                 resolutions supported by the 
               
               
                 37 
                 Manufacturer&#39;s Reserved 
                 Monitor 
               
               
                   
                 Timing 
               
               
                 38-53 
                 EDID Standard Timings 
               
               
                   
                 Supported 
               
               
                 54-71 
                 Detailed Timing Descriptor 
               
               
                   
                 (DTD) 
               
               
                 72-89 
                 Detailed Timing Descriptor 
               
               
                  90-107 
                 Detailed Timing Descriptor 
               
               
                 108-125 
                 Detailed Timing Descriptor 
               
               
                 126  
                 Extension Flag 
                 Number of following EDID 
               
               
                   
                   
                 blocks 
               
               
                 127  
                 Checksum 
               
               
                   
               
            
           
         
       
     
     
       
         
           
               
               
               
               
             
               
                 TABLE 2 
               
               
                   
               
               
                   
                   
                 Aspect 
                   
               
               
                 Designation 
                 Name 
                 Ratio 
                 Resolution/@freq. 
               
               
                   
               
             
            
               
                   
               
            
           
           
               
               
               
               
            
               
                 1 
                 DMT0659 
                  4:3 
                 640 × 480p @ 59.94/60 Hz 
               
               
                 2 
                 480p 
                  4:3 
                 720 × 480p @ 59.94/60 Hz 
               
               
                 3 
                 480pH 
                 16:9 
                 720 × 480p @ 59.94/60 Hz 
               
               
                 4 
                 720p 
                 16:9 
                 1280 × 720p @ 59.94/60 Hz 
               
               
                 5 
                 1080i 
                 16:9 
                 1920 × 1080i @ 59.94/60 Hz 
               
               
                 6 
                 480i 
                  4:3 
                 720(1440) × 480i @ 59.94/60 Hz 
               
               
                 7 
                 480iH 
                 16:9 
                 720(1440) × 480i @ 59.94/60 Hz 
               
               
                 8 
                 240p 
                  4:3 
                 720(1440) × 240p @ 59.94/60 Hz 
               
               
                 9 
                 240pH 
                 16:9 
                 720(1440) × 240p @ 59.94/60 Hz 
               
               
                 10 
                 480i4x 
                  4:3 
                 (2880) × 480i @ 59.94/60 Hz 
               
               
                 11 
                 480i4xH 
                 16:9 
                 (2880) × 480i @ 59.94/60 Hz 
               
               
                 12 
                 240p4x 
                  4:3 
                 (2880) × 240p @ 59.94/60 Hz 
               
               
                 13 
                 240p4xH 
                 16:9 
                 (2880) × 240p @ 59.94/60 Hz 
               
               
                 14 
                 480p2x 
                  4:3 
                 1440 × 480p @ 59.94/60 Hz 
               
               
                 15 
                 480P2xH 
                 16:9 
                 1440 × 480p @ 59.94/60 Hz 
               
               
                 16 
                 1080p 
                 16:9 
                 1920 × 1080p @ 59.94/60 Hz 
               
               
                 17 
                 576p 
                  4:3 
                 720 × 576p @ 50 Hz 
               
               
                 18 
                 576pH 
                 16:9 
                 720 × 576p @ 50 Hz 
               
               
                 19 
                 720p50 
                 16:9 
                 1280 × 720p @ 50 Hz 
               
               
                 20 
                 1080i25 
                 16:9 
                 1920 × 1080i @ 50 Hz 
               
               
                 21 
                 576i 
                  4:3 
                 720(1440) × 576i @ 50 Hz 
               
               
                 22 
                 576iH 
                 16:9 
                 720(1440) × 576i @ 50 Hz 
               
               
                 23 
                 288p 
                  4:3 
                 720(1440) × 288p @ 50 Hz 
               
               
                 24 
                 288pH 
                 16:9 
                 720(1440) × 288p @ 50 Hz 
               
               
                 25 
                 576i4x 
                  4:3 
                 (2880) × 576i @ 50 Hz 
               
               
                 26 
                 576i4xH 
                 16:9 
                 (2880) × 576i @ 50 Hz 
               
               
                 27 
                 288p4x 
                  4:3 
                 (2880) × 288p @ 50 Hz 
               
               
                 28 
                 288p4xH 
                 16:9 
                 (2880) × 288p @ 50 Hz 
               
               
                 29 
                 576p2x 
                  4:3 
                 1440 × 576p @ 50 Hz 
               
               
                 30 
                 576p2xH 
                 16:9 
                 1440 × 576p @ 50 Hz 
               
               
                 31 
                 1080p50 
                 16:9 
                 1920 × 1080p @ 50 Hz 
               
               
                 32 
                 1080p24 
                 16:9 
                 1920 × 1080p @ 23.98/24 Hz 
               
               
                 33 
                 1080p25 
                 16:9 
                 1920 × 1080p @ 25 Hz 
               
               
                 34 
                 1080p30 
                 16:9 
                 1920 × 1080p @ 29.97/30 Hz 
               
               
                 35 
                 480p4x 
                  4:3 
                 (2880) × 480p @ 59.94/60 Hz 
               
               
                 36 
                 480p4xH 
                 16:9 
                 (2880) × 480p @ 59.94/60 Hz 
               
               
                 37 
                 576p4x 
                  4:3 
                 (2880) × 576p @ 50 Hz 
               
               
                 38 
                 576p4xH 
                 16:9 
                 (2880) × 576p @ 50 Hz 
               
               
                 39 
                 1080i25 
                 16:9 
                 1920 × 1080i(1250 Total) @ 50 Hz 
               
               
                 40 
                 1080i50 
                 16:9 
                 1920 × 1080i @ 100 Hz 
               
               
                 41 
                 720p100 
                 16:9 
                 1280 × 720p @ 100 Hz 
               
               
                 42 
                 576p100 
                  4:3 
                 720 × 576p @ 100 Hz 
               
               
                 43 
                 576p100H 
                 16:9 
                 720 × 576p @ 100 Hz 
               
               
                 44 
                 576i50 
                  4:3 
                 720(1440) × 576i @ 100 Hz 
               
               
                 45 
                 576i50H 
                 16:9 
                 720(1440) × 576i @ 100 Hz 
               
               
                 46 
                 1080i60 
                 16:9 
                 1920 × 10801 @ 119.88/120 Hz 
               
               
                 47 
                 720p120 
                 16:9 
                 1280 × 720p @ 119.88/120 Hz 
               
               
                 48 
                 480p119 
                  4:3 
                 720 × 480p @ 119.88/120 Hz 
               
               
                 49 
                 480p119H 
                 16:9 
                 720 × 480p @ 119.88/120 Hz 
               
               
                 50 
                 480i59 
                  4:3 
                 720(1440) × 480i @ 119.88/120 Hz 
               
               
                 51 
                 480i59H 
                 16:9 
                 720(1440) × 480i @ 119.88/120 Hz 
               
               
                 52 
                 576p200 
                  4:3 
                 720 × 576p @ 200Hz 
               
               
                 53 
                 576p200H 
                 16:9 
                 720 × 576p @ 200Hz 
               
               
                 54 
                 576i100 
                  4:3 
                 720(1440) × 576i @ 200 Hz 
               
               
                 55 
                 576i100H 
                 16:9 
                 720(1440) × 576i @ 200 Hz 
               
               
                 56 
                 480p239 
                  4:3 
                 720 × 480p @ 239.76/240 Hz 
               
               
                 57 
                 480p239H 
                 16:9 
                 720 × 480p @ 239.76/240 Hz 
               
               
                 58 
                 480i119 
                  4:3 
                 720(1440) × 480i @ 239.76/240 Hz 
               
               
                 59 
                 480i119H 
                 16:9 
                 720(1440) × 480i @ 239.76/240 Hz 
               
               
                 60 
                 720p24 
                 16:9 
                 1280 × 720p @ 23.98/24 Hz 
               
               
                 61 
                 720p25 
                 16:9 
                 1280 × 720p @ 25 Hz 
               
               
                 62 
                 720p30 
                 16:9 
                 1280 × 720p @ 29.97/30 Hz 
               
               
                 63 
                 1080p120 
                 16:9 
                 1920 × 1080 @ 119.88/120 Hz