From 77f19f75eb3661b3e3966da20effa2631ed380f1 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Fri, 7 Feb 2014 18:12:31 +0100 Subject: 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 --- firmware/export/config.h | 2 +- firmware/export/config/android.h | 4 ++++ firmware/export/config/nokian8xx.h | 4 ++++ firmware/export/config/nokian900.h | 4 ++++ firmware/export/config/pandora.h | 4 ++++ firmware/export/config/samsungypr0.h | 4 ++++ firmware/export/config/samsungypr1.h | 4 ++++ firmware/export/config/sdlapp.h | 4 ++++ firmware/export/config/sim.h | 2 +- firmware/export/storage.h | 32 +++++++++++++++++++++++++------- 10 files changed, 55 insertions(+), 9 deletions(-) (limited to 'firmware/export') 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 @@ #define STORAGE_SD 0x04 #define STORAGE_NAND 0x08 #define STORAGE_RAMDISK 0x10 +#define STORAGE_HOSTFS 0x20 /* meant for APPLICATION targets (implicit for SIMULATOR) */ /* CONFIG_TUNER (note these are combineable bit-flags) */ #define S1A0903X01 0x01 /* Samsung */ @@ -574,7 +575,6 @@ Lyre prototype 1 */ #ifdef APPLICATION #define CONFIG_CPU 0 -#define CONFIG_STORAGE 0 #endif /* 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 @@ #define HAVE_HOTKEY #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ #define HAVE_HOTKEY #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ #define HAVE_HOTKEY #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ #define HAVE_HOTKEY #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ /* This folder resides in the ReadOnly CRAMFS. It is binded to /mnt/media0/.rockbox */ #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ /* This mount point resides in the rootfs, binded to /mnt/media0/.rockbox */ #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ #define HAVE_HOTKEY #define BOOTDIR "/.rockbox" + +/* No special storage */ +#define CONFIG_STORAGE STORAGE_HOSTFS +#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 @@ #undef HAVE_HOTSWAP_STORAGE_AS_MAIN #undef HAVE_STORAGE_FLUSH -#undef CONFIG_STORAGE +#undef CONFIG_NAND #if defined(CONFIG_CHARGING) && CONFIG_CHARGING > CHARGING_MONITOR #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 @@ #include "config.h" /* for HAVE_MULTIDRIVE or not */ #include "mv.h" +#if (CONFIG_STORAGE & STORAGE_HOSTFS) || defined(SIMULATOR) +#define HAVE_HOSTFS +#endif + #if (CONFIG_STORAGE & STORAGE_SD) #include "sd.h" #endif @@ -51,19 +55,20 @@ struct storage_info char *revision; }; -#if (CONFIG_STORAGE == 0) +#ifdef HAVE_HOSTFS +#include "hostfs.h" /* stubs for the plugin api */ static inline void stub_storage_sleep(void) {} static inline void stub_storage_spin(void) {} static inline void stub_storage_spindown(int timeout) { (void)timeout; } #endif -#if defined(CONFIG_STORAGE) && !defined(CONFIG_STORAGE_MULTI) +#if !defined(CONFIG_STORAGE_MULTI) || defined(HAVE_HOSTFS) /* 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 == 0) /* application */ + #if defined(HAVE_HOSTFS) #define STORAGE_FUNCTION(NAME) (stub_## NAME) #define storage_spindown stub_storage_spindown #define storage_sleep stub_storage_sleep @@ -73,8 +78,21 @@ static inline void stub_storage_spindown(int timeout) { (void)timeout; } #define storage_sleepnow() #define storage_disk_is_active() 0 #define storage_soft_reset() - #define storage_init() - #define storage_close() + #define storage_init() hostfs_init() + #ifdef HAVE_STORAGE_FLUSH + #define storage_flush() hostfs_flush() + #endif + #define storage_last_disk_activity() (-1) + #define storage_spinup_time() 0 + #define storage_get_identify() (NULL) /* not actually called anywher */ + + #ifdef STORAGE_GET_INFO + #error storage_get_info not implemented + #endif + #ifdef HAVE_HOTSWAP + #define storage_removable(drive) hostfs_removable(IF_MD(drive)) + #define storage_present(drive) hostfs_present(IF_MD(drive)) + #endif #elif (CONFIG_STORAGE & STORAGE_ATA) #define STORAGE_FUNCTION(NAME) (ata_## NAME) #define storage_spindown ata_spindown @@ -205,9 +223,9 @@ static inline void stub_storage_spindown(int timeout) { (void)timeout; } #else //#error No storage driver! #endif -#else /* NOT CONFIG_STORAGE_MULTI and PLATFORM_NATIVE*/ +#else /* CONFIG_STORAGE_MULTI || !HAVE_HOSTFS */ -/* Simulator and multi-driver use normal functions */ +/* Multi-driver use normal functions */ void storage_enable(bool on); void storage_sleep(void); -- cgit v1.2.3