From: Jani Nikula <jani.nikula@linux.intel.com>
To: Intel Graphics Development <intel-gfx@lists.freedesktop.org>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Subject: Re: [PATCH 6/7] drm/i915: make SDVO TV-out work for multifunction devices
Date: Mon, 06 May 2013 16:36:31 +0300 [thread overview]
Message-ID: <874negtelc.fsf@intel.com> (raw)
In-Reply-To: <1367323306-13605-7-git-send-email-daniel.vetter@ffwll.ch>
On Tue, 30 Apr 2013, Daniel Vetter <daniel.vetter@ffwll.ch> wrote:
> We need to track this correctly. While at it shovel the boolean
> to track whether the sdvo is in tv mode or not into pipe_config.
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36997
Bug scrubbing, should this be:
https://bugs.freedesktop.org/show_bug.cgi?id=63609 ?
Jani.
> Tested-by: Pierre Assal <pierre.assal@verint.com>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=36997
> Tested-by: cancan,feng <cancan.feng@intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/i915/intel_display.c | 8 +++-----
> drivers/gpu/drm/i915/intel_drv.h | 5 ++++-
> drivers/gpu/drm/i915/intel_sdvo.c | 8 ++------
> 3 files changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 44bcfae..ef0d27b 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4546,7 +4546,7 @@ static void i9xx_update_pll(struct intel_crtc *crtc,
> if (INTEL_INFO(dev)->gen >= 4)
> dpll |= (6 << PLL_LOAD_PULSE_PHASE_SHIFT);
>
> - if (is_sdvo && intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_TVOUT))
> + if (crtc->config.sdvo_tv_clock)
> dpll |= PLL_REF_INPUT_TVCLKINBC;
> else if (intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_LVDS) &&
> intel_panel_use_ssc(dev_priv) && num_connectors < 2)
> @@ -5590,7 +5590,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> struct intel_encoder *intel_encoder;
> uint32_t dpll;
> int factor, num_connectors = 0;
> - bool is_lvds = false, is_sdvo = false, is_tv = false;
> + bool is_lvds = false, is_sdvo = false;
>
> for_each_encoder_on_crtc(dev, crtc, intel_encoder) {
> switch (intel_encoder->type) {
> @@ -5600,8 +5600,6 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> case INTEL_OUTPUT_SDVO:
> case INTEL_OUTPUT_HDMI:
> is_sdvo = true;
> - if (intel_encoder->needs_tv_clock)
> - is_tv = true;
> break;
> }
>
> @@ -5615,7 +5613,7 @@ static uint32_t ironlake_compute_dpll(struct intel_crtc *intel_crtc,
> dev_priv->lvds_ssc_freq == 100) ||
> (HAS_PCH_IBX(dev) && intel_is_dual_link_lvds(dev)))
> factor = 25;
> - } else if (is_sdvo && is_tv)
> + } else if (intel_crtc->config.sdvo_tv_clock)
> factor = 20;
>
> if (ironlake_needs_fb_cb_tune(&intel_crtc->config.dpll, factor))
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 766afcf..be196ff 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -120,7 +120,6 @@ struct intel_encoder {
> struct intel_crtc *new_crtc;
>
> int type;
> - bool needs_tv_clock;
> /*
> * Intel hw has only one MUX where encoders could be clone, hence a
> * simple flag is enough to compute the possible_clones mask.
> @@ -223,6 +222,10 @@ struct intel_crtc_config {
> /* Controls for the clock computation, to override various stages. */
> bool clock_set;
>
> + /* SDVO TV has a bunch of special case. To make multifunction encoders
> + * work correctly, we need to track this at runtime.*/
> + bool sdvo_tv_clock;
> +
> /*
> * crtc bandwidth limit, don't increase pipe bpp or clock if not really
> * required. This is set in the 2nd loop of calling encoder's
> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
> index f6bf9fc..3a1d710 100644
> --- a/drivers/gpu/drm/i915/intel_sdvo.c
> +++ b/drivers/gpu/drm/i915/intel_sdvo.c
> @@ -1092,6 +1092,7 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
> (void) intel_sdvo_get_preferred_input_mode(intel_sdvo,
> mode,
> adjusted_mode);
> + pipe_config->sdvo_tv_clock = true;
> } else if (intel_sdvo->is_lvds) {
> if (!intel_sdvo_set_output_timings_from_mode(intel_sdvo,
> intel_sdvo->sdvo_lvds_fixed_mode))
> @@ -1655,12 +1656,9 @@ intel_sdvo_detect(struct drm_connector *connector, bool force)
> if (ret == connector_status_connected) {
> intel_sdvo->is_tv = false;
> intel_sdvo->is_lvds = false;
> - intel_sdvo->base.needs_tv_clock = false;
>
> - if (response & SDVO_TV_MASK) {
> + if (response & SDVO_TV_MASK)
> intel_sdvo->is_tv = true;
> - intel_sdvo->base.needs_tv_clock = true;
> - }
> if (response & SDVO_LVDS_MASK)
> intel_sdvo->is_lvds = intel_sdvo->sdvo_lvds_fixed_mode != NULL;
> }
> @@ -2357,7 +2355,6 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type)
> intel_sdvo_connector->output_flag = type;
>
> intel_sdvo->is_tv = true;
> - intel_sdvo->base.needs_tv_clock = true;
>
> intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo);
>
> @@ -2445,7 +2442,6 @@ static bool
> intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags)
> {
> intel_sdvo->is_tv = false;
> - intel_sdvo->base.needs_tv_clock = false;
> intel_sdvo->is_lvds = false;
>
> /* SDVO requires XXX1 function may not exist unless it has XXX0 function.*/
> --
> 1.7.11.7
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2013-05-06 13:36 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-30 12:01 [PATCH 0/7] sdvo tv clock improvements + some random stuff Daniel Vetter
2013-04-30 12:01 ` [PATCH 1/7] drm/i915: simplify DP/DDI port width macros Daniel Vetter
2013-05-02 13:34 ` Paulo Zanoni
2013-05-02 14:51 ` Daniel Vetter
2013-05-02 17:38 ` Paulo Zanoni
2013-05-02 19:29 ` Daniel Vetter
2013-04-30 12:01 ` [PATCH 2/7] drm/i915: move sdvo TV clock computation to intel_sdvo.c Daniel Vetter
2013-05-10 11:13 ` Jani Nikula
2013-04-30 12:01 ` [PATCH 3/7] drm/i915: drop TVclock special casing on ilk+ Daniel Vetter
2013-05-10 11:18 ` Jani Nikula
2013-04-30 12:01 ` [PATCH 4/7] drm/i915: rip out TV-out lore Daniel Vetter
2013-05-10 11:34 ` Jani Nikula
2013-04-30 12:01 ` [PATCH 5/7] drm/i915: rip out now unused is_foo tracking from crtc code Daniel Vetter
2013-05-10 11:39 ` Jani Nikula
2013-04-30 12:01 ` [PATCH 6/7] drm/i915: make SDVO TV-out work for multifunction devices Daniel Vetter
2013-04-30 12:49 ` Chris Wilson
2013-04-30 13:10 ` Daniel Vetter
2013-05-06 13:36 ` Jani Nikula [this message]
2013-05-06 14:15 ` Daniel Vetter
2013-05-10 11:47 ` Jani Nikula
2013-04-30 12:01 ` [PATCH 7/7] drm/i915: rip out an unused lvds_reg variable Daniel Vetter
2013-05-10 11:42 ` Jani Nikula
2013-05-10 14:03 ` Daniel Vetter
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=874negtelc.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
/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.