Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2764)

Unified Diff: arch/arm/mach-tegra/nv/include/nvodm_tmon.h

Issue 3256004: [ARM] tegra: add nvos/nvrm/nvmap drivers (Closed) Base URL: ssh://git@gitrw.chromium.org/kernel.git
Patch Set: remove ap15 headers Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvodm_services.h ('k') | arch/arm/mach-tegra/nv/include/nvodm_touch.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: arch/arm/mach-tegra/nv/include/nvodm_tmon.h
diff --git a/arch/arm/mach-tegra/nv/include/nvodm_tmon.h b/arch/arm/mach-tegra/nv/include/nvodm_tmon.h
new file mode 100644
index 0000000000000000000000000000000000000000..ebe90f2b7079e904e83b29a909b24a25775889d4
--- /dev/null
+++ b/arch/arm/mach-tegra/nv/include/nvodm_tmon.h
@@ -0,0 +1,296 @@
+/*
+ * 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.
+ *
+ */
+
+/**
+ * @file
+ * <b>NVIDIA Tegra ODM Kit:
+ * Temperature Monitor Interface</b>
+ *
+ * @b Description: Defines the ODM interface for Temperature Monitor (TMON).
+ *
+ */
+
+#ifndef INCLUDED_NVODM_TMON_H
+#define INCLUDED_NVODM_TMON_H
+
+#include "nvcommon.h"
+#include "nvodm_services.h"
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/**
+ * @defgroup nvodm_tmon Temperature Monitor Adaptation Interface
+ *
+ * This is the temperature monitor (TMON) ODM adaptation interface, which
+ * handles the abstraction of external devices monitoring temperature zones
+ * on NVIDIA SoC based platforms. For the clients of this API, each zone has
+ * its own monitoring device. Dependencies introduced by multi-channel devices
+ * capable of monitoring several zones are resolved inside the implementation
+ * layer.
+ *
+ * @ingroup nvodm_adaptation
+ * @{
+ */
+
+/**
+ * Defines an opaque handle for TMON device.
+ */
+typedef struct NvOdmTmonDeviceRec *NvOdmTmonDeviceHandle;
+
+/**
+ * Defines an opaque handle to the TMON interrupt interface.
+ */
+typedef struct NvOdmTmonIntrRec *NvOdmTmonIntrHandle;
+
+/**
+ * Defines temperature zones.
+ */
+typedef enum
+{
+ /// Specifies ambient temperature zone.
+ NvOdmTmonZoneID_Ambient = 1,
+
+ /// Specifies SoC core temperature zone.
+ NvOdmTmonZoneID_Core,
+
+ NvOdmTmonZoneID_Num,
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmTmonZoneID_Force32 = 0x7FFFFFFFUL
+} NvOdmTmonZoneID;
+
+/**
+ * Defines temperature monitoring configuration parameters.
+ */
+typedef enum
+{
+ /// Identifies temperature sampling interval in ms.
+ NvOdmTmonConfigParam_SampleMs = 1,
+
+ /// Identifies High temperature boundary for TMON out of limit
+ /// interrupt (in degrees C).
+ NvOdmTmonConfigParam_IntrLimitHigh,
+
+ /// Identifies Low temperature boundary for TMON out of limit
+ /// interrupt (in degrees C).
+ NvOdmTmonConfigParam_IntrLimitLow,
+
+ /// Identifies temperature threshold for TMON comparator that
+ /// controls h/w critical shutdown mechanism (in degrees C).
+ NvOdmTmonConfigParam_HwLimitCrit,
+
+ NvOdmTmonConfigParam_Num,
+ /// Ignore -- Forces compilers to make 32-bit enums.
+ NvOdmTmonConfigParam_Force32 = 0x7FFFFFFFUL
+} NvOdmTmonConfigParam;
+
+/// Special value for configuration parameters.
+#define ODM_TMON_PARAMETER_UNSPECIFIED (0x7FFFFFFF)
+
+/**
+ * Holds configuration parameter capabilities.
+ */
+typedef struct NvOdmTmonParameterCapsRec
+{
+ /// Specifies maximum parameter value (units depend on the parameter).
+ NvS32 MaxValue;
+
+ /// Specifies minimum parameter value (units depend on the parameter).
+ NvS32 MinValue;
+
+ /// Specifies ODM protection attribute; if \c NV_TRUE TMON ODM Kit would
+ /// not allow to change the parameter.
+ NvBool OdmProtected;
+} NvOdmTmonParameterCaps;
+
+/**
+ * Holds temperature monitoring device capabilities.
+ */
+typedef struct NvOdmTmonCapabilitiesRec
+{
+ /// Specifies maximum temperature limit for TMON operations (in degrees C).
+ NvS32 Tmax;
+
+ /// Specifies minimum temperature limit for TMON operations (in degrees C).
+ NvS32 Tmin;
+
+ /// Specifies support for TMON out of limit interrupt.
+ NvBool IntrSupported;
+
+ /// Specifies support for TMON hardware critical shutdown mechanism.
+ NvBool HwCriticalSupported;
+
+ /// Specifies support for TMON hardware auto-cooling mechanism (e.g., fan).
+ NvBool HwCoolingSupported;
+} NvOdmTmonCapabilities;
+
+
+/**
+ * Gets a handle to the TMON in the specified zone.
+ *
+ * @param ZoneId The targeted temperature zone.
+ *
+ * @return TMON handle, NULL if zone is not monitored.
+ */
+NvOdmTmonDeviceHandle
+NvOdmTmonDeviceOpen(NvOdmTmonZoneID ZoneId);
+
+/**
+ * Closes the TMON handle.
+ *
+ * @param hTmon The TMON handle to be closed.
+ * If NULL, this API has no effect.
+ */
+void NvOdmTmonDeviceClose(NvOdmTmonDeviceHandle hTmon);
+
+/**
+ * Gets TMON device capabilities.
+ *
+ * @param hTmon A handle to the TMON device.
+ * @param pCaps A pointer to the TMON device capabilities returned by the ODM.
+ */
+void
+NvOdmTmonCapabilitiesGet(
+ NvOdmTmonDeviceHandle hTmon,
+ NvOdmTmonCapabilities* pCaps);
+
+/**
+ * Gets TMON configuration parameter capabilities.
+ *
+ * @param hTmon A handle to the TMON device.
+ * @param ParamId The targeted parameter.
+ * @param pCaps A pointer to the targeted parameter capabilities
+ * returned by the ODM.
+ *
+ * Special value ::ODM_TMON_PARAMETER_UNSPECIFIED is returned as maximum and
+ * minimum value in capabilities structure if the targeted parameter is not
+ * supported.
+ */
+void
+NvOdmTmonParameterCapsGet(
+ NvOdmTmonDeviceHandle hTmon,
+ NvOdmTmonConfigParam ParamId,
+ NvOdmTmonParameterCaps* pCaps);
+
+/**
+ * Gets current zone temperature.
+ *
+ * @param hTmon A handle to the TMON device.
+ * @param pDegreesC A pointer to the zone temperature (in degrees C)
+ * returned by the ODM.
+ *
+ * @return NV_TRUE if successful, or NV_FALSE otherwise.
+ */
+NvBool
+NvOdmTmonTemperatureGet(
+ NvOdmTmonDeviceHandle hTmon,
+ NvS32* pDegreesC);
+
+/**
+ * Configures specified TMON parameter for the temperature zone.
+ *
+ * @param hTmon A handle to the TMON device.
+ * @param ParamId The targeted parameter to be updated.
+ * @param pSetting A pointer to a variable with parameter settings.
+ * On entry, specifies new requested settings, on exit, actually configured
+ * settings as the best approximation of the request.
+ *
+ * The requested setting is clipped to the maximum/minimum values for the
+ * respective parameter. If special value ::ODM_TMON_PARAMETER_UNSPECIFIED is
+ * specified on entry, current parameter value is preserved and retrieved on
+ * exit. If special value \c ODM_TMON_PARAMETER_UNSPECIFIED is returned on exit,
+ * the targeted parameter is not supported for the given zone.
+ *
+ * @return NV_TRUE if successful, or NV_FALSE otherwise
+ */
+NvBool
+NvOdmTmonParameterConfig(
+ NvOdmTmonDeviceHandle hTmon,
+ NvOdmTmonConfigParam ParamId,
+ NvS32* pSetting);
+
+/**
+ * Suspends temperature zone monitoring.
+ *
+ * @param hTmon A handle to the TMON device.
+ *
+ * @return NV_TRUE if successful, or NV_FALSE otherwise.
+ */
+NvBool NvOdmTmonSuspend(NvOdmTmonDeviceHandle hTmon);
+
+/**
+ * Resumes temperature zone monitoring.
+ *
+ * @param hTmon A handle to the TMON device.
+ *
+ * @return NV_TRUE if successful, or NV_FALSE otherwise.
+ */
+NvBool NvOdmTmonResume(NvOdmTmonDeviceHandle hTmon);
+
+/**
+ * Registers for TMON out of limit interrupt.
+ *
+ * @param hTmon A handle to the TMON device.
+ * @param Callback The callback function that is called when TMON
+ * interrupt triggers.
+ * @param arg The argument passed to the callback when it is
+ * invoked by TMON IST.
+ *
+ * @return TMON interrupt handle, NULL if failed to register.
+ */
+NvOdmTmonIntrHandle
+NvOdmTmonIntrRegister(
+ NvOdmTmonDeviceHandle hTmon,
+ NvOdmInterruptHandler Callback,
+ void* arg);
+
+/**
+ * Unregisters TMON interrupt.
+ *
+ * @param hTmon A handle to the TMON device.
+ * @param hIntr A TMON interrupt handle.
+ * If NULL, this API has no effect.
+ */
+void
+NvOdmTmonIntrUnregister(
+ NvOdmTmonDeviceHandle hTmon,
+ NvOdmTmonIntrHandle hIntr);
+
+#if defined(__cplusplus)
+}
+#endif
+
+/** @} */
+
+#endif // INCLUDED_NVODM_TMON_H
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvodm_services.h ('k') | arch/arm/mach-tegra/nv/include/nvodm_touch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698