Re: [PATCH v3 26/33] omap3isp: Default link validation for ccp2, csi2, preview and resizer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

Laurent Pinchart wrote:
> Hi Sakari,
> 
> On Saturday 25 February 2012 03:34:36 Sakari Ailus wrote:
>> On Wed, Feb 22, 2012 at 12:01:26PM +0100, Laurent Pinchart wrote:
>>> On Monday 20 February 2012 03:57:05 Sakari Ailus wrote:
>>>> Use default link validation for ccp2, csi2, preview and resizer. On
>>>> ccp2, csi2 and ccdc we also collect information on external subdevs as
>>>> one may be connected to those entities.
>>>>
>>>> The CCDC link validation still must be done separately.
>>>>
>>>> Also set pipe->external correctly as we go
> 
> [snip]
> 
>>>> @@ -1999,6 +1999,27 @@ static int ccdc_set_format(struct v4l2_subdev
>>>> *sd,
>>>> struct v4l2_subdev_fh *fh, return 0;
>>>>
>>>>  }
>>>>
>>>> +static int ccdc_link_validate(struct v4l2_subdev *sd,
>>>> +			      struct media_link *link,
>>>> +			      struct v4l2_subdev_format *source_fmt,
>>>> +			      struct v4l2_subdev_format *sink_fmt)
>>>> +{
>>>> +	struct isp_ccdc_device *ccdc = v4l2_get_subdevdata(sd);
>>>> +	struct isp_pipeline *pipe = to_isp_pipeline(&ccdc->subdev.entity);
>>>> +	int rval;
>>>> +
>>>> +	/* We've got a parallel sensor here. */
>>>> +	if (ccdc->input == CCDC_INPUT_PARALLEL) {
>>>> +		pipe->external =
>>>> +			media_entity_to_v4l2_subdev(link->source->entity);
>>>> +		rval = omap3isp_get_external_info(pipe, link);
>>>> +		if (rval < 0)
>>>> +			return 0;
>>>> +	}
>>>
>>> Pending my comments on 25/33, this wouldn't be needed in this patch, and
>>> could be squashed with 27/33.
>>
>> If I moved this code out of pipeline validation, I'd have to walk the graph
>> one additional time. Do you think it's worth it, or are there easier ways to
>> find the external entity connected to a pipeline?
> 
> If I understand you correctly, the problem is that 
> omap3isp_get_external_info() can only be called when the external entity has 
> been located, and the CCDC link validation operation would be called before 
> that. Is that correct ?
> 
> One option would be to locate the external entity before validating the link. 
> When the validation pipeline walk operation gets to the CCDC entity, it would 
> first follow the link, check if the connected entity is external (and in that 
> case sotre it in pipe->external and call omap3isp_get_external_info()), and 
> then only call the CCDC link validation operation.
> 
> The other option is to leave the code as-is :-) Or rather modify it slightly: 
> assigning the entity to pipe->external and calling 
> omap3isp_get_external_info() should be done in ispvideo.c at pipeline 
> validation time.

I've modified it so that the entities which are part of the pipe will be
disovered by media_entity_pipeline_start() and stored in struct
media_pipeline.entities (as bitmask).

It's trivial to figure out the external entity from that one in the ISP
driver.

I did it so since I assume pretty much every single driver supporting
any non-linear data path must perform the same. It's also almost no work
in doing this in the above function, compared to a relatively
significant headache in the ISP driver.

I'll resend the patchset once I've gotten your reply on my selections
documentation changes. :-)

Cheers,

-- 
Sakari Ailus
sakari.ailus@xxxxxx
--
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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux