Lines Matching defs:dom

377 process_response_opp(struct device *dev, struct perf_dom_info *dom,
388 ret = xa_insert(&dom->opps_by_lvl, opp->perf, opp, GFP_KERNEL);
391 opp->perf, dom->info.name, ret);
395 process_response_opp_v4(struct device *dev, struct perf_dom_info *dom,
406 ret = xa_insert(&dom->opps_by_lvl, opp->perf, opp, GFP_KERNEL);
409 opp->perf, dom->info.name, ret);
413 if (dom->level_indexing_mode) {
416 ret = xa_insert(&dom->opps_by_idx, opp->level_index, opp,
421 opp->level_index, dom->info.name, ret);
423 hash_add(dom->opps_by_freq, &opp->hash, opp->indicative_freq);
506 struct perf_dom_info *dom;
508 dom = scmi_perf_domain_lookup(ph, domain);
509 if (IS_ERR(dom))
512 return &dom->info;
539 struct perf_dom_info *dom, u32 max_perf,
542 if (dom->fc_info && dom->fc_info[PERF_FC_LIMIT].set_addr) {
543 struct scmi_fc_info *fci = &dom->fc_info[PERF_FC_LIMIT];
546 dom->id, min_perf, max_perf);
553 return scmi_perf_msg_limits_set(ph, dom->id, max_perf, min_perf);
560 struct perf_dom_info *dom;
562 dom = scmi_perf_domain_lookup(ph, domain);
563 if (IS_ERR(dom))
564 return PTR_ERR(dom);
566 if (!dom->set_limits)
572 if (dom->level_indexing_mode) {
576 opp = xa_load(&dom->opps_by_lvl, min_perf);
584 opp = xa_load(&dom->opps_by_lvl, max_perf);
592 return __scmi_perf_limits_set(ph, dom, max_perf, min_perf);
622 struct perf_dom_info *dom, u32 *max_perf,
625 if (dom->fc_info && dom->fc_info[PERF_FC_LIMIT].get_addr) {
626 struct scmi_fc_info *fci = &dom->fc_info[PERF_FC_LIMIT];
631 dom->id, *min_perf, *max_perf);
635 return scmi_perf_msg_limits_get(ph, dom->id, max_perf, min_perf);
642 struct perf_dom_info *dom;
644 dom = scmi_perf_domain_lookup(ph, domain);
645 if (IS_ERR(dom))
646 return PTR_ERR(dom);
648 ret = __scmi_perf_limits_get(ph, dom, max_perf, min_perf);
652 if (dom->level_indexing_mode) {
655 opp = xa_load(&dom->opps_by_idx, *min_perf);
661 opp = xa_load(&dom->opps_by_idx, *max_perf);
694 struct perf_dom_info *dom, u32 level,
697 if (dom->fc_info && dom->fc_info[PERF_FC_LEVEL].set_addr) {
698 struct scmi_fc_info *fci = &dom->fc_info[PERF_FC_LEVEL];
701 dom->id, level, 0);
707 return scmi_perf_msg_level_set(ph, dom->id, level, poll);
713 struct perf_dom_info *dom;
715 dom = scmi_perf_domain_lookup(ph, domain);
716 if (IS_ERR(dom))
717 return PTR_ERR(dom);
719 if (!dom->info.set_perf)
722 if (dom->level_indexing_mode) {
725 opp = xa_load(&dom->opps_by_lvl, level);
732 return __scmi_perf_level_set(ph, dom, level, poll);
758 struct perf_dom_info *dom, u32 *level,
761 if (dom->fc_info && dom->fc_info[PERF_FC_LEVEL].get_addr) {
762 *level = ioread32(dom->fc_info[PERF_FC_LEVEL].get_addr);
764 dom->id, *level, 0);
768 return scmi_perf_msg_level_get(ph, dom->id, level, poll);
775 struct perf_dom_info *dom;
777 dom = scmi_perf_domain_lookup(ph, domain);
778 if (IS_ERR(dom))
779 return PTR_ERR(dom);
781 ret = __scmi_perf_level_get(ph, dom, level, poll);
785 if (dom->level_indexing_mode) {
788 opp = xa_load(&dom->opps_by_idx, *level);
821 struct perf_dom_info *dom)
830 PERF_LEVEL_GET, 4, dom->id,
835 PERF_LIMITS_GET, 8, dom->id,
839 if (dom->info.set_perf)
841 PERF_LEVEL_SET, 4, dom->id,
846 if (dom->set_limits)
848 PERF_LIMITS_SET, 8, dom->id,
853 dom->fc_info = fc;
862 struct perf_dom_info *dom;
864 dom = scmi_perf_domain_lookup(ph, domain);
865 if (IS_ERR(dom))
866 return PTR_ERR(dom);
868 for (idx = 0; idx < dom->opp_count; idx++) {
869 if (!dom->level_indexing_mode)
870 freq = dom->opp[idx].perf * dom->mult_factor;
872 freq = dom->opp[idx].indicative_freq * dom->mult_factor;
875 data.turbo = freq > dom->sustained_freq_khz * 1000;
877 data.level = dom->opp[idx].perf;
883 domain, dom->info.name, idx, freq);
889 domain, dom->info.name, idx, freq);
898 struct perf_dom_info *dom;
900 dom = scmi_perf_domain_lookup(ph, domain);
901 if (IS_ERR(dom))
902 return PTR_ERR(dom);
905 return dom->opp[dom->opp_count - 1].trans_latency_us * 1000;
912 struct perf_dom_info *dom;
917 dom = scmi_perf_domain_lookup(ph, domain);
918 if (IS_ERR(dom))
919 return PTR_ERR(dom);
921 *rate_limit = dom->rate_limit_us;
929 struct perf_dom_info *dom;
931 dom = scmi_perf_domain_lookup(ph, domain);
932 if (IS_ERR(dom))
933 return PTR_ERR(dom);
935 if (!dom->level_indexing_mode) {
936 level = freq / dom->mult_factor;
940 opp = LOOKUP_BY_FREQ(dom->opps_by_freq,
941 freq / dom->mult_factor);
948 return __scmi_perf_level_set(ph, dom, level, poll);
956 struct perf_dom_info *dom;
958 dom = scmi_perf_domain_lookup(ph, domain);
959 if (IS_ERR(dom))
960 return PTR_ERR(dom);
962 ret = __scmi_perf_level_get(ph, dom, &level, poll);
966 if (!dom->level_indexing_mode) {
967 *freq = level * dom->mult_factor;
971 opp = xa_load(&dom->opps_by_idx, level);
975 *freq = opp->indicative_freq * dom->mult_factor;
985 struct perf_dom_info *dom;
990 dom = scmi_perf_domain_lookup(ph, domain);
991 if (IS_ERR(dom))
992 return PTR_ERR(dom);
994 for (opp = dom->opp, idx = 0; idx < dom->opp_count; idx++, opp++) {
995 if (!dom->level_indexing_mode)
996 opp_freq = opp->perf * dom->mult_factor;
998 opp_freq = opp->indicative_freq * dom->mult_factor;
1015 struct perf_dom_info *dom;
1017 dom = scmi_perf_domain_lookup(ph, domain);
1018 if (IS_ERR(dom))
1021 return dom->fc_info && dom->fc_info[PERF_FC_LEVEL].set_addr;
1027 struct perf_dom_info *dom;
1032 dom = scmi_perf_domain_lookup(ph, domain);
1033 if (IS_ERR(dom))
1034 return PTR_ERR(dom);
1036 if (!dom->fc_info)
1039 *rate_limit = dom->fc_info[PERF_FC_LEVEL].rate_limit;
1073 struct perf_dom_info *dom;
1078 dom = scmi_perf_domain_lookup(ph, src_id);
1079 if (IS_ERR(dom))
1083 supported = dom->perf_limit_notify;
1085 supported = dom->perf_level_notify;
1101 pr_debug("FAIL_ENABLED - evt[%X] dom[%d] - ret:%d\n",
1108 scmi_perf_xlate_opp_to_freq(struct perf_dom_info *dom,
1113 if (!dom || !freq)
1116 if (!dom->level_indexing_mode) {
1117 opp = xa_load(&dom->opps_by_lvl, index);
1121 *freq = opp->perf * dom->mult_factor;
1123 opp = xa_load(&dom->opps_by_idx, index);
1127 *freq = opp->indicative_freq * dom->mult_factor;
1140 struct perf_dom_info *dom;
1158 dom = scmi_perf_domain_lookup(ph, r->domain_id);
1159 if (IS_ERR(dom))
1168 ret = scmi_perf_xlate_opp_to_freq(dom, r->range_max, &freq_max);
1172 ret = scmi_perf_xlate_opp_to_freq(dom, r->range_min, &freq_min);
1197 dom = scmi_perf_domain_lookup(ph, r->domain_id);
1198 if (IS_ERR(dom))
1208 ret = scmi_perf_xlate_opp_to_freq(dom, r->performance_level,
1290 struct perf_dom_info *dom = pinfo->dom_info + domain;
1292 dom->id = domain;
1293 scmi_perf_domain_attributes_get(ph, dom, pinfo->notify_lim_cmd,
1295 scmi_perf_describe_levels_get(ph, dom, version);
1297 if (dom->perf_fastchannels)
1298 scmi_perf_domain_init_fc(ph, dom);