On 07/01/2026 04:30, Richard Acayan wrote:
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 <[email protected]>
Signed-off-by: Robert Mader <[email protected]>
Signed-off-by: Richard Acayan <[email protected]>
---
  .../boot/dts/qcom/sdm670-google-sargo.dts     | 104 ++++++++++++++++++
  1 file changed, 104 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..ec447fe3959a 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 {
+               clock-lanes = <7>;
+               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>;
+
+               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_front_default &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";
@@ -547,6 +644,13 @@ &sdhc_1 {
  &tlmm {
        gpio-reserved-ranges = <0 4>, <81 4>;

+       cam_front_default: cam-front-default-state {
+               pins = "gpio9";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
        panel_default: panel-default-state {
                te-pins {
                        pins = "gpio10";
--
2.52.0

Reviewed-by: Bryan O'Donoghue <[email protected]>

Reply via email to