summaryrefslogtreecommitdiff
path: root/firmware/export/storage.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/export/storage.h')
-rw-r--r--firmware/export/storage.h32
1 files changed, 25 insertions, 7 deletions
diff --git a/firmware/export/storage.h b/firmware/export/storage.h
index 1793e385df..8e7281d523 100644
--- a/firmware/export/storage.h
+++ b/firmware/export/storage.h
@@ -26,6 +26,10 @@
26#include "config.h" /* for HAVE_MULTIDRIVE or not */ 26#include "config.h" /* for HAVE_MULTIDRIVE or not */
27#include "mv.h" 27#include "mv.h"
28 28
29#if (CONFIG_STORAGE & STORAGE_HOSTFS) || defined(SIMULATOR)
30#define HAVE_HOSTFS
31#endif
32
29#if (CONFIG_STORAGE & STORAGE_SD) 33#if (CONFIG_STORAGE & STORAGE_SD)
30#include "sd.h" 34#include "sd.h"
31#endif 35#endif
@@ -51,19 +55,20 @@ struct storage_info
51 char *revision; 55 char *revision;
52}; 56};
53 57
54#if (CONFIG_STORAGE == 0) 58#ifdef HAVE_HOSTFS
59#include "hostfs.h"
55/* stubs for the plugin api */ 60/* stubs for the plugin api */
56static inline void stub_storage_sleep(void) {} 61static inline void stub_storage_sleep(void) {}
57static inline void stub_storage_spin(void) {} 62static inline void stub_storage_spin(void) {}
58static inline void stub_storage_spindown(int timeout) { (void)timeout; } 63static inline void stub_storage_spindown(int timeout) { (void)timeout; }
59#endif 64#endif
60 65
61#if defined(CONFIG_STORAGE) && !defined(CONFIG_STORAGE_MULTI) 66#if !defined(CONFIG_STORAGE_MULTI) || defined(HAVE_HOSTFS)
62/* storage_spindown, storage_sleep and storage_spin are passed as 67/* storage_spindown, storage_sleep and storage_spin are passed as
63 * pointers, which doesn't work with argument-macros. 68 * pointers, which doesn't work with argument-macros.
64 */ 69 */
65 #define storage_num_drives() NUM_DRIVES 70 #define storage_num_drives() NUM_DRIVES
66 #if (CONFIG_STORAGE == 0) /* application */ 71 #if defined(HAVE_HOSTFS)
67 #define STORAGE_FUNCTION(NAME) (stub_## NAME) 72 #define STORAGE_FUNCTION(NAME) (stub_## NAME)
68 #define storage_spindown stub_storage_spindown 73 #define storage_spindown stub_storage_spindown
69 #define storage_sleep stub_storage_sleep 74 #define storage_sleep stub_storage_sleep
@@ -73,8 +78,21 @@ static inline void stub_storage_spindown(int timeout) { (void)timeout; }
73 #define storage_sleepnow() 78 #define storage_sleepnow()
74 #define storage_disk_is_active() 0 79 #define storage_disk_is_active() 0
75 #define storage_soft_reset() 80 #define storage_soft_reset()
76 #define storage_init() 81 #define storage_init() hostfs_init()
77 #define storage_close() 82 #ifdef HAVE_STORAGE_FLUSH
83 #define storage_flush() hostfs_flush()
84 #endif
85 #define storage_last_disk_activity() (-1)
86 #define storage_spinup_time() 0
87 #define storage_get_identify() (NULL) /* not actually called anywher */
88
89 #ifdef STORAGE_GET_INFO
90 #error storage_get_info not implemented
91 #endif
92 #ifdef HAVE_HOTSWAP
93 #define storage_removable(drive) hostfs_removable(IF_MD(drive))
94 #define storage_present(drive) hostfs_present(IF_MD(drive))
95 #endif
78 #elif (CONFIG_STORAGE & STORAGE_ATA) 96 #elif (CONFIG_STORAGE & STORAGE_ATA)
79 #define STORAGE_FUNCTION(NAME) (ata_## NAME) 97 #define STORAGE_FUNCTION(NAME) (ata_## NAME)
80 #define storage_spindown ata_spindown 98 #define storage_spindown ata_spindown
@@ -205,9 +223,9 @@ static inline void stub_storage_spindown(int timeout) { (void)timeout; }
205 #else 223 #else
206 //#error No storage driver! 224 //#error No storage driver!
207 #endif 225 #endif
208#else /* NOT CONFIG_STORAGE_MULTI and PLATFORM_NATIVE*/ 226#else /* CONFIG_STORAGE_MULTI || !HAVE_HOSTFS */
209 227
210/* Simulator and multi-driver use normal functions */ 228/* Multi-driver use normal functions */
211 229
212void storage_enable(bool on); 230void storage_enable(bool on);
213void storage_sleep(void); 231void storage_sleep(void);