video: tegra: dc: vblank worker
Mark Zhang [Mon, 2 Jul 2012 05:05:25 +0000 (13:05 +0800)]
Freeze vblank worker while suspending by adding the work into
system freezewq. This eliminates a kernel panic caused by nvsd
reading brightness valuesfrom display while clock gated.

Bug 1006180
Bug 1003969
Bug 1003730

Change-Id: Ice9bfb18e5c826ae063c2b901421b1047ff9d2f0
Signed-off-by: Mark Zhang <markz@nvidia.com>
Reviewed-on: http://git-master/r/112880
Reviewed-by: Varun Colbert <vcolbert@nvidia.com>
Tested-by: Varun Colbert <vcolbert@nvidia.com>

drivers/video/tegra/dc/dc.c

index 583ea4e..e0c4027 100644 (file)
@@ -983,7 +983,7 @@ static void tegra_dc_one_shot_irq(struct tegra_dc *dc, unsigned long status)
                tegra_dc_trigger_windows(dc);
 
                /* Schedule any additional bottom-half vblank actvities. */
-               schedule_work(&dc->vblank_work);
+               queue_work(system_freezable_wq, &dc->vblank_work);
        }
 
        if (status & FRAME_END_INT) {
@@ -997,7 +997,7 @@ static void tegra_dc_continuous_irq(struct tegra_dc *dc, unsigned long status)
 {
        /* Schedule any additional bottom-half vblank actvities. */
        if (status & V_BLANK_INT)
-               schedule_work(&dc->vblank_work);
+               queue_work(system_freezable_wq, &dc->vblank_work);
 
        if (status & FRAME_END_INT) {
                /* Mark the frame_end as complete. */