1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4 */ 5 6 #include <linux/pm_runtime.h> 7 8 #include "iris_instance.h" 9 #include "iris_utils.h" 10 11 int iris_get_mbpf(struct iris_inst *inst) 12 { 13 struct v4l2_format *inp_f = inst->fmt_src; 14 u32 height = max(inp_f->fmt.pix_mp.height, inst->crop.height); 15 u32 width = max(inp_f->fmt.pix_mp.width, inst->crop.width); 16 17 return NUM_MBS_PER_FRAME(height, width); 18 } 19 20 int iris_wait_for_session_response(struct iris_inst *inst) 21 { 22 struct iris_core *core = inst->core; 23 u32 hw_response_timeout_val; 24 int ret; 25 26 hw_response_timeout_val = core->iris_platform_data->hw_response_timeout; 27 28 mutex_unlock(&inst->lock); 29 ret = wait_for_completion_timeout(&inst->completion, 30 msecs_to_jiffies(hw_response_timeout_val)); 31 mutex_lock(&inst->lock); 32 if (!ret) 33 return -ETIMEDOUT; 34 35 return 0; 36 } 37 38 struct iris_inst *iris_get_instance(struct iris_core *core, u32 session_id) 39 { 40 struct iris_inst *inst; 41 42 mutex_lock(&core->lock); 43 list_for_each_entry(inst, &core->instances, list) { 44 if (inst->session_id == session_id) { 45 mutex_unlock(&core->lock); 46 return inst; 47 } 48 } 49 50 mutex_unlock(&core->lock); 51 return NULL; 52 } 53