summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c')
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c b/firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c
index a04cd7f893..fdb214a33d 100644
--- a/firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c
+++ b/firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c
@@ -24,6 +24,7 @@
24#include "debug.h" 24#include "debug.h"
25#include "kernel.h" 25#include "kernel.h"
26 26
27#include "power-imx31.h"
27#include "button-target.h" 28#include "button-target.h"
28 29
29/* This is all based on communicating with the MC13783 PMU which is on 30/* This is all based on communicating with the MC13783 PMU which is on
@@ -64,11 +65,15 @@ static __attribute__((noreturn)) void mc13783_interrupt_thread(void)
64 gpio_enable_event(MC13783_GPIO_NUM, MC13783_EVENT_ID); 65 gpio_enable_event(MC13783_GPIO_NUM, MC13783_EVENT_ID);
65 66
66 /* Check initial states */ 67 /* Check initial states */
68 value = mc13783_read(MC13783_INTERRUPT_SENSE0);
69 set_charger_inserted(value & MC13783_CHGDET);
70
67 value = mc13783_read(MC13783_INTERRUPT_SENSE1); 71 value = mc13783_read(MC13783_INTERRUPT_SENSE1);
68 button_power_set_state((value & MC13783_ON1B) == 0); 72 button_power_set_state((value & MC13783_ON1B) == 0);
69 set_headphones_inserted((value & MC13783_ON2B) == 0); 73 set_headphones_inserted((value & MC13783_ON2B) == 0);
70 74
71 /* Enable desired PMIC interrupts */ 75 /* Enable desired PMIC interrupts */
76 mc13783_clear(MC13783_INTERRUPT_MASK0, MC13783_CHGDET);
72 mc13783_clear(MC13783_INTERRUPT_MASK1, MC13783_ON1B | MC13783_ON2B); 77 mc13783_clear(MC13783_INTERRUPT_MASK1, MC13783_ON1B | MC13783_ON2B);
73 78
74 while (1) 79 while (1)
@@ -78,12 +83,19 @@ static __attribute__((noreturn)) void mc13783_interrupt_thread(void)
78 mc13783_read_regset(status_regs, pending, 2); 83 mc13783_read_regset(status_regs, pending, 2);
79 mc13783_write_regset(status_regs, pending, 2); 84 mc13783_write_regset(status_regs, pending, 2);
80 85
81#if 0 86
82 if (pending[0]) 87 if (pending[0])
83 { 88 {
84 /* Handle ...PENDING0 */ 89 /* Handle ...PENDING0 */
90 if (pending[0] & MC13783_CHGDET)
91 {
92 value = mc13783_read(MC13783_INTERRUPT_SENSE0);
93
94 if (pending[0] & MC13783_CHGDET)
95 set_charger_inserted(value & MC13783_CHGDET);
96 }
85 } 97 }
86#endif 98
87 99
88 if (pending[1]) 100 if (pending[1])
89 { 101 {