omap3isp: does not allow pipeline with multiple video outputs yet
PATCH v2 1/1 omap3isp: does not allow pipeline with multiple video outputs yet
From: Cohen David (Nokia-MS/Helsinki) <[email protected]>
The ISP core doesn't support pipelines with multiple video outputs. Revisit this when it will be implemented, and return -EBUSY for now.
Signed-off-by David Cohen <[email protected]>
--- 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(-)
drivers/media/video/isp/ispccdc.c +20 -6
@@ -2018,30 +2018,44 @@ static int ccdc_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 CCDC_PAD_SOURCE_VP | (MEDIA_ENTITY_TYPE_SUBDEV <<16 ):/* Write to preview engine, histogram and H3A. When none of * those links are active, the video port can be disabled. */ -if (flags &MEDIA_LINK_FLAG_ACTIVE ) +if (flags &MEDIA_LINK_FLAG_ACTIVE ) { +if (ccdc->output & ~CCDC_OUTPUT_PREVIEW ) +return -EBUSY ; ccdc->output |=CCDC_OUTPUT_PREVIEW ; -else + }else { ccdc->output &= ~CCDC_OUTPUT_PREVIEW ; + }break ;case CCDC_PAD_SOURCE_OF | (MEDIA_ENTITY_TYPE_NODE <<16 ):/* Write to memory */ -if (flags &MEDIA_LINK_FLAG_ACTIVE ) +if (flags &MEDIA_LINK_FLAG_ACTIVE ) { +if (ccdc->output & ~CCDC_OUTPUT_MEMORY ) +return -EBUSY ; ccdc->output |=CCDC_OUTPUT_MEMORY ; -else + }else { ccdc->output &= ~CCDC_OUTPUT_MEMORY ; + }break ;case CCDC_PAD_SOURCE_OF | (MEDIA_ENTITY_TYPE_SUBDEV <<16 ):/* Write to resizer */ -if (flags &MEDIA_LINK_FLAG_ACTIVE ) +if (flags &MEDIA_LINK_FLAG_ACTIVE ) { +if (ccdc->output & ~CCDC_OUTPUT_RESIZER ) +return -EBUSY ; ccdc->output |=CCDC_OUTPUT_RESIZER ; -else + }else { ccdc->output &= ~CCDC_OUTPUT_RESIZER ; + }break ;default :
drivers/media/video/isp/ispcsi2.c +15 -4
@@ -1046,19 +1046,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_CCDC ) +return -EBUSY ; csi2->output |=CSI2_OUTPUT_CCDC ; -else + }else { csi2->output &= ~CSI2_OUTPUT_CCDC ; + }break ;default :
drivers/media/video/isp/isppreview.c +15 -4
@@ -2013,20 +2013,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 :
Signature · 1 line
1.7.2.3