omap3530/beagle_drivers/wb/api/include/cyanmisc.h
author arunabha
Wed, 03 Mar 2010 13:10:32 +0000
changeset 27 117faf51deac
permissions -rw-r--r--
Bug 1996 - Contribution for West Bridge Astoria Symbian Storage Driver this storage driver is for the West Bridge Astoria chipset. This device has a USB, SD and processor port for communication with a baseband processor. In our port, we connected this device DVK to the Beagleboard through the SPI interface of the OMAP3. After driver installation, the Symbian OS can see an external device or D: drive represented by the SD card. In this driver, the USB interface is not used directly, though this may be the subject of future contributions. The appropriate way to test the driver is to access the external volume and do file read and write to it, pretty much the same way you would test a thumb drive on your PC

/*  Cypress West Bridge API header file (cyanmisc.h)
 ## Version for backward compatibility with previous Antioch SDK releases.
 ## ===========================
 ##
 ##  Copyright Cypress Semiconductor Corporation, 2006-2009,
 ##  All Rights Reserved
 ##  UNPUBLISHED, LICENSED SOFTWARE.
 ##
 ##  CONFIDENTIAL AND PROPRIETARY INFORMATION
 ##  WHICH IS THE PROPERTY OF CYPRESS.
 ##
 ##  Use of this file is governed
 ##  by the license agreement included in the file
 ##
 ##     <install>/license/license.txt
 ##
 ##  where <install> is the Cypress software
 ##  installation root directory path.
 ##
 ## ===========================
*/

#ifndef _INCLUDED_CYANMISC_H_
#define _INCLUDED_CYANMISC_H_

#include "cyantypes.h"
#include <cyasmisc.h>
#include "cyanmedia.h"
#include "cyas_cplus_start.h"

#define CY_AN_LEAVE_STANDBY_DELAY_CLOCK		(CY_AS_LEAVE_STANDBY_DELAY_CLOCK)
#define CY_AN_RESET_DELAY_CLOCK			(CY_AS_RESET_DELAY_CLOCK)

#define CY_AN_LEAVE_STANDBY_DELAY_CRYSTAL	(CY_AS_LEAVE_STANDBY_DELAY_CRYSTAL)
#define CY_AN_RESET_DELAY_CRYSTAL		(CY_AS_RESET_DELAY_CRYSTAL)

/* Defines to convert the old CyAn names to the new
 * CyAs names
 */
typedef CyAsDeviceHandle	    CyAnDeviceHandle;

#define CyAnDeviceDackAck	    CyAsDeviceDackAck
#define CyAnDeviceDackEob	    CyAsDeviceDackEob
typedef CyAsDeviceDackMode CyAnDeviceDackMode;

typedef CyAsDeviceConfig CyAnDeviceConfig;

#define CyAnResourceUSB		    CyAsBusUSB
#define CyAnResourceSDIO_MMC	    CyAsBus_1
#define CyAnResourceNand	    CyAsBus_0
typedef CyAsResourceType CyAnResourceType;

#define CyAnResetSoft		    CyAsResetSoft
#define CyAnResetHard		    CyAsResetHard
typedef CyAsResetType CyAnResetType;
typedef CyAsFunctCBType CyAnFunctCBType;
typedef CyAsFunctionCallback CyAnFunctionCallback;

#define CyAnEventMiscInitialized    CyAsEventMiscInitialized
#define CyAnEventMiscAwake	    CyAsEventMiscAwake
#define CyAnEventMiscHeartBeat      CyAsEventMiscHeartBeat
#define CyAnEventMiscWakeup         CyAsEventMiscWakeup
#define CyAnEventMiscDeviceMismatch CyAsEventMiscDeviceMismatch
typedef CyAsMiscEventType CyAnMiscEventType;
typedef CyAsMiscEventCallback CyAnMiscEventCallback;

