summaryrefslogtreecommitdiff
path: root/firmware/drivers/ramdisk.c
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2008-11-03 20:52:27 +0000
committerFrank Gevaerts <frank@gevaerts.be>2008-11-03 20:52:27 +0000
commit214cd81f080436fddb1994ed712f1000e143dfd7 (patch)
tree98e8deb0db4160385c4b73291031e61c4bc0c516 /firmware/drivers/ramdisk.c
parent65d9ca8a6f557847cf87ffe37e5b1ef48b1fa11b (diff)
downloadrockbox-214cd81f080436fddb1994ed712f1000e143dfd7.zip
rockbox-214cd81f080436fddb1994ed712f1000e143dfd7.tar.gz
rockbox-214cd81f080436fddb1994ed712f1000e143dfd7.tar.bz2
rockbox-214cd81f080436fddb1994ed712f1000e143dfd7.tar.xz
Add ramdisk storage driver. It will be useful for developing multi-driver storage
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18993 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/ramdisk.c')
-rw-r--r--firmware/drivers/ramdisk.c102
1 files changed, 102 insertions, 0 deletions
diff --git a/firmware/drivers/ramdisk.c b/firmware/drivers/ramdisk.c
new file mode 100644
index 0000000..da0a12f
--- /dev/null
+++ b/firmware/drivers/ramdisk.c
@@ -0,0 +1,102 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id: ramdisk.c 18965 2008-11-01 17:33:21Z gevaerts $
+ *
+ * Copyright (C) 2008 Frank Gevaerts
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include <stdbool.h>
+#include <string.h>
+
+#include "storage.h"
+
+#define SECTOR_SIZE 512
+#define NUM_SECTORS 16384
+
+extern unsigned char ramdisk[SECTOR_SIZE * NUM_SECTORS];
+
+long last_disk_activity = -1;
+
+int ramdisk_read_sectors(IF_MV2(int drive,)
+ unsigned long start,
+ int count,
+ void* buf)
+{
+ if(start+count>=NUM_SECTORS)
+ {
+ return -1;
+ }
+ memcpy(buf,&ramdisk[start*SECTOR_SIZE],count*SECTOR_SIZE);
+ return 0;
+}
+
+int ramdisk_write_sectors(IF_MV2(int drive,)
+ unsigned long start,
+ int count,
+ const void* buf)
+{
+ if(start+count>=NUM_SECTORS)
+ {
+ return -1;
+ }
+ memcpy(&ramdisk[start*SECTOR_SIZE],buf,count*SECTOR_SIZE);
+ return 0;
+}
+
+int ramdisk_init(void)
+{
+ return 0;
+}
+
+long ramdisk_last_disk_activity(void)
+{
+ return last_disk_activity;
+}
+
+void ramdisk_sleep(void)
+{
+}
+
+void ramdisk_spin(void)
+{
+}
+
+void ramdisk_sleepnow(void)
+{
+}
+
+void ramdisk_spindown(int seconds)
+{
+ (void)seconds;
+}
+#ifdef STORAGE_GET_INFO
+void ramdisk_get_info(struct storage_info *info)
+{
+ /* firmware version */
+ info->revision="0.00";
+
+ /* vendor field, need better name? */
+ info->vendor="Rockbox";
+ /* model field, need better name? */
+ info->product="Ramdisk";
+
+ /* blocks count */
+ info->num_sectors=NUM_SECTORS;
+ info->sector_size=SECTOR_SIZE;
+}
+#endif
+