On Sat, Apr 11, 2026 at 12:12:02PM +0200, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <[email protected]>
>
> The Pixel 3 features two front-facing Sony IMX355 sensors with
> different focal lengths (standard and wide-angle).
>
> Both sensors are connected via CSIPHY1 and controlled over CCI I2C1,
> using MCLK2 as the clock source. Describe the camera nodes and
> associated resources in the device tree.
>
> This enables support for the dual front camera configuration.
>
> Signed-off-by: David Heidelberg <[email protected]>
> ---
> arch/arm64/boot/dts/qcom/sdm845-google-common.dtsi | 187
> ++++++++++++++++++++-
> 1 file changed, 186 insertions(+), 1 deletion(-)
>
> @@ -319,6 +362,12 @@ vreg_l28a_3p0: ldo28 {
> */
> regulator-always-on;
> };
> +
> + cam_vio_1p8:
No need for extra labels.
> + vreg_lvs1_1p8: lvs1 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + };
> };
>
> regulators-1 {
> @@ -351,6 +400,45 @@ vreg_s3c_0p6: smps3 {
> };
> };
>
> +&camss {
> + vdda-phy-supply = <&vreg_l1a_0p875>;
> + vdda-pll-supply = <&vreg_l26a_1p2>;
> +
> + vdda-csi0-supply = <&vdda_mipi_csi0_0p9>;
> + vdda-csi1-supply = <&vdda_mipi_csi1_0p9>;
> + vdda-csi2-supply = <&vdda_mipi_csi2_0p9>;
> +
> + status = "okay";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + reg = <1>;
> + camss_endpoint1: endpoint {
> + bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
> + data-lanes = <0 1 2 3>;
> + remote-endpoint = <&cam_aux_front_endpoint>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> + camss_endpoint2: endpoint {
> + bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
> + data-lanes = <0 1 2 3>;
> + remote-endpoint = <&cam_front_endpoint>;
> + };
> + };
> + };
> +};
> +
> +&cci0_sleep {
> + /* bus has external pull-up, don't pull down */
> + bias-disable;
> +};
> +
> &cci {
> status = "okay";
> };
> @@ -358,7 +446,72 @@ &cci {
> &cci_i2c1 {
> /* actuator @0c */
>
> - /* front camera, imx355 @1a */
> + front_cam: camera@10 {
> + compatible = "sony,imx355";
> + reg = <0x10>;
> +
> + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
> + assigned-clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
> + /*
> + * The sensor can accept a 24 MHz clock, but 19.2 MHz has
> + * better driver compatibility.
> + */
> + assigned-clock-rates = <19200000>;
> +
> + reset-gpios = <&tlmm 21 GPIO_ACTIVE_LOW>;
> +
> + avdd-supply = <&camera_front_avdd>;
> + dvdd-supply = <&vreg_s3a_1p35>;
> + dovdd-supply = <&cam_vio_1p8>;
> +
> + /* MCLK2 pin (gpio15) is claimed by the aux sensor */
Can we require it from the camss node then?
> + pinctrl-0 = <&cam_front_reset_default_pin>;
> + 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_endpoint2>;
> + };
> + };
> + };
> +
> + front_aux_cam: camera@1a {
> + compatible = "sony,imx355";
> + reg = <0x1a>;
> +
> + clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
> + assigned-clocks = <&clock_camcc CAM_CC_MCLK2_CLK>;
> + /*
> + * The sensor can accept a 24 MHz clock, but 19.2 MHz has
> + * better driver compatibility.
> + */
> + assigned-clock-rates = <19200000>;
> +
> + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
> +
> + avdd-supply = <&camera_front_aux_avdd>;
> + dvdd-supply = <&vreg_s3a_1p35>;
> + dovdd-supply = <&cam_vio_1p8>;
> +
> + pinctrl-0 = <&cam_mclk2_default
> &cam_front_aux_reset_default_pin>;
> + pinctrl-names = "default";
> +
> + rotation = <270>;
> + orientation = <0>;
> +
> + port {
> + cam_aux_front_endpoint: endpoint {
> + data-lanes = <1 2 3 4>;
> + link-frequencies = /bits/ 64 <360000000>;
> + remote-endpoint = <&camss_endpoint1>;
> + };
> + };
> + };
>
> /* eeprom @50, at24 driver says 8K */
> };
--
With best wishes
Dmitry