From: Paulo Zanoni <przanoni@gmail.com>
To: intel-gfx@lists.freedesktop.org
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: [PATCH 3/6] drm/i915: initialize FDI RX interrupts
Date: Wed, 5 Jun 2013 14:21:53 -0300 [thread overview]
Message-ID: <1370452916-3406-4-git-send-email-przanoni@gmail.com> (raw)
In-Reply-To: <1370452916-3406-1-git-send-email-przanoni@gmail.com>
From: Paulo Zanoni <paulo.r.zanoni@intel.com>
Initialize (disable) the FDI RX interrupts when initializing the
driver. The code that uses those interrupts already takes care of
properly unmasking the needed ones before using them.
This patch will make sure we never get undesired FDI RX interrupts,
and then when we enable package C8+ states on Haswell all we'll need
to do is to check that we still don't have any pending interrupt,
since Haswell doesn't use the FDI RX interrupts.
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
drivers/gpu/drm/i915/i915_irq.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 6706d89..33f404e 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2475,6 +2475,7 @@ void i915_hangcheck_elapsed(unsigned long data)
static void ibx_irq_preinstall(struct drm_device *dev)
{
struct drm_i915_private *dev_priv = dev->dev_private;
+ enum pipe pipe;
if (HAS_PCH_NOP(dev))
return;
@@ -2489,6 +2490,14 @@ static void ibx_irq_preinstall(struct drm_device *dev)
*/
I915_WRITE(SDEIER, 0xffffffff);
POSTING_READ(SDEIER);
+
+ for_each_pipe(pipe) {
+ I915_WRITE(FDI_RX_IMR(pipe), 0xffffffff);
+ POSTING_READ(FDI_RX_IMR(pipe));
+ /* Only 1 PCH transcoder. */
+ if (HAS_PCH_LPT(dev))
+ break;
+ }
}
/* drm_dma.h hooks
@@ -2621,6 +2630,7 @@ static void ibx_irq_postinstall(struct drm_device *dev)
{
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
u32 mask;
+ enum pipe pipe;
if (HAS_PCH_NOP(dev))
return;
@@ -2636,6 +2646,14 @@ static void ibx_irq_postinstall(struct drm_device *dev)
I915_WRITE(SDEIIR, I915_READ(SDEIIR));
I915_WRITE(SDEIMR, ~mask);
+
+ for_each_pipe(pipe) {
+ I915_WRITE(FDI_RX_IMR(pipe), 0xffffffff);
+ I915_WRITE(FDI_RX_IIR(pipe), I915_READ(FDI_RX_IIR(pipe)));
+ /* Only 1 PCH transcoder. */
+ if (HAS_PCH_LPT(dev))
+ break;
+ }
}
static int ironlake_irq_postinstall(struct drm_device *dev)
@@ -2831,6 +2849,7 @@ static void valleyview_irq_uninstall(struct drm_device *dev)
static void ironlake_irq_uninstall(struct drm_device *dev)
{
drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
+ enum pipe pipe;
if (!dev_priv)
return;
@@ -2863,6 +2882,14 @@ static void ironlake_irq_uninstall(struct drm_device *dev)
I915_WRITE(SDEIIR, I915_READ(SDEIIR));
if (HAS_PCH_CPT(dev) || HAS_PCH_LPT(dev))
I915_WRITE(SERR_INT, I915_READ(SERR_INT));
+
+ for_each_pipe(pipe) {
+ I915_WRITE(FDI_RX_IMR(pipe), 0xffffffff);
+ I915_WRITE(FDI_RX_IIR(pipe), I915_READ(FDI_RX_IIR(pipe)));
+ /* Only 1 PCH transcoder. */
+ if (HAS_PCH_LPT(dev))
+ break;
+ }
}
static void i8xx_irq_preinstall(struct drm_device * dev)
--
1.8.1.2
next prev parent reply other threads:[~2013-06-05 17:22 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 17:21 [PATCH 0/6] Enable PC8+ states Paulo Zanoni
2013-06-05 17:21 ` [PATCH 1/6] drm/i915: add ibx_irq_preinstall Paulo Zanoni
2013-06-06 11:41 ` Daniel Vetter
2013-06-05 17:21 ` [PATCH 2/6] drm/i915: initialize Haswell audio interrupts Paulo Zanoni
2013-06-05 17:21 ` Paulo Zanoni [this message]
2013-06-05 17:21 ` [PATCH 4/6] drm/i915: initialize the Haswell SRD interrupts Paulo Zanoni
2013-06-05 17:21 ` [PATCH 5/6] drm/i915: initialize the PCH GTC interrupts Paulo Zanoni
2013-06-05 17:21 ` [PATCH 6/6] drm/i915: implement HSW display sequences for package C8+ Paulo Zanoni
2013-06-06 6:49 ` Chris Wilson
2013-06-06 7:40 ` Daniel Vetter
2013-06-12 16:27 ` [PATCH 0/6] Enable PC8+ states 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=1370452916-3406-4-git-send-email-przanoni@gmail.com \
--to=przanoni@gmail.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@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.