Lines Matching full:qp
56 struct qcom_icc_provider *qp = to_qcom_provider(provider); in qcom_icc_set_qnoc_qos() local
61 rc = regmap_update_bits(qp->regmap, in qcom_icc_set_qnoc_qos()
62 qp->qos_offset + QNOC_QOS_MCTL_LOWn_ADDR(qos->qos_port), in qcom_icc_set_qnoc_qos()
68 return regmap_update_bits(qp->regmap, in qcom_icc_set_qnoc_qos()
69 qp->qos_offset + QNOC_QOS_MCTL_LOWn_ADDR(qos->qos_port), in qcom_icc_set_qnoc_qos()
74 static int qcom_icc_bimc_set_qos_health(struct qcom_icc_provider *qp, in qcom_icc_bimc_set_qos_health() argument
93 return regmap_update_bits(qp->regmap, in qcom_icc_bimc_set_qos_health()
94 qp->qos_offset + M_BKE_HEALTH_CFG_ADDR(regnum, qos->qos_port), in qcom_icc_bimc_set_qos_health()
100 struct qcom_icc_provider *qp; in qcom_icc_set_bimc_qos() local
109 qp = to_qcom_provider(provider); in qcom_icc_set_bimc_qos()
119 rc = qcom_icc_bimc_set_qos_health(qp, in qcom_icc_set_bimc_qos()
129 return regmap_update_bits(qp->regmap, in qcom_icc_set_bimc_qos()
130 qp->qos_offset + M_BKE_EN_ADDR(qn->qos.qos_port), in qcom_icc_set_bimc_qos()
134 static int qcom_icc_noc_set_qos_priority(struct qcom_icc_provider *qp, in qcom_icc_noc_set_qos_priority() argument
142 rc = regmap_update_bits(qp->regmap, in qcom_icc_noc_set_qos_priority()
143 qp->qos_offset + NOC_QOS_PRIORITYn_ADDR(qos->qos_port), in qcom_icc_noc_set_qos_priority()
148 return regmap_update_bits(qp->regmap, in qcom_icc_noc_set_qos_priority()
149 qp->qos_offset + NOC_QOS_PRIORITYn_ADDR(qos->qos_port), in qcom_icc_noc_set_qos_priority()
155 struct qcom_icc_provider *qp; in qcom_icc_set_noc_qos() local
163 qp = to_qcom_provider(provider); in qcom_icc_set_noc_qos()
175 rc = qcom_icc_noc_set_qos_priority(qp, &qn->qos); in qcom_icc_set_noc_qos()
185 return regmap_update_bits(qp->regmap, in qcom_icc_set_noc_qos()
186 qp->qos_offset + NOC_QOS_MODEn_ADDR(qn->qos.qos_port), in qcom_icc_set_noc_qos()
192 struct qcom_icc_provider *qp = to_qcom_provider(node->provider); in qcom_icc_qos_set() local
197 switch (qp->type) { in qcom_icc_qos_set()
294 static u64 qcom_icc_calc_rate(struct qcom_icc_provider *qp, struct qcom_icc_node *qn, int ctx) in qcom_icc_calc_rate() argument
327 struct qcom_icc_provider *qp = to_qcom_provider(provider); in qcom_icc_bus_aggregate() local
340 qcom_icc_calc_rate(qp, qn, ctx)); in qcom_icc_bus_aggregate()
350 struct qcom_icc_provider *qp; in qcom_icc_set() local
358 qp = to_qcom_provider(provider); in qcom_icc_set()
375 if (!qp->bus_clk_desc && !qp->bus_clk) in qcom_icc_set()
382 if (qp->keep_alive) in qcom_icc_set()
386 if (qp->bus_clk) { in qcom_icc_set()
390 return clk_set_rate(qp->bus_clk, active_rate); in qcom_icc_set()
397 if (active_rate != qp->bus_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE]) { in qcom_icc_set()
398 ret = qcom_icc_rpm_set_bus_rate(qp->bus_clk_desc, QCOM_SMD_RPM_ACTIVE_STATE, in qcom_icc_set()
404 qp->bus_clk_rate[QCOM_SMD_RPM_ACTIVE_STATE] = active_rate; in qcom_icc_set()
407 if (sleep_rate != qp->bus_clk_rate[QCOM_SMD_RPM_SLEEP_STATE]) { in qcom_icc_set()
408 ret = qcom_icc_rpm_set_bus_rate(qp->bus_clk_desc, QCOM_SMD_RPM_SLEEP_STATE, in qcom_icc_set()
414 qp->bus_clk_rate[QCOM_SMD_RPM_SLEEP_STATE] = sleep_rate; in qcom_icc_set()
421 active_rate = qcom_icc_calc_rate(qp, src_qn, QCOM_SMD_RPM_ACTIVE_STATE); in qcom_icc_set()
422 sleep_rate = qcom_icc_calc_rate(qp, src_qn, QCOM_SMD_RPM_SLEEP_STATE); in qcom_icc_set()
454 struct qcom_icc_provider *qp; in qnoc_probe() local
480 qp = devm_kzalloc(dev, sizeof(*qp), GFP_KERNEL); in qnoc_probe()
481 if (!qp) in qnoc_probe()
484 qp->intf_clks = devm_kcalloc(dev, cd_num, sizeof(*qp->intf_clks), GFP_KERNEL); in qnoc_probe()
485 if (!qp->intf_clks) in qnoc_probe()
489 qp->bus_clk_desc = devm_kzalloc(dev, sizeof(*qp->bus_clk_desc), in qnoc_probe()
491 if (!qp->bus_clk_desc) in qnoc_probe()
494 qp->bus_clk_desc = desc->bus_clk_desc; in qnoc_probe()
497 qp->bus_clk = devm_clk_get_optional(dev, "bus"); in qnoc_probe()
498 if (IS_ERR(qp->bus_clk)) in qnoc_probe()
499 return PTR_ERR(qp->bus_clk); in qnoc_probe()
508 qp->num_intf_clks = cd_num; in qnoc_probe()
510 qp->intf_clks[i].id = cds[i]; in qnoc_probe()
512 qp->keep_alive = desc->keep_alive; in qnoc_probe()
513 qp->type = desc->type; in qnoc_probe()
514 qp->qos_offset = desc->qos_offset; in qnoc_probe()
523 qp->regmap = dev_get_regmap(dev->parent, NULL); in qnoc_probe()
524 if (qp->regmap) in qnoc_probe()
533 qp->regmap = devm_regmap_init_mmio(dev, mmio, desc->regmap_cfg); in qnoc_probe()
534 if (IS_ERR(qp->regmap)) { in qnoc_probe()
536 return PTR_ERR(qp->regmap); in qnoc_probe()
541 ret = clk_prepare_enable(qp->bus_clk); in qnoc_probe()
545 ret = devm_clk_bulk_get(dev, qp->num_intf_clks, qp->intf_clks); in qnoc_probe()
549 provider = &qp->provider; in qnoc_probe()
560 ret = clk_bulk_prepare_enable(qp->num_intf_clks, qp->intf_clks); in qnoc_probe()
568 qnodes[i]->ab_coeff = qp->ab_coeff; in qnoc_probe()
571 qnodes[i]->ib_coeff = qp->ib_coeff; in qnoc_probe()
575 clk_bulk_disable_unprepare(qp->num_intf_clks, in qnoc_probe()
576 qp->intf_clks); in qnoc_probe()
593 clk_bulk_disable_unprepare(qp->num_intf_clks, in qnoc_probe()
594 qp->intf_clks); in qnoc_probe()
602 clk_bulk_disable_unprepare(qp->num_intf_clks, qp->intf_clks); in qnoc_probe()
608 platform_set_drvdata(pdev, qp); in qnoc_probe()
624 clk_disable_unprepare(qp->bus_clk); in qnoc_probe()
632 struct qcom_icc_provider *qp = platform_get_drvdata(pdev); in qnoc_remove() local
634 icc_provider_deregister(&qp->provider); in qnoc_remove()
635 icc_nodes_remove(&qp->provider); in qnoc_remove()
636 clk_disable_unprepare(qp->bus_clk); in qnoc_remove()