diff mbox series

[RESEND] drm/i915/gvt: use macros from drm_dp.h instead of duplication

Message ID 20240930135342.3562755-1-jani.nikula@intel.com (mailing list archive)
State New, archived
Headers show
Series [RESEND] drm/i915/gvt: use macros from drm_dp.h instead of duplication | expand

Commit Message

Jani Nikula Sept. 30, 2024, 1:53 p.m. UTC
Use the existing macros in drm_dp.h for DPCD and DP AUX instead of
duplicating. Remove unused macros, as well as the duplicate definition
of DPCD_SIZE.

AUX_NATIVE_REPLY_NAK is left unchanged, as it does not match
DP_AUX_NATIVE_REPLY_NACK, and I'm not sure what the right thing to do is
here.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/gvt/display.c  |  4 ++-
 drivers/gpu/drm/i915/gvt/display.h  | 42 ----------------------------
 drivers/gpu/drm/i915/gvt/edid.c     | 12 ++++----
 drivers/gpu/drm/i915/gvt/edid.h     |  8 ------
 drivers/gpu/drm/i915/gvt/handlers.c | 43 +++++++++++++++++------------
 5 files changed, 36 insertions(+), 73 deletions(-)

Comments

Kandpal, Suraj Oct. 22, 2024, 11:49 a.m. UTC | #1
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Jani
> Nikula
> Sent: Monday, September 30, 2024 7:24 PM
> To: intel-gfx@lists.freedesktop.org; intel-gvt-dev@lists.freedesktop.org
> Cc: Nikula, Jani <jani.nikula@intel.com>
> Subject: [RESEND] drm/i915/gvt: use macros from drm_dp.h instead of
> duplication
> 
> Use the existing macros in drm_dp.h for DPCD and DP AUX instead of
> duplicating. Remove unused macros, as well as the duplicate definition of
> DPCD_SIZE.
> 
> AUX_NATIVE_REPLY_NAK is left unchanged, as it does not match
> DP_AUX_NATIVE_REPLY_NACK, and I'm not sure what the right thing to do is
> here.

LGTM,
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>

