summaryrefslogtreecommitdiff
path: root/firmware/target/arm/usb-fw-pp5002.c
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2007-08-01 22:44:02 +0000
committerJens Arnold <amiconn@rockbox.org>2007-08-01 22:44:02 +0000
commitcb896cdd04ae04cbf9cb59990c920e579ea6887a (patch)
tree27fa4213a221e5b3827321d25d1c8c0d8dd06419 /firmware/target/arm/usb-fw-pp5002.c
parenta049fa7c82cf155314c7e141f72ac8f8a7cf92fb (diff)
Firewire detection with reboot into diskmode for all iPods that support it (all but Nano and Video). * Hack for compiling iPod G3 removed. * Code cleanup.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14131 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/usb-fw-pp5002.c')
-rw-r--r--firmware/target/arm/usb-fw-pp5002.c70
1 files changed, 70 insertions, 0 deletions
diff --git a/firmware/target/arm/usb-fw-pp5002.c b/firmware/target/arm/usb-fw-pp5002.c
new file mode 100644
index 0000000000..e64d4f8f81
--- /dev/null
+++ b/firmware/target/arm/usb-fw-pp5002.c
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2007 by Jens Arnold
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "config.h"
+#include "ata.h"
+#include "cpu.h"
+#include "string.h"
+#include "system.h"
+#include "usb.h"
+#include "usb-target.h"
+
+void usb_init_device(void)
+{
+ /* TODO: add USB init for iPod 3rd gen */
+
+#if defined(IPOD_1G2G) || defined(IPOD_3G)
+ /* GPIO C bit 7 is firewire detect */
+ GPIOC_ENABLE |= 0x80;
+ GPIOC_OUTPUT_EN &= ~0x80;
+#endif
+}
+
+void usb_enable(bool on)
+{
+ /* This device specific code will eventually give way to proper USB
+ handling, which should be the same for all PP5002 targets. */
+ if (on)
+ {
+#ifdef IPOD_ARCH
+ /* For iPod, we can only do one thing with USB mode atm - reboot
+ into the flash-based disk-mode. This does not return. */
+
+ ata_sleepnow(); /* Immediately spindown the disk. */
+ sleep(HZ*2);
+
+ memcpy((void *)0x40017f00, "diskmodehotstuff\1", 17);
+
+ system_reboot(); /* Reboot */
+#endif
+ }
+}
+
+bool usb_detect(void)
+{
+#if defined(IPOD_1G2G) || defined(IPOD_3G)
+ /* GPIO C bit 7 is firewire detect */
+ if (!(GPIOC_INPUT_VAL & 0x80))
+ return true;
+#endif
+
+ /* TODO: add USB detection for iPod 3rd gen */
+
+ return false;
+}