| 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 */
|
|
|