summaryrefslogtreecommitdiffstats
path: root/firmware/export/storage.h
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2009-07-17 22:28:49 +0000
committerFrank Gevaerts <frank@gevaerts.be>2009-07-17 22:28:49 +0000
commitc0a5a67387c4eec3db3bad4da77ba5126faf03c4 (patch)
treed7e61f6287c5fcdce903489b6b72d474225b98a7 /firmware/export/storage.h
parentbb3b57f64594ba517e06add4cfeff72b2b06e65b (diff)
downloadrockbox-c0a5a67387c4eec3db3bad4da77ba5126faf03c4.tar.gz
rockbox-c0a5a67387c4eec3db3bad4da77ba5126faf03c4.zip
Commit FS#9545, storage cleanup and multi-driver support
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21933 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export/storage.h')
-rw-r--r--firmware/export/storage.h270
1 files changed, 132 insertions, 138 deletions
diff --git a/firmware/export/storage.h b/firmware/export/storage.h
index 47d8abda52..dbcc7a69ab 100644
--- a/firmware/export/storage.h
+++ b/firmware/export/storage.h
@@ -23,7 +23,7 @@
#define __STORAGE_H__
#include <stdbool.h>
-#include "config.h" /* for HAVE_MULTIVOLUME or not */
+#include "config.h" /* for HAVE_MULTIDRIVE or not */
#include "mv.h"
#if (CONFIG_STORAGE & STORAGE_SD)
@@ -51,154 +51,147 @@ struct storage_info
char *revision;
};
-#ifndef SIMULATOR
- #ifndef CONFIG_STORAGE_MULTI
- /* storage_spindown, storage_sleep and storage_spin are passed as
- * pointers, which doesn't work with argument-macros.
- */
- #if (CONFIG_STORAGE & STORAGE_ATA)
- #define storage_spindown ata_spindown
- #define storage_sleep ata_sleep
- #define storage_spin ata_spin
-
- #define storage_enable(on) ata_enable(on)
- #define storage_sleepnow() ata_sleepnow()
- #define storage_disk_is_active() ata_disk_is_active()
- #define storage_soft_reset() ata_soft_reset()
- #define storage_init() ata_init()
- #define storage_close() ata_close()
- #define storage_read_sectors(drive, start, count, buf) ata_read_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_write_sectors(drive, start, count, buf) ata_write_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_last_disk_activity() ata_last_disk_activity()
- #define storage_spinup_time() ata_spinup_time()
- #define storage_get_identify() ata_get_identify()
-
- #ifdef STORAGE_GET_INFO
- #define storage_get_info(drive, info) ata_get_info(IF_MV2(drive,) info)
- #endif
- #ifdef HAVE_HOTSWAP
- #define storage_removable(drive) ata_removable(IF_MV(drive))
- #define storage_present(drive) ata_present(IF_MV(drive))
- #endif
- #elif (CONFIG_STORAGE & STORAGE_SD)
- #define storage_spindown sd_spindown
- #define storage_sleep sd_sleep
- #define storage_spin sd_spin
-
- #define storage_enable(on) sd_enable(on)
- #define storage_sleepnow() sd_sleepnow()
- #define storage_disk_is_active() 0
- #define storage_soft_reset() (void)0
- #define storage_init() sd_init()
- #define storage_close() sd_close()
- #define storage_read_sectors(drive, start, count, buf) sd_read_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_write_sectors(drive, start, count, buf) sd_write_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_last_disk_activity() sd_last_disk_activity()
- #define storage_spinup_time() 0
- #define storage_get_identify() sd_get_identify()
-
- #ifdef STORAGE_GET_INFO
- #define storage_get_info(drive, info) sd_get_info(IF_MV2(drive,) info)
- #endif
- #ifdef HAVE_HOTSWAP
- #define storage_removable(drive) sd_removable(IF_MV(drive))
- #define storage_present(drive) sd_present(IF_MV(drive))
- #endif
- #elif (CONFIG_STORAGE & STORAGE_MMC)
- #define storage_spindown mmc_spindown
- #define storage_sleep mmc_sleep
- #define storage_spin mmc_spin
-
- #define storage_enable(on) mmc_enable(on)
- #define storage_sleepnow() mmc_sleepnow()
- #define storage_disk_is_active() mmc_disk_is_active()
- #define storage_soft_reset() (void)0
- #define storage_init() mmc_init()
- #define storage_close() mmc_close()
- #define storage_read_sectors(drive, start, count, buf) mmc_read_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_write_sectors(drive, start, count, buf) mmc_write_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_last_disk_activity() mmc_last_disk_activity()
- #define storage_spinup_time() 0
- #define storage_get_identify() mmc_get_identify()
-
- #ifdef STORAGE_GET_INFO
- #define storage_get_info(drive, info) mmc_get_info(IF_MV2(drive,) info)
- #endif
- #ifdef HAVE_HOTSWAP
- #define storage_removable(drive) mmc_removable(IF_MV(drive))
- #define storage_present(drive) mmc_present(IF_MV(drive))
- #endif
- #elif (CONFIG_STORAGE & STORAGE_NAND)
- #define storage_spindown nand_spindown
- #define storage_sleep nand_sleep
- #define storage_spin nand_spin
-
- #define storage_enable(on) (void)0
- #define storage_sleepnow() nand_sleepnow()
- #define storage_disk_is_active() 0
- #define storage_soft_reset() (void)0
- #define storage_init() nand_init()
- #define storage_close() nand_close()
- #define storage_read_sectors(drive, start, count, buf) nand_read_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_write_sectors(drive, start, count, buf) nand_write_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_last_disk_activity() nand_last_disk_activity()
- #define storage_spinup_time() 0
- #define storage_get_identify() nand_get_identify()
-
- #ifdef STORAGE_GET_INFO
- #define storage_get_info(drive, info) nand_get_info(IF_MV2(drive,) info)
- #endif
- #ifdef HAVE_HOTSWAP
- #define storage_removable(drive) nand_removable(IF_MV(drive))
- #define storage_present(drive) nand_present(IF_MV(drive))
- #endif
- #elif (CONFIG_STORAGE & STORAGE_RAMDISK)
- #define storage_spindown ramdisk_spindown
- #define storage_sleep ramdisk_sleep
- #define storage_spin ramdisk_spin
-
- #define storage_enable(on) (void)0
- #define storage_sleepnow() ramdisk_sleepnow()
- #define storage_disk_is_active() 0
- #define storage_soft_reset() (void)0
- #define storage_init() ramdisk_init()
- #define storage_close() ramdisk_close()
- #define storage_read_sectors(drive, start, count, buf) ramdisk_read_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_write_sectors(drive, start, count, buf) ramdisk_write_sectors(IF_MV2(drive,) start, count, buf)
- #define storage_last_disk_activity() ramdisk_last_disk_activity()
- #define storage_spinup_time() 0
- #define storage_get_identify() ramdisk_get_identify()
-
- #ifdef STORAGE_GET_INFO
- #define storage_get_info(drive, info) ramdisk_get_info(IF_MV2(drive,) info)
- #endif
- #ifdef HAVE_HOTSWAP
- #define storage_removable(drive) ramdisk_removable(IF_MV(drive))
- #define storage_present(drive) ramdisk_present(IF_MV(drive))
- #endif
- #else
- //#error No storage driver!
- #endif
- #else /* NOT CONFIG_STORAGE_MULTI */
-
- /* TODO : implement multi-driver here */
- #error Multi-driver storage not implemented yet
-
- #endif /* NOT CONFIG_STORAGE_MULTI */
-#else /*NOT SIMULATOR */
+#if !defined(SIMULATOR) && !defined(CONFIG_STORAGE_MULTI)
+/* storage_spindown, storage_sleep and storage_spin are passed as
+ * pointers, which doesn't work with argument-macros.
+ */
+ #define storage_num_drives() NUM_DRIVES
+ #if (CONFIG_STORAGE & STORAGE_ATA)
+ #define storage_spindown ata_spindown
+ #define storage_sleep ata_sleep
+ #define storage_spin ata_spin
+
+ #define storage_enable(on) ata_enable(on)
+ #define storage_sleepnow() ata_sleepnow()
+ #define storage_disk_is_active() ata_disk_is_active()
+ #define storage_soft_reset() ata_soft_reset()
+ #define storage_init() ata_init()
+ #define storage_close() ata_close()
+ #define storage_read_sectors(drive, start, count, buf) ata_read_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_write_sectors(drive, start, count, buf) ata_write_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_last_disk_activity() ata_last_disk_activity()
+ #define storage_spinup_time() ata_spinup_time()
+ #define storage_get_identify() ata_get_identify()
+
+ #ifdef STORAGE_GET_INFO
+ #define storage_get_info(drive, info) ata_get_info(IF_MD2(drive,) info)
+ #endif
+ #ifdef HAVE_HOTSWAP
+ #define storage_removable(drive) ata_removable(IF_MD(drive))
+ #define storage_present(drive) ata_present(IF_MD(drive))
+ #endif
+ #elif (CONFIG_STORAGE & STORAGE_SD)
+ #define storage_spindown sd_spindown
+ #define storage_sleep sd_sleep
+ #define storage_spin sd_spin
+
+ #define storage_enable(on) sd_enable(on)
+ #define storage_sleepnow() sd_sleepnow()
+ #define storage_disk_is_active() 0
+ #define storage_soft_reset() (void)0
+ #define storage_init() sd_init()
+ #define storage_read_sectors(drive, start, count, buf) sd_read_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_write_sectors(drive, start, count, buf) sd_write_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_last_disk_activity() sd_last_disk_activity()
+ #define storage_spinup_time() 0
+ #define storage_get_identify() sd_get_identify()
+
+ #ifdef STORAGE_GET_INFO
+ #define storage_get_info(drive, info) sd_get_info(IF_MD2(drive,) info)
+ #endif
+ #ifdef HAVE_HOTSWAP
+ #define storage_removable(drive) sd_removable(IF_MD(drive))
+ #define storage_present(drive) sd_present(IF_MD(drive))
+ #endif
+ #elif (CONFIG_STORAGE & STORAGE_MMC)
+ #define storage_spindown mmc_spindown
+ #define storage_sleep mmc_sleep
+ #define storage_spin mmc_spin
+
+ #define storage_enable(on) mmc_enable(on)
+ #define storage_sleepnow() mmc_sleepnow()
+ #define storage_disk_is_active() mmc_disk_is_active()
+ #define storage_soft_reset() (void)0
+ #define storage_init() mmc_init()
+ #define storage_read_sectors(drive, start, count, buf) mmc_read_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_write_sectors(drive, start, count, buf) mmc_write_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_last_disk_activity() mmc_last_disk_activity()
+ #define storage_spinup_time() 0
+ #define storage_get_identify() mmc_get_identify()
+
+ #ifdef STORAGE_GET_INFO
+ #define storage_get_info(drive, info) mmc_get_info(IF_MD2(drive,) info)
+ #endif
+ #ifdef HAVE_HOTSWAP
+ #define storage_removable(drive) mmc_removable(IF_MD(drive))
+ #define storage_present(drive) mmc_present(IF_MD(drive))
+ #endif
+ #elif (CONFIG_STORAGE & STORAGE_NAND)
+ #define storage_spindown nand_spindown
+ #define storage_sleep nand_sleep
+ #define storage_spin nand_spin
+
+ #define storage_enable(on) (void)0
+ #define storage_sleepnow() nand_sleepnow()
+ #define storage_disk_is_active() 0
+ #define storage_soft_reset() (void)0
+ #define storage_init() nand_init()
+ #define storage_read_sectors(drive, start, count, buf) nand_read_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_write_sectors(drive, start, count, buf) nand_write_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_last_disk_activity() nand_last_disk_activity()
+ #define storage_spinup_time() 0
+ #define storage_get_identify() nand_get_identify()
+
+ #ifdef STORAGE_GET_INFO
+ #define storage_get_info(drive, info) nand_get_info(IF_MD2(drive,) info)
+ #endif
+ #ifdef HAVE_HOTSWAP
+ #define storage_removable(drive) nand_removable(IF_MD(drive))
+ #define storage_present(drive) nand_present(IF_MD(drive))
+ #endif
+ #elif (CONFIG_STORAGE & STORAGE_RAMDISK)
+ #define storage_spindown ramdisk_spindown
+ #define storage_sleep ramdisk_sleep
+ #define storage_spin ramdisk_spin
+
+ #define storage_enable(on) (void)0
+ #define storage_sleepnow() ramdisk_sleepnow()
+ #define storage_disk_is_active() 0
+ #define storage_soft_reset() (void)0
+ #define storage_init() ramdisk_init()
+ #define storage_read_sectors(drive, start, count, buf) ramdisk_read_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_write_sectors(drive, start, count, buf) ramdisk_write_sectors(IF_MD2(drive,) start, count, buf)
+ #define storage_last_disk_activity() ramdisk_last_disk_activity()
+ #define storage_spinup_time() 0
+ #define storage_get_identify() ramdisk_get_identify()
+
+ #ifdef STORAGE_GET_INFO
+ #define storage_get_info(drive, info) ramdisk_get_info(IF_MD2(drive,) info)
+ #endif
+ #ifdef HAVE_HOTSWAP
+ #define storage_removable(drive) ramdisk_removable(IF_MD(drive))
+ #define storage_present(drive) ramdisk_present(IF_MD(drive))
+ #endif
+ #else
+ //#error No storage driver!
+ #endif
+#else /* NOT CONFIG_STORAGE_MULTI and NOT SIMULATOR*/
+
+/* Simulator and multi-driver use normal functions */
+
void storage_enable(bool on);
void storage_sleep(void);
void storage_sleepnow(void);
bool storage_disk_is_active(void);
int storage_soft_reset(void);
int storage_init(void);
-void storage_close(void);
int storage_read_sectors(int drive, unsigned long start, int count, void* buf);
int storage_write_sectors(int drive, unsigned long start, int count, const void* buf);
void storage_spin(void);
void storage_spindown(int seconds);
long storage_last_disk_activity(void);
int storage_spinup_time(void);
+int storage_num_drives(void);
#ifdef STORAGE_GET_INFO
void storage_get_info(int drive, struct storage_info *info);
#endif
@@ -206,5 +199,6 @@ void storage_get_info(int drive, struct storage_info *info);
bool storage_removable(int drive);
bool storage_present(int drive);
#endif
-#endif/*NOT SIMULATOR */
+
+#endif /* NOT CONFIG_STORAGE_MULTI and NOT SIMULATOR*/
#endif