summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/dc/dc.c
diff options
context:
space:
mode:
authorDaniel Solomon <daniels@nvidia.com>2014-03-13 15:14:36 -0700
committerAnimesh Kishore <ankishore@nvidia.com>2014-03-27 01:26:46 -0700
commit5a03b6f2f40e28d4d7d2fbb78f70cdcd677f6d36 (patch)
tree7b7d3ca6f81f51cb78e53b833ec71c01280d35cf /drivers/video/tegra/dc/dc.c
parent2b71353873a28d92ca19d777f6f6cea39d567c33 (diff)
video: tegra: dp: update link enable/disable
Update SOR attach sequence and implement SOR detach sequence according to recommended guidelines. Change-Id: Id0d2395508a6e61847e1890ea85d4025300691eb Signed-off-by: Daniel Solomon <daniels@nvidia.com> Reviewed-on: http://git-master/r/381762 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Animesh Kishore <ankishore@nvidia.com> Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Diffstat (limited to 'drivers/video/tegra/dc/dc.c')
-rw-r--r--drivers/video/tegra/dc/dc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/video/tegra/dc/dc.c b/drivers/video/tegra/dc/dc.c
index c2f9dd37bb7f..f2098a1fa147 100644
--- a/drivers/video/tegra/dc/dc.c
+++ b/drivers/video/tegra/dc/dc.c
@@ -935,6 +935,25 @@ static inline void tegra_dc_create_debugfs(struct tegra_dc *dc) { };
static inline void tegra_dc_remove_debugfs(struct tegra_dc *dc) { };
#endif /* CONFIG_DEBUGFS */
+unsigned long tegra_dc_poll_register(struct tegra_dc *dc, u32 reg, u32 mask,
+ u32 exp_val, u32 poll_interval_us, u32 timeout_ms)
+{
+ unsigned long timeout_jf = jiffies + msecs_to_jiffies(timeout_ms);
+ u32 reg_val = 0;
+
+ do {
+ usleep_range(poll_interval_us, poll_interval_us << 1);
+ reg_val = tegra_dc_readl(dc, reg);
+ } while (((reg_val & mask) != exp_val) &&
+ time_after(timeout_jf, jiffies));
+
+ if ((reg_val & mask) == exp_val)
+ return 0; /* success */
+ dev_err(&dc->ndev->dev,
+ "dc_poll_register 0x%x: timeout\n", reg);
+ return jiffies - timeout_jf + 1;
+}
+
static int tegra_dc_set(struct tegra_dc *dc, int index)
{
int ret = 0;