On Fri, Nov 19, 2010 at 02:23:54PM +0100, Cohen David (Nokia-MS/Helsinki) wrote: > OMAP3 ISP driver does not support pipeline with multiple video outputs yet. > Driver must return -EBUSY in this case. > > Signed-off-by: David Cohen <david.cohen@xxxxxxxxx> > --- > drivers/media/video/isp/ispccdc.c | 26 ++++++++++++++++++++------ > drivers/media/video/isp/ispcsi2.c | 19 +++++++++++++++---- > drivers/media/video/isp/isppreview.c | 19 +++++++++++++++---- > 3 files changed, 50 insertions(+), 14 deletions(-) > [snip] > diff --git a/drivers/media/video/isp/ispcsi2.c b/drivers/media/video/isp/ispcsi2.c > index 65c777a..8052b38 100644 > --- a/drivers/media/video/isp/ispcsi2.c > +++ b/drivers/media/video/isp/ispcsi2.c > @@ -1088,19 +1088,30 @@ static int csi2_link_setup(struct media_entity *entity, > struct isp_csi2_device *csi2 = v4l2_get_subdevdata(sd); > struct isp_csi2_ctrl_cfg *ctrl = &csi2->ctrl; > > + /* > + * This driver currently does not support pipeline with multiples > + * video outputs. It must return -EBUSY while it's not implemented. > + */ > + > switch (local->index | (remote->entity->type << 16)) { > case CSI2_PAD_SOURCE | (MEDIA_ENTITY_TYPE_NODE << 16): > - if (flags & MEDIA_LINK_FLAG_ACTIVE) > + if (flags & MEDIA_LINK_FLAG_ACTIVE) { > + if (csi2->output & ~CSI2_OUTPUT_MEMORY) > + return -EBUSY; > csi2->output |= CSI2_OUTPUT_MEMORY; > - else > + } else { > csi2->output &= ~CSI2_OUTPUT_MEMORY; > + } > break; > > case CSI2_PAD_SOURCE | (MEDIA_ENTITY_TYPE_SUBDEV << 16): > - if (flags & MEDIA_LINK_FLAG_ACTIVE) > + if (flags & MEDIA_LINK_FLAG_ACTIVE) { > + if (csi2->output & ~CSI2_OUTPUT_MEMORY) There is a typo here. Please, change ~CSI2_OUTPUT_MEMORY to ~CSI2_OUTPUT_CCDC here before test it. I'll send a new version after get comments. Br, David Cohen > + return -EBUSY; > csi2->output |= CSI2_OUTPUT_CCDC; > - else > + } else { > csi2->output &= ~CSI2_OUTPUT_CCDC; > + } > break; > > default: > diff --git a/drivers/media/video/isp/isppreview.c b/drivers/media/video/isp/isppreview.c > index 6274b44..39d4da4 100644 > --- a/drivers/media/video/isp/isppreview.c > +++ b/drivers/media/video/isp/isppreview.c > @@ -2026,20 +2026,31 @@ static int preview_link_setup(struct media_entity *entity, > } > break; > > + /* > + * This driver currently does not support pipeline with multiples > + * video outputs. It must return -EBUSY while it's not implemented. > + */ > + > case PREV_PAD_SOURCE | (MEDIA_ENTITY_TYPE_NODE << 16): > /* write to memory */ > - if (flags & MEDIA_LINK_FLAG_ACTIVE) > + if (flags & MEDIA_LINK_FLAG_ACTIVE) { > + if (prev->output & ~PREVIEW_OUTPUT_MEMORY) > + return -EBUSY; > prev->output |= PREVIEW_OUTPUT_MEMORY; > - else > + } else { > prev->output &= ~PREVIEW_OUTPUT_MEMORY; > + } > break; > > case PREV_PAD_SOURCE | (MEDIA_ENTITY_TYPE_SUBDEV << 16): > /* write to resizer */ > - if (flags & MEDIA_LINK_FLAG_ACTIVE) > + if (flags & MEDIA_LINK_FLAG_ACTIVE) { > + if (prev->output & ~PREVIEW_OUTPUT_RESIZER) > + return -EBUSY; > prev->output |= PREVIEW_OUTPUT_RESIZER; > - else > + } else { > prev->output &= ~PREVIEW_OUTPUT_RESIZER; > + } > break; > > default: > -- > 1.7.2.3 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html