#define CyAnMiscGpio_0		    CyAsMiscGpio_0
#define CyAnMiscGpio_1		    CyAsMiscGpio_1
#define CyAnMiscGpio_Nand_CE	    CyAsMiscGpio_Nand_CE
#define CyAnMiscGpio_Nand_CE2	    CyAsMiscGpio_Nand_CE2
#define CyAnMiscGpio_Nand_WP	    CyAsMiscGpio_Nand_WP
#define CyAnMiscGpio_Nand_CLE	    CyAsMiscGpio_Nand_CLE
#define CyAnMiscGpio_Nand_ALE	    CyAsMiscGpio_Nand_ALE
#define CyAnMiscGpio_UValid	    CyAsMiscGpio_UValid
#define CyAnMiscGpio_SD_POW         CyAsMiscGpio_SD_POW
typedef CyAsMiscGpio CyAnMiscGpio;

#define CY_AN_SD_DEFAULT_FREQ       CY_AS_SD_DEFAULT_FREQ
#define CY_AN_SD_RATED_FREQ         CY_AS_SD_RATED_FREQ
typedef CyAsLowSpeedSDFreq CyAnLowSpeedSDFreq;

#define CY_AN_HS_SD_FREQ_48         CY_AS_HS_SD_FREQ_48
#define CY_AN_HS_SD_FREQ_24         CY_AS_HS_SD_FREQ_24
typedef CyAsHighSpeedSDFreq CyAnHighSpeedSDFreq;

#define CyAnMiscActiveHigh          CyAsMiscActiveHigh
#define CyAnMiscActiveLow           CyAsMiscActiveLow
typedef CyAsMiscSignalPolarity CyAnMiscSignalPolarity;

typedef CyAsGetFirmwareVersionData CyAnGetFirmwareVersionData;

enum {
    CYAN_FW_TRACE_LOG_NONE = 0,
    CYAN_FW_TRACE_LOG_STATE,
    CYAN_FW_TRACE_LOG_CALLS,
    CYAN_FW_TRACE_LOG_STACK_TRACE,
    CYAN_FW_TRACE_MAX_LEVEL
};


/***********************************/
/***********************************/
/*    FUNCTIONS                    */
/***********************************/
/***********************************/


EXTERN CyAnReturnStatus_t
CyAnMiscCreateDevice(
        CyAnDeviceHandle *		handle_p,
        CyAnHalDeviceTag		tag
        ) ;
#define CyAnMiscCreateDevice(h, tag) CyAsMiscCreateDevice((CyAsDeviceHandle *)(h), (CyAsHalDeviceTag)(tag))

EXTERN CyAnReturnStatus_t
CyAnMiscDestroyDevice(
	CyAnDeviceHandle  handle
	) ;
#define CyAnMiscDestroyDevice(h) CyAsMiscDestroyDevice((CyAsDeviceHandle)(h))

EXTERN CyAnReturnStatus_t
CyAnMiscConfigureDevice(
        CyAnDeviceHandle		handle,
        CyAnDeviceConfig		*config_p
        ) ;
#define CyAnMiscConfigureDevice(h, cfg) CyAsMiscConfigureDevice((CyAsDeviceHandle)(h), (CyAsDeviceConfig *)(cfg))

EXTERN CyAnReturnStatus_t
CyAnMiscInStandby(
        CyAnDeviceHandle		handle,
        CyBool			        *standby
        ) ;
#define CyAnMiscInStandby(h, standby) CyAsMiscInStandby((CyAsDeviceHandle)(h), (standby))

/* Sync version of Download Firmware */
EXTERN CyAnReturnStatus_t
CyAnMiscDownloadFirmware(
        CyAnDeviceHandle		handle,
        const void 			*fw_p,
        uint16_t			size
        ) ;

#define CyAnMiscDownloadFirmware(handle, fw_p, size)            \
    CyAsMiscDownloadFirmware((CyAsDeviceHandle)(handle), (fw_p), (size), 0, 0)

/* Async version of Download Firmware */
EXTERN CyAnReturnStatus_t
CyAnMiscDownloadFirmwareEX(
        CyAnDeviceHandle		handle,
        const void 			*fw_p,
        uint16_t			size,
        CyAnFunctionCallback		cb,
        uint32_t			client
        ) ;

