Files
m241Neelima/vxworks-6.9/target/h/hwif/pwr/pwrPolicyMgr.h
T
2026-07-30 11:19:44 +05:30

161 lines
5.5 KiB
C

/* pwrPolicyMgr.h - Power Policy Management */
/*
* Copyright (c) 2011, 2012 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
01j,12jan12,jlv WIND00325775 - Add CPU Pwr Mgr event callbacks
01i,05oct11,sem WIND00308566 - Add CPU event metrics API
01h,19sep11,jlv WIND00303250 - Remove unused APIs
01g,15sep11,jlv WIND00299523 - Remove System Power Policy
01f,12sep11,rbc WIND00295395 - Fix build error.
01e,06sep11,jlv WIND00295395 - Remove macro access to PPM db
WIND00295992 - Add support for show commands
01d,22aug11,jlv WIND00295172 - Remove CPU PowerId
01c,02aug11,jlv Add event metrics per CPU
01b,25jul11,jlv Move extern after includes, remove unused APIs
01a,14jun11,jlv created WIND00255253
*/
#ifndef __INCpwrPolicyMgrh
#define __INCpwrPolicyMgrh
#include <sllLib.h>
#include <hwif/vxbus/vxBus.h>
#include <hwif/pwr/pwrPolicyLib.h>
#ifdef __cplusplus
extern "C" {
#endif
#define PPM_MSG_SIZE 25
#define MAX_PERCENT 100
#define PPMSET_ISSET(bitmask, n) (bitmask & (1 << n))
/*
* Define support Power States for the PPM.
* The pwrStateType parameter is used for pwrPolicyMgrStateGet
* function to specify the type of state being requested.
*/
typedef enum {
PPM_PSTATE = 1,
PPM_CSTATE,
PPM_DSTATE
} pwrStateType;
/*
* Power Policy Manager Power State data
*/
typedef struct power_state_metric
{
UINT32 stateNum; /* actual power state number */
UINT32 numTimesEntered; /* number of times entered this state */
_Vx_ticks_t maxTicks; /* maximum tick run in this state */
_Vx_ticks64_t totalTicksInState;/* cumulative tick count in this state */
_Vx_ticks64_t tickEnteredState; /* tick count entered this state */
_Vx_ticks64_t tickExitedState; /* tick count exited this state */
} PWR_STATE_METRIC;
typedef struct power_event_cpu_metric
{
UINT32 utilHigh; /* number of high utilization PEV */
UINT32 utilLow; /* number of low utilization PEV */
UINT32 hdrmHigh; /* number of high headroom PEV */
UINT32 hdrmLow; /* number of low headroom PEV */
UINT32 tickless; /* number of tickless PEV */
UINT32 tickSleep; /* number of non-tickless sleep PEV */
} PWR_EVENT_CPU_METRIC;
typedef struct cpu_power_data
{
UINT32 currentPwrState; /* current P-state according to PPM */
UINT32 currentCState; /* current C-state according to PPM */
UINT32 numPwrStates; /* number P-states supported by CPU */
UINT32 numCStates; /* number C-states supported by CPU */
PWR_EVENT_CPU_METRIC cpuPev; /* PEV metrics */
PWR_POLICY_CPU cpuPolicy; /* Active CPU Power Policy */
_Vx_ticks64_t baseTicks; /* Base ticks for start of Power Stats */
PWR_STATE_METRIC *pPwrStateAddr; /* P-state Power State statistics */
PWR_STATE_METRIC *pCStateAddr; /* C-state Power state statistics */
} PWR_DATA_CPU;
typedef struct device_power_data
{
SL_NODE node; /* SL list node */
char *pName; /* Name of device */
UINT32 unitNum; /* Unit number of device */
UINT32 currentDState; /* current D-state according to PPM */
UINT32 numDStates; /* number of D-states supported by device */
void *powerId; /* device power id */
_Vx_ticks64_t baseTicks; /* Base ticks for start of Power Stats */
PWR_POLICY_DEV devPolicy; /* Active device Power Policy */
PWR_STATE_METRIC *pDStateAddr; /* D-state Power state statistics */
} PWR_DATA_DEV;
typedef struct system_power_data
{
/* CPU power data */
UINT32 numCpus; /* Number of running CPUs */
PWR_DATA_CPU *cpuDataAddr; /* Offset to Power data for each CPU */
/* Device power data */
UINT32 numDevs; /* Number of power-managed devices */
SL_LIST *pDevList; /* Head of SL list for devices */
UINT32 pevDevTimeout; /* Total number of device timeouts */
} PWR_DATA_SYS;
/* Public APIs */
IMPORT STATUS pwrPolicyMgrCpuShow (UINT32 cpuNum, UINT32 level);
IMPORT STATUS pwrPolicyMgrCpuShowAll (void);
IMPORT STATUS pwrPolicyMgrDevShow (char *devName, UINT32 unitNum, UINT32 level);
IMPORT STATUS pwrPolicyMgrDevShowAll (void);
IMPORT STATUS pwrPolicyMgrShow (void);
IMPORT STATUS pwrPolicyMgrCpuStateReset (UINT32 cpuNum);
IMPORT STATUS pwrPolicyMgrCpuStateShow (UINT32 cpuNum);
IMPORT STATUS pwrPolicyMgrCpuStateGet (UINT32 cpuNum, UINT32 stateNum,
pwrStateType stateType, PWR_STATE_METRIC *pMetric);
IMPORT STATUS pwrPolicyMgrCpuPevGet (UINT32 cpuNum, PWR_EVENT_CPU_METRIC *pMetric);
IMPORT STATUS pwrPolicyMgrDevStateReset (char *devName, UINT32 unitNum);
IMPORT STATUS pwrPolicyMgrDevStateShow (char *devName, UINT32 unitNum);
IMPORT STATUS pwrPolicyMgrDevStateGet (char *devName, UINT32 unitNum,
UINT32 stateNum, PWR_STATE_METRIC *pMetric);
#ifdef __cplusplus
}
#endif
#endif /* __INCpwrPolicyMgrh */