|
@@ -488,7 +488,7 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- if (req->count == 0 || q->num_buffers != 0) {
|
|
|
+ if (req->count == 0 || q->num_buffers != 0 || q->memory != req->memory) {
|
|
|
/*
|
|
|
* We already have buffers allocated, so first check if they
|
|
|
* are not in use and can be freed.
|
|
@@ -501,6 +501,13 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req)
|
|
|
ret = __vb2_queue_free(q);
|
|
|
if (ret != 0)
|
|
|
return ret;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * In case of REQBUFS(0) return immediately without calling
|
|
|
+ * driver's queue_setup() callback and allocating resources.
|
|
|
+ */
|
|
|
+ if (req->count == 0)
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/*
|