All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/5] CAMSS updates for rb3 and rb5
@ 2022-06-06 13:20 Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 1/5] i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter Bryan O'Donoghue
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Bryan O'Donoghue @ 2022-06-06 13:20 UTC (permalink / raw)
  To: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, dmitry.baryshkov,
	konrad.dybcio, bryan.odonoghue

V3:
This series takes in some changes to core CAMSS/CCI and to the RB3 taking
feedback from others on the list so, I've renamed from the previous "Switch
on IMX577 on RB5 with a new CCI fix" to the new title above.

- Changes pm_runtime_put() - Vladimir
- Adds Reviewed-by as indicated - Vladimir
- Adds cc-stable for the CCI bugfix - Bryan
- Splits rb3 and rb5 into "navigation-mezzanine.dts" and
  "vision-mezzanine.dts" respecitvely - Dmitry / Bjorn

I didn't add new compatible strings for the mezzanines since it doesn't
make much sense to me how that would work concatonating two mezzaines
together but, maybe there's another better argument I haven't thought of.

Again to make verification easier I've provided a buidable and bootable
tree for rb3 and rb5 containing defconfig - you can just zap the last
commit to test with modules on rb5.

Link: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-03-06-22%2bimx577-rb5

V2:

- Adds fix for bug identified by Vladimir
  The CCI i2c_adapter_add() and pm_runtime_enable() are racy.
  This is a generic problem not related to the rb5/imx577 but, for the sake
  of our conversation/review's context I'll add it into this series.
- Include Vladimir's camcc patch
  I've also opted to include Vladimir's disable of camcc to make the enable
  of it in my patchset logical.
- Move address/size cells Konrad
- Remove newline in pin definitions - Konrad
- Remove sensor 'status = "okay"' - Konrad
- Add comment to qrb5165-rb5.dts re: imx412 and imx577 difference - Konrad
- Move pin definitions to 8250 dtsi - Vladimir
- Drop power domain from sensor definition - Vladimir
- Correct to "add to cam2" not "cam1" in commit log - bod

To make verification of the CCI race eaiser I've provided a defconfig both
with and without modules enabled.

Link: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-24-05-22%2bimx577-rb5
Link: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-24-05-22%2bimx577-rb5-compiled-in

git diff linaro/linux-next-22-05-22+imx577-rb5 linaro/linux-next-24-05-22+imx577-rb5

V1:
Linux-next now has everything we need to switch on this sensor both in the
qcom DTS and in the imx412 driver.

After this, no further dts or driver work is required to capture images on
the RB5.

Here's a bootable linux-next with a kernel config. I added Vladimir's
power-domain changes on-top to verify nothing breaks for me.

https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-18-05-22%2bimx577-rb5

Bryan O'Donoghue (4):
  i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter
  arm64: dts: qcom: sm8250: camss: Define ports address/size cells
  arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine
  arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Add navigation
    mezzanine dts

Vladimir Zapolskiy (1):
  arm64: dts: qcom: sm8250: Disable camcc by default

 arch/arm64/boot/dts/qcom/Makefile             |   2 +
 .../dts/qcom/qrb5165-rb5-vision-mezzanine.dts |  68 +++++++++++
 .../sdm845-db845c-navigation-mezzanine.dts    | 115 ++++++++++++++++++
 arch/arm64/boot/dts/qcom/sdm845-db845c.dts    | 106 ----------------
 arch/arm64/boot/dts/qcom/sm8250.dtsi          |  39 ++++++
 drivers/i2c/busses/i2c-qcom-cci.c             |  13 +-
 6 files changed, 232 insertions(+), 111 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
 create mode 100644 arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dts

-- 
2.36.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v3 1/5] i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter
  2022-06-06 13:20 [PATCH v3 0/5] CAMSS updates for rb3 and rb5 Bryan O'Donoghue
