summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx233/power-imx233.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx233/power-imx233.c')
-rw-r--r--firmware/target/arm/imx233/power-imx233.c24
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
28void 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
27void power_init(void) 43void 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
31void power_off(void) 55void power_off(void)