From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D4E4404BDA for ; Wed, 10 Jun 2026 11:11:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781089873; cv=none; b=K1mobQ4QV+JHhOv81sQxnRmo0Yr5FajgyfCdxCDIgwBXuTcwBsBEG7Rh+aRKIEmu6HtRZfUIKtOUXytjRrx91INad0KY7ljJ/0P7EOECKAhVE35OGB/hiYRNZPpwXaAaREYuOHoxVnwfwSxP/kXMSl/MXTuMC4uR7jtA1DVzUEg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781089873; c=relaxed/simple; bh=BQDr02hg8bk8b59H7xT+yIe/Vc7+/qS3L7NVG79dJZk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cAZK5yAFYGfR+eiQq0cA7NE/i6cski5ZYXWl3X6DzTzDPfjopZoNtN7ITacT+FisIqcFJwKZYAziKZ+VdxUNl9/8J1SB0qllUl0EIHO3a5uTGJWSq2Y/3PC4svw5tdha9dgiIYcwl3cyTtnH4+YPrNpyN+XLEDqCTAC1MjZ98og= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Z1RscwSA; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Z1RscwSA" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2bf22d29dabso44217055ad.2 for ; Wed, 10 Jun 2026 04:11:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781089867; x=1781694667; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=58KjIEm+tfUZ6/SnUCwcMgCfLciGELGpkY//C+CJsmc=; b=Z1RscwSAIvqTQbQAReZTdaF05AAd85eTraQ5Q4hartPj2Af+q21cTTyAuqibRdeb/l oAi2rxESCYBZ5XGShRVu36ImtydsQgq/nJHwAkcgoMroHG1IvkbB1uReFs8zzqKE9pId wPy+2Jfdi7h8InRtMs8w+vcfpxs5Fce9ihJ/fEhcQTP02ERgZ9WTcet3qxR0XLuIkYUQ L/+DfTWUeZOPYyJFcF31EjU8eB0ljjUqRn00D8m0/cJ04FQRfoV5ahmtMaY/LeMI4PEt egA52mwNK8baKX/FQp17bsxiRpr9SH5S+FClWptdFzK2iqHkAfm/MTsnRhxcGBVsGF24 qEwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781089867; x=1781694667; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=58KjIEm+tfUZ6/SnUCwcMgCfLciGELGpkY//C+CJsmc=; b=hoNxDgO+EV3pHcOf2jJ3vEO6Z0ICGwNSfy2sFBPhxg9x2T6pxcoPj7d4NLopBYgXJw f4KdilPY5wVAMvNmSuv/vCyPDf8QpGh/j5tY5u8FmOEHjka2XA15QUF9Bps7osolBA0B V+0L1F5BsjIHkJHKTnr27KA77GH+2U0f4WWrY3H7T3xJiByWxQAUOBp7doIXYFWUkXF6 5y4lddwvZS9x+L1xgJ6UQKydZYqPXvl3lp9/WCHAMOaEq2OQlE4oXXmVgxJ7sjtiLiUN cCiwFb2PcxC4ur4P1w8/iLQZI7mPsMck8TIgOokI/7YIUapZ8MxoZM7H3oHhEDzfXF86 ZHyw== X-Forwarded-Encrypted: i=1; AFNElJ8DIrdX5ec4zmklGss7gow3itXgKTVqiaoNbbjWVszlDqZwkJRiAX8ZsPLa6n+N3HxkwvH505qiBqG2ZAI=@vger.kernel.org X-Gm-Message-State: AOJu0YyH70yaienjC3Y/VMShwIEmA8GA88dp4xG5jhH6IcvC3p0ckfQl ZQoZPgSIDxu2RMpi4kVg7VIrXJwp1EeralsUJEjL1vrXRiuiY6ysYQN+ X-Gm-Gg: Acq92OGdAwnd1EXyWQBbchPEbeSuVsExtFjl+queKwB9Qdt69cQ6YnQRG3rIu8akTZx iRioamIfVtMHc9jlS6em0UcnCFKSY2+gYhgemk3bl0kWHQtv/N9MZHZ/JkEFj605QwVLV/Poi75 YPGhrYSBXoxsvSnO8qB8s/It30bEcPq2OTBalk8/6zvkOC7wcUNG2yWsHK0JYOPyV9S34W4Pkyh xI+4OkJZIgHCZoiDVT8x22q+zTt+1987vcAAxKdNrz+r3+8HpTUbYHmJJspk5HH4RJIgoBcqAIQ TurHgOcnBykQhjZhCbBWe+oyU1kf1gaDUn6DrwazBH1691Klmf73cSKGNsIpxcBFEuBljnoxD1C vNbDSeMBtZL4y7cG7Nn38Nsab4KMM/QtOWGbnXQlrjO7zC3XWPZc+rPWSnjlwSUSfqOcuZQZx0w Xa0kfDonMSSXYls+emPfnUt8V4R4tfQvnq0ZUysA== X-Received: by 2002:a17:902:cecc:b0:2c2:9254:4c22 with SMTP id d9443c01a7336-2c2a1c66cbcmr84952005ad.17.1781089867451; Wed, 10 Jun 2026 04:11:07 -0700 (PDT) Received: from [127.0.1.1] ([2409:40f4:4111:52c8:138e:8096:a8df:e68b]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f6d37esm317175205ad.9.2026.06.10.04.10.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 04:11:06 -0700 (PDT) From: Ramshouriesh Date: Wed, 10 Jun 2026 16:39:30 +0530 Subject: [PATCH 5/9] arm64: dts: qcom: x1-asus-zenbook-a14: add HM1092 IR camera and wire cameras to camss Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260610-a14-himax-hm1092-v1-5-0c9907da47ed@gmail.com> References: <20260610-a14-himax-hm1092-v1-0-0c9907da47ed@gmail.com> In-Reply-To: <20260610-a14-himax-hm1092-v1-0-0c9907da47ed@gmail.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mauro Carvalho Chehab , Bryan O'Donoghue , Vladimir Zapolskiy , Loic Poulain , Bryan O'Donoghue , Vinod Koul , Neil Armstrong Cc: Aleksandrs Vinarskis , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, linux-phy@lists.infradead.org, Ramshouriesh X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5785; i=rshouriesh@gmail.com; h=from:subject:message-id; bh=BQDr02hg8bk8b59H7xT+yIe/Vc7+/qS3L7NVG79dJZk=; b=owEBbQKS/ZANAwAKARWVil4RHAXeAcsmYgBqKUYPclse7Xk1U2IV8599YPyXZ1Qn7Qx2T31xb lmTDWgaRkCJAjMEAAEKAB0WIQS/0QuzNKVfvUNlNAkVlYpeERwF3gUCailGDwAKCRAVlYpeERwF 3hI1D/9k344JCUn7kvROvURKzlIeZDMuy0eNOWRzc6bvZJDEwlNi8/6QEaYyeqEHXnKwrq67O3g gy9O9IFbNAJq3KW/6CgzGNIPhfmHaSg9CT3YFCdQiGgOee05na4PlhWE4+GTmePg7LkndgP9vtd IRv29T5+x9rGybFaG7Hjvp66xfwJL+PC5znBRvWtdI0Znkbvh9s2/prR05Zbx2zB5DvIWc71iBe HD1hwAclGTd7mbWidYJrp4OjxlxqcTPvVG4PdkqGy+xP9oDT+UjOmyu6PvP5bAB0kqJJkoyJ9PD W22HglRMS2Fsa/+mGPCp4AmqlkMR63fnPNtzRnZCr83zceS6dIuTXbQOrBTK7p823ukc2oYfauG riTHhePz/kvVA4g8r9bbCXyDQiYxukJ5XzuNPp7YMFR/nV2obIofiEWR1QSjM/GNlQc74Gc8J5o TzR5+SLMOyD0yCi6gOieIZZwr4+aJBN1MmyTMNrHOYkptDcYnJvD+IJUjwNrccXmSCnoap9qet+ UAPu6yClV/LtMjbNb+mpR2dOZio5qr7F6woIeKnSFFRUqGGgiiTE+2CPkG89lfiun65NSSsNzDj G6NdP/PQ0B0qPAjE9bH2YGD9nI5xifpMuGasLWOb2ULPuwZfjoR+6OlT+qxYiA7XlI3y7Mmfk2m vuF/bFiLCUQgfNw== X-Developer-Key: i=rshouriesh@gmail.com; a=openpgp; fpr=BFD10BB334A55FBD4365340915958A5E111C05DE Add the Himax HM1092 mono NIR (Windows-Hello IR) sensor on CSIPHY0, together with its PM8550 IR illuminator and the pm8010 l4m/l7m camera rails, and connect both sensors to the CAMSS input ports defined in hamoa.dtsi. On Purwa CAMSS exposes two CSIPHYs (0 and 4) and the camss input port number selects the CSIPHY by index, so the board wiring is: camss port@0 -> HM1092 (IR, 1 data lane, CSIPHY0) camss port@1 -> OV02C10 (RGB, 2 data lanes, CSIPHY4) Each CSIPHY node carries its sensor's D-PHY lane routing in its own port@0 endpoint, per the qcom,x1e80100-csi2-phy binding: the PHY driver parses data-lanes from that endpoint at probe time, and its remote-endpoint must reference an available device for fwnode_graph_get_endpoint_by_id() to return it, hence each csiphy port@0 points at its sensor. The CAMSS-to-CSIPHY association itself comes from the phys/phy-names properties inherited from hamoa.dtsi. The IR illuminator is a PM8550 flash LED (channel 4) referenced through the generic "leds" consumer property from video-interface-devices.yaml. The HM1092 driver strobes it while streaming (700 mA, re-fired within the 1.28 s hardware safety timeout) so the scene stays lit for IR face-unlock capture. Signed-off-by: Ramshouriesh --- arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi | 140 ++++++++++++++++++++-- 1 file changed, 129 insertions(+), 11 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi b/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi index 388737eaa624..ab8f231cad8d 100644 --- a/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi +++ b/arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi @@ -8,7 +8,6 @@ #include #include #include -#include #include #include @@ -815,6 +814,20 @@ vreg_l3m_1p8: ldo3 { regulator-max-microvolt = <1800000>; regulator-initial-mode = ; }; + + vreg_l4m_1p8: ldo4 { + regulator-name = "vreg_l4m_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = ; + }; + + vreg_l7m_2p9: ldo7 { + regulator-name = "vreg_l7m_2p9"; + regulator-min-microvolt = <2912000>; + regulator-max-microvolt = <2912000>; + regulator-initial-mode = ; + }; }; }; @@ -824,14 +837,19 @@ &camss { ports { /* * port0 => csiphy0 - * port1 => csiphy1 - * port2 => csiphy2 - * port3 => csiphy4 + * port1 => csiphy4 */ - port@3 { - csiphy4_ep: endpoint@4 { - reg = <4>; - clock-lanes = <7>; + port@0 { + camss_csiphy0_inep: endpoint@0 { + reg = <0>; + data-lanes = <0>; + remote-endpoint = <&hm1092_ep>; + }; + }; + + port@1 { + camss_csiphy4_inep: endpoint@0 { + reg = <0>; data-lanes = <0 1>; remote-endpoint = <&ov02c10_ep>; }; @@ -869,18 +887,102 @@ port { ov02c10_ep: endpoint { data-lanes = <1 2>; link-frequencies = /bits/ 64 <400000000>; - remote-endpoint = <&csiphy4_ep>; + remote-endpoint = <&camss_csiphy4_inep>; }; }; }; }; &csiphy4 { - vdda-0p8-supply = <&vreg_l2c_0p8>; + vdda-0p9-supply = <&vreg_l2c_0p8>; + vdda-1p2-supply = <&vreg_l1c_1p2>; + + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* Sensor input: D-PHY lane routing for the OV02C10 */ + port@0 { + reg = <0>; + endpoint { + data-lanes = <0 1>; + remote-endpoint = <&ov02c10_ep>; + }; + }; + }; +}; + +&cci0 { + status = "okay"; +}; + +&cci0_i2c0 { + /* Himax HM1092 mono NIR sensor (Windows-Hello IR camera) on CSIPHY0 */ + camera@24 { + compatible = "himax,hm1092"; + reg = <0x24>; + + reset-gpios = <&tlmm 109 GPIO_ACTIVE_LOW>; + pinctrl-0 = <&cam_ir_default>; + pinctrl-names = "default"; + + clocks = <&camcc CAM_CC_MCLK0_CLK>; + assigned-clocks = <&camcc CAM_CC_MCLK0_CLK>; + assigned-clock-rates = <24000000>; + + orientation = <0>; + + /* PM8550 IR illuminator, pulsed by the driver while streaming */ + leds = <&ir_flash>; + + avdd-supply = <&vreg_l7m_2p9>; + dvdd-supply = <&vreg_l7m_2p9>; + dovdd-supply = <&vreg_l4m_1p8>; + + port { + hm1092_ep: endpoint { + data-lanes = <1>; + link-frequencies = /bits/ 64 <400000000>; + remote-endpoint = <&camss_csiphy0_inep>; + }; + }; + }; +}; + +&csiphy0 { + vdda-0p9-supply = <&vreg_l2c_0p8>; vdda-1p2-supply = <&vreg_l1c_1p2>; - phy-type = ; status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* Sensor input: D-PHY lane routing for the HM1092 */ + port@0 { + reg = <0>; + endpoint { + data-lanes = <0>; + remote-endpoint = <&hm1092_ep>; + }; + }; + }; +}; + +&pm8550_flash { + status = "okay"; + + ir_flash: led-0 { + function = LED_FUNCTION_FLASH; + color = ; + led-sources = <4>; + led-max-microamp = <180000>; + flash-max-microamp = <700000>; + flash-max-timeout-us = <1280000>; + }; }; &i2c0 { @@ -1384,6 +1486,22 @@ reset-n-pins { }; }; + cam_ir_default: cam-ir-default-state { + mclk-pins { + pins = "gpio96"; + function = "cam_mclk"; + drive-strength = <16>; + bias-disable; + }; + + reset-n-pins { + pins = "gpio109"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + }; + edp_reg_en: edp-reg-en-state { pins = "gpio70"; function = "gpio"; -- 2.53.0