diff options
-rw-r--r-- | firmware/export/config/ipod4g.h | 4 | ||||
-rw-r--r-- | firmware/export/config/ipodcolor.h | 4 | ||||
-rw-r--r-- | firmware/export/config/ipodmini1g.h | 5 | ||||
-rw-r--r-- | firmware/export/config/ipodmini2g.h | 4 | ||||
-rw-r--r-- | firmware/export/config/ipodnano1g.h | 4 | ||||
-rw-r--r-- | firmware/export/config/ipodvideo.h | 4 | ||||
-rw-r--r-- | firmware/target/arm/ipod/power-ipod.c | 62 |
7 files changed, 87 insertions, 0 deletions
diff --git a/firmware/export/config/ipod4g.h b/firmware/export/config/ipod4g.h index b9251e72fe..2a08a710e7 100644 --- a/firmware/export/config/ipod4g.h +++ b/firmware/export/config/ipod4g.h | |||
@@ -146,6 +146,10 @@ | |||
146 | /* define this if the unit can be powered or charged via USB */ | 146 | /* define this if the unit can be powered or charged via USB */ |
147 | #define HAVE_USB_POWER | 147 | #define HAVE_USB_POWER |
148 | 148 | ||
149 | /* define this if the unit can have USB charging disabled by user - | ||
150 | * if USB/MAIN power is discernable and hardware doesn't compel charging */ | ||
151 | #define HAVE_USB_CHARGING_ENABLE | ||
152 | |||
149 | /* define current usage levels */ | 153 | /* define current usage levels */ |
150 | #define CURRENT_NORMAL 100 /* MP3: ~10.5h out of 1100mAh battery */ | 154 | #define CURRENT_NORMAL 100 /* MP3: ~10.5h out of 1100mAh battery */ |
151 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ | 155 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ |
diff --git a/firmware/export/config/ipodcolor.h b/firmware/export/config/ipodcolor.h index 5448cb76b7..2b4276257f 100644 --- a/firmware/export/config/ipodcolor.h +++ b/firmware/export/config/ipodcolor.h | |||
@@ -130,6 +130,10 @@ | |||
130 | /* define this if the unit can be powered or charged via USB */ | 130 | /* define this if the unit can be powered or charged via USB */ |
131 | #define HAVE_USB_POWER | 131 | #define HAVE_USB_POWER |
132 | 132 | ||
133 | /* define this if the unit can have USB charging disabled by user - | ||
134 | * if USB/MAIN power is discernable and hardware doesn't compel charging */ | ||
135 | #define HAVE_USB_CHARGING_ENABLE | ||
136 | |||
133 | /* define current usage levels */ | 137 | /* define current usage levels */ |
134 | #define CURRENT_NORMAL 69 /* ~10h (700mAh), see FS#9072 */ | 138 | #define CURRENT_NORMAL 69 /* ~10h (700mAh), see FS#9072 */ |
135 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ | 139 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ |
diff --git a/firmware/export/config/ipodmini1g.h b/firmware/export/config/ipodmini1g.h index 2f261a8886..81529a5de5 100644 --- a/firmware/export/config/ipodmini1g.h +++ b/firmware/export/config/ipodmini1g.h | |||
@@ -143,6 +143,11 @@ | |||
143 | /* define this if the unit can be powered or charged via USB */ | 143 | /* define this if the unit can be powered or charged via USB */ |
144 | #define HAVE_USB_POWER | 144 | #define HAVE_USB_POWER |
145 | 145 | ||
146 | /* define this if the unit can have USB charging disabled by user - | ||
147 | :Qa | ||
148 | * if USB/MAIN power is discernable and hardware doesn't compel charging */ | ||
149 | #define HAVE_USB_CHARGING_ENABLE | ||
150 | |||
146 | /* Define this if you have a PortalPlayer PP5020 */ | 151 | /* Define this if you have a PortalPlayer PP5020 */ |
147 | #define CONFIG_CPU PP5020 | 152 | #define CONFIG_CPU PP5020 |
148 | 153 | ||
diff --git a/firmware/export/config/ipodmini2g.h b/firmware/export/config/ipodmini2g.h index b9b4f48555..0b6e7636c0 100644 --- a/firmware/export/config/ipodmini2g.h +++ b/firmware/export/config/ipodmini2g.h | |||
@@ -150,6 +150,10 @@ | |||
150 | /* define this if the unit can be powered or charged via USB */ | 150 | /* define this if the unit can be powered or charged via USB */ |
151 | #define HAVE_USB_POWER | 151 | #define HAVE_USB_POWER |
152 | 152 | ||
153 | /* define this if the unit can have USB charging disabled by user - | ||
154 | * if USB/MAIN power is discernable and hardware doesn't compel charging */ | ||
155 | #define HAVE_USB_CHARGING_ENABLE | ||
156 | |||
153 | /* Define this if you have a PortalPlayer PP5022 */ | 157 | /* Define this if you have a PortalPlayer PP5022 */ |
154 | #define CONFIG_CPU PP5022 | 158 | #define CONFIG_CPU PP5022 |
155 | 159 | ||
diff --git a/firmware/export/config/ipodnano1g.h b/firmware/export/config/ipodnano1g.h index 24ed973249..f60f3c975a 100644 --- a/firmware/export/config/ipodnano1g.h +++ b/firmware/export/config/ipodnano1g.h | |||
@@ -131,6 +131,10 @@ | |||
131 | /* define this if the unit can be powered or charged via USB */ | 131 | /* define this if the unit can be powered or charged via USB */ |
132 | #define HAVE_USB_POWER | 132 | #define HAVE_USB_POWER |
133 | 133 | ||
134 | /* define this if the unit can have USB charging disabled by user - | ||
135 | * if USB/MAIN power is discernable and hardware doesn't compel charging */ | ||
136 | #define HAVE_USB_CHARGING_ENABLE | ||
137 | |||
134 | #define CURRENT_NORMAL 32 /* MP3: ~9h playback out of 300mAh battery */ | 138 | #define CURRENT_NORMAL 32 /* MP3: ~9h playback out of 300mAh battery */ |
135 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ | 139 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ |
136 | #if defined(HAVE_RECORDING) | 140 | #if defined(HAVE_RECORDING) |
diff --git a/firmware/export/config/ipodvideo.h b/firmware/export/config/ipodvideo.h index bad7195c32..54c604f38a 100644 --- a/firmware/export/config/ipodvideo.h +++ b/firmware/export/config/ipodvideo.h | |||
@@ -154,6 +154,10 @@ | |||
154 | /* define this if the unit can be powered or charged via USB */ | 154 | /* define this if the unit can be powered or charged via USB */ |
155 | #define HAVE_USB_POWER | 155 | #define HAVE_USB_POWER |
156 | 156 | ||
157 | /* define this if the unit can have USB charging disabled by user - | ||
158 | * if USB/MAIN power is discernable and hardware doesn't compel charging */ | ||
159 | #define HAVE_USB_CHARGING_ENABLE | ||
160 | |||
157 | /* define current usage levels */ | 161 | /* define current usage levels */ |
158 | #define CURRENT_NORMAL 24 /* 30MHz clock, LCD off, accessory supply on */ | 162 | #define CURRENT_NORMAL 24 /* 30MHz clock, LCD off, accessory supply on */ |
159 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ | 163 | #define CURRENT_BACKLIGHT 20 /* FIXME: this needs adjusting */ |
diff --git a/firmware/target/arm/ipod/power-ipod.c b/firmware/target/arm/ipod/power-ipod.c index 4266aad896..0becedf2cd 100644 --- a/firmware/target/arm/ipod/power-ipod.c +++ b/firmware/target/arm/ipod/power-ipod.c | |||
@@ -182,3 +182,65 @@ void power_off(void) | |||
182 | #endif | 182 | #endif |
183 | #endif | 183 | #endif |
184 | } | 184 | } |
185 | |||
186 | #ifdef HAVE_USB_CHARGING_ENABLE | ||
187 | void usb_charging_maxcurrent_change(int maxcurrent) | ||
188 | { | ||
189 | bool suspend_charging = (maxcurrent < 100); | ||
190 | bool fast_charging = (maxcurrent >= 500); | ||
191 | |||
192 | /* This GPIO is connected to the LTC4066's SUSP pin */ | ||
193 | /* Setting it high prevents any power being drawn over USB */ | ||
194 | /* which supports USB suspend */ | ||
195 | #if defined(IPOD_VIDEO) || defined(IPOD_NANO) | ||
196 | if (suspend_charging) | ||
197 | GPIOL_OUTPUT_VAL |= 4; | ||
198 | else | ||
199 | GPIOL_OUTPUT_VAL &= ~4; | ||
200 | #elif defined(IPOD_MINI2G) | ||
201 | if (suspend_charging) | ||
202 | GPIOJ_OUTPUT_VAL |= 2; | ||
203 | else | ||
204 | GPIOJ_OUTPUT_VAL &= ~2; | ||
205 | #else | ||
206 | if (suspend_charging) | ||
207 | GPO32_VAL |= 0x8000000; | ||
208 | else | ||
209 | GPO32_VAL &= ~0x8000000; | ||
210 | #endif | ||
211 | |||
212 | /* This GPIO is connected to the LTC4066's HPWR pin */ | ||
213 | /* Setting it low limits current to 100mA, setting it high allows 500mA */ | ||
214 | #if defined(IPOD_VIDEO) || defined(IPOD_NANO) | ||
215 | if (fast_charging) | ||
216 | GPIOA_OUTPUT_VAL |= 4; | ||
217 | else | ||
218 | GPIOA_OUTPUT_VAL &= ~4; | ||
219 | #else | ||
220 | if (fast_charging) | ||
221 | GPO32_VAL |= 0x40; | ||
222 | else | ||
223 | GPO32_VAL &= ~0x40; | ||
224 | #endif | ||
225 | |||
226 | /* This GPIO is connected to the LTC4066's CLDIS pin */ | ||
227 | /* Setting it high allows up to 1.5A of current to be drawn */ | ||
228 | /* This doesn't appear to actually be safe even with an AC charger */ | ||
229 | /* so for now it is disabled. It's not known (or maybe doesn't exist) */ | ||
230 | /* on all models. */ | ||
231 | #if 0 | ||
232 | #if defined(IPOD_VIDEO) | ||
233 | if (unlimited_charging) | ||
234 | GPO32_VAL |= 0x10000000; | ||
235 | else | ||
236 | GPO32_VAL &= ~0x10000000; | ||
237 | #elif defined(IPOD_4G) || defined(IPOD_COLOR) | ||
238 | if (unlimited_charging) | ||
239 | GPO32_VAL |= 0x200; | ||
240 | else | ||
241 | GPO32_VAL &= ~0x200; | ||
242 | #endif | ||
243 | /* This might be GPIOD & 40 on 2G */ | ||
244 | #endif | ||
245 | } | ||
246 | #endif /* HAVE_USB_CHARGING_ENABLE */ | ||