xref: /freebsd/sys/contrib/device-tree/Bindings/media/qcom,sdm670-camss.yaml (revision 8ccc0d235c226d84112561d453c49904398d085c)
1*8ccc0d23SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*8ccc0d23SEmmanuel Vadot%YAML 1.2
3*8ccc0d23SEmmanuel Vadot---
4*8ccc0d23SEmmanuel Vadot$id: http://devicetree.org/schemas/media/qcom,sdm670-camss.yaml#
5*8ccc0d23SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*8ccc0d23SEmmanuel Vadot
7*8ccc0d23SEmmanuel Vadottitle: Qualcomm SDM670 Camera Subsystem (CAMSS)
8*8ccc0d23SEmmanuel Vadot
9*8ccc0d23SEmmanuel Vadotmaintainers:
10*8ccc0d23SEmmanuel Vadot  - Richard Acayan <mailingradian@gmail.com>
11*8ccc0d23SEmmanuel Vadot
12*8ccc0d23SEmmanuel Vadotdescription:
13*8ccc0d23SEmmanuel Vadot  The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
14*8ccc0d23SEmmanuel Vadot
15*8ccc0d23SEmmanuel Vadotproperties:
16*8ccc0d23SEmmanuel Vadot  compatible:
17*8ccc0d23SEmmanuel Vadot    const: qcom,sdm670-camss
18*8ccc0d23SEmmanuel Vadot
19*8ccc0d23SEmmanuel Vadot  reg:
20*8ccc0d23SEmmanuel Vadot    maxItems: 9
21*8ccc0d23SEmmanuel Vadot
22*8ccc0d23SEmmanuel Vadot  reg-names:
23*8ccc0d23SEmmanuel Vadot    items:
24*8ccc0d23SEmmanuel Vadot      - const: csid0
25*8ccc0d23SEmmanuel Vadot      - const: csid1
26*8ccc0d23SEmmanuel Vadot      - const: csid2
27*8ccc0d23SEmmanuel Vadot      - const: csiphy0
28*8ccc0d23SEmmanuel Vadot      - const: csiphy1
29*8ccc0d23SEmmanuel Vadot      - const: csiphy2
30*8ccc0d23SEmmanuel Vadot      - const: vfe0
31*8ccc0d23SEmmanuel Vadot      - const: vfe1
32*8ccc0d23SEmmanuel Vadot      - const: vfe_lite
33*8ccc0d23SEmmanuel Vadot
34*8ccc0d23SEmmanuel Vadot  interrupts:
35*8ccc0d23SEmmanuel Vadot    maxItems: 9
36*8ccc0d23SEmmanuel Vadot
37*8ccc0d23SEmmanuel Vadot  interrupt-names:
38*8ccc0d23SEmmanuel Vadot    items:
39*8ccc0d23SEmmanuel Vadot      - const: csid0
40*8ccc0d23SEmmanuel Vadot      - const: csid1
41*8ccc0d23SEmmanuel Vadot      - const: csid2
42*8ccc0d23SEmmanuel Vadot      - const: csiphy0
43*8ccc0d23SEmmanuel Vadot      - const: csiphy1
44*8ccc0d23SEmmanuel Vadot      - const: csiphy2
45*8ccc0d23SEmmanuel Vadot      - const: vfe0
46*8ccc0d23SEmmanuel Vadot      - const: vfe1
47*8ccc0d23SEmmanuel Vadot      - const: vfe_lite
48*8ccc0d23SEmmanuel Vadot
49*8ccc0d23SEmmanuel Vadot  clocks:
50*8ccc0d23SEmmanuel Vadot    maxItems: 22
51*8ccc0d23SEmmanuel Vadot
52*8ccc0d23SEmmanuel Vadot  clock-names:
53*8ccc0d23SEmmanuel Vadot    items:
54*8ccc0d23SEmmanuel Vadot      - const: camnoc_axi
55*8ccc0d23SEmmanuel Vadot      - const: cpas_ahb
56*8ccc0d23SEmmanuel Vadot      - const: csi0
57*8ccc0d23SEmmanuel Vadot      - const: csi1
58*8ccc0d23SEmmanuel Vadot      - const: csi2
59*8ccc0d23SEmmanuel Vadot      - const: csiphy0
60*8ccc0d23SEmmanuel Vadot      - const: csiphy0_timer
61*8ccc0d23SEmmanuel Vadot      - const: csiphy1
62*8ccc0d23SEmmanuel Vadot      - const: csiphy1_timer
63*8ccc0d23SEmmanuel Vadot      - const: csiphy2
64*8ccc0d23SEmmanuel Vadot      - const: csiphy2_timer
65*8ccc0d23SEmmanuel Vadot      - const: gcc_camera_ahb
66*8ccc0d23SEmmanuel Vadot      - const: gcc_camera_axi
67*8ccc0d23SEmmanuel Vadot      - const: soc_ahb
68*8ccc0d23SEmmanuel Vadot      - const: vfe0
69*8ccc0d23SEmmanuel Vadot      - const: vfe0_axi
70*8ccc0d23SEmmanuel Vadot      - const: vfe0_cphy_rx
71*8ccc0d23SEmmanuel Vadot      - const: vfe1
72*8ccc0d23SEmmanuel Vadot      - const: vfe1_axi
73*8ccc0d23SEmmanuel Vadot      - const: vfe1_cphy_rx
74*8ccc0d23SEmmanuel Vadot      - const: vfe_lite
75*8ccc0d23SEmmanuel Vadot      - const: vfe_lite_cphy_rx
76*8ccc0d23SEmmanuel Vadot
77*8ccc0d23SEmmanuel Vadot  iommus:
78*8ccc0d23SEmmanuel Vadot    maxItems: 4
79*8ccc0d23SEmmanuel Vadot
80*8ccc0d23SEmmanuel Vadot  power-domains:
81*8ccc0d23SEmmanuel Vadot    items:
82*8ccc0d23SEmmanuel Vadot      - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
83*8ccc0d23SEmmanuel Vadot      - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
84*8ccc0d23SEmmanuel Vadot      - description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
85*8ccc0d23SEmmanuel Vadot
86*8ccc0d23SEmmanuel Vadot  power-domain-names:
87*8ccc0d23SEmmanuel Vadot    items:
88*8ccc0d23SEmmanuel Vadot      - const: ife0
89*8ccc0d23SEmmanuel Vadot      - const: ife1
90*8ccc0d23SEmmanuel Vadot      - const: top
91*8ccc0d23SEmmanuel Vadot
92*8ccc0d23SEmmanuel Vadot  vdda-phy-supply:
93*8ccc0d23SEmmanuel Vadot    description:
94*8ccc0d23SEmmanuel Vadot      Phandle to a regulator supply to PHY core block.
95*8ccc0d23SEmmanuel Vadot
96*8ccc0d23SEmmanuel Vadot  vdda-pll-supply:
97*8ccc0d23SEmmanuel Vadot    description:
98*8ccc0d23SEmmanuel Vadot      Phandle to 1.8V regulator supply to PHY refclk pll block.
99*8ccc0d23SEmmanuel Vadot
100*8ccc0d23SEmmanuel Vadot  ports:
101*8ccc0d23SEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/ports
102*8ccc0d23SEmmanuel Vadot
103*8ccc0d23SEmmanuel Vadot    description:
104*8ccc0d23SEmmanuel Vadot      CSI input ports.
105*8ccc0d23SEmmanuel Vadot
106*8ccc0d23SEmmanuel Vadot    properties:
107*8ccc0d23SEmmanuel Vadot      port@0:
108*8ccc0d23SEmmanuel Vadot        $ref: /schemas/graph.yaml#/$defs/port-base
109*8ccc0d23SEmmanuel Vadot        unevaluatedProperties: false
110*8ccc0d23SEmmanuel Vadot        description:
111*8ccc0d23SEmmanuel Vadot          Input port for receiving CSI data from CSIPHY0.
112*8ccc0d23SEmmanuel Vadot
113*8ccc0d23SEmmanuel Vadot        properties:
114*8ccc0d23SEmmanuel Vadot          endpoint:
115*8ccc0d23SEmmanuel Vadot            $ref: video-interfaces.yaml#
116*8ccc0d23SEmmanuel Vadot            unevaluatedProperties: false
117*8ccc0d23SEmmanuel Vadot
118*8ccc0d23SEmmanuel Vadot            properties:
119*8ccc0d23SEmmanuel Vadot              clock-lanes:
120*8ccc0d23SEmmanuel Vadot                maxItems: 1
121*8ccc0d23SEmmanuel Vadot
122*8ccc0d23SEmmanuel Vadot              data-lanes:
123*8ccc0d23SEmmanuel Vadot                minItems: 1
124*8ccc0d23SEmmanuel Vadot                maxItems: 4
125*8ccc0d23SEmmanuel Vadot
126*8ccc0d23SEmmanuel Vadot            required:
127*8ccc0d23SEmmanuel Vadot              - clock-lanes
128*8ccc0d23SEmmanuel Vadot              - data-lanes
129*8ccc0d23SEmmanuel Vadot
130*8ccc0d23SEmmanuel Vadot      port@1:
131*8ccc0d23SEmmanuel Vadot        $ref: /schemas/graph.yaml#/$defs/port-base
132*8ccc0d23SEmmanuel Vadot        unevaluatedProperties: false
133*8ccc0d23SEmmanuel Vadot        description:
134*8ccc0d23SEmmanuel Vadot          Input port for receiving CSI data from CSIPHY1.
135*8ccc0d23SEmmanuel Vadot
136*8ccc0d23SEmmanuel Vadot        properties:
137*8ccc0d23SEmmanuel Vadot          endpoint:
138*8ccc0d23SEmmanuel Vadot            $ref: video-interfaces.yaml#
139*8ccc0d23SEmmanuel Vadot            unevaluatedProperties: false
140*8ccc0d23SEmmanuel Vadot
141*8ccc0d23SEmmanuel Vadot            properties:
142*8ccc0d23SEmmanuel Vadot              clock-lanes:
143*8ccc0d23SEmmanuel Vadot                maxItems: 1
144*8ccc0d23SEmmanuel Vadot
145*8ccc0d23SEmmanuel Vadot              data-lanes:
146*8ccc0d23SEmmanuel Vadot                minItems: 1
147*8ccc0d23SEmmanuel Vadot                maxItems: 4
148*8ccc0d23SEmmanuel Vadot
149*8ccc0d23SEmmanuel Vadot            required:
150*8ccc0d23SEmmanuel Vadot              - clock-lanes
151*8ccc0d23SEmmanuel Vadot              - data-lanes
152*8ccc0d23SEmmanuel Vadot
153*8ccc0d23SEmmanuel Vadot      port@2:
154*8ccc0d23SEmmanuel Vadot        $ref: /schemas/graph.yaml#/$defs/port-base
155*8ccc0d23SEmmanuel Vadot        unevaluatedProperties: false
156*8ccc0d23SEmmanuel Vadot        description:
157*8ccc0d23SEmmanuel Vadot          Input port for receiving CSI data from CSIPHY2.
158*8ccc0d23SEmmanuel Vadot
159*8ccc0d23SEmmanuel Vadot        properties:
160*8ccc0d23SEmmanuel Vadot          endpoint:
161*8ccc0d23SEmmanuel Vadot            $ref: video-interfaces.yaml#
162*8ccc0d23SEmmanuel Vadot            unevaluatedProperties: false
163*8ccc0d23SEmmanuel Vadot
164*8ccc0d23SEmmanuel Vadot            properties:
165*8ccc0d23SEmmanuel Vadot              clock-lanes:
166*8ccc0d23SEmmanuel Vadot                maxItems: 1
167*8ccc0d23SEmmanuel Vadot
168*8ccc0d23SEmmanuel Vadot              data-lanes:
169*8ccc0d23SEmmanuel Vadot                minItems: 1
170*8ccc0d23SEmmanuel Vadot                maxItems: 4
171*8ccc0d23SEmmanuel Vadot
172*8ccc0d23SEmmanuel Vadot            required:
173*8ccc0d23SEmmanuel Vadot              - clock-lanes
174*8ccc0d23SEmmanuel Vadot              - data-lanes
175*8ccc0d23SEmmanuel Vadot
176*8ccc0d23SEmmanuel Vadotrequired:
177*8ccc0d23SEmmanuel Vadot  - compatible
178*8ccc0d23SEmmanuel Vadot  - reg
179*8ccc0d23SEmmanuel Vadot  - reg-names
180*8ccc0d23SEmmanuel Vadot  - interrupts
181*8ccc0d23SEmmanuel Vadot  - interrupt-names
182*8ccc0d23SEmmanuel Vadot  - clocks
183*8ccc0d23SEmmanuel Vadot  - clock-names
184*8ccc0d23SEmmanuel Vadot  - iommus
185*8ccc0d23SEmmanuel Vadot  - power-domains
186*8ccc0d23SEmmanuel Vadot  - power-domain-names
187*8ccc0d23SEmmanuel Vadot  - vdda-phy-supply
188*8ccc0d23SEmmanuel Vadot  - vdda-pll-supply
189*8ccc0d23SEmmanuel Vadot
190*8ccc0d23SEmmanuel VadotadditionalProperties: false
191*8ccc0d23SEmmanuel Vadot
192*8ccc0d23SEmmanuel Vadotexamples:
193*8ccc0d23SEmmanuel Vadot  - |
194*8ccc0d23SEmmanuel Vadot    #include <dt-bindings/clock/qcom,camcc-sdm845.h>
195*8ccc0d23SEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
196*8ccc0d23SEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
197*8ccc0d23SEmmanuel Vadot
198*8ccc0d23SEmmanuel Vadot    soc {
199*8ccc0d23SEmmanuel Vadot        #address-cells = <2>;
200*8ccc0d23SEmmanuel Vadot        #size-cells = <2>;
201*8ccc0d23SEmmanuel Vadot
202*8ccc0d23SEmmanuel Vadot        isp@acb3000 {
203*8ccc0d23SEmmanuel Vadot            compatible = "qcom,sdm670-camss";
204*8ccc0d23SEmmanuel Vadot
205*8ccc0d23SEmmanuel Vadot            reg = <0 0x0acb3000 0 0x1000>,
206*8ccc0d23SEmmanuel Vadot                  <0 0x0acba000 0 0x1000>,
207*8ccc0d23SEmmanuel Vadot                  <0 0x0acc8000 0 0x1000>,
208*8ccc0d23SEmmanuel Vadot                  <0 0x0ac65000 0 0x1000>,
209*8ccc0d23SEmmanuel Vadot                  <0 0x0ac66000 0 0x1000>,
210*8ccc0d23SEmmanuel Vadot                  <0 0x0ac67000 0 0x1000>,
211*8ccc0d23SEmmanuel Vadot                  <0 0x0acaf000 0 0x4000>,
212*8ccc0d23SEmmanuel Vadot                  <0 0x0acb6000 0 0x4000>,
213*8ccc0d23SEmmanuel Vadot                  <0 0x0acc4000 0 0x4000>;
214*8ccc0d23SEmmanuel Vadot            reg-names = "csid0",
215*8ccc0d23SEmmanuel Vadot                        "csid1",
216*8ccc0d23SEmmanuel Vadot                        "csid2",
217*8ccc0d23SEmmanuel Vadot                        "csiphy0",
218*8ccc0d23SEmmanuel Vadot                        "csiphy1",
219*8ccc0d23SEmmanuel Vadot                        "csiphy2",
220*8ccc0d23SEmmanuel Vadot                        "vfe0",
221*8ccc0d23SEmmanuel Vadot                        "vfe1",
222*8ccc0d23SEmmanuel Vadot                        "vfe_lite";
223*8ccc0d23SEmmanuel Vadot
224*8ccc0d23SEmmanuel Vadot            interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>,
225*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
226*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>,
227*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>,
228*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>,
229*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>,
230*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>,
231*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>,
232*8ccc0d23SEmmanuel Vadot                         <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>;
233*8ccc0d23SEmmanuel Vadot            interrupt-names = "csid0",
234*8ccc0d23SEmmanuel Vadot                              "csid1",
235*8ccc0d23SEmmanuel Vadot                              "csid2",
236*8ccc0d23SEmmanuel Vadot                              "csiphy0",
237*8ccc0d23SEmmanuel Vadot                              "csiphy1",
238*8ccc0d23SEmmanuel Vadot                              "csiphy2",
239*8ccc0d23SEmmanuel Vadot                              "vfe0",
240*8ccc0d23SEmmanuel Vadot                              "vfe1",
241*8ccc0d23SEmmanuel Vadot                              "vfe_lite";
242*8ccc0d23SEmmanuel Vadot
243*8ccc0d23SEmmanuel Vadot            clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
244*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CPAS_AHB_CLK>,
245*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_0_CSID_CLK>,
246*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_1_CSID_CLK>,
247*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_LITE_CSID_CLK>,
248*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CSIPHY0_CLK>,
249*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CSI0PHYTIMER_CLK>,
250*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CSIPHY1_CLK>,
251*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CSI1PHYTIMER_CLK>,
252*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CSIPHY2_CLK>,
253*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_CSI2PHYTIMER_CLK>,
254*8ccc0d23SEmmanuel Vadot                     <&gcc GCC_CAMERA_AHB_CLK>,
255*8ccc0d23SEmmanuel Vadot                     <&gcc GCC_CAMERA_AXI_CLK>,
256*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_SOC_AHB_CLK>,
257*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_0_CLK>,
258*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_0_AXI_CLK>,
259*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
260*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_1_CLK>,
261*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_1_AXI_CLK>,
262*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_1_CPHY_RX_CLK>,
263*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_LITE_CLK>,
264*8ccc0d23SEmmanuel Vadot                     <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>;
265*8ccc0d23SEmmanuel Vadot            clock-names = "camnoc_axi",
266*8ccc0d23SEmmanuel Vadot                          "cpas_ahb",
267*8ccc0d23SEmmanuel Vadot                          "csi0",
268*8ccc0d23SEmmanuel Vadot                          "csi1",
269*8ccc0d23SEmmanuel Vadot                          "csi2",
270*8ccc0d23SEmmanuel Vadot                          "csiphy0",
271*8ccc0d23SEmmanuel Vadot                          "csiphy0_timer",
272*8ccc0d23SEmmanuel Vadot                          "csiphy1",
273*8ccc0d23SEmmanuel Vadot                          "csiphy1_timer",
274*8ccc0d23SEmmanuel Vadot                          "csiphy2",
275*8ccc0d23SEmmanuel Vadot                          "csiphy2_timer",
276*8ccc0d23SEmmanuel Vadot                          "gcc_camera_ahb",
277*8ccc0d23SEmmanuel Vadot                          "gcc_camera_axi",
278*8ccc0d23SEmmanuel Vadot                          "soc_ahb",
279*8ccc0d23SEmmanuel Vadot                          "vfe0",
280*8ccc0d23SEmmanuel Vadot                          "vfe0_axi",
281*8ccc0d23SEmmanuel Vadot                          "vfe0_cphy_rx",
282*8ccc0d23SEmmanuel Vadot                          "vfe1",
283*8ccc0d23SEmmanuel Vadot                          "vfe1_axi",
284*8ccc0d23SEmmanuel Vadot                          "vfe1_cphy_rx",
285*8ccc0d23SEmmanuel Vadot                          "vfe_lite",
286*8ccc0d23SEmmanuel Vadot                          "vfe_lite_cphy_rx";
287*8ccc0d23SEmmanuel Vadot
288*8ccc0d23SEmmanuel Vadot            iommus = <&apps_smmu 0x808 0x0>,
289*8ccc0d23SEmmanuel Vadot                     <&apps_smmu 0x810 0x8>,
290*8ccc0d23SEmmanuel Vadot                     <&apps_smmu 0xc08 0x0>,
291*8ccc0d23SEmmanuel Vadot                     <&apps_smmu 0xc10 0x8>;
292*8ccc0d23SEmmanuel Vadot
293*8ccc0d23SEmmanuel Vadot            power-domains = <&camcc IFE_0_GDSC>,
294*8ccc0d23SEmmanuel Vadot                            <&camcc IFE_1_GDSC>,
295*8ccc0d23SEmmanuel Vadot                            <&camcc TITAN_TOP_GDSC>;
296*8ccc0d23SEmmanuel Vadot            power-domain-names = "ife0",
297*8ccc0d23SEmmanuel Vadot                                 "ife1",
298*8ccc0d23SEmmanuel Vadot                                 "top";
299*8ccc0d23SEmmanuel Vadot
300*8ccc0d23SEmmanuel Vadot            vdda-phy-supply = <&vreg_l1a_1p225>;
301*8ccc0d23SEmmanuel Vadot            vdda-pll-supply = <&vreg_l8a_1p8>;
302*8ccc0d23SEmmanuel Vadot
303*8ccc0d23SEmmanuel Vadot            ports {
304*8ccc0d23SEmmanuel Vadot                #address-cells = <1>;
305*8ccc0d23SEmmanuel Vadot                #size-cells = <0>;
306*8ccc0d23SEmmanuel Vadot
307*8ccc0d23SEmmanuel Vadot                port@0 {
308*8ccc0d23SEmmanuel Vadot                    reg = <0>;
309*8ccc0d23SEmmanuel Vadot
310*8ccc0d23SEmmanuel Vadot                    csiphy_ep0: endpoint {
311*8ccc0d23SEmmanuel Vadot                        clock-lanes = <7>;
312*8ccc0d23SEmmanuel Vadot                        data-lanes = <0 1 2 3>;
313*8ccc0d23SEmmanuel Vadot                        remote-endpoint = <&front_sensor_ep>;
314*8ccc0d23SEmmanuel Vadot                    };
315*8ccc0d23SEmmanuel Vadot                };
316*8ccc0d23SEmmanuel Vadot            };
317*8ccc0d23SEmmanuel Vadot        };
318*8ccc0d23SEmmanuel Vadot    };
319