xref: /freebsd-src/sys/contrib/device-tree/Bindings/media/starfive,jh7110-camss.yaml (revision 8d13bc63c0e1d50bc9e47ac1f26329c999bfecf0)
1*8d13bc63SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*8d13bc63SEmmanuel Vadot%YAML 1.2
3*8d13bc63SEmmanuel Vadot---
4*8d13bc63SEmmanuel Vadot$id: http://devicetree.org/schemas/media/starfive,jh7110-camss.yaml#
5*8d13bc63SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*8d13bc63SEmmanuel Vadot
7*8d13bc63SEmmanuel Vadottitle: Starfive SoC CAMSS ISP
8*8d13bc63SEmmanuel Vadot
9*8d13bc63SEmmanuel Vadotmaintainers:
10*8d13bc63SEmmanuel Vadot  - Jack Zhu <jack.zhu@starfivetech.com>
11*8d13bc63SEmmanuel Vadot  - Changhuang Liang <changhuang.liang@starfivetech.com>
12*8d13bc63SEmmanuel Vadot
13*8d13bc63SEmmanuel Vadotdescription:
14*8d13bc63SEmmanuel Vadot  The Starfive CAMSS ISP is a Camera interface for Starfive JH7110 SoC. It
15*8d13bc63SEmmanuel Vadot  consists of a VIN controller (Video In Controller, a top-level control unit)
16*8d13bc63SEmmanuel Vadot  and an ISP.
17*8d13bc63SEmmanuel Vadot
18*8d13bc63SEmmanuel Vadotproperties:
19*8d13bc63SEmmanuel Vadot  compatible:
20*8d13bc63SEmmanuel Vadot    const: starfive,jh7110-camss
21*8d13bc63SEmmanuel Vadot
22*8d13bc63SEmmanuel Vadot  reg:
23*8d13bc63SEmmanuel Vadot    maxItems: 2
24*8d13bc63SEmmanuel Vadot
25*8d13bc63SEmmanuel Vadot  reg-names:
26*8d13bc63SEmmanuel Vadot    items:
27*8d13bc63SEmmanuel Vadot      - const: syscon
28*8d13bc63SEmmanuel Vadot      - const: isp
29*8d13bc63SEmmanuel Vadot
30*8d13bc63SEmmanuel Vadot  clocks:
31*8d13bc63SEmmanuel Vadot    maxItems: 7
32*8d13bc63SEmmanuel Vadot
33*8d13bc63SEmmanuel Vadot  clock-names:
34*8d13bc63SEmmanuel Vadot    items:
35*8d13bc63SEmmanuel Vadot      - const: apb_func
36*8d13bc63SEmmanuel Vadot      - const: wrapper_clk_c
37*8d13bc63SEmmanuel Vadot      - const: dvp_inv
38*8d13bc63SEmmanuel Vadot      - const: axiwr
39*8d13bc63SEmmanuel Vadot      - const: mipi_rx0_pxl
40*8d13bc63SEmmanuel Vadot      - const: ispcore_2x
41*8d13bc63SEmmanuel Vadot      - const: isp_axi
42*8d13bc63SEmmanuel Vadot
43*8d13bc63SEmmanuel Vadot  resets:
44*8d13bc63SEmmanuel Vadot    maxItems: 6
45*8d13bc63SEmmanuel Vadot
46*8d13bc63SEmmanuel Vadot  reset-names:
47*8d13bc63SEmmanuel Vadot    items:
48*8d13bc63SEmmanuel Vadot      - const: wrapper_p
49*8d13bc63SEmmanuel Vadot      - const: wrapper_c
50*8d13bc63SEmmanuel Vadot      - const: axird
51*8d13bc63SEmmanuel Vadot      - const: axiwr
52*8d13bc63SEmmanuel Vadot      - const: isp_top_n
53*8d13bc63SEmmanuel Vadot      - const: isp_top_axi
54*8d13bc63SEmmanuel Vadot
55*8d13bc63SEmmanuel Vadot  power-domains:
56*8d13bc63SEmmanuel Vadot    items:
57*8d13bc63SEmmanuel Vadot      - description: JH7110 ISP Power Domain Switch Controller.
58*8d13bc63SEmmanuel Vadot
59*8d13bc63SEmmanuel Vadot  interrupts:
60*8d13bc63SEmmanuel Vadot    maxItems: 4
61*8d13bc63SEmmanuel Vadot
62*8d13bc63SEmmanuel Vadot  ports:
63*8d13bc63SEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/ports
64*8d13bc63SEmmanuel Vadot
65*8d13bc63SEmmanuel Vadot    properties:
66*8d13bc63SEmmanuel Vadot      port@0:
67*8d13bc63SEmmanuel Vadot        $ref: /schemas/graph.yaml#/$defs/port-base
68*8d13bc63SEmmanuel Vadot        unevaluatedProperties: false
69*8d13bc63SEmmanuel Vadot        description: Input port for receiving DVP data.
70*8d13bc63SEmmanuel Vadot
71*8d13bc63SEmmanuel Vadot        properties:
72*8d13bc63SEmmanuel Vadot          endpoint:
73*8d13bc63SEmmanuel Vadot            $ref: video-interfaces.yaml#
74*8d13bc63SEmmanuel Vadot            unevaluatedProperties: false
75*8d13bc63SEmmanuel Vadot
76*8d13bc63SEmmanuel Vadot            properties:
77*8d13bc63SEmmanuel Vadot              bus-type:
78*8d13bc63SEmmanuel Vadot                enum: [5, 6]
79*8d13bc63SEmmanuel Vadot
80*8d13bc63SEmmanuel Vadot              bus-width:
81*8d13bc63SEmmanuel Vadot                enum: [8, 10, 12]
82*8d13bc63SEmmanuel Vadot
83*8d13bc63SEmmanuel Vadot              data-shift:
84*8d13bc63SEmmanuel Vadot                enum: [0, 2]
85*8d13bc63SEmmanuel Vadot                default: 0
86*8d13bc63SEmmanuel Vadot
87*8d13bc63SEmmanuel Vadot              hsync-active:
88*8d13bc63SEmmanuel Vadot                enum: [0, 1]
89*8d13bc63SEmmanuel Vadot                default: 1
90*8d13bc63SEmmanuel Vadot
91*8d13bc63SEmmanuel Vadot              vsync-active:
92*8d13bc63SEmmanuel Vadot                enum: [0, 1]
93*8d13bc63SEmmanuel Vadot                default: 1
94*8d13bc63SEmmanuel Vadot
95*8d13bc63SEmmanuel Vadot            required:
96*8d13bc63SEmmanuel Vadot              - bus-type
97*8d13bc63SEmmanuel Vadot              - bus-width
98*8d13bc63SEmmanuel Vadot
99*8d13bc63SEmmanuel Vadot      port@1:
100*8d13bc63SEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
101*8d13bc63SEmmanuel Vadot        description: Input port for receiving CSI data.
102*8d13bc63SEmmanuel Vadot
103*8d13bc63SEmmanuel Vadot    required:
104*8d13bc63SEmmanuel Vadot      - port@0
105*8d13bc63SEmmanuel Vadot      - port@1
106*8d13bc63SEmmanuel Vadot
107*8d13bc63SEmmanuel Vadotrequired:
108*8d13bc63SEmmanuel Vadot  - compatible
109*8d13bc63SEmmanuel Vadot  - reg
110*8d13bc63SEmmanuel Vadot  - reg-names
111*8d13bc63SEmmanuel Vadot  - clocks
112*8d13bc63SEmmanuel Vadot  - clock-names
113*8d13bc63SEmmanuel Vadot  - resets
114*8d13bc63SEmmanuel Vadot  - reset-names
115*8d13bc63SEmmanuel Vadot  - power-domains
116*8d13bc63SEmmanuel Vadot  - interrupts
117*8d13bc63SEmmanuel Vadot  - ports
118*8d13bc63SEmmanuel Vadot
119*8d13bc63SEmmanuel VadotadditionalProperties: false
120*8d13bc63SEmmanuel Vadot
121*8d13bc63SEmmanuel Vadotexamples:
122*8d13bc63SEmmanuel Vadot  - |
123*8d13bc63SEmmanuel Vadot    isp@19840000 {
124*8d13bc63SEmmanuel Vadot        compatible = "starfive,jh7110-camss";
125*8d13bc63SEmmanuel Vadot        reg = <0x19840000 0x10000>,
126*8d13bc63SEmmanuel Vadot              <0x19870000 0x30000>;
127*8d13bc63SEmmanuel Vadot        reg-names = "syscon", "isp";
128*8d13bc63SEmmanuel Vadot        clocks = <&ispcrg 0>,
129*8d13bc63SEmmanuel Vadot                 <&ispcrg 13>,
130*8d13bc63SEmmanuel Vadot                 <&ispcrg 2>,
131*8d13bc63SEmmanuel Vadot                 <&ispcrg 12>,
132*8d13bc63SEmmanuel Vadot                 <&ispcrg 1>,
133*8d13bc63SEmmanuel Vadot                 <&syscrg 51>,
134*8d13bc63SEmmanuel Vadot                 <&syscrg 52>;
135*8d13bc63SEmmanuel Vadot        clock-names = "apb_func",
136*8d13bc63SEmmanuel Vadot                      "wrapper_clk_c",
137*8d13bc63SEmmanuel Vadot                      "dvp_inv",
138*8d13bc63SEmmanuel Vadot                      "axiwr",
139*8d13bc63SEmmanuel Vadot                      "mipi_rx0_pxl",
140*8d13bc63SEmmanuel Vadot                      "ispcore_2x",
141*8d13bc63SEmmanuel Vadot                      "isp_axi";
142*8d13bc63SEmmanuel Vadot        resets = <&ispcrg 0>,
143*8d13bc63SEmmanuel Vadot                 <&ispcrg 1>,
144*8d13bc63SEmmanuel Vadot                 <&ispcrg 10>,
145*8d13bc63SEmmanuel Vadot                 <&ispcrg 11>,
146*8d13bc63SEmmanuel Vadot                 <&syscrg 41>,
147*8d13bc63SEmmanuel Vadot                 <&syscrg 42>;
148*8d13bc63SEmmanuel Vadot        reset-names = "wrapper_p",
149*8d13bc63SEmmanuel Vadot                      "wrapper_c",
150*8d13bc63SEmmanuel Vadot                      "axird",
151*8d13bc63SEmmanuel Vadot                      "axiwr",
152*8d13bc63SEmmanuel Vadot                      "isp_top_n",
153*8d13bc63SEmmanuel Vadot                      "isp_top_axi";
154*8d13bc63SEmmanuel Vadot        power-domains = <&pwrc 5>;
155*8d13bc63SEmmanuel Vadot        interrupts = <92>, <87>, <88>, <90>;
156*8d13bc63SEmmanuel Vadot
157*8d13bc63SEmmanuel Vadot        ports {
158*8d13bc63SEmmanuel Vadot            #address-cells = <1>;
159*8d13bc63SEmmanuel Vadot            #size-cells = <0>;
160*8d13bc63SEmmanuel Vadot            port@0 {
161*8d13bc63SEmmanuel Vadot                reg = <0>;
162*8d13bc63SEmmanuel Vadot                vin_from_sc2235: endpoint {
163*8d13bc63SEmmanuel Vadot                    remote-endpoint = <&sc2235_to_vin>;
164*8d13bc63SEmmanuel Vadot                    bus-type = <5>;
165*8d13bc63SEmmanuel Vadot                    bus-width = <8>;
166*8d13bc63SEmmanuel Vadot                    data-shift = <2>;
167*8d13bc63SEmmanuel Vadot                    hsync-active = <1>;
168*8d13bc63SEmmanuel Vadot                    vsync-active = <0>;
169*8d13bc63SEmmanuel Vadot                    pclk-sample = <1>;
170*8d13bc63SEmmanuel Vadot                };
171*8d13bc63SEmmanuel Vadot            };
172*8d13bc63SEmmanuel Vadot
173*8d13bc63SEmmanuel Vadot            port@1 {
174*8d13bc63SEmmanuel Vadot                reg = <1>;
175*8d13bc63SEmmanuel Vadot                vin_from_csi2rx: endpoint {
176*8d13bc63SEmmanuel Vadot                    remote-endpoint = <&csi2rx_to_vin>;
177*8d13bc63SEmmanuel Vadot                };
178*8d13bc63SEmmanuel Vadot            };
179*8d13bc63SEmmanuel Vadot        };
180*8d13bc63SEmmanuel Vadot    };
181