Tegra186: mce: add the mce_update_cstate_info() helper function
This patch adds a helper function to the MCE driver to allow its clients to issue UPDATE_CSTATE_INFO requests, without having to setup the CPU context struct. We introduced a struct to encapsulate the request parameters, that clients can pass on to the MCE driver. The MCE driver gets the parameters from the struct and programs the hardware accordingly. Change-Id: I02bce57506c4ccd90da82127805d6b564375cbf1 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
This commit is contained in:
parent
ddc1c56f0b
commit
87a1df7361
|
@ -101,6 +101,24 @@ typedef enum mce_cmd {
|
||||||
|
|
||||||
#define MCE_CMD_MASK 0xFF
|
#define MCE_CMD_MASK 0xFF
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Struct to prepare UPDATE_CSTATE_INFO request
|
||||||
|
******************************************************************************/
|
||||||
|
typedef struct mce_cstate_info {
|
||||||
|
/* cluster cstate value */
|
||||||
|
uint32_t cluster;
|
||||||
|
/* ccplex cstate value */
|
||||||
|
uint32_t ccplex;
|
||||||
|
/* system cstate value */
|
||||||
|
uint32_t system;
|
||||||
|
/* force system state? */
|
||||||
|
uint8_t system_state_force;
|
||||||
|
/* wake mask value */
|
||||||
|
uint32_t wake_mask;
|
||||||
|
/* update the wake mask? */
|
||||||
|
uint8_t update_wake_mask;
|
||||||
|
} mce_cstate_info_t;
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Macros to prepare CSTATE info request
|
* Macros to prepare CSTATE info request
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
@ -322,6 +340,7 @@ int mce_update_gsc_videomem(void);
|
||||||
int mce_update_gsc_tzdram(void);
|
int mce_update_gsc_tzdram(void);
|
||||||
int mce_update_gsc_tzram(void);
|
int mce_update_gsc_tzram(void);
|
||||||
__dead2 void mce_enter_ccplex_state(uint32_t state_idx);
|
__dead2 void mce_enter_ccplex_state(uint32_t state_idx);
|
||||||
|
void mce_update_cstate_info(mce_cstate_info_t *cstate);
|
||||||
void mce_verify_firmware_version(void);
|
void mce_verify_firmware_version(void);
|
||||||
|
|
||||||
/* declarations for ARI/NVG handler functions */
|
/* declarations for ARI/NVG handler functions */
|
||||||
|
|
|
@ -448,6 +448,19 @@ __dead2 void mce_enter_ccplex_state(uint32_t state_idx)
|
||||||
panic();
|
panic();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Handler to issue the UPDATE_CSTATE_INFO request
|
||||||
|
******************************************************************************/
|
||||||
|
void mce_update_cstate_info(mce_cstate_info_t *cstate)
|
||||||
|
{
|
||||||
|
arch_mce_ops_t *ops = mce_get_curr_cpu_ops();
|
||||||
|
|
||||||
|
/* issue the UPDATE_CSTATE_INFO request */
|
||||||
|
ops->update_cstate_info(mce_get_curr_cpu_ari_base(), cstate->cluster,
|
||||||
|
cstate->ccplex, cstate->system, cstate->system_state_force,
|
||||||
|
cstate->wake_mask, cstate->update_wake_mask);
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Handler to read the MCE firmware version and check if it is compatible
|
* Handler to read the MCE firmware version and check if it is compatible
|
||||||
* with interface header the BL3-1 was compiled against
|
* with interface header the BL3-1 was compiled against
|
||||||
|
|
Loading…
Reference in New Issue