Merge tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg...
[linux.git] / Documentation / devicetree / bindings / media / samsung-fimc.txt
1 Samsung S5P/EXYNOS SoC Camera Subsystem (FIMC)
2 ----------------------------------------------
3
4 The S5P/Exynos SoC Camera subsystem comprises of multiple sub-devices
5 represented by separate device tree nodes. Currently this includes: FIMC (in
6 the S5P SoCs series known as CAMIF), MIPI CSIS, FIMC-LITE and FIMC-IS (ISP).
7
8 The sub-subdevices are defined as child nodes of the common 'camera' node which
9 also includes common properties of the whole subsystem not really specific to
10 any single sub-device, like common camera port pins or the CAMCLK clock outputs
11 for external image sensors attached to an SoC.
12
13 Common 'camera' node
14 --------------------
15
16 Required 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
24 The pinctrl bindings defined in ../pinctrl/pinctrl-bindings.txt must be used
25 to 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
27 camera port pinmux at runtime. The "idle" state should configure both the camera
28 ports A and B into high impedance state, especially the CAMCLK clock output
29 should be inactive. For the "active-a" state the camera port A must be activated
30 and the port B deactivated and for the state "active-b" it should be the other
31 way around.
32
33 The 'camera' node must include at least one 'fimc' child node.
34
35 'fimc' device nodes
36 -------------------
37
38 Required 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
56 Each FIMC device should have an alias in the aliases node, in the form of
57 fimc<n>, where <n> is an integer specifying the IP block instance.
58
59 Optional 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
85 This node should contain child 'port' nodes specifying active parallel video
86 input ports. It includes camera A and camera B inputs. 'reg' property in the
87 port nodes specifies data input - 0, 1 indicates input A, B respectively.
88
89 Optional properties
90
91 - samsung,camclk-out : specifies clock output for remote sensor,
92                        0 - CAM_A_CLKOUT, 1 - CAM_B_CLKOUT;
93
94 Image sensor nodes
95 ------------------
96
97 The sensor device nodes should be added to their control bus controller (e.g.
98 I2C0) nodes and linked to a port node in the csis or the parallel-ports node,
99 using the common video interfaces bindings, defined in video-interfaces.txt.
100 The implementation of this bindings requires clock-frequency property to be
101 present in the sensor device nodes.
102
103 Example:
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                 /* MIPI CSI-2 bus IF sensor */
132                 s5c73m3: sensor@0x1a {
133                         compatible = "samsung,s5c73m3";
134                         reg = <0x1a>;
135                         vddio-supply = <...>;
136
137                         clock-frequency = <24000000>;
138                         clocks = <...>;
139                         clock-names = "mclk";
140
141                         port {
142                                 s5c73m3_1: endpoint {
143                                         data-lanes = <1 2 3 4>;
144                                         remote-endpoint = <&csis0_ep>;
145                                 };
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
197 The MIPI-CSIS device binding is defined in samsung-mipi-csis.txt.