summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-03-07 13:19:34 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-03-07 13:19:34 +0000
commitc5c8883cc84318f1ea77aa99da931e1d967b8024 (patch)
tree248334238528a14b7ab4043278f26616ba1668be
parent322cb1411582f37b1e8347eff2276afd7d3c8198 (diff)
iAudio X5 target-specific ATA driver code
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8947 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/SOURCES1
-rwxr-xr-xfirmware/target/coldfire/iaudio/x5/ata-target.h26
-rwxr-xr-xfirmware/target/coldfire/iaudio/x5/ata-x5.c64
3 files changed, 91 insertions, 0 deletions
diff --git a/firmware/SOURCES b/firmware/SOURCES
index f09c7d1aab..0aa6224bf7 100644
--- a/firmware/SOURCES
+++ b/firmware/SOURCES
@@ -209,5 +209,6 @@ target/coldfire/iaudio/x5/power-x5.c
target/coldfire/iaudio/x5/lcd-x5.c
target/coldfire/iaudio/x5/pcf50606-x5.c
target/coldfire/iaudio/x5/adc-x5.c
+target/coldfire/iaudio/x5/ata-x5.c
#endif
#endif
diff --git a/firmware/target/coldfire/iaudio/x5/ata-target.h b/firmware/target/coldfire/iaudio/x5/ata-target.h
new file mode 100755
index 0000000000..1801a7d376
--- /dev/null
+++ b/firmware/target/coldfire/iaudio/x5/ata-target.h
@@ -0,0 +1,26 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2006 by Linus Nielsen Feltzing
+ *
+ * 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.
+ *
+ ****************************************************************************/
+#ifndef ATA_TARGET_H
+#define ATA_TARGET_H
+
+void ata_reset(void);
+void ata_device_init(void);
+bool ata_is_coldstart(void);
+
+#endif
diff --git a/firmware/target/coldfire/iaudio/x5/ata-x5.c b/firmware/target/coldfire/iaudio/x5/ata-x5.c
new file mode 100755
index 0000000000..21c088288a
--- /dev/null
+++ b/firmware/target/coldfire/iaudio/x5/ata-x5.c
@@ -0,0 +1,64 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2006 by Linus Nielsen Feltzing
+ *
+ * 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 "cpu.h"
+#include <stdbool.h>
+#include "kernel.h"
+#include "system.h"
+#include "power.h"
+#include "pcf50606.h"
+
+void ata_reset(void)
+{
+ and_l(~0x40000000, &GPIO_OUT);
+ sleep(1); /* > 25us */
+ or_l(0x40000000, &GPIO_OUT);
+ sleep(1); /* > 2ms */
+}
+
+void ata_enable(bool on)
+{
+ if(on)
+ and_l(~0x00000800, &GPIO1_OUT);
+ else
+ or_l(0x00000800, &GPIO1_OUT);
+}
+
+bool ata_is_coldstart(void)
+{
+ return true; /* TODO */
+}
+
+void ata_device_init(void)
+{
+ /* ATA reset */
+ or_l(0x40000000, &GPIO_OUT);
+ or_l(0x40000000, &GPIO_ENABLE);
+ or_l(0x40000000, &GPIO_FUNCTION);
+
+ /* ATA enable */
+ or_l(0x00000800, &GPIO1_OUT);
+ or_l(0x00000800, &GPIO1_ENABLE);
+ or_l(0x00000800, &GPIO1_FUNCTION);
+
+ /* USB enable */
+ and_l(~0x00000008, &GPIO1_OUT);
+ or_l(0x00000008, &GPIO1_ENABLE);
+ or_l(0x00000008, &GPIO1_FUNCTION);
+}