media: Software-defined camera driver

swcam is a DMA-BUF backed software-defined camera driver capable of
creating video capture devices to which data can be streamed through
/dev/swcam after calling SWCAM_IOC_CREATE. Frames are pushed with
SWCAM_IOC_QUEUE and recycled with SWCAM_IOC_DEQUEUE. Zero-copy semantics
are supported for shared DMA-BUF between capture and output.

Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
---
v3:
- Address "proprietary risks" with a format selection best suited for
  software defined sources.
- Dynamically rellocate VB2 on mode change and clean up SWCAM_IOC_CREATE
  uAPI.
v2:
- Added motivation based on feedback to v1.
- Provide a list of allowed modes for /dev/videoX in SWCAM_IOC_CREATE.
- Merged SWCAM_IOC_WAIT and SWCAM_IOC_STATUS.
- Return state with operation flags in SWCAM_IOC_WAIT.
- Test program: https://git.kernel.org/pub/scm/linux/kernel/git/jarkko/swcam-test.git
7 files changed