diff options
author | Robert Morell <rmorell@nvidia.com> | 2011-05-24 19:27:57 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:48:13 -0800 |
commit | efa5b6439cc4c6f714af3a56b1ca467a8ff6a739 (patch) | |
tree | b0c03a86296029f7d71506cb2c378f2f7148a6df /drivers/video/tegra/dc/ext/dev.c | |
parent | e2404dfeecd4204174410e8e2b0e93ed54b2f63a (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/video/tegra/dc/ext/dev.c')
-rw-r--r-- | drivers/video/tegra/dc/ext/dev.c | 26 |
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; } |