power: twl6030: Clear VUSB_IN_PMID bit on USB device setup
authorPaul Kocialkowski <contact@paulk.fr>
Sat, 27 Feb 2016 18:19:04 +0000 (19:19 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 15 Mar 2016 19:12:51 +0000 (15:12 -0400)
When booting from USB, the bootrom sets the VUSB_IN_PMID bit of the MISC2
register of the TWL6030. However, U-Boot sets the VUSB_IN_VSYS bit to enable
VBUS input. As both bits are contradictory, enabling both disables the input,
according to the TWL6030 TRM.

Thus, we need to clear the VUSB_IN_PMID bit in case of an USB boot (which could
just as well be a memory boot after USB timed out).

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
drivers/power/twl6030.c
include/twl6030.h

index df43cca..c6d06f1 100644 (file)
@@ -259,6 +259,7 @@ void twl6030_usb_device_settings()
        /* Select the input supply for VUSB regulator */
        twl6030_i2c_read_u8(TWL6030_CHIP_PM, TWL6030_MISC2, &value);
        value |= TWL6030_MISC2_VUSB_IN_VSYS;
+       value &= ~TWL6030_MISC2_VUSB_IN_PMID;
        twl6030_i2c_write_u8(TWL6030_CHIP_PM, TWL6030_MISC2, value);
 }
 #endif
index e68393c..9a1c645 100644 (file)
@@ -48,6 +48,7 @@
 #define BB_MEAS                        (1 << 0)
 
 #define TWL6030_MISC2                  0xE5
+#define TWL6030_MISC2_VUSB_IN_PMID     (1 << 3)
 #define TWL6030_MISC2_VUSB_IN_VSYS     (1 << 4)
 
 /* Slave Address 0x49 */