Qualcomm ARM64 updates for v5.15

SDM660 and SDM630 was concluded to be similar enough that they should be
 merged, and the derivative SDM636 was added to the bunch. The combined
 platform gained support for GPU, DMA, I2C, IMEM, display, power-domains,
 SDHCI, thermal, USB, interconnects, VADC, WLED and audio remoteproc. The
 Sony Xperia "Ganges" platform was similarly merged with "Nile", got
 cleaned up and gained touchscreen, USB, volume keys and uSD support.
 
 IPQ6018 gains USB2 and PCIe support and a few minor fixes. IPQ8074
 gains SCM, PRNG and Crypto support and a DT style update of the PCIe
 nodes.
 
 MSM8916 gains Coresight STM support. The Xiaomi Redmi 2 is introduced,
 with touchscreen, notification LED and IMU support. MSM8996 gains
 support for GPU cooling and v3.0 of the SoC, which is used to introduce
 support for the Sony Xperia X Performance, XZ and XZs phones.
 
 SC7180 finally gains DisplayPort support and LPASS is updated
 accordingly. A number of fixes are introduced and with the newly
 introduced DRM aux bus in place Trogdor's panel is moved under the eDP
 bridge. SC7280 gained USB, eMMC, SD-card, QFPROM and IPA support, the
 new IDP2 board was added.
 
 SM6126 (aka Snapdragon 665) was introduced, together with the Sony
 Xperia 10II phone with support for framebuffer, USB, eMMC and volume
 keys.
 
 SM8150 gained inline crypto support for UFS enabled, CPU opp-tables was
 introduced to scale DDR and L3 frequencies and SPI nodes where added, in
 addition to a number of smaller fixes.
 
 SM8250 gained a number of minor fixes and had its serial engines wired
 up to use the GENI wrappers' DMA engines.
 
 SM8350 had wakeup-parent defined for the TLMM gpio node and I2C13 was
 introduced.
 
 SDM845 display clocks was corrected and Lenovo Yoga C630 got IPA enabled
 and now has working LTE connectivity.
 
 Additionally a number of minor fixes throughout to correct DT validation
 warnings.
 
 Lastly v5.14-rc3 is merge in to resolve the merge conflicts caused by
 the USB maintainer deciding to fix a regression in his tree.
 -----BEGIN PGP SIGNATURE-----
 
 iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmEa7+IbHGJqb3JuLmFu
 ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FAlsP/0ANjr6SLBWDZ5fAv/7a
 Fz26/VeZwjnZ0uzCAmsfjDfzShPuZLoDw1WzoU2Tqj1YGk6TZsResjBHAeVTHfbI
 oTPVONqgumjOhVsGUKIWtYOybeO5+byOREZGR+bxGjGnhLsNwvcMsR6fplL6w+x/
 /fqF+hzRmiVVvD61eH2r8r6mXlnmT27kS7NeJAYFOh1YQmsEK1HKs6e2tbV00ftb
 bEWgcAmXSwpJ+0aSb4JN54DS7/LFFGBB9kVC65pJJpAkcsCT74QP0kY28iNLn9Qk
 Yb/ueSFXHT/mdlhsYGZWZk7p9Wr6P/Wpyr3WM3hJDjwSQXF7LkaI78afbbVFNWsW
 p529sEZa3z21vLDddSd/BVh32es4bu3Fnl/mPk4csrqWFOkvjHsOYD+hBgri+GBP
 a0lwOSDngIAZQrD8dRo5z5SrjAIkTRTwws8BGj/dD0NjgFDWPeveIlmr7miSHK6c
 9ljK28WLajrLNOcnwqA5guCXe5zOP34I+CgVMdC5MfsbKds1u7X5i+ioiRUS0g7j
 3GpwN05+QNGEm5GVmvjCTaRNRK2sL8jBUakJifzfdp5wYWY9BngB8v8xDkYwI9v0
 ozM0MzvwWX+2bqGR7teUcAZeA/0aDQqRZd1mxE2UkhDs12iBLX8NxDV+kFvk0XPi
 /foS/qsmiIiuvuoTAeGVXecM
 =GGZW
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEo6/YBQwIrVS28WGKmmx57+YAGNkFAmEc/xgACgkQmmx57+YA
 GNlG1Q//R10RiavcIYs2uJql1C3TgCxb8I0pKqVjuYi01f7XtyhcwNS/fbZ0kRcV
 Cjdza+owaWxnsBuNS5IocdRzRckqeCoRzvAKjZoSkgAuEIYLWyi8sC5YF5ilELhX
 NfekAo/I12iDgu0Zt5g481sWBwc1qzCcC9BvS1Nd3tsbBgl45XhM6pk1+zpV4avi
 U8JqRNgbsJ66+y/cy5VGWavB0OCmDP46hmnf9t2OmPBuZ+lVLy98WvLikS42HUq6
 prnpLh1q81jaVTghpydHyJ/Z/12uwxySc17B7cAYtcbUyqsgaG2st6wDwWBlq+4y
 vz81tDEpdEM1w4tGzKtmi+bribn0ftATYbfW6NdYMo0tEp7wWSOpPBqjeC/O1xm9
 /pVuN2l9FB/iJAkYQoeuY3Sj/WF1KVZ0/OkcG/ZR048DdsMG8LOVH4xcaTBbaPtb
 3oPgXUDk0mnSdDQs6mFPxt9gJR6SKsPUDdjSwuPbX1UIlSjnmgvlwx22wIMw0TBR
 x9TyxHMOPnsrHmplatbKFyGvmGOgCiKKF3gEYBZB76QOy1qjMxcWpH2sNgrDK08z
 WIjz2nybDVAOkEXrRYL3gmsSWCBJcyEIJDGqWXshtN3iCw9k3V+KFbC6X1q/0atv
 otGv8aGclP8Cuvxm2tD7O+rUAIa6pEJyrz67i431++/DVFDAy6A=
 =lQQn
 -----END PGP SIGNATURE-----

Merge tag 'qcom-arm64-for-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/dt

Qualcomm ARM64 updates for v5.15

SDM660 and SDM630 was concluded to be similar enough that they should be
merged, and the derivative SDM636 was added to the bunch. The combined
platform gained support for GPU, DMA, I2C, IMEM, display, power-domains,
SDHCI, thermal, USB, interconnects, VADC, WLED and audio remoteproc. The
Sony Xperia "Ganges" platform was similarly merged with "Nile", got
cleaned up and gained touchscreen, USB, volume keys and uSD support.

IPQ6018 gains USB2 and PCIe support and a few minor fixes. IPQ8074
gains SCM, PRNG and Crypto support and a DT style update of the PCIe
nodes.

MSM8916 gains Coresight STM support. The Xiaomi Redmi 2 is introduced,
with touchscreen, notification LED and IMU support. MSM8996 gains
support for GPU cooling and v3.0 of the SoC, which is used to introduce
support for the Sony Xperia X Performance, XZ and XZs phones.

SC7180 finally gains DisplayPort support and LPASS is updated
accordingly. A number of fixes are introduced and with the newly
introduced DRM aux bus in place Trogdor's panel is moved under the eDP
bridge. SC7280 gained USB, eMMC, SD-card, QFPROM and IPA support, the
new IDP2 board was added.

SM6126 (aka Snapdragon 665) was introduced, together with the Sony
Xperia 10II phone with support for framebuffer, USB, eMMC and volume
keys.

SM8150 gained inline crypto support for UFS enabled, CPU opp-tables was
introduced to scale DDR and L3 frequencies and SPI nodes where added, in
addition to a number of smaller fixes.

SM8250 gained a number of minor fixes and had its serial engines wired
up to use the GENI wrappers' DMA engines.

SM8350 had wakeup-parent defined for the TLMM gpio node and I2C13 was
introduced.

SDM845 display clocks was corrected and Lenovo Yoga C630 got IPA enabled
and now has working LTE connectivity.

Additionally a number of minor fixes throughout to correct DT validation
warnings.

Lastly v5.14-rc3 is merge in to resolve the merge conflicts caused by
the USB maintainer deciding to fix a regression in his tree.

* tag 'qcom-arm64-for-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (114 commits)
  arm64: dts: qcom: sm8250: assign DSI clock source parents
  arm64: dts: qcom: sdm845-mtp: assign DSI clock source parents
  arm64: dts: qcom: sdm845: assign DSI clock source parents
  arm64: dts: qcom: sc7180: assign DSI clock source parents
  arm64: dts: qcom: sc7280-idp: Add device tree files for IDP2
  dt-bindings: arm: qcom: Document qcom,sc7280-idp2 board
  arm64: dts: qcom: sm8350: fix IPA interconnects
  arm64: dts: qcom: sc7180: define ipa_fw_mem node
  arm64: dts: qcom: sc7280: enable IPA for sc7280-idp
  arm64: dts: qcom: sc7280: add IPA information
  arm64: dts: qcom: sc7180-trogdor: Move panel under the bridge chip
  arm64: dts: qcom: ipq8074: add PRNG node
  arm64: dts: qcom: ipq8074: add crypto nodes
  arm64: dts: qcom: sm8350: add qupv3_id_1/i2c13 nodes
  arm64: dts: qcom: ipq6018: Add pcie support
  arm64: dts: qcom: pm8150b: Add DTS node for PMIC VBUS booster
  arm64: dts: qcom: sm8150: add SPI nodes
  arm64: dts: qcom: msm8916: Enable CoreSight STM component
  arm64: dts: qcom: sc7280: Add qfprom node
  arm64: dts: qcom: sc7280: Fixup the cpufreq node
  ...

Link: https://lore.kernel.org/r/20210816231223.586597-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2021-08-18 14:37:16 +02:00
commit a0f480dc65
60 changed files with 6797 additions and 935 deletions

View file

@ -135,6 +135,8 @@ properties:
- const: qcom,msm8974
- items:
- enum:
- alcatel,idol347
- const: qcom,msm8916-mtp/1
- const: qcom,msm8916-mtp
- const: qcom,msm8916
@ -187,6 +189,8 @@ properties:
- items:
- enum:
- qcom,sc7280-idp
- qcom,sc7280-idp2
- google,piglin
- google,senor
- const: qcom,sc7280

View file

@ -48,6 +48,7 @@ properties:
- qcom,sc7180-tsens
- qcom,sc7280-tsens
- qcom,sc8180x-tsens
- qcom,sdm630-tsens
- qcom,sdm845-tsens
- qcom,sm8150-tsens
- qcom,sm8250-tsens

View file

@ -15,6 +15,7 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8916-longcheer-l8910.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a3u-eur.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-samsung-a5u-eur.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8916-wingtech-wt88047.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8992-bullhead-rev-101.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8992-msft-lumia-octagon-talkman.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8992-xiaomi-libra.dtb
@ -26,6 +27,12 @@ dtb-$(CONFIG_ARCH_QCOM) += msm8994-sony-xperia-kitakami-satsuki.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8994-sony-xperia-kitakami-sumire.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8994-sony-xperia-kitakami-suzuran.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-mtp.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-pmi8996-sony-xperia-tone-dora.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-pmi8996-sony-xperia-tone-kagura.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-pmi8996-sony-xperia-tone-keyaki.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-sony-xperia-tone-dora.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-sony-xperia-tone-kagura.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8996-sony-xperia-tone-keyaki.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8998-asus-novago-tp370ql.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8998-hp-envy-x2.dtb
dtb-$(CONFIG_ARCH_QCOM) += msm8998-lenovo-miix-630.dtb
@ -60,6 +67,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sc7180-trogdor-pompom-r3-lte.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7180-trogdor-r1.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7180-trogdor-r1-lte.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += sc7280-idp2.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-ganges-kirin.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-discovery.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm630-sony-xperia-nile-pioneer.dtb
@ -75,6 +83,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdm845-oneplus-enchilada.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-oneplus-fajita.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm845-xiaomi-beryllium.dtb
dtb-$(CONFIG_ARCH_QCOM) += sdm850-lenovo-yoga-c630.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm6125-sony-xperia-seine-pdx201.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8150-hdk.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8150-microsoft-surface-duo.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm8150-mtp.dtb

View file

