Devicetree
 help / color / mirror / Atom feed
* [PATCH] arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors
@ 2026-10-01 14:52 Vladimir Zapolskiy
  2026-10-01 15:06 ` sashiko-bot
  2026-10-02  9:25 ` Abel Vesa
  0 siblings, 2 replies; 3+ messages in thread
From: Vladimir Zapolskiy @ 2026-10-01 14:52 UTC (permalink / raw)
  To: Bjorn Andersson, Konrad Dybcio
  Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Neil Armstrong,
	linux-arm-msm, devicetree

Add initial support of camera sensors on Valve "Steam Frame" device.

The change enables CAMSS and adds description of
- a pair of OmniVision OV6211 monochrome eyetracking camera sensors,
- a pair of OmniVision OG01A1B monochrome front camera sensors.

There is another pair of OmniVision OG0VE10 camera sensors found on
the device, its description requires a combo mode feature support in
the SM8650 CAMSS CSIPHY driver.

Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
---
 .../boot/dts/qcom/sm8650-valve-deckard.dts    | 203 ++++++++++++++++++
 1 file changed, 203 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts b/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts
index d25a09e162dd..3b2503c3c541 100644
--- a/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts
+++ b/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts
@@ -95,6 +95,66 @@ vph_pwr: regulator-vph-pwr {
 		regulator-boot-on;
 	};
 
+	vreg_cam_eyetracking_1p8: regulator-cam-eyetracking {
+		compatible = "regulator-fixed";
+		regulator-name = "cam_eyetracking_1p8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpio = <&tlmm 74 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		vin-supply = <&vreg_l5m_1p8>;
+	};
+
+	vreg_cam_front_left_1p2: regulator-cam-front-left-1p2 {
+		compatible = "regulator-fixed";
+		regulator-name = "cam_front_left_1p2";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <1200000>;
+
+		gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		vin-supply = <&vreg_l2n_1p2>;
+	};
+
+	vreg_cam_front_left_1p8: regulator-cam-front-left-1p8 {
+		compatible = "regulator-fixed";
+		regulator-name = "cam_front_left_1p8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		vin-supply = <&vreg_l5n_1p8>;
+	};
+
+	vreg_cam_front_right_1p2: regulator-cam-front-right-1p2 {
+		compatible = "regulator-fixed";
+		regulator-name = "cam_front_right_1p2";
+		regulator-min-microvolt = <1200000>;
+		regulator-max-microvolt = <1200000>;
+
+		gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		vin-supply = <&vreg_l2m_1p2>;
+	};
+
+	vreg_cam_front_right_1p8: regulator-cam-front-right-1p8 {
+		compatible = "regulator-fixed";
+		regulator-name = "cam_front_right_1p8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+
+		gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		vin-supply = <&vreg_l5m_1p8>;
+	};
+
 	reserved-memory {
 		#address-cells = <2>;
 		#size-cells = <2>;
@@ -675,6 +735,149 @@ vreg_l6n_2p8: ldo6 {
 	};
 };
 
