Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
29b8221
dt-bindings: media: i2c: Add Sony IMX355
flamingradian Mar 24, 2026
22f906f
media: i2c: imx355: Support devicetree and power management
flamingradian Mar 24, 2026
d0ada18
media: i2c: imx355: Restrict data lanes to 4
flamingradian Mar 24, 2026
f517b90
media: i2c: imx355: Add support for 24 MHz external clock
okias Apr 14, 2026
606f625
dt-bindings: media: imx355: Allow 2 CSI2 data lane output
6by9 May 14, 2026
12f1684
media: imx355: Remove duplicated registers from the mode tables
6by9 Apr 15, 2026
77e731d
media: imx355: Remove setting FRM_LENGTH_LINES in the mode regs
6by9 Apr 15, 2026
7da470b
media: imx355: Programmatically set the crop parameters for each mode
6by9 Apr 15, 2026
3d2f898
media: imx355: Set register LINE_LENGTH_PCK programmatically
6by9 Apr 15, 2026
8b4fe43
media: imx355: Set binning mode registers programmatically
6by9 Apr 15, 2026
f60e979
media: imx355: Remove link_freq_index from each mode as ununsed
6by9 Apr 29, 2026
cca8a3c
media: imx355: pixel_rate never changes, so don't recompute
6by9 Apr 29, 2026
8efac48
media: imx355: Remove redundant fll_min, and implement fixed offset
6by9 Apr 29, 2026
208e438
media: imx355: Add support for get_selection
6by9 Apr 15, 2026
2193279
media: imx355: Use pm_runtime autosuspend_delay
6by9 Apr 15, 2026
af79399
media: imx355: Convert to new CCI register access helpers
6by9 Apr 29, 2026
82ebf63
media: imx355: Set the colorspace in the format
6by9 May 11, 2026
bd0cc6e
media: imx355: Define the exposure offset, and use that define
6by9 May 12, 2026
ac84518
media: imx355: Use NULL ctrl_ops for HBLANK as it is a read-only control
6by9 Jun 17, 2026
4e14ab6
media: imx355: Compute link frequency from PLL setup
6by9 Jun 30, 2026
788f84e
media: imx355: Support 2 lane readout.
6by9 Apr 15, 2026
8af65db
media: imx355: Switch to using the subdev state.
6by9 May 11, 2026
21e9fb5
media: imx355: Remove storing cur_mode in the state
6by9 May 11, 2026
a4e0bbc
media: imx355: Make V4L2_CID_HBLANK controllable
6by9 May 12, 2026
74900e5
arm: defconfigs: Add IMX355 to Pi defconfigs
6by9 Jun 18, 2026
4e84dd1
arm64: defconfig: Add IMX355 to Pi configurations
6by9 Apr 28, 2026
b558cab
dtoverlays: Add overlay for imx355 image sensor
6by9 Apr 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions Documentation/devicetree/bindings/media/i2c/sony,imx355.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/sony,imx355.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Sony IMX355 Sensor

maintainers:
- Richard Acayan <mailingradian@gmail.com>

description:
The IMX355 sensor is a 3280x2464 image sensor, commonly found as the front
camera in smartphones.

allOf:
- $ref: /schemas/media/video-interface-devices.yaml#

properties:
compatible:
const: sony,imx355

reg:
maxItems: 1

clocks:
maxItems: 1

avdd-supply:
description: Analog power supply.

dvdd-supply:
description: Digital power supply.

dovdd-supply:
description: Interface power supply.

reset-gpios:
description: Reset GPIO (active low).
maxItems: 1

port:
$ref: /schemas/graph.yaml#/$defs/port-base
additionalProperties: false

properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml
unevaluatedProperties: false

properties:
data-lanes:
oneOf:
- items:
- const: 1
- const: 2
- const: 3
- const: 4
- items:
- const: 1
- const: 2

required:
- link-frequencies

required:
- endpoint

required:
- compatible
- reg
- clocks
- avdd-supply
- dvdd-supply
- dovdd-supply
- port

unevaluatedProperties: false

examples:
- |
#include <dt-bindings/clock/qcom,camcc-sdm845.h>
#include <dt-bindings/gpio/gpio.h>

