From: Daniel Vetter <daniel@ffwll.ch>
To: ville.syrjala@linux.intel.com
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 12/12] drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode
Date: Mon, 2 Sep 2013 20:44:31 +0200 [thread overview]
Message-ID: <20130902184431.GD9374@phenom.ffwll.local> (raw)
In-Reply-To: <1378145619-22655-13-git-send-email-ville.syrjala@linux.intel.com>
On Mon, Sep 02, 2013 at 09:13:39PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> intel_fixed_panel_mode() overwrote the adjusted_mode with the fixed mode
> only partially. Notably it forgot to copy over the sync flags. The LVDS
> code however programmed the hardware with the sync flags from fixed
> mode, and then later the pipe config comparison obviously failed as we
> filled out the adjusted_mode in get_config from the real registers.
>
> Just call drm_mode_copy() in intel_fixed_panel_mode() to copy over the
> whole thing, and then just use adjusted_mode in the LVDS code to figure
> out which sync settings the hardware needs.
>
> Also constify the fixed_mode argument to intel_fixed_panel_mode().
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Makes too much sense, so merged right away to dinq ;-)
Thanks, Daniel
> ---
> drivers/gpu/drm/i915/intel_drv.h | 2 +-
> drivers/gpu/drm/i915/intel_lvds.c | 8 ++++----
> drivers/gpu/drm/i915/intel_panel.c | 14 ++------------
> 3 files changed, 7 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 594d9f4..a71b47c 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -559,7 +559,7 @@ extern int intel_panel_init(struct intel_panel *panel,
> struct drm_display_mode *fixed_mode);
> extern void intel_panel_fini(struct intel_panel *panel);
>
> -extern void intel_fixed_panel_mode(struct drm_display_mode *fixed_mode,
> +extern void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
> struct drm_display_mode *adjusted_mode);
> extern void intel_pch_panel_fitting(struct intel_crtc *crtc,
> struct intel_crtc_config *pipe_config,
> diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> index 4d33278..831a5c0 100644
> --- a/drivers/gpu/drm/i915/intel_lvds.c
> +++ b/drivers/gpu/drm/i915/intel_lvds.c
> @@ -128,8 +128,8 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
> struct drm_device *dev = encoder->base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
> struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
> - struct drm_display_mode *fixed_mode =
> - lvds_encoder->attached_connector->base.panel.fixed_mode;
> + const struct drm_display_mode *adjusted_mode =
> + &crtc->config.adjusted_mode;
> int pipe = crtc->pipe;
> u32 temp;
>
> @@ -183,9 +183,9 @@ static void intel_pre_enable_lvds(struct intel_encoder *encoder)
> temp &= ~LVDS_ENABLE_DITHER;
> }
> temp &= ~(LVDS_HSYNC_POLARITY | LVDS_VSYNC_POLARITY);
> - if (fixed_mode->flags & DRM_MODE_FLAG_NHSYNC)
> + if (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC)
> temp |= LVDS_HSYNC_POLARITY;
> - if (fixed_mode->flags & DRM_MODE_FLAG_NVSYNC)
> + if (adjusted_mode->flags & DRM_MODE_FLAG_NVSYNC)
> temp |= LVDS_VSYNC_POLARITY;
>
> I915_WRITE(lvds_encoder->reg, temp);
> diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> index c361f04..c9dba46 100644
> --- a/drivers/gpu/drm/i915/intel_panel.c
> +++ b/drivers/gpu/drm/i915/intel_panel.c
> @@ -36,20 +36,10 @@
> #define PCI_LBPC 0xf4 /* legacy/combination backlight modes */
>
> void
> -intel_fixed_panel_mode(struct drm_display_mode *fixed_mode,
> +intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
> struct drm_display_mode *adjusted_mode)
> {
> - adjusted_mode->hdisplay = fixed_mode->hdisplay;
> - adjusted_mode->hsync_start = fixed_mode->hsync_start;
> - adjusted_mode->hsync_end = fixed_mode->hsync_end;
> - adjusted_mode->htotal = fixed_mode->htotal;
> -
> - adjusted_mode->vdisplay = fixed_mode->vdisplay;
> - adjusted_mode->vsync_start = fixed_mode->vsync_start;
> - adjusted_mode->vsync_end = fixed_mode->vsync_end;
> - adjusted_mode->vtotal = fixed_mode->vtotal;
> -
> - adjusted_mode->clock = fixed_mode->clock;
> + drm_mode_copy(adjusted_mode, fixed_mode);
>
> drm_mode_set_crtcinfo(adjusted_mode, 0);
> }
> --
> 1.8.1.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
prev parent reply other threads:[~2013-09-02 18:44 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-02 18:13 [PATCH 00/12] drm/i915: pipe_config, adjusted_mode vs. requested_mode, etc ville.syrjala
2013-09-02 18:13 ` [PATCH 01/12] drm/i915: Grab the pixel clock from adjusted_mode not requested_mode ville.syrjala
2013-09-02 18:38 ` Daniel Vetter
2013-09-03 10:01 ` Ville Syrjälä
2013-09-03 11:23 ` Daniel Vetter
2013-09-03 12:08 ` Ville Syrjälä
2013-09-03 13:45 ` Daniel Vetter
2013-09-03 10:31 ` [PATCH] drm/i915: Kill IRONLAKE_FDI_FREQ check ville.syrjala
2013-09-03 11:24 ` Daniel Vetter
2013-09-02 18:13 ` [PATCH 02/12] drm/i915: Use adjusted_mode->clock in lpt_program_iclkip ville.syrjala
2013-09-02 18:13 ` [PATCH 03/12] drm/i915: Use adjusted_mode in HDMI 12bpc clock check ville.syrjala
2013-09-02 18:39 ` Daniel Vetter
2013-09-02 19:05 ` Ville Syrjälä
2013-09-03 7:50 ` Daniel Vetter
2013-09-03 9:33 ` [PATCH] drm/i915: Document the use of requested_mode, adjusted_mode, and pipe_src_{w, h} ville.syrjala
2013-09-02 18:13 ` [PATCH 04/12] drm/i915: Use adjusted_mode in intel_update_fbc() ville.syrjala
2013-09-02 18:13 ` [PATCH 05/12] drm/i915: Use adjusted_mode appropriately when computing watermarks ville.syrjala
2013-09-02 18:13 ` [PATCH 06/12] drm/i915: Check the clock from adjusted mode in intel_crtc_active() ville.syrjala
2013-09-02 18:13 ` [PATCH 07/12] drm/i915: Use adjusted_mode when checking conditions for PSR ville.syrjala
2013-09-02 18:13 ` [PATCH 08/12] drm/i915: Make intel_crtc_active() available outside intel_pm.c ville.syrjala
2013-09-02 18:42 ` Daniel Vetter
2013-09-02 19:46 ` [PATCH v2] " ville.syrjala
2013-09-02 18:13 ` [PATCH 09/12] drm/i915: Use pipe config in sprite code ville.syrjala
2013-09-02 18:13 ` [PATCH 10/12] drm/i915: Use adjusted_mode in DSI PLL calculations ville.syrjala
2013-09-02 18:13 ` [PATCH 11/12] drm/i915: Add explicit pipe src size to pipe config ville.syrjala
2013-09-02 18:46 ` Daniel Vetter
2013-09-02 19:11 ` Ville Syrjälä
2013-09-03 7:52 ` Daniel Vetter
2013-09-03 9:32 ` Ville Syrjälä
2013-09-02 18:13 ` [PATCH 12/12] drm/i915: Fix pipe config warnings when dealing with LVDS fixed mode ville.syrjala
2013-09-02 18:44 ` Daniel Vetter [this message]
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=20130902184431.GD9374@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--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.