1*8d13bc63SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*8d13bc63SEmmanuel Vadot# Copyright (c) 2023 Ideas on Board
3*8d13bc63SEmmanuel Vadot%YAML 1.2
4*8d13bc63SEmmanuel Vadot---
5*8d13bc63SEmmanuel Vadot$id: http://devicetree.org/schemas/media/i2c/thine,thp7312.yaml#
6*8d13bc63SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
7*8d13bc63SEmmanuel Vadot
8*8d13bc63SEmmanuel Vadottitle: THine THP7312
9*8d13bc63SEmmanuel Vadot
10*8d13bc63SEmmanuel Vadotmaintainers:
11*8d13bc63SEmmanuel Vadot  - Paul Elder <paul.elder@@ideasonboard.com>
12*8d13bc63SEmmanuel Vadot
13*8d13bc63SEmmanuel Vadotdescription:
14*8d13bc63SEmmanuel Vadot  The THP7312 is a standalone ISP controlled over i2c, and is capable of
15*8d13bc63SEmmanuel Vadot  various image processing and correction functions, including 3A control. It
16*8d13bc63SEmmanuel Vadot  can be connected to CMOS image sensors from various vendors, supporting both
17*8d13bc63SEmmanuel Vadot  MIPI CSI-2 and parallel interfaces. It can also output on either MIPI CSI-2
18*8d13bc63SEmmanuel Vadot  or parallel. The hardware is capable of transmitting and receiving MIPI
19*8d13bc63SEmmanuel Vadot  interlaved data strams with data types or multiple virtual channel
20*8d13bc63SEmmanuel Vadot  identifiers.
21*8d13bc63SEmmanuel Vadot
22*8d13bc63SEmmanuel VadotallOf:
23*8d13bc63SEmmanuel Vadot  - $ref: /schemas/media/video-interface-devices.yaml#
24*8d13bc63SEmmanuel Vadot
25*8d13bc63SEmmanuel Vadotproperties:
26*8d13bc63SEmmanuel Vadot  compatible:
27*8d13bc63SEmmanuel Vadot    const: thine,thp7312
28*8d13bc63SEmmanuel Vadot
29*8d13bc63SEmmanuel Vadot  reg:
30*8d13bc63SEmmanuel Vadot    maxItems: 1
31*8d13bc63SEmmanuel Vadot
32*8d13bc63SEmmanuel Vadot  clocks:
33*8d13bc63SEmmanuel Vadot    maxItems: 1
34*8d13bc63SEmmanuel Vadot    description: CLKI clock input
35*8d13bc63SEmmanuel Vadot
36*8d13bc63SEmmanuel Vadot  thine,boot-mode:
37*8d13bc63SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
38*8d13bc63SEmmanuel Vadot    minimum: 0
39*8d13bc63SEmmanuel Vadot    maximum: 1
40*8d13bc63SEmmanuel Vadot    default: 1
41*8d13bc63SEmmanuel Vadot    description:
42*8d13bc63SEmmanuel Vadot      Boot mode of the THP7312, reflecting the value of the BOOT[0] pin strap.
43*8d13bc63SEmmanuel Vadot      0 is for the SPI/2-wire slave boot, 1 is for the SPI master boot (from
44*8d13bc63SEmmanuel Vadot      external flash ROM).
45*8d13bc63SEmmanuel Vadot
46*8d13bc63SEmmanuel Vadot  reset-gpios:
47*8d13bc63SEmmanuel Vadot    maxItems: 1
48*8d13bc63SEmmanuel Vadot    description:
49*8d13bc63SEmmanuel Vadot      Reference to the GPIO connected to the RESET_N pin, if any.
50*8d13bc63SEmmanuel Vadot      Must be released (set high) after all supplies are applied.
51*8d13bc63SEmmanuel Vadot
52*8d13bc63SEmmanuel Vadot  vddcore-supply:
53*8d13bc63SEmmanuel Vadot    description:
54*8d13bc63SEmmanuel Vadot      1.2V supply for core, PLL, MIPI rx and MIPI tx.
55*8d13bc63SEmmanuel Vadot
56*8d13bc63SEmmanuel Vadot  vhtermrx-supply:
57*8d13bc63SEmmanuel Vadot    description:
58*8d13bc63SEmmanuel Vadot      Supply for input (RX). 1.8V for MIPI, or 1.8/2.8/3.3V for parallel.
59*8d13bc63SEmmanuel Vadot
60*8d13bc63SEmmanuel Vadot  vddtx-supply:
61*8d13bc63SEmmanuel Vadot    description:
62*8d13bc63SEmmanuel Vadot      Supply for output (TX). 1.8V for MIPI, or 1.8/2.8/3.3V for parallel.
63*8d13bc63SEmmanuel Vadot
64*8d13bc63SEmmanuel Vadot  vddhost-supply:
65*8d13bc63SEmmanuel Vadot    description:
66*8d13bc63SEmmanuel Vadot      Supply for host interface. 1.8V, 2.8V, or 3.3V.
67*8d13bc63SEmmanuel Vadot
68*8d13bc63SEmmanuel Vadot  vddcmos-supply:
69*8d13bc63SEmmanuel Vadot    description:
70*8d13bc63SEmmanuel Vadot      Supply for sensor interface. 1.8V, 2.8V, or 3.3V.
71*8d13bc63SEmmanuel Vadot
72*8d13bc63SEmmanuel Vadot  vddgpio-0-supply:
73*8d13bc63SEmmanuel Vadot    description:
74*8d13bc63SEmmanuel Vadot      Supply for GPIO_0. 1.8V, 2.8V, or 3.3V.
75*8d13bc63SEmmanuel Vadot
76*8d13bc63SEmmanuel Vadot  vddgpio-1-supply:
77*8d13bc63SEmmanuel Vadot    description:
78*8d13bc63SEmmanuel Vadot      Supply for GPIO_1. 1.8V, 2.8V, or 3.3V.
79*8d13bc63SEmmanuel Vadot
80*8d13bc63SEmmanuel Vadot  orientation: true
81*8d13bc63SEmmanuel Vadot  rotation: true
82*8d13bc63SEmmanuel Vadot
83*8d13bc63SEmmanuel Vadot  port:
84*8d13bc63SEmmanuel Vadot    $ref: /schemas/graph.yaml#/$defs/port-base
85*8d13bc63SEmmanuel Vadot    additionalProperties: false
86*8d13bc63SEmmanuel Vadot
87*8d13bc63SEmmanuel Vadot    properties:
88*8d13bc63SEmmanuel Vadot      endpoint:
89*8d13bc63SEmmanuel Vadot        $ref: /schemas/media/video-interfaces.yaml#
90*8d13bc63SEmmanuel Vadot        unevaluatedProperties: false
91*8d13bc63SEmmanuel Vadot
92*8d13bc63SEmmanuel Vadot        properties:
93*8d13bc63SEmmanuel Vadot          bus-type:
94*8d13bc63SEmmanuel Vadot            const: 4 # CSI-2 D-PHY
95*8d13bc63SEmmanuel Vadot
96*8d13bc63SEmmanuel Vadot          data-lanes:
97*8d13bc63SEmmanuel Vadot            description:
98*8d13bc63SEmmanuel Vadot              This property is for lane reordering between the THP7312 and the
99*8d13bc63SEmmanuel Vadot              SoC. The sensor supports either two-lane, or four-lane operation.
100*8d13bc63SEmmanuel Vadot              If this property is omitted four-lane operation is assumed. For
101*8d13bc63SEmmanuel Vadot              two-lane operation the property must be set to <1 2>.
102*8d13bc63SEmmanuel Vadot            minItems: 2
103*8d13bc63SEmmanuel Vadot            maxItems: 4
104*8d13bc63SEmmanuel Vadot            items:
105*8d13bc63SEmmanuel Vadot              maximum: 4
106*8d13bc63SEmmanuel Vadot
107*8d13bc63SEmmanuel Vadot  sensors:
108*8d13bc63SEmmanuel Vadot    type: object
109*8d13bc63SEmmanuel Vadot    description: List of connected sensors
110*8d13bc63SEmmanuel Vadot
111*8d13bc63SEmmanuel Vadot    properties:
112*8d13bc63SEmmanuel Vadot      "#address-cells":
113*8d13bc63SEmmanuel Vadot        const: 1
114*8d13bc63SEmmanuel Vadot
115*8d13bc63SEmmanuel Vadot      "#size-cells":
116*8d13bc63SEmmanuel Vadot        const: 0
117*8d13bc63SEmmanuel Vadot
118*8d13bc63SEmmanuel Vadot    patternProperties:
119*8d13bc63SEmmanuel Vadot      "^sensor@[01]$":
120*8d13bc63SEmmanuel Vadot        type: object
121*8d13bc63SEmmanuel Vadot        description:
122*8d13bc63SEmmanuel Vadot          Sensors connected to the first and second input, with one node per
123*8d13bc63SEmmanuel Vadot          sensor.
124*8d13bc63SEmmanuel Vadot
125*8d13bc63SEmmanuel Vadot        properties:
126*8d13bc63SEmmanuel Vadot          thine,model:
127*8d13bc63SEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/string
128*8d13bc63SEmmanuel Vadot            description:
129*8d13bc63SEmmanuel Vadot              Model of the connected sensors. Must be a valid compatible string.
130*8d13bc63SEmmanuel Vadot
131*8d13bc63SEmmanuel Vadot          reg:
132*8d13bc63SEmmanuel Vadot            description: THP7312 input port number
133*8d13bc63SEmmanuel Vadot            items:
134*8d13bc63SEmmanuel Vadot              - maximum: 1
135*8d13bc63SEmmanuel Vadot
136*8d13bc63SEmmanuel Vadot          data-lanes:
137*8d13bc63SEmmanuel Vadot            $ref: /schemas/media/video-interfaces.yaml#/properties/data-lanes
138*8d13bc63SEmmanuel Vadot            items:
139*8d13bc63SEmmanuel Vadot              maxItems: 4
140*8d13bc63SEmmanuel Vadot            description:
141*8d13bc63SEmmanuel Vadot              This property is for lane reordering between the THP7312 and the imaging
142*8d13bc63SEmmanuel Vadot              sensor that it is connected to.
143*8d13bc63SEmmanuel Vadot
144*8d13bc63SEmmanuel Vadot        required:
145*8d13bc63SEmmanuel Vadot          - reg
146*8d13bc63SEmmanuel Vadot          - data-lanes
147*8d13bc63SEmmanuel Vadot
148*8d13bc63SEmmanuel Vadot        additionalProperties: false
149*8d13bc63SEmmanuel Vadot
150*8d13bc63SEmmanuel Vadot    required:
151*8d13bc63SEmmanuel Vadot      - "#address-cells"
152*8d13bc63SEmmanuel Vadot      - "#size-cells"
153*8d13bc63SEmmanuel Vadot
154*8d13bc63SEmmanuel Vadot    additionalProperties: false
155*8d13bc63SEmmanuel Vadot
156*8d13bc63SEmmanuel Vadotrequired:
157*8d13bc63SEmmanuel Vadot  - compatible
158*8d13bc63SEmmanuel Vadot  - reg
159*8d13bc63SEmmanuel Vadot  - reset-gpios
160*8d13bc63SEmmanuel Vadot  - clocks
161*8d13bc63SEmmanuel Vadot  - vddcore-supply
162*8d13bc63SEmmanuel Vadot  - vhtermrx-supply
163*8d13bc63SEmmanuel Vadot  - vddtx-supply
164*8d13bc63SEmmanuel Vadot  - vddhost-supply
165*8d13bc63SEmmanuel Vadot  - vddcmos-supply
166*8d13bc63SEmmanuel Vadot  - vddgpio-0-supply
167*8d13bc63SEmmanuel Vadot  - vddgpio-1-supply
168*8d13bc63SEmmanuel Vadot  - sensors
169*8d13bc63SEmmanuel Vadot  - port
170*8d13bc63SEmmanuel Vadot
171*8d13bc63SEmmanuel VadotadditionalProperties: false
172*8d13bc63SEmmanuel Vadot
173*8d13bc63SEmmanuel Vadotexamples:
174*8d13bc63SEmmanuel Vadot  - |
175*8d13bc63SEmmanuel Vadot    #include <dt-bindings/gpio/gpio.h>
176*8d13bc63SEmmanuel Vadot    #include <dt-bindings/media/video-interfaces.h>
177*8d13bc63SEmmanuel Vadot
178*8d13bc63SEmmanuel Vadot    i2c {
179*8d13bc63SEmmanuel Vadot        #address-cells = <1>;
180*8d13bc63SEmmanuel Vadot        #size-cells = <0>;
181*8d13bc63SEmmanuel Vadot
182*8d13bc63SEmmanuel Vadot        camera@61 {
183*8d13bc63SEmmanuel Vadot            compatible = "thine,thp7312";
184*8d13bc63SEmmanuel Vadot            reg = <0x61>;
185*8d13bc63SEmmanuel Vadot
186*8d13bc63SEmmanuel Vadot            pinctrl-names = "default";
187*8d13bc63SEmmanuel Vadot            pinctrl-0 = <&cam1_pins_default>;
188*8d13bc63SEmmanuel Vadot
189*8d13bc63SEmmanuel Vadot            reset-gpios = <&pio 119 GPIO_ACTIVE_LOW>;
190*8d13bc63SEmmanuel Vadot            clocks = <&camera61_clk>;
191*8d13bc63SEmmanuel Vadot
192*8d13bc63SEmmanuel Vadot            vddcore-supply = <&vsys_v4p2>;
193*8d13bc63SEmmanuel Vadot            vhtermrx-supply = <&vsys_v4p2>;
194*8d13bc63SEmmanuel Vadot            vddtx-supply = <&vsys_v4p2>;
195*8d13bc63SEmmanuel Vadot            vddhost-supply = <&vsys_v4p2>;
196*8d13bc63SEmmanuel Vadot            vddcmos-supply = <&vsys_v4p2>;
197*8d13bc63SEmmanuel Vadot            vddgpio-0-supply = <&vsys_v4p2>;
198*8d13bc63SEmmanuel Vadot            vddgpio-1-supply = <&vsys_v4p2>;
199*8d13bc63SEmmanuel Vadot
200*8d13bc63SEmmanuel Vadot            orientation = <0>;
201*8d13bc63SEmmanuel Vadot            rotation = <0>;
202*8d13bc63SEmmanuel Vadot
203*8d13bc63SEmmanuel Vadot            sensors {
204*8d13bc63SEmmanuel Vadot                #address-cells = <1>;
205*8d13bc63SEmmanuel Vadot                #size-cells = <0>;
206*8d13bc63SEmmanuel Vadot
207*8d13bc63SEmmanuel Vadot                sensor@0 {
208*8d13bc63SEmmanuel Vadot                    thine,model = "sony,imx258";
209*8d13bc63SEmmanuel Vadot                    reg = <0>;
210*8d13bc63SEmmanuel Vadot
211*8d13bc63SEmmanuel Vadot                    data-lanes = <4 1 3 2>;
212*8d13bc63SEmmanuel Vadot                };
213*8d13bc63SEmmanuel Vadot            };
214*8d13bc63SEmmanuel Vadot
215*8d13bc63SEmmanuel Vadot            port {
216*8d13bc63SEmmanuel Vadot                thp7312_2_endpoint: endpoint {
217*8d13bc63SEmmanuel Vadot                    remote-endpoint = <&mipi_thp7312_2>;
218*8d13bc63SEmmanuel Vadot                    bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
219*8d13bc63SEmmanuel Vadot                    data-lanes = <4 2 1 3>;
220*8d13bc63SEmmanuel Vadot                };
221*8d13bc63SEmmanuel Vadot            };
222*8d13bc63SEmmanuel Vadot        };
223*8d13bc63SEmmanuel Vadot    };
224*8d13bc63SEmmanuel Vadot...
225