i2c {
#address-cells = <1>;
#size-cells = <0>;

camera@1a {
compatible = "sony,imx355";
reg = <0x1a>;

clocks = <&camcc CAM_CC_MCLK2_CLK>;

assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
assigned-clock-rates = <24000000>;

reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;

avdd-supply = <&cam_front_ldo>;
dvdd-supply = <&cam_front_ldo>;
dovdd-supply = <&cam_vio_ldo>;

pinctrl-names = "default";
pinctrl-0 = <&cam_front_default>;

rotation = <270>;
orientation = <0>;

port {
cam_front_endpoint: endpoint {
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <360000000>;
remote-endpoint = <&camss_endpoint1>;
};
};
};
};
1 change: 1 addition & 0 deletions arch/arm/boot/dts/overlays/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
imx296.dtbo \
imx327.dtbo \
imx335.dtbo \
imx355.dtbo \
imx378.dtbo \
imx415.dtbo \
imx462.dtbo \
Expand Down
17 changes: 17 additions & 0 deletions arch/arm/boot/dts/overlays/README
Original file line number Diff line number Diff line change
Expand Up @@ -2981,6 +2981,23 @@ Params: orientation Sensor orientation (0 = front, 1 = rear,
Module (1, 3, 4, or 5) or Pi 5.


Name: imx355
Info: Sony IMX355 camera module.
Uses Unicam 1, which is the standard camera connector on most Pi
variants.
Load: dtoverlay=imx355,<param>
Params: orientation Sensor orientation (0 = front, 1 = rear,
2 = external, default external)
rotation Mounting rotation of the camera sensor (0 or
180, default 0)
media-controller Configure use of Media Controller API for
configuring the sensor (default on)
cam0 Adopt the default configuration for CAM0 on a
Compute Module (CSI0, i2c_vc, and cam0_reg).
4lane Enable 4 CSI2 lanes. This requires a Compute
Module (1, 3, 4, or 5) or Pi 5.


Name: imx378
Info: Sony IMX378 camera module.
Uses Unicam 1, which is the standard camera connector on most Pi
Expand Down
101 changes: 101 additions & 0 deletions arch/arm/boot/dts/overlays/imx355-overlay.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
// SPDX-License-Identifier: GPL-2.0-only
// Definitions for IMX355 camera module on VC I2C bus
/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>

/{
compatible = "brcm,bcm2835";

fragment@0 {
target = <&i2c0if>;
__overlay__ {
status = "okay";
};
};

clk_frag: fragment@1 {
target = <&cam1_clk>;
__overlay__ {
status = "okay";
clock-frequency = <24000000>;
};
};

fragment@2 {
target = <&i2c0mux>;
__overlay__ {
status = "okay";
};
};

i2c_frag: fragment@100 {
target = <&i2c_csi_dsi>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";

#include "imx355.dtsi"
};
};

csi_frag: fragment@101 {
target = <&csi1>;
csi: __overlay__ {
status = "okay";

port {
csi_ep: endpoint {
remote-endpoint = <&cam_endpoint>;
clock-lanes = <0>;
data-lanes = <1 2>;
};
};
};
};

fragment@102 {
target = <&csi1>;
__dormant__ {
compatible = "brcm,bcm2835-unicam-legacy";
};
};

fragment@201 {
target = <&csi_ep>;
__dormant__ {
data-lanes = <1 2 3 4>;
};
};

fragment@202 {
target = <&cam_endpoint>;
__dormant__ {
data-lanes = <1 2 3 4>;
link-frequencies =
/bits/ 64 <360000000>;
};
};

__overrides__ {
rotation = <&cam_node>,"rotation:0";
orientation = <&cam_node>,"orientation:0";
media-controller = <0>,"!102";
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
<&csi_frag>, "target:0=",<&csi0>,
<&clk_frag>, "target:0=",<&cam0_clk>,
<&cam_node>, "clocks:0=",<&cam0_clk>,
<&cam_node>, "avdd-supply:0=",<&cam0_reg>;
4lane = <0>, "+201+202";
};
};

&cam_node {
status = "okay";
};

&cam_endpoint {
remote-endpoint = <&csi_ep>;
};
26 changes: 26 additions & 0 deletions arch/arm/boot/dts/overlays/imx355.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Fragment that configures an imx355

cam_node: imx355@1a {
compatible = "sony,imx355";
reg = <0x1a>;
status = "disabled";

clocks = <&cam1_clk>;
clock-names = "xclk";

avdd-supply = <&cam1_reg>; /* 2.8v */
dvdd-supply = <&cam_dummy_reg>; /* 1.8v */
dovdd-supply = <&cam_dummy_reg>;/* 1.2v */

rotation = <180>;
orientation = <2>;

port {
cam_endpoint: endpoint {
clock-lanes = <0>;
data-lanes = <1 2>;
link-frequencies =
/bits/ 64 <444000000>;
};
};
};
1 change: 1 addition & 0 deletions arch/arm/configs/bcm2709_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -942,6 +942,7 @@ CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX335=m
CONFIG_VIDEO_IMX355=m
CONFIG_VIDEO_IMX415=m
CONFIG_VIDEO_IMX477=m
CONFIG_VIDEO_IMX500=m
Expand Down
1 change: 1 addition & 0 deletions arch/arm/configs/bcmrpi_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -935,6 +935,7 @@ CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX335=m
CONFIG_VIDEO_IMX355=m
CONFIG_VIDEO_IMX415=m
CONFIG_VIDEO_IMX477=m
CONFIG_VIDEO_IMX500=m
Expand Down
1 change: 1 addition & 0 deletions arch/arm64/configs/bcm2711_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1043,6 +1043,7 @@ CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX335=m
CONFIG_VIDEO_IMX355=m
CONFIG_VIDEO_IMX415=m
CONFIG_VIDEO_IMX477=m
CONFIG_VIDEO_IMX500=m
Expand Down
1 change: 1 addition & 0 deletions arch/arm64/configs/bcm2712_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1045,6 +1045,7 @@ CONFIG_VIDEO_IMX283=m
CONFIG_VIDEO_IMX290=m
CONFIG_VIDEO_IMX296=m
CONFIG_VIDEO_IMX335=m
CONFIG_VIDEO_IMX355=m
CONFIG_VIDEO_IMX415=m
CONFIG_VIDEO_IMX477=m
CONFIG_VIDEO_IMX500=m
Expand Down
1 change: 1 addition & 0 deletions drivers/media/i2c/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,7 @@ config VIDEO_IMX335

config VIDEO_IMX355
tristate "Sony IMX355 sensor support"
select V4L2_CCI_I2C
help
This is a Video4Linux2 sensor driver for the Sony
IMX355 camera.
Expand Down
Loading
Loading