Revert r21912 : "Storage API : remove undeeded target-specific functions"

After a discussion mixed on mailing list and irc, it was agreed that
more abstraction for plugins is better (so developers don't have to add
a check to HAVE_DISK_STORAGE when writing disk-specific code)

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21923 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Rafaël Carré 2009-07-17 16:34:34 +00:00
parent cf9935d636
commit bdb5974c0e
15 changed files with 97 additions and 29 deletions

View file

@ -284,11 +284,9 @@ static const struct plugin_api rockbox_api = {
fdprintf,
read_line,
settings_parseline,
#ifdef HAVE_DISK_STORAGE
storage_sleep,
storage_spin,
storage_spindown,
#endif
#if USING_STORAGE_CALLBACK
register_storage_idle_func,
unregister_storage_idle_func,

View file

@ -129,12 +129,12 @@ void* plugin_get_buffer(size_t *buffer_size);
#define PLUGIN_MAGIC 0x526F634B /* RocK */
/* increase this every time the api struct changes */
#define PLUGIN_API_VERSION 163
#define PLUGIN_API_VERSION 164
/* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any
new function which are "waiting" at the end of the function table) */
#define PLUGIN_MIN_API_VERSION 163
#define PLUGIN_MIN_API_VERSION 164
/* plugin return codes */
enum plugin_status {
@ -395,11 +395,9 @@ struct plugin_api {
int (*fdprintf)(int fd, const char *fmt, ...) ATTRIBUTE_PRINTF(2, 3);
int (*read_line)(int fd, char* buffer, int buffer_size);
bool (*settings_parseline)(char* line, char** name, char** value);
#ifdef HAVE_DISK_STORAGE
void (*storage_sleep)(void);
void (*storage_spin)(void);
void (*storage_spindown)(int seconds);
#endif
#if USING_STORAGE_CALLBACK
void (*register_storage_idle_func)(storage_idle_notify function);
void (*unregister_storage_idle_func)(storage_idle_notify function, bool run);

View file

@ -173,9 +173,7 @@ void load_settings(void){
draw_message(display, MESSAGE_ERRLOAD, 1);
display->update();
}
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep();
#endif
rb->sleep(HZ);
}

View file

@ -1038,9 +1038,7 @@ int load_and_show(char* filename)
else if(immediate_ata_off)
{
/* running slideshow and time is long enough: power down disk */
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep();
#endif
}
#endif

View file

@ -172,9 +172,7 @@ static inline void disk_buf_buffer(void)
if (!stream_get_window(&sw))
{
disk_buf.state = TSTATE_DATA;
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep();
#endif
break;
}
@ -189,9 +187,7 @@ static inline void disk_buf_buffer(void)
/* Free space is less than one page */
disk_buf.state = TSTATE_DATA;
disk_buf.low_wm = DISK_BUF_LOW_WATERMARK;
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep();
#endif
break;
}
@ -213,9 +209,7 @@ static inline void disk_buf_buffer(void)
{
/* Error or end of stream */
disk_buf.state = TSTATE_EOS;
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep();
#endif
break;
}

View file

@ -681,9 +681,7 @@ int PlayTick(int fd)
#endif
)
{
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep(); /* no point in leaving the disk run til timeout */
#endif
gPlay.bDiskSleep = true;
}

View file

