diff options
author | Thomas Martitz <kugel@rockbox.org> | 2014-02-07 18:12:31 +0100 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2014-02-23 20:23:51 +0100 |
commit | 77f19f75eb3661b3e3966da20effa2631ed380f1 (patch) | |
tree | 1e29f482e6de115cf6cdbf9958cba3d7ce8dc6af /firmware/export | |
parent | 706e6b7a75339cadc7b8a856a2eace68f89bb168 (diff) | |
download | rockbox-77f19f75eb3661b3e3966da20effa2631ed380f1.tar.gz rockbox-77f19f75eb3661b3e3966da20effa2631ed380f1.zip |
storage: Add STORAGE_HOSTFS
CONFIG_STORAGE & STORAGE_HOSTFS allows to use parts of the storage_* API to be
compiled for application targets without compiling storage.c or performing
actually raw storage access. This is primarily to enable application targets to
implement HAVE_MULTIVOMULE/HAVE_HOTSWAP (in a later commit).
SIMULATOR uses the same mechanism without explicitely defining STORAGE_HOSTFS
(how to add a bit to an existing preprocessor token?).
Change-Id: Ib3f8ee0d5231e2ed21ff00842d51e32bc4fc7292
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/config.h | 2 | ||||
-rw-r--r-- | firmware/export/config/android.h | 4 | ||||
-rw-r--r-- | firmware/export/config/nokian8xx.h | 4 | ||||
-rw-r--r-- | firmware/export/config/nokian900.h | 4 | ||||
-rw-r--r-- | firmware/export/config/pandora.h | 4 | ||||
-rw-r--r-- | firmware/export/config/samsungypr0.h | 4 | ||||
-rw-r--r-- | firmware/export/config/samsungypr1.h | 4 | ||||
-rw-r--r-- | firmware/export/config/sdlapp.h | 4 | ||||
-rw-r--r-- | firmware/export/config/sim.h | 2 | ||||
-rw-r--r-- | firmware/export/storage.h | 32 |
10 files changed, 55 insertions, 9 deletions
diff --git a/firmware/export/config.h b/firmware/export/config.h index d2e1f6b830..f896fd68b5 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h | |||
@@ -32,6 +32,7 @@ | |||
32 | #define STORAGE_SD 0x04 | 32 | #define STORAGE_SD 0x04 |
33 | #define STORAGE_NAND 0x08 | 33 | #define STORAGE_NAND 0x08 |
34 | #define STORAGE_RAMDISK 0x10 | 34 | #define STORAGE_RAMDISK 0x10 |
35 | #define STORAGE_HOSTFS 0x20 /* meant for APPLICATION targets (implicit for SIMULATOR) */ | ||
35 | 36 | ||
36 | /* CONFIG_TUNER (note these are combineable bit-flags) */ | 37 | /* CONFIG_TUNER (note these are combineable bit-flags) */ |
37 | #define S1A0903X01 0x01 /* Samsung */ | 38 | #define S1A0903X01 0x01 /* Samsung */ |
@@ -574,7 +575,6 @@ Lyre prototype 1 */ | |||
574 | 575 | ||
575 | #ifdef APPLICATION | 576 | #ifdef APPLICATION |
576 | #define CONFIG_CPU 0 | 577 | #define CONFIG_CPU 0 |
577 | #define CONFIG_STORAGE 0 | ||
578 | #endif | 578 | #endif |
579 | 579 | ||
580 | /* keep this include after the target configs */ | 580 | /* keep this include after the target configs */ |
diff --git a/firmware/export/config/android.h b/firmware/export/config/android.h index 2bc11c3051..2aee700f08 100644 --- a/firmware/export/config/android.h +++ b/firmware/export/config/android.h | |||
@@ -103,3 +103,7 @@ | |||
103 | #define HAVE_HOTKEY | 103 | #define HAVE_HOTKEY |
104 | 104 | ||
105 | #define BOOTDIR "/.rockbox" | 105 | #define BOOTDIR "/.rockbox" |
106 | |||
107 | /* No special storage */ | ||
108 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
109 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/nokian8xx.h b/firmware/export/config/nokian8xx.h index c8d87838e7..566683c760 100644 --- a/firmware/export/config/nokian8xx.h +++ b/firmware/export/config/nokian8xx.h | |||
@@ -94,3 +94,7 @@ | |||
94 | #define HAVE_HOTKEY | 94 | #define HAVE_HOTKEY |
95 | 95 | ||
96 | #define BOOTDIR "/.rockbox" | 96 | #define BOOTDIR "/.rockbox" |
97 | |||
98 | /* No special storage */ | ||
99 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
100 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/nokian900.h b/firmware/export/config/nokian900.h index 9c1c1a4dff..c6d6eb8205 100644 --- a/firmware/export/config/nokian900.h +++ b/firmware/export/config/nokian900.h | |||
@@ -92,3 +92,7 @@ | |||
92 | #define HAVE_HOTKEY | 92 | #define HAVE_HOTKEY |
93 | 93 | ||
94 | #define BOOTDIR "/.rockbox" | 94 | #define BOOTDIR "/.rockbox" |
95 | |||
96 | /* No special storage */ | ||
97 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
98 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/pandora.h b/firmware/export/config/pandora.h index 40320f5382..bd11441dd7 100644 --- a/firmware/export/config/pandora.h +++ b/firmware/export/config/pandora.h | |||
@@ -94,3 +94,7 @@ | |||
94 | #define HAVE_HOTKEY | 94 | #define HAVE_HOTKEY |
95 | 95 | ||
96 | #define BOOTDIR "/.rockbox" | 96 | #define BOOTDIR "/.rockbox" |
97 | |||
98 | /* No special storage */ | ||
99 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
100 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/samsungypr0.h b/firmware/export/config/samsungypr0.h index c1266f4732..361c9697c5 100644 --- a/firmware/export/config/samsungypr0.h +++ b/firmware/export/config/samsungypr0.h | |||
@@ -160,3 +160,7 @@ | |||
160 | 160 | ||
161 | /* This folder resides in the ReadOnly CRAMFS. It is binded to /mnt/media0/.rockbox */ | 161 | /* This folder resides in the ReadOnly CRAMFS. It is binded to /mnt/media0/.rockbox */ |
162 | #define BOOTDIR "/.rockbox" | 162 | #define BOOTDIR "/.rockbox" |
163 | |||
164 | /* No special storage */ | ||
165 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
166 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/samsungypr1.h b/firmware/export/config/samsungypr1.h index a590dd553d..1aaf85dcb5 100644 --- a/firmware/export/config/samsungypr1.h +++ b/firmware/export/config/samsungypr1.h | |||
@@ -150,3 +150,7 @@ | |||
150 | 150 | ||
151 | /* This mount point resides in the rootfs, binded to /mnt/media0/.rockbox */ | 151 | /* This mount point resides in the rootfs, binded to /mnt/media0/.rockbox */ |
152 | #define BOOTDIR "/.rockbox" | 152 | #define BOOTDIR "/.rockbox" |
153 | |||
154 | /* No special storage */ | ||
155 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
156 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/sdlapp.h b/firmware/export/config/sdlapp.h index 856244c6ab..cd973fcf73 100644 --- a/firmware/export/config/sdlapp.h +++ b/firmware/export/config/sdlapp.h | |||
@@ -94,3 +94,7 @@ | |||
94 | #define HAVE_HOTKEY | 94 | #define HAVE_HOTKEY |
95 | 95 | ||
96 | #define BOOTDIR "/.rockbox" | 96 | #define BOOTDIR "/.rockbox" |
97 | |||
98 | /* No special storage */ | ||
99 | #define CONFIG_STORAGE STORAGE_HOSTFS | ||
100 | #define HAVE_STORAGE_FLUSH | ||
diff --git a/firmware/export/config/sim.h b/firmware/export/config/sim.h index 1b69f6d15c..cec500e75d 100644 --- a/firmware/export/config/sim.h +++ b/firmware/export/config/sim.h | |||
@@ -35,7 +35,7 @@ | |||
35 | #undef HAVE_HOTSWAP_STORAGE_AS_MAIN | 35 | #undef HAVE_HOTSWAP_STORAGE_AS_MAIN |
36 | #undef HAVE_STORAGE_FLUSH | 36 | #undef HAVE_STORAGE_FLUSH |
37 | 37 | ||
38 | #undef CONFIG_STORAGE | 38 | #undef CONFIG_NAND |
39 | 39 | ||
40 | #if defined(CONFIG_CHARGING) && CONFIG_CHARGING > CHARGING_MONITOR | 40 | #if defined(CONFIG_CHARGING) && CONFIG_CHARGING > CHARGING_MONITOR |
41 | #undef CONFIG_CHARGING | 41 | #undef CONFIG_CHARGING |
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 */ |
56 | static inline void stub_storage_sleep(void) {} | 61 | static inline void stub_storage_sleep(void) {} |
57 | static inline void stub_storage_spin(void) {} | 62 | static inline void stub_storage_spin(void) {} |
58 | static inline void stub_storage_spindown(int timeout) { (void)timeout; } | 63 | static 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 | ||
212 | void storage_enable(bool on); | 230 | void storage_enable(bool on); |
213 | void storage_sleep(void); | 231 | void storage_sleep(void); |