@ -414,6 +414,7 @@ &wcd_codec {
&funnel0 { status = "okay"; };
&funnel1 { status = "okay"; };
&replicator { status = "okay"; };
&stm { status = "okay"; };
&tpiu { status = "okay"; };
&smd_rpm_regulators {

View file

@ -92,6 +92,14 @@ &gpu {
status = "okay";
};
&hdmi {
status = "okay";
};
&hdmi_phy {
status = "okay";
};
&mdss {
status = "okay";
};

View file

@ -78,3 +78,11 @@ nand@0 {
nand-bus-width = <8>;
};
};
&qusb_phy_1 {
status = "ok";
};
&usb2 {
status = "ok";
};

View file

@ -151,7 +151,7 @@ reserved-memory {
#size-cells = <2>;
ranges;
rpm_msg_ram: memory@0x60000 {
rpm_msg_ram: memory@60000 {
reg = <0x0 0x60000 0x0 0x6000>;
no-map;
};
@ -258,9 +258,9 @@ tcsr_mutex_regs: syscon@1905000 {
reg = <0x0 0x01905000 0x0 0x8000>;
};
tcsr_q6: syscon@1945000 {
tcsr: syscon@1937000 {
compatible = "syscon";
reg = <0x0 0x01945000 0x0 0xe000>;
reg = <0x0 0x01937000 0x0 0x21000>;
};
blsp_dma: dma-controller@7884000 {
@ -384,6 +384,105 @@ intc: interrupt-controller@b000000 {
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
};
pcie_phy: phy@84000 {
compatible = "qcom,ipq6018-qmp-pcie-phy";
reg = <0x0 0x84000 0x0 0x1bc>; /* Serdes PLL */
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&gcc GCC_PCIE0_AUX_CLK>,
<&gcc GCC_PCIE0_AHB_CLK>;
clock-names = "aux", "cfg_ahb";
resets = <&gcc GCC_PCIE0_PHY_BCR>,
<&gcc GCC_PCIE0PHY_PHY_BCR>;
reset-names = "phy",
"common";
pcie_phy0: lane@84200 {
reg = <0x0 0x84200 0x0 0x16c>, /* Serdes Tx */
<0x0 0x84400 0x0 0x200>, /* Serdes Rx */
<0x0 0x84800 0x0 0x4f4>; /* PCS: Lane0, COM, PCIE */
#phy-cells = <0>;
clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
clock-names = "pipe0";
clock-output-names = "gcc_pcie0_pipe_clk_src";
#clock-cells = <0>;
};
};
pcie0: pci@20000000 {
compatible = "qcom,pcie-ipq6018";
reg = <0x0 0x20000000 0x0 0xf1d>,
<0x0 0x20000f20 0x0 0xa8>,
<0x0 0x20001000 0x0 0x1000>,
<0x0 0x80000 0x0 0x4000>,
<0x0 0x20100000 0x0 0x1000>;
reg-names = "dbi", "elbi", "atu", "parf", "config";
device_type = "pci";
linux,pci-domain = <0>;
bus-range = <0x00 0xff>;
num-lanes = <1>;
#address-cells = <3>;
#size-cells = <2>;
phys = <&pcie_phy0>;
phy-names = "pciephy";
ranges = <0x81000000 0 0x20200000 0 0x20200000
0 0x10000>, /* downstream I/O */
<0x82000000 0 0x20220000 0 0x20220000
0 0xfde0000>; /* non-prefetchable memory */
interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "msi";
#interrupt-cells = <1>;
interrupt-map-mask = <0 0 0 0x7>;
interrupt-map = <0 0 0 1 &intc 0 75
IRQ_TYPE_LEVEL_HIGH>, /* int_a */
<0 0 0 2 &intc 0 78
IRQ_TYPE_LEVEL_HIGH>, /* int_b */
<0 0 0 3 &intc 0 79
IRQ_TYPE_LEVEL_HIGH>, /* int_c */
<0 0 0 4 &intc 0 83
IRQ_TYPE_LEVEL_HIGH>; /* int_d */
clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
<&gcc GCC_PCIE0_AXI_M_CLK>,
<&gcc GCC_PCIE0_AXI_S_CLK>,
<&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
<&gcc PCIE0_RCHNG_CLK>;
clock-names = "iface",
"axi_m",
"axi_s",
"axi_bridge",
"rchng";
resets = <&gcc GCC_PCIE0_PIPE_ARES>,
<&gcc GCC_PCIE0_SLEEP_ARES>,
<&gcc GCC_PCIE0_CORE_STICKY_ARES>,
<&gcc GCC_PCIE0_AXI_MASTER_ARES>,
<&gcc GCC_PCIE0_AXI_SLAVE_ARES>,
<&gcc GCC_PCIE0_AHB_ARES>,
<&gcc GCC_PCIE0_AXI_MASTER_STICKY_ARES>,
<&gcc GCC_PCIE0_AXI_SLAVE_STICKY_ARES>;
reset-names = "pipe",
"sleep",
"sticky",
"axi_m",
"axi_s",
"ahb",
"axi_m_sticky",
"axi_s_sticky";
status = "disabled";
};
watchdog@b017000 {
compatible = "qcom,kpss-wdt";
interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
@ -477,7 +576,7 @@ frame@b128000 {
};
q6v5_wcss: remoteproc@cd00000 {
compatible = "qcom,ipq8074-wcss-pil";
compatible = "qcom,ipq6018-wcss-pil";
reg = <0x0 0x0cd00000 0x0 0x4040>,
<0x0 0x004ab000 0x0 0x20>;
reg-names = "qdsp6",
@ -504,7 +603,7 @@ q6v5_wcss: remoteproc@cd00000 {
clocks = <&gcc GCC_PRNG_AHB_CLK>;
clock-names = "prng";
qcom,halt-regs = <&tcsr_q6 0xa000 0xd000 0x0>;
qcom,halt-regs = <&tcsr 0x18000 0x1b000 0xe000>;
qcom,smem-states = <&wcss_smp2p_out 0>,
<&wcss_smp2p_out 1>;
@ -524,6 +623,54 @@ qrtr_requests {
};
};
qusb_phy_1: qusb@59000 {
compatible = "qcom,ipq6018-qusb2-phy";
reg = <0x0 0x059000 0x0 0x180>;
#phy-cells = <0>;
clocks = <&gcc GCC_USB1_PHY_CFG_AHB_CLK>,
<&xo>;
clock-names = "cfg_ahb", "ref";
resets = <&gcc GCC_QUSB2_1_PHY_BCR>;
status = "disabled";
};
usb2: usb2@7000000 {
compatible = "qcom,ipq6018-dwc3", "qcom,dwc3";
reg = <0x0 0x070F8800 0x0 0x400>;
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&gcc GCC_USB1_MASTER_CLK>,
<&gcc GCC_USB1_SLEEP_CLK>,
<&gcc GCC_USB1_MOCK_UTMI_CLK>;
clock-names = "master",
"sleep",
"mock_utmi";
assigned-clocks = <&gcc GCC_USB1_MASTER_CLK>,
<&gcc GCC_USB1_MOCK_UTMI_CLK>;
assigned-clock-rates = <133330000>,
<24000000>;
resets = <&gcc GCC_USB1_BCR>;
status = "disabled";
dwc_1: usb@7000000 {
compatible = "snps,dwc3";
reg = <0x0 0x7000000 0x0 0xcd00>;
interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
phys = <&qusb_phy_1>;
phy-names = "usb2-phy";
tx-fifo-resize;
snps,is-utmi-l1-suspend;
snps,hird-threshold = /bits/ 8 <0x0>;
snps,dis_u2_susphy_quirk;
snps,dis_u3_susphy_quirk;
dr_mode = "host";
};
};
};
wcss: wcss-smp2p {

View file

@ -20,7 +20,7 @@ chosen {
stdout-path = "serial0";
};
memory {
memory@40000000 {
device_type = "memory";
reg = <0x0 0x40000000 0x0 0x20000000>;
};

View file

@ -76,6 +76,12 @@ psci {
method = "smc";
};
firmware {
scm {
compatible = "qcom,scm-ipq8074", "qcom,scm";
};
};
soc: soc {
#address-cells = <0x1>;
#size-cells = <0x1>;
@ -198,6 +204,38 @@ pcie_phy1: phy@8e000 {
status = "disabled";
};
prng: rng@e3000 {
compatible = "qcom,prng-ee";
reg = <0x000e3000 0x1000>;
clocks = <&gcc GCC_PRNG_AHB_CLK>;
clock-names = "core";
status = "disabled";
};
cryptobam: dma@704000 {
compatible = "qcom,bam-v1.7.0";
reg = <0x00704000 0x20000>;
interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gcc GCC_CRYPTO_AHB_CLK>;
clock-names = "bam_clk";
#dma-cells = <1>;
qcom,ee = <1>;
qcom,controlled-remotely = <1>;
status = "disabled";
};
crypto: crypto@73a000 {
compatible = "qcom,crypto-v5.1";
reg = <0x0073a000 0x6000>;
clocks = <&gcc GCC_CRYPTO_AHB_CLK>,
<&gcc GCC_CRYPTO_AXI_CLK>,
<&gcc GCC_CRYPTO_CLK>;
clock-names = "iface", "bus", "core";
dmas = <&cryptobam 2>, <&cryptobam 3>;
dma-names = "rx", "tx";
status = "disabled";
};
tlmm: pinctrl@1000000 {
compatible = "qcom,ipq8074-pinctrl";
reg = <0x01000000 0x300000>;
@ -583,10 +621,10 @@ frame@b128000 {
pcie1: pci@10000000 {
compatible = "qcom,pcie-ipq8074";
reg = <0x10000000 0xf1d
0x10000f20 0xa8
0x00088000 0x2000
0x10100000 0x1000>;
reg = <0x10000000 0xf1d>,
<0x10000f20 0xa8>,
<0x00088000 0x2000>,
<0x10100000 0x1000>;
reg-names = "dbi", "elbi", "parf", "config";
device_type = "pci";
linux,pci-domain = <1>;
@ -645,10 +683,10 @@ IRQ_TYPE_LEVEL_HIGH>, /* int_c */
pcie0: pci@20000000 {
compatible = "qcom,pcie-ipq8074";
reg = <0x20000000 0xf1d
0x20000f20 0xa8
0x00080000 0x2000
0x20100000 0x1000>;
reg = <0x20000000 0xf1d>,
<0x20000f20 0xa8>,
<0x00080000 0x2000>,
<0x20100000 0x1000>;
reg-names = "dbi", "elbi", "parf", "config";
device_type = "pci";
linux,pci-domain = <0>;

View file

@ -9,6 +9,5 @@
/ {
model = "Qualcomm Technologies, Inc. MSM 8916 MTP";
compatible = "qcom,msm8916-mtp", "qcom,msm8916-mtp/1",
"qcom,msm8916", "qcom,mtp";
compatible = "qcom,msm8916-mtp", "qcom,msm8916-mtp/1", "qcom,msm8916";
};

View file

@ -0,0 +1,313 @@
// SPDX-License-Identifier: GPL-2.0-only
// Copyright (C) 2020 Stephan Gerhold
/dts-v1/;
#include "msm8916-pm8916.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
/ {
model = "Xiaomi Redmi 2 (Wingtech WT88047)";
compatible = "wingtech,wt88047", "qcom,msm8916";
aliases {
serial0 = &blsp1_uart2;
};
chosen {
stdout-path = "serial0";
};
gpio-keys {
compatible = "gpio-keys";
pinctrl-names = "default";
pinctrl-0 = <&gpio_keys_default>;
label = "GPIO Buttons";
volume-up {
label = "Volume Up";
gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>;
linux,code = <KEY_VOLUMEUP>;
};
};
usb_id: usb-id {
compatible = "linux,extcon-usb-gpio";
id-gpio = <&msmgpio 110 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_id_default>;
};
};
&blsp_i2c2 {
status = "okay";
imu@68 {
compatible = "invensense,mpu6880";
reg = <0x68>;
interrupt-parent = <&msmgpio>;
interrupts = <115 IRQ_TYPE_EDGE_RISING>;
vdd-supply = <&pm8916_l17>;
vddio-supply = <&pm8916_l6>;
pinctrl-names = "default";
pinctrl-0 = <&imu_default>;
mount-matrix = "1", "0", "0",
"0", "-1", "0",
"0", "0", "1";
};
};
&blsp_i2c5 {
status = "okay";
touchscreen@38 {
/* Likely some other model but works just fine with this one */
compatible = "edt,edt-ft5506";
reg = <0x38>;
interrupt-parent = <&msmgpio>;
interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&msmgpio 12 GPIO_ACTIVE_LOW>;
vcc-supply = <&pm8916_l17>;
iovcc-supply = <&pm8916_l6>;
touchscreen-size-x = <720>;
touchscreen-size-y = <1280>;
pinctrl-names = "default";
pinctrl-0 = <&touchscreen_default>;
};
};
&blsp_i2c6 {
status = "okay";
led-controller@45 {
compatible = "awinic,aw2013";
reg = <0x45>;
#address-cells = <1>;
#size-cells = <0>;
vcc-supply = <&pm8916_l16>;
led@0 {
reg = <0>;
led-max-microamp = <15000>;
function = LED_FUNCTION_INDICATOR;
color = <LED_COLOR_ID_RED>;
};
led@1 {
reg = <1>;
led-max-microamp = <15000>;
function = LED_FUNCTION_INDICATOR;
color = <LED_COLOR_ID_GREEN>;
};
led@2 {
reg = <2>;
led-max-microamp = <15000>;
function = LED_FUNCTION_INDICATOR;
color = <LED_COLOR_ID_BLUE>;
};
};
};
&blsp1_uart2 {
status = "okay";
};
&pm8916_resin {
status = "okay";
linux,code = <KEY_VOLUMEDOWN>;
};
&pm8916_vib {
status = "okay";
};
&pronto {
status = "okay";
};
&sdhc_1 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
};
&sdhc_2 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>;
pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
non-removable;
};
&usb {
status = "okay";
extcon = <&usb_id>, <&usb_id>;
};
&usb_hs_phy {
extcon = <&usb_id>;
};
&smd_rpm_regulators {
vdd_l1_l2_l3-supply = <&pm8916_s3>;
vdd_l4_l5_l6-supply = <&pm8916_s4>;
vdd_l7-supply = <&pm8916_s4>;
s3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1300000>;
};
s4 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2100000>;
};
l1 {
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
};
l2 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
};
l4 {
regulator-min-microvolt = <2050000>;
regulator-max-microvolt = <2050000>;
};
l5 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
l6 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
l7 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
l8 {
regulator-min-microvolt = <2850000>;
regulator-max-microvolt = <2900000>;
};
l9 {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
};
l10 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2800000>;
};
l11 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
regulator-allow-set-load;
regulator-system-load = <200000>;
};
l12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
};
l13 {
regulator-min-microvolt = <3075000>;
regulator-max-microvolt = <3075000>;
};
l14 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
l15 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
l16 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <3300000>;
};
l17 {
regulator-min-microvolt = <2850000>;
regulator-max-microvolt = <2850000>;
};
l18 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
};
&msmgpio {
gpio_keys_default: gpio-keys-default {
pins = "gpio107";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
};
imu_default: imu-default {
pins = "gpio115";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
touchscreen_default: touchscreen-default {
pins = "gpio13";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
reset {
pins = "gpio12";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
};
usb_id_default: usb-id-default {
pins = "gpio110";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
};

View file

@ -489,6 +489,26 @@ snoc: interconnect@580000 {
<&rpmcc RPM_SMD_SNOC_A_CLK>;
};
stm: stm@802000 {
compatible = "arm,coresight-stm", "arm,primecell";
reg = <0x00802000 0x1000>,
<0x09280000 0x180000>;
reg-names = "stm-base", "stm-stimulus-base";
clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>;
clock-names = "apb_pclk", "atclk";
status = "disabled";
out-ports {
port {
stm_out: endpoint {
remote-endpoint = <&funnel0_in7>;
};
};
};
};
/* System CTIs */
/* CTI 0 - TMC connections */
cti0: cti@810000 {
@ -562,6 +582,13 @@ funnel0_in4: endpoint {
remote-endpoint = <&funnel1_out>;
};
};
port@7 {
reg = <7>;
funnel0_in7: endpoint {
remote-endpoint = <&stm_out>;
};
};
};
out-ports {

View file

@ -15,16 +15,18 @@ / {
chosen { };
clocks {
xo_board: xo_board {
xo_board: xo-board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <19200000>;
clock-output-names = "xo_board";
};
sleep_clk: sleep_clk {
sleep_clk: sleep-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32768>;
clock-output-names = "sleep_clk";
};
};
@ -430,7 +432,7 @@ usb3: usb@f92f8800 {
power-domains = <&gcc USB30_GDSC>;
qcom,select-utmi-as-pipe-clk;
dwc3@f9200000 {
usb@f9200000 {
compatible = "snps,dwc3";
reg = <0xf9200000 0xcc00>;
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;

View file

@ -20,3 +20,11 @@ serial@75b0000 {
};
};
};
&hdmi {
status = "okay";
};
&hdmi_phy {
status = "okay";
};

View file

@ -0,0 +1,11 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
#include "msm8996-sony-xperia-tone-dora.dts"
#include "pmi8996.dtsi"
/ {
model = "Sony Xperia X Performance (PMI8996)";
};

View file

@ -0,0 +1,11 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
#include "msm8996-sony-xperia-tone-kagura.dts"
#include "pmi8996.dtsi"
/ {
model = "Sony Xperia XZ (PMI8996)";
};

View file

@ -0,0 +1,11 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
#include "msm8996-sony-xperia-tone-keyaki.dts"
#include "pmi8996.dtsi"
/ {
model = "Sony Xperia XZs (PMI8996)";
};

View file

@ -0,0 +1,27 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, AngeloGioacchino Del Regno
* <angelogioacchino.delregno@somainline.org>
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
/dts-v1/;
#include "msm8996-sony-xperia-tone.dtsi"
/ {
model = "Sony Xperia X Performance";
compatible = "sony,dora-row", "qcom,msm8996";
};
/delete-node/ &tof_sensor;
/delete-node/ &pm8994_l11;
/delete-node/ &pm8994_l14;
&usb_detect {
pins = "gpio24";
};
&usb3_id {
id-gpio = <&tlmm 24 GPIO_ACTIVE_LOW>;
};

View file

@ -0,0 +1,15 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, AngeloGioacchino Del Regno
* <angelogioacchino.delregno@somainline.org>
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
/dts-v1/;
#include "msm8996-sony-xperia-tone.dtsi"
/ {
model = "Sony Xperia XZ";
compatible = "sony,kagura-row", "qcom,msm8996";
};

View file

@ -0,0 +1,26 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, AngeloGioacchino Del Regno
* <angelogioacchino.delregno@somainline.org>
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
/dts-v1/;
#include "msm8996-sony-xperia-tone.dtsi"
/ {
model = "Sony Xperia XZs";
compatible = "sony,keyaki-row", "qcom,msm8996";
};
&pm8994_l19 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
&pm8994_l30 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-pull-down;
};

View file

@ -0,0 +1,956 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, AngeloGioacchino Del Regno
* <angelogioacchino.delregno@somainline.org>
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
#include "msm8996.dtsi"
#include "pm8994.dtsi"
#include "pmi8994.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
/delete-node/ &slpi_region;
/delete-node/ &venus_region;
/delete-node/ &zap_shader_region;
/ {
qcom,msm-id = <246 0x30001>; /* MSM8996 V3.1 (Final) */
qcom,pmic-id = <0x20009 0x2000a 0 0>; /* PM8994 + PMI8994 */
qcom,board-id = <8 0>;
chosen {
/*
* Due to an unknown-for-a-few-years regression,
* SDHCI only works on MSM8996 in PIO (lame) mode.
*/
bootargs = "sdhci.debug_quirks=0x40 sdhci.debug_quirks2=0x4 maxcpus=2";
};
reserved-memory {
ramoops@a7f00000 {
compatible = "ramoops";
reg = <0 0xa7f00000 0 0x100000>;
record-size = <0x20000>;
console-size = <0x40000>;
ftrace-size = <0x20000>;
pmsg-size = <0x20000>;
ecc-size = <16>;
};
cont_splash_mem: memory@83401000 {
reg = <0 0x83401000 0 0x23ff000>;
no-map;
};
zap_shader_region: gpu@90400000 {
compatible = "shared-dma-pool";
reg = <0x0 0x90400000 0x0 0x2000>;
no-map;
};
slpi_region: memory@90500000 {
reg = <0 0x90500000 0 0xa00000>;
no-map;
};
venus_region: memory@90f00000 {
reg = <0 0x90f00000 0 0x500000>;
no-map;
};
};
panel_tvdd: tvdd-regulator {
compatible = "regulator-fixed";
regulator-name = "panel_tvdd";
gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
pinctrl-0 = <&tp_vddio_en>;
pinctrl-names = "default";
};
usb3_id: usb3-id {
compatible = "linux,extcon-usb-gpio";
id-gpio = <&tlmm 25 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&usb_detect>;
};
vph_pwr: vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-min-microvolt = <3700000>;
regulator-max-microvolt = <3700000>;
regulator-name = "vph_pwr";
regulator-always-on;
regulator-boot-on;
};
wlan_en: wlan-en-1-8v {
compatible = "regulator-fixed";
regulator-name = "wlan-en-regulator";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
gpio = <&tlmm 84 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&wl_reg_on>;
/* WLAN card specific delay */
startup-delay-us = <70000>;
enable-active-high;
};
};
&blsp1_i2c3 {
status = "okay";
clock-frequency = <355000>;
tof_sensor: vl53l0x@29 {
compatible = "st,vl53l0x";
reg = <0x29>;
};
};
&blsp1_uart2 {
status = "okay";
};
&blsp2_i2c5 {
status = "okay";
clock-frequency = <355000>;
/* FUSB301 USB-C controller */
};
&blsp2_i2c6 {
status = "okay";
clock-frequency = <355000>;
synaptics@2c {
compatible = "syna,rmi4-i2c";
reg = <0x2c>;
interrupt-parent = <&tlmm>;
interrupts = <125 IRQ_TYPE_EDGE_FALLING>;
vdd-supply = <&panel_tvdd>;
syna,reset-delay-ms = <220>;
syna,startup-delay-ms = <220>;
#address-cells = <1>;
#size-cells = <0>;
rmi4-f01@1 {
reg = <0x1>;
syna,nosleep-mode = <1>;
};
rmi4-f11@11 {
reg = <0x11>;
syna,sensor-type = <1>;
};
};
};
&blsp2_uart2 {
status = "okay";
};
&camera0_mclk {
drive-strength = <2>;
output-low;
};
&camera0_pwdn {
drive-strength = <2>;
output-low;
};
&camera0_rst {
pins = "gpio30";
drive-strength = <2>;
output-low;
};
&camera2_mclk {
drive-strength = <2>;
output-low;
};
&camera2_rst {
drive-strength = <2>;
output-low;
};
&hsusb_phy1 {
status = "okay";
vdda-pll-supply = <&pm8994_l12>;
vdda-phy-dpdm-supply = <&pm8994_l24>;
};
&mmcc {
vdd-gfx-supply = <&vdd_gfx>;
};
&pcie0 {
status = "okay";
perst-gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
wake-gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>;
vddpe-3v3-supply = <&wlan_en>;
vdda-supply = <&pm8994_l28>;
};
&pcie_phy {
status = "okay";
vdda-phy-supply = <&pm8994_l28>;
vdda-pll-supply = <&pm8994_l12>;
};
&pm8994_gpios {
pinctrl-names = "default";
pinctrl-0 = <&pm8994_gpios_defaults>;
gpio-line-names =
"NC",
"VOL_DOWN_N",
"VOL_UP_N",
"SNAPSHOT_N",
"FOCUS_N",
"NC",
"NFC_VEN",
"NC",
"NC",
"NC",
"NC",
"NC",
"EAR_EN",
"NC",
"PM_DIVCLK1",
"PMI_CLK",
"NC",
"WL_SLEEP_CLK",
"NC",
"PMIC_SPON",
"UIM_BATT_ALARM",
"PMK_SLEEP_CLK";
/*
* We don't yet know for sure which GPIOs are of our interest, but what
* we do know is that if a vendor sets the pins to a non-default state, there's
* probably a reason for it, and just to be on the safe side, we follow suit.
*/
pm8994_gpios_defaults: pm8994-gpios-default-state {
pm8994-gpio1-nc {
pins = "gpio1";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
bias-high-impedance;
};
vol-down-n {
pins = "gpio2";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-pull-up;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_S4>;
};
vol-up-n {
pins = "gpio3";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-pull-up;
power-source = <PM8994_GPIO_S4>;
};
camera-snapshot-n {
pins = "gpio4";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-pull-up;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_S4>;
};
camera-focus-n {
pins = "gpio5";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-pull-up;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_S4>;
};
pm8994-gpio6-nc {
pins = "gpio6";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
bias-high-impedance;
power-source = <PM8994_GPIO_VPH>;
};
nfc-download {
pins = "gpio7";
function = PMIC_GPIO_FUNC_NORMAL;
output-low;
drive-push-pull;
bias-disable;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_S4>;
};
pm8994-gpio8-nc {
pins = "gpio8";
function = PMIC_GPIO_FUNC_NORMAL;
output-low;
drive-push-pull;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_VPH>;
};
pm8994-gpio9-nc {
pins = "gpio9";
function = PMIC_GPIO_FUNC_NORMAL;
output-high;
drive-push-pull;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_VPH>;
};
nfc-clock {
pins = "gpio10";
function = PMIC_GPIO_FUNC_NORMAL;
input-enable;
drive-push-pull;
bias-pull-down;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_S4>;
};
pm8994-gpio11-nc {
pins = "gpio11";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
bias-high-impedance;
power-source = <PM8994_GPIO_VPH>;
};
pm8994-gpio12-nc {
pins = "gpio12";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
bias-high-impedance;
power-source = <PM8994_GPIO_VPH>;
};
ear-enable {
pins = "gpio13";
function = PMIC_GPIO_FUNC_NORMAL;
output-high;
drive-push-pull;
bias-disable;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_S4>;
};
pm8994-gpio14-nc {
pins = "gpio14";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_VPH>;
};
pm-divclk1-gpio {
pins = "gpio15";
function = "func1";
output-high;
drive-push-pull;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_VPH>;
};
pmi-clk-gpio {
pins = "gpio16";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
};
pm8994-gpio17-nc {
pins = "gpio17";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
bias-high-impedance;
power-source = <PM8994_GPIO_VPH>;
};
rome-sleep {
pins = "gpio18";
function = PMIC_GPIO_FUNC_FUNC2;
output-low;
drive-push-pull;
bias-disable;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_MED>;
power-source = <PM8994_GPIO_S4>;
};
pm8994-gpio19-nc {
pins = "gpio19";
function = PMIC_GPIO_FUNC_NORMAL;
output-low;
drive-push-pull;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_VPH>;
};
pm8994-gpio22-nc {
pins = "gpio22";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
bias-high-impedance;
power-source = <PM8994_GPIO_VPH>;
};
};
};
&pm8994_mpps {
pinctrl-names = "default";
pinctrl-0 = <&pm8994_mpps_defaults>;
gpio-line-names =
"SDC_UIM_VBIAS",
"LCD_ID_ADC",
"VREF_DACX",
"NC",
"FLASH_THERM",
"NC",
"NC",
"RF_ID";
pm8994_mpps_defaults: pm8994-mpps-default-state {
lcd-id_adc-mpp {
pins = "mpp2";
function = "analog";
input-enable;
qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH6>;
};
pm-mpp4-nc {
pins = "mpp4";
function = "digital";
bias-high-impedance;
power-source = <PM8994_GPIO_VPH>;
};
flash-therm-mpp {
pins = "mpp5";
function = "analog";
input-enable;
qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH5>;
};
mpp6-nc {
pins = "mpp6";
function = "digital";
bias-high-impedance;
};
rf-id-mpp {
pins = "mpp8";
function = "analog";
input-enable;
qcom,amux-route = <PMIC_MPP_AMUX_ROUTE_CH8>;
};
};
};
&pm8994_resin {
status = "okay";
linux,code = <KEY_VOLUMEUP>;
};
&pmi8994_gpios {
pinctrl-names = "default";
pinctrl-0 = <&pmi8994_gpios_defaults>;
gpio-line-names =
"VIB_LDO_EN",
"NC",
"NC",
"NC",
"NC",
"NC",
"NC",
"NC",
"USB_SWITCH_SEL",
"NC";
pmi8994_gpios_defaults: pmi8994-gpios-default-state {
vib-ldo-en-gpio {
pins = "gpio1";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
output-low;
bias-disable;
power-source = <PM8994_GPIO_S4>;
};
pmi-gpio2-nc {
pins = "gpio2";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_VPH>;
};
pmi-gpio3-nc {
pins = "gpio3";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
input-enable;
bias-high-impedance;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_VPH>;
};
pmi-gpio4-nc {
pins = "gpio4";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
output-high;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_S4>;
};
pmi-gpio5-nc {
pins = "gpio5";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
output-high;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_S4>;
};
pmi-gpio6-nc {
pins = "gpio6";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
output-high;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_S4>;
};
pmi-gpio7-nc {
pins = "gpio7";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
output-high;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_S4>;
};
pmi-gpio8-nc {
pins = "gpio8";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
output-high;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
power-source = <PM8994_GPIO_S4>;
};
usb-switch-sel {
pins = "gpio9";
function = PMIC_GPIO_FUNC_NORMAL;
drive-push-pull;
};
pmi-gpio10-nc {
pins = "gpio10";
function = PMIC_GPIO_FUNC_NORMAL;
output-low;
drive-push-pull;
bias-disable;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
power-source = <PM8994_GPIO_S4>;
};
};
};
&pmi8994_spmi_regulators {
qcom,saw-reg = <&saw3>;
vdd_gfx:
pmi8994_s2: s2 {
/* Pinned to a high value for now to avoid random crashes. */
regulator-min-microvolt = <1015000>;
regulator-max-microvolt = <1015000>;
regulator-name = "vdd_gfx";
regulator-always-on;
};
pmi8994_s9: s9 {
qcom,saw-slave;
};
pmi8994_s10: s10 {
qcom,saw-slave;
};
pmi8994_s11: s11 {
qcom,saw-leader;
regulator-always-on;
regulator-min-microvolt = <470000>;
regulator-max-microvolt = <1140000>;
};
};
&pmi8994_wled {
status = "okay";
default-brightness = <512>;
};
&rpm_requests {
pm8994-regulators {
compatible = "qcom,rpm-pm8994-regulators";
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-supply = <&pm8994_s3>;
vdd_l2_l26_l28-supply = <&pm8994_s3>;
vdd_l3_l11-supply = <&pm8994_s3>;
vdd_l4_l27_l31-supply = <&pm8994_s3>;
vdd_l5_l7-supply = <&pm8994_s5>;
vdd_l6_l12_l32-supply = <&pm8994_s5>;
vdd_l8_l16_l30-supply = <&vph_pwr>;
vdd_l14_l15-supply = <&pm8994_s5>;
vdd_l20_l21-supply = <&pm8994_s5>;
vdd_l25-supply = <&pm8994_s3>;
vdd_lvs1_2-supply = <&pm8994_s4>;
pm8994_s3: s3 {
regulator-min-microvolt = <1300000>;
regulator-max-microvolt = <1300000>;
};
pm8994_s4: s4 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-system-load = <325000>;
regulator-always-on;
};
pm8994_s5: s5 {
regulator-min-microvolt = <2150000>;
regulator-max-microvolt = <2150000>;
};
pm8994_s7: s7 {
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <800000>;
};
pm8994_l1: l1 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
};
pm8994_l2: l2 {
regulator-min-microvolt = <1250000>;
regulator-max-microvolt = <1250000>;
};
pm8994_l3: l3 {
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
};
pm8994_l4: l4 {
regulator-min-microvolt = <1225000>;
regulator-max-microvolt = <1225000>;
};
/* L6 and L7 seem unused. */
pm8994_l8: l8 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
pm8994_l9: l9 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
pm8994_l10: l10 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
pm8994_l11: l11 {
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
};
pm8994_l12: l12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-allow-set-load;
};
pm8994_l13: l13 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
regulator-system-load = <22000>;
regulator-allow-set-load;
};
pm8994_l14: l14 {
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <1900000>;
};
pm8994_l15: l15 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
pm8994_l16: l16 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
pm8994_l17: l17 {
regulator-min-microvolt = <2200000>;
regulator-max-microvolt = <2500000>;
};
pm8994_l18: l18 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
pm8994_l19: l19 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
pm8994_l20: l20 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
regulator-system-load = <570000>;
regulator-allow-set-load;
};
pm8994_l21: l21 {
regulator-min-microvolt = <2950000>;
regulator-max-microvolt = <2950000>;
regulator-system-load = <800000>;
regulator-allow-set-load;
};
pm8994_l22: l22 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
};
pm8994_l23: l23 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
pm8994_l24: l24 {
regulator-min-microvolt = <3075000>;
regulator-max-microvolt = <3075000>;
regulator-allow-set-load;
};
pm8994_l25: l25 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-allow-set-load;
};
pm8994_l27: l27 {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1200000>;
};
pm8994_l28: l28 {
regulator-min-microvolt = <925000>;
regulator-max-microvolt = <925000>;
regulator-allow-set-load;
};
pm8994_l29: l29 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <2700000>;
};
pm8994_l30: l30 { };
pm8994_l32: l32 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
};
};
&sdhc1 {
/* eMMC doesn't seem to cooperate even in PIO mode.. */
status = "disabled";
vmmc-supply = <&pm8994_l20>;
vqmmc-supply = <&pm8994_s4>;
mmc-hs400-1_8v;
mmc-hs200-1_8v;
};
&sdhc2 {
status = "okay";
cd-gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
vmmc-supply = <&pm8994_l21>;
vqmmc-supply = <&pm8994_l13>;
};
&tlmm {
gpio-reserved-ranges = <0 4>;
pinctrl-0 = <&sw_service_gpio>;
pinctrl-names = "default";
disp_reset_n_gpio: disp-reset-n {
pins = "gpio8";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
mdp_vsync_p_gpio: mdp-vsync-p {
pins = "gpio10";
function = "mdp_vsync";
drive-strength = <2>;
bias-disable;
};
sw_service_gpio: sw-service-gpio {
pins = "gpio16";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
};
usb_detect: usb-detect {
pins = "gpio25";
function = "gpio";
drive-strength = <2>;
bias-disable;
output-high;
};
uim_detect_en: uim-detect-en {
pins = "gpio29";
function = "gpio";
drive-strength = <2>;
bias-disable;
output-high;
};
tray_det_pin: tray-det {
pins = "gpio40";
function = "gpio";
drive-strength = <2>;
bias-disable;
};
tp_vddio_en: tp-vddio-en {
pins = "gpio50";
function = "gpio";
drive-strength = <2>;
bias-disable;
output-high;
};
lcd_vddio_en: lcd-vddio-en {
pins = "gpio51";
function = "gpio";
drive-strength = <2>;
bias-disable;
output-low;
};
wl_host_wake: wl-host-wake {
pins = "gpio79";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
input-high;
};
wl_reg_on: wl-reg-on {
pins = "gpio84";
function = "gpio";
drive-strength = <2>;
bias-disable;
output-low;
};
ts_reset_n: ts-rst-n {
pins = "gpio89";
function = "gpio";
drive-strength = <2>;
};
touch_int_n: touch-int-n {
pins = "gpio125";
function = "gpio";
drive-strength = <2>;
bias-pull-up;
};
touch_int_sleep: touch-int-sleep {
pins = "gpio125";
function = "gpio";
drive-strength = <2>;
bias-pull-down;
};
};
/*
* For reasons that are currently unknown (but probably related to fusb301), USB takes about
* 6 minutes to wake up (nothing interesting in kernel logs), but then it works as it should.
*/
&usb3 {
status = "okay";
qcom,select-utmi-as-pipe-clk;
};
&usb3_dwc3 {
extcon = <&usb3_id>;
dr_mode = "peripheral";
phys = <&hsusb_phy1>;
phy-names = "usb2-phy";
snps,hird-threshold = /bits/ 8 <0>;
};

View file

@ -0,0 +1,63 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
#include "msm8996.dtsi"
/ {
qcom,msm-id = <246 0x30000>;
};
/*
* This revision seems to have differ GPU CPR
* parameters, GPU frequencies and some differences
* when it comes to voltage delivery to.. once again
* the GPU. Funnily enough, it's simpler to make it an
* overlay on top of 3.1 (the final one) than vice versa.
* The differences will show here as more and more
* features get enabled upstream.
*/
gpu_opp_table_3_0: gpu-opp-table-30 {
compatible = "operating-points-v2";
opp-624000000 {
opp-hz = /bits/ 64 <624000000>;
opp-level = <7>;
};
opp-560000000 {
opp-hz = /bits/ 64 <560000000>;
opp-level = <6>;
};
opp-510000000 {
opp-hz = /bits/ 64 <510000000>;
opp-level = <5>;
};
opp-401800000 {
opp-hz = /bits/ 64 <401800000>;
opp-level = <4>;
};
opp-315000000 {
opp-hz = /bits/ 64 <315000000>;
opp-level = <3>;
};
opp-214000000 {
opp-hz = /bits/ 64 <214000000>;
opp-level = <3>;
};
opp-133000000 {
opp-hz = /bits/ 64 <133000000>;
opp-level = <3>;
};
};
&gpu {
operating-points-v2 = <&gpu_opp_table_3_0>;
};

View file

@ -19,14 +19,14 @@ / {
chosen { };
clocks {
xo_board: xo_board {
xo_board: xo-board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <19200000>;
clock-output-names = "xo_board";
};
sleep_clk: sleep_clk {
sleep_clk: sleep-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32764>;
@ -368,10 +368,10 @@ tcsr_mutex: hwlock {
#hwlock-cells = <1>;
};
memory {
memory@80000000 {
device_type = "memory";
/* We expect the bootloader to fill in the reg */
reg = <0 0 0 0>;
reg = <0x0 0x80000000 0x0 0x0>;
};
psci {
@ -898,6 +898,8 @@ hdmi: hdmi-tx@9a0000 {
phy-names = "hdmi_phy";
#sound-dai-cells = <1>;
status = "disabled";
ports {
#address-cells = <1>;
#size-cells = <0>;
@ -931,6 +933,8 @@ hdmi_phy: hdmi-phy@9a0600 {
<&gcc GCC_HDMI_CLKREF_CLK>;
clock-names = "iface",
"ref";
status = "disabled";
};
};
@ -968,6 +972,8 @@ gpu: gpu@b00000 {
status = "disabled";
#cooling-cells = <2>;
gpu_opp_table: opp-table {
compatible ="operating-points-v2";
@ -1082,21 +1088,21 @@ cci0_default: cci0-default {
camera0_state_on:
camera_rear_default: camera-rear-default {
mclk0 {
camera0_mclk: mclk0 {
pins = "gpio13";
function = "cam_mclk";
drive-strength = <16>;
bias-disable;
};
rst {
camera0_rst: rst {
pins = "gpio25";
function = "gpio";
drive-strength = <16>;
bias-disable;
};
pwdn {
camera0_pwdn: pwdn {
pins = "gpio26";
function = "gpio";
drive-strength = <16>;
@ -1137,14 +1143,14 @@ rst {
camera2_state_on:
camera_front_default: camera-front-default {
mclk2 {
camera2_mclk: mclk2 {
pins = "gpio15";
function = "cam_mclk";
drive-strength = <16>;
bias-disable;
};
rst {
camera2_rst: rst {
pins = "gpio23";
function = "gpio";
drive-strength = <16>;
@ -2566,7 +2572,7 @@ usb3: usb@6af8800 {
power-domains = <&gcc USB30_GDSC>;
status = "disabled";
dwc3@6a00000 {
usb3_dwc3: dwc3@6a00000 {
compatible = "snps,dwc3";
reg = <0x06a00000 0xcc00>;
interrupts = <0 131 IRQ_TYPE_LEVEL_HIGH>;
@ -3205,7 +3211,14 @@ trips {
gpu1_alert0: trip-point0 {
temperature = <90000>;
hysteresis = <2000>;
type = "hot";
type = "passive";
};
};
cooling-maps {
map0 {
trip = <&gpu1_alert0>;
cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};
@ -3220,7 +3233,14 @@ trips {
gpu2_alert0: trip-point0 {
temperature = <90000>;
hysteresis = <2000>;
type = "hot";
type = "passive";
};
};
cooling-maps {
map0 {
trip = <&gpu2_alert0>;
cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
};
};
};

View file

@ -18,10 +18,10 @@ / {
chosen { };
memory {
memory@80000000 {
device_type = "memory";
/* We expect the bootloader to fill in the reg */
reg = <0 0 0 0>;
reg = <0x0 0x80000000 0x0 0x0>;
};
reserved-memory {

View file

@ -3,9 +3,35 @@
* Copyright (c) 2020, Konrad Dybcio
*/
#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/thermal/thermal.h>
/ {
thermal-zones {
pm660 {
polling-delay-passive = <250>;
polling-delay = <1000>;
thermal-sensors = <&pm660_temp>;
trips {
pm660_alert0: pm660-alert0 {
temperature = <95000>;
hysteresis = <2000>;
type = "passive";
};
pm660_crit: pm660-crit {
temperature = <125000>;
hysteresis = <2000>;
type = "critical";
};
};
};
};
};
&spmi_bus {
@ -37,6 +63,102 @@ pwrkey {
};
pm660_temp: temp-alarm@2400 {
compatible = "qcom,spmi-temp-alarm";
reg = <0x2400>;
interrupts = <0x0 0x24 0x0 IRQ_TYPE_EDGE_RISING>;
io-channels = <&pm660_adc ADC5_DIE_TEMP>;
io-channel-names = "thermal";
#thermal-sensor-cells = <0>;
};
pm660_adc: adc@3100 {
compatible = "qcom,spmi-adc-rev2";
reg = <0x3100>;
interrupts = <0x0 0x31 0x0 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>;
#size-cells = <0>;
#io-channel-cells = <1>;
ref_gnd: ref_gnd@0 {
reg = <ADC5_REF_GND>;
qcom,decimation = <1024>;
qcom,pre-scaling = <1 1>;
};
vref_1p25: vref_1p25@1 {
reg = <ADC5_1P25VREF>;
qcom,decimation = <1024>;
qcom,pre-scaling = <1 1>;
};
die_temp: die_temp@6 {
reg = <ADC5_DIE_TEMP>;
qcom,decimation = <1024>;
qcom,pre-scaling = <1 1>;
};
xo_therm: xo_therm@4c {
reg = <ADC5_XO_THERM_100K_PU>;
qcom,pre-scaling = <1 1>;
qcom,decimation = <1024>;
qcom,hw-settle-time = <200>;
qcom,ratiometric;
};
msm_therm: msm_therm@4d {
reg = <ADC5_AMUX_THM1_100K_PU>;
qcom,pre-scaling = <1 1>;
qcom,decimation = <1024>;
qcom,hw-settle-time = <200>;
qcom,ratiometric;
};
emmc_therm: emmc_therm@4e {
reg = <ADC5_AMUX_THM2_100K_PU>;
qcom,pre-scaling = <1 1>;
qcom,decimation = <1024>;
qcom,hw-settle-time = <200>;
qcom,ratiometric;
};
pa_therm0: thermistor0@4f {
reg = <ADC5_AMUX_THM3_100K_PU>;
qcom,pre-scaling = <1 1>;
qcom,decimation = <1024>;
qcom,hw-settle-time = <200>;
qcom,ratiometric;
};
pa_therm1: thermistor1@50 {
reg = <ADC5_AMUX_THM4_100K_PU>;
qcom,pre-scaling = <1 1>;
qcom,decimation = <1024>;
qcom,hw-settle-time = <200>;
qcom,ratiometric;
};
quiet_therm: quiet_therm@51 {
reg = <ADC5_AMUX_THM5_100K_PU>;
qcom,pre-scaling = <1 1>;
qcom,decimation = <1024>;
qcom,hw-settle-time = <200>;
qcom,ratiometric;
};
vadc_vph_pwr: vph_pwr@83 {
reg = <ADC5_VPH_PWR>;
qcom,decimation = <1024>;
qcom,pre-scaling = <1 3>;
};
vcoin: vcoin@83 {
reg = <ADC5_VCOIN>;
qcom,decimation = <1024>;
qcom,pre-scaling = <1 3>;
};
};
pm660_gpios: gpios@c000 {
compatible = "qcom,pm660-gpio";
reg = <0xc000>;
@ -47,4 +169,15 @@ pm660_gpios: gpios@c000 {
#interrupt-cells = <2>;
};
};
pmic@1 {
compatible = "qcom,pm660", "qcom,spmi-pmic";
reg = <0x1 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
pm660_spmi_regulators: pm660-regulators {
compatible = "qcom,pm660-regulators";
};
};
};

View file

@ -3,9 +3,35 @@
* Copyright (c) 2020, Konrad Dybcio
*/
#include <dt-bindings/iio/qcom,spmi-vadc.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/spmi/spmi.h>
#include <dt-bindings/thermal/thermal.h>
/ {
thermal-zones {
pm660l {
polling-delay-passive = <250>;
polling-delay = <1000>;
thermal-sensors = <&pm660l_temp>;
trips {
pm660l_alert0: pm660l-alert0 {
temperature = <95000>;
hysteresis = <2000>;
type = "passive";
};
pm660l_crit: pm660l-crit {
temperature = <125000>;
hysteresis = <2000>;
type = "critical";
};
};
};
};
};
&spmi_bus {
@ -15,6 +41,13 @@ pmic@2 {
#address-cells = <1>;
#size-cells = <0>;
pm660l_temp: temp-alarm@2400 {
compatible = "qcom,spmi-temp-alarm";
reg = <0x2400>;
interrupts = <0x2 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
#thermal-sensor-cells = <0>;
};
pm660l_gpios: gpios@c000 {
compatible = "qcom,pm660l-gpio", "qcom,spmi-gpio";
reg = <0xc000>;
@ -31,6 +64,27 @@ pmic@3 {
reg = <0x3 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
pm660l_wled: leds@d800 {
compatible = "qcom,pm660l-wled";
reg = <0xd800 0xd900>;
interrupts = <0x3 0xd8 0x1 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "ovp";
label = "backlight";
qcom,switching-freq = <800>;
qcom,ovp-millivolt = <29600>;
qcom,current-boost-limit = <970>;
qcom,current-limit-microamp = <20000>;
qcom,num-strings = <2>;
qcom,enabled-strings = <0 1>;
status = "disabled";
};
pm660l_spmi_regulators: pm660l-regulators {
compatible = "qcom,pm660l-regulators";
};
};
};

View file

@ -9,7 +9,6 @@ pm8004_lsid4: pmic@4 {
reg = <0x4 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
pm8004_lsid5: pmic@5 {
@ -17,7 +16,6 @@ pm8004_lsid5: pmic@5 {
reg = <0x5 SPMI_USID>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
pm8004_spmi_regulators: regulators {
compatible = "qcom,pm8004-regulators";

View file

@ -53,6 +53,12 @@ power-on@800 {
status = "disabled";
};
pm8150b_vbus: dcdc@1100 {
compatible = "qcom,pm8150b-vbus-reg";
status = "disabled";
reg = <0x1100>;
};
pm8150b_temp: temp-alarm@2400 {
compatible = "qcom,spmi-temp-alarm";
reg = <0x2400>;

View file

@ -0,0 +1,15 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
*/
/*
* PMI8996 is a slight modification of PMI8994 with
* some notable changes, like being the first PMIC
* whose the bootloader has to check to continue booting
* and a change to a LABIBB parameter.
*/
/ {
qcom,pmic-id = <0x20009 0x10013 0 0>;
};

View file

@ -307,10 +307,6 @@ &qupv3_id_1 {
status = "okay";
};
&tlmm {
gpio-reserved-ranges = <0 4>;
};
&uart2 {
status = "okay";
};
@ -337,6 +333,16 @@ &ufs_mem_phy {
vdda-pll-max-microamp = <18300>;
};
&usb_1 {
status = "okay";
};
&usb_1_dwc3 {
dr_mode = "host";
pinctrl-names = "default";
pinctrl-0 = <&usb2phy_ac_en1_default>;
};
&usb_1_hsphy {
status = "okay";
@ -346,15 +352,51 @@ &usb_1_hsphy {
};
&usb_1_qmpphy {
status = "disabled";
};
&usb_2 {
status = "okay";
};
&usb_2_dwc3 {
dr_mode = "host";
pinctrl-names = "default";
pinctrl-0 = <&usb2phy_ac_en2_default>;
};
&usb_2_hsphy {
status = "okay";
vdda-pll-supply = <&vdd_usb_hs_core>;
vdda33-supply = <&vdda_usb_hs_3p1>;
vdda18-supply = <&vdda_usb_hs_1p8>;
};
&usb_2_qmpphy {
status = "okay";
vdda-phy-supply = <&vreg_l8c_1p2>;
vdda-pll-supply = <&vdda_usb_ss_dp_core_1>;
};
&usb_1 {
status = "okay";
};
&tlmm {
gpio-reserved-ranges = <0 4>;
&usb_1_dwc3 {
dr_mode = "peripheral";
usb2phy_ac_en1_default: usb2phy_ac_en1_default {
mux {
pins = "gpio113";
function = "usb2phy_ac";
bias-disable;
drive-strength = <2>;
};
};
usb2phy_ac_en2_default: usb2phy_ac_en2_default {
mux {
pins = "gpio123";
function = "usb2phy_ac";
bias-disable;
drive-strength = <2>;
};
};
};

View file

@ -23,7 +23,7 @@ / {
adau7002: audio-codec-1 {
compatible = "adi,adau7002";
IOVDD-supply = <&pp1800_l15a>;
wakeup-delay-ms = <15>;
wakeup-delay-ms = <80>;
#sound-dai-cells = <0>;
};

View file

@ -247,29 +247,14 @@ pen_insert: pen-insert {
};
};
max98357a: audio-codec-0 {
compatible = "maxim,max98357a";
max98360a: audio-codec-0 {
compatible = "maxim,max98360a";
pinctrl-names = "default";
pinctrl-0 = <&amp_en>;
sdmode-gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>;
#sound-dai-cells = <0>;
};
panel: panel {
/* Compatible will be filled in per-board */
power-supply = <&pp3300_dx_edp>;
backlight = <&backlight>;
hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;
ports {
port {
panel_in_edp: endpoint {
remote-endpoint = <&sn65dsi86_out>;
};
};
};
};
pwmleds {
compatible = "pwm-leds";
keyboard_backlight: keyboard-backlight {
@ -288,6 +273,7 @@ sound: sound {
"Headphone Jack", "HPOL",
"Headphone Jack", "HPOR";
#sound-dai-cells = <0>;
#address-cells = <1>;
#size-cells = <0>;
@ -311,7 +297,19 @@ cpu {
};
sound_multimedia1_codec: codec {
sound-dai = <&max98357a>;
sound-dai = <&max98360a>;
};
};
dai-link@2 {
link-name = "MultiMedia2";
reg = <2>;
cpu {
sound-dai = <&lpass_cpu 2>;
};
codec {
sound-dai = <&mdss_dp>;
};
};
};
@ -666,6 +664,21 @@ sn65dsi86_out: endpoint {
};
};
};
aux-bus {
panel: panel {
/* Compatible will be filled in per-board */
power-supply = <&pp3300_dx_edp>;
backlight = <&backlight>;
hpd-gpios = <&sn65dsi86_bridge 2 GPIO_ACTIVE_HIGH>;
port {
panel_in_edp: endpoint {
remote-endpoint = <&sn65dsi86_out>;
};
};
};
};
};
};
@ -768,6 +781,10 @@ secondary_mi2s: mi2s@1 {
reg = <MI2S_SECONDARY>;
qcom,playback-sd-lines = <0>;
};
hdmi-primary@0 {
reg = <LPASS_DP_RX>;
};
};
&mdp {
@ -778,6 +795,15 @@ &mdss {
status = "okay";
};
&mdss_dp {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&dp_hot_plug_det>;
data-lanes = <0 1>;
vdda-1p2-supply = <&vdda_usb_ss_dp_1p2>;
vdda-0p9-supply = <&vdda_usb_ss_dp_core>;
};
&pm6150_adc {
charger-thermistor@4f {
reg = <ADC5_AMUX_THM3_100K_PU>;

View file

@ -110,6 +110,11 @@ tz_mem: memory@80b00000 {
no-map;
};
ipa_fw_mem: memory@8b700000 {
reg = <0 0x8b700000 0 0x10000>;
no-map;
};
rmtfs_mem: memory@94600000 {
compatible = "qcom,rmtfs-mem";
reg = <0x0 0x94600000 0x0 0x200000>;
@ -668,7 +673,7 @@ gcc: clock-controller@100000 {
qfprom: efuse@784000 {
compatible = "qcom,sc7180-qfprom", "qcom,qfprom";
reg = <0 0x00784000 0 0x8ff>,
reg = <0 0x00784000 0 0x7a0>,
<0 0x00780000 0 0x7a0>,
<0 0x00782000 0 0x100>,
<0 0x00786000 0 0x1fff>;
@ -2928,6 +2933,13 @@ dpu_intf1_out: endpoint {
remote-endpoint = <&dsi0_in>;
};
};
port@2 {
reg = <2>;
dpu_intf0_out: endpoint {
remote-endpoint = <&dp_in>;
};
};
};
mdp_opp_table: mdp-opp-table {
@ -2977,6 +2989,9 @@ dsi0: dsi@ae94000 {
"iface",
"bus";
assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
assigned-clock-parents = <&dsi_phy 0>, <&dsi_phy 1>;
operating-points-v2 = <&dsi_opp_table>;
power-domains = <&rpmhpd SC7180_CX>;
@ -3044,6 +3059,75 @@ dsi_phy: dsi-phy@ae94400 {
status = "disabled";
};
mdss_dp: displayport-controller@ae90000 {
compatible = "qcom,sc7180-dp";
status = "disabled";
reg = <0 0x0ae90000 0 0x1400>;
interrupt-parent = <&mdss>;
interrupts = <12>;
clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
<&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
<&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
<&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
<&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>;
clock-names = "core_iface", "core_aux", "ctrl_link",
"ctrl_link_iface", "stream_pixel";
#clock-cells = <1>;
assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>,
<&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>;
phys = <&dp_phy>;
phy-names = "dp";
operating-points-v2 = <&dp_opp_table>;
power-domains = <&rpmhpd SC7180_CX>;
#sound-dai-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
dp_in: endpoint {
remote-endpoint = <&dpu_intf0_out>;
};
};
port@1 {
reg = <1>;
dp_out: endpoint { };
};
};
dp_opp_table: opp-table {
compatible = "operating-points-v2";
opp-160000000 {
opp-hz = /bits/ 64 <160000000>;
required-opps = <&rpmhpd_opp_low_svs>;
};
opp-270000000 {
opp-hz = /bits/ 64 <270000000>;
required-opps = <&rpmhpd_opp_svs>;
};
opp-540000000 {
opp-hz = /bits/ 64 <540000000>;
required-opps = <&rpmhpd_opp_svs_l1>;
};
opp-810000000 {
opp-hz = /bits/ 64 <810000000>;
required-opps = <&rpmhpd_opp_nom>;
};
};
};
};
dispcc: clock-controller@af00000 {
@ -3456,17 +3540,20 @@ lpasscc: clock-controller@62d00000 {
#power-domain-cells = <1>;
};
lpass_cpu: lpass@62f00000 {
lpass_cpu: lpass@62d87000 {
compatible = "qcom,sc7180-lpass-cpu";
reg = <0 0x62f00000 0 0x29000>;
reg-names = "lpass-lpaif";
reg = <0 0x62d87000 0 0x68000>, <0 0x62f00000 0 0x29000>;
reg-names = "lpass-hdmiif", "lpass-lpaif";
iommus = <&apps_smmu 0x1020 0>,
<&apps_smmu 0x1021 0>;
<&apps_smmu 0x1021 0>,
<&apps_smmu 0x1032 0>;
power-domains = <&lpass_hm LPASS_CORE_HM_GDSCR>;
status = "disabled";
clocks = <&gcc GCC_LPASS_CFG_NOC_SWAY_CLK>,
<&lpasscc LPASS_AUDIO_CORE_CORE_CLK>,
<&lpasscc LPASS_AUDIO_CORE_EXT_MCLK0_CLK>,
@ -3483,8 +3570,9 @@ lpass_cpu: lpass@62f00000 {
#address-cells = <1>;
#size-cells = <0>;
interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "lpass-irq-lpaif";
interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "lpass-irq-lpaif", "lpass-irq-hdmi";
};
lpass_hm: clock-controller@63000000 {

View file

@ -8,17 +8,11 @@
/dts-v1/;
#include <dt-bindings/iio/qcom,spmi-adc7-pmr735a.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmr735b.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pm8350.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
#include "sc7280.dtsi"
#include "pm7325.dtsi"
#include "sc7280-idp.dtsi"
#include "pmr735a.dtsi"
#include "pm8350c.dtsi"
#include "pmk8350.dtsi"
/ {
model = "Qualcomm Technologies, Inc. sc7280 IDP platform";
model = "Qualcomm Technologies, Inc. sc7280 IDP SKU1 platform";
compatible = "qcom,sc7280-idp", "google,senor", "qcom,sc7280";
aliases {
@ -31,186 +25,6 @@ chosen {
};
&apps_rsc {
pm7325-regulators {
compatible = "qcom,pm7325-rpmh-regulators";
qcom,pmic-id = "b";
vreg_s1b_1p8: smps1 {
regulator-min-microvolt = <1856000>;
regulator-max-microvolt = <2040000>;
};
vreg_s7b_0p9: smps7 {
regulator-min-microvolt = <535000>;
regulator-max-microvolt = <1120000>;
};
vreg_s8b_1p2: smps8 {
regulator-min-microvolt = <1256000>;
regulator-max-microvolt = <1500000>;
};
vreg_l1b_0p8: ldo1 {
regulator-min-microvolt = <825000>;
regulator-max-microvolt = <925000>;
};
vreg_l2b_3p0: ldo2 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <3544000>;
};
vreg_l6b_1p2: ldo6 {
regulator-min-microvolt = <1140000>;
regulator-max-microvolt = <1260000>;
};
vreg_l7b_2p9: ldo7 {
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <2960000>;
};
vreg_l8b_0p9: ldo8 {
regulator-min-microvolt = <870000>;
regulator-max-microvolt = <970000>;
};
vreg_l9b_1p2: ldo9 {
regulator-min-microvolt = <1080000>;
regulator-max-microvolt = <1304000>;
};
vreg_l11b_1p7: ldo11 {
regulator-min-microvolt = <1504000>;
regulator-max-microvolt = <2000000>;
};
vreg_l12b_0p8: ldo12 {
regulator-min-microvolt = <751000>;
regulator-max-microvolt = <824000>;
};
vreg_l13b_0p8: ldo13 {
regulator-min-microvolt = <530000>;
regulator-max-microvolt = <824000>;
};
vreg_l14b_1p2: ldo14 {
regulator-min-microvolt = <1080000>;
regulator-max-microvolt = <1304000>;
};
vreg_l15b_0p8: ldo15 {
regulator-min-microvolt = <765000>;
regulator-max-microvolt = <1020000>;
};
vreg_l16b_1p2: ldo16 {
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1300000>;
};
vreg_l17b_1p8: ldo17 {
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <1900000>;
};
vreg_l18b_1p8: ldo18 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2000000>;
};
vreg_l19b_1p8: ldo19 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
};
pm8350c-regulators {
compatible = "qcom,pm8350c-rpmh-regulators";
qcom,pmic-id = "c";
vreg_s1c_2p2: smps1 {
regulator-min-microvolt = <2190000>;
regulator-max-microvolt = <2210000>;
};
vreg_s9c_1p0: smps9 {
regulator-min-microvolt = <1010000>;
regulator-max-microvolt = <1170000>;
};
vreg_l1c_1p8: ldo1 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1980000>;
};
vreg_l2c_1p8: ldo2 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <1980000>;
};
vreg_l3c_3p0: ldo3 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <3540000>;
};
vreg_l4c_1p8: ldo4 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <3300000>;
};
vreg_l5c_1p8: ldo5 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <3300000>;
};
vreg_l6c_2p9: ldo6 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
};
vreg_l7c_3p0: ldo7 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3544000>;
};
vreg_l8c_1p8: ldo8 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <2000000>;
};
vreg_l9c_2p9: ldo9 {
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <2960000>;
};
vreg_l10c_0p8: ldo10 {
regulator-min-microvolt = <720000>;
regulator-max-microvolt = <1050000>;
};
vreg_l11c_2p8: ldo11 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <3544000>;
};
vreg_l12c_1p8: ldo12 {
regulator-min-microvolt = <1650000>;
regulator-max-microvolt = <2000000>;
};
vreg_l13c_3p0: ldo13 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <3544000>;
};
vreg_bob: bob {
regulator-min-microvolt = <3008000>;
regulator-max-microvolt = <3960000>;
};
};
pmr735a-regulators {
compatible = "qcom,pmr735a-rpmh-regulators";
qcom,pmic-id = "e";
@ -242,52 +56,15 @@ vreg_l6e_0p8: ldo6 {
};
};
&ipa {
status = "okay";
modem-init;
};
&pmk8350_vadc {
pm8350_die_temp {
reg = <PM8350_ADC7_DIE_TEMP>;
label = "pm8350_die_temp";
qcom,pre-scaling = <1 1>;
};
pmk8350_die_temp {
reg = <PMK8350_ADC7_DIE_TEMP>;
label = "pmk8350_die_temp";
qcom,pre-scaling = <1 1>;
};
pmr735a_die_temp {
reg = <PMR735A_ADC7_DIE_TEMP>;
label = "pmr735a_die_temp";
qcom,pre-scaling = <1 1>;
};
pmr735b_die_temp {
reg = <PMR735B_ADC7_DIE_TEMP>;
label = "pmr735b_die_temp";
qcom,pre-scaling = <1 1>;
};
};
&qupv3_id_0 {
status = "okay";
};
&uart5 {
status = "okay";
};
/* PINCTRL - additions to nodes defined in sc7280.dtsi */
&qup_uart5_default {
tx {
pins = "gpio46";
drive-strength = <2>;
bias-disable;
};
rx {
pins = "gpio47";
drive-strength = <2>;
bias-pull-up;
pmr735a_die_temp {
reg = <PMR735A_ADC7_DIE_TEMP>;
label = "pmr735a_die_temp";
qcom,pre-scaling = <1 1>;
};
};

View file

@ -0,0 +1,341 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* sc7280 IDP board device tree source (common between SKU1 and SKU2)
*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*/
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
#include "sc7280.dtsi"
#include "pm7325.dtsi"
#include "pm8350c.dtsi"
#include "pmk8350.dtsi"
&apps_rsc {
pm7325-regulators {
compatible = "qcom,pm7325-rpmh-regulators";
qcom,pmic-id = "b";
vreg_s1b_1p8: smps1 {
regulator-min-microvolt = <1856000>;
regulator-max-microvolt = <2040000>;
};
vreg_s7b_0p9: smps7 {
regulator-min-microvolt = <535000>;
regulator-max-microvolt = <1120000>;
};
vreg_s8b_1p2: smps8 {
regulator-min-microvolt = <1256000>;
regulator-max-microvolt = <1500000>;
};
vreg_l1b_0p8: ldo1 {
regulator-min-microvolt = <825000>;
regulator-max-microvolt = <925000>;
};
vreg_l2b_3p0: ldo2 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <3544000>;
};
vreg_l6b_1p2: ldo6 {
regulator-min-microvolt = <1140000>;
regulator-max-microvolt = <1260000>;
};
vreg_l7b_2p9: ldo7 {
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <2960000>;
};
vreg_l8b_0p9: ldo8 {
regulator-min-microvolt = <870000>;
regulator-max-microvolt = <970000>;
};
vreg_l9b_1p2: ldo9 {
regulator-min-microvolt = <1080000>;
regulator-max-microvolt = <1304000>;
};
vreg_l11b_1p7: ldo11 {
regulator-min-microvolt = <1504000>;
regulator-max-microvolt = <2000000>;
};
vreg_l12b_0p8: ldo12 {
regulator-min-microvolt = <751000>;
regulator-max-microvolt = <824000>;
};
vreg_l13b_0p8: ldo13 {
regulator-min-microvolt = <530000>;
regulator-max-microvolt = <824000>;
};
vreg_l14b_1p2: ldo14 {
regulator-min-microvolt = <1080000>;
regulator-max-microvolt = <1304000>;
};
vreg_l15b_0p8: ldo15 {
regulator-min-microvolt = <765000>;
regulator-max-microvolt = <1020000>;
};
vreg_l16b_1p2: ldo16 {
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1300000>;
};
vreg_l17b_1p8: ldo17 {
regulator-min-microvolt = <1700000>;
regulator-max-microvolt = <1900000>;
};
vreg_l18b_1p8: ldo18 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2000000>;
};
vreg_l19b_1p8: ldo19 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
};
pm8350c-regulators {
compatible = "qcom,pm8350c-rpmh-regulators";
qcom,pmic-id = "c";
vreg_s1c_2p2: smps1 {
regulator-min-microvolt = <2190000>;
regulator-max-microvolt = <2210000>;
};
vreg_s9c_1p0: smps9 {
regulator-min-microvolt = <1010000>;
regulator-max-microvolt = <1170000>;
};
vreg_l1c_1p8: ldo1 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1980000>;
};
vreg_l2c_1p8: ldo2 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <1980000>;
};
vreg_l3c_3p0: ldo3 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <3540000>;
};
vreg_l4c_1p8: ldo4 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <3300000>;
};
vreg_l5c_1p8: ldo5 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <3300000>;
};
vreg_l6c_2p9: ldo6 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2950000>;
};
vreg_l7c_3p0: ldo7 {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3544000>;
};
vreg_l8c_1p8: ldo8 {
regulator-min-microvolt = <1620000>;
regulator-max-microvolt = <2000000>;
};
vreg_l9c_2p9: ldo9 {
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <2960000>;
};
vreg_l10c_0p8: ldo10 {
regulator-min-microvolt = <720000>;
regulator-max-microvolt = <1050000>;
};
vreg_l11c_2p8: ldo11 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <3544000>;
};
vreg_l12c_1p8: ldo12 {
regulator-min-microvolt = <1650000>;
regulator-max-microvolt = <2000000>;
};
vreg_l13c_3p0: ldo13 {
regulator-min-microvolt = <2700000>;
regulator-max-microvolt = <3544000>;
};
vreg_bob: bob {
regulator-min-microvolt = <3008000>;
regulator-max-microvolt = <3960000>;
};
};
};
&ipa {
status = "okay";
modem-init;
};
&pmk8350_vadc {
pmk8350_die_temp {
reg = <PMK8350_ADC7_DIE_TEMP>;
label = "pmk8350_die_temp";
qcom,pre-scaling = <1 1>;
};
};
&qupv3_id_0 {
status = "okay";
};
&sdhc_1 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdc1_on>;
pinctrl-1 = <&sdc1_off>;
non-removable;
no-sd;
no-sdio;
vmmc-supply = <&vreg_l7b_2p9>;
vqmmc-supply = <&vreg_l19b_1p8>;
};
&sdhc_2 {
status = "okay";
pinctrl-names = "default", "sleep";
pinctrl-0 = <&sdc2_on>;
pinctrl-1 = <&sdc2_off>;
vmmc-supply = <&vreg_l9c_2p9>;
vqmmc-supply = <&vreg_l6c_2p9>;
cd-gpios = <&tlmm 91 GPIO_ACTIVE_LOW>;
};
&uart5 {
status = "okay";
};
&usb_1 {
status = "okay";
};
&usb_1_dwc3 {
dr_mode = "host";
};
&usb_1_hsphy {
status = "okay";
vdda-pll-supply = <&vreg_l10c_0p8>;
vdda33-supply = <&vreg_l2b_3p0>;
vdda18-supply = <&vreg_l1c_1p8>;
};
&usb_1_qmpphy {
status = "okay";
vdda-phy-supply = <&vreg_l6b_1p2>;
vdda-pll-supply = <&vreg_l1b_0p8>;
};
&usb_2 {
status = "okay";
};
&usb_2_dwc3 {
dr_mode = "peripheral";
};
&usb_2_hsphy {
status = "okay";
vdda-pll-supply = <&vreg_l10c_0p8>;
vdda33-supply = <&vreg_l2b_3p0>;
vdda18-supply = <&vreg_l1c_1p8>;
};
/* PINCTRL - additions to nodes defined in sc7280.dtsi */
&qup_uart5_default {
tx {
pins = "gpio46";
drive-strength = <2>;
bias-disable;
};
rx {
pins = "gpio47";
drive-strength = <2>;
bias-pull-up;
};
};
&sdc1_on {
clk {
bias-disable;
drive-strength = <16>;
};
cmd {
bias-pull-up;
drive-strength = <10>;
};
data {
bias-pull-up;
drive-strength = <10>;
};
rclk {
bias-pull-down;
};
};
&sdc2_on {
clk {
bias-disable;
drive-strength = <16>;
};
cmd {
bias-pull-up;
drive-strength = <10>;
};
data {
bias-pull-up;
drive-strength = <10>;
};
sd-cd {
bias-pull-up;
};
};

View file

@ -0,0 +1,23 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* sc7280 IDP2 board device tree source
*
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
*/
/dts-v1/;
#include "sc7280-idp.dtsi"
/ {
model = "Qualcomm Technologies, Inc. sc7280 IDP SKU2 platform";
compatible = "qcom,sc7280-idp2", "google,piglin", "qcom,sc7280";
aliases {
serial0 = &uart5;
};
chosen {
stdout-path = "serial0:115200n8";
};
};

View file

@ -7,6 +7,7 @@
#include <dt-bindings/clock/qcom,gcc-sc7280.h>
#include <dt-bindings/clock/qcom,rpmh.h>
#include <dt-bindings/interconnect/qcom,sc7280.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/mailbox/qcom-ipcc.h>
#include <dt-bindings/power/qcom-aoss-qmp.h>
@ -24,6 +25,11 @@ / {
chosen { };
aliases {
mmc1 = &sdhc_1;
mmc2 = &sdhc_2;
};
clocks {
xo_board: xo-board {
compatible = "fixed-clock";
@ -63,6 +69,11 @@ cpucp_mem: memory@80b00000 {
no-map;
reg = <0x0 0x80b00000 0x0 0x100000>;
};
ipa_fw_mem: memory@8b700000 {
reg = <0 0x8b700000 0 0x10000>;
no-map;
};
};
cpus {
@ -436,6 +447,73 @@ ipcc: mailbox@408000 {
#mbox-cells = <2>;
};
qfprom: efuse@784000 {
compatible = "qcom,sc7280-qfprom", "qcom,qfprom";
reg = <0 0x00784000 0 0xa20>,
<0 0x00780000 0 0xa20>,
<0 0x00782000 0 0x120>,
<0 0x00786000 0 0x1fff>;
clocks = <&gcc GCC_SEC_CTRL_CLK_SRC>;
clock-names = "core";
power-domains = <&rpmhpd SC7280_MX>;
#address-cells = <1>;
#size-cells = <1>;
};
sdhc_1: sdhci@7c4000 {
compatible = "qcom,sc7280-sdhci", "qcom,sdhci-msm-v5";
status = "disabled";
reg = <0 0x007c4000 0 0x1000>,
<0 0x007c5000 0 0x1000>;
reg-names = "hc", "cqhci";
iommus = <&apps_smmu 0xc0 0x0>;
interrupts = <GIC_SPI 652 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 656 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hc_irq", "pwr_irq";
clocks = <&gcc GCC_SDCC1_APPS_CLK>,
<&gcc GCC_SDCC1_AHB_CLK>,
<&rpmhcc RPMH_CXO_CLK>;
clock-names = "core", "iface", "xo";
interconnects = <&aggre1_noc MASTER_SDCC_1 0 &mc_virt SLAVE_EBI1 0>,
<&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_SDCC_1 0>;
interconnect-names = "sdhc-ddr","cpu-sdhc";
power-domains = <&rpmhpd SC7280_CX>;
operating-points-v2 = <&sdhc1_opp_table>;
bus-width = <8>;
supports-cqe;
qcom,dll-config = <0x0007642c>;
qcom,ddr-config = <0x80040868>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
sdhc1_opp_table: opp-table {
compatible = "operating-points-v2";
opp-100000000 {
opp-hz = /bits/ 64 <100000000>;
required-opps = <&rpmhpd_opp_low_svs>;
opp-peak-kBps = <1800000 400000>;
opp-avg-kBps = <100000 0>;
};
opp-384000000 {
opp-hz = /bits/ 64 <384000000>;
required-opps = <&rpmhpd_opp_nom>;
opp-peak-kBps = <5400000 1600000>;
opp-avg-kBps = <390000 0>;
};
};
};
qupv3_id_0: geniqup@9c0000 {
compatible = "qcom,geni-se-qup";
reg = <0 0x009c0000 0 0x2000>;
@ -508,6 +586,43 @@ mmss_noc: interconnect@1740000 {
qcom,bcm-voters = <&apps_bcm_voter>;
};
ipa: ipa@1e40000 {
compatible = "qcom,sc7280-ipa";
iommus = <&apps_smmu 0x480 0x0>,
<&apps_smmu 0x482 0x0>;
reg = <0 0x1e40000 0 0x8000>,
<0 0x1e50000 0 0x4ad0>,
<0 0x1e04000 0 0x23000>;
reg-names = "ipa-reg",
"ipa-shared",
"gsi";
interrupts-extended = <&intc 0 654 IRQ_TYPE_EDGE_RISING>,
<&intc 0 432 IRQ_TYPE_LEVEL_HIGH>,
<&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
<&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "ipa",
"gsi",
"ipa-clock-query",
"ipa-setup-ready";
clocks = <&rpmhcc RPMH_IPA_CLK>;
clock-names = "core";
interconnects = <&aggre2_noc MASTER_IPA 0 &mc_virt SLAVE_EBI1 0>,
<&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_IPA_CFG 0>;
interconnect-names = "memory",
"config";
qcom,smem-states = <&ipa_smp2p_out 0>,
<&ipa_smp2p_out 1>;
qcom,smem-state-names = "ipa-clock-enabled-valid",
"ipa-clock-enabled";
status = "disabled";
};
tcsr_mutex: hwlock@1f40000 {
compatible = "qcom,tcsr-mutex", "syscon";
reg = <0 0x01f40000 0 0x40000>;
@ -1035,6 +1150,174 @@ apss_merge_funnel_in: endpoint {
};
};
sdhc_2: sdhci@8804000 {
compatible = "qcom,sc7280-sdhci", "qcom,sdhci-msm-v5";
status = "disabled";
reg = <0 0x08804000 0 0x1000>;
iommus = <&apps_smmu 0x100 0x0>;
interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hc_irq", "pwr_irq";
clocks = <&gcc GCC_SDCC2_APPS_CLK>,
<&gcc GCC_SDCC2_AHB_CLK>,
<&rpmhcc RPMH_CXO_CLK>;
clock-names = "core", "iface", "xo";
interconnects = <&aggre1_noc MASTER_SDCC_2 0 &mc_virt SLAVE_EBI1 0>,
<&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_SDCC_2 0>;
interconnect-names = "sdhc-ddr","cpu-sdhc";
power-domains = <&rpmhpd SC7280_CX>;
operating-points-v2 = <&sdhc2_opp_table>;
bus-width = <4>;
qcom,dll-config = <0x0007642c>;
sdhc2_opp_table: opp-table {
compatible = "operating-points-v2";
opp-100000000 {
opp-hz = /bits/ 64 <100000000>;
required-opps = <&rpmhpd_opp_low_svs>;
opp-peak-kBps = <1800000 400000>;
opp-avg-kBps = <100000 0>;
};
opp-202000000 {
opp-hz = /bits/ 64 <202000000>;
required-opps = <&rpmhpd_opp_nom>;
opp-peak-kBps = <5400000 1600000>;
opp-avg-kBps = <200000 0>;
};
};
};
usb_1_hsphy: phy@88e3000 {
compatible = "qcom,sc7280-usb-hs-phy",
"qcom,usb-snps-hs-7nm-phy";
reg = <0 0x088e3000 0 0x400>;
status = "disabled";
#phy-cells = <0>;
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "ref";
resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
};
usb_2_hsphy: phy@88e4000 {
compatible = "qcom,sc7280-usb-hs-phy",
"qcom,usb-snps-hs-7nm-phy";
reg = <0 0x088e4000 0 0x400>;
status = "disabled";
#phy-cells = <0>;
clocks = <&rpmhcc RPMH_CXO_CLK>;
clock-names = "ref";
resets = <&gcc GCC_QUSB2PHY_SEC_BCR>;
};
usb_1_qmpphy: phy-wrapper@88e9000 {
compatible = "qcom,sc7280-qmp-usb3-dp-phy",
"qcom,sm8250-qmp-usb3-dp-phy";
reg = <0 0x088e9000 0 0x200>,
<0 0x088e8000 0 0x40>,
<0 0x088ea000 0 0x200>;
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
<&rpmhcc RPMH_CXO_CLK>,
<&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>;
clock-names = "aux", "ref_clk_src", "com_aux";
resets = <&gcc GCC_USB3_DP_PHY_PRIM_BCR>,
<&gcc GCC_USB3_PHY_PRIM_BCR>;
reset-names = "phy", "common";
usb_1_ssphy: usb3-phy@88e9200 {
reg = <0 0x088e9200 0 0x200>,
<0 0x088e9400 0 0x200>,
<0 0x088e9c00 0 0x400>,
<0 0x088e9600 0 0x200>,
<0 0x088e9800 0 0x200>,
<0 0x088e9a00 0 0x100>;
#clock-cells = <0>;
#phy-cells = <0>;
clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
clock-names = "pipe0";
clock-output-names = "usb3_phy_pipe_clk_src";
};
dp_phy: dp-phy@88ea200 {
reg = <0 0x088ea200 0 0x200>,
<0 0x088ea400 0 0x200>,
<0 0x088eac00 0 0x400>,
<0 0x088ea600 0 0x200>,
<0 0x088ea800 0 0x200>,
<0 0x088eaa00 0 0x100>;
#phy-cells = <0>;
#clock-cells = <1>;
clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
clock-names = "pipe0";
clock-output-names = "usb3_phy_pipe_clk_src";
};
};
usb_2: usb@8cf8800 {
compatible = "qcom,sc7280-dwc3", "qcom,dwc3";
reg = <0 0x08cf8800 0 0x400>;
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
ranges;
dma-ranges;
clocks = <&gcc GCC_CFG_NOC_USB3_SEC_AXI_CLK>,
<&gcc GCC_USB30_SEC_MASTER_CLK>,
<&gcc GCC_AGGRE_USB3_SEC_AXI_CLK>,
<&gcc GCC_USB30_SEC_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_SEC_SLEEP_CLK>;
clock-names = "cfg_noc", "core", "iface","mock_utmi",
"sleep";
assigned-clocks = <&gcc GCC_USB30_SEC_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_SEC_MASTER_CLK>;
assigned-clock-rates = <19200000>, <200000000>;
interrupts-extended = <&intc GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>,
<&pdc 13 IRQ_TYPE_EDGE_RISING>,
<&pdc 12 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "hs_phy_irq",
"dm_hs_phy_irq", "dp_hs_phy_irq";
power-domains = <&gcc GCC_USB30_SEC_GDSC>;
resets = <&gcc GCC_USB30_SEC_BCR>;
interconnects = <&aggre1_noc MASTER_USB2 0 &mc_virt SLAVE_EBI1 0>,
<&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB2 0>;
interconnect-names = "usb-ddr", "apps-usb";
usb_2_dwc3: usb@8c00000 {
compatible = "snps,dwc3";
reg = <0 0x08c00000 0 0xe000>;
interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
iommus = <&apps_smmu 0xa0 0x0>;
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
phys = <&usb_2_hsphy>;
phy-names = "usb2-phy";
maximum-speed = "high-speed";
};
};
dc_noc: interconnect@90e0000 {
reg = <0 0x090e0000 0 0x5080>;
compatible = "qcom,sc7280-dc-noc";
@ -1063,6 +1346,55 @@ nsp_noc: interconnect@a0c0000 {
qcom,bcm-voters = <&apps_bcm_voter>;
};
usb_1: usb@a6f8800 {
compatible = "qcom,sc7280-dwc3", "qcom,dwc3";
reg = <0 0x0a6f8800 0 0x400>;
status = "disabled";
#address-cells = <2>;
#size-cells = <2>;
ranges;
dma-ranges;
clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>,
<&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_PRIM_SLEEP_CLK>;
clock-names = "cfg_noc", "core", "iface", "mock_utmi",
"sleep";
assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
assigned-clock-rates = <19200000>, <200000000>;
interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
<&pdc 14 IRQ_TYPE_EDGE_BOTH>,
<&pdc 15 IRQ_TYPE_EDGE_BOTH>,
<&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hs_phy_irq", "dp_hs_phy_irq",
"dm_hs_phy_irq", "ss_phy_irq";
power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
resets = <&gcc GCC_USB30_PRIM_BCR>;
interconnects = <&aggre1_noc MASTER_USB3_0 0 &mc_virt SLAVE_EBI1 0>,
<&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_USB3_0 0>;
interconnect-names = "usb-ddr", "apps-usb";
usb_1_dwc3: usb@a600000 {
compatible = "snps,dwc3";
reg = <0 0x0a600000 0 0xe000>;
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
iommus = <&apps_smmu 0xe0 0x0>;
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
phy-names = "usb2-phy", "usb3-phy";
maximum-speed = "super-speed";
};
};
videocc: clock-controller@aaf0000 {
compatible = "qcom,sc7280-videocc";
reg = <0 0xaaf0000 0 0x10000>;
@ -1185,6 +1517,87 @@ qup_uart5_default: qup-uart5-default {
pins = "gpio46", "gpio47";
function = "qup13";
};
sdc1_on: sdc1-on {
clk {
pins = "sdc1_clk";
};
cmd {
pins = "sdc1_cmd";
};
data {
pins = "sdc1_data";
};
rclk {
pins = "sdc1_rclk";
};
};
sdc1_off: sdc1-off {
clk {
pins = "sdc1_clk";
drive-strength = <2>;
bias-bus-hold;
};
cmd {
pins = "sdc1_cmd";
drive-strength = <2>;
bias-bus-hold;
};
data {
pins = "sdc1_data";
drive-strength = <2>;
bias-bus-hold;
};
rclk {
pins = "sdc1_rclk";
bias-bus-hold;
};
};
sdc2_on: sdc2-on {
clk {
pins = "sdc2_clk";
};
cmd {
pins = "sdc2_cmd";
};
data {
pins = "sdc2_data";
};
sd-cd {
pins = "gpio91";
};
};
sdc2_off: sdc2-off {
clk {
pins = "sdc2_clk";
drive-strength = <2>;
bias-bus-hold;
};
cmd {
pins ="sdc2_cmd";
drive-strength = <2>;
bias-bus-hold;
};
data {
pins ="sdc2_data";
drive-strength = <2>;
bias-bus-hold;
};
};
};
apps_smmu: iommu@15000000 {
@ -1437,9 +1850,9 @@ rpmhcc: clock-controller {
cpufreq_hw: cpufreq@18591000 {
compatible = "qcom,cpufreq-epss";
reg = <0 0x18591000 0 0x1000>,
<0 0x18592000 0 0x1000>,
<0 0x18593000 0 0x1000>;
reg = <0 0x18591100 0 0x900>,
<0 0x18592100 0 0x900>,
<0 0x18593100 0 0x900>;
clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
clock-names = "xo", "alternate";
#freq-domain-cells = <1>;

View file

@ -5,9 +5,21 @@
/dts-v1/;
#include "sdm630-sony-xperia-ganges.dtsi"
#include "sdm630.dtsi"
#include "sdm630-sony-xperia-nile.dtsi"
/ {
model = "Sony Xperia 10";
compatible = "sony,kirin-row", "qcom,sdm630";
chosen {
framebuffer@9d400000 {
reg = <0 0x9d400000 0 (2520 * 1080 * 4)>;
height = <2520>;
};
};
};
/* Ganges devices feature a Novatek touchscreen instead. */
/delete-node/ &touchscreen;
/delete-node/ &vreg_l18a_1v8;

View file

@ -1,40 +0,0 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2020, Martin Botka
*/
/dts-v1/;
/* Ganges is very similar to Nile, but
* there are some differences that will need
* to be addresed when more peripherals are
* enabled upstream. Hence the separate DTSI.
*/
#include "sdm630-sony-xperia-nile.dtsi"
/ {
chosen {
framebuffer@9d400000 {
reg = <0 0x9d400000 0 (2520 * 1080 * 4)>;
height = <2520>;
};
};
/* Yes, this is intentional.
* Ganges devices only use gpio-keys for
* Volume Down, but currently there's an
* issue with it that has to be resolved.
* Until then, let's not make the kernel panic
*/
/delete-node/ gpio-keys;
soc {
i2c@c175000 {
status = "okay";
/* Novatek touchscreen */
};
};
};

View file

@ -5,6 +5,7 @@
/dts-v1/;
#include "sdm630.dtsi"
#include "sdm630-sony-xperia-nile.dtsi"
/ {

View file

@ -5,6 +5,7 @@
/dts-v1/;
#include "sdm630.dtsi"
#include "sdm630-sony-xperia-nile.dtsi"
/ {

View file

@ -5,6 +5,7 @@
/dts-v1/;
#include "sdm630.dtsi"
#include "sdm630-sony-xperia-nile.dtsi"
/ {

View file

@ -1,11 +1,10 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2020, Konrad Dybcio
* Copyright (c) 2020, Konrad Dybcio <konrad.dybcio@somainline.org>
* Copyright (c) 2020, AngeloGioacchino Del Regno
* <angelogioacchino.delregno@somainline.org>
*/
/dts-v1/;
#include "sdm630.dtsi"
#include "pm660.dtsi"
#include "pm660l.dtsi"
#include <dt-bindings/gpio/gpio.h>
@ -39,13 +38,61 @@ framebuffer0: framebuffer@9d400000 {
};
};
board_vbat: vbat-regulator {
compatible = "regulator-fixed";
regulator-name = "VBAT";
regulator-min-microvolt = <4000000>;
regulator-max-microvolt = <4000000>;
regulator-always-on;
regulator-boot-on;
};
vph_pwr: vph-pwr-regulator {
compatible = "regulator-fixed";
regulator-name = "vph_pwr";
regulator-always-on;
regulator-boot-on;
};
cam_vdig_imx300_219_vreg: cam_vdig_imx300_219_vreg {
compatible = "regulator-fixed";
regulator-name = "cam_vdig_imx300_219_vreg";
startup-delay-us = <0>;
enable-active-high;
gpio = <&tlmm 52 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&cam_vdig_default>;
};
cam_vana_front_vreg: cam_vana_front_vreg {
compatible = "regulator-fixed";
regulator-name = "cam_vana_front_vreg";
startup-delay-us = <0>;
enable-active-high;
gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&imx219_vana_default>;
};
cam_vana_rear_vreg: cam_vana_rear_vreg {
compatible = "regulator-fixed";
regulator-name = "cam_vana_rear_vreg";
startup-delay-us = <0>;
enable-active-high;
gpio = <&tlmm 50 GPIO_ACTIVE_HIGH>;
regulator-always-on;
pinctrl-names = "default";
pinctrl-0 = <&imx300_vana_default>;
};
gpio_keys {
status = "okay";
compatible = "gpio-keys";
input-name = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
autorepeat;
camera_focus {
label = "Camera Focus";
@ -100,37 +147,471 @@ removed_region@85800000 {
};
};
soc {
sdhci@c0c4000 {
status = "okay";
/*
* Until we hook up type-c detection, we
* have to stick with this. But it works.
*/
extcon_usb: extcon-usb {
compatible = "linux,extcon-usb-gpio";
id-gpio = <&tlmm 58 GPIO_ACTIVE_HIGH>;
};
};
mmc-ddr-1_8v;
/* SoMC Nile platform's eMMC doesn't support HS200 mode */
mmc-hs400-1_8v;
&adsp_pil {
firmware-name = "adsp.mdt";
};
&blsp_i2c1 {
status = "okay";
touchscreen: synaptics-rmi4-i2c@70 {
compatible = "syna,rmi4-i2c";
reg = <0x70>;
#address-cells = <1>;
#size-cells = <0>;
interrupts-extended = <&tlmm 45 0x2008>;
pinctrl-names = "default";
pinctrl-0 = <&ts_int_active &ts_lcd_id_active>;
syna,reset-delay-ms = <200>;
syna,startup-delay-ms = <220>;
rmi4-f01@1 {
reg = <0x01>;
syna,nosleep-mode = <1>;
};
i2c@c175000 {
status = "okay";
/* Synaptics touchscreen */
};
i2c@c176000 {
status = "okay";
/* SMB1351 charger */
};
serial@c1af000 {
status = "okay";
};
/* I2C3, 4, 5, 7 and 8 are disabled on this board. */
i2c@c1b6000 {
status = "okay";
/* NXP NFC */
rmi4-f11@11 {
reg = <0x11>;
syna,sensor-type = <1>;
};
};
};
&blsp_i2c2 {
status = "okay";
/* SMB1351 charger */
};
/* I2C3, 4, 5, 7 and 8 are disabled on this board. */
&blsp_i2c6 {
status = "okay";
/* NXP NFC */
};
&blsp1_uart2 {
status = "okay";
/* MSM serial console */
};
&blsp2_uart1 {
status = "okay";
/* HCI Bluetooth */
};
&pon {
volup {
compatible = "qcom,pm8941-resin";
interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>;
debounce = <15625>;
bias-pull-up;
linux,code = <KEY_VOLUMEUP>;
};
};
&qusb2phy {
status = "okay";
vdd-supply = <&vreg_l1b_0p925>;
vdda-pll-supply = <&vreg_l10a_1p8>;
vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
};
&rpm_requests {
pm660l-regulators {
compatible = "qcom,rpm-pm660l-regulators";
vdd_s1-supply = <&vph_pwr>;
vdd_s2-supply = <&vph_pwr>;
vdd_s3_s4-supply = <&vph_pwr>;
vdd_s5-supply = <&vph_pwr>;
vdd_s6-supply = <&vph_pwr>;
vdd_l1_l9_l10-supply = <&vreg_s2b_1p05>;
vdd_l2-supply = <&vreg_bob>;
vdd_l3_l5_l7_l8-supply = <&vreg_bob>;
vdd_l4_l6-supply = <&vreg_bob>;
vdd_bob-supply = <&vph_pwr>;
vreg_s1b_1p125: s1 {
regulator-min-microvolt = <1125000>;
regulator-max-microvolt = <1125000>;
regulator-enable-ramp-delay = <200>;
regulator-ramp-delay = <0>;
};
vreg_s2b_1p05: s2 {
regulator-min-microvolt = <1050000>;
regulator-max-microvolt = <1050000>;
regulator-enable-ramp-delay = <200>;
regulator-ramp-delay = <0>;
};
/*
* At least on Nile's configuration, S3B/S4B (VDD_CX) and
* S5B (VDD_MX) are managed only through RPM Power Domains.
* Trying to set a voltage on the main supply will create
* havoc and freeze the SoC.
* In any case, reference voltages for these regulators are:
* S3B/S4B: 0.870V
* S5B: 0.915V
*/
/* LDOs */
vreg_l1b_0p925: l1 {
regulator-min-microvolt = <920000>;
regulator-max-microvolt = <928000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
};
vreg_l2b_2p95: l2 {
/*
* This regulator supports 1.648 - 3.104V on this board
* but we set a max voltage of anything less than 2.7V
* to satisfy a condition in sdhci.c that will disable
* 3.3V SDHCI signaling, which happens to be not really
* supported on the Xperia Nile/Ganges platform.
*/
regulator-min-microvolt = <1648000>;
regulator-max-microvolt = <2696000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
};
vreg_l3b_3p0: l3 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-min-microamp = <200>;
regulator-max-microamp = <600000>;
regulator-system-load = <100000>;
regulator-allow-set-load;
};
vreg_l4b_29p5: l4 {
regulator-min-microvolt = <2944000>;
regulator-max-microvolt = <2952000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-min-microamp = <200>;
regulator-max-microamp = <600000>;
regulator-system-load = <570000>;
regulator-allow-set-load;
};
/*
* Downstream specifies a range of 1721-3600mV,
* but the only assigned consumers are SDHCI2 VMMC
* and Coresight QPDI that both request pinned 2.95V.
* Tighten the range to 1.8-3.328 (closest to 3.3) to
* make the mmc driver happy.
*/
vreg_l5b_29p5: l5 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3328000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
regulator-system-load = <800000>;
};
vreg_l6b_3p3: l6 {
regulator-min-microvolt = <1704000>;
regulator-max-microvolt = <3312000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l7b_3p125: l7 {
regulator-min-microvolt = <2704000>;
regulator-max-microvolt = <3128000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l8b_3p3: l8 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <3400000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
/* L9B (870mV) is currently unused */
/* L10B (915mV) is currently unused */
vreg_bob: bob {
regulator-min-microvolt = <3304000>;
regulator-max-microvolt = <3624000>;
regulator-enable-ramp-delay = <500>;
regulator-ramp-delay = <0>;
};
};
pm660-regulators {
compatible = "qcom,rpm-pm660-regulators";
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_l1_l6_l7-supply = <&vreg_s5a_1p35>;
vdd_l2_l3-supply = <&vreg_s2b_1p05>;
vdd_l5-supply = <&vreg_s2b_1p05>;
vdd_l8_l9_l10_l11_l12_l13_l14-supply = <&vreg_s4a_2p04>;
vdd_l15_l16_l17_l18_l19-supply = <&vreg_bob>;
/*
* S1A (FTAPC0), S2A (FTAPC1), S3A (HFAPC1) are managed
* by the Core Power Reduction hardened (CPRh) and the
* Operating State Manager (OSM) HW automatically.
*/
vreg_s4a_2p04: s4 {
regulator-min-microvolt = <2040000>;
regulator-max-microvolt = <2040000>;
regulator-enable-ramp-delay = <200>;
regulator-ramp-delay = <0>;
regulator-always-on;
};
vreg_s5a_1p35: s5 {
regulator-min-microvolt = <1224000>;
regulator-max-microvolt = <1350000>;
regulator-enable-ramp-delay = <200>;
regulator-ramp-delay = <0>;
};
vreg_s6a_0p87: s6 {
regulator-min-microvolt = <504000>;
regulator-max-microvolt = <992000>;
regulator-enable-ramp-delay = <150>;
regulator-ramp-delay = <0>;
};
/* LDOs */
vreg_l1a_1p225: l1 {
regulator-min-microvolt = <1226000>;
regulator-max-microvolt = <1250000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
};
vreg_l2a_1p0: l2 {
regulator-min-microvolt = <944000>;
regulator-max-microvolt = <1008000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l3a_1p0: l3 {
regulator-min-microvolt = <944000>;
regulator-max-microvolt = <1008000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l5a_0p848: l5 {
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <952000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l6a_1p3: l6 {
regulator-min-microvolt = <1304000>;
regulator-max-microvolt = <1368000>;
regulator-allow-set-load;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l7a_1p2: l7 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l8a_1p8: l8 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-system-load = <325000>;
regulator-allow-set-load;
};
vreg_l9a_1p8: l9 {
regulator-min-microvolt = <1804000>;
regulator-max-microvolt = <1896000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
};
vreg_l10a_1p8: l10 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1944000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
};
vreg_l11a_1p8: l11 {
regulator-min-microvolt = <1784000>;
regulator-max-microvolt = <1944000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l12a_1p8: l12 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1944000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
/* This gives power to the LPDDR4: never turn it off! */
vreg_l13a_1p8: l13 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1944000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-boot-on;
regulator-always-on;
};
vreg_l14a_1p8: l14 {
regulator-min-microvolt = <1710000>;
regulator-max-microvolt = <1904000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l15a_1p8: l15 {
regulator-min-microvolt = <1648000>;
regulator-max-microvolt = <2952000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
/* L16A (2.70V) is unused */
vreg_l17a_1p8: l17 {
regulator-min-microvolt = <1648000>;
regulator-max-microvolt = <2952000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
};
vreg_l18a_1v8: l18 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <10>;
regulator-min-microamp = <200>;
regulator-max-microamp = <50000>;
regulator-system-load = <10000>;
regulator-allow-set-load;
};
vreg_l19a_3p3: l19 {
regulator-min-microvolt = <3312000>;
regulator-max-microvolt = <3400000>;
regulator-enable-ramp-delay = <250>;
regulator-ramp-delay = <0>;
regulator-allow-set-load;
};
};
};
&sdhc_1 {
status = "okay";
supports-cqe;
/* SoMC Nile platform's eMMC doesn't support HS200 mode */
mmc-ddr-1_8v;
mmc-hs400-1_8v;
mmc-hs400-enhanced-strobe;
vmmc-supply = <&vreg_l4b_29p5>;
vqmmc-supply = <&vreg_l8a_1p8>;
};
&sdhc_2 {
status = "okay";
vmmc-supply = <&vreg_l5b_29p5>;
vqmmc-supply = <&vreg_l2b_2p95>;
};
&tlmm {
gpio-reserved-ranges = <8 4>;
ts_int_active: ts-int-active {
pins = "gpio45";
drive-strength = <8>;
bias-pull-up;
};
ts_lcd_id_active: ts-lcd-id-active {
pins = "gpio56";
drive-strength = <8>;
bias-disable;
};
imx300_vana_default: imx300-vana-default {
pins = "gpio50";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
imx219_vana_default: imx219-vana-default {
pins = "gpio51";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
cam_vdig_default: cam-vdig-default {
pins = "gpio52";
function = "gpio";
bias-disable;
drive-strength = <2>;
};
};
&usb3 {
status = "okay";
};
&usb3_dwc3 {
dr_mode = "peripheral";
extcon = <&extcon_usb>;
};

File diff suppressed because it is too large Load diff

View file

@ -5,16 +5,20 @@
/dts-v1/;
/* Mermaid uses sdm636, but it's different ever so slightly
* that we can ignore it for the time being. Sony also commonizes
* the Ganges platform as a whole in downstream kernels.
*/
#include "sdm630-sony-xperia-ganges.dtsi"
#include "sdm630-sony-xperia-ganges-kirin.dts"
#include "sdm636.dtsi"
/ {
model = "Sony Xperia 10 Plus";
compatible = "sony,mermaid-row", "qcom,sdm636";
/* SDM636 v1 */
qcom,msm-id = <345 0>;
qcom,pmic-id = <0x1001b 0x101011a 0x00 0x00 0x1001b 0x201011a 0x00 0x00 0x1001b 0x102001a 0x00 0x00>;
};
&sdc2_state_on {
pinconf-clk {
drive-strength = <14>;
};
};

View file

@ -0,0 +1,23 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
* Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
* Copyright (c) 2020, Martin Botka <martin.botka1@gmail.com>
*/
#include "sdm660.dtsi"
/*
* According to the downstream DTS,
* 636 is basically a 660 except for
* different CPU frequencies, Adreno
* 509 instead of 512 and lack of
* turing IP. These differences will
* be addressed when the aforementioned
* peripherals will be enabled upstream.
*/
&adreno_gpu {
compatible = "qcom,adreno-509.0", "qcom,adreno";
/* Adreno 509 shares the frequency table with 512 */
};

View file

@ -37,8 +37,6 @@ ramoops@a0000000 {
&blsp1_uart2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart_console_active>;
};
&tlmm {

View file

@ -2,371 +2,250 @@
/*
* Copyright (c) 2018, Craig Tatlor.
* Copyright (c) 2020, Alexey Minnekhanov <alexey.min@gmail.com>
* Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
* Copyright (c) 2020, Konrad Dybcio <konradybcio@gmail.com>
* Copyright (c) 2020, Martin Botka <martin.botka1@gmail.com>
*/
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/qcom,gcc-sdm660.h>
#include "sdm630.dtsi"
/ {
interrupt-parent = <&intc>;
&adreno_gpu {
compatible = "qcom,adreno-512.0", "qcom,adreno";
operating-points-v2 = <&gpu_sdm660_opp_table>;
#address-cells = <2>;
#size-cells = <2>;
gpu_sdm660_opp_table: opp-table {
compatible = "operating-points-v2";
chosen { };
/*
* 775MHz is only available on the highest speed bin
* Though it cannot be used for now due to interconnect
* framework not supporting multiple frequencies
* at the same opp-level
clocks {
xo_board: xo_board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <19200000>;
clock-output-names = "xo_board";
opp-750000000 {
opp-hz = /bits/ 64 <750000000>;
opp-level = <RPM_SMD_LEVEL_TURBO>;
opp-peak-kBps = <5412000>;
opp-supported-hw = <0xCHECKME>;
};
sleep_clk: sleep_clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32764>;
clock-output-names = "sleep_clk";
};
};
* These OPPs are correct, but we are lacking support for the
* GPU regulator. Hence, disable them for now to prevent the
* platform from hanging on high graphics loads.
cpus {
#address-cells = <2>;
#size-cells = <0>;
CPU0: cpu@100 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x100>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_1>;
L2_1: l2-cache {
compatible = "cache";
cache-level = <2>;
};
L1_I_100: l1-icache {
compatible = "cache";
};
L1_D_100: l1-dcache {
compatible = "cache";
};
opp-700000000 {
opp-hz = /bits/ 64 <700000000>;
opp-level = <RPM_SMD_LEVEL_TURBO>;
opp-peak-kBps = <5184000>;
opp-supported-hw = <0xFF>;
};
CPU1: cpu@101 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x101>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_1>;
L1_I_101: l1-icache {
compatible = "cache";
};
L1_D_101: l1-dcache {
compatible = "cache";
};
opp-647000000 {
opp-hz = /bits/ 64 <647000000>;
opp-level = <RPM_SMD_LEVEL_NOM_PLUS>;
opp-peak-kBps = <4068000>;
opp-supported-hw = <0xFF>;
};
CPU2: cpu@102 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x102>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_1>;
L1_I_102: l1-icache {
compatible = "cache";
};
L1_D_102: l1-dcache {
compatible = "cache";
};
opp-588000000 {
opp-hz = /bits/ 64 <588000000>;
opp-level = <RPM_SMD_LEVEL_NOM>;
opp-peak-kBps = <3072000>;
opp-supported-hw = <0xFF>;
};
CPU3: cpu@103 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x103>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_1>;
L1_I_103: l1-icache {
compatible = "cache";
};
L1_D_103: l1-dcache {
compatible = "cache";
};
opp-465000000 {
opp-hz = /bits/ 64 <465000000>;
opp-level = <RPM_SMD_LEVEL_SVS_PLUS>;
opp-peak-kBps = <2724000>;
opp-supported-hw = <0xFF>;
};
CPU4: cpu@0 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x0>;
enable-method = "psci";
capacity-dmips-mhz = <640>;
next-level-cache = <&L2_0>;
L2_0: l2-cache {
compatible = "cache";
cache-level = <2>;
};
L1_I_0: l1-icache {
compatible = "cache";
};
L1_D_0: l1-dcache {
compatible = "cache";
};
opp-370000000 {
opp-hz = /bits/ 64 <370000000>;
opp-level = <RPM_SMD_LEVEL_SVS>;
opp-peak-kBps = <2188000>;
opp-supported-hw = <0xFF>;
};
*/
opp-266000000 {
opp-hz = /bits/ 64 <266000000>;
opp-level = <RPM_SMD_LEVEL_LOW_SVS>;
opp-peak-kBps = <1648000>;
opp-supported-hw = <0xFF>;
};
CPU5: cpu@1 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x1>;
enable-method = "psci";
capacity-dmips-mhz = <640>;
next-level-cache = <&L2_0>;
L1_I_1: l1-icache {
compatible = "cache";
};
L1_D_1: l1-dcache {
compatible = "cache";
};
};
CPU6: cpu@2 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x2>;
enable-method = "psci";
capacity-dmips-mhz = <640>;
next-level-cache = <&L2_0>;
L1_I_2: l1-icache {
compatible = "cache";
};
L1_D_2: l1-dcache {
compatible = "cache";
};
};
CPU7: cpu@3 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x3>;
enable-method = "psci";
capacity-dmips-mhz = <640>;
next-level-cache = <&L2_0>;
L1_I_3: l1-icache {
compatible = "cache";
};
L1_D_3: l1-dcache {
compatible = "cache";
};
};
cpu-map {
cluster0 {
core0 {
cpu = <&CPU4>;
};
core1 {
cpu = <&CPU5>;
};
core2 {
cpu = <&CPU6>;
};
core3 {
cpu = <&CPU7>;
};
};
cluster1 {
core0 {
cpu = <&CPU0>;
};
core1 {
cpu = <&CPU1>;
};
core2 {
cpu = <&CPU2>;
};
core3 {
cpu = <&CPU3>;
};
};
};
};
firmware {
scm {
compatible = "qcom,scm";
};
};
memory {
device_type = "memory";
/* We expect the bootloader to fill in the reg */
reg = <0 0 0 0>;
};
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 1 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 2 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 3 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 0 IRQ_TYPE_LEVEL_LOW>;
};
soc: soc {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0 0 0 0xffffffff>;
compatible = "simple-bus";
gcc: clock-controller@100000 {
compatible = "qcom,gcc-sdm660";
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
reg = <0x00100000 0x94000>;
};
tlmm: pinctrl@3100000 {
compatible = "qcom,sdm660-pinctrl";
reg = <0x03100000 0x400000>,
<0x03500000 0x400000>,
<0x03900000 0x400000>;
reg-names = "south", "center", "north";
interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
gpio-ranges = <&tlmm 0 0 114>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
uart_console_active: uart_console_active {
pinmux {
pins = "gpio4", "gpio5";
function = "blsp_uart2";
};
pinconf {
pins = "gpio4", "gpio5";
drive-strength = <2>;
bias-disable;
};
};
};
spmi_bus: spmi@800f000 {
compatible = "qcom,spmi-pmic-arb";
reg = <0x0800f000 0x1000>,
<0x08400000 0x1000000>,
<0x09400000 0x1000000>,
<0x0a400000 0x220000>,
<0x0800a000 0x3000>;
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
interrupt-names = "periph_irq";
interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <0>;
interrupt-controller;
#interrupt-cells = <4>;
cell-index = <0>;
};
blsp1_uart2: serial@c170000 {
compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
reg = <0x0c170000 0x1000>;
interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>,
<&gcc GCC_BLSP1_AHB_CLK>;
clock-names = "core", "iface";
status = "disabled";
};
timer@17920000 {
#address-cells = <1>;
#size-cells = <1>;
ranges;
compatible = "arm,armv7-timer-mem";
reg = <0x17920000 0x1000>;
frame@17921000 {
frame-number = <0>;
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17921000 0x1000>,
<0x17922000 0x1000>;
};
frame@17923000 {
frame-number = <1>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17923000 0x1000>;
status = "disabled";
};
frame@17924000 {
frame-number = <2>;
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17924000 0x1000>;
status = "disabled";
};
frame@17925000 {
frame-number = <3>;
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17925000 0x1000>;
status = "disabled";
};
frame@17926000 {
frame-number = <4>;
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17926000 0x1000>;
status = "disabled";
};
frame@17927000 {
frame-number = <5>;
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17927000 0x1000>;
status = "disabled";
};
frame@17928000 {
frame-number = <6>;
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x17928000 0x1000>;
status = "disabled";
};
};
intc: interrupt-controller@17a00000 {
compatible = "arm,gic-v3";
reg = <0x17a00000 0x10000>,
<0x17b00000 0x100000>;
#interrupt-cells = <3>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
interrupt-controller;
#redistributor-regions = <1>;
redistributor-stride = <0x0 0x20000>;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
opp-160000000 {
opp-hz = /bits/ 64 <160000000>;
opp-level = <RPM_SMD_LEVEL_MIN_SVS>;
opp-peak-kBps = <1200000>;
opp-supported-hw = <0xFF>;
};
};
};
&CPU0 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <1024>;
/delete-property/ operating-points-v2;
};
&CPU1 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <1024>;
/delete-property/ operating-points-v2;
};
&CPU2 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <1024>;
/delete-property/ operating-points-v2;
};
&CPU3 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <1024>;
/delete-property/ operating-points-v2;
};
&CPU4 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <640>;
/delete-property/ operating-points-v2;
};
&CPU5 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <640>;
/delete-property/ operating-points-v2;
};
&CPU6 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <640>;
/delete-property/ operating-points-v2;
};
&CPU7 {
compatible = "qcom,kryo260";
capacity-dmips-mhz = <640>;
/delete-property/ operating-points-v2;
};
&gcc {
compatible = "qcom,gcc-sdm660";
};
&gpucc {
compatible = "qcom,gpucc-sdm660";
};
&mdp {
ports {
port@1 {
reg = <1>;
mdp5_intf2_out: endpoint {
remote-endpoint = <&dsi1_in>;
};
};
};
};
&mdss {
dsi1: dsi@c996000 {
compatible = "qcom,mdss-dsi-ctrl";
reg = <0x0c996000 0x400>;
reg-names = "dsi_ctrl";
/* DSI1 shares the OPP table with DSI0 */
operating-points-v2 = <&dsi_opp_table>;
power-domains = <&rpmpd SDM660_VDDCX>;
interrupt-parent = <&mdss>;
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
<&mmcc PCLK1_CLK_SRC>;
assigned-clock-parents = <&dsi1_phy 0>,
<&dsi1_phy 1>;
clocks = <&mmcc MDSS_MDP_CLK>,
<&mmcc MDSS_BYTE1_CLK>,
<&mmcc MDSS_BYTE1_INTF_CLK>,
<&mmcc MNOC_AHB_CLK>,
<&mmcc MDSS_AHB_CLK>,
<&mmcc MDSS_AXI_CLK>,
<&mmcc MISC_AHB_CLK>,
<&mmcc MDSS_PCLK1_CLK>,
<&mmcc MDSS_ESC1_CLK>;
clock-names = "mdp_core",
"byte",
"byte_intf",
"mnoc",
"iface",
"bus",
"core_mmss",
"pixel",
"core";
phys = <&dsi1_phy>;
phy-names = "dsi";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
dsi1_in: endpoint {
remote-endpoint = <&mdp5_intf2_out>;
};
};
port@1 {
reg = <1>;
dsi1_out: endpoint {
};
};
};
};
dsi1_phy: dsi-phy@c996400 {
compatible = "qcom,dsi-phy-14nm-660";
reg = <0x0c996400 0x100>,
<0x0c996500 0x300>,
<0x0c996800 0x188>;
reg-names = "dsi_phy",
"dsi_phy_lane",
"dsi_pll";
#clock-cells = <1>;
#phy-cells = <0>;
clocks = <&mmcc MDSS_AHB_CLK>, <&rpmcc RPM_SMD_XO_CLK_SRC>;
clock-names = "iface", "ref";
};
};
&mmcc {
compatible = "qcom,mmcc-sdm660";
clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
<&sleep_clk>,
<&gcc GCC_MMSS_GPLL0_CLK>,
<&gcc GCC_MMSS_GPLL0_DIV_CLK>,
<&dsi0_phy 1>,
<&dsi0_phy 0>,
<&dsi1_phy 1>,
<&dsi1_phy 0>,
<0>,
<0>;
};
&tlmm {
compatible = "qcom,sdm660-pinctrl";
};
&tsens {
#qcom,sensors = <14>;
};

View file

@ -413,6 +413,9 @@ &dsi1 {
qcom,dual-dsi-mode;
/* DSI1 is slave, so use DSI0 clocks */
assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
ports {
port@1 {
endpoint {

View file

@ -19,9 +19,14 @@
/ {
aliases {
serial0 = &uart9;
hsuart0 = &uart6;
};
chosen {
stdout-path = "serial0:115200n8";
};
gpio-keys {
compatible = "gpio-keys";
label = "Volume keys";
@ -403,6 +408,7 @@ &ipa {
status = "okay";
memory-region = <&ipa_fw_mem>;
firmware-name = "qcom/sdm845/oneplus6/ipa_fws.mbn";
};
&mdss {
@ -526,6 +532,11 @@ bluetooth {
};
};
&uart9 {
label = "LS-UART1";
status = "okay";
};
&ufs_mem_hc {
status = "okay";

View file

@ -128,28 +128,23 @@ camera_mem: memory@8bf00000 {
no-map;
};
ipa_fw_mem: memory@8c400000 {
reg = <0 0x8c400000 0 0x10000>;
wlan_msa_mem: memory@8c400000 {
reg = <0 0x8c400000 0 0x100000>;
no-map;
};
ipa_gsi_mem: memory@8c410000 {
reg = <0 0x8c410000 0 0x5000>;
gpu_mem: memory@8c515000 {
reg = <0 0x8c515000 0 0x2000>;
no-map;
};
gpu_mem: memory@8c415000 {
reg = <0 0x8c415000 0 0x2000>;
ipa_fw_mem: memory@8c517000 {
reg = <0 0x8c517000 0 0x5a000>;
no-map;
};
adsp_mem: memory@8c500000 {
reg = <0 0x8c500000 0 0x1a00000>;
no-map;
};
wlan_msa_mem: memory@8df00000 {
reg = <0 0x8df00000 0 0x100000>;
adsp_mem: memory@8c600000 {
reg = <0 0x8c600000 0 0x1a00000>;
no-map;
};
@ -4148,9 +4143,8 @@ mdss: mdss@ae00000 {
power-domains = <&dispcc MDSS_GDSC>;
clocks = <&gcc GCC_DISP_AHB_CLK>,
<&gcc GCC_DISP_AXI_CLK>,
<&dispcc DISP_CC_MDSS_MDP_CLK>;
clock-names = "iface", "bus", "core";
clock-names = "iface", "core";
assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>;
assigned-clock-rates = <300000000>;
@ -4178,11 +4172,12 @@ mdss_mdp: mdp@ae01000 {
<0 0x0aeb0000 0 0x2008>;
reg-names = "mdp", "vbif";
clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
clocks = <&gcc GCC_DISP_AXI_CLK>,
<&dispcc DISP_CC_MDSS_AHB_CLK>,
<&dispcc DISP_CC_MDSS_AXI_CLK>,
<&dispcc DISP_CC_MDSS_MDP_CLK>,
<&dispcc DISP_CC_MDSS_VSYNC_CLK>;
clock-names = "iface", "bus", "core", "vsync";
clock-names = "gcc-bus", "iface", "bus", "core", "vsync";
assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>,
<&dispcc DISP_CC_MDSS_VSYNC_CLK>;
@ -4260,6 +4255,9 @@ dsi0: dsi@ae94000 {
"core",
"iface",
"bus";
assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
operating-points-v2 = <&dsi_opp_table>;
power-domains = <&rpmhpd SDM845_CX>;
@ -4326,6 +4324,9 @@ dsi1: dsi@ae96000 {
"core",
"iface",
"bus";
assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
operating-points-v2 = <&dsi_opp_table>;
power-domains = <&rpmhpd SDM845_CX>;

View file

@ -415,6 +415,11 @@ ecsh: hid@5c {
};
};
&ipa {
status = "okay";
memory-region = <&ipa_fw_mem>;
};
&mdss {
status = "okay";
};

View file

@ -0,0 +1,139 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, Martin Botka <martin.botka@somainline.org>
*/
/dts-v1/;
#include "sm6125.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/input/gpio-keys.h>
/ {
/* required for bootloader to select correct board */
qcom,msm-id = <394 0x10000>; /* sm6125 v1 */
qcom,board-id = <34 0>;
model = "Sony Xperia 10 II";
compatible = "sony,pdx201", "qcom,sm6125";
chosen {
#address-cells = <2>;
#size-cells = <2>;
ranges;
framebuffer0: framebuffer@5c000000 {
compatible = "simple-framebuffer";
reg = <0 0x5c000000 0 (2520 * 1080 * 4)>;
width = <1080>;
height = <2520>;
stride = <(1080 * 4)>;
format = "a8r8g8b8";
};
};
extcon_usb: extcon-usb {
compatible = "linux,extcon-usb-gpio";
id-gpio = <&tlmm 102 GPIO_ACTIVE_HIGH>;
};
gpio-keys {
status = "okay";
compatible = "gpio-keys";
input-name = "gpio-keys";
#address-cells = <1>;
#size-cells = <0>;
autorepeat;
vol-dn {
label = "Volume Down";
gpios = <&tlmm 47 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
linux,code = <KEY_VOLUMEDOWN>;
gpio-key,wakeup;
debounce-interval = <15>;
};
};
reserved_memory {
#address-cells = <2>;
#size-cells = <2>;
debug_mem: memory@ffb00000 {
reg = <0x0 0xffb00000 0x0 0xc0000>;
no-map;
};
last_log_mem: memory@ffbc0000 {
reg = <0x0 0xffbc0000 0x0 0x80000>;
no-map;
};
pstore_mem: ramoops@ffc00000 {
compatible = "ramoops";
reg = <0x0 0xffc40000 0x0 0xc0000>;
record-size = <0x1000>;
console-size = <0x40000>;
msg-size = <0x20000 0x20000>;
};
cmdline_mem: memory@ffd00000 {
reg = <0x0 0xffd40000 0x0 0x1000>;
no-map;
};
};
};
&hsusb_phy1 {
status = "okay";
};
&sdc2_state_off {
sd-cd {
pins = "gpio98";
bias-disable;
drive-strength = <2>;
};
};
&sdhc_1 {
status = "okay";
};
&tlmm {
gpio-reserved-ranges = <22 2>, <28 6>;
sdc2_state_on: sdc2-on {
clk {
pins = "sdc2_clk";
bias-disable;
drive-strength = <16>;
};
cmd {
pins = "sdc2_cmd";
bias-pull-up;
drive-strength = <10>;
};
data {
pins = "sdc2_data";
bias-pull-up;
drive-strength = <10>;
};
sd-cd {
pins = "gpio98";
bias-pull-up;
drive-strength = <2>;
};
};
};
&usb3 {
status = "okay";
};
&usb3_dwc3 {
extcon = <&extcon_usb>;
};

View file

@ -0,0 +1,566 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2021, Martin Botka <martin.botka@somainline.org>
*/
#include <dt-bindings/clock/qcom,gcc-sm6125.h>
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/qcom-rpmpd.h>
/ {
interrupt-parent = <&intc>;
#address-cells = <2>;
#size-cells = <2>;
chosen { };
clocks {
xo_board: xo-board {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <19200000>;
clock-output-names = "xo_board";
};
sleep_clk: sleep-clk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <32000>;
clock-output-names = "sleep_clk";
};
};
cpus {
#address-cells = <2>;
#size-cells = <0>;
CPU0: cpu@0 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x0>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_0>;
L2_0: l2-cache {
compatible = "cache";
};
};
CPU1: cpu@1 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x1>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_0>;
};
CPU2: cpu@2 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x2>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_0>;
};
CPU3: cpu@3 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x3>;
enable-method = "psci";
capacity-dmips-mhz = <1024>;
next-level-cache = <&L2_0>;
};
CPU4: cpu@100 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x100>;
enable-method = "psci";
capacity-dmips-mhz = <1638>;
next-level-cache = <&L2_1>;
L2_1: l2-cache {
compatible = "cache";
};
};
CPU5: cpu@101 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x101>;
enable-method = "psci";
capacity-dmips-mhz = <1638>;
next-level-cache = <&L2_1>;
};
CPU6: cpu@102 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x102>;
enable-method = "psci";
capacity-dmips-mhz = <1638>;
next-level-cache = <&L2_1>;
};
CPU7: cpu@103 {
device_type = "cpu";
compatible = "qcom,kryo260";
reg = <0x0 0x103>;
enable-method = "psci";
capacity-dmips-mhz = <1638>;
next-level-cache = <&L2_1>;
};
cpu-map {
cluster0 {
core0 {
cpu = <&CPU0>;
};
core1 {
cpu = <&CPU1>;
};
core2 {
cpu = <&CPU2>;
};
core3 {
cpu = <&CPU3>;
};
};
cluster1 {
core0 {
cpu = <&CPU4>;
};
core1 {
cpu = <&CPU5>;
};
core2 {
cpu = <&CPU6>;
};
core3 {
cpu = <&CPU7>;
};
};
};
};
firmware {
scm: scm {
compatible = "qcom,scm-sm6125", "qcom,scm";
#reset-cells = <1>;
};
};
memory@40000000 {
/* We expect the bootloader to fill in the size */
reg = <0x0 0x40000000 0x0 0x0>;
device_type = "memory";
};
pmu {
compatible = "arm,armv8-pmuv3";
interrupts = <GIC_PPI 6 IRQ_TYPE_LEVEL_HIGH>;
};
psci {
compatible = "arm,psci-1.0";
method = "smc";
};
reserved_memory: reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
hyp_mem: memory@45700000 {
reg = <0x0 0x45700000 0x0 0x600000>;
no-map;
};
xbl_aop_mem: memory@45e00000 {
reg = <0x0 0x45e00000 0x0 0x140000>;
no-map;
};
sec_apps_mem: memory@45fff000 {
reg = <0x0 0x45fff000 0x0 0x1000>;
no-map;
};
smem_mem: memory@46000000 {
reg = <0x0 0x46000000 0x0 0x200000>;
no-map;
};
reserved_mem1: memory@46200000 {
reg = <0x0 0x46200000 0x0 0x2d00000>;
no-map;
};
camera_mem: memory@4ab00000 {
reg = <0x0 0x4ab00000 0x0 0x500000>;
no-map;
};
modem_mem: memory@4b000000 {
reg = <0x0 0x4b000000 0x0 0x7e00000>;
no-map;
};
venus_mem: memory@52e00000 {
reg = <0x0 0x52e00000 0x0 0x500000>;
no-map;
};
wlan_msa_mem: memory@53300000 {
reg = <0x0 0x53300000 0x0 0x200000>;
no-map;
};
cdsp_mem: memory@53500000 {
reg = <0x0 0x53500000 0x0 0x1e00000>;
no-map;
};
adsp_pil_mem: memory@55300000 {
reg = <0x0 0x55300000 0x0 0x1e00000>;
no-map;
};
ipa_fw_mem: memory@57100000 {
reg = <0x0 0x57100000 0x0 0x10000>;
no-map;
};
ipa_gsi_mem: memory@57110000 {
reg = <0x0 0x57110000 0x0 0x5000>;
no-map;
};
gpu_mem: memory@57115000 {
reg = <0x0 0x57115000 0x0 0x2000>;
no-map;
};
cont_splash_mem: memory@5c000000 {
reg = <0x0 0x5c000000 0x0 0x00f00000>;
no-map;
};
dfps_data_mem: memory@5cf00000 {
reg = <0x0 0x5cf00000 0x0 0x0100000>;
no-map;
};
cdsp_sec_mem: memory@5f800000 {
reg = <0x0 0x5f800000 0x0 0x1e00000>;
no-map;
};
qseecom_mem: memory@5e400000 {
reg = <0x0 0x5e400000 0x0 0x1400000>;
no-map;
};
sdsp_mem: memory@f3000000 {
reg = <0x0 0xf3000000 0x0 0x400000>;
no-map;
};
adsp_mem: memory@f3400000 {
reg = <0x0 0xf3400000 0x0 0x800000>;
no-map;
};
qseecom_ta_mem: memory@13fc00000 {
reg = <0x1 0x3fc00000 0x0 0x400000>;
no-map;
};
};
rpm-glink {
compatible = "qcom,glink-rpm";
interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
qcom,rpm-msg-ram = <&rpm_msg_ram>;
mboxes = <&apcs_glb 0>;
rpm_requests: rpm-requests {
compatible = "qcom,rpm-sm6125";
qcom,glink-channels = "rpm_requests";
rpmcc: clock-controller {
compatible = "qcom,rpmcc-sm6125", "qcom,rpmcc";
#clock-cells = <1>;
};
};
};
smem: smem {
compatible = "qcom,smem";
memory-region = <&smem_mem>;
hwlocks = <&tcsr_mutex 3>;
};
soc {
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x00 0x00 0x00 0xffffffff>;
compatible = "simple-bus";
tcsr_mutex: hwlock@340000 {
compatible = "qcom,tcsr-mutex";
reg = <0x00340000 0x20000>;
#hwlock-cells = <1>;
};
tlmm: pinctrl@500000 {
compatible = "qcom,sm6125-tlmm";
reg = <0x00500000 0x400000>,
<0x00900000 0x400000>,
<0x00d00000 0x400000>;
reg-names = "west", "south", "east";
interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
gpio-controller;
gpio-ranges = <&tlmm 0 0 134>;
#gpio-cells = <2>;
interrupt-controller;
#interrupt-cells = <2>;
sdc2_state_off: sdc2-off {
clk {
pins = "sdc2_clk";
bias-disable;
drive-strength = <2>;
};
cmd {
pins = "sdc2_cmd";
bias-pull-up;
drive-strength = <2>;
};
data {
pins = "sdc2_data";
bias-pull-up;
drive-strength = <2>;
};
};
};
gcc: clock-controller@1400000 {
compatible = "qcom,gcc-sm6125";
reg = <0x01400000 0x1f0000>;
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
clock-names = "bi_tcxo", "sleep_clk";
clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>, <&sleep_clk>;
};
hsusb_phy1: phy@1613000 {
compatible = "qcom,msm8996-qusb2-phy";
reg = <0x01613000 0x180>;
#phy-cells = <0>;
clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
<&gcc GCC_AHB2PHY_USB_CLK>;
clock-names = "ref", "cfg_ahb";
resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
status = "disabled";
};
rpm_msg_ram: memory@45f0000 {
compatible = "qcom,rpm-msg-ram";
reg = <0x045f0000 0x7000>;
};
sdhc_1: sdhci@4744000 {
compatible = "qcom,sm6125-sdhci", "qcom,sdhci-msm-v5";
reg = <0x04744000 0x1000>, <0x04745000 0x1000>;
reg-names = "hc", "core";
interrupts = <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hc_irq", "pwr_irq";
clocks = <&gcc GCC_SDCC1_AHB_CLK>,
<&gcc GCC_SDCC1_APPS_CLK>,
<&xo_board>;
clock-names = "iface", "core", "xo";
bus-width = <8>;
non-removable;
status = "disabled";
};
sdhc_2: sdhci@4784000 {
compatible = "qcom,sm6125-sdhci", "qcom,sdhci-msm-v5";
reg = <0x04784000 0x1000>;
reg-names = "hc";
interrupts = <GIC_SPI 350 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hc_irq", "pwr_irq";
clocks = <&gcc GCC_SDCC2_AHB_CLK>,
<&gcc GCC_SDCC2_APPS_CLK>,
<&xo_board>;
clock-names = "iface", "core", "xo";
pinctrl-0 = <&sdc2_state_on>;
pinctrl-1 = <&sdc2_state_off>;
pinctrl-names = "default", "sleep";
bus-width = <4>;
status = "disabled";
};
usb3: usb@4ef8800 {
compatible = "qcom,msm8996-dwc3", "qcom,dwc3";
reg = <0x04ef8800 0x400>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
clocks = <&gcc GCC_USB30_PRIM_MASTER_CLK>,
<&gcc GCC_SYS_NOC_USB3_PRIM_AXI_CLK>,
<&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB3_PRIM_CLKREF_CLK>,
<&gcc GCC_USB30_PRIM_SLEEP_CLK>,
<&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
assigned-clock-rates = <19200000>, <66666667>;
power-domains = <&gcc USB30_PRIM_GDSC>;
qcom,select-utmi-as-pipe-clk;
status = "disabled";
usb3_dwc3: usb@4e00000 {
compatible = "snps,dwc3";
reg = <0x04e00000 0xcd00>;
interrupts = <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
phys = <&hsusb_phy1>;
phy-names = "usb2-phy";
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
maximum-speed = "high-speed";
dr_mode = "peripheral";
};
};
spmi_bus: spmi@1c40000 {
compatible = "qcom,spmi-pmic-arb";
reg = <0x01c40000 0x1100>,
<0x01e00000 0x2000000>,
<0x03e00000 0x100000>,
<0x03f00000 0xa0000>,
<0x01c0a000 0x26000>;
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
interrupt-names = "periph_irq";
interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
#size-cells = <0>;
interrupt-controller;
#interrupt-cells = <4>;
cell-index = <0>;
};
apcs_glb: mailbox@f111000 {
compatible = "qcom,sm6125-apcs-hmss-global";
reg = <0x0f111000 0x1000>;
#mbox-cells = <1>;
};
timer@f120000 {
compatible = "arm,armv7-timer-mem";
#address-cells = <1>;
#size-cells = <1>;
ranges;
reg = <0x0f120000 0x1000>;
clock-frequency = <19200000>;
frame@0f121000 {
frame-number = <0>;
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f121000 0x1000>,
<0x0f122000 0x1000>;
};
frame@0f123000 {
frame-number = <1>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f123000 0x1000>;
status = "disabled";
};
frame@0f124000 {
frame-number = <2>;
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f124000 0x1000>;
status = "disabled";
};
frame@f125000 {
frame-number = <3>;
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f125000 0x1000>;
status = "disabled";
};
frame@f126000 {
frame-number = <4>;
interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f126000 0x1000>;
status = "disabled";
};
frame@f127000 {
frame-number = <5>;
interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f127000 0x1000>;
status = "disabled";
};
frame@f128000 {
frame-number = <6>;
interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0f128000 0x1000>;
status = "disabled";
};
};
intc: interrupt-controller@f200000 {
compatible = "arm,gic-v3";
reg = <0x0f200000 0x20000>,
<0x0f300000 0x100000>;
#interrupt-cells = <3>;
interrupt-controller;
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
};
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 1 0xf08
GIC_PPI 2 0xf08
GIC_PPI 3 0xf08
GIC_PPI 0 0xf08>;
clock-frequency = <19200000>;
};
};

View file

@ -15,7 +15,7 @@
/ {
model = "Qualcomm Technologies, Inc. SM8150 MTP";
compatible = "qcom,sm8150-mtp";
compatible = "qcom,sm8150-mtp", "qcom,sm8150";
aliases {
serial0 = &uart2;

File diff suppressed because it is too large Load diff

View file

@ -561,6 +561,9 @@ i2c14: i2c@880000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c14_default>;
interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma2 0 0 QCOM_GPI_I2C>,
<&gpi_dma2 1 0 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -572,10 +575,13 @@ spi14: spi@880000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma2 0 0 QCOM_GPI_SPI>,
<&gpi_dma2 1 0 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -587,6 +593,9 @@ i2c15: i2c@884000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c15_default>;
interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma2 0 1 QCOM_GPI_I2C>,
<&gpi_dma2 1 1 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -598,10 +607,13 @@ spi15: spi@884000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma2 0 1 QCOM_GPI_SPI>,
<&gpi_dma2 1 1 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -613,6 +625,9 @@ i2c16: i2c@888000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c16_default>;
interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma2 0 2 QCOM_GPI_I2C>,
<&gpi_dma2 1 2 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -624,10 +639,13 @@ spi16: spi@888000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma2 0 2 QCOM_GPI_SPI>,
<&gpi_dma2 1 2 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -639,6 +657,9 @@ i2c17: i2c@88c000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c17_default>;
interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>,
<&gpi_dma2 1 3 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -650,10 +671,13 @@ spi17: spi@88c000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma2 0 3 QCOM_GPI_SPI>,
<&gpi_dma2 1 3 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -678,6 +702,9 @@ i2c18: i2c@890000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c18_default>;
interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>,
<&gpi_dma2 1 4 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -689,10 +716,13 @@ spi18: spi@890000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma2 0 4 QCOM_GPI_SPI>,
<&gpi_dma2 1 4 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -717,6 +747,9 @@ i2c19: i2c@894000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c19_default>;
interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma2 0 5 QCOM_GPI_I2C>,
<&gpi_dma2 1 5 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -728,10 +761,13 @@ spi19: spi@894000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma2 0 5 QCOM_GPI_SPI>,
<&gpi_dma2 1 5 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
@ -779,6 +815,9 @@ i2c0: i2c@980000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c0_default>;
interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 0 QCOM_GPI_I2C>,
<&gpi_dma0 1 0 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -790,10 +829,13 @@ spi0: spi@980000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 0 QCOM_GPI_SPI>,
<&gpi_dma0 1 0 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -805,6 +847,9 @@ i2c1: i2c@984000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c1_default>;
interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 1 QCOM_GPI_I2C>,
<&gpi_dma0 1 1 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -816,10 +861,13 @@ spi1: spi@984000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
<&gpi_dma0 1 1 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -831,6 +879,9 @@ i2c2: i2c@988000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c2_default>;
interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 2 QCOM_GPI_I2C>,
<&gpi_dma0 1 2 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -842,10 +893,13 @@ spi2: spi@988000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 2 QCOM_GPI_SPI>,
<&gpi_dma0 1 2 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -870,6 +924,9 @@ i2c3: i2c@98c000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c3_default>;
interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 3 QCOM_GPI_I2C>,
<&gpi_dma0 1 3 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -881,10 +938,13 @@ spi3: spi@98c000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 3 QCOM_GPI_SPI>,
<&gpi_dma0 1 3 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -896,6 +956,9 @@ i2c4: i2c@990000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c4_default>;
interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 4 QCOM_GPI_I2C>,
<&gpi_dma0 1 4 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -907,10 +970,13 @@ spi4: spi@990000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 4 QCOM_GPI_SPI>,
<&gpi_dma0 1 4 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -922,6 +988,9 @@ i2c5: i2c@994000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c5_default>;
interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 5 QCOM_GPI_I2C>,
<&gpi_dma0 1 5 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -933,10 +1002,13 @@ spi5: spi@994000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 5 QCOM_GPI_SPI>,
<&gpi_dma0 1 5 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -948,6 +1020,9 @@ i2c6: i2c@998000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c6_default>;
interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 6 QCOM_GPI_I2C>,
<&gpi_dma0 1 6 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -959,10 +1034,13 @@ spi6: spi@998000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 6 QCOM_GPI_SPI>,
<&gpi_dma0 1 6 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -987,6 +1065,9 @@ i2c7: i2c@99c000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c7_default>;
interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma0 0 7 QCOM_GPI_I2C>,
<&gpi_dma0 1 7 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -998,10 +1079,13 @@ spi7: spi@99c000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma0 0 7 QCOM_GPI_SPI>,
<&gpi_dma0 1 7 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
@ -1046,6 +1130,9 @@ i2c8: i2c@a80000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c8_default>;
interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>,
<&gpi_dma1 1 0 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -1057,10 +1144,13 @@ spi8: spi@a80000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>,
<&gpi_dma1 1 0 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -1072,6 +1162,9 @@ i2c9: i2c@a84000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c9_default>;
interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>,
<&gpi_dma1 1 1 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -1083,10 +1176,13 @@ spi9: spi@a84000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>,
<&gpi_dma1 1 1 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -1098,6 +1194,9 @@ i2c10: i2c@a88000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c10_default>;
interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>,
<&gpi_dma1 1 2 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -1109,10 +1208,13 @@ spi10: spi@a88000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma1 0 2 QCOM_GPI_SPI>,
<&gpi_dma1 1 2 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -1124,6 +1226,9 @@ i2c11: i2c@a8c000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c11_default>;
interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>,
<&gpi_dma1 1 3 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -1135,10 +1240,13 @@ spi11: spi@a8c000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma1 0 3 QCOM_GPI_SPI>,
<&gpi_dma1 1 3 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -1150,6 +1258,9 @@ i2c12: i2c@a90000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c12_default>;
interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>,
<&gpi_dma1 1 4 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -1161,10 +1272,13 @@ spi12: spi@a90000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>,
<&gpi_dma1 1 4 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
@ -1189,6 +1303,9 @@ i2c13: i2c@a94000 {
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c13_default>;
interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>,
<&gpi_dma1 1 5 QCOM_GPI_I2C>;
dma-names = "tx", "rx";
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
@ -1200,10 +1317,13 @@ spi13: spi@a94000 {
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>,
<&gpi_dma1 1 5 QCOM_GPI_SPI>;
dma-names = "tx", "rx";
power-domains = <&rpmhpd SM8250_CX>;
operating-points-v2 = <&qup_opp_table>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
@ -2210,7 +2330,7 @@ usb_2_qmpphy: phy@88eb000 {
<&gcc GCC_USB3_PHY_SEC_BCR>;
reset-names = "phy", "common";
usb_2_ssphy: lane@88eb200 {
usb_2_ssphy: lanes@88eb200 {
reg = <0 0x088eb200 0 0x200>,
<0 0x088eb400 0 0x200>,
<0 0x088eb800 0 0x800>;
@ -2321,7 +2441,7 @@ usb_1: usb@a6f8800 {
resets = <&gcc GCC_USB30_PRIM_BCR>;
usb_1_dwc3: dwc3@a600000 {
usb_1_dwc3: usb@a600000 {
compatible = "snps,dwc3";
reg = <0 0x0a600000 0 0xcd00>;
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
@ -2372,7 +2492,7 @@ usb_2: usb@a8f8800 {
resets = <&gcc GCC_USB30_SEC_BCR>;
usb_2_dwc3: dwc3@a800000 {
usb_2_dwc3: usb@a800000 {
compatible = "snps,dwc3";
reg = <0 0x0a800000 0 0xcd00>;
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
@ -2470,10 +2590,9 @@ mdss: mdss@ae00000 {
power-domains = <&dispcc MDSS_GDSC>;
clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
<&gcc GCC_DISP_HF_AXI_CLK>,
<&gcc GCC_DISP_SF_AXI_CLK>,
<&dispcc DISP_CC_MDSS_MDP_CLK>;
clock-names = "iface", "bus", "nrt_bus", "core";
clock-names = "iface", "nrt_bus", "core";
assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>;
assigned-clock-rates = <460000000>;
@ -2578,6 +2697,9 @@ dsi0: dsi@ae94000 {
"iface",
"bus";
assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
operating-points-v2 = <&dsi_opp_table>;
power-domains = <&rpmhpd SM8250_MMCX>;
@ -2648,6 +2770,9 @@ dsi1: dsi@ae96000 {
"iface",
"bus";
assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
operating-points-v2 = <&dsi_opp_table>;
power-domains = <&rpmhpd SM8250_MMCX>;
@ -3955,7 +4080,7 @@ apps_bcm_voter: bcm_voter {
};
};
epss_l3: interconnect@18591000 {
epss_l3: interconnect@18590000 {
compatible = "qcom,sm8250-epss-l3";
reg = <0 0x18590000 0 0x1000>;

View file

@ -219,7 +219,7 @@ &mpss {
firmware-name = "qcom/sm8350/modem.mbn";
};
&qupv3_id_1 {
&qupv3_id_0 {
status = "okay";
};

View file

@ -286,7 +286,7 @@ &mpss {
firmware-name = "qcom/sm8350/modem.mbn";
};
&qupv3_id_1 {
&qupv3_id_0 {
status = "okay";
};

View file

@ -456,7 +456,7 @@ ipcc: mailbox@408000 {
#mbox-cells = <2>;
};
qupv3_id_1: geniqup@9c0000 {
qupv3_id_0: geniqup@9c0000 {
compatible = "qcom,geni-se-qup";
reg = <0x0 0x009c0000 0x0 0x6000>;
clock-names = "m-ahb", "s-ahb";
@ -481,6 +481,31 @@ uart2: serial@98c000 {
};
};
qupv3_id_1: geniqup@ac0000 {
compatible = "qcom,geni-se-qup";
reg = <0x0 0x00ac0000 0x0 0x6000>;
clock-names = "m-ahb", "s-ahb";
clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
<&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
#address-cells = <2>;
#size-cells = <2>;
ranges;
status = "disabled";
i2c13: i2c@a94000 {
compatible = "qcom,geni-i2c";
reg = <0 0x00a94000 0 0x4000>;
clock-names = "se";
clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c13_default_state>;
interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};
apps_smmu: iommu@15000000 {
compatible = "qcom,sm8350-smmu-500", "arm,mmu-500";
reg = <0 0x15000000 0 0x100000>;
@ -666,12 +691,10 @@ ipa: ipa@1e40000 {
clocks = <&rpmhcc RPMH_IPA_CLK>;
clock-names = "core";
interconnects = <&aggre2_noc MASTER_IPA &gem_noc SLAVE_LLCC>,
<&mc_virt MASTER_LLCC &mc_virt SLAVE_EBI1>,
interconnects = <&aggre2_noc MASTER_IPA &mc_virt SLAVE_EBI1>,
<&gem_noc MASTER_APPSS_PROC &config_noc SLAVE_IPA_CFG>;
interconnect-names = "ipa_to_llcc",
"llcc_to_ebi1",
"appss_to_ipa";
interconnect-names = "memory",
"config";
qcom,smem-states = <&ipa_smp2p_out 0>,
<&ipa_smp2p_out 1>;
@ -801,6 +824,7 @@ tlmm: pinctrl@f100000 {
interrupt-controller;
#interrupt-cells = <2>;
gpio-ranges = <&tlmm 0 0 204>;
wakeup-parent = <&pdc>;
qup_uart3_default_state: qup-uart3-default-state {
rx {
@ -812,6 +836,19 @@ tx {
function = "qup3";
};
};
qup_i2c13_default_state: qup-i2c13-default-state {
mux {
pins = "gpio0", "gpio1";
function = "qup13";
};
config {
pins = "gpio0", "gpio1";
drive-strength = <2>;
bias-pull-up;
};
};
};
rng: rng@10d3000 {
@ -1273,7 +1310,7 @@ usb_1: usb@a6f8800 {
resets = <&gcc GCC_USB30_PRIM_BCR>;
usb_1_dwc3: dwc3@a600000 {
usb_1_dwc3: usb@a600000 {
compatible = "snps,dwc3";
reg = <0 0x0a600000 0 0xcd00>;
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
@ -1317,7 +1354,7 @@ usb_2: usb@a8f8800 {
resets = <&gcc GCC_USB30_SEC_BCR>;
usb_2_dwc3: dwc3@a800000 {
usb_2_dwc3: usb@a800000 {
compatible = "snps,dwc3";
reg = <0 0x0a800000 0 0xcd00>;
interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;