xref: /openbmc/linux/Documentation/devicetree/bindings/display/bridge/samsung,mipi-dsim.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1*1f0d40d8SJagan Teki# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*1f0d40d8SJagan Teki%YAML 1.2
3*1f0d40d8SJagan Teki---
4*1f0d40d8SJagan Teki$id: http://devicetree.org/schemas/display/bridge/samsung,mipi-dsim.yaml#
5*1f0d40d8SJagan Teki$schema: http://devicetree.org/meta-schemas/core.yaml#
6*1f0d40d8SJagan Teki
7*1f0d40d8SJagan Tekititle: Samsung MIPI DSIM bridge controller
8*1f0d40d8SJagan Teki
9*1f0d40d8SJagan Tekimaintainers:
10*1f0d40d8SJagan Teki  - Inki Dae <inki.dae@samsung.com>
11*1f0d40d8SJagan Teki  - Jagan Teki <jagan@amarulasolutions.com>
12*1f0d40d8SJagan Teki  - Marek Szyprowski <m.szyprowski@samsung.com>
13*1f0d40d8SJagan Teki
14*1f0d40d8SJagan Tekidescription: |
15*1f0d40d8SJagan Teki  Samsung MIPI DSIM bridge controller can be found it on Exynos
16*1f0d40d8SJagan Teki  and i.MX8M Mini/Nano/Plus SoC's.
17*1f0d40d8SJagan Teki
18*1f0d40d8SJagan Tekiproperties:
19*1f0d40d8SJagan Teki  compatible:
20*1f0d40d8SJagan Teki    oneOf:
21*1f0d40d8SJagan Teki      - enum:
22*1f0d40d8SJagan Teki          - samsung,exynos3250-mipi-dsi
23*1f0d40d8SJagan Teki          - samsung,exynos4210-mipi-dsi
24*1f0d40d8SJagan Teki          - samsung,exynos5410-mipi-dsi
25*1f0d40d8SJagan Teki          - samsung,exynos5422-mipi-dsi
26*1f0d40d8SJagan Teki          - samsung,exynos5433-mipi-dsi
27*1f0d40d8SJagan Teki          - fsl,imx8mm-mipi-dsim
28*1f0d40d8SJagan Teki          - fsl,imx8mp-mipi-dsim
29*1f0d40d8SJagan Teki      - items:
30*1f0d40d8SJagan Teki          - const: fsl,imx8mn-mipi-dsim
31*1f0d40d8SJagan Teki          - const: fsl,imx8mm-mipi-dsim
32*1f0d40d8SJagan Teki
33*1f0d40d8SJagan Teki  reg:
34*1f0d40d8SJagan Teki    maxItems: 1
35*1f0d40d8SJagan Teki
36*1f0d40d8SJagan Teki  interrupts:
37*1f0d40d8SJagan Teki    maxItems: 1
38*1f0d40d8SJagan Teki
39*1f0d40d8SJagan Teki  '#address-cells':
40*1f0d40d8SJagan Teki    const: 1
41*1f0d40d8SJagan Teki
42*1f0d40d8SJagan Teki  '#size-cells':
43*1f0d40d8SJagan Teki    const: 0
44*1f0d40d8SJagan Teki
45*1f0d40d8SJagan Teki  clocks:
46*1f0d40d8SJagan Teki    minItems: 2
47*1f0d40d8SJagan Teki    maxItems: 5
48*1f0d40d8SJagan Teki
49*1f0d40d8SJagan Teki  clock-names:
50*1f0d40d8SJagan Teki    minItems: 2
51*1f0d40d8SJagan Teki    maxItems: 5
52*1f0d40d8SJagan Teki
53*1f0d40d8SJagan Teki  samsung,phy-type:
54*1f0d40d8SJagan Teki    $ref: /schemas/types.yaml#/definitions/uint32
55*1f0d40d8SJagan Teki    description: phandle to the samsung phy-type
56*1f0d40d8SJagan Teki
57*1f0d40d8SJagan Teki  power-domains:
58*1f0d40d8SJagan Teki    maxItems: 1
59*1f0d40d8SJagan Teki
60*1f0d40d8SJagan Teki  samsung,power-domain:
61*1f0d40d8SJagan Teki    $ref: /schemas/types.yaml#/definitions/phandle
62*1f0d40d8SJagan Teki    description: phandle to the associated samsung power domain
63*1f0d40d8SJagan Teki
64*1f0d40d8SJagan Teki  vddcore-supply:
65*1f0d40d8SJagan Teki    description: MIPI DSIM Core voltage supply (e.g. 1.1V)
66*1f0d40d8SJagan Teki
67*1f0d40d8SJagan Teki  vddio-supply:
68*1f0d40d8SJagan Teki    description: MIPI DSIM I/O and PLL voltage supply (e.g. 1.8V)
69*1f0d40d8SJagan Teki
70*1f0d40d8SJagan Teki  samsung,burst-clock-frequency:
71*1f0d40d8SJagan Teki    $ref: /schemas/types.yaml#/definitions/uint32
72*1f0d40d8SJagan Teki    description:
73*1f0d40d8SJagan Teki      DSIM high speed burst mode frequency.  If absent,
74*1f0d40d8SJagan Teki      the pixel clock from the attached device or bridge
75*1f0d40d8SJagan Teki      will be used instead.
76*1f0d40d8SJagan Teki
77*1f0d40d8SJagan Teki  samsung,esc-clock-frequency:
78*1f0d40d8SJagan Teki    $ref: /schemas/types.yaml#/definitions/uint32
79*1f0d40d8SJagan Teki    description:
80*1f0d40d8SJagan Teki      DSIM escape mode frequency.
81*1f0d40d8SJagan Teki
82*1f0d40d8SJagan Teki  samsung,pll-clock-frequency:
83*1f0d40d8SJagan Teki    $ref: /schemas/types.yaml#/definitions/uint32
84*1f0d40d8SJagan Teki    description:
85*1f0d40d8SJagan Teki      DSIM oscillator clock frequency. If absent, the clock frequency
86*1f0d40d8SJagan Teki      of sclk_mipi will be used instead.
87*1f0d40d8SJagan Teki
88*1f0d40d8SJagan Teki  phys:
89*1f0d40d8SJagan Teki    maxItems: 1
90*1f0d40d8SJagan Teki
91*1f0d40d8SJagan Teki  phy-names:
92*1f0d40d8SJagan Teki    const: dsim
93*1f0d40d8SJagan Teki
94*1f0d40d8SJagan Teki  ports:
95*1f0d40d8SJagan Teki    $ref: /schemas/graph.yaml#/properties/ports
96*1f0d40d8SJagan Teki
97*1f0d40d8SJagan Teki    properties:
98*1f0d40d8SJagan Teki      port@0:
99*1f0d40d8SJagan Teki        $ref: /schemas/graph.yaml#/properties/port
100*1f0d40d8SJagan Teki        description:
101*1f0d40d8SJagan Teki          Input port node to receive pixel data from the
102*1f0d40d8SJagan Teki          display controller. Exactly one endpoint must be
103*1f0d40d8SJagan Teki          specified.
104*1f0d40d8SJagan Teki
105*1f0d40d8SJagan Teki      port@1:
106*1f0d40d8SJagan Teki        $ref: /schemas/graph.yaml#/$defs/port-base
107*1f0d40d8SJagan Teki        unevaluatedProperties: false
108*1f0d40d8SJagan Teki        description:
109*1f0d40d8SJagan Teki          DSI output port node to the panel or the next bridge
110*1f0d40d8SJagan Teki          in the chain.
111*1f0d40d8SJagan Teki
112*1f0d40d8SJagan Teki        properties:
113*1f0d40d8SJagan Teki          endpoint:
114*1f0d40d8SJagan Teki            $ref: /schemas/media/video-interfaces.yaml#
115*1f0d40d8SJagan Teki            unevaluatedProperties: false
116*1f0d40d8SJagan Teki
117*1f0d40d8SJagan Teki            properties:
118*1f0d40d8SJagan Teki              data-lanes:
119*1f0d40d8SJagan Teki                minItems: 1
120*1f0d40d8SJagan Teki                maxItems: 4
121*1f0d40d8SJagan Teki                uniqueItems: true
122*1f0d40d8SJagan Teki                items:
123*1f0d40d8SJagan Teki                  enum: [ 1, 2, 3, 4 ]
124*1f0d40d8SJagan Teki
125*1f0d40d8SJagan Teki              lane-polarities:
126*1f0d40d8SJagan Teki                minItems: 1
127*1f0d40d8SJagan Teki                maxItems: 5
128*1f0d40d8SJagan Teki                description:
129*1f0d40d8SJagan Teki                  The Samsung MIPI DSI IP requires that all the data lanes have
130*1f0d40d8SJagan Teki                  the same polarity.
131*1f0d40d8SJagan Teki
132*1f0d40d8SJagan Teki            dependencies:
133*1f0d40d8SJagan Teki              lane-polarities: [data-lanes]
134*1f0d40d8SJagan Teki
135*1f0d40d8SJagan Tekirequired:
136*1f0d40d8SJagan Teki  - clock-names
137*1f0d40d8SJagan Teki  - clocks
138*1f0d40d8SJagan Teki  - compatible
139*1f0d40d8SJagan Teki  - interrupts
140*1f0d40d8SJagan Teki  - reg
141*1f0d40d8SJagan Teki  - samsung,esc-clock-frequency
142*1f0d40d8SJagan Teki
143*1f0d40d8SJagan TekiallOf:
144*1f0d40d8SJagan Teki  - $ref: ../dsi-controller.yaml#
145*1f0d40d8SJagan Teki  - if:
146*1f0d40d8SJagan Teki      properties:
147*1f0d40d8SJagan Teki        compatible:
148*1f0d40d8SJagan Teki          contains:
149*1f0d40d8SJagan Teki            const: samsung,exynos5433-mipi-dsi
150*1f0d40d8SJagan Teki
151*1f0d40d8SJagan Teki    then:
152*1f0d40d8SJagan Teki      properties:
153*1f0d40d8SJagan Teki        clocks:
154*1f0d40d8SJagan Teki          minItems: 5
155*1f0d40d8SJagan Teki
156*1f0d40d8SJagan Teki        clock-names:
157*1f0d40d8SJagan Teki          items:
158*1f0d40d8SJagan Teki            - const: bus_clk
159*1f0d40d8SJagan Teki            - const: phyclk_mipidphy0_bitclkdiv8
160*1f0d40d8SJagan Teki            - const: phyclk_mipidphy0_rxclkesc0
161*1f0d40d8SJagan Teki            - const: sclk_rgb_vclk_to_dsim0
162*1f0d40d8SJagan Teki            - const: sclk_mipi
163*1f0d40d8SJagan Teki
164*1f0d40d8SJagan Teki        ports:
165*1f0d40d8SJagan Teki          required:
166*1f0d40d8SJagan Teki            - port@0
167*1f0d40d8SJagan Teki
168*1f0d40d8SJagan Teki      required:
169*1f0d40d8SJagan Teki        - ports
170*1f0d40d8SJagan Teki        - vddcore-supply
171*1f0d40d8SJagan Teki        - vddio-supply
172*1f0d40d8SJagan Teki
173*1f0d40d8SJagan Teki  - if:
174*1f0d40d8SJagan Teki      properties:
175*1f0d40d8SJagan Teki        compatible:
176*1f0d40d8SJagan Teki          contains:
177*1f0d40d8SJagan Teki            const: samsung,exynos5410-mipi-dsi
178*1f0d40d8SJagan Teki
179*1f0d40d8SJagan Teki    then:
180*1f0d40d8SJagan Teki      properties:
181*1f0d40d8SJagan Teki        clocks:
182*1f0d40d8SJagan Teki          minItems: 2
183*1f0d40d8SJagan Teki
184*1f0d40d8SJagan Teki        clock-names:
185*1f0d40d8SJagan Teki          items:
186*1f0d40d8SJagan Teki            - const: bus_clk
187*1f0d40d8SJagan Teki            - const: pll_clk
188*1f0d40d8SJagan Teki
189*1f0d40d8SJagan Teki      required:
190*1f0d40d8SJagan Teki        - vddcore-supply
191*1f0d40d8SJagan Teki        - vddio-supply
192*1f0d40d8SJagan Teki
193*1f0d40d8SJagan Teki  - if:
194*1f0d40d8SJagan Teki      properties:
195*1f0d40d8SJagan Teki        compatible:
196*1f0d40d8SJagan Teki          contains:
197*1f0d40d8SJagan Teki            const: samsung,exynos4210-mipi-dsi
198*1f0d40d8SJagan Teki
199*1f0d40d8SJagan Teki    then:
200*1f0d40d8SJagan Teki      properties:
201*1f0d40d8SJagan Teki        clocks:
202*1f0d40d8SJagan Teki          minItems: 2
203*1f0d40d8SJagan Teki
204*1f0d40d8SJagan Teki        clock-names:
205*1f0d40d8SJagan Teki          items:
206*1f0d40d8SJagan Teki            - const: bus_clk
207*1f0d40d8SJagan Teki            - const: sclk_mipi
208*1f0d40d8SJagan Teki
209*1f0d40d8SJagan Teki      required:
210*1f0d40d8SJagan Teki        - vddcore-supply
211*1f0d40d8SJagan Teki        - vddio-supply
212*1f0d40d8SJagan Teki
213*1f0d40d8SJagan Teki  - if:
214*1f0d40d8SJagan Teki      properties:
215*1f0d40d8SJagan Teki        compatible:
216*1f0d40d8SJagan Teki          contains:
217*1f0d40d8SJagan Teki            const: samsung,exynos3250-mipi-dsi
218*1f0d40d8SJagan Teki
219*1f0d40d8SJagan Teki    then:
220*1f0d40d8SJagan Teki      properties:
221*1f0d40d8SJagan Teki        clocks:
222*1f0d40d8SJagan Teki          minItems: 2
223*1f0d40d8SJagan Teki
224*1f0d40d8SJagan Teki        clock-names:
225*1f0d40d8SJagan Teki          items:
226*1f0d40d8SJagan Teki            - const: bus_clk
227*1f0d40d8SJagan Teki            - const: pll_clk
228*1f0d40d8SJagan Teki
229*1f0d40d8SJagan Teki      required:
230*1f0d40d8SJagan Teki        - vddcore-supply
231*1f0d40d8SJagan Teki        - vddio-supply
232*1f0d40d8SJagan Teki        - samsung,phy-type
233*1f0d40d8SJagan Teki
234*1f0d40d8SJagan TekiadditionalProperties:
235*1f0d40d8SJagan Teki  type: object
236*1f0d40d8SJagan Teki
237*1f0d40d8SJagan Tekiexamples:
238*1f0d40d8SJagan Teki  - |
239*1f0d40d8SJagan Teki    #include <dt-bindings/clock/exynos5433.h>
240*1f0d40d8SJagan Teki    #include <dt-bindings/gpio/gpio.h>
241*1f0d40d8SJagan Teki    #include <dt-bindings/interrupt-controller/arm-gic.h>
242*1f0d40d8SJagan Teki
243*1f0d40d8SJagan Teki    dsi@13900000 {
244*1f0d40d8SJagan Teki       compatible = "samsung,exynos5433-mipi-dsi";
245*1f0d40d8SJagan Teki       reg = <0x13900000 0xC0>;
246*1f0d40d8SJagan Teki       interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
247*1f0d40d8SJagan Teki       phys = <&mipi_phy 1>;
248*1f0d40d8SJagan Teki       phy-names = "dsim";
249*1f0d40d8SJagan Teki       clocks = <&cmu_disp CLK_PCLK_DSIM0>,
250*1f0d40d8SJagan Teki                <&cmu_disp CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8>,
251*1f0d40d8SJagan Teki                <&cmu_disp CLK_PHYCLK_MIPIDPHY0_RXCLKESC0>,
252*1f0d40d8SJagan Teki                <&cmu_disp CLK_SCLK_RGB_VCLK_TO_DSIM0>,
253*1f0d40d8SJagan Teki                <&cmu_disp CLK_SCLK_DSIM0>;
254*1f0d40d8SJagan Teki       clock-names = "bus_clk",
255*1f0d40d8SJagan Teki                     "phyclk_mipidphy0_bitclkdiv8",
256                     "phyclk_mipidphy0_rxclkesc0",
257                     "sclk_rgb_vclk_to_dsim0",
258                     "sclk_mipi";
259       power-domains = <&pd_disp>;
260       vddcore-supply = <&ldo6_reg>;
261       vddio-supply = <&ldo7_reg>;
262       samsung,burst-clock-frequency = <512000000>;
263       samsung,esc-clock-frequency = <16000000>;
264       samsung,pll-clock-frequency = <24000000>;
265       pinctrl-names = "default";
266       pinctrl-0 = <&te_irq>;
267
268       ports {
269          #address-cells = <1>;
270          #size-cells = <0>;
271
272          port@0 {
273             reg = <0>;
274
275             dsi_to_mic: endpoint {
276                remote-endpoint = <&mic_to_dsi>;
277             };
278          };
279       };
280    };
281