[PATCH v11 7/7] arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera

Richard Acayan
2026-03-24T02:02:14Z

The Sony IMX355 is the front camera on the Pixel 3a, mounted in portrait
mode. It is connected to CSIPHY1 and CCI I2C1, and uses MCLK2. Add
support for it.

Co-developed-by: Robert Mader <robert.mader@collabora.com>
Signed-off-by: Robert Mader <robert.mader@collabora.com>
Signed-off-by: Richard Acayan <mailingradian@gmail.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
.../boot/dts/qcom/sdm670-google-sargo.dts | 97 +++++++++++++++++++
1 file changed, 97 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts b/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
index ed55646ca419..8a2ad7f66b41 100644
--- a/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
+++ b/arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts
@@ -172,6 +172,34 @@ vreg_s2b_1p05: vreg-s2b-regulator {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
};
+
+ cam_front_ldo: cam-front-ldo-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "cam_front_ldo";
+ regulator-min-microvolt = <1352000>;
+ regulator-max-microvolt = <1352000>;
+ regulator-enable-ramp-delay = <135>;
+
+ gpios = <&pm660l_gpios 4 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&cam_front_ldo_pin>;
+ pinctrl-names = "default";
+ };
+
+ cam_vio_ldo: cam-vio-ldo-regulator {
+ compatible = "regulator-fixed";
+ regulator-name = "cam_vio_ldo";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-enable-ramp-delay = <233>;
+
+ gpios = <&pm660_gpios 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&cam_vio_pin>;
+ pinctrl-names = "default";
+ };
};

&apps_rsc {
@@ -392,6 +420,61 @@ vreg_bob: bob {
};
};

+&camss {
+ vdda-phy-supply = <&vreg_l1a_1p225>;
+ vdda-pll-supply = <&vreg_s6a_0p87>;
+
+ status = "okay";
+};
+
+&camss_port1 {
+ camss_endpoint1: endpoint {
+ data-lanes = <0 1 2 3>;
+ remote-endpoint = <&cam_front_endpoint>;
+ };
+};
+
+&cci {
+ pinctrl-0 = <&cci1_default>;
+ pinctrl-1 = <&cci1_sleep>;
+ pinctrl-names = "default", "sleep";
+
+ status = "okay";
+};
+
+&cci_i2c1 {
+ camera@1a {
+ compatible = "sony,imx355";
+ reg = <0x1a>;
+
+ clocks = <&camcc CAM_CC_MCLK2_CLK>;
+
+ /* Set 19.2 MHz for compatibility with Linux driver */
+ assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
+ assigned-clock-rates = <19200000>;
+
+ reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
+
+ avdd-supply = <&cam_front_ldo>;
+ dvdd-supply = <&cam_front_ldo>;
+ dovdd-supply = <&cam_vio_ldo>;
+
+ pinctrl-0 = <&cam_mclk2_default>;
+ pinctrl-names = "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>;
+ };
+ };
+ };
+};
+
&gcc {
protected-clocks = <GCC_QSPI_CORE_CLK>,
<GCC_QSPI_CORE_CLK_SRC>,
@@ -490,6 +573,14 @@ &pm660_charger {
status = "okay";
};

+&pm660_gpios {
+ cam_vio_pin: cam-vio-state {
+ pins = "gpio13";
+ function = "normal";
+ power-source = <0>;
+ };
+};
+
&pm660_rradc {
status = "okay";
};
@@ -508,6 +599,12 @@ led-0 {
};

&pm660l_gpios {
+ cam_front_ldo_pin: cam-front-state {
+ pins = "gpio4";
+ function = "normal";
+ power-source = <0>;
+ };
+
vol_up_pin: vol-up-state {
pins = "gpio7";
function = "normal";
--
2.53.0