diff options
Diffstat (limited to 'src/target/firmware')
-rw-r--r-- | src/target/firmware/abb/twl3025.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/target/firmware/abb/twl3025.c b/src/target/firmware/abb/twl3025.c index 01817130..564c34ba 100644 --- a/src/target/firmware/abb/twl3025.c +++ b/src/target/firmware/abb/twl3025.c @@ -105,6 +105,13 @@ static void twl3025_irq(enum irq_nr nr) case IRQ_EXTERNAL: // charger in/out, pwrbtn, adc done src = twl3025_reg_read(ITSTATREG); // printd("itstatreg 0x%02x\n", src); + if (src & 0x04) { + /* poll PWON status and power off the phone when the + * powerbutton has been released (otherwise it will + * poweron immediately again) */ + while (!(twl3025_reg_read(VRPCSTS) & 0x10)) { }; + twl3025_power_off(); + } if (src & 0x08) handle_charger(); if (src & 0x20) |