drm/i915/gvt: add more resolutions in virtual edid
authorChuanxiao Dong <chuanxiao.dong@intel.com>
Fri, 13 Jan 2017 02:17:02 +0000 (10:17 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Tue, 7 Feb 2017 09:19:59 +0000 (17:19 +0800)
The current virtual edid can only support the resolution up
to 1024x768. Update the virtual edid so that can support more
resoltions. With this new virtual edid, resolution can
be up to 1920x1200.

V2: add detailed modeline description in edid code comments

Signed-off-by: Chuanxiao Dong <chuanxiao.dong@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
drivers/gpu/drm/i915/gvt/display.c

index c0c884aeb30ea956c477700064c03427d162e3f4..1a4430724069f44f89a5e1eab0a00d1955f592d2 100644 (file)
@@ -83,7 +83,7 @@ static int pipe_is_enabled(struct intel_vgpu *vgpu, int pipe)
        return 0;
 }
 
-/* EDID with 1024x768 as its resolution */
+/* EDID with 1920x1200 as its resolution */
 static unsigned char virtual_dp_monitor_edid[] = {
        /*Header*/
        0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
@@ -97,11 +97,16 @@ static unsigned char virtual_dp_monitor_edid[] = {
        0xfc, 0x81, 0xa4, 0x55, 0x4d, 0x9d, 0x25, 0x12, 0x50, 0x54,
        /* Established Timings: maximum resolution is 1024x768 */
        0x21, 0x08, 0x00,
-       /* Standard Timings. All invalid */
-       0x00, 0xc0, 0x00, 0xc0, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00,
-       0x00, 0x40, 0x00, 0x00, 0x00, 0x01,
-       /* 18 Byte Data Blocks 1: invalid */
-       0x00, 0x00, 0x80, 0xa0, 0x70, 0xb0,
+       /*
+        * Standard Timings.
+        * below new resolutions can be supported:
+        * 1920x1080, 1280x720, 1280x960, 1280x1024,
+        * 1440x900, 1600x1200, 1680x1050
+        */
+       0xd1, 0xc0, 0x81, 0xc0, 0x81, 0x40, 0x81, 0x80, 0x95, 0x00,
+       0xa9, 0x40, 0xb3, 0x00, 0x01, 0x01,
+       /* 18 Byte Data Blocks 1: max resolution is 1920x1200 */
+       0x28, 0x3c, 0x80, 0xa0, 0x70, 0xb0,
        0x23, 0x40, 0x30, 0x20, 0x36, 0x00, 0x06, 0x44, 0x21, 0x00, 0x00, 0x1a,
        /* 18 Byte Data Blocks 2: invalid */
        0x00, 0x00, 0x00, 0xfd, 0x00, 0x18, 0x3c, 0x18, 0x50, 0x11, 0x00, 0x0a,
@@ -115,7 +120,7 @@ static unsigned char virtual_dp_monitor_edid[] = {
        /* Extension Block Count */
        0x00,
        /* Checksum */
-       0xef,
+       0x45,
 };
 
 #define DPCD_HEADER_SIZE        0xb