From 25f5becb7d3c818c9fcd3a2b3ab2498aa5ac5bc6 Mon Sep 17 00:00:00 2001 From: Jianwei Fan Date: Tue, 2 Aug 2022 08:00:28 +0000 Subject: [PATCH] media: i2c: lt7911d: add ioctl RKMODULE_GET_HDMI_MODE Signed-off-by: Jianwei Fan Change-Id: Iedacb279f362651deaba63b44b05a974b1dc3448 --- drivers/media/i2c/lt7911d.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/media/i2c/lt7911d.c b/drivers/media/i2c/lt7911d.c index ba8fb6f43652..1803f681fede 100644 --- a/drivers/media/i2c/lt7911d.c +++ b/drivers/media/i2c/lt7911d.c @@ -917,6 +917,9 @@ static long lt7911d_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) case RKMODULE_GET_MODULE_INFO: lt7911d_get_module_inf(lt7911d, (struct rkmodule_inf *)arg); break; + case RKMODULE_GET_HDMI_MODE: + *(int *)arg = RKMODULE_HDMIIN_MODE; + break; default: ret = -ENOIOCTLCMD; break; @@ -932,6 +935,7 @@ static long lt7911d_compat_ioctl32(struct v4l2_subdev *sd, void __user *up = compat_ptr(arg); struct rkmodule_inf *inf; long ret; + int *seq; switch (cmd) { case RKMODULE_GET_MODULE_INFO: @@ -949,7 +953,21 @@ static long lt7911d_compat_ioctl32(struct v4l2_subdev *sd, } kfree(inf); break; + case RKMODULE_GET_HDMI_MODE: + seq = kzalloc(sizeof(*seq), GFP_KERNEL); + if (!seq) { + ret = -ENOMEM; + return ret; + } + ret = lt7911d_ioctl(sd, cmd, seq); + if (!ret) { + ret = copy_to_user(up, seq, sizeof(*seq)); + if (ret) + ret = -EFAULT; + } + kfree(seq); + break; default: ret = -ENOIOCTLCMD; break;