1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/samsung,exynos4212-fimc-is.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Samsung Exynos4212/4412 SoC Imaging Subsystem (FIMC-IS)
8
9maintainers:
10  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
11  - Sylwester Nawrocki <s.nawrocki@samsung.com>
12
13description:
14  The FIMC-IS is a subsystem for processing image signal from an image sensor.
15  The Exynos4x12 SoC series FIMC-IS V1.5 comprises of a dedicated ARM Cortex-A5
16  processor, ISP, DRC and FD IP blocks and peripheral devices such as UART, I2C
17  and SPI bus controllers, PWM and ADC.
18
19properties:
20  compatible:
21    enum:
22      - samsung,exynos4212-fimc-is
23
24  reg:
25    maxItems: 1
26
27  ranges: true
28
29  '#address-cells':
30    const: 1
31
32  '#size-cells':
33    const: 1
34
35  clocks:
36    maxItems: 21
37
38  clock-names:
39    items:
40      - const: lite0
41      - const: lite1
42      - const: ppmuispx
43      - const: ppmuispmx
44      - const: isp
45      - const: drc
46      - const: fd
47      - const: mcuisp
48      - const: gicisp
49      - const: mcuctl_isp
50      - const: pwm_isp
51      - const: ispdiv0
52      - const: ispdiv1
53      - const: mcuispdiv0
54      - const: mcuispdiv1
55      - const: mpll
56      - const: aclk200
57      - const: aclk400mcuisp
58      - const: div_aclk200
59      - const: div_aclk400mcuisp
60      - const: uart
61
62  interrupts:
63    maxItems: 2
64
65  iommus:
66    maxItems: 4
67
68  iommu-names:
69    items:
70      - const: isp
71      - const: drc
72      - const: fd
73      - const: mcuctl
74
75  power-domains:
76    maxItems: 1
77
78  samsung,pmu-syscon:
79    $ref: /schemas/types.yaml#/definitions/phandle
80    description:
81      Power Management Unit (PMU) system controller interface, used to
82      power/start the ISP.
83
84patternProperties:
85  "^pmu@[0-9a-f]+$":
86    type: object
87    additionalProperties: false
88    deprecated: true
89    description:
90      Node representing the SoC's Power Management Unit (duplicated with the
91      correct PMU node in the SoC). Deprecated, use samsung,pmu-syscon.
92
93    properties:
94      reg:
95        maxItems: 1
96
97    required:
98      - reg
99
100  "^i2c-isp@[0-9a-f]+$":
101    type: object
102    $ref: /schemas/i2c/i2c-controller.yaml#
103    unevaluatedProperties: false
104    description:
105      ISP I2C bus controller
106
107    properties:
108      compatible:
109        const: samsung,exynos4212-i2c-isp
110
111      reg:
112        maxItems: 1
113
114
115      clocks:
116        maxItems: 1
117
118      clock-names:
119        items:
120          - const: i2c_isp
121
122      pinctrl-0: true
123      pinctrl-names:
124        items:
125          - const: default
126
127    required:
128      - compatible
129      - reg
130      - clocks
131      - clock-names
132
133required:
134  - compatible
135  - reg
136  - '#address-cells'
137  - clocks
138  - clock-names
139  - interrupts
140  - ranges
141  - samsung,pmu-syscon
142  - '#size-cells'
143
144additionalProperties: false
145
146examples:
147  - |
148    #include <dt-bindings/clock/exynos4.h>
149    #include <dt-bindings/gpio/gpio.h>
150    #include <dt-bindings/interrupt-controller/arm-gic.h>
151
152    fimc-is@12000000 {
153        compatible = "samsung,exynos4212-fimc-is";
154        reg = <0x12000000 0x260000>;
155        interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
156                     <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
157        clocks = <&isp_clock CLK_ISP_FIMC_LITE0>,
158                 <&isp_clock CLK_ISP_FIMC_LITE1>,
159                 <&isp_clock CLK_ISP_PPMUISPX>,
160                 <&isp_clock CLK_ISP_PPMUISPMX>,
161                 <&isp_clock CLK_ISP_FIMC_ISP>,
162                 <&isp_clock CLK_ISP_FIMC_DRC>,
163                 <&isp_clock CLK_ISP_FIMC_FD>,
164                 <&isp_clock CLK_ISP_MCUISP>,
165                 <&isp_clock CLK_ISP_GICISP>,
166                 <&isp_clock CLK_ISP_MCUCTL_ISP>,
167                 <&isp_clock CLK_ISP_PWM_ISP>,
168                 <&isp_clock CLK_ISP_DIV_ISP0>,
169                 <&isp_clock CLK_ISP_DIV_ISP1>,
170                 <&isp_clock CLK_ISP_DIV_MCUISP0>,
171                 <&isp_clock CLK_ISP_DIV_MCUISP1>,
172                 <&clock CLK_MOUT_MPLL_USER_T>,
173                 <&clock CLK_ACLK200>,
174                 <&clock CLK_ACLK400_MCUISP>,
175                 <&clock CLK_DIV_ACLK200>,
176                 <&clock CLK_DIV_ACLK400_MCUISP>,
177                 <&clock CLK_UART_ISP_SCLK>;
178        clock-names = "lite0", "lite1", "ppmuispx",
179                      "ppmuispmx", "isp",
180                      "drc", "fd", "mcuisp",
181                      "gicisp", "mcuctl_isp", "pwm_isp",
182                      "ispdiv0", "ispdiv1", "mcuispdiv0",
183                      "mcuispdiv1", "mpll", "aclk200",
184                      "aclk400mcuisp", "div_aclk200",
185                      "div_aclk400mcuisp", "uart";
186        iommus = <&sysmmu_fimc_isp>, <&sysmmu_fimc_drc>,
187                 <&sysmmu_fimc_fd>, <&sysmmu_fimc_mcuctl>;
188        iommu-names = "isp", "drc", "fd", "mcuctl";
189        power-domains = <&pd_isp>;
190        samsung,pmu-syscon = <&pmu_system_controller>;
191
192        #address-cells = <1>;
193        #size-cells = <1>;
194        ranges;
195
196        i2c-isp@12140000 {
197            compatible = "samsung,exynos4212-i2c-isp";
198            reg = <0x12140000 0x100>;
199            clocks = <&isp_clock CLK_ISP_I2C1_ISP>;
200            clock-names = "i2c_isp";
201            pinctrl-0 = <&fimc_is_i2c1>;
202            pinctrl-names = "default";
203            #address-cells = <1>;
204            #size-cells = <0>;
205
206            image-sensor@10 {
207                compatible = "samsung,s5k6a3";
208                reg = <0x10>;
209                svdda-supply = <&cam_io_reg>;
210                svddio-supply = <&ldo19_reg>;
211                afvdd-supply = <&ldo19_reg>;
212                clock-frequency = <24000000>;
213                clocks = <&camera 1>;
214                clock-names = "extclk";
215                gpios = <&gpm1 6 GPIO_ACTIVE_LOW>;
216
217                port {
218                    endpoint {
219                        remote-endpoint = <&csis1_ep>;
220                        data-lanes = <1>;
221                    };
222                };
223            };
224        };
225    };
226