Lines Matching full:plane
227 int plane; in __vb2_buf_mem_alloc() local
234 for (plane = 0; plane < vb->num_planes; ++plane) { in __vb2_buf_mem_alloc()
236 unsigned long size = PAGE_ALIGN(vb->planes[plane].length); in __vb2_buf_mem_alloc()
239 if (size < vb->planes[plane].length) in __vb2_buf_mem_alloc()
244 q->alloc_devs[plane] ? : q->dev, in __vb2_buf_mem_alloc()
252 /* Associate allocator private data with this plane */ in __vb2_buf_mem_alloc()
253 vb->planes[plane].mem_priv = mem_priv; in __vb2_buf_mem_alloc()
259 for (; plane > 0; --plane) { in __vb2_buf_mem_alloc()
260 call_void_memop(vb, put, vb->planes[plane - 1].mem_priv); in __vb2_buf_mem_alloc()
261 vb->planes[plane - 1].mem_priv = NULL; in __vb2_buf_mem_alloc()
272 unsigned int plane; in __vb2_buf_mem_free() local
274 for (plane = 0; plane < vb->num_planes; ++plane) { in __vb2_buf_mem_free()
275 call_void_memop(vb, put, vb->planes[plane].mem_priv); in __vb2_buf_mem_free()
276 vb->planes[plane].mem_priv = NULL; in __vb2_buf_mem_free()
277 dprintk(vb->vb2_queue, 3, "freed plane %d of buffer %d\n", in __vb2_buf_mem_free()
278 plane, vb->index); in __vb2_buf_mem_free()
288 unsigned int plane; in __vb2_buf_userptr_put() local
290 for (plane = 0; plane < vb->num_planes; ++plane) { in __vb2_buf_userptr_put()
291 if (vb->planes[plane].mem_priv) in __vb2_buf_userptr_put()
292 call_void_memop(vb, put_userptr, vb->planes[plane].mem_priv); in __vb2_buf_userptr_put()
293 vb->planes[plane].mem_priv = NULL; in __vb2_buf_userptr_put()
299 * a DMABUF shared plane
330 int plane; in __vb2_buf_dmabuf_put() local
333 * When multiple planes share the same DMA buffer attachment, the plane in __vb2_buf_dmabuf_put()
338 for (plane = vb->num_planes - 1; plane >= 0; --plane) in __vb2_buf_dmabuf_put()
339 __vb2_plane_dmabuf_put(vb, &vb->planes[plane]); in __vb2_buf_dmabuf_put()
348 unsigned int plane; in __vb2_buf_mem_prepare() local
354 for (plane = 0; plane < vb->num_planes; ++plane) in __vb2_buf_mem_prepare()
355 call_void_memop(vb, prepare, vb->planes[plane].mem_priv); in __vb2_buf_mem_prepare()
364 unsigned int plane; in __vb2_buf_mem_finish() local
370 for (plane = 0; plane < vb->num_planes; ++plane) in __vb2_buf_mem_finish()
371 call_void_memop(vb, finish, vb->planes[plane].mem_priv); in __vb2_buf_mem_finish()
375 * __setup_offsets() - setup unique offsets ("cookies") for every plane in
381 unsigned int plane; in __setup_offsets() local
393 * |DST_QUEUE_OFF_BASE|buffer index|plane index| 0 | in __setup_offsets()
400 for (plane = 0; plane < vb->num_planes; ++plane) { in __setup_offsets()
401 vb->planes[plane].m.offset = offset + (plane << PAGE_SHIFT); in __setup_offsets()
403 dprintk(q, 3, "buffer %d, plane %d offset 0x%08lx\n", in __setup_offsets()
404 vb->index, plane, offset); in __setup_offsets()
470 unsigned int buffer, plane; in __vb2_queue_alloc() local
513 for (plane = 0; plane < num_planes; ++plane) { in __vb2_queue_alloc()
514 vb->planes[plane].length = plane_sizes[plane]; in __vb2_queue_alloc()
515 vb->planes[plane].min_length = plane_sizes[plane]; in __vb2_queue_alloc()
549 dprintk(q, 3, "allocated %d buffers, %d plane(s) each\n", in __vb2_queue_alloc()
702 unsigned int plane; in vb2_buffer_in_use() local
703 for (plane = 0; plane < vb->num_planes; ++plane) { in vb2_buffer_in_use()
704 void *mem_priv = vb->planes[plane].mem_priv; in vb2_buffer_in_use()
709 * we are not the only user of the plane's memory. in vb2_buffer_in_use()
943 * Driver also sets the size and allocator context for each plane. in vb2_core_reqbufs()
1270 unsigned int plane; in __prepare_userptr() local
1281 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_userptr()
1282 /* Skip the plane if already verified */ in __prepare_userptr()
1283 if (vb->planes[plane].m.userptr && in __prepare_userptr()
1284 vb->planes[plane].m.userptr == planes[plane].m.userptr in __prepare_userptr()
1285 && vb->planes[plane].length == planes[plane].length) in __prepare_userptr()
1288 dprintk(q, 3, "userspace address for plane %d changed, reacquiring memory\n", in __prepare_userptr()
1289 plane); in __prepare_userptr()
1291 /* Check if the provided plane buffer is large enough */ in __prepare_userptr()
1292 if (planes[plane].length < vb->planes[plane].min_length) { in __prepare_userptr()
1293 dprintk(q, 1, "provided buffer size %u is less than setup size %u for plane %d\n", in __prepare_userptr()
1294 planes[plane].length, in __prepare_userptr()
1295 vb->planes[plane].min_length, in __prepare_userptr()
1296 plane); in __prepare_userptr()
1302 if (vb->planes[plane].mem_priv) { in __prepare_userptr()
1308 call_void_memop(vb, put_userptr, vb->planes[plane].mem_priv); in __prepare_userptr()
1311 vb->planes[plane].mem_priv = NULL; in __prepare_userptr()
1312 vb->planes[plane].bytesused = 0; in __prepare_userptr()
1313 vb->planes[plane].length = 0; in __prepare_userptr()
1314 vb->planes[plane].m.userptr = 0; in __prepare_userptr()
1315 vb->planes[plane].data_offset = 0; in __prepare_userptr()
1317 /* Acquire each plane's memory */ in __prepare_userptr()
1320 q->alloc_devs[plane] ? : q->dev, in __prepare_userptr()
1321 planes[plane].m.userptr, in __prepare_userptr()
1322 planes[plane].length); in __prepare_userptr()
1324 dprintk(q, 1, "failed acquiring userspace memory for plane %d\n", in __prepare_userptr()
1325 plane); in __prepare_userptr()
1329 vb->planes[plane].mem_priv = mem_priv; in __prepare_userptr()
1336 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_userptr()
1337 vb->planes[plane].bytesused = planes[plane].bytesused; in __prepare_userptr()
1338 vb->planes[plane].length = planes[plane].length; in __prepare_userptr()
1339 vb->planes[plane].m.userptr = planes[plane].m.userptr; in __prepare_userptr()
1340 vb->planes[plane].data_offset = planes[plane].data_offset; in __prepare_userptr()
1366 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_userptr()
1367 if (vb->planes[plane].mem_priv) in __prepare_userptr()
1369 vb->planes[plane].mem_priv); in __prepare_userptr()
1370 vb->planes[plane].mem_priv = NULL; in __prepare_userptr()
1371 vb->planes[plane].m.userptr = 0; in __prepare_userptr()
1372 vb->planes[plane].length = 0; in __prepare_userptr()
1386 unsigned int plane, i; in __prepare_dmabuf() local
1397 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_dmabuf()
1398 struct dma_buf *dbuf = dma_buf_get(planes[plane].m.fd); in __prepare_dmabuf()
1400 planes[plane].dbuf = dbuf; in __prepare_dmabuf()
1403 dprintk(q, 1, "invalid dmabuf fd for plane %d\n", in __prepare_dmabuf()
1404 plane); in __prepare_dmabuf()
1410 if (planes[plane].length == 0) in __prepare_dmabuf()
1411 planes[plane].length = dbuf->size; in __prepare_dmabuf()
1413 if (planes[plane].length < vb->planes[plane].min_length) { in __prepare_dmabuf()
1414 dprintk(q, 1, "invalid dmabuf length %u for plane %d, minimum length %u\n", in __prepare_dmabuf()
1415 planes[plane].length, plane, in __prepare_dmabuf()
1416 vb->planes[plane].min_length); in __prepare_dmabuf()
1421 /* Skip the plane if already verified */ in __prepare_dmabuf()
1422 if (dbuf == vb->planes[plane].dbuf && in __prepare_dmabuf()
1423 vb->planes[plane].length == planes[plane].length) in __prepare_dmabuf()
1426 dprintk(q, 3, "buffer for plane %d changed\n", plane); in __prepare_dmabuf()
1438 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_dmabuf()
1444 for (i = 0; i < plane; ++i) { in __prepare_dmabuf()
1445 if (planes[plane].dbuf == vb->planes[i].dbuf && in __prepare_dmabuf()
1446 q->alloc_devs[plane] == q->alloc_devs[i]) { in __prepare_dmabuf()
1447 vb->planes[plane].dbuf_duplicated = true; in __prepare_dmabuf()
1448 vb->planes[plane].dbuf = vb->planes[i].dbuf; in __prepare_dmabuf()
1449 vb->planes[plane].mem_priv = vb->planes[i].mem_priv; in __prepare_dmabuf()
1454 if (vb->planes[plane].dbuf_duplicated) in __prepare_dmabuf()
1457 /* Acquire each plane's memory */ in __prepare_dmabuf()
1460 q->alloc_devs[plane] ? : q->dev, in __prepare_dmabuf()
1461 planes[plane].dbuf, in __prepare_dmabuf()
1462 planes[plane].length); in __prepare_dmabuf()
1469 vb->planes[plane].dbuf = planes[plane].dbuf; in __prepare_dmabuf()
1470 vb->planes[plane].mem_priv = mem_priv; in __prepare_dmabuf()
1477 ret = call_memop(vb, map_dmabuf, vb->planes[plane].mem_priv); in __prepare_dmabuf()
1479 dprintk(q, 1, "failed to map dmabuf for plane %d\n", in __prepare_dmabuf()
1480 plane); in __prepare_dmabuf()
1483 vb->planes[plane].dbuf_mapped = 1; in __prepare_dmabuf()
1486 for (plane = 0; plane < vb->num_planes; ++plane) in __prepare_dmabuf()
1487 dma_buf_put(planes[plane].dbuf); in __prepare_dmabuf()
1494 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_dmabuf()
1495 vb->planes[plane].bytesused = planes[plane].bytesused; in __prepare_dmabuf()
1496 vb->planes[plane].length = planes[plane].length; in __prepare_dmabuf()
1497 vb->planes[plane].m.fd = planes[plane].m.fd; in __prepare_dmabuf()
1498 vb->planes[plane].data_offset = planes[plane].data_offset; in __prepare_dmabuf()
1523 for (plane = 0; plane < vb->num_planes; ++plane) { in __prepare_dmabuf()
1524 if (!IS_ERR_OR_NULL(planes[plane].dbuf)) in __prepare_dmabuf()
1525 dma_buf_put(planes[plane].dbuf); in __prepare_dmabuf()
2398 * __find_plane_by_offset() - find plane associated with the given offset
2401 struct vb2_buffer **vb, unsigned int *plane) in __find_plane_by_offset() argument
2421 /* Get buffer and plane from the offset */ in __find_plane_by_offset()
2423 *plane = (offset >> PAGE_SHIFT) & PLANE_INDEX_MASK; in __find_plane_by_offset()
2428 if (*plane >= (*vb)->num_planes) in __find_plane_by_offset()
2435 struct vb2_buffer *vb, unsigned int plane, unsigned int flags) in vb2_core_expbuf() argument
2461 if (plane >= vb->num_planes) { in vb2_core_expbuf()
2462 dprintk(q, 1, "buffer plane out of range\n"); in vb2_core_expbuf()
2471 vb_plane = &vb->planes[plane]; in vb2_core_expbuf()
2478 dprintk(q, 1, "failed to export buffer %d, plane %d\n", in vb2_core_expbuf()
2479 vb->index, plane); in vb2_core_expbuf()
2485 dprintk(q, 3, "buffer %d, plane %d failed to export (%d)\n", in vb2_core_expbuf()
2486 vb->index, plane, ret); in vb2_core_expbuf()
2491 dprintk(q, 3, "buffer %d, plane %d exported as %d descriptor\n", in vb2_core_expbuf()
2492 vb->index, plane, ret); in vb2_core_expbuf()
2503 unsigned int plane = 0; in vb2_mmap() local
2529 * Find the plane corresponding to the offset passed by userspace. This in vb2_mmap()
2532 ret = __find_plane_by_offset(q, offset, &vb, &plane); in vb2_mmap()
2541 length = PAGE_ALIGN(vb->planes[plane].length); in vb2_mmap()
2556 ret = call_memop(vb, mmap, vb->planes[plane].mem_priv, vma); in vb2_mmap()
2563 dprintk(q, 3, "buffer %u, plane %d successfully mapped\n", vb->index, plane); in vb2_mmap()
2577 unsigned int plane; in vb2_get_unmapped_area() local
2584 * Find the plane corresponding to the offset passed by userspace. This in vb2_get_unmapped_area()
2587 ret = __find_plane_by_offset(q, offset, &vb, &plane); in vb2_get_unmapped_area()
2591 vaddr = vb2_plane_vaddr(vb, plane); in vb2_get_unmapped_area()