Hi Stephan, On Wed, Dec 18, 2019 at 9:37 PM Stephan Gerhold <stephan@xxxxxxxxxxx> wrote: > AB8505 supports an "UART carkit mode" which makes UART accessible > through the USB connector. Upon detection of the UART cable, > this mode has to be manually enabled by: > > 1. Turning on the PHY in peripheral mode > 2. Reconfiguring PHY/pins to route UART signals to USB pins > > At the moment, we do not handle the UART link statuses at all, > which means that UART stops working as soon as phy-ab8500-usb is loaded > (since we disable the PHY after initialization). > > Keeping UART working if the cable is inserted before turning on the device > is quite simple: In this case, early boot firmware has already set up > the necessary PHY/pin configuration. The presence of the UART cable > is reported by a special value in the USB link status register. > > We can check for that value in ab8505_usb_link_status_update() > and set the PHY back to peripheral mode to restore UART. > (Note: This will result in some minor garbage since we still > temporarily disable the PHY during initialization...) > > Fully implementing this feature is more complicated: > For some reason, AB8505 does not update UART link status after bootup. > Regular USB cables work fine, but the link status register does not change > its state if an UART cable is inserted/removed. > > It seems likely that the hardware is not actually capable of detecting > UART cables autonomously. In addition to the USB link status register, > implementations in the vendor kernel also manually measure > the ID resistance to detect additional cable types. For UART cables, > the USB link status register might simply reflect the PHY configuration > instead of the actual link status. > > Implementing that functionality requires significant additions, > so for now just implement the simple case. This allows using UART > when inserting the cable before turning on the device. > > Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> > Signed-off-by: Stephan Gerhold <stephan@xxxxxxxxxxx> This is my understanding of how it works as well: Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> I am a bit allergic to using the word "manually" describing anything a computer does (no man involved) but many people use this way of describing things so who am I to tell. I tend to try to write "directly", "iteratively", "imperatively" or something, which is arguably harder to understand for some. Yours, Linus Walleij