Lines Matching refs:voter
133 static void tcs_list_gen(struct bcm_voter *voter, int bucket, in tcs_list_gen() argument
137 struct list_head *bcm_list = &voter->commit_list; in tcs_list_gen()
153 wait = commit && (voter->tcs_wait & BIT(bucket)); in tcs_list_gen()
188 struct bcm_voter *voter = ERR_PTR(-EPROBE_DEFER); in of_bcm_voter_get() local
209 voter = temp; in of_bcm_voter_get()
216 return voter; in of_bcm_voter_get()
225 void qcom_icc_bcm_voter_add(struct bcm_voter *voter, struct qcom_icc_bcm *bcm) in qcom_icc_bcm_voter_add() argument
227 if (!voter) in qcom_icc_bcm_voter_add()
230 mutex_lock(&voter->lock); in qcom_icc_bcm_voter_add()
232 list_add_tail(&bcm->list, &voter->commit_list); in qcom_icc_bcm_voter_add()
235 list_add_tail(&bcm->ws_list, &voter->ws_list); in qcom_icc_bcm_voter_add()
237 mutex_unlock(&voter->lock); in qcom_icc_bcm_voter_add()
253 int qcom_icc_bcm_voter_commit(struct bcm_voter *voter) in qcom_icc_bcm_voter_commit() argument
261 if (!voter) in qcom_icc_bcm_voter_commit()
264 mutex_lock(&voter->lock); in qcom_icc_bcm_voter_commit()
265 list_for_each_entry(bcm, &voter->commit_list, list) in qcom_icc_bcm_voter_commit()
276 list_sort(NULL, &voter->commit_list, cmp_vcd); in qcom_icc_bcm_voter_commit()
282 tcs_list_gen(voter, QCOM_ICC_BUCKET_AMC, cmds, commit_idx); in qcom_icc_bcm_voter_commit()
286 rpmh_invalidate(voter->dev); in qcom_icc_bcm_voter_commit()
288 ret = rpmh_write_batch(voter->dev, RPMH_ACTIVE_ONLY_STATE, in qcom_icc_bcm_voter_commit()
295 list_for_each_entry_safe(bcm, bcm_tmp, &voter->commit_list, list) in qcom_icc_bcm_voter_commit()
298 list_for_each_entry_safe(bcm, bcm_tmp, &voter->ws_list, ws_list) { in qcom_icc_bcm_voter_commit()
308 list_add_tail(&bcm->list, &voter->commit_list); in qcom_icc_bcm_voter_commit()
313 if (list_empty(&voter->commit_list)) in qcom_icc_bcm_voter_commit()
316 list_sort(NULL, &voter->commit_list, cmp_vcd); in qcom_icc_bcm_voter_commit()
318 tcs_list_gen(voter, QCOM_ICC_BUCKET_WAKE, cmds, commit_idx); in qcom_icc_bcm_voter_commit()
320 ret = rpmh_write_batch(voter->dev, RPMH_WAKE_ONLY_STATE, cmds, commit_idx); in qcom_icc_bcm_voter_commit()
326 tcs_list_gen(voter, QCOM_ICC_BUCKET_SLEEP, cmds, commit_idx); in qcom_icc_bcm_voter_commit()
328 ret = rpmh_write_batch(voter->dev, RPMH_SLEEP_STATE, cmds, commit_idx); in qcom_icc_bcm_voter_commit()
335 list_for_each_entry_safe(bcm, bcm_tmp, &voter->commit_list, list) in qcom_icc_bcm_voter_commit()
338 mutex_unlock(&voter->lock); in qcom_icc_bcm_voter_commit()
346 struct bcm_voter *voter; in qcom_icc_bcm_voter_probe() local
348 voter = devm_kzalloc(&pdev->dev, sizeof(*voter), GFP_KERNEL); in qcom_icc_bcm_voter_probe()
349 if (!voter) in qcom_icc_bcm_voter_probe()
352 voter->dev = &pdev->dev; in qcom_icc_bcm_voter_probe()
353 voter->np = np; in qcom_icc_bcm_voter_probe()
355 if (of_property_read_u32(np, "qcom,tcs-wait", &voter->tcs_wait)) in qcom_icc_bcm_voter_probe()
356 voter->tcs_wait = QCOM_ICC_TAG_ACTIVE_ONLY; in qcom_icc_bcm_voter_probe()
358 mutex_init(&voter->lock); in qcom_icc_bcm_voter_probe()
359 INIT_LIST_HEAD(&voter->commit_list); in qcom_icc_bcm_voter_probe()
360 INIT_LIST_HEAD(&voter->ws_list); in qcom_icc_bcm_voter_probe()
363 list_add_tail(&voter->voter_node, &bcm_voters); in qcom_icc_bcm_voter_probe()