diff options
-rw-r--r-- | drivers/video/tegra/host/bus_client.c | 1 | ||||
-rw-r--r-- | drivers/video/tegra/host/gr3d/scale3d.c | 33 |
2 files changed, 22 insertions, 12 deletions
diff --git a/drivers/video/tegra/host/bus_client.c b/drivers/video/tegra/host/bus_client.c index 736f3da0bdec..940f04a40e89 100644 --- a/drivers/video/tegra/host/bus_client.c +++ b/drivers/video/tegra/host/bus_client.c @@ -600,7 +600,6 @@ int nvhost_client_device_suspend(struct nvhost_device *dev) if (ret) return ret; - ret = nvhost_module_suspend(dev, true); dev_info(&dev->dev, "suspend status: %d\n", ret); return ret; diff --git a/drivers/video/tegra/host/gr3d/scale3d.c b/drivers/video/tegra/host/gr3d/scale3d.c index 24618f8a4a11..8a267a127ea9 100644 --- a/drivers/video/tegra/host/gr3d/scale3d.c +++ b/drivers/video/tegra/host/gr3d/scale3d.c @@ -153,6 +153,9 @@ static void scale3d_clocks_handler(struct work_struct *work) void nvhost_scale3d_suspend(struct nvhost_device *dev) { + if (!scale3d.enable) + return; + cancel_work_sync(&scale3d.work); cancel_delayed_work(&scale3d.idle_timer); } @@ -174,6 +177,9 @@ static int scale3d_is_enabled(void) { int enable; + if (!scale3d.enable) + return 0; + mutex_lock(&scale3d.lock); enable = scale3d.enable; mutex_unlock(&scale3d.lock); @@ -373,10 +379,10 @@ void nvhost_scale3d_notify_idle(struct nvhost_device *dev) ktime_t t; unsigned long dt; - mutex_lock(&scale3d.lock); - if (!scale3d.enable) - goto done; + return; + + mutex_lock(&scale3d.lock); t = ktime_get(); @@ -398,7 +404,6 @@ void nvhost_scale3d_notify_idle(struct nvhost_device *dev) msecs_to_jiffies((scale3d.idle_max * scale3d.fast_response) / 50000)); -done: mutex_unlock(&scale3d.lock); } @@ -408,10 +413,10 @@ void nvhost_scale3d_notify_busy(struct nvhost_device *dev) unsigned long short_term_idle; ktime_t t; - mutex_lock(&scale3d.lock); - if (!scale3d.enable) - goto done; + return; + + mutex_lock(&scale3d.lock); cancel_delayed_work(&scale3d.idle_timer); @@ -429,7 +434,6 @@ void nvhost_scale3d_notify_busy(struct nvhost_device *dev) scaling_state_check(t); -done: mutex_unlock(&scale3d.lock); } @@ -437,10 +441,12 @@ static void scale3d_idle_handler(struct work_struct *work) { int notify_idle = 0; + if (!scale3d.enable) + return; + mutex_lock(&scale3d.lock); - if (scale3d.enable && scale3d.is_idle && - tegra_is_clk_enabled(scale3d.clk_3d)) { + if (scale3d.is_idle && tegra_is_clk_enabled(scale3d.clk_3d)) { unsigned long curr = clk_get_rate(scale3d.clk_3d); if (curr > scale3d.min_rate_3d) notify_idle = 1; @@ -454,7 +460,12 @@ static void scale3d_idle_handler(struct work_struct *work) void nvhost_scale3d_reset() { - ktime_t t = ktime_get(); + ktime_t t; + + if (!scale3d.enable) + return; + + t = ktime_get(); mutex_lock(&scale3d.lock); reset_scaling_counters(t); mutex_unlock(&scale3d.lock); |