|
@@ -83,44 +83,80 @@ static int pipe_is_enabled(struct intel_vgpu *vgpu, int pipe)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static unsigned char virtual_dp_monitor_edid[GVT_EDID_NUM][EDID_SIZE] = {
|
|
|
|
+ {
|
|
|
|
+/* EDID with 1024x768 as its resolution */
|
|
|
|
+ /*Header*/
|
|
|
|
+ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
|
|
|
+ /* Vendor & Product Identification */
|
|
|
|
+ 0x22, 0xf0, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x04, 0x17,
|
|
|
|
+ /* Version & Revision */
|
|
|
|
+ 0x01, 0x04,
|
|
|
|
+ /* Basic Display Parameters & Features */
|
|
|
|
+ 0xa5, 0x34, 0x20, 0x78, 0x23,
|
|
|
|
+ /* Color Characteristics */
|
|
|
|
+ 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,
|
|
|
|
+ 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,
|
|
|
|
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
|
|
|
+ /* 18 Byte Data Blocks 3: invalid */
|
|
|
|
+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x48,
|
|
|
|
+ 0x50, 0x20, 0x5a, 0x52, 0x32, 0x34, 0x34, 0x30, 0x77, 0x0a, 0x20, 0x20,
|
|
|
|
+ /* 18 Byte Data Blocks 4: invalid */
|
|
|
|
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x4e, 0x34, 0x33, 0x30, 0x34, 0x30,
|
|
|
|
+ 0x44, 0x58, 0x51, 0x0a, 0x20, 0x20,
|
|
|
|
+ /* Extension Block Count */
|
|
|
|
+ 0x00,
|
|
|
|
+ /* Checksum */
|
|
|
|
+ 0xef,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
/* EDID with 1920x1200 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,
|
|
|
|
- /* Vendor & Product Identification */
|
|
|
|
- 0x22, 0xf0, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x04, 0x17,
|
|
|
|
- /* Version & Revision */
|
|
|
|
- 0x01, 0x04,
|
|
|
|
- /* Basic Display Parameters & Features */
|
|
|
|
- 0xa5, 0x34, 0x20, 0x78, 0x23,
|
|
|
|
- /* Color Characteristics */
|
|
|
|
- 0xfc, 0x81, 0xa4, 0x55, 0x4d, 0x9d, 0x25, 0x12, 0x50, 0x54,
|
|
|
|
- /* Established Timings: maximum resolution is 1024x768 */
|
|
|
|
- 0x21, 0x08, 0x00,
|
|
|
|
- /*
|
|
|
|
- * 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,
|
|
|
|
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
|
|
|
- /* 18 Byte Data Blocks 3: invalid */
|
|
|
|
- 0x00, 0x00, 0x00, 0xfc, 0x00, 0x48,
|
|
|
|
- 0x50, 0x20, 0x5a, 0x52, 0x32, 0x34, 0x34, 0x30, 0x77, 0x0a, 0x20, 0x20,
|
|
|
|
- /* 18 Byte Data Blocks 4: invalid */
|
|
|
|
- 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x4e, 0x34, 0x33, 0x30, 0x34, 0x30,
|
|
|
|
- 0x44, 0x58, 0x51, 0x0a, 0x20, 0x20,
|
|
|
|
- /* Extension Block Count */
|
|
|
|
- 0x00,
|
|
|
|
- /* Checksum */
|
|
|
|
- 0x45,
|
|
|
|
|
|
+ /*Header*/
|
|
|
|
+ 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
|
|
|
|
+ /* Vendor & Product Identification */
|
|
|
|
+ 0x22, 0xf0, 0x54, 0x29, 0x00, 0x00, 0x00, 0x00, 0x04, 0x17,
|
|
|
|
+ /* Version & Revision */
|
|
|
|
+ 0x01, 0x04,
|
|
|
|
+ /* Basic Display Parameters & Features */
|
|
|
|
+ 0xa5, 0x34, 0x20, 0x78, 0x23,
|
|
|
|
+ /* Color Characteristics */
|
|
|
|
+ 0xfc, 0x81, 0xa4, 0x55, 0x4d, 0x9d, 0x25, 0x12, 0x50, 0x54,
|
|
|
|
+ /* Established Timings: maximum resolution is 1024x768 */
|
|
|
|
+ 0x21, 0x08, 0x00,
|
|
|
|
+ /*
|
|
|
|
+ * 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,
|
|
|
|
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
|
|
|
|
+ /* 18 Byte Data Blocks 3: invalid */
|
|
|
|
+ 0x00, 0x00, 0x00, 0xfc, 0x00, 0x48,
|
|
|
|
+ 0x50, 0x20, 0x5a, 0x52, 0x32, 0x34, 0x34, 0x30, 0x77, 0x0a, 0x20, 0x20,
|
|
|
|
+ /* 18 Byte Data Blocks 4: invalid */
|
|
|
|
+ 0x00, 0x00, 0x00, 0xff, 0x00, 0x43, 0x4e, 0x34, 0x33, 0x30, 0x34, 0x30,
|
|
|
|
+ 0x44, 0x58, 0x51, 0x0a, 0x20, 0x20,
|
|
|
|
+ /* Extension Block Count */
|
|
|
|
+ 0x00,
|
|
|
|
+ /* Checksum */
|
|
|
|
+ 0x45,
|
|
|
|
+ },
|
|
};
|
|
};
|
|
|
|
|
|
#define DPCD_HEADER_SIZE 0xb
|
|
#define DPCD_HEADER_SIZE 0xb
|
|
@@ -189,7 +225,7 @@ static int setup_virtual_dp_monitor(struct intel_vgpu *vgpu, int port_num,
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
- memcpy(port->edid->edid_block, virtual_dp_monitor_edid,
|
|
|
|
|
|
+ memcpy(port->edid->edid_block, virtual_dp_monitor_edid[GVT_EDID_1920_1200],
|
|
EDID_SIZE);
|
|
EDID_SIZE);
|
|
port->edid->data_valid = true;
|
|
port->edid->data_valid = true;
|
|
|
|
|