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