]> git.sur5r.net Git - u-boot/commitdiff
power: axp209: VBUS detection support
authorPaul Kocialkowski <contact@paulk.fr>
Sun, 22 Mar 2015 17:07:11 +0000 (18:07 +0100)
committerHans de Goede <hdegoede@redhat.com>
Wed, 15 Apr 2015 14:17:17 +0000 (16:17 +0200)
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/power/axp209.c

index f8c9b77be081ec26b51124e85a43e2f001d8c0c0..29d54642fab1483a04dd941074d607b38511a4ef 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <i2c.h>
+#include <asm/arch/gpio.h>
 #include <axp209.h>
 
 enum axp209_reg {
@@ -31,6 +32,7 @@ enum axp209_reg {
 };
 
 #define AXP209_POWER_STATUS_ON_BY_DC   (1 << 0)
+#define AXP209_POWER_STATUS_VBUS_USABLE        (1 << 4)
 
 #define AXP209_IRQ5_PEK_UP             (1 << 6)
 #define AXP209_IRQ5_PEK_DOWN           (1 << 5)
@@ -205,6 +207,9 @@ static u8 axp209_get_gpio_ctrl_reg(unsigned int pin)
 
 int axp_gpio_direction_input(unsigned int pin)
 {
+       if (pin == SUNXI_GPIO_AXP0_VBUS_DETECT)
+               return 0;
+
        u8 reg = axp209_get_gpio_ctrl_reg(pin);
        /* GPIO3 is "special" */
        u8 val = (pin == 3) ? AXP209_GPIO3_INPUT : AXP209_GPIO_INPUT;
@@ -232,7 +237,10 @@ int axp_gpio_get_value(unsigned int pin)
        u8 val, mask;
        int rc;
 
-       if (pin == 3) {
+       if (pin == SUNXI_GPIO_AXP0_VBUS_DETECT) {
+               rc = axp209_read(AXP209_POWER_STATUS, &val);
+               mask = AXP209_POWER_STATUS_VBUS_USABLE;
+       } else if (pin == 3) {
                rc = axp209_read(AXP209_GPIO3_CTRL, &val);
                mask = 1;
        } else {