mmrm: Convert power values

- Convert dynamic power to q16.
- Make minor changes to function return paths.

Change-Id: Id8f1fad440c8b048fce46493f72df2b6caf34263
This commit is contained in:
Sebastian Dang
2020-11-19 21:55:02 -08:00
parent f99d39f27b
commit 641f2047ad

View File

@@ -171,7 +171,7 @@ static int mmrm_sw_get_req_level(
d_mpr_e("%s: csid(%d): lower voltage corner(%d)\n",
__func__, tbl_entry->clk_src_id, voltage_corner);
*req_level = MMRM_VDD_LEVEL_SVS_L1;
return rc;
goto exit_no_err;
}
/* match vdd level */
@@ -184,11 +184,16 @@ static int mmrm_sw_get_req_level(
d_mpr_e("%s: csid(%d): invalid voltage corner(%d) for clk rate(%llu)\n",
__func__, tbl_entry->clk_src_id, voltage_corner, clk_val);
rc = -EINVAL;
return rc;
goto err_invalid_corner;
}
*req_level = level;
d_mpr_h("%s: req_level(%d)\n", __func__, level);
exit_no_err:
return rc;
err_invalid_corner:
return rc;
}
@@ -203,18 +208,23 @@ static int mmrm_sw_check_peak_current(
if ((signed)peak_data->aggreg_val + delta_cur <= 0) {
peak_data->aggreg_val = 0;
d_mpr_h("%s: aggregate(%lu)\n", __func__, peak_data->aggreg_val);
return rc;
goto exit_no_err;
}
/* check for peak overshoot */
if ((signed)peak_data->aggreg_val + delta_cur >= peak_data->threshold) {
rc = -EINVAL;
return rc;
goto err_peak_overshoot;
}
/* update peak data */
peak_data->aggreg_val += delta_cur;
d_mpr_h("%s: aggregate(%lu)\n", __func__, peak_data->aggreg_val);
exit_no_err:
return rc;
err_peak_overshoot:
return rc;
}
@@ -432,7 +442,8 @@ static int mmrm_sw_update_entries(struct mmrm_clk_platform_resources *cres,
fp_t nom_dyn_pwr, nom_leak_pwr, freq_sc, dyn_sc, leak_sc,
volt, dyn_pwr, leak_pwr, pwr_mw;
nom_dyn_pwr = FP_INT(tbl_entry->dyn_pwr[MMRM_VDD_LEVEL_NOM]);
nom_dyn_pwr = FP(Q16_INT(tbl_entry->dyn_pwr[MMRM_VDD_LEVEL_NOM]),
Q16_FRAC(tbl_entry->dyn_pwr[MMRM_VDD_LEVEL_NOM]), 100);
nom_leak_pwr = FP(Q16_INT(tbl_entry->leak_pwr[MMRM_VDD_LEVEL_NOM]),
Q16_FRAC(tbl_entry->leak_pwr[MMRM_VDD_LEVEL_NOM]), 100);