Index: arch/arm/mach-tegra/nv/nvrm/core/common/nvrm_message.h |
diff --git a/arch/arm/mach-tegra/nv/nvrm/core/common/nvrm_message.h b/arch/arm/mach-tegra/nv/nvrm/core/common/nvrm_message.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e32033f6aa056b950bf34cbf880a5b4f00702e67 |
--- /dev/null |
+++ b/arch/arm/mach-tegra/nv/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 |