Skip to content

Commit 3fa26be

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

4 files changed

Lines changed: 156 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 \

arch/arm/boot/dts/overlays/README

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2977,6 +2977,24 @@ Params: orientation Sensor orientation (0 = front, 1 = rear,
29772977
Module (1, 3, 4, or 5) or Pi 5.
29782978

29792979

2980+
Name: imx355
2981+
Info: Sony IMX355 camera module.
2982+
Uses Unicam 1, which is the standard camera connector on most Pi
2983+
variants.
2984+
Load: dtoverlay=imx355,<param>
2985+
Params: orientation Sensor orientation (0 = front, 1 = rear,
2986+
2 = external, default external)
2987+
rotation Mounting rotation of the camera sensor (0 or
2988+
180, default 0)
2989+
media-controller Configure use of Media Controller API for
2990+
configuring the sensor (default on)
2991+
cam0 Adopt the default configuration for CAM0 on a
2992+
Compute Module (CSI0, i2c_vc, and cam0_reg).
2993+
4lane Enable 4 CSI2 lanes. This requires a Compute
2994+
Module (1, 3, 4, or 5) or Pi 5.
2995+
vcm Configure a VCM focus drive on the sensor.
2996+
2997+
29802998
Name: imx378
29812999
Info: Sony IMX378 camera module.
29823000
Uses Unicam 1, which is the standard camera connector on most Pi
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
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+
};
62+
};
63+
};
64+
};
65+
66+
fragment@102 {
67+
target = <&csi1>;
68+
__dormant__ {
69+
compatible = "brcm,bcm2835-unicam-legacy";
70+
};
71+
};
72+
73+
fragment@201 {
74+
target = <&csi_ep>;
75+
__dormant__ {
76+
data-lanes = <1 2 3 4>;
77+
};
78+
};
79+
80+
fragment@202 {
81+
target = <&cam_endpoint>;
82+
__dormant__ {
83+
data-lanes = <1 2 3 4>;
84+
link-frequencies =
85+
/bits/ 64 <360000000>;
86+
};
87+
};
88+
89+
__overrides__ {
90+
rotation = <&cam_node>,"rotation:0";
91+
orientation = <&cam_node>,"orientation:0";
92+
media-controller = <0>,"!102";
93+
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
94+
<&csi_frag>, "target:0=",<&csi0>,
95+
<&clk_frag>, "target:0=",<&cam0_clk>,
96+
<&cam_node>, "clocks:0=",<&cam0_clk>,
97+
<&cam_node>, "avdd-supply:0=",<&cam0_reg>,
98+
<&vcm>, "VANA-supply:0=", <&cam0_reg>;
99+
vcm = <&vcm>, "status=okay",
100+
<&cam_node>,"lens-focus:0=", <&vcm>;
101+
4lane = <0>, "+201+202";
102+
};
103+
};
104+
105+
&cam_node {
106+
status = "okay";
107+
};
108+
109+
&cam_endpoint {
110+
remote-endpoint = <&csi_ep>;
111+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
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+
link-frequencies =
23+
/bits/ 64 <444000000>;
24+
};
25+
};
26+
};

0 commit comments

Comments
 (0)