#include <linux/device.h>
 #include <linux/iommu.h>
 #include <linux/iova.h>
+#include <linux/irqreturn.h>
 #include <linux/platform_device.h>
 #include <linux/reset.h>
 
        void (*disable_syncpt_intr)(struct host1x *host, unsigned int id);
        void (*disable_all_syncpt_intrs)(struct host1x *host);
        int (*free_syncpt_irq)(struct host1x *host);
+       irqreturn_t (*isr)(int irq, void *dev_id);
 };
 
 struct host1x_sid_entry {
 
  * Copyright (c) 2010-2013, NVIDIA Corporation.
  */
 
-#include <linux/interrupt.h>
-#include <linux/irq.h>
 #include <linux/io.h>
 
 #include "../intr.h"
 #include "../dev.h"
 
-struct host1x_intr_irq_data {
-       struct host1x *host;
-       u32 offset;
-};
-
 static irqreturn_t syncpt_thresh_isr(int irq, void *dev_id)
 {
        struct host1x_intr_irq_data *irq_data = dev_id;
        }
 }
 
-static void intr_hw_init(struct host1x *host, u32 cpm)
+static int
+host1x_intr_init_host_sync(struct host1x *host, u32 cpm)
 {
 #if HOST1X_HW < 6
        /* disable the ip_busy_timeout. this prevents write drops */
                host1x_sync_writel(host, irq_index, HOST1X_SYNC_SYNCPT_INTR_DEST(id));
        }
 #endif
-}
-
-static int
-host1x_intr_init_host_sync(struct host1x *host, u32 cpm)
-{
-       int err, i;
-       struct host1x_intr_irq_data *irq_data;
-
-       irq_data = devm_kcalloc(host->dev, host->num_syncpt_irqs, sizeof(irq_data[0]), GFP_KERNEL);
-       if (!irq_data)
-               return -ENOMEM;
-
-       host1x_hw_intr_disable_all_syncpt_intrs(host);
-
-       for (i = 0; i < host->num_syncpt_irqs; i++) {
-               irq_data[i].host = host;
-               irq_data[i].offset = i;
-
-               err = devm_request_irq(host->dev, host->syncpt_irqs[i],
-                                      syncpt_thresh_isr, IRQF_SHARED,
-                                      "host1x_syncpt", &irq_data[i]);
-               if (err < 0)
-                       return err;
-       }
-
-       intr_hw_init(host, cpm);
 
        return 0;
 }
        .enable_syncpt_intr = host1x_intr_enable_syncpt_intr,
        .disable_syncpt_intr = host1x_intr_disable_syncpt_intr,
        .disable_all_syncpt_intrs = host1x_intr_disable_all_syncpt_intrs,
+       .isr = syncpt_thresh_isr,
 };
 
  */
 
 #include <linux/clk.h>
-
+#include <linux/interrupt.h>
 #include "dev.h"
 #include "fence.h"
 #include "intr.h"
 
 int host1x_intr_init(struct host1x *host)
 {
+       struct host1x_intr_irq_data *irq_data;
        unsigned int id;
+       int i, err;
 
        mutex_init(&host->intr_mutex);
 
                INIT_LIST_HEAD(&syncpt->fences.list);
        }
 
+       irq_data = devm_kcalloc(host->dev, host->num_syncpt_irqs, sizeof(irq_data[0]), GFP_KERNEL);
+       if (!irq_data)
+               return -ENOMEM;
+
+       host1x_hw_intr_disable_all_syncpt_intrs(host);
+
+       for (i = 0; i < host->num_syncpt_irqs; i++) {
+               irq_data[i].host = host;
+               irq_data[i].offset = i;
+
+               err = devm_request_irq(host->dev, host->syncpt_irqs[i],
+                                      host->intr_op->isr, IRQF_SHARED,
+                                      "host1x_syncpt", &irq_data[i]);
+               if (err < 0)
+                       return err;
+       }
+
        return 0;
 }