diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-10-20 22:39:39 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-10-21 01:23:14 +0200 |
commit | 46416c619d586c45647ddc76045b0ed253733d57 (patch) | |
tree | 3d6ad82a2923bede48a0109537497bbf3bfd3274 /firmware | |
parent | 187017bad1c5192c50019a15952f7dd9f36eb3e5 (diff) | |
download | rockbox-46416c619d586c45647ddc76045b0ed253733d57.tar.gz rockbox-46416c619d586c45647ddc76045b0ed253733d57.zip |
imx233: fix usb_detect() to be consistent with vbus detection
The STMP3700 has unreliable vbusvalid irq so we need to use
vdd5gtvddio. Therefore, using the vbusvalid bit produces
inconsistent results between events and detect. Fix that
by making power handle all the usb detect stuff.
Change-Id: Ic521b2f6677602e184fe46352c5359f4b4ba8d56
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/imx233/power-imx233.c | 9 | ||||
-rw-r--r-- | firmware/target/arm/imx233/power-imx233.h | 1 | ||||
-rw-r--r-- | firmware/target/arm/imx233/usb-imx233.c | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/firmware/target/arm/imx233/power-imx233.c b/firmware/target/arm/imx233/power-imx233.c index 9972a21e69..fa2f8488cf 100644 --- a/firmware/target/arm/imx233/power-imx233.c +++ b/firmware/target/arm/imx233/power-imx233.c | |||
@@ -84,6 +84,15 @@ static struct current_step_bit_t g_4p2_charge_limit_bits[] = | |||
84 | #define USE_VBUSVALID | 84 | #define USE_VBUSVALID |
85 | #endif | 85 | #endif |
86 | 86 | ||
87 | bool imx233_power_usb_detect(void) | ||
88 | { | ||
89 | #ifdef USE_VBUSVALID | ||
90 | return BF_RD(POWER_STS, VBUSVALID); | ||
91 | #else | ||
92 | return BF_RD(POWER_STS, VDD5V_GT_VDDIO); | ||
93 | #endif | ||
94 | } | ||
95 | |||
87 | void INT_VDD5V(void) | 96 | void INT_VDD5V(void) |
88 | { | 97 | { |
89 | #ifdef USE_VBUSVALID | 98 | #ifdef USE_VBUSVALID |
diff --git a/firmware/target/arm/imx233/power-imx233.h b/firmware/target/arm/imx233/power-imx233.h index d33ca20333..59ffcd37a2 100644 --- a/firmware/target/arm/imx233/power-imx233.h +++ b/firmware/target/arm/imx233/power-imx233.h | |||
@@ -82,6 +82,7 @@ void imx233_power_init(void); | |||
82 | void imx233_power_set_charge_current(unsigned current); /* in mA */ | 82 | void imx233_power_set_charge_current(unsigned current); /* in mA */ |
83 | void imx233_power_set_stop_current(unsigned current); /* in mA */ | 83 | void imx233_power_set_stop_current(unsigned current); /* in mA */ |
84 | void imx233_power_enable_batadj(bool enable); | 84 | void imx233_power_enable_batadj(bool enable); |
85 | bool imx233_power_usb_detect(void); | ||
85 | 86 | ||
86 | enum imx233_regulator_t | 87 | enum imx233_regulator_t |
87 | { | 88 | { |
diff --git a/firmware/target/arm/imx233/usb-imx233.c b/firmware/target/arm/imx233/usb-imx233.c index a4099ceecf..05e412c77a 100644 --- a/firmware/target/arm/imx233/usb-imx233.c +++ b/firmware/target/arm/imx233/usb-imx233.c | |||
@@ -61,7 +61,7 @@ void usb_init_device(void) | |||
61 | 61 | ||
62 | int usb_detect(void) | 62 | int usb_detect(void) |
63 | { | 63 | { |
64 | return BF_RD(POWER_STS, VBUSVALID) ? USB_INSERTED : USB_EXTRACTED; | 64 | return imx233_power_usb_detect() ? USB_INSERTED : USB_EXTRACTED; |
65 | } | 65 | } |
66 | 66 | ||
67 | void usb_enable(bool on) | 67 | void usb_enable(bool on) |