@ 2022-06-06 13:20 ` Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 2/5] arm64: dts: qcom: sm8250: Disable camcc by default Bryan O'Donoghue
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Bryan O'Donoghue @ 2022-06-06 13:20 UTC (permalink / raw)
  To: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, dmitry.baryshkov,
	konrad.dybcio, bryan.odonoghue, stable

When we compile-in the CCI along with the imx412 driver and run on the RB5
we see that i2c_add_adapter() causes the probe of the imx412 driver to
happen.

This probe tries to perform an i2c xfer() and the xfer() in i2c-qcom-cci.c
fails on pm_runtime_get() because the i2c-qcom-cci.c::probe() function has
not completed to pm_runtime_enable(dev).

Fix this sequence by ensuring pm_runtime_xxx() calls happen prior to adding
the i2c adapter.

Fixes: e517526195de ("i2c: Add Qualcomm CCI I2C driver")
Reported-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Tested-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Cc: <stable@vger.kernel.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 drivers/i2c/busses/i2c-qcom-cci.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/i2c/busses/i2c-qcom-cci.c b/drivers/i2c/busses/i2c-qcom-cci.c
index 5c7cc862f08f..8d078bdb5c1b 100644
--- a/drivers/i2c/busses/i2c-qcom-cci.c
+++ b/drivers/i2c/busses/i2c-qcom-cci.c
@@ -638,6 +638,11 @@ static int cci_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto error;
 
+	pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC);
+	pm_runtime_use_autosuspend(dev);
+	pm_runtime_set_active(dev);
+	pm_runtime_enable(dev);
+
 	for (i = 0; i < cci->data->num_masters; i++) {
 		if (!cci->master[i].cci)
 			continue;
@@ -649,14 +654,12 @@ static int cci_probe(struct platform_device *pdev)
 		}
 	}
 
-	pm_runtime_set_autosuspend_delay(dev, MSEC_PER_SEC);
-	pm_runtime_use_autosuspend(dev);
-	pm_runtime_set_active(dev);
-	pm_runtime_enable(dev);
-
 	return 0;
 
 error_i2c:
+	pm_runtime_disable(dev);
+	pm_runtime_dont_use_autosuspend(dev);
+
 	for (--i ; i >= 0; i--) {
 		if (cci->master[i].cci) {
 			i2c_del_adapter(&cci->master[i].adap);
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 2/5] arm64: dts: qcom: sm8250: Disable camcc by default
  2022-06-06 13:20 [PATCH v3 0/5] CAMSS updates for rb3 and rb5 Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 1/5] i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter Bryan O'Donoghue
@ 2022-06-06 13:20 ` Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 3/5] arm64: dts: qcom: sm8250: camss: Define ports address/size cells Bryan O'Donoghue
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Bryan O'Donoghue @ 2022-06-06 13:20 UTC (permalink / raw)
  To: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, dmitry.baryshkov,
	konrad.dybcio, bryan.odonoghue

From: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>

At the moment there are no changes in SM8250 board files, which require
camera clock controller to run, whenever it is needed for a particular
board, the status of camcc device node will be changed in a board file.

Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/sm8250.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index cf0c97bd5ad3..2bc11cad3a44 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -3407,6 +3407,7 @@ camcc: clock-controller@ad00000 {
 			clock-names = "iface", "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
 			power-domains = <&rpmhpd SM8250_MMCX>;
 			required-opps = <&rpmhpd_opp_low_svs>;
+			status = "disabled";
 			#clock-cells = <1>;
 			#reset-cells = <1>;
 			#power-domain-cells = <1>;
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 3/5] arm64: dts: qcom: sm8250: camss: Define ports address/size cells
  2022-06-06 13:20 [PATCH v3 0/5] CAMSS updates for rb3 and rb5 Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 1/5] i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 2/5] arm64: dts: qcom: sm8250: Disable camcc by default Bryan O'Donoghue
@ 2022-06-06 13:20 ` Bryan O'Donoghue
  2022-07-01  3:10   ` Bjorn Andersson
  2022-06-06 13:20 ` [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine Bryan O'Donoghue
  2022-06-06 13:20 ` [PATCH v3 5/5] arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Add navigation mezzanine dts Bryan O'Donoghue
  4 siblings, 1 reply; 10+ messages in thread
From: Bryan O'Donoghue @ 2022-06-06 13:20 UTC (permalink / raw)
  To: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, dmitry.baryshkov,
	konrad.dybcio, bryan.odonoghue

The ports {} address and size cells definition is the same for every
derived 8250 board so, we should define it in the core sm8250.dtsi.

