Skip to content

Commit d3dfa72

Browse files
committed
dtoverlays: Add overlay for imx355 image sensor
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
1 parent b246e6f commit d3dfa72

3 files changed

Lines changed: 140 additions & 0 deletions

File tree

arch/arm/boot/dts/overlays/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
142142
imx296.dtbo \
143143
imx327.dtbo \
144144
imx335.dtbo \
145+
imx355.dtbo \
145146
imx378.dtbo \
146147
imx415.dtbo \
147148
imx462.dtbo \
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
// Definitions for IMX355 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+
i2c_frag: fragment@100 {
34+
target = <&i2c_csi_dsi>;
35+
__overlay__ {
36+
#address-cells = <1>;
37+
#size-cells = <0>;
38+
status = "okay";
39+
40+
#include "imx355.dtsi"
41+
42+
vcm: ad5398@c {
43+
compatible = "adi,ad5398";
44+
reg = <0x0c>;
45+
status = "disabled";
46+
VANA-supply = <&cam1_reg>;
47+
};
48+
};
49+
};
50+
51+
csi_frag: fragment@101 {
52+
target = <&csi1>;
53+
csi: __overlay__ {
54+
status = "okay";
55+
56+
port {
57+
csi_ep: endpoint {
58+
remote-endpoint = <&cam_endpoint>;
59+
clock-lanes = <0>;
60+
data-lanes = <1 2>;
61+
clock-noncontinuous;
62+
};
63+
};
64+
};
65+
};
66+
67+
fragment@102 {
68+
target = <&csi1>;
69+
__dormant__ {
70+
compatible = "brcm,bcm2835-unicam-legacy";
71+
};
72+
};
73+
74+
fragment@201 {
75+
target = <&csi_ep>;
76+
__dormant__ {
77+
data-lanes = <1 2 3 4>;
78+
};
79+
};
80+
81+
fragment@202 {
82+
target = <&cam_endpoint>;
83+
__dormant__ {
84+
data-lanes = <1 2 3 4>;
85+
link-frequencies =
86+
/bits/ 64 <363000000>;
87+
};
88+
};
89+
90+
__overrides__ {
91+
rotation = <&cam_node>,"rotation:0";
92+
orientation = <&cam_node>,"orientation:0";
93+
media-controller = <0>,"!102";
94+
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
95+
<&csi_frag>, "target:0=",<&csi0>,
96+
<&clk_frag>, "target:0=",<&cam0_clk>,
97+
<&cam_node>, "clocks:0=",<&cam0_clk>,
98+
<&cam_node>, "avdd-supply:0=",<&cam0_reg>,
99+
<&vcm>, "VANA-supply:0=", <&cam0_reg>;
100+
vcm = <&vcm>, "status=okay",
101+
<&cam_node>,"lens-focus:0=", <&vcm>;
102+
4lane = <0>, "+201+202";
103+
};
104+
};
105+
106+
&cam_node {
107+
status = "okay";
108+
};
109+
110+
&cam_endpoint {
111+
remote-endpoint = <&csi_ep>;
112+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Fragment that configures an imx355
2+
3+
cam_node: imx219@1a {
4+
compatible = "sony,imx355";
5+
reg = <0x1a>;
6+
status = "disabled";
7+
8+
clocks = <&cam1_clk>;
9+
clock-names = "xclk";
10+
11+
avdd-supply = <&cam1_reg>; /* 2.8v */
12+
dvdd-supply = <&cam_dummy_reg>; /* 1.8v */
13+
dovdd-supply = <&cam_dummy_reg>;/* 1.2v */
14+
15+
rotation = <180>;
16+
orientation = <2>;
17+
18+
port {
19+
cam_endpoint: endpoint {
20+
clock-lanes = <0>;
21+
data-lanes = <1 2>;
22+
clock-noncontinuous;
23+
link-frequencies =
24+
/bits/ 64 <360000000>;
25+
};
26+
};
27+
};

0 commit comments

Comments
 (0)