Lines Matching full:qp

21 #define QOSGEN_MAINCTL_LO(p, qp)	(0x8 + (p->port_offsets[qp]))  argument
28 * @qp: qcom icc provider to which @node belongs
31 static void qcom_icc_set_qos(struct qcom_icc_provider *qp, in qcom_icc_set_qos() argument
38 regmap_update_bits(qp->regmap, QOSGEN_MAINCTL_LO(qos, port), in qcom_icc_set_qos()
42 regmap_update_bits(qp->regmap, QOSGEN_MAINCTL_LO(qos, port), in qcom_icc_set_qos()
46 regmap_update_bits(qp->regmap, QOSGEN_MAINCTL_LO(qos, port), in qcom_icc_set_qos()
60 struct qcom_icc_provider *qp; in qcom_icc_pre_aggregate() local
63 qp = to_qcom_provider(node->provider); in qcom_icc_pre_aggregate()
71 qcom_icc_bcm_voter_add(qp->voter, qn->bcms[i]); in qcom_icc_pre_aggregate()
123 struct qcom_icc_provider *qp; in qcom_icc_set() local
131 qp = to_qcom_provider(node->provider); in qcom_icc_set()
133 qcom_icc_bcm_voter_commit(qp->voter); in qcom_icc_set()
199 * @qp: qcom icc provider associated with QoS endpoint nodes
203 static int qcom_icc_rpmh_configure_qos(struct qcom_icc_provider *qp) in qcom_icc_rpmh_configure_qos() argument
209 ret = clk_bulk_prepare_enable(qp->num_clks, qp->clks); in qcom_icc_rpmh_configure_qos()
213 for (i = 0; i < qp->num_nodes; i++) { in qcom_icc_rpmh_configure_qos()
214 qnode = qp->nodes[i]; in qcom_icc_rpmh_configure_qos()
219 qcom_icc_set_qos(qp, qnode); in qcom_icc_rpmh_configure_qos()
222 clk_bulk_disable_unprepare(qp->num_clks, qp->clks); in qcom_icc_rpmh_configure_qos()
234 struct qcom_icc_provider *qp; in qcom_icc_rpmh_probe() local
246 qp = devm_kzalloc(dev, sizeof(*qp), GFP_KERNEL); in qcom_icc_rpmh_probe()
247 if (!qp) in qcom_icc_rpmh_probe()
255 provider = &qp->provider; in qcom_icc_rpmh_probe()
265 qp->dev = dev; in qcom_icc_rpmh_probe()
266 qp->bcms = desc->bcms; in qcom_icc_rpmh_probe()
267 qp->nodes = desc->nodes; in qcom_icc_rpmh_probe()
268 qp->num_bcms = desc->num_bcms; in qcom_icc_rpmh_probe()
269 qp->num_nodes = desc->num_nodes; in qcom_icc_rpmh_probe()
271 qp->voter = of_bcm_voter_get(qp->dev, NULL); in qcom_icc_rpmh_probe()
272 if (IS_ERR(qp->voter)) in qcom_icc_rpmh_probe()
273 return PTR_ERR(qp->voter); in qcom_icc_rpmh_probe()
275 for (i = 0; i < qp->num_bcms; i++) in qcom_icc_rpmh_probe()
276 qcom_icc_bcm_init(qp->bcms[i], dev); in qcom_icc_rpmh_probe()
323 qp->regmap = devm_regmap_init_mmio(dev, base, desc->config); in qcom_icc_rpmh_probe()
324 if (IS_ERR(qp->regmap)) { in qcom_icc_rpmh_probe()
325 dev_info(dev, "Skipping QoS, regmap failed; %ld\n", PTR_ERR(qp->regmap)); in qcom_icc_rpmh_probe()
329 qp->num_clks = devm_clk_bulk_get_all(qp->dev, &qp->clks); in qcom_icc_rpmh_probe()
330 if (qp->num_clks == -EPROBE_DEFER) in qcom_icc_rpmh_probe()
331 return dev_err_probe(dev, qp->num_clks, "Failed to get QoS clocks\n"); in qcom_icc_rpmh_probe()
333 if (qp->num_clks < 0 || (!qp->num_clks && desc->qos_requires_clocks)) { in qcom_icc_rpmh_probe()
334 dev_info(dev, "Skipping QoS, failed to get clk: %d\n", qp->num_clks); in qcom_icc_rpmh_probe()
338 ret = qcom_icc_rpmh_configure_qos(qp); in qcom_icc_rpmh_probe()
348 platform_set_drvdata(pdev, qp); in qcom_icc_rpmh_probe()
370 struct qcom_icc_provider *qp = platform_get_drvdata(pdev); in qcom_icc_rpmh_remove() local
372 icc_provider_deregister(&qp->provider); in qcom_icc_rpmh_remove()
373 icc_nodes_remove(&qp->provider); in qcom_icc_rpmh_remove()