From: Jesse Barnes <jbarnes@virtuousgeek.org>
To: Imre Deak <imre.deak@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 03/19] drm/i915: move modeset_update_power_wells earlier
Date: Thu, 20 Feb 2014 11:18:17 -0800 [thread overview]
Message-ID: <20140220111817.2ddaa706@jbarnes-desktop> (raw)
In-Reply-To: <1392674540-10915-4-git-send-email-imre.deak@intel.com>
On Tue, 18 Feb 2014 00:02:04 +0200
Imre Deak <imre.deak@intel.com> wrote:
> These functions will be needed by the valleyview specific power well
> update functionality added in an upcoming patch, so move them earlier.
>
> No functional change.
>
> Signed-off-by: Imre Deak <imre.deak@intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 140 +++++++++++++++++------------------
> 1 file changed, 70 insertions(+), 70 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 17c2033..fa50f6e 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -3953,6 +3953,76 @@ static void i9xx_pfit_enable(struct intel_crtc *crtc)
> I915_WRITE(BCLRPAT(crtc->pipe), 0);
> }
>
> +#define for_each_power_domain(domain, mask) \
> + for ((domain) = 0; (domain) < POWER_DOMAIN_NUM; (domain)++) \
> + if ((1 << (domain)) & (mask))
> +
> +static unsigned long get_pipe_power_domains(struct drm_device *dev,
> + enum pipe pipe, bool pfit_enabled)
> +{
> + unsigned long mask;
> + enum transcoder transcoder;
> +
> + transcoder = intel_pipe_to_cpu_transcoder(dev->dev_private, pipe);
> +
> + mask = BIT(POWER_DOMAIN_PIPE(pipe));
> + mask |= BIT(POWER_DOMAIN_TRANSCODER(transcoder));
> + if (pfit_enabled)
> + mask |= BIT(POWER_DOMAIN_PIPE_PANEL_FITTER(pipe));
> +
> + return mask;
> +}
> +
> +void intel_display_set_init_power(struct drm_i915_private *dev_priv,
> + bool enable)
> +{
> + if (dev_priv->power_domains.init_power_on == enable)
> + return;
> +
> + if (enable)
> + intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
> + else
> + intel_display_power_put(dev_priv, POWER_DOMAIN_INIT);
> +
> + dev_priv->power_domains.init_power_on = enable;
> +}
> +
> +static void modeset_update_power_wells(struct drm_device *dev)
> +{
> + struct drm_i915_private *dev_priv = dev->dev_private;
> + unsigned long pipe_domains[I915_MAX_PIPES] = { 0, };
> + struct intel_crtc *crtc;
> +
> + /*
> + * First get all needed power domains, then put all unneeded, to avoid
> + * any unnecessary toggling of the power wells.
> + */
> + list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) {
> + enum intel_display_power_domain domain;
> +
> + if (!crtc->base.enabled)
> + continue;
> +
> + pipe_domains[crtc->pipe] = get_pipe_power_domains(dev,
> + crtc->pipe,
> + crtc->config.pch_pfit.enabled);
> +
> + for_each_power_domain(domain, pipe_domains[crtc->pipe])
> + intel_display_power_get(dev_priv, domain);
> + }
> +
> + list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) {
> + enum intel_display_power_domain domain;
> +
> + for_each_power_domain(domain, crtc->enabled_power_domains)
> + intel_display_power_put(dev_priv, domain);
> +
> + crtc->enabled_power_domains = pipe_domains[crtc->pipe];
> + }
> +
> + intel_display_set_init_power(dev_priv, false);
> +}
> +
> int valleyview_get_vco(struct drm_i915_private *dev_priv)
> {
> int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 };
> @@ -6838,76 +6908,6 @@ static void hsw_package_c8_gpu_busy(struct drm_i915_private *dev_priv)
> mutex_unlock(&dev_priv->pc8.lock);
> }
>
> -#define for_each_power_domain(domain, mask) \
> - for ((domain) = 0; (domain) < POWER_DOMAIN_NUM; (domain)++) \
> - if ((1 << (domain)) & (mask))
> -
> -static unsigned long get_pipe_power_domains(struct drm_device *dev,
> - enum pipe pipe, bool pfit_enabled)
> -{
> - unsigned long mask;
> - enum transcoder transcoder;
> -
> - transcoder = intel_pipe_to_cpu_transcoder(dev->dev_private, pipe);
> -
> - mask = BIT(POWER_DOMAIN_PIPE(pipe));
> - mask |= BIT(POWER_DOMAIN_TRANSCODER(transcoder));
> - if (pfit_enabled)
> - mask |= BIT(POWER_DOMAIN_PIPE_PANEL_FITTER(pipe));
> -
> - return mask;
> -}
> -
> -void intel_display_set_init_power(struct drm_i915_private *dev_priv,
> - bool enable)
> -{
> - if (dev_priv->power_domains.init_power_on == enable)
> - return;
> -
> - if (enable)
> - intel_display_power_get(dev_priv, POWER_DOMAIN_INIT);
> - else
> - intel_display_power_put(dev_priv, POWER_DOMAIN_INIT);
> -
> - dev_priv->power_domains.init_power_on = enable;
> -}
> -
> -static void modeset_update_power_wells(struct drm_device *dev)
> -{
> - struct drm_i915_private *dev_priv = dev->dev_private;
> - unsigned long pipe_domains[I915_MAX_PIPES] = { 0, };
> - struct intel_crtc *crtc;
> -
> - /*
> - * First get all needed power domains, then put all unneeded, to avoid
> - * any unnecessary toggling of the power wells.
> - */
> - list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) {
> - enum intel_display_power_domain domain;
> -
> - if (!crtc->base.enabled)
> - continue;
> -
> - pipe_domains[crtc->pipe] = get_pipe_power_domains(dev,
> - crtc->pipe,
> - crtc->config.pch_pfit.enabled);
> -
> - for_each_power_domain(domain, pipe_domains[crtc->pipe])
> - intel_display_power_get(dev_priv, domain);
> - }
> -
> - list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) {
> - enum intel_display_power_domain domain;
> -
> - for_each_power_domain(domain, crtc->enabled_power_domains)
> - intel_display_power_put(dev_priv, domain);
> -
> - crtc->enabled_power_domains = pipe_domains[crtc->pipe];
> - }
> -
> - intel_display_set_init_power(dev_priv, false);
> -}
> -
> static void haswell_modeset_global_resources(struct drm_device *dev)
> {
> modeset_update_power_wells(dev);
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
--
Jesse Barnes, Intel Open Source Technology Center
next prev parent reply other threads:[~2014-02-20 19:18 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-17 22:02 [PATCH 00/19] drm/i915: vlv power domains support Imre Deak
2014-02-17 22:02 ` [PATCH 01/19] drm/i915: use drm_i915_private everywhere in the power domain api Imre Deak
2014-02-20 19:16 ` Jesse Barnes
2014-02-17 22:02 ` [PATCH 02/19] drm/i915: fold in __intel_power_well_get/put functions Imre Deak
2014-02-20 19:17 ` Jesse Barnes
2014-02-20 19:44 ` Chris Wilson
2014-02-24 13:23 ` Paulo Zanoni
2014-02-24 14:07 ` Imre Deak
2014-02-17 22:02 ` [PATCH 03/19] drm/i915: move modeset_update_power_wells earlier Imre Deak
2014-02-20 19:18 ` Jesse Barnes [this message]
2014-02-17 22:02 ` [PATCH 04/19] drm/i915: move power domain macros to intel_pm.c Imre Deak
2014-02-20 19:21 ` Jesse Barnes
2014-02-24 13:38 ` Paulo Zanoni
2014-02-24 13:54 ` Imre Deak
2014-02-17 22:02 ` [PATCH 05/19] drm/i915: power domains: add power well ops Imre Deak
2014-02-20 19:26 ` Jesse Barnes
2014-02-24 11:42 ` Imre Deak
2014-02-17 22:02 ` [PATCH 06/19] drm/i915: remove power_well->always_on flag Imre Deak
2014-02-20 19:27 ` Jesse Barnes
2014-02-17 22:02 ` [PATCH 07/19] drm/i915: add port power domains Imre Deak
2014-02-20 19:31 ` Jesse Barnes
2014-02-24 11:52 ` Imre Deak
2014-03-05 10:11 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 08/19] drm/i915: get port power domain in connector detect Imre Deak
2014-02-19 12:35 ` Ville Syrjälä
2014-02-19 12:39 ` Imre Deak
2014-02-20 19:33 ` Jesse Barnes
2014-02-24 11:56 ` Imre Deak
2014-03-05 10:15 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 09/19] drm/i915: check port power domain when reading the encoder hw state Imre Deak
2014-02-20 19:36 ` Jesse Barnes
2014-02-24 12:53 ` Imre Deak
2014-03-05 10:21 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 10/19] drm/i915: check pipe power domain when reading its " Imre Deak
2014-02-20 19:37 ` Jesse Barnes
2014-03-05 10:24 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 11/19] drm/i915: vlv: keep first level vblank IRQs masked Imre Deak
2014-02-18 16:54 ` Ville Syrjälä
2014-02-17 22:02 ` [PATCH 12/19] drm/i915: sanitize PUNIT register macro definitions Imre Deak
2014-02-20 19:46 ` Jesse Barnes
2014-02-24 13:12 ` Imre Deak
2014-02-17 22:02 ` [PATCH 13/19] drm/i915: factor out reset_vblank_counter Imre Deak
2014-02-18 16:55 ` Ville Syrjälä
2014-02-17 22:02 ` [PATCH 14/19] drm/i915: switch order of power domain init wrt. irq install Imre Deak
2014-02-20 19:48 ` Jesse Barnes
2014-02-24 13:23 ` Imre Deak
2014-03-05 10:29 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 15/19] drm/i915: use power domain api to check vga power state Imre Deak
2014-02-20 19:51 ` Jesse Barnes
2014-03-05 10:31 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 16/19] drm/i915: sanity check power well sw state against hw state Imre Deak
2014-02-18 16:55 ` Ville Syrjälä
2014-02-18 17:37 ` Imre Deak
2014-02-18 17:59 ` Ville Syrjälä
2014-03-05 10:32 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 17/19] drm/i915: vlv: factor out valleyview_display_irq_install Imre Deak
2014-02-20 19:56 ` Jesse Barnes
2014-02-24 13:34 ` Imre Deak
2014-02-17 22:02 ` [PATCH 18/19] drm/i915: move hsw power domain comment to its right place Imre Deak
2014-02-20 19:53 ` Jesse Barnes
2014-03-05 10:34 ` Daniel Vetter
2014-02-17 22:02 ` [PATCH 19/19] drm/i915: power domains: add vlv power wells Imre Deak
2014-02-19 12:29 ` Ville Syrjälä
2014-02-20 19:58 ` Jesse Barnes
2014-02-26 18:02 ` Imre Deak
2014-02-26 19:52 ` Jesse Barnes
2014-02-27 10:03 ` Imre Deak
2014-03-05 10:38 ` 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=20140220111817.2ddaa706@jbarnes-desktop \
--to=jbarnes@virtuousgeek.org \
--cc=imre.deak@intel.com \
--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.