+&camss {
+	vdd-csiphy01-0p9-supply = <&vreg_l2i_0p88>;
+	vdd-csiphy01-1p2-supply = <&vreg_l3i_1p2>;
+	vdd-csiphy24-0p9-supply = <&vreg_l2i_0p88>;
+	vdd-csiphy24-1p2-supply = <&vreg_l3i_1p2>;
+
+	status = "okay";
+
+	ports {
+		port@0 {
+			csiphy0_ep: endpoint {
+				data-lanes = <0 1>;
+				remote-endpoint = <&cam_front_left>;
+			};
+		};
+
+		port@1 {
+			csiphy1_ep: endpoint {
+				data-lanes = <0 1>;
+				remote-endpoint = <&cam_front_right>;
+			};
+		};
+
+		port@2 {
+			csiphy2_ep: endpoint {
+				data-lanes = <0>;
+				remote-endpoint = <&cam_eyetracking_left>;
+			};
+		};
+
+		port@4 {
+			csiphy4_ep: endpoint {
+				data-lanes = <0>;
+				remote-endpoint = <&cam_eyetracking_right>;
+			};
+		};
+	};
+};
+
+&cci0 {
+	status = "okay";
+};
+
+&cci0_i2c1 {
+	sensor@60 {
+		compatible = "ovti,ov6211";
+		reg = <0x60>;
+		clocks = <&camcc CAM_CC_MCLK4_CLK>;
+		assigned-clocks = <&camcc CAM_CC_MCLK4_CLK>;
+		assigned-clock-rates = <24000000>;
+		pinctrl-0 = <&cam4_default>, <&cam4_sleep>;
+		pinctrl-names = "default", "sleep";
+		reset-gpios = <&tlmm 195 GPIO_ACTIVE_LOW>;
+		avdd-supply = <&vreg_l6n_2p8>;
+		dovdd-supply = <&vreg_cam_eyetracking_1p8>;
+		dvdd-supply = <&vreg_l1n_1p1>;
+
+		port {
+			cam_eyetracking_left: endpoint {
+				link-frequencies = /bits/ 64 <480000000>;
+				remote-endpoint = <&csiphy2_ep>;
+			};
+		};
+	};
+};
+
+&cci1 {
+	status = "okay";
+};
+
+&cci1_i2c0 {
+	sensor@60 {
+		compatible = "ovti,ov6211";
+		reg = <0x60>;
+		clocks = <&camcc CAM_CC_MCLK2_CLK>;
+		assigned-clocks = <&camcc CAM_CC_MCLK2_CLK>;
+		assigned-clock-rates = <24000000>;
+		pinctrl-0 = <&cam2_default>, <&cam2_sleep>;
+		pinctrl-names = "default", "sleep";
+		reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>;
+		avdd-supply = <&vreg_l6m_2p8>;
+		dovdd-supply = <&vreg_cam_eyetracking_1p8>;
+		dvdd-supply = <&vreg_l1m_1p1>;
+
+		port {
+			cam_eyetracking_right: endpoint {
+				link-frequencies = /bits/ 64 <480000000>;
+				remote-endpoint = <&csiphy4_ep>;
+			};
+		};
+	};
+};
+
+&cci2 {
+	status = "okay";
+};
+
+&cci2_i2c0 {
+	sensor@36 {
+		compatible = "ovti,og01a1b";
+		reg = <0x36>;
+		clocks = <&camcc CAM_CC_MCLK0_CLK>;
+		assigned-clocks = <&camcc CAM_CC_MCLK0_CLK>;
+		assigned-clock-rates = <19200000>;
+		reset-gpios = <&pm8550vs_e_gpios 4 GPIO_ACTIVE_LOW>;
+		pinctrl-0 = <&cam0_default>, <&cam0_sleep>;
+		pinctrl-names = "default", "sleep";
+		avdd-supply = <&vreg_l3m_2p8>;
+		dovdd-supply = <&vreg_cam_front_right_1p8>;
+		dvdd-supply = <&vreg_cam_front_right_1p2>;
+
+		port {
+			cam_front_right: endpoint {
+				data-lanes = <0 1>;
+				link-frequencies = /bits/ 64 <500000000>;
+				remote-endpoint = <&csiphy1_ep>;
+			};
+		};
+	};
+
+	sensor@60 {
+		compatible = "ovti,og01a1b";
+		reg = <0x60>;
+		clocks = <&camcc CAM_CC_MCLK1_CLK>;
+		assigned-clocks = <&camcc CAM_CC_MCLK1_CLK>;
+		assigned-clock-rates = <19200000>;
+		reset-gpios = <&pm8550vs_e_gpios 6 GPIO_ACTIVE_LOW>;
+		pinctrl-0 = <&cam1_default>, <&cam1_sleep>;
+		pinctrl-names = "default", "sleep";
+		avdd-supply = <&vreg_l3n_2p8>;
+		dovdd-supply = <&vreg_cam_front_left_1p8>;
+		dvdd-supply = <&vreg_cam_front_left_1p2>;
+
+		port {
+			cam_front_left: endpoint {
+				data-lanes = <0 1>;
+				link-frequencies = /bits/ 64 <500000000>;
+				remote-endpoint = <&csiphy0_ep>;
+			};
+		};
+	};
+};
+
 &dispcc {
 	status = "disabled";
 };
-- 
2.53.0


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

* Re: [PATCH] arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors
  2026-10-01 14:52 [PATCH] arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors Vladimir Zapolskiy
@ 2026-10-01 15:06 ` sashiko-bot
  2026-10-02  9:25 ` Abel Vesa
  1 sibling, 0 replies; 3+ messages in thread
From: sashiko-bot @ 2026-10-01 15:06 UTC (permalink / raw)
  To: Vladimir Zapolskiy; +Cc: robh, conor+dt, devicetree

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] dt: pinctrl states grouped incorrectly under pinctrl-0
- [High] dt: out-of-bounds reset-gpios index for og01a1b sensor
- [Medium] dt: invalid data-lanes enum value for og01a1b sensor
--

commit 80cdd7bb4552bb56ef59eb14b62e12c079117298
Author: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>

arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors

This commit adds initial device tree support for camera sensors on the Valve
Steam Frame device. It enables CAMSS and adds descriptions for pairs of
OmniVision OV6211 and OG01A1B monochrome sensors.

> diff --git a/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts b/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts
> index d25a09e162dd3..3b2503c3c5413 100644
> --- a/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts
> +++ b/arch/arm64/boot/dts/qcom/sm8650-valve-deckard.dts

[ ... ]

