Lines Matching full:handle
178 static int scmi_perf_attributes_get(const struct scmi_handle *handle, in scmi_perf_attributes_get() argument
185 ret = scmi_xfer_get_init(handle, PROTOCOL_ATTRIBUTES, in scmi_perf_attributes_get()
192 ret = scmi_do_xfer(handle, t); in scmi_perf_attributes_get()
203 scmi_xfer_put(handle, t); in scmi_perf_attributes_get()
208 scmi_perf_domain_attributes_get(const struct scmi_handle *handle, u32 domain, in scmi_perf_domain_attributes_get() argument
215 ret = scmi_xfer_get_init(handle, PERF_DOMAIN_ATTRIBUTES, in scmi_perf_domain_attributes_get()
224 ret = scmi_do_xfer(handle, t); in scmi_perf_domain_attributes_get()
248 scmi_xfer_put(handle, t); in scmi_perf_domain_attributes_get()
260 scmi_perf_describe_levels_get(const struct scmi_handle *handle, u32 domain, in scmi_perf_describe_levels_get() argument
271 ret = scmi_xfer_get_init(handle, PERF_DESCRIBE_LEVELS, in scmi_perf_describe_levels_get()
284 ret = scmi_do_xfer(handle, t); in scmi_perf_describe_levels_get()
291 dev_err(handle->dev, "No. of OPPs exceeded MAX_OPPS"); in scmi_perf_describe_levels_get()
302 dev_dbg(handle->dev, "Level %d Power %d Latency %dus\n", in scmi_perf_describe_levels_get()
308 scmi_reset_rx_to_maxsz(handle, t); in scmi_perf_describe_levels_get()
316 scmi_xfer_put(handle, t); in scmi_perf_describe_levels_get()
356 static int scmi_perf_mb_limits_set(const struct scmi_handle *handle, u32 domain, in scmi_perf_mb_limits_set() argument
363 ret = scmi_xfer_get_init(handle, PERF_LIMITS_SET, SCMI_PROTOCOL_PERF, in scmi_perf_mb_limits_set()
373 ret = scmi_do_xfer(handle, t); in scmi_perf_mb_limits_set()
375 scmi_xfer_put(handle, t); in scmi_perf_mb_limits_set()
379 static int scmi_perf_limits_set(const struct scmi_handle *handle, u32 domain, in scmi_perf_limits_set() argument
382 struct scmi_perf_info *pi = handle->perf_priv; in scmi_perf_limits_set()
392 return scmi_perf_mb_limits_set(handle, domain, max_perf, min_perf); in scmi_perf_limits_set()
395 static int scmi_perf_mb_limits_get(const struct scmi_handle *handle, u32 domain, in scmi_perf_mb_limits_get() argument
402 ret = scmi_xfer_get_init(handle, PERF_LIMITS_GET, SCMI_PROTOCOL_PERF, in scmi_perf_mb_limits_get()
409 ret = scmi_do_xfer(handle, t); in scmi_perf_mb_limits_get()
417 scmi_xfer_put(handle, t); in scmi_perf_mb_limits_get()
421 static int scmi_perf_limits_get(const struct scmi_handle *handle, u32 domain, in scmi_perf_limits_get() argument
424 struct scmi_perf_info *pi = handle->perf_priv; in scmi_perf_limits_get()
433 return scmi_perf_mb_limits_get(handle, domain, max_perf, min_perf); in scmi_perf_limits_get()
436 static int scmi_perf_mb_level_set(const struct scmi_handle *handle, u32 domain, in scmi_perf_mb_level_set() argument
443 ret = scmi_xfer_get_init(handle, PERF_LEVEL_SET, SCMI_PROTOCOL_PERF, in scmi_perf_mb_level_set()
453 ret = scmi_do_xfer(handle, t); in scmi_perf_mb_level_set()
455 scmi_xfer_put(handle, t); in scmi_perf_mb_level_set()
459 static int scmi_perf_level_set(const struct scmi_handle *handle, u32 domain, in scmi_perf_level_set() argument
462 struct scmi_perf_info *pi = handle->perf_priv; in scmi_perf_level_set()
471 return scmi_perf_mb_level_set(handle, domain, level, poll); in scmi_perf_level_set()
474 static int scmi_perf_mb_level_get(const struct scmi_handle *handle, u32 domain, in scmi_perf_mb_level_get() argument
480 ret = scmi_xfer_get_init(handle, PERF_LEVEL_GET, SCMI_PROTOCOL_PERF, in scmi_perf_mb_level_get()
488 ret = scmi_do_xfer(handle, t); in scmi_perf_mb_level_get()
492 scmi_xfer_put(handle, t); in scmi_perf_mb_level_get()
496 static int scmi_perf_level_get(const struct scmi_handle *handle, u32 domain, in scmi_perf_level_get() argument
499 struct scmi_perf_info *pi = handle->perf_priv; in scmi_perf_level_get()
507 return scmi_perf_mb_level_get(handle, domain, level, poll); in scmi_perf_level_get()
510 static int scmi_perf_level_limits_notify(const struct scmi_handle *handle, in scmi_perf_level_limits_notify() argument
518 ret = scmi_xfer_get_init(handle, message_id, SCMI_PROTOCOL_PERF, in scmi_perf_level_limits_notify()
527 ret = scmi_do_xfer(handle, t); in scmi_perf_level_limits_notify()
529 scmi_xfer_put(handle, t); in scmi_perf_level_limits_notify()
543 scmi_perf_domain_desc_fc(const struct scmi_handle *handle, u32 domain, in scmi_perf_domain_desc_fc() argument
560 ret = scmi_xfer_get_init(handle, PERF_DESCRIBE_FASTCHANNEL, in scmi_perf_domain_desc_fc()
570 ret = scmi_do_xfer(handle, t); in scmi_perf_domain_desc_fc()
582 addr = devm_ioremap(handle->dev, phys_addr, size); in scmi_perf_domain_desc_fc()
588 db = devm_kzalloc(handle->dev, sizeof(*db), GFP_KERNEL); in scmi_perf_domain_desc_fc()
595 addr = devm_ioremap(handle->dev, phys_addr, size); in scmi_perf_domain_desc_fc()
608 scmi_xfer_put(handle, t); in scmi_perf_domain_desc_fc()
611 static void scmi_perf_domain_init_fc(const struct scmi_handle *handle, in scmi_perf_domain_init_fc() argument
616 fc = devm_kzalloc(handle->dev, sizeof(*fc), GFP_KERNEL); in scmi_perf_domain_init_fc()
620 scmi_perf_domain_desc_fc(handle, domain, PERF_LEVEL_SET, in scmi_perf_domain_init_fc()
622 scmi_perf_domain_desc_fc(handle, domain, PERF_LEVEL_GET, in scmi_perf_domain_init_fc()
624 scmi_perf_domain_desc_fc(handle, domain, PERF_LIMITS_SET, in scmi_perf_domain_init_fc()
626 scmi_perf_domain_desc_fc(handle, domain, PERF_LIMITS_GET, in scmi_perf_domain_init_fc()
643 static int scmi_dvfs_device_opps_add(const struct scmi_handle *handle, in scmi_dvfs_device_opps_add() argument
650 struct scmi_perf_info *pi = handle->perf_priv; in scmi_dvfs_device_opps_add()
675 static int scmi_dvfs_transition_latency_get(const struct scmi_handle *handle, in scmi_dvfs_transition_latency_get() argument
679 struct scmi_perf_info *pi = handle->perf_priv; in scmi_dvfs_transition_latency_get()
690 static int scmi_dvfs_freq_set(const struct scmi_handle *handle, u32 domain, in scmi_dvfs_freq_set() argument
693 struct scmi_perf_info *pi = handle->perf_priv; in scmi_dvfs_freq_set()
696 return scmi_perf_level_set(handle, domain, freq / dom->mult_factor, in scmi_dvfs_freq_set()
700 static int scmi_dvfs_freq_get(const struct scmi_handle *handle, u32 domain, in scmi_dvfs_freq_get() argument
705 struct scmi_perf_info *pi = handle->perf_priv; in scmi_dvfs_freq_get()
708 ret = scmi_perf_level_get(handle, domain, &level, poll); in scmi_dvfs_freq_get()
715 static int scmi_dvfs_est_power_get(const struct scmi_handle *handle, u32 domain, in scmi_dvfs_est_power_get() argument
718 struct scmi_perf_info *pi = handle->perf_priv; in scmi_dvfs_est_power_get()
742 static bool scmi_fast_switch_possible(const struct scmi_handle *handle, in scmi_fast_switch_possible() argument
746 struct scmi_perf_info *pi = handle->perf_priv; in scmi_fast_switch_possible()
767 static int scmi_perf_set_notify_enabled(const struct scmi_handle *handle, in scmi_perf_set_notify_enabled() argument
776 ret = scmi_perf_level_limits_notify(handle, src_id, cmd_id, enable); in scmi_perf_set_notify_enabled()
784 static void *scmi_perf_fill_custom_report(const struct scmi_handle *handle, in scmi_perf_fill_custom_report() argument
850 static int scmi_perf_protocol_init(struct scmi_handle *handle) in scmi_perf_protocol_init() argument
856 scmi_version_get(handle, SCMI_PROTOCOL_PERF, &version); in scmi_perf_protocol_init()
858 dev_dbg(handle->dev, "Performance Version %d.%d\n", in scmi_perf_protocol_init()
861 pinfo = devm_kzalloc(handle->dev, sizeof(*pinfo), GFP_KERNEL); in scmi_perf_protocol_init()
865 scmi_perf_attributes_get(handle, pinfo); in scmi_perf_protocol_init()
867 pinfo->dom_info = devm_kcalloc(handle->dev, pinfo->num_domains, in scmi_perf_protocol_init()
875 scmi_perf_domain_attributes_get(handle, domain, dom); in scmi_perf_protocol_init()
876 scmi_perf_describe_levels_get(handle, domain, dom); in scmi_perf_protocol_init()
879 scmi_perf_domain_init_fc(handle, domain, &dom->fc_info); in scmi_perf_protocol_init()
882 scmi_register_protocol_events(handle, in scmi_perf_protocol_init()
889 handle->perf_ops = &perf_ops; in scmi_perf_protocol_init()
890 handle->perf_priv = pinfo; in scmi_perf_protocol_init()