Hi Alexandre, A quick review: I'm primarily concentrating on the uAPI as that is the most critical part to get right at this stage. On 12/15/17 08:56, Alexandre Courbot wrote: > The request API provides a way to group buffers and device parameters > into units of work to be queued and executed. This patch introduces the > UAPI and core framework. > > This patch is based on the previous work by Laurent Pinchart. The core > has changed considerably, but the UAPI is mostly untouched. > > Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxxxx> > --- > drivers/media/Makefile | 3 +- > drivers/media/media-device.c | 6 + > drivers/media/media-request.c | 390 +++++++++++++++++++++++++++++++++++ > drivers/media/v4l2-core/v4l2-ioctl.c | 2 +- > include/media/media-device.h | 3 + > include/media/media-entity.h | 6 + > include/media/media-request.h | 269 ++++++++++++++++++++++++ > include/uapi/linux/media.h | 11 + > 8 files changed, 688 insertions(+), 2 deletions(-) > create mode 100644 drivers/media/media-request.c > create mode 100644 include/media/media-request.h > <snip> > diff --git a/include/media/media-request.h b/include/media/media-request.h > new file mode 100644 > index 000000000000..ead7fd8898c4 > --- /dev/null > +++ b/include/media/media-request.h > @@ -0,0 +1,269 @@ > +/* > + * Generic request queue. > + * > + * Copyright (C) 2017, The Chromium OS Authors. All rights reserved. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + */ > + > +#ifndef _MEDIA_REQUEST_H > +#define _MEDIA_REQUEST_H > + > +#include <linux/kref.h> > +#include <linux/wait.h> > +#include <linux/list.h> > + > +struct media_device; > +struct media_request_queue; > +struct media_request_cmd; > +struct media_entity; > +struct media_request_entity_data; > + > +#ifdef CONFIG_MEDIA_CONTROLLER > + > +enum media_request_state { > + MEDIA_REQUEST_STATE_IDLE, > + MEDIA_REQUEST_STATE_QUEUED, > + MEDIA_REQUEST_STATE_COMPLETE, COMPLETE -> COMPLETED > + MEDIA_REQUEST_STATE_DELETED, > +}; Regards, Hans