summaryrefslogtreecommitdiffstats
path: root/firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c')
-rw-r--r--firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c b/firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c
index 12948f581d..2e0fe87883 100644
--- a/firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c
+++ b/firmware/target/arm/s5l8702/ipod6g/power-ipod6g.c
@@ -61,8 +61,17 @@ bool ide_powered()
#ifdef HAVE_USB_CHARGING_ENABLE
void usb_charging_maxcurrent_change(int maxcurrent)
{
- bool on = (maxcurrent >= 500);
- GPIOCMD = 0xb060e | (on ? 1 : 0);
+ bool suspend_charging = (maxcurrent < 100);
+ bool fast_charging = (maxcurrent >= 500);
+
+ /* This GPIO is connected to the LTC4066's SUSP pin */
+ /* Setting it high prevents any power being drawn over USB */
+ /* which supports USB suspend */
+ GPIOCMD = 0xb070e | (suspend_charging ? 1 : 0);
+
+ /* This GPIO is connected to the LTC4066's HPWR pin */
+ /* Setting it low limits current to 100mA, setting it high allows 500mA */
+ GPIOCMD = 0xb060e | (fast_charging ? 1 : 0);
}
#endif