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://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).
