Message ID | 20220518133004.342775-2-bryan.odonoghue@linaro.org |
---|---|
State | New |
Headers | show |
Series | Switch on IMX577 on RB5 | expand |
Hi! On 18/05/2022 15:30, Bryan O'Donoghue wrote: > The IMX577 is on CCI1/CSI2 providing four lanes of camera data. Commit says IMX577, code says IMX412. > > 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(+) > > 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; Other pins in this DT don't have a newline between function and drive-strength, please remove it for consistency. > + }; > + > + 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"; > +}; It's enabled by default. > + > +&camss { > + status = "okay"; > + vdda-phy-supply = <&vreg_l5a_0p88>; > + vdda-pll-supply = <&vreg_l9a_1p2>; > + > + ports { Maybe the port definitions along with #-cells here and on camss could be moved to the SoC DTSI? > + #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"; It's enabled by default. Konrad > + port { > + imx412_ep: endpoint { > + clock-lanes = <1>; > + link-frequencies = /bits/ 64 <600000000>; > + data-lanes = <1 2 3 4>; > + remote-endpoint = <&csiphy2_ep>; > + }; > + }; > + }; > +}; >
Hi Konrad, On 5/18/22 16:55, Konrad Dybcio wrote: > Hi! > > > On 18/05/2022 15:30, Bryan O'Donoghue wrote: >> The IMX577 is on CCI1/CSI2 providing four lanes of camera data. > > Commit says IMX577, code says IMX412. > > >> >> 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(+) >> >> 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; > > Other pins in this DT don't have a newline between function and > drive-strength, please remove it for consistency. > > >> + }; >> + >> + 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"; >> +}; > > It's enabled by default. > I'd prefer to see the camera clock controller disabled by default. https://lore.kernel.org/linux-devicetree/20220518091943.734478-1-vladimir.zapolskiy@linaro.org/ >> + >> +&camss { >> + status = "okay"; >> + vdda-phy-supply = <&vreg_l5a_0p88>; >> + vdda-pll-supply = <&vreg_l9a_1p2>; >> + >> + ports { > > Maybe the port definitions along with #-cells here and on camss could be > moved to the SoC DTSI? > I agree with it. >> + #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"; > > It's enabled by default. > -- Best wishes, Vladimir
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
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 ? --- bod
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
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 --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>; + }; + }; + }; +};
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(+)