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: > > 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@xxxxxxxxxx> > [...] > > 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