Index: arch/arm/mach-tegra/nv/include/nvidlcmd.h |
diff --git a/arch/arm/mach-tegra/nv/include/nvidlcmd.h b/arch/arm/mach-tegra/nv/include/nvidlcmd.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..510920d4b2077f65a5874385c1e8dec5514912f0 |
--- /dev/null |
+++ b/arch/arm/mach-tegra/nv/include/nvidlcmd.h |
@@ -0,0 +1,132 @@ |
+/* |
+ * Copyright (c) 2009 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_NVIDLCMD_H |
+#define INCLUDED_NVIDLCMD_H |
+ |
+#include "nvos.h" |
+#include "nvreftrack.h" |
+ |
+// name of the master FIFO socket on systems which use the master FIFO |
+#define NVRM_DAEMON_SOCKNAME "/dev/nvrm_daemon" |
+ |
+#define NV_DAEMON_MODULES(F) \ |
+ F(NvRmGraphics) \ |
+ F(NvMM) \ |
+ F(NvDDKAudio) \ |
+ F(NvDispMgr) |
+ |
+#define NV_KERNEL_MODULES(F) \ |
+ F(NvRm) \ |
+ F(NvECPackage) \ |
+ F(NvStorManager) \ |
+ F(NvVib) |
+ |
+// These codes are sent to the daemon to initiate commands from each module. |
+typedef enum NvRmDaemonCodeEnum |
+{ |
+ NvRmDaemonCode_FifoCreate = 0x281e0001, |
+ NvRmDaemonCode_FifoDelete, |
+ |
+#define F(X) NvRmDaemonCode_##X, |
+ NV_DAEMON_MODULES(F) |
+#undef F |
+ NvRmDaemonCode_Garbage = 0xdeadbeef, |
+ |
+ NvRmDaemonCode_Force32 = 0x7FFFFFFF |
+} NvRmDaemonCode; |
+ |
+/* Defines a pair of objects for transferring data to and from the daemon. |
+ * FifoIn is used to read data from the daemon; FifoOut is used to write data |
+ * to the daemon |
+ */ |
+typedef struct NvIdlFifoPairRec |
+{ |
+ void *FifoIn; |
+ void *FifoOut; |
+} NvIdlFifoPair; |
+ |
+ |
+/* These functions are called by the IDL-generated code: |
+ * |
+ * *_NvIdlGetIoctlCode() - get code to use to identify module |
+ * *_NvIdlGetFifos() - get a fifo pair for communication |
+ * *_NvIdlReleaseFifos() - get a fifo pair for communication |
+ * *_NvIdlGetIoctlFile() - get the file to use for ioctl |
+ */ |
+ |
+#define NV_IDL_DECLS_STUB(pfx) \ |
+ NvU32 pfx##_NvIdlGetIoctlCode(void); \ |
+ NvOsFileHandle pfx##_NvIdlGetIoctlFile(void); |
+ |
+#define NV_IDL_DECLS_DISPATCH_KERNEL(pfx) \ |
+ NvError pfx##_Dispatch( \ |
+ void *InBuffer, \ |
+ NvU32 InSize, \ |
+ void *OutBuffer, \ |
+ NvU32 OutSize, \ |
+ NvDispatchCtx* Ctx); |
+ |
+#if NVOS_IS_LINUX |
+#define NV_IDL_DECLS_DISPATCH_DAEMON(pfx) \ |
+ NvError pfx##_Dispatch( \ |
+ void* hFifoIn, \ |
+ void* hFifoOut, \ |
+ NvDispatchCtx* Ctx); |
+#else |
+#define NV_IDL_DECLS_DISPATCH_DAEMON(p) \ |
+ NV_IDL_DECLS_DISPATCH_KERNEL(p) |
+#endif |
+ |
+#define F(X) NV_IDL_DECLS_STUB(X) |
+NV_DAEMON_MODULES(F) |
+NV_KERNEL_MODULES(F) |
+#undef F |
+ |
+#define F(X) NV_IDL_DECLS_DISPATCH_DAEMON(X) |
+NV_DAEMON_MODULES(F) |
+#undef F |
+ |
+#define F(X) NV_IDL_DECLS_DISPATCH_KERNEL(X) |
+NV_KERNEL_MODULES(F) |
+#undef F |
+ |
+/* utility functions called by stubs & dispatchers for transferring data |
+ * over FIFO objects. semantics are identical to NvOsFread / NvOsFwrite */ |
+NvError NvIdlHelperFifoRead(void *fifo, void *ptr, size_t len, size_t *read); |
+NvError NvIdlHelperFifoWrite(void *fifo, const void *ptr, size_t len); |
+ |
+/* utility functions called by stub helpers to allocate and free FIFOs */ |
+NvError NvIdlHelperGetFifoPair(NvIdlFifoPair **pFifo); |
+void NvIdlHelperReleaseFifoPair(NvIdlFifoPair *pFifo); |
+ |
+#endif |