Device tree files for OnePlus 9 and 9 Pro. Details of supported features
mentioned in the cover letter for this patch series, but for
accessibility also repeated here:

- USB OTG
- UFS
- Framebuffer display
- Touchscreen (for lemonade)
- Power & volume down keys
- Battery reading
- Modem, IPA, and remoteproc bringup

Steps to get booting:

- Wipe dtbo partition
- Flash vbmeta with disabled verity bit
- Flash kernel and initfs to boot partition with CLI args pd_ignore_unused
and clk_ignore_unused as v1 bootimg
- Flash rootfs to some other partition (probably super or userdata)

Reviewed-by: Caleb Connolly <[email protected]>
Signed-off-by: Nia Espera <[email protected]>
---
 arch/arm64/boot/dts/qcom/Makefile                  |    2 +
 .../arm64/boot/dts/qcom/sm8350-oneplus-common.dtsi | 1088 ++++++++++++++++++++
 .../boot/dts/qcom/sm8350-oneplus-lemonade.dts      |   85 ++
 .../boot/dts/qcom/sm8350-oneplus-lemonadep.dts     |   20 +
 4 files changed, 1195 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/Makefile 
b/arch/arm64/boot/dts/qcom/Makefile
index 2cca20563a1d..369ad4721b29 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -211,6 +211,8 @@ dtb-$(CONFIG_ARCH_QCOM)     += sm8250-xiaomi-elish-csot.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8350-hdk.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8350-microsoft-surface-duo2.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8350-mtp.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sm8350-oneplus-lemonade.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sm8350-oneplus-lemonadep.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8350-sony-xperia-sagami-pdx214.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8350-sony-xperia-sagami-pdx215.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sm8450-hdk.dtb
diff --git a/arch/arm64/boot/dts/qcom/sm8350-oneplus-common.dtsi 
b/arch/arm64/boot/dts/qcom/sm8350-oneplus-common.dtsi
new file mode 100644
index 000000000000..dd560035d2b5
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8350-oneplus-common.dtsi
@@ -0,0 +1,1088 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2023 Igalia S.L.
+ * Authors:
+ *     Nia Espera <[email protected]>
+ */
+
+#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
+#include <dt-bindings/iio/qcom,spmi-adc7-pm8350b.h>
+#define SMB139x_1_SID 0x0b
+#define SMB139x_2_SID 0x0c
+#include <dt-bindings/iio/qcom,spmi-adc7-smb139x.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include "sm8350.dtsi"
+#include "pm8350.dtsi"
+#include "pm8350b.dtsi"
+#include "pm8350c.dtsi"
+#include "pmk8350.dtsi"
+#include "pmr735a.dtsi"
+#include "pmr735b.dtsi"
+
+/ {
+       chassis-type = "handset";
+       interrupt-parent = <&intc>;
+
+       bat: battery {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion";
+               voltage-min-design-microvolt = <3200000>;
+               energy-full-design-microwatt-hours = <15840000>;
+               charge-full-design-microamp-hours = <2225000>;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer: framebuffer@e4d00000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0xe4d00000 0 0x2400000>;
+                       width = <1080>;
+                       height = <2412>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+                       /*
+                        * That's (going to be) a lot of clocks, but it's
+                        * necessary due to unused clk cleanup & no panel
+                        * driver yet.
+                        */
+                       clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
+                                <&gcc GCC_DISP_SF_AXI_CLK>;
+               };
+       };
+
+       display_panel_avdd: display-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "display_panel_avdd";
+               regulator-min-microvolt = <5500000>;
+               regulator-max-microvolt = <5500000>;
+               regulator-enable-ramp-delay = <233>;
+
+               enable-active-high;
+               regulator-boot-on;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&vol_down_n>;
+
+               key-vol-up {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       gpios = <&pmk8350_gpios 6 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+                       wakeup-source;
+               };
+       };
+
+       pmic-glink {
+               compatible = "qcom,sm8350-pmic-glink", "qcom,pmic-glink";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_hs_in: endpoint {
+                                               remote-endpoint = 
<&usb_1_dwc3_hs>;
+                                       };
+                               };
+
+                               /* USB3 not working, so no port@1 */
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_sbu: endpoint {
+                                               remote-endpoint = 
<&fsa4480_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       vph_pwr: vph-pwr-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vph_pwr";
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+};
+
+&adsp {
+       firmware-name = "qcom/sm8350/lemonade/adsp.mbn";
+       status = "okay";
+};
+
+&apps_rsc {
+       regulators-0 {
+               compatible = "qcom,pm8350-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd-s1-supply = <&vph_pwr>;
+               vdd-s2-supply = <&vph_pwr>;
+               vdd-s3-supply = <&vph_pwr>;
+               vdd-s4-supply = <&vph_pwr>;
+               vdd-s5-supply = <&vph_pwr>;
+               vdd-s6-supply = <&vph_pwr>;
+               vdd-s7-supply = <&vph_pwr>;
+               vdd-s8-supply = <&vph_pwr>;
+               vdd-s9-supply = <&vph_pwr>;
+               vdd-s10-supply = <&vph_pwr>;
+               vdd-s11-supply = <&vph_pwr>;
+               vdd-s12-supply = <&vph_pwr>;
+
+               vdd-l1-l4-supply = <&pm8350_s11>;
+               vdd-l2-l7-supply = <&vreg_bob>;
+               vdd-l3-l5-supply = <&vreg_bob>;
+               vdd-l6-l9-l10-supply = <&pm8350_s11>;
+               vdd-l8-supply = <&pmr735a_s2>;
+
+               /*
+                * ARC regulators:
+                * S5 - mx.lvl
+                * S6 - gfx.lvl
+                * S9 - mxc.lvl
+                */
+
+               pm8350_s10: smps10 {
+                       regulator-name = "pm8350_s10";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_s11: smps11 {
+                       regulator-name = "pm8350_s11";
+                       regulator-min-microvolt = <752000>;
+                       regulator-max-microvolt = <1012000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_s12: smps12 {
+                       regulator-name = "pm8350_s12";
+                       regulator-min-microvolt = <1224000>;
+                       regulator-max-microvolt = <1360000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_l1: ldo1 {
+                       regulator-name = "pm8350_l1";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_l2: ldo2 {
+                       regulator-name = "pm8350_l2";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_l3: ldo3 {
+                       regulator-name = "pm8350_l3";
+                       regulator-min-microvolt = <904000>;
+                       regulator-max-microvolt = <904000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               /* L4 - lmx.lvl (ARC) */
+
+               pm8350_l5: ldo5 {
+                       regulator-name = "pm8350_l5";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <888000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-allow-set-load;
+                       regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+                                                  RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_l6: ldo6 {
+                       regulator-name = "pm8350_l6";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1208000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-allow-set-load;
+                       regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+                                                  RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350_l7: ldo7 {
+                       regulator-name = "pm8350_l7";
+                       regulator-min-microvolt = <2400000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-allow-set-load;
+                       regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+                                                  RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               /* L8 - lcx.lvl (ARC) */
+
+               pm8350_l9: ldo9 {
+                       regulator-name = "pm8350_l9";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-allow-set-load;
+                       regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
+                                                  RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-1 {
+               compatible = "qcom,pm8350c-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vdd-s1-supply = <&vph_pwr>;
+               vdd-s2-supply = <&vph_pwr>;
+               vdd-s3-supply = <&vph_pwr>;
+               vdd-s4-supply = <&vph_pwr>;
+               vdd-s5-supply = <&vph_pwr>;
+               vdd-s6-supply = <&vph_pwr>;
+               vdd-s7-supply = <&vph_pwr>;
+               vdd-s8-supply = <&vph_pwr>;
+               vdd-s9-supply = <&vph_pwr>;
+               vdd-s10-supply = <&vph_pwr>;
+
+               vdd-l1-l12-supply = <&pm8350c_s1>;
+               vdd-l2-l8-supply = <&pm8350c_s1>;
+               vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob>;
+               vdd-l6-l9-l11-supply = <&vreg_bob>;
+               vdd-l10-supply = <&pm8350_s12>;
+
+               vdd-bob-supply = <&vph_pwr>;
+
+               pm8350c_s1: smps1 {
+                       regulator-name = "pm8350c_s1";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1952000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               /* S2 - ebi.lvl (ARC) */
+
+               pm8350c_s3: smps3 {
+                       regulator-name = "pm8350c_s3";
+                       regulator-min-microvolt = <300000>;
+                       regulator-max-microvolt = <704000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               /*
+                * ARC regulators:
+                * S4 - mss.lvl
+                * S6 - cx.lvl
+                * S8 - mmcx.lvl
+                */
+
+               pm8350c_s10: smps10 {
+                       regulator-name = "pm8350c_s10";
+                       regulator-min-microvolt = <1048000>;
+                       regulator-max-microvolt = <1128000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l1: ldo1 {
+                       regulator-name = "pm8350c_l1";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l2: ldo2 {
+                       regulator-name = "pm8350c_l2";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l3: ldo3 {
+                       regulator-name = "pm8350c_l3";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l4: ldo4 {
+                       regulator-name = "pm8350c_l4";
+                       regulator-min-microvolt = <1704000>;
+                       regulator-max-microvolt = <3000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l5: ldo5 {
+                       regulator-name = "pm8350c_l5";
+                       regulator-min-microvolt = <1704000>;
+                       regulator-max-microvolt = <3000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l6: ldo6 {
+                       regulator-name = "pm8350c_l6";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l7: ldo7 {
+                       regulator-name = "pm8350c_l7";
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l8: ldo8 {
+                       regulator-name = "pm8350c_l8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l9: ldo9 {
+                       regulator-name = "pm8350c_l9";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l10: ldo10 {
+                       regulator-name = "pm8350c_l10";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l11: ldo11 {
+                       regulator-name = "pm8350c_l11";
+                       regulator-min-microvolt = <2400000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l12: ldo12 {
+                       regulator-name = "pm8350c_l12";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               pm8350c_l13: ldo13 {
+                       regulator-name = "pm8350c_l13";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob: bob {
+                       regulator-name = "vreg_bob";
+                       regulator-min-microvolt = <3400000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
+               };
+       };
+
+       /* pm8350b has one regulator here; unused for now */
+
+       regulators-2 {
+               compatible = "qcom,pmr735a-rpmh-regulators";
+               qcom,pmic-id = "e";
+
+               vdd-s1-supply = <&vph_pwr>;
+               vdd-s2-supply = <&vph_pwr>;
+               vdd-s3-supply = <&vph_pwr>;
+
+               vdd-l1-l2-supply = <&pmr735a_s2>;
+               vdd-l3-supply = <&pmr735a_s1>;
+               vdd-l4-supply = <&pm8350c_s1>;
+               vdd-l5-l6-supply = <&pm8350c_s1>;
+               vdd-l7-bob-supply = <&vreg_bob>;
+
+               pmr735a_s1: smps1 {
+                       regulator-name = "pmr735a_s1";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1280000>;
+               };
+
+               pmr735a_s2: smps2 {
+                       regulator-name = "pmr735a_s2";
+                       regulator-min-microvolt = <500000>;
+                       regulator-max-microvolt = <976000>;
+               };
+
+               pmr735a_s3: smps3 {
+                       regulator-name = "pmr735a_s3";
+                       regulator-min-microvolt = <2208000>;
+                       regulator-max-microvolt = <2352000>;
+               };
+
+               pmr735a_l1: ldo1 {
+                       regulator-name = "pmr735a_l1";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+               };
+
+               pmr735a_l2: ldo2 {
+                       regulator-name = "pmr735a_l2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+
+               pmr735a_l3: ldo3 {
+                       regulator-name = "pmr735a_l3";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+               };
+
+               pmr735a_l4: ldo4 {
+                       regulator-name = "pmr735a_l4";
+                       regulator-min-microvolt = <1776000>;
+                       regulator-max-microvolt = <1872000>;
+               };
+
+               pmr735a_l5: ldo5 {
+                       regulator-name = "pmr735a_l5";
+                       regulator-min-microvolt = <800000>;
+                       regulator-max-microvolt = <800000>;
+               };
+
+               pmr735a_l6: ldo6 {
+                       regulator-name = "pmr735a_l6";
+                       regulator-min-microvolt = <480000>;
+                       regulator-max-microvolt = <904000>;
+               };
+
+               pmr735a_l7: ldo7 {
+                       regulator-name = "pmr735a_l7";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+               };
+       };
+};
+
+&cdsp {
+       firmware-name = "qcom/sm8350/lemonade/cdsp.mbn";
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       bq27541: fuel-gauge@55 {
+               compatible = "ti,bq27541";
+               reg = <0x55>;
+               monitored-battery = <&bat>;
+       };
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       /* Touchscreens: Syna TCM oncell or Samsung s6sy761 */
+};
+
+&i2c13 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       typec-mux@42 {
+               compatible = "fcs,fsa4480";
+               reg = <0x42>;
+
+               interrupts-extended = <&tlmm 2 IRQ_TYPE_LEVEL_LOW>;
+
+               vcc-supply = <&vreg_bob>;
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       fsa4480_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_sbu>;
+                       };
+               };
+       };
+
+       /* Qualcomm PM8008i/PM8008j @ 8, 9, c, d */
+};
+
+&i2c15 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       /* sn-nci NFC controller @ 28 */
+};
+
+&gpi_dma0 {
+       status = "okay";
+};
+
+&gpi_dma1 {
+       status = "okay";
+};
+
+&gpi_dma2 {
+       status = "okay";
+};
+
+&ipa {
+       qcom,gsi-loader = "self";
+       memory-region = <&pil_ipa_fw_mem>;
+       firmware-name = "qcom/sm8350/lemonade/ipa_fws.mbn";
+       status = "okay";
+};
+
+&mpss {
+       firmware-name = "qcom/sm8350/lemonade/modem.mbn";
+       status = "okay";
+};
+
+&pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie0_default_state>;
+
+       perst-gpios = <&tlmm 94 GPIO_ACTIVE_HIGH>;
+       wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+
+       status = "okay";
+};
+
+&pcie0_phy {
+       vdda-phy-supply = <&pm8350_l5>;
+       vdda-pll-supply = <&pm8350_l6>;
+
+       status = "okay";
+};
+
+&pm8350_gpios {
+       gpio1_adc_default: gpio1-adc-default-state {
+               pins = "gpio1";
+               function = "normal";
+               bias-high-impedance;
+               bias-disable;
+       };
+
+       gpio3_adc_default: gpio3-adc-default-state {
+               pins = "gpio3";
+               function = "normal";
+               bias-high-impedance;
+               bias-disable;
+       };
+};
+
+&pm8350_gpios {
+       vol_down_n: vol-down-n-state {
+               pins = "gpio6";
+               function = "normal";
+               power-source = <1>;
+               bias-pull-up;
+               input-enable;
+       };
+};
+
+&pmk8350_adc_tm {
+       status = "okay";
+
+       pm8350-msm-therm@0 {
+               reg = <0>;
+               io-channels = <&pmk8350_vadc PM8350_ADC7_AMUX_THM1_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       pm8350-cam-flash-therm@1 {
+               reg = <1>;
+               io-channels = <&pmk8350_vadc PM8350_ADC7_AMUX_THM2_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       pm8350-hot-pocket-therm@2 {
+               reg = <2>;
+               io-channels = <&pmk8350_vadc PM8350_ADC7_AMUX_THM3_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       pm8350-wide-rfc-therm@3 {
+               reg = <3>;
+               io-channels = <&pmk8350_vadc PM8350_ADC7_AMUX_THM4_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       pm8350-rear-tof-therm@4 {
+               reg = <4>;
+               io-channels = <&pmk8350_vadc PM8350_ADC7_AMUX_THM5_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       pm8350b-usb-conn-therm@5 {
+               reg = <5>;
+               io-channels = <&pmk8350_vadc PM8350B_ADC7_AMUX_THM4_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       pm8350b-wl-chg-therm@6 {
+               reg = <6>;
+               io-channels = <&pmk8350_vadc PM8350B_ADC7_GPIO2_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+};
+
+&pmk8350_rtc {
+       status = "okay";
+};
+
+&pmk8350_vadc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio1_adc_default>, <&gpio3_adc_default>;
+
+       /* pmk8350-ref-gnd */
+       channel@0 {
+               reg = <0x00>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmk8350_ref_gnd";
+       };
+
+       /* pmk8350-vref-1p25 */
+       channel@1 {
+               reg = <0x01>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmk8350_vref_1p25";
+       };
+
+       /* pmk8350-die-temp */
+       channel@3 {
+               reg = <0x03>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmk8350_die_temp";
+       };
+
+       /* pm8350-ref-gnd */
+       channel@100 {
+               reg = <0x100>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_ref_gnd";
+       };
+
+       /*pm8350-vref-1p25*/
+       channel@101 {
+               reg = <0x101>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_vref_1p25";
+       };
+
+       /* pm8350-die-temp */
+       channel@103 {
+               reg = <0x103>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_die_temp";
+       };
+
+       /* gpio1-v */
+       channel@128 {
+               reg = <0x128>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <700>;
+               qcom,pre-scaling = <1 1>;
+               label = "gpio1_v";
+       };
+
+       /* gpio3-v */
+       channel@12b {
+               reg = <0x12b>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <700>;
+               qcom,pre-scaling = <1 1>;
+               label = "gpio3_v";
+       };
+
+       /* pm8350-msm-therm */
+       channel@144 {
+               reg = <PM8350_ADC7_AMUX_THM1_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_msm_therm";
+       };
+
+       /* pm8350-cam-flash-therm */
+       channel@145 {
+               reg = <PM8350_ADC7_AMUX_THM2_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_cam_flash_therm";
+       };
+
+       /* pm8350-hot-pocket-therm */
+       channel@146 {
+               reg = <PM8350_ADC7_AMUX_THM3_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_hot_pocket_therm";
+       };
+
+       /* pm8350-wide-rfc-therm */
+       channel@147 {
+               reg = <PM8350_ADC7_AMUX_THM4_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_wide_rfc_therm";
+       };
+
+       /* pm8350-rear-tof-therm */
+       channel@148 {
+               reg = <PM8350_ADC7_AMUX_THM5_100K_PU(1)>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350_rear_tof_therm";
+       };
+
+       /* pm8350-vph-pwr */
+       channel@18e {
+               reg = <0x18e>;
+               qcom,pre-scaling = <1 3>;
+               label = "pm8350_vph_pwr";
+       };
+
+       /* pm8350b-ref-gnd */
+       channel@300 {
+               reg = <0x300>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350b_ref_gnd";
+       };
+
+       /* pm8350b-vref-1p25 */
+       channel@301 {
+               reg = <0x301>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350b_vref_1p25";
+       };
+
+       /* pm8350b-die-temp */
+       channel@303 {
+               reg = <0x303>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350b_die_temp";
+       };
+
+       /* pm8350b-chg-temp */
+       channel@310 {
+               reg = <PM8350B_ADC7_CHG_TEMP>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350b_chg_temp";
+       };
+
+       /* pm8350b-usb-conn-therm */
+       channel@347 {
+               reg = <PM8350B_ADC7_AMUX_THM4_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350b_usb_conn_therm";
+       };
+
+       /* pm8350b-wl-chg-therm */
+       channel@34b {
+               reg = <PM8350B_ADC7_GPIO2_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm8350b_wl_chg_therm";
+       };
+
+       /* pm8350b-vph-pwr */
+       channel@38e {
+               reg = <0x38e>;
+               qcom,pre-scaling = <1 3>;
+               label = "pm8350b_vph_pwr";
+       };
+
+       /* pm8350b-vbat-sns */
+       channel@38f {
+               reg = <0x38f>;
+               qcom,pre-scaling = <1 3>;
+               label = "pm8350b_vbat_sns";
+       };
+
+       /* pmr735a-ref-gnd */
+       channel@400 {
+               reg = <0x400>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmr735a_ref_gnd";
+       };
+
+       /* pmr735a-vref-1p25 */
+       channel@401 {
+               reg = <0x401>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmr735a_vref_1p25";
+       };
+
+       /* pmr735a-die-temp */
+       channel@403 {
+               reg = <0x403>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmr735a_die_temp";
+       };
+
+       /* pmr735b-ref-gnd */
+       channel@500 {
+               reg = <0x500>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmr735b_ref_gnd";
+       };
+
+       /* pmr735b-vref-1p25 */
+       channel@501 {
+               reg = <0x501>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmr735b_vref_1p25";
+       };
+
+       /* pmr735b-die-temp */
+       channel@503 {
+               reg = <0x503>;
+               qcom,pre-scaling = <1 1>;
+               label = "pmr735b_die_temp";
+       };
+
+       /* smb139x-1-smb-temp */
+       channel@b06 {
+               reg = <SMB139x_1_ADC7_SMB_TEMP>;
+               qcom,pre-scaling = <1 1>;
+               label = "smb139x_1_smb_temp";
+       };
+
+       /* smb139x-2-smb-temp */
+       channel@c06 {
+               reg = <SMB139x_2_ADC7_SMB_TEMP>;
+               qcom,pre-scaling = <1 1>;
+               label = "smb139x_2_smb_temp";
+       };
+};
+
+&pon_pwrkey {
+       status = "okay";
+};
+
+&pon_resin {
+       linux,code = <KEY_VOLUMEUP>;
+       status = "okay";
+};
+
+&qupv3_id_0 {
+       status = "okay";
+};
+
+&qupv3_id_1 {
+       status = "okay";
+};
+
+&qupv3_id_2 {
+       status = "okay";
+};
+
+&reserved_memory {
+       bootloader-log@9fff7000 {
+               reg = <0 0x9fff7000 0 0x8000>;
+       };
+
+       framebuffer@e1000000 {
+               reg = <0 0xe4d00000 0 0x2400000>;
+               no-map;
+       };
+
+       ramoops: ramoops@E9700000 {
+               compatible = "ramoops";
+               reg = <0 0xe9700000 0 0x5b8000>;
+               record-size = <0x40000>;
+               console-size = <0x40000>;
+               ftrace-size = <0x200000>;
+               pmsg-size = <0x200000>;
+               ecc-size = <0>;
+       };
+
+       reserved@ea700000 {
+               reg = <0 0xea700000 0 0x800000>;
+       };
+};
+
+&removed_mem {
+       reg = <0 0xd8800000 0 0x8e00000>;
+};
+
+&slpi {
+       firmware-name = "qcom/sm8350/lemonade/slpi.mbn";
+       status = "okay";
+};
+
+&tlmm {
+       gpio-reserved-ranges = <52 8>;
+
+       pcie0_default_state: pcie0-default-state {
+               perst-pins {
+                       pins = "gpio94";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+
+               clkreq-pins {
+                       pins = "gpio95";
+                       function = "pcie0_clkreqn";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               wake-pins {
+                       pins = "gpio96";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               sleep-pins {
+                       pins = "gpio95";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie1_default_state: pcie1-default-state {
+               perst-pins {
+                       pins = "gpio97";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+
+               clkreq-pins {
+                       pins = "gpio98";
+                       function = "pcie1_clkreqn";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               wake-pins {
+                       pins = "gpio99";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+                       /* wil6210_refclk_en_pin lives here also */
+               };
+       };
+
+       /* Modem-related pin common on both devices */
+       rf_cable_ant0_active: rf-cable-ant0-active-state {
+               pins = "gpio165";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       tp_rst_active: tp-rst-active-state {
+               pins = "gpio22";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       /* tp_rst_suspend pinctrl is different per device, don't specify here */
+
+       tp_irq_active: tp-irq-active-state {
+               pins = "gpio23";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       tp_irq_suspend: tp-irq-suspend-state {
+               pins = "gpio23";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+};
+
+&ufs_mem_hc {
+       reset-gpios = <&tlmm 203 GPIO_ACTIVE_LOW>;
+
+       vcc-supply = <&pm8350_l7>;
+       vcc-max-microamp = <800000>;
+       vccq-supply = <&pm8350_l9>;
+       vccq-max-microamp = <900000>;
+
+       status = "okay";
+};
+
+&ufs_mem_phy {
+       vdda-phy-supply = <&pm8350_l5>;
+       vdda-pll-supply = <&pm8350_l6>;
+
+       status = "okay";
+};
+
+&usb_1 {
+       /*
+        * Bug in interconnect driver breaks USB; RPMh is unable to power on
+        * USB regulators without this.
+        */
+       /delete-property/ interconnects;
+       /delete-property/ interconnect-names;
+
+       /* USB3 seems broken (though it's enabled downstream?) */
+       qcom,select-utmi-as-pipe-clk;
+
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       dr_mode = "otg";
+       maximum-speed = "high-speed";
+       phys = <&usb_1_hsphy>;
+       phy-names = "usb2-phy";
+};
+
+&usb_1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_1_hsphy {
+       vdda-pll-supply = <&pm8350_l5>;
+       vdda18-supply = <&pm8350c_l1>;
+       vdda33-supply = <&pm8350_l2>;
+
+       status = "okay";
+};
diff --git a/arch/arm64/boot/dts/qcom/sm8350-oneplus-lemonade.dts 
b/arch/arm64/boot/dts/qcom/sm8350-oneplus-lemonade.dts
new file mode 100644
index 000000000000..473f10d4fcf0
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8350-oneplus-lemonade.dts
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2023 Igalia S.L.
+ * Authors:
+ *     Nia Espera <[email protected]>
+ */
+
+/dts-v1/;
+
+#include "sm8350-oneplus-common.dtsi"
+
+/ {
+       compatible = "oneplus,lemonade", "qcom,sm8350";
+       model = "OnePlus 9";
+};
+
+&i2c4 {
+       touchscreen@48 {
+               compatible = "samsung,s6sy761";
+               reg = <0x48>;
+               interrupts-extended = <&tlmm 23 IRQ_TYPE_LEVEL_LOW>;
+
+               avdd-supply = <&pm8350c_l13>;
+               vdd-supply = <&pm8350c_l8>;
+
+               pinctrl-names = "default", "sleep";
+               pinctrl-0 = <&tp_rst_active>, <&tp_irq_active>, 
<&tp_enable_2v8>;
+               pinctrl-1 = <&tp_rst_suspend>, <&tp_irq_suspend>;
+       };
+};
+
+&mpss {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rf_cable_ant0_active>,
+                   <&rf_cable_ant1_active>,
+                   <&rf_cable_ant2_active>,
+                   <&rf_cable_ant3_active>,
+                   <&rf_cable_ant7_active>;
+};
+
+&tlmm {
+       /* Modem antenna pins exclusive to lemonade */
+       rf_cable_ant1_active: rf-cable-ant1-active-state {
+               pins = "gpio27";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       rf_cable_ant2_active: rf-cable-ant2-active-state {
+               pins = "gpio92";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       rf_cable_ant3_active: rf-cable-ant3-active-state {
+               pins = "gpio44";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       rf_cable_ant7_active: rf-cable-ant7-active-state {
+               pins = "gpio155";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+
+       tp_rst_suspend: tp-rst-suspend-state {
+               pins = "gpio22";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       tp_enable_2v8: tp-enable-2v8-state {
+               pins = "gpio74";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+               output-high;
+       };
+};
diff --git a/arch/arm64/boot/dts/qcom/sm8350-oneplus-lemonadep.dts 
b/arch/arm64/boot/dts/qcom/sm8350-oneplus-lemonadep.dts
new file mode 100644
index 000000000000..bc7e5654bd3d
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/sm8350-oneplus-lemonadep.dts
@@ -0,0 +1,20 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2023 Igalia S.L.
+ * Authors:
+ *     Nia Espera <[email protected]>
+ */
+
+/dts-v1/;
+
+#include "sm8350-oneplus-common.dtsi"
+
+/ {
+       compatible = "oneplus,lemonadep", "qcom,sm8350";
+       model = "OnePlus 9 Pro";
+};
+
+&mpss {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rf_cable_ant0_active>;
+};

-- 
2.42.1

Reply via email to