From nobody Wed Sep 10 02:04:16 2025 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 B056330FC02 for ; Fri, 5 Sep 2025 10:41:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757068890; cv=none; b=CbvOOjBztatLnfFfAAGDuQ7qYuKyqSDVEHVfu7P34Tcm3PY/zPSAo4hMB/OLHfYuu9kTfsx3rpd+FdrgPrvny2lrr6H3uniptlm7E9QOOMBjBiD3d8diiTEIs6/H+HwrZmW8EWob6sAsmlIoqX7EhY7ejrgolpa6vgaUH0IJpNA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757068890; c=relaxed/simple; bh=fNcP4tFGG6opdpHoBhUHsEHIYunk7G4BUuPhdoXemjQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Fz7ojoeowdqUc9UypzD3Nt1h7XjY7A8ZLsVQY4ml73PTFjwu5ADzV86DerjBzoNMMwwYTPGNGpWm/1HObvhXl/7cBUz1xJDG/4dleax7ts0esoOk02upuM/3AoaobALcq1PvJbH/ClrXbp9v6MO6orgO5tZqRnEQwlDvP8wUHI0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none 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=vg2shOVT; arc=none smtp.client-ip=209.85.221.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none 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="vg2shOVT" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-3df35a67434so1124390f8f.3 for ; Fri, 05 Sep 2025 03:41:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fairphone.com; s=fair; t=1757068885; x=1757673685; 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=MFLKroqQ5UkJJf9+WH7v3dUgVBzRiKYFWq7IkyPcUfc=; b=vg2shOVTjo3O2mvGVzCTqqfgtS1Mh09fY/gYxeyx3lpVPjaVmn13VWvIfYU4RbkkQo a0l7LKleK5kseW081sg2SPsuEmbVRbpvVqTfOFoP4Nkl+QtINF49pJtgGX29/H8ePGe7 Ay6b/c7Y5LyAKm8TvzBWMtUMlR2LDyxaAg9k+HUPrGujE7EyDhWdUGILi+ZEKKK+OfVc nhJ9GyIIiv8s26z4idfwJGlUHRYb5QnIsc5yyhACKFNy/K/yU2hSpQXMIKucm52513qv 81L1kuEpsyrPEiwYbSOpbJ7VhMtKpMXx3TjltqPVhXSdMo1qq77N4Efx4c3qblnx5Aim W+MA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757068885; x=1757673685; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MFLKroqQ5UkJJf9+WH7v3dUgVBzRiKYFWq7IkyPcUfc=; b=gEyjQ/KWNb/WZkm78jGcopB+2U8qx14kNjpFt3ofJIk5tVpaW1Zd2SuHPOG5vHNVLv mOxz8A1tbXngas4ufa8ipNT681PjnqSWLMqOlhjUQM9OuttQCe8IGBn0NWZ2+8eEey9m 9YzewFZyT9EFo95FiiFxwee8mh9fxhKa/QPpQqj4QUo5zjHizVzjkuSaSaYJt9Ye/GGq Fq+Qlj9+ibJaqFTC99f2aPsdpianADHRKGcHxhoicnBi8ukBREmd9D3nUVklt02hFpxU BKkM3VLRgW7N0YVcfK0AvUt3k2DQEirFfjsNvW2W/pMb4uQsmpMIyZiPov/xLe/UsfaT qc8g== X-Forwarded-Encrypted: i=1; AJvYcCUPD9MLu2gOGMckS4sSq5ip2hYSNtCi54pVDMUV4946jN1xoosCHR4pcRVW52cdpUKcE/tlEC0vlQchuzU=@vger.kernel.org X-Gm-Message-State: AOJu0YyAasgA48WjqFkwVDIjg/MhA1KG8knyWlwczrLswYqmy6yqSN00 ib5oXRzsE20VEALt9EU+rdkJolM3SbV3659Gfs3FdfOZhalvLiJxTOzGCkSsD5LJYCI= X-Gm-Gg: ASbGncttkV5ma9lzSuSB5ZXrbiBz1iB7F02emZFCp1M3uXu2p/Rm63zugwGOsq3Sagn WE4OaONV1pwoEPulWZdfoTozAHSDjkG+Qee4AYdIdpthHgSIqr05X7Y4jjco0FGBbuplbBDozHS 0phx1Ozc1l0Yn2koymxtgw1JuL9zw1IzWQCyD3tt8rStciu8xFDZEsfYY6/jMIzHXUC159UXi1Z y3N03psYc/YDvl8jTU1MJ6In2c4jANLpvlVF3x0ILppn93yXlRnN8SkN2SEF34Nxjh4zjUo0VSP zNbhl5XZlX3WQ6XVd/+u/2FyaAqL79Dd16uFKQquCuNdyCUqYTbWbKI58dyZJXYtPSmixtd9p2m 62RG4LU+0XPnfqfOUA2eFoVe1HNYPNkE7XzsL8WHvkEVJCOjDbVEiPz0tCvlJ6hiSAY61mpAigM Wi68BdGCLBJ46dbAZDXU0vdEAgoHac+A== X-Google-Smtp-Source: AGHT+IFwv39hFI8agpZD2L9u5g1odtlDsOItw7y1Rvr6qB6ZLk6O9+Vx0K14TrcaakrrArH4/SH0AA== X-Received: by 2002:a05:6000:290d:b0:3d1:721:31c7 with SMTP id ffacd0b85a97d-3d1e03c6916mr16679842f8f.51.1757068884817; Fri, 05 Sep 2025 03:41:24 -0700 (PDT) Received: from [172.18.170.139] (ip-185-104-138-158.ptr.icomera.net. [185.104.138.158]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3d6cf485eb7sm20990738f8f.3.2025.09.05.03.41.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 03:41:24 -0700 (PDT) From: Luca Weiss Date: Fri, 05 Sep 2025 12:40:38 +0200 Subject: [PATCH v3 7/7] arm64: dts: qcom: Add The Fairphone (Gen. 6) 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: <20250905-sm7635-fp6-initial-v3-7-0117c2eff1b7@fairphone.com> References: <20250905-sm7635-fp6-initial-v3-0-0117c2eff1b7@fairphone.com> In-Reply-To: <20250905-sm7635-fp6-initial-v3-0-0117c2eff1b7@fairphone.com> To: "Rafael J. Wysocki" , Viresh Kumar , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Manivannan Sadhasivam , Herbert Xu , "David S. Miller" , Vinod Koul , Thomas Gleixner , Bjorn Andersson , Konrad Dybcio Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-pm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org, Luca Weiss X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757068857; l=21185; i=luca.weiss@fairphone.com; s=20250611; h=from:subject:message-id; bh=fNcP4tFGG6opdpHoBhUHsEHIYunk7G4BUuPhdoXemjQ=; b=+HLOH35nUsrVXoPZfw3JRvVR7mkFGVKWkIi3RUFHJocZQT8pLegCf9qwGFc46W8a249oWpjrk 9z7tyoSmMzgBuDj8HLxbHBZHuUY7pBz+7vhr6tTElNrL4Q4Q3WMdcto X-Developer-Key: i=luca.weiss@fairphone.com; a=ed25519; pk=O1aw+AAust5lEmgrNJ1Bs7PTY0fEsJm+mdkjExA69q8= Add a devicetree for The Fairphone (Gen. 6) smartphone, which is based on the Milos/SM7635 SoC. Supported functionality as of this initial submission: * Debug UART * Regulators (PM7550, PM8550VS, PMR735B, PM8008) * Remoteprocs (ADSP, CDSP, MPSS, WPSS) * Power Button, Volume Keys, Switch * PMIC-GLINK (Charger, Fuel gauge, USB-C mode switching) * Camera flash/torch LED * SD card * USB Signed-off-by: Luca Weiss --- arch/arm64/boot/dts/qcom/Makefile | 1 + arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts | 790 +++++++++++++++++++= ++++ 2 files changed, 791 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 0a7c308dec365263bbb7aa5f5cd306dbeacfd3f1..a4223770b755461821c7688cda6= fde7dc3ae555d 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -30,6 +30,7 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp449.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp453.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D ipq9574-rdp454.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D lemans-evk.dtb +dtb-$(CONFIG_ARCH_QCOM) +=3D milos-fairphone-fp6.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8216-samsung-fortuna3g.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-acer-a1-724.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-alcatel-idol347.dtb diff --git a/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts b/arch/arm64/= boot/dts/qcom/milos-fairphone-fp6.dts new file mode 100644 index 0000000000000000000000000000000000000000..52895dd9e4fa117aef6822df230= ebf644e5f02ba --- /dev/null +++ b/arch/arm64/boot/dts/qcom/milos-fairphone-fp6.dts @@ -0,0 +1,790 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2025, Luca Weiss + */ + +/dts-v1/; + +#define PMIV0104_SID 7 + +#include +#include +#include +#include "milos.dtsi" +#include "pm7550.dtsi" +#include "pm8550vs.dtsi" +#include "pmiv0104.dtsi" /* PMIV0108 */ +#include "pmk8550.dtsi" /* PMK7635 */ +#include "pmr735b.dtsi" + +/ { + model =3D "The Fairphone (Gen. 6)"; + compatible =3D "fairphone,fp6", "qcom,milos"; + chassis-type =3D "handset"; + + aliases { + serial0 =3D &uart5; + }; + + gpio-keys { + compatible =3D "gpio-keys"; + + pinctrl-0 =3D <&volume_up_default>; + pinctrl-names =3D "default"; + + key-volume-up { + label =3D "Volume Up"; + gpios =3D <&pm7550_gpios 6 GPIO_ACTIVE_LOW>; + linux,code =3D ; + }; + + switch { + label =3D "Switch"; + gpios =3D <&tlmm 107 GPIO_ACTIVE_HIGH>; + linux,input-type =3D ; + linux,code =3D ; + }; + }; + + pmic-glink { + compatible =3D "qcom,milos-pmic-glink", + "qcom,sm8550-pmic-glink", + "qcom,pmic-glink"; + #address-cells =3D <1>; + #size-cells =3D <0>; + orientation-gpios =3D <&tlmm 131 GPIO_ACTIVE_HIGH>; + + connector@0 { + compatible =3D "usb-c-connector"; + reg =3D <0>; + + power-role =3D "dual"; + data-role =3D "dual"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + pmic_glink_hs_in: endpoint { + remote-endpoint =3D <&usb_1_dwc3_hs>; + }; + }; + }; + }; + }; + + vreg_ff_afvdd_2p8: regulator-ff-afvdd-2p8 { + compatible =3D "regulator-fixed"; + regulator-name =3D "ff_afvdd_2p8"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + startup-delay-us =3D <100>; + + gpio =3D <&tlmm 93 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vreg_bob>; + }; + + vreg_uw_afvdd_2p8: regulator-uw-afvdd-2p8 { + compatible =3D "regulator-fixed"; + regulator-name =3D "uw_afvdd_2p8"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + startup-delay-us =3D <100>; + + gpio =3D <&tlmm 23 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vreg_bob>; + }; + + vreg_uw_dvdd: regulator-uw-dvdd { + compatible =3D "regulator-fixed"; + regulator-name =3D "uw_dvdd"; + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <1200000>; + startup-delay-us =3D <100>; + + gpio =3D <&tlmm 28 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vreg_s1b>; + }; + + vreg_ois_avdd0_1p8: regulator-ois-avdd0-1p8 { + compatible =3D "regulator-fixed"; + regulator-name =3D "ois_avdd0_1p8"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + startup-delay-us =3D <100>; + + gpio =3D <&tlmm 27 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vreg_bob>; + }; + + vreg_ois_vdd: regulator-ois-vdd { + compatible =3D "regulator-fixed"; + regulator-name =3D "ois_vdd"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + startup-delay-us =3D <100>; + + gpio =3D <&tlmm 24 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vph_pwr>; + }; + + vreg_oled_dvdd_1p2: regulator-oled-dvdd-1p2 { + compatible =3D "regulator-fixed"; + regulator-name =3D "oled_dvdd_1p2"; + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <1200000>; + + gpio =3D <&tlmm 54 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vreg_s2b>; + + regulator-boot-on; + }; + + vreg_s1j: regulator-pm3001a-s1j { + compatible =3D "regulator-fixed"; + regulator-name =3D "pm3001a_s1j"; + regulator-min-microvolt =3D <2200000>; + regulator-max-microvolt =3D <2200000>; + startup-delay-us =3D <1000>; + + gpio =3D <&pmr735b_gpios 1 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vph_pwr>; + + pinctrl-0 =3D <&s1j_enable_default>; + pinctrl-names =3D "default"; + }; + + vreg_vtof_ldo_3p3: regulator-vtof-ldo-3p3 { + compatible =3D "regulator-fixed"; + regulator-name =3D "vtof_ldo_3p3"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + startup-delay-us =3D <100>; + + gpio =3D <&tlmm 76 GPIO_ACTIVE_HIGH>; + enable-active-high; + + vin-supply =3D <&vph_pwr>; + }; + + vph_pwr: regulator-vph-pwr { + compatible =3D "regulator-fixed"; + + regulator-name =3D "vph_pwr"; + regulator-min-microvolt =3D <3700000>; + regulator-max-microvolt =3D <3700000>; + + regulator-always-on; + regulator-boot-on; + }; + + thermal-zones { + pm8008-thermal { + polling-delay-passive =3D <100>; + thermal-sensors =3D <&pm8008>; + + trips { + trip0 { + temperature =3D <95000>; + hysteresis =3D <0>; + type =3D "passive"; + }; + + trip1 { + temperature =3D <115000>; + hysteresis =3D <0>; + type =3D "critical"; + }; + }; + }; + }; +}; + +&apps_rsc { + regulators-0 { + compatible =3D "qcom,pm7550-rpmh-regulators"; + + vdd-l1-supply =3D <&vreg_s1b>; + vdd-l2-l3-supply =3D <&vreg_s3b>; + vdd-l4-l5-supply =3D <&vreg_s2b>; + vdd-l6-supply =3D <&vreg_s2b>; + vdd-l7-supply =3D <&vreg_s1b>; + vdd-l8-supply =3D <&vreg_s1b>; + vdd-l9-l10-supply =3D <&vreg_s1b>; + vdd-l11-supply =3D <&vreg_s1b>; + vdd-l12-l14-supply =3D <&vreg_bob>; + vdd-l13-l16-supply =3D <&vreg_bob>; + vdd-l15-l17-l18-l19-l20-l21-l22-l23-supply =3D <&vreg_bob>; + vdd-s1-supply =3D <&vph_pwr>; + vdd-s2-supply =3D <&vph_pwr>; + vdd-s3-supply =3D <&vph_pwr>; + vdd-s4-supply =3D <&vph_pwr>; + vdd-s5-supply =3D <&vph_pwr>; + vdd-s6-supply =3D <&vph_pwr>; + + qcom,pmic-id =3D "b"; + + vreg_s1b: smps1 { + regulator-name =3D "vreg_s1b"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <2080000>; + regulator-initial-mode =3D ; + }; + + vreg_s2b: smps2 { + regulator-name =3D "vreg_s2b"; + regulator-min-microvolt =3D <1256000>; + regulator-max-microvolt =3D <1408000>; + regulator-initial-mode =3D ; + }; + + vreg_s3b: smps3 { + regulator-name =3D "vreg_s3b"; + regulator-min-microvolt =3D <880000>; + regulator-max-microvolt =3D <1040000>; + regulator-initial-mode =3D ; + }; + + vreg_l2b: ldo2 { + regulator-name =3D "vreg_l2b"; + regulator-min-microvolt =3D <880000>; + regulator-max-microvolt =3D <912000>; + regulator-initial-mode =3D ; + }; + + vreg_l3b: ldo3 { + regulator-name =3D "vreg_l3b"; + regulator-min-microvolt =3D <880000>; + regulator-max-microvolt =3D <912000>; + regulator-initial-mode =3D ; + }; + + vreg_l4b: ldo4 { + regulator-name =3D "vreg_l4b"; + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <1200000>; + regulator-initial-mode =3D ; + }; + + vreg_l5b: ldo5 { + regulator-name =3D "vreg_l5b"; + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <1200000>; + regulator-initial-mode =3D ; + }; + + vreg_l7b: ldo7 { + regulator-name =3D "vreg_l7b"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l8b: ldo8 { + regulator-name =3D "vreg_l8b"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l9b: ldo9 { + regulator-name =3D "vreg_l9b"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l10b: ldo10 { + regulator-name =3D "vreg_l10b"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l11b: ldo11 { + regulator-name =3D "vreg_l11b"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l12b: ldo12 { + regulator-name =3D "vreg_l12b"; + /* + * Skip voltage voting for UFS VCC. + */ + regulator-initial-mode =3D ; + }; + + vreg_l13b: ldo13 { + regulator-name =3D "vreg_l13b"; + regulator-min-microvolt =3D <2700000>; + regulator-max-microvolt =3D <3300000>; + regulator-initial-mode =3D ; + }; + + vreg_l14b: ldo14 { + regulator-name =3D "vreg_l14b"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3304000>; + regulator-initial-mode =3D ; + }; + + vreg_l15b: ldo15 { + regulator-name =3D "vreg_l15b"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3304000>; + regulator-initial-mode =3D ; + }; + + vreg_l16b: ldo16 { + regulator-name =3D "vreg_l16b"; + regulator-min-microvolt =3D <3008000>; + regulator-max-microvolt =3D <3008000>; + regulator-initial-mode =3D ; + }; + + vreg_l17b: ldo17 { + regulator-name =3D "vreg_l17b"; + regulator-min-microvolt =3D <3104000>; + regulator-max-microvolt =3D <3104000>; + regulator-initial-mode =3D ; + }; + + vreg_l18b: ldo18 { + regulator-name =3D "vreg_l18b"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + regulator-initial-mode =3D ; + }; + + vreg_l19b: ldo19 { + regulator-name =3D "vreg_l19b"; + regulator-min-microvolt =3D <3000000>; + regulator-max-microvolt =3D <3000000>; + regulator-initial-mode =3D ; + }; + + vreg_l20b: ldo20 { + regulator-name =3D "vreg_l20b"; + regulator-min-microvolt =3D <1620000>; + regulator-max-microvolt =3D <3544000>; + regulator-initial-mode =3D ; + }; + + vreg_l21b: ldo21 { + regulator-name =3D "vreg_l21b"; + regulator-min-microvolt =3D <1620000>; + regulator-max-microvolt =3D <3544000>; + regulator-initial-mode =3D ; + }; + + vreg_l22b: ldo22 { + regulator-name =3D "vreg_l22b"; + regulator-min-microvolt =3D <3200000>; + regulator-max-microvolt =3D <3200000>; + regulator-initial-mode =3D ; + }; + + vreg_l23b: ldo23 { + regulator-name =3D "vreg_l23b"; + regulator-min-microvolt =3D <1650000>; + regulator-max-microvolt =3D <3544000>; + regulator-initial-mode =3D ; + }; + + vreg_bob: bob { + regulator-name =3D "vreg_bob"; + regulator-min-microvolt =3D <3008000>; + regulator-max-microvolt =3D <3960000>; + regulator-initial-mode =3D ; + }; + }; + + regulators-1 { + compatible =3D "qcom,pm8550vs-rpmh-regulators"; + + vdd-l1-supply =3D <&vreg_s3b>; + vdd-l3-supply =3D <&vreg_s3b>; + + qcom,pmic-id =3D "c"; + + vreg_l2c: ldo2 { + regulator-name =3D "vreg_l2c"; + regulator-min-microvolt =3D <320000>; + regulator-max-microvolt =3D <650000>; + regulator-initial-mode =3D ; + }; + }; + + regulators-2 { + compatible =3D "qcom,pmr735b-rpmh-regulators"; + + vdd-l1-l2-supply=3D <&vreg_s3b>; + vdd-l3-supply=3D <&vreg_s3b>; + vdd-l4-supply=3D <&vreg_s1b>; + vdd-l5-supply=3D <&vreg_s2b>; + vdd-l6-supply=3D <&vreg_s2b>; + vdd-l7-l8-supply=3D <&vreg_s2b>; + vdd-l9-supply=3D <&vreg_s3b>; + vdd-l10-supply=3D <&vreg_s1b>; + vdd-l11-supply=3D <&vreg_s3b>; + vdd-l12-supply=3D <&vreg_s3b>; + + qcom,pmic-id =3D "f"; + + vreg_l1f: ldo1 { + regulator-name =3D "vreg_l1f"; + regulator-min-microvolt =3D <852000>; + regulator-max-microvolt =3D <950000>; + regulator-initial-mode =3D ; + }; + + vreg_l2f: ldo2 { + regulator-name =3D "vreg_l2f"; + regulator-min-microvolt =3D <751000>; + regulator-max-microvolt =3D <824000>; + regulator-initial-mode =3D ; + }; + + vreg_l3f: ldo3 { + regulator-name =3D "vreg_l3f"; + regulator-min-microvolt =3D <650000>; + regulator-max-microvolt =3D <880000>; + regulator-initial-mode =3D ; + }; + + vreg_l4f: ldo4 { + regulator-name =3D "vreg_l4f"; + regulator-min-microvolt =3D <1700000>; + regulator-max-microvolt =3D <1950000>; + regulator-initial-mode =3D ; + }; + + vreg_l5f: ldo5 { + regulator-name =3D "vreg_l5f"; + regulator-min-microvolt =3D <1140000>; + regulator-max-microvolt =3D <1260000>; + regulator-initial-mode =3D ; + }; + + vreg_l6f: ldo6 { + regulator-name =3D "vreg_l6f"; + regulator-min-microvolt =3D <1200000>; + regulator-max-microvolt =3D <1200000>; + regulator-initial-mode =3D ; + }; + + vreg_l7f: ldo7 { + regulator-name =3D "vreg_l7f"; + regulator-min-microvolt =3D <1080000>; + regulator-max-microvolt =3D <1350000>; + regulator-initial-mode =3D ; + }; + + vreg_l8f: ldo8 { + regulator-name =3D "vreg_l8f"; + regulator-min-microvolt =3D <1100000>; + regulator-max-microvolt =3D <1320000>; + regulator-initial-mode =3D ; + }; + + vreg_l9f: ldo9 { + regulator-name =3D "vreg_l9f"; + regulator-min-microvolt =3D <870000>; + regulator-max-microvolt =3D <970000>; + regulator-initial-mode =3D ; + }; + + vreg_l10f: ldo10 { + regulator-name =3D "vreg_l10f"; + regulator-min-microvolt =3D <1500000>; + regulator-max-microvolt =3D <1800000>; + regulator-initial-mode =3D ; + }; + + vreg_l11f: ldo11 { + regulator-name =3D "vreg_l11f"; + regulator-min-microvolt =3D <320000>; + regulator-max-microvolt =3D <864000>; + regulator-initial-mode =3D ; + }; + }; +}; + +&gcc { + protected-clocks =3D , , + , , + , , + , , + , , + , ; +}; + +&i2c1 { + /* Samsung NFC @ 0x27 */ + + status =3D "okay"; +}; + +&i2c3 { + /* AW88261FCR amplifier (top) @ 0x34 */ + /* AW88261FCR amplifier (bottom) @ 0x35 */ + + status =3D "okay"; +}; + +&i2c7 { + status =3D "okay"; + + pm8008: pmic@8 { + compatible =3D "qcom,pm8008"; + reg =3D <0x8>; + + interrupts-extended =3D <&tlmm 125 IRQ_TYPE_EDGE_RISING>; + reset-gpios =3D <&pmr735b_gpios 3 GPIO_ACTIVE_LOW>; + + vdd-l1-l2-supply =3D <&vreg_s2b>; + vdd-l3-l4-supply =3D <&vreg_bob>; + vdd-l5-supply =3D <&vreg_bob>; + vdd-l6-supply =3D <&vreg_s1b>; + vdd-l7-supply =3D <&vreg_bob>; + + pinctrl-0 =3D <&pm8008_int_default>, <&pm8008_reset_n_default>; + pinctrl-names =3D "default"; + + gpio-controller; + #gpio-cells =3D <2>; + gpio-ranges =3D <&pm8008 0 0 2>; + + interrupt-controller; + #interrupt-cells =3D <2>; + + #thermal-sensor-cells =3D <0>; + + regulators { + vreg_l1p: ldo1 { + regulator-name =3D "vreg_l1p"; + regulator-min-microvolt =3D <1000000>; + regulator-max-microvolt =3D <1200000>; + }; + + vreg_l2p: ldo2 { + regulator-name =3D "vreg_l2p"; + regulator-min-microvolt =3D <950000>; + regulator-max-microvolt =3D <1144000>; + }; + + vreg_l3p: ldo3 { + regulator-name =3D "vreg_l3p"; + regulator-min-microvolt =3D <2700000>; + regulator-max-microvolt =3D <3000000>; + }; + + vreg_l4p: ldo4 { + regulator-name =3D "vreg_l4p"; + regulator-min-microvolt =3D <2700000>; + regulator-max-microvolt =3D <2900000>; + }; + + vreg_l5p: ldo5 { + regulator-name =3D "vreg_l5p"; + regulator-min-microvolt =3D <2704000>; + regulator-max-microvolt =3D <2900000>; + }; + + vreg_l6p: ldo6 { + regulator-name =3D "vreg_l6p"; + regulator-min-microvolt =3D <1700000>; + regulator-max-microvolt =3D <1896000>; + }; + + vreg_l7p: ldo7 { + regulator-name =3D "vreg_l7p"; + regulator-min-microvolt =3D <2700000>; + regulator-max-microvolt =3D <3400000>; + }; + }; + }; + + /* VL53L3 ToF @ 0x29 */ + /* AW86938FCR vibrator @ 0x5a */ +}; + +&pm8550vs_c { + status =3D "okay"; +}; + +&pmiv0104_eusb2_repeater { + vdd18-supply =3D <&vreg_l7b>; + vdd3-supply =3D <&vreg_l17b>; + + qcom,tune-res-fsdif =3D /bits/ 8 <0x5>; + qcom,tune-usb2-amplitude =3D /bits/ 8 <0x8>; + qcom,tune-usb2-disc-thres =3D /bits/ 8 <0x7>; + qcom,tune-usb2-preem =3D /bits/ 8 <0x6>; +}; + +&pmr735b_gpios { + s1j_enable_default: s1j-enable-default-state { + pins =3D "gpio1"; + function =3D PMIC_GPIO_FUNC_NORMAL; + power-source =3D <0>; + bias-disable; + output-low; + }; + + pm8008_reset_n_default: pm8008-reset-n-default-state { + pins =3D "gpio3"; + function =3D PMIC_GPIO_FUNC_NORMAL; + bias-pull-down; + }; +}; + +&pm7550_gpios { + volume_up_default: volume-up-default-state { + pins =3D "gpio6"; + function =3D PMIC_GPIO_FUNC_NORMAL; + power-source =3D <1>; + bias-pull-up; + }; +}; + +&pm7550_flash { + status =3D "okay"; + + led-0 { + function =3D LED_FUNCTION_FLASH; + color =3D ; + led-sources =3D <1>, <4>; + led-max-microamp =3D <350000>; + flash-max-microamp =3D <1500000>; + flash-max-timeout-us =3D <400000>; + }; +}; + +&pon_pwrkey { + status =3D "okay"; +}; + +&pon_resin { + linux,code =3D ; + + status =3D "okay"; +}; + +&qupv3_id_0 { + status =3D "okay"; +}; + +&qupv3_id_1 { + status =3D "okay"; +}; + +&remoteproc_adsp { + firmware-name =3D "qcom/milos/fairphone/fp6/adsp.mbn", + "qcom/milos/fairphone/fp6/adsp_dtb.mbn"; + + status =3D "okay"; +}; + +&remoteproc_cdsp { + firmware-name =3D "qcom/milos/fairphone/fp6/cdsp.mbn", + "qcom/milos/fairphone/fp6/cdsp_dtb.mbn"; + + status =3D "okay"; +}; + +&remoteproc_mpss { + firmware-name =3D "qcom/milos/fairphone/fp6/modem.mbn"; + + status =3D "okay"; +}; + +&remoteproc_wpss { + firmware-name =3D "qcom/milos/fairphone/fp6/wpss.mbn"; + + status =3D "okay"; +}; + +&sdhc_2 { + cd-gpios =3D <&tlmm 65 GPIO_ACTIVE_HIGH>; + + vmmc-supply =3D <&vreg_l13b>; + vqmmc-supply =3D <&vreg_l23b>; + no-sdio; + no-mmc; + + pinctrl-0 =3D <&sdc2_default>, <&sdc2_card_det_n>; + pinctrl-1 =3D <&sdc2_sleep>, <&sdc2_card_det_n>; + pinctrl-names =3D "default", "sleep"; + + status =3D "okay"; +}; + +&spi0 { + /* Eswin EPH8621 touchscreen @ 0 */ +}; + +&tlmm { + gpio-reserved-ranges =3D <8 4>, /* Fingerprint SPI */ + <13 1>, /* NC */ + <63 2>; /* WLAN UART */ + + sdc2_card_det_n: sdc2-card-det-state { + pins =3D "gpio65"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-up; + }; + + pm8008_int_default: pm8008-int-default-state { + pins =3D "gpio125"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; +}; + +&uart5 { + status =3D "okay"; +}; + +&usb_1 { + dr_mode =3D "otg"; + + /* USB 2.0 only, HW does not support USB 3.x */ + qcom,select-utmi-as-pipe-clk; + + status =3D "okay"; +}; + +&usb_1_dwc3_hs { + remote-endpoint =3D <&pmic_glink_hs_in>; +}; + +&usb_1_hsphy { + vdd-supply =3D <&vreg_l2b>; + vdda12-supply =3D <&vreg_l4b>; + + phys =3D <&pmiv0104_eusb2_repeater>; + + status =3D "okay"; +}; --=20 2.51.0