diff options
author | Hans de Goede <hdegoede@redhat.com> | 2015-01-17 18:39:20 +0300 |
---|---|---|
committer | Hans de Goede <hdegoede@redhat.com> | 2015-01-22 14:34:55 +0300 |
commit | 9dcf68fac888211758f43b2adf9b930d519a26da (patch) | |
tree | b204dd5419aa5513c773b92c9d9236ffa02fe7ab /drivers/power | |
parent | daf22636c21462aed84f938b5de564f99769d136 (diff) | |
download | u-boot-9dcf68fac888211758f43b2adf9b930d519a26da.tar.xz |
sunxi: axp209: Disable interrupts when intializing the axp209
We do not use the axp209 interrupt, and at least in my mini-x (which does not
have a power button) the pwr-button pin and the irq pin are soldered together,
so if the axp209 keeps it irq asserted too long it will see a 10s pwr-button
press and hard power off the board, disabling the irqs fixes this.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/axp209.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/power/axp209.c b/drivers/power/axp209.c index 3b1a6a73ae..4565398b0b 100644 --- a/drivers/power/axp209.c +++ b/drivers/power/axp209.c @@ -16,6 +16,11 @@ enum axp209_reg { AXP209_DCDC3_VOLTAGE = 0x27, AXP209_LDO24_VOLTAGE = 0x28, AXP209_LDO3_VOLTAGE = 0x29, + AXP209_IRQ_ENABLE1 = 0x40, + AXP209_IRQ_ENABLE2 = 0x41, + AXP209_IRQ_ENABLE3 = 0x42, + AXP209_IRQ_ENABLE4 = 0x43, + AXP209_IRQ_ENABLE5 = 0x44, AXP209_IRQ_STATUS5 = 0x4c, AXP209_SHUTDOWN = 0x32, AXP209_GPIO0_CTRL = 0x90, @@ -143,7 +148,7 @@ int axp209_set_ldo4(int mvolt) int axp209_init(void) { u8 ver; - int rc; + int i, rc; rc = axp209_read(AXP209_CHIP_VERSION, &ver); if (rc) @@ -155,6 +160,13 @@ int axp209_init(void) if (ver != 0x1) return -1; + /* Mask all interrupts */ + for (i = AXP209_IRQ_ENABLE1; i <= AXP209_IRQ_ENABLE5; i++) { + rc = axp209_write(i, 0); + if (rc) + return rc; + } + return 0; } |