All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2 12/22] drm/i915/bios: Split VBT parsing to global vs. panel specific parts
Date: Fri, 8 Apr 2022 17:09:41 +0300	[thread overview]
Message-ID: <YlBCJRD8bMOWL/KI@intel.com> (raw)
In-Reply-To: <87czhs4xl4.fsf@intel.com>

On Thu, Apr 07, 2022 at 08:23:03PM +0300, Jani Nikula wrote:
> On Tue, 05 Apr 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Parsing the panel specific data from VBT is currently happening
> > too early. Split the whole thing into global vs. panel specific
> > parts so that we can start doing the panel specific parsing at
> > a later time.
> 
> Might want to mention panel_type here somewhere, that's basically the
> split, right?

Yep. I'll try to clarify the commit msg a bit.

> 
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_bios.c    | 50 +++++++++++++-------
> >  drivers/gpu/drm/i915/display/intel_bios.h    |  1 +
> >  drivers/gpu/drm/i915/display/intel_display.c |  1 +
> >  3 files changed, 35 insertions(+), 17 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> > index 1a7f1aa79827..da2b1932e10d 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.c
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> > @@ -723,6 +723,9 @@ parse_generic_dtd(struct drm_i915_private *i915)
> >  	struct drm_display_mode *panel_fixed_mode;
> >  	int num_dtd;
> >  
> > +	if (i915->vbt.lfp_lvds_vbt_mode)
> > +		return;
> > +
> >  	generic_dtd = find_section(i915, BDB_GENERIC_DTD);
> >  	if (!generic_dtd)
> >  		return;
> > @@ -891,6 +894,9 @@ parse_sdvo_panel_data(struct drm_i915_private *i915)
> >  	struct drm_display_mode *panel_fixed_mode;
> >  	int index;
> >  
> > +	if (i915->vbt.sdvo_lvds_vbt_mode)
> > +		return;
> > +
> >  	index = i915->params.vbt_sdvo_panel_type;
> >  	if (index == -2) {
> >  		drm_dbg_kms(&i915->drm,
> > @@ -1419,6 +1425,9 @@ parse_mipi_config(struct drm_i915_private *i915)
> >  	int panel_type = i915->vbt.panel_type;
> >  	enum port port;
> >  
> > +	if (i915->vbt.dsi.config)
> > +		return;
> > +
> >  	/* parse MIPI blocks only if LFP type is MIPI */
> >  	if (!intel_bios_is_dsi_present(i915, &port))
> >  		return;
> > @@ -1739,6 +1748,9 @@ parse_mipi_sequence(struct drm_i915_private *i915)
> >  	u8 *data;
> >  	int index = 0;
> >  
> > +	if (i915->vbt.dsi.data)
> > +		return;
> > +
> 
> All of the above checks to (presumably) allow calling
> intel_bios_init_panel() multiple times feel a bit out of place here. At
> the very least need a mention in the commit message.

I can split that out for clarity. I didn't have these originally but
given the current reliance on the i915->vbt singleton I got a bit
scared what would happen on some weird machines with multiple panels.
IIRC some kind of native LVDS + SDVO LVDS machines may have existed
at some point.

Plenty of refactoring left here to split the parsed data to proper
per-panel things...

> 
> Regardless,
> 
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
> 
> 
> >  	/* Only our generic panel driver uses the sequence block. */
> >  	if (i915->vbt.dsi.panel_id != MIPI_DSI_GENERIC_PANEL_ID)
> >  		return;
> > @@ -2878,6 +2890,27 @@ void intel_bios_init(struct drm_i915_private *i915)
> >  	/* Grab useful general definitions */
> >  	parse_general_features(i915);
> >  	parse_general_definitions(i915);
> > +	parse_driver_features(i915);
> > +
> > +	/* Depends on child device list */
> > +	parse_compression_parameters(i915);
> > +
> > +out:
> > +	if (!vbt) {
> > +		drm_info(&i915->drm,
> > +			 "Failed to find VBIOS tables (VBT)\n");
> > +		init_vbt_missing_defaults(i915);
> > +	}
> > +
> > +	/* Further processing on pre-parsed or generated child device data */
> > +	parse_sdvo_device_mapping(i915);
> > +	parse_ddi_ports(i915);
> > +
> > +	kfree(oprom_vbt);
> > +}
> > +
> > +void intel_bios_init_panel(struct drm_i915_private *i915)
> > +{
> >  	parse_panel_options(i915);
> >  	/*
> >  	 * Older VBTs provided DTD information for internal displays through
> > @@ -2892,29 +2925,12 @@ void intel_bios_init(struct drm_i915_private *i915)
> >  	parse_lfp_data(i915);
> >  	parse_lfp_backlight(i915);
> >  	parse_sdvo_panel_data(i915);
> > -	parse_driver_features(i915);
> >  	parse_panel_driver_features(i915);
> >  	parse_power_conservation_features(i915);
> >  	parse_edp(i915);
> >  	parse_psr(i915);
> >  	parse_mipi_config(i915);
> >  	parse_mipi_sequence(i915);
> > -
> > -	/* Depends on child device list */
> > -	parse_compression_parameters(i915);
> > -
> > -out:
> > -	if (!vbt) {
> > -		drm_info(&i915->drm,
> > -			 "Failed to find VBIOS tables (VBT)\n");
> > -		init_vbt_missing_defaults(i915);
> > -	}
> > -
> > -	/* Further processing on pre-parsed or generated child device data */
> > -	parse_sdvo_device_mapping(i915);
> > -	parse_ddi_ports(i915);
> > -
> > -	kfree(oprom_vbt);
> >  }
> >  
> >  /**
> > diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
> > index 4709c4d29805..c744d75fa435 100644
> > --- a/drivers/gpu/drm/i915/display/intel_bios.h
> > +++ b/drivers/gpu/drm/i915/display/intel_bios.h
> > @@ -230,6 +230,7 @@ struct mipi_pps_data {
> >  } __packed;
> >  
> >  void intel_bios_init(struct drm_i915_private *dev_priv);
> > +void intel_bios_init_panel(struct drm_i915_private *dev_priv);
> >  void intel_bios_driver_remove(struct drm_i915_private *dev_priv);
> >  bool intel_bios_is_valid_vbt(const void *buf, size_t size);
> >  bool intel_bios_is_tv_present(struct drm_i915_private *dev_priv);
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index eee185ed41c3..4ece4e7d0296 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -9650,6 +9650,7 @@ int intel_modeset_init_noirq(struct drm_i915_private *i915)
> >  	}
> >  
> >  	intel_bios_init(i915);
> > +	intel_bios_init_panel(i915);
> >  
> >  	ret = intel_vga_register(i915);
> >  	if (ret)
> 
> -- 
> Jani Nikula, Intel Open Source Graphics Center

-- 
Ville Syrjälä
Intel

  reply	other threads:[~2022-04-08 14:09 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
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ä [this message]
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 ` [Intel-gfx] [PATCH v2 21/22] drm/edid: Extract drm_edid_decode_mfg_id() Ville Syrjala
2022-04-05 17:34   ` Ville Syrjala
2022-04-07 18:02   ` [Intel-gfx] " 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=YlBCJRD8bMOWL/KI@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@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.