Index: arch/arm/mach-tegra/nv/include/nvrm_rmctrace.h |
diff --git a/arch/arm/mach-tegra/nv/include/nvrm_rmctrace.h b/arch/arm/mach-tegra/nv/include/nvrm_rmctrace.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..22a9eb45eb71028629d899314c5e36d05f0656d8 |
--- /dev/null |
+++ b/arch/arm/mach-tegra/nv/include/nvrm_rmctrace.h |
@@ -0,0 +1,147 @@ |
+/* |
+ * Copyright (c) 2007-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_NVRM_RMCTRACE_H |
+#define INCLUDED_NVRM_RMCTRACE_H |
+ |
+#include "nvcommon.h" |
+#include "nvos.h" |
+#include "nvrm_init.h" |
+ |
+/** |
+ * RMC is a file format for capturing accesses to hardware, both memory |
+ * and register, that may be played back against a simulator. Drivers |
+ * are expected to emit RMC tracing if RMC tracing is enabled. |
+ * |
+ * The RM will already have an RMC file open before any drivers are expected |
+ * to access it, so it is not necessary for NvRmRmcOpen or Close to be called |
+ * by anyone except the RM itself (but drivers may want to if capturing a |
+ * subset of commands is useful). |
+ */ |
+ |
+#ifdef __cplusplus |
+extern "C" |
+{ |
+#endif /* __cplusplus */ |
+ |
+#if !defined(NV_OAL) |
+#define NV_OAL 0 |
+#endif |
+ |
+// FIXME: better rmc compile time macros |
+#if !defined(NV_DEF_RMC_TRACE) |
+#if NV_DEBUG && !NV_OAL |
+#define NV_DEF_RMC_TRACE 1 |
+#else |
+#define NV_DEF_RMC_TRACE 0 |
+#endif |
+#endif |
+ |
+/** |
+ * exposed structure for RMC files. |
+ */ |
+typedef struct NvRmRMCFile_t |
+{ |
+ NvOsFileHandle file; |
+ NvBool enable; /* enable bit for writes */ |
+} NvRmRmcFile; |
+ |
+/** |
+ * opens the an RMC file. |
+ * |
+ * @param name The name of the rmc file |
+ * @param rmc Out param - the opened rmc file (if successful) |
+ * |
+ * NvOsFile* operatations should not be used directly since RMC commands |
+ * or comments may be emited to the file on open/close/etc. |
+ */ |
+NvError |
+NvRmRmcOpen( const char *name, NvRmRmcFile *rmc ); |
+ |
+/** |
+ * closes an RMC file. |
+ * |
+ * @param rmc The rmc file to close. |
+ */ |
+void |
+NvRmRmcClose( NvRmRmcFile *rmc ); |
+ |
+/** |
+ * emits a string to the RMC file. |
+ * |
+ * @param file The RMC file |
+ * @param format Printf style argument format string |
+ * |
+ * NvRmRmcOpen must be called before this function. |
+ * |
+ * This function should be called via a macro so that it may be compiled out. |
+ * Note that double parens will be needed: |
+ * |
+ * NVRM_RMC_TRACE(( file, "# filling memory with stuff\n" )); |
+ */ |
+void |
+NvRmRmcTrace( NvRmRmcFile *rmc, const char *format, ... ); |
+ |
+/** |
+ * retrieves the RM's global RMC file. |
+ * |
+ * @param hDevice The RM instance |
+ * @param file Output param: the RMC file |
+ */ |
+NvError |
+NvRmGetRmcFile( NvRmDeviceHandle hDevice, NvRmRmcFile **file ); |
+ |
+#if NV_DEF_RMC_TRACE |
+#define NVRM_RMC_TRACE(a) NvRmRmcTrace a |
+/** |
+ * enable or disable RMC tracing at runtime. |
+ * |
+ * @param file The RMC file |
+ * @param enable Either enable or disable rmc tracing |
+ */ |
+#define NVRM_RMC_ENABLE(f, e) \ |
+ ((f)->enable = (e)) |
+ |
+#define NVRM_RMC_IS_ENABLED(f) \ |
+ ((f)->enable != 0) |
+ |
+#else |
+#define NVRM_RMC_TRACE(a) (void)0 |
+#define NVRM_RMC_ENABLE(f,e) (void)0 |
+#define NVRM_RMC_IS_ENABLED(f) (void)0 |
+#endif |
+ |
+#ifdef __cplusplus |
+} |
+#endif /* __cplusplus */ |
+ |
+#endif /* NVRM_RMCTRACE_H */ |