Skip to content

Commit 697707b

Browse files
committed
dtoverlays: Add overlay for the Sony IMX335 4-Lane camera
Provide support for the IMX335 sensor, which has upstream linux kernel drivers. Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
1 parent 25bd2a1 commit 697707b

File tree

3 files changed

+118
-0
lines changed

3 files changed

+118
-0
lines changed

arch/arm/boot/dts/overlays/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
137137
imx290.dtbo \
138138
imx296.dtbo \
139139
imx327.dtbo \
140+
imx335.dtbo \
140141
imx378.dtbo \
141142
imx415.dtbo \
142143
imx462.dtbo \
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
// Definitions for IMX335 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 = <200000>;
37+
off-on-delay-us = <30000>;
38+
regulator-min-microvolt = <2900000>;
39+
regulator-max-microvolt = <2900000>;
40+
};
41+
};
42+
43+
i2c_frag: fragment@100 {
44+
target = <&i2c_csi_dsi>;
45+
__overlay__ {
46+
#address-cells = <1>;
47+
#size-cells = <0>;
48+
status = "okay";
49+
50+
#include "imx335.dtsi"
51+
};
52+
};
53+
54+
csi_frag: fragment@101 {
55+
target = <&csi1>;
56+
csi: __overlay__ {
57+
status = "okay";
58+
brcm,media-controller;
59+
60+
port {
61+
csi_ep: endpoint {
62+
remote-endpoint = <&cam_endpoint>;
63+
clock-lanes = <0>;
64+
data-lanes = <1 2 3 4>;
65+
clock-noncontinuous;
66+
};
67+
};
68+
};
69+
};
70+
71+
__overrides__ {
72+
rotation = <&cam_node>,"rotation:0";
73+
orientation = <&cam_node>,"orientation:0";
74+
media-controller = <&csi>,"brcm,media-controller?";
75+
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
76+
<&csi_frag>, "target:0=",<&csi0>,
77+
<&clk_frag>, "target:0=",<&cam0_clk>,
78+
<&reg_frag>, "target:0=",<&cam0_reg>,
79+
<&cam_node>, "clocks:0=",<&cam0_clk>,
80+
<&cam_node>, "avdd1-supply:0=",<&cam0_reg>;
81+
link-frequency = <&cam_endpoint>,"link-frequencies#0";
82+
};
83+
};
84+
85+
&cam_node {
86+
status = "okay";
87+
};
88+
89+
&cam_endpoint {
90+
remote-endpoint = <&csi_ep>;
91+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Fragment that configures a Sony IMX335
2+
3+
cam_node: imx335@1a {
4+
compatible = "sony,imx335";
5+
reg = <0x1a>;
6+
status = "disabled";
7+
8+
clocks = <&cam1_clk>;
9+
clock-names = "xclk";
10+
11+
avdd-supply = <&cam1_reg>; /* Analog 2.9v */
12+
iovdd-supply = <&cam_dummy_reg>; /* Digital I/O 1.8v */
13+
dvdd-supply = <&cam_dummy_reg>; /* Digital Core 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 3 4>;
22+
clock-noncontinuous;
23+
link-frequencies = /bits/ 64 <594000000>;
24+
};
25+
};
26+
};

0 commit comments

Comments
 (0)