Merge branch linux-tegra-2.6.36 into android-tegra-2.6.36
authorErik Gilling <konkers@android.com>
Tue, 19 Apr 2011 20:36:37 +0000 (13:36 -0700)
committerErik Gilling <konkers@android.com>
Tue, 19 Apr 2011 20:36:39 +0000 (13:36 -0700)
Change-Id: I023482f230dc4f413647f47b3c7c36fd4c98b97d

drivers/video/tegra/dc/dc.c
drivers/video/tegra/dc/dc_priv.h
drivers/video/tegra/dc/nvhdcp.c

index 43d31840fd34e28612c931ed50865991cfc2418d..a61e86fb5dd7a7d7bd712b39c68c7d52caf5b81e 100644 (file)
@@ -1103,7 +1103,9 @@ void tegra_dc_disable(struct tegra_dc *dc)
 
        if (dc->enabled) {
                dc->enabled = false;
-               _tegra_dc_disable(dc);
+
+               if (!dc->suspended)
+                       _tegra_dc_disable(dc);
        }
 
        mutex_unlock(&dc->lock);
@@ -1335,6 +1337,8 @@ static int tegra_dc_suspend(struct nvhost_device *ndev, pm_message_t state)
        if (dc->enabled) {
                tegra_fb_suspend(dc->fb);
                _tegra_dc_disable(dc);
+
+               dc->suspended = true;
        }
        mutex_unlock(&dc->lock);
 
@@ -1348,6 +1352,8 @@ static int tegra_dc_resume(struct nvhost_device *ndev)
        dev_info(&ndev->dev, "resume\n");
 
        mutex_lock(&dc->lock);
+       dc->suspended = false;
+
        if (dc->enabled)
                _tegra_dc_enable(dc);
 
index 3f7fdbff023b0fd22e69540bf3309ac826fffe15..c8476f8b5ffc3d14f07ee3367fdf49d7a9ea9e69 100644 (file)
@@ -63,6 +63,7 @@ struct tegra_dc {
        struct clk                      *emc_clk;
 
        bool                            enabled;
+       bool                            suspended;
 
        struct tegra_dc_out             *out;
        struct tegra_dc_out_ops         *out_ops;
index 7c8869a563f55578901eec1df8ad636c0a436e4a..5c2d9050a14b92128d28ec1b50a996b2d258b19b 100644 (file)
@@ -354,6 +354,9 @@ static int get_ksvfifo(struct tegra_nvhdcp *nvhdcp,
        if (!ksv_list || num_bksv_list > TEGRA_NVHDCP_MAX_DEVS)
                return -EINVAL;
 
+       if (num_bksv_list == 0)
+               return 0;
+
        buf = kmalloc(buf_len, GFP_KERNEL);
        if (IS_ERR_OR_NULL(buf))
                return -ENOMEM;