• Andre Przywara's avatar
    plat/allwinner: Only enable DRIVEVBUS if really needed · 93fa305c
    Andre Przywara authored
    
    
    The DRIVEVBUS power rail of the AXP803 PMIC is mostly used to supply
    the USB bus power on micro USB sockets, when used in host mode. As this
    is a dynamic operation, and mostly we want micro USB sockets to act in
    client mode initially, BL31 should not actually enable this power line.
    However, on some boards DRIVEVBUS is used to supply power to normal
    USB-A sockets. Failing to activate this line there results in
    non-functional USB in U-Boot on those boards.
    
    For that reason we were enabling DRIVEVBUS so far, as it did not seem to
    cause any harm to the other boards. However it turns out that on the
    Pinephone (and other systems with a battery), actually enabling DRIVEVBUS
    unconditionally causes serious problems (reboot loop).
    
    To accommodate both use cases, without reverting to a build time option,
    check the default OTG configuration in the devicetree. For boards with
    USB-A sockets this is set to "host", on boards with micro-B sockets to
    "otg". Depending on this setting, we either enable DRIVEVBUS or leave it
    alone.
    
    This fixes TF-A on the Pinephone and potentially other battery powered
    devices.
    
    Change-Id: Iec0e07f218b2b4393bf4e05c3386261f8ed19e9f
    Signed-off-by: default avatarAndre Przywara <andre.przywara@arm.com>
    93fa305c
common.c 4.13 KB