interconnect: qcom: Add support for utility factor

Utility factor needs to be applied for aggregated bandwidth
so as to run the bus clock at required frequency.

Change-Id: Ic166f72b0719fa88db4c04b9acdc163483faf538
Signed-off-by: Odelu Kukatla <okukatla@codeaurora.org>
This commit is contained in:
Odelu Kukatla 2020-08-10 23:04:37 +05:30
commit d5ccb61353
3 changed files with 11 additions and 0 deletions

View file

@ -1240,6 +1240,10 @@ static int qnoc_probe(struct platform_device *pdev)
qp->init = true;
qp->keepalive = of_property_read_bool(dev->of_node, "qcom,keepalive");
if (of_property_read_u32(dev->of_node, "qcom,util-factor",
&qp->util_factor))
qp->util_factor = DEFAULT_UTIL_FACTOR;
qp->regmap = qcom_icc_map(pdev, desc);
if (IS_ERR(qp->regmap))
return PTR_ERR(qp->regmap);

View file

@ -118,6 +118,10 @@ int qcom_icc_rpm_set(struct icc_node *src, struct icc_node *dst)
qn = n->data;
for (i = 0; i < RPM_NUM_CXT; i++) {
sum_avg = icc_units_to_bps(qn->sum_avg[i]);
sum_avg *= qp->util_factor;
do_div(sum_avg, DEFAULT_UTIL_FACTOR);
do_div(sum_avg, qn->channels);
max_peak = icc_units_to_bps(qn->max_peak[i]);

View file

@ -20,6 +20,8 @@
#define RPM_CLK_MAX_LEVEL INT_MAX
#define RPM_CLK_MIN_LEVEL 19200000
#define DEFAULT_UTIL_FACTOR 100
#define to_qcom_provider(_provider) \
container_of(_provider, struct qcom_icc_provider, provider)
@ -57,6 +59,7 @@ struct qcom_icc_provider {
struct list_head probe_list;
struct clk_bulk_data *bus_clks;
int num_clks;
u32 util_factor;
u64 bus_clk_cur_rate[RPM_NUM_CXT];
bool keepalive;
bool init;