mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Aleksandrs Vinarskis <alex@vinarskis.com>
To: Liviu Nicoara <lnicoara@thinkoid.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>
Cc: Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
	Bryan O'Donoghue <bod@kernel.org>,
	Abel Vesa <abelvesa@kernel.org>, Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Abel Vesa <abel.vesa@oss.qualcomm.com>
Subject: Re: [PATCH v3] arm64: dts: qcom: x1e80100-dell-xps13-9345: add the front camera
Date: Sun, 11 Oct 2026 18:28:30 +0000	[thread overview]
Message-ID: <b53444dd-c273-4d92-9502-046978303d47@vinarskis.com> (raw)


On 9/26/26 14:25, Liviu Nicoara wrote:
> Describe the OV02C10 front camera on CCI1 bus 1 at 0x36, fed by MCLK4
> at 19.2 MHz into CSIPHY4 over two D-PHY lanes at 400 MHz, the only
> link frequency the ov02c10 driver offers.
>
> The wiring comes from the Windows driver store. CAMF_RES_QRD.bin
> switches a single rail, GPIO 91, before releasing reset on GPIO 237;
> GPIOs 235 and 236 are muxed to aon_cci there, the CCI1 bus 1 pins, not
> rail enables. No camera resource file votes a PMIC rail for the
> sensor, so avdd and dvdd are left out and fall to dummy regulators.
> The CSI PHY file votes LDO1_C at 1.2 V and LDO2_C at 0.88 V for the
> PHYs, which is vdda-1p2 and vdda-0p9 here, as on the Inspiron 14 Plus.
> MCLK drive strength is 2 mA, as CAMP_RES_QRD.bin programs GPIO 100,
> and tested streaming.
>
> The module sits upside down in the lid: with both sensor flips on, the
> picture is upright and unmirrored, so rotation is 180.
>
> The white camera indicator on GPIO 110 becomes the sensor's privacy LED,
> so the V4L2 core lights it while the sensor streams and takes it away
> from sysfs; the comment waiting for a "camera on" trigger goes, and
> panic-indicator stays, as on the X13s.
>
> Assisted-by: LLM
> Signed-off-by: Liviu Nicoara <lnicoara@thinkoid.org>
> ---

Great to see a follow up!

The initial patch for camera from Laurentiu Tudor that Abel was referring to
was never submitted upstream, as it depends on CAMSS PHY and DT camera
series which are trying to find their way upstream for over a year now.

For reference, it can be found here:
https://gitlab.com/Linaro/arm64-laptops/linux/-/commit/d79e44083197b263ee59dc3521a2b16ad2a12bd8

Either way very nice to see someone following up to have it upstreamed.


> v3: add the Signed-off-by missing from v2; no other change.
>
> v2:
> - Drop the dependency paragraph from the commit message (Abel).
> - Say in the message that panic-indicator stays, as on the X13s.
> No change to the DT.
>
> v2: https://lore.kernel.org/all/20260926122032.4847-1-lnicoara@thinkoid.org/
> v1: https://lore.kernel.org/all/20260925181024.20352-1-lnicoara@thinkoid.org/
>
> Depends on the x1e80100 camera DT series, v7:
> https://lore.kernel.org/all/20260917-x1e-camss-csi2-phy-dtsi-v7-0-1a63eb35838b@linaro.org/
> and on the CAMSS PHY API series, v20 patches 5/6 and 6/6, which read the
> CAMSS endpoint's data-lanes as 1-based:
> https://lore.kernel.org/all/20260918-b4-linux-next-25-03-13-dtsi-x1e80100-camss-v20-0-dc244e124e71@linaro.org/
>
> Built and checked (dtbs_check, W=1) on next-20260925 with the DT series
> applied. Run-tested on 7.2.6 with the same board hunks, the CSI2 PHY
> driver v18, the PHY API series v20 and patches 1-4 of the DT series:
> the sensor streams at 30 fps through libcamera's software ISP, and the
> privacy LED lights while it streams and goes out after.
>
> Bryan, happy for you to fold this into your next version of the DT
> series if that is easier.
>
>   .../dts/qcom/x1e80100-dell-xps13-9345.dts     | 120 +++++++++++++++++-
>   1 file changed, 118 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
> index ad62350ba670..73f06fdcd138 100644
> --- a/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
> +++ b/arch/arm64/boot/dts/qcom/x1e80100-dell-xps13-9345.dts
> @@ -10,6 +10,8 @@
>   #include <dt-bindings/input/gpio-keys.h>
>   #include <dt-bindings/input/input.h>
>   #include <dt-bindings/leds/common.h>
> +#include <dt-bindings/media/video-interfaces.h>
> +#include <dt-bindings/media/video-interface-devices.h>
>   #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>   
>   #include "hamoa.dtsi"
> @@ -46,14 +48,13 @@ leds {
>   		pinctrl-names = "default";
>   		pinctrl-0 = <&cam_indicator_en>;
>   
> -		led-camera-indicator {
> +		privacy_led: led-camera-indicator {
>   			label = "white:camera-indicator";
>   			function = LED_FUNCTION_INDICATOR;
>   			color = <LED_COLOR_ID_WHITE>;
>   			gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
>   			linux,default-trigger = "none";
>   			default-state = "off";
> -			/* Reuse as a panic indicator until we get a "camera on" trigger */
>   			panic-indicator;
>   		};
>   	};
> @@ -151,6 +152,25 @@ linux,cma {
>   		};
>   	};
>   
> +	/*
> +	 * The one rail Windows switches for the front camera
> +	 * (CAMF_RES_QRD.bin: TLMM 91 high before reset release), the 1.8 V
> +	 * LDO enable on the sibling thena boards.
> +	 */

