linux/Documentation/devicetree/bindings/media/samsung-fimc.txt
<<
>>
Prefs
   1Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
   2----------------------------------------------
   3
   4The S5P/Exynos SoC Camera subsystem comprises of multiple sub-devices
   5represented by separate device tree nodes. Currently this includes: FIMC (in
   6the S5P SoCs series known as CAMIF), MIPI CSIS, FIMC-LITE and FIMC-IS (ISP).
   7
   8The sub-subdevices are defined as child nodes of the common 'camera' node which
   9also includes common properties of the whole subsystem not really specific to
  10any single sub-device, like common camera port pins or the CAMCLK clock outputs
  11for external image sensors attached to an SoC.
  12
  13Common 'camera' node
  14--------------------
  15
  16Required properties:
  17
  18- compatible    : must be "samsung,fimc", "simple-bus"
  19- clocks        : list of clock specifiers, corresponding to entries in
  20                  the clock-names property;
  21- clock-names   : must contain "sclk_cam0", "sclk_cam1", "pxl_async0",
  22                  "pxl_async1" entries, matching entries in the clocks property.
  23
  24The pinctrl bindings defined in ../pinctrl/pinctrl-bindings.txt must be used
  25to define a required pinctrl state named "default" and optional pinctrl states:
  26"idle", "active-a", active-b". These optional states can be used to switch the
  27camera port pinmux at runtime. The "idle" state should configure both the camera
  28ports A and B into high impedance state, especially the CAMCLK clock output
  29should be inactive. For the "active-a" state the camera port A must be activated
  30and the port B deactivated and for the state "active-b" it should be the other
  31way around.
  32
  33The 'camera' node must include at least one 'fimc' child node.
  34
  35'fimc' device nodes
  36-------------------
  37
  38Required properties:
  39
  40- compatible: "samsung,s5pv210-fimc" for S5PV210, "samsung,exynos4210-fimc"
  41  for Exynos4210 and "samsung,exynos4212-fimc" for Exynos4x12 SoCs;
  42- reg: physical base address and length of the registers set for the device;
  43- interrupts: should contain FIMC interrupt;
  44- clocks: list of clock specifiers, must contain an entry for each required
  45  entry in clock-names;
  46- clock-names: must contain "fimc", "sclk_fimc" entries.
  47- samsung,pix-limits: an array of maximum supported image sizes in pixels, for
  48  details refer to Table 2-1 in the S5PV210 SoC User Manual; The meaning of
  49  each cell is as follows:
  50  0 - scaler input horizontal size,
  51  1 - input horizontal size for the scaler bypassed,
  52  2 - REAL_WIDTH without input rotation,
  53  3 - REAL_HEIGHT with input rotation,
  54- samsung,sysreg: a phandle to the SYSREG node.
  55
  56Each FIMC device should have an alias in the aliases node, in the form of
  57fimc<n>, where <n> is an integer specifying the IP block instance.
  58
  59Optional properties:
  60
  61- clock-frequency: maximum FIMC local clock (LCLK) frequency;
  62- samsung,min-pix-sizes: an array specyfing minimum image size in pixels at
  63  the FIMC input and output DMA, in the first and second cell respectively.
  64  Default value when this property is not present is <16 16>;
  65- samsung,min-pix-alignment: minimum supported image height alignment (first
  66  cell) and the horizontal image offset (second cell). The values are in pixels
  67  and default to <2 1> when this property is not present;
  68- samsung,mainscaler-ext: a boolean property indicating whether the FIMC IP
  69  supports extended image size and has CIEXTEN register;
  70- samsung,rotators: a bitmask specifying whether this IP has the input and
  71  the output rotator. Bits 4 and 0 correspond to input and output rotator
  72  respectively. If a rotator is present its corresponding bit should be set.
  73  Default value when this property is not specified is 0x11.
  74- samsung,cam-if: a bolean property indicating whether the IP block includes
  75  the camera input interface.
  76- samsung,isp-wb: this property must be present if the IP block has the ISP
  77  writeback input.
  78- samsung,lcd-wb: this property must be present if the IP block has the LCD
  79  writeback input.
  80
  81
  82'parallel-ports' node
  83---------------------
  84
  85This node should contain child 'port' nodes specifying active parallel video
  86input ports. It includes camera A and camera B inputs. 'reg' property in the
  87port nodes specifies data input - 0, 1 indicates input A, B respectively.
  88
  89Optional properties
  90
  91- samsung,camclk-out : specifies clock output for remote sensor,
  92                       0 - CAM_A_CLKOUT, 1 - CAM_B_CLKOUT;
  93
  94Image sensor nodes
  95------------------
  96
  97The sensor device nodes should be added to their control bus controller (e.g.
  98I2C0) nodes and linked to a port node in the csis or the parallel-ports node,
  99using the common video interfaces bindings, defined in video-interfaces.txt.
 100The implementation of this bindings requires clock-frequency property to be
 101present in the sensor device nodes.
 102
 103Example:
 104
 105        aliases {
 106                fimc0 = &fimc_0;
 107        };
 108
 109        /* Parallel bus IF sensor */
 110        i2c_0: i2c@13860000 {
 111                s5k6aa: sensor@3c {
 112                        compatible = "samsung,s5k6aafx";
 113                        reg = <0x3c>;
 114                        vddio-supply = <...>;
 115
 116                        clock-frequency = <24000000>;
 117                        clocks = <...>;
 118                        clock-names = "mclk";
 119
 120                        port {
 121                                s5k6aa_ep: endpoint {
 122                                        remote-endpoint = <&fimc0_ep>;
 123                                        bus-width = <8>;
 124                                        hsync-active = <0>;
 125                                        vsync-active = <1>;
 126                                        pclk-sample = <1>;
 127                                };
 128                        };
 129                };
 130        };
 131
 132        /* MIPI CSI-2 bus IF sensor */
 133        s5c73m3: sensor@0x1a {
 134                compatible = "samsung,s5c73m3";
 135                reg = <0x1a>;
 136                vddio-supply = <...>;
 137
 138                clock-frequency = <24000000>;
 139                clocks = <...>;
 140                clock-names = "mclk";
 141
 142                port {
 143                        s5c73m3_1: endpoint {
 144                                data-lanes = <1 2 3 4>;
 145                                remote-endpoint = <&csis0_ep>;
 146                        };
 147                };
 148        };
 149
 150        camera {
 151                compatible = "samsung,fimc", "simple-bus";
 152                #address-cells = <1>;
 153                #size-cells = <1>;
 154                status = "okay";
 155
 156                pinctrl-names = "default";
 157                pinctrl-0 = <&cam_port_a_clk_active>;
 158
 159                /* parallel camera ports */
 160                parallel-ports {
 161                        /* camera A input */
 162                        port@0 {
 163                                reg = <0>;
 164                                fimc0_ep: endpoint {
 165                                        remote-endpoint = <&s5k6aa_ep>;
 166                                        bus-width = <8>;
 167                                        hsync-active = <0>;
 168                                        vsync-active = <1>;
 169                                        pclk-sample = <1>;
 170                                };
 171                        };
 172                };
 173
 174                fimc_0: fimc@11800000 {
 175                        compatible = "samsung,exynos4210-fimc";
 176                        reg = <0x11800000 0x1000>;
 177                        interrupts = <0 85 0>;
 178                        status = "okay";
 179                };
 180
 181                csis_0: csis@11880000 {
 182                        compatible = "samsung,exynos4210-csis";
 183                        reg = <0x11880000 0x1000>;
 184                        interrupts = <0 78 0>;
 185                        /* camera C input */
 186                        port@3 {
 187                                reg = <3>;
 188                                csis0_ep: endpoint {
 189                                        remote-endpoint = <&s5c73m3_ep>;
 190                                        data-lanes = <1 2 3 4>;
 191                                        samsung,csis-hs-settle = <12>;
 192                                };
 193                        };
 194                };
 195        };
 196
 197The MIPI-CSIS device binding is defined in samsung-mipi-csis.txt.
 198