From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 D64293C10A8 for ; Thu, 9 Jul 2026 19:37:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783625849; cv=none; b=fpWsdxmb91OuKFyXZ2V690PvGlHvwdarXiLM77A121QuAgDeHd7V+KL484rNc23o+rHzmTGRrWbslP8TQRkXngauXmsMv31/dLQmF2B7cT6fEWEI/dtz6eRBZVEuKk786H3AUeqRordweafYXZXcOTW9/XLmeOUU62fvSfdvJCc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783625849; c=relaxed/simple; bh=mZusnoT2WUAfwc1lIqw4bcGLnT42XbUFodbSzhc24x8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A1ADP3mIGkOT+Z2WIPYCWXY3MiJ/sULpvAZwSI34nQ4VUGFIeE1LZUPdb4gVWsTo9JX4SOlpq6ydqyG0P53J2mk38kJia8zifglIREqhGQiPDXrJBegXUPkfAN1ncILcd2AO6QY/RJH/Zhn4iFOrYIb2b9qLtftzdokAsd3cvKI= 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=agaNMxdm; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=JOBJlKvJ; arc=none smtp.client-ip=205.220.180.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="agaNMxdm"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="JOBJlKvJ" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 669HY1dD2519005 for ; Thu, 9 Jul 2026 19:37:24 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= OF3jWljA9JWLIdXUfkTrXBIJfz/O13vMhJungOwkK2w=; b=agaNMxdmhE8d03V2 3FaGGDFwwNtOgOdm0+CAEMaoU4NLz5OmhflVJMqSLuskWU6k3OFPYdfca74kXreP lsCELT1ffvCV5w6/7L7DtDUITu83vh9TmTJ3YXcO7aFCLAXdofKzGTh9Vv6F89k7 kHV4OkGnww3r2mUE0Xl2SzAUwlmgYi+Dfe4RvCp/zkFjK4FBBLC6CwC+N4qL9TaQ q07ngGeV9dR4k9gH/Jc0fFN3O3s00O+LP5FPcoVSvRvwhbc9Q+GIMKdR8Qn/64wi ubaLeVn48nUOUcIfEco5g/fO8EGNyDcrFkI6EhLv1JeEKycEqzcmE3+Y+wpSt6hS 76nTiA== Received: from mail-ua1-f70.google.com (mail-ua1-f70.google.com [209.85.222.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4faeess4r1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 09 Jul 2026 19:37:24 +0000 (GMT) Received: by mail-ua1-f70.google.com with SMTP id a1e0cc1a2514c-96939fcd33dso59926241.1 for ; Thu, 09 Jul 2026 12:37:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1783625844; x=1784230644; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=OF3jWljA9JWLIdXUfkTrXBIJfz/O13vMhJungOwkK2w=; b=JOBJlKvJakMyerpSNkJaFgc5dFmXUzDcf1CmBLyxrYCT5ZqT730JNYjMAL1s15sdI7 juzeyPmWHP7g3PQBZcOrcOycrhY7M/eGgUyVQDCO8J+4VEF//fIGQv0NfbWuGEbwtQfX z3FFo5Wo86Zj7Jf9KEsbO8HuzENzlIPugL2iQmUqeCNakCvM/DjCOtEio43M+KiMfdPR OzHdvFPGET7T36Ew2ZSeMz/e3LVEF2xu6snWYNJP1oyH8BoTNf8yIpz7q3+TyWKYDXVg IPENSMiSmobhzNUZN7+ChYsN/yaAhuweVJjRhHxBGRv1vOfVEqtdsIpFYb9Zq6yLc+aq HT6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783625844; x=1784230644; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=OF3jWljA9JWLIdXUfkTrXBIJfz/O13vMhJungOwkK2w=; b=Uqxjc7C6ZzUEFj+5bah5h0793RuEHPPcX74RiKsmjaxPALM77LQanTHZUFSabLnrA6 2/K25dJYpIPfRfVsSZqmlxZZWyDB7JW7WcclXU3caoH9jqMOBauPavXlBp5YoZ4mYLnb 4qDuqm/BaE0rs27e/b2IGLY2+zbBUvMVafpJ1846iywLllcaWAQqgbhsyp5SMkzJa2/K X5G3S0A3FrkzzKT09G8E1hxzqAOJ7Q0k5c5m015x8Pu9jPoHu0LKN32K5MjgQt4RCDKB 3z3Z1F2MLx7+1Nk4bthvsr6BNTU7XhKcT3npDHSnXGZ9LUNfjqaGIT5JX8s0+4QrkNNU SKzQ== X-Forwarded-Encrypted: i=1; AHgh+Rqz39BzBtGbNw7OchbsnS1SF3paPKZjQnvu3rS9QexPseBsANSRHp+mv0qGwzkDOrlyLJ3owPOyJuID43E=@vger.kernel.org X-Gm-Message-State: AOJu0YzOFUYTEXhJVp/Ukoks7VZbT5kvE3diMrvPqs03KKhPHFn7qQoh /iJ5MGgK9crGiXFENpDuaVCeIJRnLqUcm6ulMaHh/3dehXVOtKp2Hvwq8OQycj0O8KTY5CMlQ4q yqP4HK89hB6f2S00FDEGkAi4b9yzVQNTmKVnEUP7vzvlCXg4EgFLrnez6ELnDlTbxnKY= X-Gm-Gg: AfdE7cnUzNwNxls5v+hFB+LcSwnTZS6+kjsh475lNm4e6+EFMcjusuj+0nCYjPtWumk PFlDZAiLw+HWfwEvlZQzJildkqkAvnhQnEmzSpDR9RvQG+avRLu0KL7TvMYR3/rYUyL3StBwquZ fwavp7Wp47qDC3CeDAge5Rqs6ZhEANMYGkk9PTrzZhcliG0M0yEtcCBQNVGz6vcjcKsHhkyrsm7 yOw3XonES6MBevu+kVNP3SWV/S8zA3vsC9samjzGRZMxoyyr2bJVFD7U0B+/r31jCaQNoRhZhPB D7JSFTPLBNb7SDjzCBW+L6l7mRvP5tJISW5lbhci4GhaSaVDbnKr5pu7qta0pOIV6ypRbsY0+vr ubCnqu6SiJWGpjkSh0SaHpBgB4WJknJz8APwkKm5RMqq95IOQON5MtYZzlNg3RvEUmmh2CzOzeU 5/yizkfaGvbF30tWWM7q01voM3 X-Received: by 2002:a05:6102:4191:b0:720:7e04:b306 with SMTP id ada2fe7eead31-744dff0ad16mr5284180137.5.1783625844019; Thu, 09 Jul 2026 12:37:24 -0700 (PDT) X-Received: by 2002:a05:6102:4191:b0:720:7e04:b306 with SMTP id ada2fe7eead31-744dff0ad16mr5284168137.5.1783625843498; Thu, 09 Jul 2026 12:37:23 -0700 (PDT) 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-5b01caa635dsm46400e87.62.2026.07.09.12.37.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 09 Jul 2026 12:37:22 -0700 (PDT) From: Dmitry Baryshkov Date: Thu, 09 Jul 2026 22:37:06 +0300 Subject: [PATCH 9/9] media: iris: add VP8 encode support on Gen1 firmware 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: <20260709-iris-vp8-v1-9-6af3ab578a7c@oss.qualcomm.com> References: <20260709-iris-vp8-v1-0-6af3ab578a7c@oss.qualcomm.com> In-Reply-To: <20260709-iris-vp8-v1-0-6af3ab578a7c@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=5498; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=mZusnoT2WUAfwc1lIqw4bcGLnT42XbUFodbSzhc24x8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBqT/heGUvkBzb7Bx1jxhNrQPpGgkbO9rTaWLnTx EgCZzKlhd+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCak/4XgAKCRCLPIo+Aiko 1bJjB/0XEZz1Q1Vns9CCt4Q4yGFGVaS0GCUtCxU0F0gHluwtpuf6PjCuYvoolULXxIom7l/1M08 Lwar9mZlKbZDJO7m/LmDKMtioJy1Ojxk3vYTf7V4E7HCZEoChBzAOAAnS8Lv7RmibsLhTU6MkJ5 EtcQCajtm+GgLXT4lp3PBdZJCjNfLsYvCdWOIhwJ3M1aJ/zOpdINVnvbgozu/vLQ5hAhjiem1Nx v90X5c8qnM1JYa9h00p5Xw3LYYayMfC8LIMuFyHsGfDV9gyc1WWngMbrxA1xzF4YfBBtBF9NxZA Y9nKkstzX/5XwFAGJwmf2AOVi/kKWdG+907B12USxvt9C+gz X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: N2IXmWH6YMl2GK8I2umIBSfcRmLZCo-8 X-Authority-Analysis: v=2.4 cv=bbpbluPB c=1 sm=1 tr=0 ts=6a4ff874 cx=c_pps a=R6oCqFB+Yf/t2GF8e0/dFg==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=RAioF0-LDSMA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=HONOBwlNRYcZTqebO68A:9 a=QEXdDO2ut3YA:10 a=TD8TdBvy0hsOASGTdmB-:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNzA5MDE5MyBTYWx0ZWRfX7TOnYJAvp0W5 JzOQlPRCzX6g/CWPKXwEbpaaurL92MD0EFCK8OUANkAkoJ/vunaEduQ+MZ4DumJnDV51On+elHq mHr0J/Gb9vyyX2QCE1fNx2jRisCejoc= X-Proofpoint-ORIG-GUID: N2IXmWH6YMl2GK8I2umIBSfcRmLZCo-8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNzA5MDE5MyBTYWx0ZWRfX9qNsUlIOiRh9 sB0md0I5+MbmnWlEGeRr13BcOJpYnXZyNnZZfyy0pRhbUgaA3S8Rjc93h6nMhauLEZqtBDA1+U+ JuzVQAkTPz4JTo8zb69h4+A42nYRXPp7tCeSJPMATokMjYGdaNAcmrksiE6u5/1t9xJqm922FlE ivCsuSBgvP2inbFOFqDOjJWZSVEiaSAY1TGxvBo4ypDMLQLGz/DcadNU/f2elZvPnYCWPhOXvcc MHF1gQ6gxDtZCt8z/DQnf3Z44rDBI33pPxvrrdnjERnmkGSD/1nyQmNgxsQ1ir/Ovi3IwrX/32m gXOOW5DoYL95679HYKa71Bkh4bkBVuZpPbxjIeQEnhKH6Lni/nSxHxvWPKo2bM3XZw+AZiMGPJd R/TQPiREOgJlQ22GUmeH7kAnmfUtJUGmf3+oVeHNGwPdSB/m9KGc39dM/Ed7R5x694lmkxPWXuf jz0tSIJaTbkLOg8M9JQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-07-09_04,2026-07-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 suspectscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2607090193 The Gen1 firmware supports encoding VP8, but the iris driver never advertised or wired up the codec. Advertise VP8 through the Gen1 encode format list and register the VP8 profile control, sending the profile to the firmware through the profile/level property. VP8 has no level, so only the profile is set. Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_ctrls.c | 3 +++ drivers/media/platform/qcom/iris/iris_hfi_gen1.c | 23 ++++++++++++++++++++-- .../platform/qcom/iris/iris_hfi_gen1_command.c | 12 +++++++++++ .../platform/qcom/iris/iris_hfi_gen1_defines.h | 5 +++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/platform/qcom/iris/iris_ctrls.c index 8f9347c1df2b..c065ebc24d7d 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -621,6 +621,9 @@ int iris_set_profile_level_gen1(struct iris_inst *inst, enum platform_inst_fw_ca if (inst->codec == V4L2_PIX_FMT_H264) { pl.profile = inst->fw_caps[PROFILE_H264].value; pl.level = inst->fw_caps[LEVEL_H264].value; + } else if (inst->codec == V4L2_PIX_FMT_VP8) { + pl.profile = inst->fw_caps[PROFILE_VP8].value; + pl.level = 0; } else { pl.profile = inst->fw_caps[PROFILE_HEVC].value; pl.level = inst->fw_caps[LEVEL_HEVC].value; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1.c b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c index 0451ee321840..b3c567349a6b 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c @@ -150,6 +150,19 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8250_enc[] = { .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, .set = iris_set_profile_level_gen1, }, + { + .cap_id = PROFILE_VP8, + .min = V4L2_MPEG_VIDEO_VP8_PROFILE_0, + .max = V4L2_MPEG_VIDEO_VP8_PROFILE_3, + .step_or_mask = BIT(V4L2_MPEG_VIDEO_VP8_PROFILE_0) | + BIT(V4L2_MPEG_VIDEO_VP8_PROFILE_1) | + BIT(V4L2_MPEG_VIDEO_VP8_PROFILE_2) | + BIT(V4L2_MPEG_VIDEO_VP8_PROFILE_3), + .value = V4L2_MPEG_VIDEO_VP8_PROFILE_0, + .hfi_id = HFI_PROPERTY_PARAM_PROFILE_LEVEL_CURRENT, + .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, + .set = iris_set_profile_level_gen1, + }, { .cap_id = HEADER_MODE, .min = V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, @@ -470,6 +483,12 @@ static const u32 iris_hfi_gen1_ar50lt_dec_fmts[] = { static const u32 iris_hfi_gen1_enc_fmts[] = { V4L2_PIX_FMT_H264, V4L2_PIX_FMT_HEVC, + V4L2_PIX_FMT_VP8, +}; + +static const u32 iris_hfi_gen1_ar50lt_enc_fmts[] = { + V4L2_PIX_FMT_H264, + V4L2_PIX_FMT_HEVC, }; const struct iris_firmware_data iris_hfi_gen1_data = { @@ -728,8 +747,8 @@ const struct iris_firmware_data iris_hfi_gen1_ar50lt_data = { .dec_fmts = iris_hfi_gen1_ar50lt_dec_fmts, .dec_fmts_size = ARRAY_SIZE(iris_hfi_gen1_ar50lt_dec_fmts), - .enc_fmts = iris_hfi_gen1_enc_fmts, - .enc_fmts_size = ARRAY_SIZE(iris_hfi_gen1_enc_fmts), + .enc_fmts = iris_hfi_gen1_ar50lt_enc_fmts, + .enc_fmts_size = ARRAY_SIZE(iris_hfi_gen1_ar50lt_enc_fmts), .dec_input_config_params_default = sm8250_vdec_input_config_param_default, 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 53ba48f88410..c652c61db19d 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -542,6 +542,13 @@ static const struct iris_hfi_gen1_id_mapping iris_hfi_gen1_hevc_levels[] = { { HFI_HEVC_LEVEL_62, V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 }, }; +static const struct iris_hfi_gen1_id_mapping iris_hfi_gen1_vp8_profiles[] = { + { HFI_VPX_PROFILE_VERSION_0, V4L2_MPEG_VIDEO_VP8_PROFILE_0 }, + { HFI_VPX_PROFILE_VERSION_1, V4L2_MPEG_VIDEO_VP8_PROFILE_1 }, + { HFI_VPX_PROFILE_VERSION_2, V4L2_MPEG_VIDEO_VP8_PROFILE_2 }, + { HFI_VPX_PROFILE_VERSION_3, V4L2_MPEG_VIDEO_VP8_PROFILE_3 }, +}; + static u32 iris_hfi_gen1_find_hfi_id(u32 v4l2_id, const struct iris_hfi_gen1_id_mapping *array, unsigned int array_sz) @@ -577,6 +584,11 @@ iris_hfi_gen1_profile_level(struct iris_inst *inst, u32 v4l2_pf, u32 v4l2_lvl, pl->level = iris_hfi_gen1_find_hfi_id(v4l2_lvl, iris_hfi_gen1_hevc_levels, ARRAY_SIZE(iris_hfi_gen1_hevc_levels)); break; + case V4L2_PIX_FMT_VP8: + pl->profile = iris_hfi_gen1_find_hfi_id(v4l2_pf, iris_hfi_gen1_vp8_profiles, + ARRAY_SIZE(iris_hfi_gen1_vp8_profiles)); + pl->level = 0; + break; default: pl->profile = 0; pl->level = 0; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h b/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h index 3c8ae1c82540..2fe1cb7928b5 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h @@ -63,6 +63,11 @@ #define HFI_HEVC_LEVEL_61 0x00000800 #define HFI_HEVC_LEVEL_62 0x00001000 +#define HFI_VPX_PROFILE_VERSION_0 0x00000004 +#define HFI_VPX_PROFILE_VERSION_1 0x00000008 +#define HFI_VPX_PROFILE_VERSION_2 0x00000010 +#define HFI_VPX_PROFILE_VERSION_3 0x00000020 + #define HFI_ERR_NONE 0x0 #define HFI_CMD_SYS_INIT 0x10001 -- 2.47.3