Rev 424 | Rev 621 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/**************************************************************************** __________ __ ___.* Open \______ \ ____ ____ | | _\_ |__ _______ ___* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \* \/ \/ \/ \/ \/* $Id$** Copyright (C) 2002 by Alan Korr* Copyright (C) 2008 by Frank Gevaerts** This program is free software; you can redistribute it and/or* modify it under the terms of the GNU General Public License* as published by the Free Software Foundation; either version 2* of the License, or (at your option) any later version.** This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY* KIND, either express or implied.*****************************************************************************/#ifndef __STORAGE_H__#define __STORAGE_H__#include "global.h"#include "mv.h"#define STORAGE_GET_INFO#if (CONFIG_STORAGE & STORAGE_SD)#include "storage_sd.h"#endif#if (CONFIG_STORAGE & STORAGE_MMC)#include "storage_mmc.h"#endif#if (CONFIG_STORAGE & STORAGE_ATA)#include "storage_ata.h"#endif#if (CONFIG_STORAGE & STORAGE_NAND)#include "storage_nand.h"#endif#if (CONFIG_STORAGE & STORAGE_RAMDISK)#include "storage_ramdisk.h"#endifstruct storage_info{unsigned int sector_size;unsigned int num_sectors;char *vendor;char *product;char *revision;void *driverinfo;};#if !defined(CONFIG_STORAGE_MULTI)/* 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 & STORAGE_ATA)#define STORAGE_FUNCTION(NAME) (ata_## NAME)#define storage_spindown ata_spindown#define storage_sleep ata_sleep#define storage_spin ata_spin#define storage_enable(on) ata_enable(on)#define storage_sleepnow() ata_sleepnow()#define storage_disk_is_active() ata_disk_is_active()#define storage_soft_reset() ata_soft_reset()#define storage_init() ata_init()#define storage_close() ata_close()#ifdef HAVE_STORAGE_FLUSH#define storage_flush() (void)0#endif#define storage_last_disk_activity() ata_last_disk_activity()#define storage_get_identify() ata_get_identify()#ifdef HAVE_HOTSWAP#define storage_removable(drive) ata_removable(IF_MD(drive))#define storage_present(drive) ata_present(IF_MD(drive))#endif#elif (CONFIG_STORAGE & STORAGE_SD)#define STORAGE_FUNCTION(NAME) (sd_## NAME)#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()#define storage_disk_is_active() 0#define storage_soft_reset() (void)0#define storage_init() sd_init()#ifdef HAVE_STORAGE_FLUSH#define storage_flush() (void)0#endif#define storage_last_disk_activity() sd_last_disk_activity()#define storage_get_identify() sd_get_identify()#ifdef HAVE_HOTSWAP#define storage_removable(drive) sd_removable(IF_MD(drive))#define storage_present(drive) sd_present(IF_MD(drive))#endif#elif (CONFIG_STORAGE & STORAGE_MMC)#define STORAGE_FUNCTION(NAME) (mmc_## NAME)#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()#define storage_disk_is_active() mmc_disk_is_active()#define storage_soft_reset() (void)0#define storage_init() mmc_init()#ifdef HAVE_STORAGE_FLUSH#define storage_flush() (void)0#endif#define storage_last_disk_activity() mmc_last_disk_activity()#define storage_get_identify() mmc_get_identify()#ifdef HAVE_HOTSWAP#define storage_removable(drive) mmc_removable(IF_MD(drive))#define storage_present(drive) mmc_present(IF_MD(drive))#endif#elif (CONFIG_STORAGE & STORAGE_NAND)#define STORAGE_FUNCTION(NAME) (nand_## NAME)#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()#define storage_disk_is_active() 0#define storage_soft_reset() (void)0#define storage_init() nand_init()#ifdef HAVE_STORAGE_FLUSH#define storage_flush() nand_flush()#endif#define storage_last_disk_activity() nand_last_disk_activity()#define storage_get_identify() nand_get_identify()#ifdef HAVE_HOTSWAP#define storage_removable(drive) nand_removable(IF_MD(drive))#define storage_present(drive) nand_present(IF_MD(drive))#endif#elif (CONFIG_STORAGE & STORAGE_RAMDISK)#define STORAGE_FUNCTION(NAME) (ramdisk_## NAME)#define storage_spindown ramdisk_spindown#define storage_sleep ramdisk_sleep#define storage_spin ramdisk_spin#define storage_enable(on) (void)0#define storage_sleepnow() ramdisk_sleepnow()#define storage_disk_is_active() 0#define storage_soft_reset() (void)0#define storage_init() ramdisk_init()#ifdef HAVE_STORAGE_FLUSH#define storage_flush() (void)0#endif#define storage_last_disk_activity() ramdisk_last_disk_activity()#define storage_get_identify() ramdisk_get_identify()#ifdef HAVE_HOTSWAP#define storage_removable(drive) ramdisk_removable(IF_MD(drive))#define storage_present(drive) ramdisk_present(IF_MD(drive))#endif#else//#error No storage driver!#endif#else /* NOT CONFIG_STORAGE_MULTI *//* Simulator and multi-driver use normal functions */void storage_enable(bool on);void storage_sleep(void);void storage_sleepnow(void);bool storage_disk_is_active(void);int storage_soft_reset(void);int storage_init(void);int storage_flush(void);void storage_spin(void);void storage_spindown(int seconds);long storage_last_disk_activity(void);int storage_num_drives(void);#ifdef HAVE_HOTSWAPbool storage_removable(int drive);bool storage_present(int drive);#endif#endif /* NOT CONFIG_STORAGE_MULTI */int storage_read_sectors(IF_MD2(int drive,) unsigned long start, int count, void* buf);int storage_read_sectors_md(int drive, unsigned long start, int count, void* buf);int storage_write_sectors(IF_MD2(int drive,) unsigned long start, int count, const void* buf);int storage_write_sectors_md(int drive, unsigned long start, int count, const void* buf);#ifdef STORAGE_GET_INFOvoid storage_get_info(int drive, struct storage_info *info);#endif#endif