diff options
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c')
-rw-r--r-- | firmware/target/arm/imx31/gigabeat-s/mc13783-imx31.c | 16 |
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 | { |