summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-11-03 23:57:24 +0000
committerJens Arnold <amiconn@rockbox.org>2007-11-03 23:57:24 +0000
commit015f6286a8db3fb79d155cf33698ededf219d32e (patch)
tree2d6bce1fa42719e947ac8034012a8fe0e7627e20 /firmware/target
parent33acc662569ab01e0770b85a6b32c57ed340c351 (diff)
downloadrockbox-015f6286a8db3fb79d155cf33698ededf219d32e.zip
rockbox-015f6286a8db3fb79d155cf33698ededf219d32e.tar.gz
rockbox-015f6286a8db3fb79d155cf33698ededf219d32e.tar.bz2
rockbox-015f6286a8db3fb79d155cf33698ededf219d32e.tar.xz
Finally: HDD power control for all PP502x iPods (4th gen Grayscale, Color, Minis, Video). * Wait a short time after powering on the HDD on all disk based targets, as that seems like a good idea. Shorten the excessive wait on initial power on.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15444 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/arm/ipod/power-ipod.c26
-rw-r--r--firmware/target/arm/iriver/h10/power-h10.c5
2 files changed, 22 insertions, 9 deletions
diff --git a/firmware/target/arm/ipod/power-ipod.c b/firmware/target/arm/ipod/power-ipod.c
index 37ef418..ae663d1 100644
--- a/firmware/target/arm/ipod/power-ipod.c
+++ b/firmware/target/arm/ipod/power-ipod.c
@@ -63,9 +63,19 @@ void ide_power_enable(bool on)
GPIOC_OUTPUT_VAL &= ~0x40;
else
GPIOC_OUTPUT_VAL |= 0x40;
-#else
- /* We do nothing on other iPods yet */
- (void)on;
+#elif defined(IPOD_4G) || defined(IPOD_COLOR) \
+ || defined(IPOD_MINI) || defined(IPOD_MINI2G)
+ if (on)
+ GPIO_CLEAR_BITWISE(GPIOJ_OUTPUT_VAL, 0x04);
+ else
+ GPIO_SET_BITWISE(GPIOJ_OUTPUT_VAL, 0x04);
+#elif defined(IPOD_VIDEO)
+ if (on)
+ GPO32_VAL &= ~0x40000000;
+ else
+ GPO32_VAL |= 0x40000000;
+#else /* Nano */
+ (void)on; /* Do nothing. */
#endif
}
@@ -73,9 +83,13 @@ bool ide_powered(void)
{
#if defined(IPOD_1G2G) || defined(IPOD_3G)
return !(GPIOC_OUTPUT_VAL & 0x40);
-#else
- /* pretend we are always powered - we don't turn it off on the ipod */
- return true;
+#elif defined(IPOD_4G) || defined(IPOD_COLOR) \
+ || defined(IPOD_MINI) || defined(IPOD_MINI2G)
+ return !(GPIOJ_OUTPUT_VAL & 0x04);
+#elif defined(IPOD_VIDEO)
+ return !(GPO32_VAL & 0x40000000);
+#else /* Nano */
+ return true; /* Pretend we are always powered */
#endif
}
diff --git a/firmware/target/arm/iriver/h10/power-h10.c b/firmware/target/arm/iriver/h10/power-h10.c
index 9cbdb50..7f3fb40 100644
--- a/firmware/target/arm/iriver/h10/power-h10.c
+++ b/firmware/target/arm/iriver/h10/power-h10.c
@@ -60,10 +60,9 @@ bool charger_inserted(void)
void ide_power_enable(bool on)
{
if(on){
- GPIOF_OUTPUT_VAL &=~ 0x1;
- sleep(1);
+ GPIO_CLEAR_BITWISE(GPIOF_OUTPUT_VAL, 0x01);
} else {
- GPIOF_OUTPUT_VAL |= 0x1;
+ GPIO_SET_BITWISE(GPIOF_OUTPUT_VAL, 0x01);
}
}