diff options
author | Jens Arnold <amiconn@rockbox.org> | 2007-08-01 22:44:02 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2007-08-01 22:44:02 +0000 |
commit | cb896cdd04ae04cbf9cb59990c920e579ea6887a (patch) | |
tree | 27fa4213a221e5b3827321d25d1c8c0d8dd06419 /firmware/target/arm/usb-fw-pp5002.c | |
parent | a049fa7c82cf155314c7e141f72ac8f8a7cf92fb (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.c | 70 |
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; +} |