diff options
Diffstat (limited to 'firmware/target/arm/imx233/power-imx233.c')
-rw-r--r-- | firmware/target/arm/imx233/power-imx233.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/power-imx233.c b/firmware/target/arm/imx233/power-imx233.c index f01a4ad3f2..d9f390c985 100644 --- a/firmware/target/arm/imx233/power-imx233.c +++ b/firmware/target/arm/imx233/power-imx233.c | |||
@@ -23,9 +23,33 @@ | |||
23 | #include "system.h" | 23 | #include "system.h" |
24 | #include "power.h" | 24 | #include "power.h" |
25 | #include "system-target.h" | 25 | #include "system-target.h" |
26 | #include "usb-target.h" | ||
27 | |||
28 | void INT_VDD5V(void) | ||
29 | { | ||
30 | if(HW_POWER_CTRL & HW_POWER_CTRL__VBUSVALID_IRQ) | ||
31 | { | ||
32 | if(HW_POWER_STS & HW_POWER_STS__VBUSVALID) | ||
33 | usb_insert_int(); | ||
34 | else | ||
35 | usb_remove_int(); | ||
36 | /* reverse polarity */ | ||
37 | __REG_TOG(HW_POWER_CTRL) = HW_POWER_CTRL__POLARITY_VBUSVALID; | ||
38 | /* enable int */ | ||
39 | __REG_CLR(HW_POWER_CTRL) = HW_POWER_CTRL__VBUSVALID_IRQ; | ||
40 | } | ||
41 | } | ||
26 | 42 | ||
27 | void power_init(void) | 43 | void power_init(void) |
28 | { | 44 | { |
45 | /* clear vbusvalid irq and set correct polarity */ | ||
46 | __REG_CLR(HW_POWER_CTRL) = HW_POWER_CTRL__VBUSVALID_IRQ; | ||
47 | if(HW_POWER_STS & HW_POWER_STS__VBUSVALID) | ||
48 | __REG_CLR(HW_POWER_CTRL) = HW_POWER_CTRL__POLARITY_VBUSVALID; | ||
49 | else | ||
50 | __REG_SET(HW_POWER_CTRL) = HW_POWER_CTRL__POLARITY_VBUSVALID; | ||
51 | __REG_SET(HW_POWER_CTRL) = HW_POWER_CTRL__ENIRQ_VBUS_VALID; | ||
52 | imx233_enable_interrupt(INT_SRC_VDD5V, true); | ||
29 | } | 53 | } |
30 | 54 | ||
31 | void power_off(void) | 55 | void power_off(void) |