From nobody Wed Feb 11 02:11:08 2026 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 E6529394483 for ; Fri, 16 Jan 2026 14:50:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768575058; cv=none; b=NbnH4ZS3Y/7ndHmSx8i99Pv66Rljq/EDnj3mmxgptdS/QjTj21MJ3s0chSELh5/CAinoWyI+mCMCVPL0NESWgGelRXZDI8ZIsEa2rJaR7DnL4+vlUcu9AutUSWJd8V6+J84RLRineqPYbkWghGsYfjrkG0fsGQAK5wOweHL78Jw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768575058; c=relaxed/simple; bh=ECsvfV6QjoeNkmRwISP9U3VOBdhyVRqc0C5tYiyxtrY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K1qc0jMf8LrB5sK02ISf5XQvW/a+jEySlyKywvw2BpYW9ivqKyxw2INXIeqDLHgaqKRbE9Xu4YYLOzGKBFfWYETPTvQVsOAHwN8IQ/lxVkZUec+ssiz1+W9iu3ptsbA9axCIbbPYBRzpRuN/Xu0KiMHVmWlGSuoBzmWuLcy6w8w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=fairphone.com; spf=pass smtp.mailfrom=fairphone.com; dkim=pass (2048-bit key) header.d=fairphone.com header.i=@fairphone.com header.b=cJEbdhGH; arc=none smtp.client-ip=209.85.218.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=fairphone.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fairphone.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=fairphone.com header.i=@fairphone.com header.b="cJEbdhGH" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-b871cfb49e6so358794966b.1 for ; Fri, 16 Jan 2026 06:50:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fairphone.com; s=fair; t=1768575054; x=1769179854; 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=aTdhlSQh9bgg1HQ8ddUGd/f3OaTyJXLPCOZMlEFvb88=; b=cJEbdhGHH6rxy3wFK9xhsc8KeJo9SeDaEyRWz2v7hb16lEPBaJadWBvfmWmzeYf422 qyYgCba9F+SVxSKre2PK+WlgVBcDEMKTkjglfXHb0hRcUJlKsxXiQ+i3v6wTMMa19ubO NMZnBQXuhfDtVimOUeeqdDwLyANbHuu69lt91AXs3jp5pNXPHfW0oAdSJYhKm5kYJ6wh ddsr5TNu1WgYMLokkLzPRj1NI3E868nANpmLOxsRbH3X6DrRslJBRYcA98gz6yYdHqMP uCebs3Ck/C2xvAzCcWf8TDtL5bkNZm+bnX/FJDzqwK6JS673AfF18FUzrwXKeGhN0Rbb JXfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768575054; x=1769179854; 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=aTdhlSQh9bgg1HQ8ddUGd/f3OaTyJXLPCOZMlEFvb88=; b=fipPJ2h0wzBNpGfkG9of4txKnmOEw6SmChF5u9oOWHstezdCID4wa+28xIogTV3qHV MiXg24AYsQXhLcxu5D89ljHMrU9kjWPl3xr/Jw9ExAp913r3Z7OlQA3XkfiR3wZCwuQ5 bGtxAERNYVyo+hRurYueKns2u7Ji98o9WjTnsH+9ugqx/+ibCv/MgwyUjLkH+onmwKTg gSGTVoDiZ2jvDV6bgoDKFmk6/8KDJxITzG9emilZRm7iPq6zgdLplMQBm9VSEmRnZMeI xk9WPyWIZZYG44sHdr6UpThP9HxFkSxMEWoz/59XAGWSois8mjpf3su+HdcTSeqdCRYS OcEQ== X-Forwarded-Encrypted: i=1; AJvYcCU+lU3Ea8j006tF0Wj6Dvi+adUMH5fV4uRsrqARotHY6h3HLVHQG3xSsjyz1RKxlOItKbjq0JmYCVCsMk8=@vger.kernel.org X-Gm-Message-State: AOJu0Yz6Z02NO8CZOUq2WeCbBSvvQjtT+xHAY4CkxLdmreT74xK6Z/E6 /TlC+MV4Ku13+N8gB0EI3hvWgyy99vzGUVhJQI31C2i9uIhsXLMUbDAqVm63SQirENM= X-Gm-Gg: AY/fxX78acHeExzXrRQmbXfEwX8urb4GRyaazUZ23GE6SqsOLZ+9njO6O8zIWUbdEi2 5fTOyxyRAD82MBFVYR/8opwdYrVgYCMIEqSu2fxehzZ2ZXyutbyzA4OzYvY3RpDS7Tj/la0IUtq XZuWfJQHXJjaQG8wWesn2PfDmj8OjT7p5XqFOdc7ywY7yTtxiw2ZHFg2WEHoLQzorjHl4thhBjZ fyx0KGQkE6kOtLPkpqWsUeb2K+MnW4n2Ca5aFanMp2PeNsJFlJUxoTEWYT7dY101OlzxU2LSr4y pf92GnuEdMRieIayuq4FFjaQMKKViVw9DzdlZ4A2GOp0343099IRgaS0iUfeNFCgNaAAlrQYvT3 DgNnvUDpweZUbTGwVVexzK16jlLPgY1M1KwRxeA9ESHbIXhswJsuDDzVhiHfm2/E3hK8+Dci0sc EJ+nLIpMuNvwxGdeFIriNf8Gg4eN5pWNDxRgfDThd6pHnRZxV3nkz1Q1iKTj9jJ5I1 X-Received: by 2002:a17:907:c1d:b0:b87:205c:1aa7 with SMTP id a640c23a62f3a-b8796b7933cmr215966066b.44.1768575054091; Fri, 16 Jan 2026 06:50:54 -0800 (PST) Received: from [172.16.240.99] (144-178-202-138.static.ef-service.nl. [144.178.202.138]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-65452cdab55sm2699427a12.10.2026.01.16.06.50.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 16 Jan 2026 06:50:53 -0800 (PST) From: Luca Weiss Date: Fri, 16 Jan 2026 15:50:50 +0100 Subject: [PATCH 4/5] arm64: dts: qcom: milos-fairphone-fp6: Enable Bluetooth 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: <20260116-milos-fp6-bt-wifi-v1-4-27b4fbb77e9c@fairphone.com> References: <20260116-milos-fp6-bt-wifi-v1-0-27b4fbb77e9c@fairphone.com> In-Reply-To: <20260116-milos-fp6-bt-wifi-v1-0-27b4fbb77e9c@fairphone.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alexander Koskovich Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Luca Weiss X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1768575048; l=5608; i=luca.weiss@fairphone.com; s=20250611; h=from:subject:message-id; bh=ECsvfV6QjoeNkmRwISP9U3VOBdhyVRqc0C5tYiyxtrY=; b=7lXxhGjRCr8WtGvgaxkho7Yp5VCGBVEM1BfXLvX3i4NOkj71PFC7pJhHndMs9D7l76s8W1jyk JCu5+QRmj+eC4ATaX1KTJhRG/53uz8hwmtEGWI8EctBQWPPiQRLie0C X-Developer-Key: i=luca.weiss@fairphone.com; a=ed25519; pk=O1aw+AAust5lEmgrNJ1Bs7PTY0fEsJm+mdkjExA69q8= Add the nodes to describe the WCN6755 chip with its PMU and Bluetooth parts. Thanks to Alexander Koskovich for helping with the bringup, adding 'clocks' to the PMU node to make Bluetooth work. Signed-off-by: Luca Weiss Reviewed-by: Dmitry Baryshkov --- arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts | 174 +++++++++++++++++++= ++++ 1 file changed, 174 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts b/arch/arm64/= boot/dts/qcom/milos-fairphone-fp6.dts index 52895dd9e4fa..cbe1507b0aaa 100644 --- a/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts +++ b/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts @@ -24,6 +24,7 @@ / { =20 aliases { serial0 =3D &uart5; + serial1 =3D &uart11; }; =20 gpio-keys { @@ -215,6 +216,67 @@ trip1 { }; }; }; + + wcn6750-pmu { + compatible =3D "qcom,wcn6750-pmu"; /* WCN6755 */ + + vddaon-supply =3D <&vreg_s3b>; + vddasd-supply =3D <&vreg_l7b>; + vddpmu-supply =3D <&vreg_s3b>; + vddrfa0p8-supply =3D <&vreg_s3b>; + vddrfa1p2-supply =3D <&vreg_s2b>; + vddrfa1p7-supply =3D <&vreg_s1b>; + vddrfa2p2-supply =3D <&vreg_s1j>; + + bt-enable-gpios =3D <&tlmm 53 GPIO_ACTIVE_HIGH>; + + clocks =3D <&rpmhcc RPMH_RF_CLK1>; + + pinctrl-0 =3D <&bluetooth_enable_default>; + pinctrl-names =3D "default"; + + regulators { + vreg_pmu_rfa_cmn: ldo0 { + regulator-name =3D "vreg_pmu_rfa_cmn"; + }; + + vreg_pmu_aon_0p59: ldo1 { + regulator-name =3D "vreg_pmu_aon_0p59"; + }; + + vreg_pmu_wlcx_0p8: ldo2 { + regulator-name =3D "vreg_pmu_wlcx_0p8"; + }; + + vreg_pmu_wlmx_0p85: ldo3 { + regulator-name =3D "vreg_pmu_wlmx_0p85"; + }; + + vreg_pmu_btcmx_0p85: ldo4 { + regulator-name =3D "vreg_pmu_btcmx_0p85"; + }; + + vreg_pmu_rfa_0p8: ldo5 { + regulator-name =3D "vreg_pmu_rfa_0p8"; + }; + + vreg_pmu_rfa_1p2: ldo6 { + regulator-name =3D "vreg_pmu_rfa_1p2"; + }; + + vreg_pmu_rfa_1p7: ldo7 { + regulator-name =3D "vreg_pmu_rfa_1p7"; + }; + + vreg_pmu_pcie_0p9: ldo8 { + regulator-name =3D "vreg_pmu_pcie_0p9"; + }; + + vreg_pmu_pcie_1p8: ldo9 { + regulator-name =3D "vreg_pmu_pcie_1p8"; + }; + }; + }; }; =20 &apps_rsc { @@ -690,6 +752,39 @@ &pon_resin { status =3D "okay"; }; =20 +&qup_uart11_cts { + /* + * Configure a bias-bus-hold on CTS to lower power + * usage when Bluetooth is turned off. Bus hold will + * maintain a low power state regardless of whether + * the Bluetooth module drives the pin in either + * direction or leaves the pin fully unpowered. + */ + bias-bus-hold; +}; + +&qup_uart11_rts { + /* We'll drive RTS, so no pull */ + drive-strength =3D <2>; + bias-disable; +}; + +&qup_uart11_rx { + /* + * Configure a pull-up on RX. This is needed to avoid + * garbage data when the TX pin of the Bluetooth module is + * in tri-state (module powered off or not driving the + * signal yet). + */ + bias-pull-up; +}; + +&qup_uart11_tx { + /* We'll drive TX, so no pull */ + drive-strength =3D <2>; + bias-disable; +}; + &qupv3_id_0 { status =3D "okay"; }; @@ -748,6 +843,59 @@ &tlmm { <13 1>, /* NC */ <63 2>; /* WLAN UART */ =20 + qup_uart11_sleep_cts: qup-uart11-sleep-cts-state { + pins =3D "gpio48"; + function =3D "gpio"; + /* + * Configure a bias-bus-hold on CTS to lower power + * usage when Bluetooth is turned off. Bus hold will + * maintain a low power state regardless of whether + * the Bluetooth module drives the pin in either + * direction or leaves the pin fully unpowered. + */ + bias-bus-hold; + }; + + qup_uart11_sleep_rts: qup-uart11-sleep-rts-state { + pins =3D "gpio49"; + function =3D "gpio"; + /* + * Configure pull-down on RTS. As RTS is active low + * signal, pull it low to indicate the BT SoC that it + * can wakeup the system anytime from suspend state by + * pulling RX low (by sending wakeup bytes). + */ + bias-pull-down; + }; + + qup_uart11_sleep_tx: qup-uart11-sleep-tx-state { + pins =3D "gpio50"; + function =3D "gpio"; + /* + * Configure pull-up on TX when it isn't actively driven + * to prevent BT SoC from receiving garbage during sleep. + */ + bias-pull-up; + }; + + qup_uart11_sleep_rx: qup-uart11-sleep-rx-state { + pins =3D "gpio51"; + function =3D "gpio"; + /* + * Configure a pull-up on RX. This is needed to avoid + * garbage data when the TX pin of the Bluetooth module + * is floating which may cause spurious wakeups. + */ + bias-pull-up; + }; + + bluetooth_enable_default: bluetooth-enable-default-state { + pins =3D "gpio53"; + function =3D "gpio"; + output-low; + bias-disable; + }; + sdc2_card_det_n: sdc2-card-det-state { pins =3D "gpio65"; function =3D "gpio"; @@ -767,6 +915,32 @@ &uart5 { status =3D "okay"; }; =20 +&uart11 { + /delete-property/ interrupts; + interrupts-extended =3D <&intc GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH 0>, + <&tlmm 51 IRQ_TYPE_EDGE_FALLING>; + + pinctrl-1 =3D <&qup_uart11_sleep_cts>, + <&qup_uart11_sleep_rts>, + <&qup_uart11_sleep_tx>, + <&qup_uart11_sleep_rx>; + pinctrl-names =3D "default", + "sleep"; + + status =3D "okay"; + + bluetooth { + compatible =3D "qcom,wcn6750-bt"; /* WCN6755 */ + + vddrfacmn-supply =3D <&vreg_pmu_rfa_cmn>; + vddaon-supply =3D <&vreg_pmu_aon_0p59>; + vddbtcmx-supply =3D <&vreg_pmu_btcmx_0p85>; + vddrfa0p8-supply =3D <&vreg_pmu_rfa_0p8>; + vddrfa1p7-supply =3D <&vreg_pmu_rfa_1p7>; + vddrfa1p2-supply =3D <&vreg_pmu_rfa_1p2>; + }; +}; + &usb_1 { dr_mode =3D "otg"; =20 --=20 2.52.0