aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7164/saa7164-buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/saa7164/saa7164-buffer.c')
-rw-r--r--drivers/media/video/saa7164/saa7164-buffer.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/drivers/media/video/saa7164/saa7164-buffer.c b/drivers/media/video/saa7164/saa7164-buffer.c
index 6f58af44d02b..5fccecd588ce 100644
--- a/drivers/media/video/saa7164/saa7164-buffer.c
+++ b/drivers/media/video/saa7164/saa7164-buffer.c
@@ -265,3 +265,41 @@ int saa7164_buffer_cfg_port(struct saa7164_port *port)
265 return 0; 265 return 0;
266} 266}
267 267
268struct saa7164_user_buffer *saa7164_buffer_alloc_user(struct saa7164_dev *dev, u32 len)
269{
270 struct saa7164_user_buffer *buf;
271
272 buf = kzalloc(sizeof(struct saa7164_user_buffer), GFP_KERNEL);
273 if (buf == 0)
274 return 0;
275
276 buf->data = kzalloc(len, GFP_KERNEL);
277
278 if (buf->data == 0) {
279 kfree(buf);
280 return 0;
281 }
282
283 buf->actual_size = len;
284 buf->pos = 0;
285
286 dprintk(DBGLVL_BUF, "%s() allocated user buffer @ 0x%p\n",
287 __func__, buf);
288
289 return buf;
290}
291
292void saa7164_buffer_dealloc_user(struct saa7164_user_buffer *buf)
293{
294 if (!buf)
295 return;
296
297 if (buf->data) {
298 kfree(buf->data);
299 buf->data = 0;
300 }
301
302 if (buf)
303 kfree(buf);
304}
305