diff options
Diffstat (limited to 'arch/arm/mach-tegra/nvrm/core/common/nvrm_message.h')
-rw-r--r-- | arch/arm/mach-tegra/nvrm/core/common/nvrm_message.h | 270 |
1 files changed, 270 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/nvrm/core/common/nvrm_message.h b/arch/arm/mach-tegra/nvrm/core/common/nvrm_message.h new file mode 100644 index 000000000000..e32033f6aa05 --- /dev/null +++ b/arch/arm/mach-tegra/nvrm/core/common/nvrm_message.h @@ -0,0 +1,270 @@ +/* + * Copyright (c) 2010 NVIDIA Corporation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NVIDIA Corporation nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef INCLUDED_NVRM_MESSAGE_H +#define INCLUDED_NVRM_MESSAGE_H + +#include "nvrm_memmgr.h" +#include "nvrm_module.h" +#include "nvrm_transport.h" +#include "nvrm_power.h" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +// Maximum message queue depth +enum {MAX_QUEUE_DEPTH = 5}; +// Maximum message length +enum {MAX_MESSAGE_LENGTH = 256}; +// Maximum argument size +enum {MAX_ARGS_SIZE = 220}; +// Max String length +enum {MAX_STRING_LENGTH = 200}; + +typedef struct NvRmRPCRec +{ + NvRmTransportHandle svcTransportHandle; + NvOsSemaphoreHandle TransportRecvSemId; + NvOsMutexHandle RecvLock; + NvRmDeviceHandle hRmDevice; + NvBool isConnected; +} NvRmRPC; + +typedef struct NvRmRPCRec *NvRmRPCHandle; + +void NvRmPrivProcessMessage(NvRmRPCHandle hRPCHandle, char *pRecvMessage, int messageLength); + +typedef enum +{ + NvRmMsg_MemHandleCreate = 0x0, + NvRmMsg_MemHandleCreate_Response, + NvRmMsg_MemHandleOpen, + NvRmMsg_MemHandleFree, + NvRmMsg_MemAlloc, + NvRmMsg_MemAlloc_Response, + NvRmMsg_MemPin, + NvRmMsg_MemPin_Response, + NvRmMsg_MemUnpin, + NvRmMsg_MemUnpin_Response, + NvRmMsg_MemGetAddress, + NvRmMsg_MemGetAddress_Response, + NvRmMsg_HandleFromId, + NvRmMsg_HandleFromId_Response, + NvRmMsg_PowerModuleClockControl, + NvRmMsg_PowerModuleClockControl_Response, + NvRmMsg_ModuleReset, + NvRmMsg_ModuleReset_Response, + NvRmMsg_PowerRegister, + NvRmMsg_PowerUnRegister, + NvRmMsg_PowerStarvationHint, + NvRmMsg_PowerBusyHint, + NvRmMsg_PowerBusyMultiHint, + NvRmMsg_PowerDfsGetState, + NvRmMsg_PowerDfsGetState_Response, + NvRmMsg_PowerResponse, + NvRmMsg_PowerModuleGetMaxFreq, + NvRmMsg_InitiateLP0, + NvRmMsg_InitiateLP0_Response, + NvRmMsg_RemotePrintf, + NvRmMsg_AttachModule, + NvRmMsg_AttachModule_Response, + NvRmMsg_DetachModule, + NvRmMsg_DetachModule_Response, + NvRmMsg_AVP_Reset, + NvRmMsg_Force32 = 0x7FFFFFFF +}NvRmMsg; + +typedef struct{ + NvRmMsg msg; + NvU32 size; +}NvRmMessage_HandleCreat; + +typedef struct{ + NvRmMsg msg; + NvRmMemHandle hMem; + NvError error; +}NvRmMessage_HandleCreatResponse; + +typedef struct{ + NvRmMsg msg; + NvRmMemHandle hMem; +}NvRmMessage_HandleFree; + +typedef struct{ + NvRmMsg msg; + NvError error; +}NvRmMessage_Response; + +typedef struct{ + NvRmMsg msg; + NvRmMemHandle hMem; + NvRmHeap Heaps[NvRmHeap_Num]; + NvU32 NumHeaps; + NvU32 Alignment; + NvOsMemAttribute Coherency; +}NvRmMessage_MemAlloc; + +typedef struct{ + NvRmMsg msg; + NvRmMemHandle hMem; + NvU32 Offset; +}NvRmMessage_GetAddress; + +typedef struct{ + NvRmMsg msg; + NvU32 address; +}NvRmMessage_GetAddressResponse; + +typedef struct{ + NvRmMsg msg; + NvU32 id; +}NvRmMessage_HandleFromId; + +typedef struct{ + NvRmMsg msg; + NvRmMemHandle hMem; +}NvRmMessage_Pin; + +typedef struct{ + NvRmMsg msg; + NvU32 address; +}NvRmMessage_PinResponse; + +typedef struct{ + NvRmMsg msg; + NvRmModuleID ModuleId; + NvU32 ClientId; + NvBool Enable; +}NvRmMessage_Module; + +typedef struct{ + NvRmMsg msg; + NvU32 clientId; + NvOsSemaphoreHandle eventSema; +}NvRmMessage_PowerRegister; + +typedef struct{ + NvRmMsg msg; + NvU32 clientId; +}NvRmMessage_PowerUnRegister; + +typedef struct{ + NvRmMsg msg; + NvRmDfsClockId clockId; + NvU32 clientId; + NvBool starving; +}NvRmMessage_PowerStarvationHint; + +typedef struct{ + NvRmMsg msg; + NvRmDfsClockId clockId; + NvU32 clientId; + NvU32 boostDurationMS; + NvRmFreqKHz boostKHz; +}NvRmMessage_PowerBusyHint; + +typedef struct{ + NvRmMsg msg; + NvU32 numHints; + NvU8 busyHints[MAX_STRING_LENGTH]; +}NvRmMessage_PowerBusyMultiHint; + +typedef struct{ + NvRmMsg msg; +}NvRmMessage_PowerDfsGetState; + +typedef struct{ + NvRmMsg msg; + NvError error; + NvU32 clientId; +}NvRmMessage_PowerRegister_Response; + +typedef struct{ + NvRmMsg msg; + NvRmDfsRunState state; +}NvRmMessage_PowerDfsGetState_Response; + +typedef struct{ + NvRmMsg msg; + NvRmModuleID moduleID; +}NvRmMessage_PowerModuleGetMaxFreq; + +typedef struct{ + NvRmMsg msg; + NvRmFreqKHz freqKHz; +}NvRmMessage_PowerModuleGetMaxFreq_Response; + +typedef struct{ + NvRmMsg msg; + NvU32 sourceAddr; + NvU32 bufferAddr; + NvU32 bufferSize; +} NvRmMessage_InitiateLP0; + +typedef struct{ + NvRmMsg msg; + const char string[MAX_STRING_LENGTH]; +} NvRmMessage_RemotePrintf; + + +typedef struct{ + NvRmMsg msg; + NvU32 entryAddress; + NvU32 size; + char args[MAX_ARGS_SIZE]; + NvU32 reason; +}NvRmMessage_AttachModule; + +typedef struct{ + NvRmMsg msg; + NvError error; +}NvRmMessage_AttachModuleResponse; + +typedef struct{ + NvRmMsg msg; + NvU32 reason; + NvU32 entryAddress; +}NvRmMessage_DetachModule; + +typedef struct{ + NvRmMsg msg; + NvError error; +}NvRmMessage_DetachModuleResponse; + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif |