From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Previously the interrupt lanes were not described, fix that.
Fixes: d9be0bc95f25 ("arm64: dts: qcom: msm8994: Add USB support")
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/msm8994.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi
index 1acb0f159511996db07bc7543cf4f194a4ebd0fa..8c0b1e3a99a767e7c28bcaf3b9687501cc15cd58 100644
--- a/arch/arm64/boot/dts/qcom/msm8994.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi
@@ -437,6 +437,15 @@ usb3: usb@f92f8800 {
#size-cells = <1>;
ranges;
+ interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "pwr_event",
+ "qusb2_phy",
+ "hs_phy_irq",
+ "ss_phy_irq";
+
clocks = <&gcc GCC_USB30_MASTER_CLK>,
<&gcc GCC_SYS_NOC_USB3_AXI_CLK>,
<&gcc GCC_USB30_SLEEP_CLK>,
--
2.47.1
Hi Konrad, all, > From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > Previously the interrupt lanes were not described, fix that. > Fixes: d9be0bc95f25 ("arm64: dts: qcom: msm8994: Add USB support") > Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/msm8994.dtsi | 9 +++++++++ > 1 file changed, 9 insertions(+) > diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi > index 1acb0f159511996db07bc7543cf4f194a4ebd0fa..8c0b1e3a99a767e7c28bcaf3b9687501cc15cd58 100644 > --- a/arch/arm64/boot/dts/qcom/msm8994.dtsi > +++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi > @@ -437,6 +437,15 @@ usb3: usb@f92f8800 { > #size-cells = <1>; > ranges; > + interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "pwr_event", > + "qusb2_phy", > + "hs_phy_irq", > + "ss_phy_irq"; > + Tested-by: Petr Vorel <petr.vorel@gmail.com> Well, I tested this on msm8994 Huawei Nexus 6P. It did not break anything, but obviously it's not enough for phone to get USB working. IMHO none of msm899[24] has working USB. msm8996 has usb3phy, hsusb_phy[12] labels, I suppose USB will not be working until this is set. Below is a snippet of a downstream device tree. I might be able to transform it to the mainline tree, but feel free to post a patch (probably obvious for you). Kind regards, Petr ssphy@f9b38000 { phandle = <0xf1>; linux,phandle = <0xf1>; clock-names = "aux_clk\0pipe_clk\0cfg_ahb_clk\0phy_reset\0phy_phy_reset\0ldo_clk"; clocks = <0xaa 0xd9a36e0 0xaa 0xf279aff2 0xaa 0xd1231a0e 0xaa 0x3d559f1 0xaa 0xb1a4f885 0xaa 0x124410f7>; qcom,no-pipe-clk-switch; qcom,vbus-valid-override; qcom,vdd-voltage-level = <0x00 0xf4240 0xf4240>; vdda18-supply = <0xf4>; vdd-supply = <0x2e>; reg-names = "qmp_phy_base\0qmp_ahb2phy_base"; reg = <0xf9b38000 0x800 0xf9b3e000 0x3ff>; status = "ok"; compatible = "qcom,usb-ssphy-qmp"; }; hsphy@f92f8800 { phandle = <0xf0>; linux,phandle = <0xf0>; qcom,hsphy-host-init = <0xd1c9a7>; clock-names = "phy_sleep_clk"; clocks = <0xaa 0x2e4d8839>; qcom,vdda-force-on; qcom,sleep-clk-reset; qcom,set-pllbtune; qcom,vbus-valid-override; qcom,ext-vbus-id; qcom,vdd-voltage-level = <0x01 0x05 0x07>; vdda33-supply = <0xed>; vdda18-supply = <0xf4>; vddcx-supply = <0xf3>; vdd-supply = <0xf2>; qcom,hsphy-init = <0xd191a4>; reg-names = "core\0phy_csr"; reg = <0xf92f8800 0x3ff 0xf9b3a000 0x110>; status = "ok"; compatible = "qcom,usb-hsphy"; }; ssusb@f9200000 { phandle = <0xea>; linux,phandle = <0xea>; clock-names = "core_clk\0iface_clk\0utmi_clk\0sleep_clk\0ref_clk\0xo"; clocks = <0xaa 0xb3b4e2cb 0xaa 0x94d26800 0xaa 0xa800b65a 0xaa 0xd0b65c92 0x47 0x3ab0b36d 0x47 0xf79c19f6>; qcom,por-after-power-collapse; qcom,power-collapse-on-cable-disconnect; qcom,msm-bus,vectors-KBps = <0x3d 0x200 0x00 0x00 0x3d 0x200 0x3a980 0xea600>; qcom,msm-bus,num-paths = <0x01>; qcom,msm-bus,num-cases = <0x02>; qcom,msm-bus,name = "usb3"; qcom,usb-dbm = <0xef>; qcom,dwc-usb3-msm-qdss-tx-fifo-size = <0x2000>; qcom,dwc-usb3-msm-tx-fifo-size = <0x7400>; vbus_dwc3-supply = <0xee>; vdda33-supply = <0xed>; USB3_GDSC-supply = <0xec>; interrupt-names = "hs_phy_irq\0pwr_event_irq\0pmic_id_irq"; interrupt-map = <0x00 0x00 0x01 0x00 0x85 0x00 0x00 0x01 0x01 0x00 0xb4 0x00 0x00 0x01 0xeb 0x00 0x00 0x09 0x00>; interrupt-map-mask = <0x00 0xffffffff>; #interrupt-cells = <0x01>; interrupts = <0x00 0x01>; interrupt-parent = <0xea>; ranges; #size-cells = <0x01>; #address-cells = <0x01>; reg = <0xf9200000 0xfc000 0xfd4ab000 0x04>; status = "ok"; compatible = "qcom,dwc-usb3-msm"; dwc3@f9200000 { maximum-speed = "high-speed"; usb-phy = <0xf0 0xf1>; snps,usb3-u1u2-disable; tx-fifo-resize; interrupts = <0x00 0x83 0x00>; interrupt-parent = <0x01>; reg = <0xf9200000 0xfc000>; compatible = "synopsys,dwc3"; }; }; > clocks = <&gcc GCC_USB30_MASTER_CLK>, > <&gcc GCC_SYS_NOC_USB3_AXI_CLK>, > <&gcc GCC_USB30_SLEEP_CLK>,
On 6.12.2024 11:02 PM, Petr Vorel wrote: > Hi Konrad, all, > >> From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > >> Previously the interrupt lanes were not described, fix that. > >> Fixes: d9be0bc95f25 ("arm64: dts: qcom: msm8994: Add USB support") >> Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> >> --- >> arch/arm64/boot/dts/qcom/msm8994.dtsi | 9 +++++++++ >> 1 file changed, 9 insertions(+) > >> diff --git a/arch/arm64/boot/dts/qcom/msm8994.dtsi b/arch/arm64/boot/dts/qcom/msm8994.dtsi >> index 1acb0f159511996db07bc7543cf4f194a4ebd0fa..8c0b1e3a99a767e7c28bcaf3b9687501cc15cd58 100644 >> --- a/arch/arm64/boot/dts/qcom/msm8994.dtsi >> +++ b/arch/arm64/boot/dts/qcom/msm8994.dtsi >> @@ -437,6 +437,15 @@ usb3: usb@f92f8800 { >> #size-cells = <1>; >> ranges; > >> + interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>, >> + <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>; >> + interrupt-names = "pwr_event", >> + "qusb2_phy", >> + "hs_phy_irq", >> + "ss_phy_irq"; >> + > > Tested-by: Petr Vorel <petr.vorel@gmail.com> > > Well, I tested this on msm8994 Huawei Nexus 6P. It did not break anything, > but obviously it's not enough for phone to get USB working. IMHO none of > msm899[24] has working USB. It did work for me on both libra and on the Sony phones.. On the Lumias it worked when I booted through lk2nd, and I tracked it down to one of the writes that I never implemented.. and then I removed the repo where I had it tracked down I took a quick peek (but don't have the time right now to make sure it's this one) and if my memory doesn't fail me, you may need to // the second address in qcom,usb-dwc3-msm in downstream void __iomem *foo = ioremap(0xFD4AB000, 0x4); u32 val = readl(foo); val |= BIT(0); writel(val, foo); > msm8996 has usb3phy, hsusb_phy[12] labels, I suppose USB will not be working > until this is set. Below is a snippet of a downstream device tree. I might > be able to transform it to the mainline tree, but feel free to post a patch > (probably obvious for you). So long as the PHY is not reset, it should be working as well as it did in the bootloader.. which depending on whether your BL set it up may mean "well" or "not at all".. Give the above a shot, put it in some early init code. Konrad
© 2016 - 2024 Red Hat, Inc.