From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3A93B47AF74 for ; Sat, 28 Feb 2026 15:26:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292402; cv=none; b=DGyAGmgJVlxp3+QWXBB9shV1GrID9zPf0qOD7vq0s1D2JIt2NdqCgBRnlEQkuJDWuNYD+1yh0xpobh0LI5qxaXquRpY8KRWh3C3MUMF7B4rx9uoLTeGT73DDJaQimFOVcw6DtwmslCwq6ErguBN8NB1fZ+JtqdT33vnbnZPs2hA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292402; c=relaxed/simple; bh=nUSa520FLKqjEX950txivtgMTRsmndZ/Adu76XEOkRc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S2y0ZI3wIO4jHXfzpkr+LVE9q7KN/NCe+BVuK2Ki3jAwlpb2j/lz2xPolZyT85W/QoJzbb6PnvRKUmiK+tSaRQ/32vrUK/KZp5mQ/H+NkywaDNaUiSPJdBpC7OvPRtr3MK5zZT+QlOvgzhqI5E/NyO1R0KWKzJLkVrlcQ9VT+ic= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HIucIMYh; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gaBawpGr; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HIucIMYh"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gaBawpGr" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEP9TE593250 for ; Sat, 28 Feb 2026 15:26:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= avNSzgeO+24+c0meZaN0I+ujV4RCxkpDE+1NQpcaAkg=; b=HIucIMYhsFYUezuc x2Ztq5nbcDLbvEQncHrKTIGLJTDvOzlksoeTdLddwnOOhC/B9LURYmgvZ7DnxYOV xPP0KMNPGgNeZzJSPREuz4xxFtccZ/7CuQ7DFJCIInWnSX1H+w8FtzLYVyb1Ok0t Hj5p3JSJ4V62w25dT5xwSvnMYHg4K74tPhYqLCvfm+vvRgWsrB0CckRqS7VNgBlR mIhzeUxds3NtW+bPY+panTxoqNp6LYDOn+XT4gLooZyuXz6OB+4rPqYegTrdUbD0 5YAdLzHzzgB6ZWGHGDUyhVzlnlzamcDlzs3xar126XP/ffrLIWzYe/cgPrU6wBBe ly/3qw== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksf8h6fy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 28 Feb 2026 15:26:39 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8c71304beb4so2007574485a.3 for ; Sat, 28 Feb 2026 07:26:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772292398; x=1772897198; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=avNSzgeO+24+c0meZaN0I+ujV4RCxkpDE+1NQpcaAkg=; b=gaBawpGrQ8PQaGFESrulz3HtolfGpAi74Qtla9/Y2RLq3iycar+sDdPtnBXid9SAtk SPc9KElO9M0f4mSc7KqvVHtxE1TOe9ngZYZp2WX1RM/XRjaS2V3WJAUhm6Rkx80JttG1 UshR9FO4juOggtIpdIHih7njyRcySl6FS3S5PLwqzO2vKLVHTltlf3ptnCAZ2o7yadgZ tkQ+CCf5uUqxIokGvbaI7IG4THtpvV8EdlZP3NwM9TScThTPeg9gjpxY0Gt9BW4gSxyc i4uRI3BlSCPakJnbS/NAvu3/qIBUEzy1wjpiPGnqh5O8apd+ALuFILmaYJDCpsyBUQ1C +kyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772292398; x=1772897198; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=avNSzgeO+24+c0meZaN0I+ujV4RCxkpDE+1NQpcaAkg=; b=qLNEC+L/GpYtV7Foppw/36TANugZ8VB2bbVx5g7E9Vu6IRPGTuwkcEhflx25cEdC9f 57W7+pni6Od9lxnmtf44mFgRsiLnujc4uPn1gkOKdlvR6uk6mMERJgIOS1DN2CpOdwko ByVqGJtbK1GAUDfXIZLZzBX14m8ZH0wwsNFMZIF6XGSnJY892FNftL9cAi/5FRN2cmVS u2xroDc92uj2XpxPQ3L+Nngd7VM1nnDvIzDGOBwLPnMIWd2VRKb7u99A2AsWxsYqEcMj 1m0HPNVprfWll/NjcRH/e4FcvAV8U5xxKqLUxq5K5jiEV+Xoh/F0oQyeNBpDWVuPD90w ISzg== X-Forwarded-Encrypted: i=1; AJvYcCV4qn5vAFQNeomDlKNU76n/PkzFUGYqc+slOUjrlEwiRkIR1sz4s/hkEsR4q9sn++Razo99baxr9GDswNjE@vger.kernel.org X-Gm-Message-State: AOJu0YztCgOld0IK2l8BTAbFZ8mh7pQmHmc5kSsxo3BjniBQrqEoBeti EgsnoKNvG5vldJZT5J33efBsc3ic8u5GVGTPbYsxA+wLxknkWrHeo4ifirfBYG9vrwPbQg93UxW K5Oq8RCXctpLCITttluM6MqHQhTgqYtX7MScJEl3WqBjlQjUmYSizYXx2hvg3bbiTY8/LbtsAa4 oi X-Gm-Gg: ATEYQzy8cUAybdXw2drXfBaMFgZKsOamKrxkat+xt5ukjiuNUDNi0i6PNdQWsi/vy0P vpBZpexqlz51vi6KrQB25NUNNGfDgOBTjQ2/W6S0b5KilqeyjU/oM41fn42R0EFS1UF0PRrNOtq 4wS3K2dBjU/DYS+AjjhD7gT4pdHQ0UvZfCsGHAjw9r05G4SROrXB1xe0U9efJ7lcClwdxGlHNvq u6nyrPUp+8l9d4ExJxRhGo98HwVAOHRWA3aQf/MoFR/iIoGJhNKti/Xp5EGmINcVyUfAEd8Os/g dRI9KOq1t6J5sltWgguGL9ahciES6WUIO9Jps3U8Azyy10rq8yQM13kjGaNUqMCR79dFzWwDpCi alpGCD/NEzYHLL/ZUZPdMAHHMLyz6AVppiheRzrCloiCBr0sRlwPbwXqgJpKRH5ybYWh7fiMfh/ +8P+ricCk/l71149zlSa4jT3HCDKky7pKd5Kw= X-Received: by 2002:a05:620a:28c3:b0:8ca:305b:748e with SMTP id af79cd13be357-8cbc8e1d7a1mr877885385a.57.1772292398063; Sat, 28 Feb 2026 07:26:38 -0800 (PST) X-Received: by 2002:a05:620a:28c3:b0:8ca:305b:748e with SMTP id af79cd13be357-8cbc8e1d7a1mr877880885a.57.1772292397473; Sat, 28 Feb 2026 07:26:37 -0800 (PST) Received: from umbar.lan (2001-14ba-a073-af00-264b-feff-fe8b-be8a.rev.dnainternet.fi. [2001:14ba:a073:af00:264b:feff:fe8b:be8a]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5a115b57922sm625558e87.63.2026.02.28.07.26.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Feb 2026 07:26:36 -0800 (PST) From: Dmitry Baryshkov Date: Sat, 28 Feb 2026 17:26:31 +0200 Subject: [PATCH v2 04/11] media: qcom: iris: simplify HFI params handling Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260228-iris-platform-data-v2-4-acf036a3c84c@oss.qualcomm.com> References: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> In-Reply-To: <20260228-iris-platform-data-v2-0-acf036a3c84c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=13412; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=nUSa520FLKqjEX950txivtgMTRsmndZ/Adu76XEOkRc=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpowkmWPzUAIzZaOKjb4RERqOA7q7zuS7QbQ8xj KjTKuGP8GaJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCaaMJJgAKCRCLPIo+Aiko 1fTDB/9hj4z70Xtx0qQ38HDijDws2yRgN2YtT1X7BrRUCXJFr7CvqPd/486bibTH0iOwNNxP7rn xp5D4fJjZPQGczcSx25VvCYqo6wdoQjIVBnsLuymwdvsXpIkOhptqZhrryZIVu43U+k4obkdk7/ 4ZT1SuYdoGu0iImclsGdyDN6DgU1K9oRUvqrtYp87PueQPu+xicTOUtxB2wEKVm00s6kTgv7Kr3 irA9AczCPQQTMcRWSizzbkAVfbvmDX6hY9kp6Lz9ecS+66tScqTUN6K1vPBry0/GBL0FSnylBFS Z5ls90n85eeuasBGV0o0tmEOtNvewEd4w4eao2Vag+2aDm8/ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX991GSsYrTraY t/yZQ/GM4+/uRdmQcxDebJ+TwKyACIqHYmrCEktNHO98zd4GY7JtalRtInfIaqJQony7/nPrdqp 7sKbD/I3Q9iSwK2DC4jvN85HSx88VNI6Eh17U4ZAxgQRiOGq22AR7+rKeBchGZFnD4gjB/szRyl z83I+X/XCBcgnOY2tJP7jMLtFayoxoPnfAx9qZL9i9nYe87q+5GpeTHr9JJd+Z3Dq7PchW719fM llVAQt8twma2zqKCdaa2nNi7wyE4meJnDUDb9xq0atWKl6v3hVrLPmm5UYonI8mrlQFmrFQndEd c2EE9EIfdti2wEECXEBf/7dBQZO+0zyZUlzCxlh2uVkM1x+/ksd0rq8rkUwsXoaVo99r/YjEpjW GbgKvjKhoiL8/61EI2tli2Cz+rRR5CmBiWfk6oWwiBv/OSOAkdyOMBJAUT5MW++yA+oRqUv4hot 0w1aFFE7wlpe5yoyLQw== X-Proofpoint-ORIG-GUID: hdU13v_iodjSRgqphBO7-C8xHSD7ZbFE X-Proofpoint-GUID: hdU13v_iodjSRgqphBO7-C8xHSD7ZbFE X-Authority-Analysis: v=2.4 cv=I5dohdgg c=1 sm=1 tr=0 ts=69a3092f cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=vZ3IETys5ARFP0fKc9YA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_05,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 priorityscore=1501 adultscore=0 clxscore=1015 phishscore=0 malwarescore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602280142 Instead of looping over two tables to select the static order of functions, call necessary functsions directly in the correct order. Signed-off-by: Dmitry Baryshkov --- .../platform/qcom/iris/iris_hfi_gen1_command.c | 116 ++++----------- .../platform/qcom/iris/iris_hfi_gen2_command.c | 160 +++++++++++---------- 2 files changed, 108 insertions(+), 168 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c index d5eaf8763f6d..b7aafda1d99e 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -978,107 +978,41 @@ static int iris_hfi_gen1_set_stride(struct iris_inst *inst, u32 plane) return hfi_gen1_set_property(inst, ptype, &plane_actual_info, sizeof(plane_actual_info)); } -static const u32 iris_hfi_gen1_vdec_input_config_param[] = { - HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - HFI_PROPERTY_PARAM_FRAME_SIZE, - HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE, -}; - -static const u32 iris_hfi_gen1_venc_input_config_param[] = { - HFI_PROPERTY_CONFIG_FRAME_RATE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO, - HFI_PROPERTY_PARAM_FRAME_SIZE, - HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, -}; - static int iris_hfi_gen1_session_set_config_params(struct iris_inst *inst, u32 plane) { - struct iris_hfi_prop_type_handle const *handler = NULL; - u32 handler_size = 0; - u32 config_params_size, i, j; - const u32 *config_params; int ret; - static const struct iris_hfi_prop_type_handle vdec_prop_type_handle_inp_arr[] = { - {HFI_PROPERTY_PARAM_FRAME_SIZE, - iris_hfi_gen1_set_resolution}, - {HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, - iris_hfi_gen1_decide_core}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - iris_hfi_gen1_set_raw_format}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - iris_hfi_gen1_set_format_constraints}, - {HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - iris_hfi_gen1_set_num_bufs}, - {HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - iris_hfi_gen1_set_multistream}, - {HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - iris_hfi_gen1_set_bufsize}, - }; - - static const struct iris_hfi_prop_type_handle vdec_prop_type_handle_out_arr[] = { - {HFI_PROPERTY_PARAM_FRAME_SIZE, - iris_hfi_gen1_set_resolution}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - iris_hfi_gen1_set_raw_format}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO, - iris_hfi_gen1_set_format_constraints}, - {HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - iris_hfi_gen1_set_num_bufs}, - {HFI_PROPERTY_PARAM_VDEC_MULTI_STREAM, - iris_hfi_gen1_set_multistream}, - {HFI_PROPERTY_PARAM_BUFFER_SIZE_ACTUAL, - iris_hfi_gen1_set_bufsize}, - }; - - static const struct iris_hfi_prop_type_handle venc_prop_type_handle_inp_arr[] = { - {HFI_PROPERTY_CONFIG_FRAME_RATE, - iris_hfi_gen1_set_frame_rate}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_INFO, - iris_hfi_gen1_set_stride}, - {HFI_PROPERTY_PARAM_FRAME_SIZE, - iris_hfi_gen1_set_resolution}, - {HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, - iris_hfi_gen1_set_raw_format}, - {HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL, - iris_hfi_gen1_set_num_bufs}, - }; - if (inst->domain == DECODER) { - config_params = iris_hfi_gen1_vdec_input_config_param; - config_params_size = ARRAY_SIZE(iris_hfi_gen1_vdec_input_config_param); if (V4L2_TYPE_IS_OUTPUT(plane)) { - handler = vdec_prop_type_handle_inp_arr; - handler_size = ARRAY_SIZE(vdec_prop_type_handle_inp_arr); - } else if (V4L2_TYPE_IS_CAPTURE(plane)) { - handler = vdec_prop_type_handle_out_arr; - handler_size = ARRAY_SIZE(vdec_prop_type_handle_out_arr); + ret = iris_hfi_gen1_decide_core(inst, plane); + if (ret) + return ret; } - } else { - config_params = iris_hfi_gen1_venc_input_config_param; - config_params_size = ARRAY_SIZE(iris_hfi_gen1_venc_input_config_param); - handler = venc_prop_type_handle_inp_arr; - handler_size = ARRAY_SIZE(venc_prop_type_handle_inp_arr); - } - for (i = 0; i < config_params_size; i++) { - for (j = 0; j < handler_size; j++) { - if (handler[j].type == config_params[i]) { - ret = handler[j].handle(inst, plane); - if (ret) - return ret; - break; - } - } + ret = iris_hfi_gen1_set_raw_format(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_format_constraints(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_num_bufs(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_multistream(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_bufsize(inst, plane); + } else { + ret = iris_hfi_gen1_set_frame_rate(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_stride(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_raw_format(inst, plane); + if (!ret) + ret = iris_hfi_gen1_set_num_bufs(inst, plane); } - return 0; + return ret; } static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops = { diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 52fd1fd51946..28f352d99bf0 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -644,103 +644,109 @@ static const u32 iris_hfi_gen2_vdec_input_config_params_av1[] = { HFI_PROP_SIGNAL_COLOR_INFO, }; -static const u32 iris_hfi_gen2_venc_input_config_params[] = { - HFI_PROP_COLOR_FORMAT, - HFI_PROP_RAW_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_LINEAR_STRIDE_SCANLINE, - HFI_PROP_SIGNAL_COLOR_INFO, -}; - -static const u32 iris_hfi_gen2_vdec_output_config_params[] = { - HFI_PROP_OPB_ENABLE, - HFI_PROP_COLOR_FORMAT, - HFI_PROP_LINEAR_STRIDE_SCANLINE, -}; - -static const u32 iris_hfi_gen2_venc_output_config_params[] = { - HFI_PROP_BITSTREAM_RESOLUTION, - HFI_PROP_CROP_OFFSETS, - HFI_PROP_FRAME_RATE, -}; - static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst, u32 plane) { - u32 config_params_size = 0, i, j; - const u32 *config_params = NULL; int ret; - static const struct iris_hfi_prop_type_handle prop_type_handle_arr[] = { - {HFI_PROP_RAW_RESOLUTION, iris_hfi_gen2_set_raw_resolution }, - {HFI_PROP_BITSTREAM_RESOLUTION, iris_hfi_gen2_set_bitstream_resolution }, - {HFI_PROP_CROP_OFFSETS, iris_hfi_gen2_set_crop_offsets }, - {HFI_PROP_CODED_FRAMES, iris_hfi_gen2_set_coded_frames }, - {HFI_PROP_LUMA_CHROMA_BIT_DEPTH, iris_hfi_gen2_set_bit_depth }, - {HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT, iris_hfi_gen2_set_min_output_count }, - {HFI_PROP_PIC_ORDER_CNT_TYPE, iris_hfi_gen2_set_picture_order_count }, - {HFI_PROP_SIGNAL_COLOR_INFO, iris_hfi_gen2_set_colorspace }, - {HFI_PROP_PROFILE, iris_hfi_gen2_set_profile }, - {HFI_PROP_LEVEL, iris_hfi_gen2_set_level }, - {HFI_PROP_OPB_ENABLE, iris_hfi_gen2_set_opb_enable }, - {HFI_PROP_COLOR_FORMAT, iris_hfi_gen2_set_colorformat }, - {HFI_PROP_LINEAR_STRIDE_SCANLINE, iris_hfi_gen2_set_linear_stride_scanline }, - {HFI_PROP_TIER, iris_hfi_gen2_set_tier }, - {HFI_PROP_FRAME_RATE, iris_hfi_gen2_set_frame_rate }, - {HFI_PROP_AV1_FILM_GRAIN_PRESENT, iris_hfi_gen2_set_film_grain }, - {HFI_PROP_AV1_SUPER_BLOCK_ENABLED, iris_hfi_gen2_set_super_block }, - {HFI_PROP_OPB_ENABLE, iris_hfi_gen2_set_opb_enable }, - }; - if (inst->domain == DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { if (inst->codec == V4L2_PIX_FMT_H264) { - config_params = iris_hfi_gen2_vdec_input_config_params_avc; - config_params_size = - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_avc); + ret = iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_coded_frames(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_picture_order_count(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_level(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_colorspace(inst, plane); } else if (inst->codec == V4L2_PIX_FMT_HEVC) { - config_params = iris_hfi_gen2_vdec_input_config_params_hevc; - config_params_size = - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_hevc); + ret = iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_level(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_tier(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_colorspace(inst, plane); } else if (inst->codec == V4L2_PIX_FMT_VP9) { - config_params = iris_hfi_gen2_vdec_input_config_params_vp9; - config_params_size = - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_vp9); + ret = iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_level(inst, plane); } else if (inst->codec == V4L2_PIX_FMT_AV1) { - config_params = iris_hfi_gen2_vdec_input_config_params_av1; - config_params_size = - ARRAY_SIZE(iris_hfi_gen2_vdec_input_config_params_av1); + ret = iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_bit_depth(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_min_output_count(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_profile(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_level(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_tier(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_film_grain(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_super_block(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_colorspace(inst, plane); } else { - return -EINVAL; + ret = -EINVAL; } } else { - config_params = iris_hfi_gen2_vdec_output_config_params; - config_params_size = ARRAY_SIZE(iris_hfi_gen2_vdec_output_config_params); + ret = iris_hfi_gen2_set_opb_enable(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_colorformat(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_linear_stride_scanline(inst, plane); } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - config_params = iris_hfi_gen2_venc_input_config_params; - config_params_size = ARRAY_SIZE(iris_hfi_gen2_venc_input_config_params); + ret = iris_hfi_gen2_set_colorformat(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_raw_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_linear_stride_scanline(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_colorspace(inst, plane); } else { - config_params = iris_hfi_gen2_venc_output_config_params; - config_params_size = ARRAY_SIZE(iris_hfi_gen2_venc_output_config_params); + ret = iris_hfi_gen2_set_bitstream_resolution(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_crop_offsets(inst, plane); + if (!ret) + ret = iris_hfi_gen2_set_frame_rate(inst, plane); } } - if (!config_params || !config_params_size) - return -EINVAL; - - for (i = 0; i < config_params_size; i++) { - for (j = 0; j < ARRAY_SIZE(prop_type_handle_arr); j++) { - if (prop_type_handle_arr[j].type == config_params[i]) { - ret = prop_type_handle_arr[j].handle(inst, plane); - if (ret) - return ret; - break; - } - } - } - - return 0; + return ret; } static int iris_hfi_gen2_session_set_codec(struct iris_inst *inst) -- 2.47.3