From: Daniel Vetter <daniel@ffwll.ch>
To: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 2/4] drm/i915: Pass dev_priv to vlv_gpu_freq() and vlv_freq_opcode()
Date: Wed, 6 Nov 2013 18:06:25 +0100 [thread overview]
Message-ID: <20131106170625.GL14082@phenom.ffwll.local> (raw)
In-Reply-To: <20131105130147.77291b50@jbarnes-desktop>
On Tue, Nov 05, 2013 at 01:01:47PM -0800, Jesse Barnes wrote:
> On Tue, 5 Nov 2013 22:42:29 +0200
> ville.syrjala@linux.intel.com wrote:
>
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > We'll be looking at more than just mem_freq from dev_priv, so
> > just pass the whole thing.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
First two patches in this series merged to dinq, thanks.
-Daniel
> > ---
> > drivers/gpu/drm/i915/i915_debugfs.c | 17 +++++++----------
> > drivers/gpu/drm/i915/i915_drv.h | 4 ++--
> > drivers/gpu/drm/i915/i915_sysfs.c | 13 ++++++-------
> > drivers/gpu/drm/i915/intel_pm.c | 38 ++++++++++++++++---------------------
> > 4 files changed, 31 insertions(+), 41 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
> > index 7008aac..9770c2f 100644
> > --- a/drivers/gpu/drm/i915/i915_debugfs.c
> > +++ b/drivers/gpu/drm/i915/i915_debugfs.c
> > @@ -974,15 +974,14 @@ static int i915_cur_delayinfo(struct seq_file *m, void *unused)
> >
> > val = vlv_punit_read(dev_priv, PUNIT_FUSE_BUS1);
> > seq_printf(m, "max GPU freq: %d MHz\n",
> > - vlv_gpu_freq(dev_priv->mem_freq, val));
> > + vlv_gpu_freq(dev_priv, val));
> >
> > val = vlv_punit_read(dev_priv, PUNIT_REG_GPU_LFM);
> > seq_printf(m, "min GPU freq: %d MHz\n",
> > - vlv_gpu_freq(dev_priv->mem_freq, val));
> > + vlv_gpu_freq(dev_priv, val));
> >
> > seq_printf(m, "current GPU freq: %d MHz\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - (freq_sts >> 8) & 0xff));
> > + vlv_gpu_freq(dev_priv, (freq_sts >> 8) & 0xff));
> > mutex_unlock(&dev_priv->rps.hw_lock);
> > } else {
> > seq_puts(m, "no P-state info available\n");
> > @@ -2725,8 +2724,7 @@ i915_max_freq_get(void *data, u64 *val)
> > return ret;
> >
> > if (IS_VALLEYVIEW(dev))
> > - *val = vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.max_delay);
> > + *val = vlv_gpu_freq(dev_priv, dev_priv->rps.max_delay);
> > else
> > *val = dev_priv->rps.max_delay * GT_FREQUENCY_MULTIPLIER;
> > mutex_unlock(&dev_priv->rps.hw_lock);
> > @@ -2756,7 +2754,7 @@ i915_max_freq_set(void *data, u64 val)
> > * Turbo will still be enabled, but won't go above the set value.
> > */
> > if (IS_VALLEYVIEW(dev)) {
> > - val = vlv_freq_opcode(dev_priv->mem_freq, val);
> > + val = vlv_freq_opcode(dev_priv, val);
> > dev_priv->rps.max_delay = val;
> > gen6_set_rps(dev, val);
> > } else {
> > @@ -2791,8 +2789,7 @@ i915_min_freq_get(void *data, u64 *val)
> > return ret;
> >
> > if (IS_VALLEYVIEW(dev))
> > - *val = vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.min_delay);
> > + *val = vlv_gpu_freq(dev_priv, dev_priv->rps.min_delay);
> > else
> > *val = dev_priv->rps.min_delay * GT_FREQUENCY_MULTIPLIER;
> > mutex_unlock(&dev_priv->rps.hw_lock);
> > @@ -2822,7 +2819,7 @@ i915_min_freq_set(void *data, u64 val)
> > * Turbo will still be enabled, but won't go below the set value.
> > */
> > if (IS_VALLEYVIEW(dev)) {
> > - val = vlv_freq_opcode(dev_priv->mem_freq, val);
> > + val = vlv_freq_opcode(dev_priv, val);
> > dev_priv->rps.min_delay = val;
> > valleyview_set_rps(dev, val);
> > } else {
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> > index 2aa7053..4bae871 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -2412,8 +2412,8 @@ u32 intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg,
> > void intel_sbi_write(struct drm_i915_private *dev_priv, u16 reg, u32 value,
> > enum intel_sbi_destination destination);
> >
> > -int vlv_gpu_freq(int ddr_freq, int val);
> > -int vlv_freq_opcode(int ddr_freq, int val);
> > +int vlv_gpu_freq(struct drm_i915_private *dev_priv, int val);
> > +int vlv_freq_opcode(struct drm_i915_private *dev_priv, int val);
> >
> > #define I915_READ8(reg) dev_priv->uncore.funcs.mmio_readb(dev_priv, (reg), true)
> > #define I915_WRITE8(reg, val) dev_priv->uncore.funcs.mmio_writeb(dev_priv, (reg), (val), true)
> > diff --git a/drivers/gpu/drm/i915/i915_sysfs.c b/drivers/gpu/drm/i915/i915_sysfs.c
> > index cef38fd..5e81cf1 100644
> > --- a/drivers/gpu/drm/i915/i915_sysfs.c
> > +++ b/drivers/gpu/drm/i915/i915_sysfs.c
> > @@ -259,7 +259,7 @@ static ssize_t gt_cur_freq_mhz_show(struct device *kdev,
> > if (IS_VALLEYVIEW(dev_priv->dev)) {
> > u32 freq;
> > freq = vlv_punit_read(dev_priv, PUNIT_REG_GPU_FREQ_STS);
> > - ret = vlv_gpu_freq(dev_priv->mem_freq, (freq >> 8) & 0xff);
> > + ret = vlv_gpu_freq(dev_priv, (freq >> 8) & 0xff);
> > } else {
> > ret = dev_priv->rps.cur_delay * GT_FREQUENCY_MULTIPLIER;
> > }
> > @@ -276,8 +276,7 @@ static ssize_t vlv_rpe_freq_mhz_show(struct device *kdev,
> > struct drm_i915_private *dev_priv = dev->dev_private;
> >
> > return snprintf(buf, PAGE_SIZE, "%d\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.rpe_delay));
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.rpe_delay));
> > }
> >
> > static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute *attr, char *buf)
> > @@ -291,7 +290,7 @@ static ssize_t gt_max_freq_mhz_show(struct device *kdev, struct device_attribute
> >
> > mutex_lock(&dev_priv->rps.hw_lock);
> > if (IS_VALLEYVIEW(dev_priv->dev))
> > - ret = vlv_gpu_freq(dev_priv->mem_freq, dev_priv->rps.max_delay);
> > + ret = vlv_gpu_freq(dev_priv, dev_priv->rps.max_delay);
> > else
> > ret = dev_priv->rps.max_delay * GT_FREQUENCY_MULTIPLIER;
> > mutex_unlock(&dev_priv->rps.hw_lock);
> > @@ -318,7 +317,7 @@ static ssize_t gt_max_freq_mhz_store(struct device *kdev,
> > mutex_lock(&dev_priv->rps.hw_lock);
> >
> > if (IS_VALLEYVIEW(dev_priv->dev)) {
> > - val = vlv_freq_opcode(dev_priv->mem_freq, val);
> > + val = vlv_freq_opcode(dev_priv, val);
> >
> > hw_max = valleyview_rps_max_freq(dev_priv);
> > hw_min = valleyview_rps_min_freq(dev_priv);
> > @@ -367,7 +366,7 @@ static ssize_t gt_min_freq_mhz_show(struct device *kdev, struct device_attribute
> >
> > mutex_lock(&dev_priv->rps.hw_lock);
> > if (IS_VALLEYVIEW(dev_priv->dev))
> > - ret = vlv_gpu_freq(dev_priv->mem_freq, dev_priv->rps.min_delay);
> > + ret = vlv_gpu_freq(dev_priv, dev_priv->rps.min_delay);
> > else
> > ret = dev_priv->rps.min_delay * GT_FREQUENCY_MULTIPLIER;
> > mutex_unlock(&dev_priv->rps.hw_lock);
> > @@ -394,7 +393,7 @@ static ssize_t gt_min_freq_mhz_store(struct device *kdev,
> > mutex_lock(&dev_priv->rps.hw_lock);
> >
> > if (IS_VALLEYVIEW(dev)) {
> > - val = vlv_freq_opcode(dev_priv->mem_freq, val);
> > + val = vlv_freq_opcode(dev_priv, val);
> >
> > hw_max = valleyview_rps_max_freq(dev_priv);
> > hw_min = valleyview_rps_min_freq(dev_priv);
> > diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> > index 865035b..f5bb9b3 100644
> > --- a/drivers/gpu/drm/i915/intel_pm.c
> > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > @@ -3609,9 +3609,9 @@ static void vlv_update_rps_cur_delay(struct drm_i915_private *dev_priv)
> >
> > if (pval != dev_priv->rps.cur_delay)
> > DRM_DEBUG_DRIVER("Punit overrode GPU freq: %d MHz (%u) requested, but got %d Mhz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq, dev_priv->rps.cur_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.cur_delay),
> > dev_priv->rps.cur_delay,
> > - vlv_gpu_freq(dev_priv->mem_freq, pval), pval);
> > + vlv_gpu_freq(dev_priv, pval), pval);
> >
> > dev_priv->rps.cur_delay = pval;
> > }
> > @@ -3629,10 +3629,9 @@ void valleyview_set_rps(struct drm_device *dev, u8 val)
> > vlv_update_rps_cur_delay(dev_priv);
> >
> > DRM_DEBUG_DRIVER("GPU freq request from %d MHz (%u) to %d MHz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.cur_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.cur_delay),
> > dev_priv->rps.cur_delay,
> > - vlv_gpu_freq(dev_priv->mem_freq, val), val);
> > + vlv_gpu_freq(dev_priv, val), val);
> >
> > if (val == dev_priv->rps.cur_delay)
> > return;
> > @@ -3641,7 +3640,7 @@ void valleyview_set_rps(struct drm_device *dev, u8 val)
> >
> > dev_priv->rps.cur_delay = val;
> >
> > - trace_intel_gpu_freq_change(vlv_gpu_freq(dev_priv->mem_freq, val));
> > + trace_intel_gpu_freq_change(vlv_gpu_freq(dev_priv, val));
> > }
> >
> > static void gen6_disable_rps_interrupts(struct drm_device *dev)
> > @@ -4070,32 +4069,27 @@ static void valleyview_enable_rps(struct drm_device *dev)
> >
> > dev_priv->rps.cur_delay = (val >> 8) & 0xff;
> > DRM_DEBUG_DRIVER("current GPU freq: %d MHz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.cur_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.cur_delay),
> > dev_priv->rps.cur_delay);
> >
> > dev_priv->rps.max_delay = valleyview_rps_max_freq(dev_priv);
> > dev_priv->rps.hw_max = dev_priv->rps.max_delay;
> > DRM_DEBUG_DRIVER("max GPU freq: %d MHz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.max_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.max_delay),
> > dev_priv->rps.max_delay);
> >
> > dev_priv->rps.rpe_delay = valleyview_rps_rpe_freq(dev_priv);
> > DRM_DEBUG_DRIVER("RPe GPU freq: %d MHz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.rpe_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.rpe_delay),
> > dev_priv->rps.rpe_delay);
> >
> > dev_priv->rps.min_delay = valleyview_rps_min_freq(dev_priv);
> > DRM_DEBUG_DRIVER("min GPU freq: %d MHz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.min_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.min_delay),
> > dev_priv->rps.min_delay);
> >
> > DRM_DEBUG_DRIVER("setting GPU freq to %d MHz (%u)\n",
> > - vlv_gpu_freq(dev_priv->mem_freq,
> > - dev_priv->rps.rpe_delay),
> > + vlv_gpu_freq(dev_priv, dev_priv->rps.rpe_delay),
> > dev_priv->rps.rpe_delay);
> >
> > valleyview_set_rps(dev_priv->dev, dev_priv->rps.rpe_delay);
> > @@ -5945,12 +5939,12 @@ int sandybridge_pcode_write(struct drm_i915_private *dev_priv, u8 mbox, u32 val)
> > return 0;
> > }
> >
> > -int vlv_gpu_freq(int ddr_freq, int val)
> > +int vlv_gpu_freq(struct drm_i915_private *dev_priv, int val)
> > {
> > int div;
> >
> > /* 4 x czclk */
> > - switch (ddr_freq) {
> > + switch (dev_priv->mem_freq) {
> > case 800:
> > div = 10;
> > break;
> > @@ -5964,15 +5958,15 @@ int vlv_gpu_freq(int ddr_freq, int val)
> > return -1;
> > }
> >
> > - return DIV_ROUND_CLOSEST(ddr_freq * (val + 6 - 0xbd), 4 * div);
> > + return DIV_ROUND_CLOSEST(dev_priv->mem_freq * (val + 6 - 0xbd), 4 * div);
> > }
> >
> > -int vlv_freq_opcode(int ddr_freq, int val)
> > +int vlv_freq_opcode(struct drm_i915_private *dev_priv, int val)
> > {
> > int mul;
> >
> > /* 4 x czclk */
> > - switch (ddr_freq) {
> > + switch (dev_priv->mem_freq) {
> > case 800:
> > mul = 10;
> > break;
> > @@ -5986,7 +5980,7 @@ int vlv_freq_opcode(int ddr_freq, int val)
> > return -1;
> > }
> >
> > - return DIV_ROUND_CLOSEST(4 * mul * val, ddr_freq) + 0xbd - 6;
> > + return DIV_ROUND_CLOSEST(4 * mul * val, dev_priv->mem_freq) + 0xbd - 6;
> > }
> >
> > void intel_pm_init(struct drm_device *dev)
>
> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
>
> --
> Jesse Barnes, Intel Open Source Technology Center
> _______________________________________________
> 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
next prev parent reply other threads:[~2013-11-06 17:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-05 20:42 [PATCH 0/4] drm/i915: VLV graphics clock improvements ville.syrjala
2013-11-05 20:42 ` [PATCH 1/4] drm/i915: Improve vlv_gpu_freq() and vlv_freq_opcode() ville.syrjala
2013-11-06 16:56 ` Jesse Barnes
2013-11-05 20:42 ` [PATCH 2/4] drm/i915: Pass dev_priv to " ville.syrjala
2013-11-05 21:01 ` Jesse Barnes
2013-11-06 17:06 ` Daniel Vetter [this message]
2013-11-05 20:42 ` [PATCH 3/4] drm/i915: Store HPLL frequency in dev_priv on VLV ville.syrjala
2013-11-05 21:02 ` Jesse Barnes
2013-11-06 8:41 ` Ville Syrjälä
2013-11-06 10:02 ` Daniel Vetter
2013-11-05 20:42 ` [PATCH 4/4] drm/i915: Add support for VLV GPLL bypass ville.syrjala
2013-11-05 21:03 ` Jesse Barnes
2013-11-06 17:07 ` 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=20131106170625.GL14082@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jbarnes@virtuousgeek.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.