summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2014-02-07 18:12:31 +0100
committerThomas Martitz <kugel@rockbox.org>2014-02-23 20:23:51 +0100
commit77f19f75eb3661b3e3966da20effa2631ed380f1 (patch)
tree1e29f482e6de115cf6cdbf9958cba3d7ce8dc6af
parent706e6b7a75339cadc7b8a856a2eace68f89bb168 (diff)
downloadrockbox-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
-rw-r--r--apps/debug_menu.c2
-rw-r--r--firmware/export/config.h2
-rw-r--r--firmware/export/config/android.h4
-rw-r--r--firmware/export/config/nokian8xx.h4
-rw-r--r--firmware/export/config/nokian900.h4
-rw-r--r--firmware/export/config/pandora.h4
-rw-r--r--firmware/export/config/samsungypr0.h4
-rw-r--r--firmware/export/config/samsungypr1.h4
-rw-r--r--firmware/export/config/sdlapp.h4
-rw-r--r--firmware/export/config/sim.h2
-rw-r--r--firmware/export/storage.h32
-rw-r--r--firmware/target/hosted/android/system-android.c12
-rw-r--r--firmware/target/hosted/samsungypr/ypr0/system-ypr0.c14
-rw-r--r--firmware/target/hosted/samsungypr/ypr1/system-ypr1.c14
-rw-r--r--firmware/target/hosted/sdl/button-sdl.c1
-rw-r--r--firmware/target/hosted/sdl/system-sdl.c18
-rw-r--r--uisimulator/common/stubs.c7
17 files changed, 122 insertions, 10 deletions
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index 1007c97414..bc2a73fc9c 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -75,7 +75,7 @@
75#include "tuner.h" 75#include "tuner.h"
76#include "radio.h" 76#include "radio.h"
77#endif 77#endif
78#endif 78#endif /* CONFIG_PLATFORM & PLATFORM_NATIVE */
79#include "power.h" 79#include "power.h"
80 80
81#if (defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1)) && defined(CONFIG_TUNER) 81#if (defined(SAMSUNG_YPR0) || defined(SAMSUNG_YPR1)) && defined(CONFIG_TUNER)
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 */
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);
diff --git a/firmware/target/hosted/android/system-android.c b/firmware/target/hosted/android/system-android.c
index d96edcd637..313bfbcd62 100644
--- a/firmware/target/hosted/android/system-android.c
+++ b/firmware/target/hosted/android/system-android.c
@@ -23,6 +23,7 @@
23#include <setjmp.h> 23#include <setjmp.h>
24#include <jni.h> 24#include <jni.h>
25#include <pthread.h> 25#include <pthread.h>
26#include <unistd.h>
26#include "config.h" 27#include "config.h"
27#include "system.h" 28#include "system.h"
28#include "power.h" 29#include "power.h"
@@ -66,6 +67,17 @@ void system_init(void)
66 telephony_init_device(); 67 telephony_init_device();
67} 68}
68 69
70void hostfs_init(void)
71{
72 /* stub */
73}
74
75int hostfs_flush(void)
76{
77 sync();
78 return 0;
79}
80
69JNIEXPORT jint JNICALL 81JNIEXPORT jint JNICALL
70JNI_OnLoad(JavaVM *vm, void* reserved) 82JNI_OnLoad(JavaVM *vm, void* reserved)
71{ 83{
diff --git a/firmware/target/hosted/samsungypr/ypr0/system-ypr0.c b/firmware/target/hosted/samsungypr/ypr0/system-ypr0.c
index 6232df4a22..477b71c6a2 100644
--- a/firmware/target/hosted/samsungypr/ypr0/system-ypr0.c
+++ b/firmware/target/hosted/samsungypr/ypr0/system-ypr0.c
@@ -21,9 +21,11 @@
21#include <stdlib.h> 21#include <stdlib.h>
22#include <string.h> 22#include <string.h>
23#include <inttypes.h> 23#include <inttypes.h>
24#include <unistd.h>
24#include "system.h" 25#include "system.h"
25#include "panic.h" 26#include "panic.h"
26#include "debug.h" 27#include "debug.h"
28#include "hostfs.h"
27 29
28#include "ascodec.h" 30#include "ascodec.h"
29#include "gpio-ypr.h" 31#include "gpio-ypr.h"
@@ -59,6 +61,18 @@ void system_exception_wait(void)
59 system_reboot(); 61 system_reboot();
60} 62}
61 63
64void hostfs_init(void)
65{
66 /* stub */
67}
68
69int hostfs_flush(void)
70{
71 sync();
72
73 return 0;
74}
75
62#ifdef HAVE_ADJUSTABLE_CPU_FREQ 76#ifdef HAVE_ADJUSTABLE_CPU_FREQ
63#include <stdio.h> 77#include <stdio.h>
64#include "file.h" 78#include "file.h"
diff --git a/firmware/target/hosted/samsungypr/ypr1/system-ypr1.c b/firmware/target/hosted/samsungypr/ypr1/system-ypr1.c
index 9aa49786f1..7efa73b273 100644
--- a/firmware/target/hosted/samsungypr/ypr1/system-ypr1.c
+++ b/firmware/target/hosted/samsungypr/ypr1/system-ypr1.c
@@ -21,9 +21,11 @@
21#include <stdlib.h> 21#include <stdlib.h>
22#include <string.h> 22#include <string.h>
23#include <inttypes.h> 23#include <inttypes.h>
24#include <unistd.h>
24#include "system.h" 25#include "system.h"
25#include "panic.h" 26#include "panic.h"
26#include "debug.h" 27#include "debug.h"
28#include "hostfs.h"
27 29
28#include "gpio-ypr.h" 30#include "gpio-ypr.h"
29#include "pmu-ypr1.h" 31#include "pmu-ypr1.h"
@@ -65,3 +67,15 @@ void system_exception_wait(void)
65{ 67{
66 system_reboot(); 68 system_reboot();
67} 69}
70
71void hostfs_init()
72{
73 /* stub */
74}
75
76int hostfs_flush(void)
77{
78 sync();
79
80 return 0;
81}
diff --git a/firmware/target/hosted/sdl/button-sdl.c b/firmware/target/hosted/sdl/button-sdl.c
index 91338bb0d5..1ed07c153c 100644
--- a/firmware/target/hosted/sdl/button-sdl.c
+++ b/firmware/target/hosted/sdl/button-sdl.c
@@ -36,6 +36,7 @@
36#include "buttonmap.h" 36#include "buttonmap.h"
37#include "debug.h" 37#include "debug.h"
38#include "powermgmt.h" 38#include "powermgmt.h"
39#include "storage.h"
39 40
40#ifdef HAVE_TOUCHSCREEN 41#ifdef HAVE_TOUCHSCREEN
41#include "touchscreen.h" 42#include "touchscreen.h"
diff --git a/firmware/target/hosted/sdl/system-sdl.c b/firmware/target/hosted/sdl/system-sdl.c
index 572d6d570a..25e77c22a2 100644
--- a/firmware/target/hosted/sdl/system-sdl.c
+++ b/firmware/target/hosted/sdl/system-sdl.c
@@ -24,6 +24,9 @@
24#include <stdlib.h> 24#include <stdlib.h>
25#include <string.h> 25#include <string.h>
26#include <inttypes.h> 26#include <inttypes.h>
27#ifdef __unix__
28#include <unistd.h>
29#endif
27#include "system.h" 30#include "system.h"
28#include "kernel.h" 31#include "kernel.h"
29#include "thread-sdl.h" 32#include "thread-sdl.h"
@@ -286,6 +289,21 @@ void system_exception_wait(void)
286 system_reboot(); 289 system_reboot();
287} 290}
288 291
292void hostfs_init(void)
293{
294 /* stub */
295}
296
297#ifdef HAVE_STORAGE_FLUSH
298int hostfs_flush(void)
299{
300#ifdef __unix__
301 sync();
302#endif
303 return 0;
304}
305#endif /* HAVE_STORAGE_FLUSH */
306
289void sys_handle_argv(int argc, char *argv[]) 307void sys_handle_argv(int argc, char *argv[])
290{ 308{
291 if (argc >= 1) 309 if (argc >= 1)
diff --git a/uisimulator/common/stubs.c b/uisimulator/common/stubs.c
index 18f60ce6b3..480c2a90d8 100644
--- a/uisimulator/common/stubs.c
+++ b/uisimulator/common/stubs.c
@@ -395,3 +395,10 @@ void touchpad_enable_device(bool en)
395 (void)en; 395 (void)en;
396} 396}
397#endif 397#endif
398
399#if (CONFIG_STORAGE & STORAGE_MMC)
400bool mmc_touched(void)
401{
402 return false;
403}
404#endif