[PATCH 1/2] drm/i915/gvt: Add more edid definition support

Zhiyuan Lv zhiyuan.lv at intel.com
Thu Feb 23 23:07:17 UTC 2017


On Thu, Feb 23, 2017 at 07:37:16AM +0000, Tian, Kevin wrote:
> > From: Zhenyu Wang
> > Sent: Thursday, February 23, 2017 11:12 AM
> > 
> > We'll need to apply different resolution for vgpu types, so this
> > adds more EDID types definition.
> 
> Reviewed-by: Kevin Tian <kevin.tian at intel.com>. In the future we might
> consider allowing user to provide additional vEDID info...
> 
> > 
> > Signed-off-by: Zhenyu Wang <zhenyuw at linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/gvt/display.c | 114
> > ++++++++++++++++++++++++-------------
> >  drivers/gpu/drm/i915/gvt/display.h |   6 ++
> >  2 files changed, 81 insertions(+), 39 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/gvt/display.c b/drivers/gpu/drm/i915/gvt/display.c
> > index 6d8fde880c39..e462560453f7 100644
> > --- a/drivers/gpu/drm/i915/gvt/display.c
> > +++ b/drivers/gpu/drm/i915/gvt/display.c
> > @@ -83,44 +83,80 @@ static int pipe_is_enabled(struct intel_vgpu *vgpu, int pipe)
> >  	return 0;
> >  }
> > 
> > -/* 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,
> > +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 1920x1080 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.
> > +		 * 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 */

The intended resolution is 1920x1080 but here time timing seems to be
1920x1200 according to the comments? Thanks!

Regards,
-Zhiyuan

> > +		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
> > @@ -189,7 +225,7 @@ static int setup_virtual_dp_monitor(struct intel_vgpu *vgpu, int
> > port_num,
> >  		return -ENOMEM;
> >  	}
> > 
> > -	memcpy(port->edid->edid_block, virtual_dp_monitor_edid,
> > +	memcpy(port->edid->edid_block, virtual_dp_monitor_edid[GVT_EDID_1920_1080],
> >  			EDID_SIZE);
> >  	port->edid->data_valid = true;
> > 
> > diff --git a/drivers/gpu/drm/i915/gvt/display.h b/drivers/gpu/drm/i915/gvt/display.h
> > index 8b234ea961f6..cb74a8d6b8f7 100644
> > --- a/drivers/gpu/drm/i915/gvt/display.h
> > +++ b/drivers/gpu/drm/i915/gvt/display.h
> > @@ -154,6 +154,12 @@ struct intel_vgpu_port {
> >  	int type;
> >  };
> > 
> > +enum intel_vgpu_edid {
> > +	GVT_EDID_1024_768,
> > +	GVT_EDID_1920_1080,
> > +	GVT_EDID_NUM,
> > +};
> > +
> >  void intel_gvt_emulate_vblank(struct intel_gvt *gvt);
> >  void intel_gvt_check_vblank_emulation(struct intel_gvt *gvt);
> > 
> > --
> > 2.11.0
> > 
> > _______________________________________________
> > intel-gvt-dev mailing list
> > intel-gvt-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev
> _______________________________________________
> intel-gvt-dev mailing list
> intel-gvt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gvt-dev


More information about the intel-gvt-dev mailing list