On Wed, Jul 31, 2024 at 07:44:36PM +0300, Jani Nikula wrote: > [...] > diff --git a/drivers/gpu/drm/i915/display/g4x_dp.c b/drivers/gpu/drm/i915/display/g4x_dp.c > index a8e746a0f670..c2128b46bdbd 100644 > --- a/drivers/gpu/drm/i915/display/g4x_dp.c > +++ b/drivers/gpu/drm/i915/display/g4x_dp.c > @@ -1279,6 +1279,7 @@ static const struct drm_encoder_funcs intel_dp_enc_funcs = { > [...] > > static void > -parse_general_features(struct drm_i915_private *i915) > +parse_general_features(struct intel_display *display) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct bdb_general_features *general; > > - general = bdb_find_section(i915, BDB_GENERAL_FEATURES); > + general = bdb_find_section(display, BDB_GENERAL_FEATURES); > if (!general) > return; > > - i915->display.vbt.int_tv_support = general->int_tv_support; > + display->vbt.int_tv_support = general->int_tv_support; > /* int_crt_support can't be trusted on earlier platforms */ > - if (i915->display.vbt.version >= 155 && > - (HAS_DDI(i915) || IS_VALLEYVIEW(i915))) > - i915->display.vbt.int_crt_support = general->int_crt_support; > - i915->display.vbt.lvds_use_ssc = general->enable_ssc; > - i915->display.vbt.lvds_ssc_freq = > - intel_bios_ssc_frequency(i915, general->ssc_freq); > - i915->display.vbt.display_clock_mode = general->display_clock_mode; > - i915->display.vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted; > - if (i915->display.vbt.version >= 181) { > - i915->display.vbt.orientation = general->rotate_180 ? > + if (display->vbt.version >= 155 && > + (HAS_DDI(display) || IS_VALLEYVIEW(i915))) > + display->vbt.int_crt_support = general->int_crt_support; > + display->vbt.lvds_use_ssc = general->enable_ssc; > + display->vbt.lvds_ssc_freq = > + intel_bios_ssc_frequency(display, general->ssc_freq); > + display->vbt.display_clock_mode = general->display_clock_mode; > + display->vbt.fdi_rx_polarity_inverted = general->fdi_rx_polarity_inverted; > + if (display->vbt.version >= 181) { > + display->vbt.orientation = general->rotate_180 ? > DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP : > DRM_MODE_PANEL_ORIENTATION_NORMAL; > } else { > - i915->display.vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; > + display->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN; > } > > - if (i915->display.vbt.version >= 249 && general->afc_startup_config) { > - i915->display.vbt.override_afc_startup = true; > - i915->display.vbt.override_afc_startup_val = general->afc_startup_config == 0x1 ? 0x0 : 0x7; > + if (display->vbt.version >= 249 && general->afc_startup_config) { > + display->vbt.override_afc_startup = true; > + display->vbt.override_afc_startup_val = general->afc_startup_config == 1 ? 0 : 7; The hex->dec change doesn't make a difference, but I suppose still good to know if it's a silent cocci script change. Patch looks ok: Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx> > } > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->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", > - i915->display.vbt.int_tv_support, > - i915->display.vbt.int_crt_support, > - i915->display.vbt.lvds_use_ssc, > - i915->display.vbt.lvds_ssc_freq, > - i915->display.vbt.display_clock_mode, > - i915->display.vbt.fdi_rx_polarity_inverted); > + display->vbt.int_tv_support, > + display->vbt.int_crt_support, > + display->vbt.lvds_use_ssc, > + display->vbt.lvds_ssc_freq, > + display->vbt.display_clock_mode, > + display->vbt.fdi_rx_polarity_inverted); > } > > static const struct child_device_config * > @@ -1211,7 +1214,7 @@ child_device_ptr(const struct bdb_general_definitions *defs, int i) > } > > static void > -parse_sdvo_device_mapping(struct drm_i915_private *i915) > +parse_sdvo_device_mapping(struct intel_display *display) > { > const struct intel_bios_encoder_data *devdata; > int count = 0; > @@ -1220,12 +1223,12 @@ parse_sdvo_device_mapping(struct drm_i915_private *i915) > * 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_DISPLAY_VER(i915, 3, 7)) { > - drm_dbg_kms(&i915->drm, "Skipping SDVO device mapping\n"); > + if (!IS_DISPLAY_VER(display, 3, 7)) { > + drm_dbg_kms(display->drm, "Skipping SDVO device mapping\n"); > return; > } > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > struct sdvo_device_mapping *mapping; > > @@ -1240,17 +1243,17 @@ parse_sdvo_device_mapping(struct drm_i915_private *i915) > if (child->dvo_port != DEVICE_PORT_DVOB && > child->dvo_port != DEVICE_PORT_DVOC) { > /* skip the incorrect SDVO port */ > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Incorrect SDVO port. Skip it\n"); > continue; > } > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "the SDVO device with target addr %2x is found on" > " %s port\n", > child->target_addr, > (child->dvo_port == DEVICE_PORT_DVOB) ? > "SDVOB" : "SDVOC"); > - mapping = &i915->display.vbt.sdvo_mappings[child->dvo_port - 1]; > + mapping = &display->vbt.sdvo_mappings[child->dvo_port - 1]; > if (!mapping->initialized) { > mapping->dvo_port = child->dvo_port; > mapping->target_addr = child->target_addr; > @@ -1258,20 +1261,20 @@ parse_sdvo_device_mapping(struct drm_i915_private *i915) > mapping->ddc_pin = child->ddc_pin; > mapping->i2c_pin = child->i2c_pin; > mapping->initialized = 1; > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "SDVO device: dvo=%x, addr=%x, wiring=%d, ddc_pin=%d, i2c_pin=%d\n", > mapping->dvo_port, mapping->target_addr, > mapping->dvo_wiring, mapping->ddc_pin, > mapping->i2c_pin); > } else { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Maybe one SDVO port is shared by " > "two SDVO device.\n"); > } > if (child->target2_addr) { > /* Maybe this is a SDVO device with multiple inputs */ > /* And the mapping info is not added */ > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "there exists the target2_addr. Maybe this" > " is a SDVO device with multiple inputs.\n"); > } > @@ -1280,28 +1283,28 @@ parse_sdvo_device_mapping(struct drm_i915_private *i915) > > if (!count) { > /* No SDVO device info is found */ > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "No SDVO device info is found in VBT\n"); > } > } > > static void > -parse_driver_features(struct drm_i915_private *i915) > +parse_driver_features(struct intel_display *display) > { > const struct bdb_driver_features *driver; > > - driver = bdb_find_section(i915, BDB_DRIVER_FEATURES); > + driver = bdb_find_section(display, BDB_DRIVER_FEATURES); > if (!driver) > return; > > - if (DISPLAY_VER(i915) >= 5) { > + if (DISPLAY_VER(display) >= 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) > - i915->display.vbt.int_lvds_support = 0; > + display->vbt.int_lvds_support = 0; > } else { > /* > * FIXME it's not clear which BDB version has the LVDS config > @@ -1314,25 +1317,25 @@ parse_driver_features(struct drm_i915_private *i915) > * in the wild with the bits correctly populated. Version > * 108 (on i85x) does not have the bits correctly populated. > */ > - if (i915->display.vbt.version >= 134 && > + if (display->vbt.version >= 134 && > driver->lvds_config != BDB_DRIVER_FEATURE_INT_LVDS && > driver->lvds_config != BDB_DRIVER_FEATURE_INT_SDVO_LVDS) > - i915->display.vbt.int_lvds_support = 0; > + display->vbt.int_lvds_support = 0; > } > } > > static void > -parse_panel_driver_features(struct drm_i915_private *i915, > +parse_panel_driver_features(struct intel_display *display, > struct intel_panel *panel) > { > const struct bdb_driver_features *driver; > > - driver = bdb_find_section(i915, BDB_DRIVER_FEATURES); > + driver = bdb_find_section(display, BDB_DRIVER_FEATURES); > if (!driver) > return; > > - if (i915->display.vbt.version < 228) { > - drm_dbg_kms(&i915->drm, "DRRS State Enabled:%d\n", > + if (display->vbt.version < 228) { > + drm_dbg_kms(display->drm, "DRRS State Enabled:%d\n", > driver->drrs_enabled); > /* > * If DRRS is not supported, drrs_type has to be set to 0. > @@ -1356,7 +1359,7 @@ parse_panel_driver_features(struct drm_i915_private *i915, > } > > static void > -parse_power_conservation_features(struct drm_i915_private *i915, > +parse_power_conservation_features(struct intel_display *display, > struct intel_panel *panel) > { > const struct bdb_lfp_power *power; > @@ -1364,10 +1367,10 @@ parse_power_conservation_features(struct drm_i915_private *i915, > > panel->vbt.vrr = true; /* matches Windows behaviour */ > > - if (i915->display.vbt.version < 228) > + if (display->vbt.version < 228) > return; > > - power = bdb_find_section(i915, BDB_LFP_POWER); > + power = bdb_find_section(display, BDB_LFP_POWER); > if (!power) > return; > > @@ -1390,16 +1393,16 @@ parse_power_conservation_features(struct drm_i915_private *i915, > panel->vbt.drrs_type = DRRS_TYPE_NONE; > } > > - if (i915->display.vbt.version >= 232) > + if (display->vbt.version >= 232) > panel->vbt.edp.hobl = panel_bool(power->hobl, panel_type); > > - if (i915->display.vbt.version >= 233) > + if (display->vbt.version >= 233) > panel->vbt.vrr = panel_bool(power->vrr_feature_enabled, > panel_type); > } > > static void > -parse_edp(struct drm_i915_private *i915, > +parse_edp(struct intel_display *display, > struct intel_panel *panel) > { > const struct bdb_edp *edp; > @@ -1407,7 +1410,7 @@ parse_edp(struct drm_i915_private *i915, > const struct edp_fast_link_params *edp_link_params; > int panel_type = panel->vbt.panel_type; > > - edp = bdb_find_section(i915, BDB_EDP); > + edp = bdb_find_section(display, BDB_EDP); > if (!edp) > return; > > @@ -1429,7 +1432,7 @@ parse_edp(struct drm_i915_private *i915, > > panel->vbt.edp.pps = *edp_pps; > > - if (i915->display.vbt.version >= 224) { > + if (display->vbt.version >= 224) { > panel->vbt.edp.rate = > edp->edp_fast_link_training_rate[panel_type] * 20; > } else { > @@ -1444,7 +1447,7 @@ parse_edp(struct drm_i915_private *i915, > panel->vbt.edp.rate = 540000; > break; > default: > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT has unknown eDP link rate value %u\n", > edp_link_params->rate); > break; > @@ -1462,7 +1465,7 @@ parse_edp(struct drm_i915_private *i915, > panel->vbt.edp.lanes = 4; > break; > default: > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT has unknown eDP lane count value %u\n", > edp_link_params->lanes); > break; > @@ -1482,7 +1485,7 @@ parse_edp(struct drm_i915_private *i915, > panel->vbt.edp.preemphasis = DP_TRAIN_PRE_EMPH_LEVEL_3; > break; > default: > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT has unknown eDP pre-emphasis value %u\n", > edp_link_params->preemphasis); > break; > @@ -1502,19 +1505,19 @@ parse_edp(struct drm_i915_private *i915, > panel->vbt.edp.vswing = DP_TRAIN_VOLTAGE_SWING_LEVEL_3; > break; > default: > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT has unknown eDP voltage swing value %u\n", > edp_link_params->vswing); > break; > } > > - if (i915->display.vbt.version >= 173) { > + if (display->vbt.version >= 173) { > u8 vswing; > > /* Don't read from VBT if module parameter has valid value*/ > - if (i915->display.params.edp_vswing) { > + if (display->params.edp_vswing) { > panel->vbt.edp.low_vswing = > - i915->display.params.edp_vswing == 1; > + display->params.edp_vswing == 1; > } else { > vswing = (edp->edp_vswing_preemph >> (panel_type * 4)) & 0xF; > panel->vbt.edp.low_vswing = vswing == 0; > @@ -1524,26 +1527,27 @@ parse_edp(struct drm_i915_private *i915, > panel->vbt.edp.drrs_msa_timing_delay = > panel_bits(edp->sdrrs_msa_timing_delay, panel_type, 2); > > - if (i915->display.vbt.version >= 244) > + if (display->vbt.version >= 244) > panel->vbt.edp.max_link_rate = > edp->edp_max_port_link_rate[panel_type] * 20; > > - if (i915->display.vbt.version >= 251) > + if (display->vbt.version >= 251) > panel->vbt.edp.dsc_disable = > panel_bool(edp->edp_dsc_disable, panel_type); > } > > static void > -parse_psr(struct drm_i915_private *i915, > +parse_psr(struct intel_display *display, > struct intel_panel *panel) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct bdb_psr *psr; > const struct psr_table *psr_table; > int panel_type = panel->vbt.panel_type; > > - psr = bdb_find_section(i915, BDB_PSR); > + psr = bdb_find_section(display, BDB_PSR); > if (!psr) { > - drm_dbg_kms(&i915->drm, "No PSR BDB found.\n"); > + drm_dbg_kms(display->drm, "No PSR BDB found.\n"); > return; > } > > @@ -1560,8 +1564,8 @@ parse_psr(struct drm_i915_private *i915, > * New psr options 0=500us, 1=100us, 2=2500us, 3=0us > * Old decimal value is wake up time in multiples of 100 us. > */ > - if (i915->display.vbt.version >= 205 && > - (DISPLAY_VER(i915) >= 9 && !IS_BROXTON(i915))) { > + if (display->vbt.version >= 205 && > + (DISPLAY_VER(display) >= 9 && !IS_BROXTON(i915))) { > switch (psr_table->tp1_wakeup_time) { > case 0: > panel->vbt.psr.tp1_wakeup_time_us = 500; > @@ -1573,7 +1577,7 @@ parse_psr(struct drm_i915_private *i915, > panel->vbt.psr.tp1_wakeup_time_us = 0; > break; > default: > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT tp1 wakeup time value %d is outside range[0-3], defaulting to max value 2500us\n", > psr_table->tp1_wakeup_time); > fallthrough; > @@ -1593,7 +1597,7 @@ parse_psr(struct drm_i915_private *i915, > panel->vbt.psr.tp2_tp3_wakeup_time_us = 0; > break; > default: > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->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; > @@ -1606,7 +1610,7 @@ parse_psr(struct drm_i915_private *i915, > panel->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100; > } > > - if (i915->display.vbt.version >= 226) { > + if (display->vbt.version >= 226) { > u32 wakeup_time = psr->psr2_tp2_tp3_wakeup_time; > > wakeup_time = panel_bits(wakeup_time, panel_type, 2); > @@ -1632,13 +1636,13 @@ parse_psr(struct drm_i915_private *i915, > } > } > > -static void parse_dsi_backlight_ports(struct drm_i915_private *i915, > +static void parse_dsi_backlight_ports(struct intel_display *display, > struct intel_panel *panel, > enum port port) > { > - enum port port_bc = DISPLAY_VER(i915) >= 11 ? PORT_B : PORT_C; > + enum port port_bc = DISPLAY_VER(display) >= 11 ? PORT_B : PORT_C; > > - if (!panel->vbt.dsi.config->dual_link || i915->display.vbt.version < 197) { > + if (!panel->vbt.dsi.config->dual_link || display->vbt.version < 197) { > panel->vbt.dsi.bl_ports = BIT(port); > if (panel->vbt.dsi.config->cabc_supported) > panel->vbt.dsi.cabc_ports = BIT(port); > @@ -1678,7 +1682,7 @@ static void parse_dsi_backlight_ports(struct drm_i915_private *i915, > } > > static void > -parse_mipi_config(struct drm_i915_private *i915, > +parse_mipi_config(struct intel_display *display, > struct intel_panel *panel) > { > const struct bdb_mipi_config *start; > @@ -1688,19 +1692,19 @@ parse_mipi_config(struct drm_i915_private *i915, > enum port port; > > /* parse MIPI blocks only if LFP type is MIPI */ > - if (!intel_bios_is_dsi_present(i915, &port)) > + if (!intel_bios_is_dsi_present(display, &port)) > return; > > /* Initialize this to undefined indicating no generic MIPI support */ > panel->vbt.dsi.panel_id = MIPI_DSI_UNDEFINED_PANEL_ID; > > - start = bdb_find_section(i915, BDB_MIPI_CONFIG); > + start = bdb_find_section(display, BDB_MIPI_CONFIG); > if (!start) { > - drm_dbg_kms(&i915->drm, "No MIPI config BDB found"); > + drm_dbg_kms(display->drm, "No MIPI config BDB found"); > return; > } > > - drm_dbg(&i915->drm, "Found MIPI Config block, panel index = %d\n", > + drm_dbg(display->drm, "Found MIPI Config block, panel index = %d\n", > panel_type); > > /* > @@ -1721,7 +1725,7 @@ parse_mipi_config(struct drm_i915_private *i915, > return; > } > > - parse_dsi_backlight_ports(i915, panel, port); > + parse_dsi_backlight_ports(display, panel, port); > > /* FIXME is the 90 vs. 270 correct? */ > switch (config->rotation) { > @@ -1753,7 +1757,7 @@ parse_mipi_config(struct drm_i915_private *i915, > > /* Find the sequence block and size for the given panel. */ > static const u8 * > -find_panel_sequence_block(struct drm_i915_private *i915, > +find_panel_sequence_block(struct intel_display *display, > const struct bdb_mipi_sequence *sequence, > u16 panel_id, u32 *seq_size) > { > @@ -1771,7 +1775,8 @@ find_panel_sequence_block(struct drm_i915_private *i915, > > for (i = 0; i < MAX_MIPI_CONFIGURATIONS && index < total; i++) { > if (index + header_size > total) { > - drm_err(&i915->drm, "Invalid sequence block (header)\n"); > + drm_err(display->drm, > + "Invalid sequence block (header)\n"); > return NULL; > } > > @@ -1784,7 +1789,7 @@ find_panel_sequence_block(struct drm_i915_private *i915, > index += header_size; > > if (index + current_size > total) { > - drm_err(&i915->drm, "Invalid sequence block\n"); > + drm_err(display->drm, "Invalid sequence block\n"); > return NULL; > } > > @@ -1796,12 +1801,13 @@ find_panel_sequence_block(struct drm_i915_private *i915, > index += current_size; > } > > - drm_err(&i915->drm, "Sequence block detected but no valid configuration\n"); > + drm_err(display->drm, > + "Sequence block detected but no valid configuration\n"); > > return NULL; > } > > -static int goto_next_sequence(struct drm_i915_private *i915, > +static int goto_next_sequence(struct intel_display *display, > const u8 *data, int index, int total) > { > u16 len; > @@ -1832,7 +1838,7 @@ static int goto_next_sequence(struct drm_i915_private *i915, > len = *(data + index + 6) + 7; > break; > default: > - drm_err(&i915->drm, "Unknown operation byte\n"); > + drm_err(display->drm, "Unknown operation byte\n"); > return 0; > } > } > @@ -1840,7 +1846,7 @@ static int goto_next_sequence(struct drm_i915_private *i915, > return 0; > } > > -static int goto_next_sequence_v3(struct drm_i915_private *i915, > +static int goto_next_sequence_v3(struct intel_display *display, > const u8 *data, int index, int total) > { > int seq_end; > @@ -1852,7 +1858,7 @@ static int goto_next_sequence_v3(struct drm_i915_private *i915, > * checking on the structure. > */ > if (total < 5) { > - drm_err(&i915->drm, "Too small sequence size\n"); > + drm_err(display->drm, "Too small sequence size\n"); > return 0; > } > > @@ -1869,7 +1875,7 @@ static int goto_next_sequence_v3(struct drm_i915_private *i915, > > seq_end = index + size_of_sequence; > if (seq_end > total) { > - drm_err(&i915->drm, "Invalid sequence size\n"); > + drm_err(display->drm, "Invalid sequence size\n"); > return 0; > } > > @@ -1879,7 +1885,8 @@ static int goto_next_sequence_v3(struct drm_i915_private *i915, > > if (operation_byte == MIPI_SEQ_ELEM_END) { > if (index != seq_end) { > - drm_err(&i915->drm, "Invalid element structure\n"); > + drm_err(display->drm, > + "Invalid element structure\n"); > return 0; > } > return index; > @@ -1901,7 +1908,7 @@ static int goto_next_sequence_v3(struct drm_i915_private *i915, > case MIPI_SEQ_ELEM_PMIC: > break; > default: > - drm_err(&i915->drm, "Unknown operation byte %u\n", > + drm_err(display->drm, "Unknown operation byte %u\n", > operation_byte); > break; > } > @@ -1914,13 +1921,13 @@ static int goto_next_sequence_v3(struct drm_i915_private *i915, > * 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 *i915, > +static int get_init_otp_deassert_fragment_len(struct intel_display *display, > struct intel_panel *panel) > { > const u8 *data = panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP]; > int index, len; > > - if (drm_WARN_ON(&i915->drm, > + if (drm_WARN_ON(display->drm, > !data || panel->vbt.dsi.seq_version != 1)) > return 0; > > @@ -1949,7 +1956,7 @@ static int get_init_otp_deassert_fragment_len(struct drm_i915_private *i915, > * these devices we split the init OTP sequence into a deassert sequence and > * the actual init OTP part. > */ > -static void vlv_fixup_mipi_sequences(struct drm_i915_private *i915, > +static void vlv_fixup_mipi_sequences(struct intel_display *display, > struct intel_panel *panel) > { > u8 *init_otp; > @@ -1967,11 +1974,11 @@ static void vlv_fixup_mipi_sequences(struct drm_i915_private *i915, > return; > > /* The deassert-sequence ends at the first DSI packet */ > - len = get_init_otp_deassert_fragment_len(i915, panel); > + len = get_init_otp_deassert_fragment_len(display, panel); > if (!len) > return; > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Using init OTP fragment to deassert reset\n"); > > /* Copy the fragment, update seq byte and terminate it */ > @@ -2004,29 +2011,32 @@ static void vlv_fixup_mipi_sequences(struct drm_i915_private *i915, > * or examine the contents of the sequences to > * avoid false positives? > */ > -static void icl_fixup_mipi_sequences(struct drm_i915_private *i915, > +static void icl_fixup_mipi_sequences(struct intel_display *display, > struct intel_panel *panel) > { > if (!panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP] && > panel->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]) { > - drm_dbg_kms(&i915->drm, "Broken VBT: Swapping INIT_OTP and DISPLAY_ON sequences\n"); > + drm_dbg_kms(display->drm, > + "Broken VBT: Swapping INIT_OTP and DISPLAY_ON sequences\n"); > > swap(panel->vbt.dsi.sequence[MIPI_SEQ_INIT_OTP], > panel->vbt.dsi.sequence[MIPI_SEQ_DISPLAY_ON]); > } > } > > -static void fixup_mipi_sequences(struct drm_i915_private *i915, > +static void fixup_mipi_sequences(struct intel_display *display, > struct intel_panel *panel) > { > - if (DISPLAY_VER(i915) >= 11) > - icl_fixup_mipi_sequences(i915, panel); > + struct drm_i915_private *i915 = to_i915(display->drm); > + > + if (DISPLAY_VER(display) >= 11) > + icl_fixup_mipi_sequences(display, panel); > else if (IS_VALLEYVIEW(i915)) > - vlv_fixup_mipi_sequences(i915, panel); > + vlv_fixup_mipi_sequences(display, panel); > } > > static void > -parse_mipi_sequence(struct drm_i915_private *i915, > +parse_mipi_sequence(struct intel_display *display, > struct intel_panel *panel) > { > int panel_type = panel->vbt.panel_type; > @@ -2040,25 +2050,25 @@ parse_mipi_sequence(struct drm_i915_private *i915, > if (panel->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID) > return; > > - sequence = bdb_find_section(i915, BDB_MIPI_SEQUENCE); > + sequence = bdb_find_section(display, BDB_MIPI_SEQUENCE); > if (!sequence) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "No MIPI Sequence found, parsing complete\n"); > return; > } > > /* Fail gracefully for forward incompatible sequence block. */ > if (sequence->version >= 4) { > - drm_err(&i915->drm, > + drm_err(display->drm, > "Unable to parse MIPI Sequence Block v%u\n", > sequence->version); > return; > } > > - drm_dbg(&i915->drm, "Found MIPI sequence block v%u\n", > + drm_dbg(display->drm, "Found MIPI sequence block v%u\n", > sequence->version); > > - seq_data = find_panel_sequence_block(i915, sequence, panel_type, &seq_size); > + seq_data = find_panel_sequence_block(display, sequence, panel_type, &seq_size); > if (!seq_data) > return; > > @@ -2073,24 +2083,24 @@ parse_mipi_sequence(struct drm_i915_private *i915, > break; > > if (seq_id >= MIPI_SEQ_MAX) { > - drm_err(&i915->drm, "Unknown sequence %u\n", > + drm_err(display->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(&i915->drm, > + drm_dbg_kms(display->drm, > "Unsupported sequence %u\n", seq_id); > > panel->vbt.dsi.sequence[seq_id] = data + index; > > if (sequence->version >= 3) > - index = goto_next_sequence_v3(i915, data, index, seq_size); > + index = goto_next_sequence_v3(display, data, index, seq_size); > else > - index = goto_next_sequence(i915, data, index, seq_size); > + index = goto_next_sequence(display, data, index, seq_size); > if (!index) { > - drm_err(&i915->drm, "Invalid sequence %u\n", > + drm_err(display->drm, "Invalid sequence %u\n", > seq_id); > goto err; > } > @@ -2100,9 +2110,9 @@ parse_mipi_sequence(struct drm_i915_private *i915, > panel->vbt.dsi.size = seq_size; > panel->vbt.dsi.seq_version = sequence->version; > > - fixup_mipi_sequences(i915, panel); > + fixup_mipi_sequences(display, panel); > > - drm_dbg(&i915->drm, "MIPI related VBT parsing complete\n"); > + drm_dbg(display->drm, "MIPI related VBT parsing complete\n"); > return; > > err: > @@ -2111,47 +2121,47 @@ parse_mipi_sequence(struct drm_i915_private *i915, > } > > static void > -parse_compression_parameters(struct drm_i915_private *i915) > +parse_compression_parameters(struct intel_display *display) > { > const struct bdb_compression_parameters *params; > struct intel_bios_encoder_data *devdata; > u16 block_size; > int index; > > - if (i915->display.vbt.version < 198) > + if (display->vbt.version < 198) > return; > > - params = bdb_find_section(i915, BDB_COMPRESSION_PARAMETERS); > + params = bdb_find_section(display, BDB_COMPRESSION_PARAMETERS); > if (params) { > /* Sanity checks */ > if (params->entry_size != sizeof(params->data[0])) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT: unsupported compression param entry size\n"); > return; > } > > block_size = get_blocksize(params); > if (block_size < sizeof(*params)) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT: expected 16 compression param entries\n"); > return; > } > } > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > > if (!child->compression_enable) > continue; > > if (!params) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT: compression params not available\n"); > continue; > } > > if (child->compression_method_cps) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT: CPS compression not supported\n"); > continue; > } > @@ -2163,12 +2173,12 @@ parse_compression_parameters(struct drm_i915_private *i915) > } > } > > -static u8 translate_iboost(struct drm_i915_private *i915, u8 val) > +static u8 translate_iboost(struct intel_display *display, u8 val) > { > static const u8 mapping[] = { 1, 3, 7 }; /* See VBT spec */ > > if (val >= ARRAY_SIZE(mapping)) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Unsupported I_boost value found in VBT (%d), display may not work properly\n", val); > return 0; > } > @@ -2225,8 +2235,9 @@ static const u8 adlp_ddc_pin_map[] = { > [GMBUS_PIN_12_TC4_ICP] = ADLP_DDC_BUS_PORT_TC4, > }; > > -static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin) > +static u8 map_ddc_pin(struct intel_display *display, u8 vbt_pin) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > const u8 *ddc_pin_map; > int i, n_entries; > > @@ -2241,7 +2252,7 @@ static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin) > } 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(i915) && DISPLAY_VER(i915) == 9) { > + } else if (HAS_PCH_TGP(i915) && DISPLAY_VER(display) == 9) { > ddc_pin_map = gen9bc_tgp_ddc_pin_map; > n_entries = ARRAY_SIZE(gen9bc_tgp_ddc_pin_map); > } else if (INTEL_PCH_TYPE(i915) >= PCH_ICP) { > @@ -2260,7 +2271,7 @@ static u8 map_ddc_pin(struct drm_i915_private *i915, u8 vbt_pin) > return i; > } > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Ignoring alternate pin: VBT claims DDC pin %d, which is not valid for this platform\n", > vbt_pin); > return 0; > @@ -2318,9 +2329,10 @@ 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 *i915, > +static enum port dvo_port_to_port(struct intel_display *display, > u8 dvo_port) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > /* > * Each DDI port can have more than one value on the "DVO Port" field, > * so look for all the possible values for each port. > @@ -2372,7 +2384,7 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915, > [PORT_TC4] = { DVO_PORT_HDMII, DVO_PORT_DPI, -1 }, > }; > > - if (DISPLAY_VER(i915) >= 13) > + if (DISPLAY_VER(display) >= 13) > return __dvo_port_to_port(ARRAY_SIZE(xelpd_port_mapping), > ARRAY_SIZE(xelpd_port_mapping[0]), > xelpd_port_mapping, > @@ -2395,13 +2407,13 @@ static enum port dvo_port_to_port(struct drm_i915_private *i915, > } > > static enum port > -dsi_dvo_port_to_port(struct drm_i915_private *i915, u8 dvo_port) > +dsi_dvo_port_to_port(struct intel_display *display, u8 dvo_port) > { > switch (dvo_port) { > case DVO_PORT_MIPIA: > return PORT_A; > case DVO_PORT_MIPIC: > - if (DISPLAY_VER(i915) >= 11) > + if (DISPLAY_VER(display) >= 11) > return PORT_B; > else > return PORT_C; > @@ -2412,13 +2424,13 @@ dsi_dvo_port_to_port(struct drm_i915_private *i915, u8 dvo_port) > > enum port intel_bios_encoder_port(const struct intel_bios_encoder_data *devdata) > { > - struct drm_i915_private *i915 = devdata->i915; > + struct intel_display *display = devdata->display; > const struct child_device_config *child = &devdata->child; > enum port port; > > - port = dvo_port_to_port(i915, child->dvo_port); > - if (port == PORT_NONE && DISPLAY_VER(i915) >= 11) > - port = dsi_dvo_port_to_port(i915, child->dvo_port); > + port = dvo_port_to_port(display, child->dvo_port); > + if (port == PORT_NONE && DISPLAY_VER(display) >= 11) > + port = dsi_dvo_port_to_port(display, child->dvo_port); > > return port; > } > @@ -2463,10 +2475,10 @@ static int parse_bdb_216_dp_max_link_rate(const int vbt_max_link_rate) > > int intel_bios_dp_max_link_rate(const struct intel_bios_encoder_data *devdata) > { > - if (!devdata || devdata->i915->display.vbt.version < 216) > + if (!devdata || devdata->display->vbt.version < 216) > return 0; > > - if (devdata->i915->display.vbt.version >= 230) > + if (devdata->display->vbt.version >= 230) > return parse_bdb_230_dp_max_link_rate(devdata->child.dp_max_link_rate); > else > return parse_bdb_216_dp_max_link_rate(devdata->child.dp_max_link_rate); > @@ -2474,7 +2486,7 @@ int intel_bios_dp_max_link_rate(const struct intel_bios_encoder_data *devdata) > > int intel_bios_dp_max_lane_count(const struct intel_bios_encoder_data *devdata) > { > - if (!devdata || devdata->i915->display.vbt.version < 244) > + if (!devdata || devdata->display->vbt.version < 244) > return 0; > > return devdata->child.dp_max_lane_count + 1; > @@ -2483,10 +2495,10 @@ int intel_bios_dp_max_lane_count(const struct intel_bios_encoder_data *devdata) > static void sanitize_device_type(struct intel_bios_encoder_data *devdata, > enum port port) > { > - struct drm_i915_private *i915 = devdata->i915; > + struct intel_display *display = devdata->display; > bool is_hdmi; > > - if (port != PORT_A || DISPLAY_VER(i915) >= 12) > + if (port != PORT_A || DISPLAY_VER(display) >= 12) > return; > > if (!intel_bios_encoder_supports_dvi(devdata)) > @@ -2494,7 +2506,7 @@ static void sanitize_device_type(struct intel_bios_encoder_data *devdata, > > is_hdmi = intel_bios_encoder_supports_hdmi(devdata); > > - drm_dbg_kms(&i915->drm, "VBT claims port A supports DVI%s, ignoring\n", > + drm_dbg_kms(display->drm, "VBT claims port A supports DVI%s, ignoring\n", > is_hdmi ? "/HDMI" : ""); > > devdata->child.device_type &= ~DEVICE_TYPE_TMDS_DVI_SIGNALING; > @@ -2504,7 +2516,8 @@ static void sanitize_device_type(struct intel_bios_encoder_data *devdata, > static void sanitize_hdmi_level_shift(struct intel_bios_encoder_data *devdata, > enum port port) > { > - struct drm_i915_private *i915 = devdata->i915; > + struct intel_display *display = devdata->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > > if (!intel_bios_encoder_supports_dvi(devdata)) > return; > @@ -2515,7 +2528,8 @@ static void sanitize_hdmi_level_shift(struct intel_bios_encoder_data *devdata, > * up to 11, whereas the BDW max is 9. > */ > if (IS_BROADWELL(i915) && devdata->child.hdmi_level_shifter_value > 9) { > - drm_dbg_kms(&i915->drm, "Bogus port %c VBT HDMI level shift %d, adjusting to %d\n", > + drm_dbg_kms(display->drm, > + "Bogus port %c VBT HDMI level shift %d, adjusting to %d\n", > port_name(port), devdata->child.hdmi_level_shifter_value, 9); > > devdata->child.hdmi_level_shifter_value = 9; > @@ -2563,14 +2577,14 @@ intel_bios_encoder_supports_dsi(const struct intel_bios_encoder_data *devdata) > bool > intel_bios_encoder_is_lspcon(const struct intel_bios_encoder_data *devdata) > { > - return devdata && HAS_LSPCON(devdata->i915) && devdata->child.lspcon; > + return devdata && HAS_LSPCON(devdata->display) && devdata->child.lspcon; > } > > /* This is an index in the HDMI/DVI DDI buffer translation table, or -1 */ > int intel_bios_hdmi_level_shift(const struct intel_bios_encoder_data *devdata) > { > - if (!devdata || devdata->i915->display.vbt.version < 158 || > - DISPLAY_VER(devdata->i915) >= 14) > + if (!devdata || devdata->display->vbt.version < 158 || > + DISPLAY_VER(devdata->display) >= 14) > return -1; > > return devdata->child.hdmi_level_shifter_value; > @@ -2578,7 +2592,7 @@ int intel_bios_hdmi_level_shift(const struct intel_bios_encoder_data *devdata) > > int intel_bios_hdmi_max_tmds_clock(const struct intel_bios_encoder_data *devdata) > { > - if (!devdata || devdata->i915->display.vbt.version < 204) > + if (!devdata || devdata->display->vbt.version < 204) > return 0; > > switch (devdata->child.hdmi_max_data_rate) { > @@ -2600,8 +2614,9 @@ int intel_bios_hdmi_max_tmds_clock(const struct intel_bios_encoder_data *devdata > } > } > > -static bool is_port_valid(struct drm_i915_private *i915, enum port port) > +static bool is_port_valid(struct intel_display *display, enum port port) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > /* > * On some ICL SKUs port F is not present, but broken VBTs mark > * the port as present. Only try to initialize port F for the > @@ -2615,7 +2630,7 @@ static bool is_port_valid(struct drm_i915_private *i915, enum port port) > > static void print_ddi_port(const struct intel_bios_encoder_data *devdata) > { > - struct drm_i915_private *i915 = devdata->i915; > + struct intel_display *display = devdata->display; > const struct child_device_config *child = &devdata->child; > bool is_dvi, is_hdmi, is_dp, is_edp, is_dsi, is_crt, supports_typec_usb, supports_tbt; > int dp_boost_level, dp_max_link_rate, hdmi_boost_level, hdmi_level_shift, max_tmds_clock; > @@ -2635,7 +2650,7 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata) > supports_typec_usb = intel_bios_encoder_supports_typec_usb(devdata); > supports_tbt = intel_bios_encoder_supports_tbt(devdata); > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Port %c VBT info: CRT:%d DVI:%d HDMI:%d DP:%d eDP:%d DSI:%d DP++:%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, is_dsi, > intel_bios_encoder_supports_dp_dual_mode(devdata), > @@ -2645,33 +2660,33 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata) > > hdmi_level_shift = intel_bios_hdmi_level_shift(devdata); > if (hdmi_level_shift >= 0) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Port %c VBT HDMI level shift: %d\n", > port_name(port), hdmi_level_shift); > } > > max_tmds_clock = intel_bios_hdmi_max_tmds_clock(devdata); > if (max_tmds_clock) > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Port %c VBT HDMI max TMDS clock: %d kHz\n", > port_name(port), max_tmds_clock); > > /* I_boost config for SKL and above */ > dp_boost_level = intel_bios_dp_boost_level(devdata); > if (dp_boost_level) > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Port %c VBT (e)DP boost level: %d\n", > port_name(port), dp_boost_level); > > hdmi_boost_level = intel_bios_hdmi_boost_level(devdata); > if (hdmi_boost_level) > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Port %c VBT HDMI boost level: %d\n", > port_name(port), hdmi_boost_level); > > dp_max_link_rate = intel_bios_dp_max_link_rate(devdata); > if (dp_max_link_rate) > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Port %c VBT DP max link rate: %d\n", > port_name(port), dp_max_link_rate); > > @@ -2679,22 +2694,22 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata) > * FIXME need to implement support for VBT > * vswing/preemph tables should this ever trigger. > */ > - drm_WARN(&i915->drm, child->use_vbt_vswing, > + drm_WARN(display->drm, child->use_vbt_vswing, > "Port %c asks to use VBT vswing/preemph tables\n", > port_name(port)); > } > > static void parse_ddi_port(struct intel_bios_encoder_data *devdata) > { > - struct drm_i915_private *i915 = devdata->i915; > + struct intel_display *display = devdata->display; > enum port port; > > port = intel_bios_encoder_port(devdata); > if (port == PORT_NONE) > return; > > - if (!is_port_valid(i915, port)) { > - drm_dbg_kms(&i915->drm, > + if (!is_port_valid(display, port)) { > + drm_dbg_kms(display->drm, > "VBT reports port %c as supported, but that can't be true: skipping\n", > port_name(port)); > return; > @@ -2704,22 +2719,24 @@ static void parse_ddi_port(struct intel_bios_encoder_data *devdata) > sanitize_hdmi_level_shift(devdata, port); > } > > -static bool has_ddi_port_info(struct drm_i915_private *i915) > +static bool has_ddi_port_info(struct intel_display *display) > { > - return DISPLAY_VER(i915) >= 5 || IS_G4X(i915); > + struct drm_i915_private *i915 = to_i915(display->drm); > + > + return DISPLAY_VER(display) >= 5 || IS_G4X(i915); > } > > -static void parse_ddi_ports(struct drm_i915_private *i915) > +static void parse_ddi_ports(struct intel_display *display) > { > struct intel_bios_encoder_data *devdata; > > - if (!has_ddi_port_info(i915)) > + if (!has_ddi_port_info(display)) > return; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) > + list_for_each_entry(devdata, &display->vbt.display_devices, node) > parse_ddi_port(devdata); > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) > + list_for_each_entry(devdata, &display->vbt.display_devices, node) > print_ddi_port(devdata); > } > > @@ -2745,27 +2762,27 @@ static int child_device_expected_size(u16 version) > return 22; > } > > -static bool child_device_size_valid(struct drm_i915_private *i915, int size) > +static bool child_device_size_valid(struct intel_display *display, int size) > { > int expected_size; > > - expected_size = child_device_expected_size(i915->display.vbt.version); > + expected_size = child_device_expected_size(display->vbt.version); > if (expected_size < 0) { > expected_size = sizeof(struct child_device_config); > - drm_dbg(&i915->drm, > + drm_dbg(display->drm, > "Expected child device config size for VBT version %u not known; assuming %d\n", > - i915->display.vbt.version, expected_size); > + display->vbt.version, expected_size); > } > > /* Flag an error for unexpected size, but continue anyway. */ > if (size != expected_size) > - drm_err(&i915->drm, > + drm_err(display->drm, > "Unexpected child device config size %d (expected %d for VBT version %u)\n", > - size, expected_size, i915->display.vbt.version); > + size, expected_size, display->vbt.version); > > /* The legacy sized child device config is the minimum we need. */ > if (size < LEGACY_CHILD_DEVICE_CONFIG_SIZE) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Child device config size %d is too small.\n", > size); > return false; > @@ -2775,8 +2792,9 @@ static bool child_device_size_valid(struct drm_i915_private *i915, int size) > } > > static void > -parse_general_definitions(struct drm_i915_private *i915) > +parse_general_definitions(struct intel_display *display) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct bdb_general_definitions *defs; > struct intel_bios_encoder_data *devdata; > const struct child_device_config *child; > @@ -2784,27 +2802,27 @@ parse_general_definitions(struct drm_i915_private *i915) > u16 block_size; > int bus_pin; > > - defs = bdb_find_section(i915, BDB_GENERAL_DEFINITIONS); > + defs = bdb_find_section(display, BDB_GENERAL_DEFINITIONS); > if (!defs) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->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(&i915->drm, > + drm_dbg_kms(display->drm, > "General definitions block too small (%u)\n", > block_size); > return; > } > > bus_pin = defs->crt_ddc_gmbus_pin; > - drm_dbg_kms(&i915->drm, "crt_ddc_bus_pin: %d\n", bus_pin); > + drm_dbg_kms(display->drm, "crt_ddc_bus_pin: %d\n", bus_pin); > if (intel_gmbus_is_valid_pin(i915, bus_pin)) > - i915->display.vbt.crt_ddc_pin = bus_pin; > + display->vbt.crt_ddc_pin = bus_pin; > > - if (!child_device_size_valid(i915, defs->child_dev_size)) > + if (!child_device_size_valid(display, defs->child_dev_size)) > return; > > /* get the number of child device */ > @@ -2815,7 +2833,7 @@ parse_general_definitions(struct drm_i915_private *i915) > if (!child->device_type) > continue; > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Found VBT child device with type 0x%x\n", > child->device_type); > > @@ -2823,7 +2841,7 @@ parse_general_definitions(struct drm_i915_private *i915) > if (!devdata) > break; > > - devdata->i915 = i915; > + devdata->display = display; > > /* > * Copy as much as we know (sizeof) and is available > @@ -2833,37 +2851,39 @@ parse_general_definitions(struct drm_i915_private *i915) > memcpy(&devdata->child, child, > min_t(size_t, defs->child_dev_size, sizeof(*child))); > > - list_add_tail(&devdata->node, &i915->display.vbt.display_devices); > + list_add_tail(&devdata->node, &display->vbt.display_devices); > } > > - if (list_empty(&i915->display.vbt.display_devices)) > - drm_dbg_kms(&i915->drm, > + if (list_empty(&display->vbt.display_devices)) > + drm_dbg_kms(display->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 *i915) > +init_vbt_defaults(struct intel_display *display) > { > - i915->display.vbt.crt_ddc_pin = GMBUS_PIN_VGADDC; > + struct drm_i915_private *i915 = to_i915(display->drm); > + > + display->vbt.crt_ddc_pin = GMBUS_PIN_VGADDC; > > /* general features */ > - i915->display.vbt.int_tv_support = 1; > - i915->display.vbt.int_crt_support = 1; > + display->vbt.int_tv_support = 1; > + display->vbt.int_crt_support = 1; > > /* driver features */ > - i915->display.vbt.int_lvds_support = 1; > + display->vbt.int_lvds_support = 1; > > /* Default to using SSC */ > - i915->display.vbt.lvds_use_ssc = 1; > + display->vbt.lvds_use_ssc = 1; > /* > * Core/SandyBridge/IvyBridge use alternative (120MHz) reference > * clock for LVDS. > */ > - i915->display.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->display.vbt.lvds_ssc_freq); > + display->vbt.lvds_ssc_freq = intel_bios_ssc_frequency(display, > + !HAS_PCH_SPLIT(i915)); > + drm_dbg_kms(display->drm, "Set default to SSC at %d kHz\n", > + display->vbt.lvds_ssc_freq); > } > > /* Common defaults which may be overridden by VBT. */ > @@ -2879,12 +2899,13 @@ init_vbt_panel_defaults(struct intel_panel *panel) > > /* Defaults to initialize only if there is no VBT. */ > static void > -init_vbt_missing_defaults(struct drm_i915_private *i915) > +init_vbt_missing_defaults(struct intel_display *display) > { > - unsigned int ports = DISPLAY_RUNTIME_INFO(i915)->port_mask; > + struct drm_i915_private *i915 = to_i915(display->drm); > + unsigned int ports = DISPLAY_RUNTIME_INFO(display)->port_mask; > enum port port; > > - if (!HAS_DDI(i915) && !IS_CHERRYVIEW(i915)) > + if (!HAS_DDI(display) && !IS_CHERRYVIEW(i915)) > return; > > for_each_port_masked(port, ports) { > @@ -2904,7 +2925,7 @@ init_vbt_missing_defaults(struct drm_i915_private *i915) > if (!devdata) > break; > > - devdata->i915 = i915; > + devdata->display = display; > child = &devdata->child; > > if (port == PORT_F) > @@ -2923,15 +2944,15 @@ init_vbt_missing_defaults(struct drm_i915_private *i915) > if (port == PORT_A) > child->device_type |= DEVICE_TYPE_INTERNAL_CONNECTOR; > > - list_add_tail(&devdata->node, &i915->display.vbt.display_devices); > + list_add_tail(&devdata->node, &display->vbt.display_devices); > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->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->display.vbt.version = 155; > + display->vbt.version = 155; > } > > static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt) > @@ -2943,13 +2964,13 @@ static const struct bdb_header *get_bdb_header(const struct vbt_header *vbt) > > /** > * intel_bios_is_valid_vbt - does the given buffer contain a valid VBT > - * @i915: the device > + * @display: display device > * @buf: pointer to a buffer to validate > * @size: size of the buffer > * > * Returns true on valid VBT. > */ > -bool intel_bios_is_valid_vbt(struct drm_i915_private *i915, > +bool intel_bios_is_valid_vbt(struct intel_display *display, > const void *buf, size_t size) > { > const struct vbt_header *vbt = buf; > @@ -2959,17 +2980,18 @@ bool intel_bios_is_valid_vbt(struct drm_i915_private *i915, > return false; > > if (sizeof(struct vbt_header) > size) { > - drm_dbg_kms(&i915->drm, "VBT header incomplete\n"); > + drm_dbg_kms(display->drm, "VBT header incomplete\n"); > return false; > } > > if (memcmp(vbt->signature, "$VBT", 4)) { > - drm_dbg_kms(&i915->drm, "VBT invalid signature\n"); > + drm_dbg_kms(display->drm, "VBT invalid signature\n"); > return false; > } > > if (vbt->vbt_size > size) { > - drm_dbg_kms(&i915->drm, "VBT incomplete (vbt_size overflows)\n"); > + drm_dbg_kms(display->drm, > + "VBT incomplete (vbt_size overflows)\n"); > return false; > } > > @@ -2979,48 +3001,48 @@ bool intel_bios_is_valid_vbt(struct drm_i915_private *i915, > vbt->bdb_offset, > sizeof(struct bdb_header), > size)) { > - drm_dbg_kms(&i915->drm, "BDB header incomplete\n"); > + drm_dbg_kms(display->drm, "BDB header incomplete\n"); > return false; > } > > bdb = get_bdb_header(vbt); > if (range_overflows_t(size_t, vbt->bdb_offset, bdb->bdb_size, size)) { > - drm_dbg_kms(&i915->drm, "BDB incomplete\n"); > + drm_dbg_kms(display->drm, "BDB incomplete\n"); > return false; > } > > return vbt; > } > > -static struct vbt_header *firmware_get_vbt(struct drm_i915_private *i915, > +static struct vbt_header *firmware_get_vbt(struct intel_display *display, > size_t *size) > { > struct vbt_header *vbt = NULL; > const struct firmware *fw = NULL; > - const char *name = i915->display.params.vbt_firmware; > + const char *name = display->params.vbt_firmware; > int ret; > > if (!name || !*name) > return NULL; > > - ret = request_firmware(&fw, name, i915->drm.dev); > + ret = request_firmware(&fw, name, display->drm->dev); > if (ret) { > - drm_err(&i915->drm, > + drm_err(display->drm, > "Requesting VBT firmware \"%s\" failed (%d)\n", > name, ret); > return NULL; > } > > - if (intel_bios_is_valid_vbt(i915, fw->data, fw->size)) { > + if (intel_bios_is_valid_vbt(display, fw->data, fw->size)) { > vbt = kmemdup(fw->data, fw->size, GFP_KERNEL); > if (vbt) { > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Found valid VBT firmware \"%s\"\n", name); > if (size) > *size = fw->size; > } > } else { > - drm_dbg_kms(&i915->drm, "Invalid VBT firmware \"%s\"\n", > + drm_dbg_kms(display->drm, "Invalid VBT firmware \"%s\"\n", > name); > } > > @@ -3036,9 +3058,10 @@ static u32 intel_spi_read(struct intel_uncore *uncore, u32 offset) > return intel_uncore_read(uncore, PRIMARY_SPI_TRIGGER); > } > > -static struct vbt_header *spi_oprom_get_vbt(struct drm_i915_private *i915, > +static struct vbt_header *spi_oprom_get_vbt(struct intel_display *display, > size_t *size) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > u32 count, data, found, store = 0; > u32 static_region, oprom_offset; > u32 oprom_size = 0x200000; > @@ -3075,10 +3098,10 @@ static struct vbt_header *spi_oprom_get_vbt(struct drm_i915_private *i915, > for (count = 0; count < vbt_size; count += 4) > *(vbt + store++) = intel_spi_read(&i915->uncore, found + count); > > - if (!intel_bios_is_valid_vbt(i915, vbt, vbt_size)) > + if (!intel_bios_is_valid_vbt(display, vbt, vbt_size)) > goto err_free_vbt; > > - drm_dbg_kms(&i915->drm, "Found valid VBT in SPI flash\n"); > + drm_dbg_kms(display->drm, "Found valid VBT in SPI flash\n"); > > if (size) > *size = vbt_size; > @@ -3091,10 +3114,10 @@ static struct vbt_header *spi_oprom_get_vbt(struct drm_i915_private *i915, > return NULL; > } > > -static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915, > +static struct vbt_header *oprom_get_vbt(struct intel_display *display, > size_t *sizep) > { > - struct pci_dev *pdev = to_pci_dev(i915->drm.dev); > + struct pci_dev *pdev = to_pci_dev(display->drm->dev); > void __iomem *p = NULL, *oprom; > struct vbt_header *vbt; > u16 vbt_size; > @@ -3118,13 +3141,13 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915, > goto err_unmap_oprom; > > if (sizeof(struct vbt_header) > size) { > - drm_dbg(&i915->drm, "VBT header incomplete\n"); > + drm_dbg(display->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(&i915->drm, > + drm_dbg(display->drm, > "VBT incomplete (vbt_size overflows)\n"); > goto err_unmap_oprom; > } > @@ -3136,7 +3159,7 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915, > > memcpy_fromio(vbt, p, vbt_size); > > - if (!intel_bios_is_valid_vbt(i915, vbt, vbt_size)) > + if (!intel_bios_is_valid_vbt(display, vbt, vbt_size)) > goto err_free_vbt; > > pci_unmap_rom(pdev, oprom); > @@ -3144,7 +3167,7 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915, > if (sizep) > *sizep = vbt_size; > > - drm_dbg_kms(&i915->drm, "Found valid VBT in PCI ROM\n"); > + drm_dbg_kms(display->drm, "Found valid VBT in PCI ROM\n"); > > return vbt; > > @@ -3156,14 +3179,14 @@ static struct vbt_header *oprom_get_vbt(struct drm_i915_private *i915, > return NULL; > } > > -static const struct vbt_header *intel_bios_get_vbt(struct drm_i915_private *i915, > +static const struct vbt_header *intel_bios_get_vbt(struct intel_display *display, > size_t *sizep) > { > - struct intel_display *display = &i915->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct vbt_header *vbt = NULL; > intel_wakeref_t wakeref; > > - vbt = firmware_get_vbt(i915, sizep); > + vbt = firmware_get_vbt(display, sizep); > > if (!vbt) > vbt = intel_opregion_get_vbt(display, sizep); > @@ -3174,76 +3197,77 @@ static const struct vbt_header *intel_bios_get_vbt(struct drm_i915_private *i915 > */ > if (!vbt && IS_DGFX(i915)) > with_intel_runtime_pm(&i915->runtime_pm, wakeref) > - vbt = spi_oprom_get_vbt(i915, sizep); > + vbt = spi_oprom_get_vbt(display, sizep); > > if (!vbt) > with_intel_runtime_pm(&i915->runtime_pm, wakeref) > - vbt = oprom_get_vbt(i915, sizep); > + vbt = oprom_get_vbt(display, sizep); > > return vbt; > } > > /** > * intel_bios_init - find VBT and initialize settings from the BIOS > - * @i915: i915 device instance > + * @display: display 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 *i915) > +void intel_bios_init(struct intel_display *display) > { > const struct vbt_header *vbt; > const struct bdb_header *bdb; > > - INIT_LIST_HEAD(&i915->display.vbt.display_devices); > - INIT_LIST_HEAD(&i915->display.vbt.bdb_blocks); > + INIT_LIST_HEAD(&display->vbt.display_devices); > + INIT_LIST_HEAD(&display->vbt.bdb_blocks); > > - if (!HAS_DISPLAY(i915)) { > - drm_dbg_kms(&i915->drm, > + if (!HAS_DISPLAY(display)) { > + drm_dbg_kms(display->drm, > "Skipping VBT init due to disabled display.\n"); > return; > } > > - init_vbt_defaults(i915); > + init_vbt_defaults(display); > > - vbt = intel_bios_get_vbt(i915, NULL); > + vbt = intel_bios_get_vbt(display, NULL); > > if (!vbt) > goto out; > > bdb = get_bdb_header(vbt); > - i915->display.vbt.version = bdb->version; > + display->vbt.version = bdb->version; > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "VBT signature \"%.*s\", BDB version %d\n", > - (int)sizeof(vbt->signature), vbt->signature, i915->display.vbt.version); > + (int)sizeof(vbt->signature), vbt->signature, > + display->vbt.version); > > - init_bdb_blocks(i915, bdb); > + init_bdb_blocks(display, bdb); > > /* Grab useful general definitions */ > - parse_general_features(i915); > - parse_general_definitions(i915); > - parse_driver_features(i915); > + parse_general_features(display); > + parse_general_definitions(display); > + parse_driver_features(display); > > /* Depends on child device list */ > - parse_compression_parameters(i915); > + parse_compression_parameters(display); > > out: > if (!vbt) { > - drm_info(&i915->drm, > + drm_info(display->drm, > "Failed to find VBIOS tables (VBT)\n"); > - init_vbt_missing_defaults(i915); > + init_vbt_missing_defaults(display); > } > > /* Further processing on pre-parsed or generated child device data */ > - parse_sdvo_device_mapping(i915); > - parse_ddi_ports(i915); > + parse_sdvo_device_mapping(display); > + parse_ddi_ports(display); > > kfree(vbt); > } > > -static void intel_bios_init_panel(struct drm_i915_private *i915, > +static void intel_bios_init_panel(struct intel_display *display, > struct intel_panel *panel, > const struct intel_bios_encoder_data *devdata, > const struct drm_edid *drm_edid, > @@ -3251,63 +3275,64 @@ static void intel_bios_init_panel(struct drm_i915_private *i915, > { > /* already have it? */ > if (panel->vbt.panel_type >= 0) { > - drm_WARN_ON(&i915->drm, !use_fallback); > + drm_WARN_ON(display->drm, !use_fallback); > return; > } > > - panel->vbt.panel_type = get_panel_type(i915, devdata, > + panel->vbt.panel_type = get_panel_type(display, devdata, > drm_edid, use_fallback); > if (panel->vbt.panel_type < 0) { > - drm_WARN_ON(&i915->drm, use_fallback); > + drm_WARN_ON(display->drm, use_fallback); > return; > } > > init_vbt_panel_defaults(panel); > > - parse_panel_options(i915, panel); > - parse_generic_dtd(i915, panel); > - parse_lfp_data(i915, panel); > - parse_lfp_backlight(i915, panel); > - parse_sdvo_lvds_data(i915, panel); > - parse_panel_driver_features(i915, panel); > - parse_power_conservation_features(i915, panel); > - parse_edp(i915, panel); > - parse_psr(i915, panel); > - parse_mipi_config(i915, panel); > - parse_mipi_sequence(i915, panel); > + parse_panel_options(display, panel); > + parse_generic_dtd(display, panel); > + parse_lfp_data(display, panel); > + parse_lfp_backlight(display, panel); > + parse_sdvo_lvds_data(display, panel); > + parse_panel_driver_features(display, panel); > + parse_power_conservation_features(display, panel); > + parse_edp(display, panel); > + parse_psr(display, panel); > + parse_mipi_config(display, panel); > + parse_mipi_sequence(display, panel); > } > > -void intel_bios_init_panel_early(struct drm_i915_private *i915, > +void intel_bios_init_panel_early(struct intel_display *display, > struct intel_panel *panel, > const struct intel_bios_encoder_data *devdata) > { > - intel_bios_init_panel(i915, panel, devdata, NULL, false); > + intel_bios_init_panel(display, panel, devdata, NULL, false); > } > > -void intel_bios_init_panel_late(struct drm_i915_private *i915, > +void intel_bios_init_panel_late(struct intel_display *display, > struct intel_panel *panel, > const struct intel_bios_encoder_data *devdata, > const struct drm_edid *drm_edid) > { > - intel_bios_init_panel(i915, panel, devdata, drm_edid, true); > + intel_bios_init_panel(display, panel, devdata, drm_edid, true); > } > > /** > * intel_bios_driver_remove - Free any resources allocated by intel_bios_init() > - * @i915: i915 device instance > + * @display: display device instance > */ > -void intel_bios_driver_remove(struct drm_i915_private *i915) > +void intel_bios_driver_remove(struct intel_display *display) > { > struct intel_bios_encoder_data *devdata, *nd; > struct bdb_block_entry *entry, *ne; > > - list_for_each_entry_safe(devdata, nd, &i915->display.vbt.display_devices, node) { > + list_for_each_entry_safe(devdata, nd, &display->vbt.display_devices, > + node) { > list_del(&devdata->node); > kfree(devdata->dsc); > kfree(devdata); > } > > - list_for_each_entry_safe(entry, ne, &i915->display.vbt.bdb_blocks, node) { > + list_for_each_entry_safe(entry, ne, &display->vbt.bdb_blocks, node) { > list_del(&entry->node); > kfree(entry); > } > @@ -3331,22 +3356,22 @@ void intel_bios_fini_panel(struct intel_panel *panel) > > /** > * intel_bios_is_tv_present - is integrated TV present in VBT > - * @i915: i915 device instance > + * @display: display 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 *i915) > +bool intel_bios_is_tv_present(struct intel_display *display) > { > const struct intel_bios_encoder_data *devdata; > > - if (!i915->display.vbt.int_tv_support) > + if (!display->vbt.int_tv_support) > return false; > > - if (list_empty(&i915->display.vbt.display_devices)) > + if (list_empty(&display->vbt.display_devices)) > return true; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > > /* > @@ -3372,21 +3397,21 @@ bool intel_bios_is_tv_present(struct drm_i915_private *i915) > > /** > * intel_bios_is_lvds_present - is LVDS present in VBT > - * @i915: i915 device instance > + * @display: display 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 *i915, u8 *i2c_pin) > +bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin) > { > - struct intel_display *display = &i915->display; > + struct drm_i915_private *i915 = to_i915(display->drm); > const struct intel_bios_encoder_data *devdata; > > - if (list_empty(&i915->display.vbt.display_devices)) > + if (list_empty(&display->vbt.display_devices)) > return true; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > > /* If the device type is not LFP, continue. > @@ -3421,25 +3446,25 @@ bool intel_bios_is_lvds_present(struct drm_i915_private *i915, u8 *i2c_pin) > > /** > * intel_bios_is_port_present - is the specified digital port present > - * @i915: i915 device instance > + * @display: display 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 *i915, enum port port) > +bool intel_bios_is_port_present(struct intel_display *display, enum port port) > { > const struct intel_bios_encoder_data *devdata; > > - if (WARN_ON(!has_ddi_port_info(i915))) > + if (WARN_ON(!has_ddi_port_info(display))) > return true; > > - if (!is_port_valid(i915, port)) > + if (!is_port_valid(display, port)) > return false; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > > - if (dvo_port_to_port(i915, child->dvo_port) == port) > + if (dvo_port_to_port(display, child->dvo_port) == port) > return true; > } > > @@ -3470,32 +3495,32 @@ bool intel_bios_encoder_supports_dp_dual_mode(const struct intel_bios_encoder_da > > /** > * intel_bios_is_dsi_present - is DSI present in VBT > - * @i915: i915 device instance > + * @display: display 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 *i915, > +bool intel_bios_is_dsi_present(struct intel_display *display, > enum port *port) > { > const struct intel_bios_encoder_data *devdata; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > u8 dvo_port = child->dvo_port; > > if (!(child->device_type & DEVICE_TYPE_MIPI_OUTPUT)) > continue; > > - if (dsi_dvo_port_to_port(i915, dvo_port) == PORT_NONE) { > - drm_dbg_kms(&i915->drm, > + if (dsi_dvo_port_to_port(display, dvo_port) == PORT_NONE) { > + drm_dbg_kms(display->drm, > "VBT has unsupported DSI port %c\n", > port_name(dvo_port - DVO_PORT_MIPIA)); > continue; > } > > if (port) > - *port = dsi_dvo_port_to_port(i915, dvo_port); > + *port = dsi_dvo_port_to_port(display, dvo_port); > return true; > } > > @@ -3506,7 +3531,7 @@ static void fill_dsc(struct intel_crtc_state *crtc_state, > struct dsc_compression_parameters_entry *dsc, > int dsc_max_bpc) > { > - struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > + struct intel_display *display = to_intel_display(crtc_state); > struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config; > int bpc = 8; > > @@ -3520,7 +3545,7 @@ static void fill_dsc(struct intel_crtc_state *crtc_state, > else if (dsc->support_8bpc && dsc_max_bpc >= 8) > bpc = 8; > else > - drm_dbg_kms(&i915->drm, "VBT: Unsupported BPC %d for DCS\n", > + drm_dbg_kms(display->drm, "VBT: Unsupported BPC %d for DCS\n", > dsc_max_bpc); > > crtc_state->pipe_bpp = bpc * 3; > @@ -3541,14 +3566,16 @@ static void fill_dsc(struct intel_crtc_state *crtc_state, > } else { > /* FIXME */ > if (!(dsc->slices_per_line & BIT(0))) > - drm_dbg_kms(&i915->drm, "VBT: Unsupported DSC slice count for DSI\n"); > + drm_dbg_kms(display->drm, > + "VBT: Unsupported DSC slice count for DSI\n"); > > crtc_state->dsc.slice_count = 1; > } > > if (crtc_state->hw.adjusted_mode.crtc_hdisplay % > crtc_state->dsc.slice_count != 0) > - drm_dbg_kms(&i915->drm, "VBT: DSC hdisplay %d not divisible by slice count %d\n", > + drm_dbg_kms(display->drm, > + "VBT: DSC hdisplay %d not divisible by slice count %d\n", > crtc_state->hw.adjusted_mode.crtc_hdisplay, > crtc_state->dsc.slice_count); > > @@ -3572,16 +3599,16 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder, > struct intel_crtc_state *crtc_state, > int dsc_max_bpc) > { > - struct drm_i915_private *i915 = to_i915(encoder->base.dev); > + struct intel_display *display = to_intel_display(encoder); > const struct intel_bios_encoder_data *devdata; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > const struct child_device_config *child = &devdata->child; > > if (!(child->device_type & DEVICE_TYPE_MIPI_OUTPUT)) > continue; > > - if (dsi_dvo_port_to_port(i915, child->dvo_port) == encoder->port) { > + if (dsi_dvo_port_to_port(display, child->dvo_port) == encoder->port) { > if (!devdata->dsc) > return false; > > @@ -3641,12 +3668,13 @@ static const u8 direct_aux_ch_map[] = { > [AUX_CH_I] = DP_AUX_I, /* aka AUX_CH_USBC6 */ > }; > > -static enum aux_ch map_aux_ch(struct drm_i915_private *i915, u8 aux_channel) > +static enum aux_ch map_aux_ch(struct intel_display *display, u8 aux_channel) > { > + struct drm_i915_private *i915 = to_i915(display->drm); > const u8 *aux_ch_map; > int i, n_entries; > > - if (DISPLAY_VER(i915) >= 13) { > + if (DISPLAY_VER(display) >= 13) { > aux_ch_map = adlp_aux_ch_map; > n_entries = ARRAY_SIZE(adlp_aux_ch_map); > } else if (IS_ALDERLAKE_S(i915)) { > @@ -3665,7 +3693,7 @@ static enum aux_ch map_aux_ch(struct drm_i915_private *i915, u8 aux_channel) > return i; > } > > - drm_dbg_kms(&i915->drm, > + drm_dbg_kms(display->drm, > "Ignoring alternate AUX CH: VBT claims AUX 0x%x, which is not valid for this platform\n", > aux_channel); > > @@ -3677,22 +3705,22 @@ enum aux_ch intel_bios_dp_aux_ch(const struct intel_bios_encoder_data *devdata) > if (!devdata || !devdata->child.aux_channel) > return AUX_CH_NONE; > > - return map_aux_ch(devdata->i915, devdata->child.aux_channel); > + return map_aux_ch(devdata->display, devdata->child.aux_channel); > } > > bool intel_bios_dp_has_shared_aux_ch(const struct intel_bios_encoder_data *devdata) > { > - struct drm_i915_private *i915; > + struct intel_display *display; > u8 aux_channel; > int count = 0; > > if (!devdata || !devdata->child.aux_channel) > return false; > > - i915 = devdata->i915; > + display = devdata->display; > aux_channel = devdata->child.aux_channel; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > if (intel_bios_encoder_supports_dp(devdata) && > aux_channel == devdata->child.aux_channel) > count++; > @@ -3703,18 +3731,18 @@ bool intel_bios_dp_has_shared_aux_ch(const struct intel_bios_encoder_data *devda > > int intel_bios_dp_boost_level(const struct intel_bios_encoder_data *devdata) > { > - if (!devdata || devdata->i915->display.vbt.version < 196 || !devdata->child.iboost) > + if (!devdata || devdata->display->vbt.version < 196 || !devdata->child.iboost) > return 0; > > - return translate_iboost(devdata->i915, devdata->child.dp_iboost_level); > + return translate_iboost(devdata->display, devdata->child.dp_iboost_level); > } > > int intel_bios_hdmi_boost_level(const struct intel_bios_encoder_data *devdata) > { > - if (!devdata || devdata->i915->display.vbt.version < 196 || !devdata->child.iboost) > + if (!devdata || devdata->display->vbt.version < 196 || !devdata->child.iboost) > return 0; > > - return translate_iboost(devdata->i915, devdata->child.hdmi_iboost_level); > + return translate_iboost(devdata->display, devdata->child.hdmi_iboost_level); > } > > int intel_bios_hdmi_ddc_pin(const struct intel_bios_encoder_data *devdata) > @@ -3722,17 +3750,17 @@ int intel_bios_hdmi_ddc_pin(const struct intel_bios_encoder_data *devdata) > if (!devdata || !devdata->child.ddc_pin) > return 0; > > - return map_ddc_pin(devdata->i915, devdata->child.ddc_pin); > + return map_ddc_pin(devdata->display, devdata->child.ddc_pin); > } > > bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata) > { > - return devdata->i915->display.vbt.version >= 195 && devdata->child.dp_usb_type_c; > + return devdata->display->vbt.version >= 195 && devdata->child.dp_usb_type_c; > } > > bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata) > { > - return devdata->i915->display.vbt.version >= 209 && devdata->child.tbt; > + return devdata->display->vbt.version >= 209 && devdata->child.tbt; > } > > bool intel_bios_encoder_lane_reversal(const struct intel_bios_encoder_data *devdata) > @@ -3746,11 +3774,11 @@ bool intel_bios_encoder_hpd_invert(const struct intel_bios_encoder_data *devdata > } > > const struct intel_bios_encoder_data * > -intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port) > +intel_bios_encoder_data_lookup(struct intel_display *display, enum port port) > { > struct intel_bios_encoder_data *devdata; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) { > + list_for_each_entry(devdata, &display->vbt.display_devices, node) { > if (intel_bios_encoder_port(devdata) == port) > return devdata; > } > @@ -3758,23 +3786,23 @@ intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port) > return NULL; > } > > -void intel_bios_for_each_encoder(struct drm_i915_private *i915, > - void (*func)(struct drm_i915_private *i915, > +void intel_bios_for_each_encoder(struct intel_display *display, > + void (*func)(struct intel_display *display, > const struct intel_bios_encoder_data *devdata)) > { > struct intel_bios_encoder_data *devdata; > > - list_for_each_entry(devdata, &i915->display.vbt.display_devices, node) > - func(i915, devdata); > + list_for_each_entry(devdata, &display->vbt.display_devices, node) > + func(display, devdata); > } > > static int intel_bios_vbt_show(struct seq_file *m, void *unused) > { > - struct drm_i915_private *i915 = m->private; > + struct intel_display *display = m->private; > const void *vbt; > size_t vbt_size; > > - vbt = intel_bios_get_vbt(i915, &vbt_size); > + vbt = intel_bios_get_vbt(display, &vbt_size); > > if (vbt) { > seq_write(m, vbt, vbt_size); > @@ -3786,10 +3814,10 @@ static int intel_bios_vbt_show(struct seq_file *m, void *unused) > > DEFINE_SHOW_ATTRIBUTE(intel_bios_vbt); > > -void intel_bios_debugfs_register(struct drm_i915_private *i915) > +void intel_bios_debugfs_register(struct intel_display *display) > { > - struct drm_minor *minor = i915->drm.primary; > + struct drm_minor *minor = display->drm->primary; > > debugfs_create_file("i915_vbt", 0444, minor->debugfs_root, > - i915, &intel_bios_vbt_fops); > + display, &intel_bios_vbt_fops); > } > diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h > index 06a51be4afd8..8b703f6cfe17 100644 > --- a/drivers/gpu/drm/i915/display/intel_bios.h > +++ b/drivers/gpu/drm/i915/display/intel_bios.h > @@ -33,9 +33,9 @@ > #include <linux/types.h> > > struct drm_edid; > -struct drm_i915_private; > struct intel_bios_encoder_data; > struct intel_crtc_state; > +struct intel_display; > struct intel_encoder; > struct intel_panel; > enum aux_ch; > @@ -232,28 +232,28 @@ struct mipi_pps_data { > u16 panel_power_cycle_delay; > } __packed; > > -void intel_bios_init(struct drm_i915_private *dev_priv); > -void intel_bios_init_panel_early(struct drm_i915_private *dev_priv, > +void intel_bios_init(struct intel_display *display); > +void intel_bios_init_panel_early(struct intel_display *display, > struct intel_panel *panel, > const struct intel_bios_encoder_data *devdata); > -void intel_bios_init_panel_late(struct drm_i915_private *dev_priv, > +void intel_bios_init_panel_late(struct intel_display *display, > struct intel_panel *panel, > const struct intel_bios_encoder_data *devdata, > const struct drm_edid *drm_edid); > void intel_bios_fini_panel(struct intel_panel *panel); > -void intel_bios_driver_remove(struct drm_i915_private *dev_priv); > -bool intel_bios_is_valid_vbt(struct drm_i915_private *i915, > +void intel_bios_driver_remove(struct intel_display *display); > +bool intel_bios_is_valid_vbt(struct intel_display *display, > const void *buf, size_t size); > -bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv); > -bool intel_bios_is_lvds_present(struct drm_i915_private *dev_priv, u8 *i2c_pin); > -bool intel_bios_is_port_present(struct drm_i915_private *dev_priv, enum port port); > -bool intel_bios_is_dsi_present(struct drm_i915_private *dev_priv, enum port *port); > +bool intel_bios_is_tv_present(struct intel_display *display); > +bool intel_bios_is_lvds_present(struct intel_display *display, u8 *i2c_pin); > +bool intel_bios_is_port_present(struct intel_display *display, enum port port); > +bool intel_bios_is_dsi_present(struct intel_display *display, enum port *port); > bool intel_bios_get_dsc_params(struct intel_encoder *encoder, > struct intel_crtc_state *crtc_state, > int dsc_max_bpc); > > const struct intel_bios_encoder_data * > -intel_bios_encoder_data_lookup(struct drm_i915_private *i915, enum port port); > +intel_bios_encoder_data_lookup(struct intel_display *display, 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); > @@ -277,10 +277,10 @@ int intel_bios_hdmi_ddc_pin(const struct intel_bios_encoder_data *devdata); > int intel_bios_hdmi_level_shift(const struct intel_bios_encoder_data *devdata); > int intel_bios_hdmi_max_tmds_clock(const struct intel_bios_encoder_data *devdata); > > -void intel_bios_for_each_encoder(struct drm_i915_private *i915, > - void (*func)(struct drm_i915_private *i915, > +void intel_bios_for_each_encoder(struct intel_display *display, > + void (*func)(struct intel_display *display, > const struct intel_bios_encoder_data *devdata)); > > -void intel_bios_debugfs_register(struct drm_i915_private *i915); > +void intel_bios_debugfs_register(struct intel_display *display); > > #endif /* _INTEL_BIOS_H_ */ > diff --git a/drivers/gpu/drm/i915/display/intel_combo_phy.c b/drivers/gpu/drm/i915/display/intel_combo_phy.c > index 143d66951631..3252dab56430 100644 > --- a/drivers/gpu/drm/i915/display/intel_combo_phy.c > +++ b/drivers/gpu/drm/i915/display/intel_combo_phy.c > @@ -159,9 +159,11 @@ static bool icl_combo_phy_enabled(struct drm_i915_private *dev_priv, > > static bool ehl_vbt_ddi_d_present(struct drm_i915_private *i915) > { > - bool ddi_a_present = intel_bios_is_port_present(i915, PORT_A); > - bool ddi_d_present = intel_bios_is_port_present(i915, PORT_D); > - bool dsi_present = intel_bios_is_dsi_present(i915, NULL); > + struct intel_display *display = &i915->display; > + > + bool ddi_a_present = intel_bios_is_port_present(display, PORT_A); > + bool ddi_d_present = intel_bios_is_port_present(display, PORT_D); > + bool dsi_present = intel_bios_is_dsi_present(display, NULL); > > /* > * VBT's 'dvo port' field for child devices references the DDI, not > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c > index a07aca96e551..7414d767b8dc 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.c > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c > @@ -4853,9 +4853,10 @@ static bool port_in_use(struct drm_i915_private *i915, enum port port) > return false; > } > > -void intel_ddi_init(struct drm_i915_private *dev_priv, > +void intel_ddi_init(struct intel_display *display, > const struct intel_bios_encoder_data *devdata) > { > + struct drm_i915_private *dev_priv = to_i915(display->drm); > struct intel_digital_port *dig_port; > struct intel_encoder *encoder; > bool init_hdmi, init_dp; > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.h b/drivers/gpu/drm/i915/display/intel_ddi.h > index 434de7196875..6d85422bdefe 100644 > --- a/drivers/gpu/drm/i915/display/intel_ddi.h > +++ b/drivers/gpu/drm/i915/display/intel_ddi.h > @@ -15,6 +15,7 @@ struct intel_bios_encoder_data; > struct intel_connector; > struct intel_crtc; > struct intel_crtc_state; > +struct intel_display; > struct intel_dp; > struct intel_dpll_hw_state; > struct intel_encoder; > @@ -53,7 +54,7 @@ void hsw_prepare_dp_ddi_buffers(struct intel_encoder *encoder, > const struct intel_crtc_state *crtc_state); > void intel_wait_ddi_buf_idle(struct drm_i915_private *dev_priv, > enum port port); > -void intel_ddi_init(struct drm_i915_private *dev_priv, > +void intel_ddi_init(struct intel_display *display, > const struct intel_bios_encoder_data *devdata); > bool intel_ddi_get_hw_state(struct intel_encoder *encoder, enum pipe *pipe); > void intel_ddi_enable_transcoder_func(struct intel_encoder *encoder, > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c > index 01a5faa3fea5..48241075eeba 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -7785,6 +7785,7 @@ bool assert_port_valid(struct drm_i915_private *i915, enum port port) > > void intel_setup_outputs(struct drm_i915_private *dev_priv) > { > + struct intel_display *display = &dev_priv->display; > struct intel_encoder *encoder; > bool dpd_is_edp = false; > > @@ -7797,7 +7798,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv) > if (intel_ddi_crt_present(dev_priv)) > intel_crt_init(dev_priv); > > - intel_bios_for_each_encoder(dev_priv, intel_ddi_init); > + intel_bios_for_each_encoder(display, intel_ddi_init); > > if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) > vlv_dsi_init(dev_priv); > @@ -7859,14 +7860,14 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv) > * HDMI ports that the VBT claim are DP or eDP. > */ > has_edp = intel_dp_is_port_edp(dev_priv, PORT_B); > - has_port = intel_bios_is_port_present(dev_priv, PORT_B); > + has_port = intel_bios_is_port_present(display, PORT_B); > if (intel_de_read(dev_priv, VLV_DP_B) & DP_DETECTED || has_port) > has_edp &= g4x_dp_init(dev_priv, VLV_DP_B, PORT_B); > if ((intel_de_read(dev_priv, VLV_HDMIB) & SDVO_DETECTED || has_port) && !has_edp) > g4x_hdmi_init(dev_priv, VLV_HDMIB, PORT_B); > > has_edp = intel_dp_is_port_edp(dev_priv, PORT_C); > - has_port = intel_bios_is_port_present(dev_priv, PORT_C); > + has_port = intel_bios_is_port_present(display, PORT_C); > if (intel_de_read(dev_priv, VLV_DP_C) & DP_DETECTED || has_port) > has_edp &= g4x_dp_init(dev_priv, VLV_DP_C, PORT_C); > if ((intel_de_read(dev_priv, VLV_HDMIC) & SDVO_DETECTED || has_port) && !has_edp) > @@ -7877,7 +7878,7 @@ void intel_setup_outputs(struct drm_i915_private *dev_priv) > * eDP not supported on port D, > * so no need to worry about it > */ > - has_port = intel_bios_is_port_present(dev_priv, PORT_D); > + has_port = intel_bios_is_port_present(display, PORT_D); > if (intel_de_read(dev_priv, CHV_DP_D) & DP_DETECTED || has_port) > g4x_dp_init(dev_priv, CHV_DP_D, PORT_D); > if (intel_de_read(dev_priv, CHV_HDMID) & SDVO_DETECTED || has_port) > diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c > index ac8ad4a40b96..a55c9fac1ca4 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c > +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c > @@ -1061,7 +1061,7 @@ void intel_display_debugfs_register(struct drm_i915_private *i915) > ARRAY_SIZE(intel_display_debugfs_list), > minor->debugfs_root, minor); > > - intel_bios_debugfs_register(i915); > + intel_bios_debugfs_register(display); > intel_cdclk_debugfs_register(i915); > intel_dmc_debugfs_register(i915); > intel_fbc_debugfs_register(display); > diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c > index a2666b69834e..328d8b5a6b66 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_driver.c > +++ b/drivers/gpu/drm/i915/display/intel_display_driver.c > @@ -217,7 +217,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915) > return ret; > } > > - intel_bios_init(i915); > + intel_bios_init(display); > > ret = intel_vga_register(i915); > if (ret) > @@ -275,7 +275,7 @@ int intel_display_driver_probe_noirq(struct drm_i915_private *i915) > cleanup_vga: > intel_vga_unregister(i915); > cleanup_bios: > - intel_bios_driver_remove(i915); > + intel_bios_driver_remove(display); > > return ret; > } > @@ -615,13 +615,15 @@ void intel_display_driver_remove_noirq(struct drm_i915_private *i915) > /* part #3: call after gem init */ > void intel_display_driver_remove_nogem(struct drm_i915_private *i915) > { > + struct intel_display *display = &i915->display; > + > intel_dmc_fini(i915); > > intel_power_domains_driver_remove(i915); > > intel_vga_unregister(i915); > > - intel_bios_driver_remove(i915); > + intel_bios_driver_remove(display); > } > > void intel_display_driver_unregister(struct drm_i915_private *i915) > diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c > index 6cc1cc5e94d5..3f53db68c44c 100644 > --- a/drivers/gpu/drm/i915/display/intel_display_irq.c > +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c > @@ -1690,6 +1690,7 @@ static void icp_irq_postinstall(struct drm_i915_private *i915); > > void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv) > { > + struct intel_display *display = &dev_priv->display; > struct intel_uncore *uncore = &dev_priv->uncore; > > u32 de_pipe_masked = gen8_de_pipe_fault_mask(dev_priv) | > @@ -1724,7 +1725,7 @@ void gen8_de_irq_postinstall(struct drm_i915_private *dev_priv) > } else if (DISPLAY_VER(dev_priv) >= 11) { > enum port port; > > - if (intel_bios_is_dsi_present(dev_priv, &port)) > + if (intel_bios_is_dsi_present(display, &port)) > de_port_masked |= DSI0_TE | DSI1_TE; > } > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c > index 86412ae7b48f..2e5a4e2218c2 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp.c > +++ b/drivers/gpu/drm/i915/display/intel_dp.c > @@ -6385,8 +6385,9 @@ static bool _intel_dp_is_port_edp(struct drm_i915_private *dev_priv, > > bool intel_dp_is_port_edp(struct drm_i915_private *i915, enum port port) > { > + struct intel_display *display = &i915->display; > const struct intel_bios_encoder_data *devdata = > - intel_bios_encoder_data_lookup(i915, port); > + intel_bios_encoder_data_lookup(display, port); > > return _intel_dp_is_port_edp(i915, devdata, port); > } > @@ -6489,6 +6490,7 @@ static void intel_edp_backlight_setup(struct intel_dp *intel_dp, > static bool intel_edp_init_connector(struct intel_dp *intel_dp, > struct intel_connector *intel_connector) > { > + struct intel_display *display = to_intel_display(intel_dp); > struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); > struct drm_connector *connector = &intel_connector->base; > struct drm_display_mode *fixed_mode; > @@ -6514,7 +6516,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, > return false; > } > > - intel_bios_init_panel_early(dev_priv, &intel_connector->panel, > + intel_bios_init_panel_early(display, &intel_connector->panel, > encoder->devdata); > > if (!intel_pps_init(intel_dp)) { > @@ -6611,7 +6613,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, > drm_edid = ERR_PTR(-ENOENT); > } > > - intel_bios_init_panel_late(dev_priv, &intel_connector->panel, encoder->devdata, > + intel_bios_init_panel_late(display, &intel_connector->panel, encoder->devdata, > IS_ERR(drm_edid) ? NULL : drm_edid); > > intel_panel_add_edid_fixed_modes(intel_connector, true); > diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c > index 9f018503d4fd..fb4ed9f7855b 100644 > --- a/drivers/gpu/drm/i915/display/intel_lvds.c > +++ b/drivers/gpu/drm/i915/display/intel_lvds.c > @@ -838,6 +838,7 @@ static void intel_lvds_add_properties(struct drm_connector *connector) > */ > void intel_lvds_init(struct drm_i915_private *i915) > { > + struct intel_display *display = &i915->display; > struct intel_lvds_encoder *lvds_encoder; > struct intel_connector *connector; > const struct drm_edid *drm_edid; > @@ -872,7 +873,7 @@ void intel_lvds_init(struct drm_i915_private *i915) > } > > ddc_pin = GMBUS_PIN_PANEL; > - if (!intel_bios_is_lvds_present(i915, &ddc_pin)) { > + if (!intel_bios_is_lvds_present(display, &ddc_pin)) { > if ((lvds & LVDS_PORT_EN) == 0) { > drm_dbg_kms(&i915->drm, > "LVDS is not present in VBT\n"); > @@ -966,7 +967,7 @@ void intel_lvds_init(struct drm_i915_private *i915) > } else { > drm_edid = ERR_PTR(-ENOENT); > } > - intel_bios_init_panel_late(i915, &connector->panel, NULL, > + intel_bios_init_panel_late(display, &connector->panel, NULL, > IS_ERR(drm_edid) ? NULL : drm_edid); > > /* Try EDID first */ > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c > index 0cf6c0711dae..d3d0b4b2e088 100644 > --- a/drivers/gpu/drm/i915/display/intel_opregion.c > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c > @@ -870,7 +870,6 @@ static const struct dmi_system_id intel_no_opregion_vbt[] = { > > int intel_opregion_setup(struct intel_display *display) > { > - struct drm_i915_private *i915 = to_i915(display->drm); > struct intel_opregion *opregion; > struct pci_dev *pdev = to_pci_dev(display->drm->dev); > u32 asls, mboxes; > @@ -991,7 +990,7 @@ int intel_opregion_setup(struct intel_display *display) > > vbt = opregion->rvda; > vbt_size = opregion->asle->rvds; > - if (intel_bios_is_valid_vbt(i915, vbt, vbt_size)) { > + if (intel_bios_is_valid_vbt(display, vbt, vbt_size)) { > drm_dbg_kms(display->drm, > "Found valid VBT in ACPI OpRegion (RVDA)\n"); > opregion->vbt = vbt; > @@ -1016,7 +1015,7 @@ int intel_opregion_setup(struct intel_display *display) > vbt_size = (mboxes & MBOX_ASLE_EXT) ? > OPREGION_ASLE_EXT_OFFSET : OPREGION_SIZE; > vbt_size -= OPREGION_VBT_OFFSET; > - if (intel_bios_is_valid_vbt(i915, vbt, vbt_size)) { > + if (intel_bios_is_valid_vbt(display, vbt, vbt_size)) { > drm_dbg_kms(display->drm, > "Found valid VBT in ACPI OpRegion (Mailbox #4)\n"); > opregion->vbt = vbt; > diff --git a/drivers/gpu/drm/i915/display/intel_sdvo.c b/drivers/gpu/drm/i915/display/intel_sdvo.c > index 4cfa27ca8c22..7cc519b402e9 100644 > --- a/drivers/gpu/drm/i915/display/intel_sdvo.c > +++ b/drivers/gpu/drm/i915/display/intel_sdvo.c > @@ -2919,6 +2919,7 @@ intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, u16 type) > static bool > intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type) > { > + struct intel_display *display = to_intel_display(&intel_sdvo->base); > struct drm_encoder *encoder = &intel_sdvo->base.base; > struct drm_i915_private *i915 = to_i915(encoder->dev); > struct drm_connector *connector; > @@ -2946,7 +2947,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, u16 type) > if (!intel_sdvo_create_enhance_property(intel_sdvo, intel_sdvo_connector)) > goto err; > > - intel_bios_init_panel_late(i915, &intel_connector->panel, NULL, NULL); > + intel_bios_init_panel_late(display, &intel_connector->panel, NULL, NULL); > > /* > * Fetch modes from VBT. For SDVO prefer the VBT mode since some > diff --git a/drivers/gpu/drm/i915/display/intel_tv.c b/drivers/gpu/drm/i915/display/intel_tv.c > index 9df0f1263913..bfc43bda8532 100644 > --- a/drivers/gpu/drm/i915/display/intel_tv.c > +++ b/drivers/gpu/drm/i915/display/intel_tv.c > @@ -1930,6 +1930,7 @@ static void intel_tv_add_properties(struct drm_connector *connector) > void > intel_tv_init(struct drm_i915_private *dev_priv) > { > + struct intel_display *display = &dev_priv->display; > struct drm_connector *connector; > struct intel_tv *intel_tv; > struct intel_encoder *intel_encoder; > @@ -1939,7 +1940,7 @@ intel_tv_init(struct drm_i915_private *dev_priv) > if ((intel_de_read(dev_priv, TV_CTL) & TV_FUSE_STATE_MASK) == TV_FUSE_STATE_DISABLED) > return; > > - if (!intel_bios_is_tv_present(dev_priv)) { > + if (!intel_bios_is_tv_present(display)) { > drm_dbg_kms(&dev_priv->drm, "Integrated TV is not present.\n"); > return; > } > diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c > index eae5b5e09aa8..248bab691181 100644 > --- a/drivers/gpu/drm/i915/display/vlv_dsi.c > +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c > @@ -1880,6 +1880,7 @@ static const struct dmi_system_id vlv_dsi_dmi_quirk_table[] = { > > void vlv_dsi_init(struct drm_i915_private *dev_priv) > { > + struct intel_display *display = &dev_priv->display; > struct intel_dsi *intel_dsi; > struct intel_encoder *encoder; > struct intel_connector *connector; > @@ -1891,7 +1892,7 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv) > drm_dbg_kms(&dev_priv->drm, "\n"); > > /* There is no detection method for MIPI so rely on VBT */ > - if (!intel_bios_is_dsi_present(dev_priv, &port)) > + if (!intel_bios_is_dsi_present(display, &port)) > return; > > if (IS_GEMINILAKE(dev_priv) || IS_BROXTON(dev_priv)) > @@ -1946,7 +1947,7 @@ void vlv_dsi_init(struct drm_i915_private *dev_priv) > > intel_dsi->panel_power_off_time = ktime_get_boottime(); > > - intel_bios_init_panel_late(dev_priv, &connector->panel, NULL, NULL); > + intel_bios_init_panel_late(display, &connector->panel, NULL, NULL); > > if (connector->panel.vbt.dsi.config->dual_link) > intel_dsi->ports = BIT(PORT_A) | BIT(PORT_C); > -- > 2.39.2 >