All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework
@ 2021-02-17 17:03 Jani Nikula
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915 Jani Nikula
                   ` (15 more replies)
  0 siblings, 16 replies; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

I see the parsing and caching of child device data into
i915->vbt.ddi_port_info[] slightly problematic. We keep adding data to
it, and it just duplicates information. Start moving towards a single
point of truth, and getting the information directly from the child
device data.

One obstacle has been that init_vbt_missing_defaults() only initializes
ddi_port_info, without child devices. As the same problem arose in a
patch from Lucas, I thought it was time to start creating fake child
devices to unify the code.

There are a bunch of cleanups and refactoring here. Patches 1-5 are
enough to fix Lucas' patch I think. Patch 10 does what Lucas was after,
just in a different way and as a byproduct of something else. The later
patches in the series are more to show the direction, and seek
validation for that direction.

Naming is also a question mark. All of these are a bit questionable:
intel_bios_encoder_data, devdata, intel_bios_encoder_supports_*, etc.

BR,
Jani.


[1] http://patchwork.freedesktop.org/patch/msgid/20210213190511.1017088-2-lucas.demarchi@intel.com



Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>


Jani Nikula (12):
  drm/i915/bios: mass convert dev_priv to i915
  drm/i915/bios: store bdb version in i915
  drm/i915/bios: limit default outputs by platform on missing VBT
  drm/i915/bios: limit default outputs to ports A through F
  drm/i915/bios: create fake child devices on missing VBT
  drm/i915/bios: rename display_device_data to intel_bios_encoder_data
  drm/i915/bios: add i915 backpointer to intel_bios_encoder_data
  drm/i915/vbt: add helper functions to check output support
  drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
  drm/i915/bios: start using the intel_bios_encoder_data directly
  drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and
    TBT
  drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost

 drivers/gpu/drm/i915/display/intel_bios.c     | 1021 +++++++++--------
 drivers/gpu/drm/i915/display/intel_bios.h     |   17 +-
 drivers/gpu/drm/i915/display/intel_ddi.c      |   28 +-
 .../drm/i915/display/intel_display_types.h    |    3 +
 drivers/gpu/drm/i915/i915_drv.h               |    9 +-
 5 files changed, 584 insertions(+), 494 deletions(-)

-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-22 18:14   ` Ville Syrjälä
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 02/12] drm/i915/bios: store bdb version in i915 Jani Nikula
                   ` (14 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Time to just yank out the bandage. No functional changes.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 766 +++++++++++-----------
 1 file changed, 383 insertions(+), 383 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 7902d4c2673e..802c228b2940 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -211,7 +211,7 @@ get_lvds_fp_timing(const struct bdb_header *bdb,
 
 /* Parse general panel options */
 static void
-parse_panel_options(struct drm_i915_private *dev_priv,
+parse_panel_options(struct drm_i915_private *i915,
 		    const struct bdb_header *bdb)
 {
 	const struct bdb_lvds_options *lvds_options;
@@ -223,27 +223,27 @@ parse_panel_options(struct drm_i915_private *dev_priv,
 	if (!lvds_options)
 		return;
 
-	dev_priv->vbt.lvds_dither = lvds_options->pixel_dither;
+	i915->vbt.lvds_dither = lvds_options->pixel_dither;
 
-	ret = intel_opregion_get_panel_type(dev_priv);
+	ret = intel_opregion_get_panel_type(i915);
 	if (ret >= 0) {
-		drm_WARN_ON(&dev_priv->drm, ret > 0xf);
+		drm_WARN_ON(&i915->drm, ret > 0xf);
 		panel_type = ret;
-		drm_dbg_kms(&dev_priv->drm, "Panel type: %d (OpRegion)\n",
+		drm_dbg_kms(&i915->drm, "Panel type: %d (OpRegion)\n",
 			    panel_type);
 	} else {
 		if (lvds_options->panel_type > 0xf) {
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "Invalid VBT panel type 0x%x\n",
 				    lvds_options->panel_type);
 			return;
 		}
 		panel_type = lvds_options->panel_type;
-		drm_dbg_kms(&dev_priv->drm, "Panel type: %d (VBT)\n",
+		drm_dbg_kms(&i915->drm, "Panel type: %d (VBT)\n",
 			    panel_type);
 	}
 
-	dev_priv->vbt.panel_type = panel_type;
+	i915->vbt.panel_type = panel_type;
 
 	drrs_mode = (lvds_options->dps_panel_type_bits
 				>> (panel_type * 2)) & MODE_MASK;
@@ -254,17 +254,17 @@ parse_panel_options(struct drm_i915_private *dev_priv,
 	 */
 	switch (drrs_mode) {
 	case 0:
-		dev_priv->vbt.drrs_type = STATIC_DRRS_SUPPORT;
-		drm_dbg_kms(&dev_priv->drm, "DRRS supported mode is static\n");
+		i915->vbt.drrs_type = STATIC_DRRS_SUPPORT;
+		drm_dbg_kms(&i915->drm, "DRRS supported mode is static\n");
 		break;
 	case 2:
-		dev_priv->vbt.drrs_type = SEAMLESS_DRRS_SUPPORT;
-		drm_dbg_kms(&dev_priv->drm,
+		i915->vbt.drrs_type = SEAMLESS_DRRS_SUPPORT;
+		drm_dbg_kms(&i915->drm,
 			    "DRRS supported mode is seamless\n");
 		break;
 	default:
-		dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED;
-		drm_dbg_kms(&dev_priv->drm,
+		i915->vbt.drrs_type = DRRS_NOT_SUPPORTED;
+		drm_dbg_kms(&i915->drm,
 			    "DRRS not supported (VBT input)\n");
 		break;
 	}
@@ -272,7 +272,7 @@ parse_panel_options(struct drm_i915_private *dev_priv,
 
 /* Try to find integrated panel timing data */
 static void
-parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
+parse_lfp_panel_dtd(struct drm_i915_private *i915,
 		    const struct bdb_header *bdb)
 {
 	const struct bdb_lvds_lfp_data *lvds_lfp_data;
@@ -280,7 +280,7 @@ parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
 	const struct lvds_dvo_timing *panel_dvo_timing;
 	const struct lvds_fp_timing *fp_timing;
 	struct drm_display_mode *panel_fixed_mode;
-	int panel_type = dev_priv->vbt.panel_type;
+	int panel_type = i915->vbt.panel_type;
 
 	lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA);
 	if (!lvds_lfp_data)
@@ -300,9 +300,9 @@ parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
 
 	fill_detail_timing_data(panel_fixed_mode, panel_dvo_timing);
 
-	dev_priv->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
+	i915->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "Found panel mode in BIOS VBT legacy lfp table:\n");
 	drm_mode_debug_printmodeline(panel_fixed_mode);
 
@@ -313,16 +313,16 @@ parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
 		/* check the resolution, just to be sure */
 		if (fp_timing->x_res == panel_fixed_mode->hdisplay &&
 		    fp_timing->y_res == panel_fixed_mode->vdisplay) {
-			dev_priv->vbt.bios_lvds_val = fp_timing->lvds_reg_val;
-			drm_dbg_kms(&dev_priv->drm,
+			i915->vbt.bios_lvds_val = fp_timing->lvds_reg_val;
+			drm_dbg_kms(&i915->drm,
 				    "VBT initial LVDS value %x\n",
-				    dev_priv->vbt.bios_lvds_val);
+				    i915->vbt.bios_lvds_val);
 		}
 	}
 }
 
 static void
-parse_generic_dtd(struct drm_i915_private *dev_priv,
+parse_generic_dtd(struct drm_i915_private *i915,
 		  const struct bdb_header *bdb)
 {
 	const struct bdb_generic_dtd *generic_dtd;
@@ -335,26 +335,26 @@ parse_generic_dtd(struct drm_i915_private *dev_priv,
 		return;
 
 	if (generic_dtd->gdtd_size < sizeof(struct generic_dtd_entry)) {
-		drm_err(&dev_priv->drm, "GDTD size %u is too small.\n",
+		drm_err(&i915->drm, "GDTD size %u is too small.\n",
 			generic_dtd->gdtd_size);
 		return;
 	} else if (generic_dtd->gdtd_size !=
 		   sizeof(struct generic_dtd_entry)) {
-		drm_err(&dev_priv->drm, "Unexpected GDTD size %u\n",
+		drm_err(&i915->drm, "Unexpected GDTD size %u\n",
 			generic_dtd->gdtd_size);
 		/* DTD has unknown fields, but keep going */
 	}
 
 	num_dtd = (get_blocksize(generic_dtd) -
 		   sizeof(struct bdb_generic_dtd)) / generic_dtd->gdtd_size;
-	if (dev_priv->vbt.panel_type >= num_dtd) {
-		drm_err(&dev_priv->drm,
+	if (i915->vbt.panel_type >= num_dtd) {
+		drm_err(&i915->drm,
 			"Panel type %d not found in table of %d DTD's\n",
-			dev_priv->vbt.panel_type, num_dtd);
+			i915->vbt.panel_type, num_dtd);
 		return;
 	}
 
-	dtd = &generic_dtd->dtd[dev_priv->vbt.panel_type];
+	dtd = &generic_dtd->dtd[i915->vbt.panel_type];
 
 	panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);
 	if (!panel_fixed_mode)
@@ -393,15 +393,15 @@ parse_generic_dtd(struct drm_i915_private *dev_priv,
 	else
 		panel_fixed_mode->flags |= DRM_MODE_FLAG_NVSYNC;
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "Found panel mode in BIOS VBT generic dtd table:\n");
 	drm_mode_debug_printmodeline(panel_fixed_mode);
 
-	dev_priv->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
+	i915->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
 }
 
 static void
-parse_panel_dtd(struct drm_i915_private *dev_priv,
+parse_panel_dtd(struct drm_i915_private *i915,
 		const struct bdb_header *bdb)
 {
 	/*
@@ -413,18 +413,18 @@ parse_panel_dtd(struct drm_i915_private *dev_priv,
 	 * back to trying the old LFP block if that fails.
 	 */
 	if (bdb->version >= 229)
-		parse_generic_dtd(dev_priv, bdb);
-	if (!dev_priv->vbt.lfp_lvds_vbt_mode)
-		parse_lfp_panel_dtd(dev_priv, bdb);
+		parse_generic_dtd(i915, bdb);
+	if (!i915->vbt.lfp_lvds_vbt_mode)
+		parse_lfp_panel_dtd(i915, bdb);
 }
 
 static void
-parse_lfp_backlight(struct drm_i915_private *dev_priv,
+parse_lfp_backlight(struct drm_i915_private *i915,
 		    const struct bdb_header *bdb)
 {
 	const struct bdb_lfp_backlight_data *backlight_data;
 	const struct lfp_backlight_data_entry *entry;
-	int panel_type = dev_priv->vbt.panel_type;
+	int panel_type = i915->vbt.panel_type;
 	u16 level;
 
 	backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
@@ -432,7 +432,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
 		return;
 
 	if (backlight_data->entry_size != sizeof(backlight_data->data[0])) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Unsupported backlight data entry size %u\n",
 			    backlight_data->entry_size);
 		return;
@@ -440,26 +440,26 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
 
 	entry = &backlight_data->data[panel_type];
 
-	dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
-	if (!dev_priv->vbt.backlight.present) {
-		drm_dbg_kms(&dev_priv->drm,
+	i915->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
+	if (!i915->vbt.backlight.present) {
+		drm_dbg_kms(&i915->drm,
 			    "PWM backlight not present in VBT (type %u)\n",
 			    entry->type);
 		return;
 	}
 
-	dev_priv->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI;
+	i915->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI;
 	if (bdb->version >= 191 &&
 	    get_blocksize(backlight_data) >= sizeof(*backlight_data)) {
 		const struct lfp_backlight_control_method *method;
 
 		method = &backlight_data->backlight_control[panel_type];
-		dev_priv->vbt.backlight.type = method->type;
-		dev_priv->vbt.backlight.controller = method->controller;
+		i915->vbt.backlight.type = method->type;
+		i915->vbt.backlight.controller = method->controller;
 	}
 
-	dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
-	dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
+	i915->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
+	i915->vbt.backlight.active_low_pwm = entry->active_low_pwm;
 
 	if (bdb->version >= 234) {
 		u16 min_level;
@@ -477,37 +477,37 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
 			min_level = min_level / 255;
 
 		if (min_level > 255) {
-			drm_warn(&dev_priv->drm, "Brightness min level > 255\n");
+			drm_warn(&i915->drm, "Brightness min level > 255\n");
 			level = 255;
 		}
-		dev_priv->vbt.backlight.min_brightness = min_level;
+		i915->vbt.backlight.min_brightness = min_level;
 	} else {
 		level = backlight_data->level[panel_type];
-		dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
+		i915->vbt.backlight.min_brightness = entry->min_brightness;
 	}
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "VBT backlight PWM modulation frequency %u Hz, "
 		    "active %s, min brightness %u, level %u, controller %u\n",
-		    dev_priv->vbt.backlight.pwm_freq_hz,
-		    dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
-		    dev_priv->vbt.backlight.min_brightness,
+		    i915->vbt.backlight.pwm_freq_hz,
+		    i915->vbt.backlight.active_low_pwm ? "low" : "high",
+		    i915->vbt.backlight.min_brightness,
 		    level,
-		    dev_priv->vbt.backlight.controller);
+		    i915->vbt.backlight.controller);
 }
 
 /* Try to find sdvo panel data */
 static void
-parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
+parse_sdvo_panel_data(struct drm_i915_private *i915,
 		      const struct bdb_header *bdb)
 {
 	const struct bdb_sdvo_panel_dtds *dtds;
 	struct drm_display_mode *panel_fixed_mode;
 	int index;
 
-	index = dev_priv->params.vbt_sdvo_panel_type;
+	index = i915->params.vbt_sdvo_panel_type;
 	if (index == -2) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Ignore SDVO panel mode from BIOS VBT tables.\n");
 		return;
 	}
@@ -532,17 +532,17 @@ parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
 
 	fill_detail_timing_data(panel_fixed_mode, &dtds->dtds[index]);
 
-	dev_priv->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode;
+	i915->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode;
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "Found SDVO panel mode in BIOS VBT tables:\n");
 	drm_mode_debug_printmodeline(panel_fixed_mode);
 }
 
-static int intel_bios_ssc_frequency(struct drm_i915_private *dev_priv,
+static int intel_bios_ssc_frequency(struct drm_i915_private *i915,
 				    bool alternate)
 {
-	switch (INTEL_GEN(dev_priv)) {
+	switch (INTEL_GEN(i915)) {
 	case 2:
 		return alternate ? 66667 : 48000;
 	case 3:
@@ -554,7 +554,7 @@ static int intel_bios_ssc_frequency(struct drm_i915_private *dev_priv,
 }
 
 static void
-parse_general_features(struct drm_i915_private *dev_priv,
+parse_general_features(struct drm_i915_private *i915,
 		       const struct bdb_header *bdb)
 {
 	const struct bdb_general_features *general;
@@ -563,31 +563,31 @@ parse_general_features(struct drm_i915_private *dev_priv,
 	if (!general)
 		return;
 
-	dev_priv->vbt.int_tv_support = general->int_tv_support;
+	i915->vbt.int_tv_support = general->int_tv_support;
 	/* int_crt_support can't be trusted on earlier platforms */
 	if (bdb->version >= 155 &&
-	    (HAS_DDI(dev_priv) || IS_VALLEYVIEW(dev_priv)))
-		dev_priv->vbt.int_crt_support = general->int_crt_support;
-	dev_priv->vbt.lvds_use_ssc = general->enable_ssc;
-	dev_priv->vbt.lvds_ssc_freq =
-		intel_bios_ssc_frequency(dev_priv, general->ssc_freq);
-	dev_priv->vbt.display_clock_mode = general->display_clock_mode;
-	dev_priv->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted;
+	    (HAS_DDI(i915) || IS_VALLEYVIEW(i915)))
+		i915->vbt.int_crt_support = general->int_crt_support;
+	i915->vbt.lvds_use_ssc = general->enable_ssc;
+	i915->vbt.lvds_ssc_freq =
+		intel_bios_ssc_frequency(i915, general->ssc_freq);
+	i915->vbt.display_clock_mode = general->display_clock_mode;
+	i915->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted;
 	if (bdb->version >= 181) {
-		dev_priv->vbt.orientation = general->rotate_180 ?
+		i915->vbt.orientation = general->rotate_180 ?
 			DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP :
 			DRM_MODE_PANEL_ORIENTATION_NORMAL;
 	} else {
-		dev_priv->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
+		i915->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
 	}
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "BDB_GENERAL_FEATURES int_tv_support %d int_crt_support %d lvds_use_ssc %d lvds_ssc_freq %d display_clock_mode %d fdi_rx_polarity_inverted %d\n",
-		    dev_priv->vbt.int_tv_support,
-		    dev_priv->vbt.int_crt_support,
-		    dev_priv->vbt.lvds_use_ssc,
-		    dev_priv->vbt.lvds_ssc_freq,
-		    dev_priv->vbt.display_clock_mode,
-		    dev_priv->vbt.fdi_rx_polarity_inverted);
+		    i915->vbt.int_tv_support,
+		    i915->vbt.int_crt_support,
+		    i915->vbt.lvds_use_ssc,
+		    i915->vbt.lvds_ssc_freq,
+		    i915->vbt.display_clock_mode,
+		    i915->vbt.fdi_rx_polarity_inverted);
 }
 
 static const struct child_device_config *
@@ -597,7 +597,7 @@ child_device_ptr(const struct bdb_general_definitions *defs, int i)
 }
 
 static void
-parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
+parse_sdvo_device_mapping(struct drm_i915_private *i915, u8 bdb_version)
 {
 	struct sdvo_device_mapping *mapping;
 	const struct display_device_data *devdata;
@@ -608,12 +608,12 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
 	 * Only parse SDVO mappings on gens that could have SDVO. This isn't
 	 * accurate and doesn't have to be, as long as it's not too strict.
 	 */
-	if (!IS_GEN_RANGE(dev_priv, 3, 7)) {
-		drm_dbg_kms(&dev_priv->drm, "Skipping SDVO device mapping\n");
+	if (!IS_GEN_RANGE(i915, 3, 7)) {
+		drm_dbg_kms(&i915->drm, "Skipping SDVO device mapping\n");
 		return;
 	}
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		child = &devdata->child;
 
 		if (child->slave_addr != SLAVE_ADDR1 &&
@@ -627,17 +627,17 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
 		if (child->dvo_port != DEVICE_PORT_DVOB &&
 		    child->dvo_port != DEVICE_PORT_DVOC) {
 			/* skip the incorrect SDVO port */
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "Incorrect SDVO port. Skip it\n");
 			continue;
 		}
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "the SDVO device with slave addr %2x is found on"
 			    " %s port\n",
 			    child->slave_addr,
 			    (child->dvo_port == DEVICE_PORT_DVOB) ?
 			    "SDVOB" : "SDVOC");
-		mapping = &dev_priv->vbt.sdvo_mappings[child->dvo_port - 1];
+		mapping = &i915->vbt.sdvo_mappings[child->dvo_port - 1];
 		if (!mapping->initialized) {
 			mapping->dvo_port = child->dvo_port;
 			mapping->slave_addr = child->slave_addr;
@@ -645,20 +645,20 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
 			mapping->ddc_pin = child->ddc_pin;
 			mapping->i2c_pin = child->i2c_pin;
 			mapping->initialized = 1;
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n",
 				    mapping->dvo_port, mapping->slave_addr,
 				    mapping->dvo_wiring, mapping->ddc_pin,
 				    mapping->i2c_pin);
 		} else {
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "Maybe one SDVO port is shared by "
 				    "two SDVO device.\n");
 		}
 		if (child->slave2_addr) {
 			/* Maybe this is a SDVO device with multiple inputs */
 			/* And the mapping info is not added */
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "there exists the slave2_addr. Maybe this"
 				    " is a SDVO device with multiple inputs.\n");
 		}
@@ -667,13 +667,13 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
 
 	if (!count) {
 		/* No SDVO device info is found */
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "No SDVO device info is found in VBT\n");
 	}
 }
 
 static void
-parse_driver_features(struct drm_i915_private *dev_priv,
+parse_driver_features(struct drm_i915_private *i915,
 		      const struct bdb_header *bdb)
 {
 	const struct bdb_driver_features *driver;
@@ -682,14 +682,14 @@ parse_driver_features(struct drm_i915_private *dev_priv,
 	if (!driver)
 		return;
 
-	if (INTEL_GEN(dev_priv) >= 5) {
+	if (INTEL_GEN(i915) >= 5) {
 		/*
 		 * Note that we consider BDB_DRIVER_FEATURE_INT_SDVO_LVDS
 		 * to mean "eDP". The VBT spec doesn't agree with that
 		 * interpretation, but real world VBTs seem to.
 		 */
 		if (driver->lvds_config != BDB_DRIVER_FEATURE_INT_LVDS)
-			dev_priv->vbt.int_lvds_support = 0;
+			i915->vbt.int_lvds_support = 0;
 	} else {
 		/*
 		 * FIXME it's not clear which BDB version has the LVDS config
@@ -705,11 +705,11 @@ parse_driver_features(struct drm_i915_private *dev_priv,
 		if (bdb->version >= 134 &&
 		    driver->lvds_config != BDB_DRIVER_FEATURE_INT_LVDS &&
 		    driver->lvds_config != BDB_DRIVER_FEATURE_INT_SDVO_LVDS)
-			dev_priv->vbt.int_lvds_support = 0;
+			i915->vbt.int_lvds_support = 0;
 	}
 
 	if (bdb->version < 228) {
-		drm_dbg_kms(&dev_priv->drm, "DRRS State Enabled:%d\n",
+		drm_dbg_kms(&i915->drm, "DRRS State Enabled:%d\n",
 			    driver->drrs_enabled);
 		/*
 		 * If DRRS is not supported, drrs_type has to be set to 0.
@@ -718,18 +718,18 @@ parse_driver_features(struct drm_i915_private *dev_priv,
 		 * driver->drrs_enabled=false
 		 */
 		if (!driver->drrs_enabled)
-			dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED;
+			i915->vbt.drrs_type = DRRS_NOT_SUPPORTED;
 
-		dev_priv->vbt.psr.enable = driver->psr_enabled;
+		i915->vbt.psr.enable = driver->psr_enabled;
 	}
 }
 
 static void
-parse_power_conservation_features(struct drm_i915_private *dev_priv,
+parse_power_conservation_features(struct drm_i915_private *i915,
 				  const struct bdb_header *bdb)
 {
 	const struct bdb_lfp_power *power;
-	u8 panel_type = dev_priv->vbt.panel_type;
+	u8 panel_type = i915->vbt.panel_type;
 
 	if (bdb->version < 228)
 		return;
@@ -738,7 +738,7 @@ parse_power_conservation_features(struct drm_i915_private *dev_priv,
 	if (!power)
 		return;
 
-	dev_priv->vbt.psr.enable = power->psr & BIT(panel_type);
+	i915->vbt.psr.enable = power->psr & BIT(panel_type);
 
 	/*
 	 * If DRRS is not supported, drrs_type has to be set to 0.
@@ -747,19 +747,19 @@ parse_power_conservation_features(struct drm_i915_private *dev_priv,
 	 * power->drrs & BIT(panel_type)=false
 	 */
 	if (!(power->drrs & BIT(panel_type)))
-		dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED;
+		i915->vbt.drrs_type = DRRS_NOT_SUPPORTED;
 
 	if (bdb->version >= 232)
-		dev_priv->vbt.edp.hobl = power->hobl & BIT(panel_type);
+		i915->vbt.edp.hobl = power->hobl & BIT(panel_type);
 }
 
 static void
-parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
+parse_edp(struct drm_i915_private *i915, const struct bdb_header *bdb)
 {
 	const struct bdb_edp *edp;
 	const struct edp_power_seq *edp_pps;
 	const struct edp_fast_link_params *edp_link_params;
-	int panel_type = dev_priv->vbt.panel_type;
+	int panel_type = i915->vbt.panel_type;
 
 	edp = find_section(bdb, BDB_EDP);
 	if (!edp)
@@ -767,13 +767,13 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 
 	switch ((edp->color_depth >> (panel_type * 2)) & 3) {
 	case EDP_18BPP:
-		dev_priv->vbt.edp.bpp = 18;
+		i915->vbt.edp.bpp = 18;
 		break;
 	case EDP_24BPP:
-		dev_priv->vbt.edp.bpp = 24;
+		i915->vbt.edp.bpp = 24;
 		break;
 	case EDP_30BPP:
-		dev_priv->vbt.edp.bpp = 30;
+		i915->vbt.edp.bpp = 30;
 		break;
 	}
 
@@ -781,17 +781,17 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 	edp_pps = &edp->power_seqs[panel_type];
 	edp_link_params = &edp->fast_link_params[panel_type];
 
-	dev_priv->vbt.edp.pps = *edp_pps;
+	i915->vbt.edp.pps = *edp_pps;
 
 	switch (edp_link_params->rate) {
 	case EDP_RATE_1_62:
-		dev_priv->vbt.edp.rate = DP_LINK_BW_1_62;
+		i915->vbt.edp.rate = DP_LINK_BW_1_62;
 		break;
 	case EDP_RATE_2_7:
-		dev_priv->vbt.edp.rate = DP_LINK_BW_2_7;
+		i915->vbt.edp.rate = DP_LINK_BW_2_7;
 		break;
 	default:
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "VBT has unknown eDP link rate value %u\n",
 			     edp_link_params->rate);
 		break;
@@ -799,16 +799,16 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 
 	switch (edp_link_params->lanes) {
 	case EDP_LANE_1:
-		dev_priv->vbt.edp.lanes = 1;
+		i915->vbt.edp.lanes = 1;
 		break;
 	case EDP_LANE_2:
-		dev_priv->vbt.edp.lanes = 2;
+		i915->vbt.edp.lanes = 2;
 		break;
 	case EDP_LANE_4:
-		dev_priv->vbt.edp.lanes = 4;
+		i915->vbt.edp.lanes = 4;
 		break;
 	default:
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "VBT has unknown eDP lane count value %u\n",
 			    edp_link_params->lanes);
 		break;
@@ -816,19 +816,19 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 
 	switch (edp_link_params->preemphasis) {
 	case EDP_PREEMPHASIS_NONE:
-		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0;
+		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0;
 		break;
 	case EDP_PREEMPHASIS_3_5dB:
-		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1;
+		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1;
 		break;
 	case EDP_PREEMPHASIS_6dB:
-		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2;
+		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2;
 		break;
 	case EDP_PREEMPHASIS_9_5dB:
-		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3;
+		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3;
 		break;
 	default:
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "VBT has unknown eDP pre-emphasis value %u\n",
 			    edp_link_params->preemphasis);
 		break;
@@ -836,19 +836,19 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 
 	switch (edp_link_params->vswing) {
 	case EDP_VSWING_0_4V:
-		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
+		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
 		break;
 	case EDP_VSWING_0_6V:
-		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
+		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
 		break;
 	case EDP_VSWING_0_8V:
-		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
+		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
 		break;
 	case EDP_VSWING_1_2V:
-		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
+		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
 		break;
 	default:
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "VBT has unknown eDP voltage swing value %u\n",
 			    edp_link_params->vswing);
 		break;
@@ -858,53 +858,53 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 		u8 vswing;
 
 		/* Don't read from VBT if module parameter has valid value*/
-		if (dev_priv->params.edp_vswing) {
-			dev_priv->vbt.edp.low_vswing =
-				dev_priv->params.edp_vswing == 1;
+		if (i915->params.edp_vswing) {
+			i915->vbt.edp.low_vswing =
+				i915->params.edp_vswing == 1;
 		} else {
 			vswing = (edp->edp_vswing_preemph >> (panel_type * 4)) & 0xF;
-			dev_priv->vbt.edp.low_vswing = vswing == 0;
+			i915->vbt.edp.low_vswing = vswing == 0;
 		}
 	}
 }
 
 static void
-parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
+parse_psr(struct drm_i915_private *i915, const struct bdb_header *bdb)
 {
 	const struct bdb_psr *psr;
 	const struct psr_table *psr_table;
-	int panel_type = dev_priv->vbt.panel_type;
+	int panel_type = i915->vbt.panel_type;
 
 	psr = find_section(bdb, BDB_PSR);
 	if (!psr) {
-		drm_dbg_kms(&dev_priv->drm, "No PSR BDB found.\n");
+		drm_dbg_kms(&i915->drm, "No PSR BDB found.\n");
 		return;
 	}
 
 	psr_table = &psr->psr_table[panel_type];
 
-	dev_priv->vbt.psr.full_link = psr_table->full_link;
-	dev_priv->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup;
+	i915->vbt.psr.full_link = psr_table->full_link;
+	i915->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup;
 
 	/* Allowed VBT values goes from 0 to 15 */
-	dev_priv->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 :
+	i915->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 :
 		psr_table->idle_frames > 15 ? 15 : psr_table->idle_frames;
 
 	switch (psr_table->lines_to_wait) {
 	case 0:
-		dev_priv->vbt.psr.lines_to_wait = PSR_0_LINES_TO_WAIT;
+		i915->vbt.psr.lines_to_wait = PSR_0_LINES_TO_WAIT;
 		break;
 	case 1:
-		dev_priv->vbt.psr.lines_to_wait = PSR_1_LINE_TO_WAIT;
+		i915->vbt.psr.lines_to_wait = PSR_1_LINE_TO_WAIT;
 		break;
 	case 2:
-		dev_priv->vbt.psr.lines_to_wait = PSR_4_LINES_TO_WAIT;
+		i915->vbt.psr.lines_to_wait = PSR_4_LINES_TO_WAIT;
 		break;
 	case 3:
-		dev_priv->vbt.psr.lines_to_wait = PSR_8_LINES_TO_WAIT;
+		i915->vbt.psr.lines_to_wait = PSR_8_LINES_TO_WAIT;
 		break;
 	default:
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "VBT has unknown PSR lines to wait %u\n",
 			    psr_table->lines_to_wait);
 		break;
@@ -915,50 +915,50 @@ parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 	 * Old decimal value is wake up time in multiples of 100 us.
 	 */
 	if (bdb->version >= 205 &&
-	    (IS_GEN9_BC(dev_priv) || IS_GEMINILAKE(dev_priv) ||
-	     INTEL_GEN(dev_priv) >= 10)) {
+	    (IS_GEN9_BC(i915) || IS_GEMINILAKE(i915) ||
+	     INTEL_GEN(i915) >= 10)) {
 		switch (psr_table->tp1_wakeup_time) {
 		case 0:
-			dev_priv->vbt.psr.tp1_wakeup_time_us = 500;
+			i915->vbt.psr.tp1_wakeup_time_us = 500;
 			break;
 		case 1:
-			dev_priv->vbt.psr.tp1_wakeup_time_us = 100;
+			i915->vbt.psr.tp1_wakeup_time_us = 100;
 			break;
 		case 3:
-			dev_priv->vbt.psr.tp1_wakeup_time_us = 0;
+			i915->vbt.psr.tp1_wakeup_time_us = 0;
 			break;
 		default:
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "VBT tp1 wakeup time value %d is outside range[0-3], defaulting to max value 2500us\n",
 				    psr_table->tp1_wakeup_time);
 			fallthrough;
 		case 2:
-			dev_priv->vbt.psr.tp1_wakeup_time_us = 2500;
+			i915->vbt.psr.tp1_wakeup_time_us = 2500;
 			break;
 		}
 
 		switch (psr_table->tp2_tp3_wakeup_time) {
 		case 0:
-			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 500;
+			i915->vbt.psr.tp2_tp3_wakeup_time_us = 500;
 			break;
 		case 1:
-			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 100;
+			i915->vbt.psr.tp2_tp3_wakeup_time_us = 100;
 			break;
 		case 3:
-			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 0;
+			i915->vbt.psr.tp2_tp3_wakeup_time_us = 0;
 			break;
 		default:
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "VBT tp2_tp3 wakeup time value %d is outside range[0-3], defaulting to max value 2500us\n",
 				    psr_table->tp2_tp3_wakeup_time);
 			fallthrough;
 		case 2:
-			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 2500;
+			i915->vbt.psr.tp2_tp3_wakeup_time_us = 2500;
 		break;
 		}
 	} else {
-		dev_priv->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100;
-		dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100;
+		i915->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100;
+		i915->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100;
 	}
 
 	if (bdb->version >= 226) {
@@ -980,74 +980,74 @@ parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
 			wakeup_time = 2500;
 			break;
 		}
-		dev_priv->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time;
+		i915->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time;
 	} else {
 		/* Reusing PSR1 wakeup time for PSR2 in older VBTs */
-		dev_priv->vbt.psr.psr2_tp2_tp3_wakeup_time_us = dev_priv->vbt.psr.tp2_tp3_wakeup_time_us;
+		i915->vbt.psr.psr2_tp2_tp3_wakeup_time_us = i915->vbt.psr.tp2_tp3_wakeup_time_us;
 	}
 }
 
-static void parse_dsi_backlight_ports(struct drm_i915_private *dev_priv,
+static void parse_dsi_backlight_ports(struct drm_i915_private *i915,
 				      u16 version, enum port port)
 {
-	if (!dev_priv->vbt.dsi.config->dual_link || version < 197) {
-		dev_priv->vbt.dsi.bl_ports = BIT(port);
-		if (dev_priv->vbt.dsi.config->cabc_supported)
-			dev_priv->vbt.dsi.cabc_ports = BIT(port);
+	if (!i915->vbt.dsi.config->dual_link || version < 197) {
+		i915->vbt.dsi.bl_ports = BIT(port);
+		if (i915->vbt.dsi.config->cabc_supported)
+			i915->vbt.dsi.cabc_ports = BIT(port);
 
 		return;
 	}
 
-	switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) {
+	switch (i915->vbt.dsi.config->dl_dcs_backlight_ports) {
 	case DL_DCS_PORT_A:
-		dev_priv->vbt.dsi.bl_ports = BIT(PORT_A);
+		i915->vbt.dsi.bl_ports = BIT(PORT_A);
 		break;
 	case DL_DCS_PORT_C:
-		dev_priv->vbt.dsi.bl_ports = BIT(PORT_C);
+		i915->vbt.dsi.bl_ports = BIT(PORT_C);
 		break;
 	default:
 	case DL_DCS_PORT_A_AND_C:
-		dev_priv->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(PORT_C);
+		i915->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(PORT_C);
 		break;
 	}
 
-	if (!dev_priv->vbt.dsi.config->cabc_supported)
+	if (!i915->vbt.dsi.config->cabc_supported)
 		return;
 
-	switch (dev_priv->vbt.dsi.config->dl_dcs_cabc_ports) {
+	switch (i915->vbt.dsi.config->dl_dcs_cabc_ports) {
 	case DL_DCS_PORT_A:
-		dev_priv->vbt.dsi.cabc_ports = BIT(PORT_A);
+		i915->vbt.dsi.cabc_ports = BIT(PORT_A);
 		break;
 	case DL_DCS_PORT_C:
-		dev_priv->vbt.dsi.cabc_ports = BIT(PORT_C);
+		i915->vbt.dsi.cabc_ports = BIT(PORT_C);
 		break;
 	default:
 	case DL_DCS_PORT_A_AND_C:
-		dev_priv->vbt.dsi.cabc_ports =
+		i915->vbt.dsi.cabc_ports =
 					BIT(PORT_A) | BIT(PORT_C);
 		break;
 	}
 }
 
 static void
-parse_mipi_config(struct drm_i915_private *dev_priv,
+parse_mipi_config(struct drm_i915_private *i915,
 		  const struct bdb_header *bdb)
 {
 	const struct bdb_mipi_config *start;
 	const struct mipi_config *config;
 	const struct mipi_pps_data *pps;
-	int panel_type = dev_priv->vbt.panel_type;
+	int panel_type = i915->vbt.panel_type;
 	enum port port;
 
 	/* parse MIPI blocks only if LFP type is MIPI */
-	if (!intel_bios_is_dsi_present(dev_priv, &port))
+	if (!intel_bios_is_dsi_present(i915, &port))
 		return;
 
 	/* Initialize this to undefined indicating no generic MIPI support */
-	dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID;
+	i915->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID;
 
 	/* Block #40 is already parsed and panel_fixed_mode is
-	 * stored in dev_priv->lfp_lvds_vbt_mode
+	 * stored in i915->lfp_lvds_vbt_mode
 	 * resuse this when needed
 	 */
 
@@ -1056,11 +1056,11 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
 	 */
 	start = find_section(bdb, BDB_MIPI_CONFIG);
 	if (!start) {
-		drm_dbg_kms(&dev_priv->drm, "No MIPI config BDB found");
+		drm_dbg_kms(&i915->drm, "No MIPI config BDB found");
 		return;
 	}
 
-	drm_dbg(&dev_priv->drm, "Found MIPI Config block, panel index = %d\n",
+	drm_dbg(&i915->drm, "Found MIPI Config block, panel index = %d\n",
 		panel_type);
 
 	/*
@@ -1071,17 +1071,17 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
 	pps = &start->pps[panel_type];
 
 	/* store as of now full data. Trim when we realise all is not needed */
-	dev_priv->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL);
-	if (!dev_priv->vbt.dsi.config)
+	i915->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL);
+	if (!i915->vbt.dsi.config)
 		return;
 
-	dev_priv->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL);
-	if (!dev_priv->vbt.dsi.pps) {
-		kfree(dev_priv->vbt.dsi.config);
+	i915->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL);
+	if (!i915->vbt.dsi.pps) {
+		kfree(i915->vbt.dsi.config);
 		return;
 	}
 
-	parse_dsi_backlight_ports(dev_priv, bdb->version, port);
+	parse_dsi_backlight_ports(i915, bdb->version, port);
 
 	/* FIXME is the 90 vs. 270 correct? */
 	switch (config->rotation) {
@@ -1090,25 +1090,25 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
 		 * Most (all?) VBTs claim 0 degrees despite having
 		 * an upside down panel, thus we do not trust this.
 		 */
-		dev_priv->vbt.dsi.orientation =
+		i915->vbt.dsi.orientation =
 			DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
 		break;
 	case ENABLE_ROTATION_90:
-		dev_priv->vbt.dsi.orientation =
+		i915->vbt.dsi.orientation =
 			DRM_MODE_PANEL_ORIENTATION_RIGHT_UP;
 		break;
 	case ENABLE_ROTATION_180:
-		dev_priv->vbt.dsi.orientation =
+		i915->vbt.dsi.orientation =
 			DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP;
 		break;
 	case ENABLE_ROTATION_270:
-		dev_priv->vbt.dsi.orientation =
+		i915->vbt.dsi.orientation =
 			DRM_MODE_PANEL_ORIENTATION_LEFT_UP;
 		break;
 	}
 
 	/* We have mandatory mipi config blocks. Initialize as generic panel */
-	dev_priv->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID;
+	i915->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID;
 }
 
 /* Find the sequence block and size for the given panel. */
@@ -1271,13 +1271,13 @@ static int goto_next_sequence_v3(const u8 *data, int index, int total)
  * Get len of pre-fixed deassert fragment from a v1 init OTP sequence,
  * skip all delay + gpio operands and stop at the first DSI packet op.
  */
-static int get_init_otp_deassert_fragment_len(struct drm_i915_private *dev_priv)
+static int get_init_otp_deassert_fragment_len(struct drm_i915_private *i915)
 {
-	const u8 *data = dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
+	const u8 *data = i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
 	int index, len;
 
-	if (drm_WARN_ON(&dev_priv->drm,
-			!data || dev_priv->vbt.dsi.seq_version != 1))
+	if (drm_WARN_ON(&i915->drm,
+			!data || i915->vbt.dsi.seq_version != 1))
 		return 0;
 
 	/* index = 1 to skip sequence byte */
@@ -1305,55 +1305,55 @@ static int get_init_otp_deassert_fragment_len(struct drm_i915_private *dev_priv)
  * these devices we split the init OTP sequence into a deassert sequence and
  * the actual init OTP part.
  */
-static void fixup_mipi_sequences(struct drm_i915_private *dev_priv)
+static void fixup_mipi_sequences(struct drm_i915_private *i915)
 {
 	u8 *init_otp;
 	int len;
 
 	/* Limit this to VLV for now. */
-	if (!IS_VALLEYVIEW(dev_priv))
+	if (!IS_VALLEYVIEW(i915))
 		return;
 
 	/* Limit this to v1 vid-mode sequences */
-	if (dev_priv->vbt.dsi.config->is_cmd_mode ||
-	    dev_priv->vbt.dsi.seq_version != 1)
+	if (i915->vbt.dsi.config->is_cmd_mode ||
+	    i915->vbt.dsi.seq_version != 1)
 		return;
 
 	/* Only do this if there are otp and assert seqs and no deassert seq */
-	if (!dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] ||
-	    !dev_priv->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] ||
-	    dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET])
+	if (!i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] ||
+	    !i915->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] ||
+	    i915->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET])
 		return;
 
 	/* The deassert-sequence ends at the first DSI packet */
-	len = get_init_otp_deassert_fragment_len(dev_priv);
+	len = get_init_otp_deassert_fragment_len(i915);
 	if (!len)
 		return;
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "Using init OTP fragment to deassert reset\n");
 
 	/* Copy the fragment, update seq byte and terminate it */
-	init_otp = (u8 *)dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
-	dev_priv->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL);
-	if (!dev_priv->vbt.dsi.deassert_seq)
+	init_otp = (u8 *)i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
+	i915->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL);
+	if (!i915->vbt.dsi.deassert_seq)
 		return;
-	dev_priv->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET;
-	dev_priv->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END;
+	i915->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET;
+	i915->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END;
 	/* Use the copy for deassert */
-	dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] =
-		dev_priv->vbt.dsi.deassert_seq;
+	i915->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] =
+		i915->vbt.dsi.deassert_seq;
 	/* Replace the last byte of the fragment with init OTP seq byte */
 	init_otp[len - 1] = MIPI_SEQ_INIT_OTP;
 	/* And make MIPI_MIPI_SEQ_INIT_OTP point to it */
-	dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1;
+	i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1;
 }
 
 static void
-parse_mipi_sequence(struct drm_i915_private *dev_priv,
+parse_mipi_sequence(struct drm_i915_private *i915,
 		    const struct bdb_header *bdb)
 {
-	int panel_type = dev_priv->vbt.panel_type;
+	int panel_type = i915->vbt.panel_type;
 	const struct bdb_mipi_sequence *sequence;
 	const u8 *seq_data;
 	u32 seq_size;
@@ -1361,25 +1361,25 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv,
 	int index = 0;
 
 	/* Only our generic panel driver uses the sequence block. */
-	if (dev_priv->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID)
+	if (i915->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID)
 		return;
 
 	sequence = find_section(bdb, BDB_MIPI_SEQUENCE);
 	if (!sequence) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "No MIPI Sequence found, parsing complete\n");
 		return;
 	}
 
 	/* Fail gracefully for forward incompatible sequence block. */
 	if (sequence->version >= 4) {
-		drm_err(&dev_priv->drm,
+		drm_err(&i915->drm,
 			"Unable to parse MIPI Sequence Block v%u\n",
 			sequence->version);
 		return;
 	}
 
-	drm_dbg(&dev_priv->drm, "Found MIPI sequence block v%u\n",
+	drm_dbg(&i915->drm, "Found MIPI sequence block v%u\n",
 		sequence->version);
 
 	seq_data = find_panel_sequence_block(sequence, panel_type, &seq_size);
@@ -1397,41 +1397,41 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv,
 			break;
 
 		if (seq_id >= MIPI_SEQ_MAX) {
-			drm_err(&dev_priv->drm, "Unknown sequence %u\n",
+			drm_err(&i915->drm, "Unknown sequence %u\n",
 				seq_id);
 			goto err;
 		}
 
 		/* Log about presence of sequences we won't run. */
 		if (seq_id == MIPI_SEQ_TEAR_ON || seq_id == MIPI_SEQ_TEAR_OFF)
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "Unsupported sequence %u\n", seq_id);
 
-		dev_priv->vbt.dsi.sequence[seq_id] = data + index;
+		i915->vbt.dsi.sequence[seq_id] = data + index;
 
 		if (sequence->version >= 3)
 			index = goto_next_sequence_v3(data, index, seq_size);
 		else
 			index = goto_next_sequence(data, index, seq_size);
 		if (!index) {
-			drm_err(&dev_priv->drm, "Invalid sequence %u\n",
+			drm_err(&i915->drm, "Invalid sequence %u\n",
 				seq_id);
 			goto err;
 		}
 	}
 
-	dev_priv->vbt.dsi.data = data;
-	dev_priv->vbt.dsi.size = seq_size;
-	dev_priv->vbt.dsi.seq_version = sequence->version;
+	i915->vbt.dsi.data = data;
+	i915->vbt.dsi.size = seq_size;
+	i915->vbt.dsi.seq_version = sequence->version;
 
-	fixup_mipi_sequences(dev_priv);
+	fixup_mipi_sequences(i915);
 
-	drm_dbg(&dev_priv->drm, "MIPI related VBT parsing complete\n");
+	drm_dbg(&i915->drm, "MIPI related VBT parsing complete\n");
 	return;
 
 err:
 	kfree(data);
-	memset(dev_priv->vbt.dsi.sequence, 0, sizeof(dev_priv->vbt.dsi.sequence));
+	memset(i915->vbt.dsi.sequence, 0, sizeof(i915->vbt.dsi.sequence));
 }
 
 static void
@@ -1515,18 +1515,18 @@ static enum port get_port_by_ddc_pin(struct drm_i915_private *i915, u8 ddc_pin)
 	return PORT_NONE;
 }
 
-static void sanitize_ddc_pin(struct drm_i915_private *dev_priv,
+static void sanitize_ddc_pin(struct drm_i915_private *i915,
 			     enum port port)
 {
-	struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
+	struct ddi_vbt_port_info *info = &i915->vbt.ddi_port_info[port];
 	enum port p;
 
 	if (!info->alternate_ddc_pin)
 		return;
 
-	p = get_port_by_ddc_pin(dev_priv, info->alternate_ddc_pin);
+	p = get_port_by_ddc_pin(i915, info->alternate_ddc_pin);
 	if (p != PORT_NONE) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "port %c trying to use the same DDC pin (0x%x) as port %c, "
 			    "disabling port %c DVI/HDMI support\n",
 			    port_name(port), info->alternate_ddc_pin,
@@ -1544,7 +1544,7 @@ static void sanitize_ddc_pin(struct drm_i915_private *dev_priv,
 		 * port A and port E with the same AUX ch and
 		 * we must pick port E :(
 		 */
-		info = &dev_priv->vbt.ddi_port_info[p];
+		info = &i915->vbt.ddi_port_info[p];
 
 		info->supports_dvi = false;
 		info->supports_hdmi = false;
@@ -1567,18 +1567,18 @@ static enum port get_port_by_aux_ch(struct drm_i915_private *i915, u8 aux_ch)
 	return PORT_NONE;
 }
 
-static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
+static void sanitize_aux_ch(struct drm_i915_private *i915,
 			    enum port port)
 {
-	struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
+	struct ddi_vbt_port_info *info = &i915->vbt.ddi_port_info[port];
 	enum port p;
 
 	if (!info->alternate_aux_channel)
 		return;
 
-	p = get_port_by_aux_ch(dev_priv, info->alternate_aux_channel);
+	p = get_port_by_aux_ch(i915, info->alternate_aux_channel);
 	if (p != PORT_NONE) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "port %c trying to use the same AUX CH (0x%x) as port %c, "
 			    "disabling port %c DP support\n",
 			    port_name(port), info->alternate_aux_channel,
@@ -1596,7 +1596,7 @@ static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
 		 * port A and port E with the same AUX ch and
 		 * we must pick port E :(
 		 */
-		info = &dev_priv->vbt.ddi_port_info[p];
+		info = &i915->vbt.ddi_port_info[p];
 
 		info->supports_dp = false;
 		info->alternate_aux_channel = 0;
@@ -1644,26 +1644,26 @@ static const u8 gen9bc_tgp_ddc_pin_map[] = {
 	[DDC_BUS_DDI_D] = GMBUS_PIN_10_TC2_ICP,
 };
 
-static u8 map_ddc_pin(struct drm_i915_private *dev_priv, u8 vbt_pin)
+static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin)
 {
 	const u8 *ddc_pin_map;
 	int n_entries;
 
-	if (HAS_PCH_ADP(dev_priv)) {
+	if (HAS_PCH_ADP(i915)) {
 		ddc_pin_map = adls_ddc_pin_map;
 		n_entries = ARRAY_SIZE(adls_ddc_pin_map);
-	} else if (INTEL_PCH_TYPE(dev_priv) >= PCH_DG1) {
+	} else if (INTEL_PCH_TYPE(i915) >= PCH_DG1) {
 		return vbt_pin;
-	} else if (IS_ROCKETLAKE(dev_priv) && INTEL_PCH_TYPE(dev_priv) == PCH_TGP) {
+	} else if (IS_ROCKETLAKE(i915) && INTEL_PCH_TYPE(i915) == PCH_TGP) {
 		ddc_pin_map = rkl_pch_tgp_ddc_pin_map;
 		n_entries = ARRAY_SIZE(rkl_pch_tgp_ddc_pin_map);
-	} else if (HAS_PCH_TGP(dev_priv) && IS_GEN9_BC(dev_priv)) {
+	} else if (HAS_PCH_TGP(i915) && IS_GEN9_BC(i915)) {
 		ddc_pin_map = gen9bc_tgp_ddc_pin_map;
 		n_entries = ARRAY_SIZE(gen9bc_tgp_ddc_pin_map);
-	} else if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP) {
+	} else if (INTEL_PCH_TYPE(i915) >= PCH_ICP) {
 		ddc_pin_map = icp_ddc_pin_map;
 		n_entries = ARRAY_SIZE(icp_ddc_pin_map);
-	} else if (HAS_PCH_CNP(dev_priv)) {
+	} else if (HAS_PCH_CNP(i915)) {
 		ddc_pin_map = cnp_ddc_pin_map;
 		n_entries = ARRAY_SIZE(cnp_ddc_pin_map);
 	} else {
@@ -1674,7 +1674,7 @@ static u8 map_ddc_pin(struct drm_i915_private *dev_priv, u8 vbt_pin)
 	if (vbt_pin < n_entries && ddc_pin_map[vbt_pin] != 0)
 		return ddc_pin_map[vbt_pin];
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "Ignoring alternate pin: VBT claims DDC pin %d, which is not valid for this platform\n",
 		    vbt_pin);
 	return 0;
@@ -1699,7 +1699,7 @@ static enum port __dvo_port_to_port(int n_ports, int n_dvo,
 	return PORT_NONE;
 }
 
-static enum port dvo_port_to_port(struct drm_i915_private *dev_priv,
+static enum port dvo_port_to_port(struct drm_i915_private *i915,
 				  u8 dvo_port)
 {
 	/*
@@ -1742,12 +1742,12 @@ static enum port dvo_port_to_port(struct drm_i915_private *dev_priv,
 		[PORT_TC4] = { DVO_PORT_HDMIE, DVO_PORT_DPE, -1 },
 	};
 
-	if (IS_ALDERLAKE_S(dev_priv))
+	if (IS_ALDERLAKE_S(i915))
 		return __dvo_port_to_port(ARRAY_SIZE(adls_port_mapping),
 					  ARRAY_SIZE(adls_port_mapping[0]),
 					  adls_port_mapping,
 					  dvo_port);
-	else if (IS_DG1(dev_priv) || IS_ROCKETLAKE(dev_priv))
+	else if (IS_DG1(i915) || IS_ROCKETLAKE(i915))
 		return __dvo_port_to_port(ARRAY_SIZE(rkl_port_mapping),
 					  ARRAY_SIZE(rkl_port_mapping[0]),
 					  rkl_port_mapping,
@@ -1759,7 +1759,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *dev_priv,
 					  dvo_port);
 }
 
-static void parse_ddi_port(struct drm_i915_private *dev_priv,
+static void parse_ddi_port(struct drm_i915_private *i915,
 			   struct display_device_data *devdata,
 			   u8 bdb_version)
 {
@@ -1768,14 +1768,14 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt;
 	enum port port;
 
-	port = dvo_port_to_port(dev_priv, child->dvo_port);
+	port = dvo_port_to_port(i915, child->dvo_port);
 	if (port == PORT_NONE)
 		return;
 
-	info = &dev_priv->vbt.ddi_port_info[port];
+	info = &i915->vbt.ddi_port_info[port];
 
 	if (info->child) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "More than one child device for port %c in VBT, using the first.\n",
 			    port_name(port));
 		return;
@@ -1787,8 +1787,8 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
 	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
 
-	if (port == PORT_A && is_dvi && INTEL_GEN(dev_priv) < 12) {
-		drm_dbg_kms(&dev_priv->drm,
+	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
+		drm_dbg_kms(&i915->drm,
 			    "VBT claims port A supports DVI%s, ignoring\n",
 			    is_hdmi ? "/HDMI" : "");
 		is_dvi = false;
@@ -1806,22 +1806,22 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 	if (bdb_version >= 209)
 		info->supports_tbt = child->tbt;
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "Port %c VBT info: CRT:%d DVI:%d HDMI:%d DP:%d eDP:%d LSPCON:%d USB-Type-C:%d TBT:%d DSC:%d\n",
 		    port_name(port), is_crt, is_dvi, is_hdmi, is_dp, is_edp,
-		    HAS_LSPCON(dev_priv) && child->lspcon,
+		    HAS_LSPCON(i915) && child->lspcon,
 		    info->supports_typec_usb, info->supports_tbt,
 		    devdata->dsc != NULL);
 
 	if (is_dvi) {
 		u8 ddc_pin;
 
-		ddc_pin = map_ddc_pin(dev_priv, child->ddc_pin);
-		if (intel_gmbus_is_valid_pin(dev_priv, ddc_pin)) {
+		ddc_pin = map_ddc_pin(i915, child->ddc_pin);
+		if (intel_gmbus_is_valid_pin(i915, ddc_pin)) {
 			info->alternate_ddc_pin = ddc_pin;
-			sanitize_ddc_pin(dev_priv, port);
+			sanitize_ddc_pin(i915, port);
 		} else {
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "Port %c has invalid DDC pin %d, "
 				    "sticking to defaults\n",
 				    port_name(port), ddc_pin);
@@ -1831,13 +1831,13 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 	if (is_dp) {
 		info->alternate_aux_channel = child->aux_channel;
 
-		sanitize_aux_ch(dev_priv, port);
+		sanitize_aux_ch(i915, port);
 	}
 
 	if (bdb_version >= 158) {
 		/* The VBT HDMI level shift values match the table we have. */
 		u8 hdmi_level_shift = child->hdmi_level_shifter_value;
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT HDMI level shift: %d\n",
 			    port_name(port),
 			    hdmi_level_shift);
@@ -1864,7 +1864,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 		}
 
 		if (max_tmds_clock)
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "Port %c VBT HDMI max TMDS clock: %d kHz\n",
 				    port_name(port), max_tmds_clock);
 		info->max_tmds_clock = max_tmds_clock;
@@ -1873,11 +1873,11 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 	/* Parse the I_boost config for SKL and above */
 	if (bdb_version >= 196 && child->iboost) {
 		info->dp_boost_level = translate_iboost(child->dp_iboost_level);
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT (e)DP boost level: %d\n",
 			    port_name(port), info->dp_boost_level);
 		info->hdmi_boost_level = translate_iboost(child->hdmi_iboost_level);
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT HDMI boost level: %d\n",
 			    port_name(port), info->hdmi_boost_level);
 	}
@@ -1899,7 +1899,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 			info->dp_max_link_rate = 162000;
 			break;
 		}
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT DP max link rate: %d\n",
 			    port_name(port), info->dp_max_link_rate);
 	}
@@ -1907,22 +1907,22 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
 	info->child = child;
 }
 
-static void parse_ddi_ports(struct drm_i915_private *dev_priv, u8 bdb_version)
+static void parse_ddi_ports(struct drm_i915_private *i915, u8 bdb_version)
 {
 	struct display_device_data *devdata;
 
-	if (!HAS_DDI(dev_priv) && !IS_CHERRYVIEW(dev_priv))
+	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
 		return;
 
 	if (bdb_version < 155)
 		return;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node)
-		parse_ddi_port(dev_priv, devdata, bdb_version);
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node)
+		parse_ddi_port(i915, devdata, bdb_version);
 }
 
 static void
-parse_general_definitions(struct drm_i915_private *dev_priv,
+parse_general_definitions(struct drm_i915_private *i915,
 			  const struct bdb_header *bdb)
 {
 	const struct bdb_general_definitions *defs;
@@ -1935,23 +1935,23 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
 
 	defs = find_section(bdb, BDB_GENERAL_DEFINITIONS);
 	if (!defs) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "No general definition block is found, no devices defined.\n");
 		return;
 	}
 
 	block_size = get_blocksize(defs);
 	if (block_size < sizeof(*defs)) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "General definitions block too small (%u)\n",
 			    block_size);
 		return;
 	}
 
 	bus_pin = defs->crt_ddc_gmbus_pin;
-	drm_dbg_kms(&dev_priv->drm, "crt_ddc_bus_pin: %d\n", bus_pin);
-	if (intel_gmbus_is_valid_pin(dev_priv, bus_pin))
-		dev_priv->vbt.crt_ddc_pin = bus_pin;
+	drm_dbg_kms(&i915->drm, "crt_ddc_bus_pin: %d\n", bus_pin);
+	if (intel_gmbus_is_valid_pin(i915, bus_pin))
+		i915->vbt.crt_ddc_pin = bus_pin;
 
 	if (bdb->version < 106) {
 		expected_size = 22;
@@ -1968,20 +1968,20 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
 	} else {
 		expected_size = sizeof(*child);
 		BUILD_BUG_ON(sizeof(*child) < 39);
-		drm_dbg(&dev_priv->drm,
+		drm_dbg(&i915->drm,
 			"Expected child device config size for VBT version %u not known; assuming %u\n",
 			bdb->version, expected_size);
 	}
 
 	/* Flag an error for unexpected size, but continue anyway. */
 	if (defs->child_dev_size != expected_size)
-		drm_err(&dev_priv->drm,
+		drm_err(&i915->drm,
 			"Unexpected child device config size %u (expected %u for VBT version %u)\n",
 			defs->child_dev_size, expected_size, bdb->version);
 
 	/* The legacy sized child device config is the minimum we need. */
 	if (defs->child_dev_size < LEGACY_CHILD_DEVICE_CONFIG_SIZE) {
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Child device config size %u is too small.\n",
 			    defs->child_dev_size);
 		return;
@@ -1995,7 +1995,7 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
 		if (!child->device_type)
 			continue;
 
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "Found VBT child device with type 0x%x\n",
 			    child->device_type);
 
@@ -2011,64 +2011,64 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
 		memcpy(&devdata->child, child,
 		       min_t(size_t, defs->child_dev_size, sizeof(*child)));
 
-		list_add_tail(&devdata->node, &dev_priv->vbt.display_devices);
+		list_add_tail(&devdata->node, &i915->vbt.display_devices);
 	}
 
-	if (list_empty(&dev_priv->vbt.display_devices))
-		drm_dbg_kms(&dev_priv->drm,
+	if (list_empty(&i915->vbt.display_devices))
+		drm_dbg_kms(&i915->drm,
 			    "no child dev is parsed from VBT\n");
 }
 
 /* Common defaults which may be overridden by VBT. */
 static void
-init_vbt_defaults(struct drm_i915_private *dev_priv)
+init_vbt_defaults(struct drm_i915_private *i915)
 {
-	dev_priv->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC;
+	i915->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC;
 
 	/* Default to having backlight */
-	dev_priv->vbt.backlight.present = true;
+	i915->vbt.backlight.present = true;
 
 	/* LFP panel data */
-	dev_priv->vbt.lvds_dither = 1;
+	i915->vbt.lvds_dither = 1;
 
 	/* SDVO panel data */
-	dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
+	i915->vbt.sdvo_lvds_vbt_mode = NULL;
 
 	/* general features */
-	dev_priv->vbt.int_tv_support = 1;
-	dev_priv->vbt.int_crt_support = 1;
+	i915->vbt.int_tv_support = 1;
+	i915->vbt.int_crt_support = 1;
 
 	/* driver features */
-	dev_priv->vbt.int_lvds_support = 1;
+	i915->vbt.int_lvds_support = 1;
 
 	/* Default to using SSC */
-	dev_priv->vbt.lvds_use_ssc = 1;
+	i915->vbt.lvds_use_ssc = 1;
 	/*
 	 * Core/SandyBridge/IvyBridge use alternative (120MHz) reference
 	 * clock for LVDS.
 	 */
-	dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev_priv,
-			!HAS_PCH_SPLIT(dev_priv));
-	drm_dbg_kms(&dev_priv->drm, "Set default to SSC at %d kHz\n",
-		    dev_priv->vbt.lvds_ssc_freq);
+	i915->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(i915,
+			!HAS_PCH_SPLIT(i915));
+	drm_dbg_kms(&i915->drm, "Set default to SSC at %d kHz\n",
+		    i915->vbt.lvds_ssc_freq);
 }
 
 /* Defaults to initialize only if there is no VBT. */
 static void
-init_vbt_missing_defaults(struct drm_i915_private *dev_priv)
+init_vbt_missing_defaults(struct drm_i915_private *i915)
 {
 	enum port port;
 
 	for_each_port(port) {
 		struct ddi_vbt_port_info *info =
-			&dev_priv->vbt.ddi_port_info[port];
-		enum phy phy = intel_port_to_phy(dev_priv, port);
+			&i915->vbt.ddi_port_info[port];
+		enum phy phy = intel_port_to_phy(i915, port);
 
 		/*
 		 * VBT has the TypeC mode (native,TBT/USB) and we don't want
 		 * to detect it.
 		 */
-		if (intel_phy_is_tc(dev_priv, phy))
+		if (intel_phy_is_tc(i915, phy))
 			continue;
 
 		info->supports_dvi = (port != PORT_A && port != PORT_E);
@@ -2134,9 +2134,9 @@ bool intel_bios_is_valid_vbt(const void *buf, size_t size)
 	return vbt;
 }
 
-static struct vbt_header *oprom_get_vbt(struct drm_i915_private *dev_priv)
+static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915)
 {
-	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
+	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
 	void __iomem *p = NULL, *oprom;
 	struct vbt_header *vbt;
 	u16 vbt_size;
@@ -2160,13 +2160,13 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *dev_priv)
 		goto err_unmap_oprom;
 
 	if (sizeof(struct vbt_header) > size) {
-		drm_dbg(&dev_priv->drm, "VBT header incomplete\n");
+		drm_dbg(&i915->drm, "VBT header incomplete\n");
 		goto err_unmap_oprom;
 	}
 
 	vbt_size = ioread16(p + offsetof(struct vbt_header, vbt_size));
 	if (vbt_size > size) {
-		drm_dbg(&dev_priv->drm,
+		drm_dbg(&i915->drm,
 			"VBT incomplete (vbt_size overflows)\n");
 		goto err_unmap_oprom;
 	}
@@ -2195,71 +2195,71 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *dev_priv)
 
 /**
  * intel_bios_init - find VBT and initialize settings from the BIOS
- * @dev_priv: i915 device instance
+ * @i915: i915 device instance
  *
  * Parse and initialize settings from the Video BIOS Tables (VBT). If the VBT
  * was not found in ACPI OpRegion, try to find it in PCI ROM first. Also
  * initialize some defaults if the VBT is not present at all.
  */
-void intel_bios_init(struct drm_i915_private *dev_priv)
+void intel_bios_init(struct drm_i915_private *i915)
 {
-	const struct vbt_header *vbt = dev_priv->opregion.vbt;
+	const struct vbt_header *vbt = i915->opregion.vbt;
 	struct vbt_header *oprom_vbt = NULL;
 	const struct bdb_header *bdb;
 
-	INIT_LIST_HEAD(&dev_priv->vbt.display_devices);
+	INIT_LIST_HEAD(&i915->vbt.display_devices);
 
-	if (!HAS_DISPLAY(dev_priv)) {
-		drm_dbg_kms(&dev_priv->drm,
+	if (!HAS_DISPLAY(i915)) {
+		drm_dbg_kms(&i915->drm,
 			    "Skipping VBT init due to disabled display.\n");
 		return;
 	}
 
-	init_vbt_defaults(dev_priv);
+	init_vbt_defaults(i915);
 
 	/* If the OpRegion does not have VBT, look in PCI ROM. */
 	if (!vbt) {
-		oprom_vbt = oprom_get_vbt(dev_priv);
+		oprom_vbt = oprom_get_vbt(i915);
 		if (!oprom_vbt)
 			goto out;
 
 		vbt = oprom_vbt;
 
-		drm_dbg_kms(&dev_priv->drm, "Found valid VBT in PCI ROM\n");
+		drm_dbg_kms(&i915->drm, "Found valid VBT in PCI ROM\n");
 	}
 
 	bdb = get_bdb_header(vbt);
 
-	drm_dbg_kms(&dev_priv->drm,
+	drm_dbg_kms(&i915->drm,
 		    "VBT signature \"%.*s\", BDB version %d\n",
 		    (int)sizeof(vbt->signature), vbt->signature, bdb->version);
 
 	/* Grab useful general definitions */
-	parse_general_features(dev_priv, bdb);
-	parse_general_definitions(dev_priv, bdb);
-	parse_panel_options(dev_priv, bdb);
-	parse_panel_dtd(dev_priv, bdb);
-	parse_lfp_backlight(dev_priv, bdb);
-	parse_sdvo_panel_data(dev_priv, bdb);
-	parse_driver_features(dev_priv, bdb);
-	parse_power_conservation_features(dev_priv, bdb);
-	parse_edp(dev_priv, bdb);
-	parse_psr(dev_priv, bdb);
-	parse_mipi_config(dev_priv, bdb);
-	parse_mipi_sequence(dev_priv, bdb);
+	parse_general_features(i915, bdb);
+	parse_general_definitions(i915, bdb);
+	parse_panel_options(i915, bdb);
+	parse_panel_dtd(i915, bdb);
+	parse_lfp_backlight(i915, bdb);
+	parse_sdvo_panel_data(i915, bdb);
+	parse_driver_features(i915, bdb);
+	parse_power_conservation_features(i915, bdb);
+	parse_edp(i915, bdb);
+	parse_psr(i915, bdb);
+	parse_mipi_config(i915, bdb);
+	parse_mipi_sequence(i915, bdb);
 
 	/* Depends on child device list */
-	parse_compression_parameters(dev_priv, bdb);
+	parse_compression_parameters(i915, bdb);
 
 	/* Further processing on pre-parsed data */
-	parse_sdvo_device_mapping(dev_priv, bdb->version);
-	parse_ddi_ports(dev_priv, bdb->version);
+	parse_sdvo_device_mapping(i915, bdb->version);
+	parse_ddi_ports(i915, bdb->version);
 
 out:
 	if (!vbt) {
-		drm_info(&dev_priv->drm,
+		drm_info(&i915->drm,
 			 "Failed to find VBIOS tables (VBT)\n");
-		init_vbt_missing_defaults(dev_priv);
+		init_vbt_missing_defaults(i915);
 	}
 
 	kfree(oprom_vbt);
@@ -2267,51 +2267,51 @@ void intel_bios_init(struct drm_i915_private *dev_priv)
 
 /**
  * intel_bios_driver_remove - Free any resources allocated by intel_bios_init()
- * @dev_priv: i915 device instance
+ * @i915: i915 device instance
  */
-void intel_bios_driver_remove(struct drm_i915_private *dev_priv)
+void intel_bios_driver_remove(struct drm_i915_private *i915)
 {
 	struct display_device_data *devdata, *n;
 
-	list_for_each_entry_safe(devdata, n, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
 		list_del(&devdata->node);
 		kfree(devdata->dsc);
 		kfree(devdata);
 	}
 
-	kfree(dev_priv->vbt.sdvo_lvds_vbt_mode);
-	dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
-	kfree(dev_priv->vbt.lfp_lvds_vbt_mode);
-	dev_priv->vbt.lfp_lvds_vbt_mode = NULL;
-	kfree(dev_priv->vbt.dsi.data);
-	dev_priv->vbt.dsi.data = NULL;
-	kfree(dev_priv->vbt.dsi.pps);
-	dev_priv->vbt.dsi.pps = NULL;
-	kfree(dev_priv->vbt.dsi.config);
-	dev_priv->vbt.dsi.config = NULL;
-	kfree(dev_priv->vbt.dsi.deassert_seq);
-	dev_priv->vbt.dsi.deassert_seq = NULL;
+	kfree(i915->vbt.sdvo_lvds_vbt_mode);
+	i915->vbt.sdvo_lvds_vbt_mode = NULL;
+	kfree(i915->vbt.lfp_lvds_vbt_mode);
+	i915->vbt.lfp_lvds_vbt_mode = NULL;
+	kfree(i915->vbt.dsi.data);
+	i915->vbt.dsi.data = NULL;
+	kfree(i915->vbt.dsi.pps);
+	i915->vbt.dsi.pps = NULL;
+	kfree(i915->vbt.dsi.config);
+	i915->vbt.dsi.config = NULL;
+	kfree(i915->vbt.dsi.deassert_seq);
+	i915->vbt.dsi.deassert_seq = NULL;
 }
 
 /**
  * intel_bios_is_tv_present - is integrated TV present in VBT
- * @dev_priv:	i915 device instance
+ * @i915: i915 device instance
  *
  * Return true if TV is present. If no child devices were parsed from VBT,
  * assume TV is present.
  */
-bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv)
+bool intel_bios_is_tv_present(struct drm_i915_private *i915)
 {
 	const struct display_device_data *devdata;
 	const struct child_device_config *child;
 
-	if (!dev_priv->vbt.int_tv_support)
+	if (!i915->vbt.int_tv_support)
 		return false;
 
-	if (list_empty(&dev_priv->vbt.display_devices))
+	if (list_empty(&i915->vbt.display_devices))
 		return true;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		child = &devdata->child;
 
 		/*
@@ -2337,21 +2337,21 @@ bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv)
 
 /**
  * intel_bios_is_lvds_present - is LVDS present in VBT
- * @dev_priv:	i915 device instance
+ * @i915:	i915 device instance
  * @i2c_pin:	i2c pin for LVDS if present
  *
  * Return true if LVDS is present. If no child devices were parsed from VBT,
  * assume LVDS is present.
  */
-bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
+bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
 {
 	const struct display_device_data *devdata;
 	const struct child_device_config *child;
 
-	if (list_empty(&dev_priv->vbt.display_devices))
+	if (list_empty(&i915->vbt.display_devices))
 		return true;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		child = &devdata->child;
 
 		/* If the device type is not LFP, continue.
@@ -2362,7 +2362,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
 		    child->device_type != DEVICE_TYPE_LFP)
 			continue;
 
-		if (intel_gmbus_is_valid_pin(dev_priv, child->i2c_pin))
+		if (intel_gmbus_is_valid_pin(i915, child->i2c_pin))
 			*i2c_pin = child->i2c_pin;
 
 		/* However, we cannot trust the BIOS writers to populate
@@ -2378,7 +2378,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
 		 * additional data.  Trust that if the VBT was written into
 		 * the OpRegion then they have validated the LVDS's existence.
 		 */
-		if (dev_priv->opregion.vbt)
+		if (i915->opregion.vbt)
 			return true;
 	}
 
@@ -2387,12 +2387,12 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
 
 /**
  * intel_bios_is_port_present - is the specified digital port present
- * @dev_priv:	i915 device instance
+ * @i915:	i915 device instance
  * @port:	port to check
  *
  * Return true if the device in %port is present.
  */
-bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port port)
+bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
 {
 	const struct display_device_data *devdata;
 	const struct child_device_config *child;
@@ -2406,19 +2406,19 @@ bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port por
 		[PORT_F] = { DVO_PORT_DPF, DVO_PORT_HDMIF, },
 	};
 
-	if (HAS_DDI(dev_priv)) {
+	if (HAS_DDI(i915)) {
 		const struct ddi_vbt_port_info *port_info =
-			&dev_priv->vbt.ddi_port_info[port];
+			&i915->vbt.ddi_port_info[port];
 
 		return port_info->child;
 	}
 
 	/* FIXME maybe deal with port A as well? */
-	if (drm_WARN_ON(&dev_priv->drm,
+	if (drm_WARN_ON(&i915->drm,
 			port == PORT_A) || port >= ARRAY_SIZE(port_mapping))
 		return false;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		child = &devdata->child;
 
 		if ((child->dvo_port == port_mapping[port].dp ||
@@ -2433,12 +2433,12 @@ bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port por
 
 /**
  * intel_bios_is_port_edp - is the device in given port eDP
- * @dev_priv:	i915 device instance
+ * @i915:	i915 device instance
  * @port:	port to check
  *
  * Return true if the device in %port is eDP.
  */
-bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
+bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
 {
 	const struct display_device_data *devdata;
 	const struct child_device_config *child;
@@ -2450,10 +2450,10 @@ bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
 		[PORT_F] = DVO_PORT_DPF,
 	};
 
-	if (HAS_DDI(dev_priv))
-		return dev_priv->vbt.ddi_port_info[port].supports_edp;
+	if (HAS_DDI(i915))
+		return i915->vbt.ddi_port_info[port].supports_edp;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		child = &devdata->child;
 
 		if (child->dvo_port == port_mapping[port] &&
@@ -2500,12 +2500,12 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
 	return false;
 }
 
-bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *dev_priv,
+bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
 				     enum port port)
 {
 	const struct display_device_data *devdata;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		if (child_dev_is_dp_dual_mode(&devdata->child, port))
 			return true;
 	}
@@ -2515,19 +2515,19 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *dev_priv,
 
 /**
  * intel_bios_is_dsi_present - is DSI present in VBT
- * @dev_priv:	i915 device instance
+ * @i915:	i915 device instance
  * @port:	port for DSI if present
  *
  * Return true if DSI is present, and return the port in %port.
  */
-bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv,
+bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
 			       enum port *port)
 {
 	const struct display_device_data *devdata;
 	const struct child_device_config *child;
 	u8 dvo_port;
 
-	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
+	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		child = &devdata->child;
 
 		if (!(child->device_type & DEVICE_TYPE_MIPI_OUTPUT))
@@ -2536,15 +2536,15 @@ bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv,
 		dvo_port = child->dvo_port;
 
 		if (dvo_port == DVO_PORT_MIPIA ||
-		    (dvo_port == DVO_PORT_MIPIB && INTEL_GEN(dev_priv) >= 11) ||
-		    (dvo_port == DVO_PORT_MIPIC && INTEL_GEN(dev_priv) < 11)) {
+		    (dvo_port == DVO_PORT_MIPIB && INTEL_GEN(i915) >= 11) ||
+		    (dvo_port == DVO_PORT_MIPIC && INTEL_GEN(i915) < 11)) {
 			if (port)
 				*port = dvo_port - DVO_PORT_MIPIA;
 			return true;
 		} else if (dvo_port == DVO_PORT_MIPIB ||
 			   dvo_port == DVO_PORT_MIPIC ||
 			   dvo_port == DVO_PORT_MIPID) {
-			drm_dbg_kms(&dev_priv->drm,
+			drm_dbg_kms(&i915->drm,
 				    "VBT has unsupported DSI port %c\n",
 				    port_name(dvo_port - DVO_PORT_MIPIA));
 		}
@@ -2700,17 +2700,17 @@ intel_bios_is_lane_reversal_needed(const struct drm_i915_private *i915,
 	return child && child->lane_reversal;
 }
 
-enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv,
+enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *i915,
 				   enum port port)
 {
 	const struct ddi_vbt_port_info *info =
-		&dev_priv->vbt.ddi_port_info[port];
+		&i915->vbt.ddi_port_info[port];
 	enum aux_ch aux_ch;
 
 	if (!info->alternate_aux_channel) {
 		aux_ch = (enum aux_ch)port;
 
-		drm_dbg_kms(&dev_priv->drm,
+		drm_dbg_kms(&i915->drm,
 			    "using AUX %c for port %c (platform default)\n",
 			    aux_ch_name(aux_ch), port_name(port));
 		return aux_ch;
@@ -2728,29 +2728,29 @@ enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv,
 		aux_ch = AUX_CH_A;
 		break;
 	case DP_AUX_B:
-		if (IS_ALDERLAKE_S(dev_priv))
+		if (IS_ALDERLAKE_S(i915))
 			aux_ch = AUX_CH_USBC1;
 		else
 			aux_ch = AUX_CH_B;
 		break;
 	case DP_AUX_C:
-		if (IS_ALDERLAKE_S(dev_priv))
+		if (IS_ALDERLAKE_S(i915))
 			aux_ch = AUX_CH_USBC2;
-		else if (IS_DG1(dev_priv) || IS_ROCKETLAKE(dev_priv))
+		else if (IS_DG1(i915) || IS_ROCKETLAKE(i915))
 			aux_ch = AUX_CH_USBC1;
 		else
 			aux_ch = AUX_CH_C;
 		break;
 	case DP_AUX_D:
-		if (IS_ALDERLAKE_S(dev_priv))
+		if (IS_ALDERLAKE_S(i915))
 			aux_ch = AUX_CH_USBC3;
-		else if (IS_DG1(dev_priv) || IS_ROCKETLAKE(dev_priv))
+		else if (IS_DG1(i915) || IS_ROCKETLAKE(i915))
 			aux_ch = AUX_CH_USBC2;
 		else
 			aux_ch = AUX_CH_D;
 		break;
 	case DP_AUX_E:
-		if (IS_ALDERLAKE_S(dev_priv))
+		if (IS_ALDERLAKE_S(i915))
 			aux_ch = AUX_CH_USBC4;
 		else
 			aux_ch = AUX_CH_E;
@@ -2773,7 +2773,7 @@ enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv,
 		break;
 	}
 
-	drm_dbg_kms(&dev_priv->drm, "using AUX %c for port %c (VBT)\n",
+	drm_dbg_kms(&i915->drm, "using AUX %c for port %c (VBT)\n",
 		    aux_ch_name(aux_ch), port_name(port));
 
 	return aux_ch;
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 02/12] drm/i915/bios: store bdb version in i915
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915 Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-22 18:14   ` Ville Syrjälä
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 03/12] drm/i915/bios: limit default outputs by platform on missing VBT Jani Nikula
                   ` (13 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

We'll be needing the version in more places in the future, so avoid the
need to pass it around. No functional changes.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 28 +++++++++++------------
 drivers/gpu/drm/i915/i915_drv.h           |  3 +++
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 802c228b2940..a8712fe8bf3e 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -597,7 +597,7 @@ child_device_ptr(const struct bdb_general_definitions *defs, int i)
 }
 
 static void
-parse_sdvo_device_mapping(struct drm_i915_private *i915, u8 bdb_version)
+parse_sdvo_device_mapping(struct drm_i915_private *i915)
 {
 	struct sdvo_device_mapping *mapping;
 	const struct display_device_data *devdata;
@@ -1760,8 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
 }
 
 static void parse_ddi_port(struct drm_i915_private *i915,
-			   struct display_device_data *devdata,
-			   u8 bdb_version)
+			   struct display_device_data *devdata)
 {
 	const struct child_device_config *child = &devdata->child;
 	struct ddi_vbt_port_info *info;
@@ -1800,10 +1799,10 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	info->supports_dp = is_dp;
 	info->supports_edp = is_edp;
 
-	if (bdb_version >= 195)
+	if (i915->vbt.version >= 195)
 		info->supports_typec_usb = child->dp_usb_type_c;
 
-	if (bdb_version >= 209)
+	if (i915->vbt.version >= 209)
 		info->supports_tbt = child->tbt;
 
 	drm_dbg_kms(&i915->drm,
@@ -1834,7 +1833,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 		sanitize_aux_ch(i915, port);
 	}
 
-	if (bdb_version >= 158) {
+	if (i915->vbt.version >= 158) {
 		/* The VBT HDMI level shift values match the table we have. */
 		u8 hdmi_level_shift = child->hdmi_level_shifter_value;
 		drm_dbg_kms(&i915->drm,
@@ -1845,7 +1844,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 		info->hdmi_level_shift_set = true;
 	}
 
-	if (bdb_version >= 204) {
+	if (i915->vbt.version >= 204) {
 		int max_tmds_clock;
 
 		switch (child->hdmi_max_data_rate) {
@@ -1871,7 +1870,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	}
 
 	/* Parse the I_boost config for SKL and above */
-	if (bdb_version >= 196 && child->iboost) {
+	if (i915->vbt.version >= 196 && child->iboost) {
 		info->dp_boost_level = translate_iboost(child->dp_iboost_level);
 		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT (e)DP boost level: %d\n",
@@ -1883,7 +1882,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	}
 
 	/* DP max link rate for CNL+ */
-	if (bdb_version >= 216) {
+	if (i915->vbt.version >= 216) {
 		switch (child->dp_max_link_rate) {
 		default:
 		case VBT_DP_MAX_LINK_RATE_HBR3:
@@ -1907,18 +1906,18 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	info->child = child;
 }
 
-static void parse_ddi_ports(struct drm_i915_private *i915, u8 bdb_version)
+static void parse_ddi_ports(struct drm_i915_private *i915)
 {
 	struct display_device_data *devdata;
 
 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
 		return;
 
-	if (bdb_version < 155)
+	if (i915->vbt.version < 155)
 		return;
 
 	list_for_each_entry(devdata, &i915->vbt.display_devices, node)
-		parse_ddi_port(i915, devdata, bdb_version);
+		parse_ddi_port(i915, devdata);
 }
 
 static void
@@ -2229,6 +2228,7 @@ void intel_bios_init(struct drm_i915_private *i915)
 	}
 
 	bdb = get_bdb_header(vbt);
+	i915->vbt.version = bdb->version;
 
 	drm_dbg_kms(&i915->drm,
 		    "VBT signature \"%.*s\", BDB version %d\n",
@@ -2252,8 +2252,8 @@ void intel_bios_init(struct drm_i915_private *i915)
 	parse_compression_parameters(i915, bdb);
 
 	/* Further processing on pre-parsed data */
-	parse_sdvo_device_mapping(i915, bdb->version);
-	parse_ddi_ports(i915, bdb->version);
+	parse_sdvo_device_mapping(i915);
+	parse_ddi_ports(i915);
 
 out:
 	if (!vbt) {
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index f8413b3b9da8..62be1465f52b 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -615,6 +615,9 @@ enum psr_lines_to_wait {
 };
 
 struct intel_vbt_data {
+	/* bdb version */
+	u16 version;
+
 	struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */
 	struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 03/12] drm/i915/bios: limit default outputs by platform on missing VBT
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915 Jani Nikula
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 02/12] drm/i915/bios: store bdb version in i915 Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-22 18:16   ` Ville Syrjälä
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F Jani Nikula
                   ` (12 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Pre-DDI and non-CHV aren't using the information created here anyway, so
don't bother setting the defaults for them. This should be a
non-functional change, but is separated here to catch any regressions in
a single commit.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index a8712fe8bf3e..e9cb15aa2f5a 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2058,6 +2058,9 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
 {
 	enum port port;
 
+	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
+		return;
+
 	for_each_port(port) {
 		struct ddi_vbt_port_info *info =
 			&i915->vbt.ddi_port_info[port];
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (2 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 03/12] drm/i915/bios: limit default outputs by platform on missing VBT Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-17 17:23   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 05/12] drm/i915/bios: create fake child devices on missing VBT Jani Nikula
                   ` (11 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

With the defaults limited to non-TypeC ports in commit 828ccb31cf41
("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
a no-op, but clarifies the code and prepares for subsequent changes.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index e9cb15aa2f5a..b9d99324d66d 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2057,11 +2057,12 @@ static void
 init_vbt_missing_defaults(struct drm_i915_private *i915)
 {
 	enum port port;
+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;
 
 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
 		return;
 
-	for_each_port(port) {
+	for_each_port_masked(port, ports) {
 		struct ddi_vbt_port_info *info =
 			&i915->vbt.ddi_port_info[port];
 		enum phy phy = intel_port_to_phy(i915, port);
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 05/12] drm/i915/bios: create fake child devices on missing VBT
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (3 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-03-09  0:51   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data Jani Nikula
                   ` (10 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Instead of initialing data directly in ddi_port_info array, create fake
child devices for default outputs when the VBT is missing. This makes
further unification of output handling easier.

This will make intel_bios_is_port_present() return true for the fake
child devices. This may cause subtle changes in a handful of places.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 47 ++++++++++++++++++-----
 1 file changed, 37 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index b9d99324d66d..59d315b395c2 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2063,8 +2063,8 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
 		return;
 
 	for_each_port_masked(port, ports) {
-		struct ddi_vbt_port_info *info =
-			&i915->vbt.ddi_port_info[port];
+		struct display_device_data *devdata;
+		struct child_device_config *child;
 		enum phy phy = intel_port_to_phy(i915, port);
 
 		/*
@@ -2074,11 +2074,38 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
 		if (intel_phy_is_tc(i915, phy))
 			continue;
 
-		info->supports_dvi = (port != PORT_A && port != PORT_E);
-		info->supports_hdmi = info->supports_dvi;
-		info->supports_dp = (port != PORT_E);
-		info->supports_edp = (port == PORT_A);
+		/* Create fake child device config */
+		devdata = kzalloc(sizeof(*devdata), GFP_KERNEL);
+		if (!devdata)
+			break;
+
+		child = &devdata->child;
+
+		if (port == PORT_F)
+			child->dvo_port = DVO_PORT_HDMIF;
+		else if (port == PORT_E)
+			child->dvo_port = DVO_PORT_HDMIE;
+		else
+			child->dvo_port = DVO_PORT_HDMIA + port;
+
+		if (port != PORT_A && port != PORT_E)
+			child->device_type |= DEVICE_TYPE_TMDS_DVI_SIGNALING;
+
+		if (port != PORT_E)
+			child->device_type |= DEVICE_TYPE_DISPLAYPORT_OUTPUT;
+
+		if (port == PORT_A)
+			child->device_type |= DEVICE_TYPE_INTERNAL_CONNECTOR;
+
+		list_add_tail(&devdata->node, &i915->vbt.display_devices);
+
+		drm_dbg_kms(&i915->drm,
+			    "Generating default VBT child device with type 0x04%x on port %c\n",
+			    child->device_type, port_name(port));
 	}
+
+	/* Bypass some minimum baseline VBT version checks */
+	i915->vbt.version = 155;
 }
 
 static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
@@ -2255,10 +2282,6 @@ void intel_bios_init(struct drm_i915_private *i915)
 	/* Depends on child device list */
 	parse_compression_parameters(i915, bdb);
 
-	/* Further processing on pre-parsed data */
-	parse_sdvo_device_mapping(i915);
-	parse_ddi_ports(i915);
-
 out:
 	if (!vbt) {
 		drm_info(&i915->drm,
@@ -2266,6 +2289,10 @@ void intel_bios_init(struct drm_i915_private *i915)
 		init_vbt_missing_defaults(i915);
 	}
 
+	/* Further processing on pre-parsed or generated child device data */
+	parse_sdvo_device_mapping(i915);
+	parse_ddi_ports(i915);
+
 	kfree(oprom_vbt);
 }
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (4 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 05/12] drm/i915/bios: create fake child devices on missing VBT Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-17 17:44   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 07/12] drm/i915/bios: add i915 backpointer " Jani Nikula
                   ` (9 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Make the naming suitable for exposing to the rest of the driver as an
opaque type. No functional changes.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 30 +++++++++++------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 59d315b395c2..0e882da165be 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -59,7 +59,7 @@
  */
 
 /* Wrapper for VBT child device config */
-struct display_device_data {
+struct intel_bios_encoder_data {
 	struct child_device_config child;
 	struct dsc_compression_parameters_entry *dsc;
 	struct list_head node;
@@ -600,7 +600,7 @@ static void
 parse_sdvo_device_mapping(struct drm_i915_private *i915)
 {
 	struct sdvo_device_mapping *mapping;
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 	int count = 0;
 
@@ -1439,7 +1439,7 @@ parse_compression_parameters(struct drm_i915_private *i915,
 			     const struct bdb_header *bdb)
 {
 	const struct bdb_compression_parameters *params;
-	struct display_device_data *devdata;
+	struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 	u16 block_size;
 	int index;
@@ -1760,7 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
 }
 
 static void parse_ddi_port(struct drm_i915_private *i915,
-			   struct display_device_data *devdata)
+			   struct intel_bios_encoder_data *devdata)
 {
 	const struct child_device_config *child = &devdata->child;
 	struct ddi_vbt_port_info *info;
@@ -1908,7 +1908,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 
 static void parse_ddi_ports(struct drm_i915_private *i915)
 {
-	struct display_device_data *devdata;
+	struct intel_bios_encoder_data *devdata;
 
 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
 		return;
@@ -1925,7 +1925,7 @@ parse_general_definitions(struct drm_i915_private *i915,
 			  const struct bdb_header *bdb)
 {
 	const struct bdb_general_definitions *defs;
-	struct display_device_data *devdata;
+	struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 	int i, child_device_num;
 	u8 expected_size;
@@ -2063,7 +2063,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
 		return;
 
 	for_each_port_masked(port, ports) {
-		struct display_device_data *devdata;
+		struct intel_bios_encoder_data *devdata;
 		struct child_device_config *child;
 		enum phy phy = intel_port_to_phy(i915, port);
 
@@ -2302,7 +2302,7 @@ void intel_bios_init(struct drm_i915_private *i915)
  */
 void intel_bios_driver_remove(struct drm_i915_private *i915)
 {
-	struct display_device_data *devdata, *n;
+	struct intel_bios_encoder_data *devdata, *n;
 
 	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
 		list_del(&devdata->node);
@@ -2333,7 +2333,7 @@ void intel_bios_driver_remove(struct drm_i915_private *i915)
  */
 bool intel_bios_is_tv_present(struct drm_i915_private *i915)
 {
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 
 	if (!i915->vbt.int_tv_support)
@@ -2376,7 +2376,7 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915)
  */
 bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
 {
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 
 	if (list_empty(&i915->vbt.display_devices))
@@ -2425,7 +2425,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
  */
 bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
 {
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 	static const struct {
 		u16 dp, hdmi;
@@ -2471,7 +2471,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
  */
 bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
 {
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 	static const short port_mapping[] = {
 		[PORT_B] = DVO_PORT_DPB,
@@ -2534,7 +2534,7 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
 bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
 				     enum port port)
 {
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 
 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
 		if (child_dev_is_dp_dual_mode(&devdata->child, port))
@@ -2554,7 +2554,7 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
 bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
 			       enum port *port)
 {
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 	u8 dvo_port;
 
@@ -2654,7 +2654,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
 			       int dsc_max_bpc)
 {
 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
-	const struct display_device_data *devdata;
+	const struct intel_bios_encoder_data *devdata;
 	const struct child_device_config *child;
 
 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 07/12] drm/i915/bios: add i915 backpointer to intel_bios_encoder_data
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (5 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support Jani Nikula
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

We'll be needing it in the future.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 0e882da165be..193772f42582 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -60,6 +60,8 @@
 
 /* Wrapper for VBT child device config */
 struct intel_bios_encoder_data {
+	struct drm_i915_private *i915;
+
 	struct child_device_config child;
 	struct dsc_compression_parameters_entry *dsc;
 	struct list_head node;
@@ -2002,6 +2004,8 @@ parse_general_definitions(struct drm_i915_private *i915,
 		if (!devdata)
 			break;
 
+		devdata->i915 = i915;
+
 		/*
 		 * Copy as much as we know (sizeof) and is available
 		 * (child_dev_size) of the child device config. Accessing the
@@ -2079,6 +2083,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
 		if (!devdata)
 			break;
 
+		devdata->i915 = i915;
 		child = &devdata->child;
 
 		if (port == PORT_F)
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (6 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 07/12] drm/i915/bios: add i915 backpointer " Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-02-17 17:46   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 09/12] drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[] Jani Nikula
                   ` (7 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

These will be exposed to the rest of the driver and replace other
functions. Everything will operate on the child devices.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 66 ++++++++++++++++++-----
 1 file changed, 54 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 193772f42582..739ef5d91907 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -64,6 +64,7 @@ struct intel_bios_encoder_data {
 
 	struct child_device_config child;
 	struct dsc_compression_parameters_entry *dsc;
+
 	struct list_head node;
 };
 
@@ -1761,6 +1762,53 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
 					  dvo_port);
 }
 
+static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
+				 enum port port)
+{
+	struct drm_i915_private *i915 = devdata->i915;
+	bool is_hdmi;
+
+	if (port != PORT_A || INTEL_GEN(i915) >= 12)
+		return;
+
+	if (!(devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING))
+		return;
+
+	is_hdmi = !(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT);
+
+	drm_dbg_kms(&i915->drm, "VBT claims port A supports DVI%s, ignoring\n",
+		    is_hdmi ? "/HDMI" : "");
+
+	devdata->child.device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
+	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
+}
+
+static bool
+intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
+{
+	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
+}
+
+static bool
+intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
+{
+	return intel_bios_encoder_supports_dvi(devdata) &&
+		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
+}
+
+static bool
+intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
+{
+	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
+}
+
+static bool
+intel_bios_encoder_supports_edp(const struct intel_bios_encoder_data *devdata)
+{
+	return intel_bios_encoder_supports_dp(devdata) &&
+		devdata->child.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR;
+}
+
 static void parse_ddi_port(struct drm_i915_private *i915,
 			   struct intel_bios_encoder_data *devdata)
 {
@@ -1782,19 +1830,13 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 		return;
 	}
 
-	is_dvi = child->device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
-	is_dp = child->device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
-	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
-	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
-	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
+	sanitize_device_type(devdata, port);
 
-	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
-		drm_dbg_kms(&i915->drm,
-			    "VBT claims port A supports DVI%s, ignoring\n",
-			    is_hdmi ? "/HDMI" : "");
-		is_dvi = false;
-		is_hdmi = false;
-	}
+	is_dvi = intel_bios_encoder_supports_dvi(devdata);
+	is_dp = intel_bios_encoder_supports_dp(devdata);
+	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
+	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
+	is_edp = intel_bios_encoder_supports_edp(devdata);
 
 	info->supports_dvi = is_dvi;
 	info->supports_hdmi = is_hdmi;
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 09/12] drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (7 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-03-15 17:36   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 10/12] drm/i915/bios: start using the intel_bios_encoder_data directly Jani Nikula
                   ` (6 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

We'll be needing the intel_bios_encoder_data pointer going forward, and
it's just easier to store the higher level pointer in the
ddi_vbt_port_info[] array.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 28 +++++++++++------------
 drivers/gpu/drm/i915/display/intel_bios.h |  1 +
 drivers/gpu/drm/i915/i915_drv.h           |  2 +-
 3 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 739ef5d91907..47e9c609f82a 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1511,7 +1511,7 @@ static enum port get_port_by_ddc_pin(struct drm_i915_private *i915, u8 ddc_pin)
 	for_each_port(port) {
 		info = &i915->vbt.ddi_port_info[port];
 
-		if (info->child && ddc_pin == info->alternate_ddc_pin)
+		if (info->devdata && ddc_pin == info->alternate_ddc_pin)
 			return port;
 	}
 
@@ -1563,7 +1563,7 @@ static enum port get_port_by_aux_ch(struct drm_i915_private *i915, u8 aux_ch)
 	for_each_port(port) {
 		info = &i915->vbt.ddi_port_info[port];
 
-		if (info->child && aux_ch == info->alternate_aux_channel)
+		if (info->devdata && aux_ch == info->alternate_aux_channel)
 			return port;
 	}
 
@@ -1823,7 +1823,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 
 	info = &i915->vbt.ddi_port_info[port];
 
-	if (info->child) {
+	if (info->devdata) {
 		drm_dbg_kms(&i915->drm,
 			    "More than one child device for port %c in VBT, using the first.\n",
 			    port_name(port));
@@ -1947,7 +1947,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 			    port_name(port), info->dp_max_link_rate);
 	}
 
-	info->child = child;
+	info->devdata = devdata;
 }
 
 static void parse_ddi_ports(struct drm_i915_private *i915)
@@ -2488,7 +2488,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
 		const struct ddi_vbt_port_info *port_info =
 			&i915->vbt.ddi_port_info[port];
 
-		return port_info->child;
+		return port_info->devdata;
 	}
 
 	/* FIXME maybe deal with port A as well? */
@@ -2735,13 +2735,13 @@ bool
 intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915,
 				enum port port)
 {
-	const struct child_device_config *child =
-		i915->vbt.ddi_port_info[port].child;
+	const struct intel_bios_encoder_data *devdata =
+		i915->vbt.ddi_port_info[port].devdata;
 
 	if (drm_WARN_ON_ONCE(&i915->drm, !IS_GEN9_LP(i915)))
 		return false;
 
-	return child && child->hpd_invert;
+	return devdata && devdata->child.hpd_invert;
 }
 
 /**
@@ -2755,10 +2755,10 @@ bool
 intel_bios_is_lspcon_present(const struct drm_i915_private *i915,
 			     enum port port)
 {
-	const struct child_device_config *child =
-		i915->vbt.ddi_port_info[port].child;
+	const struct intel_bios_encoder_data *devdata =
+		i915->vbt.ddi_port_info[port].devdata;
 
-	return HAS_LSPCON(i915) && child && child->lspcon;
+	return HAS_LSPCON(i915) && devdata && devdata->child.lspcon;
 }
 
 /**
@@ -2772,10 +2772,10 @@ bool
 intel_bios_is_lane_reversal_needed(const struct drm_i915_private *i915,
 				   enum port port)
 {
-	const struct child_device_config *child =
-		i915->vbt.ddi_port_info[port].child;
+	const struct intel_bios_encoder_data *devdata =
+		i915->vbt.ddi_port_info[port].devdata;
 
-	return child && child->lane_reversal;
+	return devdata && devdata->child.lane_reversal;
 }
 
 enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *i915,
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index f25190ecfe97..6591cf7758f2 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -33,6 +33,7 @@
 #include <linux/types.h>
 
 struct drm_i915_private;
+struct intel_bios_encoder_data;
 struct intel_crtc_state;
 struct intel_encoder;
 enum port;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 62be1465f52b..e2c5ba61b370 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -584,7 +584,7 @@ i915_fence_timeout(const struct drm_i915_private *i915)
 
 struct ddi_vbt_port_info {
 	/* Non-NULL if port present. */
-	const struct child_device_config *child;
+	const struct intel_bios_encoder_data *devdata;
 
 	int max_tmds_clock;
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 10/12] drm/i915/bios: start using the intel_bios_encoder_data directly
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (8 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 09/12] drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[] Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-03-15 17:41   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 11/12] drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT Jani Nikula
                   ` (5 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Start using struct intel_bios_encoder_data directly. We'll start
sanitizing the child device data directly as well, instead of the cached
data in ddi_port_info[]. The one downside here is having to store a
non-const pointer back to intel_bios_encoder_data.

Eventually we'll be able to have a direct pointer from encoder to
intel_bios_encoder_data, removing the need to go through the
ddi_port_info[] array altogether. And we'll be able to remove the cached
data in ddi_port_info[].

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 37 +++++++++--------------
 drivers/gpu/drm/i915/display/intel_bios.h | 10 ++++--
 drivers/gpu/drm/i915/display/intel_ddi.c  | 15 +++++++--
 drivers/gpu/drm/i915/i915_drv.h           |  4 +--
 4 files changed, 35 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 47e9c609f82a..d26304ebc6b9 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1529,6 +1529,8 @@ static void sanitize_ddc_pin(struct drm_i915_private *i915,
 
 	p = get_port_by_ddc_pin(i915, info->alternate_ddc_pin);
 	if (p != PORT_NONE) {
+		struct child_device_config *child;
+
 		drm_dbg_kms(&i915->drm,
 			    "port %c trying to use the same DDC pin (0x%x) as port %c, "
 			    "disabling port %c DVI/HDMI support\n",
@@ -1548,9 +1550,11 @@ static void sanitize_ddc_pin(struct drm_i915_private *i915,
 		 * we must pick port E :(
 		 */
 		info = &i915->vbt.ddi_port_info[p];
+		child = &info->devdata->child;
+
+		child->device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
+		child->device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
 
-		info->supports_dvi = false;
-		info->supports_hdmi = false;
 		info->alternate_ddc_pin = 0;
 	}
 }
@@ -1783,20 +1787,20 @@ static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
 	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
 }
 
-static bool
+bool
 intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
 {
 	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
 }
 
-static bool
+bool
 intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
 {
 	return intel_bios_encoder_supports_dvi(devdata) &&
 		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
 }
 
-static bool
+bool
 intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
 {
 	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
@@ -1838,8 +1842,6 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
 	is_edp = intel_bios_encoder_supports_edp(devdata);
 
-	info->supports_dvi = is_dvi;
-	info->supports_hdmi = is_hdmi;
 	info->supports_dp = is_dp;
 	info->supports_edp = is_edp;
 
@@ -2901,21 +2903,6 @@ int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder)
 	return i915->vbt.ddi_port_info[encoder->port].alternate_ddc_pin;
 }
 
-bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port)
-{
-	return i915->vbt.ddi_port_info[port].supports_dvi;
-}
-
-bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port)
-{
-	return i915->vbt.ddi_port_info[port].supports_hdmi;
-}
-
-bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port)
-{
-	return i915->vbt.ddi_port_info[port].supports_dp;
-}
-
 bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915,
 					enum port port)
 {
@@ -2926,3 +2913,9 @@ bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port)
 {
 	return i915->vbt.ddi_port_info[port].supports_tbt;
 }
+
+const struct intel_bios_encoder_data *
+intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port)
+{
+	return i915->vbt.ddi_port_info[port].devdata;
+}
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index 6591cf7758f2..18b5c2976bd4 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -254,10 +254,14 @@ int intel_bios_dp_boost_level(struct intel_encoder *encoder);
 int intel_bios_hdmi_boost_level(struct intel_encoder *encoder);
 int intel_bios_dp_max_link_rate(struct intel_encoder *encoder);
 int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder);
-bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port);
-bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port);
-bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port);
 bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915, enum port port);
 bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port);
 
+const struct intel_bios_encoder_data *
+intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port);
+
+bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
+bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata);
+bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
+
 #endif /* _INTEL_BIOS_H_ */
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index eeae78097a20..1a2f7725f8ec 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -3973,6 +3973,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
 {
 	struct intel_digital_port *dig_port;
 	struct intel_encoder *encoder;
+	const struct intel_bios_encoder_data *devdata;
 	bool init_hdmi, init_dp;
 	enum phy phy = intel_port_to_phy(dev_priv, port);
 
@@ -3988,9 +3989,17 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
 		return;
 	}
 
-	init_hdmi = intel_bios_port_supports_dvi(dev_priv, port) ||
-		intel_bios_port_supports_hdmi(dev_priv, port);
-	init_dp = intel_bios_port_supports_dp(dev_priv, port);
+	devdata = intel_bios_encoder_data_lookup(dev_priv, port);
+	if (!devdata) {
+		drm_dbg_kms(&dev_priv->drm,
+			    "VBT says port %c is not present\n",
+			    port_name(port));
+		return;
+	}
+
+	init_hdmi = intel_bios_encoder_supports_dvi(devdata) ||
+		intel_bios_encoder_supports_hdmi(devdata);
+	init_dp = intel_bios_encoder_supports_dp(devdata);
 
 	if (intel_bios_is_lspcon_present(dev_priv, port)) {
 		/*
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index e2c5ba61b370..57712a617839 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -584,7 +584,7 @@ i915_fence_timeout(const struct drm_i915_private *i915)
 
 struct ddi_vbt_port_info {
 	/* Non-NULL if port present. */
-	const struct intel_bios_encoder_data *devdata;
+	struct intel_bios_encoder_data *devdata;
 
 	int max_tmds_clock;
 
@@ -592,8 +592,6 @@ struct ddi_vbt_port_info {
 	u8 hdmi_level_shift;
 	u8 hdmi_level_shift_set:1;
 
-	u8 supports_dvi:1;
-	u8 supports_hdmi:1;
 	u8 supports_dp:1;
 	u8 supports_edp:1;
 	u8 supports_typec_usb:1;
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 11/12] drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (9 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 10/12] drm/i915/bios: start using the intel_bios_encoder_data directly Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-03-15 17:49   ` Lucas De Marchi
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 12/12] drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost Jani Nikula
                   ` (4 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c | 20 ++++++++------------
 drivers/gpu/drm/i915/display/intel_bios.h |  2 ++
 drivers/gpu/drm/i915/display/intel_ddi.c  |  4 ++--
 3 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index d26304ebc6b9..13a38cd01692 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1818,7 +1818,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 {
 	const struct child_device_config *child = &devdata->child;
 	struct ddi_vbt_port_info *info;
-	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt;
+	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt, supports_typec_usb, supports_tbt;
 	enum port port;
 
 	port = dvo_port_to_port(i915, child->dvo_port);
@@ -1845,17 +1845,14 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	info->supports_dp = is_dp;
 	info->supports_edp = is_edp;
 
-	if (i915->vbt.version >= 195)
-		info->supports_typec_usb = child->dp_usb_type_c;
-
-	if (i915->vbt.version >= 209)
-		info->supports_tbt = child->tbt;
+	supports_typec_usb = intel_bios_encoder_supports_typec_usb(devdata);
+	supports_tbt = intel_bios_encoder_supports_tbt(devdata);
 
 	drm_dbg_kms(&i915->drm,
 		    "Port %c VBT info: CRT:%d DVI:%d HDMI:%d DP:%d eDP:%d LSPCON:%d USB-Type-C:%d TBT:%d DSC:%d\n",
 		    port_name(port), is_crt, is_dvi, is_hdmi, is_dp, is_edp,
 		    HAS_LSPCON(i915) && child->lspcon,
-		    info->supports_typec_usb, info->supports_tbt,
+		    supports_typec_usb, supports_tbt,
 		    devdata->dsc != NULL);
 
 	if (is_dvi) {
@@ -2903,15 +2900,14 @@ int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder)
 	return i915->vbt.ddi_port_info[encoder->port].alternate_ddc_pin;
 }
 
-bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915,
-					enum port port)
+bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata)
 {
-	return i915->vbt.ddi_port_info[port].supports_typec_usb;
+	return devdata->i915->vbt.version >= 195 && devdata->child.dp_usb_type_c;
 }
 
-bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port)
+bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata)
 {
-	return i915->vbt.ddi_port_info[port].supports_tbt;
+	return devdata->i915->vbt.version >= 209 && devdata->child.tbt;
 }
 
 const struct intel_bios_encoder_data *
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index 18b5c2976bd4..f82cef29ab5a 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -263,5 +263,7 @@ intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port);
 bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
 bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata);
 bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
+bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata);
+bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata);
 
 #endif /* _INTEL_BIOS_H_ */
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 1a2f7725f8ec..0bf783f67a59 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -4150,8 +4150,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
 
 	if (intel_phy_is_tc(dev_priv, phy)) {
 		bool is_legacy =
-			!intel_bios_port_supports_typec_usb(dev_priv, port) &&
-			!intel_bios_port_supports_tbt(dev_priv, port);
+			!intel_bios_encoder_supports_typec_usb(devdata) &&
+			!intel_bios_encoder_supports_tbt(devdata);
 
 		intel_tc_port_init(dig_port, is_legacy);
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] [PATCH 12/12] drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (10 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 11/12] drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT Jani Nikula
@ 2021-02-17 17:03 ` Jani Nikula
  2021-03-15 17:52   ` Lucas De Marchi
  2021-02-17 17:20 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: vbt child device rework Patchwork
                   ` (3 subsequent siblings)
  15 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 17:03 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula, Lucas De Marchi

Add intel_bios_encoder_data pointer to encoder, and use it for hdmi and
dp iboost. For starters, we only set the encoder->devdata for DDI
encoders, i.e. we can only use it for data that is used by DDI encoders.

Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bios.c     | 30 +++++++++++--------
 drivers/gpu/drm/i915/display/intel_bios.h     |  4 +--
 drivers/gpu/drm/i915/display/intel_ddi.c      |  9 +++---
 .../drm/i915/display/intel_display_types.h    |  3 ++
 drivers/gpu/drm/i915/i915_drv.h               |  2 --
 5 files changed, 27 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 13a38cd01692..e1fcaf567222 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -1819,6 +1819,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 	const struct child_device_config *child = &devdata->child;
 	struct ddi_vbt_port_info *info;
 	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt, supports_typec_usb, supports_tbt;
+	int dp_boost_level, hdmi_boost_level;
 	enum port port;
 
 	port = dvo_port_to_port(i915, child->dvo_port);
@@ -1912,17 +1913,18 @@ static void parse_ddi_port(struct drm_i915_private *i915,
 		info->max_tmds_clock = max_tmds_clock;
 	}
 
-	/* Parse the I_boost config for SKL and above */
-	if (i915->vbt.version >= 196 && child->iboost) {
-		info->dp_boost_level = translate_iboost(child->dp_iboost_level);
+	/* I_boost config for SKL and above */
+	dp_boost_level = intel_bios_encoder_dp_boost_level(devdata);
+	if (dp_boost_level)
 		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT (e)DP boost level: %d\n",
-			    port_name(port), info->dp_boost_level);
-		info->hdmi_boost_level = translate_iboost(child->hdmi_iboost_level);
+			    port_name(port), dp_boost_level);
+
+	hdmi_boost_level = intel_bios_encoder_hdmi_boost_level(devdata);
+	if (hdmi_boost_level)
 		drm_dbg_kms(&i915->drm,
 			    "Port %c VBT HDMI boost level: %d\n",
-			    port_name(port), info->hdmi_boost_level);
-	}
+			    port_name(port), hdmi_boost_level);
 
 	/* DP max link rate for CNL+ */
 	if (i915->vbt.version >= 216) {
@@ -2872,18 +2874,20 @@ int intel_bios_hdmi_level_shift(struct intel_encoder *encoder)
 	return info->hdmi_level_shift_set ? info->hdmi_level_shift : -1;
 }
 
-int intel_bios_dp_boost_level(struct intel_encoder *encoder)
+int intel_bios_encoder_dp_boost_level(const struct intel_bios_encoder_data *devdata)
 {
-	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+	if (!devdata || devdata->i915->vbt.version < 196 || !devdata->child.iboost)
+		return 0;
 
-	return i915->vbt.ddi_port_info[encoder->port].dp_boost_level;
+	return translate_iboost(devdata->child.dp_iboost_level);
 }
 
-int intel_bios_hdmi_boost_level(struct intel_encoder *encoder)
+int intel_bios_encoder_hdmi_boost_level(const struct intel_bios_encoder_data *devdata)
 {
-	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
+	if (!devdata || devdata->i915->vbt.version < 196 || !devdata->child.iboost)
+		return 0;
 
-	return i915->vbt.ddi_port_info[encoder->port].hdmi_boost_level;
+	return translate_iboost(devdata->child.hdmi_iboost_level);
 }
 
 int intel_bios_dp_max_link_rate(struct intel_encoder *encoder)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index f82cef29ab5a..4709c4d29805 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -250,8 +250,6 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
 			       int dsc_max_bpc);
 int intel_bios_max_tmds_clock(struct intel_encoder *encoder);
 int intel_bios_hdmi_level_shift(struct intel_encoder *encoder);
-int intel_bios_dp_boost_level(struct intel_encoder *encoder);
-int intel_bios_hdmi_boost_level(struct intel_encoder *encoder);
 int intel_bios_dp_max_link_rate(struct intel_encoder *encoder);
 int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder);
 bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915, enum port port);
@@ -265,5 +263,7 @@ bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devd
 bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
 bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata);
 bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata);
+int intel_bios_encoder_dp_boost_level(const struct intel_bios_encoder_data *devdata);
+int intel_bios_encoder_hdmi_boost_level(const struct intel_bios_encoder_data *devdata);
 
 #endif /* _INTEL_BIOS_H_ */
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index 0bf783f67a59..92aad11cc0e7 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -114,7 +114,7 @@ void intel_prepare_dp_ddi_buffers(struct intel_encoder *encoder,
 							      &n_entries);
 
 	/* If we're boosting the current, set bit 31 of trans1 */
-	if (IS_GEN9_BC(dev_priv) && intel_bios_dp_boost_level(encoder))
+	if (IS_GEN9_BC(dev_priv) && intel_bios_encoder_dp_boost_level(encoder->devdata))
 		iboost_bit = DDI_BUF_BALANCE_LEG_ENABLE;
 
 	for (i = 0; i < n_entries; i++) {
@@ -147,7 +147,7 @@ static void intel_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder,
 		level = n_entries - 1;
 
 	/* If we're boosting the current, set bit 31 of trans1 */
-	if (IS_GEN9_BC(dev_priv) && intel_bios_hdmi_boost_level(encoder))
+	if (IS_GEN9_BC(dev_priv) && intel_bios_encoder_hdmi_boost_level(encoder->devdata))
 		iboost_bit = DDI_BUF_BALANCE_LEG_ENABLE;
 
 	/* Entry 9 is for HDMI: */
@@ -925,9 +925,9 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder,
 	u8 iboost;
 
 	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
-		iboost = intel_bios_hdmi_boost_level(encoder);
+		iboost = intel_bios_encoder_hdmi_boost_level(encoder->devdata);
 	else
-		iboost = intel_bios_dp_boost_level(encoder);
+		iboost = intel_bios_encoder_dp_boost_level(encoder->devdata);
 
 	if (iboost == 0) {
 		const struct ddi_buf_trans *ddi_translations;
@@ -4025,6 +4025,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
 		return;
 
 	encoder = &dig_port->base;
+	encoder->devdata = devdata;
 
 	if (INTEL_GEN(dev_priv) >= 12) {
 		enum tc_port tc_port = intel_port_to_tc(dev_priv, port);
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 07b7f5eae587..91642b25ebcc 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -230,6 +230,9 @@ struct intel_encoder {
 	enum intel_display_power_domain power_domain;
 	/* for communication with audio component; protected by av_mutex */
 	const struct drm_connector *audio_connector;
+
+	/* VBT information for this encoder (may be NULL for older platforms) */
+	const struct intel_bios_encoder_data *devdata;
 };
 
 struct intel_panel_bl_funcs {
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 57712a617839..03a6d9738fee 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -600,8 +600,6 @@ struct ddi_vbt_port_info {
 	u8 alternate_aux_channel;
 	u8 alternate_ddc_pin;
 
-	u8 dp_boost_level;
-	u8 hdmi_boost_level;
 	int dp_max_link_rate;		/* 0 for not limited by VBT */
 };
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 40+ messages in thread

* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: vbt child device rework
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (11 preceding siblings ...)
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 12/12] drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost Jani Nikula
@ 2021-02-17 17:20 ` Patchwork
  2021-02-17 17:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 40+ messages in thread
From: Patchwork @ 2021-02-17 17:20 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/bios: vbt child device rework
URL   : https://patchwork.freedesktop.org/series/87165/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
eb3ee8e4100d drm/i915/bios: mass convert dev_priv to i915
-:1537: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#1537: FILE: drivers/gpu/drm/i915/display/intel_bios.c:2051:
+	i915->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(i915,
+			!HAS_PCH_SPLIT(i915));

total: 0 errors, 0 warnings, 1 checks, 1901 lines checked
bec5ef024e83 drm/i915/bios: store bdb version in i915
183a2a92a87d drm/i915/bios: limit default outputs by platform on missing VBT
a26b42827005 drm/i915/bios: limit default outputs to ports A through F
13cc862469fa drm/i915/bios: create fake child devices on missing VBT
28f555702275 drm/i915/bios: rename display_device_data to intel_bios_encoder_data
6f9812af842c drm/i915/bios: add i915 backpointer to intel_bios_encoder_data
8bf02e86eec6 drm/i915/vbt: add helper functions to check output support
a295862116c5 drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
5b40fe7ec523 drm/i915/bios: start using the intel_bios_encoder_data directly
e302e102b326 drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT
4f0a5fd1dd23 drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost


_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F Jani Nikula
@ 2021-02-17 17:23   ` Lucas De Marchi
  2021-02-17 17:28     ` Lucas De Marchi
  0 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-17 17:23 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:34PM +0200, Jani Nikula wrote:
>With the defaults limited to non-TypeC ports in commit 828ccb31cf41
>("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
>a no-op, but clarifies the code and prepares for subsequent changes.
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index e9cb15aa2f5a..b9d99324d66d 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -2057,11 +2057,12 @@ static void
> init_vbt_missing_defaults(struct drm_i915_private *i915)
> {
> 	enum port port;
>+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;


I'd not spread the knowledge of what port uses tc phy like this.
It's painful to maintain.

Lucas De Marchi

>
> 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
> 		return;
>
>-	for_each_port(port) {
>+	for_each_port_masked(port, ports) {
> 		struct ddi_vbt_port_info *info =
> 			&i915->vbt.ddi_port_info[port];
> 		enum phy phy = intel_port_to_phy(i915, port);
>-- 
>2.20.1
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-17 17:23   ` Lucas De Marchi
@ 2021-02-17 17:28     ` Lucas De Marchi
  2021-02-17 19:49       ` Jani Nikula
  0 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-17 17:28 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 09:23:00AM -0800, Lucas De Marchi wrote:
>On Wed, Feb 17, 2021 at 07:03:34PM +0200, Jani Nikula wrote:
>>With the defaults limited to non-TypeC ports in commit 828ccb31cf41
>>("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
>>a no-op, but clarifies the code and prepares for subsequent changes.
>>
>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>---
>>drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
>>1 file changed, 2 insertions(+), 1 deletion(-)
>>
>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>index e9cb15aa2f5a..b9d99324d66d 100644
>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>@@ -2057,11 +2057,12 @@ static void
>>init_vbt_missing_defaults(struct drm_i915_private *i915)
>>{
>>	enum port port;
>>+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;
>
>
>I'd not spread the knowledge of what port uses tc phy like this.
>It's painful to maintain.

also, not sure how this clarifies things if PORT_TC1 aliases PORT_D,
so I'd just drop this patch

Lucas De Marchi

>Lucas De Marchi
>
>>
>>	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>		return;
>>
>>-	for_each_port(port) {
>>+	for_each_port_masked(port, ports) {
>>		struct ddi_vbt_port_info *info =
>>			&i915->vbt.ddi_port_info[port];
>>		enum phy phy = intel_port_to_phy(i915, port);
>>-- 
>>2.20.1
>>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data Jani Nikula
@ 2021-02-17 17:44   ` Lucas De Marchi
  2021-02-17 19:52     ` Jani Nikula
  0 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-17 17:44 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:36PM +0200, Jani Nikula wrote:
>Make the naming suitable for exposing to the rest of the driver as an
>opaque type. No functional changes.

ack, but..

>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/i915/display/intel_bios.c | 30 +++++++++++------------
> 1 file changed, 15 insertions(+), 15 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index 59d315b395c2..0e882da165be 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -59,7 +59,7 @@
>  */
>
> /* Wrapper for VBT child device config */
>-struct display_device_data {
>+struct intel_bios_encoder_data {
> 	struct child_device_config child;
> 	struct dsc_compression_parameters_entry *dsc;
> 	struct list_head node;
>@@ -600,7 +600,7 @@ static void
> parse_sdvo_device_mapping(struct drm_i915_private *i915)
> {
> 	struct sdvo_device_mapping *mapping;
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;

shouldn't we also replace devdata with a better name?

Lucas De Marchi

> 	const struct child_device_config *child;
> 	int count = 0;
>
>@@ -1439,7 +1439,7 @@ parse_compression_parameters(struct drm_i915_private *i915,
> 			     const struct bdb_header *bdb)
> {
> 	const struct bdb_compression_parameters *params;
>-	struct display_device_data *devdata;
>+	struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
> 	u16 block_size;
> 	int index;
>@@ -1760,7 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
> }
>
> static void parse_ddi_port(struct drm_i915_private *i915,
>-			   struct display_device_data *devdata)
>+			   struct intel_bios_encoder_data *devdata)
> {
> 	const struct child_device_config *child = &devdata->child;
> 	struct ddi_vbt_port_info *info;
>@@ -1908,7 +1908,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>
> static void parse_ddi_ports(struct drm_i915_private *i915)
> {
>-	struct display_device_data *devdata;
>+	struct intel_bios_encoder_data *devdata;
>
> 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
> 		return;
>@@ -1925,7 +1925,7 @@ parse_general_definitions(struct drm_i915_private *i915,
> 			  const struct bdb_header *bdb)
> {
> 	const struct bdb_general_definitions *defs;
>-	struct display_device_data *devdata;
>+	struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
> 	int i, child_device_num;
> 	u8 expected_size;
>@@ -2063,7 +2063,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
> 		return;
>
> 	for_each_port_masked(port, ports) {
>-		struct display_device_data *devdata;
>+		struct intel_bios_encoder_data *devdata;
> 		struct child_device_config *child;
> 		enum phy phy = intel_port_to_phy(i915, port);
>
>@@ -2302,7 +2302,7 @@ void intel_bios_init(struct drm_i915_private *i915)
>  */
> void intel_bios_driver_remove(struct drm_i915_private *i915)
> {
>-	struct display_device_data *devdata, *n;
>+	struct intel_bios_encoder_data *devdata, *n;
>
> 	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
> 		list_del(&devdata->node);
>@@ -2333,7 +2333,7 @@ void intel_bios_driver_remove(struct drm_i915_private *i915)
>  */
> bool intel_bios_is_tv_present(struct drm_i915_private *i915)
> {
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
>
> 	if (!i915->vbt.int_tv_support)
>@@ -2376,7 +2376,7 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>  */
> bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
> {
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
>
> 	if (list_empty(&i915->vbt.display_devices))
>@@ -2425,7 +2425,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>  */
> bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
> {
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
> 	static const struct {
> 		u16 dp, hdmi;
>@@ -2471,7 +2471,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>  */
> bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
> {
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
> 	static const short port_mapping[] = {
> 		[PORT_B] = DVO_PORT_DPB,
>@@ -2534,7 +2534,7 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
> bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
> 				     enum port port)
> {
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
>
> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
> 		if (child_dev_is_dp_dual_mode(&devdata->child, port))
>@@ -2554,7 +2554,7 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
> bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
> 			       enum port *port)
> {
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
> 	u8 dvo_port;
>
>@@ -2654,7 +2654,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
> 			       int dsc_max_bpc)
> {
> 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>-	const struct display_device_data *devdata;
>+	const struct intel_bios_encoder_data *devdata;
> 	const struct child_device_config *child;
>
> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>-- 
>2.20.1
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support Jani Nikula
@ 2021-02-17 17:46   ` Lucas De Marchi
  2021-02-17 19:55     ` Jani Nikula
  0 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-17 17:46 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:38PM +0200, Jani Nikula wrote:
>These will be exposed to the rest of the driver and replace other
>functions. Everything will operate on the child devices.
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/i915/display/intel_bios.c | 66 ++++++++++++++++++-----
> 1 file changed, 54 insertions(+), 12 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index 193772f42582..739ef5d91907 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -64,6 +64,7 @@ struct intel_bios_encoder_data {
>
> 	struct child_device_config child;
> 	struct dsc_compression_parameters_entry *dsc;
>+
> 	struct list_head node;
> };
>
>@@ -1761,6 +1762,53 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
> 					  dvo_port);
> }
>
>+static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
>+				 enum port port)
>+{
>+	struct drm_i915_private *i915 = devdata->i915;
>+	bool is_hdmi;
>+
>+	if (port != PORT_A || INTEL_GEN(i915) >= 12)
>+		return;
>+
>+	if (!(devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING))
>+		return;
>+
>+	is_hdmi = !(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT);
>+
>+	drm_dbg_kms(&i915->drm, "VBT claims port A supports DVI%s, ignoring\n",
>+		    is_hdmi ? "/HDMI" : "");
>+
>+	devdata->child.device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
>+	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
>+}
>+
>+static bool
>+intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
>+{
>+	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>+}
>+
>+static bool
>+intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
>+{
>+	return intel_bios_encoder_supports_dvi(devdata) &&
>+		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>+}
>+
>+static bool
>+intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
>+{
>+	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>+}
>+
>+static bool
>+intel_bios_encoder_supports_edp(const struct intel_bios_encoder_data *devdata)
>+{
>+	return intel_bios_encoder_supports_dp(devdata) &&
>+		devdata->child.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR;
>+}
>+
> static void parse_ddi_port(struct drm_i915_private *i915,
> 			   struct intel_bios_encoder_data *devdata)
> {
>@@ -1782,19 +1830,13 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> 		return;
> 	}
>
>-	is_dvi = child->device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>-	is_dp = child->device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>-	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>-	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>-	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
>+	sanitize_device_type(devdata, port);
>
>-	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
>-		drm_dbg_kms(&i915->drm,
>-			    "VBT claims port A supports DVI%s, ignoring\n",
>-			    is_hdmi ? "/HDMI" : "");
>-		is_dvi = false;
>-		is_hdmi = false;
>-	}
>+	is_dvi = intel_bios_encoder_supports_dvi(devdata);
>+	is_dp = intel_bios_encoder_supports_dp(devdata);
>+	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;

any reason to leave this behind?

Lucas De Marchi

>+	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
>+	is_edp = intel_bios_encoder_supports_edp(devdata);
>
> 	info->supports_dvi = is_dvi;
> 	info->supports_hdmi = is_hdmi;
>-- 
>2.20.1
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/bios: vbt child device rework
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (12 preceding siblings ...)
  2021-02-17 17:20 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: vbt child device rework Patchwork
@ 2021-02-17 17:49 ` Patchwork
  2021-02-17 17:54 ` [Intel-gfx] [PATCH 00/12] " Lucas De Marchi
  2021-02-17 20:52 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork
  15 siblings, 0 replies; 40+ messages in thread
From: Patchwork @ 2021-02-17 17:49 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 5478 bytes --]

== Series Details ==

Series: drm/i915/bios: vbt child device rework
URL   : https://patchwork.freedesktop.org/series/87165/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_9782 -> Patchwork_19696
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/index.html

Known issues
------------

  Here are the changes found in Patchwork_19696 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_huc_copy@huc-copy:
    - fi-byt-j1900:       NOTRUN -> [SKIP][1] ([fdo#109271]) +9 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-byt-j1900/igt@gem_huc_copy@huc-copy.html

  * igt@gem_mmap_gtt@basic:
    - fi-tgl-y:           [PASS][2] -> [DMESG-WARN][3] ([i915#402]) +1 similar issue
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/fi-tgl-y/igt@gem_mmap_gtt@basic.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-tgl-y/igt@gem_mmap_gtt@basic.html

  * igt@i915_pm_rpm@module-reload:
    - fi-byt-j1900:       NOTRUN -> [INCOMPLETE][4] ([i915#142] / [i915#2405])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-byt-j1900/igt@i915_pm_rpm@module-reload.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - fi-snb-2600:        NOTRUN -> [SKIP][5] ([fdo#109271]) +34 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-snb-2600/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-byt-j1900:       NOTRUN -> [SKIP][6] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-byt-j1900/igt@kms_chamelium@hdmi-crc-fast.html
    - fi-snb-2600:        NOTRUN -> [SKIP][7] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-snb-2600/igt@kms_chamelium@hdmi-crc-fast.html

  * igt@runner@aborted:
    - fi-bdw-5557u:       NOTRUN -> [FAIL][8] ([i915#1602] / [i915#2029] / [i915#2369])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-bdw-5557u/igt@runner@aborted.html
    - fi-byt-j1900:       NOTRUN -> [FAIL][9] ([i915#1814] / [i915#2505])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-byt-j1900/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s3:
    - fi-tgl-y:           [DMESG-WARN][10] ([i915#2411] / [i915#402]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/fi-tgl-y/igt@gem_exec_suspend@basic-s3.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-tgl-y/igt@gem_exec_suspend@basic-s3.html

  * igt@gem_render_tiled_blits@basic:
    - fi-tgl-y:           [DMESG-WARN][12] ([i915#402]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/fi-tgl-y/igt@gem_render_tiled_blits@basic.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/fi-tgl-y/igt@gem_render_tiled_blits@basic.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#142]: https://gitlab.freedesktop.org/drm/intel/issues/142
  [i915#1602]: https://gitlab.freedesktop.org/drm/intel/issues/1602
  [i915#1814]: https://gitlab.freedesktop.org/drm/intel/issues/1814
  [i915#2029]: https://gitlab.freedesktop.org/drm/intel/issues/2029
  [i915#2369]: https://gitlab.freedesktop.org/drm/intel/issues/2369
  [i915#2405]: https://gitlab.freedesktop.org/drm/intel/issues/2405
  [i915#2411]: https://gitlab.freedesktop.org/drm/intel/issues/2411
  [i915#2505]: https://gitlab.freedesktop.org/drm/intel/issues/2505
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402


Participating hosts (41 -> 39)
------------------------------

  Additional (2): fi-byt-j1900 fi-snb-2600 
  Missing    (4): fi-ilk-m540 fi-bsw-cyan fi-bdw-samus fi-hsw-4200u 


Build changes
-------------

  * Linux: CI_DRM_9782 -> Patchwork_19696

  CI-20190529: 20190529
  CI_DRM_9782: 17f0b26dab823740a3ebc413ea6f61a4f2e77971 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_6005: b69a3c463f0aec46b19c14ac24351d292cb11c08 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_19696: 4f0a5fd1dd2378cbe61c694fe5bd58917970e815 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

4f0a5fd1dd23 drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost
e302e102b326 drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT
5b40fe7ec523 drm/i915/bios: start using the intel_bios_encoder_data directly
a295862116c5 drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
8bf02e86eec6 drm/i915/vbt: add helper functions to check output support
6f9812af842c drm/i915/bios: add i915 backpointer to intel_bios_encoder_data
28f555702275 drm/i915/bios: rename display_device_data to intel_bios_encoder_data
13cc862469fa drm/i915/bios: create fake child devices on missing VBT
a26b42827005 drm/i915/bios: limit default outputs to ports A through F
183a2a92a87d drm/i915/bios: limit default outputs by platform on missing VBT
bec5ef024e83 drm/i915/bios: store bdb version in i915
eb3ee8e4100d drm/i915/bios: mass convert dev_priv to i915

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/index.html

[-- Attachment #1.2: Type: text/html, Size: 6772 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (13 preceding siblings ...)
  2021-02-17 17:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2021-02-17 17:54 ` Lucas De Marchi
  2021-02-17 19:57   ` Jani Nikula
  2021-02-17 20:52 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork
  15 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-17 17:54 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:30PM +0200, Jani Nikula wrote:
>I see the parsing and caching of child device data into
>i915->vbt.ddi_port_info[] slightly problematic. We keep adding data to
>it, and it just duplicates information. Start moving towards a single
>point of truth, and getting the information directly from the child
>device data.
>
>One obstacle has been that init_vbt_missing_defaults() only initializes
>ddi_port_info, without child devices. As the same problem arose in a
>patch from Lucas, I thought it was time to start creating fake child
>devices to unify the code.
>
>There are a bunch of cleanups and refactoring here. Patches 1-5 are
>enough to fix Lucas' patch I think. Patch 10 does what Lucas was after,
>just in a different way and as a byproduct of something else. The later

humn... but we'd still need the patches in that series to cleanup
the calls to intel_ddi_init() from intel_display.c. Or did I miss
anything?

I did a quick scan through the patches and left a few comments. Overall
it looks good to me, but I need to dedicate a little more time to give a
proper r-b. I will do soon if no one beats me to it.


thanks
Lucas De Marchi

>patches in the series are more to show the direction, and seek
>validation for that direction.
>
>Naming is also a question mark. All of these are a bit questionable:
>intel_bios_encoder_data, devdata, intel_bios_encoder_supports_*, etc.
>
>BR,
>Jani.
>
>
>[1] http://patchwork.freedesktop.org/patch/msgid/20210213190511.1017088-2-lucas.demarchi@intel.com
>
>
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
>
>Jani Nikula (12):
>  drm/i915/bios: mass convert dev_priv to i915
>  drm/i915/bios: store bdb version in i915
>  drm/i915/bios: limit default outputs by platform on missing VBT
>  drm/i915/bios: limit default outputs to ports A through F
>  drm/i915/bios: create fake child devices on missing VBT
>  drm/i915/bios: rename display_device_data to intel_bios_encoder_data
>  drm/i915/bios: add i915 backpointer to intel_bios_encoder_data
>  drm/i915/vbt: add helper functions to check output support
>  drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
>  drm/i915/bios: start using the intel_bios_encoder_data directly
>  drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and
>    TBT
>  drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost
>
> drivers/gpu/drm/i915/display/intel_bios.c     | 1021 +++++++++--------
> drivers/gpu/drm/i915/display/intel_bios.h     |   17 +-
> drivers/gpu/drm/i915/display/intel_ddi.c      |   28 +-
> .../drm/i915/display/intel_display_types.h    |    3 +
> drivers/gpu/drm/i915/i915_drv.h               |    9 +-
> 5 files changed, 584 insertions(+), 494 deletions(-)
>
>-- 
>2.20.1
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-17 17:28     ` Lucas De Marchi
@ 2021-02-17 19:49       ` Jani Nikula
  2021-02-17 19:58         ` Lucas De Marchi
  0 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 19:49 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Wed, Feb 17, 2021 at 09:23:00AM -0800, Lucas De Marchi wrote:
>>On Wed, Feb 17, 2021 at 07:03:34PM +0200, Jani Nikula wrote:
>>>With the defaults limited to non-TypeC ports in commit 828ccb31cf41
>>>("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
>>>a no-op, but clarifies the code and prepares for subsequent changes.
>>>
>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>---
>>>drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
>>>1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>index e9cb15aa2f5a..b9d99324d66d 100644
>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>@@ -2057,11 +2057,12 @@ static void
>>>init_vbt_missing_defaults(struct drm_i915_private *i915)
>>>{
>>>	enum port port;
>>>+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;
>>
>>
>>I'd not spread the knowledge of what port uses tc phy like this.
>>It's painful to maintain.

Umm, this wasn't meant to have anything to do with tc, really. Granted,
the commit message is misleading.

>
> also, not sure how this clarifies things if PORT_TC1 aliases PORT_D,
> so I'd just drop this patch

The point is that I'd like to reduce the number of ports set up by
default, perhaps even further than this. It's a bit silly to generate 9
dummy child devices on certain platforms when there's no VBT.


BR,
Jani.

>
> Lucas De Marchi
>
>>Lucas De Marchi
>>
>>>
>>>	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>>		return;
>>>
>>>-	for_each_port(port) {
>>>+	for_each_port_masked(port, ports) {
>>>		struct ddi_vbt_port_info *info =
>>>			&i915->vbt.ddi_port_info[port];
>>>		enum phy phy = intel_port_to_phy(i915, port);
>>>-- 
>>>2.20.1
>>>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data
  2021-02-17 17:44   ` Lucas De Marchi
@ 2021-02-17 19:52     ` Jani Nikula
  2021-02-23 12:50       ` Jani Nikula
  0 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 19:52 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Wed, Feb 17, 2021 at 07:03:36PM +0200, Jani Nikula wrote:
>>Make the naming suitable for exposing to the rest of the driver as an
>>opaque type. No functional changes.
>
> ack, but..
>
>>
>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>---
>> drivers/gpu/drm/i915/display/intel_bios.c | 30 +++++++++++------------
>> 1 file changed, 15 insertions(+), 15 deletions(-)
>>
>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>index 59d315b395c2..0e882da165be 100644
>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>@@ -59,7 +59,7 @@
>>  */
>>
>> /* Wrapper for VBT child device config */
>>-struct display_device_data {
>>+struct intel_bios_encoder_data {
>> 	struct child_device_config child;
>> 	struct dsc_compression_parameters_entry *dsc;
>> 	struct list_head node;
>>@@ -600,7 +600,7 @@ static void
>> parse_sdvo_device_mapping(struct drm_i915_private *i915)
>> {
>> 	struct sdvo_device_mapping *mapping;
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>
> shouldn't we also replace devdata with a better name?

Yes, see cover letter. :)

I've rolled with devdata for now because that's what was there.

BR,
Jani.


>
> Lucas De Marchi
>
>> 	const struct child_device_config *child;
>> 	int count = 0;
>>
>>@@ -1439,7 +1439,7 @@ parse_compression_parameters(struct drm_i915_private *i915,
>> 			     const struct bdb_header *bdb)
>> {
>> 	const struct bdb_compression_parameters *params;
>>-	struct display_device_data *devdata;
>>+	struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>> 	u16 block_size;
>> 	int index;
>>@@ -1760,7 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>> }
>>
>> static void parse_ddi_port(struct drm_i915_private *i915,
>>-			   struct display_device_data *devdata)
>>+			   struct intel_bios_encoder_data *devdata)
>> {
>> 	const struct child_device_config *child = &devdata->child;
>> 	struct ddi_vbt_port_info *info;
>>@@ -1908,7 +1908,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>>
>> static void parse_ddi_ports(struct drm_i915_private *i915)
>> {
>>-	struct display_device_data *devdata;
>>+	struct intel_bios_encoder_data *devdata;
>>
>> 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>> 		return;
>>@@ -1925,7 +1925,7 @@ parse_general_definitions(struct drm_i915_private *i915,
>> 			  const struct bdb_header *bdb)
>> {
>> 	const struct bdb_general_definitions *defs;
>>-	struct display_device_data *devdata;
>>+	struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>> 	int i, child_device_num;
>> 	u8 expected_size;
>>@@ -2063,7 +2063,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
>> 		return;
>>
>> 	for_each_port_masked(port, ports) {
>>-		struct display_device_data *devdata;
>>+		struct intel_bios_encoder_data *devdata;
>> 		struct child_device_config *child;
>> 		enum phy phy = intel_port_to_phy(i915, port);
>>
>>@@ -2302,7 +2302,7 @@ void intel_bios_init(struct drm_i915_private *i915)
>>  */
>> void intel_bios_driver_remove(struct drm_i915_private *i915)
>> {
>>-	struct display_device_data *devdata, *n;
>>+	struct intel_bios_encoder_data *devdata, *n;
>>
>> 	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
>> 		list_del(&devdata->node);
>>@@ -2333,7 +2333,7 @@ void intel_bios_driver_remove(struct drm_i915_private *i915)
>>  */
>> bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>> {
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>>
>> 	if (!i915->vbt.int_tv_support)
>>@@ -2376,7 +2376,7 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>>  */
>> bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>> {
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>>
>> 	if (list_empty(&i915->vbt.display_devices))
>>@@ -2425,7 +2425,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>>  */
>> bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>> {
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>> 	static const struct {
>> 		u16 dp, hdmi;
>>@@ -2471,7 +2471,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>>  */
>> bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
>> {
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>> 	static const short port_mapping[] = {
>> 		[PORT_B] = DVO_PORT_DPB,
>>@@ -2534,7 +2534,7 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
>> bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>> 				     enum port port)
>> {
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>>
>> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>> 		if (child_dev_is_dp_dual_mode(&devdata->child, port))
>>@@ -2554,7 +2554,7 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>> bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
>> 			       enum port *port)
>> {
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>> 	u8 dvo_port;
>>
>>@@ -2654,7 +2654,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
>> 			       int dsc_max_bpc)
>> {
>> 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>>-	const struct display_device_data *devdata;
>>+	const struct intel_bios_encoder_data *devdata;
>> 	const struct child_device_config *child;
>>
>> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>>-- 
>>2.20.1
>>

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support
  2021-02-17 17:46   ` Lucas De Marchi
@ 2021-02-17 19:55     ` Jani Nikula
  2021-03-15 17:32       ` Lucas De Marchi
  0 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 19:55 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Wed, Feb 17, 2021 at 07:03:38PM +0200, Jani Nikula wrote:
>>These will be exposed to the rest of the driver and replace other
>>functions. Everything will operate on the child devices.
>>
>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>---
>> drivers/gpu/drm/i915/display/intel_bios.c | 66 ++++++++++++++++++-----
>> 1 file changed, 54 insertions(+), 12 deletions(-)
>>
>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>index 193772f42582..739ef5d91907 100644
>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>@@ -64,6 +64,7 @@ struct intel_bios_encoder_data {
>>
>> 	struct child_device_config child;
>> 	struct dsc_compression_parameters_entry *dsc;
>>+
>> 	struct list_head node;
>> };
>>
>>@@ -1761,6 +1762,53 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>> 					  dvo_port);
>> }
>>
>>+static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
>>+				 enum port port)
>>+{
>>+	struct drm_i915_private *i915 = devdata->i915;
>>+	bool is_hdmi;
>>+
>>+	if (port != PORT_A || INTEL_GEN(i915) >= 12)
>>+		return;
>>+
>>+	if (!(devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING))
>>+		return;
>>+
>>+	is_hdmi = !(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT);
>>+
>>+	drm_dbg_kms(&i915->drm, "VBT claims port A supports DVI%s, ignoring\n",
>>+		    is_hdmi ? "/HDMI" : "");
>>+
>>+	devdata->child.device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>+	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
>>+}
>>+
>>+static bool
>>+intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
>>+{
>>+	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>+}
>>+
>>+static bool
>>+intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
>>+{
>>+	return intel_bios_encoder_supports_dvi(devdata) &&
>>+		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>>+}
>>+
>>+static bool
>>+intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
>>+{
>>+	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>>+}
>>+
>>+static bool
>>+intel_bios_encoder_supports_edp(const struct intel_bios_encoder_data *devdata)
>>+{
>>+	return intel_bios_encoder_supports_dp(devdata) &&
>>+		devdata->child.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR;
>>+}
>>+
>> static void parse_ddi_port(struct drm_i915_private *i915,
>> 			   struct intel_bios_encoder_data *devdata)
>> {
>>@@ -1782,19 +1830,13 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>> 		return;
>> 	}
>>
>>-	is_dvi = child->device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>-	is_dp = child->device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>>-	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>>-	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>>-	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
>>+	sanitize_device_type(devdata, port);
>>
>>-	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
>>-		drm_dbg_kms(&i915->drm,
>>-			    "VBT claims port A supports DVI%s, ignoring\n",
>>-			    is_hdmi ? "/HDMI" : "");
>>-		is_dvi = false;
>>-		is_hdmi = false;
>>-	}
>>+	is_dvi = intel_bios_encoder_supports_dvi(devdata);
>>+	is_dp = intel_bios_encoder_supports_dp(devdata);
>>+	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>
> any reason to leave this behind?

Just logging, even though that doesn't match what we actually do in
intel_ddi_crt_present(). I expect there to be further cleanup
afterwards.

BR,
Jani.

>
> Lucas De Marchi
>
>>+	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
>>+	is_edp = intel_bios_encoder_supports_edp(devdata);
>>
>> 	info->supports_dvi = is_dvi;
>> 	info->supports_hdmi = is_hdmi;
>>-- 
>>2.20.1
>>

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework
  2021-02-17 17:54 ` [Intel-gfx] [PATCH 00/12] " Lucas De Marchi
@ 2021-02-17 19:57   ` Jani Nikula
  0 siblings, 0 replies; 40+ messages in thread
From: Jani Nikula @ 2021-02-17 19:57 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Wed, Feb 17, 2021 at 07:03:30PM +0200, Jani Nikula wrote:
>>I see the parsing and caching of child device data into
>>i915->vbt.ddi_port_info[] slightly problematic. We keep adding data to
>>it, and it just duplicates information. Start moving towards a single
>>point of truth, and getting the information directly from the child
>>device data.
>>
>>One obstacle has been that init_vbt_missing_defaults() only initializes
>>ddi_port_info, without child devices. As the same problem arose in a
>>patch from Lucas, I thought it was time to start creating fake child
>>devices to unify the code.
>>
>>There are a bunch of cleanups and refactoring here. Patches 1-5 are
>>enough to fix Lucas' patch I think. Patch 10 does what Lucas was after,
>>just in a different way and as a byproduct of something else. The later
>
> humn... but we'd still need the patches in that series to cleanup
> the calls to intel_ddi_init() from intel_display.c. Or did I miss
> anything?

Nah, my bad. This makes it possible to do what you do there.

BR,
Jani.

>
> I did a quick scan through the patches and left a few comments. Overall
> it looks good to me, but I need to dedicate a little more time to give a
> proper r-b. I will do soon if no one beats me to it.
>
>
> thanks
> Lucas De Marchi
>
>>patches in the series are more to show the direction, and seek
>>validation for that direction.
>>
>>Naming is also a question mark. All of these are a bit questionable:
>>intel_bios_encoder_data, devdata, intel_bios_encoder_supports_*, etc.
>>
>>BR,
>>Jani.
>>
>>
>>[1] http://patchwork.freedesktop.org/patch/msgid/20210213190511.1017088-2-lucas.demarchi@intel.com
>>
>>
>>
>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>>
>>Jani Nikula (12):
>>  drm/i915/bios: mass convert dev_priv to i915
>>  drm/i915/bios: store bdb version in i915
>>  drm/i915/bios: limit default outputs by platform on missing VBT
>>  drm/i915/bios: limit default outputs to ports A through F
>>  drm/i915/bios: create fake child devices on missing VBT
>>  drm/i915/bios: rename display_device_data to intel_bios_encoder_data
>>  drm/i915/bios: add i915 backpointer to intel_bios_encoder_data
>>  drm/i915/vbt: add helper functions to check output support
>>  drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
>>  drm/i915/bios: start using the intel_bios_encoder_data directly
>>  drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and
>>    TBT
>>  drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost
>>
>> drivers/gpu/drm/i915/display/intel_bios.c     | 1021 +++++++++--------
>> drivers/gpu/drm/i915/display/intel_bios.h     |   17 +-
>> drivers/gpu/drm/i915/display/intel_ddi.c      |   28 +-
>> .../drm/i915/display/intel_display_types.h    |    3 +
>> drivers/gpu/drm/i915/i915_drv.h               |    9 +-
>> 5 files changed, 584 insertions(+), 494 deletions(-)
>>
>>-- 
>>2.20.1
>>

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-17 19:49       ` Jani Nikula
@ 2021-02-17 19:58         ` Lucas De Marchi
  2021-02-23 13:34           ` Jani Nikula
  0 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-17 19:58 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 09:49:57PM +0200, Jani Nikula wrote:
>On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>> On Wed, Feb 17, 2021 at 09:23:00AM -0800, Lucas De Marchi wrote:
>>>On Wed, Feb 17, 2021 at 07:03:34PM +0200, Jani Nikula wrote:
>>>>With the defaults limited to non-TypeC ports in commit 828ccb31cf41
>>>>("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
>>>>a no-op, but clarifies the code and prepares for subsequent changes.
>>>>
>>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>>---
>>>>drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
>>>>1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>index e9cb15aa2f5a..b9d99324d66d 100644
>>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>@@ -2057,11 +2057,12 @@ static void
>>>>init_vbt_missing_defaults(struct drm_i915_private *i915)
>>>>{
>>>>	enum port port;
>>>>+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;
>>>
>>>
>>>I'd not spread the knowledge of what port uses tc phy like this.
>>>It's painful to maintain.
>
>Umm, this wasn't meant to have anything to do with tc, really. Granted,
>the commit message is misleading.

ok, makes more sense now. I don't want us to keep updating this function
when the ports change on new platforms.

>
>>
>> also, not sure how this clarifies things if PORT_TC1 aliases PORT_D,
>> so I'd just drop this patch
>
>The point is that I'd like to reduce the number of ports set up by
>default, perhaps even further than this. It's a bit silly to generate 9
>dummy child devices on certain platforms when there's no VBT.

ok. So what would be the devices without vbt? I remember relying on this
for e.g. dg1 before we could read it.

What other platforms should we care about? And for those, should we
really care about ports E and F or could we reduce it to, say the first
4?

thanks
Lucas De Marchi

>
>
>BR,
>Jani.
>
>>
>> Lucas De Marchi
>>
>>>Lucas De Marchi
>>>
>>>>
>>>>	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>>>		return;
>>>>
>>>>-	for_each_port(port) {
>>>>+	for_each_port_masked(port, ports) {
>>>>		struct ddi_vbt_port_info *info =
>>>>			&i915->vbt.ddi_port_info[port];
>>>>		enum phy phy = intel_port_to_phy(i915, port);
>>>>--
>>>>2.20.1
>>>>
>> _______________________________________________
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>-- 
>Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/bios: vbt child device rework
  2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
                   ` (14 preceding siblings ...)
  2021-02-17 17:54 ` [Intel-gfx] [PATCH 00/12] " Lucas De Marchi
@ 2021-02-17 20:52 ` Patchwork
  15 siblings, 0 replies; 40+ messages in thread
From: Patchwork @ 2021-02-17 20:52 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx


[-- Attachment #1.1: Type: text/plain, Size: 30261 bytes --]

== Series Details ==

Series: drm/i915/bios: vbt child device rework
URL   : https://patchwork.freedesktop.org/series/87165/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_9782_full -> Patchwork_19696_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Known issues
------------

  Here are the changes found in Patchwork_19696_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_persistence@close-replace-race:
    - shard-glk:          [PASS][1] -> [TIMEOUT][2] ([i915#2918])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-glk1/igt@gem_ctx_persistence@close-replace-race.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-glk8/igt@gem_ctx_persistence@close-replace-race.html

  * igt@gem_ctx_persistence@smoketest:
    - shard-snb:          NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#1099]) +4 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-snb2/igt@gem_ctx_persistence@smoketest.html

  * igt@gem_eio@in-flight-contexts-immediate:
    - shard-iclb:         [PASS][4] -> [TIMEOUT][5] ([i915#3070])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb8/igt@gem_eio@in-flight-contexts-immediate.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb1/igt@gem_eio@in-flight-contexts-immediate.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-kbl:          [PASS][6] -> [FAIL][7] ([i915#2842]) +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl6/igt@gem_exec_fair@basic-none@vcs0.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl2/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_reloc@basic-many-active@vcs0:
    - shard-kbl:          NOTRUN -> [FAIL][8] ([i915#2389]) +4 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@gem_exec_reloc@basic-many-active@vcs0.html

  * igt@gem_exec_reloc@basic-many-active@vcs1:
    - shard-iclb:         NOTRUN -> [FAIL][9] ([i915#2389])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb1/igt@gem_exec_reloc@basic-many-active@vcs1.html

  * igt@gem_exec_reloc@basic-parallel:
    - shard-apl:          NOTRUN -> [TIMEOUT][10] ([i915#1729])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl2/igt@gem_exec_reloc@basic-parallel.html

  * igt@gem_exec_schedule@u-fairslice@rcs0:
    - shard-iclb:         [PASS][11] -> [DMESG-WARN][12] ([i915#2803])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb2/igt@gem_exec_schedule@u-fairslice@rcs0.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb5/igt@gem_exec_schedule@u-fairslice@rcs0.html

  * igt@gem_exec_schedule@u-fairslice@vcs1:
    - shard-tglb:         [PASS][13] -> [DMESG-WARN][14] ([i915#2803])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb3/igt@gem_exec_schedule@u-fairslice@vcs1.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb6/igt@gem_exec_schedule@u-fairslice@vcs1.html

  * igt@gem_exec_schedule@u-fairslice@vecs0:
    - shard-skl:          [PASS][15] -> [DMESG-WARN][16] ([i915#1610] / [i915#2803])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl2/igt@gem_exec_schedule@u-fairslice@vecs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl7/igt@gem_exec_schedule@u-fairslice@vecs0.html

  * igt@gem_huc_copy@huc-copy:
    - shard-kbl:          NOTRUN -> [SKIP][17] ([fdo#109271] / [i915#2190])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl6/igt@gem_huc_copy@huc-copy.html

  * igt@gem_pwrite@basic-exhaustion:
    - shard-snb:          NOTRUN -> [WARN][18] ([i915#2658])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-snb2/igt@gem_pwrite@basic-exhaustion.html

  * igt@gem_userptr_blits@input-checking:
    - shard-apl:          NOTRUN -> [DMESG-WARN][19] ([i915#3002])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl2/igt@gem_userptr_blits@input-checking.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-snb:          NOTRUN -> [FAIL][20] ([i915#2724])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-snb2/igt@gem_userptr_blits@vma-merge.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-skl:          [PASS][21] -> [DMESG-WARN][22] ([i915#1436] / [i915#716])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl1/igt@gen9_exec_parse@allowed-all.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl7/igt@gen9_exec_parse@allowed-all.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-kbl:          NOTRUN -> [FAIL][23] ([i915#454])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp:
    - shard-kbl:          NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#1937])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp.html

  * igt@i915_selftest@live@hangcheck:
    - shard-skl:          NOTRUN -> [INCOMPLETE][25] ([i915#2782])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl6/igt@i915_selftest@live@hangcheck.html

  * igt@kms_ccs@pipe-a-ccs-on-another-bo:
    - shard-snb:          NOTRUN -> [SKIP][26] ([fdo#109271]) +303 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-snb2/igt@kms_ccs@pipe-a-ccs-on-another-bo.html

  * igt@kms_chamelium@dp-mode-timings:
    - shard-apl:          NOTRUN -> [SKIP][27] ([fdo#109271] / [fdo#111827]) +11 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl1/igt@kms_chamelium@dp-mode-timings.html

  * igt@kms_chamelium@hdmi-hpd-storm:
    - shard-kbl:          NOTRUN -> [SKIP][28] ([fdo#109271] / [fdo#111827]) +21 similar issues
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl1/igt@kms_chamelium@hdmi-hpd-storm.html

  * igt@kms_chamelium@vga-hpd-without-ddc:
    - shard-skl:          NOTRUN -> [SKIP][29] ([fdo#109271] / [fdo#111827]) +2 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl10/igt@kms_chamelium@vga-hpd-without-ddc.html

  * igt@kms_color@pipe-d-ctm-0-5:
    - shard-skl:          NOTRUN -> [SKIP][30] ([fdo#109271]) +42 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl10/igt@kms_color@pipe-d-ctm-0-5.html

  * igt@kms_color@pipe-invalid-gamma-lut-sizes:
    - shard-kbl:          [PASS][31] -> [DMESG-WARN][32] ([i915#165])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl1/igt@kms_color@pipe-invalid-gamma-lut-sizes.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl2/igt@kms_color@pipe-invalid-gamma-lut-sizes.html

  * igt@kms_color_chamelium@pipe-c-ctm-green-to-red:
    - shard-snb:          NOTRUN -> [SKIP][33] ([fdo#109271] / [fdo#111827]) +17 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-snb2/igt@kms_color_chamelium@pipe-c-ctm-green-to-red.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-apl:          NOTRUN -> [TIMEOUT][34] ([i915#1319])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl2/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
    - shard-apl:          NOTRUN -> [DMESG-WARN][35] ([i915#180])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl1/igt@kms_cursor_crc@pipe-a-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-c-cursor-64x64-random:
    - shard-skl:          [PASS][36] -> [FAIL][37] ([i915#54]) +5 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl7/igt@kms_cursor_crc@pipe-c-cursor-64x64-random.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl5/igt@kms_cursor_crc@pipe-c-cursor-64x64-random.html

  * igt@kms_cursor_legacy@cursor-vs-flip-toggle:
    - shard-hsw:          [PASS][38] -> [FAIL][39] ([i915#2370])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-hsw4/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-hsw1/igt@kms_cursor_legacy@cursor-vs-flip-toggle.html

  * igt@kms_cursor_legacy@pipe-d-single-bo:
    - shard-kbl:          NOTRUN -> [SKIP][40] ([fdo#109271] / [i915#533]) +1 similar issue
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl1/igt@kms_cursor_legacy@pipe-d-single-bo.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
    - shard-tglb:         [PASS][41] -> [FAIL][42] ([i915#2598])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb2/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb8/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html

  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:
    - shard-skl:          NOTRUN -> [FAIL][43] ([i915#79])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl1/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs:
    - shard-kbl:          NOTRUN -> [FAIL][44] ([i915#2641])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs:
    - shard-apl:          NOTRUN -> [SKIP][45] ([fdo#109271] / [i915#2672])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile:
    - shard-kbl:          NOTRUN -> [SKIP][46] ([fdo#109271] / [i915#2642]) +1 similar issue
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
    - shard-hsw:          NOTRUN -> [SKIP][47] ([fdo#109271])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-hsw8/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-kbl:          NOTRUN -> [SKIP][48] ([fdo#109271]) +166 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d:
    - shard-apl:          NOTRUN -> [SKIP][49] ([fdo#109271] / [i915#533]) +2 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl1/igt@kms_pipe_crc_basic@disable-crc-after-crtc-pipe-d.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb:
    - shard-kbl:          NOTRUN -> [FAIL][50] ([i915#265])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max:
    - shard-kbl:          NOTRUN -> [FAIL][51] ([fdo#108145] / [i915#265])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-max.html

  * igt@kms_plane_alpha_blend@pipe-c-alpha-basic:
    - shard-apl:          NOTRUN -> [FAIL][52] ([fdo#108145] / [i915#265])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl6/igt@kms_plane_alpha_blend@pipe-c-alpha-basic.html
    - shard-skl:          NOTRUN -> [FAIL][53] ([fdo#108145] / [i915#265])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl1/igt@kms_plane_alpha_blend@pipe-c-alpha-basic.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
    - shard-skl:          [PASS][54] -> [FAIL][55] ([fdo#108145] / [i915#265]) +1 similar issue
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl3/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl6/igt@kms_plane_alpha_blend@pipe-c-coverage-7efc.html

  * igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-2:
    - shard-apl:          NOTRUN -> [SKIP][56] ([fdo#109271] / [i915#658]) +3 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl6/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-2.html
    - shard-skl:          NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#658])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl1/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-2.html

  * igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3:
    - shard-kbl:          NOTRUN -> [SKIP][58] ([fdo#109271] / [i915#658]) +4 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3.html

  * igt@kms_psr@psr2_cursor_plane_move:
    - shard-iclb:         [PASS][59] -> [SKIP][60] ([fdo#109441]) +1 similar issue
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb2/igt@kms_psr@psr2_cursor_plane_move.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb4/igt@kms_psr@psr2_cursor_plane_move.html

  * igt@kms_pwrite_crc:
    - shard-kbl:          [PASS][61] -> [DMESG-WARN][62] ([i915#180] / [i915#78])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl1/igt@kms_pwrite_crc.html
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl2/igt@kms_pwrite_crc.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-apl:          NOTRUN -> [SKIP][63] ([fdo#109271] / [i915#2437])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl6/igt@kms_writeback@writeback-fb-id.html

  * igt@nouveau_crc@pipe-b-ctx-flip-skip-current-frame:
    - shard-apl:          NOTRUN -> [SKIP][64] ([fdo#109271]) +94 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl6/igt@nouveau_crc@pipe-b-ctx-flip-skip-current-frame.html

  * igt@sysfs_clients@recycle:
    - shard-hsw:          [PASS][65] -> [FAIL][66] ([i915#3028]) +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-hsw1/igt@sysfs_clients@recycle.html
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-hsw1/igt@sysfs_clients@recycle.html

  * igt@sysfs_clients@recycle-many:
    - shard-apl:          [PASS][67] -> [FAIL][68] ([i915#3028])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-apl8/igt@sysfs_clients@recycle-many.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl3/igt@sysfs_clients@recycle-many.html

  * igt@sysfs_clients@sema-10@vcs0:
    - shard-kbl:          [PASS][69] -> [SKIP][70] ([fdo#109271] / [i915#3026])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl4/igt@sysfs_clients@sema-10@vcs0.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl6/igt@sysfs_clients@sema-10@vcs0.html

  * igt@sysfs_clients@split-10@bcs0:
    - shard-apl:          [PASS][71] -> [SKIP][72] ([fdo#109271] / [i915#3026])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-apl8/igt@sysfs_clients@split-10@bcs0.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl3/igt@sysfs_clients@split-10@bcs0.html
    - shard-kbl:          NOTRUN -> [SKIP][73] ([fdo#109271] / [i915#3026])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@sysfs_clients@split-10@bcs0.html

  * igt@testdisplay:
    - shard-kbl:          [PASS][74] -> [DMESG-WARN][75] ([i915#165] / [i915#180] / [i915#78])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl6/igt@testdisplay.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl2/igt@testdisplay.html

  
#### Possible fixes ####

  * igt@gem_ctx_clone@flags:
    - shard-skl:          [DMESG-WARN][76] ([i915#1982]) -> [PASS][77] +1 similar issue
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl7/igt@gem_ctx_clone@flags.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl5/igt@gem_ctx_clone@flags.html

  * igt@gem_eio@unwedge-stress:
    - shard-tglb:         [TIMEOUT][78] ([i915#1037] / [i915#3063]) -> [PASS][79]
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb3/igt@gem_eio@unwedge-stress.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb7/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_create@legacy:
    - shard-glk:          [DMESG-WARN][80] ([i915#118] / [i915#95]) -> [PASS][81]
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-glk4/igt@gem_exec_create@legacy.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-glk6/igt@gem_exec_create@legacy.html

  * igt@gem_exec_fair@basic-flow@rcs0:
    - shard-tglb:         [FAIL][82] ([i915#2842]) -> [PASS][83] +4 similar issues
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb2/igt@gem_exec_fair@basic-flow@rcs0.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb2/igt@gem_exec_fair@basic-flow@rcs0.html

  * igt@gem_exec_fair@basic-none@rcs0:
    - shard-kbl:          [FAIL][84] ([i915#2842]) -> [PASS][85]
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl6/igt@gem_exec_fair@basic-none@rcs0.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl2/igt@gem_exec_fair@basic-none@rcs0.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-skl:          [DMESG-WARN][86] ([i915#1436] / [i915#716]) -> [PASS][87]
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl10/igt@gen9_exec_parse@allowed-single.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl1/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_selftest@live@gem_contexts:
    - shard-skl:          [INCOMPLETE][88] ([i915#198] / [i915#2782]) -> [PASS][89]
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl4/igt@i915_selftest@live@gem_contexts.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl6/igt@i915_selftest@live@gem_contexts.html

  * igt@i915_selftest@live@hangcheck:
    - shard-hsw:          [INCOMPLETE][90] ([i915#2782]) -> [PASS][91]
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-hsw7/igt@i915_selftest@live@hangcheck.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-hsw8/igt@i915_selftest@live@hangcheck.html

  * igt@kms_async_flips@test-time-stamp:
    - shard-tglb:         [FAIL][92] ([i915#2597]) -> [PASS][93]
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb5/igt@kms_async_flips@test-time-stamp.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb3/igt@kms_async_flips@test-time-stamp.html

  * igt@kms_cursor_crc@pipe-b-cursor-128x128-random:
    - shard-skl:          [FAIL][94] ([i915#54]) -> [PASS][95] +8 similar issues
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl4/igt@kms_cursor_crc@pipe-b-cursor-128x128-random.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl4/igt@kms_cursor_crc@pipe-b-cursor-128x128-random.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1:
    - shard-apl:          [FAIL][96] ([i915#79]) -> [PASS][97]
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-apl8/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl3/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1.html

  * igt@kms_hdr@bpc-switch:
    - shard-skl:          [FAIL][98] ([i915#1188]) -> [PASS][99]
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl8/igt@kms_hdr@bpc-switch.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl9/igt@kms_hdr@bpc-switch.html

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:
    - shard-skl:          [FAIL][100] ([fdo#108145] / [i915#265]) -> [PASS][101]
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl2/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl10/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [SKIP][102] ([fdo#109441]) -> [PASS][103] +2 similar issues
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb5/igt@kms_psr@psr2_sprite_plane_move.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@sysfs_clients@busy@bcs0:
    - shard-skl:          [FAIL][104] ([i915#3019]) -> [PASS][105]
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl7/igt@sysfs_clients@busy@bcs0.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl5/igt@sysfs_clients@busy@bcs0.html

  * igt@sysfs_clients@recycle-many:
    - shard-iclb:         [FAIL][106] ([i915#3028]) -> [PASS][107] +1 similar issue
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb1/igt@sysfs_clients@recycle-many.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb7/igt@sysfs_clients@recycle-many.html
    - shard-kbl:          [FAIL][108] ([i915#3028]) -> [PASS][109]
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-kbl6/igt@sysfs_clients@recycle-many.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-kbl4/igt@sysfs_clients@recycle-many.html

  * igt@sysfs_clients@split-25@vecs0:
    - shard-skl:          [SKIP][110] ([fdo#109271]) -> [PASS][111]
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl8/igt@sysfs_clients@split-25@vecs0.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl9/igt@sysfs_clients@split-25@vecs0.html

  
#### Warnings ####

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-iclb:         [FAIL][112] ([i915#2849]) -> [FAIL][113] ([i915#2842])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb7/igt@gem_exec_fair@basic-throttle@rcs0.html
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb6/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-iclb:         [WARN][114] ([i915#1804] / [i915#2684]) -> [WARN][115] ([i915#2684])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb4/igt@i915_pm_rc6_residency@rc6-idle.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb2/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@kms_psr2_sf@cursor-plane-update-sf:
    - shard-iclb:         [SKIP][116] ([i915#658]) -> [SKIP][117] ([i915#2920]) +2 similar issues
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb5/igt@kms_psr2_sf@cursor-plane-update-sf.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb2/igt@kms_psr2_sf@cursor-plane-update-sf.html

  * igt@kms_psr2_sf@plane-move-sf-dmg-area-3:
    - shard-iclb:         [SKIP][118] ([i915#2920]) -> [SKIP][119] ([i915#658]) +1 similar issue
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb2/igt@kms_psr2_sf@plane-move-sf-dmg-area-3.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb6/igt@kms_psr2_sf@plane-move-sf-dmg-area-3.html

  * igt@runner@aborted:
    - shard-iclb:         ([FAIL][120], [FAIL][121], [FAIL][122]) ([i915#2295] / [i915#2724] / [i915#3002]) -> ([FAIL][123], [FAIL][124], [FAIL][125]) ([i915#2295] / [i915#2426] / [i915#2724] / [i915#3002])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb8/igt@runner@aborted.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb4/igt@runner@aborted.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-iclb2/igt@runner@aborted.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb2/igt@runner@aborted.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb8/igt@runner@aborted.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-iclb5/igt@runner@aborted.html
    - shard-apl:          ([FAIL][126], [FAIL][127], [FAIL][128]) ([i915#2295] / [i915#3002]) -> ([FAIL][129], [FAIL][130], [FAIL][131], [FAIL][132]) ([i915#1814] / [i915#2295] / [i915#3002])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-apl6/igt@runner@aborted.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-apl1/igt@runner@aborted.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-apl1/igt@runner@aborted.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl8/igt@runner@aborted.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl1/igt@runner@aborted.html
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl2/igt@runner@aborted.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-apl2/igt@runner@aborted.html
    - shard-tglb:         ([FAIL][133], [FAIL][134], [FAIL][135]) ([i915#2295] / [i915#2667] / [i915#3002]) -> ([FAIL][136], [FAIL][137], [FAIL][138]) ([i915#2295] / [i915#2426] / [i915#2667] / [i915#2803] / [i915#3002])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb8/igt@runner@aborted.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb7/igt@runner@aborted.html
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-tglb3/igt@runner@aborted.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb6/igt@runner@aborted.html
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb8/igt@runner@aborted.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-tglb6/igt@runner@aborted.html
    - shard-skl:          ([FAIL][139], [FAIL][140], [FAIL][141], [FAIL][142]) ([i915#1436] / [i915#2295] / [i915#3002]) -> ([FAIL][143], [FAIL][144], [FAIL][145]) ([i915#1436] / [i915#2295] / [i915#2426] / [i915#3002])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl3/igt@runner@aborted.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl1/igt@runner@aborted.html
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl10/igt@runner@aborted.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_9782/shard-skl2/igt@runner@aborted.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl7/igt@runner@aborted.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl7/igt@runner@aborted.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/shard-skl2/igt@runner@aborted.html

  
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1037]: https://gitlab.freedesktop.org/drm/intel/issues/1037
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1610]: https://gitlab.freedesktop.org/drm/intel/issues/1610
  [i915#165]: https://gitlab.freedesktop.org/drm/intel/issues/165
  [i915#1729]: https://gitlab.freedesktop.org/drm/intel/issues/1729
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1804]: https://gitlab.freedesktop.org/drm/intel/issues/1804
  [i915#1814]: https://gitlab.freedesktop.org/drm/intel/issues/1814
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2295]: https://gitlab.freedesktop.org/drm/intel/issues/2295
  [i915#2370]: https://gitlab.freedesktop.org/drm/intel/issues/2370
  [i915#2389]: https://gitlab.freedesktop.org/drm/intel/issues/2389
  [i915#2426]: https://gitlab.freedesktop.org/drm/intel/issues/2426
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2597]: https://gitlab.freedesktop.org/drm/intel/issues/2597
  [i915#2598]: https://gitlab.freedesktop.org/drm/intel/issues/2598
  [i915#2641]: https://gitlab.freedesktop.org/drm/intel/issues/2641
  [i915#2642]: https://gitlab.freedesktop.org/drm/intel/issues/2642
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2667]: https://gitlab.freedesktop.org/drm/intel/issues/2667
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2684]: https://gitlab.freedesktop.org/drm/intel/issues/2684
  [i915#2724]: https://gitlab.freedesktop.org/drm/intel/issues/2724
  [i915#2782]: https://gitlab.freedesktop.org/drm/intel/issues/2782
  [i915#2803]: https://gitlab.freedesktop.org/drm/intel/issues/2803
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2849]:

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19696/index.html

[-- Attachment #1.2: Type: text/html, Size: 37521 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915 Jani Nikula
@ 2021-02-22 18:14   ` Ville Syrjälä
  0 siblings, 0 replies; 40+ messages in thread
From: Ville Syrjälä @ 2021-02-22 18:14 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, Lucas De Marchi

On Wed, Feb 17, 2021 at 07:03:31PM +0200, Jani Nikula wrote:
> Time to just yank out the bandage. No functional changes.
> 
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 766 +++++++++++-----------
>  1 file changed, 383 insertions(+), 383 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 7902d4c2673e..802c228b2940 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -211,7 +211,7 @@ get_lvds_fp_timing(const struct bdb_header *bdb,
>  
>  /* Parse general panel options */
>  static void
> -parse_panel_options(struct drm_i915_private *dev_priv,
> +parse_panel_options(struct drm_i915_private *i915,
>  		    const struct bdb_header *bdb)
>  {
>  	const struct bdb_lvds_options *lvds_options;
> @@ -223,27 +223,27 @@ parse_panel_options(struct drm_i915_private *dev_priv,
>  	if (!lvds_options)
>  		return;
>  
> -	dev_priv->vbt.lvds_dither = lvds_options->pixel_dither;
> +	i915->vbt.lvds_dither = lvds_options->pixel_dither;
>  
> -	ret = intel_opregion_get_panel_type(dev_priv);
> +	ret = intel_opregion_get_panel_type(i915);
>  	if (ret >= 0) {
> -		drm_WARN_ON(&dev_priv->drm, ret > 0xf);
> +		drm_WARN_ON(&i915->drm, ret > 0xf);
>  		panel_type = ret;
> -		drm_dbg_kms(&dev_priv->drm, "Panel type: %d (OpRegion)\n",
> +		drm_dbg_kms(&i915->drm, "Panel type: %d (OpRegion)\n",
>  			    panel_type);
>  	} else {
>  		if (lvds_options->panel_type > 0xf) {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "Invalid VBT panel type 0x%x\n",
>  				    lvds_options->panel_type);
>  			return;
>  		}
>  		panel_type = lvds_options->panel_type;
> -		drm_dbg_kms(&dev_priv->drm, "Panel type: %d (VBT)\n",
> +		drm_dbg_kms(&i915->drm, "Panel type: %d (VBT)\n",
>  			    panel_type);
>  	}
>  
> -	dev_priv->vbt.panel_type = panel_type;
> +	i915->vbt.panel_type = panel_type;
>  
>  	drrs_mode = (lvds_options->dps_panel_type_bits
>  				>> (panel_type * 2)) & MODE_MASK;
> @@ -254,17 +254,17 @@ parse_panel_options(struct drm_i915_private *dev_priv,
>  	 */
>  	switch (drrs_mode) {
>  	case 0:
> -		dev_priv->vbt.drrs_type = STATIC_DRRS_SUPPORT;
> -		drm_dbg_kms(&dev_priv->drm, "DRRS supported mode is static\n");
> +		i915->vbt.drrs_type = STATIC_DRRS_SUPPORT;
> +		drm_dbg_kms(&i915->drm, "DRRS supported mode is static\n");
>  		break;
>  	case 2:
> -		dev_priv->vbt.drrs_type = SEAMLESS_DRRS_SUPPORT;
> -		drm_dbg_kms(&dev_priv->drm,
> +		i915->vbt.drrs_type = SEAMLESS_DRRS_SUPPORT;
> +		drm_dbg_kms(&i915->drm,
>  			    "DRRS supported mode is seamless\n");
>  		break;
>  	default:
> -		dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED;
> -		drm_dbg_kms(&dev_priv->drm,
> +		i915->vbt.drrs_type = DRRS_NOT_SUPPORTED;
> +		drm_dbg_kms(&i915->drm,
>  			    "DRRS not supported (VBT input)\n");
>  		break;
>  	}
> @@ -272,7 +272,7 @@ parse_panel_options(struct drm_i915_private *dev_priv,
>  
>  /* Try to find integrated panel timing data */
>  static void
> -parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
> +parse_lfp_panel_dtd(struct drm_i915_private *i915,
>  		    const struct bdb_header *bdb)
>  {
>  	const struct bdb_lvds_lfp_data *lvds_lfp_data;
> @@ -280,7 +280,7 @@ parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
>  	const struct lvds_dvo_timing *panel_dvo_timing;
>  	const struct lvds_fp_timing *fp_timing;
>  	struct drm_display_mode *panel_fixed_mode;
> -	int panel_type = dev_priv->vbt.panel_type;
> +	int panel_type = i915->vbt.panel_type;
>  
>  	lvds_lfp_data = find_section(bdb, BDB_LVDS_LFP_DATA);
>  	if (!lvds_lfp_data)
> @@ -300,9 +300,9 @@ parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
>  
>  	fill_detail_timing_data(panel_fixed_mode, panel_dvo_timing);
>  
> -	dev_priv->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
> +	i915->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "Found panel mode in BIOS VBT legacy lfp table:\n");
>  	drm_mode_debug_printmodeline(panel_fixed_mode);
>  
> @@ -313,16 +313,16 @@ parse_lfp_panel_dtd(struct drm_i915_private *dev_priv,
>  		/* check the resolution, just to be sure */
>  		if (fp_timing->x_res == panel_fixed_mode->hdisplay &&
>  		    fp_timing->y_res == panel_fixed_mode->vdisplay) {
> -			dev_priv->vbt.bios_lvds_val = fp_timing->lvds_reg_val;
> -			drm_dbg_kms(&dev_priv->drm,
> +			i915->vbt.bios_lvds_val = fp_timing->lvds_reg_val;
> +			drm_dbg_kms(&i915->drm,
>  				    "VBT initial LVDS value %x\n",
> -				    dev_priv->vbt.bios_lvds_val);
> +				    i915->vbt.bios_lvds_val);
>  		}
>  	}
>  }
>  
>  static void
> -parse_generic_dtd(struct drm_i915_private *dev_priv,
> +parse_generic_dtd(struct drm_i915_private *i915,
>  		  const struct bdb_header *bdb)
>  {
>  	const struct bdb_generic_dtd *generic_dtd;
> @@ -335,26 +335,26 @@ parse_generic_dtd(struct drm_i915_private *dev_priv,
>  		return;
>  
>  	if (generic_dtd->gdtd_size < sizeof(struct generic_dtd_entry)) {
> -		drm_err(&dev_priv->drm, "GDTD size %u is too small.\n",
> +		drm_err(&i915->drm, "GDTD size %u is too small.\n",
>  			generic_dtd->gdtd_size);
>  		return;
>  	} else if (generic_dtd->gdtd_size !=
>  		   sizeof(struct generic_dtd_entry)) {
> -		drm_err(&dev_priv->drm, "Unexpected GDTD size %u\n",
> +		drm_err(&i915->drm, "Unexpected GDTD size %u\n",
>  			generic_dtd->gdtd_size);
>  		/* DTD has unknown fields, but keep going */
>  	}
>  
>  	num_dtd = (get_blocksize(generic_dtd) -
>  		   sizeof(struct bdb_generic_dtd)) / generic_dtd->gdtd_size;
> -	if (dev_priv->vbt.panel_type >= num_dtd) {
> -		drm_err(&dev_priv->drm,
> +	if (i915->vbt.panel_type >= num_dtd) {
> +		drm_err(&i915->drm,
>  			"Panel type %d not found in table of %d DTD's\n",
> -			dev_priv->vbt.panel_type, num_dtd);
> +			i915->vbt.panel_type, num_dtd);
>  		return;
>  	}
>  
> -	dtd = &generic_dtd->dtd[dev_priv->vbt.panel_type];
> +	dtd = &generic_dtd->dtd[i915->vbt.panel_type];
>  
>  	panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode), GFP_KERNEL);
>  	if (!panel_fixed_mode)
> @@ -393,15 +393,15 @@ parse_generic_dtd(struct drm_i915_private *dev_priv,
>  	else
>  		panel_fixed_mode->flags |= DRM_MODE_FLAG_NVSYNC;
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "Found panel mode in BIOS VBT generic dtd table:\n");
>  	drm_mode_debug_printmodeline(panel_fixed_mode);
>  
> -	dev_priv->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
> +	i915->vbt.lfp_lvds_vbt_mode = panel_fixed_mode;
>  }
>  
>  static void
> -parse_panel_dtd(struct drm_i915_private *dev_priv,
> +parse_panel_dtd(struct drm_i915_private *i915,
>  		const struct bdb_header *bdb)
>  {
>  	/*
> @@ -413,18 +413,18 @@ parse_panel_dtd(struct drm_i915_private *dev_priv,
>  	 * back to trying the old LFP block if that fails.
>  	 */
>  	if (bdb->version >= 229)
> -		parse_generic_dtd(dev_priv, bdb);
> -	if (!dev_priv->vbt.lfp_lvds_vbt_mode)
> -		parse_lfp_panel_dtd(dev_priv, bdb);
> +		parse_generic_dtd(i915, bdb);
> +	if (!i915->vbt.lfp_lvds_vbt_mode)
> +		parse_lfp_panel_dtd(i915, bdb);
>  }
>  
>  static void
> -parse_lfp_backlight(struct drm_i915_private *dev_priv,
> +parse_lfp_backlight(struct drm_i915_private *i915,
>  		    const struct bdb_header *bdb)
>  {
>  	const struct bdb_lfp_backlight_data *backlight_data;
>  	const struct lfp_backlight_data_entry *entry;
> -	int panel_type = dev_priv->vbt.panel_type;
> +	int panel_type = i915->vbt.panel_type;
>  	u16 level;
>  
>  	backlight_data = find_section(bdb, BDB_LVDS_BACKLIGHT);
> @@ -432,7 +432,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
>  		return;
>  
>  	if (backlight_data->entry_size != sizeof(backlight_data->data[0])) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Unsupported backlight data entry size %u\n",
>  			    backlight_data->entry_size);
>  		return;
> @@ -440,26 +440,26 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
>  
>  	entry = &backlight_data->data[panel_type];
>  
> -	dev_priv->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
> -	if (!dev_priv->vbt.backlight.present) {
> -		drm_dbg_kms(&dev_priv->drm,
> +	i915->vbt.backlight.present = entry->type == BDB_BACKLIGHT_TYPE_PWM;
> +	if (!i915->vbt.backlight.present) {
> +		drm_dbg_kms(&i915->drm,
>  			    "PWM backlight not present in VBT (type %u)\n",
>  			    entry->type);
>  		return;
>  	}
>  
> -	dev_priv->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI;
> +	i915->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI;
>  	if (bdb->version >= 191 &&
>  	    get_blocksize(backlight_data) >= sizeof(*backlight_data)) {
>  		const struct lfp_backlight_control_method *method;
>  
>  		method = &backlight_data->backlight_control[panel_type];
> -		dev_priv->vbt.backlight.type = method->type;
> -		dev_priv->vbt.backlight.controller = method->controller;
> +		i915->vbt.backlight.type = method->type;
> +		i915->vbt.backlight.controller = method->controller;
>  	}
>  
> -	dev_priv->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
> -	dev_priv->vbt.backlight.active_low_pwm = entry->active_low_pwm;
> +	i915->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
> +	i915->vbt.backlight.active_low_pwm = entry->active_low_pwm;
>  
>  	if (bdb->version >= 234) {
>  		u16 min_level;
> @@ -477,37 +477,37 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv,
>  			min_level = min_level / 255;
>  
>  		if (min_level > 255) {
> -			drm_warn(&dev_priv->drm, "Brightness min level > 255\n");
> +			drm_warn(&i915->drm, "Brightness min level > 255\n");
>  			level = 255;
>  		}
> -		dev_priv->vbt.backlight.min_brightness = min_level;
> +		i915->vbt.backlight.min_brightness = min_level;
>  	} else {
>  		level = backlight_data->level[panel_type];
> -		dev_priv->vbt.backlight.min_brightness = entry->min_brightness;
> +		i915->vbt.backlight.min_brightness = entry->min_brightness;
>  	}
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "VBT backlight PWM modulation frequency %u Hz, "
>  		    "active %s, min brightness %u, level %u, controller %u\n",
> -		    dev_priv->vbt.backlight.pwm_freq_hz,
> -		    dev_priv->vbt.backlight.active_low_pwm ? "low" : "high",
> -		    dev_priv->vbt.backlight.min_brightness,
> +		    i915->vbt.backlight.pwm_freq_hz,
> +		    i915->vbt.backlight.active_low_pwm ? "low" : "high",
> +		    i915->vbt.backlight.min_brightness,
>  		    level,
> -		    dev_priv->vbt.backlight.controller);
> +		    i915->vbt.backlight.controller);
>  }
>  
>  /* Try to find sdvo panel data */
>  static void
> -parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
> +parse_sdvo_panel_data(struct drm_i915_private *i915,
>  		      const struct bdb_header *bdb)
>  {
>  	const struct bdb_sdvo_panel_dtds *dtds;
>  	struct drm_display_mode *panel_fixed_mode;
>  	int index;
>  
> -	index = dev_priv->params.vbt_sdvo_panel_type;
> +	index = i915->params.vbt_sdvo_panel_type;
>  	if (index == -2) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Ignore SDVO panel mode from BIOS VBT tables.\n");
>  		return;
>  	}
> @@ -532,17 +532,17 @@ parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
>  
>  	fill_detail_timing_data(panel_fixed_mode, &dtds->dtds[index]);
>  
> -	dev_priv->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode;
> +	i915->vbt.sdvo_lvds_vbt_mode = panel_fixed_mode;
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "Found SDVO panel mode in BIOS VBT tables:\n");
>  	drm_mode_debug_printmodeline(panel_fixed_mode);
>  }
>  
> -static int intel_bios_ssc_frequency(struct drm_i915_private *dev_priv,
> +static int intel_bios_ssc_frequency(struct drm_i915_private *i915,
>  				    bool alternate)
>  {
> -	switch (INTEL_GEN(dev_priv)) {
> +	switch (INTEL_GEN(i915)) {
>  	case 2:
>  		return alternate ? 66667 : 48000;
>  	case 3:
> @@ -554,7 +554,7 @@ static int intel_bios_ssc_frequency(struct drm_i915_private *dev_priv,
>  }
>  
>  static void
> -parse_general_features(struct drm_i915_private *dev_priv,
> +parse_general_features(struct drm_i915_private *i915,
>  		       const struct bdb_header *bdb)
>  {
>  	const struct bdb_general_features *general;
> @@ -563,31 +563,31 @@ parse_general_features(struct drm_i915_private *dev_priv,
>  	if (!general)
>  		return;
>  
> -	dev_priv->vbt.int_tv_support = general->int_tv_support;
> +	i915->vbt.int_tv_support = general->int_tv_support;
>  	/* int_crt_support can't be trusted on earlier platforms */
>  	if (bdb->version >= 155 &&
> -	    (HAS_DDI(dev_priv) || IS_VALLEYVIEW(dev_priv)))
> -		dev_priv->vbt.int_crt_support = general->int_crt_support;
> -	dev_priv->vbt.lvds_use_ssc = general->enable_ssc;
> -	dev_priv->vbt.lvds_ssc_freq =
> -		intel_bios_ssc_frequency(dev_priv, general->ssc_freq);
> -	dev_priv->vbt.display_clock_mode = general->display_clock_mode;
> -	dev_priv->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted;
> +	    (HAS_DDI(i915) || IS_VALLEYVIEW(i915)))
> +		i915->vbt.int_crt_support = general->int_crt_support;
> +	i915->vbt.lvds_use_ssc = general->enable_ssc;
> +	i915->vbt.lvds_ssc_freq =
> +		intel_bios_ssc_frequency(i915, general->ssc_freq);
> +	i915->vbt.display_clock_mode = general->display_clock_mode;
> +	i915->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted;
>  	if (bdb->version >= 181) {
> -		dev_priv->vbt.orientation = general->rotate_180 ?
> +		i915->vbt.orientation = general->rotate_180 ?
>  			DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP :
>  			DRM_MODE_PANEL_ORIENTATION_NORMAL;
>  	} else {
> -		dev_priv->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
> +		i915->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
>  	}
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "BDB_GENERAL_FEATURES int_tv_support %d int_crt_support %d lvds_use_ssc %d lvds_ssc_freq %d display_clock_mode %d fdi_rx_polarity_inverted %d\n",
> -		    dev_priv->vbt.int_tv_support,
> -		    dev_priv->vbt.int_crt_support,
> -		    dev_priv->vbt.lvds_use_ssc,
> -		    dev_priv->vbt.lvds_ssc_freq,
> -		    dev_priv->vbt.display_clock_mode,
> -		    dev_priv->vbt.fdi_rx_polarity_inverted);
> +		    i915->vbt.int_tv_support,
> +		    i915->vbt.int_crt_support,
> +		    i915->vbt.lvds_use_ssc,
> +		    i915->vbt.lvds_ssc_freq,
> +		    i915->vbt.display_clock_mode,
> +		    i915->vbt.fdi_rx_polarity_inverted);
>  }
>  
>  static const struct child_device_config *
> @@ -597,7 +597,7 @@ child_device_ptr(const struct bdb_general_definitions *defs, int i)
>  }
>  
>  static void
> -parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
> +parse_sdvo_device_mapping(struct drm_i915_private *i915, u8 bdb_version)
>  {
>  	struct sdvo_device_mapping *mapping;
>  	const struct display_device_data *devdata;
> @@ -608,12 +608,12 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
>  	 * Only parse SDVO mappings on gens that could have SDVO. This isn't
>  	 * accurate and doesn't have to be, as long as it's not too strict.
>  	 */
> -	if (!IS_GEN_RANGE(dev_priv, 3, 7)) {
> -		drm_dbg_kms(&dev_priv->drm, "Skipping SDVO device mapping\n");
> +	if (!IS_GEN_RANGE(i915, 3, 7)) {
> +		drm_dbg_kms(&i915->drm, "Skipping SDVO device mapping\n");
>  		return;
>  	}
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		child = &devdata->child;
>  
>  		if (child->slave_addr != SLAVE_ADDR1 &&
> @@ -627,17 +627,17 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
>  		if (child->dvo_port != DEVICE_PORT_DVOB &&
>  		    child->dvo_port != DEVICE_PORT_DVOC) {
>  			/* skip the incorrect SDVO port */
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "Incorrect SDVO port. Skip it\n");
>  			continue;
>  		}
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "the SDVO device with slave addr %2x is found on"
>  			    " %s port\n",
>  			    child->slave_addr,
>  			    (child->dvo_port == DEVICE_PORT_DVOB) ?
>  			    "SDVOB" : "SDVOC");
> -		mapping = &dev_priv->vbt.sdvo_mappings[child->dvo_port - 1];
> +		mapping = &i915->vbt.sdvo_mappings[child->dvo_port - 1];
>  		if (!mapping->initialized) {
>  			mapping->dvo_port = child->dvo_port;
>  			mapping->slave_addr = child->slave_addr;
> @@ -645,20 +645,20 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
>  			mapping->ddc_pin = child->ddc_pin;
>  			mapping->i2c_pin = child->i2c_pin;
>  			mapping->initialized = 1;
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n",
>  				    mapping->dvo_port, mapping->slave_addr,
>  				    mapping->dvo_wiring, mapping->ddc_pin,
>  				    mapping->i2c_pin);
>  		} else {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "Maybe one SDVO port is shared by "
>  				    "two SDVO device.\n");
>  		}
>  		if (child->slave2_addr) {
>  			/* Maybe this is a SDVO device with multiple inputs */
>  			/* And the mapping info is not added */
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "there exists the slave2_addr. Maybe this"
>  				    " is a SDVO device with multiple inputs.\n");
>  		}
> @@ -667,13 +667,13 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv, u8 bdb_version)
>  
>  	if (!count) {
>  		/* No SDVO device info is found */
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "No SDVO device info is found in VBT\n");
>  	}
>  }
>  
>  static void
> -parse_driver_features(struct drm_i915_private *dev_priv,
> +parse_driver_features(struct drm_i915_private *i915,
>  		      const struct bdb_header *bdb)
>  {
>  	const struct bdb_driver_features *driver;
> @@ -682,14 +682,14 @@ parse_driver_features(struct drm_i915_private *dev_priv,
>  	if (!driver)
>  		return;
>  
> -	if (INTEL_GEN(dev_priv) >= 5) {
> +	if (INTEL_GEN(i915) >= 5) {
>  		/*
>  		 * Note that we consider BDB_DRIVER_FEATURE_INT_SDVO_LVDS
>  		 * to mean "eDP". The VBT spec doesn't agree with that
>  		 * interpretation, but real world VBTs seem to.
>  		 */
>  		if (driver->lvds_config != BDB_DRIVER_FEATURE_INT_LVDS)
> -			dev_priv->vbt.int_lvds_support = 0;
> +			i915->vbt.int_lvds_support = 0;
>  	} else {
>  		/*
>  		 * FIXME it's not clear which BDB version has the LVDS config
> @@ -705,11 +705,11 @@ parse_driver_features(struct drm_i915_private *dev_priv,
>  		if (bdb->version >= 134 &&
>  		    driver->lvds_config != BDB_DRIVER_FEATURE_INT_LVDS &&
>  		    driver->lvds_config != BDB_DRIVER_FEATURE_INT_SDVO_LVDS)
> -			dev_priv->vbt.int_lvds_support = 0;
> +			i915->vbt.int_lvds_support = 0;
>  	}
>  
>  	if (bdb->version < 228) {
> -		drm_dbg_kms(&dev_priv->drm, "DRRS State Enabled:%d\n",
> +		drm_dbg_kms(&i915->drm, "DRRS State Enabled:%d\n",
>  			    driver->drrs_enabled);
>  		/*
>  		 * If DRRS is not supported, drrs_type has to be set to 0.
> @@ -718,18 +718,18 @@ parse_driver_features(struct drm_i915_private *dev_priv,
>  		 * driver->drrs_enabled=false
>  		 */
>  		if (!driver->drrs_enabled)
> -			dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED;
> +			i915->vbt.drrs_type = DRRS_NOT_SUPPORTED;
>  
> -		dev_priv->vbt.psr.enable = driver->psr_enabled;
> +		i915->vbt.psr.enable = driver->psr_enabled;
>  	}
>  }
>  
>  static void
> -parse_power_conservation_features(struct drm_i915_private *dev_priv,
> +parse_power_conservation_features(struct drm_i915_private *i915,
>  				  const struct bdb_header *bdb)
>  {
>  	const struct bdb_lfp_power *power;
> -	u8 panel_type = dev_priv->vbt.panel_type;
> +	u8 panel_type = i915->vbt.panel_type;
>  
>  	if (bdb->version < 228)
>  		return;
> @@ -738,7 +738,7 @@ parse_power_conservation_features(struct drm_i915_private *dev_priv,
>  	if (!power)
>  		return;
>  
> -	dev_priv->vbt.psr.enable = power->psr & BIT(panel_type);
> +	i915->vbt.psr.enable = power->psr & BIT(panel_type);
>  
>  	/*
>  	 * If DRRS is not supported, drrs_type has to be set to 0.
> @@ -747,19 +747,19 @@ parse_power_conservation_features(struct drm_i915_private *dev_priv,
>  	 * power->drrs & BIT(panel_type)=false
>  	 */
>  	if (!(power->drrs & BIT(panel_type)))
> -		dev_priv->vbt.drrs_type = DRRS_NOT_SUPPORTED;
> +		i915->vbt.drrs_type = DRRS_NOT_SUPPORTED;
>  
>  	if (bdb->version >= 232)
> -		dev_priv->vbt.edp.hobl = power->hobl & BIT(panel_type);
> +		i915->vbt.edp.hobl = power->hobl & BIT(panel_type);
>  }
>  
>  static void
> -parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
> +parse_edp(struct drm_i915_private *i915, const struct bdb_header *bdb)
>  {
>  	const struct bdb_edp *edp;
>  	const struct edp_power_seq *edp_pps;
>  	const struct edp_fast_link_params *edp_link_params;
> -	int panel_type = dev_priv->vbt.panel_type;
> +	int panel_type = i915->vbt.panel_type;
>  
>  	edp = find_section(bdb, BDB_EDP);
>  	if (!edp)
> @@ -767,13 +767,13 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  
>  	switch ((edp->color_depth >> (panel_type * 2)) & 3) {
>  	case EDP_18BPP:
> -		dev_priv->vbt.edp.bpp = 18;
> +		i915->vbt.edp.bpp = 18;
>  		break;
>  	case EDP_24BPP:
> -		dev_priv->vbt.edp.bpp = 24;
> +		i915->vbt.edp.bpp = 24;
>  		break;
>  	case EDP_30BPP:
> -		dev_priv->vbt.edp.bpp = 30;
> +		i915->vbt.edp.bpp = 30;
>  		break;
>  	}
>  
> @@ -781,17 +781,17 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  	edp_pps = &edp->power_seqs[panel_type];
>  	edp_link_params = &edp->fast_link_params[panel_type];
>  
> -	dev_priv->vbt.edp.pps = *edp_pps;
> +	i915->vbt.edp.pps = *edp_pps;
>  
>  	switch (edp_link_params->rate) {
>  	case EDP_RATE_1_62:
> -		dev_priv->vbt.edp.rate = DP_LINK_BW_1_62;
> +		i915->vbt.edp.rate = DP_LINK_BW_1_62;
>  		break;
>  	case EDP_RATE_2_7:
> -		dev_priv->vbt.edp.rate = DP_LINK_BW_2_7;
> +		i915->vbt.edp.rate = DP_LINK_BW_2_7;
>  		break;
>  	default:
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "VBT has unknown eDP link rate value %u\n",
>  			     edp_link_params->rate);
>  		break;
> @@ -799,16 +799,16 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  
>  	switch (edp_link_params->lanes) {
>  	case EDP_LANE_1:
> -		dev_priv->vbt.edp.lanes = 1;
> +		i915->vbt.edp.lanes = 1;
>  		break;
>  	case EDP_LANE_2:
> -		dev_priv->vbt.edp.lanes = 2;
> +		i915->vbt.edp.lanes = 2;
>  		break;
>  	case EDP_LANE_4:
> -		dev_priv->vbt.edp.lanes = 4;
> +		i915->vbt.edp.lanes = 4;
>  		break;
>  	default:
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "VBT has unknown eDP lane count value %u\n",
>  			    edp_link_params->lanes);
>  		break;
> @@ -816,19 +816,19 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  
>  	switch (edp_link_params->preemphasis) {
>  	case EDP_PREEMPHASIS_NONE:
> -		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0;
> +		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_0;
>  		break;
>  	case EDP_PREEMPHASIS_3_5dB:
> -		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1;
> +		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_1;
>  		break;
>  	case EDP_PREEMPHASIS_6dB:
> -		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2;
> +		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_2;
>  		break;
>  	case EDP_PREEMPHASIS_9_5dB:
> -		dev_priv->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3;
> +		i915->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3;
>  		break;
>  	default:
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "VBT has unknown eDP pre-emphasis value %u\n",
>  			    edp_link_params->preemphasis);
>  		break;
> @@ -836,19 +836,19 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  
>  	switch (edp_link_params->vswing) {
>  	case EDP_VSWING_0_4V:
> -		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
> +		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_0;
>  		break;
>  	case EDP_VSWING_0_6V:
> -		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
> +		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_1;
>  		break;
>  	case EDP_VSWING_0_8V:
> -		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
> +		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_2;
>  		break;
>  	case EDP_VSWING_1_2V:
> -		dev_priv->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
> +		i915->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3;
>  		break;
>  	default:
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "VBT has unknown eDP voltage swing value %u\n",
>  			    edp_link_params->vswing);
>  		break;
> @@ -858,53 +858,53 @@ parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  		u8 vswing;
>  
>  		/* Don't read from VBT if module parameter has valid value*/
> -		if (dev_priv->params.edp_vswing) {
> -			dev_priv->vbt.edp.low_vswing =
> -				dev_priv->params.edp_vswing == 1;
> +		if (i915->params.edp_vswing) {
> +			i915->vbt.edp.low_vswing =
> +				i915->params.edp_vswing == 1;
>  		} else {
>  			vswing = (edp->edp_vswing_preemph >> (panel_type * 4)) & 0xF;
> -			dev_priv->vbt.edp.low_vswing = vswing == 0;
> +			i915->vbt.edp.low_vswing = vswing == 0;
>  		}
>  	}
>  }
>  
>  static void
> -parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
> +parse_psr(struct drm_i915_private *i915, const struct bdb_header *bdb)
>  {
>  	const struct bdb_psr *psr;
>  	const struct psr_table *psr_table;
> -	int panel_type = dev_priv->vbt.panel_type;
> +	int panel_type = i915->vbt.panel_type;
>  
>  	psr = find_section(bdb, BDB_PSR);
>  	if (!psr) {
> -		drm_dbg_kms(&dev_priv->drm, "No PSR BDB found.\n");
> +		drm_dbg_kms(&i915->drm, "No PSR BDB found.\n");
>  		return;
>  	}
>  
>  	psr_table = &psr->psr_table[panel_type];
>  
> -	dev_priv->vbt.psr.full_link = psr_table->full_link;
> -	dev_priv->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup;
> +	i915->vbt.psr.full_link = psr_table->full_link;
> +	i915->vbt.psr.require_aux_wakeup = psr_table->require_aux_to_wakeup;
>  
>  	/* Allowed VBT values goes from 0 to 15 */
> -	dev_priv->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 :
> +	i915->vbt.psr.idle_frames = psr_table->idle_frames < 0 ? 0 :
>  		psr_table->idle_frames > 15 ? 15 : psr_table->idle_frames;
>  
>  	switch (psr_table->lines_to_wait) {
>  	case 0:
> -		dev_priv->vbt.psr.lines_to_wait = PSR_0_LINES_TO_WAIT;
> +		i915->vbt.psr.lines_to_wait = PSR_0_LINES_TO_WAIT;
>  		break;
>  	case 1:
> -		dev_priv->vbt.psr.lines_to_wait = PSR_1_LINE_TO_WAIT;
> +		i915->vbt.psr.lines_to_wait = PSR_1_LINE_TO_WAIT;
>  		break;
>  	case 2:
> -		dev_priv->vbt.psr.lines_to_wait = PSR_4_LINES_TO_WAIT;
> +		i915->vbt.psr.lines_to_wait = PSR_4_LINES_TO_WAIT;
>  		break;
>  	case 3:
> -		dev_priv->vbt.psr.lines_to_wait = PSR_8_LINES_TO_WAIT;
> +		i915->vbt.psr.lines_to_wait = PSR_8_LINES_TO_WAIT;
>  		break;
>  	default:
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "VBT has unknown PSR lines to wait %u\n",
>  			    psr_table->lines_to_wait);
>  		break;
> @@ -915,50 +915,50 @@ parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  	 * Old decimal value is wake up time in multiples of 100 us.
>  	 */
>  	if (bdb->version >= 205 &&
> -	    (IS_GEN9_BC(dev_priv) || IS_GEMINILAKE(dev_priv) ||
> -	     INTEL_GEN(dev_priv) >= 10)) {
> +	    (IS_GEN9_BC(i915) || IS_GEMINILAKE(i915) ||
> +	     INTEL_GEN(i915) >= 10)) {
>  		switch (psr_table->tp1_wakeup_time) {
>  		case 0:
> -			dev_priv->vbt.psr.tp1_wakeup_time_us = 500;
> +			i915->vbt.psr.tp1_wakeup_time_us = 500;
>  			break;
>  		case 1:
> -			dev_priv->vbt.psr.tp1_wakeup_time_us = 100;
> +			i915->vbt.psr.tp1_wakeup_time_us = 100;
>  			break;
>  		case 3:
> -			dev_priv->vbt.psr.tp1_wakeup_time_us = 0;
> +			i915->vbt.psr.tp1_wakeup_time_us = 0;
>  			break;
>  		default:
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "VBT tp1 wakeup time value %d is outside range[0-3], defaulting to max value 2500us\n",
>  				    psr_table->tp1_wakeup_time);
>  			fallthrough;
>  		case 2:
> -			dev_priv->vbt.psr.tp1_wakeup_time_us = 2500;
> +			i915->vbt.psr.tp1_wakeup_time_us = 2500;
>  			break;
>  		}
>  
>  		switch (psr_table->tp2_tp3_wakeup_time) {
>  		case 0:
> -			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 500;
> +			i915->vbt.psr.tp2_tp3_wakeup_time_us = 500;
>  			break;
>  		case 1:
> -			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 100;
> +			i915->vbt.psr.tp2_tp3_wakeup_time_us = 100;
>  			break;
>  		case 3:
> -			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 0;
> +			i915->vbt.psr.tp2_tp3_wakeup_time_us = 0;
>  			break;
>  		default:
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "VBT tp2_tp3 wakeup time value %d is outside range[0-3], defaulting to max value 2500us\n",
>  				    psr_table->tp2_tp3_wakeup_time);
>  			fallthrough;
>  		case 2:
> -			dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = 2500;
> +			i915->vbt.psr.tp2_tp3_wakeup_time_us = 2500;
>  		break;
>  		}
>  	} else {
> -		dev_priv->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100;
> -		dev_priv->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100;
> +		i915->vbt.psr.tp1_wakeup_time_us = psr_table->tp1_wakeup_time * 100;
> +		i915->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100;
>  	}
>  
>  	if (bdb->version >= 226) {
> @@ -980,74 +980,74 @@ parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
>  			wakeup_time = 2500;
>  			break;
>  		}
> -		dev_priv->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time;
> +		i915->vbt.psr.psr2_tp2_tp3_wakeup_time_us = wakeup_time;
>  	} else {
>  		/* Reusing PSR1 wakeup time for PSR2 in older VBTs */
> -		dev_priv->vbt.psr.psr2_tp2_tp3_wakeup_time_us = dev_priv->vbt.psr.tp2_tp3_wakeup_time_us;
> +		i915->vbt.psr.psr2_tp2_tp3_wakeup_time_us = i915->vbt.psr.tp2_tp3_wakeup_time_us;
>  	}
>  }
>  
> -static void parse_dsi_backlight_ports(struct drm_i915_private *dev_priv,
> +static void parse_dsi_backlight_ports(struct drm_i915_private *i915,
>  				      u16 version, enum port port)
>  {
> -	if (!dev_priv->vbt.dsi.config->dual_link || version < 197) {
> -		dev_priv->vbt.dsi.bl_ports = BIT(port);
> -		if (dev_priv->vbt.dsi.config->cabc_supported)
> -			dev_priv->vbt.dsi.cabc_ports = BIT(port);
> +	if (!i915->vbt.dsi.config->dual_link || version < 197) {
> +		i915->vbt.dsi.bl_ports = BIT(port);
> +		if (i915->vbt.dsi.config->cabc_supported)
> +			i915->vbt.dsi.cabc_ports = BIT(port);
>  
>  		return;
>  	}
>  
> -	switch (dev_priv->vbt.dsi.config->dl_dcs_backlight_ports) {
> +	switch (i915->vbt.dsi.config->dl_dcs_backlight_ports) {
>  	case DL_DCS_PORT_A:
> -		dev_priv->vbt.dsi.bl_ports = BIT(PORT_A);
> +		i915->vbt.dsi.bl_ports = BIT(PORT_A);
>  		break;
>  	case DL_DCS_PORT_C:
> -		dev_priv->vbt.dsi.bl_ports = BIT(PORT_C);
> +		i915->vbt.dsi.bl_ports = BIT(PORT_C);
>  		break;
>  	default:
>  	case DL_DCS_PORT_A_AND_C:
> -		dev_priv->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(PORT_C);
> +		i915->vbt.dsi.bl_ports = BIT(PORT_A) | BIT(PORT_C);
>  		break;
>  	}
>  
> -	if (!dev_priv->vbt.dsi.config->cabc_supported)
> +	if (!i915->vbt.dsi.config->cabc_supported)
>  		return;
>  
> -	switch (dev_priv->vbt.dsi.config->dl_dcs_cabc_ports) {
> +	switch (i915->vbt.dsi.config->dl_dcs_cabc_ports) {
>  	case DL_DCS_PORT_A:
> -		dev_priv->vbt.dsi.cabc_ports = BIT(PORT_A);
> +		i915->vbt.dsi.cabc_ports = BIT(PORT_A);
>  		break;
>  	case DL_DCS_PORT_C:
> -		dev_priv->vbt.dsi.cabc_ports = BIT(PORT_C);
> +		i915->vbt.dsi.cabc_ports = BIT(PORT_C);
>  		break;
>  	default:
>  	case DL_DCS_PORT_A_AND_C:
> -		dev_priv->vbt.dsi.cabc_ports =
> +		i915->vbt.dsi.cabc_ports =
>  					BIT(PORT_A) | BIT(PORT_C);
>  		break;
>  	}
>  }
>  
>  static void
> -parse_mipi_config(struct drm_i915_private *dev_priv,
> +parse_mipi_config(struct drm_i915_private *i915,
>  		  const struct bdb_header *bdb)
>  {
>  	const struct bdb_mipi_config *start;
>  	const struct mipi_config *config;
>  	const struct mipi_pps_data *pps;
> -	int panel_type = dev_priv->vbt.panel_type;
> +	int panel_type = i915->vbt.panel_type;
>  	enum port port;
>  
>  	/* parse MIPI blocks only if LFP type is MIPI */
> -	if (!intel_bios_is_dsi_present(dev_priv, &port))
> +	if (!intel_bios_is_dsi_present(i915, &port))
>  		return;
>  
>  	/* Initialize this to undefined indicating no generic MIPI support */
> -	dev_priv->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID;
> +	i915->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID;
>  
>  	/* Block #40 is already parsed and panel_fixed_mode is
> -	 * stored in dev_priv->lfp_lvds_vbt_mode
> +	 * stored in i915->lfp_lvds_vbt_mode
>  	 * resuse this when needed
>  	 */
>  
> @@ -1056,11 +1056,11 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
>  	 */
>  	start = find_section(bdb, BDB_MIPI_CONFIG);
>  	if (!start) {
> -		drm_dbg_kms(&dev_priv->drm, "No MIPI config BDB found");
> +		drm_dbg_kms(&i915->drm, "No MIPI config BDB found");
>  		return;
>  	}
>  
> -	drm_dbg(&dev_priv->drm, "Found MIPI Config block, panel index = %d\n",
> +	drm_dbg(&i915->drm, "Found MIPI Config block, panel index = %d\n",
>  		panel_type);
>  
>  	/*
> @@ -1071,17 +1071,17 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
>  	pps = &start->pps[panel_type];
>  
>  	/* store as of now full data. Trim when we realise all is not needed */
> -	dev_priv->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL);
> -	if (!dev_priv->vbt.dsi.config)
> +	i915->vbt.dsi.config = kmemdup(config, sizeof(struct mipi_config), GFP_KERNEL);
> +	if (!i915->vbt.dsi.config)
>  		return;
>  
> -	dev_priv->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL);
> -	if (!dev_priv->vbt.dsi.pps) {
> -		kfree(dev_priv->vbt.dsi.config);
> +	i915->vbt.dsi.pps = kmemdup(pps, sizeof(struct mipi_pps_data), GFP_KERNEL);
> +	if (!i915->vbt.dsi.pps) {
> +		kfree(i915->vbt.dsi.config);
>  		return;
>  	}
>  
> -	parse_dsi_backlight_ports(dev_priv, bdb->version, port);
> +	parse_dsi_backlight_ports(i915, bdb->version, port);
>  
>  	/* FIXME is the 90 vs. 270 correct? */
>  	switch (config->rotation) {
> @@ -1090,25 +1090,25 @@ parse_mipi_config(struct drm_i915_private *dev_priv,
>  		 * Most (all?) VBTs claim 0 degrees despite having
>  		 * an upside down panel, thus we do not trust this.
>  		 */
> -		dev_priv->vbt.dsi.orientation =
> +		i915->vbt.dsi.orientation =
>  			DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
>  		break;
>  	case ENABLE_ROTATION_90:
> -		dev_priv->vbt.dsi.orientation =
> +		i915->vbt.dsi.orientation =
>  			DRM_MODE_PANEL_ORIENTATION_RIGHT_UP;
>  		break;
>  	case ENABLE_ROTATION_180:
> -		dev_priv->vbt.dsi.orientation =
> +		i915->vbt.dsi.orientation =
>  			DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP;
>  		break;
>  	case ENABLE_ROTATION_270:
> -		dev_priv->vbt.dsi.orientation =
> +		i915->vbt.dsi.orientation =
>  			DRM_MODE_PANEL_ORIENTATION_LEFT_UP;
>  		break;
>  	}
>  
>  	/* We have mandatory mipi config blocks. Initialize as generic panel */
> -	dev_priv->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID;
> +	i915->vbt.dsi.panel_id = MIPI_DSI_GENERIC_PANEL_ID;
>  }
>  
>  /* Find the sequence block and size for the given panel. */
> @@ -1271,13 +1271,13 @@ static int goto_next_sequence_v3(const u8 *data, int index, int total)
>   * Get len of pre-fixed deassert fragment from a v1 init OTP sequence,
>   * skip all delay + gpio operands and stop at the first DSI packet op.
>   */
> -static int get_init_otp_deassert_fragment_len(struct drm_i915_private *dev_priv)
> +static int get_init_otp_deassert_fragment_len(struct drm_i915_private *i915)
>  {
> -	const u8 *data = dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
> +	const u8 *data = i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
>  	int index, len;
>  
> -	if (drm_WARN_ON(&dev_priv->drm,
> -			!data || dev_priv->vbt.dsi.seq_version != 1))
> +	if (drm_WARN_ON(&i915->drm,
> +			!data || i915->vbt.dsi.seq_version != 1))
>  		return 0;
>  
>  	/* index = 1 to skip sequence byte */
> @@ -1305,55 +1305,55 @@ static int get_init_otp_deassert_fragment_len(struct drm_i915_private *dev_priv)
>   * these devices we split the init OTP sequence into a deassert sequence and
>   * the actual init OTP part.
>   */
> -static void fixup_mipi_sequences(struct drm_i915_private *dev_priv)
> +static void fixup_mipi_sequences(struct drm_i915_private *i915)
>  {
>  	u8 *init_otp;
>  	int len;
>  
>  	/* Limit this to VLV for now. */
> -	if (!IS_VALLEYVIEW(dev_priv))
> +	if (!IS_VALLEYVIEW(i915))
>  		return;
>  
>  	/* Limit this to v1 vid-mode sequences */
> -	if (dev_priv->vbt.dsi.config->is_cmd_mode ||
> -	    dev_priv->vbt.dsi.seq_version != 1)
> +	if (i915->vbt.dsi.config->is_cmd_mode ||
> +	    i915->vbt.dsi.seq_version != 1)
>  		return;
>  
>  	/* Only do this if there are otp and assert seqs and no deassert seq */
> -	if (!dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] ||
> -	    !dev_priv->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] ||
> -	    dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET])
> +	if (!i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] ||
> +	    !i915->vbt.dsi.sequence[MIPI_SEQ_ASSERT_RESET] ||
> +	    i915->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET])
>  		return;
>  
>  	/* The deassert-sequence ends at the first DSI packet */
> -	len = get_init_otp_deassert_fragment_len(dev_priv);
> +	len = get_init_otp_deassert_fragment_len(i915);
>  	if (!len)
>  		return;
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "Using init OTP fragment to deassert reset\n");
>  
>  	/* Copy the fragment, update seq byte and terminate it */
> -	init_otp = (u8 *)dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
> -	dev_priv->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL);
> -	if (!dev_priv->vbt.dsi.deassert_seq)
> +	init_otp = (u8 *)i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP];
> +	i915->vbt.dsi.deassert_seq = kmemdup(init_otp, len + 1, GFP_KERNEL);
> +	if (!i915->vbt.dsi.deassert_seq)
>  		return;
> -	dev_priv->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET;
> -	dev_priv->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END;
> +	i915->vbt.dsi.deassert_seq[0] = MIPI_SEQ_DEASSERT_RESET;
> +	i915->vbt.dsi.deassert_seq[len] = MIPI_SEQ_ELEM_END;
>  	/* Use the copy for deassert */
> -	dev_priv->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] =
> -		dev_priv->vbt.dsi.deassert_seq;
> +	i915->vbt.dsi.sequence[MIPI_SEQ_DEASSERT_RESET] =
> +		i915->vbt.dsi.deassert_seq;
>  	/* Replace the last byte of the fragment with init OTP seq byte */
>  	init_otp[len - 1] = MIPI_SEQ_INIT_OTP;
>  	/* And make MIPI_MIPI_SEQ_INIT_OTP point to it */
> -	dev_priv->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1;
> +	i915->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] = init_otp + len - 1;
>  }
>  
>  static void
> -parse_mipi_sequence(struct drm_i915_private *dev_priv,
> +parse_mipi_sequence(struct drm_i915_private *i915,
>  		    const struct bdb_header *bdb)
>  {
> -	int panel_type = dev_priv->vbt.panel_type;
> +	int panel_type = i915->vbt.panel_type;
>  	const struct bdb_mipi_sequence *sequence;
>  	const u8 *seq_data;
>  	u32 seq_size;
> @@ -1361,25 +1361,25 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv,
>  	int index = 0;
>  
>  	/* Only our generic panel driver uses the sequence block. */
> -	if (dev_priv->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID)
> +	if (i915->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID)
>  		return;
>  
>  	sequence = find_section(bdb, BDB_MIPI_SEQUENCE);
>  	if (!sequence) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "No MIPI Sequence found, parsing complete\n");
>  		return;
>  	}
>  
>  	/* Fail gracefully for forward incompatible sequence block. */
>  	if (sequence->version >= 4) {
> -		drm_err(&dev_priv->drm,
> +		drm_err(&i915->drm,
>  			"Unable to parse MIPI Sequence Block v%u\n",
>  			sequence->version);
>  		return;
>  	}
>  
> -	drm_dbg(&dev_priv->drm, "Found MIPI sequence block v%u\n",
> +	drm_dbg(&i915->drm, "Found MIPI sequence block v%u\n",
>  		sequence->version);
>  
>  	seq_data = find_panel_sequence_block(sequence, panel_type, &seq_size);
> @@ -1397,41 +1397,41 @@ parse_mipi_sequence(struct drm_i915_private *dev_priv,
>  			break;
>  
>  		if (seq_id >= MIPI_SEQ_MAX) {
> -			drm_err(&dev_priv->drm, "Unknown sequence %u\n",
> +			drm_err(&i915->drm, "Unknown sequence %u\n",
>  				seq_id);
>  			goto err;
>  		}
>  
>  		/* Log about presence of sequences we won't run. */
>  		if (seq_id == MIPI_SEQ_TEAR_ON || seq_id == MIPI_SEQ_TEAR_OFF)
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "Unsupported sequence %u\n", seq_id);
>  
> -		dev_priv->vbt.dsi.sequence[seq_id] = data + index;
> +		i915->vbt.dsi.sequence[seq_id] = data + index;
>  
>  		if (sequence->version >= 3)
>  			index = goto_next_sequence_v3(data, index, seq_size);
>  		else
>  			index = goto_next_sequence(data, index, seq_size);
>  		if (!index) {
> -			drm_err(&dev_priv->drm, "Invalid sequence %u\n",
> +			drm_err(&i915->drm, "Invalid sequence %u\n",
>  				seq_id);
>  			goto err;
>  		}
>  	}
>  
> -	dev_priv->vbt.dsi.data = data;
> -	dev_priv->vbt.dsi.size = seq_size;
> -	dev_priv->vbt.dsi.seq_version = sequence->version;
> +	i915->vbt.dsi.data = data;
> +	i915->vbt.dsi.size = seq_size;
> +	i915->vbt.dsi.seq_version = sequence->version;
>  
> -	fixup_mipi_sequences(dev_priv);
> +	fixup_mipi_sequences(i915);
>  
> -	drm_dbg(&dev_priv->drm, "MIPI related VBT parsing complete\n");
> +	drm_dbg(&i915->drm, "MIPI related VBT parsing complete\n");
>  	return;
>  
>  err:
>  	kfree(data);
> -	memset(dev_priv->vbt.dsi.sequence, 0, sizeof(dev_priv->vbt.dsi.sequence));
> +	memset(i915->vbt.dsi.sequence, 0, sizeof(i915->vbt.dsi.sequence));
>  }
>  
>  static void
> @@ -1515,18 +1515,18 @@ static enum port get_port_by_ddc_pin(struct drm_i915_private *i915, u8 ddc_pin)
>  	return PORT_NONE;
>  }
>  
> -static void sanitize_ddc_pin(struct drm_i915_private *dev_priv,
> +static void sanitize_ddc_pin(struct drm_i915_private *i915,
>  			     enum port port)
>  {
> -	struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
> +	struct ddi_vbt_port_info *info = &i915->vbt.ddi_port_info[port];
>  	enum port p;
>  
>  	if (!info->alternate_ddc_pin)
>  		return;
>  
> -	p = get_port_by_ddc_pin(dev_priv, info->alternate_ddc_pin);
> +	p = get_port_by_ddc_pin(i915, info->alternate_ddc_pin);
>  	if (p != PORT_NONE) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "port %c trying to use the same DDC pin (0x%x) as port %c, "
>  			    "disabling port %c DVI/HDMI support\n",
>  			    port_name(port), info->alternate_ddc_pin,
> @@ -1544,7 +1544,7 @@ static void sanitize_ddc_pin(struct drm_i915_private *dev_priv,
>  		 * port A and port E with the same AUX ch and
>  		 * we must pick port E :(
>  		 */
> -		info = &dev_priv->vbt.ddi_port_info[p];
> +		info = &i915->vbt.ddi_port_info[p];
>  
>  		info->supports_dvi = false;
>  		info->supports_hdmi = false;
> @@ -1567,18 +1567,18 @@ static enum port get_port_by_aux_ch(struct drm_i915_private *i915, u8 aux_ch)
>  	return PORT_NONE;
>  }
>  
> -static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
> +static void sanitize_aux_ch(struct drm_i915_private *i915,
>  			    enum port port)
>  {
> -	struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
> +	struct ddi_vbt_port_info *info = &i915->vbt.ddi_port_info[port];
>  	enum port p;
>  
>  	if (!info->alternate_aux_channel)
>  		return;
>  
> -	p = get_port_by_aux_ch(dev_priv, info->alternate_aux_channel);
> +	p = get_port_by_aux_ch(i915, info->alternate_aux_channel);
>  	if (p != PORT_NONE) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "port %c trying to use the same AUX CH (0x%x) as port %c, "
>  			    "disabling port %c DP support\n",
>  			    port_name(port), info->alternate_aux_channel,
> @@ -1596,7 +1596,7 @@ static void sanitize_aux_ch(struct drm_i915_private *dev_priv,
>  		 * port A and port E with the same AUX ch and
>  		 * we must pick port E :(
>  		 */
> -		info = &dev_priv->vbt.ddi_port_info[p];
> +		info = &i915->vbt.ddi_port_info[p];
>  
>  		info->supports_dp = false;
>  		info->alternate_aux_channel = 0;
> @@ -1644,26 +1644,26 @@ static const u8 gen9bc_tgp_ddc_pin_map[] = {
>  	[DDC_BUS_DDI_D] = GMBUS_PIN_10_TC2_ICP,
>  };
>  
> -static u8 map_ddc_pin(struct drm_i915_private *dev_priv, u8 vbt_pin)
> +static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin)
>  {
>  	const u8 *ddc_pin_map;
>  	int n_entries;
>  
> -	if (HAS_PCH_ADP(dev_priv)) {
> +	if (HAS_PCH_ADP(i915)) {
>  		ddc_pin_map = adls_ddc_pin_map;
>  		n_entries = ARRAY_SIZE(adls_ddc_pin_map);
> -	} else if (INTEL_PCH_TYPE(dev_priv) >= PCH_DG1) {
> +	} else if (INTEL_PCH_TYPE(i915) >= PCH_DG1) {
>  		return vbt_pin;
> -	} else if (IS_ROCKETLAKE(dev_priv) && INTEL_PCH_TYPE(dev_priv) == PCH_TGP) {
> +	} else if (IS_ROCKETLAKE(i915) && INTEL_PCH_TYPE(i915) == PCH_TGP) {
>  		ddc_pin_map = rkl_pch_tgp_ddc_pin_map;
>  		n_entries = ARRAY_SIZE(rkl_pch_tgp_ddc_pin_map);
> -	} else if (HAS_PCH_TGP(dev_priv) && IS_GEN9_BC(dev_priv)) {
> +	} else if (HAS_PCH_TGP(i915) && IS_GEN9_BC(i915)) {
>  		ddc_pin_map = gen9bc_tgp_ddc_pin_map;
>  		n_entries = ARRAY_SIZE(gen9bc_tgp_ddc_pin_map);
> -	} else if (INTEL_PCH_TYPE(dev_priv) >= PCH_ICP) {
> +	} else if (INTEL_PCH_TYPE(i915) >= PCH_ICP) {
>  		ddc_pin_map = icp_ddc_pin_map;
>  		n_entries = ARRAY_SIZE(icp_ddc_pin_map);
> -	} else if (HAS_PCH_CNP(dev_priv)) {
> +	} else if (HAS_PCH_CNP(i915)) {
>  		ddc_pin_map = cnp_ddc_pin_map;
>  		n_entries = ARRAY_SIZE(cnp_ddc_pin_map);
>  	} else {
> @@ -1674,7 +1674,7 @@ static u8 map_ddc_pin(struct drm_i915_private *dev_priv, u8 vbt_pin)
>  	if (vbt_pin < n_entries && ddc_pin_map[vbt_pin] != 0)
>  		return ddc_pin_map[vbt_pin];
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "Ignoring alternate pin: VBT claims DDC pin %d, which is not valid for this platform\n",
>  		    vbt_pin);
>  	return 0;
> @@ -1699,7 +1699,7 @@ static enum port __dvo_port_to_port(int n_ports, int n_dvo,
>  	return PORT_NONE;
>  }
>  
> -static enum port dvo_port_to_port(struct drm_i915_private *dev_priv,
> +static enum port dvo_port_to_port(struct drm_i915_private *i915,
>  				  u8 dvo_port)
>  {
>  	/*
> @@ -1742,12 +1742,12 @@ static enum port dvo_port_to_port(struct drm_i915_private *dev_priv,
>  		[PORT_TC4] = { DVO_PORT_HDMIE, DVO_PORT_DPE, -1 },
>  	};
>  
> -	if (IS_ALDERLAKE_S(dev_priv))
> +	if (IS_ALDERLAKE_S(i915))
>  		return __dvo_port_to_port(ARRAY_SIZE(adls_port_mapping),
>  					  ARRAY_SIZE(adls_port_mapping[0]),
>  					  adls_port_mapping,
>  					  dvo_port);
> -	else if (IS_DG1(dev_priv) || IS_ROCKETLAKE(dev_priv))
> +	else if (IS_DG1(i915) || IS_ROCKETLAKE(i915))
>  		return __dvo_port_to_port(ARRAY_SIZE(rkl_port_mapping),
>  					  ARRAY_SIZE(rkl_port_mapping[0]),
>  					  rkl_port_mapping,
> @@ -1759,7 +1759,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *dev_priv,
>  					  dvo_port);
>  }
>  
> -static void parse_ddi_port(struct drm_i915_private *dev_priv,
> +static void parse_ddi_port(struct drm_i915_private *i915,
>  			   struct display_device_data *devdata,
>  			   u8 bdb_version)
>  {
> @@ -1768,14 +1768,14 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt;
>  	enum port port;
>  
> -	port = dvo_port_to_port(dev_priv, child->dvo_port);
> +	port = dvo_port_to_port(i915, child->dvo_port);
>  	if (port == PORT_NONE)
>  		return;
>  
> -	info = &dev_priv->vbt.ddi_port_info[port];
> +	info = &i915->vbt.ddi_port_info[port];
>  
>  	if (info->child) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "More than one child device for port %c in VBT, using the first.\n",
>  			    port_name(port));
>  		return;
> @@ -1787,8 +1787,8 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>  	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
>  
> -	if (port == PORT_A && is_dvi && INTEL_GEN(dev_priv) < 12) {
> -		drm_dbg_kms(&dev_priv->drm,
> +	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
> +		drm_dbg_kms(&i915->drm,
>  			    "VBT claims port A supports DVI%s, ignoring\n",
>  			    is_hdmi ? "/HDMI" : "");
>  		is_dvi = false;
> @@ -1806,22 +1806,22 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  	if (bdb_version >= 209)
>  		info->supports_tbt = child->tbt;
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "Port %c VBT info: CRT:%d DVI:%d HDMI:%d DP:%d eDP:%d LSPCON:%d USB-Type-C:%d TBT:%d DSC:%d\n",
>  		    port_name(port), is_crt, is_dvi, is_hdmi, is_dp, is_edp,
> -		    HAS_LSPCON(dev_priv) && child->lspcon,
> +		    HAS_LSPCON(i915) && child->lspcon,
>  		    info->supports_typec_usb, info->supports_tbt,
>  		    devdata->dsc != NULL);
>  
>  	if (is_dvi) {
>  		u8 ddc_pin;
>  
> -		ddc_pin = map_ddc_pin(dev_priv, child->ddc_pin);
> -		if (intel_gmbus_is_valid_pin(dev_priv, ddc_pin)) {
> +		ddc_pin = map_ddc_pin(i915, child->ddc_pin);
> +		if (intel_gmbus_is_valid_pin(i915, ddc_pin)) {
>  			info->alternate_ddc_pin = ddc_pin;
> -			sanitize_ddc_pin(dev_priv, port);
> +			sanitize_ddc_pin(i915, port);
>  		} else {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "Port %c has invalid DDC pin %d, "
>  				    "sticking to defaults\n",
>  				    port_name(port), ddc_pin);
> @@ -1831,13 +1831,13 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  	if (is_dp) {
>  		info->alternate_aux_channel = child->aux_channel;
>  
> -		sanitize_aux_ch(dev_priv, port);
> +		sanitize_aux_ch(i915, port);
>  	}
>  
>  	if (bdb_version >= 158) {
>  		/* The VBT HDMI level shift values match the table we have. */
>  		u8 hdmi_level_shift = child->hdmi_level_shifter_value;
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Port %c VBT HDMI level shift: %d\n",
>  			    port_name(port),
>  			    hdmi_level_shift);
> @@ -1864,7 +1864,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  		}
>  
>  		if (max_tmds_clock)
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "Port %c VBT HDMI max TMDS clock: %d kHz\n",
>  				    port_name(port), max_tmds_clock);
>  		info->max_tmds_clock = max_tmds_clock;
> @@ -1873,11 +1873,11 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  	/* Parse the I_boost config for SKL and above */
>  	if (bdb_version >= 196 && child->iboost) {
>  		info->dp_boost_level = translate_iboost(child->dp_iboost_level);
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Port %c VBT (e)DP boost level: %d\n",
>  			    port_name(port), info->dp_boost_level);
>  		info->hdmi_boost_level = translate_iboost(child->hdmi_iboost_level);
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Port %c VBT HDMI boost level: %d\n",
>  			    port_name(port), info->hdmi_boost_level);
>  	}
> @@ -1899,7 +1899,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  			info->dp_max_link_rate = 162000;
>  			break;
>  		}
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Port %c VBT DP max link rate: %d\n",
>  			    port_name(port), info->dp_max_link_rate);
>  	}
> @@ -1907,22 +1907,22 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv,
>  	info->child = child;
>  }
>  
> -static void parse_ddi_ports(struct drm_i915_private *dev_priv, u8 bdb_version)
> +static void parse_ddi_ports(struct drm_i915_private *i915, u8 bdb_version)
>  {
>  	struct display_device_data *devdata;
>  
> -	if (!HAS_DDI(dev_priv) && !IS_CHERRYVIEW(dev_priv))
> +	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>  		return;
>  
>  	if (bdb_version < 155)
>  		return;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node)
> -		parse_ddi_port(dev_priv, devdata, bdb_version);
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node)
> +		parse_ddi_port(i915, devdata, bdb_version);
>  }
>  
>  static void
> -parse_general_definitions(struct drm_i915_private *dev_priv,
> +parse_general_definitions(struct drm_i915_private *i915,
>  			  const struct bdb_header *bdb)
>  {
>  	const struct bdb_general_definitions *defs;
> @@ -1935,23 +1935,23 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
>  
>  	defs = find_section(bdb, BDB_GENERAL_DEFINITIONS);
>  	if (!defs) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "No general definition block is found, no devices defined.\n");
>  		return;
>  	}
>  
>  	block_size = get_blocksize(defs);
>  	if (block_size < sizeof(*defs)) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "General definitions block too small (%u)\n",
>  			    block_size);
>  		return;
>  	}
>  
>  	bus_pin = defs->crt_ddc_gmbus_pin;
> -	drm_dbg_kms(&dev_priv->drm, "crt_ddc_bus_pin: %d\n", bus_pin);
> -	if (intel_gmbus_is_valid_pin(dev_priv, bus_pin))
> -		dev_priv->vbt.crt_ddc_pin = bus_pin;
> +	drm_dbg_kms(&i915->drm, "crt_ddc_bus_pin: %d\n", bus_pin);
> +	if (intel_gmbus_is_valid_pin(i915, bus_pin))
> +		i915->vbt.crt_ddc_pin = bus_pin;
>  
>  	if (bdb->version < 106) {
>  		expected_size = 22;
> @@ -1968,20 +1968,20 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
>  	} else {
>  		expected_size = sizeof(*child);
>  		BUILD_BUG_ON(sizeof(*child) < 39);
> -		drm_dbg(&dev_priv->drm,
> +		drm_dbg(&i915->drm,
>  			"Expected child device config size for VBT version %u not known; assuming %u\n",
>  			bdb->version, expected_size);
>  	}
>  
>  	/* Flag an error for unexpected size, but continue anyway. */
>  	if (defs->child_dev_size != expected_size)
> -		drm_err(&dev_priv->drm,
> +		drm_err(&i915->drm,
>  			"Unexpected child device config size %u (expected %u for VBT version %u)\n",
>  			defs->child_dev_size, expected_size, bdb->version);
>  
>  	/* The legacy sized child device config is the minimum we need. */
>  	if (defs->child_dev_size < LEGACY_CHILD_DEVICE_CONFIG_SIZE) {
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Child device config size %u is too small.\n",
>  			    defs->child_dev_size);
>  		return;
> @@ -1995,7 +1995,7 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
>  		if (!child->device_type)
>  			continue;
>  
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "Found VBT child device with type 0x%x\n",
>  			    child->device_type);
>  
> @@ -2011,64 +2011,64 @@ parse_general_definitions(struct drm_i915_private *dev_priv,
>  		memcpy(&devdata->child, child,
>  		       min_t(size_t, defs->child_dev_size, sizeof(*child)));
>  
> -		list_add_tail(&devdata->node, &dev_priv->vbt.display_devices);
> +		list_add_tail(&devdata->node, &i915->vbt.display_devices);
>  	}
>  
> -	if (list_empty(&dev_priv->vbt.display_devices))
> -		drm_dbg_kms(&dev_priv->drm,
> +	if (list_empty(&i915->vbt.display_devices))
> +		drm_dbg_kms(&i915->drm,
>  			    "no child dev is parsed from VBT\n");
>  }
>  
>  /* Common defaults which may be overridden by VBT. */
>  static void
> -init_vbt_defaults(struct drm_i915_private *dev_priv)
> +init_vbt_defaults(struct drm_i915_private *i915)
>  {
> -	dev_priv->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC;
> +	i915->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC;
>  
>  	/* Default to having backlight */
> -	dev_priv->vbt.backlight.present = true;
> +	i915->vbt.backlight.present = true;
>  
>  	/* LFP panel data */
> -	dev_priv->vbt.lvds_dither = 1;
> +	i915->vbt.lvds_dither = 1;
>  
>  	/* SDVO panel data */
> -	dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
> +	i915->vbt.sdvo_lvds_vbt_mode = NULL;
>  
>  	/* general features */
> -	dev_priv->vbt.int_tv_support = 1;
> -	dev_priv->vbt.int_crt_support = 1;
> +	i915->vbt.int_tv_support = 1;
> +	i915->vbt.int_crt_support = 1;
>  
>  	/* driver features */
> -	dev_priv->vbt.int_lvds_support = 1;
> +	i915->vbt.int_lvds_support = 1;
>  
>  	/* Default to using SSC */
> -	dev_priv->vbt.lvds_use_ssc = 1;
> +	i915->vbt.lvds_use_ssc = 1;
>  	/*
>  	 * Core/SandyBridge/IvyBridge use alternative (120MHz) reference
>  	 * clock for LVDS.
>  	 */
> -	dev_priv->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(dev_priv,
> -			!HAS_PCH_SPLIT(dev_priv));
> -	drm_dbg_kms(&dev_priv->drm, "Set default to SSC at %d kHz\n",
> -		    dev_priv->vbt.lvds_ssc_freq);
> +	i915->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(i915,
> +			!HAS_PCH_SPLIT(i915));
> +	drm_dbg_kms(&i915->drm, "Set default to SSC at %d kHz\n",
> +		    i915->vbt.lvds_ssc_freq);
>  }
>  
>  /* Defaults to initialize only if there is no VBT. */
>  static void
> -init_vbt_missing_defaults(struct drm_i915_private *dev_priv)
> +init_vbt_missing_defaults(struct drm_i915_private *i915)
>  {
>  	enum port port;
>  
>  	for_each_port(port) {
>  		struct ddi_vbt_port_info *info =
> -			&dev_priv->vbt.ddi_port_info[port];
> -		enum phy phy = intel_port_to_phy(dev_priv, port);
> +			&i915->vbt.ddi_port_info[port];
> +		enum phy phy = intel_port_to_phy(i915, port);
>  
>  		/*
>  		 * VBT has the TypeC mode (native,TBT/USB) and we don't want
>  		 * to detect it.
>  		 */
> -		if (intel_phy_is_tc(dev_priv, phy))
> +		if (intel_phy_is_tc(i915, phy))
>  			continue;
>  
>  		info->supports_dvi = (port != PORT_A && port != PORT_E);
> @@ -2134,9 +2134,9 @@ bool intel_bios_is_valid_vbt(const void *buf, size_t size)
>  	return vbt;
>  }
>  
> -static struct vbt_header *oprom_get_vbt(struct drm_i915_private *dev_priv)
> +static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915)
>  {
> -	struct pci_dev *pdev = to_pci_dev(dev_priv->drm.dev);
> +	struct pci_dev *pdev = to_pci_dev(i915->drm.dev);
>  	void __iomem *p = NULL, *oprom;
>  	struct vbt_header *vbt;
>  	u16 vbt_size;
> @@ -2160,13 +2160,13 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *dev_priv)
>  		goto err_unmap_oprom;
>  
>  	if (sizeof(struct vbt_header) > size) {
> -		drm_dbg(&dev_priv->drm, "VBT header incomplete\n");
> +		drm_dbg(&i915->drm, "VBT header incomplete\n");
>  		goto err_unmap_oprom;
>  	}
>  
>  	vbt_size = ioread16(p + offsetof(struct vbt_header, vbt_size));
>  	if (vbt_size > size) {
> -		drm_dbg(&dev_priv->drm,
> +		drm_dbg(&i915->drm,
>  			"VBT incomplete (vbt_size overflows)\n");
>  		goto err_unmap_oprom;
>  	}
> @@ -2195,71 +2195,71 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *dev_priv)
>  
>  /**
>   * intel_bios_init - find VBT and initialize settings from the BIOS
> - * @dev_priv: i915 device instance
> + * @i915: i915 device instance
>   *
>   * Parse and initialize settings from the Video BIOS Tables (VBT). If the VBT
>   * was not found in ACPI OpRegion, try to find it in PCI ROM first. Also
>   * initialize some defaults if the VBT is not present at all.
>   */
> -void intel_bios_init(struct drm_i915_private *dev_priv)
> +void intel_bios_init(struct drm_i915_private *i915)
>  {
> -	const struct vbt_header *vbt = dev_priv->opregion.vbt;
> +	const struct vbt_header *vbt = i915->opregion.vbt;
>  	struct vbt_header *oprom_vbt = NULL;
>  	const struct bdb_header *bdb;
>  
> -	INIT_LIST_HEAD(&dev_priv->vbt.display_devices);
> +	INIT_LIST_HEAD(&i915->vbt.display_devices);
>  
> -	if (!HAS_DISPLAY(dev_priv)) {
> -		drm_dbg_kms(&dev_priv->drm,
> +	if (!HAS_DISPLAY(i915)) {
> +		drm_dbg_kms(&i915->drm,
>  			    "Skipping VBT init due to disabled display.\n");
>  		return;
>  	}
>  
> -	init_vbt_defaults(dev_priv);
> +	init_vbt_defaults(i915);
>  
>  	/* If the OpRegion does not have VBT, look in PCI ROM. */
>  	if (!vbt) {
> -		oprom_vbt = oprom_get_vbt(dev_priv);
> +		oprom_vbt = oprom_get_vbt(i915);
>  		if (!oprom_vbt)
>  			goto out;
>  
>  		vbt = oprom_vbt;
>  
> -		drm_dbg_kms(&dev_priv->drm, "Found valid VBT in PCI ROM\n");
> +		drm_dbg_kms(&i915->drm, "Found valid VBT in PCI ROM\n");
>  	}
>  
>  	bdb = get_bdb_header(vbt);
>  
> -	drm_dbg_kms(&dev_priv->drm,
> +	drm_dbg_kms(&i915->drm,
>  		    "VBT signature \"%.*s\", BDB version %d\n",
>  		    (int)sizeof(vbt->signature), vbt->signature, bdb->version);
>  
>  	/* Grab useful general definitions */
> -	parse_general_features(dev_priv, bdb);
> -	parse_general_definitions(dev_priv, bdb);
> -	parse_panel_options(dev_priv, bdb);
> -	parse_panel_dtd(dev_priv, bdb);
> -	parse_lfp_backlight(dev_priv, bdb);
> -	parse_sdvo_panel_data(dev_priv, bdb);
> -	parse_driver_features(dev_priv, bdb);
> -	parse_power_conservation_features(dev_priv, bdb);
> -	parse_edp(dev_priv, bdb);
> -	parse_psr(dev_priv, bdb);
> -	parse_mipi_config(dev_priv, bdb);
> -	parse_mipi_sequence(dev_priv, bdb);
> +	parse_general_features(i915, bdb);
> +	parse_general_definitions(i915, bdb);
> +	parse_panel_options(i915, bdb);
> +	parse_panel_dtd(i915, bdb);
> +	parse_lfp_backlight(i915, bdb);
> +	parse_sdvo_panel_data(i915, bdb);
> +	parse_driver_features(i915, bdb);
> +	parse_power_conservation_features(i915, bdb);
> +	parse_edp(i915, bdb);
> +	parse_psr(i915, bdb);
> +	parse_mipi_config(i915, bdb);
> +	parse_mipi_sequence(i915, bdb);
>  
>  	/* Depends on child device list */
> -	parse_compression_parameters(dev_priv, bdb);
> +	parse_compression_parameters(i915, bdb);
>  
>  	/* Further processing on pre-parsed data */
> -	parse_sdvo_device_mapping(dev_priv, bdb->version);
> -	parse_ddi_ports(dev_priv, bdb->version);
> +	parse_sdvo_device_mapping(i915, bdb->version);
> +	parse_ddi_ports(i915, bdb->version);
>  
>  out:
>  	if (!vbt) {
> -		drm_info(&dev_priv->drm,
> +		drm_info(&i915->drm,
>  			 "Failed to find VBIOS tables (VBT)\n");
> -		init_vbt_missing_defaults(dev_priv);
> +		init_vbt_missing_defaults(i915);
>  	}
>  
>  	kfree(oprom_vbt);
> @@ -2267,51 +2267,51 @@ void intel_bios_init(struct drm_i915_private *dev_priv)
>  
>  /**
>   * intel_bios_driver_remove - Free any resources allocated by intel_bios_init()
> - * @dev_priv: i915 device instance
> + * @i915: i915 device instance
>   */
> -void intel_bios_driver_remove(struct drm_i915_private *dev_priv)
> +void intel_bios_driver_remove(struct drm_i915_private *i915)
>  {
>  	struct display_device_data *devdata, *n;
>  
> -	list_for_each_entry_safe(devdata, n, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
>  		list_del(&devdata->node);
>  		kfree(devdata->dsc);
>  		kfree(devdata);
>  	}
>  
> -	kfree(dev_priv->vbt.sdvo_lvds_vbt_mode);
> -	dev_priv->vbt.sdvo_lvds_vbt_mode = NULL;
> -	kfree(dev_priv->vbt.lfp_lvds_vbt_mode);
> -	dev_priv->vbt.lfp_lvds_vbt_mode = NULL;
> -	kfree(dev_priv->vbt.dsi.data);
> -	dev_priv->vbt.dsi.data = NULL;
> -	kfree(dev_priv->vbt.dsi.pps);
> -	dev_priv->vbt.dsi.pps = NULL;
> -	kfree(dev_priv->vbt.dsi.config);
> -	dev_priv->vbt.dsi.config = NULL;
> -	kfree(dev_priv->vbt.dsi.deassert_seq);
> -	dev_priv->vbt.dsi.deassert_seq = NULL;
> +	kfree(i915->vbt.sdvo_lvds_vbt_mode);
> +	i915->vbt.sdvo_lvds_vbt_mode = NULL;
> +	kfree(i915->vbt.lfp_lvds_vbt_mode);
> +	i915->vbt.lfp_lvds_vbt_mode = NULL;
> +	kfree(i915->vbt.dsi.data);
> +	i915->vbt.dsi.data = NULL;
> +	kfree(i915->vbt.dsi.pps);
> +	i915->vbt.dsi.pps = NULL;
> +	kfree(i915->vbt.dsi.config);
> +	i915->vbt.dsi.config = NULL;
> +	kfree(i915->vbt.dsi.deassert_seq);
> +	i915->vbt.dsi.deassert_seq = NULL;
>  }
>  
>  /**
>   * intel_bios_is_tv_present - is integrated TV present in VBT
> - * @dev_priv:	i915 device instance
> + * @i915: i915 device instance
>   *
>   * Return true if TV is present. If no child devices were parsed from VBT,
>   * assume TV is present.
>   */
> -bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv)
> +bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>  {
>  	const struct display_device_data *devdata;
>  	const struct child_device_config *child;
>  
> -	if (!dev_priv->vbt.int_tv_support)
> +	if (!i915->vbt.int_tv_support)
>  		return false;
>  
> -	if (list_empty(&dev_priv->vbt.display_devices))
> +	if (list_empty(&i915->vbt.display_devices))
>  		return true;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		child = &devdata->child;
>  
>  		/*
> @@ -2337,21 +2337,21 @@ bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv)
>  
>  /**
>   * intel_bios_is_lvds_present - is LVDS present in VBT
> - * @dev_priv:	i915 device instance
> + * @i915:	i915 device instance
>   * @i2c_pin:	i2c pin for LVDS if present
>   *
>   * Return true if LVDS is present. If no child devices were parsed from VBT,
>   * assume LVDS is present.
>   */
> -bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
> +bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>  {
>  	const struct display_device_data *devdata;
>  	const struct child_device_config *child;
>  
> -	if (list_empty(&dev_priv->vbt.display_devices))
> +	if (list_empty(&i915->vbt.display_devices))
>  		return true;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		child = &devdata->child;
>  
>  		/* If the device type is not LFP, continue.
> @@ -2362,7 +2362,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
>  		    child->device_type != DEVICE_TYPE_LFP)
>  			continue;
>  
> -		if (intel_gmbus_is_valid_pin(dev_priv, child->i2c_pin))
> +		if (intel_gmbus_is_valid_pin(i915, child->i2c_pin))
>  			*i2c_pin = child->i2c_pin;
>  
>  		/* However, we cannot trust the BIOS writers to populate
> @@ -2378,7 +2378,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
>  		 * additional data.  Trust that if the VBT was written into
>  		 * the OpRegion then they have validated the LVDS's existence.
>  		 */
> -		if (dev_priv->opregion.vbt)
> +		if (i915->opregion.vbt)
>  			return true;
>  	}
>  
> @@ -2387,12 +2387,12 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin)
>  
>  /**
>   * intel_bios_is_port_present - is the specified digital port present
> - * @dev_priv:	i915 device instance
> + * @i915:	i915 device instance
>   * @port:	port to check
>   *
>   * Return true if the device in %port is present.
>   */
> -bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port port)
> +bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>  {
>  	const struct display_device_data *devdata;
>  	const struct child_device_config *child;
> @@ -2406,19 +2406,19 @@ bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port por
>  		[PORT_F] = { DVO_PORT_DPF, DVO_PORT_HDMIF, },
>  	};
>  
> -	if (HAS_DDI(dev_priv)) {
> +	if (HAS_DDI(i915)) {
>  		const struct ddi_vbt_port_info *port_info =
> -			&dev_priv->vbt.ddi_port_info[port];
> +			&i915->vbt.ddi_port_info[port];
>  
>  		return port_info->child;
>  	}
>  
>  	/* FIXME maybe deal with port A as well? */
> -	if (drm_WARN_ON(&dev_priv->drm,
> +	if (drm_WARN_ON(&i915->drm,
>  			port == PORT_A) || port >= ARRAY_SIZE(port_mapping))
>  		return false;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		child = &devdata->child;
>  
>  		if ((child->dvo_port == port_mapping[port].dp ||
> @@ -2433,12 +2433,12 @@ bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port por
>  
>  /**
>   * intel_bios_is_port_edp - is the device in given port eDP
> - * @dev_priv:	i915 device instance
> + * @i915:	i915 device instance
>   * @port:	port to check
>   *
>   * Return true if the device in %port is eDP.
>   */
> -bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
> +bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
>  {
>  	const struct display_device_data *devdata;
>  	const struct child_device_config *child;
> @@ -2450,10 +2450,10 @@ bool intel_bios_is_port_edp(struct drm_i915_private *dev_priv, enum port port)
>  		[PORT_F] = DVO_PORT_DPF,
>  	};
>  
> -	if (HAS_DDI(dev_priv))
> -		return dev_priv->vbt.ddi_port_info[port].supports_edp;
> +	if (HAS_DDI(i915))
> +		return i915->vbt.ddi_port_info[port].supports_edp;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		child = &devdata->child;
>  
>  		if (child->dvo_port == port_mapping[port] &&
> @@ -2500,12 +2500,12 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
>  	return false;
>  }
>  
> -bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *dev_priv,
> +bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>  				     enum port port)
>  {
>  	const struct display_device_data *devdata;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		if (child_dev_is_dp_dual_mode(&devdata->child, port))
>  			return true;
>  	}
> @@ -2515,19 +2515,19 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *dev_priv,
>  
>  /**
>   * intel_bios_is_dsi_present - is DSI present in VBT
> - * @dev_priv:	i915 device instance
> + * @i915:	i915 device instance
>   * @port:	port for DSI if present
>   *
>   * Return true if DSI is present, and return the port in %port.
>   */
> -bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv,
> +bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
>  			       enum port *port)
>  {
>  	const struct display_device_data *devdata;
>  	const struct child_device_config *child;
>  	u8 dvo_port;
>  
> -	list_for_each_entry(devdata, &dev_priv->vbt.display_devices, node) {
> +	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>  		child = &devdata->child;
>  
>  		if (!(child->device_type & DEVICE_TYPE_MIPI_OUTPUT))
> @@ -2536,15 +2536,15 @@ bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv,
>  		dvo_port = child->dvo_port;
>  
>  		if (dvo_port == DVO_PORT_MIPIA ||
> -		    (dvo_port == DVO_PORT_MIPIB && INTEL_GEN(dev_priv) >= 11) ||
> -		    (dvo_port == DVO_PORT_MIPIC && INTEL_GEN(dev_priv) < 11)) {
> +		    (dvo_port == DVO_PORT_MIPIB && INTEL_GEN(i915) >= 11) ||
> +		    (dvo_port == DVO_PORT_MIPIC && INTEL_GEN(i915) < 11)) {
>  			if (port)
>  				*port = dvo_port - DVO_PORT_MIPIA;
>  			return true;
>  		} else if (dvo_port == DVO_PORT_MIPIB ||
>  			   dvo_port == DVO_PORT_MIPIC ||
>  			   dvo_port == DVO_PORT_MIPID) {
> -			drm_dbg_kms(&dev_priv->drm,
> +			drm_dbg_kms(&i915->drm,
>  				    "VBT has unsupported DSI port %c\n",
>  				    port_name(dvo_port - DVO_PORT_MIPIA));
>  		}
> @@ -2700,17 +2700,17 @@ intel_bios_is_lane_reversal_needed(const struct drm_i915_private *i915,
>  	return child && child->lane_reversal;
>  }
>  
> -enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv,
> +enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *i915,
>  				   enum port port)
>  {
>  	const struct ddi_vbt_port_info *info =
> -		&dev_priv->vbt.ddi_port_info[port];
> +		&i915->vbt.ddi_port_info[port];
>  	enum aux_ch aux_ch;
>  
>  	if (!info->alternate_aux_channel) {
>  		aux_ch = (enum aux_ch)port;
>  
> -		drm_dbg_kms(&dev_priv->drm,
> +		drm_dbg_kms(&i915->drm,
>  			    "using AUX %c for port %c (platform default)\n",
>  			    aux_ch_name(aux_ch), port_name(port));
>  		return aux_ch;
> @@ -2728,29 +2728,29 @@ enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv,
>  		aux_ch = AUX_CH_A;
>  		break;
>  	case DP_AUX_B:
> -		if (IS_ALDERLAKE_S(dev_priv))
> +		if (IS_ALDERLAKE_S(i915))
>  			aux_ch = AUX_CH_USBC1;
>  		else
>  			aux_ch = AUX_CH_B;
>  		break;
>  	case DP_AUX_C:
> -		if (IS_ALDERLAKE_S(dev_priv))
> +		if (IS_ALDERLAKE_S(i915))
>  			aux_ch = AUX_CH_USBC2;
> -		else if (IS_DG1(dev_priv) || IS_ROCKETLAKE(dev_priv))
> +		else if (IS_DG1(i915) || IS_ROCKETLAKE(i915))
>  			aux_ch = AUX_CH_USBC1;
>  		else
>  			aux_ch = AUX_CH_C;
>  		break;
>  	case DP_AUX_D:
> -		if (IS_ALDERLAKE_S(dev_priv))
> +		if (IS_ALDERLAKE_S(i915))
>  			aux_ch = AUX_CH_USBC3;
> -		else if (IS_DG1(dev_priv) || IS_ROCKETLAKE(dev_priv))
> +		else if (IS_DG1(i915) || IS_ROCKETLAKE(i915))
>  			aux_ch = AUX_CH_USBC2;
>  		else
>  			aux_ch = AUX_CH_D;
>  		break;
>  	case DP_AUX_E:
> -		if (IS_ALDERLAKE_S(dev_priv))
> +		if (IS_ALDERLAKE_S(i915))
>  			aux_ch = AUX_CH_USBC4;
>  		else
>  			aux_ch = AUX_CH_E;
> @@ -2773,7 +2773,7 @@ enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *dev_priv,
>  		break;
>  	}
>  
> -	drm_dbg_kms(&dev_priv->drm, "using AUX %c for port %c (VBT)\n",
> +	drm_dbg_kms(&i915->drm, "using AUX %c for port %c (VBT)\n",
>  		    aux_ch_name(aux_ch), port_name(port));
>  
>  	return aux_ch;
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 02/12] drm/i915/bios: store bdb version in i915
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 02/12] drm/i915/bios: store bdb version in i915 Jani Nikula
@ 2021-02-22 18:14   ` Ville Syrjälä
  0 siblings, 0 replies; 40+ messages in thread
From: Ville Syrjälä @ 2021-02-22 18:14 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, Lucas De Marchi

On Wed, Feb 17, 2021 at 07:03:32PM +0200, Jani Nikula wrote:
> We'll be needing the version in more places in the future, so avoid the
> need to pass it around. No functional changes.
> 
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 28 +++++++++++------------
>  drivers/gpu/drm/i915/i915_drv.h           |  3 +++
>  2 files changed, 17 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 802c228b2940..a8712fe8bf3e 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -597,7 +597,7 @@ child_device_ptr(const struct bdb_general_definitions *defs, int i)
>  }
>  
>  static void
> -parse_sdvo_device_mapping(struct drm_i915_private *i915, u8 bdb_version)
> +parse_sdvo_device_mapping(struct drm_i915_private *i915)
>  {
>  	struct sdvo_device_mapping *mapping;
>  	const struct display_device_data *devdata;
> @@ -1760,8 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>  }
>  
>  static void parse_ddi_port(struct drm_i915_private *i915,
> -			   struct display_device_data *devdata,
> -			   u8 bdb_version)
> +			   struct display_device_data *devdata)
>  {
>  	const struct child_device_config *child = &devdata->child;
>  	struct ddi_vbt_port_info *info;
> @@ -1800,10 +1799,10 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  	info->supports_dp = is_dp;
>  	info->supports_edp = is_edp;
>  
> -	if (bdb_version >= 195)
> +	if (i915->vbt.version >= 195)
>  		info->supports_typec_usb = child->dp_usb_type_c;
>  
> -	if (bdb_version >= 209)
> +	if (i915->vbt.version >= 209)
>  		info->supports_tbt = child->tbt;
>  
>  	drm_dbg_kms(&i915->drm,
> @@ -1834,7 +1833,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  		sanitize_aux_ch(i915, port);
>  	}
>  
> -	if (bdb_version >= 158) {
> +	if (i915->vbt.version >= 158) {
>  		/* The VBT HDMI level shift values match the table we have. */
>  		u8 hdmi_level_shift = child->hdmi_level_shifter_value;
>  		drm_dbg_kms(&i915->drm,
> @@ -1845,7 +1844,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  		info->hdmi_level_shift_set = true;
>  	}
>  
> -	if (bdb_version >= 204) {
> +	if (i915->vbt.version >= 204) {
>  		int max_tmds_clock;
>  
>  		switch (child->hdmi_max_data_rate) {
> @@ -1871,7 +1870,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  	}
>  
>  	/* Parse the I_boost config for SKL and above */
> -	if (bdb_version >= 196 && child->iboost) {
> +	if (i915->vbt.version >= 196 && child->iboost) {
>  		info->dp_boost_level = translate_iboost(child->dp_iboost_level);
>  		drm_dbg_kms(&i915->drm,
>  			    "Port %c VBT (e)DP boost level: %d\n",
> @@ -1883,7 +1882,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  	}
>  
>  	/* DP max link rate for CNL+ */
> -	if (bdb_version >= 216) {
> +	if (i915->vbt.version >= 216) {
>  		switch (child->dp_max_link_rate) {
>  		default:
>  		case VBT_DP_MAX_LINK_RATE_HBR3:
> @@ -1907,18 +1906,18 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>  	info->child = child;
>  }
>  
> -static void parse_ddi_ports(struct drm_i915_private *i915, u8 bdb_version)
> +static void parse_ddi_ports(struct drm_i915_private *i915)
>  {
>  	struct display_device_data *devdata;
>  
>  	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>  		return;
>  
> -	if (bdb_version < 155)
> +	if (i915->vbt.version < 155)
>  		return;
>  
>  	list_for_each_entry(devdata, &i915->vbt.display_devices, node)
> -		parse_ddi_port(i915, devdata, bdb_version);
> +		parse_ddi_port(i915, devdata);
>  }
>  
>  static void
> @@ -2229,6 +2228,7 @@ void intel_bios_init(struct drm_i915_private *i915)
>  	}
>  
>  	bdb = get_bdb_header(vbt);
> +	i915->vbt.version = bdb->version;
>  
>  	drm_dbg_kms(&i915->drm,
>  		    "VBT signature \"%.*s\", BDB version %d\n",
> @@ -2252,8 +2252,8 @@ void intel_bios_init(struct drm_i915_private *i915)
>  	parse_compression_parameters(i915, bdb);
>  
>  	/* Further processing on pre-parsed data */
> -	parse_sdvo_device_mapping(i915, bdb->version);
> -	parse_ddi_ports(i915, bdb->version);
> +	parse_sdvo_device_mapping(i915);
> +	parse_ddi_ports(i915);
>  
>  out:
>  	if (!vbt) {
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index f8413b3b9da8..62be1465f52b 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -615,6 +615,9 @@ enum psr_lines_to_wait {
>  };
>  
>  struct intel_vbt_data {
> +	/* bdb version */
> +	u16 version;
> +
>  	struct drm_display_mode *lfp_lvds_vbt_mode; /* if any */
>  	struct drm_display_mode *sdvo_lvds_vbt_mode; /* if any */
>  
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 03/12] drm/i915/bios: limit default outputs by platform on missing VBT
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 03/12] drm/i915/bios: limit default outputs by platform on missing VBT Jani Nikula
@ 2021-02-22 18:16   ` Ville Syrjälä
  0 siblings, 0 replies; 40+ messages in thread
From: Ville Syrjälä @ 2021-02-22 18:16 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx, Lucas De Marchi

On Wed, Feb 17, 2021 at 07:03:33PM +0200, Jani Nikula wrote:
> Pre-DDI and non-CHV aren't using the information created here anyway, so
> don't bother setting the defaults for them. This should be a
> non-functional change, but is separated here to catch any regressions in
> a single commit.
> 
> Cc: Lucas De Marchi <lucas.demarchi@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index a8712fe8bf3e..e9cb15aa2f5a 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -2058,6 +2058,9 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
>  {
>  	enum port port;
>  
> +	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
> +		return;
> +
>  	for_each_port(port) {
>  		struct ddi_vbt_port_info *info =
>  			&i915->vbt.ddi_port_info[port];
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data
  2021-02-17 19:52     ` Jani Nikula
@ 2021-02-23 12:50       ` Jani Nikula
  2021-02-24  0:37         ` Lucas De Marchi
  0 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-23 12:50 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Wed, 17 Feb 2021, Jani Nikula <jani.nikula@intel.com> wrote:
> On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>> On Wed, Feb 17, 2021 at 07:03:36PM +0200, Jani Nikula wrote:
>>>Make the naming suitable for exposing to the rest of the driver as an
>>>opaque type. No functional changes.
>>
>> ack, but..
>>
>>>
>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>---
>>> drivers/gpu/drm/i915/display/intel_bios.c | 30 +++++++++++------------
>>> 1 file changed, 15 insertions(+), 15 deletions(-)
>>>
>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>index 59d315b395c2..0e882da165be 100644
>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>@@ -59,7 +59,7 @@
>>>  */
>>>
>>> /* Wrapper for VBT child device config */
>>>-struct display_device_data {
>>>+struct intel_bios_encoder_data {
>>> 	struct child_device_config child;
>>> 	struct dsc_compression_parameters_entry *dsc;
>>> 	struct list_head node;
>>>@@ -600,7 +600,7 @@ static void
>>> parse_sdvo_device_mapping(struct drm_i915_private *i915)
>>> {
>>> 	struct sdvo_device_mapping *mapping;
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>
>> shouldn't we also replace devdata with a better name?
>
> Yes, see cover letter. :)
>
> I've rolled with devdata for now because that's what was there.

So. Does "intel_bios_encoder_data" make sense as a name, or do we have
better ideas? It's basically just a wrapper to VBT child device config.

The name "devdata" depends on the struct name too I guess. Within
intel_bios.c, s/devdata/whatever/g isn't a big deal. The real question
is what to call the pointer within struct intel_encoder.

I'm really not hung up on the names I used, but I'd only like to do the
rename+rebase of this series once and be done with it.


BR,
Jani.



>
> BR,
> Jani.
>
>
>>
>> Lucas De Marchi
>>
>>> 	const struct child_device_config *child;
>>> 	int count = 0;
>>>
>>>@@ -1439,7 +1439,7 @@ parse_compression_parameters(struct drm_i915_private *i915,
>>> 			     const struct bdb_header *bdb)
>>> {
>>> 	const struct bdb_compression_parameters *params;
>>>-	struct display_device_data *devdata;
>>>+	struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>> 	u16 block_size;
>>> 	int index;
>>>@@ -1760,7 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>>> }
>>>
>>> static void parse_ddi_port(struct drm_i915_private *i915,
>>>-			   struct display_device_data *devdata)
>>>+			   struct intel_bios_encoder_data *devdata)
>>> {
>>> 	const struct child_device_config *child = &devdata->child;
>>> 	struct ddi_vbt_port_info *info;
>>>@@ -1908,7 +1908,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>>>
>>> static void parse_ddi_ports(struct drm_i915_private *i915)
>>> {
>>>-	struct display_device_data *devdata;
>>>+	struct intel_bios_encoder_data *devdata;
>>>
>>> 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>> 		return;
>>>@@ -1925,7 +1925,7 @@ parse_general_definitions(struct drm_i915_private *i915,
>>> 			  const struct bdb_header *bdb)
>>> {
>>> 	const struct bdb_general_definitions *defs;
>>>-	struct display_device_data *devdata;
>>>+	struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>> 	int i, child_device_num;
>>> 	u8 expected_size;
>>>@@ -2063,7 +2063,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
>>> 		return;
>>>
>>> 	for_each_port_masked(port, ports) {
>>>-		struct display_device_data *devdata;
>>>+		struct intel_bios_encoder_data *devdata;
>>> 		struct child_device_config *child;
>>> 		enum phy phy = intel_port_to_phy(i915, port);
>>>
>>>@@ -2302,7 +2302,7 @@ void intel_bios_init(struct drm_i915_private *i915)
>>>  */
>>> void intel_bios_driver_remove(struct drm_i915_private *i915)
>>> {
>>>-	struct display_device_data *devdata, *n;
>>>+	struct intel_bios_encoder_data *devdata, *n;
>>>
>>> 	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
>>> 		list_del(&devdata->node);
>>>@@ -2333,7 +2333,7 @@ void intel_bios_driver_remove(struct drm_i915_private *i915)
>>>  */
>>> bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>>> {
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>>
>>> 	if (!i915->vbt.int_tv_support)
>>>@@ -2376,7 +2376,7 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>>>  */
>>> bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>>> {
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>>
>>> 	if (list_empty(&i915->vbt.display_devices))
>>>@@ -2425,7 +2425,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>>>  */
>>> bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>>> {
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>> 	static const struct {
>>> 		u16 dp, hdmi;
>>>@@ -2471,7 +2471,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>>>  */
>>> bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
>>> {
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>> 	static const short port_mapping[] = {
>>> 		[PORT_B] = DVO_PORT_DPB,
>>>@@ -2534,7 +2534,7 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
>>> bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>>> 				     enum port port)
>>> {
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>>
>>> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>>> 		if (child_dev_is_dp_dual_mode(&devdata->child, port))
>>>@@ -2554,7 +2554,7 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>>> bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
>>> 			       enum port *port)
>>> {
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>> 	u8 dvo_port;
>>>
>>>@@ -2654,7 +2654,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
>>> 			       int dsc_max_bpc)
>>> {
>>> 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>>>-	const struct display_device_data *devdata;
>>>+	const struct intel_bios_encoder_data *devdata;
>>> 	const struct child_device_config *child;
>>>
>>> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>>>-- 
>>>2.20.1
>>>

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-17 19:58         ` Lucas De Marchi
@ 2021-02-23 13:34           ` Jani Nikula
  2021-02-24  0:34             ` Lucas De Marchi
  0 siblings, 1 reply; 40+ messages in thread
From: Jani Nikula @ 2021-02-23 13:34 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Wed, Feb 17, 2021 at 09:49:57PM +0200, Jani Nikula wrote:
>>On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>>> On Wed, Feb 17, 2021 at 09:23:00AM -0800, Lucas De Marchi wrote:
>>>>On Wed, Feb 17, 2021 at 07:03:34PM +0200, Jani Nikula wrote:
>>>>>With the defaults limited to non-TypeC ports in commit 828ccb31cf41
>>>>>("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
>>>>>a no-op, but clarifies the code and prepares for subsequent changes.
>>>>>
>>>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>>>---
>>>>>drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
>>>>>1 file changed, 2 insertions(+), 1 deletion(-)
>>>>>
>>>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>>index e9cb15aa2f5a..b9d99324d66d 100644
>>>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>>@@ -2057,11 +2057,12 @@ static void
>>>>>init_vbt_missing_defaults(struct drm_i915_private *i915)
>>>>>{
>>>>>	enum port port;
>>>>>+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;
>>>>
>>>>
>>>>I'd not spread the knowledge of what port uses tc phy like this.
>>>>It's painful to maintain.
>>
>>Umm, this wasn't meant to have anything to do with tc, really. Granted,
>>the commit message is misleading.
>
> ok, makes more sense now. I don't want us to keep updating this function
> when the ports change on new platforms.

Agreed.

>
>>
>>>
>>> also, not sure how this clarifies things if PORT_TC1 aliases PORT_D,
>>> so I'd just drop this patch
>>
>>The point is that I'd like to reduce the number of ports set up by
>>default, perhaps even further than this. It's a bit silly to generate 9
>>dummy child devices on certain platforms when there's no VBT.
>
> ok. So what would be the devices without vbt? I remember relying on this
> for e.g. dg1 before we could read it.

If it were just for enabling, I'd start some igt tool to generate a
basic VBT to use with i915.vbt_firmware and the firmware loader. It's
the existing products that ended up depending on the defaults that are
the real issue I think.

> What other platforms should we care about? And for those, should we
> really care about ports E and F or could we reduce it to, say the first
> 4?

IIRC they were some Haswell or Broadwell era Chromebooks. They probably
don't use very many ports, but in theory it could be A-D,F on DDI
platforms (E requires VBT child device). On gen 11 it could be A-E, with
F requiring VBT child device.

A-F covers all cases, but does not try to create G-I or any further
future ports.


BR,
Jani.


>
> thanks
> Lucas De Marchi
>
>>
>>
>>BR,
>>Jani.
>>
>>>
>>> Lucas De Marchi
>>>
>>>>Lucas De Marchi
>>>>
>>>>>
>>>>>	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>>>>		return;
>>>>>
>>>>>-	for_each_port(port) {
>>>>>+	for_each_port_masked(port, ports) {
>>>>>		struct ddi_vbt_port_info *info =
>>>>>			&i915->vbt.ddi_port_info[port];
>>>>>		enum phy phy = intel_port_to_phy(i915, port);
>>>>>--
>>>>>2.20.1
>>>>>
>>> _______________________________________________
>>> Intel-gfx mailing list
>>> Intel-gfx@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>>
>>-- 
>>Jani Nikula, Intel Open Source Graphics Center

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F
  2021-02-23 13:34           ` Jani Nikula
@ 2021-02-24  0:34             ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-24  0:34 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 23, 2021 at 03:34:51PM +0200, Jani Nikula wrote:
>On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>> On Wed, Feb 17, 2021 at 09:49:57PM +0200, Jani Nikula wrote:
>>>On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>>>> On Wed, Feb 17, 2021 at 09:23:00AM -0800, Lucas De Marchi wrote:
>>>>>On Wed, Feb 17, 2021 at 07:03:34PM +0200, Jani Nikula wrote:
>>>>>>With the defaults limited to non-TypeC ports in commit 828ccb31cf41
>>>>>>("drm/i915/icl: Add TypeC ports only if VBT is present"), this should be
>>>>>>a no-op, but clarifies the code and prepares for subsequent changes.
>>>>>>
>>>>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>>>>---
>>>>>>drivers/gpu/drm/i915/display/intel_bios.c | 3 ++-
>>>>>>1 file changed, 2 insertions(+), 1 deletion(-)
>>>>>>
>>>>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>>>index e9cb15aa2f5a..b9d99324d66d 100644
>>>>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>>>@@ -2057,11 +2057,12 @@ static void
>>>>>>init_vbt_missing_defaults(struct drm_i915_private *i915)
>>>>>>{
>>>>>>	enum port port;
>>>>>>+	int ports = PORT_A | PORT_B | PORT_C | PORT_D | PORT_E | PORT_F;
>>>>>
>>>>>
>>>>>I'd not spread the knowledge of what port uses tc phy like this.
>>>>>It's painful to maintain.
>>>
>>>Umm, this wasn't meant to have anything to do with tc, really. Granted,
>>>the commit message is misleading.
>>
>> ok, makes more sense now. I don't want us to keep updating this function
>> when the ports change on new platforms.
>
>Agreed.
>
>>
>>>
>>>>
>>>> also, not sure how this clarifies things if PORT_TC1 aliases PORT_D,
>>>> so I'd just drop this patch
>>>
>>>The point is that I'd like to reduce the number of ports set up by
>>>default, perhaps even further than this. It's a bit silly to generate 9
>>>dummy child devices on certain platforms when there's no VBT.
>>
>> ok. So what would be the devices without vbt? I remember relying on this
>> for e.g. dg1 before we could read it.
>
>If it were just for enabling, I'd start some igt tool to generate a
>basic VBT to use with i915.vbt_firmware and the firmware loader. It's
>the existing products that ended up depending on the defaults that are
>the real issue I think.
>
>> What other platforms should we care about? And for those, should we
>> really care about ports E and F or could we reduce it to, say the first
>> 4?
>
>IIRC they were some Haswell or Broadwell era Chromebooks. They probably
>don't use very many ports, but in theory it could be A-D,F on DDI
>platforms (E requires VBT child device). On gen 11 it could be A-E, with
>F requiring VBT child device.
>
>A-F covers all cases, but does not try to create G-I or any further
>future ports.


ok, thanks for confirming.


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi


>
>
>BR,
>Jani.
>
>
>>
>> thanks
>> Lucas De Marchi
>>
>>>
>>>
>>>BR,
>>>Jani.
>>>
>>>>
>>>> Lucas De Marchi
>>>>
>>>>>Lucas De Marchi
>>>>>
>>>>>>
>>>>>>	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>>>>>		return;
>>>>>>
>>>>>>-	for_each_port(port) {
>>>>>>+	for_each_port_masked(port, ports) {
>>>>>>		struct ddi_vbt_port_info *info =
>>>>>>			&i915->vbt.ddi_port_info[port];
>>>>>>		enum phy phy = intel_port_to_phy(i915, port);
>>>>>>--
>>>>>>2.20.1
>>>>>>
>>>> _______________________________________________
>>>> Intel-gfx mailing list
>>>> Intel-gfx@lists.freedesktop.org
>>>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>>>
>>>--
>>>Jani Nikula, Intel Open Source Graphics Center
>
>-- 
>Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data
  2021-02-23 12:50       ` Jani Nikula
@ 2021-02-24  0:37         ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-02-24  0:37 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Tue, Feb 23, 2021 at 02:50:30PM +0200, Jani Nikula wrote:
>On Wed, 17 Feb 2021, Jani Nikula <jani.nikula@intel.com> wrote:
>> On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>>> On Wed, Feb 17, 2021 at 07:03:36PM +0200, Jani Nikula wrote:
>>>>Make the naming suitable for exposing to the rest of the driver as an
>>>>opaque type. No functional changes.
>>>
>>> ack, but..
>>>
>>>>
>>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>>---
>>>> drivers/gpu/drm/i915/display/intel_bios.c | 30 +++++++++++------------
>>>> 1 file changed, 15 insertions(+), 15 deletions(-)
>>>>
>>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>index 59d315b395c2..0e882da165be 100644
>>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>@@ -59,7 +59,7 @@
>>>>  */
>>>>
>>>> /* Wrapper for VBT child device config */
>>>>-struct display_device_data {
>>>>+struct intel_bios_encoder_data {
>>>> 	struct child_device_config child;
>>>> 	struct dsc_compression_parameters_entry *dsc;
>>>> 	struct list_head node;
>>>>@@ -600,7 +600,7 @@ static void
>>>> parse_sdvo_device_mapping(struct drm_i915_private *i915)
>>>> {
>>>> 	struct sdvo_device_mapping *mapping;
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>
>>> shouldn't we also replace devdata with a better name?
>>
>> Yes, see cover letter. :)
>>
>> I've rolled with devdata for now because that's what was there.
>
>So. Does "intel_bios_encoder_data" make sense as a name, or do we have
>better ideas? It's basically just a wrapper to VBT child device config.
>
>The name "devdata" depends on the struct name too I guess. Within
>intel_bios.c, s/devdata/whatever/g isn't a big deal. The real question
>is what to call the pointer within struct intel_encoder.
>
>I'm really not hung up on the names I used, but I'd only like to do the
>rename+rebase of this series once and be done with it.

On that lack of a better suggestion for the name, I'm convinced we can
actually leave this for later


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>
>
>BR,
>Jani.
>
>
>
>>
>> BR,
>> Jani.
>>
>>
>>>
>>> Lucas De Marchi
>>>
>>>> 	const struct child_device_config *child;
>>>> 	int count = 0;
>>>>
>>>>@@ -1439,7 +1439,7 @@ parse_compression_parameters(struct drm_i915_private *i915,
>>>> 			     const struct bdb_header *bdb)
>>>> {
>>>> 	const struct bdb_compression_parameters *params;
>>>>-	struct display_device_data *devdata;
>>>>+	struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>> 	u16 block_size;
>>>> 	int index;
>>>>@@ -1760,7 +1760,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>>>> }
>>>>
>>>> static void parse_ddi_port(struct drm_i915_private *i915,
>>>>-			   struct display_device_data *devdata)
>>>>+			   struct intel_bios_encoder_data *devdata)
>>>> {
>>>> 	const struct child_device_config *child = &devdata->child;
>>>> 	struct ddi_vbt_port_info *info;
>>>>@@ -1908,7 +1908,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>>>>
>>>> static void parse_ddi_ports(struct drm_i915_private *i915)
>>>> {
>>>>-	struct display_device_data *devdata;
>>>>+	struct intel_bios_encoder_data *devdata;
>>>>
>>>> 	if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915))
>>>> 		return;
>>>>@@ -1925,7 +1925,7 @@ parse_general_definitions(struct drm_i915_private *i915,
>>>> 			  const struct bdb_header *bdb)
>>>> {
>>>> 	const struct bdb_general_definitions *defs;
>>>>-	struct display_device_data *devdata;
>>>>+	struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>> 	int i, child_device_num;
>>>> 	u8 expected_size;
>>>>@@ -2063,7 +2063,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
>>>> 		return;
>>>>
>>>> 	for_each_port_masked(port, ports) {
>>>>-		struct display_device_data *devdata;
>>>>+		struct intel_bios_encoder_data *devdata;
>>>> 		struct child_device_config *child;
>>>> 		enum phy phy = intel_port_to_phy(i915, port);
>>>>
>>>>@@ -2302,7 +2302,7 @@ void intel_bios_init(struct drm_i915_private *i915)
>>>>  */
>>>> void intel_bios_driver_remove(struct drm_i915_private *i915)
>>>> {
>>>>-	struct display_device_data *devdata, *n;
>>>>+	struct intel_bios_encoder_data *devdata, *n;
>>>>
>>>> 	list_for_each_entry_safe(devdata, n, &i915->vbt.display_devices, node) {
>>>> 		list_del(&devdata->node);
>>>>@@ -2333,7 +2333,7 @@ void intel_bios_driver_remove(struct drm_i915_private *i915)
>>>>  */
>>>> bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>>>> {
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>>
>>>> 	if (!i915->vbt.int_tv_support)
>>>>@@ -2376,7 +2376,7 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915)
>>>>  */
>>>> bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>>>> {
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>>
>>>> 	if (list_empty(&i915->vbt.display_devices))
>>>>@@ -2425,7 +2425,7 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin)
>>>>  */
>>>> bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>>>> {
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>> 	static const struct {
>>>> 		u16 dp, hdmi;
>>>>@@ -2471,7 +2471,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
>>>>  */
>>>> bool intel_bios_is_port_edp(struct drm_i915_private *i915, enum port port)
>>>> {
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>> 	static const short port_mapping[] = {
>>>> 		[PORT_B] = DVO_PORT_DPB,
>>>>@@ -2534,7 +2534,7 @@ static bool child_dev_is_dp_dual_mode(const struct child_device_config *child,
>>>> bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>>>> 				     enum port port)
>>>> {
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>>
>>>> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>>>> 		if (child_dev_is_dp_dual_mode(&devdata->child, port))
>>>>@@ -2554,7 +2554,7 @@ bool intel_bios_is_port_dp_dual_mode(struct drm_i915_private *i915,
>>>> bool intel_bios_is_dsi_present(struct drm_i915_private *i915,
>>>> 			       enum port *port)
>>>> {
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>> 	u8 dvo_port;
>>>>
>>>>@@ -2654,7 +2654,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
>>>> 			       int dsc_max_bpc)
>>>> {
>>>> 	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>>>>-	const struct display_device_data *devdata;
>>>>+	const struct intel_bios_encoder_data *devdata;
>>>> 	const struct child_device_config *child;
>>>>
>>>> 	list_for_each_entry(devdata, &i915->vbt.display_devices, node) {
>>>>--
>>>>2.20.1
>>>>
>
>-- 
>Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 05/12] drm/i915/bios: create fake child devices on missing VBT
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 05/12] drm/i915/bios: create fake child devices on missing VBT Jani Nikula
@ 2021-03-09  0:51   ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-03-09  0:51 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:35PM +0200, Jani Nikula wrote:
>Instead of initialing data directly in ddi_port_info array, create fake
>child devices for default outputs when the VBT is missing. This makes
>further unification of output handling easier.
>
>This will make intel_bios_is_port_present() return true for the fake
>child devices. This may cause subtle changes in a handful of places.
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>---
> drivers/gpu/drm/i915/display/intel_bios.c | 47 ++++++++++++++++++-----
> 1 file changed, 37 insertions(+), 10 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index b9d99324d66d..59d315b395c2 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -2063,8 +2063,8 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
> 		return;
>
> 	for_each_port_masked(port, ports) {
>-		struct ddi_vbt_port_info *info =
>-			&i915->vbt.ddi_port_info[port];
>+		struct display_device_data *devdata;
>+		struct child_device_config *child;
> 		enum phy phy = intel_port_to_phy(i915, port);
>
> 		/*
>@@ -2074,11 +2074,38 @@ init_vbt_missing_defaults(struct drm_i915_private *i915)
> 		if (intel_phy_is_tc(i915, phy))
> 			continue;
>
>-		info->supports_dvi = (port != PORT_A && port != PORT_E);
>-		info->supports_hdmi = info->supports_dvi;
>-		info->supports_dp = (port != PORT_E);
>-		info->supports_edp = (port == PORT_A);
>+		/* Create fake child device config */
>+		devdata = kzalloc(sizeof(*devdata), GFP_KERNEL);
>+		if (!devdata)
>+			break;
>+
>+		child = &devdata->child;
>+
>+		if (port == PORT_F)
>+			child->dvo_port = DVO_PORT_HDMIF;
>+		else if (port == PORT_E)
>+			child->dvo_port = DVO_PORT_HDMIE;
>+		else
>+			child->dvo_port = DVO_PORT_HDMIA + port;

initially I was confused here, but after checking I understoo why you're
doing this, since DVO_PORT_HDMIE/DVO_PORT_HDMIF doesn't follow
DVO_PORT_HDMID


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>+
>+		if (port != PORT_A && port != PORT_E)
>+			child->device_type |= DEVICE_TYPE_TMDS_DVI_SIGNALING;
>+
>+		if (port != PORT_E)
>+			child->device_type |= DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>+
>+		if (port == PORT_A)
>+			child->device_type |= DEVICE_TYPE_INTERNAL_CONNECTOR;
>+
>+		list_add_tail(&devdata->node, &i915->vbt.display_devices);
>+
>+		drm_dbg_kms(&i915->drm,
>+			    "Generating default VBT child device with type 0x04%x on port %c\n",
>+			    child->device_type, port_name(port));
> 	}
>+
>+	/* Bypass some minimum baseline VBT version checks */
>+	i915->vbt.version = 155;
> }
>
> static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt)
>@@ -2255,10 +2282,6 @@ void intel_bios_init(struct drm_i915_private *i915)
> 	/* Depends on child device list */
> 	parse_compression_parameters(i915, bdb);
>
>-	/* Further processing on pre-parsed data */
>-	parse_sdvo_device_mapping(i915);
>-	parse_ddi_ports(i915);
>-
> out:
> 	if (!vbt) {
> 		drm_info(&i915->drm,
>@@ -2266,6 +2289,10 @@ void intel_bios_init(struct drm_i915_private *i915)
> 		init_vbt_missing_defaults(i915);
> 	}
>
>+	/* Further processing on pre-parsed or generated child device data */
>+	parse_sdvo_device_mapping(i915);
>+	parse_ddi_ports(i915);
>+
> 	kfree(oprom_vbt);
> }
>
>-- 
>2.20.1
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support
  2021-02-17 19:55     ` Jani Nikula
@ 2021-03-15 17:32       ` Lucas De Marchi
  2021-03-16  9:18         ` Jani Nikula
  0 siblings, 1 reply; 40+ messages in thread
From: Lucas De Marchi @ 2021-03-15 17:32 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 09:55:53PM +0200, Jani Nikula wrote:
>On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>> On Wed, Feb 17, 2021 at 07:03:38PM +0200, Jani Nikula wrote:
>>>These will be exposed to the rest of the driver and replace other
>>>functions. Everything will operate on the child devices.
>>>
>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>---
>>> drivers/gpu/drm/i915/display/intel_bios.c | 66 ++++++++++++++++++-----
>>> 1 file changed, 54 insertions(+), 12 deletions(-)
>>>
>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>index 193772f42582..739ef5d91907 100644
>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>@@ -64,6 +64,7 @@ struct intel_bios_encoder_data {
>>>
>>> 	struct child_device_config child;
>>> 	struct dsc_compression_parameters_entry *dsc;
>>>+
>>> 	struct list_head node;
>>> };
>>>
>>>@@ -1761,6 +1762,53 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>>> 					  dvo_port);
>>> }
>>>
>>>+static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
>>>+				 enum port port)
>>>+{
>>>+	struct drm_i915_private *i915 = devdata->i915;
>>>+	bool is_hdmi;
>>>+
>>>+	if (port != PORT_A || INTEL_GEN(i915) >= 12)
>>>+		return;
>>>+
>>>+	if (!(devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING))
>>>+		return;
>>>+
>>>+	is_hdmi = !(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT);
>>>+
>>>+	drm_dbg_kms(&i915->drm, "VBT claims port A supports DVI%s, ignoring\n",
>>>+		    is_hdmi ? "/HDMI" : "");
>>>+
>>>+	devdata->child.device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>>+	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
>>>+}
>>>+
>>>+static bool
>>>+intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
>>>+{
>>>+	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>>+}
>>>+
>>>+static bool
>>>+intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
>>>+{
>>>+	return intel_bios_encoder_supports_dvi(devdata) &&
>>>+		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>>>+}
>>>+
>>>+static bool
>>>+intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
>>>+{
>>>+	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>>>+}
>>>+
>>>+static bool
>>>+intel_bios_encoder_supports_edp(const struct intel_bios_encoder_data *devdata)
>>>+{
>>>+	return intel_bios_encoder_supports_dp(devdata) &&
>>>+		devdata->child.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR;
>>>+}
>>>+
>>> static void parse_ddi_port(struct drm_i915_private *i915,
>>> 			   struct intel_bios_encoder_data *devdata)
>>> {
>>>@@ -1782,19 +1830,13 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>>> 		return;
>>> 	}
>>>
>>>-	is_dvi = child->device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>>-	is_dp = child->device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>>>-	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>>>-	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>>>-	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
>>>+	sanitize_device_type(devdata, port);
>>>
>>>-	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
>>>-		drm_dbg_kms(&i915->drm,
>>>-			    "VBT claims port A supports DVI%s, ignoring\n",
>>>-			    is_hdmi ? "/HDMI" : "");
>>>-		is_dvi = false;
>>>-		is_hdmi = false;
>>>-	}
>>>+	is_dvi = intel_bios_encoder_supports_dvi(devdata);
>>>+	is_dp = intel_bios_encoder_supports_dp(devdata);
>>>+	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>>
>> any reason to leave this behind?
>
>Just logging, even though that doesn't match what we actually do in
>intel_ddi_crt_present(). I expect there to be further cleanup
>afterwards.

I mean: you added a intel_bios_encoder_supports_*() for everything else.
Why not for crt?

Lucas De Marchi

>
>BR,
>Jani.
>
>>
>> Lucas De Marchi
>>
>>>+	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
>>>+	is_edp = intel_bios_encoder_supports_edp(devdata);
>>>
>>> 	info->supports_dvi = is_dvi;
>>> 	info->supports_hdmi = is_hdmi;
>>>--
>>>2.20.1
>>>
>
>-- 
>Jani Nikula, Intel Open Source Graphics Center
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 09/12] drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[]
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 09/12] drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[] Jani Nikula
@ 2021-03-15 17:36   ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-03-15 17:36 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:39PM +0200, Jani Nikula wrote:
>We'll be needing the intel_bios_encoder_data pointer going forward, and
>it's just easier to store the higher level pointer in the
>ddi_vbt_port_info[] array.
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/i915/display/intel_bios.c | 28 +++++++++++------------
> drivers/gpu/drm/i915/display/intel_bios.h |  1 +
> drivers/gpu/drm/i915/i915_drv.h           |  2 +-
> 3 files changed, 16 insertions(+), 15 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index 739ef5d91907..47e9c609f82a 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -1511,7 +1511,7 @@ static enum port get_port_by_ddc_pin(struct drm_i915_private *i915, u8 ddc_pin)
> 	for_each_port(port) {
> 		info = &i915->vbt.ddi_port_info[port];
>
>-		if (info->child && ddc_pin == info->alternate_ddc_pin)
>+		if (info->devdata && ddc_pin == info->alternate_ddc_pin)
> 			return port;
> 	}
>
>@@ -1563,7 +1563,7 @@ static enum port get_port_by_aux_ch(struct drm_i915_private *i915, u8 aux_ch)
> 	for_each_port(port) {
> 		info = &i915->vbt.ddi_port_info[port];
>
>-		if (info->child && aux_ch == info->alternate_aux_channel)
>+		if (info->devdata && aux_ch == info->alternate_aux_channel)
> 			return port;
> 	}
>
>@@ -1823,7 +1823,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>
> 	info = &i915->vbt.ddi_port_info[port];
>
>-	if (info->child) {
>+	if (info->devdata) {
> 		drm_dbg_kms(&i915->drm,
> 			    "More than one child device for port %c in VBT, using the first.\n",
> 			    port_name(port));
>@@ -1947,7 +1947,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> 			    port_name(port), info->dp_max_link_rate);
> 	}
>
>-	info->child = child;
>+	info->devdata = devdata;
> }
>
> static void parse_ddi_ports(struct drm_i915_private *i915)
>@@ -2488,7 +2488,7 @@ bool intel_bios_is_port_present(struct drm_i915_private *i915, enum port port)
> 		const struct ddi_vbt_port_info *port_info =
> 			&i915->vbt.ddi_port_info[port];
>
>-		return port_info->child;
>+		return port_info->devdata;
> 	}
>
> 	/* FIXME maybe deal with port A as well? */
>@@ -2735,13 +2735,13 @@ bool
> intel_bios_is_port_hpd_inverted(const struct drm_i915_private *i915,
> 				enum port port)
> {
>-	const struct child_device_config *child =
>-		i915->vbt.ddi_port_info[port].child;
>+	const struct intel_bios_encoder_data *devdata =
>+		i915->vbt.ddi_port_info[port].devdata;
>
> 	if (drm_WARN_ON_ONCE(&i915->drm, !IS_GEN9_LP(i915)))
> 		return false;
>
>-	return child && child->hpd_invert;
>+	return devdata && devdata->child.hpd_invert;
> }
>
> /**
>@@ -2755,10 +2755,10 @@ bool
> intel_bios_is_lspcon_present(const struct drm_i915_private *i915,
> 			     enum port port)
> {
>-	const struct child_device_config *child =
>-		i915->vbt.ddi_port_info[port].child;
>+	const struct intel_bios_encoder_data *devdata =
>+		i915->vbt.ddi_port_info[port].devdata;
>
>-	return HAS_LSPCON(i915) && child && child->lspcon;
>+	return HAS_LSPCON(i915) && devdata && devdata->child.lspcon;
> }
>
> /**
>@@ -2772,10 +2772,10 @@ bool
> intel_bios_is_lane_reversal_needed(const struct drm_i915_private *i915,
> 				   enum port port)
> {
>-	const struct child_device_config *child =
>-		i915->vbt.ddi_port_info[port].child;
>+	const struct intel_bios_encoder_data *devdata =
>+		i915->vbt.ddi_port_info[port].devdata;
>
>-	return child && child->lane_reversal;
>+	return devdata && devdata->child.lane_reversal;
> }
>
> enum aux_ch intel_bios_port_aux_ch(struct drm_i915_private *i915,
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
>index f25190ecfe97..6591cf7758f2 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.h
>+++ b/drivers/gpu/drm/i915/display/intel_bios.h
>@@ -33,6 +33,7 @@
> #include <linux/types.h>
>
> struct drm_i915_private;
>+struct intel_bios_encoder_data;
> struct intel_crtc_state;
> struct intel_encoder;
> enum port;
>diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>index 62be1465f52b..e2c5ba61b370 100644
>--- a/drivers/gpu/drm/i915/i915_drv.h
>+++ b/drivers/gpu/drm/i915/i915_drv.h
>@@ -584,7 +584,7 @@ i915_fence_timeout(const struct drm_i915_private *i915)
>
> struct ddi_vbt_port_info {
> 	/* Non-NULL if port present. */
>-	const struct child_device_config *child;
>+	const struct intel_bios_encoder_data *devdata;
>
> 	int max_tmds_clock;
>
>-- 
>2.20.1
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 10/12] drm/i915/bios: start using the intel_bios_encoder_data directly
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 10/12] drm/i915/bios: start using the intel_bios_encoder_data directly Jani Nikula
@ 2021-03-15 17:41   ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-03-15 17:41 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:40PM +0200, Jani Nikula wrote:
>Start using struct intel_bios_encoder_data directly. We'll start
>sanitizing the child device data directly as well, instead of the cached
>data in ddi_port_info[]. The one downside here is having to store a
>non-const pointer back to intel_bios_encoder_data.
>
>Eventually we'll be able to have a direct pointer from encoder to
>intel_bios_encoder_data, removing the need to go through the
>ddi_port_info[] array altogether. And we'll be able to remove the cached
>data in ddi_port_info[].
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/i915/display/intel_bios.c | 37 +++++++++--------------
> drivers/gpu/drm/i915/display/intel_bios.h | 10 ++++--
> drivers/gpu/drm/i915/display/intel_ddi.c  | 15 +++++++--
> drivers/gpu/drm/i915/i915_drv.h           |  4 +--
> 4 files changed, 35 insertions(+), 31 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index 47e9c609f82a..d26304ebc6b9 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -1529,6 +1529,8 @@ static void sanitize_ddc_pin(struct drm_i915_private *i915,
>
> 	p = get_port_by_ddc_pin(i915, info->alternate_ddc_pin);
> 	if (p != PORT_NONE) {
>+		struct child_device_config *child;
>+
> 		drm_dbg_kms(&i915->drm,
> 			    "port %c trying to use the same DDC pin (0x%x) as port %c, "
> 			    "disabling port %c DVI/HDMI support\n",
>@@ -1548,9 +1550,11 @@ static void sanitize_ddc_pin(struct drm_i915_private *i915,
> 		 * we must pick port E :(
> 		 */
> 		info = &i915->vbt.ddi_port_info[p];
>+		child = &info->devdata->child;
>+
>+		child->device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
>+		child->device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
>
>-		info->supports_dvi = false;
>-		info->supports_hdmi = false;
> 		info->alternate_ddc_pin = 0;
> 	}
> }
>@@ -1783,20 +1787,20 @@ static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
> 	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
> }
>
>-static bool
>+bool
> intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
> {
> 	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
> }
>
>-static bool
>+bool
> intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
> {
> 	return intel_bios_encoder_supports_dvi(devdata) &&
> 		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
> }
>
>-static bool
>+bool
> intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
> {
> 	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>@@ -1838,8 +1842,6 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> 	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
> 	is_edp = intel_bios_encoder_supports_edp(devdata);
>
>-	info->supports_dvi = is_dvi;
>-	info->supports_hdmi = is_hdmi;
> 	info->supports_dp = is_dp;
> 	info->supports_edp = is_edp;
>
>@@ -2901,21 +2903,6 @@ int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder)
> 	return i915->vbt.ddi_port_info[encoder->port].alternate_ddc_pin;
> }
>
>-bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port)
>-{
>-	return i915->vbt.ddi_port_info[port].supports_dvi;
>-}
>-
>-bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port)
>-{
>-	return i915->vbt.ddi_port_info[port].supports_hdmi;
>-}
>-
>-bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port)
>-{
>-	return i915->vbt.ddi_port_info[port].supports_dp;
>-}
>-
> bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915,
> 					enum port port)
> {
>@@ -2926,3 +2913,9 @@ bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port)
> {
> 	return i915->vbt.ddi_port_info[port].supports_tbt;
> }
>+
>+const struct intel_bios_encoder_data *
>+intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port)
>+{
>+	return i915->vbt.ddi_port_info[port].devdata;
>+}
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
>index 6591cf7758f2..18b5c2976bd4 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.h
>+++ b/drivers/gpu/drm/i915/display/intel_bios.h
>@@ -254,10 +254,14 @@ int intel_bios_dp_boost_level(struct intel_encoder *encoder);
> int intel_bios_hdmi_boost_level(struct intel_encoder *encoder);
> int intel_bios_dp_max_link_rate(struct intel_encoder *encoder);
> int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder);
>-bool intel_bios_port_supports_dvi(struct drm_i915_private *i915, enum port port);
>-bool intel_bios_port_supports_hdmi(struct drm_i915_private *i915, enum port port);
>-bool intel_bios_port_supports_dp(struct drm_i915_private *i915, enum port port);
> bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915, enum port port);
> bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port);
>
>+const struct intel_bios_encoder_data *
>+intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port);
>+
>+bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
>+bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata);
>+bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
>+
> #endif /* _INTEL_BIOS_H_ */
>diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
>index eeae78097a20..1a2f7725f8ec 100644
>--- a/drivers/gpu/drm/i915/display/intel_ddi.c
>+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
>@@ -3973,6 +3973,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
> {
> 	struct intel_digital_port *dig_port;
> 	struct intel_encoder *encoder;
>+	const struct intel_bios_encoder_data *devdata;
> 	bool init_hdmi, init_dp;
> 	enum phy phy = intel_port_to_phy(dev_priv, port);
>
>@@ -3988,9 +3989,17 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
> 		return;
> 	}
>
>-	init_hdmi = intel_bios_port_supports_dvi(dev_priv, port) ||
>-		intel_bios_port_supports_hdmi(dev_priv, port);
>-	init_dp = intel_bios_port_supports_dp(dev_priv, port);
>+	devdata = intel_bios_encoder_data_lookup(dev_priv, port);
>+	if (!devdata) {
>+		drm_dbg_kms(&dev_priv->drm,
>+			    "VBT says port %c is not present\n",
>+			    port_name(port));
>+		return;
>+	}
>+
>+	init_hdmi = intel_bios_encoder_supports_dvi(devdata) ||
>+		intel_bios_encoder_supports_hdmi(devdata);
>+	init_dp = intel_bios_encoder_supports_dp(devdata);
>
> 	if (intel_bios_is_lspcon_present(dev_priv, port)) {
> 		/*
>diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>index e2c5ba61b370..57712a617839 100644
>--- a/drivers/gpu/drm/i915/i915_drv.h
>+++ b/drivers/gpu/drm/i915/i915_drv.h
>@@ -584,7 +584,7 @@ i915_fence_timeout(const struct drm_i915_private *i915)
>
> struct ddi_vbt_port_info {
> 	/* Non-NULL if port present. */
>-	const struct intel_bios_encoder_data *devdata;
>+	struct intel_bios_encoder_data *devdata;
>
> 	int max_tmds_clock;
>
>@@ -592,8 +592,6 @@ struct ddi_vbt_port_info {
> 	u8 hdmi_level_shift;
> 	u8 hdmi_level_shift_set:1;
>
>-	u8 supports_dvi:1;
>-	u8 supports_hdmi:1;
> 	u8 supports_dp:1;
> 	u8 supports_edp:1;
> 	u8 supports_typec_usb:1;
>-- 
>2.20.1
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 11/12] drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 11/12] drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT Jani Nikula
@ 2021-03-15 17:49   ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-03-15 17:49 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:41PM +0200, Jani Nikula wrote:
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>

minor: the commit message could add something saying we are phasing out
ddi_port_info and everyone should use the helper functions that are
using the raw data from vbt, replaced with a fake one when that is
missing.



This is missing the removal of supports_typec_usb and supports_tbt from
ddi_vbt_port_info.

with that,


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/i915/display/intel_bios.c | 20 ++++++++------------
> drivers/gpu/drm/i915/display/intel_bios.h |  2 ++
> drivers/gpu/drm/i915/display/intel_ddi.c  |  4 ++--
> 3 files changed, 12 insertions(+), 14 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index d26304ebc6b9..13a38cd01692 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -1818,7 +1818,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> {
> 	const struct child_device_config *child = &devdata->child;
> 	struct ddi_vbt_port_info *info;
>-	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt;
>+	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt, supports_typec_usb, supports_tbt;
> 	enum port port;
>
> 	port = dvo_port_to_port(i915, child->dvo_port);
>@@ -1845,17 +1845,14 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> 	info->supports_dp = is_dp;
> 	info->supports_edp = is_edp;
>
>-	if (i915->vbt.version >= 195)
>-		info->supports_typec_usb = child->dp_usb_type_c;
>-
>-	if (i915->vbt.version >= 209)
>-		info->supports_tbt = child->tbt;
>+	supports_typec_usb = intel_bios_encoder_supports_typec_usb(devdata);
>+	supports_tbt = intel_bios_encoder_supports_tbt(devdata);
>
> 	drm_dbg_kms(&i915->drm,
> 		    "Port %c VBT info: CRT:%d DVI:%d HDMI:%d DP:%d eDP:%d LSPCON:%d USB-Type-C:%d TBT:%d DSC:%d\n",
> 		    port_name(port), is_crt, is_dvi, is_hdmi, is_dp, is_edp,
> 		    HAS_LSPCON(i915) && child->lspcon,
>-		    info->supports_typec_usb, info->supports_tbt,
>+		    supports_typec_usb, supports_tbt,
> 		    devdata->dsc != NULL);
>
> 	if (is_dvi) {
>@@ -2903,15 +2900,14 @@ int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder)
> 	return i915->vbt.ddi_port_info[encoder->port].alternate_ddc_pin;
> }
>
>-bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915,
>-					enum port port)
>+bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata)
> {
>-	return i915->vbt.ddi_port_info[port].supports_typec_usb;
>+	return devdata->i915->vbt.version >= 195 && devdata->child.dp_usb_type_c;
> }
>
>-bool intel_bios_port_supports_tbt(struct drm_i915_private *i915, enum port port)
>+bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata)
> {
>-	return i915->vbt.ddi_port_info[port].supports_tbt;
>+	return devdata->i915->vbt.version >= 209 && devdata->child.tbt;
> }
>
> const struct intel_bios_encoder_data *
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
>index 18b5c2976bd4..f82cef29ab5a 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.h
>+++ b/drivers/gpu/drm/i915/display/intel_bios.h
>@@ -263,5 +263,7 @@ intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port);
> bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
> bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata);
> bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
>+bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata);
>+bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata);
>
> #endif /* _INTEL_BIOS_H_ */
>diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
>index 1a2f7725f8ec..0bf783f67a59 100644
>--- a/drivers/gpu/drm/i915/display/intel_ddi.c
>+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
>@@ -4150,8 +4150,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
>
> 	if (intel_phy_is_tc(dev_priv, phy)) {
> 		bool is_legacy =
>-			!intel_bios_port_supports_typec_usb(dev_priv, port) &&
>-			!intel_bios_port_supports_tbt(dev_priv, port);
>+			!intel_bios_encoder_supports_typec_usb(devdata) &&
>+			!intel_bios_encoder_supports_tbt(devdata);
>
> 		intel_tc_port_init(dig_port, is_legacy);
>
>-- 
>2.20.1
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 12/12] drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost
  2021-02-17 17:03 ` [Intel-gfx] [PATCH 12/12] drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost Jani Nikula
@ 2021-03-15 17:52   ` Lucas De Marchi
  0 siblings, 0 replies; 40+ messages in thread
From: Lucas De Marchi @ 2021-03-15 17:52 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Wed, Feb 17, 2021 at 07:03:42PM +0200, Jani Nikula wrote:
>Add intel_bios_encoder_data pointer to encoder, and use it for hdmi and
>dp iboost. For starters, we only set the encoder->devdata for DDI
>encoders, i.e. we can only use it for data that is used by DDI encoders.
>
>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>Signed-off-by: Jani Nikula <jani.nikula@intel.com>


Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>

Lucas De Marchi

>---
> drivers/gpu/drm/i915/display/intel_bios.c     | 30 +++++++++++--------
> drivers/gpu/drm/i915/display/intel_bios.h     |  4 +--
> drivers/gpu/drm/i915/display/intel_ddi.c      |  9 +++---
> .../drm/i915/display/intel_display_types.h    |  3 ++
> drivers/gpu/drm/i915/i915_drv.h               |  2 --
> 5 files changed, 27 insertions(+), 21 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>index 13a38cd01692..e1fcaf567222 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>@@ -1819,6 +1819,7 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> 	const struct child_device_config *child = &devdata->child;
> 	struct ddi_vbt_port_info *info;
> 	bool is_dvi, is_hdmi, is_dp, is_edp, is_crt, supports_typec_usb, supports_tbt;
>+	int dp_boost_level, hdmi_boost_level;
> 	enum port port;
>
> 	port = dvo_port_to_port(i915, child->dvo_port);
>@@ -1912,17 +1913,18 @@ static void parse_ddi_port(struct drm_i915_private *i915,
> 		info->max_tmds_clock = max_tmds_clock;
> 	}
>
>-	/* Parse the I_boost config for SKL and above */
>-	if (i915->vbt.version >= 196 && child->iboost) {
>-		info->dp_boost_level = translate_iboost(child->dp_iboost_level);
>+	/* I_boost config for SKL and above */
>+	dp_boost_level = intel_bios_encoder_dp_boost_level(devdata);
>+	if (dp_boost_level)
> 		drm_dbg_kms(&i915->drm,
> 			    "Port %c VBT (e)DP boost level: %d\n",
>-			    port_name(port), info->dp_boost_level);
>-		info->hdmi_boost_level = translate_iboost(child->hdmi_iboost_level);
>+			    port_name(port), dp_boost_level);
>+
>+	hdmi_boost_level = intel_bios_encoder_hdmi_boost_level(devdata);
>+	if (hdmi_boost_level)
> 		drm_dbg_kms(&i915->drm,
> 			    "Port %c VBT HDMI boost level: %d\n",
>-			    port_name(port), info->hdmi_boost_level);
>-	}
>+			    port_name(port), hdmi_boost_level);
>
> 	/* DP max link rate for CNL+ */
> 	if (i915->vbt.version >= 216) {
>@@ -2872,18 +2874,20 @@ int intel_bios_hdmi_level_shift(struct intel_encoder *encoder)
> 	return info->hdmi_level_shift_set ? info->hdmi_level_shift : -1;
> }
>
>-int intel_bios_dp_boost_level(struct intel_encoder *encoder)
>+int intel_bios_encoder_dp_boost_level(const struct intel_bios_encoder_data *devdata)
> {
>-	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>+	if (!devdata || devdata->i915->vbt.version < 196 || !devdata->child.iboost)
>+		return 0;
>
>-	return i915->vbt.ddi_port_info[encoder->port].dp_boost_level;
>+	return translate_iboost(devdata->child.dp_iboost_level);
> }
>
>-int intel_bios_hdmi_boost_level(struct intel_encoder *encoder)
>+int intel_bios_encoder_hdmi_boost_level(const struct intel_bios_encoder_data *devdata)
> {
>-	struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>+	if (!devdata || devdata->i915->vbt.version < 196 || !devdata->child.iboost)
>+		return 0;
>
>-	return i915->vbt.ddi_port_info[encoder->port].hdmi_boost_level;
>+	return translate_iboost(devdata->child.hdmi_iboost_level);
> }
>
> int intel_bios_dp_max_link_rate(struct intel_encoder *encoder)
>diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
>index f82cef29ab5a..4709c4d29805 100644
>--- a/drivers/gpu/drm/i915/display/intel_bios.h
>+++ b/drivers/gpu/drm/i915/display/intel_bios.h
>@@ -250,8 +250,6 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
> 			       int dsc_max_bpc);
> int intel_bios_max_tmds_clock(struct intel_encoder *encoder);
> int intel_bios_hdmi_level_shift(struct intel_encoder *encoder);
>-int intel_bios_dp_boost_level(struct intel_encoder *encoder);
>-int intel_bios_hdmi_boost_level(struct intel_encoder *encoder);
> int intel_bios_dp_max_link_rate(struct intel_encoder *encoder);
> int intel_bios_alternate_ddc_pin(struct intel_encoder *encoder);
> bool intel_bios_port_supports_typec_usb(struct drm_i915_private *i915, enum port port);
>@@ -265,5 +263,7 @@ bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devd
> bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
> bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata);
> bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata);
>+int intel_bios_encoder_dp_boost_level(const struct intel_bios_encoder_data *devdata);
>+int intel_bios_encoder_hdmi_boost_level(const struct intel_bios_encoder_data *devdata);
>
> #endif /* _INTEL_BIOS_H_ */
>diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
>index 0bf783f67a59..92aad11cc0e7 100644
>--- a/drivers/gpu/drm/i915/display/intel_ddi.c
>+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
>@@ -114,7 +114,7 @@ void intel_prepare_dp_ddi_buffers(struct intel_encoder *encoder,
> 							      &n_entries);
>
> 	/* If we're boosting the current, set bit 31 of trans1 */
>-	if (IS_GEN9_BC(dev_priv) && intel_bios_dp_boost_level(encoder))
>+	if (IS_GEN9_BC(dev_priv) && intel_bios_encoder_dp_boost_level(encoder->devdata))
> 		iboost_bit = DDI_BUF_BALANCE_LEG_ENABLE;
>
> 	for (i = 0; i < n_entries; i++) {
>@@ -147,7 +147,7 @@ static void intel_prepare_hdmi_ddi_buffers(struct intel_encoder *encoder,
> 		level = n_entries - 1;
>
> 	/* If we're boosting the current, set bit 31 of trans1 */
>-	if (IS_GEN9_BC(dev_priv) && intel_bios_hdmi_boost_level(encoder))
>+	if (IS_GEN9_BC(dev_priv) && intel_bios_encoder_hdmi_boost_level(encoder->devdata))
> 		iboost_bit = DDI_BUF_BALANCE_LEG_ENABLE;
>
> 	/* Entry 9 is for HDMI: */
>@@ -925,9 +925,9 @@ static void skl_ddi_set_iboost(struct intel_encoder *encoder,
> 	u8 iboost;
>
> 	if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
>-		iboost = intel_bios_hdmi_boost_level(encoder);
>+		iboost = intel_bios_encoder_hdmi_boost_level(encoder->devdata);
> 	else
>-		iboost = intel_bios_dp_boost_level(encoder);
>+		iboost = intel_bios_encoder_dp_boost_level(encoder->devdata);
>
> 	if (iboost == 0) {
> 		const struct ddi_buf_trans *ddi_translations;
>@@ -4025,6 +4025,7 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
> 		return;
>
> 	encoder = &dig_port->base;
>+	encoder->devdata = devdata;
>
> 	if (INTEL_GEN(dev_priv) >= 12) {
> 		enum tc_port tc_port = intel_port_to_tc(dev_priv, port);
>diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
>index 07b7f5eae587..91642b25ebcc 100644
>--- a/drivers/gpu/drm/i915/display/intel_display_types.h
>+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
>@@ -230,6 +230,9 @@ struct intel_encoder {
> 	enum intel_display_power_domain power_domain;
> 	/* for communication with audio component; protected by av_mutex */
> 	const struct drm_connector *audio_connector;
>+
>+	/* VBT information for this encoder (may be NULL for older platforms) */
>+	const struct intel_bios_encoder_data *devdata;
> };
>
> struct intel_panel_bl_funcs {
>diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
>index 57712a617839..03a6d9738fee 100644
>--- a/drivers/gpu/drm/i915/i915_drv.h
>+++ b/drivers/gpu/drm/i915/i915_drv.h
>@@ -600,8 +600,6 @@ struct ddi_vbt_port_info {
> 	u8 alternate_aux_channel;
> 	u8 alternate_ddc_pin;
>
>-	u8 dp_boost_level;
>-	u8 hdmi_boost_level;
> 	int dp_max_link_rate;		/* 0 for not limited by VBT */
> };
>
>-- 
>2.20.1
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

* Re: [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support
  2021-03-15 17:32       ` Lucas De Marchi
@ 2021-03-16  9:18         ` Jani Nikula
  0 siblings, 0 replies; 40+ messages in thread
From: Jani Nikula @ 2021-03-16  9:18 UTC (permalink / raw)
  To: Lucas De Marchi; +Cc: intel-gfx

On Mon, 15 Mar 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
> On Wed, Feb 17, 2021 at 09:55:53PM +0200, Jani Nikula wrote:
>>On Wed, 17 Feb 2021, Lucas De Marchi <lucas.demarchi@intel.com> wrote:
>>> On Wed, Feb 17, 2021 at 07:03:38PM +0200, Jani Nikula wrote:
>>>>These will be exposed to the rest of the driver and replace other
>>>>functions. Everything will operate on the child devices.
>>>>
>>>>Cc: Lucas De Marchi <lucas.demarchi@intel.com>
>>>>Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>>>Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>>>>---
>>>> drivers/gpu/drm/i915/display/intel_bios.c | 66 ++++++++++++++++++-----
>>>> 1 file changed, 54 insertions(+), 12 deletions(-)
>>>>
>>>>diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>index 193772f42582..739ef5d91907 100644
>>>>--- a/drivers/gpu/drm/i915/display/intel_bios.c
>>>>+++ b/drivers/gpu/drm/i915/display/intel_bios.c
>>>>@@ -64,6 +64,7 @@ struct intel_bios_encoder_data {
>>>>
>>>> 	struct child_device_config child;
>>>> 	struct dsc_compression_parameters_entry *dsc;
>>>>+
>>>> 	struct list_head node;
>>>> };
>>>>
>>>>@@ -1761,6 +1762,53 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915,
>>>> 					  dvo_port);
>>>> }
>>>>
>>>>+static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
>>>>+				 enum port port)
>>>>+{
>>>>+	struct drm_i915_private *i915 = devdata->i915;
>>>>+	bool is_hdmi;
>>>>+
>>>>+	if (port != PORT_A || INTEL_GEN(i915) >= 12)
>>>>+		return;
>>>>+
>>>>+	if (!(devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING))
>>>>+		return;
>>>>+
>>>>+	is_hdmi = !(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT);
>>>>+
>>>>+	drm_dbg_kms(&i915->drm, "VBT claims port A supports DVI%s, ignoring\n",
>>>>+		    is_hdmi ? "/HDMI" : "");
>>>>+
>>>>+	devdata->child.device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>>>+	devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
>>>>+}
>>>>+
>>>>+static bool
>>>>+intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata)
>>>>+{
>>>>+	return devdata->child.device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>>>+}
>>>>+
>>>>+static bool
>>>>+intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata)
>>>>+{
>>>>+	return intel_bios_encoder_supports_dvi(devdata) &&
>>>>+		(devdata->child.device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>>>>+}
>>>>+
>>>>+static bool
>>>>+intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata)
>>>>+{
>>>>+	return devdata->child.device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>>>>+}
>>>>+
>>>>+static bool
>>>>+intel_bios_encoder_supports_edp(const struct intel_bios_encoder_data *devdata)
>>>>+{
>>>>+	return intel_bios_encoder_supports_dp(devdata) &&
>>>>+		devdata->child.device_type & DEVICE_TYPE_INTERNAL_CONNECTOR;
>>>>+}
>>>>+
>>>> static void parse_ddi_port(struct drm_i915_private *i915,
>>>> 			   struct intel_bios_encoder_data *devdata)
>>>> {
>>>>@@ -1782,19 +1830,13 @@ static void parse_ddi_port(struct drm_i915_private *i915,
>>>> 		return;
>>>> 	}
>>>>
>>>>-	is_dvi = child->device_type & DEVICE_TYPE_TMDS_DVI_SIGNALING;
>>>>-	is_dp = child->device_type & DEVICE_TYPE_DISPLAYPORT_OUTPUT;
>>>>-	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>>>>-	is_hdmi = is_dvi && (child->device_type & DEVICE_TYPE_NOT_HDMI_OUTPUT) == 0;
>>>>-	is_edp = is_dp && (child->device_type & DEVICE_TYPE_INTERNAL_CONNECTOR);
>>>>+	sanitize_device_type(devdata, port);
>>>>
>>>>-	if (port == PORT_A && is_dvi && INTEL_GEN(i915) < 12) {
>>>>-		drm_dbg_kms(&i915->drm,
>>>>-			    "VBT claims port A supports DVI%s, ignoring\n",
>>>>-			    is_hdmi ? "/HDMI" : "");
>>>>-		is_dvi = false;
>>>>-		is_hdmi = false;
>>>>-	}
>>>>+	is_dvi = intel_bios_encoder_supports_dvi(devdata);
>>>>+	is_dp = intel_bios_encoder_supports_dp(devdata);
>>>>+	is_crt = child->device_type & DEVICE_TYPE_ANALOG_OUTPUT;
>>>
>>> any reason to leave this behind?
>>
>>Just logging, even though that doesn't match what we actually do in
>>intel_ddi_crt_present(). I expect there to be further cleanup
>>afterwards.
>
> I mean: you added a intel_bios_encoder_supports_*() for everything else.
> Why not for crt?

I've added it for everything that needs to be made non-static and
available to the rest of the driver. I can add it for completeness if
you like.

BR,
Jani.

>
> Lucas De Marchi
>
>>
>>BR,
>>Jani.
>>
>>>
>>> Lucas De Marchi
>>>
>>>>+	is_hdmi = intel_bios_encoder_supports_hdmi(devdata);
>>>>+	is_edp = intel_bios_encoder_supports_edp(devdata);
>>>>
>>>> 	info->supports_dvi = is_dvi;
>>>> 	info->supports_hdmi = is_hdmi;
>>>>--
>>>>2.20.1
>>>>
>>
>>-- 
>>Jani Nikula, Intel Open Source Graphics Center
>>_______________________________________________
>>Intel-gfx mailing list
>>Intel-gfx@lists.freedesktop.org
>>https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 40+ messages in thread

end of thread, other threads:[~2021-03-16  9:18 UTC | newest]

Thread overview: 40+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-17 17:03 [Intel-gfx] [PATCH 00/12] drm/i915/bios: vbt child device rework Jani Nikula
2021-02-17 17:03 ` [Intel-gfx] [PATCH 01/12] drm/i915/bios: mass convert dev_priv to i915 Jani Nikula
2021-02-22 18:14   ` Ville Syrjälä
2021-02-17 17:03 ` [Intel-gfx] [PATCH 02/12] drm/i915/bios: store bdb version in i915 Jani Nikula
2021-02-22 18:14   ` Ville Syrjälä
2021-02-17 17:03 ` [Intel-gfx] [PATCH 03/12] drm/i915/bios: limit default outputs by platform on missing VBT Jani Nikula
2021-02-22 18:16   ` Ville Syrjälä
2021-02-17 17:03 ` [Intel-gfx] [PATCH 04/12] drm/i915/bios: limit default outputs to ports A through F Jani Nikula
2021-02-17 17:23   ` Lucas De Marchi
2021-02-17 17:28     ` Lucas De Marchi
2021-02-17 19:49       ` Jani Nikula
2021-02-17 19:58         ` Lucas De Marchi
2021-02-23 13:34           ` Jani Nikula
2021-02-24  0:34             ` Lucas De Marchi
2021-02-17 17:03 ` [Intel-gfx] [PATCH 05/12] drm/i915/bios: create fake child devices on missing VBT Jani Nikula
2021-03-09  0:51   ` Lucas De Marchi
2021-02-17 17:03 ` [Intel-gfx] [PATCH 06/12] drm/i915/bios: rename display_device_data to intel_bios_encoder_data Jani Nikula
2021-02-17 17:44   ` Lucas De Marchi
2021-02-17 19:52     ` Jani Nikula
2021-02-23 12:50       ` Jani Nikula
2021-02-24  0:37         ` Lucas De Marchi
2021-02-17 17:03 ` [Intel-gfx] [PATCH 07/12] drm/i915/bios: add i915 backpointer " Jani Nikula
2021-02-17 17:03 ` [Intel-gfx] [PATCH 08/12] drm/i915/vbt: add helper functions to check output support Jani Nikula
2021-02-17 17:46   ` Lucas De Marchi
2021-02-17 19:55     ` Jani Nikula
2021-03-15 17:32       ` Lucas De Marchi
2021-03-16  9:18         ` Jani Nikula
2021-02-17 17:03 ` [Intel-gfx] [PATCH 09/12] drm/i915/bios: save a higher level pointer in ddi_vbt_port_info[] Jani Nikula
2021-03-15 17:36   ` Lucas De Marchi
2021-02-17 17:03 ` [Intel-gfx] [PATCH 10/12] drm/i915/bios: start using the intel_bios_encoder_data directly Jani Nikula
2021-03-15 17:41   ` Lucas De Marchi
2021-02-17 17:03 ` [Intel-gfx] [PATCH 11/12] drm/i915/bios: start using intel_bios_encoder_data for Type-C USB and TBT Jani Nikula
2021-03-15 17:49   ` Lucas De Marchi
2021-02-17 17:03 ` [Intel-gfx] [PATCH 12/12] drm/i915/bios: add intel_bios_encoder_data to encoder, use for iboost Jani Nikula
2021-03-15 17:52   ` Lucas De Marchi
2021-02-17 17:20 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: vbt child device rework Patchwork
2021-02-17 17:49 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-02-17 17:54 ` [Intel-gfx] [PATCH 00/12] " Lucas De Marchi
2021-02-17 19:57   ` Jani Nikula
2021-02-17 20:52 ` [Intel-gfx] ✓ Fi.CI.IGT: success for " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.