|
@@ -1362,6 +1362,30 @@ static const struct media_request_object_ops vb2_core_req_ops = {
|
|
|
.release = vb2_req_release,
|
|
|
};
|
|
|
|
|
|
+bool vb2_request_object_is_buffer(struct media_request_object *obj)
|
|
|
+{
|
|
|
+ return obj->ops == &vb2_core_req_ops;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(vb2_request_object_is_buffer);
|
|
|
+
|
|
|
+bool vb2_request_has_buffers(struct media_request *req)
|
|
|
+{
|
|
|
+ struct media_request_object *obj;
|
|
|
+ unsigned long flags;
|
|
|
+ bool has_buffers = false;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&req->lock, flags);
|
|
|
+ list_for_each_entry(obj, &req->objects, list) {
|
|
|
+ if (vb2_request_object_is_buffer(obj)) {
|
|
|
+ has_buffers = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ spin_unlock_irqrestore(&req->lock, flags);
|
|
|
+ return has_buffers;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(vb2_request_has_buffers);
|
|
|
+
|
|
|
int vb2_core_prepare_buf(struct vb2_queue *q, unsigned int index, void *pb)
|
|
|
{
|
|
|
struct vb2_buffer *vb;
|