Re: [PATCH] usb: phy: ab8500-usb: Keep PHY turned on in UART mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux