From nobody Sun Oct 5 03:38:55 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 020D4270EC3; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754847492; cv=none; b=haxPIiCaGAxZpsBEJMsUw/n4QrI95gkDEo9/YGJymhR0DG7/RM+xVvSsiSWR3yNfh/CETRW+Ind2fF+dS7xSrvn3moDgictBlDe61adPgI51T6abiGu3ytvY1Tl/2Jm+VM3K4JONwn5nmLUu9veGX6LpAePj6zyU2lp1M1OpFww= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754847492; c=relaxed/simple; bh=sYsTv8ItQfzr2zXGgGZ5IJ5IQootCZp0cn8SJezpjsQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q2R5pv4GmcBsIu3tv732DPfiUdqzXGtjX1mg1PncCnyDeRalzaMpM3NLggjmbCzbB29aACkYg1VCR6+K+31dhj0mnXNCtTtEEyw9dkTlBZGHkJ8FkTbSscCx+HQRx75r4Xh9Yoj4OPL9jVJNA5UpLfoCHfL76Qj0MdyvfsI6AwI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Hc8pJDMN; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Hc8pJDMN" Received: by smtp.kernel.org (Postfix) with ESMTPS id 8F1B6C4CEF0; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754847491; bh=sYsTv8ItQfzr2zXGgGZ5IJ5IQootCZp0cn8SJezpjsQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=Hc8pJDMNYVYW2xulW+GHEmdNxEvMRX4NM0ebHHA8q0a7T2ip5sv9U85hU3sCuJyyI NOoX1moGYOSwMzJWSOD0Pl9TgnLV+lYwKwE4WWqP+BBHhtlOYX0UTB7yJi2yqPNS5X Wra4J5qeIVfFaoQkxNvqP/dA1Zsd7QF+R/Y4eRNqWk+RiWEN/5sNAOMK4z2ouXxIMz gNTUzAveJUxTbAHCrMAIUJ66G9Qu0w/VMXAtgOric/jDsd5ulvQ57XTZhBe5we5gA4 DX4o5ZZCNCUbri/3RhI2X+xMDv8gvPdxGxxN4KFesSHdCmR/bFV0RmfiBDQ+vpWCsa zGmYF/NFSicVg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 80019C87FCF; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) From: Jens Glathe via B4 Relay Date: Sun, 10 Aug 2025 19:37:42 +0200 Subject: [PATCH v10 1/3] dt-bindings: arm: qcom: Add Lenovo TB16 support 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: quoted-printable Message-Id: <20250810-tb16-dt-v10-1-0bfed6d75c69@oldschoolsolutions.biz> References: <20250810-tb16-dt-v10-0-0bfed6d75c69@oldschoolsolutions.biz> In-Reply-To: <20250810-tb16-dt-v10-0-0bfed6d75c69@oldschoolsolutions.biz> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Kaehlcke , Greg Kroah-Hartman Cc: Aleksandrs Vinarskis , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Jens Glathe X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1754847490; l=952; i=jens.glathe@oldschoolsolutions.biz; s=20240919; h=from:subject:message-id; bh=vI3yrrFJdwP0Pb8xCkFG/zKyW2qMJHRig37q9YPCpNw=; b=TY9LW1w2pBjr25Vl14mfztww5qjDugaVv5MD2629SpIHV7bPvrtSrEf8q/HCiyjZkS8E/FzcH G0//12Ad7eJBPxZEdkb6vGU+K/LJySOuMTjinF4/So28wFm1Ax/guFs X-Developer-Key: i=jens.glathe@oldschoolsolutions.biz; a=ed25519; pk=JcRJqJc/y8LsxOlPakALD3juGfOKmFBWtO+GfELMJVg= X-Endpoint-Received: by B4 Relay for jens.glathe@oldschoolsolutions.biz/20240919 with auth_id=216 X-Original-From: Jens Glathe Reply-To: jens.glathe@oldschoolsolutions.biz From: Jens Glathe Document the x1p-42-100/x1-26-100 variants of the Thinkbook 16 G7 QOY. [1]: https://psref.lenovo.com/syspool/Sys/PDF/ThinkBook/ThinkBook_16_G7_QOY= /ThinkBook_16_G7_QOY_Spec.pdf Acked-by: Rob Herring (Arm) Signed-off-by: Jens Glathe --- Documentation/devicetree/bindings/arm/qcom.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentatio= n/devicetree/bindings/arm/qcom.yaml index 47a7b1cb3cac1150bcde8c2e2e23f2db256ab082..4b32dfecdb1a34d985903cf25bf= 51f66b55677eb 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -1168,6 +1168,7 @@ properties: - items: - enum: - asus,zenbook-a14-ux3407qa + - lenovo,thinkbook-16 - qcom,x1p42100-crd - const: qcom,x1p42100 =20 --=20 2.48.1 From nobody Sun Oct 5 03:38:55 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C233272802; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754847492; cv=none; b=msa6nRKrriI1jnM8hrA7j5okv29MksgXJEzqtFo5Jg8/jDPdZO5Llb6UhV2yDfUq9NsMGuuhVrx0R43HPusILt9gGxwSQz9WTbXPuGdLspEUxnbqXHqL3T4fMcyc8hZc7ma4o7oHsS10shO7tjncYbPnjiVuzlasrnTNwxVlloA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754847492; c=relaxed/simple; bh=hSliaqhTVcMgqr1/cO9Z4DSoUMki8UVa5xL53u07jEM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=myWEKiGtvEbVYWDBfuAJWRgjyzJAhhb8XM2EgbLzZYYp3absepdSzoICRgq4Fk/M7RSnjJ6mW+woLcUUtkyD5X58jxP5ZXfeUELGSljd+VOZW2Ig/Rc+XFgeXqPXnDYPyXOBcNCBreQV1E+hViHZgI0XHsdpBqJD9Hs+JvlXwt4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PUZurnAY; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PUZurnAY" Received: by smtp.kernel.org (Postfix) with ESMTPS id 9AA2FC4CEF8; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754847491; bh=hSliaqhTVcMgqr1/cO9Z4DSoUMki8UVa5xL53u07jEM=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=PUZurnAYA+bsECDUFGic/maleosg6ahI8RAzO00W6tbPg3guMMmjpjlyhg4u84pUK ghFawTQg581EWMmbKs5pbHzrSjvaIKta/wnLPFzZQu6RQi1YwyBfK4HTYdEprgV6+2 ZPLORbum1VRgMW/v5SGLUkTAhPiETjAG2bQ89QefbA0YEIkL3iprnMwei9iNOzN7wy BgbUoc0tsqtm25j9yyfQy00WIGM0sNVGglLTKKv7x2uZ6lfP8l7ar1qSk2uYVX9n7r Ki4v0TWFEPSDlP4dNtJhEbr7TBatUzBpYf1dZ3vOj6E9g8K4EwjiEc59yTy/hJX48H YzzCJnJoYbyqg== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8D824CA0EC0; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) From: Jens Glathe via B4 Relay Date: Sun, 10 Aug 2025 19:37:43 +0200 Subject: [PATCH v10 2/3] firmware: qcom: scm: Allow QSEECOM on Lenovo Thinkbook 16 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: quoted-printable Message-Id: <20250810-tb16-dt-v10-2-0bfed6d75c69@oldschoolsolutions.biz> References: <20250810-tb16-dt-v10-0-0bfed6d75c69@oldschoolsolutions.biz> In-Reply-To: <20250810-tb16-dt-v10-0-0bfed6d75c69@oldschoolsolutions.biz> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Kaehlcke , Greg Kroah-Hartman Cc: Aleksandrs Vinarskis , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Jens Glathe , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1754847490; l=938; i=jens.glathe@oldschoolsolutions.biz; s=20240919; h=from:subject:message-id; bh=7SGoP85kjraN4KooKfOtScvDadRwFMii72G5N0C9sT0=; b=l3LdjHzDc9XHZdp9Q3PEJYsYfXhzCzYgUZnujSIrn0o2RoWyQHEaJueodgRtKWSOG3TEDWEQm x+wg3H66p76DEGdAwSEfGeZZVO9utz6DnLlyTUJWNO+UdajvsDPqvV7 X-Developer-Key: i=jens.glathe@oldschoolsolutions.biz; a=ed25519; pk=JcRJqJc/y8LsxOlPakALD3juGfOKmFBWtO+GfELMJVg= X-Endpoint-Received: by B4 Relay for jens.glathe@oldschoolsolutions.biz/20240919 with auth_id=216 X-Original-From: Jens Glathe Reply-To: jens.glathe@oldschoolsolutions.biz From: Jens Glathe Allow particular machine accessing eg. efivars. Reviewed-by: Dmitry Baryshkov Signed-off-by: Jens Glathe --- drivers/firmware/qcom/qcom_scm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_= scm.c index 26cd0458aacd67dcd36f065675e969cea97eb465..0562ad23fb6e36a566741397359= 92b9fbc61f093 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -1999,6 +1999,7 @@ static const struct of_device_id qcom_scm_qseecom_all= owlist[] __maybe_unused =3D { { .compatible =3D "hp,omnibook-x14" }, { .compatible =3D "huawei,gaokun3" }, { .compatible =3D "lenovo,flex-5g" }, + { .compatible =3D "lenovo,thinkbook-16" }, { .compatible =3D "lenovo,thinkpad-t14s" }, { .compatible =3D "lenovo,thinkpad-x13s", }, { .compatible =3D "lenovo,yoga-slim7x" }, --=20 2.48.1 From nobody Sun Oct 5 03:38:55 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A4F22727F0; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754847492; cv=none; b=RLu9cbzFj4kBdcSw0JXI+4elr7lse/piYcVLxOJt0sKIPoBTCptb0SFwAaBCqqJiWq8hlAHxmVRJDN+EUVbr0N5AEWTxyvBEsNExaybtVeU6jhtiAe1wjPPsT0eqiRw63vflgfC0NdfjYIKCwNT2ey4iJgRImQZgah7/P9+FKDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754847492; c=relaxed/simple; bh=Xy0j+CwLfLYkjhsXyLKHUIuRNEYsPp5UcMSX+3Y1XHw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o2isOB8Kz+wplFjlwOenXE6Zp+xyRQu/Hz0pFoiyE3AcTHjpQrny3xBHkEY0mHvHqAdgQd/Uk057nn3nmio98TsK/gwZ1a7pfVXID/RY/OS2zbXXtkWyVHsRzI+cGFbc2O53K1Ov8UbhBZB55/RMPYCnBo0+3q3/c8j21fDyQOE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=snhU5ATe; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="snhU5ATe" Received: by smtp.kernel.org (Postfix) with ESMTPS id A9B1CC4CEFD; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754847491; bh=Xy0j+CwLfLYkjhsXyLKHUIuRNEYsPp5UcMSX+3Y1XHw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=snhU5ATenvU2tszMgPieH7DLwC5d3/fNUwWrDJI0vj9vqAzkJ3ouPsf1oldLxqRRf PnOd6Q6gtbhmfVtloHYo+sVg1gn5N1zwUiZ9SZ3hXjvm/zPGCU0eKLxTrOjp5sCvSh s/GZAi9KVy22HT9giOecwANEt1CTfkQ8OLA4RUKEy7+yf4jgaWUIbUdlJtKCe76OZ+ dgSoWBpzvWt3IWurMpdh7dCOfxd3qdw9jjcBsPExEC8w/UzJfyuA4RczgFsslNI6Qi GbaxixpRTy9zV8OGakingAtPfJlTgDdtWGyw1YBiJYijCFEZ/1VrjWyaQn9ffr6esF R3hNt2+p4mpow== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A032ECA0EC4; Sun, 10 Aug 2025 17:38:11 +0000 (UTC) From: Jens Glathe via B4 Relay Date: Sun, 10 Aug 2025 19:37:44 +0200 Subject: [PATCH v10 3/3] arm64: dts: qcom: Add Lenovo ThinkBook 16 G7 QOY device tree 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: quoted-printable Message-Id: <20250810-tb16-dt-v10-3-0bfed6d75c69@oldschoolsolutions.biz> References: <20250810-tb16-dt-v10-0-0bfed6d75c69@oldschoolsolutions.biz> In-Reply-To: <20250810-tb16-dt-v10-0-0bfed6d75c69@oldschoolsolutions.biz> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Matthias Kaehlcke , Greg Kroah-Hartman Cc: Aleksandrs Vinarskis , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Jens Glathe X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1754847490; l=36366; i=jens.glathe@oldschoolsolutions.biz; s=20240919; h=from:subject:message-id; bh=jw8LDF7qlrBk57GT80lA7sgj7VrG7AhPruzOq3hrImg=; b=RSElYLEgkzWubMLtNhbcf/3XffEz0U8urHJAtyVUAC6QHHyp3K/iYQ60YnwAc589c23z+gF6S HRWlMvss9H0CH4aYrW1J6qVgmfuV/3uBsAwJaGJtcdwB8fSQhOkOoNs X-Developer-Key: i=jens.glathe@oldschoolsolutions.biz; a=ed25519; pk=JcRJqJc/y8LsxOlPakALD3juGfOKmFBWtO+GfELMJVg= X-Endpoint-Received: by B4 Relay for jens.glathe@oldschoolsolutions.biz/20240919 with auth_id=216 X-Original-From: Jens Glathe Reply-To: jens.glathe@oldschoolsolutions.biz From: Jens Glathe Device tree for the Lenovo Thinkbook 16 G7 QOY The Laptop is a Snapdragon X1 / X1 Plus (Purwa) based device [1]. Supported features: - USB type-c and type-a ports - Keyboard - Touchpad (all that are described in the dsdt) - Touchscreen (described in the dsdt, no known SKUss) - Display including PWM backlight control - PCIe devices - nvme - SDHC card reader - ath12k WCN7850 Wifi and Bluetooth - ADSP and CDSP - GPIO keys (Lid switch) - Sound via internal speakers / DMIC / USB / headphone jack - DP Altmode with 2 lanes (as all of these still do) - Integrated fingerprint reader (FPC) - Integrated UVC camera - X1-45 GPU Not supported yet: - HDMI port. - EC and some fn hotkeys. Limited support yet: - SDHC card reader is based on the on-chip sdhc_2 controller, but the drive= r from the Snapdragon Dev Kit is only a partial match. It can do normal slow sd ca= rds, but not UHS-I (SD104) and UHS-II. This work was done without any schematics or non-public knowledge of the de= vice. So, it is based on the existing x1e device trees, dsdt analysis, using HWIn= fo ARM64, and pure guesswork. It has been confirmed, however, that the device = really has 4 NXP PTN3222 eUSB2 repeaters, one of which doesn't have a reset GPIO (= eusb5 @43). Signed-off-by: Jens Glathe Co-developed by: Aleksandrs Vinarskis --- arch/arm64/boot/dts/qcom/Makefile | 2 + ...ok-x14.dts =3D> x1p42100-lenovo-thinkbook-16.dts} | 783 +++++++++++----= ------ 2 files changed, 423 insertions(+), 362 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 4bfa926b6a0850c3c459bcba28129c559d50a7cf..6b1d71daff5a778237c5e3706aa= ea8e29dafa001 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -333,3 +333,5 @@ x1p42100-asus-zenbook-a14-el2-dtbs :=3D x1p42100-asus-z= enbook-a14.dtb x1-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) +=3D x1p42100-asus-zenbook-a14.dtb x1p42100-asus-z= enbook-a14-el2.dtb x1p42100-crd-el2-dtbs :=3D x1p42100-crd.dtb x1-el2.dtbo dtb-$(CONFIG_ARCH_QCOM) +=3D x1p42100-crd.dtb x1p42100-crd-el2.dtb +x1p42100-lenovo-thinkbook-16-el2-dtbs :=3D x1p42100-lenovo-thinkbook-16.dt= b x1-el2.dtbo +dtb-$(CONFIG_ARCH_QCOM) +=3D x1p42100-lenovo-thinkbook-16.dtb x1p42100-len= ovo-thinkbook-16-el2.dtb diff --git a/arch/arm64/boot/dts/qcom/x1e80100-hp-omnibook-x14.dts b/arch/a= rm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts similarity index 77% copy from arch/arm64/boot/dts/qcom/x1e80100-hp-omnibook-x14.dts copy to arch/arm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts index f9ce2a63767c151192b0618ee2154e8d97316c1b..cca5fcc9dc13f727bf31550392d= 5663b4665caaa 100644 --- a/arch/arm64/boot/dts/qcom/x1e80100-hp-omnibook-x14.dts +++ b/arch/arm64/boot/dts/qcom/x1p42100-lenovo-thinkbook-16.dts @@ -1,7 +1,8 @@ // SPDX-License-Identifier: BSD-3-Clause /* * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. - * Copyright (c) 2024, Xilin Wu + * Copyright (c) 2024, Linaro Limited + * Copyright (c) 2025, Jens Glathe */ =20 /dts-v1/; @@ -12,12 +13,15 @@ #include #include =20 -#include "x1e80100.dtsi" +#include "x1p42100.dtsi" #include "x1e80100-pmics.dtsi" =20 +/delete-node/ &pmc8380_6; +/delete-node/ &pmc8380_6_thermal; + / { - model =3D "HP Omnibook X 14"; - compatible =3D "hp,omnibook-x14", "qcom,x1e80100"; + model =3D "Lenovo ThinkBook 16 Gen 7 QOY"; + compatible =3D "lenovo,thinkbook-16", "qcom,x1p42100"; chassis-type =3D "laptop"; =20 aliases { @@ -28,8 +32,8 @@ aliases { wcd938x: audio-codec { compatible =3D "qcom,wcd9385-codec"; =20 - pinctrl-names =3D "default"; pinctrl-0 =3D <&wcd_default>; + pinctrl-names =3D "default"; =20 qcom,micbias1-microvolt =3D <1800000>; qcom,micbias2-microvolt =3D <1800000>; @@ -53,17 +57,25 @@ wcd938x: audio-codec { =20 backlight: backlight { compatible =3D "pwm-backlight"; - pwms =3D <&pmk8550_pwm 0 5000000>; - - brightness-levels =3D <0 2048 4096 8192 16384 65535>; - num-interpolated-steps =3D <20>; - default-brightness-level =3D <80>; + pwms =3D <&pm8550_pwm 3 500000>; =20 - enable-gpios =3D <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>; power-supply =3D <&vreg_edp_bl>; + }; =20 - pinctrl-0 =3D <&edp_bl_en>, <&edp_bl_pwm>; - pinctrl-names =3D "default"; + /* + * This is an odd one. The camera is physically behind the eusb9 repeater= (confirmed) but + * if it is placed below the usb_2_dwc3 node, it will be switched off aft= er ~30 seconds. + * The reason seems to be that the dwc3 driver does not probe for child n= odes when in + * host-only mode. But that's the default setting for the xhci controller= s due to issues + * when in OTG mode. https://lore.kernel.org/all/20241210111444.26240-1-j= ohan+linaro@kernel.org/ + * The whole reason it is described in the dt (as an USB device) is its r= equirement for + * that additional regulator, and to get power management to switch it of= f when suspended. + * Defining it stand-alone does work. + */ + camera { + compatible =3D "usb5986,1198"; + + vdd-supply =3D <&vreg_cam_5p0>; }; =20 gpio-keys { @@ -85,17 +97,17 @@ pmic-glink { compatible =3D "qcom,x1e80100-pmic-glink", "qcom,sm8550-pmic-glink", "qcom,pmic-glink"; - orientation-gpios =3D <&tlmm 121 GPIO_ACTIVE_HIGH>, - <&tlmm 123 GPIO_ACTIVE_HIGH>; #address-cells =3D <1>; #size-cells =3D <0>; + orientation-gpios =3D <&tlmm 121 GPIO_ACTIVE_HIGH>, + <&tlmm 123 GPIO_ACTIVE_HIGH>; =20 - /* Left-side port, closer to the screen */ + /* Display-adjacent port */ connector@0 { compatible =3D "usb-c-connector"; reg =3D <0>; power-role =3D "dual"; - data-role =3D "dual"; + data-role =3D "host"; =20 ports { #address-cells =3D <1>; @@ -113,26 +125,26 @@ port@1 { reg =3D <1>; =20 pmic_glink_ss0_ss_in: endpoint { - remote-endpoint =3D <&retimer_ss0_ss_out>; + remote-endpoint =3D <&usb_1_ss0_qmpphy_out>; }; }; =20 port@2 { reg =3D <2>; =20 - pmic_glink_ss0_con_sbu_in: endpoint { - remote-endpoint =3D <&retimer_ss0_con_sbu_out>; + pmic_glink_ss0_sbu: endpoint { + remote-endpoint =3D <&usb_1_ss0_sbu_mux>; }; }; }; }; =20 - /* Left-side port, farther from the screen */ + /* User-adjacent port */ connector@1 { compatible =3D "usb-c-connector"; reg =3D <1>; power-role =3D "dual"; - data-role =3D "dual"; + data-role =3D "host"; =20 ports { #address-cells =3D <1>; @@ -165,18 +177,9 @@ pmic_glink_ss1_sbu: endpoint { }; }; =20 - reserved-memory { - linux,cma { - compatible =3D "shared-dma-pool"; - size =3D <0x0 0x8000000>; - reusable; - linux,cma-default; - }; - }; - - sound: sound { + sound { compatible =3D "qcom,x1e80100-sndcard"; - model =3D "X1E80100-HP-OMNIBOOK-X14"; + model =3D "X1E80100-LENOVO-ThinkBook-16"; audio-routing =3D "SpkrLeft IN", "WSA WSA_SPK1 OUT", "SpkrRight IN", "WSA WSA_SPK2 OUT", "IN1_HPHL", "HPHL_OUT", @@ -195,14 +198,14 @@ sound: sound { wcd-playback-dai-link { link-name =3D "WCD Playback"; =20 - cpu { - sound-dai =3D <&q6apmbedai RX_CODEC_DMA_RX_0>; - }; - codec { sound-dai =3D <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>; }; =20 + cpu { + sound-dai =3D <&q6apmbedai RX_CODEC_DMA_RX_0>; + }; + platform { sound-dai =3D <&q6apm>; }; @@ -211,14 +214,14 @@ platform { wcd-capture-dai-link { link-name =3D "WCD Capture"; =20 - cpu { - sound-dai =3D <&q6apmbedai TX_CODEC_DMA_TX_3>; - }; - codec { sound-dai =3D <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>; }; =20 + cpu { + sound-dai =3D <&q6apmbedai TX_CODEC_DMA_TX_3>; + }; + platform { sound-dai =3D <&q6apm>; }; @@ -227,14 +230,14 @@ platform { wsa-dai-link { link-name =3D "WSA Playback"; =20 - cpu { - sound-dai =3D <&q6apmbedai WSA_CODEC_DMA_RX_0>; - }; - codec { sound-dai =3D <&left_spkr>, <&right_spkr>, <&swr0 0>, <&lpass_wsamacro= 0>; }; =20 + cpu { + sound-dai =3D <&q6apmbedai WSA_CODEC_DMA_RX_0>; + }; + platform { sound-dai =3D <&q6apm>; }; @@ -243,20 +246,74 @@ platform { va-dai-link { link-name =3D "VA Capture"; =20 - cpu { - sound-dai =3D <&q6apmbedai VA_CODEC_DMA_TX_0>; - }; - codec { sound-dai =3D <&lpass_vamacro 0>; }; =20 + cpu { + sound-dai =3D <&q6apmbedai VA_CODEC_DMA_TX_0>; + }; + platform { sound-dai =3D <&q6apm>; }; }; }; =20 + usb-1-ss0-sbu-mux { + compatible =3D "onnn,fsusb42", "gpio-sbu-mux"; + + enable-gpios =3D <&tlmm 167 GPIO_ACTIVE_LOW>; + select-gpios =3D <&tlmm 168 GPIO_ACTIVE_HIGH>; + + pinctrl-0 =3D <&usb_1_ss0_sbu_default>; + pinctrl-names =3D "default"; + + mode-switch; + orientation-switch; + + port { + usb_1_ss0_sbu_mux: endpoint { + remote-endpoint =3D <&pmic_glink_ss0_sbu>; + }; + }; + }; + + usb-1-ss1-sbu-mux { + compatible =3D "onnn,fsusb42", "gpio-sbu-mux"; + + enable-gpios =3D <&tlmm 178 GPIO_ACTIVE_LOW>; + select-gpios =3D <&tlmm 179 GPIO_ACTIVE_HIGH>; + + pinctrl-0 =3D <&usb_1_ss1_sbu_default>; + pinctrl-names =3D "default"; + + mode-switch; + orientation-switch; + + port { + usb_1_ss1_sbu_mux: endpoint { + remote-endpoint =3D <&pmic_glink_ss1_sbu>; + }; + }; + }; + + vreg_cam_5p0: regulator-cam-5p0 { + compatible =3D "regulator-fixed"; + + regulator-name =3D "VREG_CAM_5P0"; + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + + gpio =3D <&tlmm 44 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&cam_reg_en>; + pinctrl-names =3D "default"; + + regulator-boot-on; + }; + vreg_edp_3p3: regulator-edp-3p3 { compatible =3D "regulator-fixed"; =20 @@ -283,8 +340,8 @@ vreg_edp_bl: regulator-edp-bl { gpio =3D <&pmc8380_3_gpios 10 GPIO_ACTIVE_HIGH>; enable-active-high; =20 - pinctrl-names =3D "default"; pinctrl-0 =3D <&edp_bl_reg_en>; + pinctrl-names =3D "default"; =20 regulator-boot-on; }; @@ -299,8 +356,8 @@ vreg_misc_3p3: regulator-misc-3p3 { gpio =3D <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>; enable-active-high; =20 - pinctrl-names =3D "default"; pinctrl-0 =3D <&misc_3p3_reg_en>; + pinctrl-names =3D "default"; =20 regulator-boot-on; regulator-always-on; @@ -322,63 +379,24 @@ vreg_nvme: regulator-nvme { regulator-boot-on; }; =20 - vreg_rtmr0_1p15: regulator-rtmr0-1p15 { - compatible =3D "regulator-fixed"; - - regulator-name =3D "VREG_RTMR0_1P15"; - regulator-min-microvolt =3D <1150000>; - regulator-max-microvolt =3D <1150000>; - - gpio =3D <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>; - enable-active-high; - - pinctrl-0 =3D <&usb0_pwr_1p15_reg_en>; - pinctrl-names =3D "default"; - - regulator-boot-on; - }; - - vreg_rtmr0_1p8: regulator-rtmr0-1p8 { - compatible =3D "regulator-fixed"; - - regulator-name =3D "VREG_RTMR0_1P8"; - regulator-min-microvolt =3D <1800000>; - regulator-max-microvolt =3D <1800000>; - - gpio =3D <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>; - enable-active-high; - - pinctrl-0 =3D <&usb0_1p8_reg_en>; - pinctrl-names =3D "default"; - - regulator-boot-on; - }; - - vreg_rtmr0_3p3: regulator-rtmr0-3p3 { + vreg_wcn_0p95: regulator-wcn-0p95 { compatible =3D "regulator-fixed"; =20 - regulator-name =3D "VREG_RTMR0_3P3"; - regulator-min-microvolt =3D <3300000>; - regulator-max-microvolt =3D <3300000>; - - gpio =3D <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>; - enable-active-high; - - pinctrl-0 =3D <&usb0_3p3_reg_en>; - pinctrl-names =3D "default"; + regulator-name =3D "VREG_WCN_0P95"; + regulator-min-microvolt =3D <950000>; + regulator-max-microvolt =3D <950000>; =20 - regulator-boot-on; + vin-supply =3D <&vreg_wcn_3p3>; }; =20 - vreg_vph_pwr: regulator-vph-pwr { + vreg_wcn_1p9: regulator-wcn-1p9 { compatible =3D "regulator-fixed"; =20 - regulator-name =3D "vreg_vph_pwr"; - regulator-min-microvolt =3D <3700000>; - regulator-max-microvolt =3D <3700000>; + regulator-name =3D "VREG_WCN_1P9"; + regulator-min-microvolt =3D <1900000>; + regulator-max-microvolt =3D <1900000>; =20 - regulator-always-on; - regulator-boot-on; + vin-supply =3D <&vreg_wcn_3p3>; }; =20 vreg_wcn_3p3: regulator-wcn-3p3 { @@ -397,110 +415,73 @@ vreg_wcn_3p3: regulator-wcn-3p3 { regulator-boot-on; }; =20 - /* - * TODO: These two regulators are actually part of the removable M.2 - * card and not the CRD mainboard. Need to describe this differently. - * Functionally it works correctly, because all we need to do is to - * turn on the actual 3.3V supply above. - */ - vreg_wcn_0p95: regulator-wcn-0p95 { + vph_pwr: regulator-vph-pwr { compatible =3D "regulator-fixed"; =20 - regulator-name =3D "VREG_WCN_0P95"; - regulator-min-microvolt =3D <950000>; - regulator-max-microvolt =3D <950000>; - - vin-supply =3D <&vreg_wcn_3p3>; - }; - - vreg_wcn_1p9: regulator-wcn-1p9 { - compatible =3D "regulator-fixed"; - - regulator-name =3D "VREG_WCN_1P9"; - regulator-min-microvolt =3D <1900000>; - regulator-max-microvolt =3D <1900000>; + regulator-name =3D "vph_pwr"; + regulator-min-microvolt =3D <3700000>; + regulator-max-microvolt =3D <3700000>; =20 - vin-supply =3D <&vreg_wcn_3p3>; + regulator-always-on; + regulator-boot-on; }; =20 - wcn6855-pmu { - compatible =3D "qcom,wcn6855-pmu"; + wcn7850-pmu { + compatible =3D "qcom,wcn7850-pmu"; =20 + vdd-supply =3D <&vreg_wcn_0p95>; + vddio-supply =3D <&vreg_l15b_1p8>; vddaon-supply =3D <&vreg_wcn_0p95>; - vddio-supply =3D <&vreg_wcn_1p9>; - vddpcie1p3-supply =3D <&vreg_wcn_1p9>; - vddpcie1p9-supply =3D <&vreg_wcn_1p9>; - vddpmu-supply =3D <&vreg_wcn_0p95>; - vddpmumx-supply =3D <&vreg_wcn_0p95>; - vddpmucx-supply =3D <&vreg_wcn_0p95>; - vddrfa0p95-supply =3D <&vreg_wcn_0p95>; - vddrfa1p3-supply =3D <&vreg_wcn_1p9>; - vddrfa1p9-supply =3D <&vreg_wcn_1p9>; + vdddig-supply =3D <&vreg_wcn_0p95>; + vddrfa1p2-supply =3D <&vreg_wcn_1p9>; + vddrfa1p8-supply =3D <&vreg_wcn_1p9>; =20 wlan-enable-gpios =3D <&tlmm 117 GPIO_ACTIVE_HIGH>; bt-enable-gpios =3D <&tlmm 116 GPIO_ACTIVE_HIGH>; =20 - pinctrl-0 =3D <&wcn_wlan_bt_en>; + pinctrl-0 =3D <&wcn_wlan_en>; + pinctrl-1 =3D <&wcn_bt_en>; pinctrl-names =3D "default"; =20 regulators { - vreg_pmu_rfa_cmn_0p8: ldo0 { - regulator-name =3D "vreg_pmu_rfa_cmn_0p8"; + vreg_pmu_rfa_cmn: ldo0 { + regulator-name =3D "vreg_pmu_rfa_cmn"; }; =20 - vreg_pmu_aon_0p8: ldo1 { - regulator-name =3D "vreg_pmu_aon_0p8"; + vreg_pmu_aon_0p59: ldo1 { + regulator-name =3D "vreg_pmu_aon_0p59"; }; =20 vreg_pmu_wlcx_0p8: ldo2 { regulator-name =3D "vreg_pmu_wlcx_0p8"; }; =20 - vreg_pmu_wlmx_0p8: ldo3 { - regulator-name =3D "vreg_pmu_wlmx_0p8"; - }; - - vreg_pmu_btcmx_0p8: ldo4 { - regulator-name =3D "vreg_pmu_btcmx_0p8"; - }; - - vreg_pmu_pcie_1p8: ldo5 { - regulator-name =3D "vreg_pmu_pcie_1p8"; + vreg_pmu_wlmx_0p85: ldo3 { + regulator-name =3D "vreg_pmu_wlmx_0p85"; }; =20 - vreg_pmu_pcie_0p9: ldo6 { - regulator-name =3D "vreg_pmu_pcie_0p9"; + vreg_pmu_btcmx_0p85: ldo4 { + regulator-name =3D "vreg_pmu_btcmx_0p85"; }; =20 - vreg_pmu_rfa_0p8: ldo7 { + vreg_pmu_rfa_0p8: ldo5 { regulator-name =3D "vreg_pmu_rfa_0p8"; }; =20 - vreg_pmu_rfa_1p2: ldo8 { + vreg_pmu_rfa_1p2: ldo6 { regulator-name =3D "vreg_pmu_rfa_1p2"; }; =20 - vreg_pmu_rfa_1p7: ldo9 { - regulator-name =3D "vreg_pmu_rfa_1p7"; + vreg_pmu_rfa_1p8: ldo7 { + regulator-name =3D "vreg_pmu_rfa_1p8"; }; - }; - }; - - usb-1-ss1-sbu-mux { - compatible =3D "onnn,fsusb42", "gpio-sbu-mux"; =20 - enable-gpios =3D <&tlmm 179 GPIO_ACTIVE_LOW>; - select-gpios =3D <&tlmm 178 GPIO_ACTIVE_HIGH>; - - pinctrl-0 =3D <&usb_1_ss1_sbu_default>; - pinctrl-names =3D "default"; - - mode-switch; - orientation-switch; + vreg_pmu_pcie_0p9: ldo8 { + regulator-name =3D "vreg_pmu_pcie_0p9"; + }; =20 - port { - usb_1_ss1_sbu_mux: endpoint { - remote-endpoint =3D <&pmic_glink_ss1_sbu>; + vreg_pmu_pcie_1p8: ldo9 { + regulator-name =3D "vreg_pmu_pcie_1p8"; }; }; }; @@ -511,8 +492,8 @@ regulators-0 { compatible =3D "qcom,pm8550-rpmh-regulators"; qcom,pmic-id =3D "b"; =20 - vdd-bob1-supply =3D <&vreg_vph_pwr>; - vdd-bob2-supply =3D <&vreg_vph_pwr>; + vdd-bob1-supply =3D <&vph_pwr>; + vdd-bob2-supply =3D <&vph_pwr>; vdd-l1-l4-l10-supply =3D <&vreg_s4c_1p8>; vdd-l2-l13-l14-supply =3D <&vreg_bob1>; vdd-l5-l16-supply =3D <&vreg_bob1>; @@ -546,7 +527,7 @@ vreg_l1b_1p8: ldo1 { vreg_l2b_3p0: ldo2 { regulator-name =3D "vreg_l2b_3p0"; regulator-min-microvolt =3D <3072000>; - regulator-max-microvolt =3D <3100000>; + regulator-max-microvolt =3D <3072000>; regulator-initial-mode =3D ; }; =20 @@ -610,7 +591,7 @@ vreg_l12b_1p2: ldo12 { vreg_l13b_3p0: ldo13 { regulator-name =3D "vreg_l13b_3p0"; regulator-min-microvolt =3D <3072000>; - regulator-max-microvolt =3D <3100000>; + regulator-max-microvolt =3D <3072000>; regulator-initial-mode =3D ; }; =20 @@ -651,7 +632,7 @@ regulators-1 { vdd-l1-supply =3D <&vreg_s5j_1p2>; vdd-l2-supply =3D <&vreg_s1f_0p7>; vdd-l3-supply =3D <&vreg_s1f_0p7>; - vdd-s4-supply =3D <&vreg_vph_pwr>; + vdd-s4-supply =3D <&vph_pwr>; =20 vreg_s4c_1p8: smps4 { regulator-name =3D "vreg_s4c_1p8"; @@ -670,14 +651,14 @@ vreg_l1c_1p2: ldo1 { vreg_l2c_0p8: ldo2 { regulator-name =3D "vreg_l2c_0p8"; regulator-min-microvolt =3D <880000>; - regulator-max-microvolt =3D <920000>; + regulator-max-microvolt =3D <880000>; regulator-initial-mode =3D ; }; =20 vreg_l3c_0p8: ldo3 { regulator-name =3D "vreg_l3c_0p8"; - regulator-min-microvolt =3D <880000>; - regulator-max-microvolt =3D <920000>; + regulator-min-microvolt =3D <912000>; + regulator-max-microvolt =3D <912000>; regulator-initial-mode =3D ; }; }; @@ -689,19 +670,19 @@ regulators-2 { vdd-l1-supply =3D <&vreg_s1f_0p7>; vdd-l2-supply =3D <&vreg_s1f_0p7>; vdd-l3-supply =3D <&vreg_s4c_1p8>; - vdd-s1-supply =3D <&vreg_vph_pwr>; + vdd-s1-supply =3D <&vph_pwr>; =20 vreg_l1d_0p8: ldo1 { regulator-name =3D "vreg_l1d_0p8"; regulator-min-microvolt =3D <880000>; - regulator-max-microvolt =3D <920000>; + regulator-max-microvolt =3D <880000>; regulator-initial-mode =3D ; }; =20 vreg_l2d_0p9: ldo2 { regulator-name =3D "vreg_l2d_0p9"; regulator-min-microvolt =3D <912000>; - regulator-max-microvolt =3D <920000>; + regulator-max-microvolt =3D <912000>; regulator-initial-mode =3D ; }; =20 @@ -723,7 +704,7 @@ regulators-3 { vreg_l2e_0p8: ldo2 { regulator-name =3D "vreg_l2e_0p8"; regulator-min-microvolt =3D <880000>; - regulator-max-microvolt =3D <920000>; + regulator-max-microvolt =3D <880000>; regulator-initial-mode =3D ; }; =20 @@ -742,7 +723,7 @@ regulators-4 { vdd-l1-supply =3D <&vreg_s5j_1p2>; vdd-l2-supply =3D <&vreg_s5j_1p2>; vdd-l3-supply =3D <&vreg_s5j_1p2>; - vdd-s1-supply =3D <&vreg_vph_pwr>; + vdd-s1-supply =3D <&vph_pwr>; =20 vreg_s1f_0p7: smps1 { regulator-name =3D "vreg_s1f_0p7"; @@ -780,28 +761,15 @@ regulators-6 { vdd-l1-supply =3D <&vreg_s4c_1p8>; vdd-l2-supply =3D <&vreg_s5j_1p2>; vdd-l3-supply =3D <&vreg_s1f_0p7>; - vdd-s1-supply =3D <&vreg_vph_pwr>; - vdd-s2-supply =3D <&vreg_vph_pwr>; - - vreg_s1i_0p9: smps1 { - regulator-name =3D "vreg_s1i_0p9"; - regulator-min-microvolt =3D <900000>; - regulator-max-microvolt =3D <920000>; - regulator-initial-mode =3D ; - }; - - vreg_s2i_1p0: smps2 { - regulator-name =3D "vreg_s2i_1p0"; - regulator-min-microvolt =3D <1000000>; - regulator-max-microvolt =3D <1100000>; - regulator-initial-mode =3D ; - }; + vdd-s1-supply =3D <&vph_pwr>; + vdd-s2-supply =3D <&vph_pwr>; =20 vreg_l1i_1p8: ldo1 { regulator-name =3D "vreg_l1i_1p8"; regulator-min-microvolt =3D <1800000>; regulator-max-microvolt =3D <1800000>; regulator-initial-mode =3D ; + regulator-always-on; }; =20 vreg_l2i_1p2: ldo2 { @@ -814,9 +782,23 @@ vreg_l2i_1p2: ldo2 { vreg_l3i_0p8: ldo3 { regulator-name =3D "vreg_l3i_0p8"; regulator-min-microvolt =3D <880000>; + regulator-max-microvolt =3D <880000>; + regulator-initial-mode =3D ; + }; + + vreg_s1i_0p9: smps1 { + regulator-name =3D "vreg_s1i_0p9"; + regulator-min-microvolt =3D <900000>; regulator-max-microvolt =3D <920000>; regulator-initial-mode =3D ; }; + + vreg_s2i_1p0: smps2 { + regulator-name =3D "vreg_s2i_1p0"; + regulator-min-microvolt =3D <1000000>; + regulator-max-microvolt =3D <1100000>; + regulator-initial-mode =3D ; + }; }; =20 regulators-7 { @@ -826,7 +808,7 @@ regulators-7 { vdd-l1-supply =3D <&vreg_s1f_0p7>; vdd-l2-supply =3D <&vreg_s5j_1p2>; vdd-l3-supply =3D <&vreg_s1f_0p7>; - vdd-s5-supply =3D <&vreg_vph_pwr>; + vdd-s5-supply =3D <&vph_pwr>; =20 vreg_s5j_1p2: smps5 { regulator-name =3D "vreg_s5j_1p2"; @@ -837,8 +819,8 @@ vreg_s5j_1p2: smps5 { =20 vreg_l1j_0p8: ldo1 { regulator-name =3D "vreg_l1j_0p8"; - regulator-min-microvolt =3D <880000>; - regulator-max-microvolt =3D <920000>; + regulator-min-microvolt =3D <912000>; + regulator-max-microvolt =3D <912000>; regulator-initial-mode =3D ; }; =20 @@ -852,7 +834,7 @@ vreg_l2j_1p2: ldo2 { vreg_l3j_0p8: ldo3 { regulator-name =3D "vreg_l3j_0p8"; regulator-min-microvolt =3D <880000>; - regulator-max-microvolt =3D <920000>; + regulator-max-microvolt =3D <880000>; regulator-initial-mode =3D ; }; }; @@ -860,111 +842,103 @@ vreg_l3j_0p8: ldo3 { =20 &gpu { status =3D "okay"; +}; =20 - zap-shader { - firmware-name =3D "qcom/x1e80100/hp/omnibook-x14/qcdxkmsuc8380.mbn"; - }; +&gpu_zap_shader { + firmware-name =3D "qcom/x1p42100/LENOVO/21NH/qcdxkmsucpurwa.mbn"; }; =20 -&i2c0 { +&i2c2 { clock-frequency =3D <400000>; =20 + pinctrl-0 =3D <&qup_i2c2_data_clk>, <&tpad_default>, <&kybd_default>; + pinctrl-names =3D "default"; status =3D "okay"; =20 - keyboard@3a { + /* ELAN06FA */ + touchpad@15 { compatible =3D "hid-over-i2c"; - reg =3D <0x3a>; + reg =3D <0x15>; =20 hid-descr-addr =3D <0x1>; - interrupts-extended =3D <&tlmm 67 IRQ_TYPE_LEVEL_LOW>; + interrupts-extended =3D <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; =20 vdd-supply =3D <&vreg_misc_3p3>; vddl-supply =3D <&vreg_l12b_1p2>; =20 - pinctrl-0 =3D <&kybd_default>; - pinctrl-names =3D "default"; - wakeup-source; }; =20 - touchpad@15 { + /* CIRQ1080 or SYNA2BA6 */ + touchpad@2c { compatible =3D "hid-over-i2c"; - reg =3D <0x15>; + reg =3D <0x2c>; =20 - hid-descr-addr =3D <0x1>; + hid-descr-addr =3D <0x20>; interrupts-extended =3D <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; =20 vdd-supply =3D <&vreg_misc_3p3>; vddl-supply =3D <&vreg_l12b_1p2>; =20 - pinctrl-0 =3D <&tpad_default>; - pinctrl-names =3D "default"; - wakeup-source; }; -}; - -&i2c3 { - clock-frequency =3D <400000>; =20 - status =3D "okay"; - - typec-mux@8 { - compatible =3D "parade,ps8830"; - reg =3D <0x08>; - - clocks =3D <&rpmhcc RPMH_RF_CLK3>; + /* FTCS0038 */ + touchpad@38 { + compatible =3D "hid-over-i2c"; + reg =3D <0x38>; =20 - vdd-supply =3D <&vreg_rtmr0_1p15>; - vdd33-supply =3D <&vreg_rtmr0_3p3>; - vdd33-cap-supply =3D <&vreg_rtmr0_3p3>; - vddar-supply =3D <&vreg_rtmr0_1p15>; - vddat-supply =3D <&vreg_rtmr0_1p15>; - vddio-supply =3D <&vreg_rtmr0_1p8>; + hid-descr-addr =3D <0x1>; + interrupts-extended =3D <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; =20 - reset-gpios =3D <&pm8550_gpios 10 GPIO_ACTIVE_LOW>; + vdd-supply =3D <&vreg_misc_3p3>; + vddl-supply =3D <&vreg_l12b_1p2>; =20 - pinctrl-0 =3D <&rtmr0_default>; - pinctrl-names =3D "default"; + wakeup-source; + }; =20 - orientation-switch; - retimer-switch; + keyboard@3a { + compatible =3D "hid-over-i2c"; + reg =3D <0x3a>; =20 - ports { - #address-cells =3D <1>; - #size-cells =3D <0>; + hid-descr-addr =3D <0x1>; + interrupts-extended =3D <&tlmm 67 IRQ_TYPE_LEVEL_LOW>; =20 - port@0 { - reg =3D <0>; + vdd-supply =3D <&vreg_misc_3p3>; + vddl-supply =3D <&vreg_l12b_1p2>; =20 - retimer_ss0_ss_out: endpoint { - remote-endpoint =3D <&pmic_glink_ss0_ss_in>; - }; - }; + wakeup-source; + }; =20 - port@1 { - reg =3D <1>; + /* GXTP5100 */ + touchpad@5d { + compatible =3D "hid-over-i2c"; + reg =3D <0x5d>; =20 - retimer_ss0_ss_in: endpoint { - remote-endpoint =3D <&usb_1_ss0_qmpphy_out>; - }; - }; + hid-descr-addr =3D <0x1>; + interrupts-extended =3D <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; =20 - port@2 { - reg =3D <2>; + vdd-supply =3D <&vreg_misc_3p3>; + vddl-supply =3D <&vreg_l12b_1p2>; =20 - retimer_ss0_con_sbu_out: endpoint { - remote-endpoint =3D <&pmic_glink_ss0_con_sbu_in>; - }; - }; - }; + wakeup-source; }; }; =20 &i2c5 { clock-frequency =3D <400000>; + status =3D "okay"; =20 + eusb5_repeater: redriver@43 { + compatible =3D "nxp,ptn3222"; + reg =3D <0x43>; + #phy-cells =3D <0>; + + vdd3v3-supply =3D <&vreg_l13b_3p0>; + vdd1v8-supply =3D <&vreg_l4b_1p8>; + }; + eusb3_repeater: redriver@47 { compatible =3D "nxp,ptn3222"; reg =3D <0x47>; @@ -977,7 +951,34 @@ eusb3_repeater: redriver@47 { =20 pinctrl-0 =3D <&eusb3_reset_n>; pinctrl-names =3D "default"; + }; + + eusb9_repeater: redriver@4b { + compatible =3D "nxp,ptn3222"; + reg =3D <0x4b>; + #phy-cells =3D <0>; + + vdd3v3-supply =3D <&vreg_l13b_3p0>; + vdd1v8-supply =3D <&vreg_l4b_1p8>; + + reset-gpios =3D <&tlmm 7 GPIO_ACTIVE_LOW>; =20 + pinctrl-0 =3D <&eusb9_reset_n>; + pinctrl-names =3D "default"; + }; + + eusb6_repeater: redriver@4f { + compatible =3D "nxp,ptn3222"; + reg =3D <0x4f>; + #phy-cells =3D <0>; + + vdd3v3-supply =3D <&vreg_l13b_3p0>; + vdd1v8-supply =3D <&vreg_l4b_1p8>; + + reset-gpios =3D <&tlmm 184 GPIO_ACTIVE_LOW>; + + pinctrl-0 =3D <&eusb6_reset_n>; + pinctrl-names =3D "default"; }; }; =20 @@ -986,6 +987,7 @@ &i2c8 { =20 status =3D "okay"; =20 + /* ILIT2911 or GTCH1563 */ touchscreen@10 { compatible =3D "hid-over-i2c"; reg =3D <0x10>; @@ -1049,10 +1051,15 @@ &mdss_dp3 { aux-bus { panel { compatible =3D "edp-panel"; - power-supply =3D <&vreg_edp_3p3>; =20 backlight =3D <&backlight>; =20 + enable-gpios =3D <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>; + pinctrl-0 =3D <&edp_bl_en>; + pinctrl-names =3D "default"; + + power-supply =3D <&vreg_edp_3p3>; + port { edp_panel_in: endpoint { remote-endpoint =3D <&mdss_dp3_out>; @@ -1098,15 +1105,15 @@ wifi@0 { compatible =3D "pci17cb,1107"; reg =3D <0x10000 0x0 0x0 0x0 0x0>; =20 - vddaon-supply =3D <&vreg_pmu_aon_0p8>; - vddpcie0p9-supply =3D <&vreg_pmu_pcie_0p9>; - vddpcie1p8-supply =3D <&vreg_pmu_pcie_1p8>; + vddaon-supply =3D <&vreg_pmu_aon_0p59>; + vddwlcx-supply =3D <&vreg_pmu_wlcx_0p8>; + vddwlmx-supply =3D <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply =3D <&vreg_pmu_rfa_cmn>; vddrfa0p8-supply =3D <&vreg_pmu_rfa_0p8>; vddrfa1p2-supply =3D <&vreg_pmu_rfa_1p2>; - vddrfa1p8-supply =3D <&vreg_pmu_rfa_1p7>; - vddrfacmn-supply =3D <&vreg_pmu_rfa_cmn_0p8>; - vddwlcx-supply =3D <&vreg_pmu_wlcx_0p8>; - vddwlmx-supply =3D <&vreg_pmu_wlmx_0p8>; + vddrfa1p8-supply =3D <&vreg_pmu_rfa_1p8>; + vddpcie0p9-supply =3D <&vreg_pmu_pcie_0p9>; + vddpcie1p8-supply =3D <&vreg_pmu_pcie_1p8>; }; }; =20 @@ -1129,24 +1136,8 @@ &pcie6a_phy { status =3D "okay"; }; =20 -&pm8550_gpios { - rtmr0_default: rtmr0-reset-n-active-state { - pins =3D "gpio10"; - function =3D "normal"; - power-source =3D <1>; /* 1.8V */ - bias-disable; - input-disable; - output-enable; - }; - - usb0_3p3_reg_en: usb0-3p3-reg-en-state { - pins =3D "gpio11"; - function =3D "normal"; - power-source =3D <1>; /* 1.8V */ - bias-disable; - input-disable; - output-enable; - }; +&pm8550_pwm { + status =3D "okay"; }; =20 &pm8550ve_8_gpios { @@ -1154,25 +1145,14 @@ misc_3p3_reg_en: misc-3p3-reg-en-state { pins =3D "gpio6"; function =3D "normal"; bias-disable; - drive-push-pull; input-disable; output-enable; + drive-push-pull; power-source =3D <1>; /* 1.8 V */ qcom,drive-strength =3D ; }; }; =20 -&pm8550ve_9_gpios { - usb0_1p8_reg_en: usb0-1p8-reg-en-state { - pins =3D "gpio8"; - function =3D "normal"; - power-source =3D <1>; /* 1.8V */ - bias-disable; - input-disable; - output-enable; - }; -}; - &pmc8380_3_gpios { edp_bl_en: edp-bl-en-state { pins =3D "gpio4"; @@ -1186,29 +1166,6 @@ edp_bl_reg_en: edp-bl-reg-en-state { pins =3D "gpio10"; function =3D "normal"; }; - -}; - -&pmc8380_5_gpios { - usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state { - pins =3D "gpio8"; - function =3D "normal"; - power-source =3D <1>; /* 1.8V */ - bias-disable; - input-disable; - output-enable; - }; -}; - -&pmk8550_gpios { - edp_bl_pwm: edp-bl-pwm-state { - pins =3D "gpio5"; - function =3D "func3"; - }; -}; - -&pmk8550_pwm { - status =3D "okay"; }; =20 &qupv3_0 { @@ -1224,19 +1181,29 @@ &qupv3_2 { }; =20 &remoteproc_adsp { - firmware-name =3D "qcom/x1e80100/hp/omnibook-x14/qcadsp8380.mbn", - "qcom/x1e80100/hp/omnibook-x14/adsp_dtbs.elf"; + firmware-name =3D "qcom/x1p42100/LENOVO/21NH/qcadsp8380.mbn", + "qcom/x1p42100/LENOVO/21NH/adsp_dtbs.elf"; =20 status =3D "okay"; }; =20 &remoteproc_cdsp { - firmware-name =3D "qcom/x1e80100/hp/omnibook-x14/qccdsp8380.mbn", - "qcom/x1e80100/hp/omnibook-x14/cdsp_dtbs.elf"; + firmware-name =3D "qcom/x1p42100/LENOVO/21NH/qccdsp8380.mbn", + "qcom/x1p42100/LENOVO/21NH/cdsp_dtbs.elf"; =20 status =3D "okay"; }; =20 +&sdhc_2 { + cd-gpios =3D <&tlmm 71 GPIO_ACTIVE_LOW>; + pinctrl-0 =3D <&sdc2_default &sdc2_card_det_n>; + pinctrl-1 =3D <&sdc2_sleep &sdc2_card_det_n>; + pinctrl-names =3D "default", "sleep"; + vmmc-supply =3D <&vreg_l9b_2p9>; + vqmmc-supply =3D <&vreg_l6b_1p8>; + status =3D "okay"; +}; + &smb2360_0 { status =3D "okay"; }; @@ -1256,11 +1223,11 @@ &smb2360_1_eusb2_repeater { }; =20 &swr0 { + status =3D "okay"; + pinctrl-0 =3D <&wsa_swr_active>, <&spkr_01_sd_n_active>; pinctrl-names =3D "default"; =20 - status =3D "okay"; - /* WSA8845, Left Speaker */ left_spkr: speaker@0,0 { compatible =3D "sdw20217020400"; @@ -1310,12 +1277,10 @@ wcd_tx: codec@0,3 { =20 &tlmm { gpio-reserved-ranges =3D <34 2>, /* Unused */ - <44 4>, /* SPI (TPM) */ - <72 2>, /* Secure EC I2C connection (?) */ - <238 1>; /* UFS Reset */ + <72 2>; /* Secure EC I2C connection (?) */ =20 - edp_reg_en: edp-reg-en-state { - pins =3D "gpio70"; + cam_reg_en: cam-reg-en-state { + pins =3D "gpio44"; function =3D "gpio"; drive-strength =3D <16>; bias-disable; @@ -1329,6 +1294,29 @@ eusb3_reset_n: eusb3-reset-n-state { output-low; }; =20 + eusb6_reset_n: eusb6-reset-n-state { + pins =3D "gpio184"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + output-low; + }; + + eusb9_reset_n: eusb9-reset-n-state { + pins =3D "gpio7"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + output-low; + }; + + edp_reg_en: edp-reg-en-state { + pins =3D "gpio70"; + function =3D "gpio"; + drive-strength =3D <16>; + bias-disable; + }; + hall_int_n_default: hall-int-n-state { pins =3D "gpio92"; function =3D "gpio"; @@ -1338,7 +1326,7 @@ hall_int_n_default: hall-int-n-state { kybd_default: kybd-default-state { pins =3D "gpio67"; function =3D "gpio"; - bias-pull-up; + bias-disable; }; =20 nvme_reg_en: nvme-reg-en-state { @@ -1394,6 +1382,13 @@ wake-n-pins { }; }; =20 + sdc2_card_det_n: sdc2-card-det-state { + pins =3D "gpio71"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-up; + }; + tpad_default: tpad-default-state { pins =3D "gpio3"; function =3D "gpio"; @@ -1404,7 +1399,7 @@ ts0_default: ts0-default-state { int-n-pins { pins =3D "gpio51"; function =3D "gpio"; - bias-pull-up; + bias-disable; }; =20 reset-n-pins { @@ -1415,26 +1410,35 @@ reset-n-pins { }; }; =20 - usb_1_ss1_sbu_default: usb-1-ss1-sbu-state { - mode-pins { - pins =3D "gpio177"; + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state { + oe-n-pins { + pins =3D "gpio167"; function =3D "gpio"; - bias-disable; + bias-pull-up; + drive-strength =3D <2>; + }; + + sel-pins { + pins =3D "gpio168"; + function =3D "gpio"; + bias-pull-up; drive-strength =3D <2>; - output-high; }; =20 + }; + + usb_1_ss1_sbu_default: usb-1-ss1-sbu-state { oe-n-pins { - pins =3D "gpio179"; + pins =3D "gpio178"; function =3D "gpio"; - bias-disable; + bias-pull-up; drive-strength =3D <2>; }; =20 sel-pins { - pins =3D "gpio178"; + pins =3D "gpio179"; function =3D "gpio"; - bias-disable; + bias-pull-up; drive-strength =3D <2>; }; }; @@ -1447,17 +1451,25 @@ wcd_default: wcd-reset-n-active-state { output-low; }; =20 + wcn_bt_en: wcn-bt-en-state { + pins =3D "gpio116"; + function =3D "gpio"; + drive-strength =3D <16>; + output-low; + bias-pull-down; + }; + wcn_sw_en: wcn-sw-en-state { pins =3D "gpio214"; function =3D "gpio"; - drive-strength =3D <2>; + drive-strength =3D <16>; bias-disable; }; =20 - wcn_wlan_bt_en: wcn-wlan-bt-en-state { - pins =3D "gpio116", "gpio117"; + wcn_wlan_en: wcn-wlan-en-state { + pins =3D "gpio117"; function =3D "gpio"; - drive-strength =3D <2>; + drive-strength =3D <16>; bias-disable; }; }; @@ -1466,17 +1478,16 @@ &uart14 { status =3D "okay"; =20 bluetooth { - compatible =3D "qcom,wcn6855-bt"; + compatible =3D "qcom,wcn7850-bt"; max-speed =3D <3200000>; =20 - vddrfacmn-supply =3D <&vreg_pmu_rfa_cmn_0p8>; - vddaon-supply =3D <&vreg_pmu_aon_0p8>; + vddaon-supply =3D <&vreg_pmu_aon_0p59>; vddwlcx-supply =3D <&vreg_pmu_wlcx_0p8>; - vddwlmx-supply =3D <&vreg_pmu_wlmx_0p8>; - vddbtcmx-supply =3D <&vreg_pmu_btcmx_0p8>; + vddwlmx-supply =3D <&vreg_pmu_wlmx_0p85>; + vddrfacmn-supply =3D <&vreg_pmu_rfa_cmn>; vddrfa0p8-supply =3D <&vreg_pmu_rfa_0p8>; vddrfa1p2-supply =3D <&vreg_pmu_rfa_1p2>; - vddrfa1p8-supply =3D <&vreg_pmu_rfa_1p7>; + vddrfa1p8-supply =3D <&vreg_pmu_rfa_1p8>; }; }; =20 @@ -1509,7 +1520,7 @@ &usb_1_ss0_dwc3_hs { }; =20 &usb_1_ss0_qmpphy_out { - remote-endpoint =3D <&retimer_ss0_ss_in>; + remote-endpoint =3D <&pmic_glink_ss0_ss_in>; }; =20 &usb_1_ss1_hsphy { @@ -1522,7 +1533,7 @@ &usb_1_ss1_hsphy { }; =20 &usb_1_ss1_qmpphy { - vdda-phy-supply =3D <&vreg_l3e_1p2>; + vdda-phy-supply =3D <&vreg_l2j_1p2>; vdda-pll-supply =3D <&vreg_l2d_0p9>; =20 status =3D "okay"; @@ -1544,20 +1555,52 @@ &usb_1_ss1_qmpphy_out { remote-endpoint =3D <&pmic_glink_ss1_ss_in>; }; =20 -&usb_mp { +&usb_1_ss2 { + status =3D "okay"; +}; + +&usb_1_ss2_dwc3 { + dr_mode =3D "host"; + maximum-speed =3D "high-speed"; + phys =3D <&usb_1_ss2_hsphy>; + phy-names =3D "usb2-phy"; +}; + +&usb_1_ss2_hsphy { + vdd-supply =3D <&vreg_l3j_0p8>; + vdda12-supply =3D <&vreg_l2j_1p2>; + + phys =3D <&eusb5_repeater>; + status =3D "okay"; }; =20 -&usb_mp_dwc3 { - phys =3D <&usb_mp_hsphy0>, <&usb_mp_qmpphy0>; - phy-names =3D "usb2-0", "usb3-0"; +&usb_2 { + status =3D "okay"; +}; + +&usb_2_dwc3 { + dr_mode =3D "host"; +}; + +&usb_2_hsphy { + vdd-supply =3D <&vreg_l2e_0p8>; + vdda12-supply =3D <&vreg_l3e_1p2>; + + phys =3D <&eusb9_repeater>; + + status =3D "okay"; +}; + +&usb_mp { + status =3D "okay"; }; =20 &usb_mp_hsphy0 { vdd-supply =3D <&vreg_l2e_0p8>; vdda12-supply =3D <&vreg_l3e_1p2>; =20 - phys =3D <&eusb3_repeater>; + phys =3D <&eusb6_repeater>; =20 status =3D "okay"; }; @@ -1568,3 +1611,19 @@ &usb_mp_qmpphy0 { =20 status =3D "okay"; }; + +&usb_mp_hsphy1 { + vdd-supply =3D <&vreg_l2e_0p8>; + vdda12-supply =3D <&vreg_l3e_1p2>; + + phys =3D <&eusb3_repeater>; + + status =3D "okay"; +}; + +&usb_mp_qmpphy1 { + vdda-phy-supply =3D <&vreg_l3e_1p2>; + vdda-pll-supply =3D <&vreg_l3c_0p8>; + + status =3D "okay"; +}; --=20 2.48.1