From: Songjun Wu Date: Mon, 12 Sep 2016 07:47:24 +0000 (-0300) Subject: [media] atmel-isc: set the format on the first open X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=4540e0ad6fa6fab0e4cc0dc4f74b1ebb676a4404;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git [media] atmel-isc: set the format on the first open Set the current format on the first open. Signed-off-by: Songjun Wu Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/platform/atmel/atmel-isc.c b/drivers/media/platform/atmel/atmel-isc.c index db6773de92f0..ed8050d6ea71 100644 --- a/drivers/media/platform/atmel/atmel-isc.c +++ b/drivers/media/platform/atmel/atmel-isc.c @@ -924,10 +924,16 @@ static int isc_open(struct file *file) goto unlock; ret = v4l2_subdev_call(sd, core, s_power, 1); - if (ret < 0 && ret != -ENOIOCTLCMD) + if (ret < 0 && ret != -ENOIOCTLCMD) { v4l2_fh_release(file); - else - ret = 0; + goto unlock; + } + + ret = isc_set_fmt(isc, &isc->fmt); + if (ret) { + v4l2_subdev_call(sd, core, s_power, 0); + v4l2_fh_release(file); + } unlock: mutex_unlock(&isc->lock); @@ -1118,8 +1124,16 @@ static int isc_set_default_fmt(struct isc_device *isc) .pixelformat = isc->user_formats[0]->fourcc, }, }; + int ret; - return isc_set_fmt(isc, &f); + ret = isc_try_fmt(isc, &f, NULL); + if (ret) + return ret; + + isc->current_fmt = isc->user_formats[0]; + isc->fmt = f; + + return 0; } static int isc_async_complete(struct v4l2_async_notifier *notifier) @@ -1172,20 +1186,12 @@ static int isc_async_complete(struct v4l2_async_notifier *notifier) return ret; } - ret = v4l2_subdev_call(sd_entity->sd, core, s_power, 1); - if (ret < 0 && ret != -ENOIOCTLCMD) - return ret; - ret = isc_set_default_fmt(isc); if (ret) { v4l2_err(&isc->v4l2_dev, "Could not set default format\n"); return ret; } - ret = v4l2_subdev_call(sd_entity->sd, core, s_power, 0); - if (ret < 0 && ret != -ENOIOCTLCMD) - return ret; - /* Register video device */ strlcpy(vdev->name, ATMEL_ISC_NAME, sizeof(vdev->name)); vdev->release = video_device_release_empty;