public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: Scott Jiang <scott.jiang.linux@gmail.com>,
	"Lad, Prabhakar" <prabhakar.csengg@gmail.com>
Cc: LMML <linux-media@vger.kernel.org>,
	adi-buildroot-devel@lists.sourceforge.net,
	LKML <linux-kernel@vger.kernel.org>,
	Mauro Carvalho Chehab <m.chehab@samsung.com>
Subject: Re: [PATCH v2 08/15] media: blackfin: bfin_capture: use vb2_ioctl_* helpers
Date: Tue, 03 Feb 2015 09:31:34 +0100	[thread overview]
Message-ID: <54D08766.3090808@xs4all.nl> (raw)
In-Reply-To: <CAHG8p1CrBaD_Rk8tkzXg6HucQQQQNmJ-_rvEa8nUOX3QhKKGxQ@mail.gmail.com>

On 02/03/15 09:27, Scott Jiang wrote:
> Hi Lad,
> 
> 2015-01-23 6:18 GMT+08:00 Lad, Prabhakar <prabhakar.csengg@gmail.com>:
>> this patch adds support to vb2_ioctl_* helpers.
>>
>> Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
>> ---
>>  drivers/media/platform/blackfin/bfin_capture.c | 108 ++++++-------------------
>>  1 file changed, 23 insertions(+), 85 deletions(-)
>>
>> diff --git a/drivers/media/platform/blackfin/bfin_capture.c b/drivers/media/platform/blackfin/bfin_capture.c
>> index b2eeace..04b85e3 100644
>> --- a/drivers/media/platform/blackfin/bfin_capture.c
>> +++ b/drivers/media/platform/blackfin/bfin_capture.c
>> @@ -272,15 +272,26 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
>>         struct ppi_if *ppi = bcap_dev->ppi;
>>         struct bcap_buffer *buf, *tmp;
>>         struct ppi_params params;
>> +       dma_addr_t addr;
>>         int ret;
>>
>>         /* enable streamon on the sub device */
>>         ret = v4l2_subdev_call(bcap_dev->sd, video, s_stream, 1);
>>         if (ret && (ret != -ENOIOCTLCMD)) {
>>                 v4l2_err(&bcap_dev->v4l2_dev, "stream on failed in subdev\n");
>> +               bcap_dev->cur_frm = NULL;
>>                 goto err;
>>         }
>>
>> +       /* get the next frame from the dma queue */
>> +       bcap_dev->cur_frm = list_entry(bcap_dev->dma_queue.next,
>> +                                       struct bcap_buffer, list);
>> +       /* remove buffer from the dma queue */
>> +       list_del_init(&bcap_dev->cur_frm->list);
>> +       addr = vb2_dma_contig_plane_dma_addr(&bcap_dev->cur_frm->vb, 0);
>> +       /* update DMA address */
>> +       ppi->ops->update_addr(ppi, (unsigned long)addr);
>> +
>>         /* set ppi params */
>>         params.width = bcap_dev->fmt.width;
>>         params.height = bcap_dev->fmt.height;
>> @@ -320,6 +331,9 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
>>                 goto err;
>>         }
>>
>> +       /* enable ppi */
>> +       ppi->ops->start(ppi);
>> +
> Still wrong here. You can't start ppi before request dma and irq. Also
> it's not good to update dma address before request dma. Please
> strictly follow the initial sequence in bcap_streamon() because the
> order is important. That means you should put all functions in
> bcap_start_streaming() before those in bcap_streamon().
> And it seems you removed dma buffer check in bcap_streamon(). Yes, in
> vb2_internal_streamon() it will check q->queued_count >=
> q->min_buffers_needed to start streaming. But if the user doesn't
> queue enough buffer, it will return success and set q->streaming = 1.
> Is it really right here?

Yes, that's really right. The V4L2 state is set to streaming after calling
VIDIOC_STREAMON, even if the DMA engine hasn't started yet. That's set
with the start_streaming_called bitfield.

Regards,

	Hans

> 
>>         /* attach ppi DMA irq handler */
>>         ret = ppi->ops->attach_irq(ppi, bcap_isr);
>>         if (ret < 0) {
>> @@ -334,6 +348,9 @@ static int bcap_start_streaming(struct vb2_queue *vq, unsigned int count)
>>         return 0;
>>
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


  reply	other threads:[~2015-02-03  8:31 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-22 22:18 [PATCH v2 00/15] media: blackfin: bfin_capture enhancements Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 01/15] media: blackfin: bfin_capture: drop buf_init() callback Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 02/15] media: blackfin: bfin_capture: release buffers in case start_streaming() call back fails Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 03/15] media: blackfin: bfin_capture: set min_buffers_needed Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 04/15] media: blackfin: bfin_capture: improve buf_prepare() callback Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 05/15] media: blackfin: bfin_capture: improve queue_setup() callback Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 06/15] media: blackfin: bfin_capture: use vb2_fop_mmap/poll Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 07/15] media: blackfin: bfin_capture: use v4l2_fh_open and vb2_fop_release Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 08/15] media: blackfin: bfin_capture: use vb2_ioctl_* helpers Lad, Prabhakar
2015-02-03  8:27   ` Scott Jiang
2015-02-03  8:31     ` Hans Verkuil [this message]
2015-01-22 22:18 ` [PATCH v2 09/15] media: blackfin: bfin_capture: make sure all buffers are returned on stop_streaming() callback Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 10/15] media: blackfin: bfin_capture: return -ENODATA for *std calls Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 11/15] media: blackfin: bfin_capture: return -ENODATA for *dv_timings calls Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 12/15] media: blackfin: bfin_capture: add support for vidioc_create_bufs Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 13/15] media: blackfin: bfin_capture: add support for VB2_DMABUF Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 14/15] media: blackfin: bfin_capture: add support for VIDIOC_EXPBUF Lad, Prabhakar
2015-01-22 22:18 ` [PATCH v2 15/15] media: blackfin: bfin_capture: set v4l2 buffer sequence Lad, Prabhakar
2015-01-30 15:49 ` [PATCH v2 00/15] media: blackfin: bfin_capture enhancements Lad, Prabhakar
2015-02-02 11:24   ` Hans Verkuil
2015-02-03  8:09     ` Scott Jiang
2015-02-16 11:42     ` Hans Verkuil
2015-02-18 22:49       ` Lad, Prabhakar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54D08766.3090808@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=adi-buildroot-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=m.chehab@samsung.com \
    --cc=prabhakar.csengg@gmail.com \
    --cc=scott.jiang.linux@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox