All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ramalingam C <ramalingam.c@intel.com>
To: intel-gfx@lists.freedesktop.org, rodrigo.vivi@intel.com
Cc: paulo.r.zanoni@intel.com
Subject: Re: [PATCH 1/6] drm/i915: Add support for DRRS in intel_dp_set_m_n
Date: Wed, 11 Feb 2015 18:28:49 +0530	[thread overview]
Message-ID: <54DB5209.1030003@intel.com> (raw)
In-Reply-To: <1423658616-2298-1-git-send-email-ramalingam.c@intel.com>

Hi,

This is preparation patch for "[PATCH] drm/i915/bdw: Add support for 
DRRS to switch RR".
My bad that I have misplaced this in the thread.

On Wednesday 11 February 2015 06:13 PM, Ramalingam C wrote:
> Till Gen 7 we have two sets of M_N registers, but Gen 8 onwards
> we have only one M_N register set. To support DRRS on both scenarios
> a input parameter to intel_dp_set_m_n is added.
>
> In case of DRRS, When platform provides two set of M_N registers for dp,
> we can program them with two different dividers and switch between them.
> But when only one such register set is provided, we have to program
> the required divider M_N value on that registers itself.
>
> Two enum members M1_N1 and M2_N2 are defined to represent the above
> scenarios.
>
> M1_N1        :	Program dp_m_n on M1_N1 registers
> 			dp_m2_n2 on M2_N2 registers (If supported)
>
> M2_N2        :	Program dp_m2_n2 on M1_N1 registers
> 			M2_N2 registers are not supported
>
> Signed-off-by: Ramalingam C <ramalingam.c@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_display.c |   30 +++++++++++++++++++++++-------
>   drivers/gpu/drm/i915/intel_drv.h     |   22 +++++++++++++++++++++-
>   2 files changed, 44 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 3fe9598..ced049a 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4316,7 +4316,7 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
>   		intel_prepare_shared_dpll(intel_crtc);
>   
>   	if (intel_crtc->config->has_dp_encoder)
> -		intel_dp_set_m_n(intel_crtc);
> +		intel_dp_set_m_n(intel_crtc, M1_N1);
>   
>   	intel_set_pipe_timings(intel_crtc);
>   
> @@ -4424,7 +4424,7 @@ static void haswell_crtc_enable(struct drm_crtc *crtc)
>   		intel_enable_shared_dpll(intel_crtc);
>   
>   	if (intel_crtc->config->has_dp_encoder)
> -		intel_dp_set_m_n(intel_crtc);
> +		intel_dp_set_m_n(intel_crtc, M1_N1);
>   
>   	intel_set_pipe_timings(intel_crtc);
>   
> @@ -5038,7 +5038,7 @@ static void valleyview_crtc_enable(struct drm_crtc *crtc)
>   	}
>   
>   	if (intel_crtc->config->has_dp_encoder)
> -		intel_dp_set_m_n(intel_crtc);
> +		intel_dp_set_m_n(intel_crtc, M1_N1);
>   
>   	intel_set_pipe_timings(intel_crtc);
>   
> @@ -5114,7 +5114,7 @@ static void i9xx_crtc_enable(struct drm_crtc *crtc)
>   	i9xx_set_pll_dividers(intel_crtc);
>   
>   	if (intel_crtc->config->has_dp_encoder)
> -		intel_dp_set_m_n(intel_crtc);
> +		intel_dp_set_m_n(intel_crtc, M1_N1);
>   
>   	intel_set_pipe_timings(intel_crtc);
>   
> @@ -5889,13 +5889,29 @@ static void intel_cpu_transcoder_set_m_n(struct intel_crtc *crtc,
>   	}
>   }
>   
> -void intel_dp_set_m_n(struct intel_crtc *crtc)
> +void intel_dp_set_m_n(struct intel_crtc *crtc, enum link_m_n_set m_n)
>   {
> +	struct intel_link_m_n *dp_m_n, *dp_m2_n2 = NULL;
> +
> +	if (m_n == M1_N1) {
> +		dp_m_n = &crtc->config->dp_m_n;
> +		dp_m2_n2 = &crtc->config->dp_m2_n2;
> +	} else if (m_n == M2_N2) {
> +
> +		/*
> +		 * M2_N2 registers are not supported. Hence m2_n2 divider value
> +		 * needs to be programmed into M1_N1.
> +		 */
> +		dp_m_n = &crtc->config->dp_m2_n2;
> +	} else {
> +		DRM_ERROR("Unsupported divider value\n");
> +		return;
> +	}
> +
>   	if (crtc->config->has_pch_encoder)
>   		intel_pch_transcoder_set_m_n(crtc, &crtc->config->dp_m_n);
>   	else
> -		intel_cpu_transcoder_set_m_n(crtc, &crtc->config->dp_m_n,
> -						   &crtc->config->dp_m2_n2);
> +		intel_cpu_transcoder_set_m_n(crtc, dp_m_n, dp_m2_n2);
>   }
>   
>   static void vlv_update_pll(struct intel_crtc *crtc,
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 76b3c20..e05de19 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -593,6 +593,26 @@ struct intel_hdmi {
>   struct intel_dp_mst_encoder;
>   #define DP_MAX_DOWNSTREAM_PORTS		0x10
>   
> +/*
> + * enum link_m_n_set:
> + *	When platform provides two set of M_N registers for dp, we can
> + *	program them and switch between them incase of DRRS.
> + *	But When only one such register is provided, we have to program the
> + *	required divider value on that registers itself based on the DRRS state.
> + *
> + * M1_N1	: Program dp_m_n on M1_N1 registers
> + *			  dp_m2_n2 on M2_N2 registers (If supported)
> + *
> + * M2_N2	: Program dp_m2_n2 on M1_N1 registers
> + *			  M2_N2 registers are not supported
> + */
> +
> +enum link_m_n_set {
> +	/* Sets the m1_n1 and m2_n2 */
> +	M1_N1 = 0,
> +	M2_N2
> +};
> +
>   struct intel_dp {
>   	uint32_t output_reg;
>   	uint32_t aux_ch_ctl_reg;
> @@ -994,7 +1014,7 @@ void hsw_enable_pc8(struct drm_i915_private *dev_priv);
>   void hsw_disable_pc8(struct drm_i915_private *dev_priv);
>   void intel_dp_get_m_n(struct intel_crtc *crtc,
>   		      struct intel_crtc_state *pipe_config);
> -void intel_dp_set_m_n(struct intel_crtc *crtc);
> +void intel_dp_set_m_n(struct intel_crtc *crtc, enum link_m_n_set m_n);
>   int intel_dotclock_calculate(int link_freq, const struct intel_link_m_n *m_n);
>   void
>   ironlake_check_encoder_dotclock(const struct intel_crtc_state *pipe_config,

-- 
Ram

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-02-11 13:03 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-09 20:55 [PATCH v3 0/10] eDP DRRS based on frontbuffer tracking Vandana Kannan
2015-01-09 20:55 ` [PATCH 1/10] drm/i915: Modifying structures related to DRRS Vandana Kannan
2015-01-14  1:27   ` Rodrigo Vivi
2015-01-22  6:48     ` Daniel Vetter
2015-01-22 11:35       ` Ramalingam C
2015-01-09 20:55 ` [PATCH 2/10] drm/i915: Initialize DRRS delayed work Vandana Kannan
2015-01-11 12:52   ` Chris Wilson
2015-01-21 11:04     ` Ramalingam C
2015-01-22  9:44       ` [PATCH] " Ramalingam C
2015-01-23 23:24         ` Rodrigo Vivi
2015-01-09 20:55 ` [PATCH 3/10] drm/i915: Enable/disable DRRS Vandana Kannan
2015-01-15 22:46   ` Rodrigo Vivi
2015-01-21 11:15     ` Ramalingam C
2015-01-22  9:47       ` [PATCH] " Ramalingam C
2015-01-23 23:25         ` Rodrigo Vivi
2015-01-26  7:31         ` Daniel Vetter
2015-01-26 19:00           ` Rodrigo Vivi
2015-01-09 20:55 ` [PATCH 4/10] drm/i915: DRRS calls based on frontbuffer Vandana Kannan
2015-01-15 22:49   ` Rodrigo Vivi
2015-01-26  7:44     ` Daniel Vetter
2015-02-11 12:43   ` [PATCH 1/6] drm/i915: Add support for DRRS in intel_dp_set_m_n Ramalingam C
2015-02-11 12:58     ` Ramalingam C [this message]
2015-01-09 20:56 ` [PATCH 5/10] drm/i915/bdw: Add support for DRRS to switch RR Vandana Kannan
2015-01-15 23:00   ` Rodrigo Vivi
2015-01-21 11:19     ` Ramalingam C
2015-01-22  9:50       ` [PATCH] " Ramalingam C
2015-01-22 16:40         ` Ramalingam C
2015-01-24  0:00           ` Rodrigo Vivi
2015-02-11 12:48             ` Ramalingam C
2015-01-09 20:56 ` [PATCH 6/10] drm/i915: Support for RR switching on VLV Vandana Kannan
2015-01-15 23:06   ` Rodrigo Vivi
2015-01-09 20:56 ` [PATCH 7/10] drm/i915: Enable eDP DRRS for CHV Vandana Kannan
2015-01-15 23:11   ` Rodrigo Vivi
2015-01-21 12:13     ` Ramalingam C
2015-01-21 15:03       ` Rodrigo Vivi
2015-01-22 10:54         ` Ramalingam C
2015-01-24  0:05   ` Rodrigo Vivi
2015-01-09 20:56 ` [PATCH 8/10] Documentation/drm: DocBook integration for DRRS Vandana Kannan
2015-01-15 23:16   ` Rodrigo Vivi
2015-01-20  9:12     ` Daniel Vetter
2015-01-09 20:56 ` [PATCH 9/10] drm/i915: Add debugfs entry " Vandana Kannan
2015-01-11 12:40   ` Chris Wilson
2015-01-15 23:18     ` Rodrigo Vivi
2015-01-21 12:26       ` Ramalingam C
2015-01-22 16:45         ` [PATCH] " Ramalingam C
2015-01-23 16:03           ` Daniel Vetter
2015-01-23 17:47             ` Ramalingam C
2015-01-23 17:52               ` Ramalingam C
2015-01-24  0:13                 ` Rodrigo Vivi
2015-02-11 12:52                   ` Ramalingam C
2015-01-09 20:56 ` [PATCH 10/10] kms_drrs: Test DRRS entry and exit Vandana Kannan
2015-01-15 23:24   ` Rodrigo Vivi
2015-01-20  9:11     ` Daniel Vetter
2015-01-21 12:31       ` Ramalingam C
  -- strict thread matches above, loose matches on Subject: below --
2015-02-13 10:02 [PATCH 0/6] eDP DRRS based on frontbuffer tracking Ramalingam C
2015-02-13 10:02 ` [PATCH 1/6] drm/i915: Add support for DRRS in intel_dp_set_m_n Ramalingam C
2015-02-19 17:22   ` Rodrigo Vivi

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=54DB5209.1030003@intel.com \
    --to=ramalingam.c@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=paulo.r.zanoni@intel.com \
    --cc=rodrigo.vivi@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.