> 
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/gvt/display.c  |  4 ++-
> drivers/gpu/drm/i915/gvt/display.h  | 42 ----------------------------
>  drivers/gpu/drm/i915/gvt/edid.c     | 12 ++++----
>  drivers/gpu/drm/i915/gvt/edid.h     |  8 ------
>  drivers/gpu/drm/i915/gvt/handlers.c | 43 +++++++++++++++++------------
>  5 files changed, 36 insertions(+), 73 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gvt/display.c
> b/drivers/gpu/drm/i915/gvt/display.c
> index c66d6d3177c8..17f74cb244bb 100644
> --- a/drivers/gpu/drm/i915/gvt/display.c
> +++ b/drivers/gpu/drm/i915/gvt/display.c
> @@ -32,6 +32,8 @@
>   *
>   */
> 
> +#include <drm/display/drm_dp.h>
> +
>  #include "i915_drv.h"
>  #include "i915_reg.h"
>  #include "gvt.h"
> @@ -568,7 +570,7 @@ static int setup_virtual_dp_monitor(struct intel_vgpu
> *vgpu, int port_num,
> 
>  	memcpy(port->dpcd->data, dpcd_fix_data, DPCD_HEADER_SIZE);
>  	port->dpcd->data_valid = true;
> -	port->dpcd->data[DPCD_SINK_COUNT] = 0x1;
> +	port->dpcd->data[DP_SINK_COUNT] = 0x1;
>  	port->type = type;
>  	port->id = resolution;
>  	port->vrefresh_k = GVT_DEFAULT_REFRESH_RATE * MSEC_PER_SEC;
> diff --git a/drivers/gpu/drm/i915/gvt/display.h
> b/drivers/gpu/drm/i915/gvt/display.h
> index f5616f99ef2f..8090bc53c7e1 100644
> --- a/drivers/gpu/drm/i915/gvt/display.h
> +++ b/drivers/gpu/drm/i915/gvt/display.h
> @@ -59,52 +59,10 @@ struct intel_vgpu;
> 
>  #define INTEL_GVT_MAX_UEVENT_VARS	3
> 
> -/* DPCD start */
> -#define DPCD_SIZE	0x700
> -
> -/* DPCD */
> -#define DP_SET_POWER            0x600
> -#define DP_SET_POWER_D0         0x1
> -#define AUX_NATIVE_WRITE        0x8
> -#define AUX_NATIVE_READ         0x9
> -
> -#define AUX_NATIVE_REPLY_MASK   (0x3 << 4)
> -#define AUX_NATIVE_REPLY_ACK    (0x0 << 4)
>  #define AUX_NATIVE_REPLY_NAK    (0x1 << 4)
> -#define AUX_NATIVE_REPLY_DEFER  (0x2 << 4)
> 
>  #define AUX_BURST_SIZE          20
> 
> -/* DPCD addresses */
> -#define DPCD_REV			0x000
> -#define DPCD_MAX_LINK_RATE		0x001
> -#define DPCD_MAX_LANE_COUNT		0x002
> -
> -#define DPCD_TRAINING_PATTERN_SET	0x102
> -#define	DPCD_SINK_COUNT			0x200
> -#define DPCD_LANE0_1_STATUS		0x202
> -#define DPCD_LANE2_3_STATUS		0x203
> -#define DPCD_LANE_ALIGN_STATUS_UPDATED	0x204
> -#define DPCD_SINK_STATUS		0x205
> -
> -/* link training */
> -#define DPCD_TRAINING_PATTERN_SET_MASK	0x03
> -#define DPCD_LINK_TRAINING_DISABLED	0x00
> -#define DPCD_TRAINING_PATTERN_1		0x01
> -#define DPCD_TRAINING_PATTERN_2		0x02
> -
> -#define DPCD_CP_READY_MASK		(1 << 6)
> -
> -/* lane status */
> -#define DPCD_LANES_CR_DONE		0x11
> -#define DPCD_LANES_EQ_DONE		0x22
> -#define DPCD_SYMBOL_LOCKED		0x44
> -
> -#define DPCD_INTERLANE_ALIGN_DONE	0x01
> -
> -#define DPCD_SINK_IN_SYNC		0x03
> -/* DPCD end */
> -
>  #define SBI_RESPONSE_MASK               0x3
>  #define SBI_RESPONSE_SHIFT              0x1
>  #define SBI_STAT_MASK                   0x1
> diff --git a/drivers/gpu/drm/i915/gvt/edid.c
> b/drivers/gpu/drm/i915/gvt/edid.c index c022dc736045..0a357ca42db1
> 100644
> --- a/drivers/gpu/drm/i915/gvt/edid.c
> +++ b/drivers/gpu/drm/i915/gvt/edid.c
> @@ -32,6 +32,8 @@
>   *
>   */
> 
> +#include <drm/display/drm_dp.h>
> +
>  #include "display/intel_dp_aux_regs.h"
>  #include "display/intel_gmbus_regs.h"
>  #include "gvt.h"
> @@ -504,13 +506,13 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> intel_vgpu *vgpu,
>  	}
> 
>  	/* Always set the wanted value for vms. */
> -	ret_msg_size = (((op & 0x1) == GVT_AUX_I2C_READ) ? 2 : 1);
> +	ret_msg_size = (((op & 0x1) == DP_AUX_I2C_READ) ? 2 : 1);
>  	vgpu_vreg(vgpu, offset) =
>  		DP_AUX_CH_CTL_DONE |
>  		DP_AUX_CH_CTL_MESSAGE_SIZE(ret_msg_size);
> 
>  	if (msg_length == 3) {
> -		if (!(op & GVT_AUX_I2C_MOT)) {
> +		if (!(op & DP_AUX_I2C_MOT)) {
>  			/* stop */
>  			intel_vgpu_init_i2c_edid(vgpu);
>  		} else {
> @@ -530,7 +532,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> intel_vgpu *vgpu,
>  					i2c_edid->edid_available = true;
>  			}
>  		}
> -	} else if ((op & 0x1) == GVT_AUX_I2C_WRITE) {
> +	} else if ((op & 0x1) == DP_AUX_I2C_WRITE) {
>  		/* TODO
>  		 * We only support EDID reading from I2C_over_AUX. And
>  		 * we do not expect the index mode to be used. Right now
> @@ -538,7 +540,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> intel_vgpu *vgpu,
>  		 * support the gfx driver to do EDID access.
>  		 */
>  	} else {
> -		if (drm_WARN_ON(&i915->drm, (op & 0x1) !=
> GVT_AUX_I2C_READ))
> +		if (drm_WARN_ON(&i915->drm, (op & 0x1) !=
> DP_AUX_I2C_READ))
>  			return;
>  		if (drm_WARN_ON(&i915->drm, msg_length != 4))
>  			return;
> @@ -553,7 +555,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> intel_vgpu *vgpu,
>  	 * ACK of I2C_WRITE
>  	 * returned byte if it is READ
>  	 */
> -	aux_data_for_write |= GVT_AUX_I2C_REPLY_ACK << 24;
> +	aux_data_for_write |= DP_AUX_I2C_REPLY_ACK << 24;
>  	vgpu_vreg(vgpu, offset + 4) = aux_data_for_write;  }
> 
> diff --git a/drivers/gpu/drm/i915/gvt/edid.h
> b/drivers/gpu/drm/i915/gvt/edid.h index c3b5a55aecb3..13fd06590929
> 100644
> --- a/drivers/gpu/drm/i915/gvt/edid.h
> +++ b/drivers/gpu/drm/i915/gvt/edid.h
> @@ -42,14 +42,6 @@ struct intel_vgpu;
>  #define EDID_SIZE		128
>  #define EDID_ADDR		0x50 /* Linux hvm EDID addr */
> 
> -#define GVT_AUX_NATIVE_WRITE			0x8
> -#define GVT_AUX_NATIVE_READ			0x9
> -#define GVT_AUX_I2C_WRITE			0x0
> -#define GVT_AUX_I2C_READ			0x1
> -#define GVT_AUX_I2C_STATUS			0x2
> -#define GVT_AUX_I2C_MOT				0x4
> -#define GVT_AUX_I2C_REPLY_ACK			0x0
> -
>  struct intel_vgpu_edid_data {
>  	bool data_valid;
>  	unsigned char edid_block[EDID_SIZE];
> diff --git a/drivers/gpu/drm/i915/gvt/handlers.c
> b/drivers/gpu/drm/i915/gvt/handlers.c
> index 0f09344d3c20..9494d812c00a 100644
> --- a/drivers/gpu/drm/i915/gvt/handlers.c
> +++ b/drivers/gpu/drm/i915/gvt/handlers.c
> @@ -36,6 +36,8 @@
> 
>   */
> 
> +#include <drm/display/drm_dp.h>
> +
>  #include "i915_drv.h"
>  #include "i915_reg.h"
>  #include "gvt.h"
> @@ -1129,29 +1131,36 @@ static int dp_aux_ch_ctl_trans_done(struct
> intel_vgpu *vgpu, u32 value,  static void dp_aux_ch_ctl_link_training(struct
> intel_vgpu_dpcd_data *dpcd,
>  		u8 t)
>  {
> -	if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
> DPCD_TRAINING_PATTERN_1) {
> +	if ((t & DP_TRAINING_PATTERN_MASK) == DP_TRAINING_PATTERN_1)
> {
>  		/* training pattern 1 for CR */
>  		/* set LANE0_CR_DONE, LANE1_CR_DONE */
> -		dpcd->data[DPCD_LANE0_1_STATUS] |=
> DPCD_LANES_CR_DONE;
> +		dpcd->data[DP_LANE0_1_STATUS] |= DP_LANE_CR_DONE |
> +			DP_LANE_CR_DONE << 4;
>  		/* set LANE2_CR_DONE, LANE3_CR_DONE */
> -		dpcd->data[DPCD_LANE2_3_STATUS] |=
> DPCD_LANES_CR_DONE;
> -	} else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
> -			DPCD_TRAINING_PATTERN_2) {
> +		dpcd->data[DP_LANE2_3_STATUS] |= DP_LANE_CR_DONE |
> +			DP_LANE_CR_DONE << 4;
> +	} else if ((t & DP_TRAINING_PATTERN_MASK) ==
> +			DP_TRAINING_PATTERN_2) {
>  		/* training pattern 2 for EQ */
>  		/* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for
> Lane0_1 */
> -		dpcd->data[DPCD_LANE0_1_STATUS] |=
> DPCD_LANES_EQ_DONE;
> -		dpcd->data[DPCD_LANE0_1_STATUS] |=
> DPCD_SYMBOL_LOCKED;
> +		dpcd->data[DP_LANE0_1_STATUS] |=
> DP_LANE_CHANNEL_EQ_DONE |
> +			DP_LANE_CHANNEL_EQ_DONE << 4;
> +		dpcd->data[DP_LANE0_1_STATUS] |=
> DP_LANE_SYMBOL_LOCKED |
> +			DP_LANE_SYMBOL_LOCKED << 4;
>  		/* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for
> Lane2_3 */
> -		dpcd->data[DPCD_LANE2_3_STATUS] |=
> DPCD_LANES_EQ_DONE;
> -		dpcd->data[DPCD_LANE2_3_STATUS] |=
> DPCD_SYMBOL_LOCKED;
> +		dpcd->data[DP_LANE2_3_STATUS] |=
> DP_LANE_CHANNEL_EQ_DONE |
> +			DP_LANE_CHANNEL_EQ_DONE << 4;
> +		dpcd->data[DP_LANE2_3_STATUS] |=
> DP_LANE_SYMBOL_LOCKED |
> +			DP_LANE_SYMBOL_LOCKED << 4;
>  		/* set INTERLANE_ALIGN_DONE */
> -		dpcd->data[DPCD_LANE_ALIGN_STATUS_UPDATED] |=
> -			DPCD_INTERLANE_ALIGN_DONE;
> -	} else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
> -			DPCD_LINK_TRAINING_DISABLED) {
> +		dpcd->data[DP_LANE_ALIGN_STATUS_UPDATED] |=
> +			DP_INTERLANE_ALIGN_DONE;
> +	} else if ((t & DP_TRAINING_PATTERN_MASK) ==
> +			DP_TRAINING_PATTERN_DISABLE) {
>  		/* finish link training */
>  		/* set sink status as synchronized */
> -		dpcd->data[DPCD_SINK_STATUS] = DPCD_SINK_IN_SYNC;
> +		dpcd->data[DP_SINK_STATUS] = DP_RECEIVE_PORT_0_STATUS
> |
> +			DP_RECEIVE_PORT_1_STATUS;
>  	}
>  }
> 
> @@ -1206,7 +1215,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
> intel_vgpu *vgpu,
>  	len = msg & 0xff;
>  	op = ctrl >> 4;
> 
> -	if (op == GVT_AUX_NATIVE_WRITE) {
> +	if (op == DP_AUX_NATIVE_WRITE) {
>  		int t;
>  		u8 buf[16];
> 
> @@ -1252,7 +1261,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
> intel_vgpu *vgpu,
> 
>  				dpcd->data[p] = buf[t];
>  				/* check for link training */
> -				if (p == DPCD_TRAINING_PATTERN_SET)
> +				if (p == DP_TRAINING_PATTERN_SET)
>  					dp_aux_ch_ctl_link_training(dpcd,
>  							buf[t]);
>  			}
> @@ -1265,7 +1274,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
> intel_vgpu *vgpu,
>  		return 0;
>  	}
> 
> -	if (op == GVT_AUX_NATIVE_READ) {
> +	if (op == DP_AUX_NATIVE_READ) {
>  		int idx, i, ret = 0;
> 
>  		if ((addr + len + 1) >= DPCD_SIZE) {
> --
> 2.39.5
Zhi Wang Oct. 22, 2024, 11:52 a.m. UTC | #2
Reviewed-by: Zhi Wang <zhiwang@kernel.org>


Sorry for the late reply as I was on vacation.

On Tue, Oct 22, 2024, 2:50 PM Kandpal, Suraj <suraj.kandpal@intel.com>
wrote:

>
>
> > -----Original Message-----
> > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of
> Jani
> > Nikula
> > Sent: Monday, September 30, 2024 7:24 PM
> > To: intel-gfx@lists.freedesktop.org; intel-gvt-dev@lists.freedesktop.org
> > Cc: Nikula, Jani <jani.nikula@intel.com>
> > Subject: [RESEND] drm/i915/gvt: use macros from drm_dp.h instead of
> > duplication
> >
> > Use the existing macros in drm_dp.h for DPCD and DP AUX instead of
> > duplicating. Remove unused macros, as well as the duplicate definition of
> > DPCD_SIZE.
> >
> > AUX_NATIVE_REPLY_NAK is left unchanged, as it does not match
> > DP_AUX_NATIVE_REPLY_NACK, and I'm not sure what the right thing to do is
> > here.
>
> LGTM,
> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>
> >
> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> > ---
> >  drivers/gpu/drm/i915/gvt/display.c  |  4 ++-
> > drivers/gpu/drm/i915/gvt/display.h  | 42 ----------------------------
> >  drivers/gpu/drm/i915/gvt/edid.c     | 12 ++++----
> >  drivers/gpu/drm/i915/gvt/edid.h     |  8 ------
> >  drivers/gpu/drm/i915/gvt/handlers.c | 43 +++++++++++++++++------------
> >  5 files changed, 36 insertions(+), 73 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gvt/display.c
> > b/drivers/gpu/drm/i915/gvt/display.c
> > index c66d6d3177c8..17f74cb244bb 100644
> > --- a/drivers/gpu/drm/i915/gvt/display.c
> > +++ b/drivers/gpu/drm/i915/gvt/display.c
> > @@ -32,6 +32,8 @@
> >   *
> >   */
> >
> > +#include <drm/display/drm_dp.h>
> > +
> >  #include "i915_drv.h"
> >  #include "i915_reg.h"
> >  #include "gvt.h"
> > @@ -568,7 +570,7 @@ static int setup_virtual_dp_monitor(struct intel_vgpu
> > *vgpu, int port_num,
> >
> >       memcpy(port->dpcd->data, dpcd_fix_data, DPCD_HEADER_SIZE);
> >       port->dpcd->data_valid = true;
> > -     port->dpcd->data[DPCD_SINK_COUNT] = 0x1;
> > +     port->dpcd->data[DP_SINK_COUNT] = 0x1;
> >       port->type = type;
> >       port->id = resolution;
> >       port->vrefresh_k = GVT_DEFAULT_REFRESH_RATE * MSEC_PER_SEC;
> > diff --git a/drivers/gpu/drm/i915/gvt/display.h
> > b/drivers/gpu/drm/i915/gvt/display.h
> > index f5616f99ef2f..8090bc53c7e1 100644
> > --- a/drivers/gpu/drm/i915/gvt/display.h
> > +++ b/drivers/gpu/drm/i915/gvt/display.h
> > @@ -59,52 +59,10 @@ struct intel_vgpu;
> >
> >  #define INTEL_GVT_MAX_UEVENT_VARS    3
> >
> > -/* DPCD start */
> > -#define DPCD_SIZE    0x700
> > -
> > -/* DPCD */
> > -#define DP_SET_POWER            0x600
> > -#define DP_SET_POWER_D0         0x1
> > -#define AUX_NATIVE_WRITE        0x8
> > -#define AUX_NATIVE_READ         0x9
> > -
> > -#define AUX_NATIVE_REPLY_MASK   (0x3 << 4)
> > -#define AUX_NATIVE_REPLY_ACK    (0x0 << 4)
> >  #define AUX_NATIVE_REPLY_NAK    (0x1 << 4)
> > -#define AUX_NATIVE_REPLY_DEFER  (0x2 << 4)
> >
> >  #define AUX_BURST_SIZE          20
> >
> > -/* DPCD addresses */
> > -#define DPCD_REV                     0x000
> > -#define DPCD_MAX_LINK_RATE           0x001
> > -#define DPCD_MAX_LANE_COUNT          0x002
> > -
> > -#define DPCD_TRAINING_PATTERN_SET    0x102
> > -#define      DPCD_SINK_COUNT                 0x200
> > -#define DPCD_LANE0_1_STATUS          0x202
> > -#define DPCD_LANE2_3_STATUS          0x203
> > -#define DPCD_LANE_ALIGN_STATUS_UPDATED       0x204
> > -#define DPCD_SINK_STATUS             0x205
> > -
> > -/* link training */
> > -#define DPCD_TRAINING_PATTERN_SET_MASK       0x03
> > -#define DPCD_LINK_TRAINING_DISABLED  0x00
> > -#define DPCD_TRAINING_PATTERN_1              0x01
> > -#define DPCD_TRAINING_PATTERN_2              0x02
> > -
> > -#define DPCD_CP_READY_MASK           (1 << 6)
> > -
> > -/* lane status */
> > -#define DPCD_LANES_CR_DONE           0x11
> > -#define DPCD_LANES_EQ_DONE           0x22
> > -#define DPCD_SYMBOL_LOCKED           0x44
> > -
> > -#define DPCD_INTERLANE_ALIGN_DONE    0x01
> > -
> > -#define DPCD_SINK_IN_SYNC            0x03
> > -/* DPCD end */
> > -
> >  #define SBI_RESPONSE_MASK               0x3
> >  #define SBI_RESPONSE_SHIFT              0x1
> >  #define SBI_STAT_MASK                   0x1
> > diff --git a/drivers/gpu/drm/i915/gvt/edid.c
> > b/drivers/gpu/drm/i915/gvt/edid.c index c022dc736045..0a357ca42db1
> > 100644
> > --- a/drivers/gpu/drm/i915/gvt/edid.c
> > +++ b/drivers/gpu/drm/i915/gvt/edid.c
> > @@ -32,6 +32,8 @@
> >   *
> >   */
> >
> > +#include <drm/display/drm_dp.h>
> > +
> >  #include "display/intel_dp_aux_regs.h"
> >  #include "display/intel_gmbus_regs.h"
> >  #include "gvt.h"
> > @@ -504,13 +506,13 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> > intel_vgpu *vgpu,
> >       }
> >
> >       /* Always set the wanted value for vms. */
> > -     ret_msg_size = (((op & 0x1) == GVT_AUX_I2C_READ) ? 2 : 1);
> > +     ret_msg_size = (((op & 0x1) == DP_AUX_I2C_READ) ? 2 : 1);
> >       vgpu_vreg(vgpu, offset) =
> >               DP_AUX_CH_CTL_DONE |
> >               DP_AUX_CH_CTL_MESSAGE_SIZE(ret_msg_size);
> >
> >       if (msg_length == 3) {
> > -             if (!(op & GVT_AUX_I2C_MOT)) {
> > +             if (!(op & DP_AUX_I2C_MOT)) {
> >                       /* stop */
> >                       intel_vgpu_init_i2c_edid(vgpu);
> >               } else {
> > @@ -530,7 +532,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> > intel_vgpu *vgpu,
> >                                       i2c_edid->edid_available = true;
> >                       }
> >               }
> > -     } else if ((op & 0x1) == GVT_AUX_I2C_WRITE) {
> > +     } else if ((op & 0x1) == DP_AUX_I2C_WRITE) {
> >               /* TODO
> >                * We only support EDID reading from I2C_over_AUX. And
> >                * we do not expect the index mode to be used. Right now
> > @@ -538,7 +540,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> > intel_vgpu *vgpu,
> >                * support the gfx driver to do EDID access.
> >                */
> >       } else {
> > -             if (drm_WARN_ON(&i915->drm, (op & 0x1) !=
> > GVT_AUX_I2C_READ))
> > +             if (drm_WARN_ON(&i915->drm, (op & 0x1) !=
> > DP_AUX_I2C_READ))
> >                       return;
> >               if (drm_WARN_ON(&i915->drm, msg_length != 4))
> >                       return;
> > @@ -553,7 +555,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
> > intel_vgpu *vgpu,
> >        * ACK of I2C_WRITE
> >        * returned byte if it is READ
> >        */
> > -     aux_data_for_write |= GVT_AUX_I2C_REPLY_ACK << 24;
> > +     aux_data_for_write |= DP_AUX_I2C_REPLY_ACK << 24;
> >       vgpu_vreg(vgpu, offset + 4) = aux_data_for_write;  }
> >
> > diff --git a/drivers/gpu/drm/i915/gvt/edid.h
> > b/drivers/gpu/drm/i915/gvt/edid.h index c3b5a55aecb3..13fd06590929
> > 100644
> > --- a/drivers/gpu/drm/i915/gvt/edid.h
> > +++ b/drivers/gpu/drm/i915/gvt/edid.h
> > @@ -42,14 +42,6 @@ struct intel_vgpu;
> >  #define EDID_SIZE            128
> >  #define EDID_ADDR            0x50 /* Linux hvm EDID addr */
> >
> > -#define GVT_AUX_NATIVE_WRITE                 0x8
> > -#define GVT_AUX_NATIVE_READ                  0x9
> > -#define GVT_AUX_I2C_WRITE                    0x0
> > -#define GVT_AUX_I2C_READ                     0x1
> > -#define GVT_AUX_I2C_STATUS                   0x2
> > -#define GVT_AUX_I2C_MOT                              0x4
> > -#define GVT_AUX_I2C_REPLY_ACK                        0x0
> > -
> >  struct intel_vgpu_edid_data {
> >       bool data_valid;
> >       unsigned char edid_block[EDID_SIZE];
> > diff --git a/drivers/gpu/drm/i915/gvt/handlers.c
> > b/drivers/gpu/drm/i915/gvt/handlers.c
> > index 0f09344d3c20..9494d812c00a 100644
> > --- a/drivers/gpu/drm/i915/gvt/handlers.c
> > +++ b/drivers/gpu/drm/i915/gvt/handlers.c
> > @@ -36,6 +36,8 @@
> >
> >   */
> >
> > +#include <drm/display/drm_dp.h>
> > +
> >  #include "i915_drv.h"
> >  #include "i915_reg.h"
> >  #include "gvt.h"
> > @@ -1129,29 +1131,36 @@ static int dp_aux_ch_ctl_trans_done(struct
> > intel_vgpu *vgpu, u32 value,  static void
> dp_aux_ch_ctl_link_training(struct
> > intel_vgpu_dpcd_data *dpcd,
> >               u8 t)
> >  {
> > -     if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
> > DPCD_TRAINING_PATTERN_1) {
> > +     if ((t & DP_TRAINING_PATTERN_MASK) == DP_TRAINING_PATTERN_1)
> > {
> >               /* training pattern 1 for CR */
> >               /* set LANE0_CR_DONE, LANE1_CR_DONE */
> > -             dpcd->data[DPCD_LANE0_1_STATUS] |=
> > DPCD_LANES_CR_DONE;
> > +             dpcd->data[DP_LANE0_1_STATUS] |= DP_LANE_CR_DONE |
> > +                     DP_LANE_CR_DONE << 4;
> >               /* set LANE2_CR_DONE, LANE3_CR_DONE */
> > -             dpcd->data[DPCD_LANE2_3_STATUS] |=
> > DPCD_LANES_CR_DONE;
> > -     } else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
> > -                     DPCD_TRAINING_PATTERN_2) {
> > +             dpcd->data[DP_LANE2_3_STATUS] |= DP_LANE_CR_DONE |
> > +                     DP_LANE_CR_DONE << 4;
> > +     } else if ((t & DP_TRAINING_PATTERN_MASK) ==
> > +                     DP_TRAINING_PATTERN_2) {
> >               /* training pattern 2 for EQ */
> >               /* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for
> > Lane0_1 */
> > -             dpcd->data[DPCD_LANE0_1_STATUS] |=
> > DPCD_LANES_EQ_DONE;
> > -             dpcd->data[DPCD_LANE0_1_STATUS] |=
> > DPCD_SYMBOL_LOCKED;
> > +             dpcd->data[DP_LANE0_1_STATUS] |=
> > DP_LANE_CHANNEL_EQ_DONE |
> > +                     DP_LANE_CHANNEL_EQ_DONE << 4;
> > +             dpcd->data[DP_LANE0_1_STATUS] |=
> > DP_LANE_SYMBOL_LOCKED |
> > +                     DP_LANE_SYMBOL_LOCKED << 4;
> >               /* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for
> > Lane2_3 */
> > -             dpcd->data[DPCD_LANE2_3_STATUS] |=
> > DPCD_LANES_EQ_DONE;
> > -             dpcd->data[DPCD_LANE2_3_STATUS] |=
> > DPCD_SYMBOL_LOCKED;
> > +             dpcd->data[DP_LANE2_3_STATUS] |=
> > DP_LANE_CHANNEL_EQ_DONE |
> > +                     DP_LANE_CHANNEL_EQ_DONE << 4;
> > +             dpcd->data[DP_LANE2_3_STATUS] |=
> > DP_LANE_SYMBOL_LOCKED |
> > +                     DP_LANE_SYMBOL_LOCKED << 4;
> >               /* set INTERLANE_ALIGN_DONE */
> > -             dpcd->data[DPCD_LANE_ALIGN_STATUS_UPDATED] |=
> > -                     DPCD_INTERLANE_ALIGN_DONE;
> > -     } else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
> > -                     DPCD_LINK_TRAINING_DISABLED) {
> > +             dpcd->data[DP_LANE_ALIGN_STATUS_UPDATED] |=
> > +                     DP_INTERLANE_ALIGN_DONE;
> > +     } else if ((t & DP_TRAINING_PATTERN_MASK) ==
> > +                     DP_TRAINING_PATTERN_DISABLE) {
> >               /* finish link training */
> >               /* set sink status as synchronized */
> > -             dpcd->data[DPCD_SINK_STATUS] = DPCD_SINK_IN_SYNC;
> > +             dpcd->data[DP_SINK_STATUS] = DP_RECEIVE_PORT_0_STATUS
> > |
> > +                     DP_RECEIVE_PORT_1_STATUS;
> >       }
> >  }
> >
> > @@ -1206,7 +1215,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
> > intel_vgpu *vgpu,
> >       len = msg & 0xff;
> >       op = ctrl >> 4;
> >
> > -     if (op == GVT_AUX_NATIVE_WRITE) {
> > +     if (op == DP_AUX_NATIVE_WRITE) {
> >               int t;
> >               u8 buf[16];
> >
> > @@ -1252,7 +1261,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
> > intel_vgpu *vgpu,
> >
> >                               dpcd->data[p] = buf[t];
> >                               /* check for link training */
> > -                             if (p == DPCD_TRAINING_PATTERN_SET)
> > +                             if (p == DP_TRAINING_PATTERN_SET)
> >                                       dp_aux_ch_ctl_link_training(dpcd,
> >                                                       buf[t]);
> >                       }
> > @@ -1265,7 +1274,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
> > intel_vgpu *vgpu,
> >               return 0;
> >       }
> >
> > -     if (op == GVT_AUX_NATIVE_READ) {
> > +     if (op == DP_AUX_NATIVE_READ) {
> >               int idx, i, ret = 0;
> >
> >               if ((addr + len + 1) >= DPCD_SIZE) {
> > --
> > 2.39.5
>
>
Jani Nikula Oct. 22, 2024, 12:34 p.m. UTC | #3
On Tue, 22 Oct 2024, Zhi Wang <zhi.wang.linux@gmail.com> wrote:
> Reviewed-by: Zhi Wang <zhiwang@kernel.org>
>
>
> Sorry for the late reply as I was on vacation.

Thanks for the reviews, pushed to drm-intel-next.

BR,
Jani.

>
> On Tue, Oct 22, 2024, 2:50 PM Kandpal, Suraj <suraj.kandpal@intel.com>
> wrote:
>
>>
>>
>> > -----Original Message-----
>> > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of
>> Jani
>> > Nikula
>> > Sent: Monday, September 30, 2024 7:24 PM
>> > To: intel-gfx@lists.freedesktop.org; intel-gvt-dev@lists.freedesktop.org
>> > Cc: Nikula, Jani <jani.nikula@intel.com>
>> > Subject: [RESEND] drm/i915/gvt: use macros from drm_dp.h instead of
>> > duplication
>> >
>> > Use the existing macros in drm_dp.h for DPCD and DP AUX instead of
>> > duplicating. Remove unused macros, as well as the duplicate definition of
>> > DPCD_SIZE.
>> >
>> > AUX_NATIVE_REPLY_NAK is left unchanged, as it does not match
>> > DP_AUX_NATIVE_REPLY_NACK, and I'm not sure what the right thing to do is
>> > here.
>>
>> LGTM,
>> Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
>>
>> >
>> > Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> > ---
>> >  drivers/gpu/drm/i915/gvt/display.c  |  4 ++-
>> > drivers/gpu/drm/i915/gvt/display.h  | 42 ----------------------------
>> >  drivers/gpu/drm/i915/gvt/edid.c     | 12 ++++----
>> >  drivers/gpu/drm/i915/gvt/edid.h     |  8 ------
>> >  drivers/gpu/drm/i915/gvt/handlers.c | 43 +++++++++++++++++------------
>> >  5 files changed, 36 insertions(+), 73 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/gvt/display.c
>> > b/drivers/gpu/drm/i915/gvt/display.c
>> > index c66d6d3177c8..17f74cb244bb 100644
>> > --- a/drivers/gpu/drm/i915/gvt/display.c
>> > +++ b/drivers/gpu/drm/i915/gvt/display.c
>> > @@ -32,6 +32,8 @@
>> >   *
>> >   */
>> >
>> > +#include <drm/display/drm_dp.h>
>> > +
>> >  #include "i915_drv.h"
>> >  #include "i915_reg.h"
>> >  #include "gvt.h"
>> > @@ -568,7 +570,7 @@ static int setup_virtual_dp_monitor(struct intel_vgpu
>> > *vgpu, int port_num,
>> >
>> >       memcpy(port->dpcd->data, dpcd_fix_data, DPCD_HEADER_SIZE);
>> >       port->dpcd->data_valid = true;
>> > -     port->dpcd->data[DPCD_SINK_COUNT] = 0x1;
>> > +     port->dpcd->data[DP_SINK_COUNT] = 0x1;
>> >       port->type = type;
>> >       port->id = resolution;
>> >       port->vrefresh_k = GVT_DEFAULT_REFRESH_RATE * MSEC_PER_SEC;
>> > diff --git a/drivers/gpu/drm/i915/gvt/display.h
>> > b/drivers/gpu/drm/i915/gvt/display.h
>> > index f5616f99ef2f..8090bc53c7e1 100644
>> > --- a/drivers/gpu/drm/i915/gvt/display.h
>> > +++ b/drivers/gpu/drm/i915/gvt/display.h
>> > @@ -59,52 +59,10 @@ struct intel_vgpu;
>> >
>> >  #define INTEL_GVT_MAX_UEVENT_VARS    3
>> >
>> > -/* DPCD start */
>> > -#define DPCD_SIZE    0x700
>> > -
>> > -/* DPCD */
>> > -#define DP_SET_POWER            0x600
>> > -#define DP_SET_POWER_D0         0x1
>> > -#define AUX_NATIVE_WRITE        0x8
>> > -#define AUX_NATIVE_READ         0x9
>> > -
>> > -#define AUX_NATIVE_REPLY_MASK   (0x3 << 4)
>> > -#define AUX_NATIVE_REPLY_ACK    (0x0 << 4)
>> >  #define AUX_NATIVE_REPLY_NAK    (0x1 << 4)
>> > -#define AUX_NATIVE_REPLY_DEFER  (0x2 << 4)
>> >
>> >  #define AUX_BURST_SIZE          20
>> >
>> > -/* DPCD addresses */
>> > -#define DPCD_REV                     0x000
>> > -#define DPCD_MAX_LINK_RATE           0x001
>> > -#define DPCD_MAX_LANE_COUNT          0x002
>> > -
>> > -#define DPCD_TRAINING_PATTERN_SET    0x102
>> > -#define      DPCD_SINK_COUNT                 0x200
>> > -#define DPCD_LANE0_1_STATUS          0x202
>> > -#define DPCD_LANE2_3_STATUS          0x203
>> > -#define DPCD_LANE_ALIGN_STATUS_UPDATED       0x204
>> > -#define DPCD_SINK_STATUS             0x205
>> > -
>> > -/* link training */
>> > -#define DPCD_TRAINING_PATTERN_SET_MASK       0x03
>> > -#define DPCD_LINK_TRAINING_DISABLED  0x00
>> > -#define DPCD_TRAINING_PATTERN_1              0x01
>> > -#define DPCD_TRAINING_PATTERN_2              0x02
>> > -
>> > -#define DPCD_CP_READY_MASK           (1 << 6)
>> > -
>> > -/* lane status */
>> > -#define DPCD_LANES_CR_DONE           0x11
>> > -#define DPCD_LANES_EQ_DONE           0x22
>> > -#define DPCD_SYMBOL_LOCKED           0x44
>> > -
>> > -#define DPCD_INTERLANE_ALIGN_DONE    0x01
>> > -
>> > -#define DPCD_SINK_IN_SYNC            0x03
>> > -/* DPCD end */
>> > -
>> >  #define SBI_RESPONSE_MASK               0x3
>> >  #define SBI_RESPONSE_SHIFT              0x1
>> >  #define SBI_STAT_MASK                   0x1
>> > diff --git a/drivers/gpu/drm/i915/gvt/edid.c
>> > b/drivers/gpu/drm/i915/gvt/edid.c index c022dc736045..0a357ca42db1
>> > 100644
>> > --- a/drivers/gpu/drm/i915/gvt/edid.c
>> > +++ b/drivers/gpu/drm/i915/gvt/edid.c
>> > @@ -32,6 +32,8 @@
>> >   *
>> >   */
>> >
>> > +#include <drm/display/drm_dp.h>
>> > +
>> >  #include "display/intel_dp_aux_regs.h"
>> >  #include "display/intel_gmbus_regs.h"
>> >  #include "gvt.h"
>> > @@ -504,13 +506,13 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
>> > intel_vgpu *vgpu,
>> >       }
>> >
>> >       /* Always set the wanted value for vms. */
>> > -     ret_msg_size = (((op & 0x1) == GVT_AUX_I2C_READ) ? 2 : 1);
>> > +     ret_msg_size = (((op & 0x1) == DP_AUX_I2C_READ) ? 2 : 1);
>> >       vgpu_vreg(vgpu, offset) =
>> >               DP_AUX_CH_CTL_DONE |
>> >               DP_AUX_CH_CTL_MESSAGE_SIZE(ret_msg_size);
>> >
>> >       if (msg_length == 3) {
>> > -             if (!(op & GVT_AUX_I2C_MOT)) {
>> > +             if (!(op & DP_AUX_I2C_MOT)) {
>> >                       /* stop */
>> >                       intel_vgpu_init_i2c_edid(vgpu);
>> >               } else {
>> > @@ -530,7 +532,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
>> > intel_vgpu *vgpu,
>> >                                       i2c_edid->edid_available = true;
>> >                       }
>> >               }
>> > -     } else if ((op & 0x1) == GVT_AUX_I2C_WRITE) {
>> > +     } else if ((op & 0x1) == DP_AUX_I2C_WRITE) {
>> >               /* TODO
>> >                * We only support EDID reading from I2C_over_AUX. And
>> >                * we do not expect the index mode to be used. Right now
>> > @@ -538,7 +540,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
>> > intel_vgpu *vgpu,
>> >                * support the gfx driver to do EDID access.
>> >                */
>> >       } else {
>> > -             if (drm_WARN_ON(&i915->drm, (op & 0x1) !=
>> > GVT_AUX_I2C_READ))
>> > +             if (drm_WARN_ON(&i915->drm, (op & 0x1) !=
>> > DP_AUX_I2C_READ))
>> >                       return;
>> >               if (drm_WARN_ON(&i915->drm, msg_length != 4))
>> >                       return;
>> > @@ -553,7 +555,7 @@ void intel_gvt_i2c_handle_aux_ch_write(struct
>> > intel_vgpu *vgpu,
>> >        * ACK of I2C_WRITE
>> >        * returned byte if it is READ
>> >        */
>> > -     aux_data_for_write |= GVT_AUX_I2C_REPLY_ACK << 24;
>> > +     aux_data_for_write |= DP_AUX_I2C_REPLY_ACK << 24;
>> >       vgpu_vreg(vgpu, offset + 4) = aux_data_for_write;  }
>> >
>> > diff --git a/drivers/gpu/drm/i915/gvt/edid.h
>> > b/drivers/gpu/drm/i915/gvt/edid.h index c3b5a55aecb3..13fd06590929
>> > 100644
>> > --- a/drivers/gpu/drm/i915/gvt/edid.h
>> > +++ b/drivers/gpu/drm/i915/gvt/edid.h
>> > @@ -42,14 +42,6 @@ struct intel_vgpu;
>> >  #define EDID_SIZE            128
>> >  #define EDID_ADDR            0x50 /* Linux hvm EDID addr */
>> >
>> > -#define GVT_AUX_NATIVE_WRITE                 0x8
>> > -#define GVT_AUX_NATIVE_READ                  0x9
>> > -#define GVT_AUX_I2C_WRITE                    0x0
>> > -#define GVT_AUX_I2C_READ                     0x1
>> > -#define GVT_AUX_I2C_STATUS                   0x2
>> > -#define GVT_AUX_I2C_MOT                              0x4
>> > -#define GVT_AUX_I2C_REPLY_ACK                        0x0
>> > -
>> >  struct intel_vgpu_edid_data {
>> >       bool data_valid;
>> >       unsigned char edid_block[EDID_SIZE];
>> > diff --git a/drivers/gpu/drm/i915/gvt/handlers.c
>> > b/drivers/gpu/drm/i915/gvt/handlers.c
>> > index 0f09344d3c20..9494d812c00a 100644
>> > --- a/drivers/gpu/drm/i915/gvt/handlers.c
>> > +++ b/drivers/gpu/drm/i915/gvt/handlers.c
>> > @@ -36,6 +36,8 @@
>> >
>> >   */
>> >
>> > +#include <drm/display/drm_dp.h>
>> > +
>> >  #include "i915_drv.h"
>> >  #include "i915_reg.h"
>> >  #include "gvt.h"
>> > @@ -1129,29 +1131,36 @@ static int dp_aux_ch_ctl_trans_done(struct
>> > intel_vgpu *vgpu, u32 value,  static void
>> dp_aux_ch_ctl_link_training(struct
>> > intel_vgpu_dpcd_data *dpcd,
>> >               u8 t)
>> >  {
>> > -     if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
>> > DPCD_TRAINING_PATTERN_1) {
>> > +     if ((t & DP_TRAINING_PATTERN_MASK) == DP_TRAINING_PATTERN_1)
>> > {
>> >               /* training pattern 1 for CR */
>> >               /* set LANE0_CR_DONE, LANE1_CR_DONE */
>> > -             dpcd->data[DPCD_LANE0_1_STATUS] |=
>> > DPCD_LANES_CR_DONE;
>> > +             dpcd->data[DP_LANE0_1_STATUS] |= DP_LANE_CR_DONE |
>> > +                     DP_LANE_CR_DONE << 4;
>> >               /* set LANE2_CR_DONE, LANE3_CR_DONE */
>> > -             dpcd->data[DPCD_LANE2_3_STATUS] |=
>> > DPCD_LANES_CR_DONE;
>> > -     } else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
>> > -                     DPCD_TRAINING_PATTERN_2) {
>> > +             dpcd->data[DP_LANE2_3_STATUS] |= DP_LANE_CR_DONE |
>> > +                     DP_LANE_CR_DONE << 4;
>> > +     } else if ((t & DP_TRAINING_PATTERN_MASK) ==
>> > +                     DP_TRAINING_PATTERN_2) {
>> >               /* training pattern 2 for EQ */
>> >               /* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for
>> > Lane0_1 */
>> > -             dpcd->data[DPCD_LANE0_1_STATUS] |=
>> > DPCD_LANES_EQ_DONE;
>> > -             dpcd->data[DPCD_LANE0_1_STATUS] |=
>> > DPCD_SYMBOL_LOCKED;
>> > +             dpcd->data[DP_LANE0_1_STATUS] |=
>> > DP_LANE_CHANNEL_EQ_DONE |
>> > +                     DP_LANE_CHANNEL_EQ_DONE << 4;
>> > +             dpcd->data[DP_LANE0_1_STATUS] |=
>> > DP_LANE_SYMBOL_LOCKED |
>> > +                     DP_LANE_SYMBOL_LOCKED << 4;
>> >               /* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for
>> > Lane2_3 */
>> > -             dpcd->data[DPCD_LANE2_3_STATUS] |=
>> > DPCD_LANES_EQ_DONE;
>> > -             dpcd->data[DPCD_LANE2_3_STATUS] |=
>> > DPCD_SYMBOL_LOCKED;
>> > +             dpcd->data[DP_LANE2_3_STATUS] |=
>> > DP_LANE_CHANNEL_EQ_DONE |
>> > +                     DP_LANE_CHANNEL_EQ_DONE << 4;
>> > +             dpcd->data[DP_LANE2_3_STATUS] |=
>> > DP_LANE_SYMBOL_LOCKED |
>> > +                     DP_LANE_SYMBOL_LOCKED << 4;
>> >               /* set INTERLANE_ALIGN_DONE */
>> > -             dpcd->data[DPCD_LANE_ALIGN_STATUS_UPDATED] |=
>> > -                     DPCD_INTERLANE_ALIGN_DONE;
>> > -     } else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
>> > -                     DPCD_LINK_TRAINING_DISABLED) {
>> > +             dpcd->data[DP_LANE_ALIGN_STATUS_UPDATED] |=
>> > +                     DP_INTERLANE_ALIGN_DONE;
>> > +     } else if ((t & DP_TRAINING_PATTERN_MASK) ==
>> > +                     DP_TRAINING_PATTERN_DISABLE) {
>> >               /* finish link training */
>> >               /* set sink status as synchronized */
>> > -             dpcd->data[DPCD_SINK_STATUS] = DPCD_SINK_IN_SYNC;
>> > +             dpcd->data[DP_SINK_STATUS] = DP_RECEIVE_PORT_0_STATUS
>> > |
>> > +                     DP_RECEIVE_PORT_1_STATUS;
>> >       }
>> >  }
>> >
>> > @@ -1206,7 +1215,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
>> > intel_vgpu *vgpu,
>> >       len = msg & 0xff;
>> >       op = ctrl >> 4;
>> >
>> > -     if (op == GVT_AUX_NATIVE_WRITE) {
>> > +     if (op == DP_AUX_NATIVE_WRITE) {
>> >               int t;
>> >               u8 buf[16];
>> >
>> > @@ -1252,7 +1261,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
>> > intel_vgpu *vgpu,
>> >
>> >                               dpcd->data[p] = buf[t];
>> >                               /* check for link training */
>> > -                             if (p == DPCD_TRAINING_PATTERN_SET)
>> > +                             if (p == DP_TRAINING_PATTERN_SET)
>> >                                       dp_aux_ch_ctl_link_training(dpcd,
>> >                                                       buf[t]);
>> >                       }
>> > @@ -1265,7 +1274,7 @@ static int dp_aux_ch_ctl_mmio_write(struct
>> > intel_vgpu *vgpu,
>> >               return 0;
>> >       }
>> >
>> > -     if (op == GVT_AUX_NATIVE_READ) {
>> > +     if (op == DP_AUX_NATIVE_READ) {
>> >               int idx, i, ret = 0;
>> >
>> >               if ((addr + len + 1) >= DPCD_SIZE) {
>> > --
>> > 2.39.5
>>
>>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/gvt/display.c b/drivers/gpu/drm/i915/gvt/display.c
index c66d6d3177c8..17f74cb244bb 100644
--- a/drivers/gpu/drm/i915/gvt/display.c
+++ b/drivers/gpu/drm/i915/gvt/display.c
@@ -32,6 +32,8 @@ 
  *
  */
 
+#include <drm/display/drm_dp.h>
+
 #include "i915_drv.h"
 #include "i915_reg.h"
 #include "gvt.h"
@@ -568,7 +570,7 @@  static int setup_virtual_dp_monitor(struct intel_vgpu *vgpu, int port_num,
 
 	memcpy(port->dpcd->data, dpcd_fix_data, DPCD_HEADER_SIZE);
 	port->dpcd->data_valid = true;
-	port->dpcd->data[DPCD_SINK_COUNT] = 0x1;
+	port->dpcd->data[DP_SINK_COUNT] = 0x1;
 	port->type = type;
 	port->id = resolution;
 	port->vrefresh_k = GVT_DEFAULT_REFRESH_RATE * MSEC_PER_SEC;
diff --git a/drivers/gpu/drm/i915/gvt/display.h b/drivers/gpu/drm/i915/gvt/display.h
index f5616f99ef2f..8090bc53c7e1 100644
--- a/drivers/gpu/drm/i915/gvt/display.h
+++ b/drivers/gpu/drm/i915/gvt/display.h
@@ -59,52 +59,10 @@  struct intel_vgpu;
 
 #define INTEL_GVT_MAX_UEVENT_VARS	3
 
-/* DPCD start */
-#define DPCD_SIZE	0x700
-
-/* DPCD */
-#define DP_SET_POWER            0x600
-#define DP_SET_POWER_D0         0x1
-#define AUX_NATIVE_WRITE        0x8
-#define AUX_NATIVE_READ         0x9
-
-#define AUX_NATIVE_REPLY_MASK   (0x3 << 4)
-#define AUX_NATIVE_REPLY_ACK    (0x0 << 4)
 #define AUX_NATIVE_REPLY_NAK    (0x1 << 4)
-#define AUX_NATIVE_REPLY_DEFER  (0x2 << 4)
 
 #define AUX_BURST_SIZE          20
 
-/* DPCD addresses */
-#define DPCD_REV			0x000
-#define DPCD_MAX_LINK_RATE		0x001
-#define DPCD_MAX_LANE_COUNT		0x002
-
-#define DPCD_TRAINING_PATTERN_SET	0x102
-#define	DPCD_SINK_COUNT			0x200
-#define DPCD_LANE0_1_STATUS		0x202
-#define DPCD_LANE2_3_STATUS		0x203
-#define DPCD_LANE_ALIGN_STATUS_UPDATED	0x204
-#define DPCD_SINK_STATUS		0x205
-
-/* link training */
-#define DPCD_TRAINING_PATTERN_SET_MASK	0x03
-#define DPCD_LINK_TRAINING_DISABLED	0x00
-#define DPCD_TRAINING_PATTERN_1		0x01
-#define DPCD_TRAINING_PATTERN_2		0x02
-
-#define DPCD_CP_READY_MASK		(1 << 6)
-
-/* lane status */
-#define DPCD_LANES_CR_DONE		0x11
-#define DPCD_LANES_EQ_DONE		0x22
-#define DPCD_SYMBOL_LOCKED		0x44
-
-#define DPCD_INTERLANE_ALIGN_DONE	0x01
-
-#define DPCD_SINK_IN_SYNC		0x03
-/* DPCD end */
-
 #define SBI_RESPONSE_MASK               0x3
 #define SBI_RESPONSE_SHIFT              0x1
 #define SBI_STAT_MASK                   0x1
diff --git a/drivers/gpu/drm/i915/gvt/edid.c b/drivers/gpu/drm/i915/gvt/edid.c
index c022dc736045..0a357ca42db1 100644
--- a/drivers/gpu/drm/i915/gvt/edid.c
+++ b/drivers/gpu/drm/i915/gvt/edid.c
@@ -32,6 +32,8 @@ 
  *
  */
 
+#include <drm/display/drm_dp.h>
+
 #include "display/intel_dp_aux_regs.h"
 #include "display/intel_gmbus_regs.h"
 #include "gvt.h"
@@ -504,13 +506,13 @@  void intel_gvt_i2c_handle_aux_ch_write(struct intel_vgpu *vgpu,
 	}
 
 	/* Always set the wanted value for vms. */
-	ret_msg_size = (((op & 0x1) == GVT_AUX_I2C_READ) ? 2 : 1);
+	ret_msg_size = (((op & 0x1) == DP_AUX_I2C_READ) ? 2 : 1);
 	vgpu_vreg(vgpu, offset) =
 		DP_AUX_CH_CTL_DONE |
 		DP_AUX_CH_CTL_MESSAGE_SIZE(ret_msg_size);
 
 	if (msg_length == 3) {
-		if (!(op & GVT_AUX_I2C_MOT)) {
+		if (!(op & DP_AUX_I2C_MOT)) {
 			/* stop */
 			intel_vgpu_init_i2c_edid(vgpu);
 		} else {
@@ -530,7 +532,7 @@  void intel_gvt_i2c_handle_aux_ch_write(struct intel_vgpu *vgpu,
 					i2c_edid->edid_available = true;
 			}
 		}
-	} else if ((op & 0x1) == GVT_AUX_I2C_WRITE) {
+	} else if ((op & 0x1) == DP_AUX_I2C_WRITE) {
 		/* TODO
 		 * We only support EDID reading from I2C_over_AUX. And
 		 * we do not expect the index mode to be used. Right now
@@ -538,7 +540,7 @@  void intel_gvt_i2c_handle_aux_ch_write(struct intel_vgpu *vgpu,
 		 * support the gfx driver to do EDID access.
 		 */
 	} else {
-		if (drm_WARN_ON(&i915->drm, (op & 0x1) != GVT_AUX_I2C_READ))
+		if (drm_WARN_ON(&i915->drm, (op & 0x1) != DP_AUX_I2C_READ))
 			return;
 		if (drm_WARN_ON(&i915->drm, msg_length != 4))
 			return;
@@ -553,7 +555,7 @@  void intel_gvt_i2c_handle_aux_ch_write(struct intel_vgpu *vgpu,
 	 * ACK of I2C_WRITE
 	 * returned byte if it is READ
 	 */
-	aux_data_for_write |= GVT_AUX_I2C_REPLY_ACK << 24;
+	aux_data_for_write |= DP_AUX_I2C_REPLY_ACK << 24;
 	vgpu_vreg(vgpu, offset + 4) = aux_data_for_write;
 }
 
diff --git a/drivers/gpu/drm/i915/gvt/edid.h b/drivers/gpu/drm/i915/gvt/edid.h
index c3b5a55aecb3..13fd06590929 100644
--- a/drivers/gpu/drm/i915/gvt/edid.h
+++ b/drivers/gpu/drm/i915/gvt/edid.h
@@ -42,14 +42,6 @@  struct intel_vgpu;
 #define EDID_SIZE		128
 #define EDID_ADDR		0x50 /* Linux hvm EDID addr */
 
-#define GVT_AUX_NATIVE_WRITE			0x8
-#define GVT_AUX_NATIVE_READ			0x9
-#define GVT_AUX_I2C_WRITE			0x0
-#define GVT_AUX_I2C_READ			0x1
-#define GVT_AUX_I2C_STATUS			0x2
-#define GVT_AUX_I2C_MOT				0x4
-#define GVT_AUX_I2C_REPLY_ACK			0x0
-
 struct intel_vgpu_edid_data {
 	bool data_valid;
 	unsigned char edid_block[EDID_SIZE];
diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
index 0f09344d3c20..9494d812c00a 100644
--- a/drivers/gpu/drm/i915/gvt/handlers.c
+++ b/drivers/gpu/drm/i915/gvt/handlers.c
@@ -36,6 +36,8 @@ 
 
  */
 
+#include <drm/display/drm_dp.h>
+
 #include "i915_drv.h"
 #include "i915_reg.h"
 #include "gvt.h"
@@ -1129,29 +1131,36 @@  static int dp_aux_ch_ctl_trans_done(struct intel_vgpu *vgpu, u32 value,
 static void dp_aux_ch_ctl_link_training(struct intel_vgpu_dpcd_data *dpcd,
 		u8 t)
 {
-	if ((t & DPCD_TRAINING_PATTERN_SET_MASK) == DPCD_TRAINING_PATTERN_1) {
+	if ((t & DP_TRAINING_PATTERN_MASK) == DP_TRAINING_PATTERN_1) {
 		/* training pattern 1 for CR */
 		/* set LANE0_CR_DONE, LANE1_CR_DONE */
-		dpcd->data[DPCD_LANE0_1_STATUS] |= DPCD_LANES_CR_DONE;
+		dpcd->data[DP_LANE0_1_STATUS] |= DP_LANE_CR_DONE |
+			DP_LANE_CR_DONE << 4;
 		/* set LANE2_CR_DONE, LANE3_CR_DONE */
-		dpcd->data[DPCD_LANE2_3_STATUS] |= DPCD_LANES_CR_DONE;
-	} else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
-			DPCD_TRAINING_PATTERN_2) {
+		dpcd->data[DP_LANE2_3_STATUS] |= DP_LANE_CR_DONE |
+			DP_LANE_CR_DONE << 4;
+	} else if ((t & DP_TRAINING_PATTERN_MASK) ==
+			DP_TRAINING_PATTERN_2) {
 		/* training pattern 2 for EQ */
 		/* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for Lane0_1 */
-		dpcd->data[DPCD_LANE0_1_STATUS] |= DPCD_LANES_EQ_DONE;
-		dpcd->data[DPCD_LANE0_1_STATUS] |= DPCD_SYMBOL_LOCKED;
+		dpcd->data[DP_LANE0_1_STATUS] |= DP_LANE_CHANNEL_EQ_DONE |
+			DP_LANE_CHANNEL_EQ_DONE << 4;
+		dpcd->data[DP_LANE0_1_STATUS] |= DP_LANE_SYMBOL_LOCKED |
+			DP_LANE_SYMBOL_LOCKED << 4;
 		/* Set CHANNEL_EQ_DONE and  SYMBOL_LOCKED for Lane2_3 */
-		dpcd->data[DPCD_LANE2_3_STATUS] |= DPCD_LANES_EQ_DONE;
-		dpcd->data[DPCD_LANE2_3_STATUS] |= DPCD_SYMBOL_LOCKED;
+		dpcd->data[DP_LANE2_3_STATUS] |= DP_LANE_CHANNEL_EQ_DONE |
+			DP_LANE_CHANNEL_EQ_DONE << 4;
+		dpcd->data[DP_LANE2_3_STATUS] |= DP_LANE_SYMBOL_LOCKED |
+			DP_LANE_SYMBOL_LOCKED << 4;
 		/* set INTERLANE_ALIGN_DONE */
-		dpcd->data[DPCD_LANE_ALIGN_STATUS_UPDATED] |=
-			DPCD_INTERLANE_ALIGN_DONE;
-	} else if ((t & DPCD_TRAINING_PATTERN_SET_MASK) ==
-			DPCD_LINK_TRAINING_DISABLED) {
+		dpcd->data[DP_LANE_ALIGN_STATUS_UPDATED] |=
+			DP_INTERLANE_ALIGN_DONE;
+	} else if ((t & DP_TRAINING_PATTERN_MASK) ==
+			DP_TRAINING_PATTERN_DISABLE) {
 		/* finish link training */
 		/* set sink status as synchronized */
-		dpcd->data[DPCD_SINK_STATUS] = DPCD_SINK_IN_SYNC;
+		dpcd->data[DP_SINK_STATUS] = DP_RECEIVE_PORT_0_STATUS |
+			DP_RECEIVE_PORT_1_STATUS;
 	}
 }
 
@@ -1206,7 +1215,7 @@  static int dp_aux_ch_ctl_mmio_write(struct intel_vgpu *vgpu,
 	len = msg & 0xff;
 	op = ctrl >> 4;
 
-	if (op == GVT_AUX_NATIVE_WRITE) {
+	if (op == DP_AUX_NATIVE_WRITE) {
 		int t;
 		u8 buf[16];
 
@@ -1252,7 +1261,7 @@  static int dp_aux_ch_ctl_mmio_write(struct intel_vgpu *vgpu,
 
 				dpcd->data[p] = buf[t];
 				/* check for link training */
-				if (p == DPCD_TRAINING_PATTERN_SET)
+				if (p == DP_TRAINING_PATTERN_SET)
 					dp_aux_ch_ctl_link_training(dpcd,
 							buf[t]);
 			}
@@ -1265,7 +1274,7 @@  static int dp_aux_ch_ctl_mmio_write(struct intel_vgpu *vgpu,
 		return 0;
 	}
 
-	if (op == GVT_AUX_NATIVE_READ) {
+	if (op == DP_AUX_NATIVE_READ) {
 		int idx, i, ret = 0;
 
 		if ((addr + len + 1) >= DPCD_SIZE) {