All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2 01/22] drm/i915/bios: Use the cached BDB version
Date: Thu, 07 Apr 2022 13:10:08 +0300	[thread overview]
Message-ID: <87mtgx5hmn.fsf@intel.com> (raw)
In-Reply-To: <20220405173410.11436-2-ville.syrjala@linux.intel.com>

On Tue, 05 Apr 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> We have the BDB version cached, use it. We're going to have to
> start doing some of the BDB block parsing later, at which point
> we may no longer have the VBT around anymore (we free it at the
> end of intel_bios_init() when it didn't come via OpRegion).
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_bios.c | 54 +++++++++++------------
>  1 file changed, 27 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 556169ce0544..5518f4cfa1b1 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -415,7 +415,7 @@ parse_panel_dtd(struct drm_i915_private *i915,
>  	 * try the new generic DTD block first on VBT >= 229, but still fall
>  	 * back to trying the old LFP block if that fails.
>  	 */
> -	if (bdb->version >= 229)
> +	if (i915->vbt.version >= 229)
>  		parse_generic_dtd(i915, bdb);
>  	if (!i915->vbt.lfp_lvds_vbt_mode)
>  		parse_lfp_panel_dtd(i915, bdb);
> @@ -452,12 +452,12 @@ parse_lfp_backlight(struct drm_i915_private *i915,
>  	}
>  
>  	i915->vbt.backlight.type = INTEL_BACKLIGHT_DISPLAY_DDI;
> -	if (bdb->version >= 191) {
> +	if (i915->vbt.version >= 191) {
>  		size_t exp_size;
>  
> -		if (bdb->version >= 236)
> +		if (i915->vbt.version >= 236)
>  			exp_size = sizeof(struct bdb_lfp_backlight_data);
> -		else if (bdb->version >= 234)
> +		else if (i915->vbt.version >= 234)
>  			exp_size = EXP_BDB_LFP_BL_DATA_SIZE_REV_234;
>  		else
>  			exp_size = EXP_BDB_LFP_BL_DATA_SIZE_REV_191;
> @@ -474,14 +474,14 @@ parse_lfp_backlight(struct drm_i915_private *i915,
>  	i915->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
>  	i915->vbt.backlight.active_low_pwm = entry->active_low_pwm;
>  
> -	if (bdb->version >= 234) {
> +	if (i915->vbt.version >= 234) {
>  		u16 min_level;
>  		bool scale;
>  
>  		level = backlight_data->brightness_level[panel_type].level;
>  		min_level = backlight_data->brightness_min_level[panel_type].level;
>  
> -		if (bdb->version >= 236)
> +		if (i915->vbt.version >= 236)
>  			scale = backlight_data->brightness_precision_bits[panel_type] == 16;
>  		else
>  			scale = level > 255;
> @@ -581,7 +581,7 @@ parse_general_features(struct drm_i915_private *i915,
>  
>  	i915->vbt.int_tv_support = general->int_tv_support;
>  	/* int_crt_support can't be trusted on earlier platforms */
> -	if (bdb->version >= 155 &&
> +	if (i915->vbt.version >= 155 &&
>  	    (HAS_DDI(i915) || IS_VALLEYVIEW(i915)))
>  		i915->vbt.int_crt_support = general->int_crt_support;
>  	i915->vbt.lvds_use_ssc = general->enable_ssc;
> @@ -589,7 +589,7 @@ parse_general_features(struct drm_i915_private *i915,
>  		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) {
> +	if (i915->vbt.version >= 181) {
>  		i915->vbt.orientation = general->rotate_180 ?
>  			DRM_MODE_PANEL_ORIENTATION_BOTTOM_UP :
>  			DRM_MODE_PANEL_ORIENTATION_NORMAL;
> @@ -597,7 +597,7 @@ parse_general_features(struct drm_i915_private *i915,
>  		i915->vbt.orientation = DRM_MODE_PANEL_ORIENTATION_UNKNOWN;
>  	}
>  
> -	if (bdb->version >= 249 && general->afc_startup_config) {
> +	if (i915->vbt.version >= 249 && general->afc_startup_config) {
>  		i915->vbt.override_afc_startup = true;
>  		i915->vbt.override_afc_startup_val = general->afc_startup_config == 0x1 ? 0x0 : 0x7;
>  	}
> @@ -724,13 +724,13 @@ 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 (bdb->version >= 134 &&
> +		if (i915->vbt.version >= 134 &&
>  		    driver->lvds_config != BDB_DRIVER_FEATURE_INT_LVDS &&
>  		    driver->lvds_config != BDB_DRIVER_FEATURE_INT_SDVO_LVDS)
>  			i915->vbt.int_lvds_support = 0;
>  	}
>  
> -	if (bdb->version < 228) {
> +	if (i915->vbt.version < 228) {
>  		drm_dbg_kms(&i915->drm, "DRRS State Enabled:%d\n",
>  			    driver->drrs_enabled);
>  		/*
> @@ -753,7 +753,7 @@ parse_power_conservation_features(struct drm_i915_private *i915,
>  	const struct bdb_lfp_power *power;
>  	u8 panel_type = i915->vbt.panel_type;
>  
> -	if (bdb->version < 228)
> +	if (i915->vbt.version < 228)
>  		return;
>  
>  	power = find_section(bdb, BDB_LFP_POWER);
> @@ -771,7 +771,7 @@ parse_power_conservation_features(struct drm_i915_private *i915,
>  	if (!(power->drrs & BIT(panel_type)))
>  		i915->vbt.drrs_type = DRRS_TYPE_NONE;
>  
> -	if (bdb->version >= 232)
> +	if (i915->vbt.version >= 232)
>  		i915->vbt.edp.hobl = power->hobl & BIT(panel_type);
>  }
>  
> @@ -876,7 +876,7 @@ parse_edp(struct drm_i915_private *i915, const struct bdb_header *bdb)
>  		break;
>  	}
>  
> -	if (bdb->version >= 173) {
> +	if (i915->vbt.version >= 173) {
>  		u8 vswing;
>  
>  		/* Don't read from VBT if module parameter has valid value*/
> @@ -919,7 +919,7 @@ parse_psr(struct drm_i915_private *i915, const struct bdb_header *bdb)
>  	 * New psr options 0=500us, 1=100us, 2=2500us, 3=0us
>  	 * Old decimal value is wake up time in multiples of 100 us.
>  	 */
> -	if (bdb->version >= 205 &&
> +	if (i915->vbt.version >= 205 &&
>  	    (DISPLAY_VER(i915) >= 9 && !IS_BROXTON(i915))) {
>  		switch (psr_table->tp1_wakeup_time) {
>  		case 0:
> @@ -965,7 +965,7 @@ parse_psr(struct drm_i915_private *i915, const struct bdb_header *bdb)
>  		i915->vbt.psr.tp2_tp3_wakeup_time_us = psr_table->tp2_tp3_wakeup_time * 100;
>  	}
>  
> -	if (bdb->version >= 226) {
> +	if (i915->vbt.version >= 226) {
>  		u32 wakeup_time = psr->psr2_tp2_tp3_wakeup_time;
>  
>  		wakeup_time = (wakeup_time >> (2 * panel_type)) & 0x3;
> @@ -1085,7 +1085,7 @@ parse_mipi_config(struct drm_i915_private *i915,
>  		return;
>  	}
>  
> -	parse_dsi_backlight_ports(i915, bdb->version, port);
> +	parse_dsi_backlight_ports(i915, i915->vbt.version, port);
>  
>  	/* FIXME is the 90 vs. 270 correct? */
>  	switch (config->rotation) {
> @@ -1448,7 +1448,7 @@ parse_compression_parameters(struct drm_i915_private *i915,
>  	u16 block_size;
>  	int index;
>  
> -	if (bdb->version < 198)
> +	if (i915->vbt.version < 198)
>  		return;
>  
>  	params = find_section(bdb, BDB_COMPRESSION_PARAMETERS);
> @@ -2117,31 +2117,31 @@ parse_general_definitions(struct drm_i915_private *i915,
>  	if (intel_gmbus_is_valid_pin(i915, bus_pin))
>  		i915->vbt.crt_ddc_pin = bus_pin;
>  
> -	if (bdb->version < 106) {
> +	if (i915->vbt.version < 106) {
>  		expected_size = 22;
> -	} else if (bdb->version < 111) {
> +	} else if (i915->vbt.version < 111) {
>  		expected_size = 27;
> -	} else if (bdb->version < 195) {
> +	} else if (i915->vbt.version < 195) {
>  		expected_size = LEGACY_CHILD_DEVICE_CONFIG_SIZE;
> -	} else if (bdb->version == 195) {
> +	} else if (i915->vbt.version == 195) {
>  		expected_size = 37;
> -	} else if (bdb->version <= 215) {
> +	} else if (i915->vbt.version <= 215) {
>  		expected_size = 38;
> -	} else if (bdb->version <= 237) {
> +	} else if (i915->vbt.version <= 237) {
>  		expected_size = 39;
>  	} else {
>  		expected_size = sizeof(*child);
>  		BUILD_BUG_ON(sizeof(*child) < 39);
>  		drm_dbg(&i915->drm,
>  			"Expected child device config size for VBT version %u not known; assuming %u\n",
> -			bdb->version, expected_size);
> +			i915->vbt.version, expected_size);
>  	}
>  
>  	/* Flag an error for unexpected size, but continue anyway. */
>  	if (defs->child_dev_size != expected_size)
>  		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);
> +			defs->child_dev_size, expected_size, i915->vbt.version);
>  
>  	/* The legacy sized child device config is the minimum we need. */
>  	if (defs->child_dev_size < LEGACY_CHILD_DEVICE_CONFIG_SIZE) {
> @@ -2497,7 +2497,7 @@ void intel_bios_init(struct drm_i915_private *i915)
>  
>  	drm_dbg_kms(&i915->drm,
>  		    "VBT signature \"%.*s\", BDB version %d\n",
> -		    (int)sizeof(vbt->signature), vbt->signature, bdb->version);
> +		    (int)sizeof(vbt->signature), vbt->signature, i915->vbt.version);
>  
>  	/* Grab useful general definitions */
>  	parse_general_features(i915, bdb);

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2022-04-07 10:10 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-05 17:33 [Intel-gfx] [PATCH v2 00/22] drm/i915/bios: Rework BDB block handling and PNPID->panel_type matching Ville Syrjala
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 01/22] drm/i915/bios: Use the cached BDB version Ville Syrjala
2022-04-07 10:10   ` Jani Nikula [this message]
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 02/22] drm/i915/bios: Make copies of VBT data blocks Ville Syrjala
2022-04-06 13:38   ` [Intel-gfx] [PATCH v3 " Ville Syrjala
2022-04-07 10:23     ` Jani Nikula
2022-04-07 11:18       ` Ville Syrjälä
2022-04-07 12:06         ` Jani Nikula
2022-04-07 12:23           ` Ville Syrjälä
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 03/22] drm/i915/bios: Use the copy of the LFP data table always Ville Syrjala
2022-04-07 10:36   ` Jani Nikula
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 04/22] drm/i915/bios: Validate LFP data table pointers Ville Syrjala
2022-04-07 16:07   ` Jani Nikula
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 05/22] drm/i915/bios: Trust the LFP data pointers Ville Syrjala
2022-04-07 16:12   ` Jani Nikula
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 06/22] drm/i915/bios: Validate the panel_name table Ville Syrjala
2022-04-07 16:14   ` Jani Nikula
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 07/22] drm/i915/bios: Reorder panel DTD parsing Ville Syrjala
2022-04-07 16:21   ` Jani Nikula
2022-04-08 13:59     ` Ville Syrjälä
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 08/22] drm/i915/bios: Generate LFP data table pointers if the VBT lacks them Ville Syrjala
2022-04-06 13:39   ` [Intel-gfx] [PATCH v3 " Ville Syrjala
2022-04-07 12:24     ` Jani Nikula
2022-04-07 12:29       ` Ville Syrjälä
2022-04-07 16:53     ` Jani Nikula
2022-04-07 18:18       ` Jani Nikula
2022-04-12  8:19       ` Ville Syrjälä
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 09/22] drm/i915/bios: Get access to the tail end of the LFP data block Ville Syrjala
2022-04-06 13:40   ` [Intel-gfx] [PATCH v3 " Ville Syrjala
2022-04-07 17:07     ` Jani Nikula
2022-04-08 14:04       ` Ville Syrjälä
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 10/22] drm/i915/bios: Assume panel_type==0 if the VBT has bogus data Ville Syrjala
2022-04-07 17:11   ` Jani Nikula
2022-04-05 17:33 ` [Intel-gfx] [PATCH v2 11/22] drm/i915/bios: Split parse_driver_features() into two parts Ville Syrjala
2022-04-07 17:13   ` Jani Nikula
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 12/22] drm/i915/bios: Split VBT parsing to global vs. panel specific parts Ville Syrjala
2022-04-07 17:23   ` Jani Nikula
2022-04-08 14:09     ` Ville Syrjälä
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 13/22] drm/i915/pps: Split PPS init+sanitize in two Ville Syrjala
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 14/22] drm/i915/pps: Reinit PPS delays after VBT has been fully parsed Ville Syrjala
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 15/22] drm/i915/bios: Do panel specific VBT parsing later Ville Syrjala
2022-04-06 19:05   ` [Intel-gfx] [PATCH v4 " Ville Syrjala
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 16/22] drm/i915/bios: Extract get_panel_type() Ville Syrjala
2022-04-07 17:26   ` Jani Nikula
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 17/22] drm/i915/bios: Refactor panel_type code Ville Syrjala
2022-04-07 17:49   ` Jani Nikula
2022-04-08 14:13     ` Ville Syrjälä
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 18/22] drm/i915/bios: Determine panel type via PNPID match Ville Syrjala
2022-04-06 19:09   ` [Intel-gfx] [PATCH v4 " Ville Syrjala
2022-04-07 17:55     ` Jani Nikula
2022-04-08 14:51       ` Ville Syrjälä
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 19/22] drm/i915/bios: Parse the seamless DRRS min refresh rate Ville Syrjala
2022-04-07 17:56   ` Jani Nikula
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 20/22] drm/i915: Respect VBT " Ville Syrjala
2022-04-07 18:01   ` Jani Nikula
2022-04-05 17:34 ` [PATCH v2 21/22] drm/edid: Extract drm_edid_decode_mfg_id() Ville Syrjala
2022-04-05 17:34   ` [Intel-gfx] " Ville Syrjala
2022-04-07 18:02   ` Jani Nikula
2022-04-05 17:34 ` [Intel-gfx] [PATCH v2 22/22] drm/i915/bios: Dump PNPID and panel name Ville Syrjala
2022-04-07 18:07   ` Jani Nikula
2022-04-08 14:52     ` Ville Syrjälä
2022-04-05 22:55 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Rework BDB block handling and PNPID->panel_type matching Patchwork
2022-04-05 22:57 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-04-05 23:02 ` [Intel-gfx] ✗ Fi.CI.DOCS: " Patchwork
2022-04-05 23:27 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2022-04-06 18:17 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Rework BDB block handling and PNPID->panel_type matching (rev4) Patchwork
2022-04-06 18:19 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-04-06 18:50 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-04-07  0:11 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/bios: Rework BDB block handling and PNPID->panel_type matching (rev6) Patchwork
2022-04-07  0:14 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-04-07  0:44 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-04-07  8:37 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mtgx5hmn.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.