- 
                Notifications
    
You must be signed in to change notification settings  - Fork 4
 
Description
A specific problem, but there might be an underlying bug that needs to be addressed. I've got a battery-powered RP2350 design that connects fine (USB boot mode and Adafruit TinyUSB msc_ramdisk) with Windows laptops and MacBooks running Ventura, but not Sonoma. My power chain looks like this:
USB -> battery charger IC ->mech switch -> vreg -> RP2350
|
battery
This means that there will be times when USB is connected before the RP2350 powers on, and vice-versa.
This works consistently in boot mode and the unmodified Adafruit TinyUSB msc_ramdisk example, when attached to a Windows computer, and a MacBook running Ventura, but not Sonoma.
Adding a diode from USB power to the vreg input (to the right of the mech switch) means that the RP2350 will always have power when USB is attached. It also violates the max capacitance USB spec for my design. This setup sometimes works with Sonoma. There seems to be a magic amount of capacitance to optimize the chance of it working, implying that this is a startup race problem, but I don't have enough data to be sure.
Another design of mine with identical hardware -- except that it uses an external power supply and an ADum3160 USB isolator -- always works, regardless of power sequencing and USB connection timing.
USB bus analysis with a Beagle shows that when the connection fails, enumeration doesn't even start.
If I had to guess, I'd say there's something going on with the timing of clearing MAIN_CTRL.PHY_ISO, but tinkering with that isn't a solution for me because this thing needs to work in boot mode, and I can't modify that code. At this point, my only hope is to find a cheap hub that works well enough that I can recommend it to my Macbook users.