Commit 833dd822 authored by Ben Skeggs's avatar Ben Skeggs

drm/nvc0/fifo: ignore bits in PFIFO_INTR that aren't set in PFIFO_INTR_EN

PFIFO_INTR = 0x40000000 appears to be a normal case on nvc0/nve0 PFIFO,
the binary driver appears to completely ignore it in its PFIFO interrupt
handler and even masks off the bit (as we do) in PFIFO_INTR_EN at init
time.

The bits still light up in the hardware sometimes though, so lets just
ignore any bits we haven't explicitely requested.
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 79eee7aa
...@@ -373,7 +373,8 @@ nvc0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit) ...@@ -373,7 +373,8 @@ nvc0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit)
static void static void
nvc0_fifo_isr(struct drm_device *dev) nvc0_fifo_isr(struct drm_device *dev)
{ {
u32 stat = nv_rd32(dev, 0x002100); u32 mask = nv_rd32(dev, 0x002140);
u32 stat = nv_rd32(dev, 0x002100) & mask;
if (stat & 0x00000100) { if (stat & 0x00000100) {
NV_INFO(dev, "PFIFO: unknown status 0x00000100\n"); NV_INFO(dev, "PFIFO: unknown status 0x00000100\n");
......
...@@ -345,7 +345,8 @@ nve0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit) ...@@ -345,7 +345,8 @@ nve0_fifo_isr_subfifo_intr(struct drm_device *dev, int unit)
static void static void
nve0_fifo_isr(struct drm_device *dev) nve0_fifo_isr(struct drm_device *dev)
{ {
u32 stat = nv_rd32(dev, 0x002100); u32 mask = nv_rd32(dev, 0x002140);
u32 stat = nv_rd32(dev, 0x002100) & mask;
if (stat & 0x00000100) { if (stat & 0x00000100) {
NV_INFO(dev, "PFIFO: unknown status 0x00000100\n"); NV_INFO(dev, "PFIFO: unknown status 0x00000100\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment