diff mbox series

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

Message ID 20220518133004.342775-2-bryan.odonoghue@linaro.org
State New
Headers show
Series [1/1] arm64: dts: qcom: qrb5165-rb5: Enable the IMX577 on cam1 | expand

Commit Message

Bryan O'Donoghue May 18, 2022, 1:30 p.m. UTC
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@linaro.org>
---
 arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 98 ++++++++++++++++++++++++
 1 file changed, 98 insertions(+)

Comments

kernel test robot May 21, 2022, 4:50 a.m. UTC | #1
Hi Bryan,

I love your patch! Yet something to improve:

[auto build test ERROR on robh/for-next]
[also build test ERROR on v5.18-rc7]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Bryan-O-Donoghue/Switch-on-IMX577-on-RB5/20220518-213438
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: arm64-allyesconfig (https://download.01.org/0day-ci/archive/20220521/202205211233.z5zpxDvl-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/9d9ad87ded5bf5f2f790a549863ad3d63b7336f3
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Bryan-O-Donoghue/Switch-on-IMX577-on-RB5/20220518-213438
        git checkout 9d9ad87ded5bf5f2f790a549863ad3d63b7336f3
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> Error: arch/arm64/boot/dts/qcom/qrb5165-rb5.dts:1335.1-7 Label or path camcc not found
>> Error: arch/arm64/boot/dts/qcom/qrb5165-rb5.dts:1339.1-7 Label or path camss not found
>> Error: arch/arm64/boot/dts/qcom/qrb5165-rb5.dts:1361.1-6 Label or path cci1 not found
>> Error: arch/arm64/boot/dts/qcom/qrb5165-rb5.dts:1375.20-21 syntax error
   FATAL ERROR: Unable to parse input tree
Vladimir Zapolskiy May 23, 2022, 1:50 p.m. UTC | #2
Hi Bryan,

On 5/22/22 20:10, Bryan O'Donoghue wrote:
> On 18/05/2022 20:09, Vladimir Zapolskiy wrote:
>>
>> 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?
> 
> Hmm.
> 
> Just trying to replicate this on linux-next
> 
> https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-22-05-22%2bimx577-rb5
> 
> root@linaro-gnome:~# zcat /proc/config.gz | grep -e CONFIG_I2C_QCOM_CCI
> -e CONFIG_VIDEO_QCOM_CAMSS
> CONFIG_I2C_QCOM_CCI=y
> CONFIG_VIDEO_QCOM_CAMSS=y
> 
> root@linaro-gnome:~# uname -a
> Linux linaro-gnome 5.18.0-rc7-next-20220518-00006-g3beef4d1d353-dirty
> #40 SMP PREEMPT Sun May 22 17:53:29 IST 2022 aarch64 GNU/Linux
> 
> root@linaro-gnome:~# cam -l
> Available cameras:
> 1: 'imx412' (/base/soc@0/cci@ac50000/i2c-bus@0/camera@1a)
> 
> are you compiling everything in ?

it's some kind of a race related to probes of CAMSS, CCI and IMX412 drivers.

Since I'm able to reproduce it, I'll take the analysis on myself, and it does not
interfere with your patch series.

--
Best wishes,
Vladimir
Bryan O'Donoghue May 23, 2022, 3:30 p.m. UTC | #3
On 23/05/2022 14:50, Vladimir Zapolskiy wrote:
> it's some kind of a race related to probes of CAMSS, CCI and IMX412 
> drivers.
> 
> Since I'm able to reproduce it, I'll take the analysis on myself, and it 
> does not
> interfere with your patch series.

Ah, I think I have it pretty much narrowed down now. Needed to switch 
off modules entirely.

First probe fails, second probe succeeds.

Thanks anyway, I think I'm close to fix.

---
bod
diff mbox series

Patch

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;
+		};
+	};
 };
 
 &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>;
+		dovdd-supply  = <&vreg_l7f_1p8>;
+		avdd-supply = <&vdc_5v>;
+		dvdd-supply = <&vdc_5v>;
+
+		status = "okay";
+		port {
+			imx412_ep: endpoint {
+				clock-lanes = <1>;
+				link-frequencies = /bits/ 64 <600000000>;
+				data-lanes = <1 2 3 4>;
+				remote-endpoint = <&csiphy2_ep>;
+			};
+		};
+	};
+};