This is a list of things that need to be done to get this driver out of the
staging directory.

- Request API conversion. Remove of the dual pipeline and associate buffers
  as well as formats and the binary used to a request. Remove the
  opportunistic buffer management. (Sakari)

- IPU3 driver documentation (Laurent)
  Comments on configuring v4l2 subdevs for CIO2 and ImgU.

- Switch to yavta from v4l2n in driver docs.

- Elaborate the functionality of different selection rectangles in driver
  documentation. This may require driver changes as well.

- Document different operation modes, and which buffer queues are relevant
  in each mode. To process an image, which queues require a buffer an in
  which ones is it optional?