Suggested-by: Konrad Dybcio <konrad.dybcio@somainline.org>
Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/sm8250.dtsi | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index 2bc11cad3a44..aa9a13364865 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -3395,6 +3395,11 @@ camss: camss@ac6a000 {
 					     "cam_hf_0_mnoc",
 					     "cam_sf_0_mnoc",
 					     "cam_sf_icp_mnoc";
+
+			ports {
+				#address-cells = <1>;
+				#size-cells = <0>;
+			};
 		};
 
 		camcc: clock-controller@ad00000 {
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine
  2022-06-06 13:20 [PATCH v3 0/5] CAMSS updates for rb3 and rb5 Bryan O'Donoghue
                   ` (2 preceding siblings ...)
  2022-06-06 13:20 ` [PATCH v3 3/5] arm64: dts: qcom: sm8250: camss: Define ports address/size cells Bryan O'Donoghue
@ 2022-06-06 13:20 ` Bryan O'Donoghue
  2022-06-06 16:03   ` Dmitry Baryshkov
  2022-06-06 13:20 ` [PATCH v3 5/5] arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Add navigation mezzanine dts Bryan O'Donoghue
  4 siblings, 1 reply; 10+ messages in thread
From: Bryan O'Donoghue @ 2022-06-06 13:20 UTC (permalink / raw)
  To: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, dmitry.baryshkov,
	konrad.dybcio, bryan.odonoghue

The Vision Mezzanine for the RB5 ships with an imx517 and ov9282 populated.
Other sensors and components may be added or stacked with additional
mezzanines.

In this drop we enable the Sony imx577 main camera sensor.

The IMX577 is on CCI1/CSI2 provides 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/Makefile             |  1 +
 .../dts/qcom/qrb5165-rb5-vision-mezzanine.dts | 68 +++++++++++++++++++
 arch/arm64/boot/dts/qcom/sm8250.dtsi          | 33 +++++++++
 3 files changed, 102 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 2f8aec2cc6db..86e6801a9c29 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -51,6 +51,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-sony-xperia-yoshino-poplar.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-4000.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qrb5165-rb5.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= qrb5165-rb5-vision-mezzanine.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sa8155p-adp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sc7180-idp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sc7180-trogdor-coachz-r1.dtb
diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
new file mode 100644
index 000000000000..c8bed02243f8
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
@@ -0,0 +1,68 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2022, Linaro Ltd.
+ */
+
+/dts-v1/;
+
+#include "qrb5165-rb5.dts"
+
+&camcc {
+	status = "okay";
+};
+
+&camss {
+	status = "okay";
+	vdda-phy-supply = <&vreg_l5a_0p88>;
+	vdda-pll-supply = <&vreg_l9a_1p2>;
+
+	ports {
+		/* 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 {
+		/*
+		 * rb5 ships with an imx577. camx code from qcom treats imx412
+		 * and imx577 the same way. Absent better data do the same here.
+		 */
+		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>;
+
+		dovdd-supply  = <&vreg_l7f_1p8>;
+		avdd-supply = <&vdc_5v>;
+		dvdd-supply = <&vdc_5v>;
+
+		port {
+			imx412_ep: endpoint {
+				clock-lanes = <1>;
+				link-frequencies = /bits/ 64 <600000000>;
+				data-lanes = <1 2 3 4>;
+				remote-endpoint = <&csiphy2_ep>;
+			};
+		};
+	};
+};
diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index aa9a13364865..2b65ec2806d0 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -3788,6 +3788,39 @@ tlmm: pinctrl@f100000 {
 			gpio-ranges = <&tlmm 0 0 181>;
 			wakeup-parent = <&pdc>;
 
+			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;
+				};
+			};
+
 			cci0_default: cci0-default {
 				cci0_i2c0_default: cci0-i2c0-default {
 					/* SDA, SCL */
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 5/5] arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Add navigation mezzanine dts
  2022-06-06 13:20 [PATCH v3 0/5] CAMSS updates for rb3 and rb5 Bryan O'Donoghue
                   ` (3 preceding siblings ...)
  2022-06-06 13:20 ` [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine Bryan O'Donoghue
@ 2022-06-06 13:20 ` Bryan O'Donoghue
  4 siblings, 0 replies; 10+ messages in thread
From: Bryan O'Donoghue @ 2022-06-06 13:20 UTC (permalink / raw)
  To: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, dmitry.baryshkov,
	konrad.dybcio, bryan.odonoghue

Move the dts data for the rb3 navigation mezzanine into its own dts file.

Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../sdm845-db845c-navigation-mezzanine.dts    | 115 ++++++++++++++++++
 arch/arm64/boot/dts/qcom/sdm845-db845c.dts    | 106 ----------------
 3 files changed, 116 insertions(+), 106 deletions(-)
 create mode 100644 arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 86e6801a9c29..2561c419f3ef 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -101,6 +101,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-cheza-r1.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-cheza-r2.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-cheza-r3.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-db845c.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-db845c-navigation-mezzanine.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-mtp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-oneplus-enchilada.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= sdm845-oneplus-fajita.dtb
diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dts
new file mode 100644
index 000000000000..565675d644c5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dts
@@ -0,0 +1,115 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2022, Linaro Ltd.
+ */
+
+/dts-v1/;
+
+#include "sdm845-db845c.dts"
+
+&cci {
+	status = "okay";
+};
+
+&camss {
+	vdda-supply = <&vreg_l1a_0p875>;
+
+	status = "ok";
+
+	ports {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		port@0 {
+			reg = <0>;
+			csiphy0_ep: endpoint {
+				data-lanes = <0 1 2 3>;
+				remote-endpoint = <&ov8856_ep>;
+			};
+		};
+	};
+};
+
+&cci_i2c0 {
+	camera@10 {
+		compatible = "ovti,ov8856";
+		reg = <0x10>;
+
+		// CAM0_RST_N
+		reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&cam0_default>;
+		gpios = <&tlmm 13 0>,
+			<&tlmm 9 GPIO_ACTIVE_LOW>;
+
+		clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
+		clock-names = "xvclk";
+		clock-frequency = <19200000>;
+
+		/* The &vreg_s4a_1p8 trace is powered on as a,
+		 * so it is represented by a fixed regulator.
+		 *
+		 * The 2.8V vdda-supply and 1.2V vddd-supply regulators
+		 * both have to be enabled through the power management
+		 * gpios.
+		 */
+		power-domains = <&clock_camcc TITAN_TOP_GDSC>;
+
+		dovdd-supply = <&vreg_lvs1a_1p8>;
+		avdd-supply = <&cam0_avdd_2v8>;
+		dvdd-supply = <&cam0_dvdd_1v2>;
+
+		status = "ok";
+
+		port {
+			ov8856_ep: endpoint {
+				link-frequencies = /bits/ 64
+					<360000000 180000000>;
+				data-lanes = <1 2 3 4>;
+				remote-endpoint = <&csiphy0_ep>;
+			};
+		};
+	};
+};
+
+&cci_i2c1 {
+	camera@60 {
+		compatible = "ovti,ov7251";
+
+		// I2C address as per ov7251.txt linux documentation
+		reg = <0x60>;
+
+		// CAM3_RST_N
+		enable-gpios = <&tlmm 21 0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&cam3_default>;
+		gpios = <&tlmm 16 0>,
+			<&tlmm 21 0>;
+
+		clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
+		clock-names = "xclk";
+		clock-frequency = <24000000>;
+
+		/* The &vreg_s4a_1p8 trace always powered on.
+		 *
+		 * The 2.8V vdda-supply regulator is enabled when the
+		 * vreg_s4a_1p8 trace is pulled high.
+		 * It too is represented by a fixed regulator.
+		 *
+		 * No 1.2V vddd-supply regulator is used.
+		 */
+		power-domains = <&clock_camcc TITAN_TOP_GDSC>;
+
+		vdddo-supply = <&vreg_lvs1a_1p8>;
+		vdda-supply = <&cam3_avdd_2v8>;
+
+		status = "disable";
+
+		port {
+			ov7251_ep: endpoint {
+				data-lanes = <0 1>;
+//				remote-endpoint = <&csiphy3_ep>;
+			};
+		};
+	};
+};
+
diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
index 194ebeb3259c..faf1e9c7f24b 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
@@ -1139,112 +1139,6 @@ &pm8998_gpio {
 
 };
 
-&cci {
-	status = "okay";
-};
-
-&camss {
-	vdda-supply = <&vreg_l1a_0p875>;
-
-	status = "ok";
-
-	ports {
-		#address-cells = <1>;
-		#size-cells = <0>;
-		port@0 {
-			reg = <0>;
-			csiphy0_ep: endpoint {
-				data-lanes = <0 1 2 3>;
-				remote-endpoint = <&ov8856_ep>;
-			};
-		};
-	};
-};
-
-&cci_i2c0 {
-	camera@10 {
-		compatible = "ovti,ov8856";
-		reg = <0x10>;
-
-		// CAM0_RST_N
-		reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
-		pinctrl-names = "default";
-		pinctrl-0 = <&cam0_default>;
-		gpios = <&tlmm 13 0>,
-			<&tlmm 9 GPIO_ACTIVE_LOW>;
-
-		clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
-		clock-names = "xvclk";
-		clock-frequency = <19200000>;
-
-		/* The &vreg_s4a_1p8 trace is powered on as a,
-		 * so it is represented by a fixed regulator.
-		 *
-		 * The 2.8V vdda-supply and 1.2V vddd-supply regulators
-		 * both have to be enabled through the power management
-		 * gpios.
-		 */
-		power-domains = <&clock_camcc TITAN_TOP_GDSC>;
-
-		dovdd-supply = <&vreg_lvs1a_1p8>;
-		avdd-supply = <&cam0_avdd_2v8>;
-		dvdd-supply = <&cam0_dvdd_1v2>;
-
-		status = "ok";
-
-		port {
-			ov8856_ep: endpoint {
-				link-frequencies = /bits/ 64
-					<360000000 180000000>;
-				data-lanes = <1 2 3 4>;
-				remote-endpoint = <&csiphy0_ep>;
-			};
-		};
-	};
-};
-
-&cci_i2c1 {
-	camera@60 {
-		compatible = "ovti,ov7251";
-
-		// I2C address as per ov7251.txt linux documentation
-		reg = <0x60>;
-
-		// CAM3_RST_N
-		enable-gpios = <&tlmm 21 0>;
-		pinctrl-names = "default";
-		pinctrl-0 = <&cam3_default>;
-		gpios = <&tlmm 16 0>,
-			<&tlmm 21 0>;
-
-		clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
-		clock-names = "xclk";
-		clock-frequency = <24000000>;
-
-		/* The &vreg_s4a_1p8 trace always powered on.
-		 *
-		 * The 2.8V vdda-supply regulator is enabled when the
-		 * vreg_s4a_1p8 trace is pulled high.
-		 * It too is represented by a fixed regulator.
-		 *
-		 * No 1.2V vddd-supply regulator is used.
-		 */
-		power-domains = <&clock_camcc TITAN_TOP_GDSC>;
-
-		vdddo-supply = <&vreg_lvs1a_1p8>;
-		vdda-supply = <&cam3_avdd_2v8>;
-
-		status = "disable";
-
-		port {
-			ov7251_ep: endpoint {
-				data-lanes = <0 1>;
-//				remote-endpoint = <&csiphy3_ep>;
-			};
-		};
-	};
-};
-
 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
 &qup_spi0_default {
 	config {
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine
  2022-06-06 13:20 ` [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine Bryan O'Donoghue
@ 2022-06-06 16:03   ` Dmitry Baryshkov
  2022-06-06 18:36     ` Konrad Dybcio
  0 siblings, 1 reply; 10+ messages in thread
From: Dmitry Baryshkov @ 2022-06-06 16:03 UTC (permalink / raw)
  To: Bryan O'Donoghue, linux-arm-msm, linux-media, mchehab,
	hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy, konrad.dybcio

On 06/06/2022 16:20, Bryan O'Donoghue wrote:
> The Vision Mezzanine for the RB5 ships with an imx517 and ov9282 populated.
> Other sensors and components may be added or stacked with additional
> mezzanines.
> 
> In this drop we enable the Sony imx577 main camera sensor.
> 
> The IMX577 is on CCI1/CSI2 provides 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/Makefile             |  1 +
>   .../dts/qcom/qrb5165-rb5-vision-mezzanine.dts | 68 +++++++++++++++++++
>   arch/arm64/boot/dts/qcom/sm8250.dtsi          | 33 +++++++++
>   3 files changed, 102 insertions(+)
>   create mode 100644 arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
> 
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 2f8aec2cc6db..86e6801a9c29 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -51,6 +51,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-sony-xperia-yoshino-poplar.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-1000.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qcs404-evb-4000.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= qrb5165-rb5.dtb
> +dtb-$(CONFIG_ARCH_QCOM)	+= qrb5165-rb5-vision-mezzanine.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= sa8155p-adp.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= sc7180-idp.dtb
>   dtb-$(CONFIG_ARCH_QCOM)	+= sc7180-trogdor-coachz-r1.dtb
> diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
> new file mode 100644
> index 000000000000..c8bed02243f8
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
> @@ -0,0 +1,68 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2022, Linaro Ltd.
> + */
> +
> +/dts-v1/;
> +
> +#include "qrb5165-rb5.dts"
> +
> +&camcc {
> +	status = "okay";
> +};
> +
> +&camss {
> +	status = "okay";
> +	vdda-phy-supply = <&vreg_l5a_0p88>;
> +	vdda-pll-supply = <&vreg_l9a_1p2>;
> +
> +	ports {
> +		/* 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 {
> +		/*
> +		 * rb5 ships with an imx577. camx code from qcom treats imx412
> +		 * and imx577 the same way. Absent better data do the same here.
> +		 */
> +		compatible = "sony,imx412";

I'd prefer to list "sony,imx577", "sony,imx412" here or even just imx577 
here and extend imx412 driver to support imx577 compat.

> +		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>;
> +
> +		dovdd-supply  = <&vreg_l7f_1p8>;
> +		avdd-supply = <&vdc_5v>;
> +		dvdd-supply = <&vdc_5v>;
> +
> +		port {
> +			imx412_ep: endpoint {

I'd call this the imx577_ep. It's still the imx577 sensor, despite the 
kernel using imx412 compat

> +				clock-lanes = <1>;
> +				link-frequencies = /bits/ 64 <600000000>;
> +				data-lanes = <1 2 3 4>;
> +				remote-endpoint = <&csiphy2_ep>;
> +			};
> +		};
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
> index aa9a13364865..2b65ec2806d0 100644
> --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
> @@ -3788,6 +3788,39 @@ tlmm: pinctrl@f100000 {
>   			gpio-ranges = <&tlmm 0 0 181>;
>   			wakeup-parent = <&pdc>;
>   
> +			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;
> +				};
> +			};
> +
>   			cci0_default: cci0-default {
>   				cci0_i2c0_default: cci0-i2c0-default {
>   					/* SDA, SCL */


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine
  2022-06-06 16:03   ` Dmitry Baryshkov
@ 2022-06-06 18:36     ` Konrad Dybcio
  2022-06-06 19:01       ` Andrey Konovalov
  0 siblings, 1 reply; 10+ messages in thread
From: Konrad Dybcio @ 2022-06-06 18:36 UTC (permalink / raw)
  To: Dmitry Baryshkov, Bryan O'Donoghue, linux-arm-msm,
	linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, andrey.konovalov, todor.too, agross, bjorn.andersson,
	jgrahsl, hfink, vladimir.zapolskiy


On 06/06/2022 18:03, Dmitry Baryshkov wrote:
> On 06/06/2022 16:20, Bryan O'Donoghue wrote:
>> The Vision Mezzanine for the RB5 ships with an imx517 and ov9282 
>> populated.
>> Other sensors and components may be added or stacked with additional
>> mezzanines.
>>
>> In this drop we enable the Sony imx577 main camera sensor.
>>
>> The IMX577 is on CCI1/CSI2 provides 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/Makefile             |  1 +
>>   .../dts/qcom/qrb5165-rb5-vision-mezzanine.dts | 68 +++++++++++++++++++
>>   arch/arm64/boot/dts/qcom/sm8250.dtsi          | 33 +++++++++
>>   3 files changed, 102 insertions(+)
>>   create mode 100644 
>> arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
>>
>> diff --git a/arch/arm64/boot/dts/qcom/Makefile 
>> b/arch/arm64/boot/dts/qcom/Makefile
>> index 2f8aec2cc6db..86e6801a9c29 100644
>> --- a/arch/arm64/boot/dts/qcom/Makefile
>> +++ b/arch/arm64/boot/dts/qcom/Makefile
>> @@ -51,6 +51,7 @@ dtb-$(CONFIG_ARCH_QCOM)    += 
>> msm8998-sony-xperia-yoshino-poplar.dtb
>>   dtb-$(CONFIG_ARCH_QCOM)    += qcs404-evb-1000.dtb
>>   dtb-$(CONFIG_ARCH_QCOM)    += qcs404-evb-4000.dtb
>>   dtb-$(CONFIG_ARCH_QCOM)    += qrb5165-rb5.dtb
>> +dtb-$(CONFIG_ARCH_QCOM)    += qrb5165-rb5-vision-mezzanine.dtb
>>   dtb-$(CONFIG_ARCH_QCOM)    += sa8155p-adp.dtb
>>   dtb-$(CONFIG_ARCH_QCOM)    += sc7180-idp.dtb
>>   dtb-$(CONFIG_ARCH_QCOM)    += sc7180-trogdor-coachz-r1.dtb
>> diff --git 
>> a/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts 
>> b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
>> new file mode 100644
>> index 000000000000..c8bed02243f8
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
>> @@ -0,0 +1,68 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +/*
>> + * Copyright (c) 2022, Linaro Ltd.
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include "qrb5165-rb5.dts"
>> +
>> +&camcc {
>> +    status = "okay";
>> +};
>> +
>> +&camss {
>> +    status = "okay";
>> +    vdda-phy-supply = <&vreg_l5a_0p88>;
>> +    vdda-pll-supply = <&vreg_l9a_1p2>;
>> +
>> +    ports {
>> +        /* 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 {
>> +        /*
>> +         * rb5 ships with an imx577. camx code from qcom treats imx412
>> +         * and imx577 the same way. Absent better data do the same 
>> here.
>> +         */
>> +        compatible = "sony,imx412";
>
> I'd prefer to list "sony,imx577", "sony,imx412" here or even just 
> imx577 here and extend imx412 driver to support imx577 compat.

I like this approach as well. Even if they technically *should* be the 
same, this would allow for introducing per-sensor quirks should there be 
any.


Konrad

>
>> +        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>;
>> +
>> +        dovdd-supply  = <&vreg_l7f_1p8>;
>> +        avdd-supply = <&vdc_5v>;
>> +        dvdd-supply = <&vdc_5v>;
>> +
>> +        port {
>> +            imx412_ep: endpoint {
>
> I'd call this the imx577_ep. It's still the imx577 sensor, despite the 
> kernel using imx412 compat
>
>> +                clock-lanes = <1>;
>> +                link-frequencies = /bits/ 64 <600000000>;
>> +                data-lanes = <1 2 3 4>;
>> +                remote-endpoint = <&csiphy2_ep>;
>> +            };
>> +        };
>> +    };
>> +};
>> diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi 
>> b/arch/arm64/boot/dts/qcom/sm8250.dtsi
>> index aa9a13364865..2b65ec2806d0 100644
>> --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
>> +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
>> @@ -3788,6 +3788,39 @@ tlmm: pinctrl@f100000 {
>>               gpio-ranges = <&tlmm 0 0 181>;
>>               wakeup-parent = <&pdc>;
>>   +            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;
>> +                };
>> +            };
>> +
>>               cci0_default: cci0-default {
>>                   cci0_i2c0_default: cci0-i2c0-default {
>>                       /* SDA, SCL */
>
>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine
  2022-06-06 18:36     ` Konrad Dybcio
@ 2022-06-06 19:01       ` Andrey Konovalov
  0 siblings, 0 replies; 10+ messages in thread
From: Andrey Konovalov @ 2022-06-06 19:01 UTC (permalink / raw)
  To: Konrad Dybcio, Dmitry Baryshkov, Bryan O'Donoghue,
	linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss
  Cc: jonathan, todor.too, agross, bjorn.andersson, jgrahsl, hfink,
	vladimir.zapolskiy

On 6/6/22 21:36, Konrad Dybcio wrote:
> 
> On 06/06/2022 18:03, Dmitry Baryshkov wrote:
>> On 06/06/2022 16:20, Bryan O'Donoghue wrote:
>>> The Vision Mezzanine for the RB5 ships with an imx517 and ov9282 populated.
>>> Other sensors and components may be added or stacked with additional
>>> mezzanines.
>>>
>>> In this drop we enable the Sony imx577 main camera sensor.
>>>
>>> The IMX577 is on CCI1/CSI2 provides 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/Makefile             |  1 +
>>>   .../dts/qcom/qrb5165-rb5-vision-mezzanine.dts | 68 +++++++++++++++++++
>>>   arch/arm64/boot/dts/qcom/sm8250.dtsi          | 33 +++++++++
>>>   3 files changed, 102 insertions(+)
>>>   create mode 100644 arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
>>>
>>> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
>>> index 2f8aec2cc6db..86e6801a9c29 100644
>>> --- a/arch/arm64/boot/dts/qcom/Makefile
>>> +++ b/arch/arm64/boot/dts/qcom/Makefile
>>> @@ -51,6 +51,7 @@ dtb-$(CONFIG_ARCH_QCOM)    += msm8998-sony-xperia-yoshino-poplar.dtb
>>>   dtb-$(CONFIG_ARCH_QCOM)    += qcs404-evb-1000.dtb
>>>   dtb-$(CONFIG_ARCH_QCOM)    += qcs404-evb-4000.dtb
>>>   dtb-$(CONFIG_ARCH_QCOM)    += qrb5165-rb5.dtb
>>> +dtb-$(CONFIG_ARCH_QCOM)    += qrb5165-rb5-vision-mezzanine.dtb
>>>   dtb-$(CONFIG_ARCH_QCOM)    += sa8155p-adp.dtb
>>>   dtb-$(CONFIG_ARCH_QCOM)    += sc7180-idp.dtb
>>>   dtb-$(CONFIG_ARCH_QCOM)    += sc7180-trogdor-coachz-r1.dtb
>>> diff --git a/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts 
>>> b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
>>> new file mode 100644
>>> index 000000000000..c8bed02243f8
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/qcom/qrb5165-rb5-vision-mezzanine.dts
>>> @@ -0,0 +1,68 @@
>>> +// SPDX-License-Identifier: BSD-3-Clause
>>> +/*
>>> + * Copyright (c) 2022, Linaro Ltd.
>>> + */
>>> +
>>> +/dts-v1/;
>>> +
>>> +#include "qrb5165-rb5.dts"
>>> +
>>> +&camcc {
>>> +    status = "okay";
>>> +};
>>> +
>>> +&camss {
>>> +    status = "okay";
>>> +    vdda-phy-supply = <&vreg_l5a_0p88>;
>>> +    vdda-pll-supply = <&vreg_l9a_1p2>;
>>> +
>>> +    ports {
>>> +        /* 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 {
>>> +        /*
>>> +         * rb5 ships with an imx577. camx code from qcom treats imx412
>>> +         * and imx577 the same way. Absent better data do the same here.
>>> +         */
>>> +        compatible = "sony,imx412";
>>
>> I'd prefer to list "sony,imx577", "sony,imx412" here or even just imx577 here and extend imx412 driver to support imx577 compat.
> 
> I like this approach as well. Even if they technically *should* be the same, this would allow for introducing per-sensor quirks 
> should there be any.

Also having "sony,imx577", "sony,imx412" in the driver code makes it easier for imx577 users to identify the driver that 
supports their sensor. So the "just imx577 here and extend imx412 driver" looks like the best option for me too.

Thanks,
Andrey

> Konrad
> 
>>
>>> +        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>;
>>> +
>>> +        dovdd-supply  = <&vreg_l7f_1p8>;
>>> +        avdd-supply = <&vdc_5v>;
>>> +        dvdd-supply = <&vdc_5v>;
>>> +
>>> +        port {
>>> +            imx412_ep: endpoint {
>>
>> I'd call this the imx577_ep. It's still the imx577 sensor, despite the kernel using imx412 compat
>>
>>> +                clock-lanes = <1>;
>>> +                link-frequencies = /bits/ 64 <600000000>;
>>> +                data-lanes = <1 2 3 4>;
>>> +                remote-endpoint = <&csiphy2_ep>;
>>> +            };
>>> +        };
>>> +    };
>>> +};
>>> diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
>>> index aa9a13364865..2b65ec2806d0 100644
>>> --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
>>> +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
>>> @@ -3788,6 +3788,39 @@ tlmm: pinctrl@f100000 {
>>>               gpio-ranges = <&tlmm 0 0 181>;
>>>               wakeup-parent = <&pdc>;
>>>   +            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;
>>> +                };
>>> +            };
>>> +
>>>               cci0_default: cci0-default {
>>>                   cci0_i2c0_default: cci0-i2c0-default {
>>>                       /* SDA, SCL */
>>
>>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 3/5] arm64: dts: qcom: sm8250: camss: Define ports address/size cells
  2022-06-06 13:20 ` [PATCH v3 3/5] arm64: dts: qcom: sm8250: camss: Define ports address/size cells Bryan O'Donoghue
@ 2022-07-01  3:10   ` Bjorn Andersson
  0 siblings, 0 replies; 10+ messages in thread
From: Bjorn Andersson @ 2022-07-01  3:10 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: linux-arm-msm, linux-media, mchehab, hverkuil, robert.foss,
	jonathan, andrey.konovalov, todor.too, agross, jgrahsl, hfink,
	vladimir.zapolskiy, dmitry.baryshkov, konrad.dybcio

On Mon 06 Jun 08:20 CDT 2022, Bryan O'Donoghue wrote:

> The ports {} address and size cells definition is the same for every
> derived 8250 board so, we should define it in the core sm8250.dtsi.
> 
> Suggested-by: Konrad Dybcio <konrad.dybcio@somainline.org>
> Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/sm8250.dtsi | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
> index 2bc11cad3a44..aa9a13364865 100644
> --- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
> +++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
> @@ -3395,6 +3395,11 @@ camss: camss@ac6a000 {
>  					     "cam_hf_0_mnoc",
>  					     "cam_sf_0_mnoc",
>  					     "cam_sf_icp_mnoc";
> +
> +			ports {
> +				#address-cells = <1>;
> +				#size-cells = <0>;

Adding these without subnodes that make use of them will cause
dtbs_check to complain.

So although it would save a little bit of duplication, let's add them
when/where it's needed.

Regards,
Bjorn

> +			};
>  		};
>  
>  		camcc: clock-controller@ad00000 {
> -- 
> 2.36.1
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-07-01  3:11 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-06 13:20 [PATCH v3 0/5] CAMSS updates for rb3 and rb5 Bryan O'Donoghue
2022-06-06 13:20 ` [PATCH v3 1/5] i2c: qcom-cci: Fix ordering of pm_runtime_xx and i2c_add_adapter Bryan O'Donoghue
2022-06-06 13:20 ` [PATCH v3 2/5] arm64: dts: qcom: sm8250: Disable camcc by default Bryan O'Donoghue
2022-06-06 13:20 ` [PATCH v3 3/5] arm64: dts: qcom: sm8250: camss: Define ports address/size cells Bryan O'Donoghue
2022-07-01  3:10   ` Bjorn Andersson
2022-06-06 13:20 ` [PATCH v3 4/5] arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add vision mezzanine Bryan O'Donoghue
2022-06-06 16:03   ` Dmitry Baryshkov
2022-06-06 18:36     ` Konrad Dybcio
2022-06-06 19:01       ` Andrey Konovalov
2022-06-06 13:20 ` [PATCH v3 5/5] arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Add navigation mezzanine dts Bryan O'Donoghue

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.