summaryrefslogtreecommitdiff
path: root/drivers/power/axp209.c
diff options
context:
space:
mode:
authorPaul Kocialkowski <contact@paulk.fr>2015-03-22 18:07:11 +0100
committerHans de Goede <hdegoede@redhat.com>2015-04-15 16:17:17 +0200
commit1a59ecff804ffd96ab11001f722b8311296e6e5b (patch)
tree1425069c410c2b8188341a669bdfecfa8bb5df1f /drivers/power/axp209.c
parent5eaacb4340f7be10cf83e076529747fa70c85907 (diff)
downloadu-boot-1a59ecff804ffd96ab11001f722b8311296e6e5b.tar.gz
u-boot-1a59ecff804ffd96ab11001f722b8311296e6e5b.tar.bz2
u-boot-1a59ecff804ffd96ab11001f722b8311296e6e5b.zip
power: axp209: VBUS detection support
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>
Diffstat (limited to 'drivers/power/axp209.c')
-rw-r--r--drivers/power/axp209.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c
index f8c9b77be0..29d54642fa 100644
--- a/drivers/power/axp209.c
+++ b/drivers/power/axp209.c
@@ -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 {