video: tegra: host: Init intr hw after poweron
Arto Merilainen [Wed, 28 Aug 2013 11:27:40 +0000 (14:27 +0300)]
Interrupt initialisation was performed without powering on host1x.
This change adds full separation between software
(nvhost_intr_init()) and hardware (nvhost_intr_start())
initialisations.

Bug 1349710

Change-Id: I5bc1910c9c5dec702b8cc8acce099b434f9cc477
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/267354
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>

drivers/video/tegra/host/host1x/host1x.c
drivers/video/tegra/host/nvhost_intr.c

index 47c670d..eab761f 100644 (file)
@@ -673,6 +673,7 @@ static int nvhost_probe(struct platform_device *dev)
        nvhost_module_busy(dev);
 
        nvhost_syncpt_reset(&host->syncpt);
+       nvhost_intr_start(&host->intr, clk_get_rate(pdata->clk[0]));
 
        nvhost_device_list_init();
        err = nvhost_device_list_add(dev);
index 9736adb..719a7fa 100644 (file)
@@ -403,9 +403,7 @@ int nvhost_intr_init(struct nvhost_intr *intr, u32 irq_gen, u32 irq_sync)
        mutex_init(&intr->mutex);
        intr->syncpt_irq = irq_sync;
        intr->wq = create_workqueue("host_syncpt");
-       intr_op().init_host_sync(intr);
        intr->general_irq = irq_gen;
-       intr_op().request_host_general_irq(intr);
 
        for (id = 0, syncpt = intr->syncpt;
             id < nb_pts;