| Index: arch/arm/mach-tegra/nv/nvrm/core/ap15/ap15rm_power_dfs.h
|
| diff --git a/arch/arm/mach-tegra/nv/nvrm/core/ap15/ap15rm_power_dfs.h b/arch/arm/mach-tegra/nv/nvrm/core/ap15/ap15rm_power_dfs.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..10889666d25cc429346e8438f26d0e74ce2a0f65
|
| --- /dev/null
|
| +++ b/arch/arm/mach-tegra/nv/nvrm/core/ap15/ap15rm_power_dfs.h
|
| @@ -0,0 +1,314 @@
|
| +/*
|
| + * 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.
|
| + *
|
| + */
|
| +
|
| +/**
|
| + * @file
|
| + * @brief <b>nVIDIA Driver Development Kit:
|
| + * Power Resource manager </b>
|
| + *
|
| + * @b Description: NvRM DFS parameters.
|
| + *
|
| + */
|
| +
|
| +#ifndef INCLUDED_AP15RM_POWER_DFS_H
|
| +#define INCLUDED_AP15RM_POWER_DFS_H
|
| +
|
| +#include "nvrm_power.h"
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C"
|
| +{
|
| +#endif /* __cplusplus */
|
| +
|
| +// Min KHz for CPU and AVP with regards to JTAG support - 1MHz * 8 = 8MHz
|
| +// TODO: any other limitations on min KHz?
|
| +// TODO: adjust boost parameters based on testing
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for CPU domain
|
| + */
|
| +#define NVRM_DFS_PARAM_CPU_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 10000, /* Minimum domain frequency 10 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 32000, /* Fixed frequency boost increase 32 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 4000, /* Fixed frequency boost increase 4 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + 3, /* Relative adjustement of average freqiency 1/2^3 ~ 12% */ \
|
| + 1, /* Number of smaple intervals with NRT to trigger boost = 2 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for AVP domain
|
| + */
|
| +#define NVRM_DFS_PARAM_AVP_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 24000, /* Minimum domain frequency 24 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 8000, /* Fixed frequency boost increase 8 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 1000, /* Fixed frequency NRT boost increase 1 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + 3, /* Relative adjustement of average freqiency 1/2^3 ~ 12% */ \
|
| + 2, /* Number of smaple intervals with NRT to trigger boost = 3 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for System clock domain
|
| + */
|
| +#define NVRM_DFS_PARAM_SYSTEM_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 24000, /* Minimum domain frequency 24 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 8000, /* Fixed frequency boost increase 8 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 1000, /* Fixed frequency NRT boost increase 1 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 32, /* Proportional frequency boost decrease 32/256 ~ 12% */ \
|
| + },\
|
| + 5, /* Relative adjustement of average freqiency 1/2^5 ~ 3% */ \
|
| + 2, /* Number of smaple intervals with NRT to trigger boost = 3 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for AHB clock domain
|
| + */
|
| +#define NVRM_DFS_PARAM_AHB_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 24000, /* Minimum domain frequency 24 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 8000, /* Fixed frequency boost increase 8 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 1000, /* Fixed frequency NRT boost increase 1 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 32, /* Proportional frequency boost decrease 32/256 ~ 12% */ \
|
| + },\
|
| + 0, /* Relative adjustement of average freqiency 1/2^0 ~ 100% */ \
|
| + 0, /* Number of smaple intervals with NRT to trigger boost = 1 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for APB clock domain
|
| + */
|
| +#define NVRM_DFS_PARAM_APB_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 15000, /* Minimum domain frequency 15 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 8000, /* Fixed frequency boost increase 8 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 1000, /* Fixed frequency NRT boost increase 1 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 32, /* Proportional frequency boost decrease 32/256 ~ 12% */ \
|
| + },\
|
| + 0, /* Relative adjustement of average freqiency 1/2^0 ~ 100% */ \
|
| + 0, /* Number of smaple intervals with NRT to trigger boost = 1 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for Video-pipe clock domain
|
| + */
|
| +#define NVRM_DFS_PARAM_VPIPE_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 24000, /* Minimum domain frequency 24 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 16000, /* Fixed frequency RT boost increase 16 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 1000, /* Fixed frequency NRT boost increase 1 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + 5, /* Relative adjustement of average freqiency 1/2^5 ~ 3% */ \
|
| + 3, /* Number of smaple intervals with NRT to trigger boost = 4 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/**
|
| + * Default DFS algorithm parameters for EMC clock domain
|
| + */
|
| +#define NVRM_DFS_PARAM_EMC_AP15 \
|
| + NvRmFreqMaximum, /* Maximum domain frequency set to h/w limit */ \
|
| + 16000, /* Minimum domain frequency 16 MHz */ \
|
| + 1000, /* Frequency change upper band 1 MHz */ \
|
| + 1000, /* Frequency change lower band 1 MHz */ \
|
| + { /* RT starvation control parameters */ \
|
| + 16000, /* Fixed frequency RT boost increase 16 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + { /* NRT starvation control parameters */ \
|
| + 1000, /* Fixed frequency NRT boost increase 1 MHz */ \
|
| + 255, /* Proportional frequency boost increase 255/256 ~ 100% */ \
|
| + 128, /* Proportional frequency boost decrease 128/256 ~ 50% */ \
|
| + },\
|
| + 0, /* Relative adjustement of average freqiency 1/2^0 ~ 100% */ \
|
| + 0, /* Number of smaple intervals with NRT to trigger boost = 1 */ \
|
| + 1 /* NRT idle cycles threshold = 1 */
|
| +
|
| +/// Default low corner for core voltage
|
| +#define NVRM_AP15_LOW_CORE_MV (950)
|
| +
|
| +/// Core voltage in suspend
|
| +#define NVRM_AP15_SUSPEND_CORE_MV (1000)
|
| +
|
| +/*****************************************************************************/
|
| +
|
| +/**
|
| + * Initializes activity monitors within the DFS module. Only activity
|
| + * monitors are affected. The rest of module's h/w is preserved.
|
| + *
|
| + * @param pDfs - A pointer to DFS structure.
|
| + *
|
| + * @return NvSuccess if initialization completed successfully
|
| + * or one of common error codes on failure.
|
| + */
|
| +NvError NvRmPrivAp15SystatMonitorsInit(NvRmDfs* pDfs);
|
| +NvError NvRmPrivAp15VdeMonitorsInit(NvRmDfs* pDfs);
|
| +NvError NvRmPrivAp15EmcMonitorsInit(NvRmDfs* pDfs);
|
| +
|
| +/**
|
| + * Deinitializes activity monitors within the DFS module. Only activity
|
| + * monitors are affected. The rest of module's h/w is preserved.
|
| + *
|
| + * @param pDfs - A pointer to DFS structure.
|
| + */
|
| +void NvRmPrivAp15SystatMonitorsDeinit(NvRmDfs* pDfs);
|
| +void NvRmPrivAp15VdeMonitorsDeinit(NvRmDfs* pDfs);
|
| +void NvRmPrivAp15EmcMonitorsDeinit(NvRmDfs* pDfs);
|
| +
|
| +/**
|
| + * Starts activity monitors in the DFS module for the next sample interval.
|
| + *
|
| + * @param pDfs - A pointer to DFS structure.
|
| + * @param pDfsKHz - A pointer to current DFS clock frequencies structure.
|
| + * @param IntervalMs Next sampling interval in ms.
|
| + */
|
| +void
|
| +NvRmPrivAp15SystatMonitorsStart(
|
| + const NvRmDfs* pDfs,
|
| + const NvRmDfsFrequencies* pDfsKHz,
|
| + const NvU32 IntervalMs);
|
| +void
|
| +NvRmPrivAp15VdeMonitorsStart(
|
| + const NvRmDfs* pDfs,
|
| + const NvRmDfsFrequencies* pDfsKHz,
|
| + const NvU32 IntervalMs);
|
| +void
|
| +NvRmPrivAp15EmcMonitorsStart(
|
| + const NvRmDfs* pDfs,
|
| + const NvRmDfsFrequencies* pDfsKHz,
|
| + const NvU32 IntervalMs);
|
| +
|
| +/**
|
| + * Reads idle count from activity monitors in the DFS module. The monitors are
|
| + * stopped.
|
| + *
|
| + * @param pDfs - A pointer to DFS structure.
|
| + * @param pDfsKHz - A pointer to current DFS clock frequencies structure.
|
| + * @param pIdleData - A pointer to idle cycles structure to be filled in with
|
| + * data read from the monitor.
|
| + *
|
| + */
|
| +void
|
| +NvRmPrivAp15SystatMonitorsRead(
|
| + const NvRmDfs* pDfs,
|
| + const NvRmDfsFrequencies* pDfsKHz,
|
| + NvRmDfsIdleData* pIdleData);
|
| +void
|
| +NvRmPrivAp15VdeMonitorsRead(
|
| + const NvRmDfs* pDfs,
|
| + const NvRmDfsFrequencies* pDfsKHz,
|
| + NvRmDfsIdleData* pIdleData);
|
| +void
|
| +NvRmPrivAp15EmcMonitorsRead(
|
| + const NvRmDfs* pDfs,
|
| + const NvRmDfsFrequencies* pDfsKHz,
|
| + NvRmDfsIdleData* pIdleData);
|
| +
|
| +/**
|
| + * Changes RAM timing SVOP settings.
|
| + *
|
| + * @param hRm The RM device handle.
|
| + * @param SvopSetting New SVOP setting.
|
| + */
|
| +void
|
| +NvRmPrivAp15SetSvopControls(
|
| + NvRmDeviceHandle hRm,
|
| + NvU32 SvopSetting);
|
| +
|
| +/**
|
| + * Gets uS Timer RM virtual address,
|
| + *
|
| + * @param hRm The RM device handle.
|
| + *
|
| + * @return uS Timer RM virtual address mapped by RM
|
| + */
|
| +void* NvRmPrivAp15GetTimerUsVirtAddr(NvRmDeviceHandle hRm);
|
| +
|
| +#ifdef __cplusplus
|
| +}
|
| +#endif /* __cplusplus */
|
| +
|
| +#endif // INCLUDED_AP15RM_POWER_DFS_H
|
|
|