Hi André, On Sat, 7 Dec 2024 at 21:31, Peter Griffin <peter.griffin@xxxxxxxxxx> wrote: > > Hi André, > > Firstly, thanks for all your work getting USB on Pixel 6 / gs101 > working upstream :) > > On Fri, 6 Dec 2024 at 16:31, André Draszik <andre.draszik@xxxxxxxxxx> wrote: > > > > gs101's SS phy needs to be configured differently based on the > > connector orientation, as the SS link can only be established if the > > mux is configured correctly. > > > > The code to handle programming of the mux is in place already, this commit > > now adds the missing pieces to subscribe to the Type-C orientation > > switch event. > > > > Note that for this all to work we rely on the USB controller > > re-initialising us. It should invoke our .exit() upon cable unplug, and > > during cable plug we'll receive the orientation event after which we > > expect our .init() to be called. > > > > Above reinitialisation happens if the DWC3 controller can enter runtime > > suspend automatically. For the DWC3 driver, this is an opt-in: > > echo auto > /sys/devices/.../11110000.usb/power/control > > Once done, things work as long as the UDC is not bound as otherwise it > > stays busy because it doesn't cancel / stop outstanding TRBs. For now > > we have to manually unbind the UDC in that case: > > echo "" > sys/kernel/config/usb_gadget/.../UDC > > > > Note that if the orientation-switch property is missing from the DT, > > the code will behave as before this commit (meaning for gs101 it will > > work in SS mode in one orientation only). Other platforms are not > > affected either way. > > > > Signed-off-by: André Draszik <andre.draszik@xxxxxxxxxx> > > Reviewed-by: Peter Griffin <peter.griffin@xxxxxxxxxx> > Tested-by: Peter Griffin <peter.griffin@xxxxxxxxxx> > > Notes on testing: > > I tested this series with the corresponding DT using a Pixel 6 device > with 2 different USB hubs and also plugging directly into my laptop. > I've tried various combinations of plugging / unplugging from both > ends of the USB cable and changing cable orientation. With the latest > series the disconnect/reconnect always seems robustly detected and > Pixel is enumerated as a USB device by the host, adb connection to the > phone is possible even with the cable orientation changing between > disconnect/reconnect. > > One thing I did notice during testing is that in one cable orientation > Pixel is detected as a `SuperSpeed USB device` by the host and in the > other cable orientation it is detected as a `high-speed USB device`. > Which suggests there is still a latent bug in the phy > re-configuration. You can disregard this last point, I had a typo in my test setup :( I just confirmed that it is detected as SuperSpeed in both orientations. Thanks, Peter