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 CCB8625B09E for ; Wed, 26 Aug 2026 04:50:50 +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=1787719852; cv=none; b=UwzFPoNmJuATHIRNg+DOQUAvVvC79RkSfTER/YcdT5g4ZH/v82oLNRJO8UiNvS6BQAECKUEqtGOTZHnfnZV+KcCo1XYsQhCr16OrsT+7/3O1oj0RLt82J6qzcP/93q1IpN0ZoYwbOEzFtSpa0zw/Csur88Fmt46HeenRq+TPb6k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787719852; c=relaxed/simple; bh=was0gA7C61MqRV6TCNyKVDHKgaXY871PGbZPrxBxqVs=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=h5LbVD/NSkEA9htpyNUd1VKJFT0IN3MQubesmk1Se527CjgKhxBHP/rKQg3URr7WRlNXnouJRxBcs4PpVpOD+zh5vnwhkd/mIVkEOStyTFCPxp4aoIsn+UAZHD21m/NjXaDcGVyp1h08c18dJWW/LqfJOldYi9qWQUnepF6rcng= 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=aQ+kD17I; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=VLf6ufIF; 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="aQ+kD17I"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="VLf6ufIF" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67Q3H9op3275571 for ; Wed, 26 Aug 2026 04:50:50 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= sApYm4i2DaHuWJj5iOqvh6kTTxC17NxEQwwfqsJf7Es=; b=aQ+kD17IH8ypl56Y I5iO01TyyvAcf/5GaCtoP7C/UAzFWxv9eiync2nOIFM+A+uEHcrQwvh8HRhkn2cw x60rDqog0HzcKZ48O7y527SimYTtMX9Adpxxxb1VJDGsvMMvtZTHY4mtcgWyTrco s5Fx7rGcd/albKfiImS905d1nHTewmj1FgT6O6MorZOyC9wRuC4P3zlrFGeRNhbH dzdmr52Izr80Jf8uCjpcTJ2tYKOFF7lFRKu6rZz3PYwZM4M6iAel7OQ6q1Oy/Gdg KpZQQOPyj3sQyq26vBYN08dzZMf+CuPYZRE5iVbJoQ/P7c78k3XyfRecMyEnHFRC St0mIg== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g9fjn21yu-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 26 Aug 2026 04:50:49 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2d63c16fc5bso13319515ad.1 for ; Tue, 25 Aug 2026 21:50:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787719849; x=1788324649; darn=vger.kernel.org; h=content-transfer-encoding:content-type:in-reply-to:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to:content-type; bh=sApYm4i2DaHuWJj5iOqvh6kTTxC17NxEQwwfqsJf7Es=; b=VLf6ufIF1IUwUgCi7zp0yEarzBSPkxJDnT9lRwWQ2xsz4VlGnjTQnAkMxd2wzBwxQy bgaP1HUZn9hXP7LvTgfYRM8k76FnthVJIIhj0RqlHEEQOozvPmHGTU8q/Klxgh7i3S+G SBRAj1ZMEF/0ELdPDKwTJJezizJ3VzFKfZ4mCw3dIYldFii0htZs7MqPtfyHWF/o3MHh rlWyDsjrrQ9WhmbhqhVWkldScesW2gsk/iigC5P7BXC/06fgqSDP1V9wENVAPTHbFLjd iOYT8K7V1+PApjcHtRithM/9CA27IApC7Ufj/+iT1qcCpLPyR8asZeGSIgqoKCeN3pPT HFeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787719849; x=1788324649; h=content-transfer-encoding:content-type:in-reply-to:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sApYm4i2DaHuWJj5iOqvh6kTTxC17NxEQwwfqsJf7Es=; b=nuuqrmg083jJA/gvTVDIcD3hN4LNBbu0ZO+lIAqrdL7k4Px1shNFcSzL05iuoYveDv Lp2c1JjThoroKjvuH4zOjbxei1VPUBCjSTep4Bp78XhctZ5xQalALtvKSXrtRn7E7qSG aEDQDljp3g1tbxnUnSSoboKadIUEf3YoZ7Fd+VdQhlSUrGGDtU/UKVimrZ1YaFn+BfTL RsPbqomXHxJp9GAwIQ5xFkwtxLcTxfoIyzN7o3sZcoi9JZr8Hd+16MrG5wiFNbdvJ2eI Q2rVTqAIYCM6oqeQRHozm4Q7EyO0JNNdFT2cJtjgamZkHyGZ6if4rCdpS2iWRMdH0iSu hIoQ== X-Forwarded-Encrypted: i=1; AHgh+RoJ0N1U0Am8X0LJqglhOJWwaucrfRayDRq3Bs06kNa8fzp3IDu1s+0i8YiMMR1xhymirDjiuCItGzq/V3g=@vger.kernel.org X-Gm-Message-State: AFuF++nKcCT5ubvvE9L+PE+JiEvRbPciFWKWthtGLGChm/fjR2nIR6wG D81fgvsKOSaE0X6ptl1icDBAJQEDpNLWoF1acx5Y2wefABJ6XpO6fX6YhEgPGoXFbp4VlRprom2 /TY0BP98gw9hGGp9KH4I1UhwujzRRLW4/HuL7Q/Ermb54iWZI82qLRyzm1+P72+zYhxs= X-Gm-Gg: AR+sD13cNOth9bM9zCjS1TOONVPp8I+PyA9P774YC9eHpxZ67LSBEZYI8EB9V0Q7epA Fr6veYDOeJ7WzdOgeL7XwggPH8tuz3y9fZO4tghy3iG6tThJAe9Ep1o84w3QiLo/pIkUl/qjJRL MAypusyIA2OK0GIN/pOc9EE/mkRLCbTTwEiooBBxKEoZUuIgJOLBg8rtlbgn/wfABKQHdyqETKl kyBbd4tusORRbBGpTnktKLYbHBEcvdWcrWB5u0CJU7RelI4O5sYT/MGEI5JtI0adu4aSZfMib5p V1fu3JVqm382QLhUIIYCG4m46LgEp9tLNgPqzNhojGq3Fa2SOnR2ap6L/FctYuoV/6wFTtnK2KY WvSs53HoFYIK5ouCEmNmPzSHymVDrzByH X-Received: by 2002:a17:903:1a8d:b0:2d6:3c1a:85e0 with SMTP id d9443c01a7336-2d707b60b93mr68646665ad.14.1787719849219; Tue, 25 Aug 2026 21:50:49 -0700 (PDT) X-Received: by 2002:a17:903:1a8d:b0:2d6:3c1a:85e0 with SMTP id d9443c01a7336-2d707b60b93mr68645785ad.14.1787719848737; Tue, 25 Aug 2026 21:50:48 -0700 (PDT) Received: from [10.206.101.140] ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3283d60b539sm4117125eec.1.2026.08.25.21.50.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 25 Aug 2026 21:50:48 -0700 (PDT) Message-ID: Date: Wed, 26 Aug 2026 10:20:43 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 7/9] media: iris: add MPEG2 decode support on Gen1 firmware Content-Language: en-US To: Dmitry Baryshkov , 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 References: <20260709-iris-vp8-v1-0-6af3ab578a7c@oss.qualcomm.com> <20260709-iris-vp8-v1-7-6af3ab578a7c@oss.qualcomm.com> From: Vishnu Reddy In-Reply-To: <20260709-iris-vp8-v1-7-6af3ab578a7c@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-GUID: huZ44tfjaI6jXAIt3yYWMN9iDhvn2yyi X-Proofpoint-Spam-Info: AW1haW4tMjYwODI2MDAzOCBTYWx0ZWRfX6SN3WCOrSaax T5i//crbBXf6BMhh3TleGpsguXEcTbDkPnFdve7cIEl64lZORVO/EoCpckNzX5J6WxkUvnlKnqQ p/SmN7cYde99hJRCXodtBPAgMEVfcGg= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODI2MDAzOCBTYWx0ZWRfX/Z7UnP9Bn5yM 1vUcHaeLppoGA9AMfUzqEHhWW6i0r/meopW5nKP5renqF8KCpMPir9edc2QSbnuXut7xqqGvShk 9hBegtnBCShSZkjU+gNw1JN10C8fSE4CxTFRPFWgOIQFfvWNsYUUc3MT3Fzon9BWdANssAgFjg9 EYzUQ87fXSv/LNkKcMu+QzlGfwqUA/C39zS0yEDrKZBzcx7HSTi58+XKchUaAf2C+2aGRBRF6qC 2g16Bts6QEOcigWF/ZyOSOwfUDngOsQ1/z76QENnsTZgrDoXvnIpu+xNTSyfBjEOz4d54b/YdEj 2ghtS7+fuApKfK8mGHBgmVZZl5Om0/omzxzTCBEh2a3fWGO6ZYJ0GXk02l2mOiI/g9oFcFHFv4z vGMMKhbGXY7vT1VnIPHDMOoPJ7/1j688fAHjtlhsTCxSHQzLQ7GCeRRZySJ92UXW87g1cBGdDRM TCAtuZGt1l/pSNPpETA== X-Authority-Analysis: v=2.4 cv=ccziaHDM c=1 sm=1 tr=0 ts=6a8e70aa cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=DJKZbvoiZJQd1Qtpw-4A:9 a=QEXdDO2ut3YA:10 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: huZ44tfjaI6jXAIt3yYWMN9iDhvn2yyi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-26_01,2026-08-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 clxscore=1015 malwarescore=0 bulkscore=0 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608260038 On 7/10/2026 1:07 AM, Dmitry Baryshkov wrote: > The Gen1 firmware supports decoding MPEG2, but the iris driver never > advertised or wired up the codec. > > Add the MPEG2 HFI codec code, map V4L2_PIX_FMT_MPEG2 to it in the Gen1 > session open path, and compute the MPEG2 internal buffer sizes (line > buffer and the quantisation-matrix / QP-dump persist buffer). Advertise > the codec through the new Gen1 decode format list and register the MPEG2 > profile and level menu controls so userspace can query them. > > Assisted-by: Claude:claude-opus-4-8 > Signed-off-by: Dmitry Baryshkov > --- > drivers/media/platform/qcom/iris/iris_ctrls.c | 15 ++++++++++++++ > drivers/media/platform/qcom/iris/iris_hfi_gen1.c | 24 ++++++++++++++++++++++ > .../platform/qcom/iris/iris_hfi_gen1_command.c | 3 +++ > .../platform/qcom/iris/iris_hfi_gen1_defines.h | 1 + > .../platform/qcom/iris/iris_platform_common.h | 2 ++ > drivers/media/platform/qcom/iris/iris_vpu_buffer.c | 9 +++++++- > drivers/media/platform/qcom/iris/iris_vpu_buffer.h | 3 +++ > 7 files changed, 56 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/platform/qcom/iris/iris_ctrls.c > index 1bd6460a1b0a..8f9347c1df2b 100644 > --- a/drivers/media/platform/qcom/iris/iris_ctrls.c > +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c > @@ -30,12 +30,16 @@ static enum platform_inst_fw_cap_type iris_get_cap_id(u32 id) > return PROFILE_VP9; > case V4L2_CID_MPEG_VIDEO_VP8_PROFILE: > return PROFILE_VP8; > + case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE: > + return PROFILE_MPEG2; > case V4L2_CID_MPEG_VIDEO_H264_LEVEL: > return LEVEL_H264; > case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL: > return LEVEL_HEVC; > case V4L2_CID_MPEG_VIDEO_VP9_LEVEL: > return LEVEL_VP9; > + case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL: > + return LEVEL_MPEG2; > case V4L2_CID_MPEG_VIDEO_HEVC_TIER: > return TIER; > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > @@ -175,12 +179,16 @@ static u32 iris_get_v4l2_id(enum platform_inst_fw_cap_type cap_id) > return V4L2_CID_MPEG_VIDEO_VP9_PROFILE; > case PROFILE_VP8: > return V4L2_CID_MPEG_VIDEO_VP8_PROFILE; > + case PROFILE_MPEG2: > + return V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE; > case LEVEL_H264: > return V4L2_CID_MPEG_VIDEO_H264_LEVEL; > case LEVEL_HEVC: > return V4L2_CID_MPEG_VIDEO_HEVC_LEVEL; > case LEVEL_VP9: > return V4L2_CID_MPEG_VIDEO_VP9_LEVEL; > + case LEVEL_MPEG2: > + return V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL; > case TIER: > return V4L2_CID_MPEG_VIDEO_HEVC_TIER; > case HEADER_MODE: > @@ -527,6 +535,7 @@ int iris_set_stage(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id > * content also uses a single stage. > */ > if (inst->is_interlaced || > + inst->codec == V4L2_PIX_FMT_MPEG2 || > iris_res_is_less_than(width, height, 1280, 720)) > work_mode = STAGE_1; > } > @@ -565,6 +574,9 @@ int iris_set_profile(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_ > } else if (inst->codec == V4L2_PIX_FMT_VP8) { > hfi_id = inst->fw_caps[PROFILE_VP8].hfi_id; > hfi_value = inst->fw_caps[PROFILE_VP8].value; > + } else if (inst->codec == V4L2_PIX_FMT_MPEG2) { > + hfi_id = inst->fw_caps[PROFILE_MPEG2].hfi_id; > + hfi_value = inst->fw_caps[PROFILE_MPEG2].value; > } else { > hfi_id = inst->fw_caps[PROFILE_HEVC].hfi_id; > hfi_value = inst->fw_caps[PROFILE_HEVC].value; > @@ -585,6 +597,9 @@ int iris_set_level(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id > if (inst->codec == V4L2_PIX_FMT_H264) { > hfi_id = inst->fw_caps[LEVEL_H264].hfi_id; > hfi_value = inst->fw_caps[LEVEL_H264].value; > + } else if (inst->codec == V4L2_PIX_FMT_MPEG2) { > + hfi_id = inst->fw_caps[LEVEL_MPEG2].hfi_id; > + hfi_value = inst->fw_caps[LEVEL_MPEG2].value; > } else { > hfi_id = inst->fw_caps[LEVEL_HEVC].hfi_id; > hfi_value = 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 4c3aa5a03ddd..4b05c2a47b0b 100644 > --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.c > +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c > @@ -41,6 +41,29 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8250_dec[] = { > .value = V4L2_MPEG_VIDEO_VP8_PROFILE_0, > .flags = CAP_FLAG_MENU, > }, > + { > + .cap_id = PROFILE_MPEG2, > + .min = V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE, > + .max = V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH, > + .step_or_mask = BIT(V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_PROFILE_SNR_SCALABLE) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_PROFILE_SPATIALLY_SCALABLE) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH), > + .value = V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN, > + .flags = CAP_FLAG_MENU, > + }, > + { > + .cap_id = LEVEL_MPEG2, > + .min = V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW, > + .max = V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH, > + .step_or_mask = BIT(V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440) | > + BIT(V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH), > + .value = V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN, > + .flags = CAP_FLAG_MENU, > + }, > }; > > static const struct platform_inst_fw_cap inst_fw_cap_sm8250_enc[] = { > @@ -435,6 +458,7 @@ static const u32 iris_hfi_gen1_dec_fmts[] = { > V4L2_PIX_FMT_HEVC, > V4L2_PIX_FMT_VP9, > V4L2_PIX_FMT_VP8, > + V4L2_PIX_FMT_MPEG2, > }; > > static const u32 iris_hfi_gen1_ar50lt_dec_fmts[] = { > 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 90645ed3e0d8..53ba48f88410 100644 > --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c > +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c > @@ -111,6 +111,9 @@ static int iris_hfi_gen1_session_open(struct iris_inst *inst) > case V4L2_PIX_FMT_VP9: > codec = HFI_VIDEO_CODEC_VP9; > break; > + case V4L2_PIX_FMT_MPEG2: > + codec = HFI_VIDEO_CODEC_MPEG2; > + break; > } > > packet.shdr.hdr.size = sizeof(struct hfi_session_open_pkt); > 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 13c8ff59d6e4..3c8ae1c82540 100644 > --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h > +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_defines.h > @@ -14,6 +14,7 @@ > #define HFI_SESSION_TYPE_DEC 2 > > #define HFI_VIDEO_CODEC_H264 0x00000002 > +#define HFI_VIDEO_CODEC_MPEG2 0x00000010 > #define HFI_VIDEO_CODEC_VP8 0x00001000 > #define HFI_VIDEO_CODEC_HEVC 0x00002000 > #define HFI_VIDEO_CODEC_VP9 0x00004000 > diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/drivers/media/platform/qcom/iris/iris_platform_common.h > index 84017b66e98f..3d631effe307 100644 > --- a/drivers/media/platform/qcom/iris/iris_platform_common.h > +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h > @@ -116,9 +116,11 @@ enum platform_inst_fw_cap_type { > PROFILE_HEVC, > PROFILE_VP9, > PROFILE_VP8, > + PROFILE_MPEG2, > LEVEL_H264, > LEVEL_HEVC, > LEVEL_VP9, > + LEVEL_MPEG2, > PROFILE_AV1, > LEVEL_AV1, > TIER_AV1, > diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c > index ca90414e6c19..c16e2b652cf4 100644 > --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.c > +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.c > @@ -298,6 +298,11 @@ static u32 hfi_buffer_persist_vp8d(void) > return ALIGN(VP8_NUM_PROBABILITY_TABLE_BUF * VP8_PROB_TABLE_SIZE, DMA_ALIGNMENT); > } > > +static u32 hfi_buffer_persist_mpeg2d(void) > +{ > + return QMATRIX_SIZE + MP2D_QPDUMP_SIZE; > +} > + > static u32 hfi_buffer_persist_vp9d_ar50lt(void) > { > return ALIGN(VP9_NUM_PROBABILITY_TABLE_BUF * VP9_PROB_TABLE_SIZE, DMA_ALIGNMENT) + > @@ -1083,6 +1088,8 @@ static u32 iris_vpu_dec_persist_size(struct iris_inst *inst) > return hfi_buffer_persist_vp9d(); > else if (inst->codec == V4L2_PIX_FMT_VP8) > return hfi_buffer_persist_vp8d(); > + else if (inst->codec == V4L2_PIX_FMT_MPEG2) > + return hfi_buffer_persist_mpeg2d(); > else if (inst->codec == V4L2_PIX_FMT_AV1) { > caps = inst->core->iris_platform_data->inst_caps; > if (inst->fw_caps[DRAP].value) > @@ -1163,7 +1170,7 @@ static u32 iris_vpu_dec_line_size(struct iris_inst *inst) > else if (inst->codec == V4L2_PIX_FMT_VP9) > return hfi_buffer_line_vp9d(width, height, out_min_count, is_opb, > num_vpp_pipes); > - else if (inst->codec == V4L2_PIX_FMT_VP8) > + else if (inst->codec == V4L2_PIX_FMT_VP8 || inst->codec == V4L2_PIX_FMT_MPEG2) > return hfi_buffer_line_vp8d(width, height, is_opb, num_vpp_pipes); > else if (inst->codec == V4L2_PIX_FMT_AV1) > return hfi_buffer_line_av1d(width, height, is_opb, num_vpp_pipes); > diff --git a/drivers/media/platform/qcom/iris/iris_vpu_buffer.h b/drivers/media/platform/qcom/iris/iris_vpu_buffer.h > index 684b459c0cad..4694467677f6 100644 > --- a/drivers/media/platform/qcom/iris/iris_vpu_buffer.h > +++ b/drivers/media/platform/qcom/iris/iris_vpu_buffer.h > @@ -69,6 +69,9 @@ struct iris_inst; > #define VP8_NUM_PROBABILITY_TABLE_BUF (5 + 1) > #define VP8_PROB_TABLE_SIZE (3840) > > +#define QMATRIX_SIZE (sizeof(u32) * 128 + 256) > +#define MP2D_QPDUMP_SIZE (115200) > + > #define SIZE_SEI_USERDATA 4096 > #define SIZE_DOLBY_RPU_METADATA (41 * 1024) > #define H264_CABAC_HDR_RATIO_HD_TOT 1 Reviewed-by: Vishnu Reddy