@ -3596,9 +3596,7 @@ int play_file(char* filename)
if (free_space <= 0)
{
filling = false;
#ifdef HAVE_DISK_STORAGE
rb->storage_sleep();
#endif
}
else
{

View file

@ -66,6 +66,19 @@ void sd_parse_csd(tCardInfo *card)
logf("nsac: %d taac: %d r2w: %d", card->nsac, card->taac, card->r2w_factor);
}
void sd_sleep(void)
{
}
void sd_spin(void)
{
}
void sd_spindown(int seconds)
{
(void)seconds;
}
#ifdef STORAGE_GET_INFO
void sd_get_info(IF_MV2(int drive,) struct storage_info *info)
{

View file

@ -28,6 +28,8 @@
struct storage_info;
void mmc_enable(bool on);
void mmc_spindown(int seconds);
void mmc_sleep(void);
void mmc_sleepnow(void);
bool mmc_disk_is_active(void);
int mmc_soft_reset(void);
@ -35,6 +37,7 @@ int mmc_init(void);
void mmc_close(void);
int mmc_read_sectors(IF_MV2(int drive,) unsigned long start, int count, void* buf);
int mmc_write_sectors(IF_MV2(int drive,) unsigned long start, int count, const void* buf);
void mmc_spin(void);
int mmc_spinup_time(void);
#ifdef STORAGE_GET_INFO

View file

@ -28,12 +28,15 @@
struct storage_info;
void nand_enable(bool on);
void nand_spindown(int seconds);
void nand_sleep(void);
bool nand_disk_is_active(void);
int nand_soft_reset(void);
int nand_init(void);
void nand_close(void);
int nand_read_sectors(IF_MV2(int drive,) unsigned long start, int count, void* buf);
int nand_write_sectors(IF_MV2(int drive,) unsigned long start, int count, const void* buf);
void nand_spin(void);
#ifdef STORAGE_GET_INFO
void nand_get_info(IF_MV2(int drive,) struct storage_info *info);

View file

@ -30,12 +30,15 @@
struct storage_info;
void sd_enable(bool on);
void sd_spindown(int seconds);
void sd_sleep(void);
bool sd_disk_is_active(void);
int sd_soft_reset(void);
int sd_init(void);
void sd_close(void);
int sd_read_sectors(IF_MV2(int drive,) unsigned long start, int count, void* buf);
int sd_write_sectors(IF_MV2(int drive,) unsigned long start, int count, const void* buf);
void sd_spin(void);
#ifdef STORAGE_GET_INFO
void sd_get_info(IF_MV2(int drive,) struct storage_info *info);

View file

@ -81,9 +81,9 @@ struct storage_info
#define storage_present(drive) ata_present(IF_MV(drive))
#endif
#elif (CONFIG_STORAGE & STORAGE_SD)
#define storage_spindown(seconds) (void)0
#define storage_sleep() (void)0
#define storage_spin() (void)0
#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()
@ -105,9 +105,9 @@ struct storage_info
#define storage_present(drive) sd_present(IF_MV(drive))
#endif
#elif (CONFIG_STORAGE & STORAGE_MMC)
#define storage_spindown(seconds) (void)0
#define storage_sleep() (void)0
#define storage_spin() (void)0
#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()
@ -129,9 +129,9 @@ struct storage_info
#define storage_present(drive) mmc_present(IF_MV(drive))
#endif
#elif (CONFIG_STORAGE & STORAGE_NAND)
#define storage_spindown(seconds) (void)0
#define storage_sleep() (void)0
#define storage_spin() (void)0
#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()

View file

@ -900,3 +900,16 @@ long nand_last_disk_activity(void)
{
return last_disk_activity;
}
void nand_sleep(void)
{
}
void nand_spin(void)
{
}
void nand_spindown(int seconds)
{
(void)seconds;
}

View file

@ -64,6 +64,29 @@ int nand_write_sectors(IF_MV2(int drive,) unsigned long start, int count,
return 0;
}
void nand_spindown(int seconds)
{
(void)seconds;
}
bool nand_disk_is_active(void)
{
return 0;
}
void nand_sleep(void)
{
}
void nand_spin(void)
{
}
int nand_soft_reset(void)
{
return 0;
}
void nand_enable(bool on)
{
(void)on;

View file

@ -685,6 +685,34 @@ int nand_write_sectors(IF_MV2(int drive,) unsigned long start, int count, const
return -1;
}
void nand_spindown(int seconds)
{
/* null */
(void)seconds;
}
bool nand_disk_is_active(void)
{
/* null */
return false;
}
void nand_sleep(void)
{
/* null */
}
void nand_spin(void)
{
/* null */
}
int nand_soft_reset(void)
{
/* null */
return 0;
}
void nand_enable(bool on)
{
/* null - flash controller is enabled/disabled as needed. */