]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: dts: qcom: sdm670-google-sargo: add imx355 front camera
authorRichard Acayan <mailingradian@gmail.com>
Tue, 31 Mar 2026 19:44:37 +0000 (15:44 -0400)
committerBjorn Andersson <andersson@kernel.org>
Mon, 27 Apr 2026 19:15:47 +0000 (14:15 -0500)
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>
Link: https://lore.kernel.org/r/20260331194437.41041-4-mailingradian@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sdm670-google-sargo.dts

index ed55646ca419d79aa2408c5b86f9c43364a6c6ce..eba2f3792dd0506816addcac74e4667097eabc4b 100644 (file)
                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 {
        };
 };
 
+&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>;
+
+               /*
+                * The sensor can accept a 24 MHz clock, but 19.2 MHz has
+                * better driver compatibility.
+                */
+               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>,
        status = "okay";
 };
 
+&pm660_gpios {
+       cam_vio_pin: cam-vio-state {
+               pins = "gpio13";
+               function = "normal";
+               power-source = <0>;
+       };
+};
+
 &pm660_rradc {
        status = "okay";
 };
 };
 
 &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";