diff options
author | Songjun Wu <songjun.wu@microchip.com> | 2016-09-12 04:47:24 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@s-opensource.com> | 2016-09-19 14:15:48 -0300 |
commit | 4540e0ad6fa6fab0e4cc0dc4f74b1ebb676a4404 (patch) | |
tree | 3f9fbeb14cefd9c5f56d1cffb5835836288e0424 /drivers | |
parent | a58d1191ca04ffa8b14dcda5df0c87a2a642d3c7 (diff) |
[media] atmel-isc: set the format on the first open
Set the current format on the first open.
Signed-off-by: Songjun Wu <songjun.wu@microchip.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/platform/atmel/atmel-isc.c | 30 |
1 files changed, 18 insertions, 12 deletions
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; |