Re: [RFCv11 PATCH 27/29] vim2m: support requests

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

 



On 04/17/2018 01:42 PM, Paul Kocialkowski wrote:
> Hi,
> 
> On Mon, 2018-04-09 at 16:20 +0200, Hans Verkuil wrote:
>> From: Hans Verkuil <hans.verkuil@xxxxxxxxx>
>>
>> Add support for requests to vim2m.
> 
> Please find a nit below.
> 
>> Signed-off-by: Hans Verkuil <hans.verkuil@xxxxxxxxx>
>> ---
>>  drivers/media/platform/vim2m.c | 25 +++++++++++++++++++++++++
>>  1 file changed, 25 insertions(+)
>>
>> diff --git a/drivers/media/platform/vim2m.c
>> b/drivers/media/platform/vim2m.c
>> index 9b18b32c255d..2dcf0ea85705 100644
>> --- a/drivers/media/platform/vim2m.c
>> +++ b/drivers/media/platform/vim2m.c
>> @@ -387,8 +387,26 @@ static void device_run(void *priv)
>>  	src_buf = v4l2_m2m_next_src_buf(ctx->fh.m2m_ctx);
>>  	dst_buf = v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx);
>>  
>> +	/* Apply request if needed */
> 
> This comment suggests that this is where request submission is handled.
> I suggest making it clear that this the place where the *controls*
> attached to the request are applied, instead.

True. Fixed here and below.

Thanks!

	Hans

> 
>> +	if (src_buf->vb2_buf.req_obj.req)
>> +		v4l2_ctrl_request_setup(src_buf->vb2_buf.req_obj.req,
>> +					&ctx->hdl);
>> +	if (dst_buf->vb2_buf.req_obj.req &&
>> +	    dst_buf->vb2_buf.req_obj.req != src_buf-
>>> vb2_buf.req_obj.req)
>> +		v4l2_ctrl_request_setup(dst_buf->vb2_buf.req_obj.req,
>> +					&ctx->hdl);
>> +
>>  	device_process(ctx, src_buf, dst_buf);
>>  
>> +	/* Complete request if needed */
> 
> Ditto here.
> 
>> +	if (src_buf->vb2_buf.req_obj.req)
>> +		v4l2_ctrl_request_complete(src_buf-
>>> vb2_buf.req_obj.req,
>> +					&ctx->hdl);
>> +	if (dst_buf->vb2_buf.req_obj.req &&
>> +	    dst_buf->vb2_buf.req_obj.req != src_buf-
>>> vb2_buf.req_obj.req)
>> +		v4l2_ctrl_request_complete(dst_buf-
>>> vb2_buf.req_obj.req,
>> +					&ctx->hdl);
>> +
>>  	/* Run a timer, which simulates a hardware irq  */
>>  	schedule_irq(dev, ctx->transtime);
>>  }
>> @@ -823,6 +841,8 @@ static void vim2m_stop_streaming(struct vb2_queue
>> *q)
>>  			vbuf = v4l2_m2m_dst_buf_remove(ctx-
>>> fh.m2m_ctx);
>>  		if (vbuf == NULL)
>>  			return;
>> +		v4l2_ctrl_request_complete(vbuf->vb2_buf.req_obj.req,
>> +					   &ctx->hdl);
>>  		spin_lock_irqsave(&ctx->dev->irqlock, flags);
>>  		v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
>>  		spin_unlock_irqrestore(&ctx->dev->irqlock, flags);
>> @@ -1003,6 +1023,10 @@ static const struct v4l2_m2m_ops m2m_ops = {
>>  	.job_abort	= job_abort,
>>  };
>>  
>> +static const struct media_device_ops m2m_media_ops = {
>> +	.req_queue = vb2_request_queue,
>> +};
>> +
>>  static int vim2m_probe(struct platform_device *pdev)
>>  {
>>  	struct vim2m_dev *dev;
>> @@ -1027,6 +1051,7 @@ static int vim2m_probe(struct platform_device
>> *pdev)
>>  	dev->mdev.dev = &pdev->dev;
>>  	strlcpy(dev->mdev.model, "vim2m", sizeof(dev->mdev.model));
>>  	media_device_init(&dev->mdev);
>> +	dev->mdev.ops = &m2m_media_ops;
>>  	dev->v4l2_dev.mdev = &dev->mdev;
>>  	dev->pad[0].flags = MEDIA_PAD_FL_SINK;
>>  	dev->pad[1].flags = MEDIA_PAD_FL_SOURCE;




[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