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 07/16] drm/i915: Introduce intel_panel_get_modes()
Date: Mon, 14 Mar 2022 11:57:06 +0200	[thread overview]
Message-ID: <8735jkx3f1.fsf@intel.com> (raw)
In-Reply-To: <20220311172428.14685-8-ville.syrjala@linux.intel.com>

On Fri, 11 Mar 2022, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Several connectors want to return the fixed_mode from .get_modes(),
> add a helper to do that (and hide the details inside intel_panel.c).
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Nice!

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

One note below.

> ---
>  drivers/gpu/drm/i915/display/intel_dp.c    | 13 ++-----------
>  drivers/gpu/drm/i915/display/intel_dsi.c   | 21 +--------------------
>  drivers/gpu/drm/i915/display/intel_dvo.c   | 14 +-------------
>  drivers/gpu/drm/i915/display/intel_lvds.c  |  9 +--------
>  drivers/gpu/drm/i915/display/intel_panel.c | 18 ++++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_panel.h |  1 +
>  6 files changed, 24 insertions(+), 52 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 92a2651a71a7..3c97cd5853cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -4588,17 +4588,8 @@ static int intel_dp_get_modes(struct drm_connector *connector)
>  	}
>  
>  	/* Also add fixed mode, which may or may not be present in EDID */
> -	if (intel_dp_is_edp(intel_attached_dp(intel_connector)) &&
> -	    intel_connector->panel.fixed_mode) {
> -		struct drm_display_mode *mode;
> -
> -		mode = drm_mode_duplicate(connector->dev,
> -					  intel_connector->panel.fixed_mode);
> -		if (mode) {
> -			drm_mode_probed_add(connector, mode);
> -			num_modes++;
> -		}
> -	}
> +	if (intel_dp_is_edp(intel_attached_dp(intel_connector)))
> +		num_modes += intel_panel_get_modes(intel_connector);

Maybe we could even remove the intel_dp_is_edp() check in the
future. It's basically redundant.