Just an FYI: CAMF_RES_QRD.bin is an AeoB file. Some time ago I made a 
repo to
keep a list of already de-compiled files for other developers to use, 
might come
handy. Here is one for Dell XPS 13 9345' front camera:

https://github.com/alexVinarskis/qcom-aeob-dumps/blob/master/dell-xps-9345/CAMF_RES_QRD.json#L245-L257

IMO this comment can be dropped.

> +	vreg_cam_1p8: regulator-cam-1p8 {
> +		compatible = "regulator-fixed";
> +
> +		regulator-name = "VREG_CAM_1P8";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +
> +		gpio = <&tlmm 91 GPIO_ACTIVE_HIGH>;
> +		enable-active-high;
> +
> +		pinctrl-0 = <&cam_ldo_en>;
> +		pinctrl-names = "default";
> +	};
> +
>   	vreg_edp_3p3: regulator-edp-3p3 {
>   		compatible = "regulator-fixed";
>   
> @@ -674,6 +694,78 @@ vreg_l3j_0p8: ldo3 {
>   	};
>   };
>   
> +&camss {
> +	status = "okay";
> +};
> +
> +&camss_csiphy4_in_port {
> +	camss_csiphy4_inep: endpoint {
> +		data-lanes = <1 2>;
> +		remote-endpoint = <&csiphy4_out_ep>;
> +	};
> +};
> +
> +&cci1 {
> +	status = "okay";
> +};
> +
> +&cci1_i2c1 {
> +	camera@36 {
> +		compatible = "ovti,ov02c10";
> +		reg = <0x36>;
> +
> +		reset-gpios = <&tlmm 237 GPIO_ACTIVE_LOW>;
> +		pinctrl-0 = <&cam_rgb_default>;
> +		pinctrl-names = "default";
> +
> +		clocks = <&camcc CAM_CC_MCLK4_CLK>;
> +		assigned-clocks = <&camcc CAM_CC_MCLK4_CLK>;
> +		assigned-clock-rates = <19200000>;
> +
> +		orientation = <MEDIA_ORIENTATION_FRONT>;
> +		/* upside down in the lid; both sensor flips give an upright, unmirrored image */
> +		rotation = <180>;
> +
> +		leds = <&privacy_led>;
> +		led-names = "privacy";
> +
> +		/*
> +		 * Windows switches no rail for avdd or dvdd, only GPIO 91; they
> +		 * are left to dummy regulators rather than invented.
> +		 */
> +		dovdd-supply = <&vreg_cam_1p8>;

Windows may only be switching one rail, however there in fact a 2v8 rail 
provided by LDO 7B.
You can find it in:
* Tudor's patch linked above
* Device's schematics

I would recommend to add it.

Regards,
Alex

> +
> +		port {
> +			ov02c10_ep: endpoint {
> +				data-lanes = <1 2>;
> +				link-frequencies = /bits/ 64 <400000000>;
> +				remote-endpoint = <&csiphy4_in_ep>;
> +			};
> +		};
> +	};
> +};
> +
> +&csiphy4 {
> +	vdda-0p9-supply = <&vreg_l2c_0p8>;
> +	vdda-1p2-supply = <&vreg_l1c_1p2>;
> +
> +	status = "okay";
> +};
> +
> +&csiphy4_in_port {
> +	csiphy4_in_ep: endpoint {
> +		bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
> +		data-lanes = <1 2>;
> +		remote-endpoint = <&ov02c10_ep>;
> +	};
> +};
> +
> +&csiphy4_out_port {
> +	csiphy4_out_ep: endpoint {
> +		remote-endpoint = <&camss_csiphy4_inep>;
> +	};
> +};
> +
>   &gpu {
>   	status = "okay";
>   };
> @@ -1102,6 +1194,30 @@ cam_indicator_en: cam-indicator-en-state {
>   		bias-disable;
>   	};
>   
> +	cam_ldo_en: cam-ldo-en-state {
> +		pins = "gpio91";
> +		function = "gpio";
> +		drive-strength = <2>;
> +		bias-disable;
> +	};
> +
> +	cam_rgb_default: cam-rgb-default-state {
> +		/* 2 mA streams; the sibling X1E boards use 16 */
> +		mclk-pins {
> +			pins = "gpio100";
> +			function = "cam_aon";
> +			drive-strength = <2>;
> +			bias-disable;
> +		};
> +
> +		reset-n-pins {
> +			pins = "gpio237";
> +			function = "gpio";
> +			drive-strength = <2>;
> +			bias-disable;
> +		};
> +	};
> +
>   	edp_bl_en: edp-bl-en-state {
>   		pins = "gpio74";
>   		function = "gpio";
>
> base-commit: f5f84daefcd92d7a630066635ecea1433ed5eac7
> prerequisite-patch-id: a7fbea14628b62a8de096dea420473b283010aba
> prerequisite-patch-id: 270d82b4c1760f1ec0a64a1b56c68ce26e6ae3b1
> prerequisite-patch-id: a12186bafac9b287c19fd719aeceb8ff1372dfbf
> prerequisite-patch-id: 4bc923fa59ee4c1ff68e64497f11e937c0ab3918
> prerequisite-patch-id: 4d000086386a3b344b1d6d345ab93d9b2b569615
> prerequisite-patch-id: 8cde6fd860c857dd7f3efce25970c88c783193b3
> prerequisite-patch-id: 1f22ff7fc93d0135e8759d45955bf998b037e11e
> prerequisite-patch-id: edb32e32f2b6be0b93f66d8da460c9f9de0c52e2
> prerequisite-patch-id: 09444936808e801a58c83356c9ae95415bacc83a
> prerequisite-patch-id: 348caa9cd0d1d70f181a47b40e2d75e8b25b5938
> prerequisite-patch-id: 1c4e4c457d8f95d8f5aaa2d93976c374b8282bf0
> prerequisite-patch-id: deedbed2643ca8a0f26bd87175d787d2f0c87417


             reply	other threads:[~2026-10-11 18:28 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-11 18:28 Aleksandrs Vinarskis [this message]
2026-10-11 18:42 ` Liviu Nicoara
2026-10-11 19:11   ` Aleksandrs Vinarskis
     [not found] <lVcrN5rxxI350G3UvKPxz-LATSmD1JKgO-AkmVL2XN3K_Hz2FCdk08a1btk7OPFln3a8gByLKKqg7vRtZlvUdg==@protonmail.internalid>
2026-09-26 12:25 ` Liviu Nicoara
2026-09-26 14:38   ` Bryan O'Donoghue
2026-09-29 13:14   ` Abel Vesa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b53444dd-c273-4d92-9502-046978303d47@vinarskis.com \
    --to=alex@vinarskis.com \
    --cc=abel.vesa@oss.qualcomm.com \
    --cc=abelvesa@kernel.org \
    --cc=andersson@kernel.org \
    --cc=bod@kernel.org \
    --cc=bryan.odonoghue@linaro.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=konradybcio@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lnicoara@thinkoid.org \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®