RE: [PATCH 05/15] [media] marvell-ccic: refine mcam_set_contig_buffer function
Hi, Guennadi >-Original Message- >From: Guennadi Liakhovetski [mailto:g.liakhovet...@gmx.de] >Sent: Tuesday, 27 November, 2012 19:04 >To: Albert Wang >Cc: cor...@lwn.net; linux-media@vger.kernel.org; Libin Yang >Subject: Re: [PATCH 05/15] [media] marvell-ccic: refine mcam_set_contig_buffer >function > >On Fri, 23 Nov 2012, Albert Wang wrote: > >> From: Libin Yang >> >> This patch refines mcam_set_contig_buffer() in mcam core >> >> Signed-off-by: Albert Wang >> Signed-off-by: Libin Yang > >Looks good in general, just will have to be tested on currently supported >platforms, >because it changes the order, in which registers are written. >So, if this patch is not too important for you, maybe it would be better to >drop it, it doesn't >seem to improve any functionality? > It didn't improve the functionality, just prepare for the 3 frame buffer support patch. :) >If it is decided to use this, you can add my > >Acked-by: Guennadi Liakhovetski > >Thanks >Guennadi > >> --- >> drivers/media/platform/marvell-ccic/mcam-core.c | 21 ++--- >> 1 file changed, 10 insertions(+), 11 deletions(-) >> >> diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c >> b/drivers/media/platform/marvell-ccic/mcam-core.c >> index 760e8ea..67d4f2f 100755 >> --- a/drivers/media/platform/marvell-ccic/mcam-core.c >> +++ b/drivers/media/platform/marvell-ccic/mcam-core.c >> @@ -481,22 +481,21 @@ static void mcam_set_contig_buffer(struct mcam_camera >*cam, int frame) >> */ >> if (list_empty(&cam->buffers)) { >> buf = cam->vb_bufs[frame ^ 0x1]; >> -cam->vb_bufs[frame] = buf; >> -mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR, >> -vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0)); >> set_bit(CF_SINGLE_BUFFER, &cam->flags); >> cam->frame_state.singles++; >> -return; >> +} else { >> +/* >> + * OK, we have a buffer we can use. >> + */ >> +buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, >> +queue); >> +list_del_init(&buf->queue); >> +clear_bit(CF_SINGLE_BUFFER, &cam->flags); >> } >> -/* >> - * OK, we have a buffer we can use. >> - */ >> -buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, queue); >> -list_del_init(&buf->queue); >> + >> +cam->vb_bufs[frame] = buf; >> mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR, >> vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0)); >> -cam->vb_bufs[frame] = buf; >> -clear_bit(CF_SINGLE_BUFFER, &cam->flags); >> } >> >> /* >> -- >> 1.7.9.5 >> > >--- >Guennadi Liakhovetski, Ph.D. >Freelance Open-Source Software Developer >http://www.open-technology.de/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 05/15] [media] marvell-ccic: refine mcam_set_contig_buffer function
On Fri, 23 Nov 2012, Albert Wang wrote: > From: Libin Yang > > This patch refines mcam_set_contig_buffer() in mcam core > > Signed-off-by: Albert Wang > Signed-off-by: Libin Yang Looks good in general, just will have to be tested on currently supported platforms, because it changes the order, in which registers are written. So, if this patch is not too important for you, maybe it would be better to drop it, it doesn't seem to improve any functionality? If it is decided to use this, you can add my Acked-by: Guennadi Liakhovetski Thanks Guennadi > --- > drivers/media/platform/marvell-ccic/mcam-core.c | 21 ++--- > 1 file changed, 10 insertions(+), 11 deletions(-) > > diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c > b/drivers/media/platform/marvell-ccic/mcam-core.c > index 760e8ea..67d4f2f 100755 > --- a/drivers/media/platform/marvell-ccic/mcam-core.c > +++ b/drivers/media/platform/marvell-ccic/mcam-core.c > @@ -481,22 +481,21 @@ static void mcam_set_contig_buffer(struct mcam_camera > *cam, int frame) >*/ > if (list_empty(&cam->buffers)) { > buf = cam->vb_bufs[frame ^ 0x1]; > - cam->vb_bufs[frame] = buf; > - mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR, > - vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0)); > set_bit(CF_SINGLE_BUFFER, &cam->flags); > cam->frame_state.singles++; > - return; > + } else { > + /* > + * OK, we have a buffer we can use. > + */ > + buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, > + queue); > + list_del_init(&buf->queue); > + clear_bit(CF_SINGLE_BUFFER, &cam->flags); > } > - /* > - * OK, we have a buffer we can use. > - */ > - buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, queue); > - list_del_init(&buf->queue); > + > + cam->vb_bufs[frame] = buf; > mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR, > vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0)); > - cam->vb_bufs[frame] = buf; > - clear_bit(CF_SINGLE_BUFFER, &cam->flags); > } > > /* > -- > 1.7.9.5 > --- Guennadi Liakhovetski, Ph.D. Freelance Open-Source Software Developer http://www.open-technology.de/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH 05/15] [media] marvell-ccic: refine mcam_set_contig_buffer function
From: Libin Yang This patch refines mcam_set_contig_buffer() in mcam core Signed-off-by: Albert Wang Signed-off-by: Libin Yang --- drivers/media/platform/marvell-ccic/mcam-core.c | 21 ++--- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c index 760e8ea..67d4f2f 100755 --- a/drivers/media/platform/marvell-ccic/mcam-core.c +++ b/drivers/media/platform/marvell-ccic/mcam-core.c @@ -481,22 +481,21 @@ static void mcam_set_contig_buffer(struct mcam_camera *cam, int frame) */ if (list_empty(&cam->buffers)) { buf = cam->vb_bufs[frame ^ 0x1]; - cam->vb_bufs[frame] = buf; - mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR, - vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0)); set_bit(CF_SINGLE_BUFFER, &cam->flags); cam->frame_state.singles++; - return; + } else { + /* +* OK, we have a buffer we can use. +*/ + buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, + queue); + list_del_init(&buf->queue); + clear_bit(CF_SINGLE_BUFFER, &cam->flags); } - /* -* OK, we have a buffer we can use. -*/ - buf = list_first_entry(&cam->buffers, struct mcam_vb_buffer, queue); - list_del_init(&buf->queue); + + cam->vb_bufs[frame] = buf; mcam_reg_write(cam, frame == 0 ? REG_Y0BAR : REG_Y1BAR, vb2_dma_contig_plane_dma_addr(&buf->vb_buf, 0)); - cam->vb_bufs[frame] = buf; - clear_bit(CF_SINGLE_BUFFER, &cam->flags); } /* -- 1.7.9.5 -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html