> +&cci0_i2c1 {
> +	sensor@60 {
> +		compatible = "ovti,ov6211";
> +		reg = <0x60>;
> +		clocks = <&camcc CAM_CC_MCLK4_CLK>;
> +		assigned-clocks = <&camcc CAM_CC_MCLK4_CLK>;
> +		assigned-clock-rates = <24000000>;
> +		pinctrl-0 = <&cam4_default>, <&cam4_sleep>;
> +		pinctrl-names = "default", "sleep";

[Severity: High]
Does this correctly map the sleep state for the camera pins?

Assigning both the default and sleep state phandles to pinctrl-0 while
defining pinctrl-names as "default", "sleep" breaks pin control behavior.
The pinctrl subsystem expects index 1 to map to pinctrl-1.

Due to this misconfiguration, the kernel may mistakenly apply both default and
sleep states sequentially when setting the default state, leaving the pins in
the sleep configuration. Furthermore, it will fail to find the required
pinctrl-1 property when attempting to transition to sleep later.

[ ... ]

> +&cci2_i2c0 {
> +	sensor@36 {
> +		compatible = "ovti,og01a1b";
> +		reg = <0x36>;
> +		clocks = <&camcc CAM_CC_MCLK0_CLK>;
> +		assigned-clocks = <&camcc CAM_CC_MCLK0_CLK>;
> +		assigned-clock-rates = <19200000>;
> +		reset-gpios = <&pm8550vs_e_gpios 4 GPIO_ACTIVE_LOW>;
> +		pinctrl-0 = <&cam0_default>, <&cam0_sleep>;
> +		pinctrl-names = "default", "sleep";

[Severity: High]
Will this experience the same pinctrl mapping issue described above for
the ovti,ov6211 sensor?

> +		avdd-supply = <&vreg_l3m_2p8>;
> +		dovdd-supply = <&vreg_cam_front_right_1p8>;
> +		dvdd-supply = <&vreg_cam_front_right_1p2>;
> +
> +		port {
> +			cam_front_right: endpoint {
> +				data-lanes = <0 1>;

[Severity: Medium]
Is the value <0 1> for data-lanes intentional?

The device tree schema for the ovti,og01a1b sensor only permits the enum
values of 1 and 2. This configuration will lead to a dtbs_check validation
error, and could cause driver configuration issues if the PHY driver strictly
expects 1-based physical lane indexing.

> +				link-frequencies = /bits/ 64 <500000000>;
> +				remote-endpoint = <&csiphy1_ep>;
> +			};
> +		};
> +	};
> +
> +	sensor@60 {
> +		compatible = "ovti,og01a1b";
> +		reg = <0x60>;
> +		clocks = <&camcc CAM_CC_MCLK1_CLK>;
> +		assigned-clocks = <&camcc CAM_CC_MCLK1_CLK>;
> +		assigned-clock-rates = <19200000>;
> +		reset-gpios = <&pm8550vs_e_gpios 6 GPIO_ACTIVE_LOW>;

[Severity: High]
Could this out-of-bounds index cause a probe failure?

The pm8550vs PMIC only supports 6 GPIOs (indices 0 through 5). Referencing
index 6 guarantees an out-of-bounds error during the GPIO lookup, which will
cause the sensor driver to fail to request its reset pin during probe.

> +		pinctrl-0 = <&cam1_default>, <&cam1_sleep>;
> +		pinctrl-names = "default", "sleep";

[Severity: High]
As noted above, shouldn't the sleep state be mapped to pinctrl-1?

> +		avdd-supply = <&vreg_l3n_2p8>;
> +		dovdd-supply = <&vreg_cam_front_left_1p8>;
> +		dvdd-supply = <&vreg_cam_front_left_1p2>;
> +
> +		port {
> +			cam_front_left: endpoint {
> +				data-lanes = <0 1>;

[Severity: Medium]
Does this data-lanes configuration also need to be updated to use 1-based
physical lane indexing to satisfy the ovti,og01a1b schema?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261001145206.2442665-1-vladimir.zapolskiy@linaro.org?part=1

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

* Re: [PATCH] arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors
  2026-10-01 14:52 [PATCH] arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors Vladimir Zapolskiy
  2026-10-01 15:06 ` sashiko-bot
@ 2026-10-02  9:25 ` Abel Vesa
  1 sibling, 0 replies; 3+ messages in thread
From: Abel Vesa @ 2026-10-02  9:25 UTC (permalink / raw)
  To: Vladimir Zapolskiy
  Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Neil Armstrong, linux-arm-msm, devicetree

On 26-10-01 17:52:06, Vladimir Zapolskiy wrote:
> Add initial support of camera sensors on Valve "Steam Frame" device.
> 
> The change enables CAMSS and adds description of
> - a pair of OmniVision OV6211 monochrome eyetracking camera sensors,
> - a pair of OmniVision OG01A1B monochrome front camera sensors.
> 
> There is another pair of OmniVision OG0VE10 camera sensors found on
> the device, its description requires a combo mode feature support in
> the SM8650 CAMSS CSIPHY driver.
> 
> Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>

Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>

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

end of thread, other threads:[~2026-10-02  9:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-01 14:52 [PATCH] arm64: dts: qcom: sm8650-valve-deckard: Add initial support of camera sensors Vladimir Zapolskiy
2026-10-01 15:06 ` sashiko-bot
2026-10-02  9:25 ` Abel Vesa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox