Samsung S5P/EXYNOS4 FIMC driver

Copyright (C) 2012 Samsung Electronics Co., Ltd.
---------------------------------------------------------------------------

The FIMC (Fully Interactive Mobile Camera) device available in Samsung
SoC Application Processors is an integrated camera host interface, color
space converter, image resizer and rotator.  It's also capable of capturing
data from LCD controller (FIMD) through the SoC internal writeback data
path.  There are multiple FIMC instances in the SoCs (up to 4), having
slightly different capabilities, like pixel alignment constraints, rotator
availability, LCD writeback support, etc. The driver is located at
drivers/media/platform/s5p-fimc directory.

1. Supported SoCs
=================

S5PC100 (mem-to-mem only), S5PV210, EXYNOS4210

2. Supported features
=====================

 - camera parallel interface capture (ITU-R.BT601/565);
 - camera serial interface capture (MIPI-CSI2);
 - memory-to-memory processing (color space conversion, scaling, mirror
   and rotation);
 - dynamic pipeline re-configuration at runtime (re-attachment of any FIMC
   instance to any parallel video input or any MIPI-CSI front-end);
 - runtime PM and system wide suspend/resume

Not currently supported:
 - LCD writeback input
 - per frame clock gating (mem-to-mem)

3. Files partitioning
=====================

- media device driver
  drivers/media/platform/s5p-fimc/fimc-mdevice.[ch]

 - camera capture video device driver
  drivers/media/platform/s5p-fimc/fimc-capture.c

 - MIPI-CSI2 receiver subdev
  drivers/media/platform/s5p-fimc/mipi-csis.[ch]

 - video post-processor (mem-to-mem)
  drivers/media/platform/s5p-fimc/fimc-core.c

 - common files
  drivers/media/platform/s5p-fimc/fimc-core.h
  drivers/media/platform/s5p-fimc/fimc-reg.h
  drivers/media/platform/s5p-fimc/regs-fimc.h

4. User space interfaces
========================

4.1. Media device interface

The driver supports Media Controller API as defined at
http://http://linuxtv.org/downloads/v4l-dvb-apis/media_common.html
The media device driver name is "SAMSUNG S5P FIMC".

The purpose of this interface is to allow changing assignment of FIMC instances
to the SoC peripheral camera input at runtime and optionally to control internal
connections of the MIPI-CSIS device(s) to the FIMC entities.

The media device interface allows to configure the SoC for capturing image
data from the sensor through more than one FIMC instance (e.g. for simultaneous
viewfinder and still capture setup).
Reconfiguration is done by enabling/disabling media links created by the driver
during initialization. The internal device topology can be easily discovered
through media entity and links enumeration.

4.2. Memory-to-memory video node

V4L2 memory-to-memory interface at /dev/video? device node.  This is standalone
video device, it has no media pads. However please note the mem-to-mem and
capture video node operation on same FIMC instance is not allowed.  The driver
detects such cases but the applications should prevent them to avoid an
undefined behaviour.

4.3. Capture video node

The driver supports V4L2 Video Capture Interface as defined at:
http://linuxtv.org/downloads/v4l-dvb-apis/devices.html

At the capture and mem-to-mem video nodes only the multi-planar API is
supported. For more details see:
http://linuxtv.org/downloads/v4l-dvb-apis/planar-apis.html

4.4. Camera capture subdevs

Each FIMC instance exports a sub-device node (/dev/v4l-subdev?), a sub-device
node is also created per each available and enabled at the platform level
MIPI-CSI receiver device (currently up to two).

4.5. sysfs

In order to enable more precise camera pipeline control through the sub-device
API the driver creates a sysfs entry associated with "s5p-fimc-md" platform
device. The entry path is: /sys/platform/devices/s5p-fimc-md/subdev_conf_mode.

In typical use case there could be a following capture pipeline configuration:
sensor subdev -> mipi-csi subdev -> fimc subdev -> video node

When we configure these devices through sub-device API at user space, the
configuration flow must be from left to right, and the video node is
configured as last one.
When we don't use sub-device user space API the whole configuration of all
devices belonging to the pipeline is done at the video node driver.
The sysfs entry allows to instruct the capture node driver not to configure
the sub-devices (format, crop), to avoid resetting the subdevs' configuration
when the last configuration steps at the video node is performed.

For full sub-device control support (subdevs configured at user space before
starting streaming):
# echo "sub-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode

For V4L2 video node control only (subdevs configured internally by the host
driver):
# echo "vid-dev" > /sys/platform/devices/s5p-fimc-md/subdev_conf_mode
This is a default option.

5. Device mapping to video and subdev device nodes
==================================================

There are associated two video device nodes with each device instance in
hardware - video capture and mem-to-mem and additionally a subdev node for
more precise FIMC capture subsystem control. In addition a separate v4l2
sub-device node is created per each MIPI-CSIS device.

How to find out which /dev/video? or /dev/v4l-subdev? is assigned to which
device?

You can either grep through the kernel log to find relevant information, i.e.
# dmesg | grep -i fimc
(note that udev, if present, might still have rearranged the video nodes),

or retrieve the information from /dev/media? with help of the media-ctl tool:
# media-ctl -p

6. Platform support
===================

The machine code (plat-s5p and arch/arm/mach-*) must select following options

CONFIG_S5P_DEV_FIMC0       mandatory
CONFIG_S5P_DEV_FIMC1  \
CONFIG_S5P_DEV_FIMC2  |    optional
CONFIG_S5P_DEV_FIMC3  |
CONFIG_S5P_SETUP_FIMC /
CONFIG_S5P_SETUP_MIPIPHY \
CONFIG_S5P_DEV_CSIS0     | optional for MIPI-CSI interface
CONFIG_S5P_DEV_CSIS1     /

Except that, relevant s5p_device_fimc? should be registered in the machine code
in addition to a "s5p-fimc-md" platform device to which the media device driver
is bound.  The "s5p-fimc-md" device instance is required even if only mem-to-mem
operation is used.

The description of sensor(s) attached to FIMC/MIPI-CSIS camera inputs should be
passed as the "s5p-fimc-md" device platform_data.  The platform data structure
is defined in file include/media/s5p_fimc.h.

7. Build
========

This driver depends on following config options:
PLAT_S5P,
PM_RUNTIME,
I2C,
REGULATOR,
VIDEO_V4L2_SUBDEV_API,

If the driver is built as a loadable kernel module (CONFIG_VIDEO_SAMSUNG_S5P_FIMC=m)
two modules are created (in addition to the core v4l2 modules): s5p-fimc.ko and
optional s5p-csis.ko (MIPI-CSI receiver subdev).
