summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRobert Morell <rmorell@nvidia.com>2011-05-24 19:27:57 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:48:13 -0800
commitefa5b6439cc4c6f714af3a56b1ca467a8ff6a739 (patch)
treeb0c03a86296029f7d71506cb2c378f2f7148a6df /drivers
parente2404dfeecd4204174410e8e2b0e93ed54b2f63a (diff)
video: tegra: dc_ext: Add head status ioctl
This change adds a new tegra_dc_ext ioctl to allow userspace to query whether a head is currently enabled or not. This is necessary for the X server to be able to restore the outputs that were enabled before it was started. bug 818525 Original-Change-Id: I6d209894081312621f623a722cdd3fcb53553c61 Signed-off-by: Robert Morell <rmorell@nvidia.com> Reviewed-by: Aaron Plattner <aplattner@nvidia.com> Reviewed-by: Olof Johansson <olofj@chromium.org> Reviewed-on: http://git-master/r/40530 Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com> Rebase-Id: Re42eae066099587529fbcc677c06ddefef18d36d
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/tegra/dc/ext/dev.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/video/tegra/dc/ext/dev.c b/drivers/video/tegra/dc/ext/dev.c
index eba706342f43..6e1110725aa0 100644
--- a/drivers/video/tegra/dc/ext/dev.c
+++ b/drivers/video/tegra/dc/ext/dev.c
@@ -483,6 +483,19 @@ static u32 tegra_dc_ext_get_vblank_syncpt(struct tegra_dc_ext_user *user)
return dc->vblank_syncpt;
}
+static int tegra_dc_ext_get_status(struct tegra_dc_ext_user *user,
+ struct tegra_dc_ext_status *status)
+{
+ struct tegra_dc *dc = user->ext->dc;
+
+ memset(status, 0, sizeof(*status));
+
+ if (dc->enabled)
+ status->flags |= TEGRA_DC_EXT_FLAGS_ENABLED;
+
+ return 0;
+}
+
static long tegra_dc_ioctl(struct file *filp, unsigned int cmd,
unsigned long arg)
{
@@ -557,6 +570,19 @@ static long tegra_dc_ioctl(struct file *filp, unsigned int cmd,
return 0;
}
+ case TEGRA_DC_EXT_GET_STATUS:
+ {
+ struct tegra_dc_ext_status args;
+ int ret;
+
+ ret = tegra_dc_ext_get_status(user, &args);
+
+ if (copy_to_user(user_arg, &args, sizeof(args)))
+ return -EFAULT;
+
+ return ret;
+ }
+
default:
return -EINVAL;
}