summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c')
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
index 10d96fd59c..989fb1550b 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/power-nano2g.c
@@ -61,11 +61,21 @@ void usb_charging_maxcurrent_change(int maxcurrent)
61 61
62unsigned int power_input_status(void) 62unsigned int power_input_status(void)
63{ 63{
64 return (PDAT14 & 8) ? POWER_INPUT_NONE : POWER_INPUT_MAIN_CHARGER; 64 /* This checks if USB Vbus is present. */
65 if (!(PDAT14 & 0x8)) return POWER_INPUT_USB_CHARGER;
66
67 /* If USB Vbus is not present, check if we have a positive power balance
68 regardless. This would indicate FireWire charging. Note that this will
69 drop to POWER_INPUT_NONE if FireWire isn't able to supply enough current
70 for device operation, e.g. during disk spinup. */
71 if (PDAT11 & 0x20) return POWER_INPUT_NONE;
72
73 /* Looks like we have FireWire power. */
74 return POWER_INPUT_MAIN_CHARGER;
65} 75}
66 76
67bool charging_state(void) 77bool charging_state(void)
68{ 78{
69 return (PDAT11 & 0x10) ? false : true; 79 return (PDAT11 & 0x10) ? 0 : 1;
70} 80}
71#endif /* CONFIG_CHARGING */ 81#endif /* CONFIG_CHARGING */