From 197d1dd1857ef1b2dd69bced1ce46fdc4e2e20dc Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Mon, 5 Sep 2022 21:35:30 +0800 Subject: [PATCH] media: i2c: sc2239 fixed compile error Signed-off-by: Zefa Chen Change-Id: Ibe430f5a7398857f742f5fbc40f2b5c71cf529f0 --- drivers/media/i2c/Kconfig | 10 ++++++++++ drivers/media/i2c/Makefile | 1 + drivers/media/i2c/sc2239.c | 15 +++++++++++---- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig index 9c3ee5afa843..7d215760c3eb 100644 --- a/drivers/media/i2c/Kconfig +++ b/drivers/media/i2c/Kconfig @@ -1866,6 +1866,16 @@ config VIDEO_SC2232 This is a Video4Linux2 sensor driver for the SmartSens SC2232 camera. +config VIDEO_SC2239 + tristate "SmartSens SC2239 sensor support" + depends on I2C && VIDEO_V4L2 + select MEDIA_CONTROLLER + select VIDEO_V4L2_SUBDEV_API + select V4L2_FWNODE + help + This is a Video4Linux2 sensor driver for the SmartSens + SC2239 camera. + config VIDEO_SC230AI tristate "SmartSens SC230AI sensor support" depends on I2C && VIDEO_V4L2 diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile index 609f6418ccd1..d5b6b2a73bb2 100644 --- a/drivers/media/i2c/Makefile +++ b/drivers/media/i2c/Makefile @@ -125,6 +125,7 @@ obj-$(CONFIG_VIDEO_SC132GS) += sc132gs.o obj-$(CONFIG_VIDEO_SC200AI) += sc200ai.o obj-$(CONFIG_VIDEO_SC210IOT) += sc210iot.o obj-$(CONFIG_VIDEO_SC2232) += sc2232.o +obj-$(CONFIG_VIDEO_SC2239) += sc2239.o obj-$(CONFIG_VIDEO_SC230AI) += sc230ai.o obj-$(CONFIG_VIDEO_SC301IOT) += sc301iot.o obj-$(CONFIG_VIDEO_SC3336) += sc3336.o diff --git a/drivers/media/i2c/sc2239.c b/drivers/media/i2c/sc2239.c index 30dba3bc3b43..eedb90db15b3 100644 --- a/drivers/media/i2c/sc2239.c +++ b/drivers/media/i2c/sc2239.c @@ -542,8 +542,11 @@ static long sc2239_compat_ioctl32(struct v4l2_subdev *sd, } ret = sc2239_ioctl(sd, cmd, inf); - if (!ret) + if (!ret) { ret = copy_to_user(up, inf, sizeof(*inf)); + if (ret) + ret = -EFAULT; + } kfree(inf); break; case RKMODULE_AWB_CFG: @@ -556,12 +559,16 @@ static long sc2239_compat_ioctl32(struct v4l2_subdev *sd, ret = copy_from_user(cfg, up, sizeof(*cfg)); if (!ret) ret = sc2239_ioctl(sd, cmd, cfg); + else + ret = -EFAULT; kfree(cfg); break; case RKMODULE_SET_QUICK_STREAM: ret = copy_from_user(&stream, up, sizeof(u32)); if (!ret) ret = sc2239_ioctl(sd, cmd, &stream); + else + ret = -EFAULT; break; default: ret = -ENOIOCTLCMD; @@ -843,14 +850,14 @@ static int sc2239_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) } #endif -static int sc2239_g_mbus_config(struct v4l2_subdev *sd, +static int sc2239_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id, struct v4l2_mbus_config *config) { u32 val = 1 << (SC2239_LANES - 1) | V4L2_MBUS_CSI2_CHANNEL_0 | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; - config->type = V4L2_MBUS_CSI2; + config->type = V4L2_MBUS_CSI2_DPHY; config->flags = val; return 0; @@ -894,7 +901,6 @@ static const struct v4l2_subdev_core_ops sc2239_core_ops = { static const struct v4l2_subdev_video_ops sc2239_video_ops = { .s_stream = sc2239_s_stream, .g_frame_interval = sc2239_g_frame_interval, - .g_mbus_config = sc2239_g_mbus_config, }; static const struct v4l2_subdev_pad_ops sc2239_pad_ops = { @@ -903,6 +909,7 @@ static const struct v4l2_subdev_pad_ops sc2239_pad_ops = { .enum_frame_interval = sc2239_enum_frame_interval, .get_fmt = sc2239_get_fmt, .set_fmt = sc2239_set_fmt, + .get_mbus_config = sc2239_g_mbus_config, }; static const struct v4l2_subdev_ops sc2239_subdev_ops = {