diff options
Diffstat (limited to 'drivers/media/video/saa7164/saa7164-buffer.c')
-rw-r--r-- | drivers/media/video/saa7164/saa7164-buffer.c | 38 |
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 | ||
268 | struct 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 | |||
292 | void 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 | |||