From efa5b6439cc4c6f714af3a56b1ca467a8ff6a739 Mon Sep 17 00:00:00 2001 From: Robert Morell Date: Tue, 24 May 2011 19:27:57 -0700 Subject: 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 Reviewed-by: Aaron Plattner Reviewed-by: Olof Johansson Reviewed-on: http://git-master/r/40530 Reviewed-by: Varun Colbert Tested-by: Varun Colbert Rebase-Id: Re42eae066099587529fbcc677c06ddefef18d36d --- drivers/video/tegra/dc/ext/dev.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'drivers') 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; } -- cgit v1.2.3