Skip to content

Commit 5e2da11

Browse files
committed
overlays: Add vd55g1 and vd65g4 camera sensors overlays
Provide two device trees : vd55g1 is monochrome, while vd65g4 is RGB. Support both cam0 and cam1 interfaces with raspberry pi __overrides__ mechanism. Signed-off-by: Benjamin Mugnier <benjamin.mugnier@foss.st.com>
1 parent 88be4db commit 5e2da11

3 files changed

Lines changed: 220 additions & 0 deletions

File tree

arch/arm/boot/dts/overlays/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,9 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
346346
vc4-kms-v3d-pi4.dtbo \
347347
vc4-kms-v3d-pi5.dtbo \
348348
vc4-kms-vga666.dtbo \
349+
vd55g1.dtbo \
349350
vd56g3.dtbo \
351+
vd65g4.dtbo \
350352
vd66gy.dtbo \
351353
vec-gpio-pi5.dtbo \
352354
vga666.dtbo \
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
/dts-v1/;
3+
/plugin/;
4+
5+
/{
6+
compatible = "brcm,bcm2835";
7+
8+
fragment@0 {
9+
target = <&i2c0if>;
10+
__overlay__ {
11+
status = "okay";
12+
};
13+
};
14+
15+
clk_frag: fragment@1 {
16+
target = <&cam1_clk>;
17+
__overlay__ {
18+
status = "okay";
19+
clock-frequency = <12000000>;
20+
};
21+
};
22+
23+
fragment@2 {
24+
target = <&i2c0mux>;
25+
__overlay__ {
26+
status = "okay";
27+
};
28+
};
29+
30+
i2c_frag: fragment@100 {
31+
target = <&i2c_csi_dsi>;
32+
__overlay__ {
33+
#address-cells = <1>;
34+
#size-cells = <0>;
35+
status = "okay";
36+
37+
cam_node: vd55g1@10 {
38+
compatible = "st,vd55g1";
39+
reg = <0x10>;
40+
status = "disabled";
41+
42+
clocks = <&cam1_clk>;
43+
clock-names = "xclk";
44+
45+
vana-supply = <&cam1_reg>; /* 2.8v */
46+
vddio-supply = <&cam_dummy_reg>; /* 1.8v */
47+
vcore-supply = <&cam_dummy_reg>; /* 1.2v */
48+
49+
rotation = <0>;
50+
orientation = <2>;
51+
52+
st,leds = <2>;
53+
54+
port {
55+
cam_endpoint: endpoint {
56+
clock-lanes = <0>;
57+
data-lanes = <1>;
58+
clock-noncontinuous;
59+
link-frequencies =
60+
/bits/ 64 <600000000>;
61+
lane-polarities = <1 1>;
62+
};
63+
};
64+
};
65+
};
66+
};
67+
68+
csi_frag: fragment@101 {
69+
target = <&csi1>;
70+
csi: __overlay__ {
71+
status = "okay";
72+
73+
port {
74+
csi_ep: endpoint {
75+
remote-endpoint = <&cam_endpoint>;
76+
clock-lanes = <0>;
77+
data-lanes = <1>;
78+
clock-noncontinuous;
79+
};
80+
};
81+
};
82+
};
83+
84+
fragment@102 {
85+
target = <&csi1>;
86+
__dormant__ {
87+
compatible = "brcm,bcm2835-unicam-legacy";
88+
};
89+
};
90+
91+
__overrides__ {
92+
rotation = <&cam_node>,"rotation:0";
93+
orientation = <&cam_node>,"orientation:0";
94+
media-controller = <0>,"!102";
95+
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
96+
<&csi_frag>, "target:0=",<&csi0>,
97+
<&clk_frag>, "target:0=",<&cam0_clk>,
98+
<&cam_node>, "clocks:0=",<&cam0_clk>,
99+
<&cam_node>, "vana-supply:0=",<&cam0_reg>;
100+
};
101+
};
102+
103+
&cam_node {
104+
status = "okay";
105+
};
106+
107+
&cam_endpoint {
108+
remote-endpoint = <&csi_ep>;
109+
};
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
/dts-v1/;
3+
/plugin/;
4+
5+
/{
6+
compatible = "brcm,bcm2835";
7+
8+
fragment@0 {
9+
target = <&i2c0if>;
10+
__overlay__ {
11+
status = "okay";
12+
};
13+
};
14+
15+
clk_frag: fragment@1 {
16+
target = <&cam1_clk>;
17+
__overlay__ {
18+
status = "okay";
19+
clock-frequency = <12000000>;
20+
};
21+
};
22+
23+
fragment@2 {
24+
target = <&i2c0mux>;
25+
__overlay__ {
26+
status = "okay";
27+
};
28+
};
29+
30+
i2c_frag: fragment@100 {
31+
target = <&i2c_csi_dsi>;
32+
__overlay__ {
33+
#address-cells = <1>;
34+
#size-cells = <0>;
35+
status = "okay";
36+
37+
cam_node: vd65g4@10 {
38+
compatible = "st,vd65g4";
39+
reg = <0x10>;
40+
status = "disabled";
41+
42+
clocks = <&cam1_clk>;
43+
clock-names = "xclk";
44+
45+
vana-supply = <&cam1_reg>; /* 2.8v */
46+
vddio-supply = <&cam_dummy_reg>; /* 1.8v */
47+
vcore-supply = <&cam_dummy_reg>; /* 1.2v */
48+
49+
rotation = <0>;
50+
orientation = <2>;
51+
52+
st,leds = <2>;
53+
54+
port {
55+
cam_endpoint: endpoint {
56+
clock-lanes = <0>;
57+
data-lanes = <1>;
58+
clock-noncontinuous;
59+
link-frequencies =
60+
/bits/ 64 <600000000>;
61+
lane-polarities = <1 1>;
62+
};
63+
};
64+
};
65+
};
66+
};
67+
68+
csi_frag: fragment@101 {
69+
target = <&csi1>;
70+
csi: __overlay__ {
71+
status = "okay";
72+
73+
port {
74+
csi_ep: endpoint {
75+
remote-endpoint = <&cam_endpoint>;
76+
clock-lanes = <0>;
77+
data-lanes = <1>;
78+
clock-noncontinuous;
79+
};
80+
};
81+
};
82+
};
83+
84+
fragment@102 {
85+
target = <&csi1>;
86+
__dormant__ {
87+
compatible = "brcm,bcm2835-unicam-legacy";
88+
};
89+
};
90+
91+
__overrides__ {
92+
rotation = <&cam_node>,"rotation:0";
93+
orientation = <&cam_node>,"orientation:0";
94+
media-controller = <0>,"!102";
95+
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
96+
<&csi_frag>, "target:0=",<&csi0>,
97+
<&clk_frag>, "target:0=",<&cam0_clk>,
98+
<&cam_node>, "clocks:0=",<&cam0_clk>,
99+
<&cam_node>, "vana-supply:0=",<&cam0_reg>;
100+
};
101+
};
102+
103+
&cam_node {
104+
status = "okay";
105+
};
106+
107+
&cam_endpoint {
108+
remote-endpoint = <&csi_ep>;
109+
};

0 commit comments

Comments
 (0)