Re: [PATCH 1/1] arm64: dts: qcom: qrb5165-rb5: Enable the IMX577 on cam1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bryan,

On 5/18/22 16:30, Bryan O'Donoghue wrote:
The IMX577 is on CCI1/CSI2 providing four lanes of camera data.

An example media-ctl pipeline is:

media-ctl --reset
media-ctl -v -d /dev/media0 -V '"imx412 '20-001a'":0[fmt:SRGGB10/4056x3040 field:none]'
media-ctl -V '"msm_csiphy2":0[fmt:SRGGB10/4056x3040]'
media-ctl -V '"msm_csid0":0[fmt:SRGGB10/4056x3040]'
media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB10/4056x3040]'
media-ctl -l '"msm_csiphy2":1->"msm_csid0":0[1]'
media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'

yavta -B capture-mplane -c -I -n 5 -f SRGGB10P -s 4056x3040 -F /dev/video0

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>
---
  arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 98 ++++++++++++++++++++++++
  1 file changed, 98 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
index 0e63f707b911..48b31790c434 100644
--- a/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
+++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5.dts
@@ -1203,6 +1203,43 @@ sdc2_card_det_n: sd-card-det-n {
  		function = "gpio";
  		bias-pull-up;
  	};
+
+	cam2_default: cam2-default {
+		rst {
+			pins = "gpio78";
+			function = "gpio";
+
+			drive-strength = <2>;
+			bias-disable;
+		};
+
+		mclk {
+			pins = "gpio96";
+			function = "cam_mclk";
+
+			drive-strength = <16>;
+			bias-disable;
+		};
+	};
+
+	cam2_suspend: cam2-suspend {
+		rst {
+			pins = "gpio78";
+			function = "gpio";
+
+			drive-strength = <2>;
+			bias-pull-down;
+			output-low;
+		};
+
+		mclk {
+			pins = "gpio96";
+			function = "cam_mclk";
+
+			drive-strength = <2>;
+			bias-disable;
+		};
+	};

I still stick to my opinion that the description of rst/mclk pins should
be uniformly added to the SoC specific .dtsi file. The pins and functions
in these device tree nodes are not changeable, a board file should just
select proper pairs.

Do you have any objections to it?

  };
&uart12 {
@@ -1294,3 +1331,64 @@ &qup_spi0_data_clk {
  	drive-strength = <6>;
  	bias-disable;
  };
+
+&camcc {
+	status = "okay";
+};
+
+&camss {
+	status = "okay";
+	vdda-phy-supply = <&vreg_l5a_0p88>;
+	vdda-pll-supply = <&vreg_l9a_1p2>;
+
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		/* The port index denotes CSIPHY id i.e. csiphy2 */
+		port@2 {
+			reg = <2>;
+			csiphy2_ep: endpoint {
+				clock-lanes = <7>;
+				data-lanes = <0 1 2 3>;
+				remote-endpoint = <&imx412_ep>;
+			};
+
+		};
+	};
+};
+
+&cci1 {
+	status = "okay";
+};
+
+&cci1_i2c0 {
+	camera@1a {
+		compatible = "sony,imx412";
+		reg = <0x1a>;
+
+		reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default", "suspend";
+		pinctrl-0 = <&cam2_default>;
+		pinctrl-1 = <&cam2_suspend>;
+
+		clocks = <&camcc CAM_CC_MCLK2_CLK>;
+		assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
+		assigned-clock-rates = <24000000>;
+
+		power-domains = <&camcc TITAN_TOP_GDSC>;

Above 'power-domains' property is not needed, it shall be implied by CCI.

+		dovdd-supply  = <&vreg_l7f_1p8>;
+		avdd-supply = <&vdc_5v>;
+		dvdd-supply = <&vdc_5v>;
+
+		status = "okay";

Here 'status' property is not needed.

+		port {
+			imx412_ep: endpoint {
+				clock-lanes = <1>;
+				link-frequencies = /bits/ 64 <600000000>;
+				data-lanes = <1 2 3 4>;
+				remote-endpoint = <&csiphy2_ep>;
+			};
+		};
+	};
+};

I run on you branch on top of linux-next, but switch build options from modules to built-in

   CONFIG_I2C_QCOM_CCI=y
   CONFIG_VIDEO_QCOM_CAMSS=y

I didn't get the sensor initialized and hence there is no /dev/media0 node:

[    0.620205] i2c-qcom-cci ac50000.cci: Found 19200000 cci clk rate while 37500000 was expected
[    0.620551] i2c 20-001a: Fixing up cyclic dependency with ac6a000.camss
[    0.620754] imx412 20-001a: Looking up dovdd-supply from device tree
[    0.620797] imx412 20-001a: Looking up avdd-supply from device tree
[    0.620860] imx412 20-001a: Looking up dvdd-supply from device tree
[    0.620876] duplicated lane 1 in clock-lanes, using defaults
[    0.622789] imx412 20-001a: failed to find sensor: -5
[    0.622880] imx412: probe of 20-001a failed with error -5

I believe the problem could be related to CCI, please remind me, are there I2C bus pull-ups?

--
Best wishes,
Vladimir



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux