dtoverlays: Add overlays for the IMX708 image sensor
[platform/kernel/linux-rpi.git] / arch / arm / boot / dts / overlays / imx708-overlay.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 // Definitions for IMX708 camera module on VC I2C bus
3 /dts-v1/;
4 /plugin/;
5
6 #include <dt-bindings/gpio/gpio.h>
7
8 /{
9         compatible = "brcm,bcm2835";
10
11         fragment@0 {
12                 target = <&i2c0if>;
13                 __overlay__ {
14                         status = "okay";
15                 };
16         };
17
18         clk_frag: fragment@1 {
19                 target = <&cam1_clk>;
20                 __overlay__ {
21                         status = "okay";
22                         clock-frequency = <24000000>;
23                 };
24         };
25
26         fragment@2 {
27                 target = <&i2c0mux>;
28                 __overlay__ {
29                         status = "okay";
30                 };
31         };
32
33         reg_frag: fragment@3 {
34                 target = <&cam1_reg>;
35                 cam_reg: __overlay__ {
36                         startup-delay-us = <70000>;
37                         off-on-delay-us = <30000>;
38                         regulator-min-microvolt = <2700000>;
39                         regulator-max-microvolt = <2700000>;
40                 };
41         };
42
43         fragment@4 {
44                 target = <&cam_node>;
45                 __overlay__ {
46                         lens-focus = <&vcm_node>;
47                 };
48         };
49
50         i2c_frag: fragment@100 {
51                 target = <&i2c_csi_dsi>;
52                 __overlay__ {
53                         #address-cells = <1>;
54                         #size-cells = <0>;
55                         status = "okay";
56
57                         #include "imx708.dtsi"
58                 };
59         };
60
61         csi_frag: fragment@101 {
62                 target = <&csi1>;
63                 csi: __overlay__ {
64                         status = "okay";
65                         brcm,media-controller;
66
67                         port {
68                                 csi_ep: endpoint {
69                                         remote-endpoint = <&cam_endpoint>;
70                                         clock-lanes = <0>;
71                                         data-lanes = <1 2>;
72                                         clock-noncontinuous;
73                                 };
74                         };
75                 };
76         };
77
78         __overrides__ {
79                 rotation = <&cam_node>,"rotation:0";
80                 orientation = <&cam_node>,"orientation:0";
81                 media-controller = <&csi>,"brcm,media-controller?";
82                 cam0 = <&i2c_frag>, "target:0=",<&i2c_vc>,
83                        <&csi_frag>, "target:0=",<&csi0>,
84                        <&clk_frag>, "target:0=",<&cam0_clk>,
85                        <&reg_frag>, "target:0=",<&cam0_reg>,
86                        <&cam_node>, "clocks:0=",<&cam0_clk>,
87                        <&cam_node>, "VANA1-supply:0=",<&cam0_reg>,
88                        <&vcm_node>, "VDD-supply:0=",<&cam0_reg>;
89                 vcm = <&vcm_node>, "status",
90                       <0>, "=4";
91         };
92 };
93
94 &cam_node {
95         status = "okay";
96 };
97
98 &cam_endpoint {
99         remote-endpoint = <&csi_ep>;
100 };
101
102 &vcm_node {
103         status = "okay";
104 };