Fix for Bug 3944 - Relative paths are systematically too long in Beagleboard bld.inf and .mmp files
/* Cypress West Bridge API header file (cyaslowlevel.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_CYASLOWLEVEL_H_#define _INCLUDED_CYASLOWLEVEL_H_/*@@Low Level Communications Summary The low level communications module is responsible for communications between the West Bridge device and the P port processor. Communications is organized as a series of requests and subsequent responses. For each request there is a one and only one response. Requests may go from the West Bridge device to the P port processor, or from the P Port processor to the West Bridge device. Description Requests are issued across what is called a context. A context is a single channel of communications from one processor to another processor. There can be only a single request outstanding on a context at a given time. Contexts are used to identify subsystems that can only process a single request at a time, but are independent of other contexts in the system. For instance, there is a context for communicating storage commands from the P port processor to the West Bridge device. There is also a context for communicating USB commands from the P port processor to the West Bridge device. Requests and responses are identical with the exception of the type bit in the request/response header. If the type bit is one, the packet is a request. If this bit is zero, the packet is a response. Also encoded within the header of the request/response is the code. The code is a command code for a request, or a response code for a response. For a request, the code is a function of the context. The code 0 has one meaning for the storage context and a different meaning for the USB context. The code is treated differently in the response. If the code in the response is less than 16, then the meaning of the response is global across all contexts. If the response is greater than or equal to 16, then the response is specific to the associated context. Requests and responses are transferred between processors through the mailbox registers. It may take one or more cycles to transmit a complete request or response. The context is encoded into each cycle of the transfer to insure the receiving processor can route the data to the appropriate context for processing. In this way, the traffic from multiple contexts can be multiplexed into a single data stream through the mailbox registers by the sending processor, and demultiplexed from the mailbox registers by the receiving processor. * Firmware Assumptions * The firmware assumes that mailbox contents will be consumed immediately. Therefore for multi-cycle packets, the data is sent in a tight polling loop from the firmware. This implies that the data must be read from the mailbox register on the P port side and processed immediately or performance of the firmware will suffer. In order to insure this is the case, the data from the mailboxes is read and stored immediately in a per context buffer. This occurs until the entire packet is received at which time the request packet is processed. Since the protocol is designed to allow for only one outstanding packet at a time, the firmware can never be in a position of waiting on the mailbox registers while the P port is processing a request. Only after the response to the previous request is sent will another request be sent.*/#include "cyashal.h"#include "cyasdevice.h"#include "cyas_cplus_start.h"/* * Constants */#define CY_AS_REQUEST_RESPONSE_CODE_MASK (0x00ff)#define CY_AS_REQUEST_RESPONSE_CONTEXT_MASK (0x0F00)#define CY_AS_REQUEST_RESPONSE_CONTEXT_SHIFT (8)#define CY_AS_REQUEST_RESPONSE_TYPE_MASK (0x4000)#define CY_AS_REQUEST_RESPONSE_LAST_MASK (0x8000)#define CY_AS_REQUEST_RESPONSE_CLEAR_STR_FLAG (0x1000)/* * These macros extract the data from a 16 bit value */#define CyAsMboxGetCode(c) ((uint8_t)((c) & CY_AS_REQUEST_RESPONSE_CODE_MASK))#define CyAsMboxGetContext(c) ((uint8_t)(((c) & CY_AS_REQUEST_RESPONSE_CONTEXT_MASK) >> CY_AS_REQUEST_RESPONSE_CONTEXT_SHIFT))#define CyAsMboxIsLast(c) ((c) & CY_AS_REQUEST_RESPONSE_LAST_MASK)#define CyAsMboxIsRequest(c) (((c) & CY_AS_REQUEST_RESPONSE_TYPE_MASK) != 0)#define CyAsMboxIsResponse(c) (((c) & CY_AS_REQUEST_RESPONSE_TYPE_MASK) == 0)/* * These macros (not yet written) pack data into or extract data * from the m_box0 field of the request or response */#define CyAsLLRequestResponse_SetCode(req, code) \ ((req)->box0 = ((req)->box0 & ~CY_AS_REQUEST_RESPONSE_CODE_MASK) | \ (code & CY_AS_REQUEST_RESPONSE_CODE_MASK))#define CyAsLLRequestResponse_GetCode(req) CyAsMboxGetCode((req)->box0)#define CyAsLLRequestResponse_SetContext(req, context) \ ((req)->box0 |= ((context) << CY_AS_REQUEST_RESPONSE_CONTEXT_SHIFT))#define CyAsLLRequestResponse_SetClearStorageFlag(req) \ ((req)->box0 |= CY_AS_REQUEST_RESPONSE_CLEAR_STR_FLAG)#define CyAsLLRequestResponse_GetContext(req) CyAsMboxGetContext((req)->box0)#define CyAsLLRequestResponse_IsLast(req) CyAsMboxIsLast((req)->box0)#define CYAnLLRequestResponse__SetLast(req) \ ((req)->box0 |= CY_AS_REQUEST_RESPONSE_LAST_MASK)#define CyAsLLRequestResponse_IsRequest(req) CyAsMboxIsRequest((req)->box0)#define CyAsLLRequestResponse_SetRequest(req) \ ((req)->box0 |= CY_AS_REQUEST_RESPONSE_TYPE_MASK)#define CyAsLLRequestResponse_SetResponse(req) \ ((req)->box0 &= ~CY_AS_REQUEST_RESPONSE_TYPE_MASK)#define CyAsLLRequestResponse_IsResponse(req) CyAsMboxIsResponse((req)->box0)#define CyAsLLRequestResponse_GetWord(req, offset) ((req)->data[(offset)])#define CyAsLLRequestResponse_SetWord(req, offset, value) ((req)->data[(offset)] = value)typedef enum CyAsRemoveRequestResult_t{ CyAsRemoveRequestSucessful, CyAsRemoveRequestInTransit, CyAsRemoveRequestNotFound} CyAsRemoveRequestResult_t ;/* Summary Start the low level communications module Description*/CyAsReturnStatus_tCyAsLLStart( CyAsDevice *dev_p ) ;CyAsReturnStatus_tCyAsLLStop( CyAsDevice *dev_p ) ;CyAsLLRequestResponse *CyAsLLCreateRequest( CyAsDevice *dev_p, uint16_t code, uint8_t context, uint16_t length /* Length of the request in 16 bit words */ ) ;void CyAsLLInitRequest( CyAsLLRequestResponse *req_p, uint16_t code, uint16_t context, uint16_t length) ;voidCyAsLLInitResponse( CyAsLLRequestResponse *req_p, uint16_t length) ;voidCyAsLLDestroyRequest( CyAsDevice *dev_p, CyAsLLRequestResponse *) ;CyAsLLRequestResponse *CyAsLLCreateResponse( CyAsDevice *dev_p, uint16_t length /* Length of the request in 16 bit words */ ) ;CyAsRemoveRequestResult_tCyAsLLRemoveRequest( CyAsDevice *dev_p, CyAsContext *ctxt_p, CyAsLLRequestResponse *req_p, CyBool force ) ;voidCyAsLLRemoveAllRequests(CyAsDevice *dev_p, CyAsContext *ctxt_p) ;voidCyAsLLDestroyResponse( CyAsDevice *dev_p, CyAsLLRequestResponse *) ;CyAsReturnStatus_t CyAsLLSendRequest( CyAsDevice * dev_p, /* The West Bridge device */ CyAsLLRequestResponse * req, /* The request to send */ CyAsLLRequestResponse * resp, /* Storage for a reply, must be sure it is of sufficient size */ CyBool sync, /* If true, this is a sync request */ CyAsResponseCallback cb /* Callback to call when reply is received */) ;CyAsReturnStatus_tCyAsLLSendRequestWaitReply( CyAsDevice * dev_p, /* The West Bridge device */ CyAsLLRequestResponse * req, /* The request to send */ CyAsLLRequestResponse * resp /* Storage for a reply, must be sure it is of sufficient size */) ;/* Summary This function registers a callback function to be called when a request arrives on a given context. Description Returns * CY_AS_ERROR_SUCCESS*/extern CyAsReturnStatus_tCyAsLLRegisterRequestCallback( CyAsDevice *dev_p, uint8_t context, CyAsResponseCallback cb ) ;/* Summary This function packs a set of bytes given by the data_p pointer into a request, reply structure.*/extern voidCyAsLLRequestResponse_Pack( CyAsLLRequestResponse *req, /* The destintation request or response */ uint32_t offset, /* The offset of where to pack the data */ uint32_t length, /* The length of the data to pack in bytes */ void *data_p /* The data to pack */ ) ;/* Summary This function unpacks a set of bytes from a request/reply structure into a segment of memory given by the data_p pointer.*/extern void CyAsLLRequestResponse_Unpack( CyAsLLRequestResponse *req, /* The source of the data to unpack */ uint32_t offset, /* The offset of the data to unpack */ uint32_t length, /* The length of the data to unpack in bytes */ void *data_p /* The destination of the unpack operation */ ) ;/* Summary This function sends a status response back to the West Bridge device in response to a previously send request*/extern CyAsReturnStatus_tCyAsLLSendStatusResponse( CyAsDevice *dev_p, /* The West Bridge device */ uint8_t context, /* The context to send the response on */ uint16_t code, /* The success/failure code to send */ uint8_t clear_storage) ; /* Flag to clear wait on storage context *//* Summary This function sends a response back to the West Bridge device. Description This function sends a response back to the West Bridge device. The response is sent on the context given by the 'context' variable. The code for the response is given by the 'code' argument. The data for the response is given by the data and length arguments.*/extern CyAsReturnStatus_tCyAsLLSendDataResponse( CyAsDevice *dev_p, /* The West Bridge device */ uint8_t context, /* The context to send the response on */ uint16_t code, /* The response code to use */ uint16_t length, /* The length of the data for the response */ void *data /* The data for the response */) ;/* Summary This function removes any requests of the given type from the given context. Description This function removes requests of a given type from the context given via the context number.*/extern CyAsReturnStatus_tCyAsLLRemoveEpDataRequests( CyAsDevice *dev_p, /* The West Bridge device */ CyAsEndPointNumber_t ep ) ;#include "cyas_cplus_end.h"#endif /* _INCLUDED_CYASLOWLEVEL_H_ */