On 1/7/26 06: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>;

Please remove the copied bogus 'clock-lanes' property, here it has no impact
and here it's value is just some random number.

+               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;
+       };

Likely this one could be omitted, the proper and expected GPIO configuration
should be done by the GPIO framework itself.

+
        panel_default: panel-default-state {
                te-pins {
                        pins = "gpio10";

--
Best wishes,
Vladimir

Reply via email to