omap3530/beagle_drivers/wb/api/include/cyasmisc.h
changeset 27 117faf51deac
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omap3530/beagle_drivers/wb/api/include/cyasmisc.h	Wed Mar 03 13:10:32 2010 +0000
@@ -0,0 +1,1250 @@
+/* Cypress West Bridge API header file (cyasmisc.h)
+ ## ===========================
+ ##
+ ##  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_CYASMISC_H_
+#define _INCLUDED_CYASMISC_H_
+
+#include "cyashal.h"
+#include "cyastypes.h"
+#include "cyasmedia.h"
+
+#include "cyas_cplus_start.h"
+
+#define CY_AS_LEAVE_STANDBY_DELAY_CLOCK		(1)
+#define CY_AS_RESET_DELAY_CLOCK			(1)
+
+#define CY_AS_LEAVE_STANDBY_DELAY_CRYSTAL	(5)
+#define CY_AS_RESET_DELAY_CRYSTAL		(5)
+
+/* The maximum number of buses supported */
+#define	CY_AS_MAX_BUSES				        (2)
+
+/* The maximum number of storage devices supported per bus */
+#define	CY_AS_MAX_STORAGE_DEVICES			(1)
+
+#define CY_AS_FUNCTCBTYPE_DATA_MASK (0x60000000U)
+#define CY_AS_FUNCTCBTYPE_TYPE_MASK (0x1FFFFFFFU)
+
+#define CyAsFunctCBTypeGetType(t) ((CyAsFunctCBType)((t) & CY_AS_FUNCTCBTYPE_TYPE_MASK))
+#define CyAsFunctCBTypeContainsData(t) (((CyAsFunctCBType)((t) & CY_AS_FUNCTCBTYPE_DATA_MASK)) == CY_FUNCT_CB_DATA)
+
+/*****************************************************************************
+ * West Bridge Types
+ ****************************************************************************/
+
+/* Summary
+   Specifies a handle to an West Bridge device
+   
+   Description
+   This type represents an opaque handle to an West Bridge device.  This handle is
+   created via the CyAsMiscCreateDevice() function and is used in all subsequent
+   calls that communicate to the West Bridge device.
+
+   See Also
+   * CyAsMiscCreateDevice
+   * CyAsMiscDestroyDevice
+*/
+typedef void * CyAsDeviceHandle ;
+
+/* Summary
+   This data type gives the mode for the DACK# signal
+*/
+typedef enum CyAsDeviceDackMode
+{
+    CyAsDeviceDackAck,		    /* Operate in the ACK mode */
+    CyAsDeviceDackEob		    /* Operate in the EOB mode */
+} CyAsDeviceDackMode ;
+
+/* Summary
+   This data structure gives the options for all hardware features.
+
+   Description
+   This structure contains the information required to initialize the West Bridge hardware.
+   Any features of the device that can be configured by the caller are specified here.
+   
+   See Also
+   * CyAsMiscConfigure
+*/
+typedef struct CyAsDeviceConfig
+{
+    CyBool                              srammode ;      /* If TRUE, the P port is running in SRAM mode. */
+    CyBool				sync ;		/* If TRUE, the P port is synchronous, otherwise async */
+    CyBool				dmaintr ;	/* If TRUE, DMA req will be delivered via the interrupt signal */
+    CyAsDeviceDackMode			dackmode ;	/* Mode for the DACK# signal */
+    CyBool				drqpol ;	/* If TRUE, the DRQ line is active high, otherwise active low */
+    CyBool				dackpol ;	/* If TRUE, the DACK line is active high, otherwise active low */
+    CyBool				crystal ;	/* If TRUE, the clock is connected to a crystal, otherwise it is
+							   connected to a clock */
+} CyAsDeviceConfig ;
+
+
+/* Summary
+   Specifies a resource that can be owned by either the West Bridge device or by the processor.
+ 
+   Description
+   This enumerated type identifies a resource that can be owned either by
+   the West Bridge device, or by the processor attached to the P port of the
+   West Bridge device.
+
+   See Also
+   * CyAsMiscAcquireResource
+   * CyAsMiscReleaseResource
+*/
+typedef enum CyAsResourceType
+{
+    CyAsBusUSB = 0, /* The USB D+ and D- pins */
+    CyAsBus_1  = 1, /* The SDIO bus */
+    CyAsBus_0  = 2	/* The NAND bus (not implemented) */
+} CyAsResourceType;
+
+/* Summary
+   Specifies the reset type for a software reset operation.
+
+   Description
+   When the West Bridge device is reset, there are two types of reset that are
+   possible.  This type indicates the type of reset requested.
+
+   Notes
+   Both of these reset types are software based resets; and are distinct from
+   a chip level HARD reset that is applied through the reset pin on the West Bridge.
+
+   The CyAsResetSoft type resets only the on-chip micro-controller in the West Bridge.
+   In this case, the previously loaded firmware will continue running. However,
+   the Storage and USB stack operations will need to be restarted, as any state
+   relating to these would have been lost.
+
+   The CyAsResetHard type resets the entire West Bridge chip, and will need a fresh
+   configuration and firmware download.  
+
+   See Also
+   * <LINK CyAsMiscReset>
+ */
+
+typedef enum CyAsResetType
+{
+    CyAsResetSoft,					/* Just resets the West Bridge micro-controller */
+    CyAsResetHard					/* Resets entire device, firmware must be reloaded and
+							   the West Bridge device must be re-initialized */
+} CyAsResetType;
+
+
+
+/* Summary
+   This type specifies the polarity of the SD power pin.
+
+   Description
+   Sets the SD power pin ( port C, bit 6) to active low or active high.
+
+*/
+
+typedef enum CyAsMiscSignalPolarity
+{
+    CyAsMiscActiveHigh,
+    CyAsMiscActiveLow
+
+} CyAsMiscSignalPolarity ;
+
+
+
+/* Summary
+   This type specifies the type of the data returned by a Function Callback.
+
+   Description
+   CY_FUNCT_CB_NODATA - This callback does not return any additional information in the data field.
+   CY_FUNCT_CB_DATA   - The data field is used, and the CyAsFunctCBType will also contain the type of this data.
+
+   See Also
+   CyAsFunctionCallback
+*/
+typedef enum CyAsFunctCBType
+{
+    CY_FUNCT_CB_INVALID = 0x0U, 
+    CY_FUNCT_CB_MISC_GETFIRMWAREVERSION,        /* Data from a CyAsMiscGetFirmwareVersion call. */
+    CY_FUNCT_CB_MISC_HEARTBEATCONTROL,          /* Data from a CyAsMiscHeartBeatControl call. */
+    CY_FUNCT_CB_MISC_ACQUIRERESOURCE,           /* Data from a CyAsMiscAcquireResource call. */
+    CY_FUNCT_CB_MISC_READMCUREGISTER,           /* Data from a CyAsMiscReadMCURegister call. */
+    CY_FUNCT_CB_MISC_WRITEMCUREGISTER,          /* Data from a CyAsMiscWriteMCURegister call. */
+    CY_FUNCT_CB_MISC_SETTRACELEVEL,             /* Data from a CyAsMiscSetTraceLevel call. */
+    CY_FUNCT_CB_MISC_STORAGECHANGED,            /* Data from a CyAsMiscStorageChanged call. */
+    CY_FUNCT_CB_MISC_GETGPIOVALUE,              /* Data from a CyAsMiscGetGpioValue call. */
+    CY_FUNCT_CB_MISC_SETGPIOVALUE,              /* Data from a CyAsMiscSetGpioValue call. */
+    CY_FUNCT_CB_MISC_DOWNLOADFIRMWARE,          /* Data from a CyAsMiscDownloadFirmware call. */
+    CY_FUNCT_CB_MISC_ENTERSTANDBY,		/* Data from a CyAsMiscEnterStandby call. */
+    CY_FUNCT_CB_MISC_ENTERSUSPEND,              /* Data from a CyAsMiscEnterSuspend call. */
+    CY_FUNCT_CB_MISC_LEAVESUSPEND,              /* Data from a CyAsMiscLeaveSuspend call. */
+    CY_FUNCT_CB_MISC_RESET,                     /* Data from a CyAsMiscReset call. */
+    CY_FUNCT_CB_MISC_SETSDFREQ,                 /* Data from a CyAsMiscSetLowSpeedSDFreq or CyAsMiscSetHighSpeedSDFreq call. */
+    CY_FUNCT_CB_MISC_RESERVELNABOOTAREA,        /* Data from a CyAsMiscSwitchPnandMode call */
+    CY_FUNCT_CB_MISC_SETSDPOLARITY,             /* Data from a CyAsMiscSetSDPowerPolarity call */
+
+    CY_FUNCT_CB_STOR_START,                     /* Data from a CyAsStorageStart call. */
+    CY_FUNCT_CB_STOR_STOP,                      /* Data from a CyAsStorageStop call. */
+    CY_FUNCT_CB_STOR_CLAIM,                     /* Data from a CyAsStorageClaim call. */
+    CY_FUNCT_CB_STOR_RELEASE,                   /* Data from a CyAsStorageRelease call. */
+    CY_FUNCT_CB_STOR_QUERYMEDIA,                /* Data from a CyAsStorageQueryMedia call. */
+    CY_FUNCT_CB_STOR_QUERYBUS,                  /* Data from a CyAsStorageQueryBus call. */
+    CY_FUNCT_CB_STOR_QUERYDEVICE,               /* Data from a CyAsStorageQueryDevice call. */
+    CY_FUNCT_CB_STOR_QUERYUNIT,                 /* Data from a CyAsStorageQueryUnit call. */
+    CY_FUNCT_CB_STOR_DEVICECONTROL,             /* Data from a CyAsStorageDeviceControl call. */
+    CY_FUNCT_CB_STOR_SDREGISTERREAD,            /* Data from a CyAsStorageSDRegisterRead call. */
+    CY_FUNCT_CB_STOR_PARTITION,                 /* Data from a CyAsStorageCreatePartition call. */
+    CY_FUNCT_CB_STOR_GETTRANSFERAMOUNT,		/* Data from a CyAsStorageGetTransferAmount call. */
+    CY_FUNCT_CB_STOR_ERASE,			/* Data from a CyAsStorageErase call. */
+    CY_FUNCT_CB_ABORT_P2S_XFER,                 /* Data from a CyAsStorageCancelAsync call. */
+    CY_FUNCT_CB_USB_START,                      /* Data from a CyAsUsbStart call. */
+    CY_FUNCT_CB_USB_STOP,                       /* Data from a CyAsUsbStop call. */
+    CY_FUNCT_CB_USB_CONNECT,                    /* Data from a CyAsUsbConnect call. */
+    CY_FUNCT_CB_USB_DISCONNECT,                 /* Data from a CyAsUsbDisconnect call. */
+    CY_FUNCT_CB_USB_SETENUMCONFIG,              /* Data from a CyAsUsbSetEnumConfig call. */
+    CY_FUNCT_CB_USB_GETENUMCONFIG,              /* Data from a CyAsUsbGetEnumConfig call. */
+    CY_FUNCT_CB_USB_SETDESCRIPTOR,              /* Data from a CyAsUsbSetDescriptor call. */
+    CY_FUNCT_CB_USB_GETDESCRIPTOR,              /* Data from a CyAsUsbGetDescriptor call. */
+    CY_FUNCT_CB_USB_COMMITCONFIG,               /* Data from a CyAsUsbCommitConfig call. */
+    CY_FUNCT_CB_USB_GETNAK,			/* Data from a CyAsUsbGetNak call. */
+    CY_FUNCT_CB_USB_GETSTALL,			/* Data from a CyAsUsbGetStall call. */
+    CY_FUNCT_CB_USB_SIGNALREMOTEWAKEUP,         /* Data from a CyAsUsbSignalRemoteWakeup call. */
+    CY_FUNCT_CB_USB_CLEARDESCRIPTORS,           /* Data from a CyAnUsbClearDescriptors call. */
+    CY_FUNCT_CB_USB_SET_MSREPORT_THRESHOLD,     /* Data from a CyAnUsbSetMSReportThreshold call. */
+    CY_FUNCT_CB_MTP_START,			/* Data from a CyAsMTPStart call. */
+    CY_FUNCT_CB_MTP_STOP,			/* Data from a CyAsMTPStop call. */
+    CY_FUNCT_CB_MTP_INIT_SEND_OBJECT,		/* Data from a CyAsMTPInitSendObject call. */
+    CY_FUNCT_CB_MTP_CANCEL_SEND_OBJECT,		/* Data from a CyAsMTPCancelSendObject call. */
+    CY_FUNCT_CB_MTP_INIT_GET_OBJECT,		/* Data from a CyAsMTPInitGetObject call. */
+    CY_FUNCT_CB_MTP_CANCEL_GET_OBJECT,		/* Data from a CyAsMTPCancelGetObject call. */
+    CY_FUNCT_CB_MTP_SEND_BLOCK_TABLE,		/* Data from a CyAsMTPSendBlockTable call. */
+    CY_FUNCT_CB_MTP_STOP_STORAGE_ONLY,		/* Data from a CyAsMTPStopStorageOnly call. */
+    CY_FUNCT_CB_NODATA = 0x40000000U,
+    CY_FUNCT_CB_DATA =   0x20000000U
+} CyAsFunctCBType ;
+
+/* Summary
+   This type specifies the general West Bridge function callback.
+
+   Description
+   This callback is supplied as an argument to all asynchronous functions in the API. It is
+   called after the asynchronous function has completed. 
+
+   See Also
+   CyAsFunctCBType
+*/
+typedef void (*CyAsFunctionCallback)(
+    CyAsDeviceHandle	handle,
+    CyAsReturnStatus_t	status,
+    uint32_t		client,
+    CyAsFunctCBType	type,
+    void*		data) ;
+
+/* Summary
+   This type specifies the general West Bridge event that has occurred.
+
+   Description
+   This type is used in the West Bridge misc callback function to indicate the type
+   of callback.
+
+   See Also
+*/
+typedef enum CyAsMiscEventType
+{
+    CyAsEventMiscInitialized = 0,		/* This event is sent when West Bridge has finished
+						   initialization and is ready to respond to 
+						   API calls. */
+
+    CyAsEventMiscAwake,				/* This event is sent when West Bridge has left the
+						   standby state and is ready to respond to commands
+						   again. */
+
+    CyAsEventMiscHeartBeat,                     /* This event is sent periodically from the firmware
+                                                   to the processor. */
+
+    CyAsEventMiscWakeup,                        /* This event is sent when the West Bridge has left the
+                                                   suspend mode and is ready to respond to commands
+                                                   again. */
+
+    CyAsEventMiscDeviceMismatch                 /* This event is sent when the firmware image downloaded
+                                                   cannot run on the active West Bridge device. */
+} CyAsMiscEventType ;
+
+/* Summary
+   This type is the type of a callback function that is called when a West Bridge misc event occurs.
+
+   Description
+   At times West Bridge needs to inform the P port processor of events that have
+   occurred.  These events are asynchronous to the thread of control on the P
+   port processor and as such are generally delivered via a callback function that
+   is called as part of an interrupt handler.  This type defines the type of function
+   that must be provided as a callback function for West Bridge misc events.
+
+   See Also
+   * CyAsMiscEventType
+*/
+typedef void (*CyAsMiscEventCallback)(
+    CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+    CyAsMiscEventType		ev,		/* The event type being reported */
+    void *			evdata		/* The data assocaited with the event being reported */
+) ;
+
+#ifndef __doxygen__
+/* Summary
+   This enum provides info of various firmware trace levels.
+
+   Description
+   
+   See Also
+   * CyAsMiscSetTraceLevel
+*/
+enum {
+    CYAS_FW_TRACE_LOG_NONE = 0,         /* Log nothing. */
+    CYAS_FW_TRACE_LOG_STATE,            /* Log state information. */
+    CYAS_FW_TRACE_LOG_CALLS,            /* Log function calls. */
+    CYAS_FW_TRACE_LOG_STACK_TRACE,      /* Log function calls with args. */
+    CYAS_FW_TRACE_MAX_LEVEL             /* Max trace level sentinel. */
+};
+#endif
+
+/* Summary
+   This enum lists the controllable GPIOs of the West Bridge device.
+
+   Description
+   The West Bridge device has GPIOs that can be used for user defined functions.
+   This enumeration lists the GPIOs that are available on the device.
+
+   Notes
+   All of the GPIOs except UVALID can only be accessed when using West Bridge
+   firmware images that support only SD/MMC/MMC+ storage devices. This
+   functionality is not supported in firmware images that support NAND
+   storage.
+
+   See Also
+   * CyAsMiscGetGpioValue
+   * CyAsMiscSetGpioValue
+ */
+typedef enum {
+    CyAsMiscGpio_0 = 0,                 /* GPIO[0] pin */
+    CyAsMiscGpio_1,                     /* GPIO[1] pin */
+    CyAsMiscGpio_Nand_CE,               /* NAND_CE pin, output only */
+    CyAsMiscGpio_Nand_CE2,              /* NAND_CE2 pin, output only */
+    CyAsMiscGpio_Nand_WP,               /* NAND_WP pin, output only */
+    CyAsMiscGpio_Nand_CLE,              /* NAND_CLE pin, output only */
+    CyAsMiscGpio_Nand_ALE,              /* NAND_ALE pin, output only */
+    CyAsMiscGpio_SD_POW,                /* SD_POW pin, output only, do not drive low while storage is active */
+    CyAsMiscGpio_UValid                 /* UVALID pin */
+} CyAsMiscGpio;
+
+/* Summary
+   This enum lists the set of clock frequencies that are supported for working
+   with low speed SD media.
+
+   Description
+   West Bridge firmware uses a clock frequency less than the maximum possible rate
+   for low speed SD media.  This can be changed to a setting equal to the maximum
+   frequency as desired by the user.  This enumeration lists the different
+   frequency settings that are supported.
+
+   See Also
+   * CyAsMiscSetLowSpeedSDFreq
+ */
+typedef enum CyAsLowSpeedSDFreq
+{
+    CY_AS_SD_DEFAULT_FREQ = 0,          /* Approx. 21.82 MHz, default value */
+    CY_AS_SD_RATED_FREQ                 /* 24 MHz */
+} CyAsLowSpeedSDFreq ;
+
+/* Summary
+   This enum lists the set of clock frequencies that are supported for working
+   with high speed SD media.
+
+   Description
+   West Bridge firmware uses a 48 MHz clock by default to interface with high speed
+   SD/MMC media.  This can be changed to 24 MHz if so desired by the user.  This enum
+   lists the different frequencies that are supported.
+
+   See Also
+   * CyAsMiscSetHighSpeedSDFreq
+ */
+typedef enum CyAsHighSpeedSDFreq
+{
+    CY_AS_HS_SD_FREQ_48,                /* 48 MHz, default value */
+    CY_AS_HS_SD_FREQ_24                 /* 24 MHz */
+} CyAsHighSpeedSDFreq ;
+
+/* Summary
+   Struct encapsulating all information returned by the CyAsMiscGetFirmwareVersion call.
+
+   Description
+   This struct encapsulates all return values from the asynchronous
+   CyAsMiscGetFirmwareVersion call, so that a single data argument can be
+   passed to the user provided callback function.
+
+   See Also
+   * CyAsMiscGetFirmwareVersion
+ */
+typedef struct CyAsGetFirmwareVersionData
+{
+    uint16_t 	major;		/* Return value for major version number for the firmware */
+    uint16_t 	minor;		/* Return value for minor version number for the firmware */
+    uint16_t 	build;		/* Return value for build version number for the firmware */
+    uint8_t     mediaType;      /* Return value for media types supported in the current firmware */
+    CyBool	isDebugMode;    /* Return value to indicate the release or debug mode of firmware */
+} CyAsGetFirmwareVersionData ;
+
+
+/*****************************************************************************
+ * West Bridge Functions
+ ****************************************************************************/
+
+/* Summary
+   This function creates a new West Bridge device and returns a handle to the device.
+
+   Description
+   This function initializes the API object that represents the West Bridge device and
+   returns a handle to this device.  This handle is required for all West Bridge related
+   functions to identify the specific West Bridge device.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS
+   * CY_AS_ERROR_OUT_OF_MEMORY
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscCreateDevice(
+        CyAsDeviceHandle *		handle_p,	/* Return value for handle to created device */
+        CyAsHalDeviceTag		tag		/* The HAL specific tag for this device */
+        ) ;
+
+/* Summary
+   This functions destroys a previously created West Bridge device.
+
+   Description
+   When an West Bridge device is created, an opaque handle is returned that represents
+   the device.  This function destroys that handle and frees all resources associated
+   with the handle.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_STILL_RUNNING - The USB or STORAGE stacks are still running, they must be stopped before the device can be destroyed
+   * CY_AS_ERROR_DESTROY_SLEEP_CHANNEL_FAILED - the HAL layer failed to destroy a sleep channel
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscDestroyDevice(
+        CyAsDeviceHandle		handle		/* Handle to the device to destroy */
+        ) ;
+
+/* Summary
+   This function initializes the hardware for basic communication with West Bridge.
+
+   Description
+   This function intializes the hardware to establish basic communication with
+   the West Bridge device.  This is always the first function called to initialize
+   communication with the West Bridge device.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the basic initialization was completed
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_IN_STANDBY
+   * CY_AS_ERROR_ALREADY_RUNNING
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_NO_ANTIOCH - cannot find the West Bridge device
+   * CY_AS_ERROR_CREATE_SLEEP_CHANNEL_FAILED - the HAL layer falied to create a sleep channel
+
+   See Also
+   * CyAsDeviceConfig
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscConfigureDevice(
+        CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+        CyAsDeviceConfig		*config_p	/* Configuration information */
+        ) ;
+
+/* Summary
+   This function returns non-zero if West Bridge is in standby and zero otherwise.
+
+   Description
+   West Bridge supports a standby mode.  This function is used to query West Bridge to determine
+   if West Bridge is in a standby mode.
+
+   * Valid In Asynchronous Callback: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS
+   * CY_AS_ERROR_INVALID_HANDLE
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscInStandby(
+        CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+        CyBool			        *standby	/* Return value for standby state */
+        ) ;
+
+/* Summary
+   This function downloads the firmware to West Bridge device.
+
+   Description
+   This function downloads firmware from a given location and with a given size
+   to the West Bridge device.  After the firmware is downloaded the West Bridge device is
+   moved out of configuration mode causing the firmware to be executed.  It is an
+   error to call this function when the device is not in configuration mode.  The
+   device is in configuration mode on power up and may be placed in configuration
+   mode after power up with a hard reset.
+
+   Notes
+   The firmware must be on a word align boundary.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the firmware was sucessfully downloaded
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device was not configured
+   * CY_AS_ERROR_NOT_IN_CONFIG_MODE
+   * CY_AS_ERROR_INVALID_SIZE - the size of the firmware exceeded 32768 bytes
+   * CY_AS_ERROR_ALIGNMENT_ERROR
+   * CY_AS_ERROR_IN_STANDBY - trying to download while in standby mode
+   * CY_AS_ERROR_TIMEOUT
+
+   See Also
+   * CyAsMiscReset
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscDownloadFirmware(
+        CyAsDeviceHandle	  handle,	/* Handle to the device to configure */
+        const void 			  *fw_p,	/* Pointer to the firmware to be downloaded */
+        uint16_t			  size,		/* The size of the firmware in bytes */
+        CyAsFunctionCallback  cb,       /* Callback to call when the operation is complete. */
+        uint32_t			  client    /* Client data to be passed to the callback. */
+        ) ;
+
+
+/* Summary
+   This function returns the version number of the firmware running in the West Bridge device.
+
+   Description
+   This function queries the West Bridge device and retreives the firmware version number.  If
+   the firmware is not loaded an error is returned indicated no firmware has been loaded.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the firmware version number was retreived
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE - the firmware has not been downloaded to the device
+   * CY_AS_ERROR_IN_STANDBY
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscGetFirmwareVersion(
+        CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+        CyAsGetFirmwareVersionData*	data,           /* Return values indicating the firmware version. */
+        CyAsFunctionCallback	        cb,             /* Callback to call when the operation is complete. */
+        uint32_t			client          /* Client data to be passed to the callback. */
+        ) ;
+
+#if !defined(__doxygen__)
+
+/* Summary
+   This function reads and returns the contents of an MCU accessible register on the West Bridge.
+
+   Description
+   This function requests the firmware to read and return the contents of an MCU accessible
+   register through the mailboxes.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the register content was retrieved.
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+   * CY_AS_ERROR_INVALID_RESPONSE - the firmware build does not support this command.
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsMiscReadMCURegister(
+	CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+	uint16_t			address,	/* Address of the register to read */
+	uint8_t				*value,		/* Return value for the MCU register content */
+	CyAsFunctionCallback		cb,             /* Callback to call when the operation is complete. */
+	uint32_t			client          /* Client data to be passed to the callback. */
+	) ;
+
+/* Summary
+   This function writes to an MCU accessible register on the West Bridge.
+
+   Description
+   This function requests the firmware to write a specified value to an MCU accessible
+   register through the mailboxes.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Notes
+   This function is only for internal use by the West Bridge API layer.  Calling
+   this function directly can cause device malfunction.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the register content was updated.
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+   * CY_AS_ERROR_INVALID_RESPONSE - the firmware build does not support this command.
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsMiscWriteMCURegister(
+        CyAsDeviceHandle        handle,		/* Handle to the device to configure */
+        uint16_t                address,        /* Address of the register to write */
+        uint8_t			mask,           /* Mask to be applied on the register contents. */
+        uint8_t                 value,          /* Data to be ORed with the register contents. */
+        CyAsFunctionCallback	cb,             /* Callback to call when the operation is complete. */
+        uint32_t		client          /* Client data to be passed to the callback. */
+        ) ;
+
+#endif
+
+/* Summary
+   This function will reset the West Bridge device and software API.
+
+   Description
+   This function will reset the West Bridge device and software API.  The reset operation can be
+   a hard reset or a soft reset.  A hard reset will reset all aspects of the West Bridge device.
+   The device will enter the configuration state and the firmware will have to be reloaded.  The
+   device will also have to be re-initialized.  A soft reset just resets the West Bridge micro-
+   controller.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   When a hard reset is issued, the firmware that may have been previously loaded will be lost
+   and any configuration information set via CyAsMiscConfigureDevice() will be lost.  This will be
+   reflected in the API maintained state of the device.  In order to re-establish communications 
+   with the West Bridge device, CyAsMiscConfigureDevice() and CyAsMiscDownloadFirmware() must be 
+   called again.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the device has been reset
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_NOT_YET_SUPPORTED - current soft reset is not supported
+   * CY_AS_ERROR_ASYNC_PENDING - Reset is unable to flush pending async reads/writes in polling mode.
+
+
+      See Also
+   * CyAsMiscReset
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscReset(
+	CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+	CyAsResetType			type,		/* The type of reset to perform */
+	CyBool				flush,		/* If true, flush all pending writes to mass storage
+							   before performing the reset. */
+	CyAsFunctionCallback		cb,             /* Callback to call when the operation is complete. */
+	uint32_t			client          /* Client data to be passed to the callback. */
+	) ;
+
+/* Summary
+   This function acquires a given resource.
+
+   Description
+   There are resources in the system that are shared between the West Bridge device and the processor
+   attached to the P port of the West Bridge device.  This API provides a mechanism for the P port
+   processor to acquire ownership of a resource.
+
+   Notes
+   The ownership of the resources controlled by CyAsMiscAcquireResource() and CyAsMiscReleaseResource()
+   defaults to a known state at hardware reset.  After the firmware is loaded and begins execution the
+   state of these resources may change.  At any point if the P Port processor needs to acquire a resource
+   it should do so explicitly to be sure of ownership.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the p port sucessfully acquired the resource of interest
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_INVALID_RESOURCE
+   * CY_AS_ERROR_RESOURCE_ALREADY_OWNED - the p port already owns this resource
+   * CY_AS_ERROR_NOT_ACQUIRED - the resource cannot be acquired
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+
+   See Also
+   * CyAsResourceType
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsMiscAcquireResource(
+	CyAsDeviceHandle	handle,		/* Handle to the device to configure */
+	CyAsResourceType	*resource,	/* The resource to acquire */
+	CyBool				force,		/* If true, force West Bridge to release the resource */
+	CyAsFunctionCallback cb,        /* Callback to call when the operation is complete. */
+	uint32_t			client      /* Client data to be passed to the callback. */
+	) ;
+
+/* Summary
+   This function releases a given resource.
+
+   Description
+   There are resources in the system that are shared between the West Bridge device and the processor
+   attached to the P port of the West Bridge device.  This API provides a mechanism for the P port
+   processor to release a resource that has previously been acquired via the CyAsMiscAcquireResource()
+   call.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the p port sucessfully released the resource of interest
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_INVALID_RESOURCE
+   * CY_AS_ERROR_RESOURCE_NOT_OWNED - the p port does not own the resource of interest
+
+   See Also
+   * CyAsResourceType
+   * CyAsMiscAcquireResource
+*/
+EXTERN CyAsReturnStatus_t 
+CyAsMiscReleaseResource(
+	CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+	CyAsResourceType		resource	/* The resource to release */
+	) ;
+
+#ifndef __doxygen__
+/* Summary
+   This function sets the trace level for the West Bridge firmware.
+
+   Description
+   The West Bridge firmware has the ability to store information about the state and execution path
+   of the firmware on a mass storage device attached to the West Bridge device.  This function 
+   configures the specific mass storage device to be used and the type of information to be
+   stored.  This state information is used for debugging purposes and must be interpreted by a
+   Cypress provided tool.
+
+   *Trace Level*
+   The trace level indicates the amount of information to output.
+   * 0 = no trace information is output
+   * 1 = state information is output
+   * 2 = function call information is output
+   * 3 = function call, arguments, and return value information is output
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   The media device and unit specified in this call will be overwritten and any data currently stored
+   on this device and unit will be lost.
+
+   * NOT IMPLEMENTED YET
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the trace configuration has been sucessfully changed
+   * CY_AS_ERROR_NO_SUCH_BUS - the bus specified does not exist
+   * CY_AS_ERROR_NO_SUCH_DEVICE - the specified media/device pair does not exist
+   * CY_AS_ERROR_NO_SUCH_UNIT - the unit specified does not exist
+   * CY_AS_ERROR_INVALID_TRACE_LEVEL - the trace level requested does not exist
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscSetTraceLevel(
+	CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+	uint8_t				level,		/* The trace level */
+	CyAsBusNumber_t			bus,		/* The bus for the output */
+	uint32_t 			device,		/* The device for the output */
+	uint32_t			unit,		/* The unit for the output */
+	CyAsFunctionCallback		cb,             /* Callback to call when the operation is complete. */
+	uint32_t			client          /* Client data to be passed to the callback. */
+	) ;
+#endif
+
+/* Summary
+   This function places West Bridge into the low power standby mode.
+
+   Description
+   This function places West Bridge into a low power (sleep) mode, and cannot be called while the
+   USB stack is active.  This function first instructs the West Bridge firmware that the device is
+   about to be placed into sleep mode.  This allows West Bridge to complete any pending storage
+   operations.  After the West Bridge device has responded that pending operations are complete,
+   the device is placed in standby mode.
+  
+   There are two methods of placing the device in standby mode.  If the WAKEUP pin of the West Bridge
+   is connected to a GPIO on the processor, the pin is de-asserted (via the HAL layer) and West Bridge
+   enters into a sleep mode.  If the WAKEUP pin is not accessible, the processor can write into
+   the power management control/status register on the West Bridge to put the device into sleep mode.
+
+   * Valid In Asynchronous Callback: YES (if cb supplied)
+   * Nestable: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function completed and West Bridge is in sleep mode
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_ALREADY_STANDBY - the West Bridge device is already in sleep mode
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+   * CY_AS_ERROR_NOT_SUPPORTED - the HAL layer does not support changing the WAKEUP pin
+   * CY_AS_ERROR_USB_RUNNING - The USB stack is still running when the EnterStandby call is made
+   * CY_AS_ERROR_ASYNC_PENDING
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+   * CY_AS_ERROR_SETTING_WAKEUP_PIN
+   * CY_AS_ERROR_ASYNC_PENDING - In polling mode EnterStandby can not be called until all pending
+				 storage read/write requests have finished.
+
+   See Also
+   * CyAsMiscLeaveStandby
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscEnterStandbyEXU(
+	CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+	CyBool				pin,		/* If true, use the wakeup pin, otherwise use the register */
+	CyBool				uvalid_special,	/* Set true to enable specific usages of the
+							   UVALID signal, please refer to AN xx or ERRATA xx */
+	CyAsFunctionCallback		cb,             /* Callback to call when the operation is complete. */
+	uint32_t			client          /* Client data to be passed to the callback. */
+	) ;
+
+/* Summary
+   This function is provided for backwards compatibility.
+
+   Description
+   Calling this function is the same as calling CyAsMiscEnterStandbyEx with True for the lowpower parameter.
+
+   See Also
+   * CyAsMiscEnterStandbyEx
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscEnterStandby(CyAsDeviceHandle handle, 
+			CyBool pin,
+			CyAsFunctionCallback cb,
+			uint32_t client
+			) ;
+
+/* Summary
+   This function brings West Bridge out of sleep mode.
+
+   Description
+   This function asserts the WAKEUP pin (via the HAL layer).  This brings the West Bridge out of the sleep
+   state and allows the West Bridge firmware to process the event causing the wakeup.  When all processing
+   associated with the wakeup is complete, a callback function is called to tell the P port software that
+   the firmware processing associated with wakeup is complete.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns:
+   * CY_AS_ERROR_SUCCESS - the function completed and West Bridge is in sleep mode
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_SETTING_WAKEUP_PIN
+   * CY_AS_ERROR_NOT_IN_STANDBY - the West Bridge device is not in the sleep state
+   * CY_AS_ERROR_TIMEOUT - there was a timeout waiting for a response from the West Bridge firmware
+   * CY_AS_ERROR_NOT_SUPPORTED - the HAL layer does not support changing the WAKEUP pin
+
+   See Also
+   * CyAsMiscEnterStandby
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscLeaveStandby(
+	CyAsDeviceHandle		handle,		/* Handle to the device to configure */
+	CyAsResourceType		resource	/* The resource causing the wakeup */
+	) ;
+
+/* Summary
+   This function registers a callback function to be called when an asynchronous West Bridge MISC event occurs.
+
+   Description
+   When asynchronous misc events occur, a callback function can be called to alert the calling program.  This
+   functions allows the calling program to register a callback.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns:
+   * CY_AS_ERROR_SUCCESS
+   * CY_AS_ERROR_INVALID_HANDLE
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscRegisterCallback(
+	CyAsDeviceHandle		handle,		/* Handle to the West Bridge device */
+	CyAsMiscEventCallback		callback	/* The function to call */
+	) ;
+
+/* Summary
+   This function sets the logging level for log messages.
+
+   Description
+   The API can print messages via the CyAsHalPrintMessage capability.  This function sets the
+   level of detail seen when printing messages from the API.
+
+   * Valid In Asynchronous Callback:NO
+*/
+EXTERN void
+CyAsMiscSetLogLevel(
+	uint8_t				level		/* Level to set, 0 is fewer messages, 255 is all */
+	) ;
+
+
+/* Summary
+   This function tells West Bridge that SD or MMC media has been inserted or removed.
+
+   Description
+   In some hardware configurations, SD or MMC media detection is handled outside of the
+   West Bridge device.  This function is called when a change is detected to inform the
+   West Bridge firmware to check for storage media changes.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns:
+   * CY_AS_ERROR_SUCCESS
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_IN_STANDBY
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_INVALID_RESPONSE
+
+   See Also
+   * CyAsMiscStorageChanged
+
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscStorageChanged(	
+	CyAsDeviceHandle		handle,	        /* Handle to the West Bridge device */
+	CyAsFunctionCallback		cb,		/* Callback to call when the operation is complete. */
+	uint32_t			client		/* Client data to be passed to the callback. */
+	) ;
+
+/* Summary
+   This function instructs the West Bridge firmware to start/stop sending periodic
+   heartbeat messages to the processor.
+
+   Description
+   The West Bridge firmware can send heartbeat messages through the mailbox register
+   once every 500 ms. This message can be an overhead as it causes regular Mailbox
+   interrupts to happen, and is turned off by default. The message can be used to
+   test and verify that the West Bridge firmware is alive. This API can be used to
+   enable or disable the heartbeat message.
+
+   * Valid In Asynchronous Callback: NO
+ 
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function completed successfully
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED
+   * CY_AS_ERROR_NO_FIRMWARE
+   * CY_AS_ERROR_OUT_OF_MEMORY
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured yet
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the West Bridge device
+
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscHeartBeatControl(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyBool                          enable,         /* Message enable/disable selection */
+	CyAsFunctionCallback		cb,             /* Callback to call when the operation is complete. */
+	uint32_t			client          /* Client data to be passed to the callback. */
+        ) ;
+
+/* Summary
+   This function gets the current state of a GPIO pin on the West Bridge device.
+
+   Description
+   The West Bridge device has GPIO pins that can be used for user defined functions.
+   This function gets the current state of the specified GPIO pin. Calling this
+   function will configure the corresponding pin as an input.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   Only GPIO[0], GPIO[1] and UVALID pins can be used as GP inputs. Of these pins,
+   only the UVALID pin is supported by firmware images that include NAND storage
+   support.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function completed successfully
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured yet
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the West Bridge device
+   * CY_AS_ERROR_BAD_INDEX - an invalid GPIO was specified
+   * CY_AS_ERROR_NOT_SUPPORTED - this feature is not supported by the firmware
+
+   See Also
+   * CyAsMiscGpio
+   * CyAsMiscSetGpioValue
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscGetGpioValue(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyAsMiscGpio                    pin,            /* Id of the GPIO pin to query */
+        uint8_t                        *value,          /* Current value of the GPIO pin */
+        CyAsFunctionCallback            cb,             /* Callback to call when the operation is complete. */
+        uint32_t                        client          /* Client data to be passed to the callback. */
+        ) ;
+
+/* Summary
+   This function updates the state of a GPIO pin on the West Bridge device.
+
+   Description
+   The West Bridge device has GPIO pins that can be used for user defined functions.
+   This function updates the output value driven on a specified GPIO pin. Calling this
+   function will configure the corresponding pin as an output.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   All of the pins listed under CyAsMiscGpio can be used as GP outputs. This feature
+   is note supported by firmware images that include NAND storage device support.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the function completed successfully
+   * CY_AS_ERROR_INVALID_HANDLE
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not been configured yet
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the West Bridge device
+   * CY_AS_ERROR_BAD_INDEX - an invalid GPIO was specified
+   * CY_AS_ERROR_NOT_SUPPORTED - this feature is not supported by firmware.
+
+   See Also
+   * CyAsMiscGpio
+   * CyAsMiscGetGpioValue
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscSetGpioValue(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyAsMiscGpio                    pin,            /* Id of the GPIO pin to set */
+        uint8_t                         value,          /* Value to be set on the GPIO pin */
+        CyAsFunctionCallback            cb,             /* Callback to call when the operation is complete. */
+        uint32_t                        client          /* Client data to be passed to the callback. */
+        ) ;
+
+/* Summary
+   Set the West Bridge device in the low power suspend mode.
+
+   Description
+   The West Bridge device has a low power suspend mode where the USB core and the internal
+   microcontroller are powered down.  This function sets the West Bridge device into this
+   low power mode.  This mode can only be entered when there is no active USB connection;
+   i.e., when USB has not been connected or is suspended; and there are no pending USB
+   or storage asynchronous calls.
+   The device will exit the suspend mode and resume handling USB and processor requests
+   when any activity is detected on the CE#, D+/D- or GPIO[0] lines.
+
+   * Valid In Asynchronous Callback: NO
+
+   Notes
+   The GPIO[0] pin needs to be configured as an input for the gpio wakeup to work.
+   This flag should not be enabled if the pin is being used as a GP output.
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the device was placed in suspend mode.
+   * CY_AS_ERROR_INVALID_HANDLE - the West Bridge handle passed in is invalid.
+   * CY_AS_ERROR_NOT_CONFIGURED - the West Bridge device has not yet been configured.
+   * CY_AS_ERROR_NO_FIRMWARE - no firmware has been downloaded to the device.
+   * CY_AS_ERROR_IN_STANDBY - the device is already in sleep mode.
+   * CY_AS_ERROR_USB_CONNECTED - the USB connection is active.
+   * CY_AS_ERROR_ASYNC_PENDING - asynchronous storage/USB calls are pending.
+   * CY_AS_ERROR_OUT_OF_MEMORY - failed to allocate memory for the operation.
+   * CY_AS_ERROR_INVALID_RESPONSE - command not recognised by firmware.
+
+   See Also
+   * CyAsMiscLeaveSuspend
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscEnterSuspend(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyBool                          usb_wakeup_en,  /* Control the USB wakeup source */
+        CyBool                          gpio_wakeup_en, /* Control the GPIO[0] wakeup source */
+        CyAsFunctionCallback            cb,             /* Callback to call when suspend mode entry is complete */
+        uint32_t                        client          /* Client data to be passed to the callback. */
+        ) ;
+
+/* Summary
+   Wake up the West Bridge device from suspend mode.
+
+   Description
+   This call wakes up the West Bridge device from suspend mode, and makes it ready
+   for accepting other commands from the API.  A CyAsEventMiscWakeup event will
+   be delivered to the callback registered with CyAsMiscRegisterCallback to
+   indicate that the wake up is complete.
+
+   The CyAsEventMiscWakeup event will also be delivered if the wakeup happens
+   due to USB or GPIO activity.
+
+   * Valid In Asynchronous Callback: NO
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the device was woken up from suspend mode.
+   * CY_AS_ERROR_INVALID_HANDLE - invalid device handle passed in.
+   * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not been configured.
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the device.
+   * CY_AS_ERROR_NOT_IN_SUSPEND - the device is not in suspend mode.
+   * CY_AS_ERROR_OUT_OF_MEMORY - failed to allocate memory for the operation.
+   * CY_AS_ERROR_TIMEOUT - failed to wake up the device.
+
+   See Also
+   * CyAsMiscEnterSuspend
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscLeaveSuspend(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyAsFunctionCallback            cb,             /* Callback to call when device has resumed operation. */
+        uint32_t                        client          /* Client data to be passed to the callback. */
+        ) ;
+
+/* Summary
+   Reserve first numzones zones of nand device for storing processor boot image. LNA firmware works 
+   on the first numzones zones of nand to enable the processor to boot.
+
+   Description
+   This function reserves first numzones zones of nand device for storing processor boot image. 
+   This fonction MUST be completed before starting the storage stack for the setting to be taken 
+   into account.
+
+   * Valid In Asynchronous Callback: YES
+
+   Returns
+   * CY_AS_ERROR_SUCCESS                   - zones are reserved.
+   
+*/
+EXTERN CyAsReturnStatus_t
+CyAsMiscReserveLNABootArea(
+        CyAsDeviceHandle     handle,         /* Handle to the West Bridge device */
+        uint8_t numzones,                    /* number of nand zones to reserve */
+        CyAsFunctionCallback cb,             /* Callback to call when device has resumed operation. */
+        uint32_t client                      /* Client data to be passed to the callback. */
+		) ;
+
+/* Summary
+   Select the clock frequency to be used when talking to low speed (non-high speed)
+   SD media.
+   
+   Description
+   West Bridge firmware uses a clock frequency less than the maximum possible rate
+   for low speed SD media.  This function selects the frequency setting from between
+   the default speed and the maximum speed. This fonction MUST be completed before
+   starting the storage stack for the setting to be taken into account.
+
+   * Valid in Asynchronous Callback: Yes (if cb is non-zero)
+   * Nestable: Yes
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the operation completed successfully.
+   * CY_AS_ERROR_INVALID_HANDLE - invalid device handle passed in.
+   * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not been configured.
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the device.
+   * CY_AS_ERROR_OUT_OF_MEMORY - failed to allocate memory for the operation.
+   * CY_AS_ERROR_IN_SUSPEND - West Bridge is in low power suspend mode.
+   * CY_AS_ERROR_INVALID_PARAMETER - invalid frequency setting desired.
+   * CY_AS_ERROR_TIMEOUT - West Bridge device did not respond to the operation.
+   * CY_AS_ERROR_INVALID_RESPONSE - active firmware does not support the operation.
+
+   See Also
+   * CyAsLowSpeedSDFreq
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscSetLowSpeedSDFreq(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyAsLowSpeedSDFreq              setting,        /* Frequency setting desired for low speed SD cards */
+        CyAsFunctionCallback            cb,             /* Callback to call on completion */
+        uint32_t                        client          /* Client data to be passed to the callback */
+        ) ;
+
+/* Summary
+   Select the clock frequency to be used when talking to high speed SD/MMC media.
+   
+   Description
+   West Bridge firmware uses a 48 MHz clock to interface with high speed SD/MMC
+   media.  This clock rate can be restricted to 24 MHz if desired.  This function
+   selects the frequency setting to be used. This fonction MUST be completed before
+   starting the storage stack for the setting to be taken into account.
+
+   * Valid in Asynchronous Callback: Yes (if cb is non-zero)
+   * Nestable: Yes
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the operation completed successfully.
+   * CY_AS_ERROR_INVALID_HANDLE - invalid device handle passed in.
+   * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not been configured.
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the device.
+   * CY_AS_ERROR_OUT_OF_MEMORY - failed to allocate memory for the operation.
+   * CY_AS_ERROR_IN_SUSPEND - West Bridge is in low power suspend mode.
+   * CY_AS_ERROR_INVALID_PARAMETER - invalid frequency setting desired.
+   * CY_AS_ERROR_TIMEOUT - West Bridge device did not respond to the operation.
+   * CY_AS_ERROR_INVALID_RESPONSE - active firmware does not support the operation.
+
+   See Also
+   * CyAsLowSpeedSDFreq
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscSetHighSpeedSDFreq(
+        CyAsDeviceHandle                handle,         /* Handle to the West Bridge device */
+        CyAsHighSpeedSDFreq             setting,        /* Frequency setting desired for high speed SD cards */
+        CyAsFunctionCallback            cb,             /* Callback to call on completion */
+        uint32_t                        client          /* Client data to be passed to the callback */
+        ) ;
+/* Summary
+   Select the polarity of the SD_POW output driven by West Bridge.
+   
+   Description
+   The SD_POW signal driven by West Bridge can be used to control the supply
+   of Vcc to the SD/MMC media connected to the device.  This signal is driven
+   as an active high signal by default.  This function can be used to change the
+   polarity of this signal if required. This fonction MUST be completed before
+   starting the storage stack for the setting to be taken into account.
+
+   * Valid in Asynchronous Callback: Yes (if cb is non-zero)
+   * Nestable: Yes
+
+   Returns
+   * CY_AS_ERROR_SUCCESS - the operation completed successfully.
+   * CY_AS_ERROR_INVALID_HANDLE - invalid device handle passed in.
+   * CY_AS_ERROR_NOT_CONFIGURED - West Bridge device has not been configured.
+   * CY_AS_ERROR_NO_FIRMWARE - firmware has not been downloaded to the device.
+   * CY_AS_ERROR_OUT_OF_MEMORY - failed to allocate memory for the operation.
+   * CY_AS_ERROR_IN_SUSPEND - West Bridge is in low power suspend mode.
+   * CY_AS_ERROR_INVALID_PARAMETER - invalid frequency setting desired.
+   * CY_AS_ERROR_TIMEOUT - West Bridge device did not respond to the operation.
+   * CY_AS_ERROR_INVALID_RESPONSE - active firmware does not support the operation.
+
+   See Also
+   * CyAsMiscSignalPolarity
+ */
+EXTERN CyAsReturnStatus_t
+CyAsMiscSetSDPowerPolarity(
+    CyAsDeviceHandle handle,                            /* Handle to the West Bridge device */
+    CyAsMiscSignalPolarity polarity,                    /* Desired polarity setting to the SD_POW signal. */
+    CyAsFunctionCallback cb,                            /* Callback to call on completion. */
+    uint32_t client                                     /* Client data to be passed to the callback. */
+    ) ;
+
+/* For supporting deprecated functions */
+#include "cyasmisc_dep.h"    
+
+#include "cyas_cplus_end.h"
+
+#endif				/* _INCLUDED_CYASMISC_H_ */
+