From: Manasi Navare <manasi.d.navare@intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v3 5/6] drm/i915: Pass connector state to pfit calculations
Date: Wed, 22 Apr 2020 14:35:29 -0700 [thread overview]
Message-ID: <20200422213529.GC28167@intel.com> (raw)
In-Reply-To: <20200422161917.17389-5-ville.syrjala@linux.intel.com>
On Wed, Apr 22, 2020 at 07:19:16PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Pass the entire connector state to intel_{gmch,pch}_panel_fitting().
> For now we just need to get at .scaling_mode but in the future we'll
> want access to the margin properties as well.
>
> v2: Deal with intel_dp_ycbcr420_config()
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Looks good to me,
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
Manasi
> ---
> drivers/gpu/drm/i915/display/icl_dsi.c | 2 +-
> drivers/gpu/drm/i915/display/intel_dp.c | 17 ++++++++---------
> drivers/gpu/drm/i915/display/intel_hdmi.c | 11 ++++++-----
> drivers/gpu/drm/i915/display/intel_lvds.c | 7 ++-----
> drivers/gpu/drm/i915/display/intel_panel.c | 17 ++++++++++-------
> drivers/gpu/drm/i915/display/intel_panel.h | 4 ++--
> drivers/gpu/drm/i915/display/vlv_dsi.c | 6 ++----
> 7 files changed, 31 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c b/drivers/gpu/drm/i915/display/icl_dsi.c
> index fb9291de55d0..6650590f18fd 100644
> --- a/drivers/gpu/drm/i915/display/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
> @@ -1532,7 +1532,7 @@ static int gen11_dsi_compute_config(struct intel_encoder *encoder,
>
> pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
> intel_fixed_panel_mode(fixed_mode, adjusted_mode);
> - intel_pch_panel_fitting(pipe_config, conn_state->scaling_mode);
> + intel_pch_panel_fitting(pipe_config, conn_state);
>
> adjusted_mode->flags = 0;
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index b9a760012b3f..7c4c9a4f4238 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2339,9 +2339,10 @@ intel_dp_compute_link_config(struct intel_encoder *encoder,
>
> static int
> intel_dp_ycbcr420_config(struct intel_dp *intel_dp,
> - struct drm_connector *connector,
> - struct intel_crtc_state *crtc_state)
> + struct intel_crtc_state *crtc_state,
> + const struct drm_connector_state *conn_state)
> {
> + struct drm_connector *connector = conn_state->connector;
> const struct drm_display_info *info = &connector->display_info;
> const struct drm_display_mode *adjusted_mode =
> &crtc_state->hw.adjusted_mode;
> @@ -2353,7 +2354,7 @@ intel_dp_ycbcr420_config(struct intel_dp *intel_dp,
>
> crtc_state->output_format = INTEL_OUTPUT_FORMAT_YCBCR420;
>
> - intel_pch_panel_fitting(crtc_state, DRM_MODE_SCALE_FULLSCREEN);
> + intel_pch_panel_fitting(crtc_state, conn_state);
>
> return 0;
> }
> @@ -2549,8 +2550,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
> if (lspcon->active)
> lspcon_ycbcr420_config(&intel_connector->base, pipe_config);
> else
> - ret = intel_dp_ycbcr420_config(intel_dp, &intel_connector->base,
> - pipe_config);
> + ret = intel_dp_ycbcr420_config(intel_dp, pipe_config,
> + conn_state);
> if (ret)
> return ret;
>
> @@ -2567,11 +2568,9 @@ intel_dp_compute_config(struct intel_encoder *encoder,
> adjusted_mode);
>
> if (HAS_GMCH(dev_priv))
> - intel_gmch_panel_fitting(pipe_config,
> - conn_state->scaling_mode);
> + intel_gmch_panel_fitting(pipe_config, conn_state);
> else
> - intel_pch_panel_fitting(pipe_config,
> - conn_state->scaling_mode);
> + intel_pch_panel_fitting(pipe_config, conn_state);
> }
>
> if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index 275a676c7b08..0edbdd39f462 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2322,9 +2322,10 @@ static bool hdmi_deep_color_possible(const struct intel_crtc_state *crtc_state,
> }
>
> static bool
> -intel_hdmi_ycbcr420_config(struct drm_connector *connector,
> - struct intel_crtc_state *config)
> +intel_hdmi_ycbcr420_config(struct intel_crtc_state *crtc_state,
> + const struct drm_connector_state *conn_state)
> {
> + struct drm_connector *connector = conn_state->connector;
> struct drm_i915_private *i915 = to_i915(connector->dev);
>
> if (!connector->ycbcr_420_allowed) {
> @@ -2333,9 +2334,9 @@ intel_hdmi_ycbcr420_config(struct drm_connector *connector,
> return false;
> }
>
> - config->output_format = INTEL_OUTPUT_FORMAT_YCBCR420;
> + crtc_state->output_format = INTEL_OUTPUT_FORMAT_YCBCR420;
>
> - intel_pch_panel_fitting(config, DRM_MODE_SCALE_FULLSCREEN);
> + intel_pch_panel_fitting(crtc_state, conn_state);
>
> return true;
> }
> @@ -2466,7 +2467,7 @@ int intel_hdmi_compute_config(struct intel_encoder *encoder,
> pipe_config->pixel_multiplier = 2;
>
> if (drm_mode_is_420_only(&connector->display_info, adjusted_mode)) {
> - if (!intel_hdmi_ycbcr420_config(connector, pipe_config)) {
> + if (!intel_hdmi_ycbcr420_config(pipe_config, conn_state)) {
> drm_err(&dev_priv->drm,
> "Can't support YCBCR420 output\n");
> return -EINVAL;
> diff --git a/drivers/gpu/drm/i915/display/intel_lvds.c b/drivers/gpu/drm/i915/display/intel_lvds.c
> index 276db41b95ef..ae658d9354b7 100644
> --- a/drivers/gpu/drm/i915/display/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/display/intel_lvds.c
> @@ -439,12 +439,9 @@ static int intel_lvds_compute_config(struct intel_encoder *intel_encoder,
> if (HAS_PCH_SPLIT(dev_priv)) {
> pipe_config->has_pch_encoder = true;
>
> - intel_pch_panel_fitting(pipe_config,
> - conn_state->scaling_mode);
> + intel_pch_panel_fitting(pipe_config, conn_state);
> } else {
> - intel_gmch_panel_fitting(pipe_config,
> - conn_state->scaling_mode);
> -
> + intel_gmch_panel_fitting(pipe_config, conn_state);
> }
>
> /*
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 3ea1704277a8..b4bb1cfc54a9 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -178,7 +178,7 @@ intel_panel_vbt_fixed_mode(struct intel_connector *connector)
> /* adjusted_mode has been preset to be the panel's fixed mode */
> void
> intel_pch_panel_fitting(struct intel_crtc_state *crtc_state,
> - int fitting_mode)
> + const struct drm_connector_state *conn_state)
> {
> const struct drm_display_mode *adjusted_mode =
> &crtc_state->hw.adjusted_mode;
> @@ -190,7 +190,7 @@ intel_pch_panel_fitting(struct intel_crtc_state *crtc_state,
> crtc_state->output_format != INTEL_OUTPUT_FORMAT_YCBCR420)
> return;
>
> - switch (fitting_mode) {
> + switch (conn_state->scaling_mode) {
> case DRM_MODE_SCALE_CENTER:
> width = crtc_state->pipe_src_w;
> height = crtc_state->pipe_src_h;
> @@ -227,6 +227,10 @@ intel_pch_panel_fitting(struct intel_crtc_state *crtc_state,
> }
> break;
>
> + case DRM_MODE_SCALE_NONE:
> + WARN_ON(adjusted_mode->crtc_hdisplay != crtc_state->pipe_src_w);
> + WARN_ON(adjusted_mode->crtc_vdisplay != crtc_state->pipe_src_h);
> + /* fall through */
> case DRM_MODE_SCALE_FULLSCREEN:
> x = y = 0;
> width = adjusted_mode->crtc_hdisplay;
> @@ -234,7 +238,7 @@ intel_pch_panel_fitting(struct intel_crtc_state *crtc_state,
> break;
>
> default:
> - MISSING_CASE(fitting_mode);
> + MISSING_CASE(conn_state->scaling_mode);
> return;
> }
>
> @@ -378,7 +382,7 @@ static void i9xx_scale_aspect(struct intel_crtc_state *crtc_state,
> }
>
> void intel_gmch_panel_fitting(struct intel_crtc_state *crtc_state,
> - int fitting_mode)
> + const struct drm_connector_state *conn_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> @@ -390,7 +394,7 @@ void intel_gmch_panel_fitting(struct intel_crtc_state *crtc_state,
> adjusted_mode->crtc_vdisplay == crtc_state->pipe_src_h)
> goto out;
>
> - switch (fitting_mode) {
> + switch (conn_state->scaling_mode) {
> case DRM_MODE_SCALE_CENTER:
> /*
> * For centered modes, we have to calculate border widths &
> @@ -426,8 +430,7 @@ void intel_gmch_panel_fitting(struct intel_crtc_state *crtc_state,
> }
> break;
> default:
> - drm_WARN(&dev_priv->drm, 1, "bad panel fit mode: %d\n",
> - fitting_mode);
> + MISSING_CASE(conn_state->scaling_mode);
> return;
> }
>
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.h b/drivers/gpu/drm/i915/display/intel_panel.h
> index 92dcb773763c..a26db895038e 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.h
> +++ b/drivers/gpu/drm/i915/display/intel_panel.h
> @@ -26,9 +26,9 @@ void intel_panel_fini(struct intel_panel *panel);
> void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
> struct drm_display_mode *adjusted_mode);
> void intel_pch_panel_fitting(struct intel_crtc_state *crtc_state,
> - int fitting_mode);
> + const struct drm_connector_state *conn_state);
> void intel_gmch_panel_fitting(struct intel_crtc_state *crtc_state,
> - int fitting_mode);
> + const struct drm_connector_state *conn_state);
> void intel_panel_set_backlight_acpi(const struct drm_connector_state *conn_state,
> u32 level, u32 max);
> int intel_panel_setup_backlight(struct drm_connector *connector,
> diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c b/drivers/gpu/drm/i915/display/vlv_dsi.c
> index fe7c9d3ec418..9c9ea89d2107 100644
> --- a/drivers/gpu/drm/i915/display/vlv_dsi.c
> +++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
> @@ -278,11 +278,9 @@ static int intel_dsi_compute_config(struct intel_encoder *encoder,
> intel_fixed_panel_mode(fixed_mode, adjusted_mode);
>
> if (HAS_GMCH(dev_priv))
> - intel_gmch_panel_fitting(pipe_config,
> - conn_state->scaling_mode);
> + intel_gmch_panel_fitting(pipe_config, conn_state);
> else
> - intel_pch_panel_fitting(pipe_config,
> - conn_state->scaling_mode);
> + intel_pch_panel_fitting(pipe_config, conn_state);
> }
>
> if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
> --
> 2.24.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2020-04-22 21:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-22 16:19 [Intel-gfx] [PATCH v3 1/6] drm/i915: Fix skl+ non-scaled pfit modes Ville Syrjala
2020-04-22 16:19 ` [Intel-gfx] [PATCH v3 2/6] drm/i915: Flatten a bunch of the pfit functions Ville Syrjala
2020-04-22 16:19 ` [Intel-gfx] [PATCH v3 3/6] drm/i915: Use drm_rect to store the pfit window pos/size Ville Syrjala
2020-04-22 19:20 ` Manasi Navare
2020-04-23 15:38 ` Ville Syrjälä
2020-04-23 18:51 ` Manasi Navare
2020-04-22 16:19 ` [Intel-gfx] [PATCH v3 4/6] drm/i915: s/pipe_config/crtc_state/ in pfit functions Ville Syrjala
2020-04-22 19:26 ` Manasi Navare
2020-04-22 16:19 ` [Intel-gfx] [PATCH v3 5/6] drm/i915: Pass connector state to pfit calculations Ville Syrjala
2020-04-22 21:35 ` Manasi Navare [this message]
2020-04-22 16:19 ` [Intel-gfx] [PATCH v3 6/6] drm/i915: Have pfit calculations return an error code Ville Syrjala
2020-04-22 21:42 ` Manasi Navare
2020-04-22 18:21 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/6] drm/i915: Fix skl+ non-scaled pfit modes Patchwork
2020-04-22 18:45 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2020-04-22 22:44 ` [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=20200422213529.GC28167@intel.com \
--to=manasi.d.navare@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.