]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: hdmi: check dc powergating status
authorAnshuman Nath Kar <anshumank@nvidia.com>
Thu, 29 May 2014 00:43:07 +0000 (17:43 -0700)
committerEric Chuang <echuang@nvidia.com>
Sun, 6 Jul 2014 01:41:51 +0000 (18:41 -0700)
Add checks for dc clockgating and powergating before
reading or writing from dc hdmi registers

Bug 200005903
Bug 1514732
Bug 200017536
Bug 200018316
Bug 200018314

Change-Id: I5155af72a0529d167bf56b016d9238501c5b4229
Signed-off-by: Anshuman Nath Kar <anshumank@nvidia.com>
Reviewed-on: http://git-master/r/434863
Reviewed-by: Eric Chuang <echuang@nvidia.com>
drivers/video/tegra/dc/hdmi.c

index 480ae8a476c5861fc27869b958b56584df6b5e2b..47bebab570a3934a76b624341fa36cc8a2001256 100644 (file)
@@ -421,6 +421,12 @@ unsigned long tegra_hdmi_readl(struct tegra_dc_hdmi_data *hdmi,
                                             unsigned long reg)
 {
        unsigned long ret;
+
+       if (WARN(!tegra_is_clk_enabled(hdmi->dc->clk), "DC is clock-gated.\n") ||
+               WARN(!tegra_powergate_is_powered(hdmi->dc->powergate_id),
+                       "DC is power-gated.\n"))
+               return 0;
+
        ret = readl(hdmi->base + reg * 4);
        trace_display_readl(hdmi->dc, ret, hdmi->base + reg * 4);
        return ret;
@@ -429,6 +435,11 @@ unsigned long tegra_hdmi_readl(struct tegra_dc_hdmi_data *hdmi,
 void tegra_hdmi_writel(struct tegra_dc_hdmi_data *hdmi,
                                     unsigned long val, unsigned long reg)
 {
+       if (WARN(!tegra_is_clk_enabled(hdmi->dc->clk), "DC is clock-gated.\n") ||
+               WARN(!tegra_powergate_is_powered(hdmi->dc->powergate_id),
+                       "DC is power-gated.\n"))
+               return;
+
        trace_display_writel(hdmi->dc, val, hdmi->base + reg * 4);
        writel(val, hdmi->base + reg * 4);
 }