msm: gsi: add gsi profiling stats and fw version to debugfs
Add GSI profiling stats data and the GSI FW version to debug fs. Change-Id: I5749339f5ec9656e636a512668025bb09a97a3ec Acked-by: Nadav Levintov <nadavl@qti.qualcomm.com> Signed-off-by: Sivan Reinstein <sivanr@codeaurora.org>
This commit is contained in:
@@ -43,6 +43,15 @@
|
||||
#define GSI_MSB(num) ((u32)((num & GSI_MSB_MASK) >> 32))
|
||||
#define GSI_LSB(num) ((u32)(num & GSI_LSB_MASK))
|
||||
|
||||
#define GSI_INST_RAM_FW_VER_OFFSET (0)
|
||||
#define GSI_INST_RAM_FW_VER_GSI_3_0_OFFSET (64)
|
||||
#define GSI_INST_RAM_FW_VER_HW_MASK (0xFC00)
|
||||
#define GSI_INST_RAM_FW_VER_HW_SHIFT (10)
|
||||
#define GSI_INST_RAM_FW_VER_FLAVOR_MASK (0x380)
|
||||
#define GSI_INST_RAM_FW_VER_FLAVOR_SHIFT (7)
|
||||
#define GSI_INST_RAM_FW_VER_FW_MASK (0x7f)
|
||||
#define GSI_INST_RAM_FW_VER_FW_SHIFT (0)
|
||||
|
||||
#ifndef CONFIG_DEBUG_FS
|
||||
void gsi_debugfs_init(void)
|
||||
{
|
||||
@@ -5069,6 +5078,72 @@ static union __packed gsi_channel_scratch __gsi_update_mhi_channel_scratch(
|
||||
|
||||
return scr;
|
||||
}
|
||||
/**
|
||||
* gsi_get_hw_profiling_stats() - Query GSI HW profiling stats
|
||||
* @stats: [out] stats blob from client populated by driver
|
||||
*
|
||||
* Returns: 0 on success, negative on failure
|
||||
*
|
||||
*/
|
||||
int gsi_get_hw_profiling_stats(struct gsi_hw_profiling_data *stats)
|
||||
{
|
||||
if (stats == NULL) {
|
||||
GSIERR("bad parms NULL stats == NULL\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
stats->bp_cnt = (u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_BP_CNT_LSB) +
|
||||
((u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_BP_CNT_MSB) << 32);
|
||||
stats->bp_and_pending_cnt = (u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_BP_AND_PENDING_CNT_LSB) +
|
||||
((u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_BP_AND_PENDING_CNT_MSB) << 32);
|
||||
stats->mcs_busy_cnt = (u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_MCS_BUSY_CNT_LSB) +
|
||||
((u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_MCS_BUSY_CNT_MSB) << 32);
|
||||
stats->mcs_idle_cnt = (u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_MCS_IDLE_CNT_LSB) +
|
||||
((u64)gsihal_read_reg(
|
||||
GSI_GSI_MCS_PROFILING_MCS_IDLE_CNT_MSB) << 32);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* gsi_get_fw_version() - Query GSI FW version
|
||||
* @ver: [out] ver blob from client populated by driver
|
||||
*
|
||||
* Returns: 0 on success, negative on failure
|
||||
*
|
||||
*/
|
||||
int gsi_get_fw_version(struct gsi_fw_version *ver)
|
||||
{
|
||||
u32 raw = 0;
|
||||
|
||||
if (ver == NULL) {
|
||||
GSIERR("bad parms: ver == NULL\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (gsi_ctx->per.ver < GSI_VER_3_0)
|
||||
raw = gsihal_read_reg_n(GSI_GSI_INST_RAM_n,
|
||||
GSI_INST_RAM_FW_VER_OFFSET);
|
||||
else
|
||||
raw = gsihal_read_reg_n(GSI_GSI_INST_RAM_n,
|
||||
GSI_INST_RAM_FW_VER_GSI_3_0_OFFSET);
|
||||
|
||||
ver->hw = (raw & GSI_INST_RAM_FW_VER_HW_MASK) >>
|
||||
GSI_INST_RAM_FW_VER_HW_SHIFT;
|
||||
ver->flavor = (raw & GSI_INST_RAM_FW_VER_FLAVOR_MASK) >>
|
||||
GSI_INST_RAM_FW_VER_FLAVOR_SHIFT;
|
||||
ver->fw = (raw & GSI_INST_RAM_FW_VER_FW_MASK) >>
|
||||
GSI_INST_RAM_FW_VER_FW_SHIFT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int msm_gsi_probe(struct platform_device *pdev)
|
||||
{
|
||||
|
Reference in New Issue
Block a user