>  
>  	if (num_modes)
>  		return num_modes;
> diff --git a/drivers/gpu/drm/i915/display/intel_dsi.c b/drivers/gpu/drm/i915/display/intel_dsi.c
> index 37f280b1f179..389a8c24cdc1 100644
> --- a/drivers/gpu/drm/i915/display/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/display/intel_dsi.c
> @@ -34,26 +34,7 @@ int intel_dsi_tlpx_ns(const struct intel_dsi *intel_dsi)
>  
>  int intel_dsi_get_modes(struct drm_connector *connector)
>  {
> -	struct drm_i915_private *i915 = to_i915(connector->dev);
> -	struct intel_connector *intel_connector = to_intel_connector(connector);
> -	struct drm_display_mode *mode;
> -
> -	drm_dbg_kms(&i915->drm, "\n");
> -
> -	if (!intel_connector->panel.fixed_mode) {
> -		drm_dbg_kms(&i915->drm, "no fixed mode\n");
> -		return 0;
> -	}
> -
> -	mode = drm_mode_duplicate(connector->dev,
> -				  intel_connector->panel.fixed_mode);
> -	if (!mode) {
> -		drm_dbg_kms(&i915->drm, "drm_mode_duplicate failed\n");
> -		return 0;
> -	}
> -
> -	drm_mode_probed_add(connector, mode);
> -	return 1;
> +	return intel_panel_get_modes(to_intel_connector(connector));
>  }
>  
>  enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
> diff --git a/drivers/gpu/drm/i915/display/intel_dvo.c b/drivers/gpu/drm/i915/display/intel_dvo.c
> index 0367e6a1bac7..d4670889d26c 100644
> --- a/drivers/gpu/drm/i915/display/intel_dvo.c
> +++ b/drivers/gpu/drm/i915/display/intel_dvo.c
> @@ -333,8 +333,6 @@ intel_dvo_detect(struct drm_connector *connector, bool force)
>  static int intel_dvo_get_modes(struct drm_connector *connector)
>  {
>  	struct drm_i915_private *dev_priv = to_i915(connector->dev);
> -	const struct drm_display_mode *fixed_mode =
> -		to_intel_connector(connector)->panel.fixed_mode;
>  	int num_modes;
>  
>  	/*
> @@ -348,17 +346,7 @@ static int intel_dvo_get_modes(struct drm_connector *connector)
>  	if (num_modes)
>  		return num_modes;
>  
> -	if (fixed_mode) {
> -		struct drm_display_mode *mode;
> -
> -		mode = drm_mode_duplicate(connector->dev, fixed_mode);
> -		if (mode) {
> -			drm_mode_probed_add(connector, mode);
> -			num_modes++;
> -		}
> -	}
> -
> -	return num_modes;
> +	return intel_panel_get_modes(to_intel_connector(connector));
>  }
>  
>  static const struct drm_connector_funcs intel_dvo_connector_funcs = {
> diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c
> index 3842417e06b0..5449d69fbae5 100644
> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
> @@ -476,19 +476,12 @@ static int intel_lvds_compute_config(struct intel_encoder *intel_encoder,
>  static int intel_lvds_get_modes(struct drm_connector *connector)
>  {
>  	struct intel_connector *intel_connector = to_intel_connector(connector);
> -	struct drm_device *dev = connector->dev;
> -	struct drm_display_mode *mode;
>  
>  	/* use cached edid if we have one */
>  	if (!IS_ERR_OR_NULL(intel_connector->edid))
>  		return drm_add_edid_modes(connector, intel_connector->edid);
>  
> -	mode = drm_mode_duplicate(dev, intel_connector->panel.fixed_mode);
> -	if (mode == NULL)
> -		return 0;
> -
> -	drm_mode_probed_add(connector, mode);
> -	return 1;
> +	return intel_panel_get_modes(intel_connector);
>  }
>  
>  static const struct drm_connector_helper_funcs intel_lvds_connector_helper_funcs = {
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 3ad246791da5..222328d4e7a1 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -59,6 +59,24 @@ intel_panel_downclock_mode(struct intel_connector *connector,
>  	return connector->panel.downclock_mode;
>  }
>  
> +int intel_panel_get_modes(struct intel_connector *connector)
> +{
> +	int num_modes = 0;
> +
> +	if (connector->panel.fixed_mode) {
> +		struct drm_display_mode *mode;
> +
> +		mode = drm_mode_duplicate(connector->base.dev,
> +					  connector->panel.fixed_mode);
> +		if (mode) {
> +			drm_mode_probed_add(&connector->base, mode);
> +			num_modes++;
> +		}
> +	}
> +
> +	return num_modes;
> +}
> +
>  int intel_panel_compute_config(struct intel_connector *connector,
>  			       struct drm_display_mode *adjusted_mode)
>  {
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
> index 7ce7e995853f..051b86450156 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.h
> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
> @@ -30,6 +30,7 @@ intel_panel_fixed_mode(struct intel_connector *connector,
>  const struct drm_display_mode *
>  intel_panel_downclock_mode(struct intel_connector *connector,
>  			   const struct drm_display_mode *adjusted_mode);
> +int intel_panel_get_modes(struct intel_connector *connector);
>  enum drm_mode_status
>  intel_panel_mode_valid(struct intel_connector *connector,
>  		       const struct drm_display_mode *mode);

-- 
Jani Nikula, Intel Open Source Graphics Center

  reply	other threads:[~2022-03-14  9:57 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-11 17:24 [Intel-gfx] [PATCH v2 00/16] drm/i915: DRRS fixes/cleanups and start of static DRRS Ville Syrjala
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 01/16] drm/i915/dsi: Pass fixed_mode to *_dsi_add_properties() Ville Syrjala
2022-03-14  9:41   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 02/16] drm/i915/sdvo: Passt the requesed mode to intel_sdvo_create_preferred_input_timing() Ville Syrjala
2022-03-14  9:44   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 03/16] drm/i915/lvds: Pass fixed_mode to compute_is_dual_link_lvds() Ville Syrjala
2022-03-14  9:44   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 04/16] drm/i915: Simplify intel_panel_info() Ville Syrjala
2022-03-14  9:47   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 05/16] drm/i915: Nuke dev_priv->drrs.type Ville Syrjala
2022-03-14  9:47   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 06/16] drm/i915: Introduce intel_panel_{fixed, downclock}_mode() Ville Syrjala
2022-03-14 10:09   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 07/16] drm/i915: Introduce intel_panel_get_modes() Ville Syrjala
2022-03-14  9:57   ` Jani Nikula [this message]
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 08/16] drm/i915: Introduce intel_panel_preferred_fixed_mode() Ville Syrjala
2022-03-14 10:11   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 09/16] drm/i915: Introduce intel_panel_drrs_type() Ville Syrjala
2022-03-14 10:00   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 10/16] drm/i915: Introduce intel_drrs_type_str() Ville Syrjala
2022-03-14 10:00   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 11/16] drm/i915: Eliminate the intel_dp dependency from DRRS Ville Syrjala
2022-03-14 10:14   ` Jani Nikula
2022-03-14 10:16   ` Jani Nikula
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 12/16] drm/i915: Stash DRRS state under intel_crtc Ville Syrjala
2022-03-14 10:31   ` Jani Nikula
2022-03-14 15:11     ` Ville Syrjälä
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 13/16] drm/i915: Move DRRS enable/disable higher up Ville Syrjala
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 14/16] drm/i915: Enable eDP DRRS on ilk/snb port A Ville Syrjala
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 15/16] drm/i915: Implement static DRRS Ville Syrjala
2022-03-11 17:24 ` [Intel-gfx] [PATCH v2 16/16] drm/i915: Convert fixed_mode/downclock_mode into a list Ville Syrjala
2022-03-11 20:22   ` [Intel-gfx] [PATCH v3 " Ville Syrjala
2022-03-14 10:45     ` Jani Nikula
2022-03-14 15:27   ` [Intel-gfx] [PATCH v4 " Ville Syrjala
2022-03-11 19:10 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: DRRS fixes/cleanups and start of static DRRS (rev2) Patchwork
2022-03-11 19:12 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-03-11 19:43 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2022-03-11 21:55 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: DRRS fixes/cleanups and start of static DRRS (rev3) Patchwork
2022-03-11 21:57 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-03-11 22:27 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-03-12  0:51 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2022-03-14 16:27 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: DRRS fixes/cleanups and start of static DRRS (rev4) Patchwork
2022-03-14 16:29 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-03-14 17:02 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-03-14 19:18 ` [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=8735jkx3f1.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.