* [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
* 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
* [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
* 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
* [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
* 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
* [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
* 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 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 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
* 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
* [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
* 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
* [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
* 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 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 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 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
* [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
* 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
* 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 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 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
* [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
* 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
* [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
* 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
* [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
* 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
* [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
* 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
* [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
* [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 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
* [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
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.