diff --git a/drivers/media/i2c/tc35874x.c b/drivers/media/i2c/tc35874x.c index 68cfd4316fe8..818875acf4d1 100644 --- a/drivers/media/i2c/tc35874x.c +++ b/drivers/media/i2c/tc35874x.c @@ -1954,6 +1954,9 @@ static long tc35874x_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) case RKMODULE_GET_MODULE_INFO: tc35874x_get_module_inf(tc35874x, (struct rkmodule_inf *)arg); break; + case RKMODULE_GET_HDMI_MODE: + *(int *)arg = RKMODULE_HDMIIN_MODE; + break; default: ret = -ENOIOCTLCMD; break; @@ -1970,6 +1973,7 @@ static long tc35874x_compat_ioctl32(struct v4l2_subdev *sd, struct rkmodule_inf *inf; struct rkmodule_awb_cfg *cfg; long ret; + int *seq; switch (cmd) { case RKMODULE_GET_MODULE_INFO: @@ -2001,6 +2005,21 @@ static long tc35874x_compat_ioctl32(struct v4l2_subdev *sd, ret = -EFAULT; kfree(cfg); break; + case RKMODULE_GET_HDMI_MODE: + seq = kzalloc(sizeof(*seq), GFP_KERNEL); + if (!seq) { + ret = -ENOMEM; + return ret; + } + + ret = tc35874x_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;