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 C5D384657F2 for ; Sat, 28 Feb 2026 15:26:39 +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=1772292401; cv=none; b=j7SqMu2pLpF/ZDcZlQfnUJ2TI5Aq/t2OQ3OS0dx7nYf5IKd3FW/5NbVLx0t017A4C+Ut1zMx0UG7lU7cammR0nbYQEHauINgJfxspM08Wf2CzM3uBGj9GU5dmQENK7VnY6CCPePfJKRAP08nZi8E6TJeKXG4oqyOpilu3CNbc7M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772292401; c=relaxed/simple; bh=nUSa520FLKqjEX950txivtgMTRsmndZ/Adu76XEOkRc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qqjo2ybZ1C/WIxNUiotWrmioGH9IMO6DW753FU9Zak2w2LnZWXWQM+bOPL3tDynyVZ0w8E7GK8TQLt8IGgA7l+E+OfHiNjTadzbY2L0lTLAmQhMvHyE9BbecKkYMC1kOnyMcrn6OZt58yNIlkQF6IuO8Dl2i7ryMTm4Mmd8GSzA= 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 (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61SEO9oU2733687 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-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksgrs5vb-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-f198.google.com with SMTP id af79cd13be357-8c70ed6c849so2428898985a.1 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=ampID7f/hvwAhF9rm4Zx1/hJKG1VAPvImgNuseAN1xj1lmHvhzVh/FNvpjKUGWwOsX 7NHZXC/p+1hSK/mdSEYQWB5Bk5ROByN30xIN47TMvg9yYQ/P7RGsHiYqykQ31nY0D6U3 SIRi11VobyW5g1/AmzY6cof7xErkc9rsJgoya3aFD81z+oSTJyApZ3vFZxrsmmDBCdNU wk1b44FIxlcfCWJBNA/DDEEHr9KJjY7pl62XE3/WyjRBmTZ/CUVRDkt9lxdcEIeqFQWB WB8L5y8tZfyUjM+a9VPYTqKKX5YERfjJUzREq4RZhZD2pPyvMJhddPcnNF/rEKyAlH5k wBDg== X-Forwarded-Encrypted: i=1; AJvYcCUM7dcq6c6PUDFT/T9T3ZvUDfNDZ91t9fbyx+05GLRG6pBqn38k0S2/U1oFHiCd5Pwd1g3BfIiW4+1X3oM=@vger.kernel.org X-Gm-Message-State: AOJu0YzGP3E7/MzXb+uHThzHHdSx4T/5WIatHOyKbP7EFiM5e9NrLWVK DopyVQLDG5kYY/qfKID774MLgdgPxQnLtB6rFWY8owIrTcTaxufstCPhn6MOY8RiHsYAzRxXbUz GcP07/2W8rHhfCNeeXMJgyzPUbivz0OfhfqtkTXR5CZqk1aFsrWEBV+d9Pbx1WYOsdZw= X-Gm-Gg: ATEYQzzkdtjOjEVfB+ZGw9ixQDF1OKk4bHcx8aQ8K2AAoT6seyFvfsfSHy0lr0cIdux jg2A6P+waBPdKpaWRcrrS0mk7Zlmz/a6ovjryQ/hZhro+dDmD3GRKdRZS/4kk7Zy9xtmKR6xLV5 vliK97TLoQ4CBUyCZezJrQfYU3/0ROQKPMO1rgrrj/eG3jmV49472qfRdvRDkHSzpVGraVJVzwk 2VVVGsii3WSmqgRNgjfynyOMbfZOpcwaB65M1DiVbiJ9JaKJVMJvU2M/+IM7lHgSBwcEx2Vrk+8 rQW53dfhn8dJeC9Ad6Ku91w13qPIHXNz9E4MXJVkBhireL8hgoWXz10h2IGwiEyxbEXJiQjV5A+ EKEjQgd/0CR55yyFIJKvaUP/Vy5yLbMzOIVwX0O6OogL57RZHdsykd68us4+Ig2hJNUk8p2Aez8 s2b5RhkoF5E09uc73mjkQvlxCtx676B/A3OHQ= X-Received: by 2002:a05:620a:28c3:b0:8ca:305b:748e with SMTP id af79cd13be357-8cbc8e1d7a1mr877884785a.57.1772292398034; 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-kernel@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: AW1haW4tMjYwMjI4MDE0MiBTYWx0ZWRfX/nVto19BSkuy Tbb2P177k5VekggIgCb2aNIYjHE7tUH9t7DZPUmzdT3VF+U5a0I8/sreCTGtXCvFraZyJ9r0j9g Lwm7jMQjAjja0WCqGDzOg5mW/awQ5P5aVwdQI7vfs7QZxoGxJEDY2Q3oD3d+Tg8yQn2aZQD2Cnd s4f8OMrFP3M1/Br7PO8F4NX/IT2Kajm+6Qcp1En08Eqakxal5jqH780qG0GBLrAvY5YYs9LSySU ResVMKhGsFDkhkpLf9lxw/wTule7lZcydbUuKNrOy0gGuYnTRTuFdWeg1+rXLnDZiNbI9YJwRr8 aXa/5xVurHgs75yfI2xi4Y/VkqxAVRej90CLV89zwIQt9Cv7Qct8pwpRzHP/RGHwpU8X8hL1x2o rkd8DGOigRlORlihz5rR+gfOSnYTbkiLpf7AOkBEsEj1I2C25N2SQh/1Mv7s4NbuUF7rn2BbhD1 KiS0bH2vS8xx3FpEf2w== X-Proofpoint-GUID: lVjWtU3j7XhJ8X2s9cZxpWRKMxBcqLEJ X-Proofpoint-ORIG-GUID: lVjWtU3j7XhJ8X2s9cZxpWRKMxBcqLEJ X-Authority-Analysis: v=2.4 cv=Zqzg6t7G c=1 sm=1 tr=0 ts=69a3092f cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=vZ3IETys5ARFP0fKc9YA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O: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 clxscore=1015 lowpriorityscore=0 spamscore=0 priorityscore=1501 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 bulkscore=0 adultscore=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