struct media_entity *entity;
struct media_pad *pad;
struct v4l2_subdev *subdev;
+ int failure = 0;
+ int ret;
entity = &pipe->output->video.entity;
while (1) {
entity = pad->entity;
subdev = media_entity_to_v4l2_subdev(entity);
- v4l2_subdev_call(subdev, video, s_stream, 0);
+ ret = v4l2_subdev_call(subdev, video, s_stream, 0);
+ if (ret < 0) {
+ dev_dbg(iss->dev, "%s: module stop timeout.\n",
+ subdev->name);
+ failure = -ETIMEDOUT;
+ }
}
- return 0;
+ return failure;
}
/*
struct iss_device *iss = csi2->iss;
struct iss_pipeline *pipe = to_iss_pipeline(&csi2->subdev.entity);
struct iss_video *video_out = &csi2->video_out;
+ int ret = 0;
if (csi2->state == ISS_PIPELINE_STREAM_STOPPED) {
if (enable == ISS_PIPELINE_STREAM_STOPPED)
switch (enable) {
case ISS_PIPELINE_STREAM_CONTINUOUS: {
- int ret;
-
ret = omap4iss_csiphy_config(iss, sd);
if (ret < 0)
return ret;
return 0;
if (omap4iss_module_sync_idle(&sd->entity, &csi2->wait,
&csi2->stopping))
- dev_dbg(iss->dev, "%s: module stop timeout.\n",
- sd->name);
+ ret = -ETIMEDOUT;
csi2_ctx_enable(csi2, 0, 0);
csi2_if_enable(csi2, 0);
csi2_irq_ctx_set(csi2, 0);
}
csi2->state = enable;
- return 0;
+ return ret;
}
/* subdev video operations */
return 0;
if (omap4iss_module_sync_idle(&sd->entity, &ipipe->wait,
&ipipe->stopping))
- dev_dbg(iss->dev, "%s: module stop timeout.\n",
- sd->name);
+ ret = -ETIMEDOUT;
ipipe_enable(ipipe, 0);
omap4iss_isp_disable_interrupts(iss);
return 0;
if (omap4iss_module_sync_idle(&sd->entity, &ipipeif->wait,
&ipipeif->stopping))
- dev_dbg(iss->dev, "%s: module stop timeout.\n",
- sd->name);
+ ret = -ETIMEDOUT;
if (ipipeif->output & IPIPEIF_OUTPUT_MEMORY)
ipipeif_write_enable(ipipeif, 0);
return 0;
if (omap4iss_module_sync_idle(&sd->entity, &resizer->wait,
&resizer->stopping))
- dev_dbg(iss->dev, "%s: module stop timeout.\n",
- sd->name);
+ ret = -ETIMEDOUT;
resizer_enable(resizer, 0);
omap4iss_isp_disable_interrupts(iss);