aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrabhakar Lad <prabhakar.csengg@gmail.com>2014-10-12 16:40:35 -0400
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2014-10-28 14:07:52 -0400
commit50d9481ddcc88a6a0b282a5d74f2f62639d70660 (patch)
tree101d16569d6adb358e61ec1df4fa83b157224d0a
parentf2095f658df7f660fbf97e116096473a5b0d2f8f (diff)
[media] media: davinci: vpbe: improve vpbe_buffer_prepare() callback
this patch improve vpbe_buffer_prepare() callback, as buf_prepare() callback is never called with invalid state and check for vb2_plane_vaddr(vb, 0) is dropped as payload check should be done unconditionally. Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
-rw-r--r--drivers/media/platform/davinci/vpbe_display.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c
index 491b8320f6a6..524e1fd53ada 100644
--- a/drivers/media/platform/davinci/vpbe_display.c
+++ b/drivers/media/platform/davinci/vpbe_display.c
@@ -215,22 +215,15 @@ static int vpbe_buffer_prepare(struct vb2_buffer *vb)
215 v4l2_dbg(1, debug, &vpbe_dev->v4l2_dev, 215 v4l2_dbg(1, debug, &vpbe_dev->v4l2_dev,
216 "vpbe_buffer_prepare\n"); 216 "vpbe_buffer_prepare\n");
217 217
218 if (vb->state != VB2_BUF_STATE_ACTIVE && 218 vb2_set_plane_payload(vb, 0, layer->pix_fmt.sizeimage);
219 vb->state != VB2_BUF_STATE_PREPARED) { 219 if (vb2_get_plane_payload(vb, 0) > vb2_plane_size(vb, 0))
220 vb2_set_plane_payload(vb, 0, layer->pix_fmt.sizeimage); 220 return -EINVAL;
221 if (vb2_plane_vaddr(vb, 0) &&
222 vb2_get_plane_payload(vb, 0) > vb2_plane_size(vb, 0))
223 return -EINVAL;
224 221
225 addr = vb2_dma_contig_plane_dma_addr(vb, 0); 222 addr = vb2_dma_contig_plane_dma_addr(vb, 0);
226 if (q->streaming) { 223 if (!IS_ALIGNED(addr, 8)) {
227 if (!IS_ALIGNED(addr, 8)) { 224 v4l2_err(&vpbe_dev->v4l2_dev,
228 v4l2_err(&vpbe_dev->v4l2_dev, 225 "buffer_prepare:offset is not aligned to 32 bytes\n");
229 "buffer_prepare:offset is \ 226 return -EINVAL;
230 not aligned to 32 bytes\n");
231 return -EINVAL;
232 }
233 }
234 } 227 }
235 return 0; 228 return 0;
236} 229}