From nobody Fri Apr 3 03:00:11 2026 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 253F7301472 for ; Wed, 25 Mar 2026 04:28:51 +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=1774412936; cv=none; b=lROV73prBI1dX2Kdtf5iiHd5k6pazCP5Y6RQPVIraHfkCzhtoUCjK0jSQq++JP2OQwZFxvMyIBLpDkf6YvjakIoQ4F02539nVQcIyNUvQzoVcbyJhhfiQDjNm93uK6Gr7nmWCBJ9r6Bw5vidwgqHEP8JWPiXz0kOjL2S7HgCuVA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774412936; c=relaxed/simple; bh=O9k5sbNbliyjwCfU4/2rvQsib07HELJ5jU7XvpY0BZY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=sE0wj1SHGGrUqi0arYzQjdHRIpItAaf5NDdZzma7WW0wCWJTz+OEwTXw4fJPb4RIj8dFDMJbo3LKlnd+U6GnyBwTQHJWN/wCQ7D8qUdSYemiDV9fw2AcCvzpsRMDEGV46aeCzz4n42K5lULuacJ/YcW8bDofGt+vpR/HDWYv5PE= 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=FfX/Tn5B; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=YI2lHCde; 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="FfX/Tn5B"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="YI2lHCde" 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 62P3xVWY920299 for ; Wed, 25 Mar 2026 04:28:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=qcppdkim1; bh=yCUcZwnRSz7kINo8xzqbZt uw5fBlTi+A3o+3zPGO0Xg=; b=FfX/Tn5BVd0OwI0xQOWZaftksZ9kEFV/QVUciu UV3iZv90M80GaZN7o48kyTkEbX90pNcmBQKAdrVKaUxSORGtdag9clwdGdiAIwxl CDkDUa59YDTmfCwXfHyuFeJ3jJwFPuLn5+0YaS0TxpEUTqr081MkxbOm737vM7gM Arq6hwhfS3E11d2c2bBg9amvZHC/uXwbYjpCdPM7cQQjb/nqxQH4dVdpKSOJeRGL FR841scB74Baue6E/6GnJFTRU6j7ZIh9Qv6H1DS4gR6V09oBBHEVytNCpno3BaUI 3PMfOCErGRrJB0usOw+8Cb+WcWbV83dPAlpdULwREKrdnAUw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d489mg2tm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 25 Mar 2026 04:28:51 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2b05370ec01so383198645ad.1 for ; Tue, 24 Mar 2026 21:28:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1774412930; x=1775017730; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=yCUcZwnRSz7kINo8xzqbZtuw5fBlTi+A3o+3zPGO0Xg=; b=YI2lHCde3eiRldqTV9jPwT2h6XlOtCDr6ZM2zj5PCC0qnx6n3h9AzxqDiAXAiECwF7 fWSEPVgBh28/pVgznak7Dg9pX6nniCDBCsETcC8vRDOjdvnA6aJ7ko2yDlm/Nog2l12Z KwgxEC9+EiQ8RfAR1r28wFDqwhXkWhuPkhKdWM+Z1N3c3XHvELD3+kC9hVWVRB4lPRKY DCR5swcIcmgI7IwYgbBBKGNXApt0PjDljiZSpTbe5ZHibkO4MZIwfIL2DqRsVaqDPZLX QWmxL5INkw750wTMVA+zpS3ZJBNiV4w8C1paAZ4KxXO93cGn0TuhoCO9VvqMS3J9DhH8 irFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774412930; x=1775017730; h=cc:to: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=yCUcZwnRSz7kINo8xzqbZtuw5fBlTi+A3o+3zPGO0Xg=; b=AwiYoNm5uSvJ6VLTgg7rH/ypvkhS45k7U19DvaYIo0a3dvYvC5VqQYO2ALx25UWA3u wYyvbKYw7UK/yOLbEfzS/2mlr4HjoYnO3D5ZjkuVImz5yog2C9/NkD/7hYzaXLgxHT/o jKhOp1LfxzeCJpwMUzP15B40AhDQ8gPCMu4pdzaB0/eYmX0DaI5NW4IUudTOSBafp25+ VwwL+ZDqEDyZDkdZlOatvhk+kHJkezpU5W9sVlR1kKCRzry0t8lflMm/xi770hGYrClE FV8JXaSs8TvvTfIfPWFZPnuZmjXKgLxyUwRQgPLh+WLT91K5c8WBBqKFBKMaNurVJ9WZ fzpQ== X-Forwarded-Encrypted: i=1; AJvYcCV1cei87JrOzfLpnbSnAXJPJJamEA37vX2mosXrZBf8PuvOWI8yWN1bvCT7w+ZUOqdYT0CkIrYN/kbBhD0=@vger.kernel.org X-Gm-Message-State: AOJu0YwYfXpYxg12Qw0bQ1itAZwMTwl5VFgQxzpd0QctghLkBox7Niat J/nuV8jXgSXFu6PueU6cKxaERcLNv6BZXZkreGDDk5zqYfTP448cuAPAOyDiVp5m7zVBZy3hcc7 lMWY2HO9iDlyEzPDyrQCKRNGW+43oVul0+Crm51WlqdTatGTcoEzw5PjyfKl9oHcwAJk= X-Gm-Gg: ATEYQzx+kBMTtJEzHdHKwNWrcWwtbYBl3hQwKpBN44n7n6++CsJgBmCfgOCNpj5Ew9D mmrRNYSauoxDlsjrAiU17neARwlC1xug/SBlH3XyNjJgTFN//Eybbv6NMY1F6VjH5pO+4WkAu6Q 4V/IPh/iETB3nLX+E3hkS1bDPFH294djDs8zMHOUVFGnVPZrwGEQhKCkcbiZ92a5GEAEqHjn4v7 MNBZfs9OrAuLxT2x4W3sDYLGFId9lYnj8fiRtHOSdxt8+toBiqKgow86cPcfsuIJwJOjBHn35iF IZw3587U208HqpSY6OdOaImyIaYfeXryj66nTPuNTM+9+ZScxZG6hkvjtKBcWjSbCh5ZFxiP34/ tsJqvyQcgIR9326gEqR2vZYWzZlzBLaR71bzqVOfgXlnusj2jIAnT7gI= X-Received: by 2002:a17:903:2ac4:b0:2b0:5b4e:370c with SMTP id d9443c01a7336-2b0b0acff88mr24108755ad.32.1774412930355; Tue, 24 Mar 2026 21:28:50 -0700 (PDT) X-Received: by 2002:a17:903:2ac4:b0:2b0:5b4e:370c with SMTP id d9443c01a7336-2b0b0acff88mr24108475ad.32.1774412929897; Tue, 24 Mar 2026 21:28:49 -0700 (PDT) Received: from hu-bvisredd-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b083549f63sm159890435ad.30.2026.03.24.21.28.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Mar 2026 21:28:49 -0700 (PDT) From: Vishnu Reddy Date: Wed, 25 Mar 2026 09:58:16 +0530 Subject: [PATCH v3] media: iris: add FPS calculation and VPP FW overhead in frequency formula 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: quoted-printable Message-Id: <20260325-update_fps_calculation-v3-1-b2ec654f7e4d@oss.qualcomm.com> X-B4-Tracking: v=1; b=H4sIAGBkw2kC/4XOTWrDMBAF4KsYraugX0vJKvcoJYw040aQxI4km 5bgu1d1Nl20dDPwhpmP92CFcqLCDt2DZVpSSeOtBf3SsXiG2zvxhC0zJVQvtDB8nhAqnYapnCJ c4nyB2l743hO5wVnhgmTteco0pI8Nfn175kz3ufn1uWQBCvE4Xq+pHrrBCkt751GCMEYBhoBkP BBqH4U3iAQ99sS+rXMqdcyfW+dFbth/9RbJJTdEELXTYIU5jqXs7nM7aQ12bWzyon5q9k9NNY1 0sDHGIJXpf9HWdf0CRCtR1F0BAAA= X-Change-ID: 20260304-update_fps_calculation-98ee7f7507b1 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, Vishnu Reddy X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1774412926; l=4463; i=busanna.reddy@oss.qualcomm.com; s=20260216; h=from:subject:message-id; bh=O9k5sbNbliyjwCfU4/2rvQsib07HELJ5jU7XvpY0BZY=; b=/7aS1bDEnahBNol9wJblFhdEj1eTVHGO6PR4n4+KkiHRETDC6ViFMwqt1ObLqrk0jVJDfBchJ P5HxgdxYZaaDa5xcyvuEpoYVVOrDqA5WVXlr0XbUCk44Nkp8EbtuNfO X-Developer-Key: i=busanna.reddy@oss.qualcomm.com; a=ed25519; pk=9vmy9HahBKVAa+GBFj1yHVbz0ey/ucIs1hrlfx+qtok= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzI1MDAyNyBTYWx0ZWRfX/ZLOKSKO9JQK KNPTNYjKoG8WFUmr/UArp1lFw58GPGz3x1YEcg3ENbd67OvHDyTJUyXOEalp74zeDXow1TfDMa1 HC6LTAta5P61ajIV5Bp8ZxBrmp4q3NkV2n1zPFueNn3t9GpOBgtRnFemVrwcF+UQXSfmOpnQfut ZzJk/4AApFj05881CVpv6yooMQ/sRZDPDIWLiAuy3wziYeqrOUtYM0LBo+x7P+8gE9j1h/8FImB WmGEQMnaO4wdln7bMlGOEII1gv2hEQWdsy2AHMntdIQwWj5FNsDHO+wm+BdVVM63l0wqFQVX1Yn fVYIqWpXxcyC7WCVRvQvDaPJ7O47rFFn432qYhxDy4nBcFXii98LKB5FePwOekBPI/cgEjg4AfR 4h+7xBrof03epcOWkeLqTTcpBc5ziFlEJQHHGO+/zARhzzfQrK8XO8nQGxHdYRW2T0FA1a46eZu 1knxUDhE1mTgU8Ppdow== X-Proofpoint-GUID: 6ZJTDdtmDpG8lCYzlaQaTBW3PwYHLQ5l X-Proofpoint-ORIG-GUID: 6ZJTDdtmDpG8lCYzlaQaTBW3PwYHLQ5l X-Authority-Analysis: v=2.4 cv=AKSYvs3t c=1 sm=1 tr=0 ts=69c36483 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=aZFUA4iBNJJznah6NdIA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-25_01,2026-03-24_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 bulkscore=0 clxscore=1015 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603250027 The driver was using a fixed default FPS value when calculating the VPU frequency. This caused wrong frequency requests for high=E2=80=91frame=E2= =80=91rate streams, for example 4K at 240 FPS. Because of this, the hardware was running at a lower frequency than needed. Add the FPS measurement based on the decoder input buffer arrival rate. The measured FPS is stored per instance and used in frequency calculation instead of the fixed default FPS. The value is clamped so that it does not exceed platform limits. Add a VPP firmware overhead when running in STAGE_2. Signed-off-by: Vishnu Reddy --- Changes in v3: - Updated the frame_count condition check - Link to v2: https://lore.kernel.org/r/20260305-update_fps_calculation-v2-= 1-e3b5cccb1246@oss.qualcomm.com Changes in v2: - Replaced div_u64 with mult_frac - Link to v1: https://lore.kernel.org/r/20260304-update_fps_calculation-v1-= 1-4eeac373a504@oss.qualcomm.com --- drivers/media/platform/qcom/iris/iris_instance.h | 2 ++ drivers/media/platform/qcom/iris/iris_vdec.c | 21 ++++++++++++++++++= +++ drivers/media/platform/qcom/iris/iris_vpu_common.c | 6 +++++- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index 16965150f427..180cba36a7f2 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -109,6 +109,8 @@ struct iris_inst { u32 metadata_idx; u32 codec; bool last_buffer_dequeued; + u64 last_buf_recv_time_ns; + u32 frame_count; u32 frame_rate; u32 operating_rate; u32 hfi_rc_type; diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index 719217399a30..6d982802e5d4 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -369,6 +369,8 @@ int iris_vdec_streamon_input(struct iris_inst *inst) if (ret) return ret; =20 + inst->frame_count =3D 0; + return iris_process_streamon_input(inst); } =20 @@ -411,6 +413,7 @@ int iris_vdec_qbuf(struct iris_inst *inst, struct vb2_v= 4l2_buffer *vbuf) { struct iris_buffer *buf =3D to_iris_buffer(vbuf); struct vb2_buffer *vb2 =3D &vbuf->vb2_buf; + u64 cur_buf_recv_time_ns, time_delta_ns; struct vb2_queue *q; int ret; =20 @@ -427,6 +430,24 @@ int iris_vdec_qbuf(struct iris_inst *inst, struct vb2_= v4l2_buffer *vbuf) return 0; } =20 + if (buf->type =3D=3D BUF_INPUT) { + cur_buf_recv_time_ns =3D ktime_get_ns(); + + if (!inst->frame_count) { + inst->last_buf_recv_time_ns =3D cur_buf_recv_time_ns; + inst->frame_rate =3D MAXIMUM_FPS; + } + time_delta_ns =3D cur_buf_recv_time_ns - inst->last_buf_recv_time_ns; + + if (time_delta_ns >=3D NSEC_PER_SEC) { + inst->frame_rate =3D clamp_t(u32, inst->frame_count, DEFAULT_FPS, + MAXIMUM_FPS); + inst->last_buf_recv_time_ns =3D cur_buf_recv_time_ns; + inst->frame_count =3D 0; + } + inst->frame_count++; + } + iris_scale_power(inst); =20 return iris_queue_buffer(inst, buf); diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index 548e5f1727fd..d621ccffa868 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -416,7 +416,7 @@ u64 iris_vpu3x_vpu4x_calculate_frequency(struct iris_in= st *inst, size_t data_siz u32 height, width, mbs_per_second, mbpf; u64 fw_cycles, fw_vpp_cycles; u64 vsp_cycles, vpp_cycles; - u32 fps =3D DEFAULT_FPS; + u32 fps =3D inst->frame_rate; =20 width =3D max(inp_f->fmt.pix_mp.width, inst->crop.width); height =3D max(inp_f->fmt.pix_mp.height, inst->crop.height); @@ -435,6 +435,10 @@ u64 iris_vpu3x_vpu4x_calculate_frequency(struct iris_i= nst *inst, size_t data_siz if (inst->fw_caps[PIPE].value > 1) vpp_cycles +=3D div_u64(vpp_cycles * 59, 1000); =20 + /* 1.05 is VPP FW overhead */ + if (inst->fw_caps[STAGE].value =3D=3D STAGE_2) + vpp_cycles +=3D mult_frac(vpp_cycles, 5, 100); + vsp_cycles =3D fps * data_size * 8; vsp_cycles =3D div_u64(vsp_cycles, 2); /* VSP FW overhead 1.05 */ --- base-commit: f505e978d1a0442adbbde48aed38c084ddea6d6e change-id: 20260304-update_fps_calculation-98ee7f7507b1 Best regards, --=20 Vishnu Reddy