mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Bryan O'Donoghue <bod@kernel.org>
To: Liviu Nicoara <lnicoara@thinkoid.org>,
	Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konradybcio@kernel.org>
Cc: Bryan O'Donoghue <bryan.odonoghue@linaro.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: Sat, 26 Sep 2026 15:38:13 +0100	[thread overview]
Message-ID: <6b039399-083f-41ba-b691-f3d5e715ff84@kernel.org> (raw)
In-Reply-To: <20260926122533.8200-1-lnicoara@thinkoid.org>

On 26/09/2026 13: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>
> ---
> 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.
> +	 */
> +	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>;
> +
> +		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
> --
> 2.55.0
> 
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>

      reply	other threads:[~2026-09-26 14:38 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <lVcrN5rxxI350G3UvKPxz-LATSmD1JKgO-AkmVL2XN3K_Hz2FCdk08a1btk7OPFln3a8gByLKKqg7vRtZlvUdg==@protonmail.internalid>
2026-09-26 12:25 ` Liviu Nicoara
2026-09-26 14:38   ` Bryan O'Donoghue [this message]

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=6b039399-083f-41ba-b691-f3d5e715ff84@kernel.org \
    --to=bod@kernel.org \
    --cc=abel.vesa@oss.qualcomm.com \
    --cc=abelvesa@kernel.org \
    --cc=andersson@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®