#define CyAnMiscDownloadFirmwareEX(h, fw_p, size, cb, client)   \
    CyAsMiscDownloadFirmware((CyAsDeviceHandle)(h), (fw_p), (size), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Get Firmware Version */
EXTERN CyAnReturnStatus_t
CyAsMiscGetFirmwareVersion_dep(CyAsDeviceHandle handle,
			     uint16_t *major,
			     uint16_t *minor,
			     uint16_t *build,
			     uint8_t *mediaType,
			     CyBool *isDebugMode);

#define CyAnMiscGetFirmwareVersion(h, major, minor, bld, type, mode)    \
    CyAsMiscGetFirmwareVersion_dep((CyAsDeviceHandle)(h), (major), (minor), (bld), (type), (mode))

/* Async version of Get Firmware Version*/
EXTERN CyAnReturnStatus_t
CyAnMiscGetFirmwareVersionEX(
        CyAnDeviceHandle		handle,
        CyAnGetFirmwareVersionData*	data,
        CyAnFunctionCallback	        cb,
        uint32_t			client
        ) ;
#define CyAnMiscGetFirmwareVersionEX(h, data, cb, client)       \
    CyAsMiscGetFirmwareVersion((CyAsDeviceHandle)(h), (data), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Read MCU Register*/
EXTERN CyAnReturnStatus_t
CyAnMiscReadMCURegister(
	CyAnDeviceHandle	handle,
	uint16_t			address,
	uint8_t				*value
	) ;

#define CyAnMiscReadMCURegister(handle, address, value) \
    CyAsMiscReadMCURegister((CyAsDeviceHandle)(handle), (address), (value), 0, 0)

/* Async version of Read MCU Register*/
EXTERN CyAnReturnStatus_t
CyAnMiscReadMCURegisterEX(
	CyAnDeviceHandle		handle,
	uint16_t			address,
	uint8_t				*value,
	CyAnFunctionCallback		cb,
	uint32_t			client
	) ;

#define CyAnMiscReadMCURegisterEX(h, addr, val, cb, client)     \
    CyAsMiscReadMCURegister((CyAsDeviceHandle)(h), (addr), (val), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Write MCU Register*/
EXTERN CyAnReturnStatus_t
CyAnMiscWriteMCURegister(
        CyAnDeviceHandle    handle,
        uint16_t            address,
        uint8_t			    mask,
        uint8_t             value
        ) ;
#define CyAnMiscWriteMCURegister(handle, address, mask, value) \
    CyAsMiscWriteMCURegister((CyAsDeviceHandle)(handle), (address), (mask), (value), 0, 0)

/* Async version of Write MCU Register*/
EXTERN CyAnReturnStatus_t
CyAnMiscWriteMCURegisterEX(
        CyAnDeviceHandle     handle,
        uint16_t             address,
        uint8_t		     mask,
        uint8_t              value,
        CyAnFunctionCallback cb,
        uint32_t	     client
        ) ;
#define CyAnMiscWriteMCURegisterEX(h, addr, mask, val, cb, client)      \
    CyAsMiscWriteMCURegister((CyAsDeviceHandle)(h), (addr), (mask), (val), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Write MCU Register*/
EXTERN CyAnReturnStatus_t
CyAnMiscReset(
	CyAnDeviceHandle		handle,
	CyAnResetType			type,
	CyBool				flush
	) ;
#define CyAnMiscReset(handle, type, flush) \
    CyAsMiscReset((CyAsDeviceHandle)(handle), (type), (flush), 0, 0)

/* Async version of Write MCU Register*/
EXTERN CyAnReturnStatus_t
CyAnMiscResetEX(
	CyAnDeviceHandle	handle,
	CyAnResetType		type,
	CyBool		    	flush,
	CyAnFunctionCallback	cb,
	uint32_t		client
	) ;
#define CyAnMiscResetEX(h, type, flush, cb, client)	\
    CyAsMiscReset((CyAsDeviceHandle)(h), (CyAsResetType)(type), (flush), (CyAsFunctionCallback)(cb), (client))

/*  Synchronous version of CyAnMiscAcquireResource. */
EXTERN CyAnReturnStatus_t
CyAnMiscAcquireResource(
	CyAnDeviceHandle		handle,
	CyAnResourceType		type,
	CyBool				force
	) ;
#define CyAnMiscAcquireResource(h, type, force)		\
    CyAsMiscAcquireResource_dep((CyAsDeviceHandle)(h), (CyAsResourceType)(type), (force))

/* Asynchronous version of CyAnMiscAcquireResource. */
EXTERN CyAnReturnStatus_t
CyAnMiscAcquireResourceEX(
	CyAnDeviceHandle		handle,
	CyAnResourceType*		type,
	CyBool				force,
	CyAnFunctionCallback		cb,
	uint32_t			client
	) ;
#define CyAnMiscAcquireResourceEX(h, type_p, force, cb, client)	\
    CyAsMiscAcquireResource((CyAsDeviceHandle)(h), (CyAsResourceType *)(type_p), \
	    (force), (CyAsFunctionCallback)(cb), (client))

/* The one and only version of Release resource */
EXTERN CyAnReturnStatus_t
CyAnMiscReleaseResource(
	CyAnDeviceHandle		handle,
	CyAnResourceType		type
	) ;
#define CyAnMiscReleaseResource(h, type)		\
    CyAsMiscReleaseResource((CyAsDeviceHandle)(h), (CyAsResourceType)(type))

/* Synchronous version of CyAnMiscSetTraceLevel. */
EXTERN CyAnReturnStatus_t
CyAnMiscSetTraceLevel(
	CyAnDeviceHandle	handle,
	uint8_t			level,
	CyAnMediaType		media,
	uint32_t 		device,
	uint32_t		unit
	) ;

#define CyAnMiscSetTraceLevel(handle, level, media, device, unit) \
    CyAsMiscSetTraceLevel_dep((CyAsDeviceHandle)(handle), (level), (CyAsMediaType)(media), (device), (unit), 0, 0)

/* Asynchronous version of CyAnMiscSetTraceLevel. */
EXTERN CyAnReturnStatus_t
CyAnMiscSetTraceLevelEX(
	CyAnDeviceHandle		handle,
	uint8_t				level,
	CyAnMediaType			media,
	uint32_t			device,
	uint32_t			unit,
	CyAnFunctionCallback		cb,
	uint32_t			client
	) ;
#define CyAnMiscSetTraceLevelEX(h, level, media, device, unit, cb, client)				\
    CyAsMiscSetTraceLevel_dep((CyAsDeviceHandle)(h), (level), (CyAsMediaType)(media), (device), (unit),	\
	    (CyAsFunctionCallback)(cb), (client))

/* Synchronous version of CyAnMiscEnterStandby. */
EXTERN CyAnReturnStatus_t
CyAnMiscEnterStandby(
	CyAnDeviceHandle	handle,
	CyBool			pin
	) ;
#define CyAnMiscEnterStandby(handle, pin) \
    CyAsMiscEnterStandby((CyAsDeviceHandle)(handle), (pin), 0, 0)

/* Synchronous version of CyAnMiscEnterStandby. */
EXTERN CyAnReturnStatus_t
CyAnMiscEnterStandbyEX(
	CyAnDeviceHandle	handle,
	CyBool			pin,
	CyAnFunctionCallback	cb,
	uint32_t		client
	) ;
#define CyAnMiscEnterStandbyEX(h, pin, cb, client)		\
    CyAsMiscEnterStandby((CyAsDeviceHandle)(h), (pin), (CyAsFunctionCallback)(cb), (client))

/* Only one version of CyAnMiscLeaveStandby. */
EXTERN CyAnReturnStatus_t
CyAnMiscLeaveStandby(
	CyAnDeviceHandle		handle,
	CyAnResourceType		type
	) ;
#define CyAnMiscLeaveStandby(h, type) 				\
    CyAsMiscLeaveStandby((CyAsDeviceHandle)(h), (CyAsResourceType)(type))

/* The one version of Misc Register Callback */
EXTERN CyAnReturnStatus_t
CyAnMiscRegisterCallback(
	CyAnDeviceHandle	handle,
	CyAnMiscEventCallback	callback
	) ;
#define CyAnMiscRegisterCallback(h, cb)			\
    CyAsMiscRegisterCallback((CyAsDeviceHandle)(h), (CyAsMiscEventCallback)(cb))

/* The only version of SetLogLevel */
EXTERN void
CyAnMiscSetLogLevel(
	uint8_t	level
	) ;
#define CyAnMiscSetLogLevel(level) CyAsMiscSetLogLevel(level)

/* Sync version of Misc Storage Changed */
EXTERN CyAnReturnStatus_t
CyAnMiscStorageChanged(
	CyAnDeviceHandle		handle
	) ;
#define CyAnMiscStorageChanged(handle) \
    CyAsMiscStorageChanged((CyAsDeviceHandle)(handle), 0, 0)

/* Async version of Misc Storage Changed */
EXTERN CyAnReturnStatus_t
CyAnMiscStorageChangedEX(
	CyAnDeviceHandle	handle,
	CyAnFunctionCallback	cb,
	uint32_t		client
	) ;
#define CyAnMiscStorageChangedEX(h, cb, client)			\
    CyAsMiscStorageChanged((CyAsDeviceHandle)(h), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Heartbeat control */
EXTERN CyAnReturnStatus_t
CyAnMiscHeartBeatControl(
        CyAnDeviceHandle                handle,
        CyBool                          enable
        ) ;
#define CyAnMiscHeartBeatControl(handle, enable) \
    CyAsMiscHeartBeatControl((CyAsDeviceHandle)(handle), (enable), 0, 0)

/* Async version of Heartbeat control */
EXTERN CyAnReturnStatus_t
CyAnMiscHeartBeatControlEX(
        CyAnDeviceHandle       	handle,
        CyBool                 	enable,
        CyAnFunctionCallback   	cb,
        uint32_t		client
        ) ;
#define CyAnMiscHeartBeatControlEX(h, enable, cb, client)	\
    CyAsMiscHeartBeatControl((CyAsDeviceHandle)(h), (enable), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Get Gpio */
EXTERN CyAnReturnStatus_t
CyAnMiscGetGpioValue(
        CyAnDeviceHandle                handle,
        CyAnMiscGpio                    pin,
        uint8_t                        *value
        ) ;
#define CyAnMiscGetGpioValue(handle, pin, value) \
    CyAsMiscGetGpioValue((CyAsDeviceHandle)(handle), (CyAsMiscGpio)(pin), (value), 0, 0)

/* Async version of Get Gpio */
EXTERN CyAnReturnStatus_t
CyAnMiscGetGpioValueEX(
        CyAnDeviceHandle                handle,
        CyAnMiscGpio                    pin,
        uint8_t                        *value,
        CyAnFunctionCallback            cb,
        uint32_t                        client
        ) ;
#define CyAnMiscGetGpioValueEX(h, pin, value, cb, client)	\
    CyAsMiscGetGpioValue((CyAsDeviceHandle)(h), (CyAsMiscGpio)(pin), (value), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Set Gpio */
EXTERN CyAnReturnStatus_t
CyAnMiscSetGpioValue(
        CyAnDeviceHandle handle,
        CyAnMiscGpio     pin,
        uint8_t          value
        ) ;
#define CyAnMiscSetGpioValue(handle, pin, value) \
    CyAsMiscSetGpioValue((CyAsDeviceHandle)(handle), (CyAsMiscGpio)(pin), (value), 0, 0)

/* Async version of Set Gpio */
EXTERN CyAnReturnStatus_t
CyAnMiscSetGpioValueEX(
        CyAnDeviceHandle                handle,
        CyAnMiscGpio                    pin,
        uint8_t                         value,
        CyAnFunctionCallback            cb,
        uint32_t                        client
        ) ;
#define CyAnMiscSetGpioValueEX(h, pin, value, cb, client)	\
    CyAsMiscSetGpioValue((CyAsDeviceHandle)(h), (CyAsMiscGpio)(pin), (value), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Enter suspend */
EXTERN CyAnReturnStatus_t
CyAnMiscEnterSuspend(
        CyAnDeviceHandle                handle,
        CyBool                          usb_wakeup_en,
        CyBool                          gpio_wakeup_en
        ) ;
#define CyAnMiscEnterSuspend(handle, usb_wakeup_en, gpio_wakeup_en) \
    CyAsMiscEnterSuspend((CyAsDeviceHandle)(handle), (usb_wakeup_en), (gpio_wakeup_en), 0, 0)

/* Async version of Enter suspend */
EXTERN CyAnReturnStatus_t
CyAnMiscEnterSuspendEX(
        CyAnDeviceHandle        handle,
        CyBool                  usb_wakeup_en,
        CyBool                  gpio_wakeup_en,
        CyAnFunctionCallback    cb,
        uint32_t                client
        ) ;
#define CyAnMiscEnterSuspendEX(h, usb_en, gpio_en, cb, client)	\
    CyAsMiscEnterSuspend((CyAsDeviceHandle)(h), (usb_en), (gpio_en), (CyAsFunctionCallback)(cb), (client))

/* Sync version of Enter suspend */
EXTERN CyAnReturnStatus_t
CyAnMiscLeaveSuspend(
        CyAnDeviceHandle                handle
        ) ;
#define CyAnMiscLeaveSuspend(handle) \
    CyAsMiscLeaveSuspend((CyAsDeviceHandle)(handle), 0, 0)

/* Async version of Enter suspend */
EXTERN CyAnReturnStatus_t
CyAnMiscLeaveSuspendEX(
        CyAnDeviceHandle                handle,
        CyAnFunctionCallback            cb,
        uint32_t                        client
        ) ;

#define CyAnMiscLeaveSuspendEX(h, cb, client)		\
    CyAsMiscLeaveSuspend((CyAsDeviceHandle)(h), (CyAsFunctionCallback)(cb), (client))

/* Sync version of SetLowSpeedSDFreq */
EXTERN CyAnReturnStatus_t
CyAnMiscSetLowSpeedSDFreq(
        CyAnDeviceHandle                handle,
        CyAnLowSpeedSDFreq              setting
        ) ;
#define CyAnMiscSetLowSpeedSDFreq(h, setting)           \
    CyAsMiscSetLowSpeedSDFreq((CyAsDeviceHandle)(h), (CyAsLowSpeedSDFreq)(setting), 0, 0)

/* Async version of SetLowSpeedSDFreq */
EXTERN CyAnReturnStatus_t
CyAnMiscSetLowSpeedSDFreqEX(
        CyAnDeviceHandle                handle,
        CyAnLowSpeedSDFreq              setting,
        CyAnFunctionCallback            cb,
        uint32_t                        client
        ) ;
#define CyAnMiscSetLowSpeedSDFreqEX(h, setting, cb, client)                             \
    CyAsMiscSetLowSpeedSDFreq((CyAsDeviceHandle)(h), (CyAsLowSpeedSDFreq)(setting),     \
            (CyAsFunctionCallback)(cb), (client))

/* SetHighSpeedSDFreq */
EXTERN CyAnReturnStatus_t
CyAnMiscSetHighSpeedSDFreq(
        CyAnDeviceHandle                handle,
        CyAnHighSpeedSDFreq             setting,
        CyAnFunctionCallback            cb,
        uint32_t                        client
        ) ;
#define CyAnMiscSetHighSpeedSDFreq(h, setting, cb, client)                              \
    CyAsMiscSetHighSpeedSDFreq((CyAsDeviceHandle)(h), (CyAsHighSpeedSDFreq)(setting),   \
            (CyAsFunctionCallback)(cb), (client))

/* ReserveLNABootArea */
EXTERN CyAnReturnStatus_t 
CyAnMiscReserveLNABootArea(
        CyAnDeviceHandle handle,
        uint8_t numzones,
        CyAnFunctionCallback cb, 
        uint32_t client);
#define CyAnMiscReserveLNABootArea(h, num, cb, client)                                  \
    CyAsMiscReserveLNABootArea((CyAsDeviceHandle)(h), num, (CyAsFunctionCallback)(cb),  \
            (client))

/* SetSDPowerPolarity */
EXTERN CyAnReturnStatus_t
CyAnMiscSetSDPowerPolarity(
        CyAnDeviceHandle       handle,
        CyAnMiscSignalPolarity polarity,
        CyAnFunctionCallback   cb,
        uint32_t               client);
#define CyAnMiscSetSDPowerPolarity(h, pol, cb, client)                                  \
    CyAsMiscSetSDPowerPolarity((CyAsDeviceHandle)(h), (CyAsMiscSignalPolarity)(pol),    \
            (CyAsFunctionCallback)(cb), (client))

#include "cyas_cplus_end.h"

#endif