Re: [PATCH v2 2/2] phy: qcom-usb-hs: Add qcom,dp-manual-pullup logic
From: Stephan Gerhold <stephan@gerhold.net>
Date: 2022-12-29 21:03:21
Also in:
linux-arm-msm, linux-devicetree, linux-usb, lkml
On Thu, Dec 29, 2022 at 08:45:15PM +0100, Stephan Gerhold wrote:
On Thu, Dec 29, 2022 at 06:34:10PM +0000, Bryan O'Donoghue wrote:quoted
Downstream has a flag called qcom,dp-manual-pullup which informs the downstream driver if it should toggle ULPI_MISC_A_VBUSVLDEXTSEL and ULPI_MISC_A_VBUSVLDEXT. Downstream states: "qcom,dp-manual-pullup: If present, vbus is not routed to USB controller/phy and controller driver therefore enables pull-up explicitly before starting controller using usbcmd run/stop bit." Working with a system that has both an external Type-C port controller and an internal USB Hub results in a situation where VBUS is not connected to the SoC. In this case we still need to set the DP pullup. This patch enables and disables the DP pullup on PHY power_on and power_off respectively if the DT has declared the bool "qcom,enable-vbus-pullup" effectively replicating the downstream logic to the same effect. Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>[...] An alternative that I've occasionally used for early bring-up is to simply use a dummy extcon driver [1] that permanently reports active VBUS. The end result is the same. While it's clearly a hack perhaps this makes it a bit more clear that ideally you really should try to assign an extcon device, to avoid keeping the USB controller and PHY on permanently.
BTW another nice trick that should work in all almost all cases is to
use the state of the PMIC USB_IN pin as VBUS detection. All battery-
powered devices I have seen route the USB VBUS to PM8916 USB_IN. And
even many boards like DB410c seem to do that or at least permanently
supply 5V there. In all these cases the &pm8916_usbin extcon will
report a VBUS state that should make USB work.
Have you tried using that on your MSM8939 board with the Type-C setup?
&pm8916_usbin {
status = "okay";
};
&usb {
status = "okay";
usb-role-switch;
extcon = <&pm8916_usbin>;
};
&usb_hs_phy {
extcon = <&pm8916_usbin>;
};
Stephan
--
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy